private static function addScriptData($data, $vmiinstanceid, $user, $usetransaction = true) { try { if ($usetransaction) { db()->beginTransaction(); } //create context script entry $script = new Default_Model_ContextScript(); //$script->id = -1; $script->name = trim($data["name"]); $script->url = trim($data["url"]); $script->formatid = intval($data["formatid"]); $script->checksum = $data["md5"]; $script->checksumfunc = "md5"; $script->size = $data["size"]; $script->addedbyid = $user->id; $script->save(); $script = VapplianceStorage::store($script, $vmiinstanceid, $user->id); self::relateScriptToVmiInstance($vmiinstanceid, $script, $user, false); if ($usetransaction) { db()->commit(); } } catch (Exception $ex) { if ($usetransaction) { db()->rollback(); return $ex->getMessage(); } else { throw $ex; } } return $script; }
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; }