Files
bm/public_html/public/cms/modules/customerlist.class.php
2025-09-24 13:26:28 +02:00

280 lines
9.1 KiB
PHP

<?php
/** Customer List
* alphabetically sorted list of all customers
*
* @version 1.0.0
* @since 2008-09-07
*
*/
class CustomerList extends CmsObject{
var $view; // the current view (either list or edit)
var $char; // the starting char (in list view)
var $customer; // the id of the customer (in edit view)
var $VIEW_LIST = "list";
var $VIEW_EDIT = "edit";
/** C'tor
*/
//-----------------------------------------------
function CustomerList($id, $parent){
//-----------------------------------------------
parent::CmsObject($id, $parent);
$this->name = "Besucherliste (alphabetisch)";
$this->char = 65; // 'A'
$this->view = $this->VIEW_LIST;
}
/** @see CmsObject::update()
*/
//----------------------------------------------
function update(){
//----------------------------------------------
$this->view = $_POST['currentView'];
if ($this->view == $this->VIEW_EDIT) {
$this->customer = $_POST['customerId'];
}
}
/** @see CmsObject::save()
*/
//---------------------------------------------
function save(){
//---------------------------------------------
if (!$this->customer) {
return;
}
$query = sprintf("SELECT loose, newsletter FROM bruckm_ticketcustomer WHERE id = %d", sqlnum($this->customer));
$result = dbQuery($query);
$line = mysqli_fetch_array($result, MYSQLI_ASSOC);
// update customer data (if registration is loose)
if ($line['loose'] == 'true') {
$query = sprintf("UPDATE bruckm_ticketcustomer
SET firstname = %s, surname = %s, email = %s, acad = %s, address = %s, zip = %d, city = %s, phone = %s , changeDate = NOW()
WHERE id = %d",
sqlstring($_POST['firstname']),
sqlstring($_POST['surname']),
sqlstring($_POST['email']),
sqlstring($_POST['acad']),
sqlstring($_POST['address']),
sqlnum($_POST['zip']),
sqlstring($_POST['city']),
sqlstring($_POST['phone']),
sqlnum($this->customer));
dbQuery($query);
}
// update newsletter subscription
if (isset($_POST['newsletter']) && $line['newsletter'] != $_POST['newsletter']) {
$query = sprintf("UPDATE bruckm_ticketcustomer SET newsletter = %s WHERE id = %d",
sqlstring($_POST['newsletter']),
sqlnum($this->customer));
dbQuery($query);
}
// update newsletter subscription
if (isset($_POST['info']) && $line['info'] != $_POST['info']) {
$query = sprintf("UPDATE bruckm_ticketcustomer SET info = %s WHERE id = %d",
sqlstring($_POST['info']),
sqlnum($this->customer));
dbQuery($query);
}
// update group memberships
$query = sprintf("SELECT id FROM bruckm_ticketcustomergroup ORDER BY id ASC");
$result = dbQuery($query);
while ($line = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
if (isset($_POST['groups']) && in_array($line['id'], $_POST['groups'])) {
$query = sprintf("SELECT * FROM bruckm_ticketcustomergroupmemberships WHERE groupId = %d AND customerId = %d LIMIT 1",
sqlnum($line['id']),
sqlnum($this->customer));
if (mysql_num_rows(dbQuery($query)) == 0) {
$query = sprintf("INSERT INTO bruckm_ticketcustomergroupmemberships (groupId, customerId) VALUES (%d, %d)",
sqlnum($line['id']),
sqlnum($this->customer));
dbQuery($query);
}
}
else {
$query = sprintf("DELETE FROM bruckm_ticketcustomergroupmemberships WHERE groupId = %d AND customerId = %d LIMIT 1",
sqlnum($line['id']),
sqlnum($this->customer));
dbQuery($query);
}
}
}
/** @see CmsObject::printContent()
*/
//-----------------------------------------------
function printContent(){
//-----------------------------------------------
$out = $this->doPrintAlphabet();
if ($this->view == $this->VIEW_LIST) {
$out .= $this->doPrintList();
}
else {
$out .= $this->doPrintCustomer();
}
return $out;
}
/** prints the alphabetical index
*/
//-----------------------------------------------
function doPrintAlphabet(){
//-----------------------------------------------
$t = new Template(CMS_TEMPLATE_DIR."customerlist1.html");
$alpha = "";
for ($i = 65; $i <= 90; $i++) {
$alpha .= '<a href="javascript:setAction(\'showList\',' . $i . ');document.forms[0].submit();" target="_self">' . chr($i) . '</a> ';
}
$alpha .= '<a href="javascript:setAction(\'showList\',' . ord('Ä') . ');document.forms[0].submit();" target="_self">&Auml;</a> ';
$alpha .= '<a href="javascript:setAction(\'showList\',' . ord('Ö') . ');document.forms[0].submit();" target="_self">&Ouml;</a> ';
$alpha .= '<a href="javascript:setAction(\'showList\',' . ord('Ü') . ');document.forms[0].submit();" target="_self">&Uuml;</a> ';
$t->setVar("ALPHABET", $alpha);
return $t->toString();
}
/** prints the list view
*/
//-----------------------------------------------
function doPrintList(){
//-----------------------------------------------
$t = new Template(CMS_TEMPLATE_DIR."customerlist2.html");
$t->setVar("TITLE", "Besucher '" . htmlspecialchars(chr($this->char)) . "'");
$customers = "";
$query = sprintf(
"SELECT id, firstname, surname, email
FROM bruckm_ticketcustomer
WHERE address != ''
AND surname LIKE %s
ORDER BY surname ASC",
sqlstring(chr($this->char) . "%")
);
$result = dbQuery($query);
$i = 0;
while ($line = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
if ($i++ % 2 == 0) {
$customers .= '<tr style="background-color:#eeeeee">';
}
else {
$customers .= '<tr>';
}
$customers .= '<td><a href="javascript:setAction(\'editCustomer\',' . $line['id'] . ');document.forms[0].submit();" target="_self">&raquo;</a></td>';
$customers .= '<td>' . htmlspecialchars($line['surname']) . '</td>';
$customers .= '<td>' . htmlspecialchars($line['firstname']) . '</td>';
$customers .= '<td>' . htmlspecialchars($line['email']) . '</td>';
$customers .= '</tr>';
}
$t->setVar("CUSTOMERS", $customers);
return $t->toString();
}
/** prints the edit customer view
*/
//-----------------------------------------------
function doPrintCustomer(){
//-----------------------------------------------
$t = new Template(CMS_TEMPLATE_DIR."customerlist3.html");
$query = sprintf("SELECT * FROM bruckm_ticketcustomer WHERE id = %d", sqlnum($this->customer));
$result = dbQuery($query);
$line = mysqli_fetch_array($result, MYSQLI_ASSOC);
$t->setVar("ID", $line['id']);
$t->setVar("FIRSTNAME", $line['firstname']);
$t->setVar("SURNAME", $line['surname']);
$t->setVar("EMAIL", $line['email']);
$t->setVar("ADDRESS", $line['address']);
$t->setVar("ZIP", $line['zip']);
$t->setVar("CITY", $line['city']);
$t->setVar("PHONE", $line['phone']);
$t->setVar("ACAD", $line['acad']);
if ($line['loose'] == 'true') {
$t->setVar("GLOBAL_DISABLE", "");
}
else {
$t->setVar("GLOBAL_DISABLE", "disabled=\"disabled\"");
}
if ($line['newsletter'] == 'false') {
$t->setVar("NEWSLETTER_TRUE", "disabled=\"disabled\"");
$t->setVar("NEWSLETTER_FALSE", "checked=\"checked\" disabled=\"disabled\"");
}
else {
$t->setVar("NEWSLETTER_TRUE", "checked=\"checked\"");
$t->setVar("NEWSLETTER_FALSE", "");
}
if ($line['info'] == 'false') {
$t->setVar("INFO_TRUE", "");
$t->setVar("INFO_FALSE", "checked=\"checked\"");
}
else {
$t->setVar("INFO_TRUE", "checked=\"checked\"");
$t->setVar("INFO_FALSE", "");
}
// group memberships
$groups = "";
$query = sprintf("SELECT * FROM bruckm_ticketcustomergroup ORDER BY name ASC");
$result = dbQuery($query);
while ($group = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
$query = sprintf("SELECT * FROM bruckm_ticketcustomergroupmemberships WHERE groupId = %d AND customerId = %d LIMIT 1",
sqlnum($group['id']),
sqlnum($line['id']));
if (mysql_num_rows(dbQuery($query)) > 0) {
$groups .= '<input type="checkbox" name="groups[]" value="' . $group['id'] . '" checked="checked">' . $group['name'] . '<br />';
}
else {
$groups .= '<input type="checkbox" name="groups[]" value="' . $group['id'] . '">' . $group['name'] . '<br />';
}
}
$t->setVar("GROUPS", $groups);
return $t->toString();
}
/** @see CmsObject::handleAction()
*/
//---------------------------------------------
function handleAction($action, $position=0, $type=NULL){
//---------------------------------------------
switch($action){
case "showList":
$this->char = $position;
$this->view = $this->VIEW_LIST;
break;
case "editCustomer":
$this->customer = $position;
$this->view = $this->VIEW_EDIT;
break;
}
}
/** @see CmsObject::getCssClass()
*/
//-----------------------------------------------
function getCssClass(){
//-----------------------------------------------
return "itemCustomers";
}
// === ADDITIONAL METHODS ================================================================= //
/** sets the id
* @param id id
*/
//-----------------------------------------------
function setId($id){
//-----------------------------------------------
$this->id = $id;
}
};
?>