Skip to content
filefield.install 2.65 KiB
Newer Older
<?php
// $Id$

/**
 * Implementation of hook_install().
 */
function filefield_install() {
}

  include_once(drupal_get_path('module', 'content') .'/content.module');
  include_once(drupal_get_path('module', 'content') .'/content_admin.inc');

  $fields = content_fields();

  foreach ($fields as $field) {
    switch ($field['type']) {
      case 'file':
        $columns = array(
          'list' => array('type' => 'int', 'not null' => TRUE, 'default' => '0'),
        );
        content_alter_db_field(array(), array(), $field, $columns);
        break;
    }
  }
  db_query('DELETE FROM {cache}');
  return $ret;
function filefield_update_2() {
  cache_clear_all('*', 'cache_menu', TRUE);
  return array();

/**
 * Update to filefield 5.x-2.3: Move the 'show_list' widget setting
 * to the (inverse) 'force_list' field setting.
 */
function filefield_update_3() {
  $ret = array();

  include_once(drupal_get_path('module', 'content') .'/content.module');
  include_once(drupal_get_path('module', 'content') .'/content_admin.inc');

  $fields = content_fields();
  foreach ($fields as $field) {
    switch ($field['type']) {
      case 'file':
        $result = db_query("SELECT * FROM {node_field_instance} WHERE field_name = '%s'", $field['field_name']);

        while ($instance = db_fetch_object($result)) {
          $widget_settings = unserialize($instance->widget_settings);

          if (isset($widget_settings['show_list'])) {
            $show_list = $widget_settings['show_list'];
            unset($widget_settings['show_list']);

            // write the widget settings without 'show_list' to the instance
            $ret[] = update_sql(
              "UPDATE {node_field_instance}
               SET widget_settings = '". serialize($widget_settings) ."'
               WHERE field_name = '". $field['field_name'] ."'
               AND type_name = '". $instance->type_name ."'"
            );

            // write the field settings with the new $force_list to the global settings
            $global = db_result(db_query(
              "SELECT * FROM {node_field} WHERE field_name = '%s'", $field['field_name']
            ));
            $field_settings = unserialize($global->global_settings);
            $field_settings['force_list'] = ($show_list == 0) ? 1 : 0;
            $ret[] = update_sql(
              "UPDATE {node_field}
               SET global_settings = '". serialize($field_settings) ."'
               WHERE field_name = '". $field['field_name'] ."'"
            );
          }
        }
        break;
    }
  }
  db_query('DELETE FROM {cache}');
  db_query('DELETE FROM {cache_content}');
  return $ret;
}