/** * @author Federico "Lox" Lucignano <*****@*****.**> * * Implementation of a parser function */ public static function parseTag($input, $args, $parser) { $relatedTitle = null; $relatedImage = null; $relatedUrl = null; if (!empty($args[TOPLIST_ATTRIBUTE_RELATED])) { self::$mAttributes[TOPLIST_ATTRIBUTE_RELATED] = $args[TOPLIST_ATTRIBUTE_RELATED]; $relatedTitle = Title::newFromText($args[TOPLIST_ATTRIBUTE_RELATED]); $relatedUrl = $relatedTitle->getLocalUrl(); } if (!empty($args[TOPLIST_ATTRIBUTE_PICTURE])) { self::$mAttributes[TOPLIST_ATTRIBUTE_PICTURE] = $args[TOPLIST_ATTRIBUTE_PICTURE]; if (!empty(self::$mAttributes[TOPLIST_ATTRIBUTE_PICTURE])) { $source = new ImageServing(null, 200); $result = $source->getThumbnails(array(self::$mAttributes[TOPLIST_ATTRIBUTE_PICTURE])); if (!empty($result[self::$mAttributes[TOPLIST_ATTRIBUTE_PICTURE]])) { $relatedImage = $result[self::$mAttributes[TOPLIST_ATTRIBUTE_PICTURE]]; if (empty($relatedUrl)) { $title = Title::newFromText($relatedImage['name'], NS_FILE); $relatedUrl = $title->getLocalURL(); } } } } self::$mAttributes[TOPLIST_ATTRIBUTE_DESCRIPTION] = ''; if (!empty($args[TOPLIST_ATTRIBUTE_DESCRIPTION])) { self::$mAttributes[TOPLIST_ATTRIBUTE_DESCRIPTION] = $args[TOPLIST_ATTRIBUTE_DESCRIPTION]; } if (!empty(self::$mList)) { $list = self::$mList; self::$mList = null; } else { $list = TopList::newFromTitle($parser->mTitle); } if (!empty($list)) { $template = new EasyTemplate(dirname(__FILE__) . "/templates/"); if ($relatedTitle instanceof Title) { $relatedTitleData = array('localURL' => $relatedTitle->getLocalURL(), 'text' => $relatedTitle->getText()); } else { $relatedTitleData = null; } $template->set_vars(array('list' => $list, 'listTitle' => $list->getTitle()->getText(), 'relatedTitleData' => $relatedTitleData, 'relatedImage' => $relatedImage, 'attribs' => self::$mAttributes, 'relatedUrl' => $relatedUrl, 'description' => self::$mAttributes[TOPLIST_ATTRIBUTE_DESCRIPTION])); self::$mOutput = $template->render('list'); // remove whitespaces to avoid extra <p> tags self::$mOutput = preg_replace("#[\n\t]+#", '', self::$mOutput); } else { self::$mOutput = ''; } return self::$mOutput; }