/** * Возвращает список путей, куда может быть перемещен данный документ */ public static function whereToMove($documentName) { $validator = new \Extasy\Validators\ModelConfigValidator($documentName, array('sitemap', RegisteredDocument::ParentsConfigName)); $result = array(); if ($validator->isValid()) { $documents = $validator->getData(); if (!empty($documents)) { foreach ($documents as $key => $row) { $documents[$key] = sprintf('"%s"', \Faid\DB::escape($row)); } } else { $documents = array(-1); } $scripts = self::selectDocumentScriptParents($documentName); if (!empty($scripts)) { foreach ($scripts as $key => $row) { $scripts[$key] = sprintf('"%s"', \Faid\DB::escape($row['script'])); } } else { $scripts = array(-1); } $sql = <<<SQL \tSELECT * FROM `%s` WHERE `script` IN (%s) or `document_name` IN (%s) ORDER by `name` ASC; SQL; $sql = sprintf($sql, SITEMAP_TABLE, implode(',', $scripts), implode(',', $documents)); $result = DB::query($sql); } $documents = self::getRootDocuments(); foreach ($documents as $row) { if ($row['name'] == $documentName) { array_unshift($result, array('id' => 0, 'name' => 'Корень сайта', 'script' => 'root', 'full_url' => '')); } } return $result; }
protected function isCanHaveChildren() { $aInfo = Sitemap_Sample::get($this->nParent); // Если это скрипт, то получаем дочерние документы if (!empty($aInfo['script'])) { $aChild = Sitemap_Sample::selectScriptChild($aInfo['script']); return !empty($aChild); } else { // Иначе, это документ. Получаем его дочерние элементы $validator = new \Extasy\Validators\ModelConfigValidator($aInfo['document_name'], array('sitemap', RegisteredDocument::ChildrenConfigName)); return $validator->isValid(); } }