You are here

globallink.features.inc in GlobalLink Connect for Drupal 7.6

Same filename and directory in other branches
  1. 7.7 globallink.features.inc
  2. 7.5 globallink.features.inc

Provides Features integration for the GlobalLink module to export settings and field configurations.

File

globallink.features.inc
View source
<?php

/**
 * @file
 * Provides Features integration for the GlobalLink module to export settings and field configurations.
 */

/**
 * Implementation of hook_features_export_options. [component_hook]
 *
 * This hook will alert features of which specific items of this component may
 * be exported. For instances, in this case, we want to make available all the
 * existing items.  If there are no items to be exported, this component will
 * not be made available in the features export page.
 *
 * @return array
 *   A keyed array of items, suitable for use with a FormAPI select or
 *   checkboxes element.
 */
function globallink_config_features_export_options() {
  $options = array();

  //options for globallink settings
  $options['globallink_pd_url'] = 'URL';
  $options['globallink_pd_username'] = 'User Id';
  $options['globallink_pd_password'] = 'Password';
  $options['globallink_pd_projectid'] = 'Project Short Code(s)';
  $options['globallink_pd_submissionprefix'] = 'Submission Name Prefix';
  $options['globallink_pd_classifier'] = 'Classifier';
  $options['globallink_pd_max_target'] = 'Max Target Count';

  //options for adaptor settings
  $options['globallink_pager_limit'] = 'Dashboard Pager Limit';
  $options['globallink_enable_preview'] = 'Enable Preview For Receive Translations';
  $options['globallink_implementation_type'] = 'Node/Field Translation Filter Implementation';
  $options['globallink_publish_node'] = 'Publish Translated Content';
  $options['globallink_cron_type'] = 'Automatic Update Status';
  $options['globallink_proxy_url'] = 'Proxy URL';
  $options['globallink_entity_create_revisions'] = 'Create Revisions for Entities';

  //options for globallink field configurations settings
  $result = db_query("SELECT locale_code, locale_desc FROM {globallink_locale} WHERE drupal_locale_code NOT LIKE :code", array(
    ':code' => 'NULL',
  ))
    ->fetchAll();
  foreach ($result as $row) {
    $options[$row->locale_code] = $row->locale_desc;
  }

  //options for globallink field configurations settings
  $query = "SELECT content_type, field_name FROM {globallink_field_config}";
  $result = db_query($query);
  foreach ($result as $row) {
    $options[$row->content_type . "|" . $row->field_name] = ucfirst($row->content_type) . ':' . $row->field_name;
  }
  return $options;
}

/**
* Implementation of hook_features_export [component hook]
*
* This is a component hook, rather then a module hook, therefore this is the
* callback from hook_features_api which relates to the specific component we
* are looking to export. When a specific instance of the component we are
* looking to export is selected, this will include the necessariy item, plus
* any dependencies into our export array.
*
* @param array $data
* this is the machine name for the component in question
* @param array &$export
* array of all components to be exported
* @param string $module_name
* The name of the feature module to be generated.
* @return array
* The pipe array of further processors that should be called
*/
function globallink_config_features_export($data, &$export, $module_name = '') {
  $export['dependencies']['globallink'] = 'globallink';
  foreach ($data as $component) {
    $export['features']['globallink_config'][$component] = $component;
  }
  return array();
}

/**
 * Implementation of hook_features_export_render. [component hook]
 *
 * This hook will be invoked in order to export
 * Component hook. The hook should be implemented using the name ot the
 * component, not the module, eg. [component]_features_export() rather than
 * [module]_features_export().
 *
 * Render one or more component objects to code.
 *
 * @param string $module_name
 *   The name of the feature module to be exported.
 * @param array $data
 *   An array of machine name identifiers for the objects to be rendered.
 * @param array $export
 *   The full export array of the current feature being exported. This is only
 *   passed when hook_features_export_render() is invoked for an actual feature
 *   update or recreate, not during state checks or other operations.
 * @return array
 *   An associative array of rendered PHP code where the key is the name of the
 *   hook that should wrap the PHP code. The hook should not include the name
 *   of the module, e.g. the key for `hook_example` should simply be `example`.
 */
function globallink_config_features_export_render($module, $data) {
  $code = array();
  foreach ($data as $component) {
    $data_row = array();
    $pos = strpos($component, '|');
    if ($pos) {
      $param = explode('|', $component);
      $data_row = db_query(" SELECT * FROM {globallink_field_config} WHERE content_type = :content_type AND field_name = :field_name  ", array(
        ':content_type' => $param[0],
        ':field_name' => $param[1],
      ))
        ->fetchAll();
    }
    if (count($data_row) > 0) {
      $code[$component] = get_object_vars($data_row[0]);
    }
    else {
      $result = db_query("SELECT * FROM {globallink_locale} WHERE locale_code = :code", array(
        ':code' => $component,
      ))
        ->fetchAll();
      if (count($result) > 0) {
        $code[$component] = get_object_vars($result[0]);
      }
      else {
        $code[$component] = variable_get($component);
      }
    }
  }
  $code = " return " . features_var_export($code, ' ') . ";";
  return array(
    'globallink_config_features_default_settings' => $code,
  );
}

/**
* Implementation of hook_features_rebuild(). [component_hook]
*/
function globallink_config_features_rebuild($module) {
  $items = module_invoke($module, 'globallink_config_features_default_settings');
  foreach ($items as $key => $value) {
    $pos = strpos($key, '|');
    if ($pos) {
      $params = explode("|", $key);
      $fid = db_query("select fid from {globallink_field_config} where content_type = :content_type AND field_name = :field_name", array(
        ":content_type" => $params[0],
        ":field_name" => $params[1],
      ))
        ->fetchAll();
      if (count($fid) > 0) {
        db_update('globallink_field_config')
          ->fields(array(
          'content_type' => $value['content_type'],
          'entity_type' => $value['entity_type'],
          'bundle' => $value['bundle'],
          'field_name' => $value['field_name'],
          'field_type' => $value['field_type'],
          'field_label' => $value['field_label'],
          'field_format' => $value['field_format'],
          'translatable' => $value['translatable'],
        ))
          ->condition('fid', $fid[0]->fid, '=')
          ->execute();
      }
      else {
        db_insert('globallink_field_config')
          ->fields(array(
          'content_type' => $value['content_type'],
          'entity_type' => $value['entity_type'],
          'bundle' => $value['bundle'],
          'field_name' => $value['field_name'],
          'field_type' => $value['field_type'],
          'field_label' => $value['field_label'],
          'field_format' => $value['field_format'],
          'translatable' => $value['translatable'],
        ))
          ->execute();
      }
    }
    else {
      $result = db_query("SELECT * FROM {globallink_locale} WHERE locale_code = :code", array(
        ':code' => $key,
      ))
        ->fetchAll();
      if (count($result) > 0) {
        db_update('globallink_locale')
          ->fields(array(
          'locale_code' => $value['locale_code'],
          'locale_desc' => $value['locale_desc'],
          'drupal_locale_code' => $value['drupal_locale_code'],
          'drupal_locale_desc' => $value['drupal_locale_desc'],
        ))
          ->condition('locale_code', $key, '=')
          ->execute();
      }
      else {
        variable_set($key, $value);
      }
    }
  }
}

/**
 * Implementation of hook_features_revert(). [component_hook]
 */
function globallink_config_features_revert($module) {
  globallink_config_features_rebuild($module);
}

Functions

Namesort descending Description
globallink_config_features_export Implementation of hook_features_export [component hook]
globallink_config_features_export_options Implementation of hook_features_export_options. [component_hook]
globallink_config_features_export_render Implementation of hook_features_export_render. [component hook]
globallink_config_features_rebuild Implementation of hook_features_rebuild(). [component_hook]
globallink_config_features_revert Implementation of hook_features_revert(). [component_hook]