File size: 5.35Kb
<?
class delivery {
// Отправка сообщения
static function sendDelivery ($msg, $whom) {
global $user;
mysql_query("INSERT INTO `mail_delivery` (`id_user`, `time`, `msg`, `whom`) VALUES ('$user[id]', '".time()."', '$msg', '$whom')");
$did = mysql_insert_id();
self::revieweDelivery($did);
self::deleteDelivery($did);
return $did;
}
// просмотр всех сообщений
static function reviewAllDeliveries () {
global $user;
$reviewed = array();
$q = mysql_query("SELECT * FROM `mail_delivery`");
while ($post = mysql_fetch_assoc($q)) {
$reviewed[] = $post['id'];
}
$user['reviewed_deliveries'] = serialize($reviewed);
mysql_query("UPDATE `user` SET `reviewed_deliveries` = '$user[reviewed_deliveries]' WHERE `id` = '$user[id]'");
return true;
}
// чтение сообщения
static function revieweDelivery ($msg_id) {
global $user;
if (!self::deliveryExists($msg_id))
return false;
if (self::isReviewed($msg_id))
return false;
$reviewed = self::getReviewedDeliveries();
$reviewed[] = $msg_id;
$user['reviewed_deliveries'] = serialize($reviewed);
mysql_query("UPDATE `user` SET `reviewed_deliveries` = '$user[reviewed_deliveries]' WHERE `id` = '$user[id]'");
return true;
}
// удаление всех сообщений
static function deleteAllDeliveries () {
global $user;
$deleted = array();
$q = mysql_query("SELECT * FROM `mail_delivery`");
while ($post = mysql_fetch_assoc($q)) {
$deleted[] = $post['id'];
}
$user['deleted_deliveries'] = serialize($deleted);
mysql_query("UPDATE `user` SET `deleted_deliveries` = '$user[deleted_deliveries]' WHERE `id` = '$user[id]'");
return true;
}
// удаление сообщения
static function deleteDelivery ($msg_id) {
global $user;
if (!self::deliveryExists($msg_id))
return false;
if (self::isDeleted($msg_id))
return false;
$deleted = self::getDeletedDeliveries();
$deleted[] = $msg_id;
$user['deleted_deliveries'] = serialize($deleted);
mysql_query("UPDATE `user` SET `deleted_deliveries` = '$user[deleted_deliveries]' WHERE `id` = '$user[id]'");
return true;
}
// проверка на прочтение
static function isReviewed ($msg_id) {
$reviewed = self::getReviewedDeliveries();
if (!self::deliveryExists($msg_id))
return false;
if (!in_array($msg_id, $reviewed))
return false;
return true;
}
// проверка на удаление
static function isDeleted ($msg_id) {
$deleted = self::getDeletedDeliveries();
if (!self::deliveryExists($msg_id))
return false;
if (!in_array($msg_id, $deleted))
return false;
return true;
}
// проверка наличия в базе
static function deliveryExists ($msg_id) {
return mysql_result(mysql_query("SELECT COUNT(*) FROM `mail_delivery` WHERE `id` = '$msg_id'"), 0) == 1 ? true : false;
}
// получение просмотренных сообщений
static function getReviewedDeliveries() {
global $user;
if ($user['reviewed_deliveries'] != null)
return unserialize($user['reviewed_deliveries']);
return array();
}
// получение просмотренных сообщений
static function getDeletedDeliveries() {
global $user;
if ($user['deleted_deliveries'] != null)
return unserialize($user['deleted_deliveries']);
return array();
}
// получение непросмотренных сообщений
static function getNotReviwedDeliveries() {
$q = mysql_query("SELECT * FROM `mail_delivery` WHERE ".self::getMyWhomQuery().(self::getReviewedQuery() ? " AND ".self::getReviewedQuery() : null));
return mysql_num_rows($q);
}
// получение доступных whom
static function getMyWhom () {
global $user;
$myWhoms = array(1);
if ($user['pol'] == 1)
array_push($myWhoms, 2);
if ($user['pol'] == 0)
array_push($myWhoms, 3);
if ($user['group_access'] >= 2 && $user['group_access'] <= 6)
array_push($myWhoms, 4);
if ($user['group_access'] >= 7)
array_push($myWhoms, 5);
if ($user['group_access'] <= 1)
array_push($myWhoms, 6);
if ($user['group_access'] >= 2)
array_push($myWhoms, 7);
return $myWhoms;
}
// получение доступных whom для запроса
static function getMyWhomQuery () {
$whom_query = "(`whom` = '".implode("' OR `whom` = '", self::getMyWhom())."')";
return $whom_query;
}
// получение удаленных рассылок для запроса
static function getDeletedQuery () {
$deleted_query = count(self::getDeletedDeliveries()) ? "(`id` != '".implode("' AND `id` != '", self::getDeletedDeliveries())."')" : "";
return $deleted_query;
}
// получение удаленных рассылок для запроса
static function getReviewedQuery () {
$reviewed_query = count(self::getReviewedDeliveries()) ? "(`id` != '".implode("' AND `id` != '", self::getReviewedDeliveries())."')" : "";
return $reviewed_query;
}
// получаем whoms
static function getWhoms () {
$whoms = array(1 => 'Всем', 2 => 'Парням', 3 => 'Девушкам', 4 => 'Модераторам', 5 => 'Администраторам', 6 => 'Только Юзерам', 7 => 'Только Администрации');
return $whoms;
}
}
?>