mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 07:24:13 +01:00
N°6933 - Symfony 6.4 - Remove deprecated calls (#577)
* N°6933 - SF 6.4 - Remove deprecated calls
- BrowseBrickController (services access)
* N°6933 - SF 6.4 - Remove deprecated calls
- AggregatePageBrickController (services access)
* N°6933 - SF 6.4 - Remove deprecated calls
- CreateBrickController (services access)
* N°6933 - SF 6.4 - Remove deprecated calls
- ManageBrickController (services access)
* N°6933 - SF 6.4 - Remove deprecated calls
- ObjectController (services access)
* N°6933 - SF 6.4 - Remove deprecated calls
- SessionMessageController (services access)
* N°6933 - SF 6.4 - Remove deprecated calls
- UserProfileBrickController (services access)
* N°6933 - SF 6.4 - Remove deprecated calls
- AbstractController (remove getSubscribedServices override, add setter for router service injection)
* Fix SessionMessageController Call to a member function AddMessage() on null
* Fix depreciation on Request::HEADER_X_FORWARDED_ALL constant in index.php
Chose to move the protection to the yaml config instead as it is possible since Symfony 5.2
Also removed default support for the $_SERVER['TRUSTED_PROXIES'], seems too untrusty. Use TRUSTED_PROXIES env var instead !
See https://jolicode.com/blog/symfony-reverse-proxies-and-ip-protection
* ✏️ N°6933 - SF 6.4 - Remove deprecated calls
- AbstractController (typo)
* N°6933 - SF 6.4 - Remove deprecated calls
- CreateBrickController (remove return type)
* Revert "Fix depreciation on Request::HEADER_X_FORWARDED_ALL constant in index.php"
This reverts commit be4daef79a.
* Update datamodels/2.x/itop-portal-base/portal/src/Controller/AbstractController.php
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
* Update datamodels/2.x/itop-portal-base/portal/src/Controller/BrowseBrickController.php
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
* Update datamodels/2.x/itop-portal-base/portal/src/Controller/BrowseBrickController.php
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
* Update datamodels/2.x/itop-portal-base/portal/src/Controller/ObjectController.php
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
* Update datamodels/2.x/itop-portal-base/portal/src/Controller/AggregatePageBrickController.php
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
* Update datamodels/2.x/itop-portal-base/portal/src/Controller/UserProfileBrickController.php
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
* Update datamodels/2.x/itop-portal-base/portal/src/Controller/UserProfileBrickController.php
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
* Update datamodels/2.x/itop-portal-base/portal/src/Controller/UserProfileBrickController.php
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
* Update datamodels/2.x/itop-portal-base/portal/src/Controller/SessionMessageController.php
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
* Update datamodels/2.x/itop-portal-base/portal/src/Controller/BrowseBrickController.php
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
* N°6933 - SF 6.4 - Remove deprecated calls
- ALl controllers (php doc and parameters names)
---------
Co-authored-by: Pierre Goiffon <pierre.goiffon@combodo.com>
Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
This commit is contained in:
@@ -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'];
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user