Пример #1
0
 /**
  * @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();
     }
 }