/** * 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; }
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); } }
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; }
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); } }
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()); }