--- flickr.module.orig	2007-06-02 05:46:58.000000000 +0100
+++ flickr.module	2008-01-29 10:06:41.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 <a href='@link'>@link</a>", 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 <a href='@link'>@link</a> . To create a flickr entry click <a href='@link2'>here</a>", array('@link' => url('http://www.flickr.com/services/api/keys/apply/'),'@link2' => 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.');
   }
@@ -32,6 +32,30 @@ function flickr_menu($may_cache) {
   $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',
@@ -55,6 +79,25 @@ function flickr_menu($may_cache) {
       'callback' => 'flickr_auth_callback');
   }
   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 +175,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 +182,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 +215,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 +237,6 @@ function theme_flickr_photo_box($p, $siz
   $output .= '<div class="flickr-photo-title">'. $title ."</div>\n";
   $output .= "</a>";
   $output .= "</div>\n";
-
   return $output;
 }
 
@@ -261,12 +300,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 +321,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 .= "<div class='fickr-photoset'>\n";
@@ -317,3 +350,180 @@ 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 individula 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 <em>".$form_values['flickr_entry_name'] ."</em> 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 individula 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 <em>".$form_values['flickr_entry_name'] ."</em> 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',NULL);
+  $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
