Ce package fait du travail avec un calendrier Google un jeu d'enfant. Une fois qu'il a été configuré, vous pouvez faire ces choses:
use Spatie GoogleCalendar Event ;
// create a new event
$ event = new Event ;
$ event -> name = ' A new event ' ;
$ event -> description = ' Event description ' ;
$ event -> startDateTime = Carbon Carbon:: now ();
$ event -> endDateTime = Carbon Carbon:: now ()-> addHour ();
$ event -> addAttendee ([
' email ' => ' [email protected] ' ,
' name ' => ' John Doe ' ,
' comment ' => ' Lorum ipsum ' ,
' responseStatus ' => ' needsAction ' ,
]);
$ event -> addAttendee ([ ' email ' => ' [email protected] ' ]);
$ event -> addMeetLink (); // optionally add a google meet link to the event
$ event -> save ();
// get all future events on a calendar
$ events = Event:: get ();
// update existing event
$ firstEvent = $ events -> first ();
$ firstEvent -> name = ' updated name ' ;
$ firstEvent -> save ();
$ firstEvent -> update ([ ' name ' => ' updated again ' ]);
// create a new event
Event:: create ([
' name ' => ' A new event ' ,
' startDateTime ' => Carbon Carbon:: now (),
' endDateTime ' => Carbon Carbon:: now ()-> addHour (),
]);
// delete an event
$ event -> delete ();Spatie est une agence WebDesign basée à Anvers, en Belgique. Vous trouverez un aperçu de tous nos projets open source sur notre site Web.
Nous investissons beaucoup de ressources dans la création de forfaits open source des meilleurs dans la classe. Vous pouvez nous soutenir en achetant l'un de nos produits payants.
Nous apprécions beaucoup que vous nous envoyions une carte postale de votre ville natale, mentionnant lequel de nos colis que vous utilisez. Vous trouverez notre adresse sur notre page de contact. Nous publions toutes les cartes postales reçues sur notre mur de cartes postales virtuels.
Vous pouvez installer le package via le compositeur:
composer require spatie/laravel-google-calendarVous devez publier la configuration avec cette commande:
php artisan vendor:publish --provider= " SpatieGoogleCalendarGoogleCalendarServiceProvider " Cela publiera un fichier appelé google-calendar.php dans votre configuration de configuration avec ces contenus:
return [
' default_auth_profile ' => env ( ' GOOGLE_CALENDAR_AUTH_PROFILE ' , ' service_account ' ),
' auth_profiles ' => [
/*
* Authenticate using a service account.
*/
' service_account ' => [
/*
* Path to the json file containing the credentials.
*/
' credentials_json ' => storage_path ( ' app/google-calendar/service-account-credentials.json ' ),
],
/*
* Authenticate with actual google user account.
*/
' oauth ' => [
/*
* Path to the json file containing the oauth2 credentials.
*/
' credentials_json ' => storage_path ( ' app/google-calendar/oauth-credentials.json ' ),
/*
* Path to the json file containing the oauth2 token.
*/
' token_json ' => storage_path ( ' app/google-calendar/oauth-token.json ' ),
],
],
/*
* The id of the Google Calendar that will be used by default.
*/
' calendar_id ' => env ( ' GOOGLE_CALENDAR_ID ' ),
];La première chose que vous devrez faire est d'obtenir des informations d'identification pour utiliser l'API de Google. Je suppose que vous avez déjà créé un compte Google et que vous êtes connecté. Rendez-vous sur Google API Console et cliquez sur "Sélectionnez un projet" dans l'en-tête.

Ensuite, nous devons spécifier les API que le projet peut consommer. Dans l'en-tête, sélectionnez "Activer les API et les services".

Sur la page suivante, recherchez "Calendar" et sélectionnez "Google Calendar API" dans la liste.

À partir de là, appuyez sur "Activer" pour activer l'API du calendrier Google pour ce projet.

Maintenant que vous avez créé un projet qui a accès à l'API du calendrier, il est temps de télécharger un fichier avec ces informations d'identification. Cliquez sur "Informations d'identification" dans la barre latérale, puis appuyez sur le lien "Informations d'identification dans API & SERVICES".

À partir de cette page, ouvrez la liste déroulante "Créer des informations d'identification" et sélectionnez "Service Compte Key".

Sur l'écran suivant, vous pouvez donner un nom au compte de service. Vous pouvez le nommer tout ce que vous souhaitez. Dans l'ID du compte de service, vous verrez une adresse e-mail. Nous utiliserons cette adresse e-mail plus tard dans ce guide. Sélectionnez "JSON" comme type de clé et cliquez sur "Créer" pour télécharger le fichier JSON. Vous obtiendrez un avertissement que le compte de service n'a pas de rôle, vous pouvez l'ignorer en toute sécurité et créer le compte de service sans attribuer un rôle.
Si vous avez délégué un accès à l'échelle du domaine au compte de service et que vous souhaitez usurper l'identité d'un compte utilisateur, spécifiez l'adresse e-mail du compte utilisateur dans le fichier de configuration.

Enregistrez le JSON à l'intérieur de votre projet Laravel à l'emplacement spécifié dans la clé service_account_credentials_json du fichier de configuration de ce package. Étant donné que le fichier JSON contient des informations potentiellement sensibles, je ne recommande pas de les engager dans votre référentiel GIT.
Maintenant que tout est configuré sur le site de l'API, nous devrons configurer certaines choses sur le site de Google Calendar. Rendez-vous au calendrier Google et consultez les paramètres du calendrier avec lequel vous souhaitez travailler via PHP. Dans l'onglet "Partage avec des personnes spécifiques", appuyez sur le bouton "Ajouter des gens" et ajoutez l'ID de compte de service qui a été affiché lors de la création d'identification sur le site de l'API.


Faites défiler vers le bas vers la section "Intégrer le calendrier" pour voir l'ID du calendrier. Vous devez spécifier cet ID dans le fichier de configuration.

Ce package prend en charge l'authentification OAuth2. Cela vous permet d'authentifier avec un compte Google réel et de créer et de gérer des événements avec votre propre compte Google.
L'authentification OAuth2 nécessite un fichier de jeton, en plus du fichier d'identification. Le moyen le plus simple de générer ces deux fichiers est d'utiliser l'outil PHP QuickStart. Le suivi de ce guide générera deux fichiers, credentials.json et token.json . Ils doivent être enregistrés dans votre projet en tant que oauth-credentials.json et oauth-token.json , respectivement. Vérifiez le fichier de configuration dans ce package pour les détails exacts sur lesquels enregistrer ces fichiers.
Pour utiliser OAuth2, vous devez également définir une nouvelle variable d'environnement dans votre fichier .env:
GOOGLE_CALENDAR_AUTH_PROFILE =oauthSi vous passez à partir d'une ancienne version de ce package, vous devrez forcer une publication de la configuration:
php artisan vendor:publish --provider= " SpatieGoogleCalendarGoogleCalendarServiceProvider " --forceEnfin, pour une expérience plus transparente dans votre application, au lieu d'utiliser l'outil QuickStart, vous pouvez configurer un écran de consentement dans la console Google API. Cela permettrait aux utilisateurs non techniques de votre application de générer facilement leurs propres jetons. Ceci est complètement facultatif.
Vous pouvez récupérer tous les événements en appelant simplement Event::get(); Cela rendra tous les événements de l'année à venir. Un événement se présente sous la forme d'un objet SpatieGoogleCalendarEvent .
La signature complète de la fonction est:
public static function get( Carbon $ startDateTime = null , Carbon $ endDateTime = null , array $ queryParameters = [], string $ calendarId = null ): Collection Les paramètres que vous pouvez transmettre dans $queryParameters sont répertoriés sur la documentation sur la list des documents API Google Calendar.
Vous pouvez utiliser ces Getters pour récupérer la date de début et de fin comme instances de carbone:
$ events = Event:: get ();
$ events [ 0 ]-> startDate ;
$ events [ 0 ]-> startDateTime ;
$ events [ 0 ]-> endDate ;
$ events [ 0 ]-> endDateTime ; Vous pouvez tout simplement sur une SpatieGoogleCalendarEvent -object
$ event = new Event ;
$ event -> name = ' A new event ' ;
$ event -> startDateTime = Carbon Carbon:: now ();
$ event -> endDateTime = Carbon Carbon:: now ()-> addHour ();
$ event -> save (); Vous pouvez également appeler create STATIQUE:
Event:: create ([
' name ' => ' A new event ' ,
' startDateTime ' => Carbon Carbon:: now (),
' endDateTime ' => Carbon Carbon:: now ()-> addHour (),
]); Cela créera un événement avec une heure de début et de fin spécifique. Si vous souhaitez créer un événement d'une journée, vous devez utiliser startDate et endDate au lieu de startDateTime et endDateTime .
$ event = new Event ;
$ event -> name = ' A new full day event ' ;
$ event -> startDate = Carbon Carbon:: now ();
$ event -> endDate = Carbon Carbon:: now ()-> addDay ();
$ event -> save ();Vous pouvez créer un événement basé sur une chaîne de texte simple comme celle-ci:
$ event = new Event ();
$ event -> quickSave ( ' Appointment at Somewhere on April 25 10am-10:25am ' );
// statically
Event:: quickCreate ( ' Appointment at Somewhere on April 25 10am-10:25am ' ); Google attribue un ID unique à chaque événement. Vous pouvez obtenir cet ID en obtenant des événements en utilisant la méthode get et en obtenant la propriété id sur une SpatieGoogleCalendarEvent -object:
// get the id of the first upcoming event in the calendar .
$ eventId = Event:: get ()-> first ()-> id ;
// you can also get the id after creating the event , then you can save it to database .
$ event = new Event ;
$ newEvent = $ event -> save ();
echo $ newEvent -> id ; // display the event idVous pouvez utiliser cet ID pour récupérer un seul événement à partir de Google:
Event:: find ( $ eventId ); Facile, modifiez simplement certaines propriétés et appelez save() :
$ event = Event:: find ( $ eventId );
$ event -> name = ' My updated title ' ;
$ event -> save ();Alternativement, vous pouvez utiliser la méthode de mise à jour:
$ event = Event:: find ( $ eventId );
$ event -> update ([ ' name ' => ' My updated title ' ]);Rien!
$ event = Event:: find ( $ eventId );
$ event -> delete ();Vous pouvez définir des URL source dans vos événements, qui ne sont visibles que le créateur de l'événement (voir DOCS pour en savoir plus sur la propriété source). Cette fonction ne fonctionne que lorsqu'elle est authentifiée via OAuth.
$ yourEvent -> source = [
' title ' => ' Test Source Title ' ,
' url ' => ' http://testsource.url ' ,
];Vous pouvez définir certaines couleurs pour vos événements (colorid 1 à 11). Les possibilités sont limitées aux définitions de couleurs de l'API du calendrier Google. Vous pouvez les trouver ici.
$ yourevent -> setColorId ( 11 );L'API Google Calendar offre de nombreuses options. Ce package ne les prend pas en charge tous. Par exemple, les événements récurrents ne peuvent pas être gérés correctement avec ce package. Si vous vous en tenez à la création d'événements avec un nom et une date, tout devrait aller bien.
La seule différence majeure entre v1 et v2 est que dans le Hood Google API V2 est utilisée à la place de V1. Voici les étapes nécessaires à la mise à niveau:
laravel-google-calendar à google-calendarclient_secret_json à service_account_credentials_json Veuillez consulter Changelog pour plus d'informations sur ce qui a changé récemment.
composer test Veuillez consulter la contribution pour plus de détails.
Si vous découvrez des problèmes liés à la sécurité, veuillez envoyer un courriel à [email protected] au lieu d'utiliser le tracker du problème.
Un grand merci à Sebastiaan Luca pour sa grande aide à créer V2 de ce package.
La licence MIT (MIT). Veuillez consulter le fichier de licence pour plus d'informations.