--- og_aggregator.module 2009-11-08 00:07:05.000000000 +0100 +++ og_aggregator.module.taz 2009-11-09 10:37:28.000000000 +0100 @@ -61,13 +61,13 @@ function og_aggregator_menu() { 'access arguments' => array('administer og_aggregator'), 'type' => MENU_CALLBACK, ); - $items['og_aggregator/sources/%'] = array( - 'title' => 'sources', + $items['og_aggregator/sources'] = array( + 'title' => 'Sources', 'description' => 'OG Aggregator', 'page callback' => 'og_aggregator_page_sources', 'page arguments' => array(2), 'type' => MENU_CALLBACK, - 'access arguments' => array('access content'), + 'access arguments' => array('access og_aggregator'), ); $items['node/%node/aggregator'] = array( @@ -141,7 +141,7 @@ function og_aggregator_menu() { * Implementation of hook_perm(). */ function og_aggregator_perm() { - return array('access og_aggregator', 'administer og_aggregator'); + return array('access og_aggregator', 'administer og_aggregator', 'view all og_aggregator sources'); } function og_aggregator_access($type, $object) { @@ -790,25 +790,41 @@ function og_aggregator_theme() { * Menu callback; displays all the feeds used by the aggregator. */ function og_aggregator_page_sources($fid=NULL) { - if ($fid){ - $feed = db_fetch_object(db_query('SELECT * FROM {og_aggregator_feed} WHERE fid = %d', $fid)); - $info = theme('og_aggregator_feed', $feed); - return _aggregator_page_list('SELECT * FROM {og_aggregator_item} WHERE fid = '. $feed->fid .' ORDER BY timestamp DESC, iid DESC', arg(3), $info); + if ($fid){ + $feed = db_fetch_object(db_query('SELECT * FROM {og_aggregator_feed} WHERE fid = %d', $fid)); + + $node = node_load($feed->nid); + if(user_access('view all og_aggregator sources') || node_access('view', $node)){ + $info = theme('og_aggregator_feed', $feed); + + #module_load_include('inc', 'aggregator', 'aggregator.pages'); + # $result = db_query("SELECT * FROM {og_aggregator_item} WHERE fid = '%d' ORDER BY timestamp DESC, iid DESC", $feed->fid); + return $info; } else{ - $nodes_per_page = variable_get('default_nodes_main', 10); - $query_string = 'SELECT f.*, COUNT(i.iid) AS items FROM {og_aggregator_feed} f LEFT JOIN {og_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.etag, f.modified, f.image, f.block ORDER BY f.title'; - $result = pager_query($query_string, $nodes_per_page); - $output .= '

'. t('Feed overview') .'

'; - $header = array(t('Title'), t('Items'), t('Last update'), t('Next update')); - $rows = array(); - while ($feed = db_fetch_object($result)) { - $rows[] = array(l($feed->title, 'og_aggregator/sources/'.$feed->fid), format_plural($feed->items, '1 item', '@count items'), ($feed->checked ? t('%time ago', array('%time' => format_interval(time() - $feed->checked))) : t('never')), ($feed->checked ? t('%time left', array('%time' => format_interval($feed->checked + $feed->refresh - time()))) : t('never'))); + drupal_access_denied(); + } + #return _aggregator_page_list('SELECT * FROM {og_aggregator_item} WHERE fid = '. $feed->fid .' ORDER BY timestamp DESC, iid DESC', arg(3), $info); + } + else{ + if(user_access('view all og_aggregator sources')){ + $nodes_per_page = variable_get('default_nodes_main', 10); + $query_string = 'SELECT f.*, COUNT(i.iid) AS items FROM {og_aggregator_feed} f LEFT JOIN {og_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.etag, f.modified, f.image, f.block ORDER BY f.title'; + $result = pager_query($query_string, $nodes_per_page, null, 'SELECT COUNT(*) FROM {og_aggregator_feed}'); + $output .= '

'. t('Feed overview') .'

'; + $header = array(t('Title'), t('Items'), t('Last update'), t('Next update')); + $rows = array(); + while ($feed = db_fetch_object($result)) { + $rows[] = array(l($feed->title, 'og_aggregator/sources/'.$feed->fid), format_plural($feed->items, '1 item', '@count items'), ($feed->checked ? t('%time ago', array('%time' => format_interval(time() - $feed->checked))) : t('never')), ($feed->checked ? t('%time left', array('%time' => format_interval($feed->checked + $feed->refresh - time()))) : t('never'))); } - $output .= theme('table', $header, $rows); - $pager_string = theme('pager', NULL, $nodes_per_page); - return $output.$pager_string; + $output .= theme('table', $header, $rows); + $pager_string = theme('pager', NULL, $nodes_per_page); + return $output.$pager_string; + } + else{ + drupal_access_denied(); } + } } @@ -872,23 +888,25 @@ function theme_og_aggregator_page_item($ * @ingroup themeable */ function theme_og_aggregator_feed($feed) { - $og = db_fetch_object(db_query('SELECT * FROM {node} WHERE nid = %d AND type="og"', $feed->nid)); - $output = '
'; - $output .= theme('feed_icon', $feed->url) ."\n"; - $output .= $feed->image; - $output .= '
'. aggregator_filter_xss($feed->description) ."
\n"; - $output .= '
'. t('URL:') .' '. l($feed->link, $feed->link, array('absolute' => TRUE)) ."
\n"; - - if ($feed->checked) { - $updated = t('%time ago', array('%time' => format_interval(time() - $feed->checked))); - } - else { - $updated = t('never'); + if($feed->nid){ + $og = db_fetch_object(db_query('SELECT * FROM {node} WHERE nid = %d', $feed->nid)); + $output = '
'; + $output .= '

'.$feed->title.'

'.theme('feed_icon', $feed->url, $feed->title) ."\n"; + $output .= $feed->image; + $output .= '
'. aggregator_filter_xss($feed->description) ."
\n"; + $output .= '
'. t('URL:') .' '. l($feed->link, $feed->link, array('absolute' => TRUE)) ."
\n"; + + if ($feed->checked) { + $updated = t('%time ago', array('%time' => format_interval(time() - $feed->checked))); + } + else { + $updated = t('never'); + } + + $output .= '
'. t('Updated:') . " $updated
"; + $output .= '
'. t('From Group:') .' '. l($og->title,"node/$og->nid") ."
\n"; + $output .= "
\n"; } - - $output .= '
'. t('Updated:') . " $updated
"; - $output .= '
'. t('From Group:') .' '. l($og->title,"node/$og->nid") ."
\n"; - $output .= "
\n"; - return $output; } +