shop-old/modules/admin_cs_ticket_editor.php
2026-04-20 01:03:43 +02:00

191 lines
5.8 KiB
PHP

<?php
/**
* @version $Id: admin_cs_ticket_editor.php
* @package Easyshop
* @copyright Copyright (C) 2005 - 2011 TA-EDV
* @license proprietary
* @author Richard Kammermayer <rk@ta-edv.de>
* Easyshop is a web shop system
*/
include_once './core/cs_ticket.class.php';
include_once './core/customer.class.php';
include_once './core/cs_ticket_message.class.php';
class admin_cs_ticket_editor {
private $base_object;
private $config;
private $layout_object;
function __construct($base_object, $layout_object) {
$this->base_object = $base_object;
$this->config = $base_object->config_object;
$this->layout_object = $layout_object;
}
function run() {
if(isset($_GET['id']) && $_GET['id']) {
$has_id = true;
} else if(isset($_POST['id']) && $_POST['id']) {
$has_id = true;
} else {
$has_id = false;
}
if(isset($_POST['submit'])) {
$is_submitted = true;
} else {
$is_submitted = false;
}
// decide what CRUD method to call and call it in ListAndEdit
// create new ticket
$ticket_object = new Cs_ticket($this->base_object);
// please deleted this!
$ticket_object->fetch_email();
$customer_object = new Customer($this->base_object);
if ($has_id && isset($_GET['action']) && $_GET['action'] == 'set_ticket_state') {
$this->set_ticket_state($_GET['id']);
}
elseif($is_submitted && !$has_id) {
// get customer email
if ($_POST['form_field']['customer_id']) {
$customer_object->customer_id = $_POST['form_field']['customer_id'];
$customer = $customer_object->get_data();
$_POST['form_field']['m_to'] = $customer->email;
}
// create new ticket
$ticket_id = $ticket_object->create($_POST['form_field']);
$data = $ticket_object->get_data();
if ($data->customer_id) {
$customer_object->customer_id = $data->customer_id;
$data->customer = $customer_object->get_data();
}
$message_number = $data->last_message_number;
$data->selected_message_number = $message_number;
$this->layout_object->assign('form_data', $data);
} // new ticket create form
elseif(!$is_submitted && !$has_id) {
$data = new stdClass();
$data->email_from = $this->base_object->config->shopConfiguration['system_email'];
if (isset($_GET['customer_id'])) {
$customer_object->customer_id = $_GET['customer_id'];
$data->customer = $customer_object->get_data();
}
if (!isset($data->customer)) {
$data->customers = $customer_object->get_all();
}
$this->layout_object->assign('form_data', $data);
}// send response
elseif($has_id && $is_submitted) {
$ticket_object->id = $_GET['id'];
$ticket_object->send_response($_POST['form_field']);
$data = $ticket_object->get_data();
if ($data->customer_id) {
$customer_object->customer_id = $data->customer_id;
$data->customer = $customer_object->get_data();
}
$message_number = $data->last_message_number;
$data->selected_message_number = $message_number;
$this->layout_object->assign('form_data', $data);
}// response
elseif($has_id && !$is_submitted && $_GET['mod'] == 'response') {
// template variable name
$ticket_object->id = $_GET['id'];
$data = $ticket_object->get_data();
$data->email_from = $this->base_object->config->shopConfiguration['system_email'];
if (isset($_GET['message_number']) && $_GET['message_number']) {
$message_number = $_GET['message_number'];
}
else {
$message_number = $data->last_message_number;
}
foreach($data->ticket_messages as $message) {
if($message->message_number == $message_number) {
$data->selected_message = $message;
}
}
if ($data->customer_id) {
$customer_object->customer_id = $data->customer_id;
$data->customer = $customer_object->get_data();
}
$data->response = 1;
$this->layout_object->assign('form_data', $data);
} // get file
elseif($has_id && isset($_GET['mod']) && $_GET['mod'] == 'file_load'){
$ticket_message_object = new Cs_ticket_message($this->base_object);
$file = $ticket_message_object->get_file($_GET['file_id']);
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=".$file->file_name);
header("Content-Transfer-Encoding: binary");
echo $file->content;
exit();
}// read
elseif($has_id && !$is_submitted && $_GET['mod'] != 'delete') {
// template variable name
$ticket_object->id = $_GET['id'];
$data = $ticket_object->get_data();
if ($data->customer_id) {
$customer_object->customer_id = $data->customer_id;
$data->customer = $customer_object->get_data();
}
if (isset($_GET['message_number']) && $_GET['message_number']) {
$message_number = $_GET['message_number'];
}
else {
$message_number = $data->last_message_number;
}
$data->selected_message_number = $message_number;
$this->layout_object->assign('form_data', $data);
}
else {
}
return $this->layout_object->fetch('admin_cs_ticket_editor.tpl');
}
private function set_ticket_state($id) {
if ($id) {
if (isset($_GET['value'])) {
$value = $_GET['value'];
} elseif (isset($_POST['value'])) {
$value = $_POST['value'];
} else {
$value = false;
}
if ($value) {
$ticket_object = new Cs_ticket($this->base_object);
$result = $ticket_object->set_ticket_state($value, $id);
if ($result) {
// success
$return = array('status' => 'success', 'message' => 'status set');
} else {
// cant save
$return = array('status' => 'error', 'message' => 'can not save');
}
} else {
// no active marker
$return = array('status' => 'error', 'message' => 'no value');
}
} else {
// no id
$return = array('status' => 'error', 'message' => 'no id');
}
echo json_encode($return);
exit();
}
}
?>