function reloadAasterisk($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf, $credentials) { $showMsg = false; $continue = false; /*if($arrCredentiasls['userlevel']=="other"){ $smarty->assign("mb_title", _tr("ERROR")); $smarty->assign("mb_message",_tr("You are not authorized to perform this action")); }*/ $idOrganization = $credentials['id_organization']; if ($credentials['userlevel'] == "superadmin") { $idOrganization = getParameter("organization_id"); } if ($idOrganization == 1) { return reportTG($smarty, $module_name, $local_templates_dir, $pDB, $arrConf, $credentials); } $query = "select domain from organization where id=?"; $result = $pDB->getFirstRowQuery($query, false, array($idOrganization)); if ($result === false) { $smarty->assign("mb_title", _tr("ERROR")); $smarty->assign("mb_message", _tr("Asterisk can't be reloaded. ") . _tr($pDB->errMsg)); $showMsg = true; } elseif (count($result) == 0) { $smarty->assign("mb_title", _tr("ERROR")); $smarty->assign("mb_message", _tr("Asterisk can't be reloaded. ") . _tr("Invalid Organization. ")); $showMsg = true; } else { $domain = $result[0]; $continue = true; } if ($continue) { $pAstConf = new paloSantoASteriskConfig($pDB); if ($pAstConf->generateDialplan($domain) === false) { $pAstConf->setReloadDialplan($domain, true); $smarty->assign("mb_title", _tr("ERROR")); $smarty->assign("mb_message", _tr("Asterisk can't be reloaded. ") . $pAstConf->errMsg); $showMsg = true; } else { $pAstConf->setReloadDialplan($domain); $smarty->assign("mb_title", _tr("MESSAGE")); $smarty->assign("mb_message", _tr("Asterisk was reloaded correctly. ")); } } return reportTG($smarty, $module_name, $local_templates_dir, $pDB, $arrConf, $credentials); }
private function deleteOrganizationDB($id, &$idcode) { $dGroup = true; $pACL = new paloACL($this->_DB); $error = ""; if (!preg_match("/^[0-9]+\$/", $id)) { $this->errMsg = _tr("Inavlid Organization"); return false; } elseif ($id == 1) { //la organization con id 1 corresponde a la organizacion que viene por default en asterisk //esta no puede ser borrada $this->errMsg = _tr("Inavlid Organization"); return false; } $numUsers = $this->getNumUserByOrganization($id); $arrOrgz = $this->getOrganizationById($id); if (is_array($arrOrgz) && count($arrOrgz) > 0) { $name = $arrOrgz['name']; $domain = $arrOrgz['domain']; $code = $arrOrgz['code']; $idcode = $arrOrgz['idcode']; $error = _tr("Organization domain: ") . "{$domain} Err:"; if ($numUsers === false) { //ahi un error en la conexion $this->errMsg = $error . "ct" . $this->_DB->errMsg; return false; } else { if ($arrOrgz['state'] != "terminate") { $this->errMsg = $error . _tr("Organization state != 'Terminate'"); return false; } $this->_DB->beginTransaction(); //registramos en el servidor que la organizacion ha sido borrada if (!$this->orgHistoryRegister("delete", $arrOrgz['idcode'])) { $this->errMsg = $error . $this->errMsg; $this->_DB->rollBack(); return false; } //registramos en el servidor que la organizacion ha sido borrada if (!$this->registerEvent("delete", $arrOrgz['idcode'])) { $this->errMsg = $error . $this->errMsg; $this->_DB->rollBack(); return false; } //borramos los archivos del configuracion de faxes de los usuarios pertenecientes a la organizacion $bExito = $this->deleteFaxsByOrg($id); if (!$bExito) { $this->errMsg = $error . _tr("Faxes couldn't be deleted.") . " " . $this->errMsg; $this->_DB->rollBack(); return false; } //borramos la organizacion de asterisk $pAstConf = new paloSantoASteriskConfig($this->_DB); //TODO: setear backup de astDB de la organizaiona ntes de proseguir para //poder restaurar estos valores en caso de que algo salga mal if (!$pAstConf->deleteOrganizationPBX($domain, $code)) { $this->errMsg .= $error . $pAstConf->errMsg . " " . $this->errMsg; $this->_DB->rollBack(); return false; } // se borra la organización en kamailio if (!$this->_DB->genQuery('DELETE FROM kamailio.domain WHERE domain = ?', array($domain))) { $this->errMsg = $error . $this->_DB->errMsg; $this->_DB->rollBack(); return false; } //borramos la organization //la base esta en mysql y todas las tablas relacionadas a la organizacion //tiene referencia a la tabla organization y tienen un constraint delete cascade $query = "DELETE FROM organization WHERE id = ?"; $result = $this->_DB->genQuery($query, array($id)); if ($result == FALSE) { //no se puede eliminar la organizacion $this->errMsg = $error . $this->_DB->errMsg; $this->_DB->rollBack(); return false; } //borramos los buzones de correo de los usuarios pertencientes a la organizacion //esto se hace al ultimo porque en caso de que algo salga mal no tener que restaurar lso correos $bExito = $this->deleteAccountByDomain($domain); if (!$bExito) { $this->errMsg = _tr("Mailbox couldn't be deleted.") . " " . $this->errMsg; $this->_DB->rollBack(); return false; } else { $this->_DB->commit(); $this->errMsg .= $domain; //regresa el dominio de la organizacion que se elimino return true; } } } else { $this->errMsg = _tr("Organization doesn't exist. Id: ") . $id; return false; } }