예제 #1
0
 public function preSave()
 {
     if ($this->getType() == 'action') {
         if ($this->getConfiguration('infoName') == '') {
             throw new Exception('Le nom de la commande info ne peut etre vide');
         }
         $actionInfo = virtualCmd::byEqLogicIdCmdName($this->getEqLogic_id(), $this->getConfiguration('infoName'));
         if (!is_object($actionInfo)) {
             $actionInfo = new virtualCmd();
             $actionInfo->setType('info');
             $actionInfo->setSubType('string');
             $actionInfo->setCache('enable', 0);
         }
         $actionInfo->setEventOnly(0);
         $actionInfo->setConfiguration('virtualAction', 1);
         $actionInfo->setName($this->getConfiguration('infoName'));
         $actionInfo->setEqLogic_id($this->getEqLogic_id());
         $actionInfo->setConfiguration('value', $this->getConfiguration('value'));
         $actionInfo->save();
         $this->setConfiguration('infoId', $actionInfo->getId());
     } else {
         $this->setConfiguration('calcul', cmd::humanReadableToCmd($this->getConfiguration('calcul')));
     }
 }
예제 #2
0
 public function preSave()
 {
     if ($this->getConfiguration('virtualAction') == 1) {
         $actionInfo = virtualCmd::byEqLogicIdCmdName($this->getEqLogic_id(), $this->getName());
         if (is_object($actionInfo)) {
             $this->setId($actionInfo->getId());
         }
     }
     if ($this->getType() == 'action') {
         if ($this->getConfiguration('infoName') == '') {
             throw new Exception(__('Le nom de la commande info ne peut etre vide', __FILE__));
         }
         $cmd = cmd::byId(str_replace('#', '', $this->getConfiguration('infoName')));
         if (is_object($cmd)) {
             $this->setSubType($cmd->getSubType());
             $this->setEventOnly(1);
         } else {
             $actionInfo = virtualCmd::byEqLogicIdCmdName($this->getEqLogic_id(), $this->getConfiguration('infoName'));
             if (!is_object($actionInfo)) {
                 $actionInfo = new virtualCmd();
                 $actionInfo->setType('info');
                 $actionInfo->setSubType('string');
                 $actionInfo->setCache('enable', 0);
             }
             $actionInfo->setEventOnly(1);
             $actionInfo->setConfiguration('virtualAction', 1);
             $actionInfo->setName($this->getConfiguration('infoName'));
             $actionInfo->setEqLogic_id($this->getEqLogic_id());
             $actionInfo->save();
             $this->setConfiguration('infoId', $actionInfo->getId());
         }
     } else {
         $calcul = $this->getConfiguration('calcul');
         if (strpos($this->getConfiguration('calcul'), '#' . $this->getId() . '#') !== false) {
             throw new Exception(__('Vous ne pouvez faire un calcul sur la valeur elle meme (boucle infinie)!!!', __FILE__));
         }
         $this->setConfiguration('calcul', $calcul);
         preg_match_all("/#([0-9]*)#/", $calcul, $matches);
         $value = '';
         foreach ($matches[1] as $cmd_id) {
             if (is_numeric($cmd_id)) {
                 $cmd = self::byId($cmd_id);
                 if (is_object($cmd) && $cmd->getType() == 'info') {
                     $value .= '#' . $cmd_id . '#';
                 }
             }
         }
         if ($value != '') {
             $this->setValue($value);
         }
     }
 }
예제 #3
0
 public function copyFromEqLogic($_eqLogic_id)
 {
     $eqLogic = eqLogic::byId($_eqLogic_id);
     if (!is_object($eqLogic)) {
         throw new Exception(__('Impossible de trouver l\'équipement : ', __FILE__) . $_eqLogic_id);
     }
     if ($eqLogic->getEqType_name() == 'virtual') {
         throw new Exception(__('Vous ne pouvez importer la configuration d\'un équipement virtuel', __FILE__));
     }
     foreach ($eqLogic->getCategory() as $key => $value) {
         $this->setCategory($key, $value);
     }
     foreach ($eqLogic->getCmd() as $cmd_def) {
         $cmd = new virtualCmd();
         $cmd->setName($cmd_def->getName());
         $cmd->setEqLogic_id($this->getId());
         $cmd->setIsVisible($cmd_def->getIsVisible());
         $cmd->setType($cmd_def->getType());
         $cmd->setUnite($cmd_def->getUnite());
         $cmd->setOrder($cmd_def->getOrder());
         $cmd->setDisplay('icon', $cmd_def->getDisplay('icon'));
         $cmd->setDisplay('invertBinary', $cmd_def->getDisplay('invertBinary'));
         foreach ($cmd_def->getTemplate() as $key => $value) {
             $cmd->setTemplate($key, $value);
         }
         $cmd->setSubType($cmd_def->getSubType());
         if ($cmd->getType() == 'info') {
             $cmd->setConfiguration('calcul', '#' . $cmd_def->getId() . '#');
             $cmd->setValue($cmd_def->getId());
             $cmd->setEventOnly(1);
         } else {
             $cmd->setValue($cmd_def->getValue());
             $cmd->setConfiguration('infoName', '#' . $cmd_def->getId() . '#');
         }
         $cmd->save();
     }
     $this->save();
 }