public function testRequireLoginNotAnon()
 {
     $specialPage = new SpecialPage('Watchlist', 'viewmywatchlist');
     $user = User::newFromName("UTSysop");
     $specialPage->getContext()->setUser($user);
     $specialPage->requireLogin();
     // no exception thrown, logged in use can access special page
     $this->assertTrue(true);
 }
 public function __construct()
 {
     parent::__construct('CategoryIntersection');
     global $wgContLang;
     $this->CATEGORY_NS_PREFIX = $wgContLang->getNSText(NS_CATEGORY) . ":";
     // the actual namespace prefix (includes the colon at the end).
 }
Example #3
0
 /**
  * Main execution point
  *
  * @param string $subpage
  */
 function execute($subpage)
 {
     // Anons don't get a watchlist
     $this->requireLogin('watchlistanontext');
     $output = $this->getOutput();
     $request = $this->getRequest();
     $this->addHelpLink('Help:Watching pages');
     $output->addModules(array('mediawiki.special.changeslist.visitedstatus'));
     $mode = SpecialEditWatchlist::getMode($request, $subpage);
     if ($mode !== false) {
         if ($mode === SpecialEditWatchlist::EDIT_RAW) {
             $title = SpecialPage::getTitleFor('EditWatchlist', 'raw');
         } elseif ($mode === SpecialEditWatchlist::EDIT_CLEAR) {
             $title = SpecialPage::getTitleFor('EditWatchlist', 'clear');
         } else {
             $title = SpecialPage::getTitleFor('EditWatchlist');
         }
         $output->redirect($title->getLocalURL());
         return;
     }
     $this->checkPermissions();
     $user = $this->getUser();
     $opts = $this->getOptions();
     $config = $this->getConfig();
     if (($config->get('EnotifWatchlist') || $config->get('ShowUpdatedMarker')) && $request->getVal('reset') && $request->wasPosted()) {
         $user->clearAllNotifications();
         $output->redirect($this->getPageTitle()->getFullURL($opts->getChangedValues()));
         return;
     }
     parent::execute($subpage);
 }
 function execute($par)
 {
     /**
      * Some satellite ISPs use broken precaching schemes that log people out straight after
      * they're logged in (bug 17790). Luckily, there's a way to detect such requests.
      */
     if (isset($_SERVER['REQUEST_URI']) && strpos($_SERVER['REQUEST_URI'], '&') !== false) {
         wfDebug("Special:Userlogout request {$_SERVER['REQUEST_URI']} looks suspicious, denying.\n");
         throw new HttpError(400, $this->msg('suspicious-userlogout'), $this->msg('loginerror'));
     }
     $this->setHeaders();
     $this->outputHeader();
     // Make sure it's possible to log out
     $session = MediaWiki\Session\SessionManager::getGlobalSession();
     if (!$session->canSetUser()) {
         throw new ErrorPageError('cannotlogoutnow-title', 'cannotlogoutnow-text', [$session->getProvider()->describe(RequestContext::getMain()->getLanguage())]);
     }
     $user = $this->getUser();
     $oldName = $user->getName();
     $user->logout();
     $loginURL = SpecialPage::getTitleFor('Userlogin')->getFullURL($this->getRequest()->getValues('returnto', 'returntoquery'));
     $out = $this->getOutput();
     $out->addWikiMsg('logouttext', $loginURL);
     // Hook.
     $injected_html = '';
     Hooks::run('UserLogoutComplete', [&$user, &$injected_html, $oldName]);
     $out->addHTML($injected_html);
     $out->returnToMain();
 }
Example #5
0
	public function getActionLinks() {
		if ( $this->entry->isDeleted( LogPage::DELETED_ACTION ) // Action is hidden
			|| $this->entry->getSubtype() !== 'move'
			|| !$this->context->getUser()->isAllowed( 'move' ) )
		{
			return '';
		}

		$params = $this->extractParameters();
		$destTitle = Title::newFromText( $params[3] );
		if ( !$destTitle ) {
			return '';
		}

		$revert = Linker::linkKnown(
			SpecialPage::getTitleFor( 'Movepage' ),
			$this->msg( 'revertmove' )->escaped(),
			array(),
			array(
				'wpOldTitle' => $destTitle->getPrefixedDBkey(),
				'wpNewTitle' => $this->entry->getTarget()->getPrefixedDBkey(),
				'wpReason' => $this->msg( 'revertmove' )->inContentLanguage()->text(),
				'wpMovetalk' => 0
			)
		);
		return $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
	}
Example #6
0
 static function formatLogEntry($type, $action, $title, $sk, $parameters)
 {
     $msg = "lqt-log-action-{$action}";
     switch ($action) {
         case 'merge':
             if ($parameters[0]) {
                 $msg = 'lqt-log-action-merge-across';
             } else {
                 $msg = 'lqt-log-action-merge-down';
             }
             break;
         case 'move':
             $smt = new SpecialMoveThread();
             $rightsCheck = $smt->checkUserRights($parameters[1] instanceof Title ? $parameters[1] : Title::newFromText($parameters[1]), $parameters[0] instanceof Title ? $parameters[0] : Title::newFromText($parameters[0]));
             if ($rightsCheck === true) {
                 $parameters[] = Message::rawParam(Linker::link(SpecialPage::getTitleFor('MoveThread', $title), wfMessage('revertmove')->text(), array(), array('dest' => $parameters[0])));
             } else {
                 $parameters[] = '';
             }
             break;
         default:
             // Give grep a chance to find the usages:
             // lqt-log-action-move, lqt-log-action-split, lqt-log-action-subjectedit,
             // lqt-log-action-resort, lqt-log-action-signatureedit
             $msg = "lqt-log-action-{$action}";
             break;
     }
     array_unshift($parameters, $title->getPrefixedText());
     $html = wfMessage($msg, $parameters);
     if ($sk === null) {
         return StringUtils::delimiterReplace('<', '>', '', $html->inContentLanguage()->parse());
     }
     return $html->parse();
 }
 /**
  * Constructor
  */
 public function __construct()
 {
     global $wgUser;
     parent::__construct('ChangeAuthor', 'changeauthor');
     $this->selfTitle = SpecialPage::getTitleFor('ChangeAuthor');
     $this->skin = $wgUser->getSkin();
 }
	/**
	 * Constructor: initialise object
	 * Get data POSTed through the form and assign them to the object
	 *
	 * @param $request WebRequest: Data posted.
	 */
	public function __construct( $request = null ) {
		global $wgRequest;

		SpecialPage::__construct( 'PictureGameAjaxUpload', 'upload', false );

		$this->loadRequest( is_null( $request ) ? $wgRequest : $request );
	}
Example #9
0
 function showForm($form, $errmsg = null)
 {
     global $wgOut, $wgRequest, $wgParser, $wgUser, $wgSpecialFormRecaptcha;
     $self = SpecialPage::getTitleFor(wfMsgForContent('form') . '/' . $form->name);
     $wgOut->setPageTitle($form->title);
     if (!is_null($form->instructions)) {
         $wgOut->addHTML(Xml::openElement('div', array('class' => 'instructions')) . $wgOut->parse($form->instructions) . Xml::closeElement('div') . Xml::element('br'));
     }
     if (!is_null($errmsg)) {
         $wgOut->addHTML(Xml::openElement('div', array('class' => 'error')) . $wgOut->parse($errmsg) . Xml::closeElement('div') . Xml::element('br'));
     }
     $wgOut->addHTML(Xml::openElement('form', array('method' => 'post', 'action' => $self->getLocalURL())));
     foreach ($form->fields as $field) {
         $wgOut->addHTML($field->render($wgRequest->getText($field->name)) . Xml::element('br') . "\n");
     }
     # Anonymous user, use recaptcha
     if ($wgUser->getId() == 0 && $wgSpecialFormRecaptcha) {
         require_once 'recaptchalib.php';
         global $recaptcha_public_key;
         # same as used by Recaptcha plugin
         $wgOut->addHTML(recaptcha_get_html($recaptcha_public_key));
     }
     $wgOut->addHTML(Xml::element('input', array('type' => 'submit', 'value' => wfMsg('formsave'))));
     $wgOut->addHTML(Xml::closeElement('form'));
 }
 /**
  * @param Skin $skin
  * @param object $result Result row
  * @return string
  */
 function formatResult($skin, $result)
 {
     $title = Title::makeTitle(NS_TEMPLATE, $result->title);
     $pageLink = Linker::linkKnown($title, null, array(), array('redirect' => 'no'));
     $wlhLink = Linker::linkKnown(SpecialPage::getTitleFor('Whatlinkshere', $title->getPrefixedText()), $this->msg('unusedtemplateswlh')->escaped());
     return $this->getLanguage()->specialList($pageLink, $wlhLink);
 }
    /**
     * Show the special page
     *
     * @param $params Mixed: parameter(s) passed to the page or null
     */
    public function execute($params)
    {
        $out = $this->getOutput();
        $user = $this->getUser();
        // Set the page title, robot policies, etc.
        $this->setHeaders();
        /**
         * Redirect anonymous users to the login page
         * It will automatically return them to the ViewRelationshipRequests page
         */
        if (!$user->isLoggedIn()) {
            $out->setPageTitle($this->msg('ur-error-page-title')->plain());
            $login = SpecialPage::getTitleFor('Userlogin');
            $out->redirect($login->getFullURL('returnto=Special:ViewRelationshipRequests'));
            return false;
        }
        // Add CSS & JS
        $out->addModuleStyles('ext.socialprofile.userrelationship.css');
        $out->addModules('ext.socialprofile.userrelationship.js');
        $rel = new UserRelationship($user->getName());
        $friend_request_count = $rel->getOpenRequestCount($user->getID(), 1);
        $foe_request_count = $rel->getOpenRequestCount($user->getID(), 2);
        if ($this->getRequest()->wasPosted() && $_SESSION['alreadysubmitted'] == false) {
            $_SESSION['alreadysubmitted'] = true;
            $rel->addRelationshipRequest($this->user_name_to, $this->relationship_type, $_POST['message']);
            $output = '<br /><span class="title">' . $this->msg('ur-already-submitted')->plain() . '</span><br /><br />';
            $out->addHTML($output);
        } else {
            $_SESSION['alreadysubmitted'] = false;
            $output = '';
            $out->setPageTitle($this->msg('ur-requests-title')->plain());
            $requests = $rel->getRequestList(0);
            if ($requests) {
                foreach ($requests as $request) {
                    $user_from = Title::makeTitle(NS_USER, $request['user_name_from']);
                    $avatar = new wAvatar($request['user_id_from'], 'l');
                    $avatar_img = $avatar->getAvatarURL();
                    if ($request['type'] == 'Foe') {
                        $msg = $this->msg('ur-requests-message-foe', htmlspecialchars($user_from->getFullURL()), $request['user_name_from'])->text();
                    } else {
                        $msg = $this->msg('ur-requests-message-friend', htmlspecialchars($user_from->getFullURL()), $request['user_name_from'])->text();
                    }
                    $message = $out->parse(trim($request['message']), false);
                    $output .= "<div class=\"relationship-action black-text\" id=\"request_action_{$request['id']}\">\n\t\t\t\t\t  \t{$avatar_img}" . $msg;
                    if ($request['message']) {
                        $output .= '<div class="relationship-message">' . $message . '</div>';
                    }
                    $output .= '<div class="cleared"></div>
						<div class="relationship-buttons">
							<input type="button" class="site-button" value="' . $this->msg('ur-accept')->plain() . '" data-response="1" />
							<input type="button" class="site-button" value="' . $this->msg('ur-reject')->plain() . '" data-response="-1" />
						</div>
					</div>';
                }
            } else {
                $output = $this->msg('ur-no-requests-message')->parse();
            }
            $out->addHTML($output);
        }
    }
    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;
    }
	/**
	 * @param $tpl
	 * @return bool
	 */
	public static function addToolboxLink( &$tpl ) {
		global $wgOut, $wgShortUrlPrefix;

		if ( !is_string( $wgShortUrlPrefix ) ) {
			$urlPrefix = SpecialPage::getTitleFor( 'ShortUrl' )->getCanonicalUrl() . '/';
		} else {
			$urlPrefix = $wgShortUrlPrefix;
		}

		$title = $wgOut->getTitle();
		if ( ShortUrlUtils::needsShortUrl( $title ) ) {
			$shortId = ShortUrlUtils::encodeTitle( $title );
			$shortURL = $urlPrefix . $shortId;
			$html = Html::rawElement( 'li',	array( 'id' => 't-shorturl' ),
				Html::Element( 'a', array(
					'href' => $shortURL,
					'title' => wfMsg( 'shorturl-toolbox-title' )
				),
				wfMsg( 'shorturl-toolbox-text' ) )
			);

			echo $html;
		}
		return true;
	}
Example #14
0
 function doTagRow($tag, $hitcount)
 {
     static $doneTags = array();
     if (in_array($tag, $doneTags)) {
         return '';
     }
     $newRow = '';
     $newRow .= Xml::tags('td', null, Xml::element('code', null, $tag));
     $disp = ChangeTags::tagDescription($tag);
     $disp .= ' ';
     $editLink = Linker::link(Title::makeTitle(NS_MEDIAWIKI, "Tag-{$tag}"), $this->msg('tags-edit')->escaped());
     $disp .= $this->msg('parentheses')->rawParams($editLink)->escaped();
     $newRow .= Xml::tags('td', null, $disp);
     $msg = $this->msg("tag-{$tag}-description");
     $desc = !$msg->exists() ? '' : $msg->parse();
     $desc .= ' ';
     $editDescLink = Linker::link(Title::makeTitle(NS_MEDIAWIKI, "Tag-{$tag}-description"), $this->msg('tags-edit')->escaped());
     $desc .= $this->msg('parentheses')->rawParams($editDescLink)->escaped();
     $newRow .= Xml::tags('td', null, $desc);
     $hitcount = $this->msg('tags-hitcount')->numParams($hitcount)->escaped();
     $hitcount = Linker::link(SpecialPage::getTitleFor('Recentchanges'), $hitcount, array(), array('tagfilter' => $tag));
     $newRow .= Xml::tags('td', null, $hitcount);
     $doneTags[] = $tag;
     return Xml::tags('tr', null, $newRow) . "\n";
 }
 public function logFeedback($params, $itemId)
 {
     $title = SpecialPage::getTitleFor('FeedbackDashboard', $itemId);
     $reason = wfMessage('moodbar-log-reason')->params($params['type'], $params['comment'])->text();
     $log = new LogPage('moodbar');
     $log->addEntry('feedback', $title, $reason);
 }
 public function getRedirectTarget()
 {
     if ($this->getTitle()->getPrefixedText() === 'Redirected') {
         return SpecialPage::getTitleFor('Blankpage');
     }
     return null;
 }
 function __construct()
 {
     // the second parameter in the following function call ensures that only
     // users who have the 'linktitles-batch' right get to see this page (by
     // default, this are all sysop users).
     parent::__construct('LinkTitles', 'linktitles-batch');
 }
 /**
  * Constructor
  */
 public function __construct()
 {
     global $wgMessageCache;
     ///TODO: should these be messages?
     $wgMessageCache->addMessages(array('mvadmin' => 'Admin functions for MetavidWiki'));
     parent::__construct('MVAdmin', 'delete');
 }
Example #19
0
 private function getPageGroups()
 {
     global $wgSortSpecialPages;
     $pages = SpecialPage::getUsablePages();
     if (!count($pages)) {
         # Yeah, that was pointless. Thanks for coming.
         return false;
     }
     /** Put them into a sortable array */
     $groups = array();
     foreach ($pages as $page) {
         if ($page->isListed()) {
             $group = SpecialPage::getGroup($page);
             if (!isset($groups[$group])) {
                 $groups[$group] = array();
             }
             $groups[$group][$page->getDescription()] = array($page->getTitle(), $page->isRestricted());
         }
     }
     /** Sort */
     if ($wgSortSpecialPages) {
         foreach ($groups as $group => $sortedPages) {
             ksort($groups[$group]);
         }
     }
     /** Always move "other" to end */
     if (array_key_exists('other', $groups)) {
         $other = $groups['other'];
         unset($groups['other']);
         $groups['other'] = $other;
     }
     return $groups;
 }
 public static function notificator_Render($parser, $receiver = '', $receiverLabel = '')
 {
     global $wgScript, $wgTitle;
     if (!$receiverLabel) {
         $receiverLabel = $receiver;
     }
     // Check that the database table is in place
     if (!Notificator::checkDatabaseTableExists()) {
         $output = '<span class="error">' . htmlspecialchars(wfMsg('notificator-db-table-does-not-exist')) . '</span>';
         return array($output, 'noparse' => true, 'isHTML' => true);
     }
     // The rendering is different, depending on whether a valid e-mail address
     // has been provided, or not - the differing part of the HTML form is being
     // built here
     if (Notificator::receiverIsValid($receiver)) {
         // Valid e-mail address available, so build a hidden input with that address
         // set, and a button
         $receiverInputAndSubmitButton = Html::hidden('receiver', $receiver) . Html::element('input', array('type' => 'submit', 'value' => wfMsg('notificator-notify-address-or-name', $receiverLabel)));
     } else {
         // No (valid) e-mail address available, build a text input and a button
         $receiverInputAndSubmitButton = Html::element('input', array('type' => 'text', 'name' => 'receiver', 'value' => wfMsg('notificator-e-mail-address'), 'onfocus' => 'if (this.value == \'' . wfMsg('notificator-e-mail-address') . '\') {this.value=\'\'}')) . Html::element('input', array('type' => 'submit', 'value' => wfMsg('notificator-notify')));
     }
     // Now we assemble the form, consisting of two hidden inputs for page ID and rev ID,
     // as well as the $receiverInputAndSubmitButton built above
     $output = Html::rawElement('form', array('action' => SpecialPage::getTitleFor('Notificator')->getLocalURL(), 'method' => 'post', 'enctype' => 'multipart/form-data'), Html::hidden('pageId', $wgTitle->getArticleID()) . Html::hidden('revId', $wgTitle->getLatestRevID()) . $receiverInputAndSubmitButton);
     return $parser->insertStripItem($output, $parser->mStripState);
 }
 function formatResult($skin, $result)
 {
     $title = Title::makeTitle(NS_TEMPLATE, $result->title);
     $pageLink = $skin->linkKnown($title, null, array(), array('redirect' => 'no'));
     $wlhLink = $skin->linkKnown(SpecialPage::getTitleFor('Whatlinkshere'), wfMsgHtml('unusedtemplateswlh'), array(), array('target' => $title->getPrefixedText()));
     return wfSpecialList($pageLink, $wlhLink);
 }
Example #22
0
function setupMwRdf()
{
    global $wgParser, $wgMessageCache, $wgRequest, $wgOut, $wgHooks;
    $wgMessageCache->addMessages(array('rdf' => 'Rdf', 'rdf-inpage' => "Embedded In-page Turtle", 'rdf-dcmes' => "Dublin Core Metadata Element Set", 'rdf-cc' => "Creative Commons", 'rdf-image' => "Embedded images", 'rdf-linksfrom' => "Links from the page", 'rdf-links' => "All links", 'rdf-linksto' => "Links to the page", 'rdf-history' => "Historical versions", 'rdf-interwiki' => "Interwiki links", 'rdf-categories' => "Categories", 'rdf-target' => "Target page", 'rdf-modelnames' => "Model(s)", 'rdf-format' => "Output format", 'rdf-output-rdfxml' => "RDFXML", 'rdf-output-turtle' => "Turtle", 'rdf-output-ntriples' => "NTriples", 'rdf-instructions' => "Select the target page and RDF models you're interested in."));
    $wgParser->setHook('rdf', 'renderMwRdf');
    SpecialPage::addPage(new SpecialPage('Rdf', '', true, 'wfRdfSpecialPage', 'extensions/Rdf/Rdf.php'));
    SpecialPage::addPage(new SpecialPage('RdfQuery', '', true, 'wfSpecialRdfQuery', 'extensions/Rdf/Rdf.php'));
    # next we set some hooks for saving and clearing RDF data.  Each
    # hook is called on the same ModelingAgent object as it preserves
    # the list of pages we link to in its state
    $wgHooks['ArticleSave'][] = array('wfRdfOnArticleSave');
    $wgHooks['ArticleSaveComplete'][] = array('wfRdfOnArticleSaveComplete');
    $wgHooks['TitleMoveComplete'][] = array('wfRdfOnTitleMoveComplete');
    $wgHooks['ArticleDeleteComplete'][] = array('wfRdfOnArticleDeleteComplete');
    # Add an RDF metadata link if requested
    $action = $wgRequest->getText('action', 'view');
    # Note: $wgTitle not yet set; have to get it from the request
    $title = $wgRequest->getText('title');
    if (!isset($title) || strlen($title) == 0) {
        return true;
    }
    $nt = Title::newFromText($title);
    if (!isset($nt) || $nt->getNamespace() == NS_SPECIAL) {
        return true;
    }
    # finally *if* this is a page view we need to add the link
    if (!$action == 'view') {
        return true;
    }
    $rdft = Title::makeTitle(NS_SPECIAL, "Rdf");
    $target = $nt->getPrefixedDBkey();
    $linkdata = array('title' => 'RDF Metadata', 'type' => 'application/rdf+xml', 'href' => $rdft->getLocalURL("target={$target}"));
    $wgOut->addMetadataLink($linkdata);
    return true;
}
Example #23
0
 public function execute()
 {
     global $wgUser, $wgTranslateWorkflowStates;
     if (!$wgTranslateWorkflowStates) {
         $this->dieUsage('Message group review not in use', 'disabled');
     }
     if (!$wgUser->isallowed(self::$right)) {
         $this->dieUsage('Permission denied', 'permissiondenied');
     }
     $requestParams = $this->extractRequestParams();
     $group = MessageGroups::getGroup($requestParams['group']);
     if (!$group) {
         $this->dieUsageMsg(array('missingparam', 'group'));
     }
     $languages = Language::getLanguageNames(false);
     if (!isset($languages[$requestParams['language']])) {
         $this->dieUsageMsg(array('missingparam', 'language'));
     }
     $dbr = wfGetDB(DB_SLAVE);
     $groupid = $group->getId();
     $currentState = $dbr->selectField('translate_groupreviews', 'tgr_state', array('tgr_group' => $groupid, 'tgr_lang' => $requestParams['language']), __METHOD__);
     if ($currentState == $requestParams['state']) {
         $this->dieUsage('The requested state is identical to the current state', 'sameworkflowstate');
     }
     $dbw = wfGetDB(DB_MASTER);
     $table = 'translate_groupreviews';
     $row = array('tgr_group' => $groupid, 'tgr_lang' => $requestParams['language'], 'tgr_state' => $requestParams['state']);
     $index = array('tgr_group', 'tgr_language');
     $res = $dbw->replace($table, array($index), $row, __METHOD__);
     $logger = new LogPage('translationreview');
     $logParams = array($requestParams['language'], $group->getLabel(), $currentState, $requestParams['state']);
     $logger->addEntry('group', SpecialPage::getTitleFor('Translate', $groupid), '', $logParams, $wgUser);
     $output = array('review' => array('group' => $group->getId(), 'language' => $requestParams['language'], 'state' => $requestParams['state']));
     $this->getResult()->addValue(null, $this->getModuleName(), $output);
 }
 public function execute()
 {
     $params = $this->extractRequestParams();
     global $wgFeed, $wgFeedClasses, $wgSitename, $wgLanguageCode;
     if (!$wgFeed) {
         $this->dieUsage('Syndication feeds are not available', 'feed-unavailable');
     }
     if (!isset($wgFeedClasses[$params['feedformat']])) {
         $this->dieUsage('Invalid subscription feed type', 'feed-invalid');
     }
     global $wgMiserMode;
     if ($params['showsizediff'] && $wgMiserMode) {
         $this->dieUsage('Size difference is disabled in Miser Mode', 'sizediffdisabled');
     }
     $msg = wfMessage('Contributions')->inContentLanguage()->text();
     $feedTitle = $wgSitename . ' - ' . $msg . ' [' . $wgLanguageCode . ']';
     $feedUrl = SpecialPage::getTitleFor('Contributions', $params['user'])->getFullURL();
     $target = $params['user'] == 'newbies' ? 'newbies' : Title::makeTitleSafe(NS_USER, $params['user'])->getText();
     $feed = new $wgFeedClasses[$params['feedformat']]($feedTitle, htmlspecialchars($msg), $feedUrl);
     $pager = new ContribsPager($this->getContext(), array('target' => $target, 'namespace' => $params['namespace'], 'year' => $params['year'], 'month' => $params['month'], 'tagFilter' => $params['tagfilter'], 'deletedOnly' => $params['deletedonly'], 'topOnly' => $params['toponly'], 'showSizeDiff' => $params['showsizediff']));
     $feedItems = array();
     if ($pager->getNumRows() > 0) {
         foreach ($pager->mResult as $row) {
             $feedItems[] = $this->feedItem($row);
         }
     }
     ApiFormatFeedWrapper::setResult($this->getResult(), $feed, $feedItems);
 }
Example #25
0
 function doTagRow($tag, $hitcount)
 {
     static $sk = null, $doneTags = array();
     if (!$sk) {
         $sk = $this->getSkin();
     }
     if (in_array($tag, $doneTags)) {
         return '';
     }
     global $wgLang;
     $newRow = '';
     $newRow .= Xml::tags('td', null, Xml::element('tt', null, $tag));
     $disp = ChangeTags::tagDescription($tag);
     $disp .= ' (' . $sk->link(Title::makeTitle(NS_MEDIAWIKI, "Tag-{$tag}"), wfMsgHtml('tags-edit')) . ')';
     $newRow .= Xml::tags('td', null, $disp);
     $msg = wfMessage("tag-{$tag}-description");
     $desc = !$msg->exists() ? '' : $msg->parse();
     $desc .= ' (' . $sk->link(Title::makeTitle(NS_MEDIAWIKI, "Tag-{$tag}-description"), wfMsgHtml('tags-edit')) . ')';
     $newRow .= Xml::tags('td', null, $desc);
     $hitcount = wfMsgExt('tags-hitcount', array('parsemag'), $wgLang->formatNum($hitcount));
     $hitcount = $sk->link(SpecialPage::getTitleFor('Recentchanges'), $hitcount, array(), array('tagfilter' => $tag));
     $newRow .= Xml::tags('td', null, $hitcount);
     $doneTags[] = $tag;
     return Xml::tags('tr', null, $newRow) . "\n";
 }
function wfCreatePageConfirmEdit(&$captcha, &$editPage, $newtext, $section, $merged, &$result)
{
    global $wgTitle, $wgCreatePageCoverRedLinks;
    // Enable only if the configuration global is set to true,
    // only for Special:CreatePage and only when ConfirmEdit is installed
    $canonspname = SpecialPage::resolveAlias($wgTitle->getDBkey());
    if (!$wgCreatePageCoverRedLinks) {
        return true;
    }
    if ($canonspname != 'CreatePage') {
        return true;
    }
    if (!class_exists('SimpleCaptcha')) {
        return true;
    }
    if ($captcha->shouldCheck($editPage, $newtext, $section, $merged)) {
        if ($captcha->passCaptcha()) {
            $result = true;
            return false;
        } else {
            // display CAP page
            $mainform = new CreatePageCreatePlateForm();
            $mainform->showForm('', false, array(&$captcha, 'editCallback'));
            $editor = new CreatePageMultiEditor($_SESSION['article_createplate']);
            $editor->generateForm($newtext);
            $result = false;
            return false;
        }
    } else {
        return true;
    }
}
 public function onView()
 {
     $rc = RecentChange::newFromId($this->getRequest()->getInt('rcid'));
     if (is_null($rc)) {
         throw new ErrorPageError('markedaspatrollederror', 'markedaspatrollederrortext');
     }
     $errors = $rc->doMarkPatrolled($this->getUser());
     if (in_array(array('rcpatroldisabled'), $errors)) {
         throw new ErrorPageError('rcpatroldisabled', 'rcpatroldisabledtext');
     }
     if (in_array(array('hookaborted'), $errors)) {
         // The hook itself has handled any output
         return;
     }
     # It would be nice to see where the user had actually come from, but for now just guess
     $returnto = $rc->getAttribute('rc_type') == RC_NEW ? 'Newpages' : 'Recentchanges';
     $return = SpecialPage::getTitleFor($returnto);
     if (in_array(array('markedaspatrollederror-noautopatrol'), $errors)) {
         $this->getOutput()->setPageTitle(wfMsg('markedaspatrollederror'));
         $this->getOutput()->addWikiMsg('markedaspatrollederror-noautopatrol');
         $this->getOutput()->returnToMain(null, $return);
         return;
     }
     if (!empty($errors)) {
         $this->getOutput()->showPermissionsErrorPage($errors);
         return;
     }
     # Inform the user
     $this->getOutput()->setPageTitle(wfMsg('markedaspatrolled'));
     $this->getOutput()->addWikiMsg('markedaspatrolledtext', $rc->getTitle()->getPrefixedText());
     $this->getOutput()->returnToMain(null, $return);
 }
 /**
  * Make a "what links here" link for a given title
  *
  * @param Title $title Title to make the link for
  * @param Skin $skin Skin to use
  * @param object $result Result row
  * @return string
  */
 private function makeWlhLink($title, $skin, $result)
 {
     global $wgLang;
     $wlh = SpecialPage::getTitleFor('Whatlinkshere');
     $label = wfMsgExt('nlinks', array('parsemag', 'escape'), $wgLang->formatNum($result->value));
     return $skin->link($wlh, $label, array(), array('target' => $title->getPrefixedText()));
 }
Example #29
0
 function doTagRow($tag, $hitcount)
 {
     static $sk = null, $doneTags = array();
     if (!$sk) {
         global $wgUser;
         $sk = $wgUser->getSkin();
     }
     if (in_array($tag, $doneTags)) {
         return '';
     }
     $newRow = '';
     $newRow .= Xml::tags('td', null, Xml::element('tt', null, $tag));
     $disp = ChangeTags::tagDescription($tag);
     $disp .= ' (' . $sk->link(Title::makeTitle(NS_MEDIAWIKI, "Tag-{$tag}"), wfMsg('tags-edit')) . ')';
     $newRow .= Xml::tags('td', null, $disp);
     $desc = wfMsgExt("tag-{$tag}-description", 'parseinline');
     $desc = wfEmptyMsg("tag-{$tag}-description", $desc) ? '' : $desc;
     $desc .= ' (' . $sk->link(Title::makeTitle(NS_MEDIAWIKI, "Tag-{$tag}-description"), wfMsg('tags-edit')) . ')';
     $newRow .= Xml::tags('td', null, $desc);
     $hitcount = wfMsg('tags-hitcount', $hitcount);
     $hitcount = $sk->link(SpecialPage::getTitleFor('RecentChanges'), $hitcount, array(), array('tagfilter' => $tag));
     $newRow .= Xml::tags('td', null, $hitcount);
     $doneTags[] = $tag;
     return Xml::tags('tr', null, $newRow) . "\n";
 }
Example #30
0
 function doTagRow($tag, $hitcount)
 {
     $user = $this->getUser();
     $newRow = '';
     $newRow .= Xml::tags('td', null, Xml::element('code', null, $tag));
     $disp = ChangeTags::tagDescription($tag);
     if ($user->isAllowed('editinterface')) {
         $disp .= ' ';
         $editLink = Linker::link(Title::makeTitle(NS_MEDIAWIKI, "Tag-{$tag}"), $this->msg('tags-edit')->escaped());
         $disp .= $this->msg('parentheses')->rawParams($editLink)->escaped();
     }
     $newRow .= Xml::tags('td', null, $disp);
     $msg = $this->msg("tag-{$tag}-description");
     $desc = !$msg->exists() ? '' : $msg->parse();
     if ($user->isAllowed('editinterface')) {
         $desc .= ' ';
         $editDescLink = Linker::link(Title::makeTitle(NS_MEDIAWIKI, "Tag-{$tag}-description"), $this->msg('tags-edit')->escaped());
         $desc .= $this->msg('parentheses')->rawParams($editDescLink)->escaped();
     }
     $newRow .= Xml::tags('td', null, $desc);
     $active = isset($this->definedTags[$tag]) ? 'tags-active-yes' : 'tags-active-no';
     $active = $this->msg($active)->escaped();
     $newRow .= Xml::tags('td', null, $active);
     $hitcountLabel = $this->msg('tags-hitcount')->numParams($hitcount)->escaped();
     $hitcountLink = Linker::link(SpecialPage::getTitleFor('Recentchanges'), $hitcountLabel, array(), array('tagfilter' => $tag));
     // add raw $hitcount for sorting, because tags-hitcount contains numbers and letters
     $newRow .= Xml::tags('td', array('data-sort-value' => $hitcount), $hitcountLink);
     return Xml::tags('tr', null, $newRow) . "\n";
 }