123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- <?php
- /**
- * @file
- * Drush commands for Title module.
- */
- /**
- * Implements hook_drush_help().
- */
- function title_drush_help($section) {
- switch ($section) {
- case 'drush:upgrade-title-fields':
- return dt('Upgrade title fields to use title module, so that titles can be localized.');
- }
- }
- /**
- * Implements hook_drush_command().
- */
- function title_drush_command() {
- $items['upgrade-title-fields'] = array(
- 'description' => 'Upgrade title fields to use title module, so that titles can be localized.',
- 'drupal dependencies' => array('title', 'entity_translation'),
- );
- $items['upgrade-title-field'] = array(
- 'description' => 'Upgrade a title field on a legacy field. DO NOT call this command directly, it does not do any checking.',
- 'hidden' => TRUE,
- 'arguments' => array(
- 'entity_type' => 'The type of entity, be it a node, user, term, etc.',
- 'bundle' => 'The entity bundle.',
- 'legacy_field' => 'The machine name of the legace field.',
- ),
- );
- return $items;
- }
- /**
- * Command callback for upgrade-title-fields.
- */
- function drush_title_upgrade_title_fields() {
- $entity_type = 'node';
- $entity_info = entity_get_info($entity_type);
- if (empty($entity_info['field replacement'])) {
- drush_log(t('There are no available title fields to upgrade.'), 'error');
- return FALSE;
- }
- $field_replacement_info = $entity_info['field replacement'];
- $upgraded = $failed = $skipped = 0;
- foreach (title_content_types() as $bundle) {
- $dt_args['@bundle'] = $bundle;
- $field_instances = field_info_instances($entity_type, $bundle);
- $extra_fields = field_info_extra_fields($entity_type, $bundle, 'form');
- $possible_fields = array_merge($field_instances, $extra_fields);
- if ($info = array_intersect_key($field_replacement_info, $possible_fields)) {
- foreach (array_keys($info) as $legacy_field) {
- $dt_args['@legacy_field'] = $legacy_field;
- if (drush_invoke_process('@self', 'upgrade-title-field', array($entity_type, $bundle, $legacy_field))) {
- $upgraded++;
- }
- else {
- $failed++;
- }
- }
- }
- else {
- $skipped++;
- drush_log(dt('Title fields have already been upgraded on content type @bundle.', $dt_args), 'ok');
- }
- }
- $messages = array();
- if ($upgraded) {
- $dt_args['@upgraded'] = $upgraded;
- $messages[] = 'Upgraded @upgraded title field(s).';
- }
- if ($skipped) {
- $dt_args['@skipped'] = $skipped;
- $messages[] = 'Skipped @skipped title field(s).';
- }
- if ($failed) {
- $dt_args['@failed'] = $failed;
- $messages[] = '@failed failed.';
- }
- $message = empty($messages) ? 'No fields upgraded.' : implode(' ', $messages);
- drush_log(dt($message, $dt_args), 'completed');
- if ($failed) {
- return FALSE;
- }
- }
- /**
- * Command callback for upgrade-title-field.
- */
- function drush_title_upgrade_title_field($entity_type, $bundle, $legacy_field) {
- $dt_args['@entity_type'] = $entity_type;
- $dt_args['@bundle'] = $bundle;
- $dt_args['@field'] = $legacy_field;
- if (!title_field_replacement_toggle($entity_type, $bundle, $legacy_field)) {
- drush_log(dt("Failed to upgrade title field '@field' on content type @bundle.", $dt_args), 'warning');
- return FALSE;
- }
- title_field_replacement_batch_set($entity_type, $bundle, $legacy_field);
- drush_backend_batch_process();
- if (drush_get_error()) {
- drush_log(dt("Failed upgrading title field '@field' on bundle '@bundle'. Your database is likely messed up now. Sorry about that.", $dt_args), 'error');
- return FALSE;
- }
- drush_log(dt("Upgraded title field '@field' on content type @bundle.", $dt_args), 'success');
- return TRUE;
- }
|