public function getModifyForm() { $field_id = intval($_POST['field_id']); $control_id = intval($_POST['control_id']); $field = new Crud_Models_Field(); $field->load($field_id); $field->loadValidators(); $field->loadControl(); $control = new Controls_Models_Control(); $control->load($control_id); echo call_user_func(array(new $control->class(), 'modifyForm'), $field); }
public function map($object_name) { $sql = "SHOW COLUMNS FROM `{$object_name}`"; $fields = Libraries_Db_Factory::getDb()->fetchAll($sql, array(), Libraries_Db_Adapter::FETCH_TYPE_CLASS); $raw_field_names = array(); $has_id_field = false; $has_is_deleted_field = false; $has_last_modify_field = false; foreach ($fields as $field) { if ($field->Field == 'id') { $has_id_field = true; } if ($field->Field == 'is_deleted') { $has_is_deleted_field = true; } if ($field->Field == 'last_modify') { $has_last_modify_field = true; } $raw_field_names[] = $field->Field; } if (!$has_id_field) { $sql = "ALTER TABLE `{$object_name}` ADD COLUMN `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST"; Libraries_Db_Factory::getDb()->execute($sql); $raw_field_names[] = 'id'; // reinit fields $sql = "SHOW COLUMNS FROM `{$object_name}`"; $fields = Libraries_Db_Factory::getDb()->fetchAll($sql, array(), Libraries_Db_Adapter::FETCH_TYPE_CLASS); } if (!$has_is_deleted_field) { $sql = "ALTER TABLE `{$object_name}` ADD COLUMN `is_deleted` tinyint(1) NOT NULL default 0"; Libraries_Db_Factory::getDb()->execute($sql); $raw_field_names[] = 'is_deleted'; // reinit fields $sql = "SHOW COLUMNS FROM `{$object_name}`"; $fields = Libraries_Db_Factory::getDb()->fetchAll($sql, array(), Libraries_Db_Adapter::FETCH_TYPE_CLASS); } if (!$has_last_modify_field) { $sql = "ALTER TABLE `{$object_name}` ADD COLUMN `last_modify` timestamp NULL ON UPDATE CURRENT_TIMESTAMP"; Libraries_Db_Factory::getDb()->execute($sql); $raw_field_names[] = 'last_modify'; // reinit fields $sql = "SHOW COLUMNS FROM `{$object_name}`"; $fields = Libraries_Db_Factory::getDb()->fetchAll($sql, array(), Libraries_Db_Adapter::FETCH_TYPE_CLASS); } $mapped_object = new Crud_Models_Object(); $mapped_object->load($object_name, 'table_name'); $mapped_object->loadFieldsForObject(); $is_remap = false; if ($mapped_object->isEmpty()) { $mapped_object->table_name = $object_name; $mapped_object->table_title = $object_name; $mapped_object->group_name = __('Just added'); $mapped_object->save(); } else { foreach ($mapped_object->sys_field_list as $mapped_field) { if (!in_array($mapped_field->field_name, $raw_field_names)) { $mapped_field->delete(); } } $is_remap = true; } foreach ($fields as $i => $field) { $where = array(); $where[] = array('AND', 'id_sys_object', '=', $mapped_object->id); $where[] = array('AND', 'field_name', '=', $field->Field); $field_object = new Crud_Models_Field(); $field_objects = $field_object->search($where); if (!empty($field_objects)) { continue; } $default_control = new Controls_Models_Control(); $default_control->load(1, 'is_default'); $field_object->id_sys_object = $mapped_object->id; $field_object->id_sys_control = $default_control->id; $field_object->field_name = $field->Field; $field_object->field_title = $field->Field; $field_object->is_hidden = $field->Field == 'is_deleted' || $field->Field == 'id' ? 1 : 0; $field_object->is_identification = $field->Field == 'is_deleted' || $i >= 4 || $is_remap == true ? 0 : 1; $field_object->is_primary_key = strstr($field->Key, 'PRI') !== false ? 1 : 0; $field_object->save(); } }