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); } } } }