* * http://the.cushman.net/ * * -------------------------------------------- * * This program is free software; you can redistribute it and/or modify it * * under the terms of the GNU General Public License as published by the * * Free Software Foundation; either version 2 of the License, or (at your * * option) any later version. * \**************************************************************************/ /* $Id$ */ class msg_base { var $msg_struct; var $err = array("code","msg","desc"); var $msg_info = Array(Array()); var $tempfile; var $folder_list_changed = False; var $enable_utf7 = False; var $imap_builtin = True; var $force_msg_uids = False; //var $att_files_dir; var $force_check; var $boundary, $got_structure; function msg_base() { $this->err["code"] = " "; $this->err["msg"] = " "; $this->err["desc"] = " "; $this->tempfile = $GLOBALS['phpgw_info']['server']['temp_dir'].SEP.$GLOBALS['phpgw_info']['user']['sessionid'].'.mhd'; $this->force_check = false; $this->got_structure = false; } function utf7_encode($data) { // handle utf7 encoding of folder names, if necessary if (($this->enable_utf7 == False) || (function_exists('imap_utf7_encode') == False) || (!isset($data))) { return $data; } // data to and from the server can be either array or string if (gettype($data) == 'array') { // array data $return_array = Array(); for ($i=0; $iutf7_encode_string($data[$i]); } return $return_array; } elseif (gettype($data) == 'string') { // string data return $this->utf7_encode_string($data); } else { // ERROR return $data; } } function utf7_encode_string($data_str) { $name = Array(); $name['folder_before'] = ''; $name['folder_after'] = ''; $name['translated'] = ''; // folder name at this stage is {SERVER_NAME:PORT}FOLDERNAME // get everything to the right of the bracket "}", INCLUDES the bracket itself $name['folder_before'] = strstr($data_str,'}'); // get rid of that 'needle' "}" $name['folder_before'] = substr($name['folder_before'], 1); // translate $name['folder_after'] = imap_utf7_encode($name['folder_before']); // replace old folder name with new folder name $name['translated'] = str_replace($name['folder_before'], $name['folder_after'], $data_str); return $name['translated']; } function utf7_decode($data) { // handle utf7 decoding of folder names, if necessary if (($this->enable_utf7 == False) || (function_exists('imap_utf7_decode') == False) || (!isset($data))) { return $data; } // data to and from the server can be either array or string if (gettype($data) == 'array') { // array data $return_array = Array(); for ($i=0; $iutf7_decode_string($data[$i]); } return $return_array; } elseif (gettype($data) == 'string') { // string data return $this->utf7_decode_string($data); } else { // ERROR return $data; } } function utf7_decode_string($data_str) { $name = Array(); $name['folder_before'] = ''; $name['folder_after'] = ''; $name['translated'] = ''; // folder name at this stage is {SERVER_NAME:PORT}FOLDERNAME // get everything to the right of the bracket "}", INCLUDES the bracket itself $name['folder_before'] = strstr($data_str,'}'); // get rid of that 'needle' "}" $name['folder_before'] = substr($name['folder_before'], 1); // translate $name['folder_after'] = imap_utf7_decode($name['folder_before']); // "imap_utf7_decode" returns False if no translation occured if ($name['folder_after'] == False) { // no translation occured return $data_str; } else { // replace old folder name with new folder name $name['translated'] = str_replace($name['folder_before'], $name['folder_after'], $data_str); return $name['translated']; } } function get_flag($stream,$msg_num,$flag) { $header = $this->fetchheader($stream,$msg_num); $flag = strtolower($flag); for ($i=0;$i