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; }
public function deleteContextScriptRelation($vmiinstanceid) { if ($vmiinstanceid) { $scriptids = array(); $vmiscripts = new Default_Model_VMIinstanceContextScripts(); $vmiscripts->filter->vmiinstanceid->numequals($vmiinstanceid); if (count($vmiscripts->items) > 0) { foreach ($vmiscripts->items as $item) { $scriptids[] = $item->contextscriptid; $vmiscripts->remove($item); } } $scriptids = array_unique($scriptids); //check if the referenced scripts have relations //if no relation found remove them from db. foreach ($scriptids as $id) { $vmiscripts = new Default_Model_VMIinstanceContextScripts(); $vmiscripts->filter->contextscriptid->numequals($id); if (count($vmiscripts->items) === 0) { $scripts = new Default_Model_ContextScripts(); $scripts->filter->id->numequals($id); if (count($scripts->items) > 0) { VapplianceStorage::remove($scripts->items[0], $vmiinstanceid); $scripts->remove($scripts->items[0]); } } } } }