src/Library/GraphUser.php line 73

Open in your IDE?
  1. <?php
  2. namespace App\Library;
  3. use DateTime;
  4. use DateInterval;
  5. use App\Library\GraphGeneric;
  6. use Microsoft\Graph\Model\User;
  7. use Microsoft\Graph\Model\Event;
  8. use Microsoft\Graph\Model\BodyType;
  9. use Microsoft\Graph\Model\Calendar;
  10. use Microsoft\Graph\Model\ItemBody;
  11. use Microsoft\Graph\Model\Location;
  12. use Microsoft\Graph\Model\DateTimeTimeZone;
  13. use Microsoft\Graph\Model\Drive;
  14. require_once 'GraphGeneric.php';
  15. class GraphUser extends GraphGeneric
  16. {
  17.     public $test 123;
  18.     public function getUsers()
  19.     {
  20.         return $this->appClient->createCollectionRequest('GET''/users')
  21.             ->setReturnType(User::class)
  22.             ->execute();
  23.     }
  24.     public function listUserDrives(string $id)
  25.     {
  26.         return $this->appClient->createRequest('GET''/users/' $id '/drives')
  27.             ->setReturnType(Drive::class)
  28.             ->execute();
  29.     }
  30.     public function getDefaultCalendar(string $id)
  31.     {
  32.         return $this->appClient->createRequest('GET''/users/' $id '/calendar')
  33.             ->setReturnType(Calendar::class)
  34.             ->execute();
  35.     }
  36.     public function getEventsDefaultCalendar(string $id, ?int $numWeek null)
  37.     {
  38.         $calendar $this->getDefaultCalendar($id);
  39.         $startDate = new DateTime();
  40.         $endDate = new DateTime();
  41.         if ($startDate->format('N') > 1)
  42.             $startDate->sub(new DateInterval('P' . ($startDate->format('N') - 1) . 'D'));
  43.         $endDate->setTimestamp($startDate->getTimestamp());
  44.         $endDate->add(new DateInterval('P6D'));
  45.         if (!empty($numWeek)) {
  46.             $dto = new DateTime();
  47.             $dto->setISODate((int)$dto->format('Y'), $numWeek);
  48.             $startDate->setTimestamp($dto->getTimestamp());
  49.             $dto->modify('+6 days');
  50.             $endDate->setTimestamp($dto->getTimestamp());
  51.         }
  52.         return $this->appClient->createCollectionRequest('GET''/users/' $id '/calendars/' $calendar->getId() . '/events?$filter=start/dateTime ge \'' $startDate->format('Y-m-d') . 'T00:00:00Z\' and end/dateTime le \'' $endDate->format('Y-m-d') . 'T23:59:59\'&$orderby=start/dateTime')
  53.             ->setReturnType(Event::class)
  54.             ->execute();
  55.     }
  56.     public function getCalendarEvent(string $uidstring $eventId){
  57.         return $this->appClient->createRequest('GET''/users/' $uid '/calendar/events/'.$eventId)
  58.         ->execute();
  59.     }
  60.     public function addEventUserDefaultCalendar(string $uidstring $startDatestring $endDatestring $subjectstring $bodyContent ""string $adresse ""float $alertHoursBefore)
  61.     {
  62.         if (!isset($uid) || !isset($startDate) || !isset($endDate) || !isset($subject)) return null;
  63.         $event = new Event();
  64.         $event->setSubject($subject);
  65.         $body = new ItemBody();
  66.         $body->setContentType(new BodyType('html'));
  67.         $body->setContent($bodyContent);
  68.         $event->setBody($body);
  69.         $start = new DateTimeTimeZone();
  70.         $start->setDateTime($startDate);
  71.         $start->setTimeZone('Europe/Paris');
  72.         $event->setStart($start);
  73.         $end = new DateTimeTimeZone();
  74.         $end->setDateTime($endDate);
  75.         $end->setTimeZone('Europe/Paris');
  76.         $event->setEnd($end);
  77.         $location = new Location();
  78.         $location->setDisplayName($adresse);
  79.         $event->setLocation($location);
  80.         // ** Gestion des alertes
  81.         if (isset($alertHoursBefore) && $alertHoursBefore 0) {
  82.             $minute = (int) round($alertHoursBefore 60);
  83.             $event->setIsReminderOn(true);
  84.             $event->setReminderMinutesBeforeStart($minute);
  85.         } else
  86.             $event->setIsReminderOn(false);
  87.         return $this->appClient->createRequest('POST''/users/' $uid '/calendar/events')
  88.             ->attachBody($event)
  89.             ->execute();
  90.     }
  91.     public function deleteEventCalendar(string $uidstring $eventId){
  92.         return $this->appClient->createRequest('DELETE''/users/' $uid '/calendar/events/'.$eventId)
  93.         ->execute();
  94.     }
  95.     
  96.     public function sendMail(string $content) {
  97.         $body = [
  98.             "message" => [
  99.                 "subject" => '=?iso-8859-1?B?'.base64_encode("Erreur dans le décompte").'?=',
  100.                 "body" => [
  101.                     "contentType" => "HTML",
  102.                     "content" => $content
  103.                 ],
  104.                 "toRecipients" => [
  105.                     [
  106.                         "emailAddress" => [
  107.                             "address" => "cedric@cco-info.fr"
  108.                         ]
  109.                     ]
  110.                 ],
  111.                 "ccRecipients" => [
  112.                     [
  113.                         "emailAddress" => [
  114.                             "address" => "celine@cco-info.fr"
  115.                         ]
  116.                     ]
  117.                 ]
  118.             ],
  119.             "saveToSentItems" => "false"
  120.         ];
  121.         
  122.         return $this->appClient->createRequest('POST''/users/david@cco-info.fr/sendMail')
  123.             ->attachBody($body)
  124.             ->execute();
  125.     }
  126. }