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); }
/** * @return DaObject */ public function getObject() { if ($this->_object === null) { $this->_object = DaObject::model()->with('parameters')->findByAttributes(array('table_name' => $this->tableName)); } return $this->_object; }
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)); }
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)); }
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.'); } }
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; }
/** * @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]; }
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(); }
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; }