Ich habe soeben mal in meiner module_newsletter.php nachgeschaut. Da wird customers_gender doch eigentlich korrekt abgefragt.
Code: Alles auswählen
<?php
/** ----------------------------------------------------------------------------
**
*F module_newsletter.php
**
** WEB-Shop Software http://www.webs.de
**
** newsletter management
**
** ----------------------------------------------------------------------------
** based on:
** (c) 2000-2001 The Exchange Project
** (c) 2002-2003 osCommerce
** (c) 2003 nextcommerce
** (c) 2006 XT-Commerce
**
** Released under the GNU General Public License
**
** @version $Id: module_newsletter.php 2198 2011-11-07 14:49:02Z joerg $
** @copyright 2011 WEB-Shop Software http://www.webs.de/
**
** ------------------------------------------------------------------------- */
require('includes/application_top.php');
require_once(DIR_FS_CATALOG.DIR_WS_CLASSES.'class.phpmailer.php');
require_once(DIR_FS_INC . 'xtc_wysiwyg.inc.php');
switch ($_GET['action']) { // actions for datahandling
case 'save': // save newsletter
$id=xtc_db_prepare_input((int)$_POST['ID']);
$status_all=xtc_db_prepare_input($_POST['status_all']);
if ($newsletter_title=='') $newsletter_title='no title';
$customers_status=xtc_get_customers_statuses();
$rzp='';
for ($i=0,$n=sizeof($customers_status);$i<$n; $i++) {
if (xtc_db_prepare_input($_POST['status'][$i])=='yes') {
if ($rzp!='') $rzp.=',';
$rzp.=$customers_status[$i]['id'];
}
}
if (xtc_db_prepare_input($_POST['status_all'])=='yes') $rzp.=',all';
$error=false; // reset error flag
if ($error == false) {
$sql_data_array = array(
'title'=> xtc_db_prepare_input($_POST['title']),
'status' => '0',
'bc'=>$rzp,
'cc'=>xtc_db_prepare_input($_POST['cc']),
'date' => 'now()',
'body' => xtc_db_prepare_input($_POST['newsletter_body']));
if ($id!='') {
xtc_db_perform(TABLE_MODULE_NEWSLETTER, $sql_data_array, 'update', "newsletter_id = '" . $id . "'");
// create temp table
} else {
xtc_db_perform(TABLE_MODULE_NEWSLETTER, $sql_data_array);
// create temp table
$id=xtc_db_insert_id();
}
xtc_db_query("DROP TABLE IF EXISTS module_newsletter_temp_".$id);
xtc_db_query("CREATE TABLE module_newsletter_temp_".$id."
(
id int(11) NOT NULL auto_increment,
customers_id int(11) NOT NULL default '0',
customers_status int(11) NOT NULL default '0',
customers_gender char(1) NOT NULL,
customers_firstname varchar(64) NOT NULL default '',
customers_lastname varchar(64) NOT NULL default '',
customers_email_address text NOT NULL,
mail_key varchar(32) NOT NULL,
date datetime NOT NULL default '0000-00-00 00:00:00',
comment varchar(64) NOT NULL default '',
PRIMARY KEY (id)
)");
// filling temp table with data!
$flag='';
if (!strpos($rzp,'all')) $flag='true';
$rzp=str_replace(',all','',$rzp);
$groups=explode(',',$rzp);
$sql_data_array='';
for ($i=0,$n=sizeof($groups);$i<$n;$i++) {
// check if customer wants newsletter
if (xtc_db_prepare_input($_POST['status_all'])=='yes') {
$sql = '-- admin/module_newsletter
SELECT
customers_id, customers_gender, customers_firstname,
customers_lastname, customers_email_address
FROM ' . TABLE_CUSTOMERS . '
WHERE
customers_status= '.(int)$groups[$i];
} else {
$sql = '-- admin/module_newsletter
SELECT
nr.customers_email_address, nr.customers_id, c.customers_gender,
nr.customers_firstname, nr.customers_lastname, nr.mail_key
FROM
'.TABLE_NEWSLETTER_RECIPIENTS.' nr
LEFT OUTER JOIN '.TABLE_CUSTOMERS.' c on c.customers_id = nr.customers_id
WHERE
nr.customers_status = '.(int)$groups[$i].' AND
nr.mail_status = 1';
}
$query=xtc_db_query($sql);
while ($customers_data=xtc_db_fetch_array($query)){
$sql_data_array=array(
'customers_id'=>$customers_data['customers_id'],
'customers_gender' => $customers_data['customers_gender'],
'customers_status'=>$groups[$i],
'customers_firstname'=>$customers_data['customers_firstname'],
'customers_lastname'=>$customers_data['customers_lastname'],
'customers_email_address'=>$customers_data['customers_email_address'],
'mail_key'=>$customers_data['mail_key'],
'date'=>'now()');
xtc_db_perform('module_newsletter_temp_'.$id, $sql_data_array);
}
}
xtc_redirect(xtc_href_link(FILENAME_MODULE_NEWSLETTER));
}
break;
case 'delete':
xtc_db_query("DELETE FROM ".TABLE_MODULE_NEWSLETTER." WHERE newsletter_id='".(int)$_GET['ID']."'");
xtc_redirect(xtc_href_link(FILENAME_MODULE_NEWSLETTER));
break;
case 'send':
// max email package -> should be in admin area!
$package_size='30';
xtc_redirect(xtc_href_link(FILENAME_MODULE_NEWSLETTER,'send=0,'.$package_size.'&ID='.(int)$_GET['ID']));
}
// action for sending mails!
if ($_GET['send']) {
$sql = '-- admin/module_newsletter
SELECT
title, body, bc, cc
FROM
'.TABLE_MODULE_NEWSLETTER.'
WHERE newsletter_id='.(int)$_GET['ID'];
$query=xtc_db_query($sql);
$newsletter=xtc_db_fetch_array($query);
$smarty = new template();
$smarty->assign('subject', $newsletter['title']);
$smarty->assign('cc', $newsletter['cc']);
// get the limit values from the request
list($limit, $package_size) = explode(',',$_GET['send']);
// select emailrange from db
$sql = '-- admin/module_newsletter.php
SELECT
id,
customers_gender,
customers_firstname,
customers_lastname,
customers_email_address,
mail_key
FROM module_newsletter_temp_'.(int)$_GET['ID'].'
LIMIT '.$limit.','.$package_size;
$query=xtc_db_query($sql);
while ($row=xtc_db_fetch_array($query)) {
$customer = array(
'gender' => $row['customers_gender'],
'firstname' => $row['customers_firstname'],
'lastname' => $row['customers_lastname'],
'email' => $row['customers_email_address'],
);
$smarty->assign('customer', $customer);
$smarty->assign('message', $newsletter['body'].'<hr><p>'.TEXT_NEWSLETTER_REMOVE.'<br /><a href="'.HTTP_CATALOG_SERVER.DIR_WS_CATALOG.FILENAME_CATALOG_NEWSLETTER.'?action=remove&email='.$customer['email'].'&key='.$row['mail_key'].'">' . TEXT_REMOVE_LINK . '</a></p>');
new mail_template(
$smarty, 'admin_mail',
array($customer['email'], $customer['firstname'] . ' ' . $customer['lastname'])
);
$sql = '-- admin/module_newsletter
UPDATE
module_newsletter_temp_'.(int)$_GET['ID'].'
SET
comment = \'send\'
WHERE
id= '.$row['id'];
xtc_db_query($sql);
}
// ok lets send the mails in package of 30 mails, to prevent php timeout
if (xtc_db_num_rows($query) < $package_size) {
// finished
$sql = '-- admin/module_newsletter
SELECT
count(if (comment=\'send\',1,NULL)) send,
count(1) count
FROM
module_newsletter_temp_'.(int)$_GET['ID'];
$query = xtc_db_query($sql);
$count = xtc_db_fetch_array($query);
if ($count['send'] == $count['count']) {
xtc_db_query("UPDATE ".TABLE_MODULE_NEWSLETTER." SET status='1' WHERE newsletter_id='".(int)$_GET['ID']."'");
$messageStack->add_session(sprintf(INFO_NEWSLETTER_SEND, $count['send']), 'success');
xtc_redirect(xtc_href_link(FILENAME_MODULE_NEWSLETTER));
} else {
$messageStack->add(
sprintf(
INFO_NEWSLETTER_SEND.'<br />'.INFO_NEWSLETTER_LEFT,
$count['send'], $count['count']-$count['send']),
'error'
);
}
} else {
$limit=$limit+$package_size;
xtc_redirect(xtc_href_link(FILENAME_MODULE_NEWSLETTER,'send='.$limit.','.$package_size.'&ID='.(int)$_GET['ID']));
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html <?php echo HTML_PARAMS; ?>>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo charset_mapper($_SESSION['language_charset']); ?>">
<title><?php echo TITLE; ?></title>
<link rel="stylesheet" type="text/css" href="includes/stylesheet.css">
<?php if (USE_WYSIWYG=='true') {
$query=xtc_db_query("SELECT code FROM ". TABLE_LANGUAGES ." WHERE languages_id='".$_SESSION['languages_id']."'");
$data=xtc_db_fetch_array($query);
if ($_GET['action']!='') echo xtc_wysiwyg('newsletter',$data['code']);
} ?>
</head>
<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" bgcolor="#FFFFFF">
<!-- header //-->
<?php require(DIR_WS_INCLUDES . 'header.php'); ?>
<!-- header_eof //-->
<!-- body //-->
<table border="0" width="100%" cellspacing="2" cellpadding="2">
<tr>
<td width="100%" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td><table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="80" rowspan="2"><?php echo xtc_image(DIR_WS_ICONS.'heading_news.gif'); ?></td>
<td class="pageHeading"><?php echo HEADING_TITLE; ?></td>
</tr>
<tr>
<td class="main" valign="top">WEB-Shop Tools</td>
</tr>
</table></td>
</tr>
<?php
if ($_GET['send'])
{
?>
<tr><td>
Sending
</td></tr>
<?php
}
?>
<tr>
<td><table width="100%" border="0">
<tr>
<td>
<?php
// Default seite
switch ($_GET['action']) {
default:
// Get Customers Groups
$customer_group_query=xtc_db_query("SELECT
customers_status_name,
customers_status_id,
customers_status_image
FROM ".TABLE_CUSTOMERS_STATUS."
WHERE
language_id='".$_SESSION['languages_id']."'");
$customer_group=array();
while ($customer_group_data=xtc_db_fetch_array($customer_group_query)) {
// get single users
$group_query=xtc_db_query("SELECT count(*) as count
FROM ".TABLE_NEWSLETTER_RECIPIENTS."
WHERE mail_status='1' and
customers_status='".$customer_group_data['customers_status_id']."'");
$group_data=xtc_db_fetch_array($group_query);
$customer_group[]=array( 'ID'=>$customer_group_data['customers_status_id'],
'NAME'=>$customer_group_data['customers_status_name'],
'IMAGE'=>$customer_group_data['customers_status_image'],
'USERS'=>$group_data['count']);
}
?>
<br />
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><table border="0" width="100%" cellspacing="0" cellpadding="2">
<tr class="dataTableHeadingRow">
<td class="dataTableHeadingContent" width="150" ><?php echo TITLE_CUSTOMERS; ?></td>
<td class="dataTableHeadingContent" ><?php echo TITLE_STK; ?></td>
</tr>
<?php
for ($i=0,$n=sizeof($customer_group); $i<$n; $i++) {
?>
<tr>
<td class="dataTableContent" style="border-bottom: 1px solid; border-color: #f1f1f1;" valign="middle" align="left"><?php echo xtc_image(DIR_WS_ICONS . $customer_group[$i]['IMAGE'], ''); ?><?php echo $customer_group[$i]['NAME']; ?></td>
<td class="dataTableContent" style="border-bottom: 1px solid; border-color: #f1f1f1;" align="left"><?php echo $customer_group[$i]['USERS']; ?></td>
</tr>
<?php
}
?>
</table></td>
<td width="30%" align="right" valign="top""><?php
echo '<a class="button" href="'.xtc_href_link(FILENAME_MODULE_NEWSLETTER,'action=new').'">'.BUTTON_NEW_NEWSLETTER.'</a>';
?></td>
</tr>
</table>
<br />
<?php
// get data for newsletter overwiev
$newsletters_query=xtc_db_query("SELECT
newsletter_id,date,title
FROM ".TABLE_MODULE_NEWSLETTER."
WHERE status='0'");
$news_data=array();
while ($newsletters_data=xtc_db_fetch_array($newsletters_query)) {
$news_data[]=array( 'id' => $newsletters_data['newsletter_id'],
'date'=>$newsletters_data['date'],
'title'=>$newsletters_data['title']);
}
?>
<table border="0" width="100%" cellspacing="0" cellpadding="2">
<tr class="dataTableHeadingRow">
<td class="dataTableHeadingContent" width="30" ><?php echo TITLE_DATE; ?></td>
<td class="dataTableHeadingContent" width="80%" ><?php echo TITLE_NOT_SEND; ?></td>
<td class="dataTableHeadingContent" >.</td>
</tr>
<?php
for ($i=0,$n=sizeof($news_data); $i<$n; $i++) {
if ($news_data[$i]['id']!='') {
?>
<tr>
<td class="dataTableContent" style="border-bottom: 1px solid; border-color: #f1f1f1;" align="left"><?php echo $news_data[$i]['date']; ?></td>
<td class="dataTableContent" style="border-bottom: 1px solid; border-color: #f1f1f1;" valign="middle" align="left"><?php echo xtc_image(DIR_WS_CATALOG.'images/icons/arrow.gif'); ?><a href="<?php echo xtc_href_link(FILENAME_MODULE_NEWSLETTER,'ID='.$news_data[$i]['id']); ?>"><b><?php echo $news_data[$i]['title']; ?></b></a></td>
<td class="dataTableContent" style="border-bottom: 1px solid; border-color: #f1f1f1;" align="left">
</td>
</tr>
<?php
if ($_GET['ID']!='' && $_GET['ID']==$news_data[$i]['id']) {
$total_query=xtc_db_query("SELECT
count(*) as count
FROM module_newsletter_temp_".(int)$_GET['ID']."");
$total_data=xtc_db_fetch_array($total_query);
?>
<tr>
<td class="dataTableContent_products" style="border-bottom: 1px solid; border-color: #f1f1f1;" align="left"></td>
<td colspan="2" class="dataTableContent_products" style="border-bottom: 1px solid; border-color: #f1f1f1;" align="left"><?php echo TEXT_SEND_TO.$total_data['count']; ?></td>
</tr>
<td class="dataTableContent" valign="top" style="border-bottom: 1px solid; border-color: #999999;" align="left">
<a class="button" href="<?php echo xtc_href_link(FILENAME_MODULE_NEWSLETTER,'action=delete&ID='.$news_data[$i]['id']); ?>" onClick="return confirm('<?php echo CONFIRM_DELETE; ?>')"><?php echo BUTTON_DELETE.'</a><br />'; ?>
<a class="button" href="<?php echo xtc_href_link(FILENAME_MODULE_NEWSLETTER,'action=edit&ID='.$news_data[$i]['id']); ?>"><?php echo BUTTON_EDIT.'</a>'; ?>
<br /><br /><div style="height: 1px; background: Black; margin: 3px 0;"></div>
<a class="button" href="<?php echo xtc_href_link(FILENAME_MODULE_NEWSLETTER,'action=send&ID='.$news_data[$i]['id']); ?>"><?php echo BUTTON_SEND.'</a>'; ?>
</td>
<td colspan="2" class="dataTableContent" style="border-bottom: 1px solid; border-color: #999999; text-align: left;">
<?php
// get data
$newsletters_query=xtc_db_query("SELECT
title,body,cc,bc
FROM ".TABLE_MODULE_NEWSLETTER."
WHERE newsletter_id='".(int)$_GET['ID']."'");
$newsletters_data=xtc_db_fetch_array($newsletters_query);
echo TEXT_TITLE.$newsletters_data['title'].'<br />';
$customers_status=xtc_get_customers_statuses();
for ($i=0,$n=sizeof($customers_status);$i<$n; $i++) {
$newsletters_data['bc']=str_replace($customers_status[$i]['id'],$customers_status[$i]['text'],$newsletters_data['bc']);
}
echo TEXT_TO.$newsletters_data['bc'].'<br />';
echo TEXT_CC.$newsletters_data['cc'].'<br /><br />'.TEXT_PREVIEW;
echo '<table style="border-color: #cccccc; border: 1px solid;" width="100%"><tr><td>'.$newsletters_data['body'].'</td></tr></table>';
?>
</td></tr>
<?php
}
?>
<?php
}
}
?>
</table>
<br /><br />
<?php
$newsletters_query=xtc_db_query("SELECT
newsletter_id,date,title
FROM ".TABLE_MODULE_NEWSLETTER."
WHERE status='1'");
$news_data=array();
while ($newsletters_data=xtc_db_fetch_array($newsletters_query)) {
$news_data[]=array( 'id' => $newsletters_data['newsletter_id'],
'date'=>$newsletters_data['date'],
'title'=>$newsletters_data['title']);
}
?>
<table border="0" width="100%" cellspacing="0" cellpadding="2">
<tr class="dataTableHeadingRow">
<td class="dataTableHeadingContent" width="80%" ><?php echo TITLE_SEND; ?></td>
<td class="dataTableHeadingContent"><?php echo TITLE_ACTION; ?></td>
</tr>
<?php
for ($i=0,$n=sizeof($news_data); $i<$n; $i++) {
if ($news_data[$i]['id']!='') {
?>
<tr>
<td class="dataTableContent" style="border-bottom: 1px solid; border-color: #f1f1f1;" valign="middle" align="left"><?php echo $news_data[$i]['date'].' '; ?><b><?php echo $news_data[$i]['title']; ?></b></td>
<td class="dataTableContent" style="border-bottom: 1px solid; border-color: #f1f1f1;" align="left">
<a href="<?php echo xtc_href_link(FILENAME_MODULE_NEWSLETTER,'action=delete&ID='.$news_data[$i]['id']); ?>" onClick="return confirm('<?php echo CONFIRM_DELETE; ?>')">
<?php
echo xtc_image(DIR_WS_ICONS.'delete.gif','Delete','','','style="cursor:pointer" onClick="return confirm(\''.DELETE_ENTRY.'\')"').' '.TEXT_DELETE.'</a> ';
?>
<a href="<?php echo xtc_href_link(FILENAME_MODULE_NEWSLETTER,'action=edit&ID='.$news_data[$i]['id']); ?>">
<?php echo xtc_image(DIR_WS_ICONS.'icon_edit.gif','Edit','','').' '.TEXT_EDIT.'</a>'; ?>
</td>
</tr>
<?php
}
}
?>
</table>
<?php
break; // end default page
case 'edit':
$newsletters_query=xtc_db_query("SELECT title,body,cc,bc FROM ".TABLE_MODULE_NEWSLETTER." WHERE newsletter_id='".(int)$_GET['ID']."'");
$newsletters_data=xtc_db_fetch_array($newsletters_query);
case 'safe':
case 'new': // action for NEW newsletter!
$customers_status=xtc_get_customers_statuses();
echo xtc_draw_form('edit_newsletter',FILENAME_MODULE_NEWSLETTER,'action=save','post','enctype="multipart/form-data"').xtc_draw_hidden_field('ID',$_GET['ID']);
?>
<br /><br />
<table class="main" width="100%" border="0">
</tr>
<tr>
<td width="10%"><?php echo TEXT_TITLE; ?></td>
<td width="90%"><?php echo xtc_draw_input_field('title',$newsletters_data['title'],'size=100'); ?></td>
</tr>
<tr>
<td width="10%"><?php echo TEXT_TO; ?></td>
<td width="90%"><?php
for ($i=0,$n=sizeof($customers_status);$i<$n; $i++) {
$group_query=xtc_db_query("SELECT count(*) as count
FROM ".TABLE_NEWSLETTER_RECIPIENTS."
WHERE mail_status='1' and
customers_status='".$customers_status[$i]['id']."'");
$group_data=xtc_db_fetch_array($group_query);
$group_query=xtc_db_query("SELECT count(*) as count
FROM ".TABLE_CUSTOMERS."
WHERE
customers_status='".$customers_status[$i]['id']."'");
$group_data_all=xtc_db_fetch_array($group_query);
$bc_array = explode(',', $newsletters_data['bc']);
echo xtc_draw_checkbox_field('status['.$i.']','yes', in_array($customers_status[$i]['id'], $bc_array)).' '.$customers_status[$i]['text'].' <i>(<b>'.$group_data['count'].'</b>'.TEXT_USERS.$group_data_all['count'].TEXT_CUSTOMERS.'<br />';
}
echo xtc_draw_checkbox_field('status_all', 'yes',in_array('all', $bc_array)).' <b>'.TEXT_NEWSLETTER_ONLY.'</b>';
?></td>
</tr>
<tr>
<td width="10%"><?php echo TEXT_CC; ?></td>
<td width="90%"><?php
echo xtc_draw_input_field('cc',$newsletters_data['cc'],'size=100'); ?></td>
</tr>
</tr>
<tr>
<td width="10%" valign="top"><?php echo TEXT_BODY; ?></td>
<td width="90%"><?php
echo xtc_draw_textarea_field('newsletter_body', 'soft', '150', '45', stripslashes($newsletters_data['body']));
?></td>
</tr>
</table>
<a class="button" onClick="this.blur();" href="<?php echo xtc_href_link(FILENAME_MODULE_NEWSLETTER); ?>"><?php echo BUTTON_BACK; ?></a>
<right><?php echo '<input type="submit" class="button" onClick="this.blur();" value="' . BUTTON_SAVE . '"/>'; ?></right>
</form>
<?php
break;
} // end switch
?>
</td>
</tr>
</table></td>
</tr>
</table></td>
<!-- body_text_eof //-->
</tr>
</table>
<!-- body_eof //-->
<!-- footer //-->
<?php require(DIR_WS_INCLUDES . 'footer.php'); ?>
<!-- footer_eof //-->
</body>
</html>
<?php require(DIR_WS_INCLUDES . 'application_bottom.php');