You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
156 lines
6.3 KiB
PHP
156 lines
6.3 KiB
PHP
<?php
|
|
|
|
namespace DataAccess\ServiceMessages;
|
|
|
|
|
|
use BusinessLogic\ServiceMessages\ServiceMessage;
|
|
use BusinessLogic\ServiceMessages\ServiceMessageStyle;
|
|
use DataAccess\CommonDao;
|
|
|
|
class ServiceMessagesGateway extends CommonDao {
|
|
/**
|
|
* @param $serviceMessage ServiceMessage
|
|
* @return ServiceMessage
|
|
*/
|
|
function createServiceMessage($serviceMessage, $heskSettings) {
|
|
$this->init();
|
|
|
|
// Get the latest service message order
|
|
$res = hesk_dbQuery("SELECT `order` FROM `" . hesk_dbEscape($heskSettings['db_pfix']) . "service_messages` ORDER BY `order` DESC LIMIT 1");
|
|
$row = hesk_dbFetchRow($res);
|
|
$myOrder = intval($row[0]) + 10;
|
|
|
|
$style = ServiceMessageStyle::getIdForStyle($serviceMessage->style);
|
|
$type = $serviceMessage->published ? 0 : 1;
|
|
|
|
// Insert service message into database
|
|
hesk_dbQuery("INSERT INTO `" . hesk_dbEscape($heskSettings['db_pfix']) . "service_messages` (`author`,`title`,`message`,`style`,`type`,`order`, `icon`) VALUES (
|
|
'" . intval($serviceMessage->createdBy) . "',
|
|
'" . hesk_dbEscape($serviceMessage->title) . "',
|
|
'" . hesk_dbEscape($serviceMessage->message) . "',
|
|
'" . hesk_dbEscape($style) . "',
|
|
'{$type}',
|
|
'{$myOrder}',
|
|
'" . hesk_dbEscape($serviceMessage->icon) . "'
|
|
)");
|
|
|
|
$serviceMessage->id = hesk_dbInsertID();
|
|
|
|
foreach ($serviceMessage->locations as $location) {
|
|
hesk_dbQuery("INSERT INTO `" . hesk_dbEscape($heskSettings['db_pfix']) . "mfh_service_message_to_location`
|
|
(`service_message_id`, `location`) VALUES (" . intval($serviceMessage->id) . ", '" . hesk_dbEscape($location) . "')");
|
|
}
|
|
|
|
// Get the autogenerated fields
|
|
$rs = hesk_dbQuery("SELECT `dt`, `order` FROM `" . hesk_dbEscape($heskSettings['db_pfix']) . "service_messages`
|
|
WHERE `id` = " . intval($serviceMessage->id));
|
|
$row = hesk_dbFetchAssoc($rs);
|
|
$serviceMessage->dateCreated = $row['dt'];
|
|
$serviceMessage->order = intval($row['order']);
|
|
|
|
$this->close();
|
|
|
|
return $serviceMessage;
|
|
}
|
|
|
|
/**
|
|
* @param $heskSettings
|
|
* @return ServiceMessage[]
|
|
*/
|
|
function getServiceMessages($heskSettings) {
|
|
$this->init();
|
|
|
|
$serviceMessages = array();
|
|
|
|
$rs = hesk_dbQuery("SELECT * FROM `". hesk_dbEscape($heskSettings['db_pfix']) . "service_messages` ORDER BY `order`");
|
|
while ($row = hesk_dbFetchAssoc($rs)) {
|
|
$serviceMessage = new ServiceMessage();
|
|
$serviceMessage->id = $row['id'];
|
|
$serviceMessage->published = intval($row['type']) !== 1;
|
|
$serviceMessage->createdBy = intval($row['author']);
|
|
$serviceMessage->order = intval($row['order']);
|
|
$serviceMessage->dateCreated = $row['dt'];
|
|
$serviceMessage->title = $row['title'];
|
|
$serviceMessage->message = $row['message'];
|
|
$serviceMessage->style = ServiceMessageStyle::getStyleById($row['style']);
|
|
$serviceMessage->icon = $row['icon'];
|
|
$serviceMessage->locations = array();
|
|
|
|
$locationsRs = hesk_dbQuery("SELECT `location` FROM `" . hesk_dbEscape($heskSettings['db_pfix']) . "mfh_service_message_to_location`
|
|
WHERE `service_message_id` = " . intval($serviceMessage->id));
|
|
while ($innerRow = hesk_dbFetchAssoc($locationsRs)) {
|
|
$serviceMessage->locations[] = $innerRow['location'];
|
|
}
|
|
|
|
$serviceMessages[] = $serviceMessage;
|
|
}
|
|
|
|
$this->close();
|
|
|
|
return $serviceMessages;
|
|
}
|
|
|
|
function updateServiceMessage($serviceMessage, $heskSettings) {
|
|
$this->init();
|
|
|
|
$style = ServiceMessageStyle::getIdForStyle($serviceMessage->style);
|
|
$type = $serviceMessage->published ? 0 : 1;
|
|
|
|
hesk_dbQuery("UPDATE `" . hesk_dbEscape($heskSettings['db_pfix']) . "service_messages`
|
|
SET `title` = '" . hesk_dbEscape($serviceMessage->title) . "',
|
|
`message` = '" . hesk_dbEscape($serviceMessage->message) . "',
|
|
`style` = '" . intval($style) . "',
|
|
`type` = " . intval($type) . ",
|
|
`icon` = '" . hesk_dbEscape($serviceMessage->icon) . "',
|
|
`order` = " . intval($serviceMessage->order) . "
|
|
WHERE `id` = " . intval($serviceMessage->id));
|
|
|
|
hesk_dbQuery("DELETE FROM `" . hesk_dbEscape($heskSettings['db_pfix']) . "mfh_service_message_to_location`
|
|
WHERE `service_message_id` = " . intval($serviceMessage->id));
|
|
foreach ($serviceMessage->locations as $location) {
|
|
hesk_dbQuery("INSERT INTO `" . hesk_dbEscape($heskSettings['db_pfix']) . "mfh_service_message_to_location`
|
|
(`service_message_id`, `location`) VALUES (" . intval($serviceMessage->id) . ", '" . hesk_dbEscape($location) . "')");
|
|
}
|
|
|
|
$otherFieldsRs = hesk_dbQuery("SELECT `dt`, `author`, `order` FROM `" . hesk_dbEscape($heskSettings['db_pfix']) . "service_messages`
|
|
WHERE `id` = " . intval($serviceMessage->id));
|
|
$otherFields = hesk_dbFetchAssoc($otherFieldsRs);
|
|
|
|
$serviceMessage->createdBy = intval($otherFields['author']);
|
|
$serviceMessage->dateCreated = $otherFields['dt'];
|
|
|
|
$this->close();
|
|
|
|
return $serviceMessage;
|
|
}
|
|
|
|
function deleteServiceMessage($id, $heskSettings) {
|
|
$this->init();
|
|
|
|
hesk_dbQuery("DELETE FROM `" . hesk_dbEscape($heskSettings['db_pfix']) . "mfh_service_message_to_location`
|
|
WHERE `service_message_id` = " . intval($id));
|
|
|
|
hesk_dbQuery("DELETE FROM `" . hesk_dbEscape($heskSettings['db_pfix']) . "service_messages`
|
|
WHERE `id` = " . intval($id));
|
|
|
|
$this->close();
|
|
}
|
|
|
|
function resortAllServiceMessages($heskSettings) {
|
|
$this->init();
|
|
|
|
$rs = hesk_dbQuery("SELECT `id` FROM `" . hesk_dbEscape($heskSettings['db_pfix']) . "service_messages`
|
|
ORDER BY `order` ASC");
|
|
|
|
$sortValue = 10;
|
|
while ($row = hesk_dbFetchAssoc($rs)) {
|
|
hesk_dbQuery("UPDATE `" . hesk_dbEscape($heskSettings['db_pfix']) . "service_messages`
|
|
SET `order` = " . intval($sortValue) . "
|
|
WHERE `id` = " . intval($row['id']));
|
|
|
|
$sortValue += 10;
|
|
}
|
|
|
|
$this->close();
|
|
}
|
|
} |