浏览代码

Portal : Allowed Organizations part for action rules.

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@4428 a333f486-631f-4898-b8df-5754b55c2be0
glajarige 8 年之前
父节点
当前提交
52a07a5173

+ 17 - 3
datamodels/2.x/itop-portal-base/portal/src/helpers/contextmanipulatorhelper.class.inc.php

@@ -4,7 +4,7 @@
 //
 //   This file is part of iTop.
 //
-//   iTop is free software; you can redistribute it and/or modify	
+//   iTop is free software; you can redistribute it and/or modify
 //   it under the terms of the GNU Affero General Public License as published by
 //   the Free Software Foundation, either version 3 of the License, or
 //   (at your option) any later version.
@@ -23,6 +23,7 @@ use \Exception;
 use \Silex\Application;
 use \DOMNodeList;
 use \DOMFormatException;
+use \UserRights;
 use \DBObject;
 use \DBSearch;
 use \DBObjectSet;
@@ -42,6 +43,7 @@ class ContextManipulatorHelper
 	const ENUM_RULE_CALLBACK_OPEN_EDIT = 'edit';
 	const DEFAULT_RULE_CALLBACK_OPEN = self::ENUM_RULE_CALLBACK_OPEN_VIEW;
 
+	protected $oApp;
 	protected $aRules;
 
 	public function __construct()
@@ -59,7 +61,7 @@ class ContextManipulatorHelper
 	public function Init(DOMNodeList $oNodes)
 	{
 		$this->aRules = array();
-		
+
 		// Iterating over the scope nodes
 		foreach ($oNodes as $oRuleNode)
 		{
@@ -181,6 +183,11 @@ class ContextManipulatorHelper
 		}
 	}
 
+	public function SetApp($oApp)
+	{
+		$this->oApp = $oApp;
+	}
+
 	/**
 	 * Returns a hash array of rules
 	 *
@@ -222,7 +229,7 @@ class ContextManipulatorHelper
 	 *     ...
 	 *   )
 	 * )
-	 * 
+	 *
 	 * @param array $aData
 	 * @param DBObject $oObject
 	 */
@@ -290,6 +297,13 @@ class ContextManipulatorHelper
 						}
 					}
 
+					// Checking for silos
+					$oScopeSearch = $this->oApp['scope_validator']->GetScopeFilterForProfiles(UserRights::ListProfiles(), $sSearchClass, UR_ACTION_READ);
+					if ($oScopeSearch->IsAllDataAllowed())
+					{
+						$oSearch->AllowAllData();
+					}
+
 					// Retrieving source object(s) and applying rules
 					$oSet = new DBObjectSet($oSearch, array(), $aSearchParams);
 					while ($oSourceObject = $oSet->Fetch())

+ 1 - 0
datamodels/2.x/itop-portal-base/portal/src/providers/contextmanipulatorserviceprovider.class.inc.php

@@ -38,6 +38,7 @@ class ContextManipulatorServiceProvider implements ServiceProviderInterface
 			$oApp->flush();
 
 			$oContextManipulatorHelper = new ContextManipulatorHelper();
+			$oContextManipulatorHelper->SetApp($oApp);
 
 			return $oContextManipulatorHelper;
 		});