コード例 #1
0
ファイル: Parser.php プロジェクト: h4ck3rm1k3/mediawiki
 /**
  * Get the name of the user that edited the last revision
  *
  * @return String: user name
  */
 function getRevisionUser()
 {
     if (is_null($this->mRevisionUser)) {
         $revObject = $this->getRevisionObject();
         # if this template is subst: the revision id will be blank,
         # so just use the current user's name
         if ($revObject) {
             $this->mRevisionUser = $revObject->getUserText();
         } elseif ($this->ot['wiki'] || $this->mOptions->getIsPreview()) {
             $this->mRevisionUser = $this->getUser()->getName();
         }
     }
     return $this->mRevisionUser;
 }
コード例 #2
0
ファイル: Parser.php プロジェクト: Tarendai/spring-website
 /**
  * Get the size of the revision
  *
  * @return int|null revision size
  */
 function getRevisionSize()
 {
     if (is_null($this->mRevisionSize)) {
         $revObject = $this->getRevisionObject();
         # if this variable is subst: the revision id will be blank,
         # so just use the parser input size, because the own substituation
         # will change the size.
         if ($revObject) {
             $this->mRevisionSize = $revObject->getSize();
         } elseif ($this->ot['wiki'] || $this->mOptions->getIsPreview()) {
             $this->mRevisionSize = $this->mInputSize;
         }
     }
     return $this->mRevisionSize;
 }
コード例 #3
0
 /**
  * Attempt to cache PST content and corresponding parser output in passing
  *
  * This method can be called when the output was already generated for other
  * reasons. Parsing should not be done just to call this method, however.
  * $pstOpts must be that of the user doing the edit preview. If $pOpts does
  * not match the options of WikiPage::makeParserOptions( 'canonical' ), this
  * will do nothing. Provided the values are cacheable, they will be stored
  * in memcached so that final edit submission might make use of them.
  *
  * @param Article|WikiPage $page Page title
  * @param Content $content Proposed page content
  * @param Content $pstContent The result of preSaveTransform() on $content
  * @param ParserOutput $pOut The result of getParserOutput() on $pstContent
  * @param ParserOptions $pstOpts Options for $pstContent (MUST be for prospective author)
  * @param ParserOptions $pOpts Options for $pOut
  * @param string $timestamp TS_MW timestamp of parser output generation
  * @return bool Success
  */
 public static function stashEditFromPreview(Page $page, Content $content, Content $pstContent, ParserOutput $pOut, ParserOptions $pstOpts, ParserOptions $pOpts, $timestamp)
 {
     global $wgMemc;
     // getIsPreview() controls parser function behavior that references things
     // like user/revision that don't exists yet. The user/text should already
     // be set correctly by callers, just double check the preview flag.
     if (!$pOpts->getIsPreview()) {
         return false;
         // sanity
     } elseif ($pOpts->getIsSectionPreview()) {
         return false;
         // short-circuit (need the full content)
     }
     // PST parser options are for the user (handles signatures, etc...)
     $user = $pstOpts->getUser();
     // Get a key based on the source text, format, and user preferences
     $key = self::getStashKey($page->getTitle(), $content, $user);
     // Parser output options must match cannonical options.
     // Treat some options as matching that are different but don't matter.
     $canonicalPOpts = $page->makeParserOptions('canonical');
     $canonicalPOpts->setIsPreview(true);
     // force match
     $canonicalPOpts->setTimestamp($pOpts->getTimestamp());
     // force match
     if (!$pOpts->matches($canonicalPOpts)) {
         wfDebugLog('StashEdit', "Uncacheable preview output for key '{$key}' (options).");
         return false;
     }
     // Build a value to cache with a proper TTL
     list($stashInfo, $ttl) = self::buildStashValue($pstContent, $pOut, $timestamp);
     if (!$stashInfo) {
         wfDebugLog('StashEdit', "Uncacheable parser output for key '{$key}' (rev/TTL).");
         return false;
     }
     $ok = $wgMemc->set($key, $stashInfo, $ttl);
     if (!$ok) {
         wfDebugLog('StashEdit', "Failed to cache preview parser output for key '{$key}'.");
     } else {
         wfDebugLog('StashEdit', "Cached preview output for key '{$key}'.");
     }
     return $ok;
 }