예제 #1
0
 public function init()
 {
     $currentView = Yii::app()->backend->objectView;
     $currentObject = Yii::app()->backend->object;
     if ($this->idObjectCurrent == null && $currentObject != null) {
         $this->idObjectCurrent = $currentObject->id_object;
     }
     if ($this->idObjectViewCurrent == null && $currentView != null) {
         $this->idObjectViewCurrent = $currentView->id_object_view;
     }
     // Получаем все доступные для просмотра объекты
     $availableObjects = Yii::app()->authManager->checkObject(DaDbAuthManager::OPERATION_LIST, Yii::app()->user->id);
     if (count($availableObjects) == 0) {
         return;
     }
     // Загружаем объекты первого уровня
     $cr = new CDbCriteria();
     $cr->condition = 't.parent_object IS NULL';
     $cr->select = 't.name, t.id_object, t.table_name';
     $objects = DaObject::model()->orderBySeq()->with(array('child' => array('with' => 'countChild', 'select' => 'child.id_object, child.name, child.object_type, child.table_name'), 'child.views' => array('scopes' => 'selectName')))->findAll($cr);
     foreach ($objects as $object) {
         if (count($object->child) == 0) {
             continue;
         }
         $this->items[] = array('active' => false, 'label' => $object->name, 'url' => null, 'id_object' => $object->id_object, 'items' => $this->fillItems($object->child, 1, $availableObjects));
     }
     //print_r($this->items);exit;
     Yii::app()->clientScript->registerScript('menu.run', '
   $(".b-menu-side-main .panel-heading.active").click().parents(".panel").removeClass("panel-default").addClass("panel-primary");
   if ($(".b-menu-side-main .active").length == 0) $(".b-menu-side-main .panel-heading:eq(0).collapsed").click();
 ', CClientScript::POS_LOAD);
 }
예제 #2
0
 /**
  * @return DaObject
  */
 public function getObject()
 {
     if ($this->_object === null) {
         $this->_object = DaObject::model()->with('parameters')->findByAttributes(array('table_name' => $this->tableName));
     }
     return $this->_object;
 }
예제 #3
0
 public function actionIndex()
 {
     $model = new ExportForm();
     $modelClass = get_class($model);
     $this->performAjaxValidation($model);
     if (isset($_POST[$modelClass])) {
         //HU::dump($_POST);exit;
         $model->setAttributes($_POST[$modelClass], false);
         $valid = true;
         foreach ($_POST[$modelClass] as $i => $item) {
             if (isset($_POST[$modelClass][$i]) && is_array($_POST[$modelClass][$i])) {
                 $model->checkAttributes[] = $item['checkAttributes'];
                 $model->newObjectParameters[] = $item['newObjectParameters'];
                 $model->objectParameters[] = $item['objectParameters'];
             }
             $valid = $model->validate() && $valid;
         }
         if ($model->validate() && $valid) {
             $sqlDump = $model->getDump();
             echo $sqlDump;
             Yii::app()->end();
         } else {
             HU::dump($model->errors);
             exit;
         }
     }
     $objects = DaObject::model()->findAll(array('condition' => 'table_name IS NOT NULL', 'order' => 'name ASC'));
     $this->render('index', array('model' => $model, 'objects' => $objects));
 }
예제 #4
0
 public function actionIndex()
 {
     $model = new ExportObject();
     if (isset($_POST['ExportObject'])) {
         $model->attributes = $_POST['ExportObject'];
         if ($model->validate()) {
             echo $model->getDump();
             Yii::app()->end();
         }
     }
     $objects = DaObject::model()->findAll('table_name IS NOT NULL');
     $this->render('index', array('model' => $model, 'objects' => $objects));
 }
예제 #5
0
 public function actionGetDateAttributes($db, $tableName)
 {
     if (Yii::app()->getRequest()->getIsAjaxRequest() && $tableName) {
         $object = DaObject::model()->with('parameters')->findByAttributes(array('table_name' => $tableName));
         $result = array();
         foreach ($object->parameters as $parameter) {
             if ($parameter->id_parameter_type == DataType::TIMESTAMP) {
                 $result[] = $parameter->field_name;
             }
         }
         echo json_encode($result);
     } else {
         throw new CHttpException(404, 'The requested page does not exist.');
     }
 }
예제 #6
0
 public function getDump()
 {
     $object = DaObject::model()->findByPk($this->objectId);
     $fields = ObjectParameter::model()->findAll('`id_object` = ?', array($this->objectId));
     $str = "START TRANSACTION;\n";
     $fieldNames = array('name', 'id_field_order', 'order_type', 'table_name', 'id_field_caption', 'object_type', 'folder_name', 'parent_object', 'sequence', 'use_domain_isolation', 'field_caption', 'yii_model');
     $str .= $this->getInsertStatement('da_object', $this->getPopulatedData($fieldNames, $object, array('id_field_caption' => 'NULL', 'id_field_order' => 'NULL')));
     $str .= "SET @objectId = LAST_INSERT_ID();\n";
     $fieldNames = array('id_object', 'id_parameter_type', 'sequence', 'name', 'caption', 'field_name', 'add_parameter', 'default_value', 'not_null', 'sql_parameter', 'is_unique', 'group_type', 'need_locale', 'search', 'is_additional', 'hint');
     foreach ($fields as $field) {
         $str .= $this->getInsertStatement('da_object_parameters', $this->getPopulatedData($fieldNames, $field, array('id_object' => '@objectId')));
         if ($field->id_parameter == $object->id_field_order) {
             $str .= "UPDATE `da_object` SET `id_field_order` = LAST_INSERT_ID() WHERE `id_object` = @objectId;\n";
         } elseif ($field->id_parameter == $object->id_field_caption) {
             $str .= "UPDATE `da_object` SET `id_field_caption` = LAST_INSERT_ID() WHERE `id_object` = @objectId;\n";
         }
     }
     $str .= 'COMMIT;';
     return $str;
 }
예제 #7
0
파일: DaObject.php 프로젝트: kot-ezhva/ygin
 /**
  * @static
  * @param $idObject
  * @param bool $loadWithParameter
  * @return DaObject
  */
 public static function getById($idObject, $loadWithParameter = true)
 {
     // TODO должен быть единым методом по получению объекта
     // в будущем возможно реализовать кэширование и тд
     if ($loadWithParameter) {
         return DaObject::model()->cache(3600)->with('parameters')->findByPk($idObject);
     }
     if (!isset(self::$_objects[$idObject])) {
         self::$_objects[$idObject] = DaObject::model()->cache(3600)->findByPk($idObject);
     }
     return self::$_objects[$idObject];
 }
예제 #8
0
 protected function afterSave()
 {
     if ($this->isNewRecord) {
         $idObject = $this->id_object;
         $notChangeObject = array(20, 21);
         if (!in_array($idObject, $notChangeObject)) {
             $this->sqlChange($this, 'insert');
         }
     } else {
         $pk = $this->getPkBeforeSave();
         $idOldParameter = $pk['id_parameter'];
         if ($this->id_parameter != $idOldParameter) {
             DaObject::model()->updateAll(array('id_field_order' => $this->id_parameter), 'id_field_order=:param', array(':param' => $idOldParameter));
             DaObject::model()->updateAll(array('id_field_caption' => $this->id_parameter), 'id_field_caption=:param', array(':param' => $idOldParameter));
             File::model()->updateAll(array('id_parameter' => $this->id_parameter), 'id_parameter=:param', array(':param' => $idOldParameter));
             DaObjectViewColumn::model()->updateAll(array('id_object_parameter' => $this->id_parameter), 'id_object_parameter=:param', array(':param' => $idOldParameter));
         }
     }
     return parent::afterSave();
 }
예제 #9
0
 private function getInsertTableData()
 {
     $sql = "";
     $oldListFields = array();
     $newListFields = array();
     foreach ($this->checkAttributes as $i => $checkValue) {
         if (!($parameterName = $this->newObjectParameters[$i])) {
             continue;
         }
         $objectParameter = ObjectParameter::model()->find(array('condition' => 'id_object = :obj AND id_parameter = :param', 'params' => array(':obj' => $this->objectId, ':param' => $this->objectParameters[$i])));
         $oldListFields[] = $objectParameter->field_name;
         $newListFields[] = $parameterName;
     }
     $count = count($oldListFields);
     //$sql .= "INSERT IGNORE INTO `" .$this->tableName . "`(`".implode("`, `", $newListFields)."`)\n";
     $model = DaObject::model()->findByPk($this->objectId)->getModel();
     $models = $model->findAll();
     foreach ($models as $model) {
         $sql .= "INSERT IGNORE INTO `" . $this->tableName . "`(`" . implode("`, `", $newListFields) . "`)\n";
         $sql .= "VALUES(";
         foreach ($oldListFields as $i => $field) {
             if ($model->{$field} == null || !$model->{$field}) {
                 $sql .= 'NULL';
             } else {
                 $sql .= "'" . $model->{$field} . "'";
             }
             if ($count != $i + 1) {
                 $sql .= ",";
             }
         }
         $sql .= ");\n";
     }
     return $sql;
 }