本文整理汇总了PHP中Revision::getTimeStampFromID方法的典型用法代码示例。如果您正苦于以下问题:PHP Revision::getTimeStampFromID方法的具体用法?PHP Revision::getTimeStampFromID怎么用?PHP Revision::getTimeStampFromID使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Revision
的用法示例。
在下文中一共展示了Revision::getTimeStampFromID方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: printPages
/**
* This function prints all selected pages, specified as an array of page
* names (strings with namespace identifiers).
*
* @param array $pages list of page names to export
* @param integer $recursion determines how pages are exported recursively:
* "0" means that referenced resources are only declared briefly, "1" means
* that all referenced resources are also exported recursively (propbably
* retrieving the whole wiki).
* @param string $revisiondate filter page list by including only pages
* that have been changed since this date; format "YmdHis"
*
* @todo Consider dropping the $revisiondate filtering and all associated
* functionality. Is anybody using this?
*/
public function printPages($pages, $recursion = 1, $revisiondate = false)
{
$linkCache = LinkCache::singleton();
$this->prepareSerialization();
$this->delay_flush = 10;
// flush only after (fully) printing 11 objects
// transform pages into queued short titles
foreach ($pages as $page) {
$title = Title::newFromText($page);
if (null === $title) {
continue;
// invalid title name given
}
if ($revisiondate !== '') {
// filter page list by revision date
$rev = Revision::getTimeStampFromID($title, $title->getLatestRevID());
if ($rev < $revisiondate) {
continue;
}
}
$diPage = SMWDIWikiPage::newFromTitle($title);
$this->queuePage($diPage, $recursion == 1 ? -1 : 1);
}
$this->serializer->startSerialization();
if (count($pages) == 1) {
// ensure that ontologies that are retrieved as linked data are not confused with their subject!
$ontologyuri = SMWExporter::getInstance()->expandURI('&export;') . '/' . urlencode(end($pages));
} else {
// use empty URI, i.e. "location" as URI otherwise
$ontologyuri = '';
}
$this->serializer->serializeExpData(SMWExporter::getInstance()->getOntologyExpData($ontologyuri));
while (count($this->element_queue) > 0) {
$diPage = reset($this->element_queue);
$this->serializePage($diPage, $diPage->recdepth);
$this->flush();
$linkCache->clear();
// avoid potential memory leak
}
$this->serializer->finishSerialization();
$this->flush(true);
}
示例2: storeData
/**
* This function takes care of storing the collected semantic data and takes
* care of clearing out any outdated entries for the processed page. It assume that
* parsing has happened and that all relevant data is contained in the provided parser
* output.
*
* Optionally, this function also takes care of triggering indirect updates that might be
* needed for overall database consistency. If the saved page describes a property or data type,
* the method checks whether the property type, the data type, the allowed values, or the
* conversion factors have changed. If so, it triggers SMWUpdateJobs for the relevant articles,
* which then asynchronously update the semantic data in the database.
*
* @param $parseroutput ParserOutput object that contains the results of parsing which will
* be stored.
* @param $title Title object specifying the page that should be saved.
* @param $makejobs Bool stating whether jobs should be created to trigger further updates if
* this appears to be necessary after this update.
*
* @todo FIXME: Some job generations here might create too many jobs at once on a large wiki. Use incremental jobs instead.
*/
public static function storeData($parseroutput, Title $title, $makejobs = true)
{
global $smwgEnableUpdateJobs, $smwgDeclarationProperties, $smwgPageSpecialProperties;
$semdata = $parseroutput->mSMWData;
$namespace = $title->getNamespace();
$processSemantics = smwfIsSemanticsProcessed($namespace);
if (!isset($semdata)) {
// no data at all?
$semdata = new SMWSemanticData(SMWDIWikiPage::newFromTitle($title));
}
if ($processSemantics) {
$props = array();
foreach ($smwgPageSpecialProperties as $propId) {
// Do not calculate the same property again.
if (array_key_exists($propId, $props)) {
continue;
}
// Remember the property is processed.
$props[$propId] = true;
$prop = new SMWDIProperty($propId);
if (count($semdata->getPropertyValues($prop)) > 0) {
continue;
}
// Calculate property value.
$value = null;
switch ($propId) {
case '_MDAT':
$timestamp = Revision::getTimeStampFromID($title, $title->getLatestRevID());
$value = self::getDataItemFromMWTimestamp($timestamp);
break;
case '_CDAT':
$timestamp = $title->getFirstRevision()->getTimestamp();
$value = self::getDataItemFromMWTimestamp($timestamp);
break;
case '_NEWP':
$value = new SMWDIBoolean($title->isNewPage());
break;
case '_LEDT':
$revision = Revision::newFromId($title->getLatestRevID());
$user = User::newFromId($revision->getUser());
$value = SMWDIWikiPage::newFromTitle($user->getUserPage());
break;
}
if (!is_null($value)) {
$semdata->addPropertyObjectValue($prop, $value);
}
// Issue error or warning?
}
// foreach
} else {
// data found, but do all operations as if it was empty
$semdata = new SMWSemanticData($semdata->getSubject());
}
// Check if the semantic data has been changed.
// Sets the updateflag to true if so.
// Careful: storage access must happen *before* the storage update;
// even finding uses of a property fails after its type was changed.
$updatejobflag = false;
$jobs = array();
if ($makejobs && $smwgEnableUpdateJobs && $namespace == SMW_NS_PROPERTY) {
// If it is a property, then we need to check if the type or the allowed values have been changed.
$ptype = new SMWDIProperty('_TYPE');
$oldtype = smwfGetStore()->getPropertyValues($semdata->getSubject(), $ptype);
$newtype = $semdata->getPropertyValues($ptype);
if (!self::equalDatavalues($oldtype, $newtype)) {
$updatejobflag = true;
} else {
foreach ($smwgDeclarationProperties as $prop) {
$pv = new SMWDIProperty($prop);
$oldvalues = smwfGetStore()->getPropertyValues($semdata->getSubject(), $pv);
$newvalues = $semdata->getPropertyValues($pv);
$updatejobflag = !self::equalDatavalues($oldvalues, $newvalues);
}
}
if ($updatejobflag) {
$prop = new SMWDIProperty($title->getDBkey());
$subjects = smwfGetStore()->getAllPropertySubjects($prop);
foreach ($subjects as $subject) {
$subjectTitle = $subject->getTitle();
if (!is_null($subjectTitle)) {
//.........这里部分代码省略.........