Ejemplo n.º 1
0
 /**
  * this method checks for each cache entry of
  * a webservice if it has to be deleted
  *
  * @param webservice $ws
  */
 private function cleanWSCacheEntries($ws)
 {
     $log = SGAGardeningIssuesAccess::getGardeningIssuesAccess();
     if ($ws->getSpanOfLife() != "0") {
         $cacheResults = WSStorage::getDatabase()->getResultsFromCache($ws->getArticleID());
         $this->addSubTask(sizeof($cacheResults) + 1);
         //echo($ws->getArticleID());
         $deletedCacheEntries = 0;
         foreach ($cacheResults as $cacheResult) {
             if ($ws->doesExpireAfterUpdate() == "false") {
                 if ($cacheResult["lastAccess"]) {
                     if (wfTimestamp(TS_UNIX, $cacheResult["lastAccess"]) < wfTimestamp(TS_UNIX, $cacheResult["lastUpdate"])) {
                         $compareTS = $cacheResult["lastUpdate"];
                     } else {
                         $compareTS = $cacheResult["lastAccess"];
                     }
                 } else {
                     $compareTS = $cacheResult["lastUpdate"];
                 }
             } else {
                 $compareTS = $cacheResult["lastUpdate"];
             }
             //todo: change to days again
             if (wfTime() - wfTimestamp(TS_UNIX, $compareTS) > $ws->getSpanOfLife() * 24 * 60 * 60) {
                 WSStorage::getDatabase()->removeWSEntryFromCache($ws->getArticleID(), $cacheResult["paramSetId"]);
                 $deletedCacheEntries += 1;
             }
             $this->worked(1);
         }
         // echo($ws->getName()."-".$deletedCacheEntries);
         if ($deletedCacheEntries > 0) {
             $log->addGardeningIssueAboutValue($this->id, SMW_GARDISSUE__REMOVED_WSCACHE_ENTRIES, Title::newFromText($ws->getName()), $deletedCacheEntries);
         }
     } else {
         $this->addSubTask(1);
         $this->worked(1);
     }
 }