function __construct()
 {
     parent::__construct();
 }
 function cloneCProgram($lCProgSourceID, $lCProgDestID)
 {
     //---------------------------------------------------------------------
     //
     //---------------------------------------------------------------------
     $cdest = new muser_fields_create();
     $ccpSource = new mcprograms();
     $ccpDest = new mcprograms();
     $ccpSource->loadClientProgramsViaCPID($lCProgSourceID);
     $cpSource =& $ccpSource->cprogs[0];
     $ccpDest->loadClientProgramsViaCPID($lCProgDestID);
     $cpDest =& $ccpDest->cprogs[0];
     $lETableSrcID = $cpSource->lEnrollmentTableID;
     $lATableSrcID = $cpSource->lAttendanceTableID;
     $lETableDestID = $cpDest->lEnrollmentTableID;
     $lATableDestID = $cpDest->lAttendanceTableID;
     // clone the enrollment table
     $attr = new stdClass();
     $attr->lSrcTableID = $lETableSrcID;
     $attr->lDestTableID = $lETableDestID;
     $this->cloneUTable($attr);
     // clone the attendance table; first remove the new
     // activity DDL field (it will be cloned appropriately)
     $cdest->loadSingleField($cpDest->lActivityFieldID);
     $cdest->strENPTableName = $cpDest->strAttendanceTable;
     $cdest->removeField();
     $attr->lSrcTableID = $lATableSrcID;
     $attr->lDestTableID = $lATableDestID;
     $this->cloneUTable($attr);
     //--------------------------------------------------
     // now identify the new activity ddl, and set
     // that field name in the parent Client Program
     // record
     //--------------------------------------------------
     // this is a bit kludgy - the activity field will be
     // the first ddl field in the attendance table
     //--------------------------------------------------
     $sqlStr = "SELECT pff_lKeyID\n         FROM uf_fields\n         WHERE pff_lTableID={$lATableDestID}\n            AND pff_enumFieldType='DDL'\n         ORDER BY pff_lKeyID\n         LIMIT 0,1;";
     $query = $this->db->query($sqlStr);
     if ($query->num_rows() != 1) {
         screamForHelp($lATableDestID . ': Attendance table clone failure: unable to detect the activity DDL in cloned table<br>error on line  <b> -- ' . __LINE__ . ' --</b>,<br>file ' . __FILE__ . ',<br>function ' . __FUNCTION__);
     }
     $row = $query->row();
     $lActivityFieldID = (int) $row->pff_lKeyID;
     $sqlStr = "UPDATE cprograms\n         SET cp_lActivityFieldID={$lActivityFieldID}\n         WHERE cp_lKeyID={$lCProgDestID};";
     $query = $this->db->query($sqlStr);
 }
 function loadAttendance(&$lNumARecs, &$aTableRecs)
 {
     //---------------------------------------------------------------------
     //
     //---------------------------------------------------------------------
     global $setAFieldFun, $loadAFieldFun;
     $ccprog = new mcprograms();
     $lNumARecs = 0;
     $aTableRecs = array();
     // load aTable default fields
     $setAFieldFun($this, $this->lAttendanceTableID);
     $this->setSingleField($this->lAttendanceTableID, 'lActivityDDL', 'Activity', $this->afields);
     $this->cschema->aTableFieldInfo($this->afields, $this->atable->strFieldPrefix);
     $strSelect = $this->strSelectsViaFields($this->afields);
     if ($this->sqlOrderATable == '') {
         $strOrder = ' ' . $this->strATableFNPrefix . '_dteAttendance, ' . $this->strATableFNPrefix . '_lKeyID ';
     } else {
         $strOrder = $this->sqlOrderATable;
     }
     $ccprog->buildCProgDDLSql($this->afields, $strDDLInner, $strDDLSelect, $lCntDDLFields, $ddlConsolidated);
     if ($strDDLSelect != '') {
         $strDDLSelect = ', ' . $strDDLSelect;
     }
     $sqlStr = "SELECT\n            {$strSelect}\n            {$strDDLSelect},\n\n            " . $this->strATableFNPrefix . "_lOriginID, " . $this->strATableFNPrefix . "_lLastUpdateID,\n\n            UNIX_TIMESTAMP(" . $this->strATableFNPrefix . "_dteOrigin)     AS dteOrigin,\n            UNIX_TIMESTAMP(" . $this->strATableFNPrefix . "_dteLastUpdate) AS dteLastUpdate,\n            uc.us_strFirstName AS strUCFName, uc.us_strLastName AS strUCLName,\n            ul.us_strFirstName AS strULFName, ul.us_strLastName AS strULLName\n\n         FROM {$this->strAttendanceTable}\n            {$strDDLInner}\n            INNER JOIN admin_users   AS uc ON uc.us_lKeyID=" . $this->strATableFNPrefix . "_lOriginID\n            INNER JOIN admin_users   AS ul ON ul.us_lKeyID=" . $this->strATableFNPrefix . "_lLastUpdateID\n\n         WHERE NOT " . $this->strATableFNPrefix . "_bRetired {$this->sqlWhereATable}\n         ORDER BY {$strOrder}";
     $query = $this->db->query($sqlStr);
     $lNumARecs = $query->num_rows();
     if ($lNumARecs > 0) {
         $idx = 0;
         foreach ($query->result() as $row) {
             $aTableRecs[$idx] = new stdClass();
             $arec =& $aTableRecs[$idx];
             $arec->lActivityDDL = (int) $row->lActivityDDL;
             $arec->lKeyID = (int) $row->lKeyID;
             $arec->lClient = (int) $row->lForeignKey;
             $arec->bRetired = (bool) $row->bRetired;
             $arec->lEnrollID = (int) $row->lEnrollID;
             $arec->dteMysqlAttendance = $row->dteAttendance;
             $arec->dteAttendance = dteMySQLDate2Unix($arec->dteMysqlAttendance);
             $arec->dDuration = (double) $row->dDuration;
             $arec->strCaseNotes = $row->strCaseNotes;
             $arec->lOriginID = (int) $row->lOriginID;
             $arec->lLastUpdateID = (int) $row->lLastUpdateID;
             $arec->dteOrigin = (int) $row->dteOrigin;
             $arec->dteLastUpdate = (int) $row->dteLastUpdate;
             $arec->ucstrFName = $row->strUCFName;
             $arec->ucstrLName = $row->strUCLName;
             $arec->ulstrFName = $row->strULFName;
             $arec->ulstrLName = $row->strULLName;
             // load the ddl values
             if ($lCntDDLFields > 0) {
                 foreach ($ddlConsolidated as $d) {
                     $strFN = $d->strFieldNameUser;
                     $arec->{$strFN} = $row->{$strFN};
                 }
             }
             // custom attendance fields
             $loadAFieldFun($arec, $row);
             ++$idx;
         }
     }
 }