Update copyright date for 2020
[civicrm-core.git] / Civi / Api4 / Event / Subscriber / ActivitySchemaMapSubscriber.php
CommitLineData
19b53e5b
C
1<?php
2
380f3545
TO
3/*
4 +--------------------------------------------------------------------+
5 | CiviCRM version 5 |
6 +--------------------------------------------------------------------+
f299f7db 7 | Copyright CiviCRM LLC (c) 2004-2020 |
380f3545
TO
8 +--------------------------------------------------------------------+
9 | This file is a part of CiviCRM. |
10 | |
11 | CiviCRM is free software; you can copy, modify, and distribute it |
12 | under the terms of the GNU Affero General Public License |
13 | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
14 | |
15 | CiviCRM is distributed in the hope that it will be useful, but |
16 | WITHOUT ANY WARRANTY; without even the implied warranty of |
17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. |
19 | |
20 | You should have received a copy of the GNU Affero General Public |
21 | License and the CiviCRM Licensing Exception along |
22 | with this program; if not, contact CiviCRM LLC |
23 | at info[AT]civicrm[DOT]org. If you have questions about the |
24 | GNU Affero General Public License or the licensing of CiviCRM, |
25 | see the CiviCRM license FAQ at http://civicrm.org/licensing |
26 +--------------------------------------------------------------------+
27 */
28
29/**
30 *
31 * @package CRM
f299f7db 32 * @copyright CiviCRM LLC (c) 2004-2020
380f3545
TO
33 * $Id$
34 *
35 */
36
37
19b53e5b
C
38namespace Civi\Api4\Event\Subscriber;
39
40use Civi\Api4\Event\Events;
41use Civi\Api4\Event\SchemaMapBuildEvent;
42use Civi\Api4\Service\Schema\Joinable\ActivityToActivityContactAssigneesJoinable;
43use Civi\Api4\Service\Schema\Joinable\BridgeJoinable;
44use Civi\Api4\Service\Schema\Joinable\Joinable;
45use Symfony\Component\EventDispatcher\EventSubscriberInterface;
46
47class ActivitySchemaMapSubscriber implements EventSubscriberInterface {
48
49 /**
50 * @return array
51 */
52 public static function getSubscribedEvents() {
53 return [
54 Events::SCHEMA_MAP_BUILD => 'onSchemaBuild',
55 ];
56 }
57
58 /**
59 * @param \Civi\Api4\Event\SchemaMapBuildEvent $event
60 */
61 public function onSchemaBuild(SchemaMapBuildEvent $event) {
62 $schema = $event->getSchemaMap();
63 $table = $schema->getTableByName('civicrm_activity');
64
65 $middleAlias = \CRM_Utils_String::createRandom(10, implode(range('a', 'z')));
66 $middleLink = new ActivityToActivityContactAssigneesJoinable($middleAlias);
67
68 $bridge = new BridgeJoinable('civicrm_contact', 'id', 'assignees', $middleLink);
69 $bridge->setBaseTable('civicrm_activity_contact');
70 $bridge->setJoinType(Joinable::JOIN_TYPE_ONE_TO_MANY);
71
72 $table->addTableLink('contact_id', $bridge);
73 }
74
75}