Greet::setRequestData()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %
Metric Value
dl 0
loc 3
rs 10
cc 1
eloc 2
nc 1
nop 1
1
<?php
2
/**
3
 * Copyright (c) 2014, Tobia De Koninck hey--at--ledfan.be
4
 * This file is licensed under the AGPL version 3 or later.
5
 * See the COPYING file.
6
 */
7
8
namespace OCA\Chat\OCH\Commands;
9
10
use \OCA\Chat\OCH\ChatAPI;
11
use \OCA\Chat\OCH\Db\UserOnline;
12
use \OCA\Chat\OCH\Db\UserOnlineMapper;
13
use \OCA\CHat\OCH\Db\PushMessageMapper;
14
use \OCA\Chat\App\Chat;
15
16
class Greet extends ChatAPI {
17
18
	/**
19
	 * @var $pushMessageMapper \OCA\Chat\OCH\Db\PushMessageMapper
20
	 */
21
	private $pushMessageMapper;
22
23
	/**
24
	 * @var $userOnlineMapper \OCA\Chat\OCH\Db\UserOnlineMapper
25
	 */
26
	private $userOnlineMapper;
27
28
	public function __construct(
29
		PushMessageMapper $pushMessageMapper,
30
		UserOnlineMapper $userOnlineMapper
31
	){
32
		$this->pushMessageMapper = $pushMessageMapper;
33
		$this->userOnlineMapper = $userOnlineMapper;
34
	}
35
36
	/*
37
	 * @param $requestData['user'] String user id of the client
38
	 * @param $requestData['session_id'] String session_id of the client
39
	 * @param $requestData['timestamp'] Int timestamp when the command was send
40
	*/
41
	public function setRequestData(array $requestData){
42
		$this->requestData = $requestData;
43
	}
44
45
	public function execute(){
46
		$requestData = $this->getRequestData();
47
		$sessionId = $this->generateSessionId($requestData['timestamp']);
48
		$userOnline = new UserOnline();
49
		$userOnline->setUser($requestData['user']['id']);
50
		$userOnline->setSessionId($sessionId);
51
		$userOnline->setLastOnline($requestData['timestamp']);
52
		$this->userOnlineMapper->insert($userOnline);
53
54
55
		// The user is now online
56
		// send a push message to every user to inform this
57
		$command = json_encode(array(
58
			'type' => 'online',
59
			'data' => array(
60
				'user' => $this->requestData['user'],
61
				'timestamp' => $this->requestData['timestamp'],
62
			)
63
		));
64
65
		$this->pushMessageMapper->createForAllSessions(
66
			$this->requestData['user']['id'],
67
			$command
68
		);
69
70
		return array("session_id" => $sessionId);
71
	}
72
73
	private function generateSessionId($timestamp){
74
		$seed = "sessionID" . $timestamp;
75
		return md5($seed);
76
	}
77
78
}
79