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; }
$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']); }