/**
 * Builds a basic query, returns string.
 *
 * @see http://api.drupal.org/api/function/db_query/6
 *
 * @param $query
 *   A string containing an SQL query.
 * @param ...
 *   A variable number of arguments which are substituted into the query
 *   using printf() syntax. Instead of a variable number of query arguments,
 *   you may also pass a single array containing the query arguments.
 *
 *   Valid %-modifiers are: %s, %d, %f, %b (binary data, do not enclose
 *   in '') and %%.
 *
 *   NOTE: using this syntax will cast NULL and FALSE values to decimal 0,
 *   and TRUE values to decimal 1.
 *
 * @return
 *   String of query that would have been run
 */
function my_return_query_string($query)
{
    $args = func_get_args();
    array_shift($args);
    $query = db_prefix_tables($query);
    if (isset($args[0]) and is_array($args[0])) {
        // 'All arguments in one array' syntax
        $args = $args[0];
    }
    _db_query_callback($args, TRUE);
    $query = preg_replace_callback(DB_QUERY_REGEXP, '_db_query_callback', $query);
    return $query;
}
示例#2
0
function db_query($sql)
{
    $args = func_get_args();
    array_shift($args);
    if (isset($args[0]) and is_array($args[0])) {
        // 'All arguments in one array' syntax
        $args = $args[0];
    }
    _db_query_callback($args, TRUE);
    $sql = preg_replace_callback(DB_QUERY_REGEXP, '_db_query_callback', $sql);
    $result = @mysql_query($sql) or die('MySQL Error:<br />' . mysql_error());
    return $result;
}
function db_query($query)
{
    global $quert_count;
    ++$quert_count;
    db_connect();
    $args = func_get_args();
    array_shift($args);
    if (isset($args[0]) and is_array($args[0])) {
        // 'All arguments in one array' syntax
        $args = $args[0];
    }
    _db_query_callback($args, TRUE);
    $query = preg_replace_callback(DB_QUERY_REGEXP, '_db_query_callback', $query);
    //echo $query;
    return _db_query($query);
}
示例#4
0
/**
 * 單純要組 SQL String 用
 */
function db_query_string($db, $query) {
  $args = array_slice(func_get_args(), 2);
  if (isset($args[0]) and is_array($args[0])) { // 'All arguments in one array' syntax
    $args = $args[0];
  }
  _db_query_callback($args, TRUE);
  return preg_replace_callback(DB_QUERY_REGEXP, '_db_query_callback', $query);
}
/**
 * Compute the weekly summaries for the week starting at the given timestamp.
 *
 * @param $timestamp
 *   UNIX timestamp indicating the last time weekly stats were processed.
 */
function project_usage_process_weekly($timestamp)
{
    watchdog('project_usage', 'Starting to process weekly usage data.');
    $time_0 = time();
    // Get all the weeks since we last ran.
    $weeks = project_usage_get_weeks_since($timestamp);
    // Skip the last entry since it's the current, incomplete week.
    $count = count($weeks) - 1;
    for ($i = 0; $i < $count; $i++) {
        $start = $weeks[$i];
        $end = $weeks[$i + 1];
        $date = format_date($start, 'custom', 'Y-m-d');
        $time_1 = time();
        // Try to compute the usage tallies per project and per release. If there
        // is a problem--perhaps some rows existed from a previous, incomplete
        // run that are preventing inserts, throw a watchdog error.
        $sql = "INSERT INTO {project_usage_week_project} (nid, timestamp, tid, count) SELECT pid, %d, tid, COUNT(DISTINCT site_key) FROM {project_usage_day} WHERE timestamp >= %d AND timestamp < %d AND pid <> 0 GROUP BY pid, tid";
        $query_args = array($start, $start, $end);
        $result = db_query($sql, $query_args);
        $time_2 = time();
        _db_query_callback($query_args, TRUE);
        $substitutions = array('!date' => $date, '%query' => preg_replace_callback(DB_QUERY_REGEXP, '_db_query_callback', $sql), '!projects' => format_plural(db_affected_rows(), '1 project', '@count projects'), '!delta' => format_interval($time_2 - $time_1));
        if (!$result) {
            watchdog('project_usage', 'Query failed inserting weekly project tallies for !date, query: %query (!delta).', $substitutions, WATCHDOG_ERROR);
        } else {
            watchdog('project_usage', 'Computed weekly project tallies for !date for !projects (!delta).', $substitutions);
        }
        $sql = "INSERT INTO {project_usage_week_release} (nid, timestamp, count) SELECT nid, %d, COUNT(DISTINCT site_key) FROM {project_usage_day} WHERE timestamp >= %d AND timestamp < %d AND nid <> 0 GROUP BY nid";
        $query_args = array($start, $start, $end);
        $result = db_query($sql, $query_args);
        $time_3 = time();
        _db_query_callback($query_args, TRUE);
        $substitutions = array('!date' => $date, '!releases' => format_plural(db_affected_rows(), '1 release', '@count releases'), '%query' => preg_replace_callback(DB_QUERY_REGEXP, '_db_query_callback', $sql), '!delta' => format_interval($time_3 - $time_2));
        if (!$result) {
            watchdog('project_usage', 'Query failed inserting weekly release tallies for !date, query: %query (!delta).', $substitutions, WATCHDOG_ERROR);
        } else {
            watchdog('project_usage', 'Computed weekly release tallies for !date for !releases (!delta).', $substitutions);
        }
    }
    // Remove any tallies that have aged out.
    $time_4 = time();
    $project_life = variable_get('project_usage_life_weekly_project', PROJECT_USAGE_YEAR);
    db_query("DELETE FROM {project_usage_week_project} WHERE timestamp < %d", $now - $project_life);
    $time_5 = time();
    $substitutions = array('!rows' => format_plural(db_affected_rows(), '1 old weekly project row', '@count old weekly project rows'), '!delta' => format_interval($time_5 - $time_4));
    watchdog('project_usage', 'Removed !rows (!delta).', $substitutions);
    $release_life = variable_get('project_usage_life_weekly_release', 26 * PROJECT_USAGE_WEEK);
    db_query("DELETE FROM {project_usage_week_release} WHERE timestamp < %d", $now - $release_life);
    $time_6 = time();
    $substitutions = array('!rows' => format_plural(db_affected_rows(), '1 old weekly release row', '@count old weekly release rows'), '!delta' => format_interval($time_6 - $time_5));
    watchdog('project_usage', 'Removed !rows (!delta).', $substitutions);
    watchdog('project_usage', 'Completed weekly usage data processing (total time: !delta).', array('!delta' => format_interval($time_6 - $time_0)));
}