public function cloneTable($lTableID)
 {
     //-------------------------------------------------------------------------
     //
     //-------------------------------------------------------------------------
     global $glUserID;
     if (!bTestForURLHack('adminOnly')) {
         return;
     }
     $this->load->helper('dl_util/verify_id');
     if (!vid_bUserTableIDExists($this, $lTableID, $enumType)) {
         vid_bTestFail($this, false, 'user table ID', $lTableID);
     }
     //-------------------------
     // models & helpers
     //-------------------------
     $this->load->model('personalization/muser_fields', 'clsUF');
     $this->load->model('personalization/muser_fields_create', 'clsUFC');
     $this->load->model('personalization/muser_clone', 'cUFClone');
     // most of the work is complete in the model muser_clone;
     // just need the gui to get the new table name, then create the new
     // table (probably can use the add/edit user table routine)
     echoT('Work in progress<br>');
 }
 function removeRecord($lTableID, $lFID, $lRecID)
 {
     //-------------------------------------------------------------------------
     //
     //-------------------------------------------------------------------------
     $this->load->helper('dl_util/verify_id');
     if (!vid_bUserTableIDExists($this, $lTableID, $enumTabType)) {
         vid_bTestFail($this, false, 'user table ID', $lTableID);
     }
     verifyIDsViaType($this, $enumTabType, $lFID, false);
     $lEnrollID = 0;
     //-------------------------
     // models & helpers
     //-------------------------
     $this->load->model('personalization/muser_fields', 'clsUF');
     $this->load->model('personalization/muser_fields_display', 'clsUFD');
     $this->load->model('admin/mpermissions', 'perms');
     $this->load->helper('clients/client_program');
     $this->clsUFD->lTableID = $lTableID;
     $this->clsUFD->loadTableViaTableID();
     $utable =& $this->clsUFD->userTables[0];
     $enumTType = $utable->enumTType;
     $bCProg = bTypeIsClientProg($enumTType);
     $bEnrollment = $enumTType == CENUM_CONTEXT_CPROGENROLL;
     // if deleting an enrollment record, we must also delete
     // any associated attendance records
     if ($bCProg) {
         $this->load->model('client_features/mcprograms', 'cprograms');
         if ($bEnrollment) {
             $this->cprograms->loadClientProgramsViaETableID($lTableID);
             $cprog =& $this->cprograms->cprogs[0];
             $strATable = $cprog->strAttendanceTable;
             $strATableFNPre = $cprog->strATableFNPrefix;
             $this->cprograms->deleteATableRecsViaEnrollRecID($strATable, $strATableFNPre, $lRecID);
         } else {
             // load the enrollment record to provide the proper return path
             $this->cprograms->loadClientProgramsViaATableID($lTableID);
             $cprog =& $this->cprograms->cprogs[0];
             $this->cprograms->loadBaseARecViaARecID($cprog, $lRecID, $lNumARecs, $arecs);
             $lEnrollID = $arecs[0]->lEnrollID;
         }
         $strTableLabel = 'An ' . ($bEnrollment ? 'enrollment' : 'attendance') . ' record was removed from client program <b>' . htmlspecialchars($cprog->strProgramName) . '</b>.';
     } else {
         $strTableLabel = 'The selected record was removed from ' . 'table <b>' . htmlspecialchars($utable->strUserTableName) . '</b>';
     }
     $this->clsUFD->removeMRRecord($lRecID);
     $this->session->set_flashdata('msg', $strTableLabel);
     redirect('admin/uf_multirecord_view/viewMRViaFID/' . $lTableID . '/' . $lFID . '/' . $lEnrollID);
 }
 function userAddEdit($lTableID, $lForeignID, $lEditFieldID)
 {
     //-----------------------------------------------------------------------------
     //
     //-----------------------------------------------------------------------------
     global $gbDateFormatUS;
     $this->load->helper('dl_util/verify_id');
     if (!vid_bUserTableIDExists($this, $lTableID, $enumTabType)) {
         vid_bTestFail($this, false, 'user table ID', $lTableID);
     }
     verifyIDsViaType($this, $enumTabType, $lForeignID, false);
     if (!is_numeric($lEditFieldID)) {
         vid_bTestFail($this, false, 'user field ID', $lEditFieldID);
     }
     $displayData = array();
     $displayData['lTableID'] = $lTableID = (int) $lTableID;
     $displayData['lForeignID'] = $lForeignID = (int) $lForeignID;
     $displayData['lEditFieldID'] = $lEditFieldID = (int) $lEditFieldID;
     //-----------------------
     // load table info
     //-----------------------
     $bEditMode = $lEditFieldID > 0;
     $this->load->model('personalization/muser_fields', 'clsUF');
     $this->load->model('personalization/muser_fields_display', 'clsUFD');
     $this->load->model('admin/mpermissions', 'perms');
     $this->load->library('util/dl_date_time', '', 'clsDateTime');
     $params = array('enumStyle' => 'enpRptC');
     $this->load->library('generic_rpt', $params);
     $this->load->model('admin/madmin_aco');
     $this->load->helper('dl_util/time_date');
     $this->load->helper('dl_util/context');
     $this->clsUFD->lTableID = $lTableID;
     $this->clsUFD->lForeignID = $lForeignID;
     $this->clsUFD->loadTableViaTableID();
     $enumTType = $this->clsUFD->userTables[0]->enumTType;
     loadSupportModels($enumTType, $lForeignID);
     // validation rules
     $this->form_validation->set_error_delimiters('<div class="formError">', '</div>');
     $this->form_validation->set_rules('txtxxxx');
     // dummy
     if ($bEditMode) {
         $this->clsUFD->loadSingleField($lEditFieldID);
         $enumFType = $this->clsUFD->fields[0]->enumFieldType;
         $strFName = 'var' . $lEditFieldID;
         if ($enumFType == CS_FT_DATE) {
             $this->form_validation->set_rules($strFName, 'Date Field', 'trim|callback_ufFieldVerifyDateValid');
         }
         if ($enumFType == CS_FT_INTEGER) {
             $this->form_validation->set_rules($strFName, 'Number Field', 'trim|required|callback_stripCommas|integer');
         }
         if ($enumFType == CS_FT_CURRENCY) {
             $this->form_validation->set_rules($strFName, 'Currency Field', 'trim|required|callback_stripCommas|numeric');
         }
     }
     if ($this->form_validation->run() == FALSE) {
         //------------------------------------------------------
         // set form validation based on field type being edited
         //------------------------------------------------------
         if ($bEditMode) {
             $this->load->helper('dl_util/web_layout');
         }
         $displayData['title'] = CS_PROGNAME . ' | Personalized Fields';
         $displayData['pageTitle'] = $this->clsUFD->strBreadcrumbsTableDisplay(0);
         $displayData['nav'] = $this->mnav_brain_jar->navData();
         $displayData['strTableDisplay'] = $this->clsUFD->strEditUserTableEntries($lEditFieldID);
         $displayData['strHTMLSummary'] = $this->clsUFD->strHTMLSummary;
         $displayData['mainTemplate'] = 'admin/user_table_add_edit_view';
         $this->load->vars($displayData);
         $this->load->view('template');
     } else {
         $this->clsUFD->loadSingleField($lEditFieldID);
         $enumType = $this->clsUFD->fields[0]->enumFieldType;
         $strFieldID = 'var' . $lEditFieldID;
         switch ($enumType) {
             case CS_FT_CHECKBOX:
                 $varUserVal = @$_POST[$strFieldID] == 'TRUE';
                 break;
             case CS_FT_DATE:
                 $varUserVal = trim($_POST[$strFieldID]);
                 if ($varUserVal == '') {
                     $varUserVal = ' null ';
                 } else {
                     MDY_ViaUserForm($varUserVal, $lMon, $lDay, $lYear, $gbDateFormatUS);
                     $varUserVal = ' "' . strMoDaYr2MySQLDate($lMon, $lDay, $lYear) . '" ';
                 }
                 break;
             case CS_FT_DATETIME:
                 break;
             case CS_FT_TEXTLONG:
             case CS_FT_TEXT255:
             case CS_FT_TEXT80:
             case CS_FT_TEXT20:
                 $varUserVal = trim($_POST[$strFieldID]);
                 break;
             case CS_FT_INTEGER:
                 $varUserVal = (int) $_POST[$strFieldID];
                 break;
             case CS_FT_CURRENCY:
                 $varUserVal = number_format($_POST[$strFieldID], 2, '.', '');
                 break;
             case CS_FT_DDL:
                 $varUserVal = (int) $_POST[$strFieldID];
                 break;
             default:
                 screamForHelp($enumType . ': invalid field type<br>error on line ' . __LINE__ . ',<br>file ' . __FILE__ . ',<br>function ' . __FUNCTION__);
                 break;
         }
         $this->clsUFD->updateUserField($varUserVal);
         redirect('admin/uf_user_edit/userAddEdit/' . $lTableID . '/' . $lForeignID . '/0');
     }
 }
 function addEditTable($enumTType, $lTableID = 0)
 {
     //---------------------------------------------------------------------
     //
     //---------------------------------------------------------------------
     if (!bTestForURLHack('adminOnly')) {
         return;
     }
     $displayData = array();
     $displayData['enumTType'] = $enumTType = htmlspecialchars($enumTType);
     if ($lTableID . '' != '0') {
         $this->load->helper('dl_util/verify_id');
         if (!vid_bUserTableIDExists($this, $lTableID, $enumTType)) {
             vid_bTestFail($this, false, 'user table ID', $lTableID);
         }
     }
     $displayData['lTableID'] = $lTableID = (int) $lTableID;
     /*------------------------------------------------
           models/libraries/helpers
       ------------------------------------------------*/
     $this->load->model('personalization/muser_fields', 'clsUF');
     $this->load->model('admin/mpermissions', 'perms');
     $this->load->helper('dl_util/web_layout');
     $this->load->helper('personalization/validate_custom_verification');
     // validation rules
     $this->form_validation->set_error_delimiters('<div class="formError">', '</div>');
     $this->form_validation->set_rules('txtTableName', 'Table Name', 'trim|callback_userTableVerifyRequired|callback_userTableVerifyUnique[' . $enumTType . ',' . $lTableID . ']');
     $this->form_validation->set_rules('txtVerificationModule', 'Validation File', 'callback_verifyVerMod');
     $this->form_validation->set_rules('txtVModEntryPoint', 'Validation Entry Point', 'callback_verifyVModEntry');
     $this->form_validation->set_rules('txtDescription');
     $this->form_validation->set_rules('chkMultiEntry');
     $this->form_validation->set_rules('chkReadOnly');
     $this->form_validation->set_rules('chkHide');
     $this->form_validation->set_rules('chkCollapsible');
     $this->form_validation->set_rules('chkAlertNoDataEntry');
     $this->form_validation->set_rules('txtAlert');
     $displayData['bNew'] = $bNew = $lTableID <= 0;
     $this->clsUF->setTType($enumTType);
     if ($bNew) {
         $this->clsUF->lTableID = 0;
     } else {
         $this->clsUF->lTableID = $lTableID;
     }
     $this->clsUF->loadTableViaTableID(false);
     $displayData['userTables'] = $uTable =& $this->clsUF->userTables[0];
     $displayData['strTTypeLabel'] = $strLabel = $this->clsUF->strTTypeLabel;
     if ($this->form_validation->run() == FALSE) {
         $displayData['title'] = CS_PROGNAME . ' | Personalization';
         $displayData['pageTitle'] = anchor('main/menu/admin', 'Admin', 'class="breadcrumb"') . ' | ' . anchor('admin/personalization/overview/' . $enumTType, 'Personalization', 'class="breadcrumb"') . ' | ' . ($bNew ? 'Add New ' : 'Edit ') . $strLabel . ' Table';
         $displayData['nav'] = $this->mnav_brain_jar->navData();
         $this->load->library('generic_form');
         $displayData['bCurrentlyHidden'] = $uTable->bHidden;
         if (validation_errors() == '') {
             $displayData['strTableName'] = htmlspecialchars($uTable->strUserTableName);
             $displayData['bHidden'] = $uTable->bHidden;
             $displayData['bCollapsible'] = $uTable->bCollapsibleHeadings;
             $displayData['bMultiEntry'] = $uTable->bMultiEntry;
             $displayData['bReadOnly'] = $uTable->bReadOnly;
             $displayData['strDescription'] = $uTable->strDescription;
             $displayData['bAlertNoDataEntry'] = $uTable->bAlertIfNoEntry;
             $displayData['strAlert'] = $uTable->strAlertMsg;
             $displayData['txtVerificationModule'] = htmlspecialchars($uTable->strVerificationModule);
             $displayData['txtVModEntryPoint'] = htmlspecialchars($uTable->strVModEntryPoint);
         } else {
             setOnFormError($displayData);
             $displayData['strTableName'] = set_value('txtTableName');
             $displayData['bHidden'] = set_value('chkHide') == 'true';
             $displayData['bCollapsible'] = set_value('chkCollapsible') == 'true';
             if ($bNew) {
                 $displayData['bMultiEntry'] = set_value('chkMultiEntry') == 'true';
             } else {
                 $displayData['bMultiEntry'] = $uTable->bMultiEntry;
             }
             $displayData['bReadOnly'] = set_value('chkReadOnly') == 'true';
             $displayData['strDescription'] = set_value('txtDescription');
             $displayData['bAlertNoDataEntry'] = set_value('chkAlertNoDataEntry') == 'true';
             $displayData['strAlert'] = set_value('txtAlert');
             $displayData['txtVerificationModule'] = set_value('txtVerificationModule');
             $displayData['txtVModEntryPoint'] = set_value('txtVModEntryPoint');
         }
         $displayData['mainTemplate'] = 'personalization/uf_add_edit_table_view';
         $this->load->vars($displayData);
         $this->load->view('template');
     } else {
         $this->load->model('personalization/muser_fields_create', 'clsUFC');
         $this->clsUFC->enumTType = $enumTType;
         $this->clsUFC->strUserTableName = xss_clean(trim($_POST['txtTableName']));
         $this->clsUFC->strVerificationModule = xss_clean(trim($_POST['txtVerificationModule']));
         $this->clsUFC->strVModEntryPoint = xss_clean(trim($_POST['txtVModEntryPoint']));
         if ($bNew) {
             $this->clsUFC->bMultiEntry = trim(@$_POST['chkMultiEntry']) == 'true';
         } else {
             $this->clsUFC->bMultiEntry = $uTable->bMultiEntry;
         }
         $this->clsUFC->bReadOnly = trim(@$_POST['chkReadOnly']) == 'true';
         $this->clsUFC->bCollapsibleHeadings = trim(@$_POST['chkCollapsible']) == 'true';
         $this->clsUFC->bCollapseDefaultHide = true;
         // should this be a user option?
         $this->clsUFC->bHidden = trim(@$_POST['chkHide']) == 'true';
         $this->clsUFC->strTableDescription = xss_clean(trim($_POST['txtDescription']));
         $this->clsUFC->bAlertNoDataEntry = trim(@$_POST['chkAlertNoDataEntry']) == 'true';
         $this->clsUFC->strAlert = trim($_POST['txtAlert']);
         $strMultiLabel = $this->clsUFC->bMultiEntry ? ' multiple-entry ' : ' single-entry ';
         $bRetired = @$_POST['chkRetire'] == 'YES';
         if ($bRetired) {
             $this->clsUFC->lTableID = $lTableID;
             $this->clsUFC->loadTableViaTableID();
             $this->clsUFC->removeUFTable($lTableID);
             $this->session->set_flashdata('msg', 'The ' . $strLabel . $strMultiLabel . ' table <b>' . htmlspecialchars($this->clsUFC->strUserTableName) . '</b> was removed.');
             redirect('admin/personalization/overview');
         } else {
             if ($bNew) {
                 $lTableID = $this->clsUFC->lAddNewUFTable();
                 $this->session->set_flashdata('msg', 'The new ' . $strLabel . $strMultiLabel . ' table was added');
                 redirect('admin/uf_fields/view/' . $lTableID);
             } else {
                 $this->clsUFC->lTableID = $lTableID;
                 $this->clsUFC->updateUFTable();
                 $this->session->set_flashdata('msg', 'The ' . $strLabel . $strMultiLabel . ' table was updated');
                 redirect('admin/personalization/overview/' . $enumTType);
             }
         }
     }
 }