Hey guys! I must say that I am glad that you find poMMo useful and am excited about the possibility of it being integrated into MODx. I am also willing to help with this process in any way I can -- be it contributing code or answering questions
Let me express my "gameplan";
poMMo is yet feature complete. I still need to finish the mailing template system, administrative notices, and bounced mail processing. I would also like to have plugin architecture in place to allow developers to easily extend functionality and offer a few "stock" plugins such as Multi-User poMMo (List Managers, Editors, and Administrators). This plugin framework may or may not make it into the "1.0" release, but if it does.. I do foresee some API changes (although the function names and passed in/out arguments will probably remain the same). With this in mind, poMMo is not "complete" yet.
There is a developer roadmap and TODO available @ the site WIKI (
http://pommo.org/Development). What should be gathered from this is that poMMo’s PR16 release will be considered "complete", and the beta will begin shortly there after. When the project is in beta, developers will focus on stabilizing the program, writing documentation, and implementing the "per page" support WIKI. No features will be added while in beta, thus no "new" API -- although the API may see modifications/security updates/etc. During this period I planned on commenting the API source (.PHP files in inc/classes and inc/helpers) in JavaDoc syntax so that API documentation can be generated with phpdoc. After all this is done, I have always thought that my work would revolve around "embedded poMMo" and making integrations. This is, however, a flexible chronology.. and so there’s no reason to wait to begin playing with integrations
A new static OO API was introduced in PR14. This model is proving to work out well, and I don’t forsee any changes unless better developers than I convince me otherwise
. Currently all functionality of the program relvovles around this API, and is contained within the files of inc/classes and inc/helpers.
What I tried to do with PR14 was create system functionality that was friendly towards embedding. The variable namespace is reduced to a single global ($pommo).. so it’s integration should not interfere with scripts. There is room for improvement -- e.g. the API functions could be embedded into a single object by means of object extension, and so fourth... but I like the simplicity of what we have. That said, I would be very interested to coordinate and share ideas with other developers for making poMMo more accessible & embeddable. There is a lot of information in the source files explaining the various API functions -- however no browsable overview is available at this time.
The standard method of accessing the poMMo API is to call bootstrap.php (located in the poMMo root). This file sets up the $pommo global.. accessible via "$GLOBALS[’pommo’]" or "global $pommo;". You’ll see that most of my program files (in admin/* or user/*) call bootsrap.php and then execute the initialization function $pommo->init(); -- The initialization function reads the config.php, sets up a reference to the database (as $pommo->_dbo), and so fourth. It can be found in inc/classes/pommo.php . All other API functionality is made available with Pommo::requireOnce(FILE). For instance, if you want to include the subscriber API (functions to add, delete, update, and return subscribers) include inc/helpers/subscribers.php via Pommo::requireOnce($pommo->_baseDir.’inc/helpers/subscribers.php’); You will now have access to PommoSubscriber::add(), PommoSubscriber::update(), and so fourth. From the proceeding example you may see that $pommo->_baseDir holds the string value of poMMo’s "base directory" on the server -- e.g. "/home/www/vhost/modxcms.com/pommo/" or "c:\inet pub\sites\modxcms.com\" on win32. ..OK enough of the primer
For now, since the documentation is not written, I’m here to answer technical questions. I’ve found that while email works, AIM/Skype seems to be a better route. My AIM/Skype handle is "bricecubed". Let me know if you have any questions or ideas.
Thanks,
~ Brice