/**
* @file
- * Admin page callbacks for the aggregator module.
+ * Administration page callbacks for the Aggregator module.
*/
/**
- * Menu callback; displays the aggregator administration page.
+ * Page callback: Displays the Aggregator module administration page.
*/
function aggregator_admin_overview() {
return aggregator_view();
* Displays the aggregator administration page.
*
* @return
- * The page HTML.
+ * A HTML-formatted string with administration page content.
*/
function aggregator_view() {
$result = db_query('SELECT f.fid, f.title, f.url, f.refresh, f.checked, f.link, f.description, f.hash, f.etag, f.modified, f.image, f.block, COUNT(i.iid) AS items FROM {aggregator_feed} f LEFT JOIN {aggregator_item} i ON f.fid = i.fid GROUP BY f.fid, f.title, f.url, f.refresh, f.checked, f.link, f.description, f.hash, f.etag, f.modified, f.image, f.block ORDER BY f.title');
* Form constructor for adding and editing feed sources.
*
* @param $feed
- * If editing a feed, the feed to edit as a PHP stdClass value; if adding a
- * new feed, NULL.
+ * (optional) If editing a feed, the feed to edit as a PHP stdClass value; if
+ * adding a new feed, NULL. Defaults to NULL.
*
* @ingroup forms
* @see aggregator_form_feed_validate()
* Form submission handler for aggregator_form_feed().
*
* @see aggregator_form_feed_validate()
+ *
* @todo Add delete confirmation dialog.
*/
function aggregator_form_feed_submit($form, &$form_state) {
}
/**
- * Menu callback; refreshes a feed, then redirects to the overview page.
+ * Page callback: Refreshes a feed, then redirects to the overview page.
*
* @param $feed
* An object describing the feed to be refreshed.
* Form submission handler for aggregator_form_category().
*
* @see aggregator_form_category_validate()
+ *
* @todo Add delete confirmation dialog.
*/
function aggregator_form_category_submit($form, &$form_state) {
/**
* @file
- * User page callbacks for the aggregator module.
+ * User page callbacks for the Aggregator module.
*/
/**
- * Menu callback; displays the most recent items gathered from any feed.
+ * Page callback: Displays the most recent items gathered from any feed.
*
* @return
- * The items HTML.
+ * The rendered list of items for the feed.
*/
function aggregator_page_last() {
drupal_add_feed('aggregator/rss', variable_get('site_name', 'Drupal') . ' ' . t('aggregator'));
}
/**
- * Menu callback; displays all the items captured from a particular feed.
+ * Page callback: Displays all the items captured from the particular feed.
*
* @param $feed
* The feed for which to display all items.
*
* @return
* The rendered list of items for a feed.
+ *
+ * @see aggregator_menu()
*/
function aggregator_page_source($feed) {
drupal_set_title($feed->title);
}
/**
- * Menu callback; displays a form with all items captured from a feed.
+ * Page callback: Displays a form with all items captured from a feed.
*
* @param $feed
- * The feed for which to list all the aggregated items.
+ * The feed for which to list all of the aggregated items.
*
* @return
- * The rendered list of items for a feed.
+ * The rendered list of items for the feed.
*
* @see aggregator_page_source()
*/
}
/**
- * Menu callback; displays all the items aggregated in a particular category.
+ * Page callback: Displays all the items aggregated in a particular category.
*
* @param $category
- * The category for which to list all the aggregated items.
+ * The category for which to list all of the aggregated items.
*
* @return
-* The rendered list of items for a category.
+ * The rendered list of items for the feed.
*/
function aggregator_page_category($category) {
drupal_add_feed('aggregator/rss/' . $category['cid'], variable_get('site_name', 'Drupal') . ' ' . t('aggregator - @title', array('@title' => $category['title'])));
}
/**
- * Menu callback; displays a form containing items aggregated in a category.
+ * Page callback: Displays a form containing items aggregated in a category.
*
* @param $category
- * The category for which to list all the aggregated items.
+ * The category for which to list all of the aggregated items.
*
* @return
-* The rendered list of items for a category.
+ * The rendered list of items for the feed.
*
* @see aggregator_page_category()
*/
* The feed source URL.
*
* @return
- * The rendered list of items for a feed.
+ * The rendered list of items for the feed.
*/
function _aggregator_page_list($items, $op, $feed_source = '') {
if (user_access('administer news feeds') && ($op == 'categorize')) {
* @param $items
* An array of the feed items.
* @param $feed_source
- * The feed source URL.
+ * (optional) The feed source URL. Defaults to an empty string.
+ *
+ * @return array
+ * An array of FAPI elements.
*
- * @ingroup forms
* @see aggregator_categorize_items_submit()
+ * @see theme_aggregator_categorize_items()
+ * @ingroup forms
*/
function aggregator_categorize_items($items, $feed_source = '') {
$form['#submit'][] = 'aggregator_categorize_items_submit';
}
/**
- * Menu callback; displays all the feeds used by the aggregator.
+ * Page callback: Displays all the feeds used by the aggregator.
+ *
+ * @return
+ * An HTML-formatted string.
+ *
+ * @see aggregator_menu()
*/
function aggregator_page_sources() {
$result = db_query('SELECT f.fid, f.title, f.description, f.image, MAX(i.timestamp) AS last FROM {aggregator_feed} f LEFT JOIN {aggregator_item} i ON f.fid = i.fid GROUP BY f.fid, f.title, f.description, f.image ORDER BY last DESC, f.title');
}
/**
- * Menu callback; displays all the categories used by the aggregator.
+ * Page callback: Displays all the categories used by the Aggregator module.
+ *
+ * @return string
+ * An HTML formatted string.
+ *
+ * @see aggregator_menu()
*/
function aggregator_page_categories() {
$result = db_query('SELECT c.cid, c.title, c.description FROM {aggregator_category} c LEFT JOIN {aggregator_category_item} ci ON c.cid = ci.cid LEFT JOIN {aggregator_item} i ON ci.iid = i.iid GROUP BY c.cid, c.title, c.description');
}
/**
- * Menu callback; generate an RSS 0.92 feed of aggregator items or categories.
+ * Page callback: Generates an RSS 0.92 feed of aggregator items or categories.
+ *
+ * @return string
+ * An HTML formatted string.
*/
function aggregator_page_rss() {
$result = NULL;
}
/**
- * Menu callback; generates an OPML representation of all feeds.
+ * Page callback: Generates an OPML representation of all feeds.
*
* @param $cid
- * If set, feeds are exported only from a category with this ID. Otherwise, all feeds are exported.
+ * (optional) If set, feeds are exported only from a category with this ID.
+ * Otherwise, all feeds are exported. Defaults to NULL.
+ *
* @return
- * The output XML.
+ * An OPML formatted string.
*/
function aggregator_page_opml($cid = NULL) {
if ($cid) {
}
/**
- * Prints the OPML page for a feed.
+ * Prints the OPML page for the feed.
*
* @param $variables
* An associative array containing:
* - feeds: An array of the feeds to theme.
*
- * @return void
- *
* @ingroup themeable
*/
function theme_aggregator_page_opml($variables) {
* Tests for aggregator.module.
*/
+/**
+ * Defines a base class for testing the Aggregator module.
+ */
class AggregatorTestCase extends DrupalWebTestCase {
function setUp() {
parent::setUp('aggregator', 'aggregator_test');
}
/**
- * Create an aggregator feed (simulate form submission on admin/config/services/aggregator/add/feed).
+ * Creates an aggregator feed.
+ *
+ * This method simulates the form submission on path
+ * admin/config/services/aggregator/add/feed.
*
* @param $feed_url
- * If given, feed will be created with this URL, otherwise /rss.xml will be used.
+ * (optional) If given, feed will be created with this URL, otherwise
+ * /rss.xml will be used. Defaults to NULL.
+ *
* @return $feed
* Full feed object if possible.
*
}
/**
- * Delete an aggregator feed.
+ * Deletes an aggregator feed.
*
* @param $feed
* Feed object representing the feed.
}
/**
- * Return a randomly generated feed edit array.
+ * Returns a randomly generated feed edit array.
*
* @param $feed_url
- * If given, feed will be created with this URL, otherwise /rss.xml will be used.
+ * (optional) If given, feed will be created with this URL, otherwise
+ * /rss.xml will be used. Defaults to NULL.
* @return
* A feed array.
*/
}
/**
- * Return the count of the randomly created feed array.
+ * Returns the count of the randomly created feed array.
*
* @return
* Number of feed items on default feed created by createFeed().
}
/**
- * Update feed items (simulate click to admin/config/services/aggregator/update/$fid).
+ * Updates the feed items.
+ *
+ * This method simulates a click to
+ * admin/config/services/aggregator/update/$fid.
*
* @param $feed
- * Feed object representing the feed.
+ * Feed object representing the feed, passed by reference.
* @param $expected_count
* Expected number of feed items.
*/
}
/**
- * Confirm item removal from a feed.
+ * Confirms an item removal from a feed.
*
* @param $feed
* Feed object representing the feed.
}
/**
- * Add and remove feed items and ensure that the count is zero.
+ * Adds and removes feed items and ensure that the count is zero.
*
* @param $feed
* Feed object representing the feed.
}
/**
- * Pull feed categories from aggregator_category_feed table.
+ * Pulls feed categories from {aggregator_category_feed} table.
*
* @param $feed
* Feed object representing the feed.
}
/**
- * Pull categories from aggregator_category table.
+ * Pulls categories from {aggregator_category} table.
+ *
+ * @return
+ * An associative array keyed by category ID and values are set to the
+ * category names.
*/
function getCategories() {
$categories = array();
return $categories;
}
-
/**
- * Check if the feed name and URL is unique.
+ * Checks whether the feed name and URL are unique.
*
* @param $feed_name
* String containing the feed name to check.
* @param $feed_url
* String containing the feed URL to check.
+ *
* @return
* TRUE if feed is unique.
*/
}
/**
- * Create a valid OPML file from an array of feeds.
+ * Creates a valid OPML file from an array of feeds.
*
* @param $feeds
* An array of feeds.
+ *
* @return
* Path to valid OPML file.
*/
}
/**
- * Create an invalid OPML file.
+ * Creates an invalid OPML file.
*
* @return
* Path to invalid OPML file.
}
/**
- * Create a valid but empty OPML file.
+ * Creates a valid but empty OPML file.
*
* @return
* Path to empty OPML file.
* Creates sample article nodes.
*
* @param $count
- * (optional) The number of nodes to generate.
+ * (optional) The number of nodes to generate. Defaults to five.
*/
function createSampleNodes($count = 5) {
$langcode = LANGUAGE_NONE;
}
/**
- * Tests aggregator configuration settings.
+ * Tests functionality of the configuration settings in the Aggregator module.
*/
class AggregatorConfigurationTestCase extends AggregatorTestCase {
public static function getInfo() {
}
}
+/**
+ * Tests adding aggregator feeds.
+ */
class AddFeedTestCase extends AggregatorTestCase {
public static function getInfo() {
return array(
}
/**
- * Create a feed, ensure that it is unique, check the source, and delete the feed.
+ * Creates and ensures that a feed is unique, checks source, and deletes feed.
*/
function testAddFeed() {
$feed = $this->createFeed();
}
}
+/**
+ * Tests the categorize feed functionality in the Aggregator module.
+ */
class CategorizeFeedTestCase extends AggregatorTestCase {
public static function getInfo() {
return array(
}
/**
- * Create a feed and make sure you can add more than one category to it.
+ * Creates a feed and makes sure you can add more than one category to it.
*/
function testCategorizeFeed() {
}
}
+/**
+ * Tests functionality of updating the feed in the Aggregator module.
+ */
class UpdateFeedTestCase extends AggregatorTestCase {
public static function getInfo() {
return array(
}
/**
- * Create a feed and attempt to update it.
+ * Creates a feed and attempts to update it.
*/
function testUpdateFeed() {
$remamining_fields = array('title', 'url', '');
}
}
+/**
+ * Tests functionality for removing feeds in the Aggregator module.
+ */
class RemoveFeedTestCase extends AggregatorTestCase {
public static function getInfo() {
return array(
}
/**
- * Remove a feed and ensure that all it services are removed.
+ * Removes a feed and ensures that all of its services are removed.
*/
function testRemoveFeed() {
$feed = $this->createFeed();
}
}
+/**
+ * Tests functionality of updating a feed item in the Aggregator module.
+ */
class UpdateFeedItemTestCase extends AggregatorTestCase {
public static function getInfo() {
return array(
}
/**
- * Test running "update items" from the 'admin/config/services/aggregator' page.
+ * Tests running "update items" from 'admin/config/services/aggregator' page.
*/
function testUpdateFeedItem() {
$this->createSampleNodes();
}
/**
- * Test running "remove items" from the 'admin/config/services/aggregator' page.
+ * Tests running "remove items" from 'admin/config/services/aggregator' page.
*/
function testRemoveFeedItem() {
// Create a bunch of test feeds.
}
}
+/**
+ * Tests categorization functionality in the Aggregator module.
+ */
class CategorizeFeedItemTestCase extends AggregatorTestCase {
public static function getInfo() {
return array(
}
/**
+ * Checks that children of a feed inherit a defined category.
+ *
* If a feed has a category, make sure that the children inherit that
* categorization.
*/
}
}
+/**
+ * Tests importing feeds from OPML functionality for the Aggregator module.
+ */
class ImportOPMLTestCase extends AggregatorTestCase {
public static function getInfo() {
return array(
}
/**
- * Open OPML import form.
+ * Opens OPML import form.
*/
function openImportForm() {
db_delete('aggregator_category')->execute();
}
/**
- * Submit form filled with invalid fields.
+ * Submits form filled with invalid fields.
*/
function validateImportFormFields() {
$before = db_query('SELECT COUNT(*) FROM {aggregator_feed}')->fetchField();
}
/**
- * Submit form with invalid, empty and valid OPML files.
+ * Submits form with invalid, empty, and valid OPML files.
*/
function submitImportForm() {
$before = db_query('SELECT COUNT(*) FROM {aggregator_feed}')->fetchField();
$this->assertTrue($category, 'Categories are correct.');
}
+ /**
+ * Tests the import of an OPML file.
+ */
function testOPMLImport() {
$this->openImportForm();
$this->validateImportFormFields();
}
}
+/**
+ * Tests functionality of the cron process in the Aggregator module.
+ */
class AggregatorCronTestCase extends AggregatorTestCase {
public static function getInfo() {
return array(
}
/**
- * Add feeds update them on cron.
+ * Adds feeds and updates them via cron process.
*/
public function testCron() {
// Create feed and test basic updating on cron.
}
}
+/**
+ * Tests rendering functionality in the Aggregator module.
+ */
class AggregatorRenderingTestCase extends AggregatorTestCase {
public static function getInfo() {
return array(
}
/**
- * Add a feed block to the page and checks its links.
+ * Adds a feed block to the page and checks its links.
*
- * TODO: Test the category block as well.
+ * @todo Test the category block as well.
*/
public function testBlockLinks() {
// Create feed.
}
/**
- * Create a feed and check that feed's page.
+ * Creates a feed and checks that feed's page.
*/
public function testFeedPage() {
// Increase the number of items published in the rss.xml feed so we have
}
/**
- * Tests for feed parsing.
+ * Tests feed parsing in the Aggregator module.
*/
class FeedParserTestCase extends AggregatorTestCase {
public static function getInfo() {
}
/**
- * Test a feed that uses the RSS 0.91 format.
+ * Tests a feed that uses the RSS 0.91 format.
*/
function testRSS091Sample() {
$feed = $this->createFeed($this->getRSS091Sample());
}
/**
- * Test a feed that uses the Atom format.
+ * Tests a feed that uses the Atom format.
*/
function testAtomSample() {
$feed = $this->createFeed($this->getAtomSample());