formatting

This commit is contained in:
Miles Lott 2002-05-26 20:22:24 +00:00
parent 2a6ff0ffd4
commit 3861b64b16
3 changed files with 333 additions and 341 deletions

View File

@ -21,6 +21,8 @@
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
\**************************************************************************/ \**************************************************************************/
/* $Id$ */
class msg extends msg_base class msg extends msg_base
{ {
/**************************************************************************\ /**************************************************************************\
@ -247,7 +249,6 @@
return $this->server_last_error_str; return $this->server_last_error_str;
} }
/**************************************************************************\ /**************************************************************************\
* Functions NOT YET IMPLEMENTED * Functions NOT YET IMPLEMENTED
\**************************************************************************/ \**************************************************************************/
@ -349,7 +350,6 @@
return $empty_return; return $empty_return;
} }
/**************************************************************************\ /**************************************************************************\
* OPEN and CLOSE Server Connection * OPEN and CLOSE Server Connection
\**************************************************************************/ \**************************************************************************/
@ -773,11 +773,11 @@
// build the query string // build the query string
$query_str = ''; $query_str = '';
$available_options = Array( $available_options = Array(
SA_MESSAGES => 'MESSAGES', SA_MESSAGES => 'MESSAGES',
SA_RECENT => 'RECENT', SA_RECENT => 'RECENT',
SA_UNSEEN => 'UNSEEN', SA_UNSEEN => 'UNSEEN',
SA_UIDNEXT => 'UIDNEXT', SA_UIDNEXT => 'UIDNEXT',
SA_UIDVALIDITY => 'UIDVALIDITY' SA_UIDVALIDITY => 'UIDVALIDITY'
); );
@reset($available_options); @reset($available_options);
while(list($key,$value) = each($available_options)) while(list($key,$value) = each($available_options))
@ -974,8 +974,8 @@
* Message Sorting * Message Sorting
\**************************************************************************/ \**************************************************************************/
// options/flags are: // options/flags are:
//SE_UID Return UIDs instead of sequence numbers //SE_UID Return UIDs instead of sequence numbers
//SE_NOPREFETCH Don't prefetch searched messages. //SE_NOPREFETCH Don't prefetch searched messages.
function sort($stream_notused='',$criteria=SORTARRIVAL,$reverse=False,$options='') function sort($stream_notused='',$criteria=SORTARRIVAL,$reverse=False,$options='')
{ {
if ($this->debug >= 1) { echo 'imap: sort<br>'; } if ($this->debug >= 1) { echo 'imap: sort<br>'; }
@ -1099,7 +1099,6 @@
} }
*/ */
/**************************************************************************\ /**************************************************************************\
* Message Envelope (Header Info) Data * Message Envelope (Header Info) Data
\**************************************************************************/ \**************************************************************************/
@ -1109,7 +1108,6 @@
return False; return False;
} }
/**************************************************************************\ /**************************************************************************\
* More Data Communications (dcom) With IMAP Server * More Data Communications (dcom) With IMAP Server
\**************************************************************************/ \**************************************************************************/
@ -1123,7 +1121,6 @@
return False; return False;
} }
/**************************************************************************\ /**************************************************************************\
* Get Message Headers From Server * Get Message Headers From Server
\**************************************************************************/ \**************************************************************************/
@ -1170,7 +1167,6 @@
return $field_element; return $field_element;
} }
function fetch_field($start,$stop,$element) function fetch_field($start,$stop,$element)
{ {
if(!$this->write_port('a001 FETCH '.$start.':'.$stop.' '.$element)) if(!$this->write_port('a001 FETCH '.$start.':'.$stop.' '.$element))
@ -1190,7 +1186,6 @@
return $field_element; return $field_element;
} }
/**************************************************************************\ /**************************************************************************\
* Get Message Body (Parts) From Server * Get Message Body (Parts) From Server
\**************************************************************************/ \**************************************************************************/
@ -1210,7 +1205,5 @@
if ($this->debug >= 1) { echo 'imap: get_body<br>'; } if ($this->debug >= 1) { echo 'imap: get_body<br>'; }
return False; return False;
} }
} }
?> ?>

View File

@ -1,7 +1,7 @@
<?php <?php
/**************************************************************************\ /**************************************************************************\
* phpGroupWare Email - POP3 Mail Wrapper for Imap Enabled PHP * * phpGroupWare Email - POP3 Mail Wrapper for Imap Enabled PHP *
* http://www.phpgroupware.org/ * * * http://www.phpgroupware.org/ *
* -------------------------------------------------------------------------* * -------------------------------------------------------------------------*
* This library is part of phpGroupWare (http://www.phpgroupware.org) * * This library is part of phpGroupWare (http://www.phpgroupware.org) *
* This library is free software; you can redistribute it and/or modify it * * This library is free software; you can redistribute it and/or modify it *
@ -205,4 +205,3 @@
return $folder_str; return $folder_str;
} }
} // end of class msg } // end of class msg

View File

@ -21,178 +21,197 @@
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
\**************************************************************************/ \**************************************************************************/
class msg extends msg_base /* $Id$ */
{
var $db;
var $folder;
var $start_msg;
var $end_msg;
function mode_reader() class msg extends msg_base
{ {
return $this->msg2socket('mode reader','^20[01]',&$response); var $db;
} var $folder;
var $start_msg;
var $end_msg;
function login ($user,$passwd,$server,$port,$folder = '') function mode_reader()
{
global $phpgw;
$this->db = $phpgw->db;
if(@!$server)
{ {
echo 'Error: Configuration Error! The administrator has not configured the NNTP Server.'; return $this->msg2socket('mode reader','^20[01]',&$response);
} }
if(@!$port) function login ($user,$passwd,$server,$port,$folder = '')
{ {
$port = 119; $this->db = $GLOBALS['phpgw']->db;
}
if (!$this->open_port($server,$port,15)) if(@!$server)
{ {
$this->error(); echo 'Error: Configuration Error! The administrator has not configured the NNTP Server.';
} }
$this->read_port();
if ($user <> '' && $passwd <> '') if(@!$port)
{ {
if (!$this->msg2socket('authinfo user '.$user,'^381',&$response)) $port = 119;
}
if (!$this->open_port($server,$port,15))
{ {
$this->error(); $this->error();
} }
if (!$this->msg2socket('authinfo pass '.$passwd,'^281',&$response)) $this->read_port();
if ($user <> '' && $passwd <> '')
{
if (!$this->msg2socket('authinfo user '.$user,'^381',&$response))
{
$this->error();
}
if (!$this->msg2socket('authinfo pass '.$passwd,'^281',&$response))
{
$this->error();
}
}
if (!$this->mode_reader())
{ {
$this->error(); $this->error();
} }
}
if (!$this->mode_reader())
{
$this->error();
}
if(!$folder)
{
$folder = $this->get_first_folder();
if(!$folder) if(!$folder)
{ {
$this->error(); $folder = $this->get_first_folder();
if(!$folder)
{
$this->error();
}
} }
$this->folder = $folder;
$this->mailbox = $this->get_mailbox_name($folder);
$this->num_msgs = $this->num_msg($this->mailbox);
$this->start_msg = $this->first_message($this->mailbox);
$this->end_msg = $this->last_message($this->mailbox);
echo 'Successful connection to '.$this->mailbox."<br>\n";
} }
$this->folder = $folder;
$this->mailbox = $this->get_mailbox_name($folder);
$this->num_msgs = $this->num_msg($this->mailbox);
$this->start_msg = $this->first_message($this->mailbox);
$this->end_msg = $this->last_message($this->mailbox);
echo 'Successful connection to '.$this->mailbox."<br>\n";
}
function fix_folder($folder='') function fix_folder($folder='')
{
if($folder=='')
{ {
$mailbox = $this->mailbox; if($folder=='')
}
elseif(is_int($folder))
{
$mailbox = $this->get_mailbox_name($folder);
}
else
{
$mailbox = $folder;
}
return $mailbox;
}
function get_first_folder()
{
if(@!$GLOBALS['phpgw_info']['user']['preferences']['nntp'])
{
$this->set_error('Configuration','User Preferences','You have not set your user preferences in NNTP.');
$this->error();
}
else
{
$pref = @each($GLOBALS['phpgw_info']['user']['preferences']['nntp']);
return $pref[0];
}
}
function get_mailbox_name($folder)
{
$active = False;
$this->db->query('SELECT name,active FROM newsgroups WHERE con='.$folder,_LINE__,__FILE__);
if ($this->db->num_rows() > 0)
{
$this->db->next_record();
$mailbox = $this->db->f('name');
}
if ($this->db->f('active') != 'Y')
{
$GLOBALS['phpgw']->preferences->delete('nntp',$folder);
$GLOBALS['phpgw']->preferences->save_repository();
$this->set_error('Administration','Automatic Disabling','The newsgroup '.$mailbox.' is not activated by the Administrator.');
$this->error();
}
return $mailbox;
}
function get_mailbox_counts($folder='',$index=1)
{
$mailbox = $this->fix_folder($folder);
if (!$this->msg2socket('group '.$mailbox,'^211',&$response))
{
$this->error();
}
$temp_array = explode(' ',$response);
return $temp_array[$index];
}
function num_msg($folder='')
{
if(($folder == '' || $folder == $this->mailbox) && isset($this->num_msgs))
{
return $this->num_msgs;
}
return $this->get_mailbox_counts($folder,1);
}
function first_message($folder='')
{
if(($folder == '' || $folder == $this->mailbox) && isset($this->start_msg))
{
return $this->start_msg;
}
return $this->get_mailbox_counts($folder,2);
}
function last_message($folder='')
{
if(($folder == '' || $folder == $this->mailbox) && isset($this->end_msg))
{
return $this->end_msg;
}
return $this->get_mailbox_counts($folder,3);
}
function mailboxmsginfo($folder='')
{
$info = new msg_mb_info;
if($folder=='' || $folder==$this->mailbox || $folder==$this->folder)
{
if(isset($this->num_msgs))
{ {
$info->messages = $this->num_msgs; $mailbox = $this->mailbox;
}
elseif(is_int($folder))
{
$mailbox = $this->get_mailbox_name($folder);
} }
else else
{ {
if($folder==$this->folder) $mailbox = $folder;
{
$this->mailbox = $this->get_mailbox_name($folder);
}
$info->messages = $this->num_msg($this->mailbox);
} }
return $mailbox;
}
function get_first_folder()
{
if(@!$GLOBALS['phpgw_info']['user']['preferences']['nntp'])
{
$this->set_error('Configuration','User Preferences','You have not set your user preferences in NNTP.');
$this->error();
}
else
{
$pref = @each($GLOBALS['phpgw_info']['user']['preferences']['nntp']);
return $pref[0];
}
}
function get_mailbox_name($folder)
{
$active = False;
$this->db->query('SELECT name,active FROM newsgroups WHERE con='.$folder,_LINE__,__FILE__);
if ($this->db->num_rows() > 0)
{
$this->db->next_record();
$mailbox = $this->db->f('name');
}
if ($this->db->f('active') != 'Y')
{
$GLOBALS['phpgw']->preferences->delete('nntp',$folder);
$GLOBALS['phpgw']->preferences->save_repository();
$this->set_error('Administration','Automatic Disabling','The newsgroup '.$mailbox.' is not activated by the Administrator.');
$this->error();
}
return $mailbox;
}
function get_mailbox_counts($folder='',$index=1)
{
$mailbox = $this->fix_folder($folder);
if (!$this->msg2socket('group '.$mailbox,'^211',&$response))
{
$this->error();
}
$temp_array = explode(' ',$response);
return $temp_array[$index];
}
function num_msg($folder='')
{
if(($folder == '' || $folder == $this->mailbox) && isset($this->num_msgs))
{
return $this->num_msgs;
}
return $this->get_mailbox_counts($folder,1);
}
function first_message($folder='')
{
if(($folder == '' || $folder == $this->mailbox) && isset($this->start_msg))
{
return $this->start_msg;
}
return $this->get_mailbox_counts($folder,2);
}
function last_message($folder='')
{
if(($folder == '' || $folder == $this->mailbox) && isset($this->end_msg))
{
return $this->end_msg;
}
return $this->get_mailbox_counts($folder,3);
}
function mailboxmsginfo($folder='')
{
$info = new msg_mb_info;
if($folder=='' || $folder==$this->mailbox || $folder==$this->folder)
{
if(isset($this->num_msgs))
{
$info->messages = $this->num_msgs;
}
else
{
if($folder==$this->folder)
{
$this->mailbox = $this->get_mailbox_name($folder);
}
$info->messages = $this->num_msg($this->mailbox);
}
$info->size = 0;
if ($info->messages)
{
return $info;
}
else
{
return False;
}
}
else
{
$mailbox = $this->fix_folder($folder);
}
$info->messages = $this->num_msgs($mailbox);
$info->size = 0; $info->size = 0;
$this->num_msgs($this->mailbox);
if ($info->messages) if ($info->messages)
{ {
return $info; return $info;
@ -202,123 +221,104 @@
return False; return False;
} }
} }
else
function fetch_field($start,$stop,$element)
{ {
$mailbox = $this->fix_folder($folder); if (!$this->msg2socket('XHDR '.$element.' '.$start.'-'.$stop,'^221',&$response))
{
$this->error();
}
$field_element = Array();
while ($line = $this->read_port())
{
$line = chop($line);
if ($line == '.')
{
break;
}
$breakpos = strpos($line,' ');
$field_element[intval(substr($line,0,$breakpos-1))] = $this->phpGW_quoted_printable_decode2(substr($line,$breakpos+1));
}
return $field_element;
} }
$info->messages = $this->num_msgs($mailbox); function status($folder='',$options=SA_ALL)
$info->size = 0;
$this->num_msgs($this->mailbox);
if ($info->messages)
{ {
$info = new mailbox_status;
$info->messages = $this->num_msg($folder);
return $info; return $info;
} }
else
{
return False;
}
}
function fetch_field($start,$stop,$element) function sort($folder='',$criteria=SORTDATE,$reverse=False,$options='')
{
if (!$this->msg2socket('XHDR '.$element.' '.$start.'-'.$stop,'^221',&$response))
{ {
$this->error(); if($folder == '' || $folder == $this->mailbox)
}
$field_element = Array();
while ($line = $this->read_port())
{
$line = chop($line);
if ($line == '.')
{ {
break; $mailbox = $this->mailbox;
} $start_msg = $this->start_msg;
$breakpos = strpos($line,' '); $end_msg = $this->end_msg;
$field_element[intval(substr($line,0,$breakpos-1))] = $this->phpGW_quoted_printable_decode2(substr($line,$breakpos+1));
}
return $field_element;
}
function status($folder='',$options=SA_ALL)
{
$info = new mailbox_status;
$info->messages = $this->num_msg($folder);
return $info;
}
function sort($folder='',$criteria=SORTDATE,$reverse=False,$options='')
{
if($folder == '' || $folder == $this->mailbox)
{
$mailbox = $this->mailbox;
$start_msg = $this->start_msg;
$end_msg = $this->end_msg;
}
else
{
$mailbox = $this->fix_folder($folder);
$start_msg = $this->first_message($mailbox);
$end_msg = $this->last_message($mailbox);
}
switch($criteria)
{
case SORTDATE:
$old_list = $this->fetch_field($start_msg,$end_msg,'Date');
$field_list = $this->convert_date_array($old_list);
break;
case SORTARRIVAL:
break;
case SORTFROM:
$field_list = $this->fetch_field($start_msg,$end_msg,'From');
break;
case SORTSUBJECT:
$field_list = $this->fetch_field($start_msg,$end_msg,'Subject');
break;
case SORTTO:
$field_list = $this->fetch_field($start_msg,$end_msg,'To');
break;
case SORTCC:
$field_list = $this->fetch_field($start_msg,$end_msg,'cc');
break;
case SORTSIZE:
break;
}
@reset($field_list);
if($criteria == SORTSUBJECT)
{
if(!$reverse)
{
uasort($field_list,array($this,"ssort_ascending"));
} }
else else
{ {
uasort($field_list,array($this,"ssort_decending")); $mailbox = $this->fix_folder($folder);
$start_msg = $this->first_message($mailbox);
$end_msg = $this->last_message($mailbox);
} }
switch($criteria)
{
case SORTDATE:
$old_list = $this->fetch_field($start_msg,$end_msg,'Date');
$field_list = $this->convert_date_array($old_list);
break;
case SORTARRIVAL:
break;
case SORTFROM:
$field_list = $this->fetch_field($start_msg,$end_msg,'From');
break;
case SORTSUBJECT:
$field_list = $this->fetch_field($start_msg,$end_msg,'Subject');
break;
case SORTTO:
$field_list = $this->fetch_field($start_msg,$end_msg,'To');
break;
case SORTCC:
$field_list = $this->fetch_field($start_msg,$end_msg,'cc');
break;
case SORTSIZE:
break;
}
@reset($field_list);
if($criteria == SORTSUBJECT)
{
if(!$reverse)
{
uasort($field_list,array($this,"ssort_ascending"));
}
else
{
uasort($field_list,array($this,"ssort_decending"));
}
}
elseif(!$reverse)
{
asort($field_list);
}
else
{
arsort($field_list);
}
$return_array = Array();
@reset($field_list);
$i = 1;
while(list($key,$value) = each($field_list))
{
$return_array[] = $key;
echo '('.$i++.') Field: <b>'.$value."</b>\t\tMsg Num: <b>".$key."</b><br>\n";
}
@reset($return_array);
return $return_array;
} }
elseif(!$reverse)
{
asort($field_list);
}
else
{
arsort($field_list);
}
$return_array = Array();
@reset($field_list);
$i = 1;
while(list($key,$value) = each($field_list))
{
$return_array[] = $key;
echo '('.$i++.') Field: <b>'.$value."</b>\t\tMsg Num: <b>".$key."</b><br>\n";
}
@reset($return_array);
return $return_array;
} }
}
?> ?>