/**
  * Returns fax extension user data
  * It returns also voicemail user data If user have an active voicemail
  */
 function getMyFaxExtension()
 {
     $myFax = array();
     $arrProp = array();
     //1 obtener el fax extension del mismo de la tabla acl_user
     //2 si no tiene  fax extension retornamos false
     //3 obtenemos los datos de la organization
     //4 leer los datos de la tabla fax
     //5 leer los datos de la tabla user_properties (tabla clave valor)
     $faxExten = $this->getFaxExtensionUser();
     if ($faxExten === false) {
         return false;
     }
     $orgInfo = $this->userOrganizationInfo();
     if ($orgInfo === false) {
         return false;
     }
     //$arrProp['id']= $this->idUser;
     $arrProp['exten'] = $faxExten;
     $arrProp['organization_domain'] = $orgInfo['domain'];
     $pMyFax = new paloFax($this->_DB);
     $faxSettings = $pMyFax->getFaxList($arrProp);
     $myFax['FAX_EXTEN'] = $faxExten;
     $myFax['DEVICE'] = $faxSettings[0]['device'];
     $myFax['CID_NAME'] = $faxSettings[0]['clid_name'];
     $myFax['CID_NUMBER'] = $faxSettings[0]['clid_number'];
     $myFax['COUNTRY_CODE'] = $faxSettings[0]['country_code'];
     $myFax['AREA_CODE'] = $faxSettings[0]['area_code'];
     $myFax['FAX_SUBJECT'] = $faxSettings[0]['fax_subject'];
     $myFax['FAX_CONTENT'] = $faxSettings[0]['fax_content'];
     $devID = $faxSettings[0]['dev_id'];
     $myFax['MODEM'] = 'ttyIAX' . $devID;
     $faxStatus = $pMyFax->getFaxStatusByModem($devID);
     $myFax['STATUS'] = $faxStatus["modems"]["ttyIAX" . $devID];
     return $myFax;
 }
 function deleteUserOrganization($idUser)
 {
     $pACL = new paloACL($this->_DB);
     $pEmail = new paloEmail($this->_DB);
     $pFax = new paloFax($this->_DB);
     $Exito = false;
     //1)se comprueba de que el ID de USUARIO se un numero
     //2)se verifica que exista dicho usuario
     //3)se recompila los datos del usuario de las tablas acl_user y user_properties
     //4)se elimina al usuario de la base
     //5)se elimina la extension de uso del usuario y la extension de fax
     //6)se trata de eliminar la cuenta de fax
     //7)se elimina el buzon de correo
     if (!preg_match('/^[[:digit:]]+$/', "{$idUser}")) {
         $this->errMsg = _tr("User ID is not numeric");
         return false;
     } else {
         $arrUser = $pACL->getUsers($idUser);
         if ($arrUser === false || count($arrUser) == 0) {
             $this->errMsg = _tr("User dosen't exist");
             return false;
         }
     }
     $idDomain = $arrUser[0][4];
     $query = "Select domain from organization where id=?";
     $getDomain = $this->_DB->getFirstRowQuery($query, false, array($idDomain));
     if ($getDomain == false) {
         $this->errMsg = $this->_DB->errMsg;
         return false;
     }
     $pDevice = new paloDevice($getDomain[0], "sip", $this->_DB);
     $arrExten = $pDevice->getExtension($arrUser[0][5]);
     $faxList = $pFax->getFaxList($arrUser[0][6], $getDomain[0]);
     $arrFaxExten = $faxList[0];
     $this->_DB->beginTransaction();
     //tomamos un backup de las extensiones que se van a eliminar de la base astDB por si algo sale mal
     //y ahi que restaurar la extension
     $arrExt = $pDevice->backupAstDBEXT($arrUser[0][5]);
     if ($pDevice->deleteExtension($arrUser[0][5])) {
         if ($pFax->deleteFaxByUser($idUser)) {
             if ($pACL->deleteUser($idUser)) {
                 if ($pEmail->deleteAccount($arrUser[0][1])) {
                     $Exito = true;
                     $this->_DB->commit();
                     $pDevice->tecnologia->prunePeer($arrExten["device"], $arrExten["tech"]);
                     $pDevice->tecnologia->prunePeer($arrFaxExten["device"], $arrFaxExten["tech"]);
                     $pFax->restartService();
                 } else {
                     $this->errMsg = _tr("Email Account cannot be deleted") . $pEmail->errMsg;
                     $this->_DB->rollBack();
                     $pDevice->restoreBackupAstDBEXT($arrExt);
                     $pFax->createFaxFileConfig($arrFaxExten['dev_id'], $getDomain[0]);
                 }
             } else {
                 $this->errMsg = $pACL->errMsg;
                 $this->_DB->rollBack();
                 $pDevice->restoreBackupAstDBEXT($arrExt);
                 $pFax->createFaxFileConfig($arrFaxExten['dev_id'], $getDomain[0]);
             }
         } else {
             $this->errMsg = _tr("Fax cannot be deleted") . $pFax->errMsg;
             $this->_DB->rollBack();
             $pDevice->restoreBackupAstDBEXT($arrExt);
         }
     } else {
         $this->errMsg = _tr("User Extension can't be deleted") . $pDevice->errMsg;
         $this->_DB->rollBack();
         $pDevice->restoreBackupAstDBEXT($arrExt);
     }
     return $Exito;
 }
Example #3
0
function sendNewSendFax($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf)
{
    global $arrCredentials;
    $pSendFax = new paloSantoSendFax($pDB);
    $pFaxList = new paloFax($pDB);
    $ruta_archivo = "";
    //obtenemos el fax del usuario
    //para eso necesitamos el numero de extension del usuario
    $faxexten = $pSendFax->getFaxExtensionUser($arrCredentials['idUser']);
    if ($faxexten === false || $faxexten == '') {
        $smarty->assign("mb_title", _tr('ERROR'));
        $smarty->assign("mb_message", "An error has ocurred to retrieved fax info. " . $faxexten->errMsg);
        return viewFormSendFax($smarty, $module_name, $local_templates_dir, $pDB, $arrConf);
    }
    $faxes = $pFaxList->getFaxList(array('organization_domain' => $arrCredentials['domain'], 'exten' => $faxexten));
    if ($faxes == false) {
        $smarty->assign("mb_title", _tr('ERROR'));
        $smarty->assign("mb_message", _tr("An error has ocurred to retrieved fax info"));
        return viewFormSendFax($smarty, $module_name, $local_templates_dir, $pDB, $arrConf);
    }
    $faxDev = "ttyIAX" . $faxes[0]['dev_id'];
    $smarty->assign("FAX_DEV", $faxDev);
    $arrFormSendFax = createFieldForm();
    $oForm = new paloForm($smarty, $arrFormSendFax);
    if (!$oForm->validateForm($_POST)) {
        // Validation basic, not empty and VALIDATION_TYPE
        $smarty->assign("mb_title", _tr("Validation Error"));
        $arrErrores = $oForm->arrErroresValidacion;
        $strErrorMsg = "<b>" . _tr("The following fields contain errors") . ":</b><br/>";
        if (is_array($arrErrores) && count($arrErrores) > 0) {
            foreach ($arrErrores as $k => $v) {
                $strErrorMsg .= "{$k} [{$v['mensaje']}], ";
            }
        }
        $smarty->assign("mb_message", $strErrorMsg);
        return viewFormSendFax($smarty, $module_name, $local_templates_dir, $pDB, $arrConf);
    } else {
        $destine = getParameter("to");
        //$faxDev     = getParameter("from");
        $data_content = getParameter("body");
        /*if($faxDev == "none"){
              $smarty->assign("mb_title", _tr("Validation Error"));
              $smarty->assign("mb_message", _tr("Please, select a valid Fax Device"));
              return viewFormSendFax($smarty, $module_name, $local_templates_dir, $pDB, $arrConf);
          }*/
        if (getParameter("option_fax") == "by_file") {
            if (is_uploaded_file($_FILES['file_record']['tmp_name'])) {
                $ruta_archivo = $_FILES['file_record']['tmp_name'];
            } else {
                $smarty->assign("mb_title", _tr("Validation Error"));
                $smarty->assign("mb_message", _tr("File to upload is empty"));
                return viewFormSendFax($smarty, $module_name, $local_templates_dir, $pDB, $arrConf);
            }
        } else {
            if (!empty($data_content)) {
                /* Las siguientes operaciones son necesarias para lidiar con el
                 * bug Elastix #446. El programa sendfax es incapaz de detectar
                 * un archivo como un archivo de texto si contiene caracteres 
                 * fuera del rango ASCII. */
                $ruta_archivo = $pSendFax->generarArchivoTextoPS($data_content);
                if (is_null($ruta_archivo)) {
                    $smarty->assign(array('mb_title' => _tr('Validation Error'), 'mb_message' => _tr('Failed to convert text')));
                    return viewFormSendFax($smarty, $module_name, $local_templates_dir, $pDB, $arrConf);
                }
            } else {
                $smarty->assign("mb_title", _tr("Validation Error"));
                $smarty->assign("mb_message", _tr("Text to send is empty"));
                return viewFormSendFax($smarty, $module_name, $local_templates_dir, $pDB, $arrConf);
            }
        }
        $jobid = $pSendFax->sendFax($faxDev, $destine, $ruta_archivo);
        if (is_null($jobid)) {
            $smarty->assign("mb_title", _tr('Validation Error'));
            $smarty->assign("mb_message", _tr('Failed to submit job') . ': ' . $pSendFax->errMsg);
        } else {
            $smarty->assign("SEND_FAX_SUCCESS", _tr('Fax has been sent correctly'));
            $smarty->assign("SENDING_FAX", _tr('Sending Fax...'));
            $smarty->assign('JOBID', $jobid);
        }
        if (file_exists($ruta_archivo)) {
            unlink($ruta_archivo);
        }
        return viewFormSendFax($smarty, $module_name, $local_templates_dir, $pDB, $arrConf);
    }
}
Example #4
0
function viewFormUser($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf, $credentials)
{
    $pACL = new paloACL($pDB);
    $pORGZ = new paloSantoOrganization($pDB);
    $arrFill = array();
    $action = getParameter("action");
    $arrOrgz = array(0 => "Select one Organization");
    if ($credentials["userlevel"] == "superadmin") {
        $orgTmp = $pORGZ->getOrganization(array());
    } else {
        $orgTmp = $pORGZ->getOrganization(array("id" => $credentials["id_organization"]));
    }
    if ($orgTmp === false) {
        $smarty->assign("mb_title", _tr("ERROR"));
        $smarty->assign("mb_message", _tr($pORGZ->errMsg));
        return reportUser($smarty, $module_name, $local_templates_dir, $pDB, $arrConf, $credentials);
    } elseif (count($orgTmp) == 0) {
        $smarty->assign("mb_title", _tr("ERROR"));
        $smarty->assign("mb_message", _tr("You need yo have at least one organization created before you can create a user"));
        return reportUser($smarty, $module_name, $local_templates_dir, $pDB, $arrConf, $credentials);
    } else {
        if (($action == "new_user" || $action == "save_new") && count($orgTmp) <= 1) {
            $smarty->assign("mb_title", _tr("ERROR"));
            $smarty->assign("mb_message", _tr("It's necesary you create a new organization so you can create new user"));
            return reportUser($smarty, $module_name, $local_templates_dir, $pDB, $arrConf, $credentials);
        }
        foreach ($orgTmp as $value) {
            $arrOrgz[$value["id"]] = $value["name"];
            $arrDomains[$value["id"]] = $value["domain"];
        }
        $smarty->assign("ORGANIZATION", htmlentities($orgTmp[0]["name"], ENT_COMPAT, 'UTF-8'));
    }
    $idUser = getParameter("id");
    $arrFill = $_POST;
    if ($action == "view" || getParameter("edit") || getParameter("save_edit")) {
        if (!isset($idUser)) {
            $smarty->assign("mb_title", _tr("ERROR"));
            $smarty->assign("mb_message", _tr("Invalid User"));
            return reportUser($smarty, $module_name, $local_templates_dir, $pDB, $arrConf, $credentials);
        } else {
            if ($credentials["userlevel"] == "superadmin") {
                $arrUsers = $pACL->getUsers($idUser);
            } else {
                $arrUsers = $pACL->getUsers($idUser, $credentials["id_organization"], null, null);
            }
        }
        if ($arrUsers === false) {
            $smarty->assign("mb_title", _tr("ERROR"));
            $smarty->assign("mb_message", _tr($pACL->errMsg));
            return reportUser($smarty, $module_name, $local_templates_dir, $pDB, $arrConf, $credentials);
        } else {
            if (count($arrUsers) == 0) {
                $smarty->assign("mb_title", _tr("ERROR"));
                $smarty->assign("mb_message", _tr("User doesn't exist"));
                return reportUser($smarty, $module_name, $local_templates_dir, $pDB, $arrConf, $credentials);
            } else {
                $picture = $pACL->getUserPicture($idUser);
                if ($picture !== false) {
                    $smarty->assign("ShowImg", 1);
                }
                foreach ($arrUsers as $value) {
                    $arrFill["username"] = $value[1];
                    $arrFill["name"] = $value[2];
                    $arrFill["password1"] = "";
                    $arrFill["password2"] = "";
                    $arrFill["organization"] = $value[4];
                    $arrFill["group"] = $value[7];
                    $extu = isset($value[5]) ? $value[5] : _tr("Not assigned yet");
                    $extf = isset($value[6]) ? $value[6] : _tr("Not assigned yet");
                    $arrFill["extension"] = $extu;
                    $arrFill["fax_extension"] = $extf;
                }
                if ($arrFill["organization"] != 1) {
                    $smarty->assign("ORGANIZATION", htmlentities($arrOrgz[$arrFill["organization"]], ENT_COMPAT, 'UTF-8'));
                }
                $smarty->assign("USERNAME", $arrFill["username"]);
                $nGroup = $pACL->getGroupNameByid($arrFill["group"]);
                if ($nGroup == "superadmin") {
                }
                $nGroup = _tr("NONE");
                $smarty->assign("GROUP", $nGroup);
                $_POST["organization"] = $arrFill["organization"];
                //ahora obtenemos las configuraciones de fax dle usuario
                $pFax = new paloFax($pACL->_DB);
                $listFaxs = $pFax->getFaxList(array("exten" => $extf, "organization_domain" => $arrDomains[$arrFill["organization"]]));
                if ($listFaxs != false) {
                    $faxUser = $listFaxs[0];
                    $arrFill["country_code"] = $faxUser["country_code"];
                    $arrFill["area_code"] = $faxUser["area_code"];
                    $arrFill["clid_number"] = $faxUser["clid_number"];
                    $arrFill["clid_name"] = $faxUser["clid_name"];
                }
                //ahora obtenemos la cuenta del email
                $arrFill["email_quota"] = $pACL->getUserProp($idUser, "email_quota");
                if ($idUser == "1") {
                    $arrFill["email_contact"] = $pACL->getUserProp($idUser, "email_contact");
                }
                $smarty->assign("EMAILQOUTA", $arrFill["email_quota"]);
                $smarty->assign("EXTENSION", $extu);
                $smarty->assign("FAX_EXTENSION", $extf);
                if (getParameter("save_edit")) {
                    $arrFill = $_POST;
                }
            }
        }
    }
    if ($credentials["userlevel"] != "superadmin") {
        $idOrgSel = $credentials["id_organization"];
    } else {
        $idOrgSel = getParameter("organization");
    }
    if (!isset($idOrgSel)) {
        $idOrgSel = 0;
    }
    if ($idOrgSel == 0) {
        $arrGrupos = array();
    } else {
        $temp = $pACL->getGroupsPaging(null, null, $idOrgSel);
        if ($temp === false) {
            $smarty->assign("mb_title", _tr("ERROR"));
            $smarty->assign("mb_message", _tr($pACL->errMsg));
            return reportUser($smarty, $module_name, $local_templates_dir, $pDB, $arrConf, $arrCredentiasls);
        }
        foreach ($temp as $value) {
            $arrGrupos[$value[0]] = $value[1];
        }
    }
    if (getParameter("create_user")) {
        $arrFill["country_code"] = $pORGZ->getOrganizationProp($idOrgSel, "country_code");
        $arrFill["area_code"] = $pORGZ->getOrganizationProp($idOrgSel, "area_code");
        $arrFill["email_quota"] = $pORGZ->getOrganizationProp($idOrgSel, "email_quota");
    }
    $arrFormOrgz = createFieldForm($arrGrupos, $arrOrgz);
    $oForm = new paloForm($smarty, $arrFormOrgz);
    $smarty->assign("HEIGHT", "310px");
    $smarty->assign("MARGIN_PIC", 'style="margin-top: 40px;"');
    $smarty->assign("MARGIN_TAB", "");
    if ($action == "view") {
        $smarty->assign("HEIGHT", "220px");
        $smarty->assign("MARGIN_PIC", "");
        $smarty->assign("MARGIN_TAB", "margin-top: 10px;");
        $oForm->setViewMode();
        $arrFill["password1"] = "*****";
        $arrFill["password2"] = "*****";
        $smarty->assign("HEIGHT", "220px");
    } else {
        if (getParameter("edit") || getParameter("save_edit")) {
            $oForm->setEditMode();
        }
    }
    global $arrPermission;
    if (in_array('create_user', $arrPermission)) {
        $smarty->assign("CREATE_USER", true);
    }
    if (in_array('edit_user', $arrPermission)) {
        $smarty->assign("EDIT_USER", true);
    }
    if (in_array('delete_user', $arrPermission)) {
        $smarty->assign("DEL_USER", true);
    }
    $smarty->assign("REQUIRED_FIELD", _tr("Required field"));
    $smarty->assign("CANCEL", _tr("Cancel"));
    $smarty->assign("APPLY_CHANGES", _tr("Apply changes"));
    $smarty->assign("SAVE", _tr("Save"));
    $smarty->assign("EDIT", _tr("Edit"));
    $smarty->assign("DELETE", _tr("Delete"));
    $smarty->assign("CONFIRM_CONTINUE", _tr("Are you sure you wish to continue?"));
    $smarty->assign("icon", "../web/_common/images/user_info.png");
    $smarty->assign("FAX_SETTINGS", _tr("Fax Settings"));
    $smarty->assign("EMAIL_SETTINGS", _tr("Email Settings"));
    $smarty->assign("MODULE_NAME", $module_name);
    $smarty->assign("userLevel", $credentials["userlevel"]);
    $smarty->assign("id_user", $idUser);
    if (isset($arrUsers[0][1])) {
        $smarty->assign("isSuperAdmin", $pACL->isUserSuperAdmin($arrUsers[0][1]));
    } else {
        $smarty->assign("isSuperAdmin", FALSE);
    }
    $htmlForm = $oForm->fetchForm("{$local_templates_dir}/new.tpl", _tr("User"), $arrFill);
    $content = "<form  method='POST' enctype='multipart/form-data' style='margin-bottom:0;' action='?menu={$module_name}'>" . $htmlForm . "</form>";
    return $content;
}
Example #5
0
function sendNewSendFax($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf, $arrLang)
{
    $pSendFax = new paloSantoSendFax($pDB);
    $pFaxList = new paloFax($pDB);
    $ruta_archivo = "";
    $faxes = $pFaxList->getFaxList();
    $arrFaxList = array("none" => '-- ' . $arrLang["Select a Fax Device"] . ' --');
    foreach ($faxes as $values) {
        $arrFaxList["ttyIAX" . $values['dev_id']] = $values['clid_name'] . " / " . $values['extension'];
    }
    $arrFormSendFax = createFieldForm($arrLang, $arrFaxList);
    $oForm = new paloForm($smarty, $arrFormSendFax);
    if (!$oForm->validateForm($_POST)) {
        // Validation basic, not empty and VALIDATION_TYPE
        $smarty->assign("mb_title", $arrLang["Validation Error"]);
        $arrErrores = $oForm->arrErroresValidacion;
        $strErrorMsg = "<b>{$arrLang['The following fields contain errors']}:</b><br/>";
        if (is_array($arrErrores) && count($arrErrores) > 0) {
            foreach ($arrErrores as $k => $v) {
                $strErrorMsg .= "{$k}, ";
            }
        }
        $smarty->assign("mb_message", $strErrorMsg);
        return $content = viewFormSendFax($smarty, $module_name, $local_templates_dir, $pDB, $arrConf, $arrLang);
    } else {
        $destine = getParameter("to");
        $faxexten = getParameter("from");
        $data_content = getParameter("body");
        if ($faxexten == "none") {
            $smarty->assign("mb_title", $arrLang["Validation Error"]);
            $smarty->assign("mb_message", $arrLang["Please, select a valid Fax Device"]);
            return $content = viewFormSendFax($smarty, $module_name, $local_templates_dir, $pDB, $arrConf, $arrLang);
        }
        if (getParameter("option_fax") == "by_file") {
            if (is_uploaded_file($_FILES['file_record']['tmp_name'])) {
                $ruta_archivo = $_FILES['file_record']['tmp_name'];
            } else {
                $smarty->assign("mb_title", $arrLang["Validation Error"]);
                $smarty->assign("mb_message", $arrLang["File to upload is empty"]);
                return $content = viewFormSendFax($smarty, $module_name, $local_templates_dir, $pDB, $arrConf, $arrLang);
            }
        } else {
            if (!empty($data_content)) {
                /* Las siguientes operaciones son necesarias para lidiar con el
                 * bug Elastix #446. El programa sendfax es incapaz de detectar
                 * un archivo como un archivo de texto si contiene caracteres 
                 * fuera del rango ASCII. */
                $ruta_archivo = $pSendFax->generarArchivoTextoPS($data_content);
                if (is_null($ruta_archivo)) {
                    $smarty->assign(array('mb_title' => _tr('Validation Error'), 'mb_message' => _tr('Failed to convert text')));
                    return viewFormSendFax($smarty, $module_name, $local_templates_dir, $pDB, $arrConf, $arrLang);
                }
            } else {
                $smarty->assign("mb_title", $arrLang["Validation Error"]);
                $smarty->assign("mb_message", $arrLang["Text to send is empty"]);
                return $content = viewFormSendFax($smarty, $module_name, $local_templates_dir, $pDB, $arrConf, $arrLang);
            }
        }
        $jobid = $pSendFax->sendFax($faxexten, $destine, $ruta_archivo);
        if (is_null($jobid)) {
            $smarty->assign("mb_title", _tr('Validation Error'));
            $smarty->assign("mb_message", _tr('Failed to submit job') . ': ' . $pSendFax->errMsg);
        } else {
            $smarty->assign("SEND_FAX_SUCCESS", _tr('Fax has been sent correctly'));
            $smarty->assign("SENDING_FAX", _tr('Sending Fax...'));
            $smarty->assign('JOBID', $jobid);
        }
        if (file_exists($ruta_archivo)) {
            unlink($ruta_archivo);
        }
        return $content = viewFormSendFax($smarty, $module_name, $local_templates_dir, $pDB, $arrConf, $arrLang);
    }
}
Example #6
0
function faxListStatus($smarty, $module_name, $local_templates_dir, $arrConf, $arrLang)
{
    $oFax = new paloFax();
    $arrFax = $oFax->getFaxList();
    $status = TRUE;
    $end = count($arrFax);
    $arrFaxStatus = $oFax->getFaxStatus();
    $arrData = array();
    foreach ($arrFax as $fax) {
        $arrData[$fax['extension']] = $arrFaxStatus['modems']['ttyIAX' . $fax['dev_id']] . ' on ttyIAX' . $fax['dev_id'];
    }
    $statusArr = thereChanges($arrData);
    if (empty($statusArr)) {
        $status = FALSE;
    }
    $jsonObject = new PaloSantoJSON();
    if ($status) {
        //este status es true solo cuando el tecnico acepto al customer (al hacer click)
        //sleep(2); //por si acaso se desincroniza en la tabla customer el campo attended y llenarse los datos de id_chat y id_chat_time
        $msgResponse["faxes"] = $statusArr;
        $jsonObject->set_status("CHANGED");
        $jsonObject->set_message($msgResponse);
    } else {
        $jsonObject->set_status("NOCHANGED");
    }
    return array("there_was_change" => $status, "data" => $jsonObject->createJSON());
}