1
0
mirror of https://github.com/wbbaddons/Tims-Chat.git synced 2024-11-01 14:20:07 +00:00
Tims-Chat/file/lib/data/user/UserAction.class.php

79 lines
2.5 KiB
PHP
Raw Normal View History

2014-12-09 22:57:25 +00:00
<?php
namespace chat\data\user;
use wcf\system\WCF;
/**
* User related chat actions.
*
* @author Maximilian Mader
* @copyright 2010-2014 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.chat
* @subpackage data.user
*/
class UserAction extends \wcf\data\AbstractDatabaseObjectAction {
/**
* @see \wcf\data\AbstractDatabaseObjectAction::$className
*/
2014-12-09 22:57:25 +00:00
protected $className = 'wcf\data\user\UserEditor';
/**
* Validates invite preparation.
*/
2014-12-09 22:57:25 +00:00
public function validatePrepareInvite() {
2014-12-13 14:02:36 +00:00
WCF::getSession()->checkPermissions(array('user.chat.canInvite'));
if (!WCF::getUser()->chatRoomID) throw new \wcf\system\exception\PermissionDeniedException();
$room = \chat\data\room\RoomCache::getInstance()->getRoom(WCF::getUser()->chatRoomID);
if ($room === null) throw new \wcf\system\exception\IllegalLinkException();
if (!$room->canEnter()) throw new \wcf\system\exception\PermissionDeniedException();
2014-12-09 22:57:25 +00:00
}
/**
* Prepares invites.
*/
2014-12-09 22:57:25 +00:00
public function prepareInvite() {
$followingList = new \wcf\data\user\follow\UserFollowingList();
$followingList->getConditionBuilder()->add('user_follow.userID = ?', array(WCF::getUser()->userID));
$followingList->readObjects();
$users = $followingList->getObjects();
2014-12-12 22:15:58 +00:00
$json = array();
foreach ($users as $user) {
$json[] = array(
'userID' => $user->userID,
'username' => $user->username
);
}
2014-12-09 22:57:25 +00:00
return array(
2014-12-12 22:15:58 +00:00
'users' => $json
2014-12-09 22:57:25 +00:00
);
}
/**
* Validates invites.
*/
2014-12-09 22:57:25 +00:00
public function validateInvite() {
2014-12-13 14:02:36 +00:00
WCF::getSession()->checkPermissions(array('user.chat.canInvite'));
2014-12-09 22:57:25 +00:00
2014-12-13 14:02:36 +00:00
if (!WCF::getUser()->chatRoomID) throw new \wcf\system\exception\PermissionDeniedException();
$this->room = \chat\data\room\RoomCache::getInstance()->getRoom(WCF::getUser()->chatRoomID);
if ($this->room === null) throw new \wcf\system\exception\IllegalLinkException();
if (!$this->room->canEnter()) throw new \wcf\system\exception\PermissionDeniedException();
2014-12-13 14:02:36 +00:00
if (!isset($this->parameters['recipients'])) throw new \wcf\system\exception\UserInputException("recipients");
2014-12-09 22:57:25 +00:00
}
/**
* Invites users.
*/
2014-12-09 22:57:25 +00:00
public function invite() {
\wcf\system\user\notification\UserNotificationHandler::getInstance()->fireEvent('invited', 'be.bastelstu.chat.room', new \chat\system\user\notification\object\RoomUserNotificationObject($this->room), \wcf\util\ArrayUtil::toIntegerArray($this->parameters['recipients']), array('userID' => WCF::getUser()->userID));
2014-12-09 22:57:25 +00:00
}
}