public function loadGiftHistory($lPID, $enumSortType, $lACOID, &$clsACO, &$lNumGiftsGH, &$giftHistory)
 {
     //---------------------------------------------------------------------
     // $enumSortType - date, giftID, name, amount, acctCamp
     //---------------------------------------------------------------------
     $cPeople = new mpeople();
     $bBiz = $cPeople->bBizRec($lPID);
     $clsHonMem = new mhon_mem();
     $clsACO->loadCountries(false, false, true, $lACOID);
     $strFlag = $clsACO->countries[0]->strFlagImg;
     $strCurSymbol = $clsACO->countries[0]->strCurrencySymbol;
     $strCountry = $clsACO->countries[0]->strName;
     $strTableName = 'tmpGift';
     $this->createTempGiftTable($strTableName);
     //-------------------------------------------
     // straight donations/sponsorship payments
     //-------------------------------------------
     $sqlStr = "INSERT INTO {$strTableName} (tgi_lGiftID, tgi_lPID)\n             SELECT gi_lKeyID, gi_lForeignID\n             FROM gifts\n             WHERE gi_lForeignID={$lPID}\n                AND gi_lACOID={$lACOID}\n                AND NOT gi_bRetired;";
     $this->db->query($sqlStr);
     //-------------------------------------------
     // soft donations/sponsorship payments
     //-------------------------------------------
     $sqlStr = "INSERT INTO {$strTableName} (tgi_lGiftID, tgi_lPID)\n             SELECT gi_lKeyID, gi_lForeignID\n             FROM gifts\n                INNER JOIN people_relationships ON pr_lPerson_A_ID=gi_lForeignID\n             WHERE pr_lPerson_B_ID={$lPID}\n                AND gi_lACOID={$lACOID}\n                AND pr_bSoftDonations\n                AND NOT gi_bRetired;";
     $this->db->query($sqlStr);
     //-------------------------------------------
     // people-to-business soft cash relationships
     //-------------------------------------------
     if ($bBiz) {
         $sqlStr = "INSERT INTO {$strTableName} (tgi_lGiftID, tgi_lPID)\n               SELECT gi_lKeyID, gi_lForeignID\n               FROM gifts\n               INNER JOIN biz_contacts ON bc_lContactID=gi_lForeignID\n               WHERE bc_lBizID={$lPID}\n                  AND bc_bSoftCash\n                  AND gi_lACOID={$lACOID}\n                  AND NOT bc_bRetired\n                  AND NOT gi_bRetired;";
     } else {
         $sqlStr = "INSERT INTO {$strTableName} (tgi_lGiftID, tgi_lPID)\n               SELECT gi_lKeyID, gi_lForeignID\n               FROM gifts\n                  INNER JOIN biz_contacts ON bc_lBizID=gi_lForeignID\n               WHERE bc_lContactID={$lPID}\n                  AND bc_bSoftCash\n                  AND gi_lACOID={$lACOID}\n                  AND NOT bc_bRetired\n                  AND NOT gi_bRetired;";
     }
     $this->db->query($sqlStr);
     if ($this->bDebug) {
         $this->dumpTempTable($strTableName);
     }
     //-------------------------
     // set the sort order
     //-------------------------
     $strSort = $this->strSetSortOrder($enumSortType);
     $sqlStr = "SELECT\n            gi_lKeyID, gi_lForeignID, gi_lSponsorID,\n            gi_curAmnt, gi_dteDonation, \n            gi_bHon, gi_bMem, gi_lACOID,\n            pe_lKeyID, pe_bBiz, pe_strFName, pe_strLName,\n            gc_lKeyID, gc_strCampaign, gi_bGIK, lgen_strListItem AS strGIK,\n            ga_lKeyID, ga_strAccount\n\n         FROM {$strTableName}\n            INNER JOIN gifts           ON gi_lKeyID  = tgi_lGiftID\n            INNER JOIN gifts_campaigns ON gi_lCampID = gc_lKeyID\n            INNER JOIN gifts_accounts  ON gc_lAcctID = ga_lKeyID\n            INNER JOIN people_names    ON pe_lKeyID  = gi_lForeignID\n            LEFT  JOIN lists_generic   ON gi_lGIK_ID = lgen_lKeyID\n\n         ORDER BY {$strSort};";
     $query = $this->db->query($sqlStr);
     $lNumGiftsGH = $numRows = $query->num_rows();
     $giftHistory = array();
     if ($lNumGiftsGH > 0) {
         $idx = 0;
         foreach ($query->result() as $row) {
             $giftHistory[$idx] = new stdClass();
             $giftHistory[$idx]->gi_lKeyID = $lGiftID = $row->gi_lKeyID;
             $giftHistory[$idx]->gi_lForeignID = $row->gi_lForeignID;
             $giftHistory[$idx]->gi_lSponsorID = $row->gi_lSponsorID;
             $giftHistory[$idx]->gi_curAmnt = $row->gi_curAmnt;
             $giftHistory[$idx]->gi_dteDonation = dteMySQLDate2Unix($row->gi_dteDonation);
             $giftHistory[$idx]->gi_bGIK = $row->gi_bGIK;
             $giftHistory[$idx]->strGIK = $row->strGIK;
             $giftHistory[$idx]->pe_lKeyID = $row->pe_lKeyID;
             $giftHistory[$idx]->pe_bBiz = $row->pe_bBiz;
             $giftHistory[$idx]->pe_strFName = $row->pe_strFName;
             $giftHistory[$idx]->pe_strLName = $row->pe_strLName;
             $giftHistory[$idx]->gc_lKeyID = $row->gc_lKeyID;
             $giftHistory[$idx]->gc_strCampaign = $row->gc_strCampaign;
             $giftHistory[$idx]->ga_lKeyID = $row->ga_lKeyID;
             $giftHistory[$idx]->ga_strAccount = $row->ga_strAccount;
             $giftHistory[$idx]->bHon = $clsHonMem->lNumHonViaGID($lGiftID) > 0;
             $giftHistory[$idx]->bMem = $clsHonMem->lNumMemViaGID($lGiftID) > 0;
             $giftHistory[$idx]->lACOID = $lACOID;
             $giftHistory[$idx]->strACOFlag = $strFlag;
             $giftHistory[$idx]->strACOCurSymbol = $strCurSymbol;
             $giftHistory[$idx]->strACOCountry = $strCountry;
             ++$idx;
         }
     }
     $this->dropTempGiftTable($strTableName);
 }