LSHttpRequest

Extends \CHttpRequest

Description of HttpRequest

Used in LSYii_Application.php

   'request'=>array(
       'class'=>'HttpRequest',
       'noCsrfValidationRoutes'=>array(
           '^services/wsdl.*$'
       ),
       'enableCsrfValidation'=>true,
       'enableCookieValidation'=>true,
   ),

Every route will be interpreted as a regex pattern.

Methods

Return the referal url, it's used for the "close" buttons, and the "save and close" buttons So it checks if the referrer url is the same than the current url to avoid looping.

getUrlReferrer(mixed $sAlternativeUrl = null) : string

If it the case, a paramater can be set to tell what referrer to return. If the referrer is an external url, Yii return by default the current url.

DEPRECATED

To avoid looping between two urls (like simpleStatistics <=> Expert Statistics),

it can be necessary to check if the referrer contains a specific word (an action in general)

So if you want to forbid a return to a certain page, just provide an alternative url, and the forbidden key world

The checkLoopInNavigationStack-Method will check for looping, though the forbiddenUrl array is not required anymore

Not all "close" and "save and close" buttons should use it. Only close button for pages that can be accessed since different places. eg: edit question, that can be accessed from question list or question

TODO: implement it for all those pages List of pages where it should be implemented : - All pages accessible via the top nav-bar (eg: create a new survey, edit template, etc.) - All pages accessible via quick actions (home page, survey quick actions, question group quick actions, etc.) - All pages accessible via question explorer (only "add question to group" for now) - Edition of question and question group, which are accessible via summary or list - Import question, question group

TODO: remove misused of it It should not be used for pages accessible from only one place - Token activation etc.

In doubt, just use getUrlReferrer with a default link to home page for full page layout pages, or a link to the survey summary for sidemenu layout pages, with the controller action as forbidden world. So the close button will never loop.

TODO : Each time a new quick action or button is added to access an existing page, the "close" & "save and close" button should be updated to use getUrlReferrer()

Arguments

$sAlternativeUrl

mixed

string, the url to return if referrer url is the same than current url.

Response

string

if success, else null

Method to update the LimeSurvey Navigation Stack to prevent looping

updateNavigationStack() 

Method to check if an url is part of the stack Returns true, when an url is saved in the stack

checkLoopInNavigationStack(mixed $referrerURL) 

Arguments

$referrerURL

mixed

The URL that is checked against the stack

normalizeRequest

normalizeRequest() 

getPathInfo

getPathInfo() 

Properties

_pathInfo

_pathInfo : 

noCsrfValidationRoutes

noCsrfValidationRoutes :