private function modificarExtensionUsuario($domain, $oldExten, $extension, $password, $name, $username, &$arrBackup) { $continuar = true; $pDevice = new paloDevice($domain, "sip", $this->_DB); $error = ""; //1.- Tomar un backup de las entradas en la base astDB para dicha extension //2.- Eliminar la extension anterior //3.- Crear la nueva extension //borramos la extension anterior $arrBackup = $pDevice->backupAstDBEXT($oldExten); //borramos la extension anterior if (!$pDevice->deleteExtension($oldExten)) { $this->errMsg = _tr("Old extension can't be deleted") . $pDevice->errMsg; return false; } //creamos una extension nueva $arrProp = $this->setParameterUserExtension($domain, "sip", $extension, $password, $name, $username); if ($arrProp == false) { $error = $this->errMsg; $continuar = false; } else { if ($pDevice->createNewDevice($arrProp, "sip") == false) { //si no se pude crear la extension anterior se restaura los valores anteriores en la base astDB $pDevice->restoreBackupAstDBEXT($arrBackup); $error = $pDevice->errMsg; $continuar = false; } } $this->errMsg = $error; return $continuar; }
function saveNewExten($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf, $credentials) { $pExten = new paloSantoExtensions($pDB); $error = ""; $continuar = true; $exito = false; $domain = getParameter('organization'); //este parametro solo es selecionable cuando es el superadmin quien crea la extension if ($credentials['userlevel'] != 'superadmin') { $domain = $credentials['domain']; } $arrForm = createFieldForm(); $oForm = new paloForm($smarty, $arrForm); 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 viewFormExten($smarty, $module_name, $local_templates_dir, $pDB, $arrConf, $credentials); } else { $secret = getParameter("secret"); if (!isStrongPassword($secret)) { $error .= _tr("Secret can not be empty, must be at least 10 characters, contain digits, uppers and little case letters"); $continuar = false; } $type = getParameter("technology"); if (!isset($type) || !($type == "sip" || $type == "iax2")) { $error .= _tr("You must select a technology"); $continuar = false; } //no puede contener caracteres esoeciales ni salto de lineas $exten = getParameter("exten"); $arrProp["fullname"] = getParameter("clid_name"); if ($arrProp["fullname"] != '') { if (!preg_match("/^[[:alnum:]_[:space:]-]+\$/", $arrProp["fullname"])) { $error .= _tr("CID Name is invalid"); $continuar = false; } } else { $arrProp["fullname"] = $exten; } $arrProp["clid_number"] = getParameter('clid_number'); if ($arrProp["clid_number"] != '') { if (!preg_match("/^[[:alnum:]_[:space:]-]+\$/", $arrProp["clid_number"])) { $error .= _tr("CID Number is invalid"); $continuar = false; } } else { $arrProp["clid_number"] = $exten; } if ($continuar) { //seteamos un arreglo con los parametros configurados $arrProp["name"] = getParameter("exten"); //nombre del device al que se le agrega como prefijo orgcode_ $arrProp["exten"] = getParameter("exten"); $arrProp['secret'] = getParameter("secret"); $arrProp['rt'] = getParameter("ring_timer"); $arrProp['record_in'] = getParameter("record_in"); $arrProp['record_out'] = getParameter("record_out"); $arrProp['language'] = getParameter("language"); $arrProp['out_clid'] = getParameter("out_clid"); $arrProp['callwaiting'] = getParameter("call_waiting"); $arrProp['screen'] = getParameter("screen"); $arrProp['dictate'] = getParameter("dictate"); $arrProp['dictformat'] = getParameter("dictformat"); $arrProp['dictemail'] = getParameter("dictemail"); //obtenemos los datos para la creacion de voicemail if (getParameter("create_vm") == "yes") { $vmpassword = getParameter("vmpassword"); if (!preg_match('/^[[:digit:]]+$/', "{$vmpassword}")) { $error = _tr("Voicemail password cannot be empty and must only contain digits"); $continuar = false; } else { $arrProp["create_vm"] = "yes"; $arrProp["vmpassword"] = $vmpassword; $arrProp["vmemail"] = getParameter("vmemail"); $arrProp["vmattach"] = getParameter("vmattach"); $arrProp["vmsaycid"] = getParameter("vmsaycid"); $arrProp["vmdelete"] = getParameter("vmdelete"); $arrProp["vmenvelope"] = getParameter("vmenvelope"); $arrProp["vmcontext"] = getParameter("vmcontext"); $arrProp["vmoptions"] = getParameter("vmoptions"); $arrProp["vmemailsubject"] = getParameter("vmemailsubject"); $arrProp["vmemailbody"] = getParameter("vmemailbody"); //vmx_locator settings $arrProp["vmx_locator"] = getParameter("vmx_locator"); $arrProp["vmx_use"] = getParameter("vmx_use"); $arrProp["vmx_extension_0"] = getParameter("vmx_extension_0"); $arrProp["vmx_extension_1"] = getParameter("vmx_extension_1"); $arrProp["vmx_extension_2"] = getParameter("vmx_extension_2"); $arrProp["vmx_operator"] = getParameter("vmx_operator"); } } else { $arrProp["create_vm"] = "no"; } } if ($continuar) { $pDevice = new paloDevice($domain, $type, $pDB); $pDB->beginTransaction(); $exito = $pDevice->createNewDevice($arrProp, $type); if ($exito) { $pDB->commit(); } else { $pDB->rollBack(); } $error .= $pDevice->errMsg; } } if ($exito) { $smarty->assign("mb_title", _tr("MESSAGE")); $smarty->assign("mb_message", _tr("Extension has been created successfully")); //mostramos el mensaje para crear los archivos de ocnfiguracion $pAstConf = new paloSantoASteriskConfig($pDB); $pAstConf->setReloadDialplan($domain, true); $content = reportExten($smarty, $module_name, $local_templates_dir, $pDB, $arrConf, $credentials); } else { $smarty->assign("mb_title", _tr("ERROR")); $smarty->assign("mb_message", $error); $content = viewFormExten($smarty, $module_name, $local_templates_dir, $pDB, $arrConf, $credentials); } return $content; }