You have likely seen extensions that process an RSS feed and create articles within a system based on that RSS feed. Joomla itself has many extensions that provide this functionality. Some examples are:
This is essentially what we need to do, but instead of processing an RSS feed, the extension will process content from our proprietary backend. Furthermore, instead of "pulling" in content via a cron job, new articles will be "pushed" from our application to the Joomla installation.
The task at hand is to create a Joomla extension/plugin/component/etc that will transfer content from an existing web service we have created into a Joomla installation.
We have already created a Wordpress plugin that reliably provides this functionality, so you may use the Wordpress plugin and "port" over any code that is helpful. Alternatively, if you prefer to start from scratch, you may do so.
There must be an administrative interface where the following values can be changed:
Author: A dropdown showing all users within the system. When new articles are transferred into the system, they are created such that this user is assigned as the article author.
Section: A dropdown showing all sections within the system.
Category: A dropdown showing all categories within the selected section. This dropdown may be populated via AJAX, if desired. There must be no page reload between selecting a section and a category. An excellent model of the desired behavior is the article creation screen. The user selects a section, and then (without requiring a page reload) immediately selects a category within that section. Similar to the "Author" dropdown described above, when new articles are transferred into the system, they are created such that the selected section and category are assigned as the article's section and category, respectively.
There must also be a section on the admin interface that displays the following values:
Endpoint URL: The URL to which our backend will connect in order to transfer new articles.
Access Key: An access key that our backend will send to authenticate to the extension. The extension must, upon installation/activation, auto-generate this access key (created via "sha1(rand())").
Last Connected: The date and time at which our backend system last successfully connected to the extension.
Your administrative interface will likely look similar but not identical to the Wordpress screenshot.
As mentioned previously, articles are "pushed" from our server to an endpoint (a PHP file) within the Joomla extension. The extension must parse the provided data, download and save any images needed by the article, rewrite links to those images within the article, and publish the article. Furthermore, if the article already exists within the system, it must be updated instead of created anew. Some articles are marked as "hidden", and must be saved locally but hidden. Hidden posts are later made visible by a future call from our backend.
Once the article has been created, the extension must return various values to our backend: the article id, the local article id, and the permalink for the article.
More specifics of the article transfer will be gleaned by reviewing the Wordpress plugin we will provide you with.
As mentioned, we will provide you with the Wordpress version of the extension. You should be able to port over a significant portion of the code from that plugin.
Also, you are free to incorporate code from the existing Joomla extensions above, if you desire (Article Generator or FeedGator). If you opt to use FeedGator, please include the price of purchasing the extension from the author in your bid.