private function sync_table($alias) { $table = Cms_Structure::factory($alias); if (!$table) { throw new Exception('Таблица ' . $alias . ' не найдена'); } $old_columns = $table->get_columns(); $default_column_config = Cms::get_default_column(); $matching_rules = Cms::get_columns_matching_rules(); $columns_data = Cms::get_dal_instance()->get_columns($table->get_table_name()); $new_columns = $table->create_columns($columns_data, $matching_rules, $default_column_config)->get_columns(); $result_columns = array(); foreach ($columns_data as $col_name => $col_data) { if (array_key_exists($col_name, $old_columns)) { $result_columns[$col_name] = $old_columns[$col_name]; } else { $result_columns[$col_name] = $new_columns[$col_name]; } } $table->set_columns($result_columns)->save(); }
public function action_delete_table() { try { $tables = $this->request->post('tables'); if (Arr::is_array($tables)) { foreach ($tables as $alias) { $table = Cms_Structure::factory($alias); if ($table != NULL) { unlink($table->get_file_name()); } } } $this->add_result_data('urlToRedirect', Cms_Urlmanager::get_tools_url('structure')); } catch (Exception $exc) { $this->set_error($exc->getMessage()); } }