コード例 #1
0
ファイル: alter.php プロジェクト: cedwards-reisys/nexus-web
 /** standard constructor.
  *
  *		@param 	string	id of the query
  * 	@param 	mixed		the shared db object
  * 	@param	array		the user information
  *
  ***/
 public function __construct($queryid, &$db, $userinfo, $dbSlave)
 {
     parent::__construct($queryid, $db, $userinfo, $dbSlave);
     $this->query_type = self::QUERY_UPDATE;
     $this->table_query = true;
     //We need this queryid in table data
     if (!array_key_exists($this->query_id, $this->table_data)) {
         throw new Exception('invalid_query_definition');
     }
 }
コード例 #2
0
ファイル: method.php プロジェクト: cedwards-reisys/nexus-web
 /** standard constructor.
  *
  *		@param 	string	id of the query
  * 	@param 	mixed		the shared db object
  * 	@param	array		the user information
  *
  ***/
 public function __construct($queryid, &$db, $userinfo, $dbSlave)
 {
     parent::__construct($queryid, $db, $userinfo, $dbSlave);
     $this->query_type = self::QUERY_METHOD;
     $this->table_query = true;
 }
コード例 #3
0
 public function assertQuery($queryid, $params = array(), $orderby = false)
 {
     //make sure we have been initialized
     if (!isset(self::$instance)) {
         return false;
     }
     if ($this->debugDisplayNextQuerySql) {
         $params[vB_dB_Query::DEBUG_QUERY] = 1;
     }
     // get the query object
     $query = vB_dB_Query::getQuery($queryid, $params, self::$db, self::$userinfo, self::$dbtype, self::$dbSlave);
     if (isset($params[vB_dB_Query::DEBUG_QUERY])) {
         unset($params[vB_dB_Query::DEBUG_QUERY]);
     }
     if ($this->debugDisplayNextQuerySql) {
         $this->debugDisplayNextQuerySql = false;
         $query->debugDisplayNextQuerySql();
     }
     //set the parameters. The children will raise an error if they don't have enough data.
     $check = $query->setQuery($params, $orderby);
     /**If we are in development mode, record this query **/
     if ($this->debug) {
         $this->queryCount += 1;
         /**for performance measuring- number of queries on this page **/
         if (!empty($_REQUEST['querylist'])) {
             $displayParams = $params;
             unset($displayParams[vB_dB_Query::TYPE_KEY]);
             $displayParam = var_export($displayParams, true);
             if (strlen($displayParam) > 256) {
                 $this->queries[] = $queryid . ': ' . substr($displayParam, 0, 256) . '...';
             } else {
                 $this->queries[] = $queryid . ': ' . $displayParam;
             }
         }
     }
     if ($this->debugLog) {
         $starttime = microtime(true);
         //We don't want a full trace.
         $stack = array();
         $trace = debug_backtrace(false);
         foreach ($trace as $key => $step) {
             $line = "Step {$key}: in " . $step['function'];
             foreach (array('line', 'step', 'file') as $field) {
                 if (!empty($step[$field])) {
                     $line .= ' ' . $field . ' ' . $step[$field];
                 }
             }
             $stack[] = $line;
         }
         $info = "---------------------\nQuery: " . $queryid . "\n" . var_export($params, true) . "\n" . implode("\n", $stack) . "\n";
         if (isset($params[vB_dB_Query::TYPE_KEY])) {
             vB::getLogger("dbAssertor.{$queryid}." . $params[vB_dB_Query::TYPE_KEY])->info($info);
         } else {
             vB::getLogger("dbAssertor.{$queryid}")->info($info);
         }
         $result = $query->execSQL();
         vB::getLogger("dbAssertor.{$queryid}")->info("time: " . (microtime(true) - $starttime));
         return $result;
     }
     return $query->execSQL();
 }
コード例 #4
0
ファイル: insert.php プロジェクト: cedwards-reisys/nexus-web
 /** This loads and validates the data- ensures we have all we need
  *
  *	@param	array		the data for the query
  ***/
 public function setQuery($params, $sortorder)
 {
     return parent::setTableQuery($params, $sortorder);
 }
コード例 #5
0
ファイル: create.php プロジェクト: cedwards-reisys/nexus-web
 /** standard constructor.
  *
  *		@param 	string	id of the query
  * 	@param 	mixed		the shared db object
  * 	@param	array		the user information
  *
  ***/
 public function __construct($queryid, &$db, $userinfo)
 {
     parent::__construct($queryid, $db, $userinfo);
     $this->query_type = self::QUERY_UPDATE;
     $this->table_query = true;
 }
コード例 #6
0
ファイル: query.php プロジェクト: cedwards-reisys/nexus-web
 public static function getQuery($queryid, $params, &$db, $userinfo, $dbtype, $dbSlave)
 {
     //init querybuilder if needed
     if (!isset(self::$queryBuilders[$dbtype])) {
         $config = vB::getConfig();
         $queryClass = 'vB_Db_' . $dbtype . '_QueryBuilder';
         self::$queryBuilders[$dbtype] = new $queryClass($db, !empty($config['Misc']['debug_sql']) or !empty($params[self::DEBUG_QUERY]));
         self::$configDebug = !empty($config['Misc']['debug_sql']);
     } else {
         self::$queryBuilders[$dbtype]->setDebugSQL(self::$configDebug or !empty($params[self::DEBUG_QUERY]));
     }
     //We need the query type for what happens next. For that we need the querydefs.
     if (strpos($queryid, ':')) {
         $values = explode(':', $queryid);
         if (count($values) > 1) {
             $class_prefix = $values[0];
             $queryid = $values[1];
         }
     }
     if (isset($class_prefix)) {
         $classname = $class_prefix . '_dB_' . $dbtype . "_QueryDefs";
         $filename = DIR . '/packages/' . strtolower(str_replace('_', '/', $classname)) . '.php';
         if (file_exists($filename)) {
             include_once $filename;
         }
         //make sure this is valid
         if (class_exists($classname, false)) {
             $class = $classname;
         }
     } else {
         $class = 'vB_Db_' . $dbtype . "_QueryDefs";
     }
     $querydefs = new $class();
     $tableData = $querydefs->getTableData();
     $queryData = $querydefs->getQueryData();
     //First we need to find out what kind of query we have. If it's a table-based query
     // then we have a "type" in the params array.
     if (!isset($params[self::TYPE_KEY])) {
         //We can still recover is this is a method or stored query.
         if (!empty($queryData[$queryid])) {
             $params[self::TYPE_KEY] = self::QUERY_STORED;
         } else {
             if (method_exists($querydefs, $queryid)) {
                 $params[self::TYPE_KEY] = self::QUERY_METHOD;
             } else {
                 $params[self::TYPE_KEY] = self::QUERY_SELECT;
             }
         }
     }
     if (empty($tableData[$queryid]) and in_array($params[self::TYPE_KEY], array(self::QUERY_SELECT, self::QUERY_COUNT, self::QUERY_UPDATE, self::QUERY_INSERT, self::QUERY_INSERTIGNORE, self::QUERY_MULTIPLEINSERT, self::QUERY_DELETE, self::QUERY_REPLACE))) {
         throw new vB_Exception_Api('invalid_query_definition_x', $queryid);
     }
     switch ($params[self::TYPE_KEY]) {
         case self::QUERY_STORED:
             $queryClass = 'vB_Db_Query_Stored_' . $dbtype;
             break;
         case self::QUERY_SELECT:
             $queryClass = 'vB_Db_Query_Select_' . $dbtype;
             break;
         case self::QUERY_COUNT:
             $queryClass = 'vB_Db_Query_Count_' . $dbtype;
             break;
         case self::QUERY_UPDATE:
             $queryClass = 'vB_Db_Query_Update_' . $dbtype;
             break;
         case self::QUERY_INSERT:
             $queryClass = 'vB_Db_Query_Insert_' . $dbtype;
             break;
         case self::QUERY_INSERTIGNORE:
             $queryClass = 'vB_Db_Query_InsertIgnore_' . $dbtype;
             break;
         case self::QUERY_REPLACE:
             $queryClass = 'vB_Db_Query_Replace_' . $dbtype;
             break;
         case self::QUERY_DELETE:
             $queryClass = 'vB_Db_Query_Delete_' . $dbtype;
             break;
         case self::QUERY_MULTIPLEINSERT:
             $queryClass = 'vB_Db_Query_MultipleInsert_' . $dbtype;
             break;
         case self::QUERY_METHOD:
             $queryClass = 'vB_Db_Query_Method_' . $dbtype;
             break;
         case self::QUERY_CREATE:
             $queryClass = 'vB_Db_Query_Create_' . $dbtype;
             break;
         case self::QUERY_ALTER:
             $queryClass = 'vB_Db_Query_Alter_' . $dbtype;
             break;
         case self::QUERY_DROP:
             $queryClass = 'vB_Db_Query_Drop_' . $dbtype;
             break;
         default:
             throw new Exception('invalid_query_definition');
     }
     // switch
     $query = new $queryClass($queryid, $db, $userinfo, $dbSlave);
     $query->setQueryDefs($querydefs, $queryid);
     $query->setTableData($tableData, $queryid);
     $query->setQueryData($queryData);
     //If we had to build the structure, let's store it and not make another query later.
     if (!empty($structure)) {
         $query->setStructure($structure);
     }
     return $query;
 }
コード例 #7
0
ファイル: stored.php プロジェクト: cedwards-reisys/nexus-web
 protected function __construct($queryid, &$db, $userinfo, $dbSlave)
 {
     parent::__construct($queryid, $db, $userinfo, $dbSlave);
     //We must first find out whether we need to use the slave database.
     $this->table_query = false;
 }