/** * Handles the Parser Hook for TagExtensions * @param string $sInput Content of $lt;pagesvisited /> from MediaWiki Framework * @param array $aAttributes Attributes of <pagesvisited /> from MediaWiki Framework * @param Parser $oParser Parser object from MediaWiki Framework * @return string HTML list of recently visited pages */ public function onPagesVisitedTag($sInput, $aAttributes, $oParser) { $oParser->disableCache(); $oErrorListView = new ViewTagErrorList($this); $iCount = BsCore::sanitizeArrayEntry($aAttributes, 'count', 5, BsPARAMTYPE::INT); $iMaxTitleLength = BsCore::sanitizeArrayEntry($aAttributes, 'maxtitlelength', 20, BsPARAMTYPE::INT); $sNamespaces = BsCore::sanitizeArrayEntry($aAttributes, 'namespaces', 'all', BsPARAMTYPE::STRING | BsPARAMOPTION::CLEANUP_STRING); $sSortOrder = BsCore::sanitizeArrayEntry($aAttributes, 'order', 'time', BsPARAMTYPE::STRING | BsPARAMOPTION::CLEANUP_STRING); //Validation $oValidationICount = BsValidator::isValid('IntegerRange', $iCount, array('fullResponse' => true, 'lowerBoundary' => 1, 'upperBoundary' => 30)); if ($oValidationICount->getErrorCode()) { $oErrorListView->addItem(new ViewTagError('count: ' . $oValidationICount->getI18N())); } $oValidationIMaxTitleLength = BsValidator::isValid('IntegerRange', $iMaxTitleLength, array('fullResponse' => true, 'lowerBoundary' => 5, 'upperBoundary' => 50)); if ($oValidationIMaxTitleLength->getErrorCode()) { $oErrorListView->addItem(new ViewTagError('maxtitlelength: ' . $oValidationIMaxTitleLength->getI18N())); } if ($oErrorListView->hasItems()) { return $oErrorListView->execute(); } $iCurrentNamespaceId = $oParser->getTitle()->getNamespace(); $oListView = $this->makePagesVisitedWikiList($iCount, $sNamespaces, $iCurrentNamespaceId, $iMaxTitleLength, $sSortOrder); $sOut = $oListView->execute(); if ($oListView instanceof ViewTagErrorList) { return $sOut; } else { return $this->mCore->parseWikiText($sOut, $this->getTitle()); } }
/** * Creates the HTML for <bs:watchlist /> tag * @param string $sInput Inner HTML of the tag. Not used. * @param array $aAttributes List of the tag's attributes. * @param Parser $oParser MediaWiki parser object. * @return string Rendered HTML. */ public function onWatchlistTag($sInput, $aAttributes, $oParser) { //Get arguments $iCount = BsCore::sanitizeArrayEntry($aAttributes, 'count', 5, BsPARAMTYPE::INT); $iMaxTitleLength = BsCore::sanitizeArrayEntry($aAttributes, 'maxtitlelength', 20, BsPARAMTYPE::INT); $sOrder = BsCore::sanitizeArrayEntry($aAttributes, 'order', 'pagename', BsPARAMTYPE::SQL_STRING); //'pagename|time' //Validation $oErrorListView = new ViewTagErrorList($this); $oValidationICount = BsValidator::isValid('IntegerRange', $iCount, array('fullResponse' => true, 'lowerBoundary' => 1, 'upperBoundary' => 1000)); if ($oValidationICount->getErrorCode()) { $oErrorListView->addItem(new ViewTagError('count: ' . wfMessage($oValidationICount->getI18N())->text())); } $oValidationIMaxTitleLength = BsValidator::isValid('IntegerRange', $iMaxTitleLength, array('fullResponse' => true, 'lowerBoundary' => 5, 'upperBoundary' => 500)); if ($oValidationIMaxTitleLength->getErrorCode()) { $oErrorListView->addItem(new ViewTagError('maxtitlelength: ' . wfMessage($oValidationIMaxTitleLength->getI18N())->text())); } $oValidationResult = BsValidator::isValid('SetItem', $sOrder, array('fullResponse' => true, 'setname' => 'sort', 'set' => array('time', 'pagename'))); if ($oValidationResult->getErrorCode()) { $oErrorListView->addItem(new ViewTagError($oValidationResult->getI18N())); } if ($oErrorListView->hasItems()) { return $oErrorListView->execute(); } $oWatchList = $this->fetchWatchlist($this->getUser(), $iCount, $iMaxTitleLength, $sOrder); return $this->mCore->parseWikiText($oWatchList->execute(), $this->getTitle()); }
/** * Callback for MediaWiki Parser. Renders the list of wanted articles * @param string $sInput The content of the tag. Usually empty string. * @param array $aAttributes An Array of given attributes * @param Parser $oParser The MediaWiki parser object * @return string The rendered <bs:wantedarticles /> tag */ public function onWantedArticlesTag($sInput, $aAttributes, $oParser) { $oParser->disableCache(); $oErrorListView = new ViewTagErrorList($this); $sDefaultTitle = wfMessage('bs-wantedarticle-tag-default-title')->plain(); $iCount = BsCore::sanitizeArrayEntry($aAttributes, 'count', 5, BsPARAMTYPE::INT); $sSort = BsCore::sanitizeArrayEntry($aAttributes, 'sort', 'time', BsPARAMTYPE::STRING); $sOrder = BsCore::sanitizeArrayEntry($aAttributes, 'order', 'DESC', BsPARAMTYPE::STRING); $sTitle = BsCore::sanitizeArrayEntry($aAttributes, 'title', $sDefaultTitle, BsPARAMTYPE::STRING); $sType = BsCore::sanitizeArrayEntry($aAttributes, 'type', 'list', BsPARAMTYPE::STRING); //Validation $oValidationICount = BsValidator::isValid('IntegerRange', $iCount, array('fullResponse' => true, 'lowerBoundary' => 1, 'upperBoundary' => 30)); if ($oValidationICount->getErrorCode()) { $oErrorListView->addItem(new ViewTagError('count: ' . $oValidationICount->getI18N())); } if (!in_array($sSort, array('', 'time', 'title'))) { $oErrorListView->addItem(new ViewTagError('sort: ' . wfMessage('bs-wantedarticle-sort-value-unknown')->plain())); } if (!in_array($sOrder, array('', 'ASC', 'DESC'))) { $oErrorListView->addItem(new ViewTagError('order: ' . wfMessage('bs-wantedarticle-order-value-unknown')->plain())); } if ($oErrorListView->hasItems()) { return $oErrorListView->execute(); } //Create list $aWishList = $this->getTitleListFromTitle($this->getDataSourceTemplateArticle()->getTitle()); switch ($sSort) { case 'title': $aTitleList = $this->sortWishListByTitle($aWishList); break; case 'time': default: $aTitleList = $this->getDefaultTitleList($aWishList); } if ($sOrder == 'ASC') { $aTitleList = array_reverse($aTitleList); } $oWishListView = new ViewWantedArticleTag(); $oWishListView->setTitle($sTitle)->setType($sType)->setOrder($sOrder)->setSort($sSort)->setCount($iCount)->setList($aTitleList); return $oWishListView->execute(); }