| | <?php |
| |
|
| | namespace Kanboard\Job; |
| |
|
| | use Kanboard\Event\GenericEvent; |
| | use Kanboard\Model\UserModel; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | class UserMentionJob extends BaseJob |
| | { |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function withParams($text, $eventName, GenericEvent $event) |
| | { |
| | $this->jobParams = array($text, $eventName, $event->getAll()); |
| | return $this; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function execute($text, $eventName, array $eventData) |
| | { |
| | $event = new GenericEvent($eventData); |
| | $users = $this->getMentionedUsers($text); |
| |
|
| | foreach ($users as $user) { |
| | if ($this->projectPermissionModel->isMember($event->getProjectId(), $user['id'])) { |
| | $event['mention'] = $user; |
| | $this->dispatcher->dispatch($event, $eventName); |
| | } |
| | } |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function getMentionedUsers($text) |
| | { |
| | $users = array(); |
| |
|
| | if ($text !== null && preg_match_all('/@([^\s,!:?]+)/', $text, $matches)) { |
| | array_walk($matches[1], function (&$username) { $username = rtrim($username, '.'); }); |
| | $users = $this->db->table(UserModel::TABLE) |
| | ->columns('id', 'username', 'name', 'email', 'language') |
| | ->eq('notifications_enabled', 1) |
| | ->neq('id', $this->userSession->getId()) |
| | ->in('username', array_unique($matches[1])) |
| | ->findAll(); |
| | } |
| |
|
| | return $users; |
| | } |
| | } |
| |
|