The Chamilo Zoom plugin class itself is defined in _plugin/zoom/lib/ZoomPlugin.php_ It manipulates both **remote Zoom server objects** and **local database entities**: # Local database entities The local entities map the remote objects to Chamilo courses/sessions and users. They also maintain a cache of the matching remote objects. _Entity/*Entity.php_ are the local database entity classes. Doctrine entity manager repository classes are in _lib/*EntityRepository.php_. # Remote Zoom server objets _lib/API/*.php_ contains the Zoom API data structure definition classes, based on Zoom's own API specification: * https://marketplace.zoom.us/docs/api-reference/zoom-api * https://marketplace.zoom.us/docs/api-reference/zoom-api/Zoom%20API.oas2.json These classes provide methods to list, create, update and delete the remote objects. # JWT Client API class methods use a JWT client implemented in _lib/API/JWTClient.php_. The plugin constructor initializes the JWT Client, giving it required API key and secret. # Event notification handler _endpoint.php_ is the Zoom API event notification web hook end point. It handles notifications sent by Zoom servers on useful events : * meeting start and end, * registrant join and leave, * recordings created and deleted # Administrative interface _admin.php_ is the administrative interface. It lists all meetings and recordings. # Course tool _start.php_ is the **course** tool target: * to the course teacher, it shows a course meeting management interface; * to the course learners, it shows the list of scheduled course meetings. # Home page's profile block (also on "My Courses" page) This plugin can add 3 kinds of links to "profile block" : 1. _join_meeting.php?meetingId=…_ links to upcoming meetings accessible to the current user. _join_meeting.php_ presents the meeting and shows a link to enter the meeting. 2. _user.php_ is the **user**'s own meeting management interface. 3. _global.php_ directs the user to _join_meeting.php_ with the **global** meeting. # Meeting management page _admin.php_, _start.php_ and _user.php_ link to _meeting.php_. _meeting.php_ is the meeting management page, where one can manage * the meeting properties, * the list of its registrants and * its recordings.