" . _("Voicemail") . "

"; } return $ret; } /* * Deletes selected voicemails and updates page * * @param $args * Common arguments */ function navSubMenu($args) { global $ASTERISK_VOICEMAIL_PATH; global $ASTERISK_VOICEMAIL_FOLDERS; // args $m = getArgument($args,'m'); $q = getArgument($args,'q'); $current_folder = getArgument($args,'folder'); $context = $_SESSION['ari_user']['context']; $extension = $_SESSION['ari_user']['extension']; // check for voicemail enabled or admin if ($_SESSION['ari_user']['voicemail_enabled']!=1 || $extension=='admin') { return; } // make folder list $paths = split(';',$ASTERISK_VOICEMAIL_PATH); $i = 0; while ($ASTERISK_VOICEMAIL_FOLDERS[$i]) { $f = $ASTERISK_VOICEMAIL_FOLDERS[$i]['folder']; $fn = $ASTERISK_VOICEMAIL_FOLDERS[$i]['name']; foreach($paths as $key => $path) { $path = appendPath($path,$context); $path = appendPath($path,$extension); if (is_dir($path) && is_readable($path)) { $dh = opendir($path); while (false!== ($folder = readdir($dh))) { $folder_path = AppendPath($path,$folder); if($folder!="." && $folder!=".." && filetype($folder_path)=='dir') { if ($f==$folder) { // get message count $indexes = $this->getVoicemailIndex($folder_path,$q,$order,$sort); $record_count = 0; $record_count += $this->getVoicemailCount($indexes); // set current folder color $class=''; if ($current_folder==$folder || ($current_folder=='' && $ASTERISK_VOICEMAIL_FOLDERS[0]['folder']==$folder)) { $class = "class='current'"; } // add folder to list $ret .= "

" . $fn . " (" . $record_count . ")" . "

"; } } } } } $i++; } return $ret; } /* * Acts on the selected voicemails in the method indicated by the action and updates page * * @param $args * Common arguments */ function msgAction($args) { global $ASTERISK_VOICEMAIL_FOLDERS; // args $m = getArgument($args,'m'); $a = getArgument($args,'a'); $folder = getArgument($args,'folder'); $q = getArgument($args,'q'); $start = getArgument($args,'start'); $span = getArgument($args,'span'); $order = getArgument($args,'order'); $sort = getArgument($args,'sort'); // get files $files = array(); foreach($_REQUEST as $key => $value) { if (preg_match('/selected/',$key)) { array_push($files, $value); } } if ($a=='delete') { $this->deleteVoicemailData($files); } else if ($a=='move_to') { $folder_rx = getArgument($args,'folder_rx'); if ($folder_rx=='') { $_SESSION['ari_error'] = _("A folder must be selected before the message can be moved."); } else { $context = $_SESSION['ari_user']['context']; $extension = $_SESSION['ari_user']['extension']; $this->moveVoicemailData($files, $context, $extension, $folder_rx); } } else if ($a=='forward_to') { $mailbox_rx = getArgument($args,'mailbox_rx'); list($context_rx,$extension_rx) = split('/',$mailbox_rx); if ($extension_rx=='') { $_SESSION['ari_error'] = _("An extension must be selected before the message can be forwarded."); } else { $folder_rx = $ASTERISK_VOICEMAIL_FOLDERS[0]['folder']; $this->moveVoicemailData($files, $context_rx, $extension_rx, $folder_rx); } } // redirect to see updated page $ret .= " "; return $ret; } /* * Displays stats page * * @param $args * Common arguments */ function display($args) { global $ASTERISK_VOICEMAIL_CONF; global $ASTERISK_VOICEMAIL_PATH; global $ASTERISK_VOICEMAIL_FOLDERS; global $AJAX_PAGE_REFRESH_ENABLE; $voicemail_audio_format = $_COOKIE['ari_voicemail_audio_format']; $display = new DisplaySearch(); // args $m = getArgument($args,'m'); $f = getArgument($args,'f'); $q = getArgument($args,'q'); $start = getArgument($args,'start'); $span = getArgument($args,'span'); $order = getArgument($args,'order'); $sort = getArgument($args,'sort'); $start = $start=='' ? 0 : $start; $span = $span=='' ? 15 : $span; $order = $order=='' ? 'calldate' : $order; $sort = $sort=='' ? 'desc' : $sort; $paths = split(';',$ASTERISK_VOICEMAIL_PATH); $displayname = $_SESSION['ari_user']['displayname']; $extension = $_SESSION['ari_user']['extension']; $context = $_SESSION['ari_user']['context']; $folder = getArgument($args,'folder'); if (!$folder) { $folder = $ASTERISK_VOICEMAIL_FOLDERS[0]['folder']; } // get data $data = array(); foreach($paths as $key => $path) { $path = fixPathSlash($path); $vm_path = $path . "$context/$extension/$folder"; $indexes = $this->getVoicemailIndex($vm_path,$q,$order,$sort); $record_count += $this->getVoicemailCount($indexes); $data = array_merge($data,$this->getVoicemailData($indexes,$start,$span)); } // build controls // get the recordings from the asterisk server $filter = ''; $recursiveMax = 1; $recursiveCount = 0; $files = array(); foreach($paths as $key => $path) { $path_files = GetFiles($path,$filter,$recursiveMax,$recursiveCount); $files = array_merge($files,$path_files); } // move options $i=0; while ($ASTERISK_VOICEMAIL_FOLDERS[$i]) { $cf = $ASTERISK_VOICEMAIL_FOLDERS[$i]['folder']; $fn = $ASTERISK_VOICEMAIL_FOLDERS[$i]['name']; if ($cf!=$folder) { $move_options .= "