| 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': |
| 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'); |
| 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 |
/** |
/** |
| 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 |
/** |
/** |