Permalink
Fetching contributors…
Cannot retrieve contributors at this time
140 lines (98 sloc) 7.87 KB

PuMuKIT-2 Developer & Architecture Guide

This page is updated to the PuMuKIT 2.1.0 version

Architecture

Technologies

PuMuKIT-2 has been built using the below technologies. It is recommended to read the documentation of each technology in order to extend PuMuKIT-2 or create new features.

List of Bundles

PuMuKIT-2 has been developed with the Symfony framework. Symfony 2.x is based on bundles, and so, PuMuKIT-2 is structured in bundles. There is a list of bundles that come activated by default with the project, these are mandatory for the code to work. There is also a list of optional bundles that come deactivated. In order to install/activate them, follow the instructions in the guide of each bundle.

Activated by default:

  • EncoderBundle: provides a service to encode audio/video tracks.
  • ExampleDataBundle: provides a command to add example data on a new installation on the instance.
  • InspectionBundle: provides a service to inspect multimedia tracks.
  • InstallBundleBundle: provides a command to install new bundles into the PuMuKIT-2 project.
  • LiveBundle: provides a service to show live stream events.
  • NewAdminBundle: provides the back-office admin UI.
  • OpencastBundle: provides a service to import multimedia content of an Opencast Server.
  • SchemaBundle: defines the schema of classes and services.
  • StatsBundle: provides a service to log the statistics.
  • WebTVBundle: defines the portal web.
  • WizardBundle: provides a service to guide the user on uploading multimedia content.
  • WorkflowBundle: provides a service to automatically extract a picture from a video that just has been transcoded if the MultimediaObject does not have any picture yet.

Not activated by default:

  • ArcaBundle: provides a service to add RSS for the Academic Community.
  • LDAPBundle: provides a service to connect to a LDAP Server and to retrieve data from the server for easy metadata filling. Authentication and authorization features are under development and will be included soon.
  • NotificationBundle: sends emails when a job finished, whether it failed or succeed
  • PodcastBundle: provides a service to add PuMuKIT videos into Podcast channel.

List of Events

Custom events added to PuMuKIT-2:

  • multimediaobject.create: thrown each time a multimedia object is created.

  • multimediaobject.update: thrown each time a multimedia object is updated.

  • multimediaobject.delete: thrown each time a multimedia object is deleted.

  • multimediaobject.view: thrown each time a multimedia object is played in the webtv portal.

  • job.success: thrown each time a job is finished successfully in the system.

  • job.error: thrown each time a job fails in the system.

  • track.create: thrown each time a track is added to a multimedia object.

  • track.update: thrown each time a track in a multimedia object is updated.

  • track.delete: thrown each time a track is deleted from a multimedia object.

  • pic.create: thrown each time a pic is added to a multimedia object.

  • pic.update: thrown each time a pic in a multimedia object is updated.

  • pic.delete: thrown each time a pic is deleted from a multimedia object.

  • material.create: thrown each time a material is added to a multimedia object.

  • material.update: thrown each time a material in a multimedia object is updated.

  • material.delete: thrown each time a material is deleted from a multimedia object.

  • link.create: thrown each time a link is added to a multimedia object.

  • link.update: thrown each time a link in a multimedia object is updated.

  • link.delete: thrown each time a link is deleted from a multimedia object.

  • personwithrole.create: thrown each time a person with a given role is added to a multimedia object.

  • personwithrole.update: thrown each time a person with a given role in a multimedia object is updated.

  • personwithrole.delete: thrown each time a person with a given role is deleted from a multimedia object.

To add more events, read the Symfony documentation about creating custom events and listeners.

How to extend Pumukit

Best practices:

  • Do not modify PuMuKIT-2 Bundles, extend them following the Symfony documentation about overriding Bundles.
  • Create your own Bundles and add them to the PuMuKIT-2 project.
  • All the bundles created or overridden should be inside an organization directory:
src/Pumukit/ExampleOrg/Feature1Bundle
src/Pumukit/ExampleOrg/Feature2Bundle
src/Pumukit/ExampleOrg/Feature3Bundle
...

Override a Bundle

See an example in WebTVBundle.

Create a new Bundle

1.1 Generate the bundle.

$ php app/console generate:bundle --namespace=Pumukit/ExampleOrg/FeatureBundle --dir=src --no-interaction

1.2 Install the new bundle (if necessary).

$ php app/console pumukit:install:bundle Pumukit/ExampleOrg/FeatureBundle/PumukitExampleOrgFeatureBundle

1.3 Develop the bundle

Create all Documents, Services, Events, Event Listeners, Controllers, Commands and HTML Twig templates as needed, following the bundles structured defined by Symfony.

Examples

Main URLs of a PuMuKIT deployment

  • Web Portal: http://{MyPuMuKIT_IP}/
  • Back-office (admin interface): http://{MyPuMuKIT_IP}/admin