diff --git a/app/extensions/extension_edit.php b/app/extensions/extension_edit.php index e1c75f6abb..e7d15b1696 100644 --- a/app/extensions/extension_edit.php +++ b/app/extensions/extension_edit.php @@ -217,121 +217,222 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { //add or update the database if ($_POST["persistformvar"] != "true") { - if ($action == "add" && permission_exists('extension_add')) { - $user_email = ''; - if ($autogen_users == "true") { - $auto_user = $extension; - for ($i=1; $i<=$range; $i++){ - $user_last_name = $auto_user; - $user_password = generate_password(); - user_add($auto_user, $user_password, $user_email); - $generated_users[$i]['username'] = $auto_user; - $generated_users[$i]['password'] = $user_password; - $auto_user++; + //add the extension to the database + if ($action == "add" && permission_exists('extension_add')) { + $user_email = ''; + if ($autogen_users == "true") { + $auto_user = $extension; + for ($i=1; $i<=$range; $i++) { + $user_last_name = $auto_user; + $user_password = generate_password(); + user_add($auto_user, $user_password, $user_email); + $generated_users[$i]['username'] = $auto_user; + $generated_users[$i]['password'] = $user_password; + $auto_user++; + } + unset($auto_user); } - unset($auto_user); - } - $db->beginTransaction(); - for ($i=1; $i<=$range; $i++) { - if (extension_exists($extension)) { - //extension exists + for ($i=1; $i<=$range; $i++) { + if (extension_exists($extension)) { + //extension exists + } + else { + //extension does not exist add it + $extension_uuid = uuid(); + $password = generate_password(); + $sql = "insert into v_extensions "; + $sql .= "("; + $sql .= "domain_uuid, "; + $sql .= "extension_uuid, "; + $sql .= "extension, "; + $sql .= "number_alias, "; + $sql .= "password, "; + $sql .= "provisioning_list, "; + $sql .= "vm_password, "; + $sql .= "accountcode, "; + $sql .= "effective_caller_id_name, "; + $sql .= "effective_caller_id_number, "; + $sql .= "outbound_caller_id_name, "; + $sql .= "outbound_caller_id_number, "; + $sql .= "emergency_caller_id_number, "; + $sql .= "directory_full_name, "; + $sql .= "directory_visible, "; + $sql .= "directory_exten_visible, "; + $sql .= "limit_max, "; + $sql .= "limit_destination, "; + $sql .= "vm_enabled, "; + $sql .= "vm_mailto, "; + $sql .= "vm_attach_file, "; + $sql .= "vm_keep_local_after_email, "; + $sql .= "user_context, "; + if (permission_exists('extension_toll')) { + $sql .= "toll_allow, "; + } + if (strlen($call_timeout) > 0) { + $sql .= "call_timeout, "; + } + $sql .= "call_group, "; + $sql .= "hold_music, "; + $sql .= "auth_acl, "; + $sql .= "cidr, "; + $sql .= "sip_force_contact, "; + if (strlen($sip_force_expires) > 0) { + $sql .= "sip_force_expires, "; + } + if (strlen($nibble_account) > 0) { + $sql .= "nibble_account, "; + } + if (strlen($mwi_account) > 0) { + $sql .= "mwi_account, "; + } + $sql .= "sip_bypass_media, "; + $sql .= "dial_string, "; + $sql .= "enabled, "; + $sql .= "description "; + $sql .= ")"; + $sql .= "values "; + $sql .= "("; + $sql .= "'$domain_uuid', "; + $sql .= "'$extension_uuid', "; + $sql .= "'$extension', "; + $sql .= "'$number_alias', "; + $sql .= "'$password', "; + $sql .= "'$provisioning_list', "; + $sql .= "'user-choose', "; + $sql .= "'$accountcode', "; + $sql .= "'$effective_caller_id_name', "; + $sql .= "'$effective_caller_id_number', "; + $sql .= "'$outbound_caller_id_name', "; + $sql .= "'$outbound_caller_id_number', "; + $sql .= "'$emergency_caller_id_number', "; + $sql .= "'$directory_full_name', "; + $sql .= "'$directory_visible', "; + $sql .= "'$directory_exten_visible', "; + $sql .= "'$limit_max', "; + $sql .= "'$limit_destination', "; + $sql .= "'$vm_enabled', "; + $sql .= "'$vm_mailto', "; + $sql .= "'$vm_attach_file', "; + $sql .= "'$vm_keep_local_after_email', "; + $sql .= "'$user_context', "; + if (permission_exists('extension_toll')) { + $sql .= "'$toll_allow', "; + } + if (strlen($call_timeout) > 0) { + $sql .= "'$call_timeout', "; + } + $sql .= "'$call_group', "; + $sql .= "'$hold_music', "; + $sql .= "'$auth_acl', "; + $sql .= "'$cidr', "; + $sql .= "'$sip_force_contact', "; + if (strlen($sip_force_expires) > 0) { + $sql .= "'$sip_force_expires', "; + } + if (strlen($nibble_account) > 0) { + $sql .= "'$nibble_account', "; + } + if (strlen($mwi_account) > 0) { + if (strpos($mwi_account, '@') === false) { + if (count($_SESSION["domains"]) > 1) { + $mwi_account .= "@".$_SESSION['domain_name']; + } + else { + $mwi_account .= "@\$\${domain}"; + } + } + $sql .= "'$mwi_account', "; + } + $sql .= "'$sip_bypass_media', "; + $sql .= "'$dial_string', "; + $sql .= "'$enabled', "; + $sql .= "'$description' "; + $sql .= ")"; + $db->exec(check_sql($sql)); + unset($sql); + } + //set the voicemail password + if (strlen($vm_password) == 0) { + $vm_password = generate_password(9, 1); + } + //add or update voicemail + require_once "app/extensions/resources/classes/extension.php"; + $ext = new extension; + $ext->db = $db; + $ext->domain_uuid = $domain_uuid; + $ext->extension = $extension; + $ext->number_alias = $number_alias; + $ext->vm_password = $vm_password; + $ext->vm_mailto = $vm_mailto; + $ext->vm_attach_file = $vm_attach_file; + $ext->vm_keep_local_after_email = $vm_keep_local_after_email; + $ext->vm_enabled = $vm_enabled; + $ext->description = $description; + $ext->voicemail(); + unset($ext); + //unset the voicemail password + $vm_password = ""; + //increment the extension number + $extension++; } - else { - //extension does not exist add it - $extension_uuid = uuid(); - $password = generate_password(); - $sql = "insert into v_extensions "; - $sql .= "("; - $sql .= "domain_uuid, "; - $sql .= "extension_uuid, "; - $sql .= "extension, "; - $sql .= "number_alias, "; - $sql .= "password, "; - $sql .= "provisioning_list, "; - $sql .= "vm_password, "; - $sql .= "accountcode, "; - $sql .= "effective_caller_id_name, "; - $sql .= "effective_caller_id_number, "; - $sql .= "outbound_caller_id_name, "; - $sql .= "outbound_caller_id_number, "; - $sql .= "emergency_caller_id_number, "; - $sql .= "directory_full_name, "; - $sql .= "directory_visible, "; - $sql .= "directory_exten_visible, "; - $sql .= "limit_max, "; - $sql .= "limit_destination, "; - $sql .= "vm_enabled, "; - $sql .= "vm_mailto, "; - $sql .= "vm_attach_file, "; - $sql .= "vm_keep_local_after_email, "; - $sql .= "user_context, "; + } //if ($action == "add") + + //update the database + if ($action == "update" && permission_exists('extension_edit')) { + //generate a password + if (strlen($password) == 0) { + $password = generate_password(12,4); + } + //set the voicemail password + if (strlen($vm_password) == 0) { + $vm_password = generate_password(9, 1); + } + //update extensions + $sql = "update v_extensions set "; + $sql .= "extension = '$extension', "; + $sql .= "number_alias = '$number_alias', "; + $sql .= "password = '$password', "; + $sql .= "provisioning_list = '$provisioning_list', "; + $sql .= "vm_password = '$vm_password', "; + $sql .= "accountcode = '$accountcode', "; + $sql .= "effective_caller_id_name = '$effective_caller_id_name', "; + $sql .= "effective_caller_id_number = '$effective_caller_id_number', "; + $sql .= "outbound_caller_id_name = '$outbound_caller_id_name', "; + $sql .= "outbound_caller_id_number = '$outbound_caller_id_number', "; + $sql .= "emergency_caller_id_number = '$emergency_caller_id_number', "; + $sql .= "directory_full_name = '$directory_full_name', "; + $sql .= "directory_visible = '$directory_visible', "; + $sql .= "directory_exten_visible = '$directory_exten_visible', "; + $sql .= "limit_max = '$limit_max', "; + $sql .= "limit_destination = '$limit_destination', "; + $sql .= "vm_enabled = '$vm_enabled', "; + $sql .= "vm_mailto = '$vm_mailto', "; + $sql .= "vm_attach_file = '$vm_attach_file', "; + $sql .= "vm_keep_local_after_email = '$vm_keep_local_after_email', "; + $sql .= "user_context = '$user_context', "; if (permission_exists('extension_toll')) { - $sql .= "toll_allow, "; + $sql .= "toll_allow = '$toll_allow', "; } if (strlen($call_timeout) > 0) { - $sql .= "call_timeout, "; + $sql .= "call_timeout = '$call_timeout', "; } - $sql .= "call_group, "; - $sql .= "hold_music, "; - $sql .= "auth_acl, "; - $sql .= "cidr, "; - $sql .= "sip_force_contact, "; - if (strlen($sip_force_expires) > 0) { - $sql .= "sip_force_expires, "; + $sql .= "call_group = '$call_group', "; + $sql .= "hold_music = '$hold_music', "; + $sql .= "auth_acl = '$auth_acl', "; + $sql .= "cidr = '$cidr', "; + $sql .= "sip_force_contact = '$sip_force_contact', "; + if (strlen($sip_force_expires) == 0) { + $sql .= "sip_force_expires = null, "; } - if (strlen($nibble_account) > 0) { - $sql .= "nibble_account, "; + else { + $sql .= "sip_force_expires = '$sip_force_expires', "; } - if (strlen($mwi_account) > 0) { - $sql .= "mwi_account, "; + if (strlen($nibble_account) == 0) { + $sql .= "nibble_account = null, "; } - $sql .= "sip_bypass_media, "; - $sql .= "dial_string, "; - $sql .= "enabled, "; - $sql .= "description "; - $sql .= ")"; - $sql .= "values "; - $sql .= "("; - $sql .= "'$domain_uuid', "; - $sql .= "'$extension_uuid', "; - $sql .= "'$extension', "; - $sql .= "'$number_alias', "; - $sql .= "'$password', "; - $sql .= "'$provisioning_list', "; - $sql .= "'user-choose', "; - $sql .= "'$accountcode', "; - $sql .= "'$effective_caller_id_name', "; - $sql .= "'$effective_caller_id_number', "; - $sql .= "'$outbound_caller_id_name', "; - $sql .= "'$outbound_caller_id_number', "; - $sql .= "'$emergency_caller_id_number', "; - $sql .= "'$directory_full_name', "; - $sql .= "'$directory_visible', "; - $sql .= "'$directory_exten_visible', "; - $sql .= "'$limit_max', "; - $sql .= "'$limit_destination', "; - $sql .= "'$vm_enabled', "; - $sql .= "'$vm_mailto', "; - $sql .= "'$vm_attach_file', "; - $sql .= "'$vm_keep_local_after_email', "; - $sql .= "'$user_context', "; - if (permission_exists('extension_toll')) { - $sql .= "'$toll_allow', "; - } - if (strlen($call_timeout) > 0) { - $sql .= "'$call_timeout', "; - } - $sql .= "'$call_group', "; - $sql .= "'$hold_music', "; - $sql .= "'$auth_acl', "; - $sql .= "'$cidr', "; - $sql .= "'$sip_force_contact', "; - if (strlen($sip_force_expires) > 0) { - $sql .= "'$sip_force_expires', "; - } - if (strlen($nibble_account) > 0) { - $sql .= "'$nibble_account', "; + else { + $sql .= "nibble_account = '$nibble_account', "; } if (strlen($mwi_account) > 0) { if (strpos($mwi_account, '@') === false) { @@ -342,263 +443,133 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { $mwi_account .= "@\$\${domain}"; } } - $sql .= "'$mwi_account', "; } - $sql .= "'$sip_bypass_media', "; - $sql .= "'$dial_string', "; - $sql .= "'$enabled', "; - $sql .= "'$description' "; - $sql .= ")"; + $sql .= "mwi_account = '$mwi_account', "; + $sql .= "sip_bypass_media = '$sip_bypass_media', "; + $sql .= "dial_string = '$dial_string', "; + $sql .= "enabled = '$enabled', "; + $sql .= "description = '$description' "; + $sql .= "where domain_uuid = '$domain_uuid' "; + $sql .= "and extension_uuid = '$extension_uuid'"; $db->exec(check_sql($sql)); unset($sql); - } - $extension++; - } - $db->commit(); - //synchronize configuration - if (is_readable($_SESSION['switch']['extensions']['dir'])) { - require_once "app/extensions/resources/classes/extension.php"; - $extension = new extension; - $extension->xml(); - } - - //write the provision files - if (strlen($provisioning_list)>0) { - require_once "app/provision/provision_write.php"; - } - - //prepare for alternating the row style - $c = 0; - $row_style["0"] = "row_style0"; - $row_style["1"] = "row_style1"; - - //show the action and redirect the user - require_once "includes/header.php"; - echo "
\n"; - echo "
\n"; - if (count($generated_users) == 0) { - //action add - echo "\n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo "
Message
Add Complete
\n"; - echo "
\n"; - } - else { - // auto-generate user with extension as login name - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - foreach($generated_users as $tmp_user){ - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - } - if ($c==0) { $c=1; } else { $c=0; } - echo "
New User Accounts
UsernamePassword
".$tmp_user['username']."".$tmp_user['password']."
"; - } - echo "
\n"; - require_once "includes/footer.php"; - return; - } //if ($action == "add") - - if ($action == "update" && permission_exists('extension_edit')) { - - if (strlen($password) == 0) { - $password = generate_password(12,4); - } - - $sql = "update v_extensions set "; - $sql .= "extension = '$extension', "; - $sql .= "number_alias = '$number_alias', "; - $sql .= "password = '$password', "; - $sql .= "provisioning_list = '$provisioning_list', "; - if (strlen($vm_password) > 0) { - $sql .= "vm_password = '$vm_password', "; - } - else { - $sql .= "vm_password = '".generate_password(9, 1)."', "; - } - $sql .= "accountcode = '$accountcode', "; - $sql .= "effective_caller_id_name = '$effective_caller_id_name', "; - $sql .= "effective_caller_id_number = '$effective_caller_id_number', "; - $sql .= "outbound_caller_id_name = '$outbound_caller_id_name', "; - $sql .= "outbound_caller_id_number = '$outbound_caller_id_number', "; - $sql .= "emergency_caller_id_number = '$emergency_caller_id_number', "; - $sql .= "directory_full_name = '$directory_full_name', "; - $sql .= "directory_visible = '$directory_visible', "; - $sql .= "directory_exten_visible = '$directory_exten_visible', "; - $sql .= "limit_max = '$limit_max', "; - $sql .= "limit_destination = '$limit_destination', "; - $sql .= "vm_enabled = '$vm_enabled', "; - $sql .= "vm_mailto = '$vm_mailto', "; - $sql .= "vm_attach_file = '$vm_attach_file', "; - $sql .= "vm_keep_local_after_email = '$vm_keep_local_after_email', "; - $sql .= "user_context = '$user_context', "; - if (permission_exists('extension_toll')) { - $sql .= "toll_allow = '$toll_allow', "; - } - if (strlen($call_timeout) > 0) { - $sql .= "call_timeout = '$call_timeout', "; - } - $sql .= "call_group = '$call_group', "; - $sql .= "hold_music = '$hold_music', "; - $sql .= "auth_acl = '$auth_acl', "; - $sql .= "cidr = '$cidr', "; - $sql .= "sip_force_contact = '$sip_force_contact', "; - if (strlen($sip_force_expires) == 0) { - $sql .= "sip_force_expires = null, "; - } - else { - $sql .= "sip_force_expires = '$sip_force_expires', "; - } - if (strlen($nibble_account) == 0) { - $sql .= "nibble_account = null, "; - } - else { - $sql .= "nibble_account = '$nibble_account', "; - } - if (strlen($mwi_account) > 0) { - if (strpos($mwi_account, '@') === false) { - if (count($_SESSION["domains"]) > 1) { - $mwi_account .= "@".$_SESSION['domain_name']; - } - else { - $mwi_account .= "@\$\${domain}"; - } - } - } - $sql .= "mwi_account = '$mwi_account', "; - $sql .= "sip_bypass_media = '$sip_bypass_media', "; - $sql .= "dial_string = '$dial_string', "; - $sql .= "enabled = '$enabled', "; - $sql .= "description = '$description' "; - $sql .= "where domain_uuid = '$domain_uuid' "; - $sql .= "and extension_uuid = '$extension_uuid'"; - $db->exec(check_sql($sql)); - unset($sql); - - //synchronize configuration - if (is_readable($_SESSION['switch']['extensions']['dir'])) { + //add or update voicemail require_once "app/extensions/resources/classes/extension.php"; $ext = new extension; - $ext->xml(); + $ext->db = $db; + $ext->domain_uuid = $domain_uuid; + $ext->extension = $extension; + $ext->number_alias = $number_alias; + $ext->vm_password = $vm_password; + $ext->vm_mailto = $vm_mailto; + $ext->vm_attach_file = $vm_attach_file; + $ext->vm_keep_local_after_email = $vm_keep_local_after_email; + $ext->vm_enabled = $vm_enabled; + $ext->description = $description; + $ext->voicemail(); unset($ext); - } + } //if ($action == "update") - //write the provision files - if (strlen($provisioning_list)>0) { - require_once "app/provision/provision_write.php"; - } + //check the permissions + if (permission_exists('extension_add') || permission_exists('extension_edit')) { - //determine the voicemail_id - if (is_numeric($extension)) { - $voicemail_id = $extension; - } - else { - $voicemail_id = $number_alias; - } + //synchronize configuration + if (is_readable($_SESSION['switch']['extensions']['dir'])) { + require_once "app/extensions/resources/classes/extension.php"; + $ext = new extension; + $ext->xml(); + unset($ext); + } - //update the voicemail settings - $sql = "select * from v_voicemails "; - $sql .= "where domain_uuid = '$domain_uuid' "; - $sql .= "and voicemail_id = '$voicemail_id' "; - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); - if (count($result) == 0) { - //add the voicemail box - $sql = "insert into v_voicemails "; - $sql .= "("; - $sql .= "domain_uuid, "; - $sql .= "voicemail_uuid, "; - $sql .= "voicemail_id, "; - $sql .= "voicemail_password, "; - if (strlen($greeting_id) > 0) { - $sql .= "greeting_id, "; - } - $sql .= "voicemail_mail_to, "; - $sql .= "voicemail_attach_file, "; - $sql .= "voicemail_local_after_email, "; - $sql .= "voicemail_enabled, "; - $sql .= "voicemail_description "; - $sql .= ")"; - $sql .= "values "; - $sql .= "("; - $sql .= "'$domain_uuid', "; - $sql .= "'".uuid()."', "; - $sql .= "'$voicemail_id', "; - $sql .= "'$vm_password', "; - $sql .= "'$vm_mailto', "; - $sql .= "'$vm_attach_file', "; - $sql .= "'$vm_keep_local_after_email', "; - $sql .= "'$vm_enabled', "; - $sql .= "'$description' "; - $sql .= ")"; - $db->exec(check_sql($sql)); - unset($sql); - } - else { - //update the voicemail box - $sql = "update v_voicemails set "; - $sql .= "voicemail_password = '$vm_password', "; - $sql .= "voicemail_mail_to = '$vm_mailto', "; - $sql .= "voicemail_attach_file = '$vm_attach_file', "; - $sql .= "voicemail_local_after_email = '$vm_keep_local_after_email', "; - $sql .= "voicemail_enabled = '$vm_enabled', "; - $sql .= "voicemail_description = '$description' "; - $sql .= "where domain_uuid = '$domain_uuid' "; - $sql .= "and voicemail_id = '$voicemail_id'"; - $db->exec(check_sql($sql)); - unset($sql); - } - unset ($prep_statement); + //write the provision files + if (strlen($provisioning_list) > 0) { + require_once "app/provision/provision_write.php"; + $ext = new extension; + } - //delete extension from memcache - $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); - if ($fp) { - $switch_cmd = "memcache delete directory:".$extension."@".$_SESSION['domain_name']; - $switch_result = event_socket_request($fp, 'api '.$switch_cmd); - } + //delete extension from memcache + $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); + if ($fp) { + $switch_cmd = "memcache delete directory:".$extension."@".$_SESSION['domain_name']; + $switch_result = event_socket_request($fp, 'api '.$switch_cmd); + } + } - //show the action and redirect the user + //show the action and redirect the user + if ($action == "add") { + //prepare for alternating the row style + $c = 0; + $row_style["0"] = "row_style0"; + $row_style["1"] = "row_style1"; + + //show the action and redirect the user + require_once "includes/header.php"; + echo "
\n"; + echo "
\n"; + if (count($generated_users) == 0) { + //action add + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo "
Message
Add Complete
\n"; + echo "
\n"; + } + else { + //auto-generate user with extension as login name + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + foreach($generated_users as $tmp_user){ + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + } + if ($c==0) { $c=1; } else { $c=0; } + echo "
New User Accounts
UsernamePassword
".$tmp_user['username']."".$tmp_user['password']."
"; + } + echo "
\n"; + require_once "includes/footer.php"; + } + if ($action == "update") { require_once "includes/header.php"; echo "\n"; echo "
\n"; echo "
\n"; - - //action update - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; + echo "
Message
\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + if ($action == "update") { echo " \n"; - echo " \n"; - echo "
Message
Update Complete
\n"; - echo "
\n"; - + } + else { + echo " Add Complete\n"; + } + echo " \n"; + echo " \n"; + echo "
\n"; echo "
\n"; require_once "includes/footer.php"; return; - } //if ($action == "update") + } } //if ($_POST["persistformvar"] != "true") } //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) //pre-populate the form - if (count($_GET)>0 && $_POST["persistformvar"] != "true") { + if (count($_GET) > 0 && $_POST["persistformvar"] != "true") { $extension_uuid = $_GET["id"]; $sql = "select * from v_extensions "; $sql .= "where domain_uuid = '$domain_uuid' "; diff --git a/app/extensions/extensions.php b/app/extensions/extensions.php index 4c9b5fa73a..48a8465fee 100644 --- a/app/extensions/extensions.php +++ b/app/extensions/extensions.php @@ -61,7 +61,7 @@ require_once "includes/paging.php"; //get the number of rows in v_extensions $sql = "select count(*) as num_rows from v_extensions "; - $sql .= "where domain_uuid = '$domain_uuid' "; + $sql .= "where domain_uuid = '".$domain_uuid."' "; $prep_statement = $db->prepare(check_sql($sql)); if ($prep_statement) { $prep_statement->execute(); diff --git a/app/extensions/resources/classes/extension.php b/app/extensions/resources/classes/extension.php index 67076b9072..6adfa108b0 100644 --- a/app/extensions/resources/classes/extension.php +++ b/app/extensions/resources/classes/extension.php @@ -30,6 +30,43 @@ public $domain_uuid; public $domain_name; private $app_uuid; + public $extension_uuid; + public $extension; + public $voicemail_id; + public $number_alias; + public $password; + public $provisioning_list; + public $vm_password; + public $accountcode; + public $effective_caller_id_name; + public $effective_caller_id_number; + public $outbound_caller_id_name; + public $outbound_caller_id_number; + public $emergency_caller_id_number; + public $directory_full_name; + public $directory_visible; + public $directory_exten_visible; + public $limit_max; + public $limit_destination; + public $vm_enabled; + public $vm_mailto; + public $vm_attach_file; + public $vm_keep_local_after_email; + public $user_context; + public $toll_allow; + public $call_timeout; + public $call_group; + public $hold_music; + public $auth_acl; + public $cidr; + public $sip_force_contact; + public $sip_force_expires; + public $nibble_account; + public $mwi_account; + public $sip_bypass_media; + public $dial_string; + public $enabled; + public $description; public function __construct() { require_once "includes/classes/database.php"; @@ -50,6 +87,72 @@ $this->domain_uuid = $domain_uuid; } + public function voicemail() { + + //determine the voicemail_id + if (is_numeric($this->extension)) { + $this->voicemail_id = $this->extension; + } + else { + $this->voicemail_id = $this->number_alias; + } + + //update the voicemail settings + $sql = "select * from v_voicemails "; + $sql .= "where domain_uuid = '".$this->domain_uuid."' "; + $sql .= "and voicemail_id = '".$this->voicemail_id."' "; + $prep_statement = $this->db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); + if (count($result) == 0) { + //add the voicemail box + $sql = "insert into v_voicemails "; + $sql .= "("; + $sql .= "domain_uuid, "; + $sql .= "voicemail_uuid, "; + $sql .= "voicemail_id, "; + $sql .= "voicemail_password, "; + if (strlen($this->greeting_id) > 0) { + $sql .= "greeting_id, "; + } + $sql .= "voicemail_mail_to, "; + $sql .= "voicemail_attach_file, "; + $sql .= "voicemail_local_after_email, "; + $sql .= "voicemail_enabled, "; + $sql .= "voicemail_description "; + $sql .= ") "; + $sql .= "values "; + $sql .= "("; + $sql .= "'".$this->domain_uuid."', "; + $sql .= "'".uuid()."', "; + $sql .= "'".$this->voicemail_id."', "; + $sql .= "'".$this->vm_password."', "; + $sql .= "'".$this->vm_mailto."', "; + $sql .= "'".$this->vm_attach_file."', "; + $sql .= "'".$this->vm_keep_local_after_email."', "; + $sql .= "'".$this->vm_enabled."', "; + $sql .= "'".$this->description."' "; + $sql .= ")"; + $this->db->exec(check_sql($sql)); + unset($sql); + } + else { + //update the voicemail box + $sql = "update v_voicemails set "; + $sql .= "voicemail_password = '".$this->vm_password."', "; + $sql .= "voicemail_mail_to = '".$this->vm_mailto."', "; + $sql .= "voicemail_attach_file = '".$this->vm_attach_file."', "; + $sql .= "voicemail_local_after_email = '".$this->vm_keep_local_after_email."', "; + $sql .= "voicemail_enabled = '".$this->vm_enabled."', "; + $sql .= "voicemail_description = '".$this->description."' "; + $sql .= "where domain_uuid = '".$this->domain_uuid."' "; + $sql .= "and voicemail_id = '".$this->voicemail_id."' "; + $this->db->exec(check_sql($sql)); + unset($sql); + } + unset ($prep_statement); + } + public function xml() { if (isset($_SESSION['switch']['extensions']['dir'])) { //declare global variables