View file application/backstage/Messages.php

File size: 4.63Kb
<?PHP
	require(__DIR__ . '/../start.php');
	
	/*
		Проверка валидности
	*/
	IsValidActions();
	
	/*
		Проверка на авторизацию
	*/
	if(empty($_SESSION['id'])) {
		AlertError(getLang('backstage_auth'));
	}
	
	$Messages = new Messages;
	
	/*
		Отправка сообщения
	*/
	if(isset($_POST['Send'])) {
		if(isset($_POST['first_message'])) {
			$Dialog = dialogs()->findPeer($_POST['userid']);
			
			if(empty($Dialog)) {
				$_POST['peerid'] = dialogs()->Create([
					$_SESSION['id'],
					$_POST['userid']
				]);
			}
			else {
				$_POST['peerid'] = $Dialog->id;
			}
		}
		
		if(empty($_POST['peerid']) || !dialogs()->IsUserPeer($_POST['peerid'])) {
			AlertError(getLang('backstage_clip_no_user'));
		}
		
		try {
			$Messages->Send($_POST['peerid'], $_POST['message']);
			
			Result([
				'Alert' => 'Success',
				'Content' => $Messages->GetMessageRange($_POST['peerid'], $_POST['lastid']),
				'LastId' => $Messages->GetLastId($_POST['peerid']),
				'PeerId' => $_POST['peerid'],
				'Dialogs' => dialogs()->GetDialogs(),
				'Clear' => isset($_POST['first_message'])
			]);
		}
		catch(Exception $e) {
			AlertError($e->getMessage());
		}
	}
	
	/*
		Массовая рассылка
	*/
	if(isset($_POST['massMailing'])) {
		if(empty($_POST['recipient'])) {
			AlertError('Выберите получателей');
		}
		
		$Uploads = new Uploads;
		$peerids = [];
		
		foreach($_POST['recipient'] as $key => $userid) {
			if($userid == $_SESSION['id']) {
				continue;
			}
			
			$Dialog = dialogs()->findPeer($userid);
			
			if(empty($Dialog)) {
				$_POST['peerid'] = dialogs()->Create([$_SESSION['id'], $userid]);
			}
			else {
				$_POST['peerid'] = $Dialog->id;
			}
			
			if(empty($_POST['peerid']) || !dialogs()->IsUserPeer($_POST['peerid'])) {
				continue;
			}
			
			$peerids[] = $_POST['peerid'];
			
			try {
				if(mb_strlen($_POST['message']) >= 1) {
					$Messages->Send($_POST['peerid'], $_POST['message']);
				}
			}
			catch(Exception $e) {
				continue;
			}
		}
		
		try {
			$Uploads->Start($_FILES, $peerids);
		}
		catch(Exception $e) {}
		
		Result(['Alert' => 'Success']);
	}
	
	/*
		Диапазон сообщений
	*/
	if(isset($_POST['GetMessageRange'])) {
		if(empty($_POST['peerid']) || !dialogs()->IsUserPeer($_POST['peerid'])) {
			Result([
				'Alert' => 'Info',
				'Dialogs' => dialogs()->GetDialogs()
			]);
		}
		
		if(!$Messages->GetLastId($_POST['peerid']) && (empty($_POST['lastid']) || $_POST['lastid'] == 0)) {
			return;
		}
		
		try {
			Result([
				'Alert' => 'Success',
				'Content' => $Messages->GetMessageRange($_POST['peerid'], $_POST['lastid']),
				'LastId' => $Messages->GetLastId($_POST['peerid']),
				'Dialogs' => dialogs()->GetDialogs()
			]);
		}
		catch(Exception $e) {
			Result([
				'Alert' => 'Info',
				'Dialogs' => dialogs()->GetDialogs()
			]);
		}
	}
	
	/*
		Получение сообщений
	*/
	if(isset($_POST['GetMessages'])) {
		if(!dialogs()->IsUserPeer($_POST['peerid'])) {
			AlertError(getLang('system_no_dialog'));
		}
		
		try {
			$MessagesList = $Messages->GetMessagesGUI($_POST['peerid']);
		}
		catch(Exception $e) {
			$MessagesList = $e->getMessage();
		}
		
		$Dialog = dialogs()->GetDialog($_POST['peerid']);
		
		Result([
			'Content' => $MessagesList,
			'peerImage' => $Dialog['image'],
			'peerName' => $Dialog['title'],
			'LastId' => $Messages->GetLastId($_POST['peerid']),
			'Dialogs' => dialogs()->GetDialogs()
		]);
	}
	
	/*
		Удаление сообщения (визуально)
	*/
	if(isset($_POST['Trash'])) {
		$dataMessages = $Messages->Get($_POST['msgid']);
		
		if(!dialogs()->IsUserPeer($dataMessages->peerid)) {
			AlertError(getLang('system_no_dialog'));
		}
		
		try {
			$Messages->addHidden($_POST['msgid'], $_SESSION['id']);
			Result([
				'Alert' => 'Success'
			]);
		}
		catch(Exception $e) {
			AlertError($e->getMessage());
		}
	}
	
	/*
		Подгрузка старых сообщений
	*/
	if(isset($_POST['GetMessageRangeOld'])) {
		if(empty($_POST['peerid']) || !dialogs()->IsUserPeer($_POST['peerid'])) {
			Result([
				'Alert' => 'Info',
				'Dialogs' => dialogs()->GetDialogs()
			]);
		}
		
		if(!$Messages->GetLastId($_POST['peerid']) && (empty($_POST['lastid']) || $_POST['lastid'] == 0)) {
			return;
		}
		
		try {
			Result([
				'Alert' => 'Success',
				'Content' => $Messages->GetMessageRangeOld($_POST['peerid'], $_POST['firstid'])
			]);
		}
		catch(Exception $e) {
			Result([
				'Alert' => 'Info'
			]);
		}
	}