30.6.3 查看邮件列表存档

除了可以查看邮件列表简介外,用户还可以通过点击"Show Archive"按钮查看发送到邮件列表上的所有邮件。这样将触发show-archive动作,其代码如下所示:


case'show-archive':

display_items('Archive For'.get_list_name($_GET['id']),

get_archive($_GET['id']),'view-html',

'view-text','');

break;


需要再次提到的是,该函数也用到了display_items()函数,它使用这个函数列出已经发送到列表上的各种条目。这些条目可以通过调用mlm_fns.php中的get_archive()函数来获得。该函数如程序清单30-11所示。

程序清单30-11 mlm_fns.php库中的get_archive()函数——该函数可以给出特定列表中的存档新闻信件数组


function get_archive($listid){

//returns an array of the archived mail for this list

//array has rows like(mailid,subject)

$list=array();

$listname=get_list_name($listid);

$query="select mailid,subject,listid from mail

where listid='".$listid."'and status='SENT'

order by sent";

if($conn=db_connect()){

$result=$conn->query($query);

if(!$result){

echo"<p>Unable to get list from database.</p>";

return false;

}

$num=$result->num_rows;

for($i=0;$i<$num;$i++){

$row=$result->fetch_array();

$arr_row=array($row[0],$row[1],

$listname,$listid);

array_push($list,$arr_row);

}

}

return$list;

}


该函数将从数据库中获得所需的信息——在这个例子中,所需的信息是已经发送出去的邮件详细信息——并且构建一个适合传递给display_items()函数的数组。