public function UpdatePage(ModulePage_EntityPage $oPage) { $sql = "UPDATE ?_page\n\t\t\tSET page_pid = ? ,\n\t\t\tpage_url = ? ,\n\t\t\tpage_url_full = ? ,\n\t\t\tpage_title = ? ,\n\t\t\tpage_text = ? ,\n\t\t\tpage_text_source = ?,\n\t\t\tpage_date_edit = ? ,\n\t\t\tpage_seo_keywords = ? ,\n\t\t\tpage_seo_description = ? ,\n\t\t\tpage_active\t = ?, \t\t\n\t\t\tpage_main\t = ?,\t\t\n\t\t\tpage_sort\t = ?, \t\t\n\t\t\tpage_auto_br\t = ?\n\t\t\tWHERE page_id = ?d\n\t\t"; $bResult = $this->oDb->query($sql, $oPage->getPid(), $oPage->getUrl(), $oPage->getUrlFull(), $oPage->getTitle(), $oPage->getText(), $oPage->getTextSource(), $oPage->getDateEdit(), $oPage->getSeoKeywords(), $oPage->getSeoDescription(), $oPage->getActive(), $oPage->getMain(), $oPage->getSort(), $oPage->getAutoBr(), $oPage->getId()); return $bResult !== false; }
/** * Обработка отправки формы при редактировании страницы * * @param ModulePage_EntityPage $oPageEdit */ protected function SubmitEditPage($oPageEdit) { // * Проверяем корректность полей if (!$this->CheckPageFields()) { return; } if ($oPageEdit->getId() == F::GetRequest('page_pid')) { E::ModuleMessage()->AddError(E::ModuleLang()->Get('system_error')); return; } // * Проверяем есть ли страница с указанным URL if ($oPageEdit->getUrlFull() != F::GetRequest('page_url')) { if (E::ModulePage()->GetPageByUrlFull(F::GetRequest('page_url'))) { E::ModuleMessage()->AddError(E::ModuleLang()->Get('action.admin.page_url_exist'), E::ModuleLang()->Get('error')); return; } } // * Обновляем свойства страницы $oPageEdit->setActive(F::GetRequest('page_active') ? 1 : 0); $oPageEdit->setAutoBr(F::GetRequest('page_auto_br') ? 1 : 0); $oPageEdit->setMain(F::GetRequest('page_main') ? 1 : 0); $oPageEdit->setDateEdit(F::Now()); if (F::GetRequest('page_pid') == 0) { $oPageEdit->setUrlFull(F::GetRequest('page_url')); $oPageEdit->setPid(null); } else { $oPageEdit->setPid(F::GetRequest('page_pid')); $oPageParent = E::ModulePage()->GetPageById(F::GetRequest('page_pid')); $oPageEdit->setUrlFull($oPageParent->getUrlFull() . '/' . F::GetRequest('page_url')); } $oPageEdit->setSeoDescription(F::GetRequest('page_seo_description')); $oPageEdit->setSeoKeywords(F::GetRequest('page_seo_keywords')); $oPageEdit->setText(E::ModuleText()->SnippetParser(F::GetRequest('page_text'))); $oPageEdit->setTextSource(F::GetRequest('page_text')); $oPageEdit->setTitle(F::GetRequest('page_title')); $oPageEdit->setUrl(F::GetRequest('page_url')); $oPageEdit->setSort(F::GetRequest('page_sort')); // * Обновляем страницу if (E::ModulePage()->UpdatePage($oPageEdit)) { E::ModulePage()->RebuildUrlFull($oPageEdit); E::ModuleMessage()->AddNotice(E::ModuleLang()->Get('action.admin.pages_edit_submit_save_ok')); $this->SetParam(0, null); $this->SetParam(1, null); R::Location('admin/content-pages/'); } else { E::ModuleMessage()->AddError(E::ModuleLang()->Get('system_error')); } }
/** * Рекурсивно обновляет полный URL у всех дочерних страниц(веток) * * @param ModulePage_EntityPage $oPageStart */ public function RebuildUrlFull($oPageStart) { $aPages = $this->GetPagesByPid($oPageStart->getId()); foreach ($aPages as $oPage) { if ($oPage->getId() == $oPageStart->getId()) { continue; } if (in_array($oPage->getId(), $this->aRebuildIds)) { continue; } $this->aRebuildIds[] = $oPage->getId(); $oPage->setUrlFull($oPageStart->getUrlFull() . '/' . $oPage->getUrl()); $this->UpdatePage($oPage); $this->RebuildUrlFull($oPage); } }