Exemple #1
0
 private static function removeRelatedScript($id, $script, $userid, $usetransaction = true)
 {
     try {
         $vmiinstanceid = 0;
         if ($usetransaction) {
             db()->beginTransaction();
         }
         $vmis = new Default_Model_VMIinstanceContextScripts();
         $vmis->filter->id->numequals($id);
         if (count($vmis->items) > 0) {
             $vmi = $vmis->items[0];
             if ($vmi->contextscriptid === $script->id) {
                 $vmiinstanceid = $vmi->vmiinstanceid;
                 $vmis->remove($vmi);
             }
         }
         $vmis = new Default_Model_VMIinstanceContextScripts();
         $vmis->filter->contextscriptid->numequals($script->id);
         if (count($vmis->items) === 0) {
             //The script is not longer used. Remove it.
             $scripts = new Default_Model_ContextScripts();
             $scripts->filter->id->numequals($script->id);
             if (count($scripts->items) > 0) {
                 VapplianceStorage::remove($scripts->items[0], $vmiinstanceid, $userid);
                 $scripts->remove($scripts->items[0]);
             }
         }
         if ($usetransaction) {
             db()->commit();
         }
     } catch (Exception $ex) {
         if ($usetransaction) {
             db()->rollback();
             return $ex->getMessage();
         } else {
             throw $ex;
         }
     }
     return true;
 }
Exemple #2
0
 public function syncContextScript($contextscriptxml, $vmiinstance)
 {
     if ($contextscriptxml === null || !$vmiinstance) {
         return true;
     }
     $contextscript = null;
     $url = $contextscriptxml->xpath("./virtualization:url");
     if (count($url) > 0) {
         $url = trim(strval($url[0]));
     } else {
         $url = "";
     }
     $id = trim(strval($contextscriptxml->attributes()->id));
     if ($id === "" || is_numeric($id) && intval($id) <= 0) {
         if ($url !== "") {
             $contextscript = $this->findContextScriptByUrl($url);
         }
         if ($contextscript === null) {
             $contextscript = $this->createContextScript($contextscriptxml);
             if ($contextscript !== false && is_string($contextscript) === false) {
                 VapplianceStorage::store($contextscript, $vmiinstance->id, $contextscript->addedbyid);
             }
         }
     } else {
         if (is_numeric($id) && intval($id) > 0) {
             $contextscript = $this->getContextScriptById($id);
         }
     }
     if (is_string($contextscript)) {
         return $contextscript;
     }
     try {
         //Clear existing relations to context scripts for this vmi instance
         $vmiinstacnescripts = new Default_Model_VMIinstanceContextScripts();
         $vmiinstacnescripts->filter->vmiinstanceid = $vmiinstance->id;
         if (count($vmiinstacnescripts->items) > 0) {
             foreach ($vmiinstacnescripts->items as $item) {
                 $vmiinstacnescripts->remove($item);
             }
         }
         //create new relation to context scripts for this vmi instance
         $user = $this->_parent->getUser();
         $vmiinstancecontextscript = new Default_Model_VMIinstanceContextScript();
         $vmiinstancecontextscript->vmiinstanceid = $vmiinstance->id;
         $vmiinstancecontextscript->contextscriptid = $contextscript->id;
         if ($user) {
             $vmiinstancecontextscript->addedbyid = $user->id;
         }
         $vmiinstancecontextscript->save();
     } catch (Exception $ex) {
         return $ex->getMessage();
     }
     return true;
 }