diff --git a/datamodels/2.x/itop-portal-base/portal/src/Controller/AbstractController.php b/datamodels/2.x/itop-portal-base/portal/src/Controller/AbstractController.php index 54904623a..d4eb559a5 100644 --- a/datamodels/2.x/itop-portal-base/portal/src/Controller/AbstractController.php +++ b/datamodels/2.x/itop-portal-base/portal/src/Controller/AbstractController.php @@ -21,6 +21,8 @@ namespace Combodo\iTop\Portal\Controller; use \Symfony\Bundle\FrameworkBundle\Controller\AbstractController as SymfonyAbstractController; +use Symfony\Component\Routing\RouterInterface; +use Symfony\Contracts\Service\Attribute\Required; /** * Class AbstractController @@ -32,32 +34,16 @@ use \Symfony\Bundle\FrameworkBundle\Controller\AbstractController as SymfonyAbst abstract class AbstractController extends SymfonyAbstractController { /** - * Return services needed inside controllers. - * Allow access to service via $controller->get(`service_name`). - * - * Improvement: Use service dependency injection - * - * @return array array of service injected to controllers - * @since 3.1.0 + * @var \Symfony\Component\Routing\RouterInterface symfony router * + * @since 3.2.0 N°6933 */ - public static function getSubscribedServices(): array + private RouterInterface $oRouter; + + #[Required] + public function setRouter(RouterInterface $oRouter): void { - return array_merge(parent::getSubscribedServices(), [ - 'brick_collection' => 'Combodo\iTop\Portal\Brick\BrickCollection', - 'request_manipulator' => 'Combodo\iTop\Portal\Helper\RequestManipulatorHelper', - 'scope_validator' => 'Combodo\iTop\Portal\Helper\ScopeValidatorHelper', - 'security_helper' => 'Combodo\iTop\Portal\Helper\SecurityHelper', - 'context_manipulator' => 'Combodo\iTop\Portal\Helper\ContextManipulatorHelper', - 'navigation_rule_helper' => 'Combodo\iTop\Portal\Helper\NavigationRuleHelper', - 'ui_extensions_helper' => 'Combodo\iTop\Portal\Helper\UIExtensionsHelper', - 'lifecycle_validator' => 'Combodo\iTop\Portal\Helper\LifecycleValidatorHelper', - 'url_generator' => 'router', - 'object_form_handler' => 'Combodo\iTop\Portal\Helper\ObjectFormHandlerHelper', - 'browse_brick' => 'Combodo\iTop\Portal\Helper\BrowseBrickHelper', - 'brick_controller_helper' => 'Combodo\iTop\Portal\Helper\BrickControllerHelper', - 'session_message_helper' => 'Combodo\iTop\Portal\Helper\SessionMessageHelper', - ]); + $this->oRouter = $oRouter; } /** @@ -76,7 +62,7 @@ abstract class AbstractController extends SymfonyAbstractController */ protected function ForwardToRoute($sRouteName, $aRouteParams, $aQueryParameters, $bPreserveDefaultRouteParams = true) { - $oRouteCollection = $this->get('router')->getRouteCollection(); + $oRouteCollection = $this->oRouter->getRouteCollection(); $aRouteDefaults = $oRouteCollection->get($sRouteName)->getDefaults(); if ($bPreserveDefaultRouteParams) { @@ -113,7 +99,7 @@ abstract class AbstractController extends SymfonyAbstractController */ protected function GetControllerNameFromRoute($sRouteName) { - $oRouteCollection = $this->get('router')->getRouteCollection(); + $oRouteCollection = $this->oRouter->getRouteCollection(); $aRouteDefaults = $oRouteCollection->get($sRouteName)->getDefaults(); return $aRouteDefaults['_controller']; diff --git a/datamodels/2.x/itop-portal-base/portal/src/Controller/AggregatePageBrickController.php b/datamodels/2.x/itop-portal-base/portal/src/Controller/AggregatePageBrickController.php index 0da35e3fc..01c8ed704 100644 --- a/datamodels/2.x/itop-portal-base/portal/src/Controller/AggregatePageBrickController.php +++ b/datamodels/2.x/itop-portal-base/portal/src/Controller/AggregatePageBrickController.php @@ -20,6 +20,7 @@ namespace Combodo\iTop\Portal\Controller; +use Combodo\iTop\Portal\Brick\BrickCollection; use Combodo\iTop\Portal\Brick\BrickNotFoundException; use IssueLog; use LogChannels; @@ -40,6 +41,21 @@ use UserRights; */ class AggregatePageBrickController extends BrickController { + + /** + * Constructor. + * + * @param \Combodo\iTop\Portal\Brick\BrickCollection $oBrickCollection + * + * @since 3.2.0 N°6933 + */ + public function __construct( + protected BrickCollection $oBrickCollection + ) + { + + } + /** * @param \Symfony\Component\HttpFoundation\Request $oRequest * @param string $sBrickId @@ -51,11 +67,8 @@ class AggregatePageBrickController extends BrickController */ public function DisplayAction(Request $oRequest, $sBrickId) { - /** @var \Combodo\iTop\Portal\Brick\BrickCollection $oBrickCollection */ - $oBrickCollection = $this->get('brick_collection'); - /** @var \Combodo\iTop\Portal\Brick\AggregatePageBrick $oBrick */ - $oBrick = $oBrickCollection->GetBrickById($sBrickId); + $oBrick = $this->oBrickCollection->GetBrickById($sBrickId); $aAggregatePageBricksConf = $oBrick->GetAggregatePageBricks(); $aAggregatePageBricks = $this->GetOrderedAggregatePageBricksObjectsById($aAggregatePageBricksConf); @@ -81,15 +94,12 @@ class AggregatePageBrickController extends BrickController */ private function GetOrderedAggregatePageBricksObjectsById($aAggregatePageBricksConf) { - /** @var \Combodo\iTop\Portal\Brick\BrickCollection $oBrickCollection */ - $oBrickCollection = $this->get('brick_collection'); - $aAggregatePageBricks = array(); foreach ($aAggregatePageBricksConf as $sBrickId => $iBrickRank) { try { - $oPortalBrick = $oBrickCollection->GetBrickById($sBrickId); + $oPortalBrick = $this->oBrickCollection->GetBrickById($sBrickId); } catch (BrickNotFoundException $oException) { diff --git a/datamodels/2.x/itop-portal-base/portal/src/Controller/BrowseBrickController.php b/datamodels/2.x/itop-portal-base/portal/src/Controller/BrowseBrickController.php index 507848bf5..e2396e59f 100644 --- a/datamodels/2.x/itop-portal-base/portal/src/Controller/BrowseBrickController.php +++ b/datamodels/2.x/itop-portal-base/portal/src/Controller/BrowseBrickController.php @@ -24,8 +24,11 @@ use AttributeExternalKey; use AttributeLinkedSetIndirect; use BinaryExpression; use Combodo\iTop\Portal\Brick\AbstractBrick; +use Combodo\iTop\Portal\Brick\BrickCollection; use Combodo\iTop\Portal\Brick\BrowseBrick; +use Combodo\iTop\Portal\Helper\BrickControllerHelper; use Combodo\iTop\Portal\Helper\BrowseBrickHelper; +use Combodo\iTop\Portal\Helper\RequestManipulatorHelper; use DBObjectSearch; use DBObjectSet; use DBSearch; @@ -48,6 +51,28 @@ use VariableExpression; */ class BrowseBrickController extends BrickController { + + /** + * Constructor. + * + * @param \Combodo\iTop\Portal\Helper\BrowseBrickHelper $oBrowseBrickHelper + * @param \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulatorHelper + * @param \Combodo\iTop\Portal\Helper\BrickControllerHelper $oBrickControllerHelper + * @param \Combodo\iTop\Portal\Brick\BrickCollection $oBrickCollection + * + * @since 3.2.0 N°6933 + */ + public function __construct( + protected BrowseBrickHelper $oBrowseBrickHelper, + protected RequestManipulatorHelper $oRequestManipulatorHelper, + protected BrickControllerHelper $oBrickControllerHelper, + protected BrickCollection $oBrickCollection + ) + { + + } + + /** * @param \Symfony\Component\HttpFoundation\Request $oRequest * @param string $sBrickId @@ -69,15 +94,8 @@ class BrowseBrickController extends BrickController { $sPortalId = $this->getParameter('combodo.portal.instance.id'); - /** @var \Combodo\iTop\Portal\Helper\BrowseBrickHelper $oBrowseBrickHelper */ - $oBrowseBrickHelper = $this->get('browse_brick'); - /** @var \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulator */ - $oRequestManipulator = $this->get('request_manipulator'); - /** @var \Combodo\iTop\Portal\Helper\BrickControllerHelper */ - $oBrickControllerHelper = $this->get('brick_controller_helper'); - /** @var \Combodo\iTop\Portal\Brick\BrowseBrick $oBrick */ - $oBrick = $this->get('brick_collection')->getBrickById($sBrickId); + $oBrick = $this->oBrickCollection->getBrickById($sBrickId); // Getting available browse modes $aBrowseModes = $oBrick->GetAvailablesBrowseModes(); @@ -85,10 +103,10 @@ class BrowseBrickController extends BrickController // Getting current browse mode (First from router parameter, then default brick value) $sBrowseMode = (!empty($sBrowseMode)) ? $sBrowseMode : $oBrick->GetDefaultBrowseMode(); // Getting current dataloading mode (First from router parameter, then query parameter, then default brick value) - $sDataLoading = ($sDataLoading !== null) ? $sDataLoading : $oRequestManipulator->ReadParam('sDataLoading', + $sDataLoading = ($sDataLoading !== null) ? $sDataLoading : $this->oRequestManipulatorHelper->ReadParam('sDataLoading', $oBrick->GetDataLoading()); // Getting search value - $sRawSearchValue = $oRequestManipulator->ReadParam('sSearchValue', ''); + $sRawSearchValue = $this->oRequestManipulatorHelper->ReadParam('sSearchValue', ''); $sSearchValue = html_entity_decode($sRawSearchValue); if (strlen($sSearchValue) > 0) { @@ -98,7 +116,7 @@ class BrowseBrickController extends BrickController $aData = array(); $aLevelsProperties = array(); $aLevelsClasses = array(); - $oBrowseBrickHelper->TreeToFlatLevelsProperties($oBrick->GetLevels(), $aLevelsProperties); + $this->oBrowseBrickHelper->TreeToFlatLevelsProperties($oBrick->GetLevels(), $aLevelsProperties); // Consistency checks if (!in_array($sBrowseMode, array_keys($aBrowseModes))) @@ -298,8 +316,8 @@ class BrowseBrickController extends BrickController { case BrowseBrick::ENUM_BROWSE_MODE_LIST: // Retrieving parameters - $iPageNumber = (int)$oRequestManipulator->ReadParam('iPageNumber', 1, FILTER_SANITIZE_NUMBER_INT); - $iListLength = (int)$oRequestManipulator->ReadParam('iListLength', BrowseBrick::DEFAULT_LIST_LENGTH, + $iPageNumber = (int)$this->oRequestManipulatorHelper->ReadParam('iPageNumber', 1, FILTER_SANITIZE_NUMBER_INT); + $iListLength = (int)$this->oRequestManipulatorHelper->ReadParam('iListLength', BrowseBrick::DEFAULT_LIST_LENGTH, FILTER_SANITIZE_NUMBER_INT); // Getting total records number @@ -315,8 +333,8 @@ class BrowseBrickController extends BrickController case BrowseBrick::ENUM_BROWSE_MODE_TREE: case BrowseBrick::ENUM_BROWSE_MODE_MOSAIC: // Retrieving parameters - $sLevelAlias = $oRequestManipulator->ReadParam('sLevelAlias', ''); - $sNodeId = $oRequestManipulator->ReadParam('sNodeId', ''); + $sLevelAlias = $this->oRequestManipulatorHelper->ReadParam('sLevelAlias', ''); + $sNodeId = $this->oRequestManipulatorHelper->ReadParam('sNodeId', ''); // If no values for those parameters, we might be loading page in lazy mode for the first time, therefore the URL doesn't have those information. if (empty($sLevelAlias)) @@ -415,7 +433,7 @@ class BrowseBrickController extends BrickController $oSet->OptimizeColumnLoad($aColumnAttrs); // Setting specified column sort, setting default datamodel one otherwise - $aSortedParams = $oBrickControllerHelper->ExtractSortParams(); + $aSortedParams = $this->oBrickControllerHelper->ExtractSortParams(); if (!empty($aSortedParams)) { $oSet->SetOrderBy($aSortedParams); @@ -432,12 +450,12 @@ class BrowseBrickController extends BrickController { case BrowseBrick::ENUM_BROWSE_MODE_TREE: case BrowseBrick::ENUM_BROWSE_MODE_MOSAIC: - $oBrowseBrickHelper->AddToTreeItems($aItems, $aCurrentRow, $aLevelsProperties, null); + $this->oBrowseBrickHelper->AddToTreeItems($aItems, $aCurrentRow, $aLevelsProperties, null); break; case BrowseBrick::ENUM_BROWSE_MODE_LIST: default: - $aItems[] = $oBrowseBrickHelper->AddToFlatItems($aCurrentRow, $aLevelsProperties); + $aItems[] = $this->oBrowseBrickHelper->AddToFlatItems($aCurrentRow, $aLevelsProperties); break; } } diff --git a/datamodels/2.x/itop-portal-base/portal/src/Controller/CreateBrickController.php b/datamodels/2.x/itop-portal-base/portal/src/Controller/CreateBrickController.php index acb833304..11bba7586 100644 --- a/datamodels/2.x/itop-portal-base/portal/src/Controller/CreateBrickController.php +++ b/datamodels/2.x/itop-portal-base/portal/src/Controller/CreateBrickController.php @@ -20,8 +20,10 @@ namespace Combodo\iTop\Portal\Controller; +use Combodo\iTop\Portal\Brick\BrickCollection; use Combodo\iTop\Portal\Helper\ContextManipulatorHelper; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; /** * Class CreateBrickController @@ -33,27 +35,31 @@ use Symfony\Component\HttpFoundation\Request; class CreateBrickController extends BrickController { + /** + * Constructor. + * + * @param \Combodo\iTop\Portal\Brick\BrickCollection $oBrickCollection + * + * @since 3.2.0 N°6933 + */ + public function __construct( + protected BrickCollection $oBrickCollection + ) + { + } + /** * @param \Symfony\Component\HttpFoundation\Request $oRequest * @param string $sBrickId * * @return \Symfony\Component\HttpFoundation\Response * - * @throws \CoreException - * @throws \DictExceptionMissingString - * @throws \MissingQueryArgument - * @throws \MySQLException - * @throws \MySQLHasGoneAwayException - * @throws \OQLException * @throws \Combodo\iTop\Portal\Brick\BrickNotFoundException */ public function DisplayAction(Request $oRequest, $sBrickId) { - /** @var \Combodo\iTop\Portal\Brick\BrickCollection $oBrickCollection */ - $oBrickCollection = $this->get('brick_collection'); - /** @var \Combodo\iTop\Portal\Brick\CreateBrick $oBrick */ - $oBrick = $oBrickCollection->GetBrickById($sBrickId); + $oBrick = $this->oBrickCollection->GetBrickById($sBrickId); $aRouteParams = array( 'sBrickId' => $sBrickId, 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 70d63f213..28dd2f743 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; @@ -67,6 +73,28 @@ 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'; + /** + * @param \Combodo\iTop\Portal\Brick\BrickCollection $oBrickCollection + * @param \Combodo\iTop\Portal\Helper\ScopeValidatorHelper $oScopeValidatorHelper + * @param \Combodo\iTop\Portal\Routing\UrlGenerator $oUrlGenerator + * @param \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulatorHelper + * @param \Combodo\iTop\Portal\Helper\SecurityHelper $oSecurityHelper + * @param \Combodo\iTop\Portal\Helper\BrickControllerHelper $oBrickControllerHelper + * + * @since 3.2.0 N°6933 + */ + public function __construct( + protected BrickCollection $oBrickCollection, + protected ScopeValidatorHelper $oScopeValidatorHelper, + protected UrlGenerator $oUrlGenerator, + protected RequestManipulatorHelper $oRequestManipulatorHelper, + protected SecurityHelper $oSecurityHelper, + protected BrickControllerHelper $oBrickControllerHelper + ) + { + + } + /** * @param \Symfony\Component\HttpFoundation\Request $oRequest * @param string $sBrickId @@ -86,11 +114,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(); @@ -129,11 +154,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 { @@ -168,13 +190,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); @@ -188,7 +205,7 @@ class ManageBrickController extends BrickController } else { - $oScopeValidator->AddScopeToQuery($oQuery, $sClass); + $this->oScopeValidatorHelper->AddScopeToQuery($oQuery, $sClass); $aData = array(); $this->ManageSearchValue($aData, $oQuery, $sClass); @@ -289,22 +306,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(); @@ -313,10 +316,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->oRequestManipulatorHelper->ReadParam('sDataLoading', $oBrick->GetDataLoading()); // - Retrieving the grouping areas to display - $sGroupingArea = $oRequestManipulator->ReadParam('sGroupingArea', ''); + $sGroupingArea = $this->oRequestManipulatorHelper->ReadParam('sGroupingArea', ''); if (!empty($sGroupingArea)) { $bNeedDetails = true; @@ -363,7 +366,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->oScopeValidatorHelper->AddScopeToQuery($oConditionQuery, $oConditionQuery->GetClass()); if ($bHasScope) { // - Building ObjectSet @@ -387,7 +390,7 @@ class ManageBrickController extends BrickController try { $oConditionQuery = $oQuery->Intersect(new DBUnionSearch($aConditionQueryGrouping)); - $bHasScope = $oScopeValidator->AddScopeToQuery($oConditionQuery, $oConditionQuery->GetClass()); + $bHasScope = $this->oScopeValidatorHelper->AddScopeToQuery($oConditionQuery, $oConditionQuery->GetClass()); if ($bHasScope) { // - Building ObjectSet @@ -441,7 +444,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 @@ -507,7 +510,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->oScopeValidatorHelper->AddScopeToQuery($oAreaQuery, $aGroupingAreasValue['value']); if (!$bHasScope) { // if no scope apply does not allow any data @@ -548,8 +551,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->oRequestManipulatorHelper->ReadParam('iPageNumber', 1, FILTER_SANITIZE_NUMBER_INT); + $iListLength = (int)$this->oRequestManipulatorHelper->ReadParam('iListLength', ManageBrick::DEFAULT_LIST_LENGTH, FILTER_SANITIZE_NUMBER_INT); // Getting total records number @@ -593,7 +596,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; } @@ -641,13 +644,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; @@ -681,7 +684,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( @@ -699,7 +702,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, @@ -848,7 +851,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'], @@ -896,11 +899,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->oRequestManipulatorHelper->ReadParam('sSearchValue', '')); $sSearchValue = html_entity_decode($sRawSearchValue); // - Adding search clause if necessary @@ -962,13 +962,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->oScopeValidatorHelper->AddScopeToQuery($oDistinctQuery, $oDistinctQuery->GetClass()); if ($bHasScope) { // - Adding field condition @@ -1075,11 +1073,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->oScopeValidatorHelper->AddScopeToQuery($oQuery, $sClass); return $oQuery; } diff --git a/datamodels/2.x/itop-portal-base/portal/src/Controller/ObjectController.php b/datamodels/2.x/itop-portal-base/portal/src/Controller/ObjectController.php index 759e97873..0f59db0fc 100644 --- a/datamodels/2.x/itop-portal-base/portal/src/Controller/ObjectController.php +++ b/datamodels/2.x/itop-portal-base/portal/src/Controller/ObjectController.php @@ -27,9 +27,16 @@ use AttributeFriendlyName; use AttributeImage; use BinaryExpression; use Combodo\iTop\Form\Field\DateTimeField; +use Combodo\iTop\Portal\Brick\BrickCollection; use Combodo\iTop\Portal\Brick\CreateBrick; use Combodo\iTop\Portal\Helper\ApplicationHelper; use Combodo\iTop\Portal\Helper\ContextManipulatorHelper; +use Combodo\iTop\Portal\Helper\NavigationRuleHelper; +use Combodo\iTop\Portal\Helper\ObjectFormHandlerHelper; +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 Combodo\iTop\Renderer\Bootstrap\FieldRenderer\BsLinkedSetFieldRenderer; use DBObject; use DBObjectSearch; @@ -67,6 +74,31 @@ class ObjectController extends BrickController const DEFAULT_PAGE_NUMBER = 1; const DEFAULT_LIST_LENGTH = 10; + /** + * @param \Combodo\iTop\Portal\Helper\SecurityHelper $oSecurityHelper + * @param \Combodo\iTop\Portal\Helper\ScopeValidatorHelper $oScopeValidatorHelper + * @param \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulatorHelper + * @param \Combodo\iTop\Portal\Routing\UrlGenerator $oUrlGenerator + * @param \Combodo\iTop\Portal\Brick\BrickCollection $oBrickCollection + * @param \Combodo\iTop\Portal\Helper\ObjectFormHandlerHelper $oObjectFormHandlerHelper + * @param \Combodo\iTop\Portal\Helper\NavigationRuleHelper $oNavigationRuleHelper + * + * @since 3.2.0 N°6933 + */ + public function __construct( + protected SecurityHelper $oSecurityHelper, + protected ScopeValidatorHelper $oScopeValidatorHelper, + protected RequestManipulatorHelper $oRequestManipulatorHelper, + protected UrlGenerator $oUrlGenerator, + protected BrickCollection $oBrickCollection, + protected ObjectFormHandlerHelper $oObjectFormHandlerHelper, + protected NavigationRuleHelper $oNavigationRuleHelper, + protected ContextManipulatorHelper $oContextManipulatorHelper + + ) + { + } + /** * Displays an cmdbAbstractObject (from its ID) if the connected user is allowed to. * @@ -85,11 +117,6 @@ class ObjectController extends BrickController */ public function ViewAction(Request $oRequest, $sObjectClass, $sObjectId) { - /** @var \Combodo\iTop\Portal\Helper\SecurityHelper $oSecurityHelper */ - $oSecurityHelper = $this->get('security_helper'); - /** @var \Combodo\iTop\Portal\Helper\ScopeValidatorHelper $oScopeValidator */ - $oScopeValidator = $this->get('scope_validator'); - // Checking parameters if ($sObjectClass === '' || $sObjectId === '') { IssueLog::Info(__METHOD__.' at line '.__LINE__.' : sObjectClass and sObjectId expected, "'.$sObjectClass.'" and "'.$sObjectId.'" given.'); @@ -97,14 +124,14 @@ class ObjectController extends BrickController } // Checking security layers - if (!$oSecurityHelper->IsActionAllowed(UR_ACTION_READ, $sObjectClass, $sObjectId)) { + if (!$this->oSecurityHelper->IsActionAllowed(UR_ACTION_READ, $sObjectClass, $sObjectId)) { IssueLog::Warning(__METHOD__.' at line '.__LINE__.' : User #'.UserRights::GetUserId().' not allowed to read '.$sObjectClass.'::'.$sObjectId.' object.'); throw new HttpException(Response::HTTP_NOT_FOUND, Dict::S('UI:ObjectDoesNotExist')); } // Retrieving object $oObject = MetaModel::GetObject($sObjectClass, $sObjectId, false /* MustBeFound */, - $oScopeValidator->IsAllDataAllowedForScope(UserRights::ListProfiles(), $sObjectClass)); + $this->oScopeValidatorHelper->IsAllDataAllowedForScope(UserRights::ListProfiles(), $sObjectClass)); if ($oObject === null) { // We should never be there as the secuirty helper makes sure that the object exists, but just in case. IssueLog::Info(__METHOD__.' at line '.__LINE__.' : Could not load object '.$sObjectClass.'::'.$sObjectId.'.'); @@ -134,11 +161,6 @@ class ObjectController extends BrickController */ public function ViewFromAttributeAction(Request $oRequest, $sObjectClass, $sObjectAttCode, $sObjectAttValue) { - /** @var \Combodo\iTop\Portal\Helper\SecurityHelper $oSecurityHelper */ - $oSecurityHelper = $this->get('security_helper'); - /** @var \Combodo\iTop\Portal\Helper\ScopeValidatorHelper $oScopeValidator */ - $oScopeValidator = $this->get('scope_validator'); - // Checking parameters if ($sObjectClass === '' || $sObjectAttCode === '' || $sObjectAttValue === '') { IssueLog::Info(__METHOD__.' at line '.__LINE__.' : sObjectClass and sObjectAttCode/sObjectAttValue expected, "' @@ -147,7 +169,7 @@ class ObjectController extends BrickController } $oObject = MetaModel::GetObjectByColumn($sObjectClass, $sObjectAttCode, $sObjectAttValue, false, - $oScopeValidator->IsAllDataAllowedForScope(UserRights::ListProfiles(), $sObjectClass)); + $this->oScopeValidatorHelper->IsAllDataAllowedForScope(UserRights::ListProfiles(), $sObjectClass)); if ($oObject === null) { // null if object not found or multiple matches IssueLog::Info(__METHOD__.' at line '.__LINE__.' : Could not load object '.$sObjectClass.'" and "'.$sObjectAttCode.' / '.$sObjectAttValue.'.'); @@ -156,7 +178,7 @@ class ObjectController extends BrickController // Checking security layers $sObjectId = $oObject->GetKey(); - if (!$oSecurityHelper->IsActionAllowed(UR_ACTION_READ, $sObjectClass, $sObjectId)) { + if (!$this->oSecurityHelper->IsActionAllowed(UR_ACTION_READ, $sObjectClass, $sObjectId)) { IssueLog::Warning(__METHOD__.' at line '.__LINE__.' : User #'.UserRights::GetUserId().' not allowed to read '.$sObjectClass.'::'.$sObjectId.' object.'); throw new HttpException(Response::HTTP_NOT_FOUND, Dict::S('UI:ObjectDoesNotExist')); } @@ -182,31 +204,21 @@ class ObjectController extends BrickController */ protected function PrepareViewObjectResponse(Request $oRequest, DBObject $oObject) { - /** @var \Combodo\iTop\Portal\Helper\SecurityHelper $oSecurityHelper */ - $oSecurityHelper = $this->get('security_helper'); - /** @var \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulator */ - $oRequestManipulator = $this->get('request_manipulator'); - /** @var \Combodo\iTop\Portal\Routing\UrlGenerator $oUrlGenerator */ - $oUrlGenerator = $this->get('url_generator'); - /** @var \Combodo\iTop\Portal\Helper\ObjectFormHandlerHelper $oObjectFormHandler */ - $oObjectFormHandler = $this->get('object_form_handler'); - /** @var \Combodo\iTop\Portal\Brick\BrickCollection $oBrickCollection */ - $oBrickCollection = $this->get('brick_collection'); - $sOperation = $oRequestManipulator->ReadParam('operation', ''); + $sOperation = $this->oRequestManipulatorHelper->ReadParam('operation', ''); $sObjectClass = get_class($oObject); $sObjectId = $oObject->GetKey(); $oObject->FireEvent(EVENT_DISPLAY_OBJECT_DETAILS); $aData = array('sMode' => 'view'); - $aData['form'] = $oObjectFormHandler->HandleForm($oRequest, $aData['sMode'], $sObjectClass, $sObjectId); + $aData['form'] = $this->oObjectFormHandlerHelper->HandleForm($oRequest, $aData['sMode'], $sObjectClass, $sObjectId); $aData['form']['title'] = Dict::Format('Brick:Portal:Object:Form:View:Title', MetaModel::GetName($sObjectClass), $oObject->GetName()); // Add an edit button if user is allowed - if ($oSecurityHelper->IsActionAllowed(UR_ACTION_MODIFY, $sObjectClass, $sObjectId)) { - $sModifyUrl = $oUrlGenerator->generate('p_object_edit', array('sObjectClass' => $sObjectClass, 'sObjectId' => $sObjectId)); + if ($this->oSecurityHelper->IsActionAllowed(UR_ACTION_MODIFY, $sObjectClass, $sObjectId)) { + $sModifyUrl = $this->oUrlGenerator->generate('p_object_edit', array('sObjectClass' => $sObjectClass, 'sObjectId' => $sObjectId)); $oModifyButton = new JSButtonItem( 'modify_object', Dict::S('UI:Menu:Modify'), @@ -226,9 +238,9 @@ class ObjectController extends BrickController } } else { // Adding brick if it was passed - $sBrickId = $oRequestManipulator->ReadParam('sBrickId', ''); + $sBrickId = $this->oRequestManipulatorHelper->ReadParam('sBrickId', ''); if (!empty($sBrickId)) { - $oBrick = $oBrickCollection->GetBrickById($sBrickId); + $oBrick = $this->oBrickCollection->GetBrickById($sBrickId); if ($oBrick !== null) { $aData['oBrick'] = $oBrick; } @@ -256,17 +268,6 @@ class ObjectController extends BrickController */ public function EditAction(Request $oRequest, $sObjectClass, $sObjectId) { - /** @var \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulator */ - $oRequestManipulator = $this->get('request_manipulator'); - /** @var \Combodo\iTop\Portal\Helper\ObjectFormHandlerHelper $oObjectFormHandler */ - $oObjectFormHandler = $this->get('object_form_handler'); - /** @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\Brick\BrickCollection $oBrickCollection */ - $oBrickCollection = $this->get('brick_collection'); - // Checking parameters if ($sObjectClass === '' || $sObjectId === '') { @@ -277,7 +278,7 @@ class ObjectController extends BrickController // Checking security layers // Warning : This is a dirty quick fix to allow editing its own contact information $bAllowWrite = ($sObjectClass === 'Person' && $sObjectId == UserRights::GetContactId()); - if (!$oSecurityHelper->IsActionAllowed(UR_ACTION_MODIFY, $sObjectClass, $sObjectId) && !$bAllowWrite) + if (!$this->oSecurityHelper->IsActionAllowed(UR_ACTION_MODIFY, $sObjectClass, $sObjectId) && !$bAllowWrite) { IssueLog::Warning(__METHOD__.' at line '.__LINE__.' : User #'.UserRights::GetUserId().' not allowed to modify '.$sObjectClass.'::'.$sObjectId.' object.'); throw new HttpException(Response::HTTP_NOT_FOUND, Dict::S('UI:ObjectDoesNotExist')); @@ -285,7 +286,7 @@ class ObjectController extends BrickController // Retrieving object $oObject = MetaModel::GetObject($sObjectClass, $sObjectId, false /* MustBeFound */, - $oScopeValidator->IsAllDataAllowedForScope(UserRights::ListProfiles(), $sObjectClass)); + $this->oScopeValidatorHelper->IsAllDataAllowedForScope(UserRights::ListProfiles(), $sObjectClass)); if ($oObject === null) { // We should never be there as the secuirty helper makes sure that the object exists, but just in case. @@ -293,10 +294,10 @@ class ObjectController extends BrickController throw new HttpException(Response::HTTP_NOT_FOUND, Dict::S('UI:ObjectDoesNotExist')); } - $sOperation = $oRequestManipulator->ReadParam('operation', ''); + $sOperation = $this->oRequestManipulatorHelper->ReadParam('operation', ''); $aData = array('sMode' => 'edit'); - $aData['form'] = $oObjectFormHandler->HandleForm($oRequest, $aData['sMode'], $sObjectClass, $sObjectId); + $aData['form'] = $this->oObjectFormHandlerHelper->HandleForm($oRequest, $aData['sMode'], $sObjectClass, $sObjectId); $aData['form']['title'] = Dict::Format('Brick:Portal:Object:Form:Edit:Title', MetaModel::GetName($sObjectClass), $aData['form']['object_name']); @@ -316,10 +317,10 @@ class ObjectController extends BrickController else { // Adding brick if it was passed - $sBrickId = $oRequestManipulator->ReadParam('sBrickId', ''); + $sBrickId = $this->oRequestManipulatorHelper->ReadParam('sBrickId', ''); if (!empty($sBrickId)) { - $oBrick = $oBrickCollection->GetBrickById($sBrickId); + $oBrick = $this->oBrickCollection->GetBrickById($sBrickId); if ($oBrick !== null) { $aData['oBrick'] = $oBrick; @@ -436,19 +437,6 @@ class ObjectController extends BrickController /** @var array $aCombodoPortalInstanceConf */ $aCombodoPortalInstanceConf = $this->getParameter('combodo.portal.instance.conf'); - /** @var \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulator */ - $oRequestManipulator = $this->get('request_manipulator'); - /** @var \Combodo\iTop\Portal\Routing\UrlGenerator $oUrlGenerator */ - $oUrlGenerator = $this->get('url_generator'); - /** @var \Combodo\iTop\Portal\Helper\NavigationRuleHelper $oNavigationRuleHelper */ - $oNavigationRuleHelper = $this->get('navigation_rule_helper'); - /** @var \Combodo\iTop\Portal\Helper\ObjectFormHandlerHelper $oObjectFormHandler */ - $oObjectFormHandler = $this->get('object_form_handler'); - /** @var \Combodo\iTop\Portal\Helper\SecurityHelper $oSecurityHelper */ - $oSecurityHelper = $this->get('security_helper'); - /** @var \Combodo\iTop\Portal\Helper\ScopeValidatorHelper $oScopeValidator */ - $oScopeValidator = $this->get('scope_validator'); - // Checking parameters if ($sObjectClass === '' || $sObjectId === '' || $sStimulusCode === '') { @@ -458,18 +446,18 @@ class ObjectController extends BrickController } // Checking security layers - if (!$oSecurityHelper->IsActionAllowed(UR_ACTION_MODIFY, $sObjectClass, $sObjectId)) + if (!$this->oSecurityHelper->IsActionAllowed(UR_ACTION_MODIFY, $sObjectClass, $sObjectId)) { IssueLog::Warning(__METHOD__.' at line '.__LINE__.' : User #'.UserRights::GetUserId().' not allowed to modify '.$sObjectClass.'::'.$sObjectId.' object.'); throw new HttpException(Response::HTTP_NOT_FOUND, Dict::S('UI:ObjectDoesNotExist')); } - if (!$oSecurityHelper->IsStimulusAllowed($sStimulusCode, $sObjectClass)) + if (!$this->oSecurityHelper->IsStimulusAllowed($sStimulusCode, $sObjectClass)) { throw new HttpException(Response::HTTP_NOT_FOUND, Dict::S('UI:ObjectDoesNotExist')); } // Retrieving object - $oObject = MetaModel::GetObject($sObjectClass, $sObjectId, false /* MustBeFound */, $oScopeValidator->IsAllDataAllowedForScope(UserRights::ListProfiles(), $sObjectClass)); + $oObject = MetaModel::GetObject($sObjectClass, $sObjectId, false /* MustBeFound */, $this->oScopeValidatorHelper->IsAllDataAllowedForScope(UserRights::ListProfiles(), $sObjectClass)); if ($oObject === null) { // We should never be there as the secuirty helper makes sure that the object exists, but just in case. @@ -478,7 +466,7 @@ class ObjectController extends BrickController } // Retrieving request parameters - $sOperation = $oRequestManipulator->ReadParam('operation', ''); + $sOperation = $this->oRequestManipulatorHelper->ReadParam('operation', ''); // Retrieving form properties $aStimuliForms = ApplicationHelper::GetLoadedFormFromClass($aCombodoPortalInstanceConf['forms'], $sObjectClass, 'apply_stimulus'); @@ -505,7 +493,7 @@ class ObjectController extends BrickController $oRequest->request->set('apply_stimulus', array('code' => $sStimulusCode)); $aData = array('sMode' => 'apply_stimulus'); - $aData['form'] = $oObjectFormHandler->HandleForm($oRequest, $aData['sMode'], $sObjectClass, $sObjectId, $aFormProperties); + $aData['form'] = $this->oObjectFormHandlerHelper->HandleForm($oRequest, $aData['sMode'], $sObjectClass, $sObjectId, $aFormProperties); $aData['form']['title'] = Dict::Format('Brick:Portal:Object:Form:Stimulus:Title'); // TODO : This is a ugly patch to avoid showing a modal with a readonly form to the user as it would prevent user from finishing the transition. @@ -523,12 +511,12 @@ class ObjectController extends BrickController $oSubRequest->request->set('formmanager_data', json_encode($aData['form']['formmanager_data'])); $aData = array('sMode' => 'apply_stimulus'); - $aData['form'] = $oObjectFormHandler->HandleForm($oSubRequest, $aData['sMode'], $sObjectClass, $sObjectId, + $aData['form'] = $this->oObjectFormHandlerHelper->HandleForm($oSubRequest, $aData['sMode'], $sObjectClass, $sObjectId, $aFormProperties); // Reload the object to make sure we have it in a clean state $oObject->Reload(true); - $aNavigationRules = $oNavigationRuleHelper->PrepareRulesForForm($aFormProperties, $oObject, true); + $aNavigationRules = $this->oNavigationRuleHelper->PrepareRulesForForm($aFormProperties, $oObject, true); // Redefining the array to be as simple as possible : $aData = array( @@ -585,16 +573,6 @@ class ObjectController extends BrickController */ public function SearchAutocompleteAction(Request $oRequest, $sTargetAttCode, $sHostObjectClass, $sHostObjectId = null) { - /** @var \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulator */ - $oRequestManipulator = $this->get('request_manipulator'); - /** @var \Combodo\iTop\Portal\Helper\ContextManipulatorHelper $oContextManipulator */ - $oContextManipulator = $this->get('context_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\ObjectFormHandlerHelper $oFormHandlerHelper */ - $oFormHandlerHelper = $this->get('object_form_handler'); $aData = array( 'results' => array( @@ -618,7 +596,7 @@ class ObjectController extends BrickController $sFieldId = $aRequestContent['sFieldId']; // Checking security layers - if (!$oSecurityHelper->IsActionAllowed(UR_ACTION_READ, $sHostObjectClass, $sHostObjectId)) + if (!$this->oSecurityHelper->IsActionAllowed(UR_ACTION_READ, $sHostObjectClass, $sHostObjectId)) { IssueLog::Warning(__METHOD__.' at line '.__LINE__.' : Could not load object '.$sHostObjectClass.'::'.$sHostObjectId.'.'); throw new HttpException(Response::HTTP_NOT_FOUND, Dict::S('UI:ObjectDoesNotExist')); @@ -637,10 +615,10 @@ class ObjectController extends BrickController // // Note : The action rules must be a base64-encoded JSON object, this is just so users are tempted to changes values. // But it would not be a security issue as it only presets values in the form. - $sActionRulesToken = $oRequestManipulator->ReadParam('ar_token', ''); - $aActionRules = (!empty($sActionRulesToken)) ? $oContextManipulator->DecodeRulesToken($sActionRulesToken) : array(); + $sActionRulesToken = $this->oRequestManipulatorHelper->ReadParam('ar_token', ''); + $aActionRules = (!empty($sActionRulesToken)) ? $this->oContextManipulatorHelper->DecodeRulesToken($sActionRulesToken) : array(); // Preparing object - $oContextManipulator->PrepareObject($aActionRules, $oHostObject); + $this->oContextManipulatorHelper->PrepareObject($aActionRules, $oHostObject); } // Updating host object with form data / values @@ -649,14 +627,14 @@ class ObjectController extends BrickController if (!empty($sFormManagerClass) && !empty($sFormManagerData)) { /** @var \Combodo\iTop\Portal\Form\ObjectFormManager $oFormManager */ $oFormManager = $sFormManagerClass::FromJSON($sFormManagerData); - $oFormManager->SetObjectFormHandlerHelper($oFormHandlerHelper); + $oFormManager->SetObjectFormHandlerHelper($this->oObjectFormHandlerHelper); $oFormManager->SetObject($oHostObject); // Applying action rules if present if (($oFormManager->GetActionRulesToken() !== null) && ($oFormManager->GetActionRulesToken() !== '')) { $aActionRules = ContextManipulatorHelper::DecodeRulesToken($oFormManager->GetActionRulesToken()); $oObj = $oFormManager->GetObject(); - $oContextManipulator->PrepareObject($aActionRules, $oObj); + $this->oContextManipulatorHelper->PrepareObject($aActionRules, $oObj); $oFormManager->SetObject($oObj); } @@ -700,7 +678,7 @@ class ObjectController extends BrickController // It is the responsibility of the template designer to write the right query so the user see only what he should. if ($oTargetAttDef->GetEditClass() !== 'CustomFields') { - $oScopeSearch = $oScopeValidator->GetScopeFilterForProfiles(UserRights::ListProfiles(), $sTargetObjectClass, UR_ACTION_READ); + $oScopeSearch = $this->oScopeValidatorHelper->GetScopeFilterForProfiles(UserRights::ListProfiles(), $sTargetObjectClass, UR_ACTION_READ); $oSearch = $oSearch->Intersect($oScopeSearch); // - Allowing all data if necessary if ($oScopeSearch->IsAllDataAllowed()) @@ -765,27 +743,16 @@ class ObjectController extends BrickController /** @var array $aCombodoPortalInstanceConf */ $aCombodoPortalInstanceConf = $this->getParameter('combodo.portal.instance.conf'); - /** @var \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulator */ - $oRequestManipulator = $this->get('request_manipulator'); - /** @var \Combodo\iTop\Portal\Helper\ContextManipulatorHelper $oContextManipulator */ - $oContextManipulator = $this->get('context_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\ObjectFormHandlerHelper $oFormHandlerHelper */ - $oFormHandlerHelper = $this->get('object_form_handler'); - $aData = array( 'sMode' => 'search_regular', 'sTargetAttCode' => $sTargetAttCode, 'sHostObjectClass' => $sHostObjectClass, 'sHostObjectId' => $sHostObjectId, - 'sActionRulesToken' => $oRequestManipulator->ReadParam('ar_token', ''), + 'sActionRulesToken' => $this->oRequestManipulatorHelper->ReadParam('ar_token', ''), ); // Checking security layers - if (!$oSecurityHelper->IsActionAllowed(UR_ACTION_READ, $sHostObjectClass, $sHostObjectId)) + if (!$this->oSecurityHelper->IsActionAllowed(UR_ACTION_READ, $sHostObjectClass, $sHostObjectId)) { IssueLog::Warning(__METHOD__.' at line '.__LINE__.' : User #'.UserRights::GetUserId().' not allowed to read '.$sHostObjectClass.'::'.$sHostObjectId.' object.'); throw new HttpException(Response::HTTP_NOT_FOUND, Dict::S('UI:ObjectDoesNotExist')); @@ -806,41 +773,41 @@ class ObjectController extends BrickController // But it would not be a security issue as it only presets values in the form. $aActionRules = !empty($aData['sActionRulesToken']) ? ContextManipulatorHelper::DecodeRulesToken($aData['sActionRulesToken']) : array(); // Preparing object - $oContextManipulator->PrepareObject($aActionRules, $oHostObject); + $this->oContextManipulatorHelper->PrepareObject($aActionRules, $oHostObject); } // Updating host object with form data / values - $sFormManagerClass = $oRequestManipulator->ReadParam('formmanager_class', '', FILTER_UNSAFE_RAW); - $sFormManagerData = $oRequestManipulator->ReadParam('formmanager_data', '', FILTER_UNSAFE_RAW); + $sFormManagerClass = $this->oRequestManipulatorHelper->ReadParam('formmanager_class', '', FILTER_UNSAFE_RAW); + $sFormManagerData = $this->oRequestManipulatorHelper->ReadParam('formmanager_data', '', FILTER_UNSAFE_RAW); if (!empty($sFormManagerClass) && !empty($sFormManagerData)) { /** @var \Combodo\iTop\Portal\Form\ObjectFormManager $oFormManager */ $oFormManager = $sFormManagerClass::FromJSON($sFormManagerData); - $oFormManager->SetObjectFormHandlerHelper($oFormHandlerHelper); + $oFormManager->SetObjectFormHandlerHelper($this->oObjectFormHandlerHelper); $oFormManager->SetObject($oHostObject); // Applying action rules if present if (($oFormManager->GetActionRulesToken() !== null) && ($oFormManager->GetActionRulesToken() !== '')) { $aActionRules = ContextManipulatorHelper::DecodeRulesToken($oFormManager->GetActionRulesToken()); $oObj = $oFormManager->GetObject(); - $oContextManipulator->PrepareObject($aActionRules, $oObj); + $this->oContextManipulatorHelper->PrepareObject($aActionRules, $oObj); $oFormManager->SetObject($oObj); } // Updating host object $oFormManager->OnUpdate(array( - 'currentValues' => $oRequestManipulator->ReadParam('current_values', array(), FILTER_UNSAFE_RAW), + 'currentValues' => $this->oRequestManipulatorHelper->ReadParam('current_values', array(), FILTER_UNSAFE_RAW), )); $oHostObject = $oFormManager->GetObject(); } // Retrieving request parameters - $iPageNumber = $oRequestManipulator->ReadParam('iPageNumber', static::DEFAULT_PAGE_NUMBER, FILTER_SANITIZE_NUMBER_INT); - $iListLength = $oRequestManipulator->ReadParam('iListLength', static::DEFAULT_LIST_LENGTH, FILTER_SANITIZE_NUMBER_INT); - $bInitialPass = $oRequestManipulator->HasParam('draw') ? false : true; - $sQuery = $oRequestManipulator->ReadParam('sSearchValue', ''); - $sFormPath = $oRequestManipulator->ReadParam('sFormPath', ''); - $sFieldId = $oRequestManipulator->ReadParam('sFieldId', ''); - $aObjectIdsToIgnore = $oRequestManipulator->ReadParam('aObjectIdsToIgnore', null, FILTER_UNSAFE_RAW); + $iPageNumber = $this->oRequestManipulatorHelper->ReadParam('iPageNumber', static::DEFAULT_PAGE_NUMBER, FILTER_SANITIZE_NUMBER_INT); + $iListLength = $this->oRequestManipulatorHelper->ReadParam('iListLength', static::DEFAULT_LIST_LENGTH, FILTER_SANITIZE_NUMBER_INT); + $bInitialPass = $this->oRequestManipulatorHelper->HasParam('draw') ? false : true; + $sQuery = $this->oRequestManipulatorHelper->ReadParam('sSearchValue', ''); + $sFormPath = $this->oRequestManipulatorHelper->ReadParam('sFormPath', ''); + $sFieldId = $this->oRequestManipulatorHelper->ReadParam('sFieldId', ''); + $aObjectIdsToIgnore = $this->oRequestManipulatorHelper->ReadParam('aObjectIdsToIgnore', null, FILTER_UNSAFE_RAW); // Building search query // - Retrieving target object class from attcode @@ -889,7 +856,7 @@ class ObjectController extends BrickController // - Retrieving scope search // Note : This do NOT apply to custom fields as the portal administrator is not supposed to know which objects will be put in the templates. // It is the responsibility of the template designer to write the right query so the user see only what he should. - $oScopeSearch = $oScopeValidator->GetScopeFilterForProfiles(UserRights::ListProfiles(), $sTargetObjectClass, UR_ACTION_READ); + $oScopeSearch = $this->oScopeValidatorHelper->GetScopeFilterForProfiles(UserRights::ListProfiles(), $sTargetObjectClass, UR_ACTION_READ); $aInternalParams = array(); if (($oScopeSearch === null) && ($oTargetAttDef->GetEditClass() !== 'CustomFields')) { @@ -1083,12 +1050,6 @@ class ObjectController extends BrickController */ public function DocumentAction(Request $oRequest, $sOperation = null) { - /** @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'); // Setting default operation if ($sOperation === null) @@ -1097,9 +1058,9 @@ class ObjectController extends BrickController } // Retrieving ormDocument's host object - $sObjectClass = $oRequestManipulator->ReadParam('sObjectClass', ''); - $sObjectId = $oRequestManipulator->ReadParam('sObjectId', ''); - $sObjectField = $oRequestManipulator->ReadParam('sObjectField', ''); + $sObjectClass = $this->oRequestManipulatorHelper->ReadParam('sObjectClass', ''); + $sObjectId = $this->oRequestManipulatorHelper->ReadParam('sObjectId', ''); + $sObjectField = $this->oRequestManipulatorHelper->ReadParam('sObjectField', ''); $bCheckSecurity = true; // When reaching to an Attachment, we have to check security on its host object instead of the Attachment itself @@ -1114,7 +1075,7 @@ class ObjectController extends BrickController $sHostId = $oAttachment->Get('item_id'); // Attachments could be linked to host objects without an org_id. Retrieving the attachment would fail if enforced silos are based on org_id - if($oAttachment->Get('item_org_id') === 0 && ($sHostId > 0) && $oSecurityHelper->IsActionAllowed(UR_ACTION_READ, $sHostClass, $sHostId)) { + if($oAttachment->Get('item_org_id') === 0 && ($sHostId > 0) && $this->oSecurityHelper->IsActionAllowed(UR_ACTION_READ, $sHostClass, $sHostId)) { $bCheckSecurity = false; } @@ -1132,14 +1093,14 @@ class ObjectController extends BrickController // Checking security layers // Note: Checking if host object already exists as we can try to download document from an object that is being created - if (($bCheckSecurity === true) && ($sHostId > 0) && !$oSecurityHelper->IsActionAllowed(UR_ACTION_READ, $sHostClass, $sHostId)) + if (($bCheckSecurity === true) && ($sHostId > 0) && !$this->oSecurityHelper->IsActionAllowed(UR_ACTION_READ, $sHostClass, $sHostId)) { IssueLog::Warning(__METHOD__.' at line '.__LINE__.' : User #'.UserRights::GetUserId().' not allowed to retrieve document from attribute '.$sObjectField.' as it not allowed to read '.$sHostClass.'::'.$sHostId.' object.'); throw new HttpException(Response::HTTP_NOT_FOUND, Dict::S('UI:ObjectDoesNotExist')); } // Retrieving object - $bAllowAllDataFlag = ($bCheckSecurity === false) ? true : $oScopeValidator->IsAllDataAllowedForScope(UserRights::ListProfiles(), $sHostClass); + $bAllowAllDataFlag = ($bCheckSecurity === false) ? true : $this->oScopeValidatorHelper->IsAllDataAllowedForScope(UserRights::ListProfiles(), $sHostClass); $oObject = MetaModel::GetObject($sObjectClass, $sObjectId, false /* Must not be found */, $bAllowAllDataFlag); if ($oObject === null) { @@ -1156,7 +1117,7 @@ class ObjectController extends BrickController } else { - $iCacheSec = $oRequestManipulator->ReadParam('cache', 0, FILTER_SANITIZE_NUMBER_INT); + $iCacheSec = $this->oRequestManipulatorHelper->ReadParam('cache', 0, FILTER_SANITIZE_NUMBER_INT); } $aHeaders = array(); @@ -1204,11 +1165,6 @@ class ObjectController extends BrickController */ public function AttachmentAction(Request $oRequest, $sOperation = null) { - /** @var \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulator */ - $oRequestManipulator = $this->get('request_manipulator'); - /** @var \Combodo\iTop\Portal\Routing\UrlGenerator $oUrlGenerator */ - $oUrlGenerator = $this->get('url_generator'); - $aData = array( 'att_id' => 0, 'preview' => false, @@ -1218,14 +1174,14 @@ class ObjectController extends BrickController // Retrieving sOperation from request only if it wasn't forced (determined by the route) if ($sOperation === null) { - $sOperation = $oRequestManipulator->ReadParam('operation', null); + $sOperation = $this->oRequestManipulatorHelper->ReadParam('operation', null); } switch ($sOperation) { case 'add': - $sFieldName = $oRequestManipulator->ReadParam('field_name', ''); - $sObjectClass = $oRequestManipulator->ReadParam('object_class', ''); - $sTempId = $oRequestManipulator->ReadParam('temp_id', ''); + $sFieldName = $this->oRequestManipulatorHelper->ReadParam('field_name', ''); + $sObjectClass = $this->oRequestManipulatorHelper->ReadParam('object_class', ''); + $sTempId = $this->oRequestManipulatorHelper->ReadParam('temp_id', ''); if (empty($sObjectClass) || empty($sTempId)) { @@ -1277,7 +1233,7 @@ class ObjectController extends BrickController // - Route $aRouteParams = array( 'sObjectClass' => 'Attachment', - 'sObjectId' => $oRequestManipulator->ReadParam('sAttachmentId', null), + 'sObjectId' => $this->oRequestManipulatorHelper->ReadParam('sAttachmentId', null), 'sObjectField' => 'contents', ); @@ -1313,17 +1269,13 @@ class ObjectController extends BrickController */ public function GetInformationAsJsonAction(Request $oRequest) { - /** @var \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulator */ - $oRequestManipulator = $this->get('request_manipulator'); - /** @var \Combodo\iTop\Portal\Helper\ScopeValidatorHelper $oScopeValidator */ - $oScopeValidator = $this->get('scope_validator'); $aData = array(); // Retrieving parameters - $sObjectClass = $oRequestManipulator->ReadParam('sObjectClass', ''); - $aObjectIds = $oRequestManipulator->ReadParam('aObjectIds', array(), FILTER_UNSAFE_RAW); - $aObjectAttCodes = $oRequestManipulator->ReadParam('aObjectAttCodes', array(), FILTER_UNSAFE_RAW); + $sObjectClass = $this->oRequestManipulatorHelper->ReadParam('sObjectClass', ''); + $aObjectIds = $this->oRequestManipulatorHelper->ReadParam('aObjectIds', array(), FILTER_UNSAFE_RAW); + $aObjectAttCodes = $this->oRequestManipulatorHelper->ReadParam('aObjectAttCodes', array(), FILTER_UNSAFE_RAW); if (empty($sObjectClass) || empty($aObjectIds) || empty($aObjectAttCodes)) { IssueLog::Info(__METHOD__.' at line '.__LINE__.' : sObjectClass, aObjectIds and aObjectAttCodes expected, "'.$sObjectClass.'", "'.implode('/', $aObjectIds).'" given.'); @@ -1331,7 +1283,7 @@ class ObjectController extends BrickController } // Building the search - $bIgnoreSilos = $oScopeValidator->IsAllDataAllowedForScope(UserRights::ListProfiles(), $sObjectClass); + $bIgnoreSilos = $this->oScopeValidatorHelper->IsAllDataAllowedForScope(UserRights::ListProfiles(), $sObjectClass); $aParams = array('objects_id' => $aObjectIds); $oSearch = DBObjectSearch::FromOQL("SELECT $sObjectClass WHERE id IN (:objects_id)"); if ($bIgnoreSilos === true) { @@ -1371,11 +1323,6 @@ class ObjectController extends BrickController */ public function GetInformationForLinkedSetAsJsonAction(Request $oRequest) { - /** @var \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulator */ - $oRequestManipulator = $this->get('request_manipulator'); - /** @var \Combodo\iTop\Portal\Helper\ScopeValidatorHelper $oScopeValidator */ - $oScopeValidator = $this->get('scope_validator'); - // Data array $aData = array( 'js_inline' => '', @@ -1383,12 +1330,12 @@ class ObjectController extends BrickController ); // Retrieving parameters - $sObjectClass = $oRequestManipulator->ReadParam('sObjectClass', ''); - $sLinkClass = $oRequestManipulator->ReadParam('sLinkClass', ''); - $aObjectIds = $oRequestManipulator->ReadParam('aObjectIds', array(), FILTER_UNSAFE_RAW); - $aObjectAttCodes = $oRequestManipulator->ReadParam('aObjectAttCodes', array(), FILTER_UNSAFE_RAW); - $aLinkAttCodes = $oRequestManipulator->ReadParam('aLinkAttCodes', array(), FILTER_UNSAFE_RAW); - $sDateTimePickerWidgetParent = $oRequestManipulator->ReadParam('sDateTimePickerWidgetParent', array(), FILTER_UNSAFE_RAW); + $sObjectClass = $this->oRequestManipulatorHelper->ReadParam('sObjectClass', ''); + $sLinkClass = $this->oRequestManipulatorHelper->ReadParam('sLinkClass', ''); + $aObjectIds = $this->oRequestManipulatorHelper->ReadParam('aObjectIds', array(), FILTER_UNSAFE_RAW); + $aObjectAttCodes = $this->oRequestManipulatorHelper->ReadParam('aObjectAttCodes', array(), FILTER_UNSAFE_RAW); + $aLinkAttCodes = $this->oRequestManipulatorHelper->ReadParam('aLinkAttCodes', array(), FILTER_UNSAFE_RAW); + $sDateTimePickerWidgetParent = $this->oRequestManipulatorHelper->ReadParam('sDateTimePickerWidgetParent', array(), FILTER_UNSAFE_RAW); if (empty($sObjectClass) || empty($aObjectIds) || empty($aObjectAttCodes)) { IssueLog::Info(__METHOD__.' at line '.__LINE__.' : sObjectClass, aObjectIds and aObjectAttCodes expected, "'.$sObjectClass.'", "'.implode('/', @@ -1397,7 +1344,7 @@ class ObjectController extends BrickController } // Building the search - $bIgnoreSilos = $oScopeValidator->IsAllDataAllowedForScope(UserRights::ListProfiles(), $sObjectClass); + $bIgnoreSilos = $this->oScopeValidatorHelper->IsAllDataAllowedForScope(UserRights::ListProfiles(), $sObjectClass); $aParams = array('objects_id' => $aObjectIds); $oSearch = DBObjectSearch::FromOQL("SELECT $sObjectClass WHERE id IN (:objects_id)"); if ($bIgnoreSilos === true) @@ -1460,11 +1407,6 @@ class ObjectController extends BrickController */ protected function PrepareObjectInformation(DBObject $oObject, $aAttCodes = array()) { - /** @var \Combodo\iTop\Portal\Routing\UrlGenerator $oUrlGenerator */ - $oUrlGenerator = $this->get('url_generator'); - /** @var \Combodo\iTop\Portal\Helper\SecurityHelper $oSecurityHelper */ - $oSecurityHelper = $this->get('security_helper'); - $sObjectClass = get_class($oObject); $aObjectData = array( 'id' => $oObject->GetKey(), @@ -1496,9 +1438,9 @@ class ObjectController extends BrickController $aAttData['value'] = $oObject->GetAsHTML($oAttDef->GetCode().'_friendlyname'); // Checking if user can access object's external key - if ($oSecurityHelper->IsActionAllowed(UR_ACTION_READ, $oAttDef->GetTargetClass())) + if ($this->oSecurityHelper->IsActionAllowed(UR_ACTION_READ, $oAttDef->GetTargetClass())) { - $aAttData['url'] = $oUrlGenerator->generate('p_object_view', + $aAttData['url'] = $this->oUrlGenerator->generate('p_object_view', array('sObjectClass' => $oAttDef->GetTargetClass(), 'sObjectId' => $oObject->Get($oAttDef->GetCode()))); } } @@ -1513,7 +1455,7 @@ class ObjectController extends BrickController $oOrmDoc = $oObject->Get($oAttDef->GetCode()); if (is_object($oOrmDoc) && !$oOrmDoc->IsEmpty()) { - $sUrl = $oUrlGenerator->generate('p_object_document_display', [ + $sUrl = $this->oUrlGenerator->generate('p_object_document_display', [ 'sObjectClass' => get_class($oObject), 'sObjectId' => $oObject->GetKey(), 'sObjectField' => $oAttDef->GetCode(), @@ -1537,9 +1479,9 @@ class ObjectController extends BrickController if ($oAttDef instanceof AttributeFriendlyName) { // Checking if user can access object - if ($oSecurityHelper->IsActionAllowed(UR_ACTION_READ, $sObjectClass)) + if ($this->oSecurityHelper->IsActionAllowed(UR_ACTION_READ, $sObjectClass)) { - $aAttData['url'] = $oUrlGenerator->generate('p_object_view', + $aAttData['url'] = $this->oUrlGenerator->generate('p_object_view', array('sObjectClass' => $sObjectClass, 'sObjectId' => $oObject->GetKey())); } } @@ -1569,26 +1511,17 @@ class ObjectController extends BrickController */ protected function DisplayCreationForm(Request $oRequest, $sObjectClass) { - /** @var \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulator */ - $oRequestManipulator = $this->get('request_manipulator'); - /** @var \Combodo\iTop\Portal\Helper\ObjectFormHandlerHelper $oObjectFormHandler */ - $oObjectFormHandler = $this->get('object_form_handler'); - /** @var \Combodo\iTop\Portal\Helper\SecurityHelper $oSecurityHelper */ - $oSecurityHelper = $this->get('security_helper'); - /** @var \Combodo\iTop\Portal\Brick\BrickCollection $oBrickCollection */ - $oBrickCollection = $this->get('brick_collection'); - // Checking security layers - if (!$oSecurityHelper->IsActionAllowed(UR_ACTION_CREATE, $sObjectClass)) + if (!$this->oSecurityHelper->IsActionAllowed(UR_ACTION_CREATE, $sObjectClass)) { IssueLog::Warning(__METHOD__.' at line '.__LINE__.' : User #'.UserRights::GetUserId().' not allowed to create '.$sObjectClass.' object.'); throw new HttpException(Response::HTTP_NOT_FOUND, Dict::S('UI:ObjectDoesNotExist')); } - $sOperation = $oRequestManipulator->ReadParam('operation', ''); + $sOperation = $this->oRequestManipulatorHelper->ReadParam('operation', ''); $aData = array('sMode' => 'create'); - $aData['form'] = $oObjectFormHandler->HandleForm($oRequest, $aData['sMode'], $sObjectClass); + $aData['form'] = $this->oObjectFormHandlerHelper->HandleForm($oRequest, $aData['sMode'], $sObjectClass); $aData['form']['title'] = Dict::Format('Brick:Portal:Object:Form:Create:Title', MetaModel::GetName($sObjectClass)); // Preparing response @@ -1607,10 +1540,10 @@ class ObjectController extends BrickController else { // Adding brick if it was passed - $sBrickId = $oRequestManipulator->ReadParam('sBrickId', ''); + $sBrickId = $this->oRequestManipulatorHelper->ReadParam('sBrickId', ''); if (!empty($sBrickId)) { - $oBrick = $oBrickCollection->GetBrickById($sBrickId); + $oBrick = $this->oBrickCollection->GetBrickById($sBrickId); if ($oBrick !== null) { $aData['oBrick'] = $oBrick; @@ -1639,25 +1572,18 @@ class ObjectController extends BrickController */ protected function DisplayLeafClassesForm($sObjectClass) { - /** @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\Brick\BrickCollection $oBrickCollection */ - $oBrickCollection = $this->get('brick_collection'); - $aData = array( 'aLeafClasses' => array(), 'sPageTitle' => Dict::Format('Brick:Portal:Object:Form:Create:Title', MetaModel::GetName($sObjectClass)), 'sLeafClassesListId' => 'leaf_classes_list_' . uniqid(), - 'ar_token' => $oRequestManipulator->ReadParam('ar_token', ''), + 'ar_token' => $this->oRequestManipulatorHelper->ReadParam('ar_token', ''), ); $sTemplatePath = CreateBrick::DEFAULT_PAGE_TEMPLATE_PATH; - $sBrickId = $oRequestManipulator->ReadParam('sBrickId', ''); + $sBrickId = $this->oRequestManipulatorHelper->ReadParam('sBrickId', ''); if (!empty($sBrickId)) { - $oBrick = $oBrickCollection->GetBrickById($sBrickId); + $oBrick = $this->oBrickCollection->GetBrickById($sBrickId); $sTemplatePath = $oBrick->GetPageTemplatePath(); $aData['sBrickId'] = $sBrickId; @@ -1669,7 +1595,7 @@ class ObjectController extends BrickController $aChildClasses = MetaModel::EnumChildClasses($sObjectClass); foreach ($aChildClasses as $sChildClass) { - if (!MetaModel::IsAbstract($sChildClass) && $oSecurityHelper->IsActionAllowed(UR_ACTION_CREATE, $sChildClass)) + if (!MetaModel::IsAbstract($sChildClass) && $this->oSecurityHelper->IsActionAllowed(UR_ACTION_CREATE, $sChildClass)) { $aLeafClasses[] = array( 'id' => $sChildClass, diff --git a/datamodels/2.x/itop-portal-base/portal/src/Controller/SessionMessageController.php b/datamodels/2.x/itop-portal-base/portal/src/Controller/SessionMessageController.php index 38a5ae20d..398ec744c 100644 --- a/datamodels/2.x/itop-portal-base/portal/src/Controller/SessionMessageController.php +++ b/datamodels/2.x/itop-portal-base/portal/src/Controller/SessionMessageController.php @@ -20,6 +20,8 @@ namespace Combodo\iTop\Portal\Controller; +use Combodo\iTop\Portal\Helper\RequestManipulatorHelper; +use Combodo\iTop\Portal\Helper\SessionMessageHelper; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -34,6 +36,20 @@ use Symfony\Component\HttpKernel\Exception\HttpException; */ class SessionMessageController extends AbstractController { + + /** + * @param \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulatorHelper + * @param \Combodo\iTop\Portal\Helper\SessionMessageHelper $oSessionMessageHelper + * + * @since 3.2.0 N°6933 + */ + public function __construct( + protected RequestManipulatorHelper $oRequestManipulatorHelper, + protected SessionMessageHelper $oSessionMessageHelper + ) + { + } + /** * @param \Symfony\Component\HttpFoundation\Request $oRequest * @@ -43,14 +59,9 @@ class SessionMessageController extends AbstractController { $aData = array(); - /** @var \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulator */ - $oRequestManipulator = $this->get('request_manipulator'); - /** @var \Combodo\iTop\Portal\Helper\SessionMessageHelper $oSessionMessageHelper */ - $oSessionMessageHelper = $this->get('session_message_helper'); - // Retrieve parameters - $sMessageSeverity = $oRequestManipulator->ReadParam('sSeverity'); - $sMessageContent = $oRequestManipulator->ReadParam('sContent'); + $sMessageSeverity = $this->oRequestManipulatorHelper->ReadParam('sSeverity'); + $sMessageContent = $this->oRequestManipulatorHelper->ReadParam('sContent'); // Check parameters consistency if (empty($sMessageSeverity) || empty($sMessageContent)) @@ -59,7 +70,7 @@ class SessionMessageController extends AbstractController } // Add message - $oSessionMessageHelper->AddMessage(uniqid(), $sMessageContent, $sMessageSeverity); + $this->oSessionMessageHelper->AddMessage(uniqid(), $sMessageContent, $sMessageSeverity); return new JsonResponse($aData); } diff --git a/datamodels/2.x/itop-portal-base/portal/src/Controller/UserProfileBrickController.php b/datamodels/2.x/itop-portal-base/portal/src/Controller/UserProfileBrickController.php index 06b131343..3025d26fc 100644 --- a/datamodels/2.x/itop-portal-base/portal/src/Controller/UserProfileBrickController.php +++ b/datamodels/2.x/itop-portal-base/portal/src/Controller/UserProfileBrickController.php @@ -20,10 +20,13 @@ namespace Combodo\iTop\Portal\Controller; +use Combodo\iTop\Portal\Brick\BrickCollection; use Combodo\iTop\Portal\Brick\UserProfileBrick; use Combodo\iTop\Portal\Form\PasswordFormManager; use Combodo\iTop\Portal\Form\PreferencesFormManager; use Combodo\iTop\Portal\Helper\ObjectFormHandlerHelper; +use Combodo\iTop\Portal\Helper\RequestManipulatorHelper; +use Combodo\iTop\Portal\Routing\UrlGenerator; use Combodo\iTop\Renderer\Bootstrap\BsFormRenderer; use Exception; use FileUploadException; @@ -45,6 +48,23 @@ use utils; */ class UserProfileBrickController extends BrickController { + /** + * @param \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulatorHelper + * @param \Combodo\iTop\Portal\Helper\ObjectFormHandlerHelper $ObjectFormHandlerHelper + * @param \Combodo\iTop\Portal\Brick\BrickCollection $oBrickCollection + * @param \Combodo\iTop\Portal\Routing\UrlGenerator $oUrlGenerator + * + * @since 3.2.0 N°6933 + */ + public function __construct( + protected RequestManipulatorHelper $oRequestManipulatorHelper, + protected ObjectFormHandlerHelper $ObjectFormHandlerHelper, + protected BrickCollection $oBrickCollection, + protected UrlGenerator $oUrlGenerator + ) + { + } + /** @var string ENUM_FORM_TYPE_PICTURE */ const ENUM_FORM_TYPE_PICTURE = 'picture'; @@ -62,18 +82,11 @@ class UserProfileBrickController extends BrickController */ public function DisplayAction(Request $oRequest, $sBrickId) { - /** @var \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulator */ - $oRequestManipulator = $this->get('request_manipulator'); - /** @var \Combodo\iTop\Portal\Helper\ObjectFormHandlerHelper $ObjectFormHandler */ - $ObjectFormHandler = $this->get('object_form_handler'); - /** @var \Combodo\iTop\Portal\Brick\BrickCollection $oBrickCollection */ - $oBrickCollection = $this->get('brick_collection'); - // If the brick id was not specified, we get the first one registered that is an instance of UserProfileBrick as default if ($sBrickId === null) { /** @var \Combodo\iTop\Portal\Brick\PortalBrick $oTmpBrick */ - foreach ($oBrickCollection->GetBricks() as $oTmpBrick) + foreach ($this->oBrickCollection->GetBricks() as $oTmpBrick) { if ($oTmpBrick instanceof UserProfileBrick) { @@ -90,7 +103,7 @@ class UserProfileBrickController extends BrickController } else { - $oBrick = $oBrickCollection->GetBrickById($sBrickId); + $oBrick = $this->oBrickCollection->GetBrickById($sBrickId); } $aData = array(); @@ -102,7 +115,7 @@ class UserProfileBrickController extends BrickController // If this is ajax call, we are just submitting preferences or password forms if ($oRequest->isXmlHttpRequest()) { - $aCurrentValues = $oRequestManipulator->ReadParam('current_values', array(), FILTER_UNSAFE_RAW); + $aCurrentValues = $this->oRequestManipulatorHelper->ReadParam('current_values', array(), FILTER_UNSAFE_RAW); $sFormType = $aCurrentValues['form_type']; if ($sFormType === PreferencesFormManager::FORM_TYPE) { @@ -132,7 +145,7 @@ class UserProfileBrickController extends BrickController $sCurContactId = $oCurContact->GetKey(); // Preparing forms - $aData['forms']['contact'] = $ObjectFormHandler->HandleForm($oRequest, $sFormMode, $sCurContactClass, $sCurContactId, + $aData['forms']['contact'] = $this->ObjectFormHandlerHelper->HandleForm($oRequest, $sFormMode, $sCurContactClass, $sCurContactId, $oBrick->GetForm()); $aData['forms']['preferences'] = $this->HandlePreferencesForm($oRequest, $sFormMode); // - If user can change password, we display the form @@ -160,21 +173,18 @@ class UserProfileBrickController extends BrickController */ public function HandlePreferencesForm(Request $oRequest, $sFormMode) { - /** @var \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulator */ - $oRequestManipulator = $this->get('request_manipulator'); - /** @var \Combodo\iTop\Portal\Routing\UrlGenerator $oUrlGenerator */ - $oUrlGenerator = $this->get('url_generator'); + $aFormData = array(); // Handling form - $sOperation = $oRequestManipulator->ReadParam('operation', null); + $sOperation = $this->oRequestManipulatorHelper->ReadParam('operation', null); // - Create if ($sOperation === null) { // - Creating renderer $oFormRenderer = new BsFormRenderer(); - $oFormRenderer->SetEndpoint($oUrlGenerator->generate('p_user_profile_brick')); + $oFormRenderer->SetEndpoint($this->oUrlGenerator->generate('p_user_profile_brick')); // - Creating manager $oFormManager = new PreferencesFormManager(); $oFormManager->SetRenderer($oFormRenderer) @@ -190,8 +200,8 @@ class UserProfileBrickController extends BrickController { if ($sOperation === 'submit') { - $sFormManagerClass = $oRequestManipulator->ReadParam('formmanager_class', null, FILTER_UNSAFE_RAW); - $sFormManagerData = $oRequestManipulator->ReadParam('formmanager_data', null, FILTER_UNSAFE_RAW); + $sFormManagerClass = $this->oRequestManipulatorHelper->ReadParam('formmanager_class', null, FILTER_UNSAFE_RAW); + $sFormManagerData = $this->oRequestManipulatorHelper->ReadParam('formmanager_data', null, FILTER_UNSAFE_RAW); if ($sFormManagerClass === null || $sFormManagerData === null) { IssueLog::Error(__METHOD__.' at line '.__LINE__.' : Parameters formmanager_class and formmanager_data must be defined.'); @@ -204,13 +214,13 @@ class UserProfileBrickController extends BrickController $oFormManager = $sFormManagerClass::FromJSON($sFormManagerData); // Applying modification to object $aFormData['validation'] = $oFormManager->OnSubmit(array( - 'currentValues' => $oRequestManipulator->ReadParam('current_values', array(), FILTER_UNSAFE_RAW), + 'currentValues' => $this->oRequestManipulatorHelper->ReadParam('current_values', array(), FILTER_UNSAFE_RAW), )); // Reloading page only if preferences were changed if (($aFormData['validation']['valid'] === true) && !empty($aFormData['validation']['messages']['success'])) { $aFormData['validation']['redirection'] = array( - 'url' => $oUrlGenerator->generate('p_user_profile_brick'), + 'url' => $this->oUrlGenerator->generate('p_user_profile_brick'), 'timeout_duration' => 1000, //since there are several ajax request, we use a longer timeout in hope that they will all be finished in time. A promise would have been more reliable, but since this change is made in a minor version, this approach is less error prone. ); } @@ -245,22 +255,17 @@ class UserProfileBrickController extends BrickController */ public function HandlePasswordForm(Request $oRequest, $sFormMode) { - /** @var \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulator */ - $oRequestManipulator = $this->get('request_manipulator'); - /** @var \Combodo\iTop\Portal\Routing\UrlGenerator $oUrlGenerator */ - $oUrlGenerator = $this->get('url_generator'); - $aFormData = array(); // Handling form $sOperation = /** @var \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulator */ - $oRequestManipulator->ReadParam('operation', null); + $this->oRequestManipulatorHelper->ReadParam('operation', null); // - Create if ($sOperation === null) { // - Creating renderer $oFormRenderer = new BsFormRenderer(); - $oFormRenderer->SetEndpoint($oUrlGenerator->generate('p_user_profile_brick')); + $oFormRenderer->SetEndpoint($this->oUrlGenerator->generate('p_user_profile_brick')); // - Creating manager $oFormManager = new PasswordFormManager(); $oFormManager->SetRenderer($oFormRenderer) @@ -276,8 +281,8 @@ class UserProfileBrickController extends BrickController { if ($sOperation === 'submit') { - $sFormManagerClass = $oRequestManipulator->ReadParam('formmanager_class', null, FILTER_UNSAFE_RAW); - $sFormManagerData = $oRequestManipulator->ReadParam('formmanager_data', null, FILTER_UNSAFE_RAW); + $sFormManagerClass = $this->oRequestManipulatorHelper->ReadParam('formmanager_class', null, FILTER_UNSAFE_RAW); + $sFormManagerData = $this->oRequestManipulatorHelper->ReadParam('formmanager_data', null, FILTER_UNSAFE_RAW); if ($sFormManagerClass === null || $sFormManagerData === null) { IssueLog::Error(__METHOD__.' at line '.__LINE__.' : Parameters formmanager_class and formmanager_data must be defined.'); throw new HttpException(Response::HTTP_INTERNAL_SERVER_ERROR, @@ -289,7 +294,7 @@ class UserProfileBrickController extends BrickController $oFormManager = $sFormManagerClass::FromJSON($sFormManagerData); // Applying modification to object $aFormData['validation'] = $oFormManager->OnSubmit(array( - 'currentValues' => $oRequestManipulator->ReadParam('current_values', array(), FILTER_UNSAFE_RAW), + 'currentValues' => $this->oRequestManipulatorHelper->ReadParam('current_values', array(), FILTER_UNSAFE_RAW), )); } } @@ -321,16 +326,11 @@ class UserProfileBrickController extends BrickController */ public function HandlePictureForm(Request $oRequest) { - /** @var \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulator */ - $oRequestManipulator = $this->get('request_manipulator'); - /** @var \Combodo\iTop\Portal\Routing\UrlGenerator $oUrlGenerator */ - $oUrlGenerator = $this->get('url_generator'); - $aFormData = array(); $sPictureAttCode = 'picture'; // Handling form - $sOperation = $oRequestManipulator->ReadParam('operation', null); + $sOperation = $this->oRequestManipulatorHelper->ReadParam('operation', null); // - No operation specified if ($sOperation === null) { @@ -375,7 +375,7 @@ class UserProfileBrickController extends BrickController // TODO: This should be changed when refactoring the ormDocument GetDisplayUrl() and GetDownloadUrl() in iTop 3.0 $oOrmDoc = $oCurContact->Get($sPictureAttCode); - $aFormData['picture_url'] = $oUrlGenerator->generate('p_object_document_display', [ + $aFormData['picture_url'] = $this->oUrlGenerator->generate('p_object_document_display', [ 'sObjectClass' => get_class($oCurContact), 'sObjectId' => $oCurContact->GetKey(), 'sObjectField' => $sPictureAttCode,