当前位置: 首页>>代码示例>>PHP>>正文


PHP MWTimestamp::getTimestamp方法代码示例

本文整理汇总了PHP中MWTimestamp::getTimestamp方法的典型用法代码示例。如果您正苦于以下问题:PHP MWTimestamp::getTimestamp方法的具体用法?PHP MWTimestamp::getTimestamp怎么用?PHP MWTimestamp::getTimestamp使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在MWTimestamp的用法示例。


在下文中一共展示了MWTimestamp::getTimestamp方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: MWTimestamp

 function __construct()
 {
     global $wgModerationTimeToOverrideRejection;
     $mw_ts = new MWTimestamp(time());
     $mw_ts->timestamp->modify('-' . intval($wgModerationTimeToOverrideRejection) . ' seconds');
     $this->earliestReapprovableTimestamp = $mw_ts->getTimestamp(TS_MW);
     $this->mblockCheck = new ModerationBlockCheck();
     parent::__construct('Moderation', 'moderation');
 }
开发者ID:ATCARES,项目名称:mediawiki-moderation,代码行数:9,代码来源:SpecialModeration.php

示例2: execute

 public function execute()
 {
     $params = $this->extractRequestParams();
     $token = $params['token'];
     $maxage = $params['maxtokenage'];
     $salts = ApiQueryTokens::getTokenTypeSalts();
     $res = array();
     $tokenObj = ApiQueryTokens::getToken($this->getUser(), $this->getRequest()->getSession(), $salts[$params['type']]);
     if ($tokenObj->match($token, $maxage)) {
         $res['result'] = 'valid';
     } elseif ($maxage !== null && $tokenObj->match($token)) {
         $res['result'] = 'expired';
     } else {
         $res['result'] = 'invalid';
     }
     $ts = MediaWiki\Session\Token::getTimestamp($token);
     if ($ts !== null) {
         $mwts = new MWTimestamp();
         $mwts->timestamp->setTimestamp($ts);
         $res['generated'] = $mwts->getTimestamp(TS_ISO_8601);
     }
     $this->getResult()->addValue(null, $this->getModuleName(), $res);
 }
开发者ID:lourinaldi,项目名称:mediawiki,代码行数:23,代码来源:ApiCheckToken.php

示例3: convertSwiftDate

 /**
  * Convert dates like "Tue, 03 Jan 2012 22:01:04 GMT"/"2013-05-11T07:37:27.678360Z".
  * Dates might also come in like "2013-05-11T07:37:27.678360" from Swift listings,
  * missing the timezone suffix (though Ceph RGW does not appear to have this bug).
  *
  * @param string $ts
  * @param int $format Output format (TS_* constant)
  * @return string
  * @throws FileBackendError
  */
 protected function convertSwiftDate($ts, $format = TS_MW)
 {
     try {
         $timestamp = new MWTimestamp($ts);
         return $timestamp->getTimestamp($format);
     } catch (Exception $e) {
         throw new FileBackendError($e->getMessage());
     }
 }
开发者ID:OrBin,项目名称:mediawiki,代码行数:19,代码来源:SwiftFileBackend.php

示例4: wfTimestamp

/**
 * Get a timestamp string in one of various formats
 *
 * @param mixed $outputtype A timestamp in one of the supported formats, the
 *   function will autodetect which format is supplied and act accordingly.
 * @param mixed $ts Optional timestamp to convert, default 0 for the current time
 * @return string|bool String / false The same date in the format specified in $outputtype or false
 */
function wfTimestamp($outputtype = TS_UNIX, $ts = 0)
{
    try {
        $timestamp = new MWTimestamp($ts);
        return $timestamp->getTimestamp($outputtype);
    } catch (TimestampException $e) {
        wfDebug("wfTimestamp() fed bogus time value: TYPE={$outputtype}; VALUE={$ts}\n");
        return false;
    }
}
开发者ID:D66Ha,项目名称:mediawiki,代码行数:18,代码来源:GlobalFunctions.php

示例5: resetNotificationTimestamp

 /**
  * Reset the notification timestamp of this entry
  *
  * @param $force Whether to force the write query to be executed even if the
  *        page is not watched or the notification timestamp is already NULL.
  * @param int $oldid The revision id being viewed. If not given or 0, latest revision is assumed.
  */
 public function resetNotificationTimestamp($force = '', $oldid = 0)
 {
     // Only loggedin user can have a watchlist
     if (wfReadOnly() || $this->mUser->isAnon() || !$this->isAllowed('editmywatchlist')) {
         return;
     }
     if ($force != 'force') {
         $this->load();
         if (!$this->watched || $this->timestamp === null) {
             return;
         }
     }
     $title = $this->getTitle();
     if (!$oldid) {
         // No oldid given, assuming latest revision; clear the timestamp.
         $notificationTimestamp = null;
     } elseif (!$title->getNextRevisionID($oldid)) {
         // Oldid given and is the latest revision for this title; clear the timestamp.
         $notificationTimestamp = null;
     } else {
         // See if the version marked as read is more recent than the one we're viewing.
         // Call load() if it wasn't called before due to $force.
         $this->load();
         if ($this->timestamp === null) {
             // This can only happen if $force is enabled.
             $notificationTimestamp = null;
         } else {
             // Oldid given and isn't the latest; update the timestamp.
             // This will result in no further notification emails being sent!
             $dbr = wfGetDB(DB_SLAVE);
             $notificationTimestamp = $dbr->selectField('revision', 'rev_timestamp', array('rev_page' => $title->getArticleID(), 'rev_id' => $oldid));
             // We need to go one second to the future because of various strict comparisons
             // throughout the codebase
             $ts = new MWTimestamp($notificationTimestamp);
             $ts->timestamp->add(new DateInterval('PT1S'));
             $notificationTimestamp = $ts->getTimestamp(TS_MW);
             if ($notificationTimestamp < $this->timestamp) {
                 if ($force != 'force') {
                     return;
                 } else {
                     // This is a little silly…
                     $notificationTimestamp = $this->timestamp;
                 }
             }
         }
     }
     // If the page is watched by the user (or may be watched), update the timestamp on any
     // any matching rows
     $dbw = wfGetDB(DB_MASTER);
     $dbw->update('watchlist', array('wl_notificationtimestamp' => $notificationTimestamp), $this->dbCond(), __METHOD__);
     $this->timestamp = null;
 }
开发者ID:Tarendai,项目名称:spring-website,代码行数:59,代码来源:WatchedItem.php

示例6: execute

 public function execute()
 {
     $user = $this->getUser();
     $errors = $this->getTitle()->getUserPermissionsErrors('abusefilter-log', $user);
     if (count($errors)) {
         $this->dieUsageMsg($errors[0]);
         return;
     }
     $params = $this->extractRequestParams();
     $prop = array_flip($params['prop']);
     $fld_ids = isset($prop['ids']);
     $fld_filter = isset($prop['filter']);
     $fld_user = isset($prop['user']);
     $fld_ip = isset($prop['ip']);
     $fld_title = isset($prop['title']);
     $fld_action = isset($prop['action']);
     $fld_details = isset($prop['details']);
     $fld_result = isset($prop['result']);
     $fld_timestamp = isset($prop['timestamp']);
     $fld_hidden = isset($prop['hidden']);
     $fld_revid = isset($prop['revid']);
     if ($fld_ip && !$user->isAllowed('abusefilter-private')) {
         $this->dieUsage('You don\'t have permission to view IP addresses', 'permissiondenied');
     }
     if ($fld_details && !$user->isAllowed('abusefilter-log-detail')) {
         $this->dieUsage('You don\'t have permission to view detailed abuse log entries', 'permissiondenied');
     }
     // Match permissions for viewing events on private filters to SpecialAbuseLog (bug 42814)
     if ($params['filter'] && !(AbuseFilterView::canViewPrivate() || $user->isAllowed('abusefilter-log-private'))) {
         // A specific filter parameter is set but the user isn't allowed to view all filters
         if (!is_array($params['filter'])) {
             $params['filter'] = array($params['filter']);
         }
         foreach ($params['filter'] as $filter) {
             if (AbuseFilter::filterHidden($filter)) {
                 $this->dieUsage('You don\'t have permission to view log entries for private filters', 'permissiondenied');
             }
         }
     }
     $result = $this->getResult();
     $this->addTables('abuse_filter_log');
     $this->addFields('afl_timestamp');
     $this->addFields('afl_rev_id');
     $this->addFields('afl_deleted');
     $this->addFields('afl_filter');
     $this->addFieldsIf('afl_id', $fld_ids);
     $this->addFieldsIf('afl_user_text', $fld_user);
     $this->addFieldsIf('afl_ip', $fld_ip);
     $this->addFieldsIf(array('afl_namespace', 'afl_title'), $fld_title);
     $this->addFieldsIf('afl_action', $fld_action);
     $this->addFieldsIf('afl_var_dump', $fld_details);
     $this->addFieldsIf('afl_actions', $fld_result);
     if ($fld_filter) {
         $this->addTables('abuse_filter');
         $this->addFields('af_public_comments');
         $this->addJoinConds(array('abuse_filter' => array('LEFT JOIN', 'af_id=afl_filter')));
     }
     $this->addOption('LIMIT', $params['limit'] + 1);
     $this->addWhereRange('afl_timestamp', $params['dir'], $params['start'], $params['end']);
     $db = $this->getDB();
     $notDeletedCond = SpecialAbuseLog::getNotDeletedCond($db);
     if (isset($params['user'])) {
         $u = User::newFromName($params['user']);
         if ($u) {
             // Username normalisation
             $params['user'] = $u->getName();
             $userId = $u->getId();
         } elseif (IP::isIPAddress($params['user'])) {
             // It's an IP, sanitize it
             $params['user'] = IP::sanitizeIP($params['user']);
             $userId = 0;
         }
         if (isset($userId)) {
             // Only add the WHERE for user in case it's either a valid user (but not necessary an existing one) or an IP
             $this->addWhere(array('afl_user' => $userId, 'afl_user_text' => $params['user']));
         }
     }
     $this->addWhereIf(array('afl_filter' => $params['filter']), isset($params['filter']));
     $this->addWhereIf($notDeletedCond, !SpecialAbuseLog::canSeeHidden($user));
     $title = $params['title'];
     if (!is_null($title)) {
         $titleObj = Title::newFromText($title);
         if (is_null($titleObj)) {
             $this->dieUsageMsg(array('invalidtitle', $title));
         }
         $this->addWhereFld('afl_namespace', $titleObj->getNamespace());
         $this->addWhereFld('afl_title', $titleObj->getDBkey());
     }
     $res = $this->select(__METHOD__);
     $count = 0;
     foreach ($res as $row) {
         if (++$count > $params['limit']) {
             // We've had enough
             $ts = new MWTimestamp($row->afl_timestamp);
             $this->setContinueEnumParameter('start', $ts->getTimestamp(TS_ISO_8601));
             break;
         }
         if (SpecialAbuseLog::isHidden($row) && !SpecialAbuseLog::canSeeHidden($user)) {
             continue;
         }
//.........这里部分代码省略.........
开发者ID:aahashderuffy,项目名称:extensions,代码行数:101,代码来源:ApiQueryAbuseLog.php

示例7: execute

 public function execute()
 {
     $user = $this->getUser();
     if (!$user->isAllowed('abusefilter-view')) {
         $this->dieUsage('You don\'t have permission to view abuse filters', 'permissiondenied');
     }
     $params = $this->extractRequestParams();
     $prop = array_flip($params['prop']);
     $fld_id = isset($prop['id']);
     $fld_desc = isset($prop['description']);
     $fld_pattern = isset($prop['pattern']);
     $fld_actions = isset($prop['actions']);
     $fld_hits = isset($prop['hits']);
     $fld_comments = isset($prop['comments']);
     $fld_user = isset($prop['lasteditor']);
     $fld_time = isset($prop['lastedittime']);
     $fld_status = isset($prop['status']);
     $fld_private = isset($prop['private']);
     $result = $this->getResult();
     $this->addTables('abuse_filter');
     $this->addFields('af_id');
     $this->addFields('af_hidden');
     $this->addFieldsIf('af_hit_count', $fld_hits);
     $this->addFieldsIf('af_enabled', $fld_status);
     $this->addFieldsIf('af_deleted', $fld_status);
     $this->addFieldsIf('af_public_comments', $fld_desc);
     $this->addFieldsIf('af_pattern', $fld_pattern);
     $this->addFieldsIf('af_actions', $fld_actions);
     $this->addFieldsIf('af_comments', $fld_comments);
     $this->addFieldsIf('af_user_text', $fld_user);
     $this->addFieldsIf('af_timestamp', $fld_time);
     $this->addOption('LIMIT', $params['limit'] + 1);
     $this->addWhereRange('af_id', $params['dir'], $params['startid'], $params['endid']);
     if (!is_null($params['show'])) {
         $show = array_flip($params['show']);
         /* Check for conflicting parameters. */
         if (isset($show['enabled']) && isset($show['!enabled']) || isset($show['deleted']) && isset($show['!deleted']) || isset($show['private']) && isset($show['!private'])) {
             $this->dieUsage('Incorrect parameter - mutually exclusive values may not be supplied', 'show');
         }
         $this->addWhereIf('af_enabled = 0', isset($show['!enabled']));
         $this->addWhereIf('af_enabled != 0', isset($show['enabled']));
         $this->addWhereIf('af_deleted = 0', isset($show['!deleted']));
         $this->addWhereIf('af_deleted != 0', isset($show['deleted']));
         $this->addWhereIf('af_hidden = 0', isset($show['!private']));
         $this->addWhereIf('af_hidden != 0', isset($show['private']));
     }
     $res = $this->select(__METHOD__);
     $showhidden = $user->isAllowed('abusefilter-modify');
     $count = 0;
     foreach ($res as $row) {
         if (++$count > $params['limit']) {
             // We've had enough
             $this->setContinueEnumParameter('startid', $row->af_id);
             break;
         }
         $entry = array();
         if ($fld_id) {
             $entry['id'] = intval($row->af_id);
         }
         if ($fld_desc) {
             $entry['description'] = $row->af_public_comments;
         }
         if ($fld_pattern && (!$row->af_hidden || $showhidden)) {
             $entry['pattern'] = $row->af_pattern;
         }
         if ($fld_actions) {
             $entry['actions'] = $row->af_actions;
         }
         if ($fld_hits) {
             $entry['hits'] = intval($row->af_hit_count);
         }
         if ($fld_comments && (!$row->af_hidden || $showhidden)) {
             $entry['comments'] = $row->af_comments;
         }
         if ($fld_user) {
             $entry['lasteditor'] = $row->af_user_text;
         }
         if ($fld_time) {
             $ts = new MWTimestamp($row->af_timestamp);
             $entry['lastedittime'] = $ts->getTimestamp(TS_ISO_8601);
         }
         if ($fld_private && $row->af_hidden) {
             $entry['private'] = '';
         }
         if ($fld_status) {
             if ($row->af_enabled) {
                 $entry['enabled'] = '';
             }
             if ($row->af_deleted) {
                 $entry['deleted'] = '';
             }
         }
         if ($entry) {
             $fit = $result->addValue(array('query', $this->getModuleName()), null, $entry);
             if (!$fit) {
                 $this->setContinueEnumParameter('startid', $row->af_id);
                 break;
             }
         }
     }
//.........这里部分代码省略.........
开发者ID:aahashderuffy,项目名称:extensions,代码行数:101,代码来源:ApiQueryAbuseFilters.php

示例8: formatValue

 function formatValue($name, $value)
 {
     static $msg = null;
     if ($msg === null) {
         $keys = ['anononlyblock', 'createaccountblock', 'noautoblockblock', 'emailblock', 'blocklist-nousertalk', 'unblocklink', 'change-blocklink'];
         foreach ($keys as $key) {
             $msg[$key] = $this->msg($key)->escaped();
         }
     }
     /** @var $row object */
     $row = $this->mCurrentRow;
     $language = $this->getLanguage();
     $formatted = '';
     switch ($name) {
         case 'ipb_timestamp':
             $formatted = htmlspecialchars($language->userTimeAndDate($value, $this->getUser()));
             break;
         case 'ipb_target':
             if ($row->ipb_auto) {
                 $formatted = $this->msg('autoblockid', $row->ipb_id)->parse();
             } else {
                 list($target, $type) = Block::parseTarget($row->ipb_address);
                 switch ($type) {
                     case Block::TYPE_USER:
                     case Block::TYPE_IP:
                         $formatted = Linker::userLink($target->getId(), $target);
                         $formatted .= Linker::userToolLinks($target->getId(), $target, false, Linker::TOOL_LINKS_NOBLOCK);
                         break;
                     case Block::TYPE_RANGE:
                         $formatted = htmlspecialchars($target);
                 }
             }
             break;
         case 'ipb_expiry':
             $formatted = htmlspecialchars($language->formatExpiry($value, true));
             if ($this->getUser()->isAllowed('block')) {
                 if ($row->ipb_auto) {
                     $links[] = Linker::linkKnown(SpecialPage::getTitleFor('Unblock'), $msg['unblocklink'], [], ['wpTarget' => "#{$row->ipb_id}"]);
                 } else {
                     $links[] = Linker::linkKnown(SpecialPage::getTitleFor('Unblock', $row->ipb_address), $msg['unblocklink']);
                     $links[] = Linker::linkKnown(SpecialPage::getTitleFor('Block', $row->ipb_address), $msg['change-blocklink']);
                 }
                 $formatted .= ' ' . Html::rawElement('span', ['class' => 'mw-blocklist-actions'], $this->msg('parentheses')->rawParams($language->pipeList($links))->escaped());
             }
             if ($value !== 'infinity') {
                 $timestamp = new MWTimestamp($value);
                 $formatted .= '<br />' . $this->msg('ipb-blocklist-duration-left', $language->formatDuration($timestamp->getTimestamp() - time(), ['minutes', 'hours', 'days', 'years']))->escaped();
             }
             break;
         case 'ipb_by':
             if (isset($row->by_user_name)) {
                 $formatted = Linker::userLink($value, $row->by_user_name);
                 $formatted .= Linker::userToolLinks($value, $row->by_user_name);
             } else {
                 $formatted = htmlspecialchars($row->ipb_by_text);
                 // foreign user?
             }
             break;
         case 'ipb_reason':
             $formatted = Linker::formatComment($value);
             break;
         case 'ipb_params':
             $properties = [];
             if ($row->ipb_anon_only) {
                 $properties[] = $msg['anononlyblock'];
             }
             if ($row->ipb_create_account) {
                 $properties[] = $msg['createaccountblock'];
             }
             if ($row->ipb_user && !$row->ipb_enable_autoblock) {
                 $properties[] = $msg['noautoblockblock'];
             }
             if ($row->ipb_block_email) {
                 $properties[] = $msg['emailblock'];
             }
             if (!$row->ipb_allow_usertalk) {
                 $properties[] = $msg['blocklist-nousertalk'];
             }
             $formatted = $language->commaList($properties);
             break;
         default:
             $formatted = "Unable to format {$name}";
             break;
     }
     return $formatted;
 }
开发者ID:claudinec,项目名称:galan-wiki,代码行数:86,代码来源:BlockListPager.php

示例9: display

 /**
  * Outputs a table of existing drafts
  *
  * @param $title Title [optional] Title of article, defaults to all articles
  * @param $userID Integer: [optional] ID of user, defaults to current user
  * @return int Number of drafts in the table
  */
 public static function display($title = null, $userID = null)
 {
     global $wgOut, $wgRequest, $wgUser, $wgLang;
     // Gets draftID
     $currentDraft = Draft::newFromID($wgRequest->getIntOrNull('draft'));
     // Output HTML for list of drafts
     $drafts = Drafts::get($title, $userID);
     if (count($drafts) > 0) {
         global $egDraftsLifeSpan;
         // Internationalization
         // Add a summary, on Special:Drafts only
         if (!$title || $title->getNamespace() === NS_SPECIAL) {
             $wgOut->wrapWikiMsg('<div class="mw-drafts-summary">$1</div>', array('drafts-view-summary', $wgLang->formatNum($egDraftsLifeSpan)));
         }
         // Build XML
         $wgOut->addHTML(Xml::openElement('table', array('cellpadding' => 5, 'cellspacing' => 0, 'width' => '100%', 'border' => 0, 'id' => 'drafts-list-table', 'class' => 'section_text')));
         $wgOut->addHTML(Xml::openElement('tr'));
         $wgOut->addHTML(Xml::element('th', array(), wfMessage('drafts-view-article')->text()));
         $wgOut->addHTML(Xml::element('th', null, wfMessage('drafts-view-saved')->text()));
         $wgOut->addHTML(Xml::element('th', array()));
         $wgOut->addHTML(Xml::element('th', array()));
         $wgOut->addHTML(Xml::closeElement('tr'));
         // Add existing drafts for this page and user
         /**
          * @var $draft Draft
          */
         foreach ($drafts as $draft) {
             // Get article title text
             $htmlTitle = $draft->getTitle()->getEscapedText();
             // Build Article Load link
             $urlLoad = $draft->getTitle()->getFullURL('action=edit&draft=' . urlencode($draft->getID()));
             // Build discard link
             $urlDiscard = SpecialPage::getTitleFor('Drafts')->getFullURL(sprintf('discard=%s&token=%s', urlencode($draft->getID()), urlencode($wgUser->getEditToken())));
             // If in edit mode, return to editor
             if ($wgRequest->getText('action') == 'edit' || $wgRequest->getText('action') == 'submit') {
                 $urlDiscard .= '&returnto=' . urlencode('edit');
             }
             // Append section to titles and links
             if ($draft->getSection() !== null) {
                 // Detect section name
                 $lines = explode("\n", $draft->getText());
                 // If there is any content in the section
                 if (count($lines) > 0) {
                     $htmlTitle .= '#' . htmlspecialchars(trim(trim(substr($lines[0], 0, 255), '=')));
                 }
                 // Modify article link and title
                 $urlLoad .= '&section=' . urlencode($draft->getSection());
                 $urlDiscard .= '&section=' . urlencode($draft->getSection());
             }
             // Build XML
             $wgOut->addHTML(Xml::openElement('tr'));
             $wgOut->addHTML(Xml::openElement('td'));
             $wgOut->addHTML(Xml::element('a', array('href' => $urlLoad, 'style' => 'font-weight:' . ($currentDraft->getID() == $draft->getID() ? 'bold' : 'normal')), $htmlTitle));
             $wgOut->addHTML(Xml::closeElement('td'));
             $saveTime = new MWTimestamp($draft->getSaveTime());
             $wgOut->addHTML(Xml::element('td', null, $wgLang->timeanddate($saveTime->getTimestamp(), true)));
             $wgOut->addHTML(Xml::openElement('td'));
             $wgOut->addHTML(Xml::element('a', array('href' => $urlLoad), wfMessage('edit')->text()));
             $wgOut->addHTML(Xml::closeElement('td'));
             $wgOut->addHTML(Xml::openElement('td'));
             $jsClick = "if( wgDraft.getState() !== 'unchanged' )" . "return confirm('" . Xml::escapeJsString(wfMessage('drafts-view-warn')->escaped()) . "')";
             $wgOut->addHTML(Xml::element('a', array('href' => $urlDiscard, 'onclick' => $jsClick), wfMessage('drafts-view-discard')->text()));
             $wgOut->addHTML(Xml::closeElement('td'));
             $wgOut->addHTML(Xml::closeElement('tr'));
         }
         $wgOut->addHTML(Xml::closeElement('table'));
         // Return number of drafts
         return count($drafts);
     }
     return 0;
 }
开发者ID:biribogos,项目名称:wikihow-src,代码行数:78,代码来源:Drafts.classes.php

示例10: testInvalidOutput

 /**
  * Test requesting an invalid output format.
  * @expectedException TimestampException
  */
 function testInvalidOutput()
 {
     $timestamp = new MWTimestamp('1343761268');
     $timestamp->getTimestamp(98);
 }
开发者ID:nischayn22,项目名称:mediawiki-core,代码行数:9,代码来源:TimestampTest.php

示例11: formatDate

 /**
  * formatDate handler
  */
 function formatDate($lang, $args)
 {
     $this->checkType('formatDate', 1, $args[0], 'string');
     $this->checkTypeOptional('formatDate', 2, $args[1], 'string', '');
     $this->checkTypeOptional('formatDate', 3, $args[2], 'boolean', false);
     list($format, $date, $local) = $args;
     $langcode = $lang->getCode();
     if ($date === '') {
         $cacheKey = $this->getParserOptions()->getTimestamp();
         $timestamp = new MWTimestamp($cacheKey);
         $date = $timestamp->getTimestamp(TS_ISO_8601);
         $useTTL = true;
     } else {
         # Correct for DateTime interpreting 'XXXX' as XX:XX o'clock
         if (preg_match('/^[0-9]{4}$/', $date)) {
             $date = '00:00 ' . $date;
         }
         $cacheKey = $date;
         $useTTL = false;
     }
     if (isset($this->timeCache[$format][$cacheKey][$langcode][$local])) {
         $ttl = $this->timeCache[$format][$cacheKey][$langcode][$local][1];
         if ($useTTL && $ttl !== null) {
             $this->getEngine()->setTTL($ttl);
         }
         return array($this->timeCache[$format][$cacheKey][$langcode][$local][0]);
     }
     # Default input timezone is UTC.
     try {
         $utc = new DateTimeZone('UTC');
         $dateObject = new DateTime($date, $utc);
     } catch (Exception $ex) {
         throw new Scribunto_LuaError("bad argument #2 to 'formatDate' (not a valid timestamp)");
     }
     # Set output timezone.
     if ($local) {
         global $wgLocaltimezone;
         if (isset($wgLocaltimezone)) {
             $tz = new DateTimeZone($wgLocaltimezone);
         } else {
             $tz = new DateTimeZone(date_default_timezone_get());
         }
     } else {
         $tz = $utc;
     }
     $dateObject->setTimezone($tz);
     # Generate timestamp
     $ts = $dateObject->format('YmdHis');
     if ($ts < 0) {
         throw new Scribunto_LuaError("mw.language:formatDate() only supports years from 0");
     } elseif ($ts >= 100000000000000.0) {
         throw new Scribunto_LuaError("mw.language:formatDate() only supports years up to 9999");
     }
     $ttl = null;
     $ret = $lang->sprintfDate($format, $ts, $tz, $ttl);
     $this->timeCache[$format][$cacheKey][$langcode][$local] = array($ret, $ttl);
     if ($useTTL && $ttl !== null) {
         $this->getEngine()->setTTL($ttl);
     }
     return array($ret);
 }
开发者ID:negati-ve,项目名称:openshift-mediawiki,代码行数:64,代码来源:LanguageLibrary.php

示例12: resetNotificationTimestamp

 /**
  * Reset the notification timestamp of this entry
  *
  * @param bool $force Whether to force the write query to be executed even if the
  *    page is not watched or the notification timestamp is already NULL.
  * @param int $oldid The revision id being viewed. If not given or 0, latest revision is assumed.
  * @mode int $mode WatchedItem::DEFERRED/IMMEDIATE
  */
 public function resetNotificationTimestamp($force = '', $oldid = 0, $mode = self::IMMEDIATE)
 {
     // Only loggedin user can have a watchlist
     if (wfReadOnly() || $this->mUser->isAnon() || !$this->isAllowed('editmywatchlist')) {
         return;
     }
     if ($force != 'force') {
         $this->load();
         if (!$this->watched || $this->timestamp === null) {
             return;
         }
     }
     $title = $this->getTitle();
     if (!$oldid) {
         // No oldid given, assuming latest revision; clear the timestamp.
         $notificationTimestamp = null;
     } elseif (!$title->getNextRevisionID($oldid)) {
         // Oldid given and is the latest revision for this title; clear the timestamp.
         $notificationTimestamp = null;
     } else {
         // See if the version marked as read is more recent than the one we're viewing.
         // Call load() if it wasn't called before due to $force.
         $this->load();
         if ($this->timestamp === null) {
             // This can only happen if $force is enabled.
             $notificationTimestamp = null;
         } else {
             // Oldid given and isn't the latest; update the timestamp.
             // This will result in no further notification emails being sent!
             $notificationTimestamp = Revision::getTimestampFromId($title, $oldid);
             // We need to go one second to the future because of various strict comparisons
             // throughout the codebase
             $ts = new MWTimestamp($notificationTimestamp);
             $ts->timestamp->add(new DateInterval('PT1S'));
             $notificationTimestamp = $ts->getTimestamp(TS_MW);
             if ($notificationTimestamp < $this->timestamp) {
                 if ($force != 'force') {
                     return;
                 } else {
                     // This is a little silly…
                     $notificationTimestamp = $this->timestamp;
                 }
             }
         }
     }
     // If the page is watched by the user (or may be watched), update the timestamp
     if ($mode === self::DEFERRED) {
         $job = new ActivityUpdateJob($title, array('type' => 'updateWatchlistNotification', 'userid' => $this->getUserId(), 'notifTime' => $notificationTimestamp, 'curTime' => time()));
         // Try to run this post-send
         DeferredUpdates::addCallableUpdate(function () use($job) {
             $job->run();
         });
     } else {
         $dbw = wfGetDB(DB_MASTER);
         $dbw->update('watchlist', array('wl_notificationtimestamp' => $dbw->timestampOrNull($notificationTimestamp)), $this->dbCond(), __METHOD__);
     }
     $this->timestamp = null;
 }
开发者ID:Acidburn0zzz,项目名称:mediawiki,代码行数:66,代码来源:WatchedItem.php

示例13: getUserLocalTime

 /**
  * Internal helper function for converting UTC timezone to a user's timezone
  * @param $user User
  * @param $ts string
  * @param $format output format
  */
 private static function getUserLocalTime($user, $ts, $format = TS_MW)
 {
     $timestamp = new MWTimestamp($ts);
     $timestamp->offsetForUser($user);
     return $timestamp->getTimestamp($format);
 }
开发者ID:biribogos,项目名称:wikihow-src,代码行数:12,代码来源:ApiEchoNotifications.php

示例14: getNotificationTimestamp

 private function getNotificationTimestamp(User $user, Title $title, $item, $force, $oldid)
 {
     if (!$oldid) {
         // No oldid given, assuming latest revision; clear the timestamp.
         return null;
     }
     if (!$title->getNextRevisionID($oldid)) {
         // Oldid given and is the latest revision for this title; clear the timestamp.
         return null;
     }
     if ($item === null) {
         $item = $this->loadWatchedItem($user, $title);
     }
     if (!$item) {
         // This can only happen if $force is enabled.
         return null;
     }
     // Oldid given and isn't the latest; update the timestamp.
     // This will result in no further notification emails being sent!
     // Calls Revision::getTimestampFromId in normal operation
     $notificationTimestamp = call_user_func($this->revisionGetTimestampFromIdCallback, $title, $oldid);
     // We need to go one second to the future because of various strict comparisons
     // throughout the codebase
     $ts = new MWTimestamp($notificationTimestamp);
     $ts->timestamp->add(new DateInterval('PT1S'));
     $notificationTimestamp = $ts->getTimestamp(TS_MW);
     if ($notificationTimestamp < $item->getNotificationTimestamp()) {
         if ($force != 'force') {
             return false;
         } else {
             // This is a little silly…
             return $item->getNotificationTimestamp();
         }
     }
     return $notificationTimestamp;
 }
开发者ID:paladox,项目名称:mediawiki,代码行数:36,代码来源:WatchedItemStore.php

示例15: showImage

 function showImage()
 {
     global $wgOut;
     $wgOut->disable();
     $info = $this->retrieveCaptcha();
     if ($info) {
         $timestamp = new MWTimestamp();
         $info['viewed'] = $timestamp->getTimestamp();
         $this->storeCaptcha($info);
         $salt = $info['salt'];
         $hash = $info['hash'];
         return $this->getBackend()->streamFile(array('src' => $this->imagePath($salt, $hash), 'headers' => array("Cache-Control: private, s-maxage=0, max-age=3600")))->isOK();
     }
     wfHttpError(500, 'Internal Error', 'Requested bogus captcha image');
     return false;
 }
开发者ID:Tarendai,项目名称:spring-website,代码行数:16,代码来源:FancyCaptcha.class.php


注:本文中的MWTimestamp::getTimestamp方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。