--- flickr.module.orig 2007-06-02 05:46:58.000000000 +0100
+++ flickr.module 2008-02-05 14:43:34.000000000 +0000
@@ -10,7 +10,7 @@ require_once(drupal_get_path('module', '
function flickr_help($section) {
switch ($section) {
case 'admin/settings/flickr':
- return t("You will need a Flickr API key to use this module. You can apply for one at @link", array('@link' => url('http://www.flickr.com/services/api/keys/apply/')));
+ return t("You will need a Flickr API key to use this module. You can apply for one at @flickr-api-link . To create a flickr entry click here", array('@flickr-api-link' => url('http://www.flickr.com/services/api/keys/apply/'),'@flickr-entry-create' => url('admin/flickr/entry/create')));
case 'admin/help#flickr':
return t('The flickr module uses XML-RPC to connect to Flickr\'s API and retreive photo information.');
}
@@ -30,31 +30,75 @@ function flickr_perm () {
function flickr_menu($may_cache) {
global $user;
$items = array();
-
if ($may_cache) {
$items[] = array(
+ 'path' => 'admin/flickr',
+ 'title' => t('Flickr'),
+ 'callback' => 'flickr_admin',
+ 'access' => user_access('administer site configuration'),
+ 'type' => MENU_NORMAL_ITEM,
+ 'description' => t('Flickr')
+ );
+ $items[] = array(
+ 'path' => 'admin/flickr/entries',
+ 'title' => t('Flickr entries'),
+ 'callback' => 'flickr_admin_entries',
+ 'access' => user_access('administer site configuration'),
+ 'type' => MENU_CALLBACK,
+ 'description' => t('Flickr entries.')
+ );
+ $items[] = array(
+ 'path' => 'admin/flickr/entry/create',
+ 'title' => t('Create a Flickr entry'),
+ 'callback' => 'flickr_admin_entry_create',
+ 'access' => user_access('administer site configuration'),
+ 'type' => MENU_CALLBACK,
+ 'description' => t('Create a Flickr entry.')
+ );
+ $items[] = array(
'path' => 'admin/settings/flickr', 'title' => t('Flickr'),
'callback' => 'drupal_get_form',
'callback arguments' => array('flickr_admin_settings'),
'access' => user_access('administer site configuration'),
'type' => MENU_NORMAL_ITEM,
- 'description' => t('Change settings for the flickr module.'));
-
+ 'description' => t('Change settings for the flickr module.')
+ );
$items[] = array(
'path' => 'flickr',
'title' => t('Flickr photos'),
'access' => TRUE,
'type' => MENU_CALLBACK,
'callback' => 'flickr_photos',
- 'description' => t('Flickr photos of default user id.'));
-
+ 'description' => t('Flickr photos of default user id.')
+ );
$items[] = array(
'path' => 'flickr/auth',
'access' => TRUE,
'type' => MENU_CALLBACK,
- 'callback' => 'flickr_auth_callback');
+ 'callback' => 'flickr_auth_callback'
+ );
}
- else {
+ else {
+ if (arg(0) == 'admin' && arg(1) == 'flickr' && arg(2) == 'entry' && arg(3) == 'delete' && is_numeric(arg(4))) {
+ $items[] = array(
+ 'path' => 'admin/flickr/entry/delete/'. arg(4),
+ 'title' => t('Are you sure you want to delete this flickr entry?'),
+ 'callback' => 'flickr_admin_entry_delete',
+ 'access' => user_access('administer site configuration'),
+ 'callback arguments' => array(arg(4)),
+ 'type' => MENU_CALLBACK
+ );
+ }
+ if (arg(0) == 'admin' && arg(1) == 'flickr' && arg(2) == 'entry' && arg(3) == 'edit' && is_numeric(arg(4))) {
+ $items[] = array(
+ 'path' => 'admin/flickr/entry/edit/'. arg(4),
+ 'title' => t('Edit a flickr entry.'),
+ 'callback' => 'flickr_admin_entry_edit',
+ 'access' => user_access('administer site configuration'),
+ 'callback arguments' => array(arg(4)),
+ 'type' => MENU_CALLBACK
+ );
+ }
if (arg(0) == 'flickr' && is_numeric(arg(1)) && arg(1) > 0) {
$account = user_load(array('uid' => arg(1)));
if ($account !== FALSE && isset($account->flickr['nsid'])) {
@@ -132,7 +176,6 @@ function flickr_admin_settings() {
$form['flickr_default_userid']['#disabled'] = TRUE;
$form['flickr_default_userid']['#description'] .= t(" Disabled until a valid API Key is set.");
}
-
return system_settings_form($form);
}
@@ -140,7 +183,6 @@ function flickr_admin_settings_validate(
$key = trim($form['flickr_api_key']);
$sec = trim($form['flickr_api_secret']);
$uid = trim($form['flickr_default_userid']);
-
if ($key && (preg_match('/^[A-Fa-f\d]{32}$/', $key) != 1)) {
form_set_error('flickr_api_key', t('This does not appear to be a Flickr API key.'));
}
@@ -174,7 +216,6 @@ function flickr_admin_settings_submit($f
$form['flickr_default_userid'] = $user['id'];
}
}
-
// ... and save the settings
system_settings_form_submit($form_id, $form);
}
@@ -197,7 +238,6 @@ function theme_flickr_photo_box($p, $siz
$output .= '
'. $title ."
\n";
$output .= "";
$output .= "\n";
-
return $output;
}
@@ -261,12 +301,10 @@ function flickr_user($op, &$edit, &$acco
function flickr_photos($uid = NULL) {
drupal_add_css(drupal_get_path('module', 'flickr') .'/flickr.css');
-
global $pager_page_array, $pager_total, $pager_total_items;
//set this to something else if you want multiple pagers
$element = 0;
$pager_page_array[$element] = $_GET['page'] ? $_GET['page'] : '';
-
if ($uid === NULL) {
$nsid = variable_get('flickr_default_userid', '');
if (!$nsid) {
@@ -284,21 +322,17 @@ function flickr_photos($uid = NULL) {
return FALSE;
}
}
-
$photos = flickr_photos_search($nsid, $pager_page_array[$element]+1);
if (!$photos) {
drupal_set_message(t('No accessible photos found for Flickr %userid', array('%userid' => $nsid)));
return FALSE;
}
-
//set pager information we just acquired
$pager_total[$element] = $photos['pages'];
$pager_total_items[$element] = $photos['total'];
-
return theme('flickr_photos', $uid, $photos);
}
-
function theme_flickr_photos($uid, $photos){
$output = theme('pager', NULL, variable_get('flickr_photos_per_page', 20));
$output .= "\n";
@@ -317,3 +351,175 @@ function theme_flickr_photoset($ps, $own
return l($img, $photo_url, array('title' => $title), NULL, NULL, TRUE, TRUE);
}
+function flickr_admin_entry_create() {
+ $output = drupal_get_form('flickr_admin_entry_create_form');
+ return $output;
+}
+
+function flickr_admin_entry_create_form() {
+ $form['#validate'] = array('flickr_admin_entry_create_form_validate' => array());
+ $form['flickr_entry_name'] = array(
+ '#type' => 'textfield',
+ '#title' => t('Flickr entry name'),
+ '#required' => TRUE,
+ '#description' => t("Flickr entry name eg. Birthday party."),
+ );
+ $form['flickr_entry_tags'] = array(
+ '#type' => 'textfield',
+ '#title' => t('Flickr tags'),
+ '#required' => FALSE,
+ '#description' => t("Flickr tags eg. birthday,party."),
+ );
+ $form['flickr_entry_genre'] = array(
+ '#type' => 'radios',
+ '#title' => t('Flickr photos that are'),
+ '#default_value' => 're',
+ '#options' => array('re' =>'recently added','ra' =>'randomly selected'),
+ '#description' => t("Flickr photos that are recently added or randomly selected."),
+ );
+ $form['flickr_entry_scope'] = array(
+ '#type' => 'radios',
+ '#title' => t('Flickr photos that are'),
+ '#default_value' => 'all',
+ '#options' => array('all' =>'selected from all flickr accounts','you' =>'selected from an individual flickr account'),
+ '#description' => t("Flickr photos that are selected for all or individual accounts.")
+ );
+ $form['flickr_entry_submit'] = array(
+ '#type' => 'submit',
+ '#value' => t('Create an flickr entry'),
+ );
+ return $form ;
+}
+
+function flickr_admin_entry_create_form_submit($form_id, $form_values) {
+ $flickr_entries = variable_get('flickr_entries', array());
+ $flickr_entry = array(
+ 'name' => $form_values['flickr_entry_name'],
+ 'tags' => $form_values['flickr_entry_tags'],
+ 'genre' => $form_values['flickr_entry_genre'],
+ 'scope' => $form_values['flickr_entry_scope'],
+ );
+ array_push($flickr_entries, $flickr_entry);
+ variable_set('flickr_entries', $flickr_entries);
+ drupal_set_message("Flickr entry " . $form_values['flickr_entry_name'] . " has been posted");
+}
+
+function flickr_admin_entry_edit($flickr_entry) {
+ $output = drupal_get_form('flickr_admin_entry_edit_form', $flickr_entry);
+ return $output;
+}
+
+function flickr_admin_entry_edit_form($flickr_entry) {
+ $flickr_entries = variable_get('flickr_entries', array());
+ $flickr_entries[$flickr_entry]['name'];
+ $form['#validate'] = array('flickr_admin_update_entry_form_validate' => array());
+ $form['flickr_entry_name'] = array(
+ '#type' => 'textfield',
+ '#default_value' => $flickr_entries[$flickr_entry]['name'],
+ '#title' => t('Flickr entry name'),
+ '#required' => TRUE,
+ '#description' => t("Flickr entry name eg. Birthday party."),
+ );
+ $form['flickr_entry_tags'] = array(
+ '#type' => 'textfield',
+ '#default_value' => $flickr_entries[$flickr_entry]['tags'],
+ '#title' => t('Flickr tags'),
+ '#required' => FALSE,
+ '#description' => t("Flickr tags eg. birthday,party."),
+ );
+ $form['flickr_entry_genre'] = array(
+ '#type' => 'radios',
+ '#title' => t('Flickr photos that are'),
+ '#default_value' => $flickr_entries[$flickr_entry]['genre'],
+ '#options' => array('re' =>'recently added','ra' =>'randomly selected'),
+ '#description' => t("Flickr photos that are recently added or randomly selected."),
+ );
+ $form['flickr_entry_scope'] = array(
+ '#type' => 'radios',
+ '#title' => t('Flickr photos that are'),
+ '#default_value' => $flickr_entries[$flickr_entry]['scope'],
+ '#options' => array('all' =>'selected from all flickr accounts','you' =>'selected from an individual flickr account'),
+ '#description' => t("Flickr photos that are selected for all or individual accounts.")
+ );
+ $form['flickr_entry'] = array(
+ '#type' => 'hidden',
+ '#value' => $flickr_entry,
+ );
+ $form['flickr_entry_submit'] = array(
+ '#type' => 'submit',
+ '#value' => t('Edit flickr entry'),
+ );
+ return $form ;
+}
+
+function flickr_admin_entry_edit_form_submit($form_id, $form_values) {
+ $key = $form_values['flickr_entry'];
+ $flickr_entry = array(
+ 'name' => $form_values['flickr_entry_name'],
+ 'tags' => $form_values['flickr_entry_tags'],
+ 'genre' => $form_values['flickr_entry_genre'],
+ 'scope' => $form_values['flickr_entry_scope'],
+ );
+ $flickr_entries = variable_get('flickr_entries', array());
+ $flickr_entries[$key] = $flickr_entry;
+ variable_set('flickr_entries', $flickr_entries);
+ drupal_set_message("Flickr entry " . $form_values['flickr_entry_name'] . " has been updated.");
+}
+
+function flickr_admin_entries() {
+ $output = drupal_get_form('flickr_admin_entries_form');
+ print theme('page', $output);
+}
+
+function flickr_admin_entries_form() {
+ $form['flickr-admin-entries']['header'] = array('#type' => 'value', '#value' => array(
array('data' => t('Name')),
array('data' => t('Tags')),
array('data' => t('Select')),
array('data' => t('From')),
+ array('data' => t('Edit')),
+ array('data' => t('Delete'))
));
+ $flickr_entries = variable_get('flickr_entries', array());
+ foreach ($flickr_entries as $key=>$flickr_entry){
+ $form['flickr-admin-entries']['name'][$key] = array('#value' => $flickr_entry['name']);
+ $form['flickr-admin-entries']['tags'][$key] = array('#value' => $flickr_entry['tags']);
+ $form['flickr-admin-entries']['select'][$key] = array('#value' => $flickr_entry['genre'] == 're' ? 'recent' : 'at random');
+ $form['flickr-admin-entries']['from'][$key] = array('#value' => $flickr_entry['scope'] == 'you' ? 'your account' : 'all accounts' );
+ $form['flickr-admin-entries']['edit'][$key] = array('#value' => l('edit', "admin/flickr/entry/edit/".$key));
+ $form['flickr-admin-entries']['delete'][$key] = array('#value' => l('delete', "admin/flickr/entry/delete/".$key));
+ }
+ return $form['flickr-admin-entries'];
+}
+
+function theme_flickr_admin_entries_form($form) {
+ if (isset($form['name']) && is_array($form['name'])) {
foreach (element_children($form['name']) as $key) {
$row = array();
+ $row[] = drupal_render($form['name'][$key]);
$row[] = drupal_render($form['tags'][$key]);
+ $row[] = drupal_render($form['select'][$key]);
$row[] = drupal_render($form['from'][$key]);
+ $row[] = drupal_render($form['edit'][$key]);
$row[] = drupal_render($form['delete'][$key]);
+ $rows[] = $row;
}
}
else {
$rows[] = array(array('data' => t('No flickr entries'), 'colspan' => '6'));
}
$output .= theme('table', $form['header']['#value'], $rows);
if ($form['pager']['#value']) {
$output .= drupal_render($form['pager']);
}
$output .= drupal_render($form);
return $output;
}
+
+function flickr_admin_entry_delete_form($flickr_entry) {
+ $flickr_entries = variable_get('flickr_entries', array());
+ $name = $flickr_entries[$flickr_entry]['name'];
+ $form['flickr_entry'] = array('#type' => 'hidden', '#value' => $flickr_entry);
+ $form['name'] = array('#type' => 'value', '#value' => $name);
+ return confirm_form($form, t('Are you sure you want to delete the flickr entry "%name" ?', array('%name' => $name)), 'admin/flickr/entries', 'This action cannot be undone.', t('Confirm'), t('Cancel'));
+}
+
+function flickr_admin_entry_delete($flickr_entry) {
+ $output = drupal_get_form('flickr_admin_entry_delete_form', $flickr_entry);
+ print theme('page', $output);
+}
+
+function flickr_admin_entry_delete_form_submit($form_id, $form_values) {
+ $flickr_entry = $form_values['flickr_entry'];
+ $name = $form_values['name'];
+ $flickr_entries = variable_get('flickr_entries', array());
+ unset($flickr_entries[$flickr_entry]);
+ variable_set('flickr_entries', $flickr_entries);
+ db_query("DELETE FROM {blocks} WHERE module = 'flickr' AND delta = %d", $flickr_entry);
+ cache_clear_all();
+ drupal_set_message(t('Flickr entry "%name" has been deleted', array('%name' => $name)));
+ return "admin/flickr/entries";
+}
+
+function flickr_admin() {
+ $output = l('Create a flickr entry', "admin/flickr/entry/create") . ' | '. l('Flickr entries', "admin/flickr/entries");
+ print theme('page', $output);
+}
\ No newline at end of file