Changeset 6003

Show
Ignore:
Timestamp:
07/14/08 11:44:48 (4 months ago)
Author:
sasargen
Message:

added functions for Export Extensions feature

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • contributed_modules/modules/bulkextensions/functions.inc.php

    r5768 r6003  
    1 <? 
     1<?php 
     2/* $Id:$ */ 
     3 
     4function exportextensions_allusers() 
     5
     6 
     7        global $db; 
     8        $action = "edit"; 
     9        $fname = "bulkext__" .  (string) time() . ".csv"; 
     10        $csv_header = "action,extension,name,cid_masquerade,sipname,directdid,didalert,mohclass,outboundcid,ringtimer,callwaiting,emergency_cid,tech,hardware,devinfo_secret,devinfo_channel,devinfo_dtmfmode,devinfo_canreinvite,devinfo_context,devinfo_host,devinfo_type,devinfo_nat,devinfo_port,devinfo_qualify,devinfo_callgroup,devinfo_pickupgroup,devinfo_disallow,devinfo_allow,devinfo_dial,devinfo_accountcode,devinfo_mailbox,faxexten,faxemail,answer,wait,privacyman,record_in,record_out,vm,vmpwd,email,pager,attach,saycid,envelope,delete,options,vmcontext,vmx_state,devicetype,password,noanswer,devinfo_immediate,devinfo_signalling,devinfo_echocancel,devinfo_echocancelwhenbridged,devinfo_echotraining,devinfo_busydetect,devinfo_busycount,devinfo_callprogress,devinfo_notransfer\n"; 
     11        $data = $csv_header; 
     12        $exts = get_all_exts(); 
     13 
     14        foreach($exts as $ext) 
     15        { 
     16                $e = $ext[0]; 
     17                $u_info = core_users_get($e); 
     18                $d_info = core_devices_get($e); 
     19                $voicemail = get_voicemail_info($e);  
     20                if($voicemail == null) 
     21                { 
     22                        $v_enabled = "disabled"; 
     23                        $v_context = ''; 
     24                        $v_pwd = ''; 
     25                        $v_email = ''; 
     26                        $v_pager = ''; 
     27                        $v_options = ''; 
     28                        $v_attach = ''; 
     29                        $v_saycid = ''; 
     30                        $v_envelope = ''; 
     31                        $v_delete = ''; 
     32                } 
     33                else 
     34                { 
     35                        $v_enabled = "enabled"; 
     36                        $v_context = isset($voicemail['vmcontext'])?$voicemail['vmcontext']:''; 
     37                        $v_pwd = isset($voicemail['pwd'])?$voicemail['pwd']:''; 
     38                        $v_email = isset($voicemail['email'])?$voicemail['email']:''; 
     39                        $v_pager = isset($voicemail['pager'])?$voicemail['pager']:''; 
     40 
     41                        $x = isset($voicemail['options'])?$voicemail['options']:''; 
     42                        $p = 0; 
     43                        $first = true; 
     44                        $c = count($x); 
     45                        reset($x); 
     46 
     47                        while($p < $c) 
     48                        { 
     49                                if((key($x) != 'attach') && (key($x) != 'saycid') && (key($x) != 'envelope') && (key($x) != 'delete')) 
     50                                { 
     51                                        if($first) 
     52                                        { 
     53                                                $vmopts_output = key($x) . "=" . $x[key($x)]; 
     54                                                $first = false; 
     55                                        } else 
     56                                        { 
     57                                                $vmopts_output = $vmopts_output . "|" . key($x) . "=" . $x[key($x)]; 
     58                                        } 
     59                                } 
     60                                $p++; 
     61                                next($x); 
     62                        } 
     63                        $v_options = isset($vmopts_output)?$vmopts_output:''; 
     64                        $vmopts_output = "";                     
     65                        $v_attach = "attach=" . isset($x['attach'])?$x['attach']:'no';  
     66                        $v_saycid = "saycid=" . isset($x['saycid'])?$x['saycid']:'no'; 
     67                        $v_envelope = "envelope=" . isset($x['envelope'])?$x['envelope']:'no'; 
     68                        $v_delete = "delete=" . isset($x['delete'])?$x['delete']:'no'; 
     69 
     70                } 
     71 
     72                $csv_line[0]    = $action; 
     73                $csv_line[1]    = isset($u_info['extension'])?$u_info['extension']:''; 
     74                $csv_line[2]    = isset($u_info['name'])?$u_info['name']:''; 
     75                $csv_line[3]    = isset($u_info['cidnum'])?$u_info['cidnum']:''; 
     76                $csv_line[4]    = isset($u_info['sipname'])?$u_info['sipname']:''; 
     77                $csv_line[5]    = isset($u_info['directdid'])?$u_info['directdid']:''; 
     78                $csv_line[6]    = isset($u_info['didalert'])?$u_info['didalert']:''; 
     79                $csv_line[7]    = isset($u_info['mohclass'])?$u_info['mohclass']:''; 
     80                $csv_line[8]    = isset($u_info['outboundcid'])?$u_info['outboundcid']:''; 
     81                $csv_line[9]    = isset($u_info['ringtimer'])?$u_info['ringtimer']:''; 
     82                $csv_line[10]   = isset($u_info['callwaiting'])?$u_info['callwaiting']:''; 
     83                $csv_line[11]   = isset($d_info['emergency_cid'])?$d_info['emergency_cid']:''; 
     84                $csv_line[12]   = isset($d_info['tech'])?$d_info['tech']:''; 
     85                $csv_line[13]   = ''; //hardware 
     86                $csv_line[14]   = isset($d_info['secret'])?$d_info['secret']:''; 
     87                $csv_line[15]   = isset($d_info['channel'])?$d_info['channel']:'';    
     88                $csv_line[16]   = isset($d_info['dtmfmode'])?$d_info['dtmfmode']:''; 
     89                $csv_line[17]   = isset($d_info['canreinvite'])?$d_info['canreinvite']:''; 
     90                $csv_line[18]   = isset($d_info['context'])?$d_info['context']:''; 
     91                $csv_line[19]   = isset($d_info['host'])?$d_info['host']:''; 
     92                $csv_line[20]   = isset($d_info['type'])?$d_info['type']:''; 
     93                $csv_line[21]   = isset($d_info['nat'])?$d_info['nat']:''; 
     94                $csv_line[22]   = isset($d_info['port'])?$d_info['port']:''; 
     95                $csv_line[23]   = isset($d_info['qualify'])?$d_info['qualify']:''; 
     96                $csv_line[24]   = isset($d_info['callgroup'])?$d_info['callgroup']:''; 
     97                $csv_line[25]   = isset($d_info['pickupgroup'])?$d_info['pickupgroup']:''; 
     98                $csv_line[26]   = isset($d_info['disallow'])?$d_info['disallow']:''; 
     99                $csv_line[27]   = isset($d_info['allow'])?$d_info['allow']:''; 
     100                $csv_line[28]   = isset($d_info['accountcode'])?$d_info['accountcode']:''; 
     101                $csv_line[28]   = isset($d_info['dial'])?$d_info['dial']:''; 
     102                $csv_line[29]   = isset($d_info['accountcode'])?$d_info['accountcode']:''; 
     103                $csv_line[30]   = isset($d_info['mailbox'])?$d_info['mailbox']:''; 
     104                $csv_line[31]   = isset($u_info['faxexten'])?$u_info['faxexten']:''; 
     105                $csv_line[32]   = isset($u_info['faxemail'])?$u_info['faxemail']:''; 
     106                $csv_line[33]   = isset($u_info['answer'])?$u_info['answer']:''; 
     107                $csv_line[34]   = isset($u_info['wait'])?$u_info['wait']:''; 
     108                $csv_line[35]   = isset($u_info['privacyman'])?$u_info['privacyman']:''; 
     109                $csv_line[36]   = isset($d_info['record_in'])?$d_info['record_in']:''; 
     110                $csv_line[37]   = isset($d_info['record_out'])?$d_info['record_out']:''; 
     111                $csv_line[38]   = $v_enabled; 
     112                $csv_line[39]   = $v_pwd; 
     113                $csv_line[40]   = $v_email; 
     114                $csv_line[41]   = $v_pager; 
     115                $csv_line[42]   = $v_attach; 
     116                $csv_line[43]   = $v_saycid; 
     117                $csv_line[44]   = $v_envelope; 
     118                $csv_line[45]   = $v_delete; 
     119                $csv_line[46]   = $v_options; 
     120                $csv_line[47]   = $v_context; 
     121                $csv_line[48]   = isset($u_info['vmx_state'])?$u_info['vmx_state']:''; 
     122                $csv_line[49]   = isset($d_info['devicetype'])?$d_info['devicetype']:''; 
     123                $csv_line[50]   = isset($u_info['password'])?$u_info['password']:''; 
     124                $csv_line[51]   = isset($u_info['noanswer'])?$u_info['noanswer']:''; 
     125                $csv_line[52]   = isset($d_info['immediate'])?$d_info['immediate']:''; 
     126                $csv_line[53]   = isset($d_info['signalling'])?$d_info['signalling']:''; 
     127                $csv_line[54]   = isset($d_info['echocancel'])?$d_info['echocancel']:''; 
     128                $csv_line[55]   = isset($d_info['echocancelwhenbridged'])?$d_info['echocancelwhenbridged']:''; 
     129                $csv_line[56]   = isset($d_info['echotraining'])?$d_info['echotraining']:''; 
     130                $csv_line[57]   = isset($d_info['busydetect'])?$d_info['busydetect']:''; 
     131                $csv_line[58]   = isset($d_info['busycount'])?$d_info['busycount']:''; 
     132                $csv_line[59]   = isset($d_info['callprogress'])?$d_info['callprogress']:''; 
     133                $csv_line[60]   = isset($d_info['notransfer'])?$d_info['notransfer']:''; 
     134 
     135                for($i = 0; $i < count($csv_line); $i++) 
     136                { 
     137                        if($i != count($csv_line) - 1) 
     138                        { 
     139                                $data = $data . $csv_line[$i] . ","; 
     140                        } else 
     141                        { 
     142                                $data = $data . $csv_line[$i]; 
     143                        } 
     144                                 
     145                } 
     146                $data = $data . "\n"; 
     147 
     148                unset($csv_line); 
     149 
     150        } 
     151 
     152        force_download($data, $fname); 
     153        return; 
     154
     155 
     156function get_all_exts() 
     157
     158        $sql = "SELECT extension FROM users ORDER BY extension"; 
     159         
     160        $extens = sql($sql,"getAll"); 
     161 
     162        if (isset($extens)) 
     163        { 
     164                return $extens; 
     165        } else 
     166        { 
     167                return null; 
     168        } 
     169
     170 
     171function get_voicemail_info($mbox) 
     172
     173        global $amp_conf; 
     174         
     175        $vmconf = null; 
     176        $section = null; 
     177        my_parse_voicemailconf(rtrim($amp_conf["ASTETCDIR"],"/")."/voicemail.conf", $vmconf, $section); 
     178        if($vmconf == null) echo("Uh-oh"); 
     179        //my_parse_voicemailconf("/etc/asterisk/voicemail.conf", $vmconf, $section); 
     180        //$uservm = voicemail_getVoicemail(); 
     181        $vmcontexts = array_keys($vmconf); 
     182         
     183        foreach ($vmcontexts as $vmcontext) { 
     184                //echo("$vmcontext<br/>"); 
     185                //echo("$mbox<br/>"); 
     186                if(isset($vmconf[$vmcontext][$mbox])){ 
     187                        $vmbox['vmcontext'] = $vmcontext;                                                                                 
     188                        $vmbox['pwd'] =         $vmconf[$vmcontext][$mbox]['pwd']; 
     189                        $vmbox['name'] =        $vmconf[$vmcontext][$mbox]['name']; 
     190                        $vmbox['email'] =       $vmconf[$vmcontext][$mbox]['email']; 
     191                        $vmbox['pager'] =       $vmconf[$vmcontext][$mbox]['pager']; 
     192                        $vmbox['options'] =     $vmconf[$vmcontext][$mbox]['options']; 
     193                        return $vmbox; 
     194                } 
     195        } 
     196                                                                             
     197        return null; 
     198 
     199 
     200
     201 
     202 
     203/** Recursively read voicemail.conf (and any included files)                     
     204 * This function is called by get_voicemail_info() 
     205 */ 
     206function my_parse_voicemailconf($filename, &$vmconf, &$section) { 
     207        if (is_null($vmconf)) { 
     208                $vmconf = array(); 
     209        } 
     210        if (is_null($section)) { 
     211                $section = "general"; 
     212        } 
     213 
     214        if (file_exists($filename)) {                                       
     215                $fd = fopen($filename, "r");                        
     216                while ($line = fgets($fd, 1024)) { 
     217                        if (preg_match("/^\s*(\d+)\s*=>\s*(\d*),(.*),(.*),(.*),(.*)\s*([;#].*)?/",$line,$matches)) { 
     218                                // "mailbox=>password,name,email,pager,options" 
     219                                // this is a voicemail line 
     220                                $vmconf[$section][ $matches[1] ] = array("mailbox"=>$matches[1], 
     221                                                                        "pwd"=>$matches[2], 
     222                                                                        "name"=>$matches[3], 
     223                                                                        "email"=>$matches[4], 
     224                                                                        "pager"=>$matches[5], 
     225                                                                        "options"=>array(), 
     226                                                                        ); 
     227 
     228                                // parse options 
     229                                                                            
     230                                foreach (explode("|",$matches[6]) as $opt) { 
     231                                        $temp = explode("=",$opt); 
     232                                        //output($temp); 
     233                                        if (isset($temp[1])) { 
     234                                                list($key,$value) = $temp; 
     235                                                $vmconf[$section][ $matches[1] ]["options"][$key] = $value; 
     236                                        } 
     237                                } 
     238                   } else if (preg_match("/^\s*(\d+)\s*=>\s*dup,(.*)\s*([;#].*)?/",$line,$matches)) { 
     239                                // "mailbox=>dup,name" 
     240                                // duplace name line 
     241                                $vmconf[$section][ $matches[1] ]["dups"][] = $matches[2]; 
     242                        } else if (preg_match("/^\s*#include\s+(.*)\s*([;#].*)?/",$line,$matches)) { 
     243                                // include another file 
     244 
     245                                if ($matches[1][0] == "/") { 
     246                                        // absolute path 
     247                                        $filename = $matches[1]; 
     248                                } else { 
     249                                        // relative path 
     250                                        $filename =  dirname($filename)."/".$matches[1]; 
     251                                } 
     252 
     253                                my_parse_voicemailconf($filename, $vmconf, $section); 
     254 
     255                        } else if (preg_match("/^\s*\[(.+)\]/",$line,$matches)) { 
     256                                // section name 
     257                                $section = strtolower($matches[1]); 
     258                        } else if (preg_match("/^\s*([a-zA-Z0-9-_]+)\s*=\s*(.*?)\s*([;#].*)?$/",$line,$matches)) { 
     259                                // name = value 
     260                                // option line 
     261                                $vmconf[$section][ $matches[1] ] = $matches[2]; 
     262                        } 
     263                } 
     264                fclose($fd);                               
     265        } 
     266
     267 
     268function force_download ($data, $name, $mimetype='', $filesize=false) {  
     269    // File size not set?  
     270    if ($filesize == false OR !is_numeric($filesize)) {  
     271        $filesize = strlen($data);  
     272    }  
     273 
     274    // Mimetype not set?  
     275    if (empty($mimetype)) {  
     276        $mimetype = 'application/octet-stream';  
     277    }  
     278 
     279    // Make sure there's not anything else left  
     280    ob_clean_all();  
     281 
     282    // Start sending headers  
     283    header("Pragma: public"); // required  
     284    header("Expires: 0");  
     285    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");  
     286    header("Cache-Control: private",false); // required for certain browsers  
     287    header("Content-Transfer-Encoding: binary");  
     288    header("Content-Type: " . $mimetype);  
     289    header("Content-Length: " . $filesize);  
     290    header("Content-Disposition: attachment; filename=\"" . $name . "\";" );  
     291 
     292    // Send data  
     293    echo $data;  
     294    die();  
     295}  
     296 
     297function ob_clean_all () {  
     298    $ob_active = ob_get_length () !== false;  
     299    while($ob_active) {  
     300        ob_end_clean();  
     301        $ob_active = ob_get_length () !== false;  
     302    }  
     303 
     304    return true;  
     305
     306 
    2307?> 
     308 
Donate



Support
Download
Develop
Forums
News
Documentation
Paid Support
About

Paid Ads