View file deliveries/sys/inc/classes/delivery.php

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;
	}
}
?>