本文整理汇总了PHP中Title::newFromRedirect方法的典型用法代码示例。如果您正苦于以下问题:PHP Title::newFromRedirect方法的具体用法?PHP Title::newFromRedirect怎么用?PHP Title::newFromRedirect使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Title
的用法示例。
在下文中一共展示了Title::newFromRedirect方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: onInternalParseBeforeLinks
/**
* This method will be called before an article is displayed or previewed.
* For display and preview we strip out the semantic properties and append them
* at the end of the article.
*
* @param Parser $parser
* @param string $text
*/
static public function onInternalParseBeforeLinks( &$parser, &$text ) {
global $smwgStoreAnnotations, $smwgLinksInValues;
SMWParseData::stripMagicWords( $text, $parser );
// Store the results if enabled (we have to parse them in any case,
// in order to clean the wiki source for further processing).
$smwgStoreAnnotations = smwfIsSemanticsProcessed( $parser->getTitle()->getNamespace() );
SMWParserExtensions::$mTempStoreAnnotations = true; // used for [[SMW::on]] and [[SMW:off]]
// Process redirects, if any (it seems that there is indeed no more direct way of getting this info from MW)
if ( $smwgStoreAnnotations ) {
$rt = Title::newFromRedirect( $text );
if ( !is_null( $rt ) ) {
$p = new SMWDIProperty( '_REDI' );
$di = SMWDIWikiPage::newFromTitle( $rt, '__red' );
SMWParseData::getSMWData( $parser )->addPropertyObjectValue( $p, $di );
}
}
// only used in subsequent callbacks, forgotten afterwards
SMWParserExtensions::$mTempParser = $parser;
// In the regexp matches below, leading ':' escapes the markup, as known for Categories.
// Parse links to extract semantic properties.
if ( $smwgLinksInValues ) { // More complex regexp -- lib PCRE may cause segfaults if text is long :-(
$semanticLinkPattern = '/\[\[ # Beginning of the link
(?:([^:][^]]*):[=:])+ # Property name (or a list of those)
( # After that:
(?:[^|\[\]] # either normal text (without |, [ or ])
|\[\[[^]]*\]\] # or a [[link]]
|\[[^]]*\] # or an [external link]
)*) # all this zero or more times
(?:\|([^]]*))? # Display text (like "text" in [[link|text]]), optional
\]\] # End of link
/xu';
$text = preg_replace_callback( $semanticLinkPattern, array( 'SMWParserExtensions', 'parsePropertiesCallback' ), $text );
} else { // Simpler regexps -- no segfaults found for those, but no links in values.
$semanticLinkPattern = '/\[\[ # Beginning of the link
(?:([^:][^]]*):[=:])+ # Property name (or a list of those)
([^\[\]]*) # content: anything but [, |, ]
\]\] # End of link
/xu';
$text = preg_replace_callback( $semanticLinkPattern, array( 'SMWParserExtensions', 'simpleParsePropertiesCallback' ), $text );
}
// Add link to RDF to HTML header.
// TODO: do escaping via Html or Xml class.
SMWOutputs::requireHeadItem(
'smw_rdf', '<link rel="alternate" type="application/rdf+xml" title="' .
htmlspecialchars( $parser->getTitle()->getPrefixedText() ) . '" href="' .
htmlspecialchars(
SpecialPage::getTitleFor( 'ExportRDF', $parser->getTitle()->getPrefixedText() )->getLocalUrl( 'xmlmime=rdf' )
) . "\" />"
);
SMWOutputs::commitToParser( $parser );
return true; // always return true, in order not to stop MW's hook processing!
}
示例2: redircite_render
function redircite_render($input, $args, &$parser) {
// Generate HTML code and add it to the $redirciteMarkerList array
// Add "xx-redircite-marker-NUMBER-redircite-xx" to the output,
// which will be translated to the HTML stored in $redirciteMarkerList by
// redircite_afterTidy()
global $redirciteMarkerList;
# Verify that $input is a valid title
$inputTitle = Title::newFromText($input);
if(!$inputTitle)
return $input;
$link1 = $parser->recursiveTagParse("[[$input]]");
$title1 = Title::newFromText($input);
if(!$title1->exists()) // Page doesn't exist
// Just output a normal (red) link
return $link1;
$articleObj = new Article($title1);
$title2 = Title::newFromRedirect($articleObj->fetchContent());
if(!$title2) // Page is not a redirect
// Just output a normal link
return $link1;
$link2 = $parser->recursiveTagParse("[[{$title2->getPrefixedText()}|$input]]");
$marker = "xx-redircite-marker-" . count($redirciteMarkerList) . "-redircite-xx";
$onmouseout = 'this.firstChild.innerHTML = "'. Xml::escapeJsString($input) . '";';
$onmouseover = 'this.firstChild.innerHTML = "' . Xml::escapeJsString($title2->getPrefixedText()) . '";';
return Xml::tags('span', array(
'onmouseout' => $onmouseout,
'onmouseover' => $onmouseover),
$link2);
}
示例3: getTopLevelCategories
function getTopLevelCategories()
{
global $wgCategoriesArticle;
wfLoadExtensionMessages('Sitemap');
$results = array();
$revision = Revision::newFromTitle(Title::newFromText(wfMsg('categories_article')));
if (!$revision) {
return $results;
}
// INTL: If there is a redirect to a localized page name, follow it
if (strpos($revision->getText(), "#REDIRECT") !== false) {
$revision = Revision::newFromTitle(Title::newFromRedirect($revision->getText()));
}
$lines = split("\n", $revision->getText());
foreach ($lines as $line) {
if (preg_match('/^\\*[^\\*]/', $line)) {
$line = trim(substr($line, 1));
switch ($line) {
case "Other":
case "wikiHow":
break;
default:
$results[] = $line;
}
}
}
return $results;
}
示例4: formatResult
function formatResult($skin, $result)
{
global $wgContLang;
# Make a link to the redirect itself
$rd_title = Title::makeTitle($result->namespace, $result->title);
$arr = $wgContLang->getArrow() . $wgContLang->getDirMark();
$rd_link = $skin->makeKnownLinkObj($rd_title, '', 'redirect=no');
# Find out where the redirect leads
$revision = Revision::newFromTitle($rd_title);
if ($revision) {
# Make a link to the destination page
$target = Title::newFromRedirect($revision->getText());
if ($target) {
$targetLink = $skin->makeLinkObj($target);
} else {
/** @todo Put in some decent error display here */
$targetLink = '*';
}
} else {
/** @todo Put in some decent error display here */
$targetLink = '*';
}
# Format the whole thing and return it
return "{$rd_link} {$arr} {$targetLink}";
}
示例5: formatResult
function formatResult($skin, $result)
{
global $wgContLang;
# Make a link to the redirect itself
$rd_title = Title::makeTitle($result->namespace, $result->title);
$rd_link = $skin->makeKnownLinkObj($rd_title, '', 'redirect=no');
# Find out where the redirect leads
$revision = Revision::newFromTitle($rd_title);
if ($revision) {
# Make a link to the destination page
$target = Title::newFromRedirect($revision->getText());
if ($target) {
$targetLink = $skin->makeLinkObj($target);
} else {
/** @todo Put in some decent error display here */
$targetLink = '*';
}
} else {
/** @todo Put in some decent error display here */
$targetLink = '*';
}
# Check the language; RTL wikis need a ←
$arr = $wgContLang->isRTL() ? ' ← ' : ' → ';
# Format the whole thing and return it
return $rd_link . $arr . $targetLink;
}
示例6: onEditConflict
/**
* @since 1.1
*
* @param EditPage $editor
* @param OutputPage &$out
*
* @return true
*/
public function onEditConflict(EditPage &$editor, OutputPage &$out)
{
$conctext = $editor->textbox1;
$actualtext = $editor->textbox2;
$initialtext = $editor->getBaseRevision()->mText;
// TODO: WTF?!
$editor->mArticle->doEdit($actualtext, $editor->summary, $editor->minoredit ? EDIT_MINOR : 0);
$query = Title::newFromRedirect($actualtext) === null ? '' : 'redirect=no';
$out->redirect($editor->mTitle->getFullURL($query));
return true;
}
示例7: addArticle
public function addArticle($month, $day, $year, $page)
{
$lines = array();
$temp = "";
$head = array();
$article = new Article(Title::newFromText($page));
if (!$article->exists()) {
return "";
}
$redirectCount = 0;
if ($article->isRedirect() && $this->setting('disableredirects')) {
return '';
}
while ($article->isRedirect() && $redirectCount < 10) {
$redirectedArticleTitle = Title::newFromRedirect($article->getContent());
$article = new Article($redirectedArticleTitle);
$redirectCount += 1;
}
$body = $article->fetchContent(0, false, false);
if (strlen(trim($body)) == 0) {
return "";
}
$lines = split("\n", $body);
$cntLines = count($lines);
// dont use section events... only line 1 of the page
if ($this->setting('disablesectionevents')) {
$key = $lines[0];
//initalize the key
$head[$key] = "";
$cntLines = 0;
}
for ($i = 0; $i < $cntLines; $i++) {
$line = $lines[$i];
if (substr($line, 0, 2) == '==') {
$arr = split("==", $line);
$key = $arr[1];
$head[$key] = "";
$temp = "";
} else {
if ($i == 0) {
// $i=0 means this is a one event page no (==event==) data
$key = $line;
//initalize the key
$head[$key] = "";
} else {
$temp .= "{$line}\n";
$head[$key] = Common::cleanWiki($temp);
}
}
}
while (list($event, $body) = each($head)) {
$this->buildEvent($month, $day, $year, trim($event), $page, $body);
}
}
示例8: run
function run()
{
if (!$this->redirTitle) {
$this->setLastError('Invalid title');
return false;
}
$targetRev = Revision::newFromTitle($this->title);
if (!$targetRev) {
wfDebug(__METHOD__ . ": target redirect already deleted, ignoring\n");
return true;
}
$text = $targetRev->getText();
$currentDest = Title::newFromRedirect($text);
if (!$currentDest || !$currentDest->equals($this->redirTitle)) {
wfDebug(__METHOD__ . ": Redirect has changed since the job was queued\n");
return true;
}
# Check for a suppression tag (used e.g. in periodically archived discussions)
$mw = MagicWord::get('staticredirect');
if ($mw->match($text)) {
wfDebug(__METHOD__ . ": skipping: suppressed with __STATICREDIRECT__\n");
return true;
}
# Find the current final destination
$newTitle = self::getFinalDestination($this->redirTitle);
if (!$newTitle) {
wfDebug(__METHOD__ . ": skipping: single redirect, circular redirect or invalid redirect destination\n");
return true;
}
if ($newTitle->equals($this->redirTitle)) {
# The redirect is already right, no need to change it
# This can happen if the page was moved back (say after vandalism)
wfDebug(__METHOD__ . ": skipping, already good\n");
}
# Preserve fragment (bug 14904)
$newTitle = Title::makeTitle($newTitle->getNamespace(), $newTitle->getDBkey(), $currentDest->getFragment());
# Fix the text
# Remember that redirect pages can have categories, templates, etc.,
# so the regex has to be fairly general
$newText = preg_replace('/ \\[ \\[ [^\\]]* \\] \\] /x', '[[' . $newTitle->getFullText() . ']]', $text, 1);
if ($newText === $text) {
$this->setLastError('Text unchanged???');
return false;
}
# Save it
global $wgUser;
$oldUser = $wgUser;
$wgUser = $this->getUser();
$article = new Article($this->title);
$reason = wfMsgForContent('double-redirect-fixed-' . $this->reason, $this->redirTitle->getPrefixedText(), $newTitle->getPrefixedText());
$article->doEdit($newText, $reason, EDIT_UPDATE | EDIT_SUPPRESS_RC);
$wgUser = $oldUser;
return true;
}
示例9: getRS
function getRS()
{
global $wgMemc;
$key_rs = wfMemcKey("risingstar-feed3:" . date('YmdG') . ":" . number_format(date('i') / 10, 0, '', ''));
$rsOut = $wgMemc->get($key_rs);
if (!empty($rsOut)) {
return $rsOut;
}
$t = Title::newFromText('wikiHow:Rising-star-feed');
if ($t->getArticleId() > 0) {
$r = Revision::newFromTitle($t);
$text = $r->getText();
} else {
return false;
}
//NOTE: temporary patch to handle archives. the authoritative source for RS needs to be moved to the DB versus the feed article. add archive to array.
$archives = array('wikiHow:Rising-star-feed/archive1');
foreach ($archives as $archive) {
$tarch = Title::newFromText($archive);
if ($tarch->getArticleId() > 0) {
$r = Revision::newFromTitle($tarch);
$text = $r->getText() . "\n" . $text;
}
}
$rsout = array();
$rs = $text;
$rs = preg_replace("/==\n/", ',', $rs);
$rs = preg_replace("/^==/", "", $rs);
$lines = preg_split("/\r|\n/", $rs, null, PREG_SPLIT_NO_EMPTY);
$count = 0;
foreach ($lines as $line) {
if (preg_match('/^==(.*?),(.*?)$/', $line, $matches)) {
$dt = $matches[1];
$pattern = "/{$wgServer}/";
$title = preg_replace("/http:\\/\\/www\\.wikihow\\.com\\//", "", $matches[2]);
$title = preg_replace("/http:\\/\\/.*?\\.com\\//", "", $matches[2]);
$t = Title::newFromText($title);
if (!isset($t)) {
continue;
}
$a = new Article($t);
if ($a->isRedirect()) {
$t = Title::newFromRedirect($a->fetchContent());
$a = new Article($t);
}
$rsout[$t->getPartialURL()] = $dt;
}
}
// sort by most recent first
$rsout = array_reverse($rsout);
$wgMemc->set($key_rs, $rsout);
return $rsout;
}
示例10: hUnknownAction
public function hUnknownAction($action, &$article)
{
// check if request 'action=formsubmit'
if ($action != 'formsubmit') {
return true;
}
// continue hook-chain.
$article->loadContent();
// follow redirects
if ($article->mIsRedirect == true) {
$title = Title::newFromRedirect($article->getContent());
$article = new Article($title);
$article->loadContent();
}
// Extract the code
// Use our runphpClass helper
$runphp = new runphpClass();
$runphp->initFromContent($article->getContent());
// Execute Code
$code = $runphp->getCode(true);
if (!empty($code)) {
$callback = eval($code);
}
// we might implement functionality around a callback method in the future
// Was there an expected class defined?
$name = $article->mTitle->getDBkey();
// the page name might actually be a sub-page; extract the basename without the full path.
$pn = explode('/', $name);
if (!empty($pn)) {
$rn = array_reverse($pn);
$name = $rn[0];
}
$name .= 'Class';
if (class_exists($name)) {
$class = new $name();
if (is_object($class)) {
if (method_exists($class, 'submit')) {
$class->submit();
}
}
}
// ... then it was a page built from ground up; nothing more to do here.
return false;
}
示例11: execute
public function execute()
{
$this->output("Fetching redirects...\n");
$dbr = wfGetDB(DB_SLAVE);
$result = $dbr->select(array('page'), array('page_namespace', 'page_title', 'page_latest'), array('page_is_redirect' => 1));
$count = $result->numRows();
$this->output("Found {$count} total redirects.\n" . "Looking for bad redirects:\n\n");
foreach ($result as $row) {
$title = Title::makeTitle($row->page_namespace, $row->page_title);
$rev = Revision::newFromId($row->page_latest);
if ($rev) {
$target = Title::newFromRedirect($rev->getText());
if (!$target) {
$this->output($title->getPrefixedText() . "\n");
}
}
}
$this->output("\ndone.\n");
}
示例12: formatResult
function formatResult($skin, $result)
{
global $wgContLang;
# Make a link to the redirect itself
$rd_title = Title::makeTitle($result->namespace, $result->title);
$rd_link = $skin->makeLinkObj($rd_title, '', 'redirect=no');
# Find out where the redirect leads
$revision = Revision::newFromTitle($rd_title);
if ($revision) {
# Make a link to the destination page
$target = Title::newFromRedirect($revision->getText());
if ($target) {
$arr = $wgContLang->getArrow() . $wgContLang->getDirMark();
$targetLink = $skin->makeLinkObj($target);
return "{$rd_link} {$arr} {$targetLink}";
} else {
return "<s>{$rd_link}</s>";
}
} else {
return "<s>{$rd_link}</s>";
}
}
示例13: redirectThread
function redirectThread()
{
$rev = Revision::newFromId($this->root()->getLatest());
$rtitle = Title::newFromRedirect($rev->getRawText());
if (!$rtitle) {
return null;
}
$this->dieIfHistorical();
$rthread = Threads::withRoot(new Article($rtitle));
return $rthread;
}
示例14: statelessFetchTemplate
/**
* Static function to get a template
* Can be overridden via ParserOptions::setTemplateCallback().
*/
static function statelessFetchTemplate($title, $parser = false)
{
$text = $skip = false;
$finalTitle = $title;
$deps = array();
// Loop to fetch the article, with up to 1 redirect
for ($i = 0; $i < 2 && is_object($title); $i++) {
# Give extensions a chance to select the revision instead
$id = false;
// Assume current
wfRunHooks('BeforeParserFetchTemplateAndtitle', array($parser, &$title, &$skip, &$id));
if ($skip) {
$text = false;
$deps[] = array('title' => $title, 'page_id' => $title->getArticleID(), 'rev_id' => null);
break;
}
$rev = $id ? Revision::newFromId($id) : Revision::newFromTitle($title);
$rev_id = $rev ? $rev->getId() : 0;
// If there is no current revision, there is no page
if ($id === false && !$rev) {
$linkCache = LinkCache::singleton();
$linkCache->addBadLinkObj($title);
}
$deps[] = array('title' => $title, 'page_id' => $title->getArticleID(), 'rev_id' => $rev_id);
if ($rev) {
$text = $rev->getText();
} elseif ($title->getNamespace() == NS_MEDIAWIKI) {
global $wgContLang;
$message = $wgContLang->lcfirst($title->getText());
$text = wfMsgForContentNoTrans($message);
if (wfEmptyMsg($message, $text)) {
$text = false;
break;
}
} else {
break;
}
if ($text === false) {
break;
}
// Redirect?
$finalTitle = $title;
$title = Title::newFromRedirect($text);
}
return array('text' => $text, 'finalTitle' => $finalTitle, 'deps' => $deps);
}
示例15: statelessFetchTemplate
/**
* Static function to get a template
* Can be overridden via ParserOptions::setTemplateCallback().
*
* @param $title Title
* @param $parser Parser
*
* @return array
*/
static function statelessFetchTemplate($title, $parser = false)
{
$text = $skip = false;
$finalTitle = $title;
$deps = array();
# Loop to fetch the article, with up to 1 redirect
for ($i = 0; $i < 2 && is_object($title); $i++) {
# Give extensions a chance to select the revision instead
$id = false;
# Assume current
wfRunHooks('BeforeParserFetchTemplateAndtitle', array($parser, $title, &$skip, &$id));
if ($skip) {
$text = false;
$deps[] = array('title' => $title, 'page_id' => $title->getArticleID(), 'rev_id' => null);
break;
}
# Get the revision
$rev = $id ? Revision::newFromId($id) : Revision::newFromTitle($title, false, Revision::READ_NORMAL);
$rev_id = $rev ? $rev->getId() : 0;
# If there is no current revision, there is no page
if ($id === false && !$rev) {
$linkCache = LinkCache::singleton();
$linkCache->addBadLinkObj($title);
}
$deps[] = array('title' => $title, 'page_id' => $title->getArticleID(), 'rev_id' => $rev_id);
if ($rev && !$title->equals($rev->getTitle())) {
# We fetched a rev from a different title; register it too...
$deps[] = array('title' => $rev->getTitle(), 'page_id' => $rev->getPage(), 'rev_id' => $rev_id);
}
if ($rev) {
$text = $rev->getText();
} elseif ($title->getNamespace() == NS_MEDIAWIKI) {
global $wgContLang;
$message = wfMessage($wgContLang->lcfirst($title->getText()))->inContentLanguage();
if (!$message->exists()) {
$text = false;
break;
}
$text = $message->plain();
} else {
break;
}
if ($text === false) {
break;
}
# Redirect?
$finalTitle = $title;
$title = Title::newFromRedirect($text);
}
return array('text' => $text, 'finalTitle' => $finalTitle, 'deps' => $deps);
}