Index: branches/RC/core/units/admin/admin_events_handler.php =================================================================== diff -u -r8929 -r8953 --- branches/RC/core/units/admin/admin_events_handler.php (.../admin_events_handler.php) (revision 8929) +++ branches/RC/core/units/admin/admin_events_handler.php (.../admin_events_handler.php) (revision 8953) @@ -32,6 +32,14 @@ $this->Conn->Query('DELETE FROM '.TABLE_PREFIX.'Cache WHERE VarName = "config_files" OR VarName = "configs_parsed" OR VarName = "sections_parsed"'); } + function OnCompileTemplates(&$event) + { + $compiler =& $this->Application->recallObject('NParserCompiler'); + /* @var $compiler NParserCompiler */ + $compiler->CompileTemplatesStep(); + $event->status = erSTOP; + } + /** * Generates sturcture for specified table * @@ -47,25 +55,25 @@ 'double' => 'double', 'numeric' => 'decimal', ); - + $table_name = $this->Application->GetVar('table_name'); if (!$table_name) { echo 'error: no table name specified'; return ; } - + if (TABLE_PREFIX && !preg_match('/^'.preg_quote(TABLE_PREFIX, '/').'(.*)/', $table_name)) { // table name without prefix, then add it $table_name = TABLE_PREFIX.$table_name; } - + if (!$this->Conn->TableFound($table_name)) { // table with prefix doesn't exist, assume that just config prefix passed -> resolve table name from it $table_name = $this->Application->getUnitOption(substr($table_name, strlen(TABLE_PREFIX)), 'TableName'); } - + $table_info = $this->Conn->Query('DESCRIBE '.$table_name); - + // 1. prepare config keys $id_field = ''; $fields = Array(); @@ -75,17 +83,17 @@ // don't put multilingual fields in config continue; } - + $field_options = Array (); - + // 1. get php field type by mysql field type foreach ($types_hash as $php_type => $db_types) { if (preg_match('/'.$db_types.'/', $field_info['Type'])) { $field_options['type'] = $php_type; break; } } - + $default_value = $field_info['Default']; if (in_array($php_type, $float_types)) { // this is float number @@ -100,36 +108,36 @@ $default_value = (float)$default_value; } } - + if (preg_match('/varchar\(([\d]+)\)/i', $field_info['Type'], $regs)) { $field_options['max_len'] = (int)$regs[1]; } - + if ($field_info['Null'] != 'YES') { $field_options['not_null'] = 1; } - + if ($field_info['Key'] == 'PRI') { $default_value = 0; $id_field = $field_info['Field']; } - + if ($php_type == 'int' && ($field_info['Null'] != 'YES' || is_numeric($default_value))) { // is integer field AND not null $field_options['default'] = (int)$default_value; } else { $field_options['default'] = $default_value; } - + $fields[ $field_info['Field'] ] = $this->transformDump($field_options); } - + $ret = stripslashes(var_export($fields, true)); $ret = preg_replace("/'(.*?)' => 'Array \((.*?), \)',/", "'\\1' => Array (\\2),", $ret); $ret = preg_replace("/\n '/", "\n\t'", $ret); $ret = "'IDField' => '".$id_field."',\n'Fields' => A".substr($ret, 1).','; - + ob_start(); ?> @@ -139,27 +147,27 @@ Close Window
highlightString($ret); ?> -
Close Window
+
Close Window
status = erSTOP; } - + function transformDump($dump) { if (is_array($dump)) { $dump = var_export($dump, true); } - + $dump = preg_replace("/,\n[ ]*/", ', ', $dump); $dump = preg_replace("/array \(\n[ ]*/", 'Array (', $dump); // replace array start $dump = preg_replace("/,\n[ ]*\),/", "),", $dump); // replace array end - + return $dump; } - + /** * Refreshes ThemeFiles & Theme tables by actual content on HDD * @@ -204,7 +212,7 @@ */ function OnStartup(&$event) { - + } /**