Example #1
0
function get_queues($agent = '')
{
    global $queue_details;
    $queue_details = '';
    # Connect to AGI
    $asm = new AGI_AsteriskManager();
    $asm->connect();
    # Add event handler to retrieve results of the query
    $asm->add_event_handler('queueparams', 'asm_event_queues');
    $asm->add_event_handler('queuestatuscomplete', 'asm_event_queues');
    # Get all the queues
    while (!$queue_details) {
        $asm->QueueStatus();
    }
    # Open freePBX database
    $db = Aastra_connect_freePBX_db_Asterisk();
    # Process the list of queues
    $index = 0;
    for ($i = 0; $i < sizeof($queue_details); $i++) {
        # Valid queue
        if (isset($queue_details[$i]['Queue'])) {
            if ($queue_details[$i]['Queue'] != '' && $queue_details[$i]['Queue'] != 'default') {
                # Collect information
                $queues[$index]['Queue'] = $queue_details[$i]['Queue'];
                $queues[$index]['Calls'] = $queue_details[$i]['Calls'];
                $queues[$index]['Holdtime'] = $queue_details[$i]['Holdtime'];
                $queues[$index]['Completed'] = $queue_details[$i]['Completed'];
                $queues[$index]['Abandoned'] = $queue_details[$i]['Abandoned'];
                # Get description and password
                $sql = 'SELECT descr,password FROM queues_config WHERE extension=' . $queue_details[$i]['Queue'];
                $result = $db->query($sql);
                list($queues[$index]['Description'], $queues[$index]['Password']) = $result->fetchRow(DB_FETCHMODE_ARRAY);
                # Next valid queue
                $index++;
            }
        }
    }
    # Dynamic member restricted?
    foreach ($queues as $index => $value) {
        $queues[$index]['Restricted'] = False;
        $queues[$index]['Allowed'] = True;
        $dynmemberonly = $asm->database_get('QPENALTY', $queues[$index]['Queue'] . '/dynmemberonly');
        if ($dynmemberonly == 'yes') {
            $queues[$index]['Restricted'] = True;
            if ($agent != '') {
                if ($asm->database_get('QPENALTY', $queues[$index]['Queue'] . '/agents/' . $agent) == '') {
                    $queues[$index]['Allowed'] = False;
                }
            }
        }
    }
    # Disconnect properly
    $asm->disconnect();
    # Sort by name
    $queues = Aastra_array_multi_sort($queues, 'Description');
    # Return
    return $queues;
}
function lookup_directory($source, $lookup, $firstn, $lastn, $company, $array_user)
{
    # So far so good
    $return[0] = True;
    # Open and read file
    $handle = @fopen($source, 'r');
    $index = 0;
    $directory = array();
    if ($handle) {
        while ($line = fgets($handle, 200)) {
            $value = explode(",", trim($line, "\n"));
            if ($lookup != '') {
                if (stristr($value[0] . ' ' . $value[1] . ' ' . $value[2], $lookup)) {
                    if ($value[4] != '' or $value[5] != '' or $value[6] != '') {
                        $directory[$index]['first'] = $value[0];
                        $directory[$index]['last'] = $value[1];
                        $directory[$index]['company'] = $value[2];
                        $directory[$index]['title'] = $value[3];
                        $directory[$index]['work'] = $value[4];
                        $directory[$index]['home'] = $value[5];
                        $directory[$index]['mobile'] = $value[6];
                        $index++;
                    }
                }
            } else {
                if ($firstn != '') {
                    $test_firstn = starts_with($value[0], $firstn);
                } else {
                    $test_firstn = True;
                }
                if ($lastn != '') {
                    $test_lastn = starts_with($value[1], $lastn);
                } else {
                    $test_lastn = True;
                }
                if ($company != '') {
                    $test_company = starts_with($value[2], $company);
                } else {
                    $test_company = True;
                }
                if ($test_firstn and $test_lastn and $test_company) {
                    if ($value[4] != '' or $value[5] != '' or $value[6] != '') {
                        $directory[$index] = array('first' => $value[0], 'last' => $value[1], 'company' => $value[2], 'title' => $value[3], 'work' => $value[4], 'home' => $value[5], 'mobile' => $value[6]);
                        if ($company != '') {
                            $directory2[$value[2]][] = array('first' => $value[0], 'last' => $value[1], 'index' => $index);
                        }
                        $index++;
                    }
                }
            }
        }
        fclose($handle);
    } else {
        Aastra_debug('Cannot open contact file ' . $source);
        $return[0] = False;
    }
    # Sort the data
    if ($return[0]) {
        switch ($array_user['sort']) {
            case 'first':
                if ($company != '') {
                    foreach ($directory2 as $key => $value) {
                        $directory2[$key] = Aastra_array_multi_sort($value, 'first', 'asc', TRUE);
                    }
                } else {
                    $directory = Aastra_array_multi_sort($directory, 'first', 'asc', TRUE);
                }
                break;
            case 'last':
                if ($company != '') {
                    foreach ($directory2 as $key => $value) {
                        $directory2[$key] = Aastra_array_multi_sort($value, 'last', 'asc', TRUE);
                    }
                } else {
                    $directory = Aastra_array_multi_sort($directory, 'last', 'asc', TRUE);
                }
                break;
        }
        $return[1] = $directory;
        if ($company != '') {
            $return[2] = $directory2;
        }
    }
    # Return results
    return $return;
}
Example #3
0
             $object->addSoftKey('6', Aastra_get_label('Refresh', $language), $XML_SERVER . '&action=show_queue_members&queue=' . $queue . '&q_desc=' . $q_desc);
             $object->addSoftKey('9', Aastra_get_label('Back', $language), $XML_SERVER . '&action=show_queues&queue=' . $queue);
             $object->addSoftKey('10', Aastra_get_label('Exit', $language), 'SoftKey:Exit');
             $object->setCancelAction($XML_SERVER . '&action=show_queues&queue=' . $queue);
         }
     }
     break;
     # Show queue callers
 # Show queue callers
 case 'show_queue_entries':
     # Erase refresh
     @unlink(AASTRA_PATH_CACHE . $header['mac'] . '.queues');
     # Retrieve current members
     $entries = Aastra_get_queue_entries_Asterisk($queue);
     # Sort by position
     $entries = Aastra_array_multi_sort($entries, 'Position');
     # Do we have any
     if (sizeof($entries)) {
         # Display the list
         require_once 'AastraIPPhoneTextMenu.class.php';
         $object = new AastraIPPhoneTextMenu();
         $object->setDestroyOnExit();
         $object->setTitle(sprintf('%s (%s)', $q_desc, $queue));
         if (Aastra_is_style_textmenu_supported()) {
             $object->setStyle('none');
         }
         $index = 1;
         foreach ($entries as $value) {
             if ($index <= AASTRA_MAXLINES) {
                 $object->addEntry(sprintf('%d. %s (%s)', $value['Position'], $value['CallerIDName'], $value['CallerIDNum']), $XML_SERVER . '&action=redirect&queue=' . $queue . '&q_desc=' . $q_desc . '&member=' . $value['Channel'], '&member=' . $value['Channel']);
             }