plugindev:event_prequery

event_PreQuery proposal

This is a implementation draft for a proposal made here.

Changes in sql functions

sql_table()

Current code

/**
 * returns a prefixed nucleus table name
 */
function sql_table($name) {
	global $MYSQL_PREFIX;
 
	if ($MYSQL_PREFIX) {
		return $MYSQL_PREFIX . 'nucleus_' . $name;
	} else {
		return 'nucleus_' . $name;
	}
}

Changed code

/**
 * returns a prefixed nucleus table name
 */
function sql_table($name) {
	global $MYSQL_PREFIX, $manager;
 
	if ($MYSQL_PREFIX) {
		$table = $MYSQL_PREFIX . 'nucleus_' . $name;
	} else {
		$table = 'nucleus_' . $name;
	}
 
	// start the array to store latest query used tables
	if(!isset($manager->cachedInfo['sql_tables'])) {
		$manager->cachedInfo['sql_tables'] = array();
	}
	// store table name
	$manager->cachedInfo['sql_tables'][] = $table;
 
	return $table;
}

sql_query()

Current code

/**
  * executes an SQL query
  */
function sql_query($query) {
	global $SQLCount;
	$SQLCount++;
	$res = mysql_query($query) or print("mySQL error with query $query: " . mysql_error() . '<p />');
	return $res;
}

Changed code

/**
  * executes an SQL query
  */
function sql_query($query) {
	global $manager;
 
	// PreQuery event data
	$data = array(
				'query' 		=> $query,
				'sql_tables' 	=> $manager->cachedInfo['sql_tables'],
				'result' 	=> ''
				);
	$manager->notify('PreQuery', $data);
	// clean sql_tables array
	$manager->cachedInfo['sql_tables'] = array();
 
	if(!empty($data['query'])) {
		$data['result'] = mysql_query($data['query']) or print('mySQL error with query ' . $data['query'] . ': ' . mysql_error() . '<p />');
	}
 
	return $data['result'];
}
 
plugindev/event_prequery.txt · Last modified: 2006/07/05 13:03