function voicemail_configprocess() { //create vars from the request extract($_REQUEST); $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : null; $extdisplay = isset($_REQUEST['extdisplay']) ? $_REQUEST['extdisplay'] : null; //if submitting form, update database switch ($action) { case "add": if (!isset($GLOBALS['abort']) || $GLOBALS['abort'] !== true) { $usage_arr = framework_check_extension_usage($_REQUEST['extension']); if (!empty($usage_arr)) { $GLOBALS['abort'] = true; } else { voicemail_mailbox_add($extdisplay, $_REQUEST); needreload(); } } break; case "del": // call remove before del, it needs to know context info // voicemail_mailbox_remove($extdisplay); voicemail_mailbox_del($extdisplay); needreload(); break; case "edit": if (!isset($GLOBALS['abort']) || $GLOBALS['abort'] !== true) { voicemail_mailbox_del($extdisplay); if ($vm != 'disabled') { voicemail_mailbox_add($extdisplay, $_REQUEST); } needreload(); } break; } }
$any_devices = core_devices_get($ext); if (count($any_devices) > 0 || !core_devices_add($ext, $tech, '', 'fixed', $ext, $displayname, $emergencycid)) { var_dump($any_devices); fatal("Attempt to add device failed, aborting"); exit(1); } } if (in_array('remext', $actions)) { $actions_taken = true; if (core_users_get($ext) != null) { debug("removing user {$ext}"); core_users_del($ext); core_devices_del($ext); } else { debug("not removing user {$ext}"); } if (voicemail_mailbox_get($ext) != null) { debug("removing vm {$ext}"); voicemail_mailbox_del($ext); } else { debug("not removing vm {$ext}"); } } if ($actions_taken) { debug("Request completed successfully"); exit(0); } else { warning("No actions were performed"); exit(10); } exit;
function voicemail_update_settings($action, $context = "", $extension = "", $args = null) { global $astman; global $tz_settings; global $gen_settings; /* Ensure we get the most up-to-date voicemail.conf data. */ if ($action != 'dialplan') { $vmconf = voicemail_getVoicemail(); } else { $vmconf = null; } if ($vmconf !== null) { switch ($action) { case "tz": /* First update all zonemessages opts that are already in vmconf */ $vmconf["zonemessages"] = is_array($vmconf["zonemessages"]) ? $vmconf["zonemessages"] : array(); foreach ($vmconf["zonemessages"] as $key => $val) { $id = "tz__{$key}"; $vmconf["zonemessages"][$key] = isset($args[$id]) ? $args[$id] : $vmconf["zonemessages"][$key]; /* Bad to have empty fields in vmconf. */ /* And remove deleted fields, too. */ if (empty($vmconf["zonemessages"][$key]) || $args["tzdel__{$key}"] == "true") { unset($vmconf["zonemessages"][$key]); } } /* Add new field, if one was specified */ if (!empty($args["tznew_name"]) && !empty($args["tznew_def"])) { $vmconf["zonemessages"][$args["tznew_name"]] = $args["tznew_def"]; } unset($args[$id]); /* Next record any new zonemessages opts that were on the page but not already in vmconf. */ if (is_array($tz_settings)) { foreach ($tz_settings as $key) { $id = "tz__{$key}"; if (isset($args[$id]) && !empty($args[$id])) { $vmconf["zonemessages"][$key] = $args[$id]; } } } break; case "settings": if (empty($extension) && $action == "settings") { /* First update all general opts that are already in vmconf */ $vmconf["general"] = is_array($vmconf["general"]) ? $vmconf["general"] : array(); foreach ($vmconf["general"] as $key => $val) { $id = "gen__{$key}"; $vmconf["general"][$key] = isset($args[$id]) ? $args[$id] : $vmconf["general"][$key]; //The only reason to use \r is if you're writing to a character terminal //(or more likely a "console window" emulating it) and want the next //line you write to overwrite the last one you just wrote //(sometimes used for goofy "ascii animation" effects of e.g. progress bars) //-- this is getting pretty obsolete in a world of GUIs, though;-). //http://stackoverflow.com/questions/1761051/difference-between-n-and-r $vmconf["general"][$key] = str_replace(array("\r", "\n", "\t"), array('', '\\n', '\\t'), $vmconf["general"][$key]); /* Bad to have empty fields in vmconf. */ /* also make sure no boolean undefined fields left in there */ if (trim($vmconf["general"][$key]) == "" || $vmconf["general"][$key] == 'undefined' && $gen_settings[$key]['type'] == 'flag') { unset($vmconf["general"][$key]); } unset($args[$id]); } /* Next record any new general opts that were on the page but not already in vmconf. */ if (is_array($gen_settings)) { foreach ($gen_settings as $key => $descrip) { $id = "gen__{$key}"; if (isset($args[$id]) && !empty($args[$id])) { $vmconf["general"][$key] = $args[$id]; } } } } else { if (!empty($extension)) { global $acct_settings; /* We need this to know the type for each option (text value or flag) */ /* Delete user's old settings. */ voicemail_mailbox_del($extension); /* Prepare values for user's new settings. */ /* Each Voicemail account has a line in voicemail.conf like this: */ /* extension => password,name,email,pager,options */ /* Take care of password, name, email and pager. */ $pwd = isset($args["acct__pwd"]) ? $args["acct__pwd"] : ""; unset($args["acct__pwd"]); if (isset($args["acct__name"]) && $args["acct__name"] != "") { $name = $args["acct__name"]; } else { $this_exten = core_users_get($extension); $name = $this_exten["name"]; } unset($args["acct__name"]); $email = isset($args["acct__email"]) ? $args["acct__email"] : ""; unset($args["acct__email"]); $pager = isset($args["acct__pager"]) ? $args["acct__pager"] : ""; unset($args["acct__pager"]); /* Now handle the options. */ $options = array(); $acct_settings = is_array($acct_settings) ? $acct_settings : array(); foreach ($acct_settings as $key => $descrip) { $id = "acct__{$key}"; if (isset($args[$id]) && !empty($args[$id]) && $args[$id] != "undefined") { $options[$key] = $args[$id]; } } /* Remove call me num from options - that is set in ast db */ unset($options["callmenum"]); /* New account values to vmconf */ $vmconf[$context][$extension] = array("mailbox" => $extension, "pwd" => $pwd, "name" => $name, "email" => $email, "pager" => $pager, "options" => $options); $callmenum = isset($args["acct__callmenum"]) && !empty($args["acct__callmenum"]) ? $args["acct__callmenum"] : $extension; // Save call me num. $cmd = "database put AMPUSER {$extension}/callmenum {$callmenum}"; if ($astman->connected()) { $astman->send_request("Command", array("Command" => $cmd)); } } } break; case "bsettings": if (!empty($extension)) { /* Get user's old settings, since we are only replacing the basic settings. */ $vmbox = voicemail_mailbox_get($extension); /* Delete user's old settings. */ voicemail_mailbox_del($extension); /* Prepare values for user's new BASIC settings. */ /* Each Voicemail account has a line in voicemail.conf like this: */ /* extension => password,name,email,pager,options */ /* Take care of password, name, email and pager. */ $pwd = isset($args["acct__pwd"]) ? $args["acct__pwd"] : ""; unset($args["acct__pwd"]); if (isset($args["acct__name"]) && $args["acct__name"] != "") { $name = $args["acct__name"]; } else { $this_exten = core_users_get($extension); $name = $this_exten["name"]; } unset($args["acct__name"]); $email = isset($args["acct__email"]) ? $args["acct__email"] : ""; unset($args["acct__email"]); $pager = isset($args["acct__pager"]) ? $args["acct__pager"] : ""; unset($args["acct__pager"]); /* THESE ARE COMING FROM THE USER'S OLD SETTINGS. */ $options = $vmbox["options"]; /* An array */ /* Update the four options listed on the "bsettings" page as needed. */ $basic_opts_list = array("attach", "saycid", "envelope", "delete"); foreach ($basic_opts_list as $basic_opt) { $id = "acct__" . $basic_opt; if (isset($args[$id]) && !empty($args[$id]) && $args[$id] != "undefined") { $options[$basic_opt] = $args[$id]; } else { if ($args[$id] == "undefined") { unset($options[$basic_opt]); } } } /* Remove call me num from options - that is set in ast db. Should not be here anyway, since options are coming from the old settings... */ unset($options["callmenum"]); /* New account values to vmconf */ $vmconf[$context][$extension] = array("mailbox" => $extension, "pwd" => $pwd, "name" => $name, "email" => $email, "pager" => $pager, "options" => $options); $callmenum = isset($args["acct__callmenum"]) && !empty($args["acct__callmenum"]) ? $args["acct__callmenum"] : $extension; // Save call me num. $cmd = "database put AMPUSER {$extension}/callmenum {$callmenum}"; if ($astman->connected()) { $astman->send_request("Command", array("Command" => $cmd)); } } break; default: return false; } if (!empty($vmconf)) { $vmconf['general']['charset'] = "UTF-8"; } voicemail_saveVoicemail($vmconf); if ($astman->connected()) { $astman->send_request("Command", array("Command" => "reload app_voicemail.so")); } return true; // Special Case dialplan since no voicemail.conf related configs } else { if ($action == 'dialplan') { // defaults need to be set for checkboxes unless we change them to radio buttons // $cb = array('VM_OPTS', 'VMX_OPTS_LOOP', 'VMX_OPTS_DOVM'); foreach ($cb as $cbs) { if (!isset($args[$cbs])) { $args[$cbs] = ''; } } return voicemail_admin_update($args); } } return false; }
/** * Delete user function, it's run twice because of scemantics with * old freepbx but it's harmless * @param string $extension The extension number * @param bool $editmode If we are in edit mode or not */ public function delUser($extension, $editmode = false) { if (!$editmode) { if (!function_exists('voicemail_mailbox_remove')) { $this->FreePBX->Modules->loadFunctionsInc('voicemail'); } voicemail_mailbox_remove($extension); voicemail_mailbox_del($extension); } }