Esempio n. 1
0
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;
     }
 }