예제 #1
0
 function bVerifyUserAccessToReport($report, &$lNumFails, &$failTables)
 {
     //---------------------------------------------------------------------
     //
     //---------------------------------------------------------------------
     global $glUserID, $gbAdmin;
     $lNumFails = 0;
     $failTables = array();
     if ($gbAdmin) {
         return true;
     }
     $lReportID = $report->lKeyID;
     // load search terms
     $this->loadSearchTermViaReportID($lReportID);
     // load sort terms
     $this->loadSortFieldsViaReportID($lReportID, $lNumSortTerms, $sortTerms);
     $this->uf = new muser_fields();
     // tables needed for the report
     crptTables\tablesUsed($report, $this->terms, $sortTerms, $tableIDs);
     if (count($tableIDs) == 0) {
         return true;
     }
     $cperm = new mpermissions();
     $cperm->loadUserAcctInfo($glUserID, $acctAccess);
     $cUF = new muser_fields();
     $cUF->lTableID = array();
     foreach ($tableIDs as $TID) {
         $cUF->lTableID[] = $TID;
     }
     $cUF->loadTableViaTableID(false);
     foreach ($cUF->userTables as $utable) {
         if (!$cperm->bDoesUserHaveAccess($acctAccess, $utable->lNumConsolidated, $utable->cperms)) {
             $failTables[$lNumFails] = '[' . $utable->enumTType . '] ' . $utable->strUserTableName;
             ++$lNumFails;
         }
     }
     return $lNumFails == 0;
 }
 function loadUFSchema($bIncludePerms = false, $strOrderBy = '')
 {
     //---------------------------------------------------------------------
     //
     //---------------------------------------------------------------------
     global $glUserID;
     if (!isset($this->schema)) {
         $this->schema = array();
     }
     if ($bIncludePerms) {
         $perms = new mpermissions();
         $perms->loadUserAcctInfo($glUserID, $acctAccess);
     }
     if ($strOrderBy == '') {
         $strOrderBy = 'pft_strUserTableName, pft_lKeyID';
     }
     $sqlStr = 'SELECT
            pft_lKeyID, pft_strUserTableName, pft_strDataTableName, pft_bHidden,
            pft_strDescription,
            pft_bCollapsibleHeadings, pft_bCollapseDefaultHide,
            pft_enumAttachType, pft_bMultiEntry, pft_lPermissions,
            pft_bAlertIfNoEntry, pft_strAlertMsg, pft_bReadOnly,
            pft_strVerificationModule,
            pft_strVModEntryPoint
         FROM uf_tables
         WHERE NOT pft_bRetired ' . $this->sqlWhereExtra . '
         ORDER BY ' . $strOrderBy . ';';
     $query = $this->db->query($sqlStr);
     $this->lNumTables = $lNumTables = $query->num_rows();
     if ($lNumTables > 0) {
         foreach ($query->result() as $row) {
             $lTableID = (int) $row->pft_lKeyID;
             $this->schema[$lTableID] = new stdClass();
             $utable =& $this->schema[$lTableID];
             $utable->lTableID = $lTableID;
             $utable->strUserTableName = $row->pft_strUserTableName;
             $utable->strDataTableName = $row->pft_strDataTableName;
             $utable->enumAttachType = $row->pft_enumAttachType;
             $utable->strDescription = $row->pft_strDescription;
             $utable->bHidden = (bool) $row->pft_bHidden;
             $utable->bMultiEntry = (bool) $row->pft_bMultiEntry;
             $utable->bReadOnly = (bool) $row->pft_bReadOnly;
             $utable->bCollapsibleHeadings = (bool) $row->pft_bCollapsibleHeadings;
             $utable->bCollapseDefaultHide = (bool) $row->pft_bCollapseDefaultHide;
             $utable->strVerificationModule = $row->pft_strVerificationModule;
             $utable->strVModEntryPoint = $row->pft_strVModEntryPoint;
             $utable->bAlertIfNoEntry = (bool) $row->pft_bAlertIfNoEntry;
             $utable->strAlertMsg = $row->pft_strAlertMsg;
             $utable->lPermissions = $row->pft_lPermissions;
             $utable->strFieldPrefix = 'uf' . str_pad($lTableID, 6, '0', STR_PAD_LEFT);
             $utable->strDataTableKeyID = $utable->strFieldPrefix . '_lKeyID';
             $utable->strDataTableFID = $utable->strFieldPrefix . '_lForeignKey';
             if ($this->bLoadFields) {
                 $this->loadUTableFields($lTableID, $utable->lNumFields, $utable->fields);
             }
             if ($bIncludePerms) {
                 $perms->tablePerms($lTableID, $utable->lNumPerms, $utable->perms);
                 $perms->consolidateTablePerms($utable->lNumPerms, $utable->perms, $utable->lNumConsolidated, $utable->cperms);
                 $utable->bAllowAccess = $perms->bDoesUserHaveAccess($acctAccess, $utable->lNumConsolidated, $utable->cperms);
             }
         }
     }
 }