diff --git a/datamodels/2.x/itop-portal-base/portal/src/Controller/ManageBrickController.php b/datamodels/2.x/itop-portal-base/portal/src/Controller/ManageBrickController.php index d638a6f969..d2705b05d8 100644 --- a/datamodels/2.x/itop-portal-base/portal/src/Controller/ManageBrickController.php +++ b/datamodels/2.x/itop-portal-base/portal/src/Controller/ManageBrickController.php @@ -32,8 +32,14 @@ use BinaryExpression; use BulkExport; use CMDBSource; use Combodo\iTop\Portal\Brick\AbstractBrick; +use Combodo\iTop\Portal\Brick\BrickCollection; use Combodo\iTop\Portal\Brick\ManageBrick; use Combodo\iTop\Portal\Helper\ApplicationHelper; +use Combodo\iTop\Portal\Helper\BrickControllerHelper; +use Combodo\iTop\Portal\Helper\RequestManipulatorHelper; +use Combodo\iTop\Portal\Helper\ScopeValidatorHelper; +use Combodo\iTop\Portal\Helper\SecurityHelper; +use Combodo\iTop\Portal\Routing\UrlGenerator; use DBObject; use DBObjectSet; use DBSearch; @@ -66,6 +72,18 @@ class ManageBrickController extends BrickController /** @var string EXCEL_EXPORT_TEMPLATE_PATH */ const EXCEL_EXPORT_TEMPLATE_PATH = 'itop-portal-base/portal/templates/bricks/manage/popup-export-excel.html.twig'; + public function __construct( + protected BrickCollection $oBrickCollection, + protected ScopeValidatorHelper $oScopeValidator, + protected UrlGenerator $oUrlGenerator, + protected RequestManipulatorHelper $oRequestManipulator, + protected SecurityHelper $oSecurityHelper, + protected BrickControllerHelper $oBrickControllerHelper + ) + { + + } + /** * @param \Symfony\Component\HttpFoundation\Request $oRequest * @param string $sBrickId @@ -85,11 +103,8 @@ class ManageBrickController extends BrickController */ public function DisplayAction(Request $oRequest, $sBrickId, $sGroupingTab, $sDisplayMode = null) { - /** @var \Combodo\iTop\Portal\Brick\BrickCollection $oBrickCollection */ - $oBrickCollection = $this->get('brick_collection'); - /** @var \Combodo\iTop\Portal\Brick\ManageBrick $oBrick */ - $oBrick = $oBrickCollection->GetBrickById($sBrickId); + $oBrick = $this->oBrickCollection->GetBrickById($sBrickId); if (is_null($sDisplayMode)) { $sDisplayMode = $oBrick->GetDefaultDisplayMode(); @@ -128,11 +143,8 @@ class ManageBrickController extends BrickController */ public function TileAction(Request $oRequest, $sBrickId) { - /** @var \Combodo\iTop\Portal\Brick\BrickCollection $oBrickCollection */ - $oBrickCollection = $this->get('brick_collection'); - /** @var \Combodo\iTop\Portal\Brick\ManageBrick $oBrick */ - $oBrick = $oBrickCollection->GetBrickById($sBrickId); + $oBrick = $this->oBrickCollection->GetBrickById($sBrickId); try { @@ -167,13 +179,8 @@ class ManageBrickController extends BrickController */ public function ExcelExportStartAction(Request $oRequest, $sBrickId, $sGroupingTab, $sGroupingArea) { - /** @var \Combodo\iTop\Portal\Helper\ScopeValidatorHelper $oScopeValidator */ - $oScopeValidator = $this->get('scope_validator'); - /** @var \Combodo\iTop\Portal\Brick\BrickCollection $oBrickCollection */ - $oBrickCollection = $this->get('brick_collection'); - /** @var \Combodo\iTop\Portal\Brick\ManageBrick $oBrick */ - $oBrick = $oBrickCollection->GetBrickById($sBrickId); + $oBrick = $this->oBrickCollection->GetBrickById($sBrickId); $oQuery = DBSearch::FromOQL($oBrick->GetOql()); $sClass = $oQuery->GetClass(); $aData = $this->GetData($oRequest, $sBrickId, $sGroupingTab, true); @@ -187,7 +194,7 @@ class ManageBrickController extends BrickController } else { - $oScopeValidator->AddScopeToQuery($oQuery, $sClass); + $this->oScopeValidator->AddScopeToQuery($oQuery, $sClass); $aData = array(); $this->ManageSearchValue($aData, $oQuery, $sClass); @@ -287,22 +294,8 @@ class ManageBrickController extends BrickController { /** @var string $sPortalId */ $sPortalId = $this->getParameter('combodo.portal.instance.id'); - - /** @var \Combodo\iTop\Portal\Routing\UrlGenerator $oUrlGenerator */ - $oUrlGenerator = $this->get('url_generator'); - /** @var \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulator */ - $oRequestManipulator = $this->get('request_manipulator'); - /** @var \Combodo\iTop\Portal\Helper\SecurityHelper $oSecurityHelper */ - $oSecurityHelper = $this->get('security_helper'); - /** @var \Combodo\iTop\Portal\Helper\ScopeValidatorHelper $oScopeValidator */ - $oScopeValidator = $this->get('scope_validator'); - /** @var \Combodo\iTop\Portal\Helper\BrickControllerHelper */ - $oBrickControllerHelper = $this->get('brick_controller_helper'); - /** @var \Combodo\iTop\Portal\Brick\BrickCollection $oBrickCollection */ - $oBrickCollection = $this->get('brick_collection'); - /** @var \Combodo\iTop\Portal\Brick\ManageBrick $oBrick */ - $oBrick = $oBrickCollection->GetBrickById($sBrickId); + $oBrick = $this->oBrickCollection->GetBrickById($sBrickId); $aData = array(); $aGroupingTabsValues = array(); @@ -311,10 +304,10 @@ class ManageBrickController extends BrickController $bHasScope = true; // Getting current data loading mode (First from router parameter, then query parameter, then default brick value) - $sDataLoading = $oRequestManipulator->ReadParam('sDataLoading', $oBrick->GetDataLoading()); + $sDataLoading = $this->oRequestManipulator->ReadParam('sDataLoading', $oBrick->GetDataLoading()); // - Retrieving the grouping areas to display - $sGroupingArea = $oRequestManipulator->ReadParam('sGroupingArea', ''); + $sGroupingArea = $this->oRequestManipulator->ReadParam('sGroupingArea', ''); if (!empty($sGroupingArea)) { $bNeedDetails = true; @@ -361,7 +354,7 @@ class ManageBrickController extends BrickController $oConditionQuery = $oQuery->Intersect($oDBSearch); // - Restricting query to scope array_push($aConditionQueryGrouping,$oDBSearch); - $bHasScope = $oScopeValidator->AddScopeToQuery($oConditionQuery, $oConditionQuery->GetClass()); + $bHasScope = $this->oScopeValidator->AddScopeToQuery($oConditionQuery, $oConditionQuery->GetClass()); if ($bHasScope) { // - Building ObjectSet @@ -385,7 +378,7 @@ class ManageBrickController extends BrickController try { $oConditionQuery = $oQuery->Intersect(new DBUnionSearch($aConditionQueryGrouping)); - $bHasScope = $oScopeValidator->AddScopeToQuery($oConditionQuery, $oConditionQuery->GetClass()); + $bHasScope = $this->oScopeValidator->AddScopeToQuery($oConditionQuery, $oConditionQuery->GetClass()); if ($bHasScope) { // - Building ObjectSet @@ -439,7 +432,7 @@ class ManageBrickController extends BrickController $aData['sBrickSubtitle'] = !empty($aGroupingTabsValues[$sGroupingTab]['description']) ? $aGroupingTabsValues[$sGroupingTab]['description'] : null; // - Transforming search sort params to OQL format - $aSortedParams = $oBrickControllerHelper->ExtractSortParams(); + $aSortedParams = $this->oBrickControllerHelper->ExtractSortParams(); // Preparing areas // - We need to retrieve distinct values for the grouping attribute @@ -505,7 +498,7 @@ class ManageBrickController extends BrickController // Restricting query to allowed scope on each classes // Note: Will need to moved the scope restriction on queries elsewhere when we consider grouping on something else than finalclass // Note: We now get view scope instead of edit scope as we allowed users to view/edit objects in the brick regarding their rights - $bHasScope = $oScopeValidator->AddScopeToQuery($oAreaQuery, $aGroupingAreasValue['value']); + $bHasScope = $this->oScopeValidator->AddScopeToQuery($oAreaQuery, $aGroupingAreasValue['value']); if (!$bHasScope) { // if no scope apply does not allow any data @@ -546,8 +539,8 @@ class ManageBrickController extends BrickController if ($sDataLoading === AbstractBrick::ENUM_DATA_LOADING_LAZY) { // Retrieving parameters - $iPageNumber = (int)$oRequestManipulator->ReadParam('iPageNumber', 1, FILTER_SANITIZE_NUMBER_INT); - $iListLength = (int)$oRequestManipulator->ReadParam('iListLength', ManageBrick::DEFAULT_LIST_LENGTH, + $iPageNumber = (int)$this->oRequestManipulator->ReadParam('iPageNumber', 1, FILTER_SANITIZE_NUMBER_INT); + $iListLength = (int)$this->oRequestManipulator->ReadParam('iListLength', ManageBrick::DEFAULT_LIST_LENGTH, FILTER_SANITIZE_NUMBER_INT); // Getting total records number @@ -591,7 +584,7 @@ class ManageBrickController extends BrickController // Note: $aColumnToLoad already contains array of aliases => attcodes $oSet->OptimizeColumnLoad($aColumnsToLoad); - $oSecurityHelper->PreloadForCache($oSet->GetFilter(), + $this->oSecurityHelper->PreloadForCache($oSet->GetFilter(), $aColumnsToLoad[$oQuery->GetClassAlias()] /* preloading only extkeys from the main class */); $aSets[$sKey] = $oSet; } @@ -639,13 +632,13 @@ class ManageBrickController extends BrickController if ($sItemAttr === $sMainActionAttrCode) { // Checking if we can edit the object - if (($oBrick->GetOpeningMode() === ManageBrick::ENUM_ACTION_EDIT) && $oSecurityHelper->IsActionAllowed(UR_ACTION_MODIFY, + if (($oBrick->GetOpeningMode() === ManageBrick::ENUM_ACTION_EDIT) && $this->oSecurityHelper->IsActionAllowed(UR_ACTION_MODIFY, $sCurrentClass, $oCurrentRow->GetKey())) { $sActionType = ManageBrick::ENUM_ACTION_EDIT; } // - Otherwise, check if view is allowed - elseif ($oSecurityHelper->IsActionAllowed(UR_ACTION_READ, $sCurrentClass, + elseif ($this->oSecurityHelper->IsActionAllowed(UR_ACTION_READ, $sCurrentClass, $oCurrentRow->GetKey())) { $sActionType = ManageBrick::ENUM_ACTION_VIEW; @@ -679,7 +672,7 @@ class ManageBrickController extends BrickController if ($oCurrentRow->Get($sItemAttr) !== $oAttDef->GetNullValue()) { // Checking if we can view the object - if (($oSecurityHelper->IsActionAllowed(UR_ACTION_READ, $oAttDef->GetTargetClass(), + if (($this->oSecurityHelper->IsActionAllowed(UR_ACTION_READ, $oAttDef->GetTargetClass(), $oCurrentRow->Get($sItemAttr)))) { $aActions[] = array( @@ -697,7 +690,7 @@ class ManageBrickController extends BrickController $oOrmDoc = $oCurrentRow->Get($sItemAttr); if (is_object($oOrmDoc) && !$oOrmDoc->IsEmpty()) { - $sUrl = $oUrlGenerator->generate('p_object_document_display', [ + $sUrl = $this->oUrlGenerator->generate('p_object_document_display', [ 'sObjectClass' => get_class($oCurrentRow), 'sObjectId' => $oCurrentRow->GetKey(), 'sObjectField' => $sItemAttr, @@ -846,7 +839,7 @@ class ManageBrickController extends BrickController 'label' => $aValues['label'], 'label_html' => $aValues['label_html'], ); - $aUrls[] = $oUrlGenerator->generate('p_manage_brick_display_as', array( + $aUrls[] = $this->oUrlGenerator->generate('p_manage_brick_display_as', array( 'sBrickId' => $sBrickId, 'sDisplayMode' => 'list', 'sGroupingTab' => $aValues['value'], @@ -894,11 +887,8 @@ class ManageBrickController extends BrickController */ protected function ManageSearchValue(&$aData, DBSearch &$oQuery, $sClass, $aColumnsAttrs = array()) { - /** @var \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulator */ - $oRequestManipulator = $this->get('request_manipulator'); - // Getting search value - $sRawSearchValue = trim($oRequestManipulator->ReadParam('sSearchValue', '')); + $sRawSearchValue = trim($this->oRequestManipulator->ReadParam('sSearchValue', '')); $sSearchValue = html_entity_decode($sRawSearchValue); // - Adding search clause if necessary @@ -960,13 +950,11 @@ class ManageBrickController extends BrickController * @throws \Exception */ protected function GroupByAttribute(DBSearch $oQuery, $sGroupingTabAttCode, ManageBrick $oBrick) { - /** @var \Combodo\iTop\Portal\Helper\ScopeValidatorHelper $oScopeValidator */ - $oScopeValidator = $this->get('scope_validator'); $aGroupingTabsValues = array(); $aDistinctResults = array(); $oDistinctQuery = DBSearch::FromOQL($oBrick->GetOql()); - $bHasScope = $oScopeValidator->AddScopeToQuery($oDistinctQuery, $oDistinctQuery->GetClass()); + $bHasScope = $this->oScopeValidator->AddScopeToQuery($oDistinctQuery, $oDistinctQuery->GetClass()); if ($bHasScope) { // - Adding field condition @@ -1073,11 +1061,8 @@ class ManageBrickController extends BrickController */ protected function GetScopedQuery(ManageBrick $oBrick, $sClass) { - /** @var \Combodo\iTop\Portal\Helper\ScopeValidatorHelper $oScopeValidator */ - $oScopeValidator = $this->get('scope_validator'); - $oQuery = DBSearch::FromOQL($oBrick->GetOql()); - $oScopeValidator->AddScopeToQuery($oQuery, $sClass); + $this->oScopeValidator->AddScopeToQuery($oQuery, $sClass); return $oQuery; }