You are here

function feedapi_aggregator_page_list in FeedAPI 5

Show the list of the feed items

1 call to feedapi_aggregator_page_list()
_feedapi_aggregator_page_list in feedapi_aggregator/feedapi_aggregator.module
Prints an aggregator page listing a number of feed items. Various menu callbacks use this function to print their feeds.

File

feedapi_aggregator/feedapi_aggregator.module, line 641

Code

function feedapi_aggregator_page_list($sql, $header, $categorize) {
  if ($categorize && db_result(db_query('SELECT COUNT(*) FROM {feedapi_aggregator_category}')) == 0) {
    $form['warning'] = array(
      '#type' => 'item',
      '#title' => t('Warning'),
      '#value' => t('Please create a new category before try categorizing items.') . ' ' . l(t('You can create categories here.'), 'admin/content/feed/category'),
    );
    return $form;
  }
  $form['#base'] = 'feedapi_aggregator_page_list';
  $form['header'] = array(
    '#value' => $header,
  );
  $result = pager_query($sql, 20);
  $categories = array();
  $done = FALSE;
  $form['items'] = array();
  $form['categories'] = array(
    '#tree' => TRUE,
  );
  while ($item = db_fetch_object($result)) {
    $form['items'][$item->iid] = array(
      '#value' => theme('feedapi_aggregator_page_item', $item),
    );
    $form['categories'][$item->iid] = array();
    if ($categorize) {
      $categories_result = db_query('SELECT c.cid, c.title, ci.iid FROM {feedapi_aggregator_category} c LEFT JOIN {feedapi_aggregator_category_item} ci ON c.cid = ci.cid AND ci.iid = %d', $item->iid);
      $selected = array();
      while ($category = db_fetch_object($categories_result)) {
        if (!$done) {
          $categories[$category->cid] = check_plain($category->title);
        }
        if ($category->iid) {
          $selected[] = $category->cid;
        }
      }
      $done = TRUE;
      $form['categories'][$item->iid] = array(
        '#title' => $item->title,
        '#description' => $item->description,
        '#type' => variable_get('aggregator_category_selector', 'checkboxes'),
        '#default_value' => $selected,
        '#options' => $categories,
        '#size' => 10,
        '#multiple' => TRUE,
      );
    }
  }
  if ($categorize) {
    unset($form['items']);
  }
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Save categories'),
  );
  $form['pager'] = array(
    '#value' => theme('pager', NULL, 20, 0),
  );
  return $form;
}