示例#1
0
文件: controls.php 项目: vukasins/ocp
 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);
 }
示例#2
0
文件: objects.php 项目: vukasins/ocp
 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();
     }
 }