Creating Custom Plugins

Are there any tutorials on authoring plugins? I've hacked together something from looking a other plugins, but it's less than optimal. I'm comfortable with PHP and other MVCish frameworks (Django, Yii, Angular), but feeling a bit lost here.



There is some starter documentation, but it's not particularly comprehensive.

Is there a specific area or areas you're particularly unclear on? For some things, it's best for us to basically point to Zend Framework's documentation, but other things are really Omeka-specific and you could help identify a hole in the documentation.

We're fairly decent at explaining things in response to particular questions (here on the forums, for example), just not as good at remembering to compile that information into a useful form for other people to read later on.


I'm trying to implement the ResourceSync protocal as plugin

I need to have long running processes should the job registration( Zend_Registry::get('bootstrap')->getResource('jobs')->sendLongRunning('YourJob');) and call to the perform method in the job class reside in the controller or somewhere else?

Second, items will be associated with a sync, would I modify the items table or is it best practice to create a plugin specific table with item ids and resourcesync path ids?

Finally, does 3rd party code go in a libs directory inside the plugin?


"Sending" the job usually happens in a controller. You don't have to call perform yourself.

You're better off creating your own table than adding columns to an existing one.

All plugins get PSR-0 autoloading set up for a libraries directory within the plugin. Both local library code and third-party libraries can go in there.

Thanks, I'll see what I can do. I'd come to the same conclusion over a join table between items and syncing jobs.