$t('Date iCal'),
'value' => $t('Libraries module is not installed.'),
'description' => $t('Date iCal 2.x and above require the Libraries module. Please install it from !here.',
array('!here' => l('here', 'http://www.drupal.org/project/libraries'))
),
'severity' => REQUIREMENT_ERROR,
);
// Return immediately, since we can't even attempt to determine if iCalcreator is installed.
return $requirements;
}
$library = libraries_detect('iCalcreator');
if ($library && !empty($library['installed'])) {
$requirements['date_ical'] = array(
'title' => $t('Date iCal'),
'value' => $t('iCalcreator library is installed, version: @version found', array('@version' => $library['version'])),
'severity' => REQUIREMENT_OK,
);
}
else {
$requirements['date_ical'] = array(
'title' => $t('Date iCal'),
'value' => $t('iCalcreator library could not be found, check the installation instructions for the Date iCal module.'),
'description' => $t('The error message was: @error
!error_message',
array('@error' => $library['error'], '!error_message' => $library['error message'])
),
'severity' => REQUIREMENT_ERROR,
);
}
}
return $requirements;
}
/**
* Implements of hook_enable().
*/
function date_ical_enable() {
cache_clear_all('plugins:feeds:plugins', 'cache');
}
/*****************************************************************************
* UPDATE HOOKS
****************************************************************************/
/**
* Migrates all iCal feed importers for from Date iCal 2.x to 3.0.
*
*
* PLEASE NOTE: If any of your importers are defined by Features, you'll need
* to update their feature(s) to match.
*/
function date_ical_update_7300() {
// Rebuild the registry immediately, so that we don't get fatal errors when
// Drupal attempts to instantiate the old feeds plugin classes.
registry_rebuild();
cache_clear_all('plugins:feeds:plugins', 'cache');
// Update all the importers which used DateIcalIcalcreatorParser to use
// DateiCalFeedsParser instead.
$importer_data = ctools_export_load_object('feeds_importer', 'all');
foreach ($importer_data as $key => $value) {
$importer = feeds_importer($key);
$importer_config = $importer->getConfig();
$needs_update = ($importer_config['parser']['plugin_key'] == 'DateIcalIcalcreatorParser');
$processor = $importer->processor;
$processor_config = $processor->getconfig();
// Also update importers which use the new parser, but have un-capitalized
// sources. This can happen if the user didn't run the update, and then
// manually fixed the warning they saw, without fixing their sources.
if ($importer_config['parser']['plugin_key'] == 'DateiCalFeedsParser'
&& !empty($processor_config['mappings'][0]['source'])) {
$needs_update = (strtoupper($processor_config['mappings'][0]['source']) != $processor_config['mappings'][0]['source']);
}
if ($needs_update) {
$importer->setPlugin('DateiCalFeedsParser');
// Source keys are now capitalized, so we need to update the mappings.
foreach ($processor_config['mappings'] as &$mapping) {
$mapping['source'] = strtoupper($mapping['source']);
}
$processor->setConfig($processor_config);
$importer->save();
// When this importer object got created, a warning was issued about its
// parser plugin being missing. We corrected that warning above, so we
// should clear it out to avoid potential confusion.
$messages = drupal_get_messages('warning');
foreach ($messages['warning'] as $warning) {
// Calling drupal_get_messages() removed *every* warning from the
// message queue, so we need to re-issue any warnings that aren't
// about missing Feeds plugins.
if (strpos($warning, 'Missing Feeds plugin') === FALSE) {
drupal_set_message($warning, 'warning');
}
}
$t = get_t();
$importer_link = l($key, "admin/structure/feeds/$key");
drupal_set_message($t('Date iCal updated the parser plugin for !importer.
If that importer is defined by a feature, you will need to update that feature to match.', array('!importer' => $importer_link))
);
}
}
}