Piotr Labudda 10 лет назад
Родитель
Сommit
e79e079ad3
1 измененных файлов с 53 добавлено и 6 удалено
  1. 53 6
      SE/se-lib/Route/Budget.php

+ 53 - 6
SE/se-lib/Route/Budget.php

@@ -178,9 +178,12 @@ jQuery(document).ready(function () {
 	<tbody>
 	<?php $t = 1; ?>
 	<?php foreach ($this->_projectPathsOrder as $projPath => $projId) : ?>
-		<?php $projectID   = $projId; ?>
-		<?php $projectDesc = $this->_projectInfo[$projId]->M_DIST_DESC; ?>
-		<?php $projectPath = $this->_projectInfo[$projId]->path; ?>
+		<?php
+			$projectID   = $projId;
+			$projectDesc = $this->_projectInfo[$projId]->M_DIST_DESC;
+			$projectPath = $this->_projectInfo[$projId]->path;
+			$projectAccess = $this->hasAccessToProject($projectID);
+		?>
 		<tr class="row-<?php echo ($t = 1 - $t); ?>"
 				data-proj_id="<?php echo $projectID; ?>"
 				data-path="<?php echo $projectPath; ?>">
@@ -188,11 +191,17 @@ jQuery(document).ready(function () {
 				<input type="checkbox" name="selectedProject" onclick="return selectProject(this);" value="<?php echo $projectID; ?>" />
 			</td>
 			<td class="p2 l nr"><nobr><?php echo $projectPath; ?></nobr></td>
+				<?php if (!$projectAccess) : ?>
+			<td class="p2">***</td>
+				<?php else : ?>
 			<td class="p2" style="max-width:300px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;" title="<?php echo $projectDesc; ?>"><?php echo $projectDesc; ?></td>
+				<?php endif; ?>
 			<?php foreach ($months as $month) : ?>
 				<?php $vMonthCost = $this->getCost($projectID, $month); ?>
 				<?php $monthCostTotal = ($vMonthCost)? $vMonthCost->COST_TOTAL : 0; ?>
-				<?php if (!$vMonthCost) : ?>
+				<?php if (!$projectAccess) : ?>
+			<td style="min-width:30px;text-align:right;">***</td>
+				<?php elseif (!$vMonthCost) : ?>
 			<td style="min-width:30px">&nbsp;</td>
 				<?php else : ?>
 					<?php
@@ -222,7 +231,9 @@ jQuery(document).ready(function () {
 			<td class="cell-plan">
 				<?php $monthPlan = $this->getPlan($projectID, $month); ?>
 				<?php $monthPlanOut = number_format($monthPlan, 2); ?>
-				<?php if ($monthPlan > 0) : ?>
+				<?php if (!$projectAccess) : ?>
+					***
+				<?php elseif ($monthPlan > 0) : ?>
 					<?php echo $monthPlan; ?>
 				<?php else : ?>
 					&nbsp;
@@ -245,7 +256,11 @@ jQuery(document).ready(function () {
 					}
 				}
 			?>
+				<?php if (!$projectAccess) : ?>
+			<td style="min-width:30px;text-align:right;">***</td>
+				<?php else : ?>
 			<td class="cell-procent <?php echo $cellProcentCls; ?>"><?php echo $procentOut; ?></td>
+				<?php endif; ?>
 			<?php endforeach; ?>
 		</tr>
 	<?php endforeach; ?>
@@ -570,6 +585,7 @@ jQuery(document).ready(function() {
 
 	private function _fetchProjectInfo() {
 		$db = DB::getDB();
+		$hasAccessForAllProjects = true;
 		$projectIds = array();
 		$projectsFromCostIds = array_keys($this->_costs);
 		foreach ($projectsFromCostIds as $idProject) $projectIds[$idProject] = true;
@@ -578,7 +594,14 @@ jQuery(document).ready(function() {
 		foreach ($projectIds as $idProject => $vBool) $this->_projectInfo[$idProject] = new stdClass();
 		$projectIds = array_keys($projectIds);
 		$sqlProjIds = "'" . implode("','", $projectIds) . "'";
-		$sql = "select p.`ID`, p.`P_ID`, p.`path`, p.`M_DIST_DESC`
+		$sql = "
+			select p.`ID`
+				, p.`P_ID`
+				, p.`path`
+				, p.`M_DIST_DESC`
+				, p.`A_ADM_COMPANY` as aclGroupWrite
+				, p.`A_CLASSIFIED` as aclGroupRead
+				, p.`L_APPOITMENT_USER` as aclOwner
 			from `IN7_MK_BAZA_DYSTRYBUCJI` p
 			where p.`ID` in({$sqlProjIds})
 		";
@@ -586,9 +609,33 @@ jQuery(document).ready(function() {
 		while ($r = $db->fetch($res)) {
 			$this->_projectInfo[$r->ID]->path = $r->path;
 			$this->_projectInfo[$r->ID]->M_DIST_DESC = $r->M_DIST_DESC;
+			$this->_projectInfo[$r->ID]->hasAccess = $this->_userHasAccessToProject($r);
+			if (!$this->_projectInfo[$r->ID]->hasAccess) $hasAccessForAllProjects = false;
 		}
 		$this->_projectInfo[0]->path = '0';
 		$this->_projectInfo[0]->M_DIST_DESC = "Wszystkie projekty";
+		$this->_projectInfo[0]->hasAccess = $hasAccessForAllProjects;
+	}
+
+	public function hasAccessToProject($idProject) {
+		if ($idProject >= 0) {
+			if (array_key_exists($idProject, $this->_projectInfo)) {
+				return V::get('hasAccess', false, $this->_projectInfo[$idProject]);
+			}
+		}
+		return false;
+	}
+
+	private function _userHasAccessToProject($project) {
+		$groups = User::getLdapGroupsNames();
+		$userLogin = User::getLogin();
+		if ($project->aclOwner == $userLogin) {
+			return true;
+		}
+		else if (in_array($project->aclGroupRead, $groups)) {
+			return true;
+		}
+		return false;
 	}
 
 	private function _reacountCostsFromKoresp() {