| 1 |
<?php |
|---|
| 2 |
|
|---|
| 3 |
include_once("modules/voicemail/functions.inc.php"); |
|---|
| 4 |
include_once("modules/dictate/functions.inc.php"); |
|---|
| 5 |
include_once("modules/languages/functions.inc.php"); |
|---|
| 6 |
include_once("modules/findmefollow/functions.inc.php"); |
|---|
| 7 |
|
|---|
| 8 |
/* Verify existence of voicemail, dictate, languages and findmefollow functions. */ |
|---|
| 9 |
if (function_exists("voicemail_mailbox_get") && function_exists("voicemail_mailbox_add") && function_exists("voicemail_mailbox_del") && function_exists("voicemail_mailbox_remove") && class_exists("vmxObject")) { |
|---|
| 10 |
$vm_exists = TRUE; |
|---|
| 11 |
} else { |
|---|
| 12 |
$vm_exists = FALSE; |
|---|
| 13 |
} |
|---|
| 14 |
if (function_exists("dictate_get") && function_exists("dictate_update") && function_exists("dictate_del")) { |
|---|
| 15 |
$dict_exists = TRUE; |
|---|
| 16 |
} else { |
|---|
| 17 |
$dict_exists = FALSE; |
|---|
| 18 |
} |
|---|
| 19 |
if (function_exists("languages_user_get") && function_exists("languages_user_update") && function_exists("languages_user_del")) { |
|---|
| 20 |
$lang_exists = TRUE; |
|---|
| 21 |
} else { |
|---|
| 22 |
$lang_exists = FALSE; |
|---|
| 23 |
} |
|---|
| 24 |
if (function_exists("findmefollow_get") && function_exists("findmefollow_add") && function_exists("findmefollow_del")) { |
|---|
| 25 |
$findme_exists = TRUE; |
|---|
| 26 |
} else { |
|---|
| 27 |
$findme_exists = FALSE; |
|---|
| 28 |
} |
|---|
| 29 |
|
|---|
| 30 |
function exportextensions_allusers() { |
|---|
| 31 |
global $db; |
|---|
| 32 |
global $vm_exists; |
|---|
| 33 |
global $dict_exists; |
|---|
| 34 |
global $lang_exists; |
|---|
| 35 |
global $findme_exists; |
|---|
| 36 |
$action = "edit"; |
|---|
| 37 |
$fname = "bulkext__" . (string) time() . $_SERVER["SERVER_NAME"] . ".csv"; |
|---|
| 38 |
$csv_header = "action,extension,name,cid_masquerade,sipname,outboundcid,ringtimer,callwaiting,call_screen,password,emergency_cid,tech,hardware,devinfo_channel,devinfo_secret,devinfo_notransfer,devinfo_dtmfmode,devinfo_canreinvite,devinfo_context,devinfo_immediate,devinfo_signalling,devinfo_echocancel,devinfo_echocancelwhenbrdiged,devinfo_echotraining,devinfo_busydetect,devinfo_busycount,devinfo_callprogress,devinfo_host,devinfo_type,devinfo_nat,devinfo_port,devinfo_qualify,devinfo_callgroup,devinfo_pickupgroup,devinfo_disallow,devinfo_allow,devinfo_dial,devinfo_accoountcode,devinfo_mailbox,devicetype,deviceid,deviceuser,description,dictenabled,dictformat,dictemail,langcode,record_in,record_out,vm,vmpwd,email,pager,attach,saycid,envelope,delete,options,vmcontext,vmx_state,vmx_unavail_enabled,vmx_busy_enabled,vmx_play_instructions,vmx_option_0_sytem_default,vmx_option_0_number,vmx_option_1_system_default,vmx_option_1_number,vmx_option_2_number,account,ddial,pre_ring,strategy,grptime,grplist,annmsg_id,ringing,grppre,dring,needsconf,remotealert_id,toolate_id,postdest\n"; |
|---|
| 39 |
$data = $csv_header; |
|---|
| 40 |
$exts = get_all_exts(); |
|---|
| 41 |
|
|---|
| 42 |
foreach ($exts as $ext) { |
|---|
| 43 |
$e = $ext[0]; |
|---|
| 44 |
$u_info = core_users_get($e); |
|---|
| 45 |
$d_info = core_devices_get($e); |
|---|
| 46 |
if ($vm_exists) { |
|---|
| 47 |
$v_info = voicemail_mailbox_get($e); |
|---|
| 48 |
} else { |
|---|
| 49 |
$v_info = NULL; |
|---|
| 50 |
} |
|---|
| 51 |
|
|---|
| 52 |
/* Parse extra voicemail options. */ |
|---|
| 53 |
if ($v_info == NULL) { |
|---|
| 54 |
$v_enabled = "disabled"; |
|---|
| 55 |
} else { |
|---|
| 56 |
$v_enabled = "enabled"; |
|---|
| 57 |
$v_options = isset($v_info["options"])?$v_info["options"]:""; |
|---|
| 58 |
$vm_other_opts = ""; |
|---|
| 59 |
$i = 0; |
|---|
| 60 |
$first = TRUE; |
|---|
| 61 |
$c = count($v_options); |
|---|
| 62 |
reset($v_options); |
|---|
| 63 |
while ($i < $c) { |
|---|
| 64 |
if ((key($v_options) != "attach") && (key($v_options) != "saycid") && (key($v_options) != "envelope") && (key($v_options) != "delete")) { |
|---|
| 65 |
if ($first) { |
|---|
| 66 |
$vm_other_opts = key($v_options) . "=" . $v_options[key($v_options)]; |
|---|
| 67 |
$first = false; |
|---|
| 68 |
} else { |
|---|
| 69 |
$vm_other_opts .= "|" . key($v_options) . "=" . $v_options[key($v_options)]; |
|---|
| 70 |
} |
|---|
| 71 |
} |
|---|
| 72 |
$i++; |
|---|
| 73 |
next($v_options); |
|---|
| 74 |
} |
|---|
| 75 |
} |
|---|
| 76 |
|
|---|
| 77 |
if ($vm_exists) { |
|---|
| 78 |
$vmxobj = new vmxObject($e); |
|---|
| 79 |
} else { |
|---|
| 80 |
$vmxobj = NULL; |
|---|
| 81 |
} |
|---|
| 82 |
|
|---|
| 83 |
if (is_object($vmxobj)) { |
|---|
| 84 |
$vmx_state = ($vmxobj->isEnabled())?"checked":""; |
|---|
| 85 |
$vmx_unavail_enabled = ($vmxobj->getState("unavail")=="enabled")?"checked":""; |
|---|
| 86 |
$vmx_busy_enabled = ($vmxobj->getState("busy")=="enabled")?"checked":""; |
|---|
| 87 |
$vmx_play_instructions = ($vmxobj->getVmPlay())?"checked":""; |
|---|
| 88 |
$vmx_option_0_number = $vmxobj->getMenuOpt(0); |
|---|
| 89 |
if ($vmx_option_0_number == "") { |
|---|
| 90 |
$vmx_option_0_system_default = "checked"; |
|---|
| 91 |
} else { |
|---|
| 92 |
$vmx_option_0_system_default = ""; |
|---|
| 93 |
} |
|---|
| 94 |
if (is_object($vmxobj)) { |
|---|
| 95 |
if ($vmxobj->hasFollowMe() && $vmxobj->isFollowMe()) { |
|---|
| 96 |
$vmx_option_1_system_default = "checked"; |
|---|
| 97 |
$vmx_option_1_number = ""; |
|---|
| 98 |
} else { |
|---|
| 99 |
$vmx_option_1_system_default = ""; |
|---|
| 100 |
$vmx_option_1_number = $vmxobj->getMenuOpt(1); |
|---|
| 101 |
} |
|---|
| 102 |
$vmx_option_2_number = $vmxobj->getMenuOpt(2); |
|---|
| 103 |
} |
|---|
| 104 |
} |
|---|
| 105 |
|
|---|
| 106 |
|
|---|
| 107 |
if ($dict_exists) { |
|---|
| 108 |
$dictate_settings = dictate_get($e); |
|---|
| 109 |
} |
|---|
| 110 |
|
|---|
| 111 |
|
|---|
| 112 |
if ($lang_exists) { |
|---|
| 113 |
$langcode = languages_user_get($e); |
|---|
| 114 |
} |
|---|
| 115 |
|
|---|
| 116 |
|
|---|
| 117 |
if ($findme_exists) { |
|---|
| 118 |
$followme_settings = findmefollow_get($u_info["extension"], TRUE); |
|---|
| 119 |
} |
|---|
| 120 |
if (isset($followme_settings)) { |
|---|
| 121 |
$account = isset($followme_settings["grpnum"])?$followme_settings["grpnum"]:""; |
|---|
| 122 |
$strategy = isset($followme_settings["strategy"])?$followme_settings["strategy"]:""; |
|---|
| 123 |
$grptime = isset($followme_settings["grptime"])?$followme_settings["grptime"]:""; |
|---|
| 124 |
$grppre = isset($followme_settings["grppre"])?$followme_settings["grppre"]:""; |
|---|
| 125 |
$grplist = isset($followme_settings["grplist"])?$followme_settings["grplist"]:""; |
|---|
| 126 |
$annmsg_id = isset($followme_settings["annmsg_id"])?$followme_settings["annmsg_id"]:""; |
|---|
| 127 |
$postdest = isset($followme_settings["postdest"])?$followme_settings["postdest"]:""; |
|---|
| 128 |
$dring = isset($followme_settings["dring"])?$followme_settings["dring"]:""; |
|---|
| 129 |
$needsconf = isset($followme_settings["needsconf"])?$followme_settings["needsconf"]:""; |
|---|
| 130 |
$remotealert_id = isset($followme_settings["remotealert_id"])?$followme_settings["remotealert_id"]:""; |
|---|
| 131 |
$toolate_id = isset($followme_settings["toolate_id"])?$followme_settings["toolate_id"]:""; |
|---|
| 132 |
$ringing = isset($followme_settings["ringing"])?$followme_settings["ringing"]:""; |
|---|
| 133 |
$pre_ring = isset($followme_settings["pre_ring"])?$followme_settings["pre_ring"]:""; |
|---|
| 134 |
$ddial = isset($followme_settings["ddial"])?$followme_settings["ddial"]:""; |
|---|
| 135 |
} |
|---|
| 136 |
$csv_line[0] = $action; |
|---|
| 137 |
$csv_line[1] = isset($u_info["extension"])?$u_info["extension"]:""; |
|---|
| 138 |
$csv_line[2] = isset($u_info["name"])?$u_info["name"]:""; |
|---|
| 139 |
$csv_line[3] = isset($u_info["cid_masquerade"])?$u_info["cid_masquerade"]:""; |
|---|
| 140 |
$csv_line[4] = isset($u_info["sipname"])?$u_info["sipname"]:""; |
|---|
| 141 |
$csv_line[5] = isset($u_info["outboundcid"])?$u_info["outboundcid"]:""; |
|---|
| 142 |
$csv_line[6] = isset($u_info["ringtimer"])?$u_info["ringtimer"]:""; |
|---|
| 143 |
$csv_line[7] = isset($u_info["callwaiting"])?$u_info["callwaiting"]:""; |
|---|
| 144 |
$csv_line[8] = isset($u_info["call_screen"])?$u_info["call_screen"]:"0"; |
|---|
| 145 |
$csv_line[9] = isset($u_info["password"])?$u_info["password"]:""; |
|---|
| 146 |
|
|---|
| 147 |
$csv_line[10] = isset($d_info["emergency_cid"])?$d_info["emergency_cid"]:""; |
|---|
| 148 |
$csv_line[11] = isset($d_info["tech"])?$d_info["tech"]:""; |
|---|
| 149 |
$csv_line[12] = ""; |
|---|
| 150 |
$csv_line[13] = isset($d_info["channel"])?$d_info["channel"]:""; |
|---|
| 151 |
$csv_line[14] = isset($d_info["secret"])?$d_info["secret"]:""; |
|---|
| 152 |
$csv_line[15] = isset($d_info["notransfer"])?$d_info["notransfer"]:""; |
|---|
| 153 |
$csv_line[16] = isset($d_info["dtmfmode"])?$d_info["dtmfmode"]:""; |
|---|
| 154 |
$csv_line[17] = isset($d_info["canreinvite"])?$d_info["canreinvite"]:""; |
|---|
| 155 |
$csv_line[18] = isset($d_info["context"])?$d_info["context"]:""; |
|---|
| 156 |
$csv_line[19] = isset($d_info["immediate"])?$d_info["immediate"]:""; |
|---|
| 157 |
$csv_line[20] = isset($d_info["signalling"])?$d_info["signalling"]:""; |
|---|
| 158 |
$csv_line[21] = isset($d_info["echocancel"])?$d_info["echocancel"]:""; |
|---|
| 159 |
$csv_line[22] = isset($d_info["echocancelwhenbridged"])?$d_info["echocancelwhenbridged"]:""; |
|---|
| 160 |
$csv_line[23] = isset($d_info["echotraining"])?$d_info["echotraining"]:""; |
|---|
| 161 |
$csv_line[24] = isset($d_info["busydetect"])?$d_info["busydetect"]:""; |
|---|
| 162 |
$csv_line[25] = isset($d_info["busycount"])?$d_info["busycount"]:""; |
|---|
| 163 |
$csv_line[26] = isset($d_info["callprogress"])?$d_info["callprogress"]:""; |
|---|
| 164 |
$csv_line[27] = isset($d_info["host"])?$d_info["host"]:""; |
|---|
| 165 |
$csv_line[28] = isset($d_info["type"])?$d_info["type"]:""; |
|---|
| 166 |
$csv_line[29] = isset($d_info["nat"])?$d_info["nat"]:""; |
|---|
| 167 |
$csv_line[30] = isset($d_info["port"])?$d_info["port"]:""; |
|---|
| 168 |
$csv_line[31] = isset($d_info["qualify"])?$d_info["qualify"]:""; |
|---|
| 169 |
$csv_line[32] = isset($d_info["callgroup"])?$d_info["callgroup"]:""; |
|---|
| 170 |
$csv_line[33] = isset($d_info["pickupgroup"])?$d_info["pickupgroup"]:""; |
|---|
| 171 |
$csv_line[34] = isset($d_info["disallow"])?$d_info["disallow"]:""; |
|---|
| 172 |
$csv_line[35] = isset($d_info["allow"])?$d_info["allow"]:""; |
|---|
| 173 |
$csv_line[36] = isset($d_info["dial"])?$d_info["dial"]:""; |
|---|
| 174 |
$csv_line[37] = isset($d_info["accountcode"])?$d_info["accountcode"]:""; |
|---|
| 175 |
$csv_line[38] = isset($d_info["mailbox"])?$d_info["mailbox"]:""; |
|---|
| 176 |
$csv_line[39] = isset($d_info["devicetype"])?$d_info["devicetype"]:"fixed"; |
|---|
| 177 |
$csv_line[40] = (isset($d_info["deviceid"]) || ($d_info["deviceid"]==""))?$d_info["deviceid"]:(isset($u_info["extension"])?$u_info["extension"]:""); |
|---|
| 178 |
$csv_line[41] = (isset($d_info["deviceuser"]) && ($d_info["deviceuser"] != ""))?$d_info["deviceuser"]:(isset($u_info["extension"])?$u_info["extension"]:"none"); |
|---|
| 179 |
$csv_line[42] = isset($d_info["description"])?$d_info["description"]:(isset($u_info["name"])?$u_info["name"]:""); |
|---|
| 180 |
|
|---|
| 181 |
$csv_line[43] = isset($dictate_settings["enabled"])?$dictate_settings["enabled"]:"disabled"; |
|---|
| 182 |
$csv_line[44] = isset($dictate_settings["format"])?$dictate_settings["format"]:"ogg"; |
|---|
| 183 |
$csv_line[45] = isset($dictate_settings["email"])?$dictate_settings["email"]:""; |
|---|
| 184 |
|
|---|
| 185 |
$csv_line[46] = isset($langcode)?$langcode:""; |
|---|
| 186 |
|
|---|
| 187 |
$csv_line[47] = isset($d_info["record_in"])?$d_info["record_in"]:""; |
|---|
| 188 |
$csv_line[48] = isset($d_info["record_out"])?$d_info["record_out"]:""; |
|---|
| 189 |
|
|---|
| 190 |
$csv_line[49] = $v_enabled; |
|---|
| 191 |
$csv_line[50] = isset($v_info["pwd"])?$v_info["pwd"]:""; |
|---|
| 192 |
$csv_line[51] = isset($v_info["email"])?$v_info["email"]:""; |
|---|
| 193 |
$csv_line[52] = isset($v_info["pager"])?$v_info["pager"]:""; |
|---|
| 194 |
$csv_line[53] = isset($v_info["options"]["attach"])?("attach=" . $v_info["options"]["attach"]):"attach=no"; |
|---|
| 195 |
$csv_line[54] = isset($v_info["options"]["saycid"])?("saycid=" . $v_info["options"]["saycid"]):"saycid=no"; |
|---|
| 196 |
$csv_line[55] = isset($v_info["options"]["envelope"])?("envelope=" . $v_info["options"]["envelope"]):"envelope=no"; |
|---|
| 197 |
$csv_line[56] = isset($v_info["options"]["delete"])?("delete=". $v_info["options"]["delete"]):"delete=no"; |
|---|
| 198 |
$csv_line[57] = isset($vm_other_opts)?$vm_other_opts:""; |
|---|
| 199 |
$csv_line[58] = isset($v_info["vmcontext"])?$v_info["vmcontext"]:""; |
|---|
| 200 |
$csv_line[59] = isset($vmx_state)?$vmx_state:""; |
|---|
| 201 |
$csv_line[60] = isset($vmx_unavail_enabled)?$vmx_unavail_enabled:""; |
|---|
| 202 |
$csv_line[61] = isset($vmx_busy_enabled)?$vmx_busy_enabled:""; |
|---|
| 203 |
$csv_line[62] = isset($vmx_play_instructions)?$vmx_play_instructions:""; |
|---|
| 204 |
$csv_line[63] = isset($vmx_option_0_system_default)?$vmx_option_0_system_default:""; |
|---|
| 205 |
$csv_line[64] = isset($vmx_option_0_number)?$vmx_option_0_number:""; |
|---|
| 206 |
$csv_line[65] = isset($vmx_option_1_system_default)?$vmx_option_1_system_default:""; |
|---|
| 207 |
$csv_line[66] = isset($vmx_option_1_number)?$vmx_option_1_number:""; |
|---|
| 208 |
$csv_line[67] = isset($vmx_option_2_number)?$vmx_option_2_number:""; |
|---|
| 209 |
$csv_line[68] = isset($account)?$account:""; |
|---|
| 210 |
$csv_line[69] = isset($ddial)?$ddial:""; |
|---|
| 211 |
$csv_line[70] = isset($pre_ring)?$pre_ring:""; |
|---|
| 212 |
$csv_line[71] = isset($strategy)?$strategy:""; |
|---|
| 213 |
$csv_line[72] = isset($grptime)?$grptime:""; |
|---|
| 214 |
$csv_line[73] = isset($grplist)?$grplist:""; |
|---|
| 215 |
$csv_line[74] = isset($annmsg_id)?$annmsg_id:""; |
|---|
| 216 |
$csv_line[75] = isset($ringing)?$ringing:""; |
|---|
| 217 |
$csv_line[76] = isset($grppre)?$grppre:""; |
|---|
| 218 |
$csv_line[77] = isset($dring)?$dring:""; |
|---|
| 219 |
$csv_line[78] = isset($needsconf)?$needsconf:""; |
|---|
| 220 |
$csv_line[79] = isset($remotealert_id)?$remotealert_id:""; |
|---|
| 221 |
$csv_line[80] = isset($toolate_id)?$toolate_id:""; |
|---|
| 222 |
$csv_line[81] = isset($postdest)?$postdest:""; |
|---|
| 223 |
for ($i = 0; $i < count($csv_line); $i++) { |
|---|
| 224 |
|
|---|
| 225 |
if (strpos($csv_line[$i], ",") !== FALSE) { |
|---|
| 226 |
$csv_line[$i] = "\"" . $csv_line[$i] . "\""; |
|---|
| 227 |
} |
|---|
| 228 |
if ($i != count($csv_line) - 1) { |
|---|
| 229 |
$data = $data . $csv_line[$i] . ","; |
|---|
| 230 |
} else { |
|---|
| 231 |
$data = $data . $csv_line[$i]; |
|---|
| 232 |
} |
|---|
| 233 |
} |
|---|
| 234 |
$data = $data . "\n"; |
|---|
| 235 |
unset($csv_line); |
|---|
| 236 |
} |
|---|
| 237 |
force_download($data, $fname); |
|---|
| 238 |
return; |
|---|
| 239 |
} |
|---|
| 240 |
|
|---|
| 241 |
function get_all_exts() { |
|---|
| 242 |
$sql = "SELECT extension FROM users ORDER BY extension"; |
|---|
| 243 |
$extens = sql($sql,"getAll"); |
|---|
| 244 |
if (isset($extens)) { |
|---|
| 245 |
return $extens; |
|---|
| 246 |
} else { |
|---|
| 247 |
return null; |
|---|
| 248 |
} |
|---|
| 249 |
} |
|---|
| 250 |
|
|---|
| 251 |
function force_download ($data, $name, $mimetype="", $filesize=false) { |
|---|
| 252 |
|
|---|
| 253 |
if ($filesize == false OR !is_numeric($filesize)) { |
|---|
| 254 |
$filesize = strlen($data); |
|---|
| 255 |
} |
|---|
| 256 |
|
|---|
| 257 |
if (empty($mimetype)) { |
|---|
| 258 |
$mimetype = "application/octet-stream"; |
|---|
| 259 |
} |
|---|
| 260 |
|
|---|
| 261 |
ob_clean_all(); |
|---|
| 262 |
|
|---|
| 263 |
header("Pragma: public"); |
|---|
| 264 |
header("Expires: 0"); |
|---|
| 265 |
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); |
|---|
| 266 |
header("Cache-Control: private",false); |
|---|
| 267 |
header("Content-Transfer-Encoding: binary"); |
|---|
| 268 |
header("Content-Type: " . $mimetype); |
|---|
| 269 |
header("Content-Length: " . $filesize); |
|---|
| 270 |
header("Content-Disposition: attachment; filename=\"" . $name . "\";" ); |
|---|
| 271 |
|
|---|
| 272 |
echo $data; |
|---|
| 273 |
die(); |
|---|
| 274 |
} |
|---|
| 275 |
|
|---|
| 276 |
function ob_clean_all () { |
|---|
| 277 |
$ob_active = ob_get_length () !== false; |
|---|
| 278 |
while($ob_active) { |
|---|
| 279 |
ob_end_clean(); |
|---|
| 280 |
$ob_active = ob_get_length () !== false; |
|---|
| 281 |
} |
|---|
| 282 |
return true; |
|---|
| 283 |
} |
|---|
| 284 |
|
|---|
| 285 |
function generate_table_rows() { |
|---|
| 286 |
$fh = fopen("modules/bulkextensions/table.csv", "r"); |
|---|
| 287 |
if ($fh == NULL) { |
|---|
| 288 |
return NULL; |
|---|
| 289 |
} |
|---|
| 290 |
$k = 0; |
|---|
| 291 |
while (($csv_data = fgetcsv($fh, 1000, ",", "\"")) !== FALSE) { |
|---|
| 292 |
$k++; |
|---|
| 293 |
|
|---|
| 294 |
for ($i = 0; $i < 5; $i++) { |
|---|
| 295 |
if (isset($csv_data[$i])) { |
|---|
| 296 |
$table[$k][$i] .= $csv_data[$i]; |
|---|
| 297 |
} else { |
|---|
| 298 |
$table[$k][$i] = ""; |
|---|
| 299 |
} |
|---|
| 300 |
} |
|---|
| 301 |
} |
|---|
| 302 |
fclose($fh); |
|---|
| 303 |
return $table; |
|---|
| 304 |
} |
|---|
| 305 |
?> |
|---|
| 306 |
|
|---|