Changeset 5250

Show
Ignore:
Timestamp:
11/18/07 20:02:26 (1 year ago)
Author:
p_lindheimer
Message:

- fixed hints for adhoc devices to check astdb settings
- added core_check_extensions() for extension registry
- added core_check_destiantions() for destination registry
- added checks for conflicts on overlapping extensions through registry

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • modules/branches/2.4/core/functions.inc.php

    r5228 r5250  
    395395                                                 
    396396                                        $hint = core_hint_get($exten['extension']); 
    397                                         if (!empty($hint)) 
     397                                        if (!empty($hint)) { 
    398398                                                $ext->addHint('ext-local', $exten['extension'], $hint); 
     399                                        } 
    399400                                        if ($exten['sipname']) { 
    400401                                                $ext->add('ext-local', $exten['sipname'], '', new ext_goto('1',$item[0],'from-internal')); 
     
    504505                                                        // Then do one call to user-callerid and record-enable instead of each time as in the past 
    505506                                                        // 
     507                                                        $ext->add($outrt['application'], $exten['extension'], '', new ext_macro('user-callerid,SKIPTTL')); 
    506508                                                        $ext->add($outrt['application'], $exten['extension'], '', new ext_setvar("_NODEST","")); 
    507                                                         $ext->add($outrt['application'], $exten['extension'], '', new ext_macro('user-callerid,SKIPTTL')); 
    508509                                                        $ext->add($outrt['application'], $exten['extension'], '', new ext_macro('record-enable,${AMPUSER},OUT')); 
    509510                                                        $lastexten = $exten['extension']; 
     
    819820                $astman->database_put("DEVICE",$id."/type",$devicetype); 
    820821                $astman->database_put("DEVICE",$id."/default_user",$user); 
    821                 if(!empty($emergency_cid)) { 
     822                if($emergency_cid != '') { 
    822823                        $astman->database_put("DEVICE",$id."/emergency_cid","\"".$emergency_cid."\""); 
    823824                } 
     
    959960                        $astman->database_put("DEVICE",$id."/type",$devicetype); 
    960961                        $astman->database_put("DEVICE",$id."/user",$user);               
     962                        $astman->database_put("DEVICE",$id."/default_user",$user); 
     963                        if(trim($emergency_cid) != '') { 
     964                                $astman->database_put("DEVICE",$id."/emergency_cid","\"".$emergency_cid."\""); 
     965                        } 
    961966                        // If a user is selected, add this device to the user 
    962967                        if ($user != "none") { 
     
    12611266 
    12621267function core_hint_get($account){ 
    1263         //determine what devices this user is associated with 
    1264         $sql = "SELECT dial from devices where user = '{$account}'"; 
     1268        global $astman; 
     1269 
     1270        // We should always check the AMPUSER in case they logged into a device 
     1271        // but we will fall back to the old methond if $astman not open although 
     1272        // I'm pretty sure everything else will puke anyhow if not running 
     1273        // 
     1274        if ($astman) { 
     1275                $device=$astman->database_get("AMPUSER",$account."/device"); 
     1276                $device_arr = explode('&',$device); 
     1277                $sql = "SELECT dial from devices where id in ('".implode("','",$device_arr)."')"; 
     1278        } else { 
     1279                $sql = "SELECT dial from devices where user = '{$account}'"; 
     1280        } 
    12651281        $results = sql($sql,"getAll",DB_FETCHMODE_ASSOC); 
    1266         //print_r($results); 
    12671282         
    12681283        //create an array of strings 
     
    13111326} 
    13121327 
     1328function core_check_extensions($exten=true) { 
     1329        global $amp_conf; 
     1330 
     1331        $extenlist = array(); 
     1332        if (is_array($exten) && empty($exten)) { 
     1333                return $extenlist; 
     1334        } 
     1335        $sql = "SELECT extension, name FROM users "; 
     1336        if (is_array($exten)) { 
     1337                $sql .= "WHERE extension in ('".implode("','",$exten)."')"; 
     1338        } 
     1339        $sql .= " ORDER BY extension"; 
     1340        $results = sql($sql,"getAll",DB_FETCHMODE_ASSOC); 
     1341 
     1342        foreach ($results as $result) { 
     1343                $thisexten = $result['extension']; 
     1344                $extenlist[$thisexten]['description'] = _("User Extension: ").$result['name']; 
     1345                $extenlist[$thisexten]['status'] = 'INUSE'; 
     1346                $display = ($amp_conf['AMPEXTENSIONS'] == "deviceanduser")?'users':'extensions'; 
     1347                $extenlist[$thisexten]['edit_url'] = "config.php?type=setup&display=$display&extdisplay=".urlencode($thisexten)."&skip=0"; 
     1348        } 
     1349        return $extenlist; 
     1350} 
     1351 
     1352function core_check_destinations($dest=true) { 
     1353        global $active_modules; 
     1354 
     1355        $destlist = array(); 
     1356        if (is_array($dest) && empty($dest)) { 
     1357                return $destlist; 
     1358        } 
     1359        $sql = "SELECT extension, cidnum, channel, description, destination FROM incoming "; 
     1360        if ($dest !== true) { 
     1361                $sql .= "WHERE destination in ('".implode("','",$dest)."')"; 
     1362        } 
     1363        $sql .= "ORDER BY extension, cidnum, channel"; 
     1364        $results = sql($sql,"getAll",DB_FETCHMODE_ASSOC); 
     1365 
     1366        //$type = isset($active_modules['announcement']['type'])?$active_modules['announcement']['type']:'setup'; 
     1367 
     1368        foreach ($results as $result) { 
     1369                $thisdest = $result['destination']; 
     1370                $thisid   = $result['extension'].'/'.$result['cidnum'].'/'.$result['channel']; 
     1371                $destlist[] = array( 
     1372                        'dest' => $thisdest, 
     1373                        'description' => 'Inbound Route: '.$result['description'].' ('.$thisid.')', 
     1374                        'edit_url' => 'config.php?display=did&extdisplay='.urlencode($thisid), 
     1375                ); 
     1376        } 
     1377        return $destlist; 
     1378} 
     1379 
    13131380function core_sipname_check($sipname, $extension) { 
    13141381        global $db; 
     
    13281395} 
    13291396 
    1330 function core_users_add($vars) { 
     1397function core_users_add($vars, $editmode=false) { 
    13311398        extract($vars); 
    13321399         
     
    14551522                $astman->database_put("AMPUSER",$extension."/cidnum",$cid_masquerade); 
    14561523                $astman->database_put("AMPUSER",$extension."/voicemail","\"".isset($voicemail)?$voicemail:''."\""); 
    1457                 $astman->database_put("AMPUSER",$extension."/device","\"".((isset($device))?$device:'')."\""); 
     1524                if (!$editmode) { 
     1525                        $astman->database_put("AMPUSER",$extension."/device","\"".((isset($device))?$device:'')."\""); 
     1526                } 
    14581527 
    14591528                if (trim($callwaiting) == 'enabled') { 
     
    15461615} 
    15471616 
    1548 function core_users_del($extension){ 
     1617function core_users_del($extension, $editmode=false){ 
    15491618        global $db; 
    15501619        global $amp_conf; 
     
    15591628 
    15601629        //delete details to astdb 
    1561         if ($astman) { 
     1630        if ($astman && !$editmode) { 
    15621631                $astman->database_del("AMPUSER",$extension."/password"); 
    15631632                $astman->database_del("AMPUSER",$extension."/ringtimer"); 
     
    15691638                $astman->database_del("AMPUSER",$extension."/voicemail"); 
    15701639                $astman->database_del("AMPUSER",$extension."/device"); 
    1571         } else { 
    1572                 fatal("Cannot connect to Asterisk Manager with ".$amp_conf["AMPMGRUSER"]."/".$amp_conf["AMPMGRPASS"]); 
    15731640        } 
    15741641} 
     
    16341701        //delete and re-add 
    16351702        if (core_sipname_check($vars['sipname'],$extension)) { 
    1636                 core_users_del($extension); 
    1637                 core_users_add($vars); 
     1703                core_users_del($extension, true); 
     1704                core_users_add($vars, true); 
    16381705        } 
    16391706        return true; 
     
    28262893                        if ( $display == 'extensions' ) { 
    28272894                                $currentcomponent->addguielem('_top', new gui_pageheading('title', _("Extension").": $extdisplay", false), 0); 
    2828                                 $currentcomponent->addguielem('_top', new gui_link('del', _("Delete Extension")." $extdisplay", $delURL, true, false), 0); 
     2895                                if (!isset($GLOBALS['abort']) || $GLOBALS['abort'] !== true) { 
     2896                                        $currentcomponent->addguielem('_top', new gui_link('del', _("Delete Extension")." $extdisplay", $delURL, true, false), 0); 
     2897                                } 
    28292898                        } else { 
    28302899                                $currentcomponent->addguielem('_top', new gui_pageheading('title', _("User").": $extdisplay", false), 0); 
    2831                                 $currentcomponent->addguielem('_top', new gui_link('del', _("Delete User")." $extdisplay", $delURL, true, false), 0); 
     2900                                if (!isset($GLOBALS['abort']) || $GLOBALS['abort'] !== true) { 
     2901                                        $currentcomponent->addguielem('_top', new gui_link('del', _("Delete User")." $extdisplay", $delURL, true, false), 0); 
     2902                                } 
    28322903                        } 
    28332904 
     
    29282999                switch ($action) { 
    29293000                        case "add": 
    2930                                 if (core_users_add($_REQUEST)) { 
     3001                                $conflict_url = array(); 
     3002                                $usage_arr = framework_check_extension_usage($_REQUEST['extension']); 
     3003                                if (!empty($usage_arr)) { 
     3004                                        $GLOBALS['abort'] = true; 
     3005                                        $conflict_url = framework_display_extension_usage_alert($usage_arr,true); 
     3006                                        global $currentcomponent; 
     3007                                        $id=0; 
     3008                                        foreach ($conflict_url as $edit_link) { 
     3009                                                $currentcomponent->addguielem('_top', new gui_link('conflict'.$i++, $edit_link['label'], $edit_link['url'])); 
     3010                                        } 
     3011                                } elseif (core_users_add($_REQUEST)) { 
    29313012                                        needreload(); 
    29323013                                        redirect_standard_continue();