private function getNecessaryTermImports() { require_once "SMW_TermImportDefinitionValidator.php"; $log = SGAGardeningIssuesAccess::getGardeningIssuesAccess(); SMWQueryProcessor::processFunctionParams(array("[[TermImport:+]] [[Category:TermImport]]"), $querystring, $params, $printouts); $queryResult = explode("|", SMWQueryProcessor::getResultFromQueryString($querystring, $params, $printouts, SMW_OUTPUT_WIKI)); unset($queryResult[0]); $necessaryTermImports = array(); foreach ($queryResult as $tiArticleName) { $tiArticleName = substr($tiArticleName, 0, strpos($tiArticleName, "]]")); $xmlString = smwf_om_GetWikiText('TermImport:' . $tiArticleName); $start = strpos($xmlString, "<ImportSettings>"); $end = strpos($xmlString, "</ImportSettings>") + 17 - $start; $xmlString = substr($xmlString, $start, $end); SMWQueryProcessor::processFunctionParams(array("[[belongsToTermImport::TermImport:" . $tiArticleName . "]]", "?hasImportDate", "limit=1", "sort=hasImportDate", "order=descending", "format=list", "mainlabel=-", "searchlabel="), $querystring, $params, $printouts); $queryResult = SMWQueryProcessor::getResultFromQueryString($querystring, $params, $printouts, SMW_OUTPUT_WIKI); // timestamp creation depends on property type (page or date) $queryResult = trim(substr($queryResult, strpos($queryResult, "]]") + 2)); if (strpos($queryResult, "[[:") === 0) { //type page $queryResult = trim(substr($queryResult, strpos($queryResult, "|") + 1)); $queryResult = trim(substr($queryResult, 0, strpos($queryResult, "]"))); } else { //type date $queryResult = trim(substr($queryResult, 0, strpos($queryResult, "["))); } $timestamp = strtotime($queryResult); $tiDV = new SMWTermImportDefinitionValidator($xmlString); if (!$tiDV->validate()) { echo "\nThe Term Import definition of " . $tiArticleName . " is invalid.\n"; $title = Title::newFromText("TermImport:" . $tiArticleName); $log->addGardeningIssueAboutArticle($this->id, SMW_GARDISSUE_UPDATE_FAILURE, $title); continue; } $simpleXMLElement = new SimpleXMLElement($xmlString); $maxAge = $simpleXMLElement->xpath("//UpdatePolicy/maxAge/@value"); //echo("\ntimestamp: ".$imestamp); if ($maxAge != "") { if ($timestamp == 0 || wfTime() - $timestamp - $maxAge[0]->value * 60 > 0) { echo "\nRun this term import: " . $tiArticleName; $necessaryTermImports[$tiArticleName] = $xmlString; } } else { $title = Title::newFromText("TermImport:" . $tiArticleName); $log->addGardeningIssueAboutArticle($this->id, SMW_GARDISSUE_UPDATE_NOT_NECESSARY, $title); } } return $necessaryTermImports; }