(Retrofit from trunk) N°1172.2 Fix regression introduced in r5161 (Email notification crash because of portal urls)

SVN:2.4[5196]
This commit is contained in:
Guillaume Lajarige
2018-01-03 09:46:49 +00:00
parent 01e151632f
commit 1fa1a053e4
2 changed files with 41 additions and 28 deletions

View File

@@ -61,7 +61,7 @@ class ApplicationHelper
* @param string $sType Type of files to load, used only in the Exception message, can be anything
* @throws \Exception
*/
static function LoadClasses($sScannedDir, $sFilePattern, $sType)
public static function LoadClasses($sScannedDir, $sFilePattern, $sType)
{
// Loading classes from base portal
foreach (scandir($sScannedDir) as $sFile)
@@ -86,7 +86,7 @@ class ApplicationHelper
* @param string $sScannedDir Directory to load the controllers from
* @throws \Exception
*/
static function LoadControllers($sScannedDir = null)
public static function LoadControllers($sScannedDir = null)
{
if ($sScannedDir === null)
{
@@ -103,7 +103,7 @@ class ApplicationHelper
* @param string $sScannedDir Directory to load the routers from
* @throws \Exception
*/
static function LoadRouters($sScannedDir = null)
public static function LoadRouters($sScannedDir = null)
{
if ($sScannedDir === null)
{
@@ -120,7 +120,7 @@ class ApplicationHelper
* @param string $sScannedDir Directory to load the bricks from
* @throws \Exception
*/
static function LoadBricks($sScannedDir = null)
public static function LoadBricks($sScannedDir = null)
{
if ($sScannedDir === null)
{
@@ -137,7 +137,7 @@ class ApplicationHelper
* @param string $sScannedDir Directory to load the managers from
* @throws \Exception
*/
static function LoadFormManagers($sScannedDir = null)
public static function LoadFormManagers($sScannedDir = null)
{
if ($sScannedDir === null)
{
@@ -154,7 +154,7 @@ class ApplicationHelper
* @param \Silex\Application $oApp
* @throws \Exception
*/
static function RegisterRoutes(Application $oApp)
public static function RegisterRoutes(Application $oApp)
{
$aAllRoutes = array();
@@ -190,7 +190,7 @@ class ApplicationHelper
* @param boolean $bNamesOnly If set to true, function will return only the routes' names, not the objects
* @return array
*/
static function GetRoutes(Application $oApp, $bNamesOnly = false)
public static function GetRoutes(Application $oApp, $bNamesOnly = false)
{
return ($bNamesOnly) ? array_keys($oApp['combodo.portal.instance.routes']) : $oApp['combodo.portal.instance.routes'];
}
@@ -201,7 +201,7 @@ class ApplicationHelper
*
* @param \Twig_Environment $oTwigEnv
*/
static function RegisterTwigExtensions(Twig_Environment &$oTwigEnv)
public static function RegisterTwigExtensions(Twig_Environment &$oTwigEnv)
{
// Filter to translate a string via the Dict::S function
// Usage in twig : {{ 'String:ToTranslate'|dict_s }}
@@ -270,7 +270,7 @@ class ApplicationHelper
*
* @param Application $oApp
*/
static function RegisterExceptionHandler(Application $oApp)
public static function RegisterExceptionHandler(Application $oApp)
{
// Intercepting fatal errors and exceptions
ErrorHandler::register();
@@ -380,7 +380,7 @@ class ApplicationHelper
* @param \Silex\Application $oApp
* @throws Exception
*/
static function LoadPortalConfiguration(Application $oApp)
public static function LoadPortalConfiguration(Application $oApp)
{
try
{
@@ -580,7 +580,7 @@ class ApplicationHelper
* @param \Silex\Application $oApp
* @throws Exception
*/
static function LoadCurrentUser(Application $oApp)
public static function LoadCurrentUser(Application $oApp)
{
// User
$oUser = UserRights::GetUserObject();
@@ -632,7 +632,7 @@ class ApplicationHelper
*
* @param \Combodo\iTop\Portal\Helper\AbstractBrick $oBrick
*/
static function LoadBrickSecurity(AbstractBrick &$oBrick)
public static function LoadBrickSecurity(AbstractBrick &$oBrick)
{
try
{
@@ -672,7 +672,7 @@ class ApplicationHelper
* @return \Combodo\iTop\Portal\Brick\AbstractBrick
* @throws Exception
*/
static function GetLoadedBrickFromId(Application $oApp, $sBrickId)
public static function GetLoadedBrickFromId(Application $oApp, $sBrickId)
{
$bFound = false;
@@ -704,7 +704,7 @@ class ApplicationHelper
* @param string $sMode Form mode to find (view|edit|create)
* @return array
*/
static function GetLoadedFormFromClass(Application $oApp, $sClass, $sMode)
public static function GetLoadedFormFromClass(Application $oApp, $sClass, $sMode)
{
$aForms = $oApp['combodo.portal.instance.conf']['forms'];
@@ -753,7 +753,7 @@ class ApplicationHelper
* @param string $sList List name to find
* @return array Array of attribute codes
*/
static function GetLoadedListFromClass(Application $oApp, $sClass, $sList = 'default')
public static function GetLoadedListFromClass(Application $oApp, $sClass, $sList = 'default')
{
$aLists = $oApp['combodo.portal.instance.conf']['lists'];
$aList = null;
@@ -830,7 +830,7 @@ class ApplicationHelper
* @throws Exception
* @throws DOMFormatException
*/
static protected function LoadBricksConfiguration(Application $oApp, ModuleDesign $oDesign)
protected static function LoadBricksConfiguration(Application $oApp, ModuleDesign $oDesign)
{
$aPortalConf = array(
'bricks' => array(),
@@ -931,7 +931,7 @@ class ApplicationHelper
* @throws Exception
* @throws DOMFormatException
*/
static protected function LoadFormsConfiguration(Application $oApp, ModuleDesign $oDesign)
protected static function LoadFormsConfiguration(Application $oApp, ModuleDesign $oDesign)
{
$aForms = array();
@@ -1162,7 +1162,7 @@ class ApplicationHelper
* @param \Silex\Application $oApp
* @param ModuleDesign $oDesign
*/
static protected function LoadScopesConfiguration(Application $oApp, ModuleDesign $oDesign)
public static function LoadScopesConfiguration(Application $oApp, ModuleDesign $oDesign)
{
$oApp['scope_validator']->Init($oDesign->GetNodes('/module_design/classes/class'));
}
@@ -1173,7 +1173,7 @@ class ApplicationHelper
* @param \Silex\Application $oApp
* @param ModuleDesign $oDesign
*/
static protected function LoadLifecycleConfiguration(Application $oApp, ModuleDesign $oDesign)
protected static function LoadLifecycleConfiguration(Application $oApp, ModuleDesign $oDesign)
{
$oApp['lifecycle_validator']->Init($oDesign->GetNodes('/module_design/classes/class'));
}
@@ -1184,7 +1184,7 @@ class ApplicationHelper
* @param \Silex\Application $oApp
* @param ModuleDesign $oDesign
*/
static protected function LoadActionRulesConfiguration(Application $oApp, ModuleDesign $oDesign)
protected static function LoadActionRulesConfiguration(Application $oApp, ModuleDesign $oDesign)
{
$oApp['context_manipulator']->Init($oDesign->GetNodes('/module_design/action_rules/action_rule'));
}
@@ -1196,7 +1196,7 @@ class ApplicationHelper
* @param ModuleDesign $oDesign
* @return array
*/
static protected function LoadListsConfiguration(Application $oApp, ModuleDesign $oDesign)
protected static function LoadListsConfiguration(Application $oApp, ModuleDesign $oDesign)
{
$iDefaultItemRank = 0;
$aClassesLists = array();
@@ -1283,7 +1283,7 @@ class ApplicationHelper
* @param \Silex\Application $oApp
* @return array
*/
static protected function LoadUIExtensions(Application $oApp)
protected static function LoadUIExtensions(Application $oApp)
{
$aUIExtensions = array(
'css_files' => array(),

View File

@@ -39,17 +39,22 @@ class iTopPortalEditUrlMaker implements iDBObjectURLMaker
require_once APPROOT . '/lib/silex/vendor/autoload.php';
require_once APPROOT . '/env-' . utils::GetCurrentEnvironment() . '/itop-portal-base/portal/src/providers/urlgeneratorserviceprovider.class.inc.php';
require_once APPROOT . '/env-' . utils::GetCurrentEnvironment() . '/itop-portal-base/portal/src/helpers/urlgeneratorhelper.class.inc.php';
require_once APPROOT . '/env-' . utils::GetCurrentEnvironment() . '/itop-portal-base/portal/src/providers/scopevalidatorserviceprovider.class.inc.php';
require_once APPROOT . '/env-' . utils::GetCurrentEnvironment() . '/itop-portal-base/portal/src/helpers/scopevalidatorhelper.class.inc.php';
require_once APPROOT . '/env-' . utils::GetCurrentEnvironment() . '/itop-portal-base/portal/src/helpers/securityhelper.class.inc.php';
require_once APPROOT . '/env-' . utils::GetCurrentEnvironment() . '/itop-portal-base/portal/src/helpers/applicationhelper.class.inc.php';
// Using a static var allows to preserve the object through function calls
static $oApp = null;
static $sPortalId = null;
// Initializing Silex app
// Initializing Silex app (partially for faster execution)
// TODO: This should be factorised with itop-portal-base/portal/web/index.php into the ApplicationHelper class.
if ($oApp === null)
{
// Retrieving portal id
$sPortalId = basename(__DIR__);
// Initializing Silex framework
$oApp = new Silex\Application();
// Registering optional silex components
@@ -59,17 +64,25 @@ class iTopPortalEditUrlMaker implements iDBObjectURLMaker
'scope_validator.scopes_filename' => $sPortalId . '.scopes.php',
'scope_validator.instance_name' => $sPortalId
));
// Registering routes
// Preparing portal foundations (partially)
// ...
Combodo\iTop\Portal\Helper\ApplicationHelper::LoadRouters();
Combodo\iTop\Portal\Helper\ApplicationHelper::RegisterRoutes($oApp);
// ...
// Loading portal scopes from the module design
Combodo\iTop\Portal\Helper\ApplicationHelper::LoadScopesConfiguration($oApp, new ModuleDesign($sPortalId));
}
// The object is reachable in the specified mode (edit/view)
//
// Note: Scopes only apply when URL check is triggered from the portal GUI.
$sObjectQueryString = null;
switch($sMode)
{
case 'view':
if(Combodo\iTop\Portal\Helper\SecurityHelper::IsActionAllowed($oApp, UR_ACTION_READ, $sClass, $iId))
if(!ContextTag::Check('GUI:Portal') || Combodo\iTop\Portal\Helper\SecurityHelper::IsActionAllowed($oApp, UR_ACTION_READ, $sClass, $iId))
{
$sObjectQueryString = $oApp['url_generator']->generate('p_object_view', array('sObjectClass' => $sClass, 'sObjectId' => $iId));
}
@@ -78,11 +91,11 @@ class iTopPortalEditUrlMaker implements iDBObjectURLMaker
case 'edit':
default:
// Checking if user is allowed to edit object, if not we check if it can at least view it.
if(Combodo\iTop\Portal\Helper\SecurityHelper::IsActionAllowed($oApp, UR_ACTION_MODIFY, $sClass, $iId))
if(!ContextTag::Check('GUI:Portal') || Combodo\iTop\Portal\Helper\SecurityHelper::IsActionAllowed($oApp, UR_ACTION_MODIFY, $sClass, $iId))
{
$sObjectQueryString = $oApp['url_generator']->generate('p_object_edit', array('sObjectClass' => $sClass, 'sObjectId' => $iId));
}
elseif(Combodo\iTop\Portal\Helper\SecurityHelper::IsActionAllowed($oApp, UR_ACTION_READ, $sClass, $iId))
elseif(!ContextTag::Check('GUI:Portal') || Combodo\iTop\Portal\Helper\SecurityHelper::IsActionAllowed($oApp, UR_ACTION_READ, $sClass, $iId))
{
$sObjectQueryString = $oApp['url_generator']->generate('p_object_view', array('sObjectClass' => $sClass, 'sObjectId' => $iId));
}
@@ -112,7 +125,7 @@ class iTopPortalEditUrlMaker implements iDBObjectURLMaker
return $sUrl;
}
public static function MakeObjectURL($sClass, $iId)
{
return static::PrepareObjectURL($sClass, $iId, 'edit');