setTitle('Directory'); # $directory->setBackURI($XML_SERVER."?action=start"); # $directory->setEntries($records): # $directory->output(); # Page scrolling and record zooming will be handled by AastraIPPhoneScrollableTextMenu ######################################################################################################## require_once('AastraIPPhoneScrollableTextMenu.class.php'); class AastraIPPhoneScrollableDirectory extends AastraIPPhoneScrollableTextMenu { # Variables var $_dialKeyPosition = 2; var $_selectKeyLabel = 'Details'; var $_index = 0; var $_nameDisplayFormat = 0; # 0="Firstname Lastname", 1="Lastname, Firstname" # Constructor function AastraIPPhoneScrollableDirectory() { # Set default style to "none" $this->setStyle('none'); # Set default title $this->setTitle(Aastra_get_label('Directory',$this->_language)); # Call parent constructor parent::AastraIPPhoneScrollableTextMenu(); } function addEntry($record) { # If no name or fistname provided, skip record if (empty($record['name']) && empty($record['firstname'])) return; # Save lastname (needed if we want to sort by lastname) $record['lastname'] = $record['name']; # Set display name if ($this->_nameDisplayFormat==0) $record['name'] = trim((isset($record['firstname'])) ? $record['firstname'] . ' ' . $record['name'] : $record['name']); else $record['name'] = trim((isset($record['firstname'])) ? $record['name'] . ', ' . $record['firstname'] : $record['name']); # If actual digits are not provided, use display format number. if (empty($record['officeDigits'])) $record['officeDigits'] = $record['office']; if (empty($record['mobileDigits'])) $record['mobileDigits'] = $record['mobile']; if (empty($record['homeDigits'])) $record['homeDigits'] = $record['home']; if (empty($record['office2Digits'])) $record['office2Digits'] = $record['office2']; # Remove non-numeric digits $record['officeDigits'] = preg_replace('/[^0-9]/','',$record['officeDigits']); $record['mobileDigits'] = preg_replace('/[^0-9]/','',$record['mobileDigits']); $record['homeDigits'] = preg_replace('/[^0-9]/','',$record['homeDigits']); $record['office2Digits'] = preg_replace('/[^0-9]/','',$record['office2Digits']); # Set instant dial number (to be dialed when hook is lifted in list view / when dial key is pressed in list view) if (!empty($record['officeDigits'])) $record['dial'] = $record['officeDigits']; else if (!empty($record['office2Digits'])) $record['dial'] = $record['office2Digits']; else if (!empty($record['mobileDigits'])) $record['dial'] = $record['mobileDigits']; else if (!empty($record['homeDigits'])) $record['dial'] = $record['homeDigits']; $record['url'] = $this->_scrollHandlerReference.'&zoomIndex='.$this->_index; # We need to save the index as a field as the order of $this->_list can change after sorting $record['index'] = $this->_index; # Add record to text menu list entries $this->_list[$this->_index] = $record; $this->_index++; } function setEntries($records) { # Empty list? if (empty($records)) return; # Clear list $this->_list = array(); foreach ($records as $record) $this->addEntry($record); } function zoom($index, $recentPage, $recentSelection) { # Find record matching the given index foreach ($this->_list as $record) { if ($record['index']==$index) { $myrecord = $record; break; } } # Textmenu for the zoom $menu = new AastraIPPhoneTextMenu(); $menu->setDestroyOnExit(); if (Aastra_is_style_textmenu_supported()) $menu->setStyle('none'); if (Aastra_is_wrap_title_supported())$menu->setTitleWrap(); if (Aastra_is_textmenu_wrapitem_supported()) $menu->setWrapList(); $menu->setTitle($myrecord['name']); # Default Index $defaultIndex = 1; if(!empty($myrecord['title'])) { $menu->addEntry($myrecord['title'], NULL, NULL); $defaultIndex++; } if(!empty($myrecord['department'])) { $menu->addEntry($myrecord['department'], NULL, NULL); $defaultIndex++; } if(!empty($myrecord['company'])) { $menu->addEntry($myrecord['company'], NULL, NULL); $defaultIndex++; } $menu->setDefaultIndex($defaultIndex); # If Dial2 softkey is supported, add 'Dial:' Prefix to URL (so number can be dialed by pressing right navigation key) if (!Aastra_test_phone_version('2.0.1.',1)) $URLprefix = 'Dial:'; else $URLprefix = ''; # Office Number if(!empty($myrecord['office'])) { if (Aastra_is_icons_supported()) { $iconIndex = 10; $prompt=''; } else { $iconIndex = NULL; $prompt=Aastra_get_label('(W)',$this->_language).' '; } if (!Aastra_test_phone_version('2.0.1.',1)) $menu->addEntry($prompt.$myrecord['office'], $URLprefix.$myrecord['officeDigits'], $myrecord['officeDigits'], $iconIndex, $myrecord['officeDigits']); else $menu->addEntry($prompt.$myrecord['office'], $URLprefix.$myrecord['officeDigits'], $myrecord['officeDigits']); } # Office 2 number if(!empty($myrecord['office2'])) { if (Aastra_is_icons_supported()) { $iconIndex = 10; $prompt=''; } else { $iconIndex = NULL; $prompt=Aastra_get_label('(W)',$this->_language).' '; } if (!Aastra_test_phone_version('2.0.1.',1)) $menu->addEntry($prompt.$myrecord['office2'], $URLprefix.$myrecord['office2Digits'], $myrecord['officeDigits'], $iconIndex, $myrecord['office2Digits']); else $menu->addEntry($prompt.$myrecord['office2'], $URLprefix.$myrecord['office2Digits'], $myrecord['officeDigits']); } # Mobile number if(!empty($myrecord['mobile'])) { if (Aastra_is_icons_supported()) { $iconIndex = 11; $prompt=''; } else { $iconIndex = NULL; $prompt=Aastra_get_label('(C)',$this->_language).' '; } if (!Aastra_test_phone_version('2.0.1.',1)) $menu->addEntry($prompt.$myrecord['mobile'], $URLprefix.$myrecord['mobileDigits'], $myrecord['officeDigits'], $iconIndex, $myrecord['mobileDigits']); else $menu->addEntry($prompt.$myrecord['mobile'], $URLprefix.$myrecord['mobileDigits'], $myrecord['officeDigits']); } # Home number if(!empty($myrecord['home'])) { if (Aastra_is_icons_supported()) { $iconIndex = 12; $prompt=''; } else { $iconIndex = NULL; $prompt=Aastra_get_label('(H)',$this->_language).' '; } if (!Aastra_test_phone_version('2.0.1.',1)) $menu->addEntry($prompt.$myrecord['home'], $URLprefix.$myrecord['homeDigits'], $myrecord['officeDigits'], $iconIndex, $myrecord['homeDigits']); else $menu->addEntry($prompt.$myrecord['home'], $URLprefix.$myrecord['homeDigits'], $myrecord['officeDigits']); } # Softkeys if (Aastra_is_softkeys_supported()) { if (Aastra_number_softkeys_supported()!=10) { # Regular phone with 6 softkeys if (!Aastra_test_phone_version('2.0.1.',1)) $dialKeyType = 'SoftKey:Dial2'; else $dialKeyType = 'SoftKey:Dial'; $menu->addSoftkey(1, Aastra_get_label('Dial',$this->_language), $dialKeyType); $menu->addSoftkey(3, Aastra_get_label('Back',$this->_language), $this->_scrollHandlerReference.'&listPage='.$recentPage.'&recentSelection='.$recentSelection); $menu->addSoftkey(6, Aastra_get_label('Exit',$this->_language), 'SoftKey:Exit'); # Check if speed dial URL is set if (isset($myrecord['speedURL'])) $menu->addSoftkey(4, Aastra_get_label('Add to Speed Dial',$this->_language), $myrecord['speedURL']); } else { # 6739i $menu->addSoftkey(9, Aastra_get_label('Back',$this->_language), $this->_scrollHandlerReference.'&listPage='.$recentPage.'&recentSelection='.$recentSelection,8); $menu->addSoftkey(10, Aastra_get_label('Exit',$this->_language), 'SoftKey:Exit',9); # Check if speed dial URL is set if (isset($myrecord['speedURL'])) $menu->addSoftkey(6, Aastra_get_label('+Speed',$this->_language), $myrecord['speedURL']); } } # Icons if(Aastra_is_icons_supported()) { if(Aastra_phone_type()!=5) { $menu->addIcon(10,Aastra_get_custom_icon('Office')); $menu->addIcon(11,Aastra_get_custom_icon('Cellphone')); $menu->addIcon(12,Aastra_get_custom_icon('Home')); } else { $menu->addIcon(8,'Icon:ArrowLeft'); $menu->addIcon(9,'Icon:CircleRed'); $menu->addIcon(10,'Icon:Office'); $menu->addIcon(11,'Icon:CellPhone'); $menu->addIcon(12,'Icon:Home'); } } # Cancel action $menu->setCancelAction($this->_scrollHandlerReference.'&listPage='.$recentPage.'&recentSelection='.$recentSelection); # Display XML object $menu->output(); } function _setupSoftKeys() { # Check if softkeys and the Dial2 softkey is supported. Don't put dial key on 6739i if (Aastra_is_softkeys_supported() && !Aastra_test_phone_version('2.0.1.',1) && Aastra_phone_type()!=5) $this->addSoftkey($this->_dialKeyPosition, Aastra_get_label('Dial',$this->_language), 'SoftKey:Dial2'); parent::_setupSoftKeys(); } function setDialKeyPosition($position) { $this->_dialKeyPosition = $position; } function setNameDisplayFormat($format) { $this->_nameDisplayFormat = $format; } function natsortByLastname() { if (empty($this->_list)) return; $tmpary = array(); foreach ($this->_list as $id => $entry) $tmpary[$id] = $entry['lastname']; natsort($tmpary); foreach ($tmpary as $key => $valude) $new[] = $this->_list[$key]; $this->_list = $new; } function natsortByFirstname() { if (empty($this->_list)) return; $tmpary = array(); foreach ($this->_list as $id => $entry) $tmpary[$id] = $entry['firstname']; natsort($tmpary); foreach ($tmpary as $key => $valude) $new[] = $this->_list[$key]; $this->_list = $new; } } ?>