| tslib_fe::tslib_fe | ( | $ | TYPO3_CONF_VARS, | |
| $ | id, | |||
| $ | type, | |||
| $ | no_cache = '', |
|||
| $ | cHash = '', |
|||
| $ | jumpurl = '', |
|||
| $ | MP = '', |
|||
| $ | RDCT = '' | |||
| ) |
Class constructor Takes a number of GET/POST input variable as arguments and stores them internally. The processing of these variables goes on later in this class. Also sets internal clientInfo array (browser information) and a unique string (->uniqueString) for this script instance; A md5 hash of the microtime()
| array | The global $TYPO3_CONF_VARS array. Will be set internally in ->TYPO3_CONF_VARS | |
| mixed | The value of t3lib_div::_GP('id') | |
| integer | The value of t3lib_div::_GP('type') | |
| boolean | The value of t3lib_div::_GP('no_cache'), evaluated to 1/0 | |
| string | The value of t3lib_div::_GP('cHash') | |
| string | The value of t3lib_div::_GP('jumpurl') | |
| string | The value of t3lib_div::_GP('MP') | |
| string | The value of t3lib_div::_GP('RDCT') |
| tslib_fe::connectToMySQL | ( | ) |
Connect to MySQL database May exit after outputting an error message or some JavaScript redirecting to the install tool. Use connectToDB() instead!
| tslib_fe::connectToDB | ( | ) |
Connect to SQL database May exit after outputting an error message or some JavaScript redirecting to the install tool.
| tslib_fe::sendRedirect | ( | ) |
Looks up the value of $this->RDCT in the database and if it is found to be associated with a redirect URL then the redirection is carried out with a 'Location:' header May exit after sending a location-header.
| tslib_fe::initFEuser | ( | ) |
Initializes the front-end login user.
| tslib_fe::initUserGroups | ( | ) |
Initializes the front-end user groups. Sets ->loginUser and ->gr_list based on front-end user status.
| tslib_fe::isUserOrGroupSet | ( | ) |
Checking if a user is logged in or a group constellation different from "0,-1"
| tslib_fe::checkAlternativeIdMethods | ( | ) |
Provides ways to bypass the '?id=[xxx]&type=[xx]' format, using either PATH_INFO or virtual HTML-documents (using Apache mod_rewrite)
Three options: 1) Apache mod_rewrite: Here a .htaccess file maps all .html-files to index.php and then we extract the id and type from the name of that HTML-file. (AKA "simulateStaticDocuments") 2) Use PATH_INFO (also Apache) to extract id and type from that var. Does not require any special modules compiled with apache. (less typical) 3) Using hook which enables features like those provided from "realurl" extension (AKA "Speaking URLs")
Support for RewriteRule to generate (simulateStaticDocuments) With the mod_rewrite compiled into apache, put these lines into a .htaccess in this directory: RewriteEngine On RewriteRule ^[^/]*\.html$ index.php The url must end with '.html' and the format must comply with either of these: 1: '[title].[id].[type].html' - title is just for easy recognition in the logfile!; no practical use of the title for TYPO3. 2: '[id].[type].html' - above, but title is omitted; no practical use of the title for TYPO3. 3: '[id].html' - only id, type is set to the default, zero! NOTE: In all case 'id' may be the uid-number OR the page alias (if any)
| tslib_fe::clear_preview | ( | ) |
Clears the preview-flags, sets sim_exec_time to current time. Hidden pages must be hidden as default, $GLOBALS['SIM_EXEC_TIME'] is set to $GLOBALS['EXEC_TIME'] in t3lib/config_default.inc. Alter it by adding or subtracting seconds.
| tslib_fe::determineId | ( | ) |
Determines the id and evaluates any preview settings Basically this function is about determining whether a backend user is logged in, if he has read access to the page and if he's previewing the page. That all determines which id to show and how to initialize the id.
| tslib_fe::fetch_the_id | ( | ) |
Get The Page ID This gets the id of the page, checks if the page is in the domain and if the page is accessible Sets variables such as $this->sys_page, $this->loginUser, $this->gr_list, $this->id, $this->type, $this->domainStartPage, $this->idParts
| tslib_fe::getPageAndRootline | ( | ) |
Gets the page and rootline arrays based on the id, $this->id
If the id does not correspond to a proper page, the 'previous' valid page in the rootline is found If the page is a shortcut (doktype=4), the ->id is loaded with that id
Whether or not the ->id is changed to the shortcut id or the previous id in rootline (eg if a page is hidden), the ->page-array and ->rootline is found and must also be valid.
Sets or manipulates internal variables such as: $this->id, $this->page, $this->rootLine, $this->MP, $this->pageNotFound
| tslib_fe::getPageShortcut | ( | $ | SC, | |
| $ | mode, | |||
| $ | thisUid, | |||
| $ | itera = 20, |
|||
| $ | pageLog = array() | |||
| ) |
Get page shortcut; Finds the records pointed to by input value $SC (the shortcut value)
| integer | The value of the "shortcut" field from the pages record | |
| integer | The shortcut mode: 1 and 2 will select either first subpage or random subpage; the default is the page pointed to by $SC | |
| integer | The current page UID of the page which is a shortcut | |
| integer | Safety feature which makes sure that the function is calling itself recursively max 20 times (since this function can find shortcuts to other shortcuts to other shortcuts...) | |
| array | An array filled with previous page uids tested by the function - new page uids are evaluated against this to avoid going in circles. |
| tslib_fe::checkRootlineForIncludeSection | ( | ) |
Checks the current rootline for defined sections.
| tslib_fe::checkEnableFields | ( | $ | row, | |
| $ | bypassGroupCheck = FALSE | |||
| ) |
Checks page record for enableFields Returns true if enableFields does not disable the page record. Takes notice of the ->showHiddenPage flag and uses SIM_EXEC_TIME for start/endtime evaluation
| array | The page record to evaluate (needs fields: hidden, starttime, endtime, fe_group) | |
| boolean | Bypass group-check |
| tslib_fe::checkPageGroupAccess | ( | $ | row, | |
| $ | groupList = NULL | |||
| ) |
Check group access against a page record
| array | The page record to evaluate (needs field: fe_group) | |
| mixed | List of group id's (comma list or array). Default is $this->gr_list |
| tslib_fe::checkPagerecordForIncludeSection | ( | $ | row | ) |
Checks page record for include section
| array | The page record to evaluate (needs fields: extendToSubpages + hidden, starttime, endtime, fe_group) |
| tslib_fe::checkIfLoginAllowedInBranch | ( | ) |
Checks if logins are allowed in the current branch of the page tree. Traverses the full root line and returns TRUE if logins are OK, otherwise false (and then the login user must be unset!)
| tslib_fe::getPageAccessFailureReasons | ( | ) |
Analysing $this->pageAccessFailureHistory into a summary array telling which features disabled display and on which pages and conditions. That data can be used inside a page-not-found handler
| tslib_fe::setIDfromArgV | ( | ) |
This checks if there are ARGV-parameters in the QUERY_STRING and if so, those are used for the id $this->id must be 'false' in order for any processing to happen in here If an id/alias value is extracted from the QUERY_STRING it is set in $this->id
| tslib_fe::getPageAndRootlineWithDomain | ( | $ | domainStartPage | ) |
Gets ->page and ->rootline information based on ->id. ->id may change during this operation. If not inside domain, then default to first page in domain.
| integer | Page uid of the page where the found domain record is (pid of the domain record) |
| tslib_fe::setSysPageWhereClause | ( | ) |
Sets sys_page where-clause
| tslib_fe::findDomainRecord | ( | $ | recursive = 0 |
) |
Looking up a domain record based on HTTP_HOST
| boolean | If set, it looks "recursively" meaning that a domain like "123.456.typo3.com" would find a domain record like "typo3.com" if "123.456.typo3.com" or "456.typo3.com" did not exist. |
| tslib_fe::pageNotFoundAndExit | ( | $ | reason = '', |
|
| $ | header = '' | |||
| ) |
Page-not-found handler for use in frontend plugins from extensions.
| string | Reason text | |
| string | HTTP header to send |
| tslib_fe::pageNotFoundHandler | ( | $ | code, | |
| $ | header = '', |
|||
| $ | reason = '' | |||
| ) |
Page not found handler. Exits.
| mixed | Which type of handling; If a true PHP-boolean or TRUE then a ->printError message is outputted. If integer an error message with that number is shown. Otherwise the $code value is expected to be a "Location:" header value. | |
| string | If set, this is passed directly to the PHP function, header() | |
| string | If set, error messages will also mention this as the reason for the page-not-found. |
| tslib_fe::checkAndSetAlias | ( | ) |
Fetches the integer page id for a page alias. Looks if ->id is not an integer and if so it will search for a page alias and if found the page uid of that page is stored in $this->id
| tslib_fe::idPartsAnalyze | ( | $ | str | ) |
Analyzes the second part of a id-string (after the "+"), looking for B6 or M5 encoding and if found it will resolve it and restore the variables in global $_GET If values for ->cHash, ->no_cache, ->jumpurl and ->MP is found, they are also loaded into the internal vars of this class.
| string | String to analyze |
| tslib_fe::mergingWithGetVars | ( | $ | GET_VARS | ) |
Merging values into the global $_GET
| array | Array of key/value pairs that will be merged into the current GET-vars. (Non-escaped values) |
| tslib_fe::ADMCMD_preview | ( | ) |
Looking for a ADMCMD_prev code, looks it up if found and returns configuration data. Background: From the backend a request to the frontend to show a page, possibly with workspace preview can be "recorded" and associated with a keyword. When the frontend is requested with this keyword the associated request parameters are restored from the database AND the backend user is loaded - only for that request. The main point is that a special URL valid for a limited time, eg. http://localhost/typo3site/index.php?ADMCMD_prev=035d9bf938bd23cb657735f68a8cedbf will open up for a preview that doesn't require login. Thus its useful for sending an email. This can also be used to generate previews of hidden pages, start/endtimes, usergroups and those other settings from the Admin Panel - just not implemented yet.
| tslib_fe::ADMCMD_preview_postInit | ( | $ | previewConfig | ) |
Configuration after initialization of TSFE object. Basically this unsets the BE cookie if any and forces the BE user set according to the preview configuration.
| array | Preview configuration, see ADMCMD_preview() |
| tslib_fe::makeCacheHash | ( | ) |
Calculates a hash string based on additional parameters in the url. This is used to cache pages with more parameters than just id and type
| tslib_fe::reqCHash | ( | ) |
Will disable caching if the cHash value was not set. This function should be called to check the _existence_ of "&cHash" whenever a plugin generating cachable output is using extra GET variables. If there _is_ a cHash value the validation of it automatically takes place in makeCacheHash() (see above)
| tslib_fe::cHashParams | ( | $ | addQueryParams | ) |
Splits the input query-parameters into an array with certain parameters filtered out. Used to create the cHash value
| string | Query-parameters: "&xxx=yyy&zzz=uuu" |
| tslib_fe::initTemplate | ( | ) |
| tslib_fe::getFromCache | ( | ) |
See if page is in cache and get it if so Stores the page content in $this->content if something is found.
| tslib_fe::getFromCache_queryRow | ( | ) |
Returning the cached version of page with hash = newHash
| tslib_fe::headerNoCache | ( | ) |
Detecting if shift-reload has been clicked Will not be called if re-generation of page happens by other reasons (for instance that the page is not in cache yet!) Also, a backend user MUST be logged in for the shift-reload to be detected due to DoS-attack-security reasons.
| tslib_fe::getHash | ( | ) |
Calculates the cache-hash This hash is unique to the template, the variables ->id, ->type, ->gr_list (list of groups), ->MP (Mount Points) and cHash array Used to get and later store the cached data.
| tslib_fe::getConfigArray | ( | ) |
Checks if config-array exists already but if not, gets it
| tslib_fe::getCompressedTCarray | ( | ) |
Get the compressed $TCA array for use in the front-end A compressed $TCA array holds only the ctrl- and feInterface-part for each table. But the column-definitions are omitted in order to save some memory and be more efficient. Operates on the global variable, $TCA
| tslib_fe::includeTCA | ( | $ | TCAloaded = 1 |
) |
Includes full TCA. Normally in the frontend only a part of the global $TCA array is loaded, for instance the "ctrl" part. Thus it doesn't take up too much memory. If you need the FULL TCA available for some reason (like plugins using it) you should call this function which will include the FULL TCA. Global vars $TCA, $PAGES_TYPES, $LANG_GENERAL_LABELS can/will be affected. The flag $this->TCAloaded will make sure that such an inclusion happens only once since; If $this->TCAloaded is set, nothing is included.
| boolean | Probably, keep hands of this value. Just don't set it. (This may affect the first-ever time this function is called since if you set it to zero/false any subsequent call will still trigger the inclusion; In other words, this value will be set in $this->TCAloaded after inclusion and therefore if its false, another inclusion will be possible on the next call. See ->getCompressedTCarray()) |
| tslib_fe::settingLanguage | ( | ) |
| tslib_fe::settingLocale | ( | ) |
Setting locale for frontend rendering
| tslib_fe::checkDataSubmission | ( | ) |
Checks if any email-submissions or submission via the fe_tce
| tslib_fe::fe_tce | ( | ) |
Processes submitted user data (obsolete "Frontend TCE")
| tslib_fe::locDataCheck | ( | $ | locationData | ) |
Checks if a formmail submission can be sent as email
| string | The input from $_POST['locationData'] |
| tslib_fe::sendFormmail | ( | ) |
Sends the emails from the formmail content object.
| tslib_fe::extractRecipientCopy | ( | $ | bodytext | ) |
Extracts the value of recipient copy field from a formmail CE bodytext
| string | $bodytext The content of the related bodytext field |
| tslib_fe::setExternalJumpUrl | ( | ) |
Sets the jumpurl for page type "External URL"
| tslib_fe::checkJumpUrlReferer | ( | ) |
Checks the jumpurl referer if required
| tslib_fe::jumpUrl | ( | ) |
Sends a header 'Location' to jumpurl, if jumpurl is set. Will exit if a location header is sent (for instance if JumpUrl was triggered)
| tslib_fe::setUrlIdToken | ( | ) |
Sets the URL_ID_TOKEN in the internal var, $this->getMethodUrlIdToken
| tslib_fe::isGeneratePage | ( | ) |
Returns true if the page should be generated That is if jumpurl is not set and the cacheContentFlag is not set.
| tslib_fe::tempPageCacheContent | ( | ) |
Temp cache content The temporary cache will expire after a few seconds (typ. 30) or will be cleared by the rendered page, which will also clear and rewrite the cache.
| tslib_fe::realPageCacheContent | ( | ) |
Set cache content to $this->content
| tslib_fe::setPageCacheContent | ( | $ | content, | |
| $ | data, | |||
| $ | tstamp | |||
| ) |
Sets cache content; Inserts the content string into the cache_pages table.
| string | The content to store in the HTML field of the cache table | |
| mixed | The additional cache_data array, fx. $this->config | |
| integer | Timestamp |
| tslib_fe::clearPageCacheContent | ( | ) |
Clears cache content (for $this->newHash)
| tslib_fe::clearPageCacheContent_pidList | ( | $ | pidList | ) |
Clears cache content for a list of page ids
| string | A list of INTEGER numbers which points to page uids for which to clear entries in the cache_pages table (page content cache) |
| tslib_fe::pageCachePostProcess | ( | &$ | row, | |
| $ | type | |||
| ) |
Post processing page cache rows for both get and set.
| array | Input "cache_pages" row, passed by reference! | |
| string | Type of operation, either "get" or "set" |
| tslib_fe::setSysLastChanged | ( | ) |
Sets sys last changed Setting the SYS_LASTCHANGED value in the pagerecord: This value will thus be set to the highest tstamp of records rendered on the page. This includes all records with no regard to hidden records, userprotection and so on.
| tslib_fe::generatePage_preProcessing | ( | ) |
Does some processing BEFORE the pagegen script is included.
| tslib_fe::generatePage_whichScript | ( | ) |
Determines to include custom or pagegen.php script returns script-filename if a TypoScript (config) script is defined and should be include instead of pagegen.php
| tslib_fe::generatePage_postProcessing | ( | ) |
Does some processing AFTER the pagegen script is included. This includes calling tidy (if configured), XHTML cleaning (if configured), caching the page, indexing the page (if configured) and setting sysLastChanged
| tslib_fe::INTincScript | ( | ) |
Processes the INTinclude-scripts
| tslib_fe::INTincScript_loadJSCode | ( | ) |
Loads the JavaScript code for INTincScript
| tslib_fe::isINTincScript | ( | ) |
Determines if there are any INTincScripts to include
| tslib_fe::doXHTML_cleaning | ( | ) |
Returns the mode of XHTML cleaning
| tslib_fe::doLocalAnchorFix | ( | ) |
Returns the mode of Local Anchor prefixing
| tslib_fe::isOutputting | ( | ) |
Determines if content should be outputted. Outputting content is done only if jumpurl is NOT set.
| tslib_fe::processOutput | ( | ) |
Processes the output before it's actually outputted. Sends headers also. This includes substituting the USERNAME comment, getMethodUrlIdToken, sending additional headers (as defined in the TypoScript "config.additionalheaders" object), tidy'ing content, XHTML cleaning content (if configured) Works on $this->content
| tslib_fe::sendCacheHeaders | ( | ) |
Send cache headers good for client/reverse proxy caching This function should not be called if the page content is temporary (like for "Page is being generated..." message, but in that case it is ok because the config-variables are not yet available and so will not allow to send cache headers)
| tslib_fe::isStaticCacheble | ( | ) |
Reporting status whether we can send cache control headers for proxy caching or publishing to static files
Rules are: no_cache cannot be set: If it is, the page might contain dynamic content and should never be cached. There can be no USER_INT objects on the page ("isINTincScript()" / "isEXTincScript()") because they implicitly indicate dynamic content