<?php
							 | 
						|
								    /**
							 | 
						|
								     * The abstract ShippingRateGen class defined here is
							 | 
						|
								     * code-generated and contains all the basic CRUD-type functionality as well as
							 | 
						|
								     * basic methods to handle relationships and index-based loading.
							 | 
						|
								     *
							 | 
						|
								     * To use, you should use the ShippingRate subclass which
							 | 
						|
								     * extends this ShippingRateGen class.
							 | 
						|
								     *
							 | 
						|
								     * Because subsequent re-code generations will overwrite any changes to this
							 | 
						|
								     * file, you should leave this file unaltered to prevent yourself from losing
							 | 
						|
								     * any information or code changes.  All customizations should be done by
							 | 
						|
								     * overriding existing or implementing new methods, properties and variables
							 | 
						|
								     * in the ShippingRate class.
							 | 
						|
								     * 
							 | 
						|
								     * @package Quinta CMS
							 | 
						|
								     * @subpackage GeneratedDataObjects
							 | 
						|
								     * @property-read integer $Id the value for intId (Read-Only PK)
							 | 
						|
								     * @property-read string $CreationDate the value for strCreationDate (Read-Only Timestamp)
							 | 
						|
								     * @property double $Rate the value for fltRate (Not Null)
							 | 
						|
								     * @property integer $ZoneId the value for intZoneId (Unique)
							 | 
						|
								     * @property-read boolean $__Restored whether or not this object was restored from the database (as opposed to created new)
							 | 
						|
								     */
							 | 
						|
								    class ShippingRateGen extends QBaseClass
							 | 
						|
								    {
							 | 
						|
								
							 | 
						|
								        ///////////////////////////////////////////////////////////////////////
							 | 
						|
								        // PROTECTED MEMBER VARIABLES and TEXT FIELD MAXLENGTHS (if applicable)
							 | 
						|
								        ///////////////////////////////////////////////////////////////////////
							 | 
						|
								
							 | 
						|
								        /////////// Object properties ////////////
							 | 
						|
								        /**
							 | 
						|
								         * Protected member variable that maps to the database PK Identity column shipping_rate.id
							 | 
						|
								         * @var integer intId
							 | 
						|
								         *
							 | 
						|
								         */
							 | 
						|
								        protected $intId = null;
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								        /**
							 | 
						|
								         * Protected member variable that maps to the database column shipping_rate.creation_date
							 | 
						|
								         * @var string strCreationDate
							 | 
						|
								         *
							 | 
						|
								         */
							 | 
						|
								        protected $strCreationDate = null;
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								        /**
							 | 
						|
								         * Protected member variable that maps to the database column shipping_rate.rate
							 | 
						|
								         * @var double fltRate
							 | 
						|
								         *
							 | 
						|
								         */
							 | 
						|
								        protected $fltRate = null;
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								        /**
							 | 
						|
								         * Protected member variable that maps to the database column shipping_rate.zone_id
							 | 
						|
								         * @var integer intZoneId
							 | 
						|
								         *
							 | 
						|
								         */
							 | 
						|
								        protected $intZoneId = null;
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								        /**
							 | 
						|
								         * Protected array of virtual attributes for this object (e.g. extra/other calculated and/or non-object bound
							 | 
						|
								         * columns from the run-time database query result for this object).  Used by InstantiateDbRow and
							 | 
						|
								         * GetVirtualAttribute.
							 | 
						|
								         * @var string[] $__strVirtualAttributeArray
							 | 
						|
								         */
							 | 
						|
								        protected $__strVirtualAttributeArray = array();
							 | 
						|
								
							 | 
						|
								        /**
							 | 
						|
								         * Protected internal member variable that specifies whether or not this object is Restored from the database.
							 | 
						|
								         * Used by Save() to determine if Save() should perform a db UPDATE or INSERT.
							 | 
						|
								         * @var bool __blnRestored;
							 | 
						|
								         */
							 | 
						|
								        protected $__blnRestored;
							 | 
						|
								
							 | 
						|
								        
							 | 
						|
								        ///////////////////////////////
							 | 
						|
								        // PROTECTED MEMBER OBJECTS
							 | 
						|
								        ///////////////////////////////
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								        ///////////////////////////////
							 | 
						|
								        // CLASS-WIDE LOAD AND COUNT METHODS
							 | 
						|
								        ///////////////////////////////
							 | 
						|
								
							 | 
						|
								        /**
							 | 
						|
								         * Static method to retrieve the Database object that owns this class.
							 | 
						|
								         * @return QDatabaseBase reference to the Database object that can query this class
							 | 
						|
								         */
							 | 
						|
								        public static function GetDatabase() {
							 | 
						|
								            return QApplication::$Database[1];
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        /**
							 | 
						|
								         * Load a ShippingRate from PK Info
							 | 
						|
								         * @param integer $intId
							 | 
						|
								         * @return ShippingRate
							 | 
						|
								         */
							 | 
						|
								        public static function Load($intId) {
							 | 
						|
								            // Use QuerySingle to Perform the Query
							 | 
						|
								            return ShippingRate::QuerySingle(
							 | 
						|
								                QQ::Equal(QQN::ShippingRate()->Id, $intId)
							 | 
						|
								            );
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        /**
							 | 
						|
								         * Load all ShippingRates
							 | 
						|
								         * @param QQClause[] $objOptionalClauses additional optional QQClause objects for this query
							 | 
						|
								         * @return ShippingRate[]
							 | 
						|
								         */
							 | 
						|
								        public static function LoadAll($objOptionalClauses = null) {
							 | 
						|
								            // Call ShippingRate::QueryArray to perform the LoadAll query
							 | 
						|
								            try {
							 | 
						|
								                return ShippingRate::QueryArray(QQ::All(), $objOptionalClauses);
							 | 
						|
								            } catch (QCallerException $objExc) {
							 | 
						|
								                $objExc->IncrementOffset();
							 | 
						|
								                throw $objExc;
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        /**
							 | 
						|
								         * Count all ShippingRates
							 | 
						|
								         * @return int
							 | 
						|
								         */
							 | 
						|
								        public static function CountAll() {
							 | 
						|
								            // Call ShippingRate::QueryCount to perform the CountAll query
							 | 
						|
								            return ShippingRate::QueryCount(QQ::All());
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								        ///////////////////////////////
							 | 
						|
								        // QCODO QUERY-RELATED METHODS
							 | 
						|
								        ///////////////////////////////
							 | 
						|
								
							 | 
						|
								        /**
							 | 
						|
								         * 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 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 = ShippingRate::GetDatabase();
							 | 
						|
								
							 | 
						|
								            // Create/Build out the QueryBuilder object with ShippingRate-specific SELET and FROM fields
							 | 
						|
								            $objQueryBuilder = new QQueryBuilder($objDatabase, 'shipping_rate');
							 | 
						|
								            ShippingRate::GetSelectFields($objQueryBuilder);
							 | 
						|
								            $objQueryBuilder->AddFromItem('shipping_rate');
							 | 
						|
								
							 | 
						|
								            // 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;
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        /**
							 | 
						|
								         * Static Qcodo Query method to query for a single ShippingRate object.
							 | 
						|
								         * Uses BuildQueryStatment to perform most of the work.
							 | 
						|
								         * @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
							 | 
						|
								         * @return ShippingRate the queried object
							 | 
						|
								         */
							 | 
						|
								        public static function QuerySingle(QQCondition $objConditions, $objOptionalClauses = null, $mixParameterArray = null) {
							 | 
						|
								            // Get the Query Statement
							 | 
						|
								            try {
							 | 
						|
								                $strQuery = ShippingRate::BuildQueryStatement($objQueryBuilder, $objConditions, $objOptionalClauses, $mixParameterArray, false);
							 | 
						|
								            } catch (QCallerException $objExc) {
							 | 
						|
								                $objExc->IncrementOffset();
							 | 
						|
								                throw $objExc;
							 | 
						|
								            }
							 | 
						|
								
							 | 
						|
								            // Perform the Query, Get the First Row, and Instantiate a new ShippingRate object
							 | 
						|
								            $objDbResult = $objQueryBuilder->Database->Query($strQuery);
							 | 
						|
								            return ShippingRate::InstantiateDbRow($objDbResult->GetNextRow(), null, null, null, $objQueryBuilder->ColumnAliasArray);
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        /**
							 | 
						|
								         * Static Qcodo Query method to query for an array of ShippingRate objects.
							 | 
						|
								         * Uses BuildQueryStatment to perform most of the work.
							 | 
						|
								         * @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
							 | 
						|
								         * @return ShippingRate[] the queried objects as an array
							 | 
						|
								         */
							 | 
						|
								        public static function QueryArray(QQCondition $objConditions, $objOptionalClauses = null, $mixParameterArray = null) {
							 | 
						|
								            // Get the Query Statement
							 | 
						|
								            try {
							 | 
						|
								                $strQuery = ShippingRate::BuildQueryStatement($objQueryBuilder, $objConditions, $objOptionalClauses, $mixParameterArray, false);
							 | 
						|
								            } catch (QCallerException $objExc) {
							 | 
						|
								                $objExc->IncrementOffset();
							 | 
						|
								                throw $objExc;
							 | 
						|
								            }
							 | 
						|
								
							 | 
						|
								            // Perform the Query and Instantiate the Array Result
							 | 
						|
								            $objDbResult = $objQueryBuilder->Database->Query($strQuery);
							 | 
						|
								            return ShippingRate::InstantiateDbResult($objDbResult, $objQueryBuilder->ExpandAsArrayNodes, $objQueryBuilder->ColumnAliasArray);
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        /**
							 | 
						|
								         * Static Qcodo Query method to query for a count of ShippingRate objects.
							 | 
						|
								         * Uses BuildQueryStatment to perform most of the work.
							 | 
						|
								         * @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
							 | 
						|
								         * @return integer the count of queried objects as an integer
							 | 
						|
								         */
							 | 
						|
								        public static function QueryCount(QQCondition $objConditions, $objOptionalClauses = null, $mixParameterArray = null) {
							 | 
						|
								            // Get the Query Statement
							 | 
						|
								            try {
							 | 
						|
								                $strQuery = ShippingRate::BuildQueryStatement($objQueryBuilder, $objConditions, $objOptionalClauses, $mixParameterArray, true);
							 | 
						|
								            } catch (QCallerException $objExc) {
							 | 
						|
								                $objExc->IncrementOffset();
							 | 
						|
								                throw $objExc;
							 | 
						|
								            }
							 | 
						|
								
							 | 
						|
								            // Perform the Query and return the row_count
							 | 
						|
								            $objDbResult = $objQueryBuilder->Database->Query($strQuery);
							 | 
						|
								
							 | 
						|
								            // Figure out if the query is using GroupBy
							 | 
						|
								            $blnGrouped = false;
							 | 
						|
								
							 | 
						|
								            if ($objOptionalClauses) foreach ($objOptionalClauses as $objClause) {
							 | 
						|
								                if ($objClause instanceof QQGroupBy) {
							 | 
						|
								                    $blnGrouped = true;
							 | 
						|
								                    break;
							 | 
						|
								                }
							 | 
						|
								            }
							 | 
						|
								
							 | 
						|
								            if ($blnGrouped)
							 | 
						|
								                // Groups in this query - return the count of Groups (which is the count of all rows)
							 | 
						|
								                return $objDbResult->CountRows();
							 | 
						|
								            else {
							 | 
						|
								                // No Groups - return the sql-calculated count(*) value
							 | 
						|
								                $strDbRow = $objDbResult->FetchRow();
							 | 
						|
								                return QType::Cast($strDbRow[0], QType::Integer);
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								/*      public static function QueryArrayCached($strConditions, $mixParameterArray = null) {
							 | 
						|
								            // Get the Database Object for this Class
							 | 
						|
								            $objDatabase = ShippingRate::GetDatabase();
							 | 
						|
								
							 | 
						|
								            // Lookup the QCache for This Query Statement
							 | 
						|
								            $objCache = new QCache('query', 'shipping_rate_' . serialize($strConditions));
							 | 
						|
								            if (!($strQuery = $objCache->GetData())) {
							 | 
						|
								                // Not Found -- Go ahead and Create/Build out a new QueryBuilder object with ShippingRate-specific fields
							 | 
						|
								                $objQueryBuilder = new QQueryBuilder($objDatabase);
							 | 
						|
								                ShippingRate::GetSelectFields($objQueryBuilder);
							 | 
						|
								                ShippingRate::GetFromFields($objQueryBuilder);
							 | 
						|
								
							 | 
						|
								                // Ensure the Passed-in Conditions is a string
							 | 
						|
								                try {
							 | 
						|
								                    $strConditions = QType::Cast($strConditions, QType::String);
							 | 
						|
								                } catch (QCallerException $objExc) {
							 | 
						|
								                    $objExc->IncrementOffset();
							 | 
						|
								                    throw $objExc;
							 | 
						|
								                }
							 | 
						|
								
							 | 
						|
								                // Create the Conditions object, and apply it
							 | 
						|
								                $objConditions = eval('return ' . $strConditions . ';');
							 | 
						|
								
							 | 
						|
								                // Apply Any Conditions
							 | 
						|
								                if ($objConditions)
							 | 
						|
								                    $objConditions->UpdateQueryBuilder($objQueryBuilder);
							 | 
						|
								
							 | 
						|
								                // Get the SQL Statement
							 | 
						|
								                $strQuery = $objQueryBuilder->GetStatement();
							 | 
						|
								
							 | 
						|
								                // Save the SQL Statement in the Cache
							 | 
						|
								                $objCache->SaveData($strQuery);
							 | 
						|
								            }
							 | 
						|
								
							 | 
						|
								            // Prepare the Statement with the Parameters
							 | 
						|
								            if ($mixParameterArray)
							 | 
						|
								                $strQuery = $objDatabase->PrepareStatement($strQuery, $mixParameterArray);
							 | 
						|
								
							 | 
						|
								            // Perform the Query and Instantiate the Array Result
							 | 
						|
								            $objDbResult = $objDatabase->Query($strQuery);
							 | 
						|
								            return ShippingRate::InstantiateDbResult($objDbResult);
							 | 
						|
								        }*/
							 | 
						|
								
							 | 
						|
								        /**
							 | 
						|
								         * Updates a QQueryBuilder with the SELECT fields for this ShippingRate
							 | 
						|
								         * @param QQueryBuilder $objBuilder the Query Builder object to update
							 | 
						|
								         * @param string $strPrefix optional prefix to add to the SELECT fields
							 | 
						|
								         */
							 | 
						|
								        public static function GetSelectFields(QQueryBuilder $objBuilder, $strPrefix = null) {
							 | 
						|
								            if ($strPrefix) {
							 | 
						|
								                $strTableName = $strPrefix;
							 | 
						|
								                $strAliasPrefix = $strPrefix . '__';
							 | 
						|
								            } else {
							 | 
						|
								                $strTableName = 'shipping_rate';
							 | 
						|
								                $strAliasPrefix = '';
							 | 
						|
								            }
							 | 
						|
								
							 | 
						|
								            $objBuilder->AddSelectItem($strTableName, 'id', $strAliasPrefix . 'id');
							 | 
						|
								            $objBuilder->AddSelectItem($strTableName, 'creation_date', $strAliasPrefix . 'creation_date');
							 | 
						|
								            $objBuilder->AddSelectItem($strTableName, 'rate', $strAliasPrefix . 'rate');
							 | 
						|
								            $objBuilder->AddSelectItem($strTableName, 'zone_id', $strAliasPrefix . 'zone_id');
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								        ///////////////////////////////
							 | 
						|
								        // INSTANTIATION-RELATED METHODS
							 | 
						|
								        ///////////////////////////////
							 | 
						|
								
							 | 
						|
								        /**
							 | 
						|
								         * Instantiate a ShippingRate from a Database Row.
							 | 
						|
								         * Takes in an optional strAliasPrefix, used in case another Object::InstantiateDbRow
							 | 
						|
								         * is calling this ShippingRate::InstantiateDbRow in order to perform
							 | 
						|
								         * early binding on referenced objects.
							 | 
						|
								         * @param DatabaseRowBase $objDbRow
							 | 
						|
								         * @param string $strAliasPrefix
							 | 
						|
								         * @param string $strExpandAsArrayNodes
							 | 
						|
								         * @param QBaseClass $objPreviousItem
							 | 
						|
								         * @param string[] $strColumnAliasArray
							 | 
						|
								         * @return ShippingRate
							 | 
						|
								        */
							 | 
						|
								        public static function InstantiateDbRow($objDbRow, $strAliasPrefix = null, $strExpandAsArrayNodes = null, $objPreviousItem = null, $strColumnAliasArray = array()) {
							 | 
						|
								            // If blank row, return null
							 | 
						|
								            if (!$objDbRow)
							 | 
						|
								                return null;
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								            // Create a new instance of the ShippingRate object
							 | 
						|
								            $objToReturn = new ShippingRate();
							 | 
						|
								            $objToReturn->__blnRestored = true;
							 | 
						|
								
							 | 
						|
								            $strAliasName = array_key_exists($strAliasPrefix . 'id', $strColumnAliasArray) ? $strColumnAliasArray[$strAliasPrefix . 'id'] : $strAliasPrefix . 'id';
							 | 
						|
								            $objToReturn->intId = $objDbRow->GetColumn($strAliasName, 'Integer');
							 | 
						|
								            $strAliasName = array_key_exists($strAliasPrefix . 'creation_date', $strColumnAliasArray) ? $strColumnAliasArray[$strAliasPrefix . 'creation_date'] : $strAliasPrefix . 'creation_date';
							 | 
						|
								            $objToReturn->strCreationDate = $objDbRow->GetColumn($strAliasName, 'VarChar');
							 | 
						|
								            $strAliasName = array_key_exists($strAliasPrefix . 'rate', $strColumnAliasArray) ? $strColumnAliasArray[$strAliasPrefix . 'rate'] : $strAliasPrefix . 'rate';
							 | 
						|
								            $objToReturn->fltRate = $objDbRow->GetColumn($strAliasName, 'Float');
							 | 
						|
								            $strAliasName = array_key_exists($strAliasPrefix . 'zone_id', $strColumnAliasArray) ? $strColumnAliasArray[$strAliasPrefix . 'zone_id'] : $strAliasPrefix . 'zone_id';
							 | 
						|
								            $objToReturn->intZoneId = $objDbRow->GetColumn($strAliasName, 'Integer');
							 | 
						|
								
							 | 
						|
								            // Instantiate Virtual Attributes
							 | 
						|
								            foreach ($objDbRow->GetColumnNameArray() as $strColumnName => $mixValue) {
							 | 
						|
								                $strVirtualPrefix = $strAliasPrefix . '__';
							 | 
						|
								                $strVirtualPrefixLength = strlen($strVirtualPrefix);
							 | 
						|
								                if (substr($strColumnName, 0, $strVirtualPrefixLength) == $strVirtualPrefix)
							 | 
						|
								                    $objToReturn->__strVirtualAttributeArray[substr($strColumnName, $strVirtualPrefixLength)] = $mixValue;
							 | 
						|
								            }
							 | 
						|
								
							 | 
						|
								            // Prepare to Check for Early/Virtual Binding
							 | 
						|
								            if (!$strAliasPrefix)
							 | 
						|
								                $strAliasPrefix = 'shipping_rate__';
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								            return $objToReturn;
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        /**
							 | 
						|
								         * Instantiate an array of ShippingRates from a Database Result
							 | 
						|
								         * @param DatabaseResultBase $objDbResult
							 | 
						|
								         * @param string $strExpandAsArrayNodes
							 | 
						|
								         * @param string[] $strColumnAliasArray
							 | 
						|
								         * @return ShippingRate[]
							 | 
						|
								         */
							 | 
						|
								        public static function InstantiateDbResult(QDatabaseResultBase $objDbResult, $strExpandAsArrayNodes = null, $strColumnAliasArray = null) {
							 | 
						|
								            $objToReturn = array();
							 | 
						|
								            
							 | 
						|
								            if (!$strColumnAliasArray)
							 | 
						|
								                $strColumnAliasArray = array();
							 | 
						|
								
							 | 
						|
								            // If blank resultset, then return empty array
							 | 
						|
								            if (!$objDbResult)
							 | 
						|
								                return $objToReturn;
							 | 
						|
								
							 | 
						|
								            // Load up the return array with each row
							 | 
						|
								            if ($strExpandAsArrayNodes) {
							 | 
						|
								                $objLastRowItem = null;
							 | 
						|
								                while ($objDbRow = $objDbResult->GetNextRow()) {
							 | 
						|
								                    $objItem = ShippingRate::InstantiateDbRow($objDbRow, null, $strExpandAsArrayNodes, $objLastRowItem, $strColumnAliasArray);
							 | 
						|
								                    if ($objItem) {
							 | 
						|
								                        $objToReturn[] = $objItem;
							 | 
						|
								                        $objLastRowItem = $objItem;
							 | 
						|
								                    }
							 | 
						|
								                }
							 | 
						|
								            } else {
							 | 
						|
								                while ($objDbRow = $objDbResult->GetNextRow())
							 | 
						|
								                    $objToReturn[] = ShippingRate::InstantiateDbRow($objDbRow, null, null, null, $strColumnAliasArray);
							 | 
						|
								            }
							 | 
						|
								
							 | 
						|
								            return $objToReturn;
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								        ///////////////////////////////////////////////////
							 | 
						|
								        // INDEX-BASED LOAD METHODS (Single Load and Array)
							 | 
						|
								        ///////////////////////////////////////////////////
							 | 
						|
								            
							 | 
						|
								        /**
							 | 
						|
								         * Load a single ShippingRate object,
							 | 
						|
								         * by Id Index(es)
							 | 
						|
								         * @param integer $intId
							 | 
						|
								         * @return ShippingRate
							 | 
						|
								        */
							 | 
						|
								        public static function LoadById($intId) {
							 | 
						|
								            return ShippingRate::QuerySingle(
							 | 
						|
								                QQ::Equal(QQN::ShippingRate()->Id, $intId)
							 | 
						|
								            );
							 | 
						|
								        }
							 | 
						|
								            
							 | 
						|
								        /**
							 | 
						|
								         * Load a single ShippingRate object,
							 | 
						|
								         * by ZoneId Index(es)
							 | 
						|
								         * @param integer $intZoneId
							 | 
						|
								         * @return ShippingRate
							 | 
						|
								        */
							 | 
						|
								        public static function LoadByZoneId($intZoneId) {
							 | 
						|
								            return ShippingRate::QuerySingle(
							 | 
						|
								                QQ::Equal(QQN::ShippingRate()->ZoneId, $intZoneId)
							 | 
						|
								            );
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								        ////////////////////////////////////////////////////
							 | 
						|
								        // INDEX-BASED LOAD METHODS (Array via Many to Many)
							 | 
						|
								        ////////////////////////////////////////////////////
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								        //////////////////////////
							 | 
						|
								        // SAVE, DELETE AND RELOAD
							 | 
						|
								        //////////////////////////
							 | 
						|
								
							 | 
						|
								        /**
							 | 
						|
								         * Save this ShippingRate
							 | 
						|
								         * @param bool $blnForceInsert
							 | 
						|
								         * @param bool $blnForceUpdate
							 | 
						|
								         * @return int
							 | 
						|
								         */
							 | 
						|
								        public function Save($blnForceInsert = false, $blnForceUpdate = false) {
							 | 
						|
								            // Get the Database Object for this Class
							 | 
						|
								            $objDatabase = ShippingRate::GetDatabase();
							 | 
						|
								
							 | 
						|
								            $mixToReturn = null;
							 | 
						|
								
							 | 
						|
								            try {
							 | 
						|
								                if ((!$this->__blnRestored) || ($blnForceInsert)) {
							 | 
						|
								                    // Perform an INSERT query
							 | 
						|
								                    $objDatabase->NonQuery('
							 | 
						|
								                        INSERT INTO `shipping_rate` (
							 | 
						|
								                            `rate`,
							 | 
						|
								                            `zone_id`
							 | 
						|
								                        ) VALUES (
							 | 
						|
								                            ' . $objDatabase->SqlVariable($this->fltRate) . ',
							 | 
						|
								                            ' . $objDatabase->SqlVariable($this->intZoneId) . '
							 | 
						|
								                        )
							 | 
						|
								                    ');
							 | 
						|
								
							 | 
						|
								                    // Update Identity column and return its value
							 | 
						|
								                    $mixToReturn = $this->intId = $objDatabase->InsertId('shipping_rate', 'id');
							 | 
						|
								                } else {
							 | 
						|
								                    // Perform an UPDATE query
							 | 
						|
								
							 | 
						|
								                    // First checking for Optimistic Locking constraints (if applicable)
							 | 
						|
								                    if (!$blnForceUpdate) {
							 | 
						|
								                        // Perform the Optimistic Locking check
							 | 
						|
								                        $objResult = $objDatabase->Query('
							 | 
						|
								                            SELECT
							 | 
						|
								                                `creation_date`
							 | 
						|
								                            FROM
							 | 
						|
								                                `shipping_rate`
							 | 
						|
								                            WHERE
							 | 
						|
								                                `id` = ' . $objDatabase->SqlVariable($this->intId) . '
							 | 
						|
								                        ');
							 | 
						|
								                        
							 | 
						|
								                        $objRow = $objResult->FetchArray();
							 | 
						|
								                        if ($objRow[0] != $this->strCreationDate)
							 | 
						|
								                            throw new QOptimisticLockingException('ShippingRate');
							 | 
						|
								                    }
							 | 
						|
								
							 | 
						|
								                    // Perform the UPDATE query
							 | 
						|
								                    $objDatabase->NonQuery('
							 | 
						|
								                        UPDATE
							 | 
						|
								                            `shipping_rate`
							 | 
						|
								                        SET
							 | 
						|
								                            `rate` = ' . $objDatabase->SqlVariable($this->fltRate) . ',
							 | 
						|
								                            `zone_id` = ' . $objDatabase->SqlVariable($this->intZoneId) . '
							 | 
						|
								                        WHERE
							 | 
						|
								                            `id` = ' . $objDatabase->SqlVariable($this->intId) . '
							 | 
						|
								                    ');
							 | 
						|
								                }
							 | 
						|
								
							 | 
						|
								            } catch (QCallerException $objExc) {
							 | 
						|
								                $objExc->IncrementOffset();
							 | 
						|
								                throw $objExc;
							 | 
						|
								            }
							 | 
						|
								
							 | 
						|
								            // Update __blnRestored and any Non-Identity PK Columns (if applicable)
							 | 
						|
								            $this->__blnRestored = true;
							 | 
						|
								
							 | 
						|
								            // Update Local Timestamp
							 | 
						|
								            $objResult = $objDatabase->Query('
							 | 
						|
								                SELECT
							 | 
						|
								                    `creation_date`
							 | 
						|
								                FROM
							 | 
						|
								                    `shipping_rate`
							 | 
						|
								                WHERE
							 | 
						|
								                    `id` = ' . $objDatabase->SqlVariable($this->intId) . '
							 | 
						|
								            ');
							 | 
						|
								                        
							 | 
						|
								            $objRow = $objResult->FetchArray();
							 | 
						|
								            $this->strCreationDate = $objRow[0];
							 | 
						|
								
							 | 
						|
								            // Return 
							 | 
						|
								            return $mixToReturn;
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        /**
							 | 
						|
								         * Delete this ShippingRate
							 | 
						|
								         * @return void
							 | 
						|
								         */
							 | 
						|
								        public function Delete() {
							 | 
						|
								            if ((is_null($this->intId)))
							 | 
						|
								                throw new QUndefinedPrimaryKeyException('Cannot delete this ShippingRate with an unset primary key.');
							 | 
						|
								
							 | 
						|
								            // Get the Database Object for this Class
							 | 
						|
								            $objDatabase = ShippingRate::GetDatabase();
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								            // Perform the SQL Query
							 | 
						|
								            $objDatabase->NonQuery('
							 | 
						|
								                DELETE FROM
							 | 
						|
								                    `shipping_rate`
							 | 
						|
								                WHERE
							 | 
						|
								                    `id` = ' . $objDatabase->SqlVariable($this->intId) . '');
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        /**
							 | 
						|
								         * Delete all ShippingRates
							 | 
						|
								         * @return void
							 | 
						|
								         */
							 | 
						|
								        public static function DeleteAll() {
							 | 
						|
								            // Get the Database Object for this Class
							 | 
						|
								            $objDatabase = ShippingRate::GetDatabase();
							 | 
						|
								
							 | 
						|
								            // Perform the Query
							 | 
						|
								            $objDatabase->NonQuery('
							 | 
						|
								                DELETE FROM
							 | 
						|
								                    `shipping_rate`');
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        /**
							 | 
						|
								         * Truncate shipping_rate table
							 | 
						|
								         * @return void
							 | 
						|
								         */
							 | 
						|
								        public static function Truncate() {
							 | 
						|
								            // Get the Database Object for this Class
							 | 
						|
								            $objDatabase = ShippingRate::GetDatabase();
							 | 
						|
								
							 | 
						|
								            // Perform the Query
							 | 
						|
								            $objDatabase->NonQuery('
							 | 
						|
								                TRUNCATE `shipping_rate`');
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        /**
							 | 
						|
								         * Reload this ShippingRate from the database.
							 | 
						|
								         * @return void
							 | 
						|
								         */
							 | 
						|
								        public function Reload() {
							 | 
						|
								            // Make sure we are actually Restored from the database
							 | 
						|
								            if (!$this->__blnRestored)
							 | 
						|
								                throw new QCallerException('Cannot call Reload() on a new, unsaved ShippingRate object.');
							 | 
						|
								
							 | 
						|
								            // Reload the Object
							 | 
						|
								            $objReloaded = ShippingRate::Load($this->intId);
							 | 
						|
								
							 | 
						|
								            // Update $this's local variables to match
							 | 
						|
								            $this->strCreationDate = $objReloaded->strCreationDate;
							 | 
						|
								            $this->fltRate = $objReloaded->fltRate;
							 | 
						|
								            $this->ZoneId = $objReloaded->ZoneId;
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								        ////////////////////
							 | 
						|
								        // GETTORS AND SETTORS
							 | 
						|
								        ////////////////////
							 | 
						|
								
							 | 
						|
								        /**
							 | 
						|
								         * Lookup a VirtualAttribute value (if applicable).  Returns NULL if none found.
							 | 
						|
								         * @param string $strName
							 | 
						|
								         * @return string
							 | 
						|
								         */
							 | 
						|
								        public function GetVirtualAttribute($strName)
							 | 
						|
								        {
							 | 
						|
								            if (array_key_exists($strName, $this->__strVirtualAttributeArray))
							 | 
						|
								                return $this->__strVirtualAttributeArray[$strName];
							 | 
						|
								            return null;
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								                /**
							 | 
						|
								         * Override method to perform a property "Get"
							 | 
						|
								         * This will get the value of $strName
							 | 
						|
								         *
							 | 
						|
								         * @param string $strName Name of the property to get
							 | 
						|
								         * @return mixed
							 | 
						|
								         */
							 | 
						|
								        public function __get($strName)
							 | 
						|
								        {
							 | 
						|
								            switch ($strName)
							 | 
						|
								            {
							 | 
						|
								                ///////////////////
							 | 
						|
								                // Member Variables
							 | 
						|
								                ///////////////////
							 | 
						|
								                case 'Id':
							 | 
						|
								                    /**
							 | 
						|
								                     * Gets the value for intId (Read-Only PK)
							 | 
						|
								                     * @return integer
							 | 
						|
								                     */
							 | 
						|
								                    return $this->intId;
							 | 
						|
								
							 | 
						|
								                case 'CreationDate':
							 | 
						|
								                    /**
							 | 
						|
								                     * Gets the value for strCreationDate (Read-Only Timestamp)
							 | 
						|
								                     * @return string
							 | 
						|
								                     */
							 | 
						|
								                    return $this->strCreationDate;
							 | 
						|
								
							 | 
						|
								                case 'Rate':
							 | 
						|
								                    /**
							 | 
						|
								                     * Gets the value for fltRate (Not Null)
							 | 
						|
								                     * @return double
							 | 
						|
								                     */
							 | 
						|
								                    return $this->fltRate;
							 | 
						|
								
							 | 
						|
								                case 'ZoneId':
							 | 
						|
								                    /**
							 | 
						|
								                     * Gets the value for intZoneId (Unique)
							 | 
						|
								                     * @return integer
							 | 
						|
								                     */
							 | 
						|
								                    return $this->intZoneId;
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								                ///////////////////
							 | 
						|
								                // Member Objects
							 | 
						|
								                ///////////////////
							 | 
						|
								
							 | 
						|
								                ////////////////////////////
							 | 
						|
								                // Virtual Object References (Many to Many and Reverse References)
							 | 
						|
								                // (If restored via a "Many-to" expansion)
							 | 
						|
								                ////////////////////////////
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								                case '__Restored':
							 | 
						|
								                    return $this->__blnRestored;
							 | 
						|
								
							 | 
						|
								                default:
							 | 
						|
								                    try {
							 | 
						|
								                        return parent::__get($strName);
							 | 
						|
								                    } catch (QCallerException $objExc) {
							 | 
						|
								                        $objExc->IncrementOffset();
							 | 
						|
								                        throw $objExc;
							 | 
						|
								                    }
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								                /**
							 | 
						|
								         * Override method to perform a property "Set"
							 | 
						|
								         * This will set the property $strName to be $mixValue
							 | 
						|
								         *
							 | 
						|
								         * @param string $strName Name of the property to set
							 | 
						|
								         * @param string $mixValue New value of the property
							 | 
						|
								         * @return mixed
							 | 
						|
								         */
							 | 
						|
								        public function __set($strName, $mixValue) {
							 | 
						|
								            switch ($strName) {
							 | 
						|
								                ///////////////////
							 | 
						|
								                // Member Variables
							 | 
						|
								                ///////////////////
							 | 
						|
								                case 'Rate':
							 | 
						|
								                    /**
							 | 
						|
								                     * Sets the value for fltRate (Not Null)
							 | 
						|
								                     * @param double $mixValue
							 | 
						|
								                     * @return double
							 | 
						|
								                     */
							 | 
						|
								                    try {
							 | 
						|
								                        return ($this->fltRate = QType::Cast($mixValue, QType::Float));
							 | 
						|
								                    } catch (QCallerException $objExc) {
							 | 
						|
								                        $objExc->IncrementOffset();
							 | 
						|
								                        throw $objExc;
							 | 
						|
								                    }
							 | 
						|
								
							 | 
						|
								                case 'ZoneId':
							 | 
						|
								                    /**
							 | 
						|
								                     * Sets the value for intZoneId (Unique)
							 | 
						|
								                     * @param integer $mixValue
							 | 
						|
								                     * @return integer
							 | 
						|
								                     */
							 | 
						|
								                    try {
							 | 
						|
								                        return ($this->intZoneId = QType::Cast($mixValue, QType::Integer));
							 | 
						|
								                    } catch (QCallerException $objExc) {
							 | 
						|
								                        $objExc->IncrementOffset();
							 | 
						|
								                        throw $objExc;
							 | 
						|
								                    }
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								                ///////////////////
							 | 
						|
								                // Member Objects
							 | 
						|
								                ///////////////////
							 | 
						|
								                default:
							 | 
						|
								                    try {
							 | 
						|
								                        return parent::__set($strName, $mixValue);
							 | 
						|
								                    } catch (QCallerException $objExc) {
							 | 
						|
								                        $objExc->IncrementOffset();
							 | 
						|
								                        throw $objExc;
							 | 
						|
								                    }
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        ///////////////////////////////
							 | 
						|
								        // ASSOCIATED OBJECTS' METHODS
							 | 
						|
								        ///////////////////////////////
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /////////////////////////////////////
							 | 
						|
								    // ADDITIONAL CLASSES for QCODO QUERY
							 | 
						|
								    /////////////////////////////////////
							 | 
						|
								
							 | 
						|
								    class QQNodeShippingRate extends QQNode {
							 | 
						|
								        protected $strTableName = 'shipping_rate';
							 | 
						|
								        protected $strPrimaryKey = 'id';
							 | 
						|
								        protected $strClassName = 'ShippingRate';
							 | 
						|
								        public function __get($strName) {
							 | 
						|
								            switch ($strName) {
							 | 
						|
								                case 'Id':
							 | 
						|
								                    return new QQNode('id', 'Id', 'integer', $this);
							 | 
						|
								                case 'CreationDate':
							 | 
						|
								                    return new QQNode('creation_date', 'CreationDate', 'string', $this);
							 | 
						|
								                case 'Rate':
							 | 
						|
								                    return new QQNode('rate', 'Rate', 'double', $this);
							 | 
						|
								                case 'ZoneId':
							 | 
						|
								                    return new QQNode('zone_id', 'ZoneId', 'integer', $this);
							 | 
						|
								
							 | 
						|
								                case '_PrimaryKeyNode':
							 | 
						|
								                    return new QQNode('id', 'Id', 'integer', $this);
							 | 
						|
								                default:
							 | 
						|
								                    try {
							 | 
						|
								                        return parent::__get($strName);
							 | 
						|
								                    } catch (QCallerException $objExc) {
							 | 
						|
								                        $objExc->IncrementOffset();
							 | 
						|
								                        throw $objExc;
							 | 
						|
								                    }
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    class QQReverseReferenceNodeShippingRate extends QQReverseReferenceNode {
							 | 
						|
								        protected $strTableName = 'shipping_rate';
							 | 
						|
								        protected $strPrimaryKey = 'id';
							 | 
						|
								        protected $strClassName = 'ShippingRate';
							 | 
						|
								        public function __get($strName) {
							 | 
						|
								            switch ($strName) {
							 | 
						|
								                case 'Id':
							 | 
						|
								                    return new QQNode('id', 'Id', 'integer', $this);
							 | 
						|
								                case 'CreationDate':
							 | 
						|
								                    return new QQNode('creation_date', 'CreationDate', 'string', $this);
							 | 
						|
								                case 'Rate':
							 | 
						|
								                    return new QQNode('rate', 'Rate', 'double', $this);
							 | 
						|
								                case 'ZoneId':
							 | 
						|
								                    return new QQNode('zone_id', 'ZoneId', 'integer', $this);
							 | 
						|
								
							 | 
						|
								                case '_PrimaryKeyNode':
							 | 
						|
								                    return new QQNode('id', 'Id', 'integer', $this);
							 | 
						|
								                default:
							 | 
						|
								                    try {
							 | 
						|
								                        return parent::__get($strName);
							 | 
						|
								                    } catch (QCallerException $objExc) {
							 | 
						|
								                        $objExc->IncrementOffset();
							 | 
						|
								                        throw $objExc;
							 | 
						|
								                    }
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								?>
							 |