如果某人以管理员身份登录,将看到一些额外的菜单选项,如图30-10所示。
图 30-10 管理员菜单选项允许创建和维护邮件列表管理员身份独有的选项是"Create List"(创建新的邮件列表)、"Create Mail"(创建新的新闻信件)和"View Mail"(查看并发送那些已经创建但还没发出去的新闻信件)。下面,我们将依次讨论它们。
30.7.1 创建新的邮件列表
如果管理员点击"Create List"按钮来建立新的邮件列表,将触发create-list动作,该动作与如下所示代码相关:
case'create-list':
display_list_form(get_email);
break;
display_list_form函数将显示一个可供管理员输入新邮件列表详细信息的表单。该函数保存在output_fns.php函数库中。它只是用来输出HTML,因此在这里,我们不深入讨论它。该函数的输出如图30-11所示。
图 30-11 "Create List"选项要求管理员为新的邮件列表输入名称和描述(或简介)当管理员点击"Save List"按钮时,将触发store-list动作,而该动作将触发index.php中的如下所示代码:
case'store-list':
if(store_list($_SESSION['admin_user'],$_POST)){
echo"<p style=/"padding-bottom:50px/">New list added.</p>";
display_items('All Lists',get_all_lists,'information',
'show-archive','');
}else{
echo"<p style=/"padding-bottom:50px/">List could not be
stored.Please try again.</p>";
}
break
可以看到,以上代码将保存新的列表详细信息,并显示新的列表。列表详细信息是通过store_list函数来保存的。该函数的代码如程序清单30-14所示。
程序清单30-14 mlm_fns.php函数库的store_list函数——该函数在数据库中插入一个新的邮件列表
function store_list($admin_user,$details){
if(!filled_out($details)){
echo"<p>All fields must be filled in.Try again.</p>";
return false;
}else{
if(!check_admin_user($admin_user)){
return false;
//how did this function get called by somebody not logged in as admin?
}
if(!($conn=db_connect)){
return false;
}
$query="select count(*)from lists where listname='".$details['name']."'";
$result=$conn->query($query);
$row=$result->fetch_array;
if($row[0]>0){
echo"<p>Sorry,there is already a list with this name.</p>";
return false;
}
$query="insert into lists values(NULL,
'".$details['name']."',
'".$details['blurb']."')";
$result=$conn->query($query);
return$result;
}
}
该函数在写入数据库之前进行一些有效性检查:它将检查是否已经提供了所有需要的详细信息、当前的用户是否是管理员、以及该列表的名称是否是唯一的。如果所有检查都正确,该列表将被添加到数据库中的lists表。