'. t('The enclosure module allows users to specify an RSS enclosure tag for any node. The tag will appear any time RSS is generated from a particular node.') .'
'; $output .= ''. t('Users with the add RSS enclosure permission can upload attachments. You can choose which post types can take RSS enclosure tags on the content types settings page.') .'
'; $output .= ''. t('For more information please contact Armando Leon, the author of this module, at armando(dot)leon(at)gmail(dot)com.', array('@upload' => 'mailto:armando(dot)leon(at)gmail(dot)com')) .'
'; return $output; } } /** * Implementation of hook_install(). */ function enclosure_install() { switch ($GLOBALS['db_type']) { case 'mysql': case 'mysqli': db_query("CREATE TABLE {enclosure} ( nid int(10) unsigned NOT NULL default '0', enc_url varchar(255) NOT NULL default '', enc_length int(10) unsigned NOT NULL default '0', enc_type varchar(30) NOT NULL default '', PRIMARY KEY (nid) )"); break; case 'pgsql': db_query("CREATE TABLE {enclosure} ( nid int NOT NULL default '0', enc_url varchar(255) NOT NULL default '0', enc_length int NOT NULL default '0', enc_type varchar(30) NOT NULL default '', PRIMARY KEY (nid) )"); break; } } /** * Implementation of hook_uninstall(). */ function enclosure_uninstall() { db_query('DROP TABLE {enclosure}'); } /** * Implementation of hook_perm(). */ function enclosure_perm() { return array('modify enclosure'); } /** * Implementation of hook_form_alter(). */ function enclosure_form_alter(&$form, &$form_state, $form_id) { if (isset($form['type']) && $form['type']['#value'] .'_node_form' == $form_id) { $enc_url = $form['#node']->enc_url; $enc_length = $form['#node']->enc_length; $enc_type = $form['#node']->enc_type; $form['enclosure'] = array( '#type' => 'fieldset', '#title' => t('RSS Enclosure'), '#collapsible' => TRUE, '#collapsed' => empty($enc_url), '#access' => user_access('modify enclosure'), '#weight' => 35, ); $form['enclosure']['enc_url'] = array( '#type' => 'textfield', '#default_value' => $enc_url, '#maxlength' => 250, '#collapsible' => TRUE, '#collapsed' => TRUE, '#description' => t('Optionally specify an RSS enclosure URL for this node. This will only appear in an RSS feed.'), ); $form['enclosure']['enc_length'] = array( '#type' => 'textfield', '#default_value' => $enc_length, '#maxlength' => 8, '#collapsible' => TRUE, '#collapsed' => TRUE, '#description' => t('Specify a file size. When in doubt, enter "0".'), ); $form['enclosure']['enc_type'] = array( '#type' => 'textfield', '#default_value' => $enc_type, '#maxlength' => 30, '#collapsible' => TRUE, '#collapsed' => TRUE, '#description' => t('Specify a file type. When in doubt, enter "audio/mpeg".'), ); } } /** * Implementation of hook_nodeapi(). */ function enclosure_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) { if (user_access('modify enclosure')) { switch ($op) { case 'validate': $node->enc_url = trim($node->enc_url); $node->enc_length = trim($node->enc_length); $node->enc_type = trim($node->enc_type); if ($enc_url) { if (!is_numeric($node->enc_length) || ($node->enc_length < 0)) { form_set_error('enc_length', t('The enclosure length must be a number and greater than or equal to zero.')); } if (!$enc_type) { form_set_error('enc_type', t('The enclosure type must be set.')); } } break; case 'load': $data = db_fetch_object(db_query("SELECT * FROM {enclosure} WHERE nid = '%d'", $node->nid)); if ($data) { $node->enc_url = $data->enc_url; $node->enc_length = $data->enc_length; $node->enc_type = $data->enc_type; } break; case 'insert': if ($node->enc_url) { enclosure_set($node->nid, $node->enc_url, $node->enc_length, $node->enc_type); } break; case 'update': if ($node->enc_url) { enclosure_set($node->nid, $node->enc_url, $node->enc_length, $node->enc_type); } else { enclosure_unset($node->nid); } break; case 'delete': enclosure_unset($node->nid); break; case 'rss item': if ($node->enc_url) { return array( array( 'key' => 'enclosure', 'attributes' => array( 'url' => $node->enc_url, 'length' => $node->enc_length, 'type' => $node->enc_type ) ) ); } else { return array(); } } } } function enclosure_set($nid, $enc_url, $enc_length, $enc_type) { if (db_result(db_query("SELECT COUNT(nid) FROM {enclosure} WHERE nid = %d", $nid))) { db_query("UPDATE {enclosure} SET enc_url = '%s', enc_length = '%d', enc_type = '%s' WHERE nid = %d", $enc_url, $enc_length, $enc_type, $nid); } else { db_query("INSERT INTO {enclosure} (nid, enc_url, enc_length, enc_type) VALUES (%d, '%s', %d, '%s')", $nid, $enc_url, $enc_length, $enc_type); } } function enclosure_unset($nid) { if (db_result(db_query("SELECT COUNT(nid) FROM {enclosure} WHERE nid = %d", $nid))) { db_query("DELETE FROM {enclosure} WHERE nid = %d", $nid); } }