*/ function feedenclosure_help($section) { switch ($section) { case 'admin/help#feedenclosure': return t('To be written.'); case 'admin/modules#description': return t('Handle RSS feed enclosures.'); } } function feedenclosure_feedapi($feed, $op, $item = NULL) { switch($op) { case 'item_save': $iid = $item->data['iid']; $enclosures = $item->get_enclosures(); if($enclosures) { foreach($enclosures as $enclosure) { $eid = db_next_id('aggregator_enclosure'); db_query("INSERT INTO {aggregator_enclosure} SET eid = %d, iid = %d, link = '%s', fid = '%d', length = %d, type = '%s'", $eid, $iid, $enclosure->get_link(), $feed['fid'], $enclosure->get_length(), $enclosure->get_type()); } } break; case 'remove': db_query('DELETE FROM {aggregator_enclosure} WHERE fid = %d', $feed['fid']); break; } } function feedenclosure_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) { if($node->type == 'aggregator-item' && $op == 'load') { $enclosure = feedenclosure_get_enclosure($node); if($enclosure) { $node->enclosure[] = $enclosure; } } } function feedenclosure_get_enclosure(&$node) { return db_fetch_array(db_query("SELECT * FROM {aggregator_enclosure} WHERE fid = %d AND iid = %d", $node->fid, $node->iid)); } function feedenclosure_link($type, $node = NULL, $teaser = FALSE) { if($type == 'node' && isset($node->fid) && isset($node->iid)) { $enclosure = feedenclosure_get_enclosure($node); if($enclosure) { $links['feedenclosure'] = theme('feedenclosure_link', $enclosure); return $links; } } } function theme_feedenclosure_link($enclosure) { if (!empty($enclosure['length'])) { $size = ' (' . round($enclosure['length']/1048576, 2) . ' MB)'; } else { $size = t('of unknown size'); } return array( 'title' => t('download attachment @size', array('@size' => $size)), 'href' => $enclosure['link'], 'attributes' => array('class' => 'enclosure'), ); }