| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- <?php
- /*
- * Feed Enclosure
- * @description: Stores RSS enclosures and provides a way to access them when browsing aggregated node content
- *
- * @author: Mike Carter < mike @ www.ixis.co.uk/contact >
- */
- 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'),
- );
- }
|