array(
'description' => t('Access Joomla Import Settings'),
'title' => t('Administer Joomla'),
'restrict access' => TRUE,
),
);
}
/**
* Implements hook_node_delete().
*/
function joomla_node_delete($node) {
db_delete('joomla_content')
->condition('nid', $node->nid)
->execute();
}
/**
* Implements hook_menu().
*/
function joomla_menu() {
$items = array();
$items['admin/content/joomla_import'] = array(
'title' => 'Import from Joomla',
'page callback' => 'drupal_get_form',
'page arguments' => array('joomla_import_form'),
'access arguments' => array('administer joomla'),
'description' => 'Import content, categories and users from a Joomla website',
'type' => MENU_LOCAL_TASK | MENU_NORMAL_ITEM,
);
$items['admin/config/content/joomla'] = array(
'title' => 'Joomla to Drupal',
'page callback' => 'drupal_get_form',
'page arguments' => array('joomla_admin_settings'),
'access arguments' => array('administer joomla'),
'description' => 'Migrate Joomla to Drupal.',
);
$items['admin/config/content/joomla/settings'] = array(
'title' => 'Settings',
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => -10,
);
return $items;
}
/**
* Joomla admin settings.
*/
function joomla_admin_settings($form, &$form_state) {
// only administrators can access this function
$weight = -20;
$bundle = variable_get('joomla_default_static_nodetype', JOOMLA_DEFAULT_STATIC_NODETYPE);
// Generate the form - settings applying to all patterns first
$form['joomla_import_settings'] = array(
'#type' => 'fieldset',
'#weight' => $weight,
'#title' => t('Import defaults'),
'#collapsible' => FALSE,
'#collapsed' => FALSE,
'#description' => 'Set the default values for the ' . l('Import from Joomla', 'admin/content/joomla_import') . ' form',
);
$form['joomla_import_settings'][] = joomla_import_form_checkboxes();
$weight++;
$form['joomla_settings_database'] = array(
'#type' => 'fieldset',
'#weight' => $weight,
'#title' => t('Joomla settings'),
'#collapsible' => TRUE,
'#collapsed' => FALSE
);
$form['joomla_settings_database']['joomla_database_host'] = array(
'#type' => 'textfield',
'#title' => 'Joomla database host name',
'#default_value' => variable_get('joomla_database_host', JOOMLA_DATABASE_HOST),
'#description' => 'Host name of Joomla database server.'
);
$form['joomla_settings_database']['joomla_database_name'] = array(
'#type' => 'textfield',
'#title' => 'Joomla database name',
'#default_value' => variable_get('joomla_database_name', JOOMLA_DATABASE_NAME),
'#description' => 'Joomla database name.'
);
$form['joomla_settings_database']['joomla_database_user'] = array(
'#type' => 'textfield',
'#title' => 'Joomla database user name',
'#default_value' => variable_get('joomla_database_user', JOOMLA_DATABASE_USER),
'#description' => 'User name for Joomla database server.'
);
$form['joomla_settings_database']['joomla_database_pass'] = array(
'#type' => 'textfield',
'#title' => 'Joomla database password',
'#default_value' => variable_get('joomla_database_pass', JOOMLA_DATABASE_PASS),
'#description' => 'Password for Joomla database server.'
);
$form['joomla_settings_database']['advanced'] = array(
'#type' => 'fieldset',
'#title' => t('Advanced database settings'),
'#collapsible' => TRUE,
'#collapsed' => TRUE
);
$form['joomla_settings_database']['advanced']['joomla_database_port'] = array(
'#type' => 'textfield',
'#title' => 'Joomla database port number',
'#default_value' => variable_get('joomla_database_port', JOOMLA_DATABASE_PORT),
'#description' => 'Port number for Joomla database server. The default (3306) is usually fine.'
);
$form['joomla_settings_database']['advanced']['joomla_prefix'] = array(
'#type' => 'textfield',
'#title' => 'Table Prefix of Joomla',
'#default_value' => variable_get('joomla_prefix', JOOMLA_PREFIX),
'#description' => 'Table Prefix for Joomla tables.'
);
$form['joomla_settings_database']['joomla_path'] = array(
'#type' => 'textfield',
'#title' => 'Path of your Joomla installation',
'#default_value' => variable_get('joomla_path', JOOMLA_PATH),
'#description' => 'The path name where you install Joomla. Example:
'
. '
' . t('The joomla database settings are not currently valid. Please set the correct database settings at Joomla to Drupal settings page', array('@url' => url('admin/config/content/joomla'))) . '
', ); return $form; } $form = joomla_import_form_checkboxes($form_state); $form['joomla_update_submit'] = array( '#type' => 'submit', '#value' => t('Import'), ); return $form; } /** * These checkboxes are used on both the admin and import forms. */ function joomla_import_form_checkboxes(&$form_state = NULL) { $form['joomla_import'] = array( '#type' => 'fieldset', '#title' => t('Items to import'), '#collapsible' => FALSE, '#collapsed' => FALSE, ); $form['joomla_import']['joomla_import_content'] = array( '#type' => 'checkbox', '#title' => t('Import content'), '#default_value' => variable_get('joomla_import_content', JOOMLA_IMPORT_CONTENT), ); $form['joomla_import']['joomla_import_categories'] = array( '#type' => 'checkbox', '#title' => t('Import categories'), '#default_value' => variable_get('joomla_import_categories', JOOMLA_IMPORT_CATEGORIES), ); $form['joomla_import']['joomla_import_users'] = array( '#type' => 'checkbox', '#title' => t('Import users'), '#default_value' => variable_get('joomla_import_users', JOOMLA_IMPORT_USERS), ); $form['joomla_import']['joomla_import_comments'] = array( '#type' => 'checkbox', '#title' => t('Import comments'), '#default_value' => variable_get('joomla_import_comments', JOOMLA_IMPORT_COMMENTS), '#description' => t('Check this only if you use JComments in your joomla installation'), ); $form['joomla_update_duplicate'] = array( '#type' => 'checkbox', '#title' => t('Update previously imported items?'), '#description' => t('If selected, any items which have already been imported, and which have been updated on the Joomla website, will be updated.'), '#default_value' => variable_get('joomla_update_duplicate', JOOMLA_UPDATE_DUPLICATE), ); return $form; } /** * Submit import form. */ function joomla_import_form_submit($form, &$form_state) { $joomla_update_duplicate = (bool) $form_state['values']['joomla_update_duplicate']; $jos = array(); $jos['users'] = (bool) $form_state['values']['joomla_import_users']; $jos['comments'] = (bool) $form_state['values']['joomla_import_comments']; $jos['categories'] = (bool) $form_state['values']['joomla_import_categories']; $jos['content'] = (bool) $form_state['values']['joomla_import_content']; $op = !empty($jos) ? array('joomla_batch_save', array($jos, $joomla_update_duplicate)) : NULL; db_set_active(); $batch = array( 'title' => t('Importing'), 'operations' => array($op), 'progress_message' => t('Importing joomla content, please be patient...'), 'finished' => 'joomla_batch_finished', 'file' => drupal_get_path('module', 'joomla') . '/joomla.batch.inc', ); batch_set($batch); } /** * */ function joomla_replace_mos_image($images_source, $text_source) { $joomla_img_folder = variable_get('joomla_img_folder', JOOMLA_IMG_FOLDER); $joomla_path = variable_get('joomla_path', JOOMLA_PATH); $images = array(); $images = explode("\n", $images_source); $image_string = '{mosimage}'; $n=0; $images_items =array(); while (!(strpos($text_source, $image_string) === FALSE)) { $images_items = explode("|", $images[$n]); if (!file_exists('public://' . $joomla_img_folder)) { mkdir('public://' . $joomla_img_folder); } if (dirname($images_items[0])) { if (!file_exists('public://' . $joomla_img_folder . '/' . dirname($images_items[0]))) { mkdir('public://' . $joomla_img_folder . '/' . dirname($images_items[0])); } } copy($joomla_path . '/images/stories/' . $images_items[0], "public://$joomla_img_folder/" . $images_items[0]); $images_replace = '