View source
<?php
function asset_import_help($section = '') {
switch ($section) {
case 'admin/content/asset_import':
$output = '<p>' . t("Import multiple files and save them as assets. The files will be moved from their location into the asset module's files directory. ") . t("Searching for files in %dirpath.", array(
'%dirpath' => realpath(variable_get('asset_import_path', '')),
)) . '</p>';
return $output;
case 'admin/settings/asset_import':
return t("Configure the asset import module's settings.");
default:
return null;
}
}
function asset_import_perm() {
return array(
'import asset files',
);
}
function asset_import_menu($may_cache) {
$items = array();
if ($may_cache) {
$items[] = array(
'path' => 'admin/content/asset_import',
'title' => t('asset import'),
'callback' => 'drupal_get_form',
'callback arguments' => array(
'asset_import_form',
),
'access' => user_access('import asset files'),
'type' => MENU_NORMAL_ITEM,
'description' => t('Import files from the filesystem.'),
);
$items[] = array(
'path' => 'admin/settings/asset_import',
'title' => t('asset import'),
'callback' => 'drupal_get_form',
'callback arguments' => array(
'asset_import_admin_settings',
),
'access' => user_access('administer site configuration'),
'type' => MENU_NORMAL_ITEM,
'description' => t('Change settings for the asset import module.'),
);
}
return $items;
}
function asset_import_form() {
$form = array();
$dirpath = variable_get('asset_import_path', '');
if (!file_check_directory($dirpath)) {
drupal_set_message(t("You need to configure the import directory on the asset import module's <a href='!admin-settings-asset_import'>settings page</a>.", array(
'!admin-settings-asset_import' => url('admin/settings/asset_import'),
)), 'error');
return $form;
}
$files = file_scan_directory($dirpath, '.*');
ksort($files);
if ($files) {
include_once drupal_get_path('module', 'asset') . '/asset_wizard.inc';
$list = asset_wizard_directory_options();
$form['parent'] = array(
'#type' => 'select',
'#title' => t('Parent directory'),
'#default_value' => $form_values['parent'] ? $form_values['parent'] : $_GET['dir'],
'#options' => asset_wizard_directory_options(),
);
$fields = array(
'filesize',
'dimensions',
'title',
'body',
);
foreach ($fields as $field) {
$form['files'][$field][0] = NULL;
}
$filelist = array(
0 => NULL,
);
foreach ($files as $file) {
$_title = db_fetch_array(db_query("SELECT n.title, n.type, f.filename FROM {node} n, {files} f WHERE f.filepath='%s' AND n.nid = f.nid LIMIT 1", $file->filename));
if (!empty($_title)) {
if ($_title['type'] == "image") {
$title = $_title['title'] . " (" . str_replace("_original", "original", $_title['filename']) . ")";
}
else {
$title = $_title['title'];
}
}
else {
$title = basename($file->name);
}
$info = image_get_info($file->filename);
if ($info && isset($info['extension'])) {
$filelist[] = substr($file->filename, strlen($dirpath) + 1);
$form['files']['filesize'][] = array(
'#type' => 'item',
'#value' => format_size(filesize($file->filename)),
);
$form['files']['dimensions'][] = array(
'#type' => 'item',
'#value' => $info['width'] . 'x' . $info['height'],
);
$form['files']['title'][] = array(
'#type' => 'textfield',
'#size' => 20,
'#default_value' => $title,
);
$form['files']['body'][] = array(
'#type' => 'textfield',
'#size' => 20,
);
}
else {
$filelist[] = substr($file->filename, strlen($dirpath) + 1);
$form['files']['filesize'][] = array(
'#type' => 'item',
'#value' => format_size(filesize($file->filename)),
);
$form['files']['dimensions'][] = array(
'#type' => 'item',
'#value' => '',
);
$form['files']['title'][] = array(
'#type' => 'textfield',
'#size' => 20,
'#default_value' => basename($file->name),
);
$form['files']['body'][] = array(
'#type' => 'textfield',
'#size' => 20,
);
}
}
unset($filelist[0]);
foreach ($fields as $field) {
$form['files'][$field][0] = NULL;
}
$form['files']['title']['#tree'] = TRUE;
$form['files']['body']['#tree'] = TRUE;
$form['file_list'] = array(
'#type' => 'value',
'#value' => $filelist,
);
$form['import_file'] = array(
'#type' => 'checkboxes',
'#options' => $filelist,
);
$form['buttons']['submit'] = array(
'#type' => 'submit',
'#value' => t('Import'),
);
}
else {
$form['import_file'] = array(
'#type' => 'item',
'#value' => t('No files were found'),
);
}
return $form;
}
function theme_asset_import_form($form) {
$output = drupal_render($form['parent']);
if (isset($form['import_file']) && $form['import_file']['#type'] == 'checkboxes') {
$header = array(
theme('table_select_header_cell'),
t('Name'),
t('Size'),
t('Dimensions'),
t('Caption'),
t('Copyright'),
);
$rows = array();
foreach (element_children($form['import_file']) as $key) {
$filename = $form['import_file'][$key]['#title'];
unset($form['import_file'][$key]['#title']);
$rows[] = array(
drupal_render($form['import_file'][$key]),
$filename,
drupal_render($form['files']['filesize'][$key]),
drupal_render($form['files']['dimensions'][$key]),
drupal_render($form['files']['title'][$key]),
drupal_render($form['files']['body'][$key]),
);
}
$output .= theme('table', $header, $rows);
}
return $output . drupal_render($form);
}
function asset_import_form_submit($form_id, $form_values) {
$nodes = array();
$op = isset($form_values['op']) ? $form_values['op'] : '';
if ($op == t('Import')) {
$dirpath = variable_get('asset_import_path', '');
if (file_check_directory($dirpath)) {
$nodes = array();
$files = array();
foreach (array_filter($form_values['import_file']) as $index) {
if (!ini_get('safe_mode')) {
set_time_limit(0);
}
$origname = $form_values['file_list'][$index];
$filename = file_check_location($dirpath . '/' . $origname, $dirpath);
$target = file_directory_path() . '/' . $form_values['parent'] . '/' . $origname;
if ($filename && rename($filename, $target)) {
$options = array(
'title' => $form_values['title'][$index],
'author' => $form_values['body'][$index],
'status' => 1,
);
$asset = new StdClass();
$asset->filepath = $target;
$asset->filesize = filesize($target);
asset_save($asset, $options);
$nodes[] = t('%filename', array(
'%filename' => $origname,
));
}
}
if (!empty($nodes)) {
drupal_set_message(t('Successfully imported: ') . theme('item_list', $nodes));
}
else {
drupal_set_message(t('No files were imported.'));
}
}
}
}
function asset_import_admin_settings() {
$form['asset_import_path'] = array(
'#type' => 'textfield',
'#title' => t('Import path'),
'#default_value' => variable_get('asset_import_path', file_directory_path()),
'#after_build' => array(
'_asset_import_settings_check_directory',
),
'#description' => t("The directory to import assets from. Drupal will need to have write access to this directory so we can move the file.") . '<br />' . t("<strong>Note:</strong> a path begining with a <kbd>/</kbd> indicates the path is relative to the server's root, not the website's root. One starting without a <kbd>/</kbd> specifies a path relative to Drupal's root. For example: <kbd>/tmp/image</kbd> would be the temp directory off the root while <kbd>tmp/image</kbd> would be inside Drupal's directory."),
'#required' => TRUE,
);
return system_settings_form($form);
}
function _asset_import_settings_check_directory($form_element) {
$import_dir = $form_element['#value'];
file_check_directory($import_dir, 0, $form_element['#parents'][0]);
$image_dir = file_create_path(variable_get('image_default_path', 'images'));
if (realpath($import_dir) == realpath($image_dir)) {
form_set_error($form_element['#parents'][0], t("You can't import from the image module's directory. The import deletes the original files so you would just be asking for trouble."));
}
return $form_element;
}