mirror of
https://github.com/espocrm/espocrm.git
synced 2026-06-28 15:06:06 +00:00
invitation 3
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
<?php
|
||||
/************************************************************************
|
||||
* This file is part of EspoCRM.
|
||||
*
|
||||
* EspoCRM - Open Source CRM application.
|
||||
* Copyright (C) 2014 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
|
||||
* Website: http://www.espocrm.com
|
||||
*
|
||||
* EspoCRM is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* EspoCRM is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
|
||||
************************************************************************/
|
||||
|
||||
namespace Espo\Modules\Crm\EntryPoints;
|
||||
|
||||
use \Espo\Core\Utils\Util;
|
||||
|
||||
use \Espo\Core\Exceptions\NotFound;
|
||||
use \Espo\Core\Exceptions\Forbidden;
|
||||
use \Espo\Core\Exceptions\BadRequest;
|
||||
use \Espo\Core\Exceptions\Error;
|
||||
|
||||
class EventConfirmation extends \Espo\Core\EntryPoints\Base
|
||||
{
|
||||
public static $authRequired = false;
|
||||
|
||||
public function run()
|
||||
{
|
||||
$uid = $_GET['uid'];
|
||||
$action = $_GET['action'];
|
||||
if (empty($uid) || empty($action)) {
|
||||
throw new BadRequest();
|
||||
}
|
||||
|
||||
if (!in_array($action, array('accept', 'decline'))) {
|
||||
throw new BadRequest();
|
||||
}
|
||||
|
||||
$uniqueId = $this->getEntityManager()->getRepository('UniqueId')->where(array('name' => $uid))->findOne();
|
||||
|
||||
if (!$uniqueId) {
|
||||
//throw new NotFound();
|
||||
echo "Link is not available";
|
||||
return;
|
||||
}
|
||||
|
||||
$data = json_decode($uniqueId->get('data'));
|
||||
|
||||
$eventType = $data->eventType;
|
||||
$eventId = $data->eventId;
|
||||
$inviteeType = $data->inviteeType;
|
||||
$inviteeId = $data->inviteeId;
|
||||
$link = $data->link;
|
||||
|
||||
if (!empty($eventType) && !empty($eventId) && !empty($inviteeType) && !empty($inviteeId) && !empty($link)) {
|
||||
$event = $this->getEntityManager()->getEntity($eventType, $eventId);
|
||||
$invitee = $this->getEntityManager()->getEntity($inviteeType, $inviteeId);
|
||||
if ($event && $invitee) {
|
||||
$relDefs = $event->getRelations();
|
||||
$tableName = Util::toUnderscore($relDefs[$link]['relationName']);
|
||||
|
||||
$status = 'None';
|
||||
if ($action == 'accept') {
|
||||
$status = 'Accepted';
|
||||
} else if ($action == 'decline') {
|
||||
$status = 'Declined';
|
||||
}
|
||||
|
||||
$pdo = $this->getEntityManager()->getPDO();
|
||||
$sql = "
|
||||
UPDATE `{$tableName}` SET status = '{$status}'
|
||||
WHERE ".strtolower($eventType)."_id = '{$eventId}' AND ".strtolower($inviteeType)."_id = '{$inviteeId}'
|
||||
";
|
||||
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute();
|
||||
|
||||
$this->getEntityManager()->getRepository('UniqueId')->remove($uniqueId);
|
||||
|
||||
echo $status;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
throw new Error();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,13 +62,13 @@ class Meeting extends \Espo\Services\Record
|
||||
}
|
||||
if ($uid) {
|
||||
$siteUrl = rtrim($this->getConfig()->get('siteUrl'), '/');
|
||||
$contents = str_replace('{acceptLink}', $siteUrl . '?entryPoint=acceptEvent&uid=' . $uid->id, $contents);
|
||||
$contents = str_replace('{declineLink}', $siteUrl . '?entryPoint=declineEvent&uid=' . $uid->id, $contents);
|
||||
$contents = str_replace('{acceptLink}', $siteUrl . '?entryPoint=eventConfirmation&action=accept&uid=' . $uid->get('name'), $contents);
|
||||
$contents = str_replace('{declineLink}', $siteUrl . '?entryPoint=eventConfirmation&action=decline&uid=' . $uid->get('name'), $contents);
|
||||
}
|
||||
return $contents;
|
||||
}
|
||||
|
||||
protected function sendInvitation(Entity $entity, Entity $invitee)
|
||||
protected function sendInvitation(Entity $entity, Entity $invitee, $link)
|
||||
{
|
||||
|
||||
$uid = $this->getEntityManager()->getEntity('UniqueId');
|
||||
@@ -77,6 +77,7 @@ class Meeting extends \Espo\Services\Record
|
||||
'eventId' => $entity->id,
|
||||
'inviteeId' => $invitee->id,
|
||||
'inviteeType' => $invitee->getEntityName(),
|
||||
'link' => $link
|
||||
)));
|
||||
$this->getEntityManager()->saveEntity($uid);
|
||||
|
||||
@@ -111,17 +112,17 @@ class Meeting extends \Espo\Services\Record
|
||||
{
|
||||
$users = $entity->get('users');
|
||||
foreach ($users as $user) {
|
||||
$this->sendInvitation($entity, $user);
|
||||
$this->sendInvitation($entity, $user, 'users');
|
||||
}
|
||||
|
||||
$contacts = $entity->get('contacts');
|
||||
foreach ($contacts as $contact) {
|
||||
$this->sendInvitation($entity, $contact);
|
||||
$this->sendInvitation($entity, $contact, 'contacts');
|
||||
}
|
||||
|
||||
$leads = $entity->get('leads');
|
||||
foreach ($leads as $lead) {
|
||||
$this->sendInvitation($entity, $lead);
|
||||
$this->sendInvitation($entity, $lead, 'leads');
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user