/[drupal]/contributions/modules/import_manager/import_manager.module
ViewVC logotype

Diff of /contributions/modules/import_manager/import_manager.module

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.11, Wed Mar 5 20:45:51 2008 UTC revision 1.12, Mon Jun 1 20:45:46 2009 UTC
# Line 1  Line 1 
1  <?php  <?php
2  // $Id: import_manager.module,v 1.10 2008/03/05 20:41:33 drumm Exp $  // $Id: import_manager.module,v 1.11 2008/03/05 20:45:51 drumm Exp $
3    
4  function import_manager_menu($may_cache) {  function import_manager_menu() {
5    $items = array();    $items = array(
6        'admin/content/import_manager' => array(
7    if ($may_cache) {        'title' => 'Imports',
     $items[] = array(  
       'path' => 'admin/content/import_manager',  
       'title' => t('Imports'),  
8        'description' => t('See latest imports and run imports.'),        'description' => t('See latest imports and run imports.'),
9        'callback' => 'import_manager_latest',        'page callback' => 'import_manager_latest',
10        'access' => user_access('access import manager'),        'access arguments' => array('access import manager'),
11      );      ),
12      $items[] = array(      'admin/content/import_manager/latest' => array(
13        'path' => 'admin/content/import_manager/latest',        'title' => 'Latest',
       'title' => t('Latest'),  
14        'type' => MENU_DEFAULT_LOCAL_TASK,        'type' => MENU_DEFAULT_LOCAL_TASK,
15      );      ),
16        'import_manager/run' => array(
17          'page callback' => 'import_manager_run',
18          'access callback' => 'import_manager_is_cli',
19          'type' => MENU_CALLBACK,
20        ),
21      );
22    
23      $modules = module_rebuild_cache();  
24      foreach (module_implements('imports') as $module) {    foreach (module_implements('imports') as $module) {
25        $groups = module_invoke($module, 'imports');      $info = drupal_parse_info_file(drupal_get_path('module', $module) .'/'. $module .'.info');
26        if (count($groups) > 1) {      $groups = module_invoke($module, 'imports');
27          $items[] = array(      if (count($groups) > 1) {
28            'path' => 'admin/content/import_manager/'. $module,        $items['admin/content/import_manager/'. $module] = array(
29            'title' => $modules[$module]->info['name'],          'title' => $info['name'],
30            'callback' => 'import_manager_module',          'page callback' => 'import_manager_module',
31            'type' => MENU_LOCAL_TASK,          'access arguments' => array('access import manager'),
32          );          'type' => MENU_LOCAL_TASK,
33          foreach (array_keys($groups) as $group) {        );
34            $items[] = array(        foreach (array_keys($groups) as $group) {
35              'path' => 'admin/content/import_manager/'. $module .'/'. drupal_urlencode($group),          $items['admin/content/import_manager/'. $module .'/'. drupal_urlencode($group)] = array(
36              'title' => $group,            'title' => $group,
37              'callback' => 'import_manager_page',            'page callback' => 'import_manager_page',
38              'callback arguments' => array($module, $group),            'page arguments' => array($module, $group),
39              'type' => MENU_LOCAL_TASK,            'access arguments' => array('access import manager'),
           );  
         }  
       }  
       else {  
         $group = reset(array_keys($groups));  
         $items[] = array(  
           'path' => 'admin/content/import_manager/'. $module,  
           'title' => $modules[$module]->info['name'],  
           'callback' => 'import_manager_page',  
           'callback arguments' => array($module, $group),  
40            'type' => MENU_LOCAL_TASK,            'type' => MENU_LOCAL_TASK,
41          );          );
42        }        }
43      }      }
44    }      else {
45    else {        $group = reset(array_keys($groups));
46      $items[] = array(        $items['admin/content/import_manager/'. $module] = array(
47        'path' => 'import_manager/run',          'title' => $info['name'],
48        'callback' => 'import_manager_run',          'page callback' => 'import_manager_page',
49        'access' => $_SERVER['SERVER_SOFTWARE'] === 'PHP CLI',          'page arguments' => array($module, $group),
50        'type' => MENU_CALLBACK,          'access arguments' => array('access import manager'),
51      );          'type' => MENU_LOCAL_TASK,
52          );
53        }
54    }    }
55    
56    return $items;    return $items;
57  }  }
58    
59    function import_manager_is_cli() {
60      $_SERVER['SERVER_SOFTWARE'] === 'PHP CLI';
61    }
62    
63  function import_manager_help($page = NULL) {  function import_manager_help($page = NULL) {
64    switch ($page) {    switch ($page) {
65      case 'admin/help#import_manager':      case 'admin/help#import_manager':
# Line 143  function _import_manager_set_defaults($i Line 141  function _import_manager_set_defaults($i
141    return array_merge($defaults, $import);    return array_merge($defaults, $import);
142  }  }
143    
144  function import_manager_form($form_id, $import) {  function import_manager_form(&$form_state, $form_id, $import) {
145    $import = _import_manager_set_defaults($import);    $import = _import_manager_set_defaults($import);
146    
147    drupal_add_css(drupal_get_path('module', 'import_manager') .'/import_manager.css');    drupal_add_css(drupal_get_path('module', 'import_manager') .'/import_manager.css');
# Line 189  function import_manager_form($form_id, $ Line 187  function import_manager_form($form_id, $
187      );      );
188    }    }
189    
190      $form['#validate'] = array('import_manager_form_validate');
191      $form['#submit'] = array('import_manager_form_submit');
192    
193    return $form;    return $form;
194  }  }
195    
196  function import_manager_form_validate($form_id, $form_values) {  function import_manager_form_validate($form, &$form_state) {
197    if (!$form_values['import']['access']) {    if (!$form_state['values']['import']['access']) {
198      form_set_error('submit', t('You do not have permission to run this import.'));      form_set_error('submit', t('You do not have permission to run this import.'));
199    }    }
200  }  }
201    
202  function import_manager_form_submit($form_id, $form_values, $quiet = FALSE) {  function import_manager_form_submit($form, &$form_state, $quiet = FALSE) {
203    if (isset($form_values['import']['file path'])) {    if (isset($form_state['values']['import']['file path'])) {
204      include_once $form_values['import']['file path'];      include_once $form_state['values']['import']['file path'];
205    }    }
206    
207    call_user_func_array($form_id, $form_values['data']);    call_user_func_array($form_state['values']['form_id'], $form_state['values']['data']);
208    
209    db_query("DELETE FROM {import_manager} WHERE callback = '%s'", $form_id);    db_query("DELETE FROM {import_manager} WHERE callback = '%s'", $form_state['values']['form_id']);
210    db_query("INSERT INTO {import_manager} (callback, last_run) VALUES ('%s', %d)", $form_id, time());    db_query("INSERT INTO {import_manager} (callback, last_run) VALUES ('%s', %d)", $form_state['values']['form_id'], time());
211    
212    if (!$quiet) {    if (!$quiet) {
213      drupal_set_message(t($form_values['import']['message'], array('%name' => $form_values['import']['title'])));      drupal_set_message(t($form_state['values']['import']['message'], array('%name' => $form_state['values']['import']['title'])));
214    }    }
215    watchdog('import manager', t($form_values['import']['message'], array('%name' => $form_values['import']['title'])));    watchdog('import manager', t($form_state['values']['import']['message'], array('%name' => $form_state['values']['import']['title'])));
216  }  }
217    
218  /**  /**
# Line 223  function import_manager_form_submit($for Line 224  function import_manager_form_submit($for
224   *   Optional array of data which would usually be submitted with the import.   *   Optional array of data which would usually be submitted with the import.
225   */   */
226  function import_manager_run($callback, $data = array()) {  function import_manager_run($callback, $data = array()) {
227    import_manager_form_submit($callback, array('import' => import_manager_get_import($callback), 'data' => $data), TRUE);    $form_state = array(
228        'values' => array(
229          'import' => import_manager_get_import($callback),
230          'data' => $data,
231          'form_id' => $callback,
232        ),
233      );
234      import_manager_form_submit(array(), $form_state, TRUE);
235  }  }
236    
237  /**  /**

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.12

  ViewVC Help
Powered by ViewVC 1.1.2