/** * @param CActiveModel $model * @param bool $exportTasks * @param bool $isMain * @return SolrInputDocument */ private static function createSolrInputDocument(CActiveModel $model, $exportTasks = false, $isMain = false) { $doc = new SolrInputDocument(); $doc->addField("id", $model->getRecord()->getTable() . "_" . $model->getId()); $doc->addField("_doc_id_", $model->getId()); /** * Выгружаем дополнительные выгружаемые поля */ $metaModel = CCoreObjectsManager::getCoreModel(get_class($model)); if (!is_null($metaModel)) { foreach ($metaModel->fields->getItems() as $field) { if ($field->isExportable()) { $name = $field->field_name; $doc->addField($name, $model->{$name}); } } } /** * Выгружаем список задач, с которыми связана модель */ if ($exportTasks) { foreach ($metaModel->tasks->getItems() as $task) { $doc->addField("_tasks_", $task->getId()); } } /** * Класс модели */ $doc->addField("_class_", $metaModel->class_name); /** * Модель является основной */ if ($isMain) { $doc->addField("_is_main_", "1"); } else { $doc->addField("_is_main_", "0"); } return $doc; }
/** * Обновление прав доступа к таблице по умолчанию * * @param CActiveModel $model * @param array $entries * @param int $level */ private function updateDefaultAccess(CActiveModel $model, array $entries, $level = 1) { // 1. удаляем старые записи доступа foreach (CActiveRecordProvider::getWithCondition(TABLE_ACL_DEFAULTS, "table_id=" . $model->getId())->getItems() as $item) { $obj = new CActiveModel($item); $obj->remove(); } // 2. создаем новые записи уровня сущностей foreach ($entries["id"] as $key => $value) { $entry = new CActiveModel(); $entry->getRecord()->setTable(TABLE_ACL_DEFAULTS); $entry->table_id = $model->getId(); $entry->level = $level; $entry->entry_type = $entries["type"][$key]; $entry->entry_id = $value; $entry->save(); } }