diff --git a/lib/classes/task/period/outofdate.class.php b/lib/classes/task/period/outofdate.class.php
index 8f5b5e61ca..c3127763cf 100644
--- a/lib/classes/task/period/outofdate.class.php
+++ b/lib/classes/task/period/outofdate.class.php
@@ -2,7 +2,7 @@
/*
* This file is part of Phraseanet
*
- * (c) 2005-2012 Alchemy
+ * (c) 2005-2010 Alchemy
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
@@ -17,24 +17,24 @@
class task_period_outofdate extends task_abstract
{
- // ====================================================================
- // getName : must return the name for this kind of task
- // MANDATORY
- // ====================================================================
- public function getName()
- {
- return(_('Documents perimes'));
- }
+ // ====================================================================
+ // getName : must return the name for this kind of task
+ // MANDATORY
+ // ====================================================================
+ public function getName()
+ {
+ return(_('Documents perimes'));
+ }
- // ====================================================================
- // graphic2xml : must return the xml (text) version of the form
- // ====================================================================
- public function graphic2xml($oldxml)
- {
+ // ====================================================================
+ // graphic2xml : must return the xml (text) version of the form
+ // ====================================================================
+ public function graphic2xml($oldxml)
+ {
// global $parm;
- $request = http_request::getInstance();
+ $request = http_request::getInstance();
- $parm2 = $request->get_parms(
+ $parm2 = $request->get_parms(
"sbas_id"
, "period"
, 'field1'
@@ -49,820 +49,892 @@ class task_period_outofdate extends task_abstract
, 'coll1'
, 'status2'
, 'coll2'
- );
- $dom = new DOMDocument();
- $dom->preserveWhiteSpace = false;
- $dom->formatOutput = true;
- if ($dom->loadXML($oldxml)) {
- $xmlchanged = false;
- // foreach($parm2 as $pname=>$pvalue)
- foreach (array(
- "str:sbas_id",
- "str:period",
- 'str:field1',
- 'str:fieldDs1',
- 'str:fieldDv1',
- 'str:field2',
- 'str:fieldDs2',
- 'str:fieldDv2',
- 'str:status0',
- 'str:coll0',
- 'str:status1',
- 'str:coll1',
- 'str:status2',
- 'str:coll2'
- ) as $pname) {
- $ptype = substr($pname, 0, 3);
- $pname = substr($pname, 4);
- $pvalue = $parm2[$pname];
- if (($ns = $dom->getElementsByTagName($pname)->item(0))) {
- // le champ existait dans le xml, on supprime son ancienne valeur (tout le contenu)
- while (($n = $ns->firstChild))
- $ns->removeChild($n);
- } else {
- // le champ n'existait pas dans le xml, on le cree
- $dom->documentElement->appendChild($dom->createTextNode("\t"));
- $ns = $dom->documentElement->appendChild($dom->createElement($pname));
- $dom->documentElement->appendChild($dom->createTextNode("\n"));
- }
- // on fixe sa valeur
- switch ($ptype) {
- case "str":
- $ns->appendChild($dom->createTextNode($pvalue));
- break;
- case "boo":
- $ns->appendChild($dom->createTextNode($pvalue ? '1' : '0'));
- break;
- }
- $xmlchanged = true;
- }
+ );
+ $dom = new DOMDocument();
+ $dom->preserveWhiteSpace = false;
+ $dom->formatOutput = true;
+ if($dom->loadXML($oldxml))
+ {
+ $xmlchanged = false;
+ // foreach($parm2 as $pname=>$pvalue)
+ foreach(array(
+ "str:sbas_id",
+ "str:period",
+ 'str:field1',
+ 'str:fieldDs1',
+ 'str:fieldDv1',
+ 'str:field2',
+ 'str:fieldDs2',
+ 'str:fieldDv2',
+ 'str:status0',
+ 'str:coll0',
+ 'str:status1',
+ 'str:coll1',
+ 'str:status2',
+ 'str:coll2'
+ ) as $pname)
+ {
+ $ptype = substr($pname, 0, 3);
+ $pname = substr($pname, 4);
+ $pvalue = $parm2[$pname];
+ if(($ns = $dom->getElementsByTagName($pname)->item(0)))
+ {
+ // le champ existait dans le xml, on supprime son ancienne valeur (tout le contenu)
+ while(($n = $ns->firstChild))
+ $ns->removeChild($n);
}
-
- return($dom->saveXML());
+ else
+ {
+ // le champ n'existait pas dans le xml, on le cree
+ $dom->documentElement->appendChild($dom->createTextNode("\t"));
+ $ns = $dom->documentElement->appendChild($dom->createElement($pname));
+ $dom->documentElement->appendChild($dom->createTextNode("\n"));
+ }
+ // on fixe sa valeur
+ switch($ptype)
+ {
+ case "str":
+ $ns->appendChild($dom->createTextNode($pvalue));
+ break;
+ case "boo":
+ $ns->appendChild($dom->createTextNode($pvalue ? '1' : '0'));
+ break;
+ }
+ $xmlchanged = true;
+ }
}
- // ====================================================================
- // xml2graphic : must fill the graphic form (using js) from xml
- // ====================================================================
- public function xml2graphic($xml, $form)
+ return($dom->saveXML());
+ }
+
+ // ====================================================================
+ // xml2graphic : must fill the graphic form (using js) from xml
+ // ====================================================================
+ public function xml2graphic($xml, $form)
+ {
+ if(($sxml = simplexml_load_string($xml))) // in fact XML IS always valid here...
{
- if (($sxml = simplexml_load_string($xml))) { // in fact XML IS always valid here...
- // ... but we could check for safe values
- if ((int) ($sxml->period) < 10)
- $sxml->period = 10;
- elseif ((int) ($sxml->period) > 1440) // 1 jour
- $sxml->period = 1440;
+ // ... but we could check for safe values
+ if((int) ($sxml->period) < 10)
+ $sxml->period = 10;
+ elseif((int) ($sxml->period) > 1440) // 1 jour
+ $sxml->period = 1440;
- if ((string) ($sxml->delay) == '')
- $sxml->delay = 0;
- ?>
-
-
-
-
-
+
+
+
+
+ var html = "";
+ for(i in data.collections)
+ html += "\n";
+ for(fld=0; fld<=2; fld++)
+ $("#coll"+fld).html(html);
+
+ var html = "";
+ for(i in data.status_bits)
+ html += "\n";
+ for(fld=0; fld<=2; fld++)
+ $("#status"+fld).html(html);
+ }
+ });
+
+ return;
+ }
+
+
+
+ limits[fieldname].max)
+ v = limits[fieldname].max;
+ textinput.value = v;
+ }
+ setDirty();
+ }
+
+ function chgxmlck(checkinput, fieldname)
+ {
+ setDirty();
+ }
+
+ function chgxmlpopup(popupinput, fieldname)
+ {
+ setDirty();
+ }
+
+ function chgsbas(sbaspopup)
+ {
+ loadsbas(sbaspopup.value);
+ setDirty();
+ }
+
+ function loadsbas(sbas)
+ {
+ $.ajax({ url:"/admin/taskfacility.php"
+ , data: {taskid:get_task_id() ?>, bid:sbas, type:"json", cls:"outofdate"}
+ , dataType:'json'
+ , type:"POST"
+ , async:false
+ , success:function(data)
+ {
+ $(".popfield").empty().append('');
+ for(i in data.date_fields)
+ $(".popfield").append('');
+
+ $(".popcoll").empty().append('');
+ for(i in data.collections)
+ $(".popcoll").append('');
+
+ $(".popstatus").empty().append('');
+ for(i in data.status_bits)
+ {
+ $(".popstatus").append('');
+ $(".popstatus").append('');
+ }
+ }
+ });
+ }
+ */
+ ?>
+
+
+ get_session();
+ $user = User_Adapter::getInstance($session->get_usr_id(), $appbox);
+ ob_start();
+
+ $sbas_list = $user->ACL()->get_granted_sbas(array('bas_manage'));
+ ?>
+
+
+
+ cmd
+
+ :
-
-
-
+ return $out;
+ }
-
-
-
-
- cmd
-
- array("set"=>false, "values"=>array(), "usage"=>" : usage du truc")
+ );
- return $out;
- }
- // ====================================================================
- // $argt : command line args specifics to this task (optional)
- // ====================================================================
- public $argt = array(
- // "--truc" => array("set"=>false, "values"=>array(), "usage"=>" : usage du truc")
- );
+ // ======================================================================================================
+ // ===== help() : text displayed if --help (optional)
+ // ======================================================================================================
+ function help()
+ {
+ return(_("task::outofdate:deplacement de docs suivant valeurs de champs 'date'"));
+ }
- // ======================================================================================================
- // ===== help() : text displayed if --help (optional)
- // ======================================================================================================
- function help()
+ // ======================================================================================================
+ // ===== run() : le code d'execution de la tache proprement dite
+ // ======================================================================================================
+
+ protected $sxTaskSettings = null; // les settings de la tache en simplexml
+ private $connbas = null; // cnx a la base
+ private $msg = "";
+ private $sbas_id;
+
+ protected function run2()
+ {
+ $ret = '';
+ $conn = connection::getPDOConnection();
+
+ $this->sxTaskSettings = simplexml_load_string($this->settings);
+
+ $this->sbas_id = (int) ($this->sxTaskSettings->sbas_id);
+
+ $this->connbas = connection::getPDOConnection($this->sbas_id);
+
+ $this->running = true;
+ $this->tmask = array();
+ $this->tmaskgrp = array();
+ $this->period = 60;
+
+
+ // ici la tache tourne tant qu'elle est active
+ $last_exec = 0;
+ $loop = 0;
+ while($this->running)
{
- return(_("task::outofdate:deplacement de docs suivant valeurs de champs 'date'"));
- }
- // ======================================================================================================
- // ===== run() : le code d'execution de la tache proprement dite
- // ======================================================================================================
+ if(!$conn->ping())
+ {
+ $this->log(("Warning : abox connection lost, restarting in 10 min."));
+ for($i=0; $i<60 * 10; $i++)
+ sleep(1);
+ $this->running = false;
- protected $sxTaskSettings = null; // les settings de la tache en simplexml
- private $connbas = null; // cnx a la base
- private $msg = "";
- private $sbas_id;
+ return(self::STATUS_TORESTART);
+ }
- protected function run2()
- {
- $ret = '';
- $conn = connection::getPDOConnection();
+ try
+ {
+ $connbas = connection::getPDOConnection($this->sbas_id);
+ if(!$connbas->ping())
+ throw new Exception('Mysql has gone away');
+ }
+ catch(Exception $e)
+ {
+ $this->log(("dbox connection lost, restarting in 10 min."));
+ for($i=0; $i<60 * 10; $i++)
+ sleep(1);
+ $this->running = false;
- $this->sxTaskSettings = simplexml_load_string($this->settings);
+ return(self::STATUS_TORESTART);
+ }
- $this->sbas_id = (int) ($this->sxTaskSettings->sbas_id);
+ $this->set_last_exec_time();
- $this->connbas = connection::getPDOConnection($this->sbas_id);
+ $databox = databox::get_instance($this->sbas_id);
- $this->running = true;
- $this->tmask = array();
- $this->tmaskgrp = array();
- $this->period = 60;
+ $sql = "SELECT * FROM task2 WHERE task_id = :task_id";
+ $stmt = $conn->prepare($sql);
+ $stmt->execute(array(':task_id' => $this->get_task_id()));
+ $row = $stmt->fetch(PDO::FETCH_ASSOC);
+ $stmt->closeCursor();
+ if($row)
+ {
+ if($row['status'] == 'tostop')
+ {
+ $ret = self::STATUS_STOPPED;
+ ;
+ $this->running = false;
+ }
+ else
+ {
+ if(($this->sxTaskSettings = simplexml_load_string($row['settings'])))
+ {
+ $period = (int) ($this->sxTaskSettings->period);
+ if($period <= 0 || $period >= 24 * 60)
+ $period = 60;
+ }
+ else
+ {
+ $period = 60;
+ }
+ $this->connbas = connection::getPDOConnection($this->sbas_id);
- // ici la tache tourne tant qu'elle est active
- $last_exec = 0;
- $loop = 0;
- while ($this->running) {
- if ( ! $conn->ping()) {
- $this->log(("Warning : abox connection lost, restarting in 10 min."));
- for ($i = 0; $i < 60 * 10; $i ++ )
- sleep(1);
+ $duration = time();
+
+ $r = $this->doRecords();
+
+ switch($r)
+ {
+ case 'WAIT':
+ $ret = self::STATUS_STOPPED;
+ $this->running = false;
+ break;
+ case 'BAD':
+ $ret = self::STATUS_STOPPED;
+ $this->running = false;
+ break;
+ case 'NORECSTODO':
+ $duration = time() - $duration;
+ if($duration < $period)
+ {
+ sleep($period - $duration);
+ $conn = connection::getPDOConnection();
+ }
+ break;
+ case 'MAXRECSDONE':
+ case 'MAXMEMORY':
+ case 'MAXLOOP':
+ if($row['status'] == self::STATUS_STARTED && $this->get_runner() !== self::RUNNER_MANUAL)
+ {
+ $ret = self::STATUS_TORESTART;
$this->running = false;
-
- return(self::RETURNSTATUS_TORESTART);
- }
-
- try {
- $connbas = connection::getPDOConnection($this->sbas_id);
- if ( ! $connbas->ping())
- throw new Exception('Mysql has gone away');
- } catch (Exception $e) {
- $this->log(("dbox connection lost, restarting in 10 min."));
- for ($i = 0; $i < 60 * 10; $i ++ )
- sleep(1);
+ }
+ break;
+ default:
+ if($row['status'] == self::STATUS_STARTED)
+ {
+ $ret = self::STATUS_STOPPED;
$this->running = false;
-
- return(self::RETURNSTATUS_TORESTART);
- }
-
- $this->set_last_exec_time();
-
- $databox = databox::get_instance($this->sbas_id);
-
- $sql = "SELECT * FROM task2 WHERE task_id = :task_id";
- $stmt = $conn->prepare($sql);
- $stmt->execute(array(':task_id' => $this->get_task_id()));
- $row = $stmt->fetch(PDO::FETCH_ASSOC);
- $stmt->closeCursor();
-
- if ($row) {
- if ($row['status'] == 'tostop') {
- $ret = self::RETURNSTATUS_STOPPED;
- ;
- $this->running = false;
- } else {
- if (($this->sxTaskSettings = simplexml_load_string($row['settings']))) {
- $period = (int) ($this->sxTaskSettings->period);
- if ($period <= 0 || $period >= 24 * 60)
- $period = 60;
- }
- else {
- $period = 60;
- }
- $this->connbas = connection::getPDOConnection($this->sbas_id);
-
- $duration = time();
-
- $r = $this->doRecords();
-
- switch ($r) {
- case 'WAIT':
- $ret = self::RETURNSTATUS_STOPPED;
- $this->running = false;
- break;
- case 'BAD':
- $ret = self::RETURNSTATUS_STOPPED;
- $this->running = false;
- break;
- case 'NORECSTODO':
- $duration = time() - $duration;
- if ($duration < $period) {
- sleep($period - $duration);
- $conn = connection::getPDOConnection();
- }
- break;
- case 'MAXRECSDONE':
- case 'MAXMEMORY':
- case 'MAXLOOP':
- if ($row['status'] == self::STATUS_STARTED && $this->get_runner() !== self::RUNNER_MANUAL) {
- $ret = self::RETURNSTATUS_TORESTART;
- $this->running = false;
- }
- break;
- default:
- if ($row['status'] == self::STATUS_STARTED) {
- $ret = self::RETURNSTATUS_STOPPED;
- $this->running = false;
- }
- break;
- }
- }
- } else {
- $ret = 'stopped';
- $this->running = false;
- }
- $loop ++;
+ }
+ break;
+ }
}
+ }
+ else
+ {
+ $ret = self::STATUS_STOPPED;
+ $this->running = false;
+ }
+ $loop++;
+ }
+ }
- $this->return_value = $ret;
+ function doRecords()
+ {
+ $ndone = 0;
+ $ret = 'NORECSTODO';
- return($ret);
+ $tsql = $this->calcSQL($this->sxTaskSettings);
+
+ $nchanged = 0;
+ foreach($tsql as $xsql)
+ {
+ try
+ {
+ $stmt = $this->connbas->prepare($xsql['sql']);
+ if($stmt->execute($xsql['params']))
+ {
+ $n = $stmt->rowCount();
+ $stmt->closeCursor();
+
+ $nchanged += $n;
+ if($n > 0)
+ $this->log(sprintf("SQL='%s' ; parms=%s - %s changes", $xsql['sql'], var_export($xsql['params']), $n));
+ }
+ else
+ {
+ $this->log(sprintf("ERROR SQL='%s' ; parms=%s", $xsql['sql'], var_export($xsql['params'], true)));
+ }
+ }
+ catch (ErrorException $e)
+ {
+ $this->log(sprintf("ERROR SQL='%s' ; parms=%s", $xsql['sql'], var_export($xsql['params'], true)));
+ }
}
- function doRecords()
+ $ret = ($nchanged > 0 ? $nchanged : 'NORECSTODO');
+
+ return($ret);
+ }
+
+
+ private function calcSQL($sxTaskSettings)
+ {
+ $ret = array();
+
+ $this->sxTaskSettings = $sxTaskSettings;
+
+ $date1 = $date2 = NULL;
+ $field1 = $field2 = '';
+
+ // test : DATE 1
+ if(($field1 = trim($this->sxTaskSettings->field1)) != '')
{
- $ndone = 0;
- $ret = 'NORECSTODO';
-
- $tsql = $this->calcSQL($this->sxTaskSettings);
-
- $nchanged = 0;
- foreach ($tsql as $xsql) {
- try {
- $stmt = $this->connbas->prepare($xsql['sql']);
- if ($stmt->execute($xsql['params'])) {
- $n = $stmt->rowCount();
- $stmt->closeCursor();
-
- $nchanged += $n;
- if ($n > 0)
- $this->log(sprintf("SQL='%s' ; parms=%s - %s changes", $xsql['sql'], var_export($xsql['params']), $n));
- }
- else {
- $this->log(sprintf("ERROR SQL='%s' ; parms=%s", $xsql['sql'], var_export($xsql['params'], true)));
- }
- } catch (ErrorException $e) {
- $this->log(sprintf("ERROR SQL='%s' ; parms=%s", $xsql['sql'], var_export($xsql['params'], true)));
- }
- }
-
- $ret = ($nchanged > 0 ? $nchanged : 'NORECSTODO');
-
- return($ret);
+ $date1 = time();
+ if(($delta = (int) ($this->sxTaskSettings->fieldDv1)) > 0)
+ {
+ if($this->sxTaskSettings->fieldDs1 == '-')
+ $date1 += 86400 * $delta;
+ else
+ $date1 -= 86400 * $delta;
+ }
+ $date1 = date("YmdHis", $date1);
+ }
+ // test : DATE 2
+ if(($field2 = trim($this->sxTaskSettings->field2)) != '')
+ {
+ $date2 = time();
+ if(($delta = (int) ($this->sxTaskSettings->fieldDv2)) > 0)
+ {
+ if($this->sxTaskSettings->fieldDs2 == '-')
+ $date2 += 86400 * $delta;
+ else
+ $date2 -= 86400 * $delta;
+ }
+ $date2 = date("YmdHis", $date2);
}
- private function calcSQL($sxTaskSettings)
+
+ $sqlset = $params = $tmp_params = array();
+ for($i = 0; $i <= 2; $i++)
{
- $ret = array();
-
- $this->sxTaskSettings = $sxTaskSettings;
-
- $date1 = $date2 = NULL;
- $field1 = $field2 = '';
-
- // test : DATE 1
- if (($field1 = trim($this->sxTaskSettings->field1)) != '') {
- $date1 = time();
- if (($delta = (int) ($this->sxTaskSettings->fieldDv1)) > 0) {
- if ($this->sxTaskSettings->fieldDs1 == '-')
- $date1 += 86400 * $delta;
- else
- $date1 -= 86400 * $delta;
- }
- $date1 = date("YmdHis", $date1);
+ $sqlwhere[$i] = '';
+ $sqlset[$i] = '';
+ $x = 'status' . $i;
+ @list($tostat, $statval) = explode('_', (string) ($this->sxTaskSettings->{$x}));
+ if($tostat >= 4 && $tostat <= 63)
+ {
+ if($statval == '0')
+ {
+ $sqlset[$i] = 'status=status & ~(1<<' . $tostat . ')';
+ $sqlwhere[$i] .= '(status & (1<<' . $tostat . ') = 0)';
}
- // test : DATE 2
- if (($field2 = trim($this->sxTaskSettings->field2)) != '') {
- $date2 = time();
- if (($delta = (int) ($this->sxTaskSettings->fieldDv2)) > 0) {
- if ($this->sxTaskSettings->fieldDs2 == '-')
- $date2 += 86400 * $delta;
- else
- $date2 -= 86400 * $delta;
- }
- $date2 = date("YmdHis", $date2);
+ elseif($statval == '1')
+ {
+ $sqlset[$i] = 'status=status|(1<<' . $tostat . ')';
+ $sqlwhere[$i] .= '(status & (1<<' . $tostat . ') != 0)';
}
+ }
+ $x = 'coll' . $i;
+ if(($tocoll = (string) ($this->sxTaskSettings->{$x})) != '')
+ {
+ $sqlset[$i] .= ( $sqlset[$i] ? ', ' : '') . ('coll_id = :coll_id_set' . $i);
+ $sqlwhere[$i] .= ( $sqlwhere[$i] ? ' AND ' : '') . '(coll_id = :coll_id_where' . $i . ')';
+ $tmp_params[':coll_id_set' . $i] = $tocoll;
+ $tmp_params[':coll_id_where' . $i] = $tocoll;
+ }
+ }
+ if($date1 && $sqlset[0])
+ {
+ $params = array();
+ $params[':name1'] = $field1;
+ $params[':date1'] = $date1;
+ $params[':coll_id_set0'] = $tmp_params[':coll_id_set0'];
- $sqlset = $params = $tmp_params = array();
- for ($i = 0; $i <= 2; $i ++ ) {
- $sqlwhere[$i] = '';
- $sqlset[$i] = '';
- $x = 'status' . $i;
- @list($tostat, $statval) = explode('_', (string) ($this->sxTaskSettings->{$x}));
- if ($tostat >= 4 && $tostat <= 63) {
- if ($statval == '0') {
- $sqlset[$i] = 'status=status & ~(1<<' . $tostat . ')';
- $sqlwhere[$i] .= '(status & (1<<' . $tostat . ') = 0)';
- } elseif ($statval == '1') {
- $sqlset[$i] = 'status=status|(1<<' . $tostat . ')';
- $sqlwhere[$i] .= '(status & (1<<' . $tostat . ') != 0)';
- }
- }
- $x = 'coll' . $i;
- if (($tocoll = (string) ($this->sxTaskSettings->{$x})) != '') {
- $sqlset[$i] .= ( $sqlset[$i] ? ', ' : '') . ('coll_id = :coll_id_set' . $i);
- $sqlwhere[$i] .= ( $sqlwhere[$i] ? ' AND ' : '') . '(coll_id = :coll_id_where' . $i . ')';
- $tmp_params[':coll_id_set' . $i] = $tocoll;
- $tmp_params[':coll_id_where' . $i] = $tocoll;
- }
+ $w = 'p1.name = :name1 AND :date1 <= p1.value';
+ if($sqlwhere[1] && $sqlwhere[2])
+ {
+ $w .= ' AND ((' . $sqlwhere[1] . ') OR (' . $sqlwhere[2] . '))';
+ $params[':coll_id_where1'] = $tmp_params[':coll_id_where1'];
+ $params[':coll_id_where2'] = $tmp_params[':coll_id_where2'];
+ }
+ else
+ {
+ if($sqlwhere[1])
+ {
+ $w .= ' AND ' . $sqlwhere[1];
+ $params[':coll_id_where1'] = $tmp_params[':coll_id_where1'];
}
+ elseif($sqlwhere[2])
+ {
+ $w .= ' AND ' . $sqlwhere[2];
+ $params[':coll_id_where2'] = $tmp_params[':coll_id_where2'];
+ }
+ }
- if ($date1 && $sqlset[0]) {
- $params = array();
- $params[':name1'] = $field1;
- $params[':date1'] = $date1;
- $params[':coll_id_set0'] = $tmp_params[':coll_id_set0'];
-
- $w = 'p1.name = :name1 AND :date1 <= p1.value';
- if ($sqlwhere[1] && $sqlwhere[2]) {
- $w .= ' AND ((' . $sqlwhere[1] . ') OR (' . $sqlwhere[2] . '))';
- $params[':coll_id_where1'] = $tmp_params[':coll_id_where1'];
- $params[':coll_id_where2'] = $tmp_params[':coll_id_where2'];
- } else {
- if ($sqlwhere[1]) {
- $w .= ' AND ' . $sqlwhere[1];
- $params[':coll_id_where1'] = $tmp_params[':coll_id_where1'];
- } elseif ($sqlwhere[2]) {
- $w .= ' AND ' . $sqlwhere[2];
- $params[':coll_id_where2'] = $tmp_params[':coll_id_where2'];
- }
- }
-
- $sql = "UPDATE prop AS p1 INNER JOIN record USING(record_id)
+ $sql = "UPDATE prop AS p1 INNER JOIN record USING(record_id)
SET " . $sqlset[0] .
- " WHERE " . $w;
+ " WHERE " . $w;
- $ret[] = array('sql' => $sql, 'params' => $params);
+ $ret[] = array('sql'=>$sql, 'params'=>$params);
+ }
+
+
+ if($date1 && $date2)
+ {
+ $params = array();
+ $params[':name1'] = $field1;
+ $params[':name2'] = $field2;
+ $params[':date1'] = $date1;
+ $params[':date2'] = $date2;
+ $params[':coll_id_set1'] = $tmp_params[':coll_id_set1'];
+
+ $w = 'p1.name = :name1 AND p2.name = :name2 AND :date1 > p1.value AND :date2 <= p2.value';
+ if($sqlwhere[0] && $sqlwhere[2])
+ {
+ $w .= ' AND ((' . $sqlwhere[0] . ') OR (' . $sqlwhere[2] . '))';
+ $params[':coll_id_where0'] = $tmp_params[':coll_id_where0'];
+ $params[':coll_id_where2'] = $tmp_params[':coll_id_where2'];
+ }
+ else
+ {
+ if($sqlwhere[0])
+ {
+ $w .= ' AND ' . $sqlwhere[0];
+ $params[':coll_id_where0'] = $tmp_params[':coll_id_where0'];
}
+ elseif($sqlwhere[2])
+ {
+ $w .= ' AND ' . $sqlwhere[2];
+ $params[':coll_id_where2'] = $tmp_params[':coll_id_where2'];
+ }
+ }
-
- if ($date1 && $date2) {
- $params = array();
- $params[':name1'] = $field1;
- $params[':name2'] = $field2;
- $params[':date1'] = $date1;
- $params[':date2'] = $date2;
- $params[':coll_id_set1'] = $tmp_params[':coll_id_set1'];
-
- $w = 'p1.name = :name1 AND p2.name = :name2 AND :date1 > p1.value AND :date2 <= p2.value';
- if ($sqlwhere[0] && $sqlwhere[2]) {
- $w .= ' AND ((' . $sqlwhere[0] . ') OR (' . $sqlwhere[2] . '))';
- $params[':coll_id_where0'] = $tmp_params[':coll_id_where0'];
- $params[':coll_id_where2'] = $tmp_params[':coll_id_where2'];
- } else {
- if ($sqlwhere[0]) {
- $w .= ' AND ' . $sqlwhere[0];
- $params[':coll_id_where0'] = $tmp_params[':coll_id_where0'];
- } elseif ($sqlwhere[2]) {
- $w .= ' AND ' . $sqlwhere[2];
- $params[':coll_id_where2'] = $tmp_params[':coll_id_where2'];
- }
- }
-
- $sql = "UPDATE (prop AS p1 INNER JOIN prop AS p2 USING(record_id))
+ $sql = "UPDATE (prop AS p1 INNER JOIN prop AS p2 USING(record_id))
INNER JOIN record USING(record_id)
SET " . $sqlset[1] .
- " WHERE " . $w;
+ " WHERE " . $w;
- $ret[] = array('sql' => $sql, 'params' => $params);
+ $ret[] = array('sql'=>$sql, 'params'=>$params);
+ }
+
+
+ if($date2 && $sqlset[2])
+ {
+ $params = array();
+ $params[':name2'] = $field2;
+ $params[':date2'] = $date2;
+ $params[':coll_id_set2'] = $tmp_params[':coll_id_set2'];
+
+ $w = 'p2.name = :name2 AND :date2 > p2.value';
+ if($sqlwhere[0] && $sqlwhere[1])
+ {
+ $w .= ' AND ((' . $sqlwhere[0] . ') OR (' . $sqlwhere[1] . '))';
+ $params[':coll_id_where0'] = $tmp_params[':coll_id_where0'];
+ $params[':coll_id_where1'] = $tmp_params[':coll_id_where1'];
+ }
+ else
+ {
+ if($sqlwhere[0])
+ {
+ $w .= ' AND ' . $sqlwhere[0];
+ $params[':coll_id_where0'] = $tmp_params[':coll_id_where0'];
}
+ elseif($sqlwhere[1])
+ {
+ $w .= ' AND ' . $sqlwhere[1];
+ $params[':coll_id_where1'] = $tmp_params[':coll_id_where1'];
+ }
+ }
+
+ $sql = "UPDATE prop AS p2 INNER JOIN record USING(record_id)
+ SET " . $sqlset[2] .
+ " WHERE " . $w;
+
+ $ret[] = array('sql'=>$sql, 'params'=>$params);
+ }
+
+ return($ret);
+ }
- if ($date2 && $sqlset[2]) {
- $params = array();
- $params[':name2'] = $field2;
- $params[':date2'] = $date2;
- $params[':coll_id_set2'] = $tmp_params[':coll_id_set2'];
- $w = 'p2.name = :name2 AND :date2 > p2.value';
- if ($sqlwhere[0] && $sqlwhere[1]) {
- $w .= ' AND ((' . $sqlwhere[0] . ') OR (' . $sqlwhere[1] . '))';
- $params[':coll_id_where0'] = $tmp_params[':coll_id_where0'];
- $params[':coll_id_where1'] = $tmp_params[':coll_id_where1'];
- } else {
- if ($sqlwhere[0]) {
- $w .= ' AND ' . $sqlwhere[0];
- $params[':coll_id_where0'] = $tmp_params[':coll_id_where0'];
- } elseif ($sqlwhere[1]) {
- $w .= ' AND ' . $sqlwhere[1];
- $params[':coll_id_where1'] = $tmp_params[':coll_id_where1'];
- }
+ public function facility()
+ {
+ $ret = NULL;
+
+ $request = http_request::getInstance();
+ $parm2 = $request->get_parms(
+ 'ACT', 'bid'
+ );
+
+ phrasea::headers(200, true, 'application/json', 'UTF-8', false);
+ $ret = NULL;
+ switch($parm2['ACT'])
+ {
+ case 'CALCSQL':
+ $xml = $this->graphic2xml('');
+ $sxml = simplexml_load_string($xml);
+ $ret = $this->calcSQL($sxml);
+ break;
+ case 'GETBASE':
+ $ret = array('date_fields' => array(), 'status_bits' => array(), 'collections' => array());
+
+ if($parm2['bid'] != '')
+ {
+ $sbas_id = (int) $parm2['bid'];
+ try
+ {
+ $databox = databox::get_instance($sbas_id);
+ $meta_struct = $databox->get_meta_structure();
+
+ foreach($meta_struct as $meta)
+ {
+ if(mb_strtolower($meta->get_type()) == 'date')
+ $ret['date_fields'][] = $meta->get_name();
}
- $sql = "UPDATE prop AS p2 INNER JOIN record USING(record_id)
- SET " . $sqlset[2] .
- " WHERE " . $w;
+ $status = $databox->get_statusbits();
+ foreach($status as $n => $stat)
+ {
+ $labelon = $stat['labelon'] ? $stat['labelon'] : ($n . '-ON');
+ $labeloff = $stat['labeloff'] ? $stat['labeloff'] : ($n . '-OFF');
+ $ret['status_bits'][] = array('n' => $n, 'value' => 0, 'label' => $labeloff);
+ $ret['status_bits'][] = array('n' => $n, 'value' => 1, 'label' => $labelon);
+ }
- $ret[] = array('sql' => $sql, 'params' => $params);
+ foreach($databox->get_collections() as $collection)
+ $ret['collections'][] = array('id' => $collection->get_coll_id(), 'name' => $collection->get_name());
+ }
+ catch(Exception $e)
+ {
+
+ }
}
-
- return($ret);
- }
-
- public function facility()
- {
- $ret = NULL;
-
- $request = http_request::getInstance();
- $parm2 = $request->get_parms(
- 'ACT', 'bid'
- );
-
- phrasea::headers(200, true, 'application/json', 'UTF-8', false);
- $ret = NULL;
- switch ($parm2['ACT']) {
- case 'CALCSQL':
- $xml = $this->graphic2xml('');
- $sxml = simplexml_load_string($xml);
- $ret = $this->calcSQL($sxml);
- break;
- case 'GETBASE':
- $ret = array('date_fields' => array(), 'status_bits' => array(), 'collections' => array());
-
- if ($parm2['bid'] != '') {
- $sbas_id = (int) $parm2['bid'];
- try {
- $databox = databox::get_instance($sbas_id);
- $meta_struct = $databox->get_meta_structure();
-
- foreach ($meta_struct as $meta) {
- if (mb_strtolower($meta->get_type()) == 'date')
- $ret['date_fields'][] = $meta->get_name();
- }
-
- $status = $databox->get_statusbits();
- foreach ($status as $n => $stat) {
- $labelon = $stat['labelon'] ? $stat['labelon'] : ($n . '-ON');
- $labeloff = $stat['labeloff'] ? $stat['labeloff'] : ($n . '-OFF');
- $ret['status_bits'][] = array('n' => $n, 'value' => 0, 'label' => $labeloff);
- $ret['status_bits'][] = array('n' => $n, 'value' => 1, 'label' => $labelon);
- }
-
- foreach ($databox->get_collections() as $collection)
- $ret['collections'][] = array('id' => $collection->get_coll_id(), 'name' => $collection->get_name());
- } catch (Exception $e) {
-
- }
- }
- break;
- }
- print(json_encode($ret));
+ break;
}
+ print(json_encode($ret));
+ }
}
+
?>