<?php

/**
 * @file
 * Install and uninstall functions for the Simplenews Scheduler module.
 */

/**
 * Implementation of hook_install().
 */
function simplenews_scheduler_install() {
  drupal_install_schema('simplenews_scheduler');
}

/**
 * Implementation of hook_schema().
 */
function simplenews_scheduler_schema() {
  $schema['simplenews_scheduler'] = array(
    'fields' => array(
      'nid' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'last_run' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'activated' => array(
        'type' => 'int',
        'size' => 'tiny',
        'not null' => TRUE,
        'default' => 0,
      ),
      'send_interval' => array(
        'type' => 'varchar',
        'length' => 10,
      ),
      'start_date' => array(
        'type' => 'int',
        'not null' => TRUE,
      ),
      'stop_type' => array(
        'type' => 'int',
        'not null' => TRUE,
      ),
      'stop_date' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 1388447999,
      ), // Default is Mon, 31 Dec 2013 23:59:59 GMT
      'stop_edition' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'php_eval' => array(
        'type' => 'blob',
        'not null' => TRUE,
      ),
      'title' => array(
        'description' => 'The title of new edition nodes.',
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
      ),
    ),
    'primary key' => array('nid'),
  );

  $schema['simplenews_scheduler_editions'] = array(
    'fields' => array(
      'eid' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'pid' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
      'date_issued' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ),
    ),
    'primary key' => array('eid'),
  );
  return $schema;
}

/**
 * Implementation of hook_uninstall().
 */
function simplenews_scheduler_uninstall() {
  // Remove tables.
  drupal_uninstall_schema('simplenews_scheduler');
}

/**
 * Implementation of hook_update_N().
 */
function simplenews_scheduler_update_6000() {
  $ret = array();
  db_add_field($ret, 'simplenews_scheduler', 'stop', array('type' => 'int', 'length' => 1, 'not null' => TRUE));
  db_add_field($ret, 'simplenews_scheduler', 'stop_date', array('type' => 'int', 'length' => 11, 'not null' => TRUE, 'default' => 1577923199));
  db_add_field($ret, 'simplenews_scheduler', 'stop_edition', array('type' => 'int', 'length' => 10, 'not null' => TRUE, 'default' => 0));
  $ret[] = update_sql("ALTER TABLE {simplenews_scheduler} CHANGE sched_interval interval VARCHAR(10) NOT NULL DEFAULT '0'");
  $ret[] = update_sql("ALTER TABLE {simplenews_scheduler} CHANGE sched_start start_date INT(11) NOT NULL DEFAULT '0'");
  return $ret;
}

/**
 * Implementation of hook_update_N().
 */
function simplenews_scheduler_update_6001() {
  $ret = array();
  db_drop_field($ret, 'simplenews_scheduler', 'sid');
  db_add_field($ret, 'simplenews_scheduler', 'activated', array('type' => 'int', 'size' => 'tiny', 'not null' => TRUE, 'default' => 0));
  $ret[] = update_sql("ALTER IGNORE TABLE {simplenews_scheduler} CHANGE snid nid INT(11) NOT NULL DEFAULT '0', ADD PRIMARY KEY (nid)");
  $ret[] = update_sql("ALTER TABLE {simplenews_scheduler_editions} CHANGE edition_snid eid INT(11) NOT NULL DEFAULT '0'");
  $ret[] = update_sql("ALTER TABLE {simplenews_scheduler_editions} CHANGE snid pid INT(11) NOT NULL DEFAULT '0'");
  return $ret;
}

/**
 * Implementation of hook_update_N().
 */
function simplenews_scheduler_update_6002() {
  $ret = array();
  db_drop_field($ret, 'simplenews_scheduler', 'run_limit');
  db_drop_field($ret, 'simplenews_scheduler', 'run_count');
  return $ret;
}

/**
 * Implementation of hook_update_N().
 */
function simplenews_scheduler_update_6003() {
  $ret = array();
  db_add_primary_key($ret, 'simplenews_scheduler_editions', array('eid'));
  return $ret;
}

/**
 * Implementation of hook_update_N().
 */
function simplenews_scheduler_update_6004() {
  $ret = array();
  db_add_field($ret, 'simplenews_scheduler', 'php_eval', array('type' => 'blob'));
  return $ret;
}
/**
 * Implementation of hook_update_N().
  // attempt to change to pgsql compatible strings
  // #970942
 */
function simplenews_scheduler_update_6005() {
  $ret = array();

  db_change_field($ret, 'simplenews_scheduler', 'stop', 'stop_type', array(
    'type' => 'int',
    'not null' => TRUE,
    )
  );
  db_change_field($ret, 'simplenews_scheduler', 'interval', 'send_interval', array(
	'type' => 'varchar',
	'length' => 10,
    )
  );


  return $ret;
}

/**
 * Add the title field to the scheduler table.
 */
function simplenews_scheduler_update_6006() {
  $ret = array();

  $field = array(
    'description' => 'The title of new edition nodes.',
    'type' => 'varchar',
    'length' => 255,
    'not null' => TRUE,
    'default' => '',
    'initial' => '[title]', // Set existing schedules to just use the node title.
  );
  db_add_field($ret, 'simplenews_scheduler', 'title', $field);

  return $ret;
}

