You are here

function imagepicker_update_7100 in Image Picker 7

File

./imagepicker.install, line 200
@author Bob Hutchinson http://drupal.org/user/52366 @copyright GNU GPL

Code

function imagepicker_update_7100() {
  if (!db_table_exists('imagepicker_variables')) {

    // create table imagepicker_variables
    $schema = array();
    $schema['imagepicker_variables'] = array(
      'fields' => array(
        'name' => array(
          'description' => t('imagepicker variables.'),
          'type' => 'varchar',
          'length' => 128,
          'not null' => TRUE,
          'default' => '',
        ),
        'value' => array(
          'description' => t('imagepicker variable values.'),
          'type' => 'text',
          'not null' => TRUE,
        ),
        'uid' => array(
          'description' => t('The user identifier.'),
          'type' => 'int',
          'unsigned' => TRUE,
          'not null' => TRUE,
          'default' => 0,
        ),
      ),
      'indexes' => array(
        'name' => array(
          'name',
        ),
      ),
    );
    db_create_table('imagepicker_variables', $schema['imagepicker_variables']);

    // create a list of imagepicker variables, fetch each one and load them in to the new table, then delete old one
    // global ones first
    $varnames = array();
    $query = db_select('variable', 'v');
    $query
      ->fields('v', array(
      'name',
    ));
    $query
      ->condition('name', 'imagepicker%', 'LIKE');
    $rows = $query
      ->execute();
    foreach ($rows as $row) {
      $varnames[] = $row->name;
    }
    foreach ($varnames as $varname) {
      $var = variable_get($varname, '');

      // insert into new table
      db_insert('imagepicker_variables')
        ->fields(array(
        'name' => $varname,
        'value' => serialize($var),
        'uid' => 0,
      ))
        ->execute();

      // delete old
      variable_del($varname);
    }

    // now cycle through all users and insert their imagepicker data
    $query = db_select('users', 'u');
    $query
      ->fields('u', array(
      'uid',
    ));
    $query
      ->condition('uid', 0, '>')
      ->condition('status', 1, '=');
    $users = $query
      ->execute();
    foreach ($users as $user) {
      $account = user_load($user->uid);
      foreach ($varnames as $varname) {
        if (isset($account->data[$varname])) {

          // insert into new table
          db_insert('imagepicker_variables')
            ->fields(array(
            'name' => $varname,
            'value' => serialize($account->data[$varname]),
            'uid' => $account->uid,
          ))
            ->execute();
        }
      }
    }
  }
}