function run() { // load CSS $this->head($this->getCssSrcComponent(self::CSS_FILENAME)); //initialize filters list($asAllLangs, $asDisplayLangs) = $this->filterLangs(array("view")); list($asAllClasses, $asDisplayClasses) = $this->filterContentClasses(); $this->setTitle($this->t_("title")); $aoPageGroups = AnwStorage::getPageGroups(true, $asDisplayLangs, $asDisplayClasses); $sFilters = $this->tpl()->filterStart($this->linkMe()) . $this->tpl()->filterLangs($asAllLangs, $asDisplayLangs) . $this->tpl()->filterClass($asAllClasses, $asDisplayClasses) . $this->tpl()->filterEnd(); $this->out .= $this->tpl()->begin($sFilters); foreach ($aoPageGroups as $oPageGroup) { $tmpOut = ""; $aoTranslations = $oPageGroup->getPages(); foreach ($aoTranslations as $oPage) { if ($oPage->isActionAllowed('view')) { $tmpOut .= $this->tpl()->rowTranslation($oPage, self::getPageNavEntriesAllowed($oPage)); } } if ($tmpOut != "") { $this->out .= $this->tpl()->rowGroupOpen(); $this->out .= $tmpOut; $this->out .= $this->tpl()->rowGroupClose(); } } $this->out .= $this->tpl()->end(); }
function run() { //initialize filters - user can see all languages with view permission list($asAllLangs, $asDisplayLangs) = $this->filterLangs(array("view"), true); // did we already choose langs? if (count($asDisplayLangs) == 0) { // initialize default langs based on translate permission... //is user allowed to translate something? list($asLangsAllowedForTranslation, $null) = $this->filterLangs(array("translate")); if (count($asLangsAllowedForTranslation) > 0) { // user has translate permission on some languages, pre-select this languages by default $asDisplayLangs = $asLangsAllowedForTranslation; } } // if user has no translate permission, all languages with view permission will be pre-selected list($asAllClasses, $asDisplayClasses) = $this->filterContentClasses(); //get untranslated pages $aoPages = AnwStorage::getUntranslatedPages($asDisplayLangs, $asDisplayClasses); foreach ($aoPages as $i => $oPage) { // FS#138 only check for view permission here (important for anonymous RSS) if (!$oPage->isActionAllowed('view')) { unset($aoPages[$i]); } } if (AnwEnv::_GET("feed")) { $this->showFeed($aoPages); } else { $this->showHtml($aoPages, $asAllLangs, $asDisplayLangs, $asAllClasses, $asDisplayClasses); } }
static function tag_anwloop($sMatch, $sContentClass, $asLangs, $nLimit, $sSortUser, $sOrder, $asFilters) { AnwDebug::startBench("anwloop", true); $oContentClass = AnwContentClasses::getContentClass($sContentClass); $aoPages = AnwStorage::fetchPagesByClass(array($sMatch), $oContentClass, $asLangs, $nLimit, $sSortUser, $sOrder, $asFilters); AnwDebug::stopBench("anwloop"); return $aoPages; }
function create() { if ($this->nChangeId) { throw new AnwUnexpectedException("Change already existing"); } $this->nChangeId = AnwStorage::createChange($this); $this->oPage->_change_cbk_setchange($this); return $this->nChangeId; }
private function exportProcess($anExportPages) { //prepare an array of pages to be exported $aaExportPageGroups = array(); $aoPageGroups = AnwStorage::getPageGroups(); foreach ($aoPageGroups as $oPageGroup) { $bPageExported = false; $aoExportPages = array(); $aoTranslations = $oPageGroup->getPages(); foreach ($aoTranslations as $oPage) { $bExportDisabled = false; //check that page has been checked for export if (in_array($oPage->getId(), $anExportPages)) { //check PHP permission if ($oPage->hasPhpCode() && !AnwCurrentSession::getUser()->isPhpEditionAllowed()) { $bExportDisabled = true; } //check ACL permission if (!AnwCurrentSession::isActionAllowed($oPage->getName(), "export", $oPage->getLang())) { $bExportDisabled = true; } //add page to pagegroup export array if (!$bExportDisabled) { $aoExportPages[] = $oPage; $bPageExported = true; } } } //add pagegroup to export array if ($bPageExported) { $aaExportPageGroups[] = array("GROUP" => $oPageGroup, "PAGES" => $aoExportPages); } } //export now $sExportData = $this->exportData($aaExportPageGroups); //output as a file $this->out = $sExportData; $sBackupDate = str_replace('/', '-', Anwi18n::date(time())); $sBackupDate .= '-' . date("H") . date("i") . date("s"); $this->printOutputDownload("wiki-" . $sBackupDate . ".xml"); }
private function saveDuplication() { $this->out .= $this->tpl()->beginProcessDuplication($this->getoPage()->getName(), $this->getoPage()->getLang()); $aoTranslations = $this->getoPage()->getPageGroup()->getPages($this->getoPage()); //which pages should we duplicate? $aaPagesForDuplication = array(); $oPage = $this->getoPage(); $aaPagesForDuplication[] = array('LANG' => $oPage->getLang(), 'NAME' => AnwEnv::_POST($this->getInputName($oPage), ""), 'CONTENT' => $oPage->getContent()->toXmlString()); foreach ($aoTranslations as $oTranslation) { if (AnwEnv::_POST($this->getChkName($oTranslation))) { $aaPagesForDuplication[] = array('LANG' => $oTranslation->getLang(), 'NAME' => AnwEnv::_POST($this->getInputName($oTranslation), ""), 'CONTENT' => $oTranslation->getContent()->toXmlString()); } } AnwStorage::transactionStart(); try { $oFirstPage = null; $oContentClass = $this->getoPage()->getPageGroup()->getContentClass(); //duplicate each page foreach ($aaPagesForDuplication as $asPageForDuplication) { $asNotices = array(); $sPageName = $asPageForDuplication['NAME']; $sPageLang = $asPageForDuplication['LANG']; $sPageContent = $asPageForDuplication['CONTENT']; $asNotices = $this->checkPermissions($sPageName, $sPageLang, $sPageContent); if (count($asNotices) == 0) { $oContent = $oContentClass->rebuildContentFromXml($sPageContent); if (!$oFirstPage) { $oPage = AnwPage::createNewPage($oContentClass, $sPageName, $sPageLang, "", $oContent); $oFirstPage = $oPage; } else { $oPage = $oFirstPage->createNewTranslation($sPageName, $sPageLang, "", $oContent); } $this->out .= $this->tpl()->rowProcessDuplication_success($oPage->link()); } else { $this->out .= $this->tpl()->rowProcessDuplication_failed($sPageName, $sPageLang, $asNotices); } } AnwStorage::transactionCommit(); } catch (AnwException $e) { AnwStorage::transactionRollback(); throw $e; } $this->out .= $this->tpl()->endProcessDuplication(); }
private function doRevert($oPageGroup, $aaRevertPlan) { $nTime = time(); // simulation $aoAllFutureContents = array(); foreach ($aaRevertPlan['REVERT'] as $aoRevertPages) { $oPageCurrent = $aoRevertPages[0]; $oPageForRevert = $aoRevertPages[1]; if (isset($aoAllFutureContents[$oPageForRevert->getLang()])) { throw new AnwUnexpectedException("already have a content for this lang"); } $aoAllFutureContents[$oPageForRevert->getLang()] = $oPageForRevert->getContent(); } foreach ($aaRevertPlan['RESTORE'] as $oPageForRestore) { if (isset($aoAllFutureContents[$oPageForRestore->getLang()])) { throw new AnwUnexpectedException("already have a content for this lang"); } $aoAllFutureContents[$oPageForRestore->getLang()] = $oPageForRestore->getContent(); } foreach ($aaRevertPlan['KEEP'] as $oPageKept) { if (isset($aoAllFutureContents[$oPageKept->getLang()])) { throw new AnwUnexpectedException("already have a content for this lang"); } $aoAllFutureContents[$oPageKept->getLang()] = $oPageKept->getContent(); } // make sure that everything is in order... (or throws an exception) AnwPage::checkSimilarContents($aoAllFutureContents); // now, apply changes AnwStorage::transactionStart(); try { //important, firstly delete pages which needs it, to avoid conflicts when reverting or creating pages foreach ($aaRevertPlan['DELETE'] as $oPageForDelete) { $sChangeComment = "delete for revert"; $oPageForDelete->delete($nTime, $sChangeComment); } foreach ($aaRevertPlan['REVERT'] as $aoRevertPages) { $oPageCurrent = $aoRevertPages[0]; $oPageForRevert = $aoRevertPages[1]; $sChangeComment = "revert to old revision"; $oPageCurrent->revertToRevision($oPageForRevert, $nTime, $sChangeComment); } foreach ($aaRevertPlan['RESTORE'] as $oPageForRestore) { $sChangeComment = "restore for revert"; $oPageForRestore->restoreArchive($nTime, $sChangeComment); } AnwStorage::transactionCommit(); } catch (AnwException $e) { AnwStorage::transactionRollback(); throw $e; } // redirect to reverted page if possible $oPageGroup->refresh(); if (count($oPageGroup->getPages()) > 0) { $oPageRedirect = $oPageGroup->getPreferedPage(); AnwUtils::redirect(AnwUtils::link($oPageRedirect)); } else { // no page available, go home AnwUtils::redirect(); } }
private function saveTranslation() { try { $asAvailableLangs = $this->getoPage()->getPageGroup()->getAvailableLangs(); //check permissions : translate foreach ($asAvailableLangs as $sLang) { if (AnwEnv::_POST($this->getChkName($sLang))) { $sTranslationName = AnwEnv::_POST($this->getInputName($sLang), ""); if (!AnwCurrentSession::isActionAllowed($sTranslationName, 'translate', $sLang)) { throw new AnwAclException("permission translate denied"); } } } $oPageTranslation = null; AnwStorage::transactionStart(); try { foreach ($asAvailableLangs as $sLang) { if (AnwEnv::_POST($this->getChkName($sLang))) { $sTranslationName = AnwEnv::_POST($this->getInputName($sLang), ""); //create translation $oPageTranslation = $this->getoPage()->createNewTranslation($sTranslationName, $sLang); } } AnwStorage::transactionCommit(); } catch (AnwException $e) { AnwStorage::transactionRollback(); throw $e; } if ($oPageTranslation) { // redirect to last created translation AnwUtils::redirect(AnwUtils::link($oPageTranslation)); } else { // no translation was created, show form again $this->showForm(); } } catch (AnwBadPageNameException $e) { $this->showForm($this->g_("err_badpagename")); } catch (AnwBadLangException $e) { $this->showForm($this->g_("err_badlang")); } catch (AnwPageAlreadyExistsException $e) { $this->showForm($this->g_("err_pagealreadyexists")); } catch (AnwAclException $e) { $this->showForm($this->g_("err_nopermission")); } catch (AnwLangExistsForPageGroupException $e) { $this->showForm($this->g_("err_langexistsforpagegroup")); } }
function deletePages($nTime = null) { if (!$nTime) { $nTime = time(); } $aoPages = $this->getPages(); AnwStorage::transactionStart(); try { foreach ($aoPages as $oPage) { $oPage->delete($nTime); } AnwStorage::transactionCommit(); } catch (AnwException $e) { AnwStorage::transactionRollback(); throw $e; } }
protected function runInitialization() { AnwStorage::transactionStart(); try { $sInitializationLog = $this->getComponentToInitialize()->initializeComponent(); if (!$this->getComponentToInitialize()->isComponentInitialized()) { throw new AnwUnexpectedException("Component is still not initialized!"); } //run additional initialization $sInitializationLog .= $this->initializeAdditional(); $this->out .= $this->tpl()->showInitResult($this->linkStepNext(), $sInitializationLog); AnwStorage::transactionCommit(); //update step status $this->getActionInstall()->updateStepStatusNext(); } catch (AnwComponentInitializeException $e) { $this->showInitializationConfirm($e->getMessage()); } catch (AnwException $e) { AnwStorage::transactionRollback(); throw $e; } }
private function createPageProcess($sLang, $sContentClass) { $sPageName = $this->getPageName(); if (!AnwCurrentSession::isActionAllowed($sPageName, 'create', $sLang)) { throw new AnwAclException("permission create denied"); } $oContentClass = AnwContentClasses::getContentClass($sContentClass); AnwStorage::transactionStart(); try { //create page $oPage = AnwPage::createNewPage($oContentClass, $sPageName, $sLang); //should we create translations for this new page? $asAvailableLangs = $oPage->getPageGroup()->getAvailableLangs(); //check permissions : translate foreach ($asAvailableLangs as $sLang) { if (AnwEnv::_POST($this->getChkName($sLang))) { $sTranslationName = AnwEnv::_POST($this->getInputName($sLang), ""); if (!AnwCurrentSession::isActionAllowed($sTranslationName, 'translate', $sLang)) { throw new AnwAclException("permission translate denied"); } } } foreach ($asAvailableLangs as $sLang) { if (AnwEnv::_POST($this->getChkName($sLang))) { $sTranslationName = AnwEnv::_POST($this->getInputName($sLang), ""); //create translation $oPageTranslation = $oPage->createNewTranslation($sTranslationName, $sLang); } } AnwStorage::transactionCommit(); } catch (AnwException $e) { AnwStorage::transactionRollback(); throw $e; } AnwUtils::redirect(AnwUtils::link($oPage, "edit")); }
function run() { //get a page history ? $oPage = null; $oPageGroup = null; $oPageGroup = $this->getPageGroupForHistory(); if (!$oPageGroup) { // did we requested a page history? $oPage = $this->getPageForHistory(); } //page title if ($oPage) { $sTitle = $this->t_("history_t", array("pagename" => $oPage->getName())); } else { if ($oPageGroup) { $sTitle = $this->t_("history_pagegroup_t", array("pagegroupid" => $oPageGroup->getId())); } else { $sTitle = $this->t_("title"); } } $this->setTitle($sTitle); //filter change types $amAllChangeTypes = AnwChange::getChangeTypes(); $amDisplayChangeTypes = array(); foreach ($amAllChangeTypes as $mChangeType) { if (AnwEnv::_GET("ct_" . $mChangeType)) { $amDisplayChangeTypes[] = $mChangeType; } } if (count($amDisplayChangeTypes) == 0) { $amDisplayChangeTypes = $amAllChangeTypes; if (!$oPage) { $amDisplayChangeTypes = AnwUtils::array_remove($amDisplayChangeTypes, AnwChange::TYPE_PAGE_EDITION_DEPLOY); $amDisplayChangeTypes = AnwUtils::array_remove($amDisplayChangeTypes, AnwChange::TYPE_PAGE_UPDATELINKS); } } //initialize filters list($asAllLangs, $asDisplayLangs) = $this->filterLangs(array("view"), true); list($asAllClasses, $asDisplayClasses) = $this->filterContentClasses(); $nDefaultDisplayModeGrouped = 1; //disable filters if a page is selected if ($oPage || $oPageGroup) { $asDisplayLangs = $asAllLangs; $asDisplayClasses = $asAllClasses; $nDefaultDisplayModeGrouped = 0; //show in detailled mode by default } //display mode $bGrouped = AnwEnv::_GET("fg", $nDefaultDisplayModeGrouped); //limit $nLimit = $this->cfg(self::CFG_LIMIT); if ($bGrouped) { $nLimit *= 2; } //TODO $nStart = (int) AnwEnv::_GET("s", 0); $nStartPrev = $nStart - $nLimit; $nStartNext = $nStart + $nLimit; //get last changes $aoChanges = AnwStorage::getLastChanges($nLimit, $nStart, $asDisplayLangs, $asDisplayClasses, $amDisplayChangeTypes, $oPage, $oPageGroup); if ($bGrouped) { $aoChanges = AnwSimilarChanges::groupSimilarChanges($aoChanges); } //check permissions foreach ($aoChanges as $i => $oChange) { if ($oChange->getPage() && !$oChange->getPage()->isActionAllowed("view") || !AnwCurrentSession::isActionAllowed($oChange->getPageName(), "view", $oChange->getPageLang())) { unset($aoChanges[$i]); } } if (AnwEnv::_GET("feed")) { $this->showFeed($aoChanges); } else { $this->showHtml($aoChanges, $amAllChangeTypes, $amDisplayChangeTypes, $asAllLangs, $asDisplayLangs, $asAllClasses, $asDisplayClasses, $nStartPrev, $nStartNext, $sTitle, $bGrouped, $oPage, $oPageGroup); } }
function loadInfo() { if ($this->bInfoLoaded) { return; } try { $this->debug("Loading page info..." . ($this->bSkipLoadingTranslationsContent ? "(boost)" : "") . ($this->bSkipLoadingContent ? "(superboost)" : "")); if (!$this->isArchive()) { $oPage = AnwStorage::getPageByName($this->sName, $this->bSkipLoadingTranslationsContent, $this->bSkipLoadingContent); } else { $oPage = AnwStorage::getPageArchiveByName($this->sName, $this->nChangeId, $this->bSkipLoadingTranslationsContent, $this->bSkipLoadingContent); } $this->nId = $oPage->getId(); parent::doLoadInfo($oPage); } catch (AnwPageNotFoundException $e) { //page doesn't exist $this->bExists = false; } $this->bInfoLoaded = true; }
/** * Import selected files. * */ private function doImport($sUploadedFile, $asSelectedPages, $bContinueOnErrors) { // we will display the import result after running the whole import // that's why we save the output in a temporary buffer during this process $sOutBuffer = ""; //load XML from file $aaData = $this->getDataFromXmlFile(self::tmpFilename($sUploadedFile)); //delete tmp file AnwUtils::unlink(self::tmpFilename($sUploadedFile), ANWPATH_TMP); $nCountImportErrors = 0; $nCountImportSuccess = 0; $bMustRollback = false; // only when $bContinueOnErrors = false // MAIN TRANSACTION - only when $bContinueOnErrors = false if ($bContinueOnErrors) { // won't revert whole import if errors $bMainTransaction = false; // will commit immediately each imported content $bSubTransaction = true; } else { // will revert whole import if errors $bMainTransaction = true; // won't commit immediately each imported content $bSubTransaction = false; } if ($bMainTransaction) { AnwStorage::transactionStart(); } try { foreach ($aaData['PAGEGROUPS'] as $aaDataGroup) { $sOutBuffer .= $this->tpl()->rowGroupOpen(); $oFirstPage = null; $oContentClass = AnwContentClasses::getContentClass($aaDataGroup['CONTENTCLASS']); foreach ($aaDataGroup['PAGES'] as $aaDataPage) { $asNotices = array(); $sOriginalPageName = $aaDataPage['NAME']; $sPageName = AnwEnv::_POST($this->getInputPageName($sOriginalPageName)); $sPageLang = AnwEnv::_POST($this->getInputPageLang($sOriginalPageName)); if (!$sPageName || !$sPageLang) { throw new AnwUnexpectedException("PageName or PageLang not found for imported content: " . $sOriginalPageName); } $sPageContent = $aaDataPage['CONTENT']; //do we want to import this page? if (in_array($sOriginalPageName, $asSelectedPages) && $sPageName && $sPageLang) { //check pagename and content $asNotices = $this->checkPermissions($sPageName, $sPageLang, $sPageContent); if (count($asNotices) == 0) { // SUB TRANSACTION - only when $bContinueOnErrors = true if ($bSubTransaction) { AnwStorage::transactionStart(); } try { // create the new page $oContent = $oContentClass->rebuildContentFromXml($sPageContent); if (!$oFirstPage) { $oPage = AnwPage::createNewPage($oContentClass, $sPageName, $sPageLang, "", $oContent); } else { $oPage = $oFirstPage->createNewTranslation($sPageName, $sPageLang, "", $oContent); } if ($bSubTransaction) { AnwStorage::transactionCommit(); } // wait for everything to be completed before affecting $oFirstPage, in case of it fails if (!$oFirstPage) { $oFirstPage = $oPage; } } catch (AnwException $e) { // special errors management, see FS#62 $asNotices[] = $this->t_("notice_unknown") . " (" . $e->getMessage() . ")"; //print $e->getFile().'!'.$e->getLine();print_r($e->getTrace()); if ($bMainTransaction) { // we will have to rollback, but we still continue to get the whole report $bMustRollback = true; } if ($bSubTransaction) { AnwStorage::transactionRollback(); } AnwDebug::reportError($e); } } // import result if (count($asNotices) == 0) { $nCountImportSuccess++; // at least we got a success! $sOutBuffer .= $this->tpl()->rowTranslationProcess_success($oPage->link()); } else { $nCountImportErrors++; $sOutBuffer .= $this->tpl()->rowTranslationProcess_failed($sPageName, $sPageLang, $asNotices); } } else { $sOutBuffer .= $this->tpl()->rowTranslationProcess_skipped($sPageName, $sPageLang); } } $sOutBuffer .= $this->tpl()->rowGroupClose(); } if ($bMainTransaction) { if (!$bMustRollback) { AnwStorage::transactionCommit(); } else { AnwStorage::transactionRollback(); } } } catch (AnwException $e) { AnwStorage::transactionRollback(); throw $e; } // output, with import results before the detailled report $this->out .= $this->tpl()->beginProcess(); if ($nCountImportErrors > 0) { if ($nCountImportSuccess > 0) { if ($bContinueOnErrors) { $this->out .= $this->tpl()->importResultErrorsContinued($nCountImportSuccess, $nCountImportErrors); } else { $this->out .= $this->tpl()->importResultErrorsCancelled($nCountImportSuccess, $nCountImportErrors); } } else { $this->out .= $this->tpl()->importResultFailed($nCountImportErrors); } } else { $this->out .= $this->tpl()->importResultSuccess($nCountImportSuccess); } $this->out .= $this->tpl()->importDetails($sOutBuffer); }
/** * @throws AnwUnexpectedException */ static function loadDriver() { AnwDebug::startbench("Storage driver init"); self::$oDriver = AnwStorageDriver::loadComponent(AnwComponent::globalCfgDriverStorage()); AnwDebug::stopbench("Storage driver init"); }
protected static function getNewsList($oPage) { //fetch news linked to this category $asPatterns = array(); $oContentClass = AnwContentClasses::getContentClass(self::NEWS_CLASS); $asLangs = array($oPage->getLang()); $nLimit = 0; $sSortUser = AnwContentClassPageDefault_news::PUB_DATE; $sOrder = AnwUtils::SORTORDER_ASC; $asFilters = array(); $asFilters[] = array('FIELD' => AnwContentClassPageDefault_news::PUB_CATEGORIES, 'OPERATOR' => AnwUtils::FILTER_OP_EQUALS, 'VALUE' => $oPage->getPageGroup()->getId()); $aoNewsPages = AnwStorage::fetchPagesByClass($asPatterns, $oContentClass, $asLangs, $nLimit, $sSortUser, $sOrder, $asFilters); return $aoNewsPages; }
protected function getMenuPage() { $oPage = null; try { $sMenuPageName = $this->getMenuPageName(); $sActionLang = AnwAction::getActionLang(); $oPage = AnwStorage::getPageByName($sMenuPageName, false, false, $sActionLang); // we don't check ACLs for better performances... // load translation if available if ($oPage->getLang() != $sActionLang) { $oPage = $oPage->getPageGroup()->getPreferedPage($sActionLang); } } catch (AnwException $e) { } return $oPage; }
private function saveTranslations($sAddLang) { try { if (!Anwi18n::langExists($sAddLang)) { throw new AnwBadLangException(); } $this->out .= $this->tpl()->startProcess(); $bSomethingDone = false; $aoPageGroups = AnwStorage::getPageGroups(false, null, null); AnwStorage::transactionStart(); try { foreach ($aoPageGroups as $oPageGroup) { $aoPages = $oPageGroup->getPages(); $bChecked = AnwEnv::_POST($this->getChkName($oPageGroup)); if (!isset($aoPages[$sAddLang]) && $bChecked) { $sTranslationName = AnwEnv::_POST($this->getInputName($oPageGroup)); //check permissions : translate if (!AnwCurrentSession::isActionAllowed($sTranslationName, 'translate', $sAddLang)) { throw new AnwAclException("permission translate denied"); } //find PageRef $nPageRefId = (int) AnwEnv::_POST($this->getInputRef($oPageGroup)); $oPageRef = new AnwPageById($nPageRefId); if (isset($aoPages[$oPageRef->getLang()]) && $oPageRef->getId() == $aoPages[$oPageRef->getLang()]->getId()) { //create translation $oPageTranslation = $oPageRef->createNewTranslation($sTranslationName, $sAddLang); $this->out .= $this->tpl()->newTranslationCreated($sAddLang, $oPageTranslation->link()); $bSomethingDone = true; } } } AnwStorage::transactionCommit(); } catch (AnwException $e) { AnwStorage::transactionRollback(); throw $e; } $sUrlContinue = $this->linkMe(array("addlang" => $sAddLang)); if (!$bSomethingDone) { AnwUtils::redirect($sUrlContinue); } $this->out .= $this->tpl()->endProcess($sUrlContinue); } catch (AnwBadPageNameException $e) { $this->showForm($sAddLang, $this->g_("err_badpagename")); } catch (AnwBadLangException $e) { $this->showForm($sAddLang, $this->g_("err_badlang")); } catch (AnwPageAlreadyExistsException $e) { $this->showForm($sAddLang, $this->g_("err_pagealreadyexists")); } catch (AnwAclException $e) { $this->showForm($sAddLang, $this->g_("err_nopermission")); } catch (AnwLangExistsForPageGroupException $e) { $this->showForm($sAddLang, $this->g_("err_langexistsforpagegroup")); } }
function toHtml($oContent, $oPage) { $aoContentClasses = array(); $asContentClassNames = $oContent->getContentFieldValues(self::FIELD_CONTENTCLASS); foreach ($asContentClassNames as $sContentClassName) { $oContentClass = AnwContentClasses::getContentClass($sContentClassName); $aoContentClasses[] = $oContentClass; } unset($asContentClassNames); //get feed items $aoMatchingPages = AnwStorage::fetchPages($oContent->getContentFieldValues(self::FIELD_MATCH, true), $aoContentClasses, array($oPage->getLang()), $oContent->getContentFieldValue(self::FIELD_LIMIT), AnwUtils::SORT_BY_TIME, AnwUtils::SORTORDER_DESC); $aoFeedItems = array(); foreach ($aoMatchingPages as $oMatchingPage) { $oFeedItem = $oMatchingPage->toFeedItem(); $aoFeedItems[] = $oFeedItem; } if (AnwEnv::_GET(self::GET_FEED) != AnwFeed::TYPE_RSS2) { $sUrlRss = AnwUtils::link($oPage, "view", array(self::GET_FEED => AnwFeed::TYPE_RSS2)); //show feed info $oOutputHtml = new AnwOutputHtml($oPage); $oOutputHtml->setTitle($oContent->getContentFieldValue(self::FIELD_TITLE)); $sHtmlItems = ""; foreach ($aoFeedItems as $oFeedItem) { $sHtmlItems .= $this->tpl()->feedItem($oFeedItem->getTitle(), $oFeedItem->getLink()); } $sHtmlBody = $this->tpl()->feedInfo($oContent->getContentFieldValue(self::FIELD_TITLE), $oContent->getContentFieldValue(self::FIELD_DESCRIPTION), $sUrlRss, $sHtmlItems, $oPage->getLang()); $oOutputHtml->setBody($sHtmlBody); // load contentclass CSS $sHtmlHead = $this->getCssSrcComponent(self::CSS_FILE); $sHtmlHead .= $this->tpl()->headRss($sUrlRss, $oContent->getContentFieldValue(self::FIELD_TITLE)); $oOutputHtml->setHead($sHtmlHead); } else { $sUrlRss = AnwUtils::linkAbsolute($oPage, "view", array(self::GET_FEED => AnwFeed::TYPE_RSS2)); //export to rss $oFeed = new AnwFeed(AnwFeed::TYPE_RSS2, $oContent->getContentFieldValue(self::FIELD_TITLE), $sUrlRss, $oContent->getContentFieldValue(self::FIELD_DESCRIPTION)); foreach ($aoFeedItems as $oFeedItem) { $oFeed->addItem($oFeedItem); } $oFeed->output(); } return $oOutputHtml; }
protected function unlockPageForEdition() { AnwStorage::unlockPage($this->getoPage(), AnwCurrentSession::getSession()); }
function initDatatype() { $oDatatype = parent::initDatatype(); //set enum values $nFetchingLimit = 0; $aoPages = AnwStorage::fetchPagesByClass($this->asFetchingPatterns, $this->oFetchingContentClass, $this->asFetchingLangs, $nFetchingLimit, $this->sFetchingSort, $this->sFetchingSortOrder, $this->asFetchingFilters); $asEnumValues = array(); foreach ($aoPages as $oPage) { //use pageId as field value, so that pages can be renamed without loosing enum values $asEnumValues[$oPage->getPageGroup()->getId()] = $oPage->getName(); } $oDatatype->setEnumValues($asEnumValues); return $oDatatype; }