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.

package

Default

Methods

Method to check if an url is part of the stack

checkLoopInNavigationStack(string $referrerURL): boolean

Arguments

$referrerURL

string

The URL that is checked against the stack

Response

boolean

Returns true, when an url is saved in the stack

getOriginalUrlReferrer

getOriginalUrlReferrer()

getPathInfo

getPathInfo()

Returns the request parameters given in the [[queryString]].

getQueryParams(): array

This method will return the contents of $_GET if params where not explicitly set.

see \LSHttpRequest::setQueryParams()

Response

array

the request GET parameter values.

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( $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

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

Response

string

if success, else null

normalizeRequest

normalizeRequest()

Sets the request [[queryString]] parameters.

setQueryParams(array $values)
see \LSHttpRequest::getQueryParams()

Arguments

$values

array

the request query parameters (name-value pairs)

Method to update the LimeSurvey Navigation Stack to prevent looping

updateNavigationStack()

Properties

_pathInfo

_pathInfo :

Type(s)

noCsrfValidationRoutes

noCsrfValidationRoutes :

Type(s)

noCsrfValidationParams

noCsrfValidationParams :

Type(s)

the request query parameters (name-value pairs)

queryParams :\array<string,mixed>|null
var

the request query parameters (name-value pairs)

Type(s)

\array|null