function displayEditForm() { global $wgOut, $wgRequest; $url = $wgRequest->getVal('_url'); $title = $wgRequest->getVal('_title'); $l = new Link(); $link = $l->getLinkByPageID($wgRequest->getInt('id')); if (is_array($link)) { $url = htmlspecialchars($link['url'], ENT_QUOTES); $description = htmlspecialchars($link['description'], ENT_QUOTES); } else { $title = SpecialPage::getTitleFor('LinkSubmit'); $wgOut->redirect($title->getFullURL()); } $wgOut->setPageTitle(wfMsg('linkfilter-edit-title', $link['title'])); $_SESSION['alreadysubmitted'] = false; $output = '<div class="lr-left"> <div class="link-home-navigation"> <a href="' . Link::getHomeLinkURL() . '">' . wfMsg('linkfilter-home-button') . '</a>'; if (Link::canAdmin()) { $output .= ' <a href="' . Link::getLinkAdminURL() . '">' . wfMsg('linkfilter-approve-links') . '</a>'; } $output .= '<div class="cleared"></div> </div> <form name="link" id="linksubmit" method="post" action=""> <div class="link-submit-title"> <label>' . wfMsg('linkfilter-url') . '</label> </div> <input tabindex="2" class="lr-input" type="text" name="lf_URL" id="lf_URL" value="' . $url . '"/> <div class="link-submit-title"> <label>' . wfMsg('linkfilter-description') . '</label> </div> <div class="link-characters-left">' . wfMsg('linkfilter-description-max') . ' - ' . wfMsg('linkfilter-description-left', '<span id="desc-remaining">300</span>') . '</div> <textarea tabindex="3" class="lr-input" rows="4" name="lf_desc" id="lf_desc">' . $description . '</textarea> <div class="link-submit-title"> <label>' . wfMsg('linkfilter-type') . '</label> </div> <select tabindex="4" name="lf_type" id="lf_type"> <option value="">-</option>'; $linkTypes = Link::getLinkTypes(); foreach ($linkTypes as $id => $type) { $selected = ''; if ($link['type'] == $id) { $selected = ' selected="selected"'; } $output .= "<option value=\"{$id}\"{$selected}>{$type}</option>"; } $output .= '</select> <div class="link-submit-button"> <input tabindex="5" class="site-button" type="button" id="link-submit-button" value="' . wfMsg('linkfilter-submit-button') . '" /> </div> </form> </div>'; $output .= '<div class="lr-right">' . wfMsgExt('linkfilter-instructions', 'parse') . '</div> <div class="cleared"></div>'; return $output; }
function wfLinkFilterStatus($id, $status) { // Check permissions if (!Link::canAdmin()) { return ''; } $dbw = wfGetDB(DB_MASTER); $dbw->update('link', array('link_status' => intval($status)), array('link_id' => intval($id)), __METHOD__); $dbw->commit(); if ($status == 1) { $l = new Link(); $l->approveLink($id); } return 'ok'; }
/** * Display the form for submitting a new link. * @return String: HTML */ function displayAddForm() { global $wgRequest; $url = $wgRequest->getVal('_url'); $title = $wgRequest->getVal('_title'); if (!$url) { $url = 'http://'; } if (!$title) { $titleFromRequest = $wgRequest->getVal('lf_title'); if (isset($titleFromRequest)) { $title = $titleFromRequest; } } $_SESSION['alreadysubmitted'] = false; $descFromRequest = $wgRequest->getVal('lf_desc'); $lf_desc = isset($descFromRequest) ? $descFromRequest : ''; $output = '<div class="lr-left"> <div class="link-home-navigation"> <a href="' . Link::getHomeLinkURL() . '">' . wfMsg('linkfilter-home-button') . '</a>'; // Show a link to the LinkAdmin page for privileged users if (Link::canAdmin()) { $output .= ' <a href="' . Link::getLinkAdminURL() . '">' . wfMsg('linkfilter-approve-links') . '</a>'; } $output .= '<div class="cleared"></div> </div> <form name="link" id="linksubmit" method="post" action=""> <div class="link-submit-title"> <label>' . wfMsg('linkfilter-title') . '</label> </div> <input tabindex="1" class="lr-input" type="text" name="lf_title" id="lf_title" value="' . $title . '" maxlength="150" /> <div class="link-submit-title"> <label>' . wfMsg('linkfilter-url') . '</label> </div> <input tabindex="2" class="lr-input" type="text" name="lf_URL" id="lf_URL" value="' . $url . '"/> <div class="link-submit-title"> <label>' . wfMsg('linkfilter-description') . '</label> </div> <div class="link-characters-left">' . wfMsg('linkfilter-description-max') . ' - ' . wfMsg('linkfilter-description-left', '<span id="desc-remaining">300</span>') . '</div> <textarea tabindex="3" class="lr-input" rows="4" name="lf_desc" id="lf_desc" value="' . $lf_desc . '"></textarea> <div class="link-submit-title"> <label>' . wfMsg('linkfilter-type') . '</label> </div> <select tabindex="4" name="lf_type" id="lf_type"> <option value="">-</option>'; $linkTypes = Link::getLinkTypes(); foreach ($linkTypes as $id => $type) { $output .= "<option value=\"{$id}\">{$type}</option>"; } $output .= '</select> <div class="link-submit-button"> <input tabindex="5" class="site-button" type="button" id="link-submit-button" value="' . wfMsg('linkfilter-submit-button') . '" /> </div> </form> </div>'; $output .= '<div class="lr-right">' . wfMessage('linkfilter-instructions')->inContentLanguage()->parse() . '</div> <div class="cleared"></div>'; return $output; }
/** * Callback function for registerLinkFilterHook. */ public static function renderLinkFilterHook($input, $args, $parser) { global $wgMemc, $wgOut; $parser->disableCache(); // Add CSS (ParserOutput class only has addModules(), not // addModuleStyles() or addModuleScripts()...strange) $wgOut->addModuleStyles('ext.linkFilter'); if (isset($args['count'])) { $count = intval($args['count']); } else { $count = 10; } $key = wfMemcKey('linkfilter', $count); $data = $wgMemc->get($key); if ($data) { wfDebugLog('LinkFilter', "Loaded linkfilter hook from cache\n"); $links = $data; } else { wfDebugLog('LinkFilter', "Loaded linkfilter hook from DB\n"); $l = new LinkList(); $links = $l->getLinkList(LINK_APPROVED_STATUS, '', $count, 1, 'link_approved_date'); $wgMemc->set($key, $links, 60 * 5); } $link_submit = SpecialPage::getTitleFor('LinkSubmit'); $link_all = SpecialPage::getTitleFor('LinksHome'); $output = '<div> <div class="linkfilter-links"> <a href="' . $link_submit->escapeFullURL() . '">' . wfMsg('linkfilter-submit') . '</a> / <a href="' . $link_all->escapeFullURL() . '">' . wfMsg('linkfilter-all') . '</a>'; // Show a link to the link administration panel for privileged users if (Link::canAdmin()) { $output .= ' / <a href="' . Link::getLinkAdminURL() . '">' . wfMsg('linkfilter-approve-links') . '</a>'; } $output .= '</div> <div class="cleared"></div>'; foreach ($links as $link) { $output .= '<div class="link-item-hook"> <span class="link-item-hook-type">' . $link['type_name'] . '</span> <span class="link-item-hook-url"> <a href="' . $link['wiki_page'] . '" rel="nofollow">' . $link['title'] . '</a> </span> <span class="link-item-hook-page"> <a href="' . $link['wiki_page'] . '">(' . wfMsgExt('linkfilter-comments', 'parsemag', $link['comments']) . ')</a> </span> </div>'; } $output .= '</div>'; return $output; }
/** * Show the special page * * @param $par Mixed: parameter passed to the page or null */ public function execute($par) { global $wgOut, $wgRequest, $wgSupressPageTitle; $wgSupressPageTitle = true; // Add CSS & JS $wgOut->addModules('ext.linkFilter'); $per_page = 20; $page = $wgRequest->getInt('page', 1); $link_type = $wgRequest->getInt('link_type'); if ($link_type) { $type_name = Link::$link_types[$link_type]; $pageTitle = wfMsg('linkfilter-home-title', $type_name); } else { $type_name = 'All'; $pageTitle = wfMsg('linkfilter-home-title-all'); } $wgOut->setPageTitle($pageTitle); $output = '<div class="links-home-left">' . "\n\t"; $output .= '<h1 class="page-title">' . $pageTitle . '</h1>' . "\n\t"; $output .= '<div class="link-home-navigation"> <a href="' . Link::getSubmitLinkURL() . '">' . wfMsg('linkfilter-submit-title') . '</a>' . "\n"; if (Link::canAdmin()) { $output .= "\t\t" . '<a href="' . Link::getLinkAdminURL() . '">' . wfMsg('linkfilter-approve-links') . '</a>' . "\n"; } $output .= "\t\t" . '<div class="cleared"></div> </div>' . "\n"; $l = new LinkList(); $type = 0; // FIXME lazy hack --Jack on July 2, 2009 $total = $l->getLinkListCount(LINK_APPROVED_STATUS, $type); $links = $l->getLinkList(LINK_APPROVED_STATUS, $type, $per_page, $page, 'link_approved_date'); $linkRedirect = SpecialPage::getTitleFor('LinkRedirect'); $output .= '<div class="links-home-container">'; $link_count = count($links); $x = 1; // No links at all? Oh dear...show a message to the user about that! if ($link_count <= 0) { $wgOut->addWikiMsg('linkfilter-no-links-at-all'); } // Create RSS feed icon for special page $wgOut->setSyndicated(true); // Make feed (RSS/Atom) if requested $feedType = $wgRequest->getVal('feed'); if ($feedType != '') { return $this->makeFeed($feedType, $links); } foreach ($links as $link) { $border_fix = ''; if ($link_count == $x) { $border_fix = 'border-fix'; } $border_fix2 = ''; wfSuppressWarnings(); $date = date('l, F j, Y', $link['approved_timestamp']); if ($date != $last_date) { $border_fix2 = ' border-top-fix'; $output .= "<div class=\"links-home-date\">{$date}</div>"; #global $wgLang; #$unix = wfTimestamp( TS_MW, $link['approved_timestamp'] ); #$weekday = $wgLang->getWeekdayName( gmdate( 'w', $unix ) + 1 ); #$output .= '<div class="links-home-date">' . $weekday . # wfMsg( 'word-separator' ) . $wgLang->date( $unix, true ) . # '</div>'; } wfRestoreWarnings(); // okay, so suppressing E_NOTICEs is kinda bad practise, but... -Jack, January 21, 2010 $last_date = $date; $output .= "<div class=\"link-item-container{$border_fix2}\">\n\t\t\t\t\t<div class=\"link-item-type\">\n\t\t\t\t\t\t{$link['type_name']}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"link-item\">\n\t\t\t\t\t\t<div class=\"link-item-url\">\n\t\t\t\t\t\t\t<a href=\"" . $linkRedirect->escapeFullURL(array('link' => 'true', 'url' => $link['url'])) . '" target="new">' . $link['title'] . '</a> </div> <div class="link-item-desc">' . $link['description'] . '</div> </div> <div class="link-item-page"> <a href="' . $link['wiki_page'] . '">(' . wfMsgExt('linkfilter-comments', 'parsemag', $link['comments']) . ')</a> </div> <div class="cleared"></div>'; $output .= '</div>'; $x++; } $output .= '</div>'; /** * Build next/prev nav */ $numofpages = $total / $per_page; $pageLink = $this->getTitle(); if ($numofpages > 1) { $output .= '<div class="page-nav">'; if ($page > 1) { $output .= '<a href="' . $pageLink->escapeFullURL('page=' . ($page - 1)) . '">' . wfMsg('linkfilter-previous') . '</a> '; } if ($total % $per_page != 0) { $numofpages++; } if ($numofpages >= 9 && $page < $total) { $numofpages = 9 + $page; } if ($numofpages > $total / $per_page) { $numofpages = $total / $per_page + 1; } for ($i = 1; $i <= $numofpages; $i++) { if ($i == $page) { $output .= $i . ' '; } else { $output .= '<a href="' . $pageLink->escapeFullURL('page=' . $i) . "\">{$i}</a> "; } } if ($total - $per_page * $page > 0) { $output .= ' <a href="' . $pageLink->escapeFullURL('page=' . ($page + 1)) . '">' . wfMsg('linkfilter-next') . '</a>'; } $output .= '</div>'; } $output .= '</div>' . "\n"; // .links-home-left global $wgLinkPageDisplay; if ($wgLinkPageDisplay['rightcolumn']) { $output .= '<div class="links-home-right">'; $output .= '<div class="links-home-unit-container">'; $output .= $this->getPopularArticles(); $output .= $this->getInTheNews(); $output .= '</div>'; $output .= $this->getAdUnit(); $output .= '</div>'; } $output .= '<div class="cleared"></div>' . "\n"; $wgOut->addHTML($output); }