/** * Internally called method to assist with calling Qcubed Query for this class * on load methods. * @param QQueryBuilder &$objQueryBuilder the QueryBuilder object that will be created * @param QQCondition $objConditions any conditions on the query, itself * @param QQClause[] $objOptionalClausees additional optional QQClause object or array of QQClause objects for this query * @param mixed[] $mixParameterArray a array of name-value pairs to perform PrepareStatement with (sending in null will skip the PrepareStatement step) * @param boolean $blnCountOnly only select a rowcount * @return string the query statement */ protected static function BuildQueryStatement(&$objQueryBuilder, QQCondition $objConditions, $objOptionalClauses, $mixParameterArray, $blnCountOnly) { // Get the Database Object for this Class $objDatabase = Librarydetails::GetDatabase(); // Create/Build out the QueryBuilder object with Librarydetails-specific SELET and FROM fields $objQueryBuilder = new QQueryBuilder($objDatabase, 'librarydetails'); Librarydetails::GetSelectFields($objQueryBuilder); $objQueryBuilder->AddFromItem('librarydetails'); // Set "CountOnly" option (if applicable) if ($blnCountOnly) { $objQueryBuilder->SetCountOnlyFlag(); } // Apply Any Conditions if ($objConditions) { try { $objConditions->UpdateQueryBuilder($objQueryBuilder); } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; } } // Iterate through all the Optional Clauses (if any) and perform accordingly if ($objOptionalClauses) { if ($objOptionalClauses instanceof QQClause) { $objOptionalClauses->UpdateQueryBuilder($objQueryBuilder); } else { if (is_array($objOptionalClauses)) { foreach ($objOptionalClauses as $objClause) { $objClause->UpdateQueryBuilder($objQueryBuilder); } } else { throw new QCallerException('Optional Clauses must be a QQClause object or an array of QQClause objects'); } } } // Get the SQL Statement $strQuery = $objQueryBuilder->GetStatement(); // Prepare the Statement with the Query Parameters (if applicable) if ($mixParameterArray) { if (is_array($mixParameterArray)) { if (count($mixParameterArray)) { $strQuery = $objDatabase->PrepareStatement($strQuery, $mixParameterArray); } // Ensure that there are no other Unresolved Named Parameters if (strpos($strQuery, chr(QQNamedValue::DelimiterCode) . '{') !== false) { throw new QCallerException('Unresolved named parameters in the query'); } } else { throw new QCallerException('Parameter Array must be an array of name-value parameter pairs'); } } // Return the Objects return $strQuery; }
/** * Takes a query builder object and outputs the sql query that corresponds to its structure and the given parameters. * * @param QQueryBuilder &$objQueryBuilder the QueryBuilder object that will be created * @param QQCondition $objConditions any conditions on the query, itself * @param QQClause[] $objOptionalClauses additional optional QQClause object or array of QQClause objects for this query * @param mixed[] $mixParameterArray a array of name-value pairs to perform PrepareStatement with (sending in null will skip the PrepareStatement step) * @param boolean $blnCountOnly only select a rowcount * @return string the query statement * @throws QCallerException * @throws Exception */ protected static function BuildQueryStatement(&$objQueryBuilder, QQCondition $objConditions, $objOptionalClauses, $mixParameterArray, $blnCountOnly) { // Get the Database Object for this Class $objDatabase = static::GetDatabase(); $strTableName = static::GetTableName(); // Create/Build out the QueryBuilder object with class-specific SELECT and FROM fields $objQueryBuilder = new QQueryBuilder($objDatabase, $strTableName); $blnAddAllFieldsToSelect = true; if ($objDatabase->OnlyFullGroupBy) { // see if we have any group by or aggregation clauses, if yes, don't add all the fields to select clause by default // because these databases post an error instead of just choosing a value to return when a select item could // have multiple values if ($objOptionalClauses instanceof QQClause) { if ($objOptionalClauses instanceof QQAggregationClause || $objOptionalClauses instanceof QQGroupBy) { $blnAddAllFieldsToSelect = false; } } else { if (is_array($objOptionalClauses)) { foreach ($objOptionalClauses as $objClause) { if ($objClause instanceof QQAggregationClause || $objClause instanceof QQGroupBy) { $blnAddAllFieldsToSelect = false; break; } } } } } $objSelectClauses = QQuery::ExtractSelectClause($objOptionalClauses); if ($objSelectClauses || $blnAddAllFieldsToSelect) { static::BaseNode()->PutSelectFields($objQueryBuilder, null, $objSelectClauses); } $objQueryBuilder->AddFromItem($strTableName); // Set "CountOnly" option (if applicable) if ($blnCountOnly) { $objQueryBuilder->SetCountOnlyFlag(); } // Apply Any Conditions if ($objConditions) { try { $objConditions->UpdateQueryBuilder($objQueryBuilder); } catch (QCallerException $objExc) { $objExc->IncrementOffset(); $objExc->IncrementOffset(); throw $objExc; } } // Iterate through all the Optional Clauses (if any) and perform accordingly if ($objOptionalClauses) { if ($objOptionalClauses instanceof QQClause) { try { $objOptionalClauses->UpdateQueryBuilder($objQueryBuilder); } catch (QCallerException $objExc) { $objExc->IncrementOffset(); $objExc->IncrementOffset(); throw $objExc; } } else { if (is_array($objOptionalClauses)) { foreach ($objOptionalClauses as $objClause) { try { $objClause->UpdateQueryBuilder($objQueryBuilder); } catch (QCallerException $objExc) { $objExc->IncrementOffset(); $objExc->IncrementOffset(); throw $objExc; } } } else { throw new QCallerException('Optional Clauses must be a QQClause object or an array of QQClause objects'); } } } // Get the SQL Statement $strQuery = $objQueryBuilder->GetStatement(); // Substitute the correct sql variable names for the placeholders specified in the query, if any. if ($mixParameterArray) { if (is_array($mixParameterArray)) { if (count($mixParameterArray)) { $strQuery = $objDatabase->PrepareStatement($strQuery, $mixParameterArray); } // Ensure that there are no other Unresolved Named Parameters if (strpos($strQuery, chr(QQNamedValue::DelimiterCode) . '{') !== false) { throw new QCallerException('Unresolved named parameters in the query'); } } else { throw new QCallerException('Parameter Array must be an array of name-value parameter pairs'); } } // Return the Objects return $strQuery; }
/** * Internally called method to assist with calling Qcubed Query for this class * on load methods. * @param QQueryBuilder &$objQueryBuilder the QueryBuilder object that will be created * @param QQCondition $objConditions any conditions on the query, itself * @param QQClause[] $objOptionalClausees additional optional QQClause object or array of QQClause objects for this query * @param mixed[] $mixParameterArray a array of name-value pairs to perform PrepareStatement with (sending in null will skip the PrepareStatement step) * @param boolean $blnCountOnly only select a rowcount * @return string the query statement */ protected static function BuildQueryStatement(&$objQueryBuilder, QQCondition $objConditions, $objOptionalClauses, $mixParameterArray, $blnCountOnly) { // Get the Database Object for this Class $objDatabase = DleMailLog::GetDatabase(); // Create/Build out the QueryBuilder object with DleMailLog-specific SELET and FROM fields $objQueryBuilder = new QQueryBuilder($objDatabase, 'dle_mail_log'); $blnAddAllFieldsToSelect = true; if ($objDatabase->OnlyFullGroupBy) { // see if we have any group by or aggregation clauses, if yes, don't add the fields to select clause if ($objOptionalClauses instanceof QQClause) { if ($objOptionalClauses instanceof QQAggregationClause || $objOptionalClauses instanceof QQGroupBy) { $blnAddAllFieldsToSelect = false; } } else { if (is_array($objOptionalClauses)) { foreach ($objOptionalClauses as $objClause) { if ($objClause instanceof QQAggregationClause || $objClause instanceof QQGroupBy) { $blnAddAllFieldsToSelect = false; break; } } } } } if ($blnAddAllFieldsToSelect) { DleMailLog::GetSelectFields($objQueryBuilder, null, QQuery::extractSelectClause($objOptionalClauses)); } $objQueryBuilder->AddFromItem('dle_mail_log'); // Set "CountOnly" option (if applicable) if ($blnCountOnly) { $objQueryBuilder->SetCountOnlyFlag(); } // Apply Any Conditions if ($objConditions) { try { $objConditions->UpdateQueryBuilder($objQueryBuilder); } catch (QCallerException $objExc) { $objExc->IncrementOffset(); throw $objExc; } } // Iterate through all the Optional Clauses (if any) and perform accordingly if ($objOptionalClauses) { if ($objOptionalClauses instanceof QQClause) { $objOptionalClauses->UpdateQueryBuilder($objQueryBuilder); } else { if (is_array($objOptionalClauses)) { foreach ($objOptionalClauses as $objClause) { $objClause->UpdateQueryBuilder($objQueryBuilder); } } else { throw new QCallerException('Optional Clauses must be a QQClause object or an array of QQClause objects'); } } } // Get the SQL Statement $strQuery = $objQueryBuilder->GetStatement(); // Prepare the Statement with the Query Parameters (if applicable) if ($mixParameterArray) { if (is_array($mixParameterArray)) { if (count($mixParameterArray)) { $strQuery = $objDatabase->PrepareStatement($strQuery, $mixParameterArray); } // Ensure that there are no other Unresolved Named Parameters if (strpos($strQuery, chr(QQNamedValue::DelimiterCode) . '{') !== false) { throw new QCallerException('Unresolved named parameters in the query'); } } else { throw new QCallerException('Parameter Array must be an array of name-value parameter pairs'); } } // Return the Objects return $strQuery; }
/** * Internally called method to assist with calling Qcodo Query for this class * on load methods. * @param QQueryBuilder &$objQueryBuilder the QueryBuilder object that will be created * @param QQCondition $objConditions any conditions on the query, itself * @param QQClause[] $objOptionalClausees additional optional QQClause objects for this query * @param mixed[] $mixParameterArray a array of name-value pairs to perform PrepareStatement with (sending in null will skip the PrepareStatement step) * @param boolean $blnCountOnly only select a rowcount * @return string the query statement */ protected static function BuildQueryStatement(&$objQueryBuilder, QQCondition $objConditions, $objOptionalClauses, $mixParameterArray, $blnCountOnly) { // Get the Database Object for this Class $objDatabase = RoleEntityQtypeBuiltInAuthorization::GetDatabase(); // Create/Build out the QueryBuilder object with RoleEntityQtypeBuiltInAuthorization-specific SELET and FROM fields $objQueryBuilder = new QQueryBuilder($objDatabase, 'role_entity_qtype_built_in_authorization'); RoleEntityQtypeBuiltInAuthorization::GetSelectFields($objQueryBuilder); $objQueryBuilder->AddFromItem('`role_entity_qtype_built_in_authorization` AS `role_entity_qtype_built_in_authorization`'); // Set "CountOnly" option (if applicable) if ($blnCountOnly) { $objQueryBuilder->SetCountOnlyFlag(); } // Apply Any Conditions if ($objConditions) { $objConditions->UpdateQueryBuilder($objQueryBuilder); } // Iterate through all the Optional Clauses (if any) and perform accordingly if ($objOptionalClauses) { if (!is_array($objOptionalClauses)) { throw new QCallerException('Optional Clauses must be a QQ::Clause() or an array of QQClause objects'); } foreach ($objOptionalClauses as $objClause) { $objClause->UpdateQueryBuilder($objQueryBuilder); } } // Get the SQL Statement $strQuery = $objQueryBuilder->GetStatement(); // Prepare the Statement with the Query Parameters (if applicable) if ($mixParameterArray) { if (is_array($mixParameterArray)) { if (count($mixParameterArray)) { $strQuery = $objDatabase->PrepareStatement($strQuery, $mixParameterArray); } // Ensure that there are no other Unresolved Named Parameters if (strpos($strQuery, chr(QQNamedValue::DelimiterCode) . '{') !== false) { throw new QCallerException('Unresolved named parameters in the query'); } } else { throw new QCallerException('Parameter Array must be an array of name-value parameter pairs'); } } // Return the Objects return $strQuery; }