/** * Пометка или снятие документа как папки * @param $id - ID документа * @param bool $child_delete - дочерние документы удаляются? * @return bool */ public static function folder($id, $child_delete = false) { $model = Document::findOne($id); $db = self::getDb(); // Помечаем документ как папку если имеются дочерние документы if ($model && $model->children && !$model->is_folder) { $db->createCommand()->update('lb_document', ['is_folder' => 1], ['id' => $model->id])->execute(); } // Помечаем папку как документ если нет дочерних документов или // имеется один дочерний докуемнт, который будет удален if ($model && !$model->children && $model->is_folder || $model && count($model->children) === 1 && $model->is_folder && $child_delete) { $db->createCommand()->update('lb_document', ['is_folder' => 0], ['id' => $model->id])->execute(); } }
/** * Добавление значения мультиполя */ public function actionField() { $document_id = Yii::$app->request->post('document_id'); $model = $document_id ? Document::findOne($document_id) : new Document(); $field_id = Yii::$app->request->post('field_id'); $field = Field::findOne($field_id); if (!$field) { return false; } $data_id = Yii::$app->request->post('data_id'); $data_id = 'new_multi_' . $data_id; // 0 перед id нового поля свидетельствует о добавлении мультизначения $data = ['value' => '', 'position' => '']; return $this->renderAjax('@vendor/lowbase/yii2-document/views/document/_field', ['model' => $model, 'field' => $field, 'field_id' => $field_id, 'data' => $data, 'data_id' => $data_id]); }