You are here

function vars_cron in Variable API 6.2

Implements hook_cron().

File

./vars.module, line 533
Implement an API to handle persistent variables.

Code

function vars_cron() {
  global $conf;
  $modules = array();
  $query = db_query("SELECT name FROM {system} WHERE type = 'module' AND schema = %d", SCHEMA_UNINSTALLED);
  $variables = array();
  while ($module = db_fetch_object($query)) {
    $modules[] = $module->name;
    cache_clear_all('module:' . $module->name, 'cache_vars');
  }
  $defaults = db_query("SELECT * FROM {variable_default} WHERE module IN (" . db_placeholders($modules, 'varchar') . ")", $modules);
  while ($default = db_fetch_object($defaults)) {
    if ($default->flags & Vars::VARS_DYNAMIC) {
      $name_like = str_replace(array(
        '_',
        '%',
      ), array(
        '\\_',
        '\\%',
      ), $name) . '\\_%';
      $vars = db_query("SELECT name FROM {variable} WHERE name LIKE '%s' OR name = '%s'", $name_like, $name);
      while ($var = db_fetch_object($vars)) {
        unset($conf[$var->name]);
        $variables[] = $var->name;
      }
    }
    else {
      unset($conf[$name]);
      $variables[] = $name;
    }
  }
  if (!empty($variables)) {
    db_query("DELETE FROM {variable} WHERE name IN (" . db_placeholders($variables, 'varchar') . ")", $variables);
    db_query("DELETE FROM {variable_default} WHERE module IN (" . db_placeholders($modules, 'varchar') . ")", $modules);
    cache_clear_all('variables', 'cache');
    self::staticReset('vars_default_values');
  }
}