diff --git a/datamodels/2.x/itop-portal-base/portal/config/services.yaml b/datamodels/2.x/itop-portal-base/portal/config/services.yaml index 455020169b..bac52bdd1b 100644 --- a/datamodels/2.x/itop-portal-base/portal/config/services.yaml +++ b/datamodels/2.x/itop-portal-base/portal/config/services.yaml @@ -130,4 +130,7 @@ services: public: true browse_brick: alias: Combodo\iTop\Portal\Helper\BrowseBrickHelper + public: true + brick_controller_helper: + alias: Combodo\iTop\Portal\Helper\BrickControllerHelper public: true \ No newline at end of file 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 cfb1e24916..8eb2c5f44a 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 @@ -68,6 +68,8 @@ class BrowseBrickController extends BrickController $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); @@ -75,7 +77,7 @@ class BrowseBrickController extends BrickController // Getting availables browse modes $aBrowseModes = $oBrick->GetAvailablesBrowseModes(); $aBrowseButtons = array_keys($aBrowseModes); - // Getting current browse mode (First from router pamater, then default brick value) + // 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', @@ -360,7 +362,7 @@ class BrowseBrickController extends BrickController $oSet->OptimizeColumnLoad($aColumnAttrs); // Setting specified column sort, setting default datamodel one otherwise - $aSortedParams = $this->ExtractSortParams(); + $aSortedParams = $oBrickControllerHelper->ExtractSortParams(); if (!empty($aSortedParams)) { $oSet->SetOrderBy($aSortedParams); @@ -430,28 +432,4 @@ class BrowseBrickController extends BrickController return $oResponse; } - - /** - * Extract sort params from request and convert them to iTop OQL format - * - * @return array - * - * @since 2.7.0 - */ - protected function ExtractSortParams() - { - /** @var \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulator */ - $oRequestManipulator = $this->get('request_manipulator'); - - // Getting sort params - $aSortParams = $oRequestManipulator->ReadParam('aSortParams', array()); - - // Converting sort direction to proper format for DBObjectSet as it only accept real booleans - foreach ($aSortParams as $sAttributeAlias => $sDirection) - { - $aSortParams[$sAttributeAlias] = ($sDirection === 'true'); - } - - return $aSortParams; - } } 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 468975449c..974d18ca5f 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 @@ -275,14 +275,16 @@ class ManageBrickController extends BrickController /** @var string $sPortalId */ $sPortalId = $this->getParameter('combodo.portal.instance.id'); - /** @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\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'); @@ -402,7 +404,7 @@ class ManageBrickController extends BrickController $this->ManageSearchValue($aData, $oQuery, $sClass, $aColumnsAttrs); // - Transforming search sort params to OQL format - $aSortedParams = $this->ExtractSortParams($aColumnsAttrs); + $aSortedParams = $oBrickControllerHelper->ExtractSortParams(); // Preparing areas // - We need to retrieve distinct values for the grouping attribute @@ -878,30 +880,6 @@ class ManageBrickController extends BrickController $aData['sSearchValue'] = $sSearchValue; } - /** - * Extract sort params from request and convert them to iTop OQL format - * - * @return array - * - * @since 2.7.0 - */ - protected function ExtractSortParams() - { - /** @var \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulator */ - $oRequestManipulator = $this->get('request_manipulator'); - - // Getting sort params - $aSortParams = $oRequestManipulator->ReadParam('aSortParams', array()); - - // Converting sort direction to proper format for DBObjectSet as it only accept real booleans - foreach ($aSortParams as $sAttributeAlias => $sDirection) - { - $aSortParams[$sAttributeAlias] = ($sDirection === 'true'); - } - - return $aSortParams; - } - /** * Get the groups using a given attribute code. * If a limit is given, the remaining groups are aggregated (group by result and search request). diff --git a/datamodels/2.x/itop-portal-base/portal/src/Helper/BrickControllerHelper.php b/datamodels/2.x/itop-portal-base/portal/src/Helper/BrickControllerHelper.php new file mode 100644 index 0000000000..417422d522 --- /dev/null +++ b/datamodels/2.x/itop-portal-base/portal/src/Helper/BrickControllerHelper.php @@ -0,0 +1,68 @@ + + */ +class BrickControllerHelper +{ + /** @var \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulator */ + private $oRequestManipulator; + + /** + * BrowseBrickHelper constructor. + * + * @param \Combodo\iTop\Portal\Helper\RequestManipulatorHelper $oRequestManipulator + */ + public function __construct(RequestManipulatorHelper $oRequestManipulator) + { + $this->oRequestManipulator = $oRequestManipulator; + } + + /** + * Extract sort params from request and convert them to iTop OQL format + * + * @return array + * + * @since 2.7.0 + */ + public function ExtractSortParams() + { + // Getting sort params + $aSortParams = $this->oRequestManipulator->ReadParam('aSortParams', array()); + + // Converting sort direction to proper format for DBObjectSet as it only accept real booleans + foreach ($aSortParams as $sAttributeAlias => $sDirection) + { + $aSortParams[$sAttributeAlias] = ($sDirection === 'true'); + } + + return $aSortParams; + } +} \ No newline at end of file