protected static function updateChildUrls($sitemap) { $child = Sitemap_Sample::selectChild($sitemap['id']); foreach ($child as $row) { self::restoreOne($row['id'], $sitemap); Sitemap_History::add($row['id'], $row['name']); } }
public function move($id, $to) { try { $aDocument = Sitemap_Sample::get($id); if (empty($aDocument['document_name'])) { throw new Exception('Requested id isn`t document'); } Sitemap::updatePage($aDocument['document_name'], $aDocument['document_id'], $aDocument['name'], $aDocument['url_key'], $to); Sitemap::updateParentCount($aDocument['parent']); Sitemap::updateParentCount($to); // Если у переносимого документа есть дочерние элементы $child = Sitemap_Sample::selectChild($aDocument['id']); if (!empty($child)) { foreach ($child as $row) { Sitemap_RestoreUrl::restoreOne($row['id'], $aDocument); } } $this->addAlert('Документ перемещен'); } catch (Exception $e) { $this->addError('Ошибка при перемещении документа'); } $this->jumpBack(); }
/** * Сортирует документы дочерние к $nParentId в указанном порядке * @return */ public static function order($parentId) { // Защищаем данные $parentId = intval($parentId); // Рутовый раздел автоматической сортировке пока что не поддается if (empty($parentId)) { return; } $page = SiteMap_Sample::getRowFromBD($parentId); // Получаем дочерние объекты $children = Sitemap_Sample::selectChild($page['id']); // В зависимости от сортировки делаем так usort($children, create_function('$a,$b', 'return ($a["order"] > $b["order"]);')); // Записываем результат self::storeOrderResult($page['id'], $children); return; }
protected function returnByLevel($parentId, $level) { if ($level <= 0) { return array(); } $result = array(); $childList = Sitemap_Sample::selectChild($parentId); foreach ($childList as $row) { $result[] = $row['full_url']; if (!empty($row['count'])) { $result = array_merge($result, $this->returnByLevel($row['id'], $level - 1)); } } return $result; }
/** * (non-PHPdoc) * @see parent::delete() */ public function delete() { // store current id $id = $this->getId(); if ($this->withSitemap) { try { $this->needSitemapData(); // Вызываем удаление $aChild = Sitemap_Sample::selectChild($this->sitemapInfo['id']); foreach ($aChild as $row) { Sitemap::remove($row['id']); } } catch (SiteMapException $e) { } } $result = parent::delete(); if ($this->withSitemap) { try { Sitemap::remove($this->sitemapInfo['id']); } catch (SitemapException $e) { } } // Удаляем данные return $result; }
/** * Выводит селект для выбора предка */ protected static function outputChangeParentFormFields() { // Формируем список урлов $aSitemapUrl = array(array('id' => '-2', 'name' => 'Никуда не переносить')); // Добавляем parent, предка текущего элемента (если он есть) if (!empty(self::$sitemap['parent'])) { $aParent = Sitemap_Sample::get(self::$sitemap['parent']); $aSitemapUrl[] = array('id' => $aParent['parent'], 'name' => '<< Перенести на уровень выше'); } // Переносим в дочерние элементы к соседям данного скрипта $aSibling = Sitemap_Sample::selectChild(self::$sitemap['parent']); if (!empty($aSibling)) { $aSitemapUrl[] = array('id' => -1, 'name' => 'Перенести на в дочерние страницы к соседям'); foreach ($aSibling as $row) { $aSitemapUrl[] = array('id' => $row['id'], 'name' => ' >> ' . $row['name']); } } // $design = CMSDesign::getInstance(); $control = new CSelect(); $control->name = 'sitemap_move_id'; $control->style = 'width:99%'; $control->size = '10'; $control->current = -2; $control->values = $aSitemapUrl; $design->row2cell('Перенести скрипт', $control->generate()); }