Merge branch '2.0'
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / data / session / virtual / SessionVirtualAction.class.php
1 <?php
2 namespace wcf\data\session\virtual;
3 use wcf\data\AbstractDatabaseObjectAction;
4 use wcf\util\UserUtil;
5
6 /**
7 * Executes virtual session-related actions.
8 *
9 * @author Alexander Ebert
10 * @copyright 2001-2014 WoltLab GmbH
11 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
12 * @package com.woltlab.wcf
13 * @subpackage data.session.virtual
14 * @category Community Framework
15 */
16 class SessionVirtualAction extends AbstractDatabaseObjectAction {
17 /**
18 * @see \wcf\data\AbstractDatabaseObjectAction::$className
19 */
20 protected $className = 'wcf\data\session\virtual\SessionVirtualEditor';
21
22 /**
23 * Attention: This method does not always return a new object, in case a matching virtual session
24 * already exists, the existing session will be returned rather than a new session being created.
25 *
26 * @see \wcf\data\AbstractDatabaseObjectAction::create()
27 */
28 public function create() {
29 // try to find an existing virtual session
30 $baseClass = call_user_func(array($this->className, 'getBaseClass'));
31 $virtualSession = call_user_func(array($baseClass, 'getExistingSession'), $this->parameters['data']['sessionID']);
32 if ($virtualSession !== null) {
33 return $virtualSession;
34 }
35
36 if (!isset($this->parameters['data']['lastActivityTime'])) $this->parameters['data']['lastActivityTime'] = TIME_NOW;
37 if (!isset($this->parameters['data']['ipAddress'])) $this->parameters['data']['ipAddress'] = UserUtil::getIpAddress();
38 if (!isset($this->parameters['data']['userAgent'])) $this->parameters['data']['userAgent'] = UserUtil::getUserAgent();
39
40 return parent::create();
41 }
42 }