Same filename and directory in other branches
  1. 8.x-1.x exif.drush.inc 1 comment
  2. 8.x-2.x exif.drush.inc 1 comment

Drush integration for the EXIF module.

File

./exif.drush.inc

View source
<?php


/**
 * @file
 * Drush integration for the EXIF module.
 */

/**
 * Implements hook_drush_command().
 */
function exif_drush_command() {
    $items['exif-list'] = array(
        'description' => 'list content type where exif is enabled.',
    );
    $items['exif-update'] = array(
        'description' => 'Update all nodes where exif is enabled.',
        'arguments' => array(
            'type' => 'Optional. The content-type to update (all other content-type will be ignored).',
        ),
    );
    return $items;
}

/**
 * Implements hook_drush_help().
 */
function exif_drush_help($section) {
    switch ($section) {
        case 'drush:exif-list':
            return dt('list content type where exif is enabled.');
        case 'drush:exif-update':
            return dt('Update all nodes where exif is enabled.');
    }
}

/**
 * List the enabled content types.
 *
 * @return array
 */
function __drush_exif_list_active_types() {
    $types = array();
    // Fill up array with checked nodetypes.
    foreach (variable_get('exif_nodetypes', array()) as $type) {
        if ($type != "0") {
            $types[] = array(
                'entity' => 'node',
                'type' => $type,
            );
        }
    }
    foreach (variable_get('exif_mediatypes', array()) as $type) {
        if ($type != "0") {
            $types[] = array(
                'entity' => 'file',
                'type' => $type,
            );
        }
    }
    return $types;
}

/**
 * Drush callback.
 */
function drush_exif_list() {
    $types = __drush_exif_list_active_types();
    drush_log(t('listing %count content types.', array(
        '%count' => count($types),
    )), 'ok');
    foreach ($types as $type) {
        drush_log(t('- %entity, %type.', array(
            '%entity' => $type['entity'],
            '%type' => $type['type'],
        )), 'ok');
    }
}

/**
 * Drush callback.
 */
function drush_exif_update($type = '') {
    $types = __drush_exif_list_active_types();
    drush_log(dt('Need to update %count content type.', array(
        '%count' => count($types),
    )));
    foreach ($types as $type) {
        if ($type['entity'] == 'node') {
            $count = __drush_exif_node_update($type['type']);
        }
        elseif ($type['entity'] == 'file') {
            $count = __drush_exif_file_update($type['type']);
        }
    }
}

/**
 *
 *
 * @param string $type
 *
 * @return int
 */
function __drush_exif_node_update($type) {
    $result = db_query("SELECT n.nid FROM {node} n WHERE n.type = :type", array(
        ':type' => $type,
    ));
    $count = 0;
    foreach ($result as $record) {
        // Load the node object from the database.
        $node = node_load($record->nid);
        // Resave the node to make exif changes.
        node_save($node);
        $count++;
    }
    drush_log(dt('Updated %count %type nodes.', array(
        '%count' => $count,
        '%type' => $type,
    )), 'ok');
    return $count;
}

/**
 *
 *
 * @param string $type
 *
 * @return int
 */
function __drush_exif_file_update($type) {
    $result = db_query("SELECT n.fid FROM {file_managed} n WHERE n.type = :type", array(
        ':type' => $type,
    ));
    $count = 0;
    foreach ($result as $record) {
        // Load the node object from the database.
        $file = file_load($record->fid);
        // Resave the node to make exif changes.
        file_save($file);
        $count++;
    }
    drush_log(dt('Updated %count %type files.', array(
        '%count' => $count,
        '%type' => $type,
    )), 'ok');
    return $count;
}

Functions

Title Deprecated Summary
drush_exif_list Drush callback.
drush_exif_update Drush callback.
exif_drush_command Implements hook_drush_command().
exif_drush_help Implements hook_drush_help().
__drush_exif_file_update
__drush_exif_list_active_types List the enabled content types.
__drush_exif_node_update