[Mapbender-commits] r8325 - trunk/mapbender/tools
svn_mapbender at osgeo.org
svn_mapbender at osgeo.org
Thu Apr 26 09:54:06 EDT 2012
Author: verenadiewald
Date: 2012-04-26 06:54:06 -0700 (Thu, 26 Apr 2012)
New Revision: 8325
Added:
trunk/mapbender/tools/mod_runScheduler.php
Log:
scheduler script
Added: trunk/mapbender/tools/mod_runScheduler.php
===================================================================
--- trunk/mapbender/tools/mod_runScheduler.php (rev 0)
+++ trunk/mapbender/tools/mod_runScheduler.php 2012-04-26 13:54:06 UTC (rev 8325)
@@ -0,0 +1,148 @@
+<?php
+require_once(dirname(__FILE__)."/../core/system.php");
+require_once(dirname(__FILE__)."/../http/classes/class_wms.php");
+
+$sql = <<<SQL
+SELECT scheduler_id, wms_id, wms_title, to_timestamp(wms_timestamp)::date AS last_change, last_status, fkey_upload_id, wms_upload_url,
+scheduler_interval,scheduler_mail,scheduler_publish,scheduler_searchable,scheduler_overwrite,
+scheduler_status FROM (SELECT scheduler_id, wms_id, fkey_wms_id, wms_title, wms_timestamp,
+scheduler_interval,scheduler_mail,scheduler_publish,scheduler_searchable,scheduler_overwrite,
+scheduler_status,wms_upload_url FROM scheduler
+INNER JOIN wms ON scheduler.fkey_wms_id=wms.wms_id ) AS test
+LEFT OUTER JOIN mb_wms_availability ON test.fkey_wms_id = mb_wms_availability.fkey_wms_id;
+SQL;
+$res = db_query($sql);
+//$resultObj = array();
+//array containing all wms which should be updated
+$wmsToUpdate = array();
+
+while ($row = db_fetch_array($res)) {
+ $resultObj = array(
+ "scheduler_id" => $row['scheduler_id'],
+ "wms_id" => $row['wms_id'],
+ "wms_title" => $row['wms_title'],
+ "last_change" => $row['last_change'],
+ "last_status" => $row['last_status'],
+ "wms_upload_url" => $row['wms_upload_url'],
+ "fkey_upload_id" => $row['fkey_upload_id'],
+ "scheduler_interval" => $row['scheduler_interval'],
+ "scheduler_mail" => $row['scheduler_mail'],
+ "scheduler_publish" => $row['scheduler_publish'],
+ "scheduler_searchable" => $row['scheduler_searchable'],
+ "scheduler_overwrite" => $row['scheduler_overwrite'],
+ "scheduler_status" => $row['scheduler_status']
+ );
+
+ if($row['scheduler_interval'] == '1 mon') {
+ $row['scheduler_interval'] = "1 month";
+ }
+ //check wms timestamp , schedule interval with current date for update
+ $currentDate = date('Y-m-d',time());
+ $schedulerDateTimestamp = date("Y-m-d",strtotime(date("Y-m-d", strtotime($row['last_change'])) . $row['scheduler_interval']));
+ //last monitoring date
+ $lastMonitorDate = date("Y-m-d",$row['fkey_upload_id']);
+ $schedulerDateMonitoring = date("Y-m-d",strtotime(date("Y-m-d", $row['fkey_upload_id']) . $row['scheduler_interval']));
+
+ //if calculated $schedulerDateTimestamp is in the past
+ //or last_status value of monitoring does not have the value 1 which means wms has been updated by monitoring
+ if($currentDate >= $schedulerDateTimestamp) {
+ if ($row['last_status'] == 1) {
+ if($currentDate >= $schedulerDateMonitoring) {
+ array_push($wmsToUpdate, $resultObj);
+ }
+ }
+ else{
+ array_push($wmsToUpdate, $resultObj);
+ }
+ }
+ else {
+ if ($row['last_status'] == 0) {
+ array_push($wmsToUpdate, $resultObj);
+ }
+ }
+}
+
+for ($i=0; $i<count($wmsToUpdate); $i++) {
+ #echo "WMS ID = ".$wmsToUpdate[$i]['wms_id']."\n";
+ #echo "WMS URL = ".$wmsToUpdate[$i]['wms_upload_url']."\n";
+
+ //create new wms object
+ $updateWms = new wms();
+ $createObjFromXml = $updateWms->createObjFromXML($wmsToUepdate[$i]['wms_upload_url']);
+ if(!$createObjFromXml) {
+ $errorMsg = "Error while creating object from GetCapabilities XML";
+ }
+ //check scheduler_searchable attribute for layer searchable in class_wms.php
+ $updateWms->optimizeWMS($wmsToUpdate[$i]['scheduler_searchable']);
+
+ //check overwrite attribute
+ if (!$wmsToUpdate[$i]['scheduler_overwrite']) {
+ $updateWms->overwrite=false;
+ }
+
+ //check publish attribute for geoRss and twitter attribute in class_wms.php
+ if ($wmsToUpdate[$i]['scheduler_publish'] == 1) {
+ require_once dirname(__FILE__) . "/../http/classes/class_twitter.php";
+ $updateWms->twitterNews=true;
+ $updateWms->setGeoRss=true;
+ }
+ else {
+ $updateWms->twitterNews=false;
+ $updateWms->setGeoRss=false;
+ }
+
+ $updateObjInDb = $updateWms->updateObjInDB($wmsToUpdate[$i]['wms_id']);
+ if(!$updateObjInDb) {
+ $errorMsg = "Error while updating wms object in database";
+ }
+
+ if($wmsToUpdate[$i]['scheduler_mail']) {
+ $admin = new administration();
+ $ownerIds = $admin->getOwnerByWms($wmsToUpdate[$i]['wms_id']);
+
+ if ($ownerIds && count($ownerIds) > 0) {
+ $ownerMailAddresses = array();
+ $j=0;
+ for ($k=0; $k<count($ownerIds); $k++) {
+ $adrTmp = $admin->getEmailByUserId($ownerIds[$k]);
+ if (!in_array($adrTmp, $ownerMailAddresses) && $adrTmp) {
+ $ownerMailAddresses[$j] = $adrTmp;
+ $j++;
+ }
+ }
+
+ $from = "mapbender_scheduler at mapbender.org";
+ $pathArray = explode("http/php/", $_SERVER["PATH_TRANSLATED"]);
+ $path = $pathArray[0];
+ $body = "WMS '" . $admin->getWmsTitleByWmsId($wmsToUpdate[$i]['wms_id']) . "' has been updated by the scheduler update. \n\nYou may want to check the changes as you are an owner of this WMS.";
+ $error_msg = "";
+ for ($m=0; $m<count($ownerMailAddresses); $m++) {
+ if (!$admin->sendEmail($from, $from, $ownerMailAddresses[$m], $ownerMailAddresses[$m], "[Mapbender Update Scheduler] One of your WMS has been updated", $body, $error)) {
+ if ($error){
+ $error_msg .= $error . " ";
+ }
+ }
+ }
+ }
+ }
+
+ if($errorMsg == "") {
+ $status = 1;
+ }
+ else {
+ $status = -1;
+ }
+
+ $sql = <<<SQL
+UPDATE scheduler SET scheduler_status = $1, scheduler_status_error_message = $2 WHERE fkey_wms_id = $3;
+SQL;
+ $v = array($status, $errorMsg, $wmsToUpdate[$i]['wms_id']);
+ $t = array('i','s','i');
+ try {
+ $res = db_prep_query($sql,$v,$t);
+ }
+ catch (Exception $e){
+ echo "ERROR";
+ }
+}
+?>
\ No newline at end of file
More information about the Mapbender_commits
mailing list