This page is updated to the PuMuKIT 2.1.0 version
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.
- Symfony 2.6: web | doc
- PHP5: web | doc
- MongoDB 3.0: web | doc
- Doctrine MongoDB ODM 1.0: web | doc
- Bootstrap: web | CSS doc | Components doc | JavaScript doc
- Material Design web | doc
- FFmpeg: web | doc
- libav: web | doc
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.
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.
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
...
See an example in WebTVBundle.
$ php app/console generate:bundle --namespace=Pumukit/ExampleOrg/FeatureBundle --dir=src --no-interaction
$ php app/console pumukit:install:bundle Pumukit/ExampleOrg/FeatureBundle/PumukitExampleOrgFeatureBundle
Create all Documents, Services, Events, Event Listeners, Controllers, Commands and HTML Twig templates as needed, following the bundles structured defined by Symfony.
- Cmar/LiveBundle overrides LiveBundle.
- Cmar/SonarBundle is a new Bundle for Cmar organization.
- Cmar/WebTVBundle overrides WebTVBundle
- Web Portal:
http://{MyPuMuKIT_IP}/
- Back-office (admin interface):
http://{MyPuMuKIT_IP}/admin