Merge branch '2013.10' into 2014.11
[tine20] / tine20 / Calendar / Setup / DemoData.php
1 <?php
2 /**
3  * Tine 2.0
4  *
5  * @package     Calendar
6  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
7  * @author      Alexander Stintzing <a.stintzing@metaways.de>
8  * @copyright   Copyright (c) 2012-2013 Metaways Infosystems GmbH (http://www.metaways.de)
9  *
10  */
11
12 /**
13  * class for Calendar initialization
14  *
15  * @package     Setup
16  */
17 class Calendar_Setup_DemoData extends Tinebase_Setup_DemoData_Abstract
18 {
19     /**
20      * holds the instance of the singleton
21      *
22      * @var Calendar_Setup_DemoData
23      */
24     private static $_instance = NULL;
25
26     /**
27      * 
28      * required apps
29      * @var array
30      */
31     protected static $_requiredApplications = array('Admin');
32     
33     /**
34      * models to work on
35      * 
36      * @var array
37      */
38     protected $_models = array('event');
39
40     /**
41      * the event controller
42      * 
43      * @var Calendar_Controller_Event
44      */
45     protected $_controller = NULL;
46     
47     /**
48      * private calendars
49      * 
50      * @var Array
51      */
52     protected $_calendars = array();
53
54     /**
55      * the constructor
56      *
57      */
58     private function __construct()
59     {
60         $this->_controller = Calendar_Controller_Event::getInstance();
61         $this->_controller->sendNotifications(false);
62     }
63
64     /**
65      * the singleton pattern
66      *
67      * @return Calendar_Setup_DemoData
68      */
69     public static function getInstance()
70     {
71         if (self::$_instance === NULL) {
72             self::$_instance = new Calendar_Setup_DemoData;
73         }
74
75         return self::$_instance;
76     }
77
78     /**
79      * this is required for other applications needing demo data of this application
80      * if this returns true, this demodata has been run already
81      * 
82      * @return boolean
83      */
84     public static function hasBeenRun()
85     {
86         $c = Calendar_Controller_Event::getInstance();
87         
88         $f = new Calendar_Model_EventFilter(array(
89             array('field' => 'summary', 'operator' => 'equals', 'value' => 'Meeting for further education'),
90             array('field' => 'summary', 'operator' => 'equals', 'value' => 'Fortbildungsveranstaltung')
91         ), 'OR');
92         
93         return ($c->search($f)->count() > 0) ? true : false;
94     }
95     
96     /**
97      * @see Tinebase_Setup_DemoData_Abstract
98      */
99     protected function _onCreate() {
100
101         $this->_getDays();
102         foreach($this->_personas as $loginName => $persona) {
103             $this->_calendars[$loginName] = Tinebase_Container::getInstance()->getContainerById(Tinebase_Core::getPreference('Calendar')->getValueForUser(Calendar_Preference::DEFAULTCALENDAR, $persona->getId()));
104
105             Tinebase_Container::getInstance()->addGrants($this->_calendars[$loginName]->getId(), 'user', $this->_personas['sclever']->getId(), $this->_secretaryGrants, true);
106             Tinebase_Container::getInstance()->addGrants($this->_calendars[$loginName]->getId(), 'user', $this->_personas['rwright']->getId(), $this->_controllerGrants, true);
107
108         }
109     }
110     
111     /**
112      * creates a shared calendar
113      */
114     private function _createSharedCalendar()
115     {
116         // create shared calendar
117         $this->sharedCalendar = Tinebase_Container::getInstance()->addContainer(new Tinebase_Model_Container(array(
118             'name'           => static::$_de ? 'Gemeinsamer Kalender' : 'Shared Calendar',
119             'type'           => Tinebase_Model_Container::TYPE_SHARED,
120             'owner_id'       => Tinebase_Core::getUser(),
121             'backend'        => 'SQL',
122             'application_id' => Tinebase_Application::getInstance()->getApplicationByName('Calendar')->getId(),
123             'color'          => '#00FF00'
124         ), true));
125
126         $group = Tinebase_Group::getInstance()->getGroupByName(Tinebase_Group::DEFAULT_USER_GROUP);
127         Tinebase_Container::getInstance()->addGrants($this->sharedCalendar->getId(), 'group', $group->getId(), $this->_userGrants, true);
128         Tinebase_Container::getInstance()->addGrants($this->sharedCalendar->getId(), 'user', $this->_personas['sclever']->getId(), $this->_secretaryGrants, true);
129
130         // create some resorces as well
131         $this->_ressources = array();
132         $this->_ressources[] = Calendar_Controller_Resource::getInstance()->create(new Calendar_Model_Resource(array(
133             'name'                 => static::$_de ? 'Besprechnungsraum Mars (1.OG)' : 'Meeting Room Mars (first floor)',
134             'description'          => static::$_de ? 'Bis zu 10 Personen' : 'Up to 10 people',
135             'email'                => 'mars@tin20.com',
136             'is_location'          => TRUE,
137         )));
138         $this->_ressources[] = Calendar_Controller_Resource::getInstance()->create(new Calendar_Model_Resource(array(
139             'name'                 => static::$_de ? 'Besprechnungsraum Venus (2.OG)' : 'Meeting Room Venus (second floor)',
140             'description'          => static::$_de ? 'Bis zu 14 Personen' : 'Up to 14 people',
141             'email'                => 'venus@tin20.com',
142             'is_location'          => TRUE,
143         )));
144     }
145     
146     /**
147      * creates shared events
148      */
149     protected function _createSharedEvents()
150     {
151         $this->_createSharedCalendar();
152
153         $monday = clone $this->_monday;
154         $tuesday = clone $this->_tuesday;
155         $wednesday = clone $this->_wednesday;
156         $thursday = clone $this->_thursday;
157         $friday = clone $this->_friday;
158         $lastMonday = clone $this->_lastMonday;
159         $lastFriday = clone $this->_lastFriday;
160
161         $defaultAttendeeData = array(
162             'quantity'  => "1",
163             'role'  => "REQ",
164             'status'  => "ACCEPTED",
165             'transp'  => "OPAQUE",
166             'user_type'  => "user"
167         );
168         $defaultData = array(
169             'container_id' => $this->sharedCalendar->getId(),
170             Tinebase_Model_Grants::GRANT_EDIT    => true,
171
172             'attendee' => array(
173                 array_merge($defaultAttendeeData,
174                     array('user_id'  => $this->_personas['pwulf']->toArray())
175                 ),
176                 array_merge($defaultAttendeeData,
177                     array('user_id'  => $this->_personas['sclever']->toArray())
178                 ),
179                 array_merge($defaultAttendeeData,
180                     array('user_id'  => $this->_personas['jsmith']->toArray())
181                 ),
182                 array_merge($defaultAttendeeData,
183                     array('user_id'  => $this->_personas['jmcblack']->toArray())
184                 ),
185                 array_merge($defaultAttendeeData,
186                     array('user_id'  => $this->_personas['rwright']->toArray())
187                 ),
188             )
189
190
191         );
192         $lastMonday->add(date_interval_create_from_date_string('20 weeks'));
193         $rruleUntilMondayMeeting = $lastMonday->format('d-m-Y') . ' 16:00:00';
194         
195         // shared events data
196         $this->sharedEventsData = array(
197             array_merge_recursive($defaultData,
198                 array(
199                     'summary'     => static::$_de ? 'Mittagspause' : 'lunchtime',
200                     'description' => static::$_de ? '' : '',
201                     'dtstart'     => $monday->format('d-m-Y') . ' 12:00:00',
202                     'dtend'       => $monday->format('d-m-Y') . ' 13:00:00',
203                 )),
204             array_merge_recursive($defaultData,
205                 array(
206                     'summary'     => static::$_de ? 'Projektleitermeeting' : 'project leader meeting',
207                     'description' => static::$_de ? 'Treffen aller Projektleiter' : 'meeting of all project leaders',
208                     'dtstart'     => $monday->format('d-m-Y') . ' 14:15:00',
209                     'dtend'       => $monday->format('d-m-Y') . ' 16:00:00',
210                 )),
211             array_merge_recursive($defaultData,
212                 array(
213                     'summary'     => static::$_de ? 'Geschäftsführerbesprechung' : 'CEO Meeting',
214                     'description' => static::$_de ? 'Treffen aller Geschäftsführer' : 'Meeting of all CEO',
215                     'dtstart'     => $tuesday->format('d-m-Y') . ' 12:30:00',
216                     'dtend'       => $tuesday->format('d-m-Y') . ' 13:45:00',
217                 )),
218             array_merge_recursive($defaultData,
219                 array(
220                     'summary'     => static::$_de ? 'Fortbildungsveranstaltung' : 'Meeting for further education',
221                     'description' => static::$_de ? 'Wie verhalte ich mich meinen Mitarbeitern gegenüber in Problemsituationen.' : 'How to manage problematic situations with the employees',
222                     'dtstart'     => $tuesday->format('d-m-Y') . ' 17:00:00',
223                     'dtend'       => $tuesday->format('d-m-Y') . ' 18:30:00',
224                 )),
225             array_merge_recursive($defaultData,
226                 array(
227                     'summary'     => static::$_de ? 'Projektbesprechung Alpha' : 'project meeting alpha',
228                     'description' => static::$_de ? 'Besprechung des Projekts Alpha' : 'Meeting of the Alpha project',
229                     'dtstart'     => $wednesday->format('d-m-Y') . ' 08:30:00',
230                     'dtend'       => $wednesday->format('d-m-Y') . ' 09:45:00',
231                 )),
232             array_merge_recursive($defaultData,
233                 array(
234                     'summary'     => static::$_de ? 'Projektbesprechung Beta' : 'project meeting beta',
235                     'description' => static::$_de ? 'Besprechung des Projekts Beta' : 'Meeting of the beta project',
236                     'dtstart'     => $wednesday->format('d-m-Y') . ' 10:00:00',
237                     'dtend'       => $wednesday->format('d-m-Y') . ' 11:00:00',
238                 )),
239             array_merge_recursive($defaultData,
240                 array(
241                     'summary'     => static::$_de ? 'Betriebsausflug' : 'company trip',
242                     'description' => static::$_de ? 'Fahrt in die Semperoper nach Dresden' : 'Trip to the Semper Opera in Dresden',
243                     'dtstart'     => $thursday->format('d-m-Y') . ' 12:00:00',
244                     'dtend'       => $thursday->format('d-m-Y') . ' 13:00:00',
245                 )),
246             array_merge_recursive($defaultData,
247                 array(
248                     'summary'     => static::$_de ? 'Präsentation Projekt Alpha' : 'Presentation project Alpha',
249                     'description' => static::$_de ? 'Das Projekt Alpha wird der Firma GammaTecSolutions vorgestellt' : 'presentation of Project Alpha for GammaTecSolutions',
250                     'dtstart'     => $thursday->format('d-m-Y') . ' 16:00:00',
251                     'dtend'       => $thursday->format('d-m-Y') . ' 17:00:00',
252                 )),
253             array_merge_recursive($defaultData,
254                 array(
255                     'summary'     => static::$_de ? 'Montagsmeeting' : 'monday meeting',
256                     'description' => static::$_de ? 'Wöchentliches Meeting am Montag' : 'weekly meeting on monday',
257                     'dtstart'     => $lastMonday->format('d-m-Y') . ' 10:00:00',
258                     'dtend'       => $lastMonday->format('d-m-Y') . ' 12:30:00',
259                     'rrule' => array(
260                         'freq' => 'WEEKLY',
261                         'interval' => '1',
262                         'count' => 20,
263                         'wkst' => 'MO',
264                         'byday' => 'MO',
265                     ),
266                     'rrule_until' => $rruleUntilMondayMeeting
267         )),
268         array_merge_recursive(
269             $defaultData,
270             array(
271                 'summary'     => static::$_de ? 'Freitagsmeeting' : 'friday meeting',
272                 'description' => static::$_de ? 'Wöchentliches Meeting am Freitag' : 'weekly meeting on friday',
273                 'dtstart'     => $lastFriday->format('d-m-Y') . ' 16:00:00',
274                 'dtend'       => $lastFriday->format('d-m-Y') . ' 17:30:00',
275                 'rrule' => array(
276                     'freq' => 'WEEKLY',
277                     'interval' => '1',
278                     'count' => 20,
279                     'wkst' => 'FR',
280                     'byday' => 'FR',
281                 ),
282                 'rrule_until' => $lastFriday->add(date_interval_create_from_date_string('20 weeks'))->format('d-m-Y') . ' 16:00:00'
283             ))
284         );
285
286         // create shared events
287         foreach($this->sharedEventsData as $eData) {
288             $event = new Calendar_Model_Event($eData);
289             $this->_controller->create($event, false);
290         }
291     }
292
293     /**
294      * creates events for pwulf
295      */
296     protected function _createEventsForPwulf() {
297
298         // Paul Wulf
299         $monday = clone $this->_monday;
300         $tuesday = clone $this->_tuesday;
301         $wednesday = clone $this->_wednesday;
302         $thursday = clone $this->_thursday;
303         $friday = clone $this->_friday;
304         $saturday = clone $this->_saturday;
305         $sunday = clone $this->_sunday;
306         $lastMonday = clone $this->_lastMonday;
307         $lastFriday = clone $this->_lastFriday;
308         $lastSaturday = clone $this->_lastSaturday;
309         $lastSunday = clone $this->_lastSunday;
310
311         $cal = $this->_calendars['pwulf'];
312         $user = $this->_personas['pwulf'];
313
314         $defaultEventData = array(
315             'container_id' => $cal->getId(),
316             'class' => 'PRIVATE',
317             Tinebase_Model_Grants::GRANT_EDIT    => true,
318             'attendee' => array(array(
319                 'quantity'  => "1",
320                 'role'  => "REQ",
321                 'status'  => "ACCEPTED",
322                 'transp'  => "OPAQUE",
323                 'user_id'  => $user->toArray(),
324                 'user_type'  => "user"
325             ))
326         );
327         $eventsData = array(
328             array_merge_recursive($defaultEventData,
329                 array(
330                     'summary'     => static::$_de ? 'Lucy\'s Geburtstag' : 'Lucy\'s birthday',
331                     'description' => static::$_de ? '' : '',
332                     'dtstart'     => $monday->format('d-m-Y') . ' 00:00:00',
333                     'dtend'       => $monday->format('d-m-Y') . ' 23:59:00',
334                     'is_all_day_event' => true,
335                     'alarms'      => array(array(
336                         'alarm_time' => $lastSaturday->format('d-m-Y') . " 12:00:00",
337                         'minutes_before' => 2880,
338                         'model' => "Calendar_Model_Event",
339                         'options' => json_encode(array("custom" => false,"recurid" => null,"minutes_before" => "2880")),
340                         'sent_message' => "",
341                         'sent_status' => "pending"
342                     )),
343                     'rrule' => array(
344                         "bymonth" => $monday->format('m'),
345                         "bymonthday" => $monday->format('d'),
346                         "freq" => "YEARLY",
347                         "interval" => "1",
348                     ),
349                     'rrule_until' => ''
350                 )),
351             array_merge_recursive($defaultEventData,
352                 array(
353                     'summary'     => static::$_de ? 'Lucy\'s Geburtstagsfeier' : 'Lucy\'s birthday party',
354                     'description' => static::$_de ? '' : '',
355                     'dtstart'     => $friday->format('d-m-Y') . ' 19:00:00',
356                     'dtend'       => $friday->format('d-m-Y') . ' 23:00:00',
357                 )
358             ),
359             array_merge_recursive($defaultEventData,
360                 array(
361                     'summary'     => static::$_de ? 'Wettlauf mit Kevin' : 'Race with Kevin',
362                     'description' => static::$_de ? 'Treffpunkt ist am oberen Parkplatz' : 'Meet at upper parking lot',
363                     'dtstart'     => $saturday->format('d-m-Y') . ' 15:00:00',
364                     'dtend'       => $saturday->format('d-m-Y') . ' 16:00:00',
365                 )
366             ),
367             array_merge_recursive($defaultEventData,
368                 array(
369                     'summary'     => static::$_de ? 'Schwimmen gehen' : 'go swimming',
370                     'description' => static::$_de ? '' : '',
371                     'dtstart'     => $tuesday->format('d-m-Y') . ' 17:00:00',
372                     'dtend'       => $tuesday->format('d-m-Y') . ' 18:00:00',
373                 )
374             ),
375             array_merge_recursive($defaultEventData,
376                 array(
377                     'summary'     => static::$_de ? 'Schwimmen gehen' : 'go swimming',
378                     'description' => static::$_de ? '' : '',
379                     'dtstart'     => $thursday->format('d-m-Y') . ' 17:00:00',
380                     'dtend'       => $thursday->format('d-m-Y') . ' 18:00:00',
381                 )
382             ),
383             array_merge_recursive($defaultEventData,
384                 array(
385                     'summary'     => static::$_de ? 'Auto aus der Werkstatt abholen' : 'fetch car from the garage',
386                     'description' => static::$_de ? '' : '',
387                     'dtstart'     => $thursday->format('d-m-Y') . ' 15:00:00',
388                     'dtend'       => $thursday->format('d-m-Y') . ' 16:00:00',
389                 )
390             ),
391             array_merge_recursive($defaultEventData,
392                 array(
393                     'summary'     => static::$_de ? 'Oper mit Lucy' : 'Got to the Opera with Lucy',
394                     'description' => static::$_de ? 'Brighton Centre' : 'Brighton Centre',
395                     'dtstart'     => $sunday->format('d-m-Y') . ' 20:00:00',
396                     'dtend'       => $sunday->format('d-m-Y') . ' 21:30:00',
397                 )
398             ),
399
400         );
401         foreach($eventsData as $eData) {
402             $event = new Calendar_Model_Event($eData);
403             $this->_controller->create($event, false);
404         }
405
406         $cal = Tinebase_Container::getInstance()->addContainer(new Tinebase_Model_Container(array(
407             'name'           => static::$_de ? 'Geschäftlich' : 'Business',
408             'type'           => Tinebase_Model_Container::TYPE_PERSONAL,
409             'owner_id'       => Tinebase_Core::getUser(),
410             'backend'        => 'SQL',
411             'application_id' => Tinebase_Application::getInstance()->getApplicationByName('Calendar')->getId(),
412             'color'          => '#00CCFF'
413         ), true));
414
415         Tinebase_Container::getInstance()->addGrants($cal->getId(), 'user', $this->_personas['sclever']->getId(), $this->_secretaryGrants, true);
416         Tinebase_Container::getInstance()->addGrants($cal->getId(), 'user', $this->_personas['rwright']->getId(), $this->_controllerGrants, true);
417
418         $defaultEventData = array(
419             'container_id' => $cal->getId(),
420             Tinebase_Model_Grants::GRANT_EDIT    => true
421         );
422
423         $eventsData = array(
424             array_merge_recursive($defaultEventData,
425                 array(
426                     'summary'     => static::$_de ? 'Projektbesprechung Projekt Epsilon mit John' : 'Project Epsilon Meeting with John',
427                     'description' => static::$_de ? '' : '',
428                     'dtstart'     => $monday->format('d-m-Y') . ' 08:00:00',
429                     'dtend'       => $monday->format('d-m-Y') . ' 09:30:00',
430                 )
431             ),
432         );
433
434         foreach($eventsData as $eData) {
435             $event = new Calendar_Model_Event($eData);
436             $this->_controller->create($event, false);
437         }
438     }
439     
440     /**
441      * creates events for jsmith
442      */
443     protected function _createEventsForJsmith() {
444
445         // John Smith
446         $monday = clone $this->_monday;
447         $tuesday = clone $this->_tuesday;
448         $wednesday = clone $this->_wednesday;
449         $thursday = clone $this->_thursday;
450         $friday = clone $this->_friday;
451         $saturday = clone $this->_saturday;
452         $sunday = clone $this->_sunday;
453         $lastMonday = clone $this->_lastMonday;
454         $lastFriday = clone $this->_lastFriday;
455         $lastSaturday = clone $this->_lastSaturday;
456         $lastSunday = clone $this->_lastSunday;
457
458         $cal = $this->_calendars['jsmith'];
459         $user = $this->_personas['jsmith'];
460
461         $defaultEventData = array(
462             'container_id' => $cal->getId(),
463             'class' => 'PRIVATE',
464             Tinebase_Model_Grants::GRANT_EDIT    => true,
465             'attendee' => array(array(
466                 'quantity'  => "1",
467                 'role'  => "REQ",
468                 'status'  => "ACCEPTED",
469                 'transp'  => "OPAQUE",
470                 'user_id'  => $user->toArray(),
471                 'user_type'  => "user"
472             ))
473         );
474
475         $eventsData = array(
476             array_merge_recursive($defaultEventData,
477                 array(
478                     'summary'     => static::$_de ? 'Catherine\'s Geburtstag' : 'Catherine\'s birthday',
479                     'description' => static::$_de ? '' : '',
480                     'dtstart'     => $saturday->format('d-m-Y') . ' 00:00:00',
481                     'dtend'       => $saturday->format('d-m-Y') . ' 23:59:00',
482                     'is_all_day_event' => true,
483                     'alarms'      => array(array(
484                         'alarm_time' => $lastSaturday->format('d-m-Y') . " 12:00:00",
485                         'minutes_before' => 2880,
486                         'model' => "Calendar_Model_Event",
487                         'options' => json_encode(array("custom" => false, "recurid" => null, "minutes_before" => "2880")),
488                         'sent_message' => "",
489                         'sent_status' => "pending"
490                     )),
491                     'rrule' => array(
492                         "bymonth" => $monday->format('m'),
493                         "bymonthday" => $monday->format('d'),
494                         "freq" => "YEARLY",
495                         "interval" => "1",
496                     ),
497                     'rrule_until' => ''
498                 )),
499             array_merge_recursive($defaultEventData,
500                 array(
501                     'summary'     => static::$_de ? 'Elternabend Anne' : 'Talk to Ann\'s teacher',
502                     'description' => static::$_de ? '' : '',
503                     'dtstart'     => $friday->format('d-m-Y') . ' 19:00:00',
504                     'dtend'       => $friday->format('d-m-Y') . ' 23:00:00',
505                 )
506             ),
507             array_merge_recursive($defaultEventData,
508                 array(
509                     'summary'     => static::$_de ? 'I-Phone vom I-Store abholen'  : 'Fetch Iphone from store',
510                     'description' => static::$_de ? '':'',
511                     'dtstart'     => $saturday->format('d-m-Y') . ' 15:00:00',
512                     'dtend'       => $saturday->format('d-m-Y') . ' 16:00:00',
513                 )
514             ),
515             array_merge_recursive($defaultEventData,
516                 array(
517                     'summary'     => static::$_de ? 'Anne vom Sport abholen' : 'Pick up Ann after her sports lesson',
518                     'description' => static::$_de ? '' : '',
519                     'dtstart'     => $tuesday->format('d-m-Y') . ' 17:00:00',
520                     'dtend'       => $tuesday->format('d-m-Y') . ' 18:00:00',
521                 )
522             ),
523             array_merge_recursive($defaultEventData,
524                 array(
525                     'summary'     => static::$_de ? 'Paul vom Klavierunterricht abholen' : 'Pick up Paul after his piano lesson',
526                     'description' => static::$_de ? '' : '',
527                     'dtstart'     => $thursday->format('d-m-Y') . ' 17:00:00',
528                     'dtend'       => $thursday->format('d-m-Y') . ' 18:00:00',
529                 )
530             ),
531
532         );
533         foreach($eventsData as $eData) {
534             $event = new Calendar_Model_Event($eData);
535             $this->_controller->create($event, false);
536         }
537
538         $cal = Tinebase_Container::getInstance()->addContainer(new Tinebase_Model_Container(array(
539             'name'           => static::$_de ? 'Geschäftlich' : 'Business',
540             'type'           => Tinebase_Model_Container::TYPE_PERSONAL,
541             'owner_id'       => Tinebase_Core::getUser(),
542             'backend'        => 'SQL',
543             'application_id' => Tinebase_Application::getInstance()->getApplicationByName('Calendar')->getId(),
544             'color'          => '#00CCFF'
545         ), true));
546
547         Tinebase_Container::getInstance()->addGrants($cal->getId(), 'user', $this->_personas['sclever']->getId(), $this->_secretaryGrants, true);
548         Tinebase_Container::getInstance()->addGrants($cal->getId(), 'user', $this->_personas['rwright']->getId(), $this->_controllerGrants, true);
549
550         $defaultEventData['container_id'] = $cal->getId();
551         $defaultEventData['attendee'][] = array(
552             'quantity'  => "1",
553             'role'  => "REQ",
554             'status'  => "NEEDS-ACTION",
555             'transp'  => "OPAQUE",
556             'user_id'  => $this->_personas['jsmith']->toArray(),
557             'user_type'  => "user"
558         );
559         $eventsData = array(
560             array_merge_recursive($defaultEventData,
561                 array(
562                     'summary'     => static::$_de ? 'Projektbesprechung Projekt Epsilon mit John' : 'Project Epsilon Meeting with John',
563                     'description' => static::$_de ? '' : '',
564                     'dtstart'     => $monday->format('d-m-Y') . ' 09:00:00',
565                     'dtend'       => $monday->format('d-m-Y') . ' 10:30:00',
566                 )
567             ),
568         );
569
570         foreach($eventsData as $eData) {
571             $event = new Calendar_Model_Event($eData);
572             $this->_controller->create($event, false);
573         }
574     }
575
576     /**
577      * creates events for rwright
578      */
579     protected function _createEventsForRwright() {
580         // Roberta Wright
581         $monday = clone $this->_monday;
582         $tuesday = clone $this->_tuesday;
583         $wednesday = clone $this->_wednesday;
584         $thursday = clone $this->_thursday;
585         $friday = clone $this->_friday;
586         $saturday = clone $this->_saturday;
587         $sunday = clone $this->_sunday;
588         $lastMonday = clone $this->_lastMonday;
589         $lastFriday = clone $this->_lastFriday;
590         $lastSaturday = clone $this->_lastSaturday;
591         $lastSunday = clone $this->_lastSunday;
592
593         $cal = $this->_calendars['rwright'];
594         $user = $this->_personas['rwright'];
595
596         $defaultEventData = array(
597             'container_id' => $cal->getId(),
598             'class' => 'PRIVATE',
599             Tinebase_Model_Grants::GRANT_EDIT    => true,
600             'attendee' => array(array(
601                 'quantity'  => "1",
602                 'role'  => "REQ",
603                 'status'  => "ACCEPTED",
604                 'transp'  => "OPAQUE",
605                 'user_id'  => $user->toArray(),
606                 'user_type'  => "user"
607             ))
608         );
609         $eventsData = array(
610             array_merge_recursive($defaultEventData,
611                 array(
612                     'summary'     => static::$_de ? 'Joshuas Geburtstag' : 'Joshua\'s Birthday',
613                     'description' => static::$_de ? '' : '',
614                     'dtstart'     => $monday->format('d-m-Y') . ' 00:00:00',
615                     'dtend'       => $monday->format('d-m-Y') . ' 23:59:00',
616                     'is_all_day_event' => true,
617                     'alarms'      => array(array(
618                         'alarm_time' => $lastSaturday->format('d-m-Y') . " 12:00:00",
619                         'minutes_before' => 2880,
620                         'model' => "Calendar_Model_Event",
621                         'options' => json_encode(array("custom" => false,"recurid" => null,"minutes_before" => "2880")),
622                         'sent_message' => "",
623                         'sent_status' => "pending"
624                     )),
625                     'rrule' => array(
626                         "bymonth" => $monday->format('m'),
627                         "bymonthday" => $monday->format('d'),
628                         "freq" => "YEARLY",
629                         "interval" => "1",
630                     ),
631                     'rrule_until' => ''
632                 )),
633             array_merge_recursive($defaultEventData,
634                 array(
635                     'summary'     => static::$_de ? 'James Geburtstag' : 'James\'s Birthday',
636                     'description' => static::$_de ? '' : '',
637                     'dtstart'     => $friday->format('d-m-Y') . ' 00:00:00',
638                     'dtend'       => $friday->format('d-m-Y') . ' 23:59:00',
639                     'is_all_day_event' => true,
640                     'alarms'      => array(array(
641                         'alarm_time' => $wednesday->format('d-m-Y') . " 12:00:00",
642                         'minutes_before' => 2880,
643                         'model' => "Calendar_Model_Event",
644                         'options' => json_encode(array("custom" => false,"recurid" => null,"minutes_before" => "2880")),
645                         'sent_message' => "",
646                         'sent_status' => "pending"
647                     )),
648                     'rrule' => array(
649                         "bymonth" => $friday->format('m'),
650                         "bymonthday" => $friday->format('d'),
651                         "freq" => "YEARLY",
652                         "interval" => "1",
653                     ),
654                     'rrule_until' => ''
655                 )),
656             array_merge_recursive($defaultEventData,
657                 array(
658                     'summary'     => static::$_de ? 'Shoppen mit Susan' : 'Go shopping with Susan',
659
660                     'description' => static::$_de ? '' : '',
661                     'dtstart'     => $monday->format('d-m-Y') . ' 19:00:00',
662                     'dtend'       => $monday->format('d-m-Y') . ' 23:00:00',
663                 )
664             ),
665             array_merge_recursive($defaultEventData,
666                 array(
667                     'summary'     => static::$_de ? 'Joga Kurs' : 'yoga course',
668                     'description' => static::$_de ? '' : '',
669                     'dtstart'     => $saturday->format('d-m-Y') . ' 16:00:00',
670                     'dtend'       => $saturday->format('d-m-Y') . ' 18:00:00',
671                     'rrule' => array(
672                         "bymonth" => $saturday->format('m'),
673                         "bymonthday" => $saturday->format('d'),
674                         "freq" => "YEARLY",
675                         "interval" => "1",
676                     ),
677                     'rrule_until' => ''
678                 )
679             ),
680             array_merge_recursive($defaultEventData,
681                 array(
682                     'summary'     => static::$_de ? 'Controlling einfach gemacht' : 'Controlling made easy',
683                     'description' => static::$_de ? 'Fortbildungsveranstaltung' : 'further education',
684                     'dtstart'     => $tuesday->format('d-m-Y') . ' 17:00:00',
685                     'dtend'       => $tuesday->format('d-m-Y') . ' 18:00:00',
686                 )
687             )
688         );
689         foreach($eventsData as $eData) {
690             $event = new Calendar_Model_Event($eData);
691             $this->_controller->create($event, false);
692         }
693
694         $cal = Tinebase_Container::getInstance()->addContainer(new Tinebase_Model_Container(array(
695             'name'           => static::$_de ? 'Geschäftlich' : 'Business',
696             'type'           => Tinebase_Model_Container::TYPE_PERSONAL,
697             'owner_id'       => Tinebase_Core::getUser(),
698             'backend'        => 'SQL',
699             'application_id' => Tinebase_Application::getInstance()->getApplicationByName('Calendar')->getId(),
700             'color'          => '#00CCFF'
701         ), true));
702
703         Tinebase_Container::getInstance()->addGrants($cal->getId(), 'user', $this->_personas['sclever']->getId(), $this->_secretaryGrants, true);
704
705         $defaultEventData = array(
706             'container_id' => $cal->getId(),
707             Tinebase_Model_Grants::GRANT_EDIT    => true
708         );
709
710         $eventsData = array(
711             array_merge_recursive($defaultEventData,
712                 array(
713                     'summary'     => static::$_de ? 'Präsentation Quartalszahlen' : 'presentation quarter figures',
714                     'description' => static::$_de ? '' : '',
715                     'dtstart'     => $monday->format('d-m-Y') . ' 09:00:00',
716                     'dtend'       => $monday->format('d-m-Y') . ' 10:30:00',
717                 )
718             ),
719             array_merge_recursive($defaultEventData,
720                 array(
721                     'summary'     => static::$_de ? 'Kostenstellenanalyse' : 'cost put analysis',
722                     'description' => static::$_de ? '' : '',
723                     'dtstart'     => $monday->format('d-m-Y') . ' 10:30:00',
724                     'dtend'       => $monday->format('d-m-Y') . ' 12:00:00',
725                 )
726             ),
727             array_merge_recursive($defaultEventData,
728                 array(
729                     'summary'     => static::$_de ? 'Controller Meeting' : 'Controllers meeting',
730                     'description' => static::$_de ? '' : '',
731                     'dtstart'     => $tuesday->format('d-m-Y') . ' 10:30:00',
732                     'dtend'       => $tuesday->format('d-m-Y') . ' 12:00:00',
733                 )
734             ),
735         );
736
737         foreach($eventsData as $eData) {
738             $event = new Calendar_Model_Event($eData);
739             $this->_controller->create($event, false);
740         }
741
742     }
743     
744     /**
745      * creates events for sclever
746      */
747     protected function _createEventsForSclever() {
748         // Susan Clever
749         $monday = clone $this->_monday;
750         $tuesday = clone $this->_tuesday;
751         $wednesday = clone $this->_wednesday;
752         $thursday = clone $this->_thursday;
753         $friday = clone $this->_friday;
754         $saturday = clone $this->_saturday;
755         $sunday = clone $this->_sunday;
756         $lastMonday = clone $this->_lastMonday;
757         $lastFriday = clone $this->_lastFriday;
758         $lastSaturday = clone $this->_lastSaturday;
759         $lastSunday = clone $this->_lastSunday;
760
761         $cal = $this->_calendars['sclever'];
762         $user = $this->_personas['sclever'];
763
764         $defaultEventData = array(
765             'container_id' => $cal->getId(),
766             'class' => 'PRIVATE',
767             Tinebase_Model_Grants::GRANT_EDIT    => true,
768             'attendee' => array(array(
769                 'quantity'  => "1",
770                 'role'  => "REQ",
771                 'status'  => "ACCEPTED",
772                 'transp'  => "OPAQUE",
773                 'user_id'  => $user->toArray(),
774                 'user_type'  => "user"
775             ))
776         );
777         $eventsData = array(
778             array_merge_recursive($defaultEventData,
779                 array(
780                     'summary'     => static::$_de ? 'Elvis\' Geburtstag' : 'Elvis\' birthday',
781                     'description' => static::$_de ? '' : '',
782                     'dtstart'     => $monday->format('d-m-Y') . ' 00:00:00',
783                     'dtend'       => $monday->format('d-m-Y') . ' 23:59:00',
784                     'is_all_day_event' => true,
785                     'alarms'      => array(array(
786                         'alarm_time' => $lastSaturday->format('d-m-Y') . " 12:00:00",
787                         'minutes_before' => 2880,
788                         'model' => "Calendar_Model_Event",
789                         'options' => json_encode(array("custom" => false,"recurid" => null,"minutes_before" => "2880")),
790                         'sent_message' => "",
791                         'sent_status' => "pending"
792                     )),
793                     'rrule' => array(
794                         "bymonth" => $monday->format('m'),
795                         "bymonthday" => $monday->format('d'),
796                         "freq" => "YEARLY",
797                         "interval" => "1",
798                     ),
799                     'rrule_until' => ''
800                 )),
801             array_merge_recursive($defaultEventData,
802                 array(
803                     'summary'     => static::$_de ? 'James Geburtstag' : 'James\'s Birthday',
804                     'description' => static::$_de ? '' : '',
805                     'dtstart'     => $friday->format('d-m-Y') . ' 00:00:00',
806                     'dtend'       => $friday->format('d-m-Y') . ' 23:59:00',
807                     'is_all_day_event' => true,
808                     'alarms'      => array(array(
809                         'alarm_time' => $wednesday->format('d-m-Y') . " 12:00:00",
810                         'minutes_before' => 2880,
811                         'model' => "Calendar_Model_Event",
812                         'options' => json_encode(array("custom" => false,"recurid" => null,"minutes_before" => "2880")),
813                         'sent_message' => "",
814                         'sent_status' => "pending"
815                     )),
816                     'rrule' => array(
817                         "bymonth" => $friday->format('m'),
818                         "bymonthday" => $friday->format('d'),
819                         "freq" => "YEARLY",
820                         "interval" => "1",
821                     ),
822                     'rrule_until' => ''
823                 )),
824             array_merge_recursive($defaultEventData,
825                 array(
826                     'summary'     => static::$_de ? 'Shoppen mit Roberta' : 'Go shopping with Roberta',
827
828                     'description' => static::$_de ? '' : '',
829                     'dtstart'     => $monday->format('d-m-Y') . ' 19:00:00',
830                     'dtend'       => $monday->format('d-m-Y') . ' 23:00:00',
831                 )
832             ),
833             array_merge_recursive($defaultEventData,
834                 array(
835                     'summary'     => static::$_de ? 'Shoppen gehen' : 'go shopping',
836                     'description' => static::$_de ? '' : '',
837                     'dtstart'     => $saturday->format('d-m-Y') . ' 15:00:00',
838                     'dtend'       => $saturday->format('d-m-Y') . ' 16:00:00',
839                     'rrule' => array(
840                         "bymonth" => $friday->format('m'),
841                         "bymonthday" => $friday->format('d'),
842                         "freq" => "YEARLY",
843                         "interval" => "1",
844                     ),
845                     'rrule_until' => ''
846                 )
847             ),
848             array_merge_recursive($defaultEventData,
849                 array(
850                     'summary'     => static::$_de ? 'Shoppen gehen' : 'go shopping',
851                     'description' => static::$_de ? '' : '',
852                     'dtstart'     => $tuesday->format('d-m-Y') . ' 17:00:00',
853                     'dtend'       => $tuesday->format('d-m-Y') . ' 18:00:00',
854                 )
855             ),
856             array_merge_recursive($defaultEventData,
857                 array(
858                     'summary'     => static::$_de ? 'Tanzen gehen mit Elvis' : 'Dance with Elvis',
859                     'description' => static::$_de ? '' : '',
860                     'dtstart'     => $friday->format('d-m-Y') . ' 19:00:00',
861                     'dtend'       => $friday->format('d-m-Y') . ' 23:00:00',
862                 )
863             ),
864             array_merge_recursive($defaultEventData,
865                 array(
866                     'summary'     => static::$_de ? 'Disco Fever' : 'Disco fever',
867                     'description' => static::$_de ? '' : '',
868                     'dtstart'     => $saturday->format('d-m-Y') . ' 19:00:00',
869                     'dtend'       => $saturday->format('d-m-Y') . ' 23:00:00',
870                 )
871             ),
872         );
873         foreach($eventsData as $eData) {
874             $event = new Calendar_Model_Event($eData);
875             $this->_controller->create($event, false);
876         }
877
878     }
879
880     protected function _createEventsForJmcblack() {
881
882         // James McBlack
883         $monday =       clone $this->_monday;
884         $tuesday =      clone $this->_tuesday;
885         $wednesday =    clone $this->_wednesday;
886         $thursday =     clone $this->_thursday;
887         $friday =       clone $this->_friday;
888         $saturday =     clone $this->_saturday;
889         $sunday =       clone $this->_sunday;
890         $lastMonday =   clone $this->_lastMonday;
891         $lastFriday =   clone $this->_lastFriday;
892         $lastSaturday = clone $this->_lastSaturday;
893         $lastSunday =   clone $this->_lastSunday;
894
895         $cal = $this->_calendars['jmcblack'];
896         $user = $this->_personas['jmcblack'];
897
898         $defaultEventData = array(
899             'container_id' => $cal->getId(),
900             'class' => 'PRIVATE',
901             Tinebase_Model_Grants::GRANT_EDIT    => true,
902             'attendee' => array(array(
903                 'quantity'  => "1",
904                 'role'  => "REQ",
905                 'status'  => "ACCEPTED",
906                 'transp'  => "OPAQUE",
907                 'user_id'  => $user->toArray(),
908                 'user_type'  => "user"
909             ))
910         );
911         $eventsData = array(
912             array_merge_recursive($defaultEventData,
913                 array(
914                     'summary'     => static::$_de ? 'Catherines Geburtstag' : 'Catherine\'s Birthday',
915                     'description' => static::$_de ? '' : '',
916                     'dtstart'     => $thursday->format('d-m-Y') . ' 00:00:00',
917                     'dtend'       => $thursday->format('d-m-Y') . ' 23:59:00',
918                     'is_all_day_event' => true,
919                     'alarms'      => array(array(
920                         'alarm_time' => $tuesday->format('d-m-Y') . " 12:00:00",
921                         'minutes_before' => 2880,
922                         'model' => "Calendar_Model_Event",
923                         'options' => json_encode(array("custom" => false,"recurid" => null,"minutes_before" => "2880")),
924                         'sent_message' => "",
925                         'sent_status' => "pending"
926                     )),
927                     'rrule' => array(
928                         "bymonth" => $thursday->format('m'),
929                         "bymonthday" => $thursday->format('d'),
930                         "freq" => "YEARLY",
931                         "interval" => "1",
932                     ),
933                     'rrule_until' => ''
934                 )),
935             array_merge_recursive($defaultEventData,
936                 array(
937                     'summary'     => static::$_de ? 'Alyssas Geburtstag' : 'Alyssa\'s Birthday',
938                     'description' => static::$_de ? '' : '',
939                     'dtstart'     => $friday->format('d-m-Y') . ' 00:00:00',
940                     'dtend'       => $friday->format('d-m-Y') . ' 23:59:00',
941                     'is_all_day_event' => true,
942                     'alarms'      => array(array(
943                         'alarm_time' => $wednesday->format('d-m-Y') . " 12:00:00",
944                         'minutes_before' => 2880,
945                         'model' => "Calendar_Model_Event",
946                         'options' => json_encode(array("custom" => false,"recurid" => null,"minutes_before" => "2880")),
947                         'sent_message' => "",
948                         'sent_status' => "pending"
949                     )),
950                     'rrule' => array(
951                         "bymonth" => $friday->format('m'),
952                         "bymonthday" => $friday->format('d'),
953                         "freq" => "YEARLY",
954                         "interval" => "1",
955                     ),
956                     'rrule_until' => ''
957                 )),
958             array_merge_recursive($defaultEventData,
959                 array(
960                     'summary'     => static::$_de ? 'Brendas\' Geburtstag' : 'Brenda\'s Birthday',
961                     'description' => static::$_de ? '' : '',
962                     'dtstart'     => $thursday->format('d-m-Y') . ' 00:00:00',
963                     'dtend'       => $thursday->format('d-m-Y') . ' 23:59:00',
964                     'is_all_day_event' => true,
965                     'alarms'      => array(array(
966                         'alarm_time' => $tuesday->format('d-m-Y') . " 12:00:00",
967                         'minutes_before' => 2880,
968                         'model' => "Calendar_Model_Event",
969                         'options' => json_encode(array("custom" => false,"recurid" => null,"minutes_before" => "2880")),
970                         'sent_message' => "",
971                         'sent_status' => "pending"
972                     )),
973                     'rrule' => array(
974                         "bymonth" => $thursday->format('m'),
975                         "bymonthday" => $thursday->format('d'),
976                         "freq" => "YEARLY",
977                         "interval" => "1",
978                     ),
979                     'rrule_until' => ''
980                 )),
981             array_merge_recursive($defaultEventData,
982                 array(
983                     'summary'     => static::$_de ? 'Automesse in Liverpool' : 'Auto fair in Liverpool',
984                     'description' => static::$_de ? '' : '',
985                     'dtstart'     => $monday->format('d-m-Y') . ' 19:00:00',
986                     'dtend'       => $monday->format('d-m-Y') . ' 23:00:00',
987                 )
988             ),
989             array_merge_recursive($defaultEventData,
990                 array(
991                     'summary'     => static::$_de ? 'Weinverkostung auf der Burg' : 'Wine tasting at the castle',
992                     'description' => static::$_de ? '' : '',
993                     'dtstart'     => $saturday->format('d-m-Y') . ' 15:00:00',
994                     'dtend'       => $saturday->format('d-m-Y') . ' 16:00:00',
995                 )
996             ),
997             array_merge_recursive($defaultEventData,
998                 array(
999                     'summary'     => static::$_de ? 'Eigentümerversammlung' : 'Owners\' meeting',
1000                     'description' => static::$_de ? '' : '',
1001                     'dtstart'     => $tuesday->format('d-m-Y') . ' 17:00:00',
1002                     'dtend'       => $tuesday->format('d-m-Y') . ' 18:00:00',
1003                 )
1004             ),
1005             array_merge_recursive($defaultEventData,
1006                 array(
1007                     'summary'     => static::$_de ? 'Datamining Konferenz' : 'Data mining conference',
1008                     'description' => static::$_de ? '' : '',
1009                     'dtstart'     => $thursday->format('d-m-Y') . ' 17:00:00',
1010                     'dtend'       => $thursday->format('d-m-Y') . ' 18:00:00',
1011                 )
1012             )
1013         );
1014         foreach($eventsData as $eData) {
1015             $event = new Calendar_Model_Event($eData);
1016             $this->_controller->create($event, false);
1017         }
1018
1019         $cal = Tinebase_Container::getInstance()->addContainer(new Tinebase_Model_Container(array(
1020             'name'           => static::$_de ? 'Geschäftlich' : 'Business',
1021             'type'           => Tinebase_Model_Container::TYPE_PERSONAL,
1022             'owner_id'       => Tinebase_Core::getUser(),
1023             'backend'        => 'SQL',
1024             'application_id' => Tinebase_Application::getInstance()->getApplicationByName('Calendar')->getId(),
1025             'color'          => '#00CCFF'
1026         ), true));
1027
1028         Tinebase_Container::getInstance()->addGrants($cal->getId(), 'user', $this->_personas['sclever']->getId(), $this->_secretaryGrants, true);
1029         Tinebase_Container::getInstance()->addGrants($cal->getId(), 'user', $this->_personas['rwright']->getId(), $this->_controllerGrants, true);
1030
1031         $defaultEventData = array(
1032             'container_id' => $cal->getId(),
1033             Tinebase_Model_Grants::GRANT_EDIT    => true
1034         );
1035
1036         $eventsData = array(
1037             array_merge_recursive($defaultEventData,
1038                 array(
1039                     'summary'     => static::$_de ? 'Projektbesprechung Projekt Gamma mit Herrn Pearson' : 'Project Gamma Meeting with Mr. Pearson',
1040                     'description' => static::$_de ? '' : '',
1041                     'dtstart'     => $monday->format('d-m-Y') . ' 09:00:00',
1042                     'dtend'       => $monday->format('d-m-Y') . ' 10:30:00',
1043                 )
1044             ),
1045             array_merge_recursive($defaultEventData,
1046                 array(
1047                     'summary'     => static::$_de ? 'MDH Pitch' : 'MDH Pitch',
1048                     'description' => static::$_de ? '' : '',
1049                     'dtstart'     => $monday->format('d-m-Y') . ' 10:30:00',
1050                     'dtend'       => $monday->format('d-m-Y') . ' 12:00:00',
1051                 )
1052             ),
1053             array_merge_recursive($defaultEventData,
1054                 array(
1055                     'summary'     => static::$_de ? 'Mitarbeitergespräch mit Jack' : 'employee appraisal with Jack',
1056                     'description' => static::$_de ? '' : '',
1057                     'dtstart'     => $monday->format('d-m-Y') . ' 10:30:00',
1058                     'dtend'       => $monday->format('d-m-Y') . ' 12:00:00',
1059                 )
1060             ),
1061         );
1062
1063         foreach($eventsData as $eData) {
1064             $event = new Calendar_Model_Event($eData);
1065             $this->_controller->create($event, false);
1066         }
1067     }
1068 }