コード例 #1
0
ファイル: HistoryBlob.php プロジェクト: schwarer2006/wikia
 /**
  * @return string
  */
 function getText()
 {
     $fname = 'HistoryBlobStub::getText';
     if (isset(self::$blobCache[$this->mOldId])) {
         $obj = self::$blobCache[$this->mOldId];
     } else {
         $dbr = wfGetDB(DB_SLAVE);
         $row = $dbr->selectRow('text', array('old_flags', 'old_text'), array('old_id' => $this->mOldId));
         if (!$row) {
             return false;
         }
         $flags = explode(',', $row->old_flags);
         if (in_array('external', $flags)) {
             $url = $row->old_text;
             $parts = explode('://', $url, 2);
             if (!isset($parts[1]) || $parts[1] == '') {
                 wfProfileOut($fname);
                 return false;
             }
             $row->old_text = ExternalStore::fetchFromUrl($url);
         }
         if (!in_array('object', $flags)) {
             return false;
         }
         if (in_array('gzip', $flags)) {
             // This shouldn't happen, but a bug in the compress script
             // may at times gzip-compress a HistoryBlob object row.
             $obj = unserialize(gzinflate($row->old_text));
         } else {
             $obj = unserialize($row->old_text);
         }
         if (!is_object($obj)) {
             // Correct for old double-serialization bug.
             $obj = unserialize($obj);
         }
         if (!is_object($obj)) {
             return false;
         }
         // Save this item for reference; if pulling many
         // items in a row we'll likely use it again.
         $obj->uncompress();
         self::$blobCache = array($this->mOldId => $obj);
     }
     return $obj->getItem($this->mHash);
 }