Greet   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 63
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 4
c 2
b 0
f 0
lcom 1
cbo 3
dl 0
loc 63
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A setRequestData() 0 3 1
A generateSessionId() 0 4 1
A __construct() 0 7 1
B execute() 0 27 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