Commit e4bc51eb authored by Kasper Skårhøj's avatar Kasper Skårhøj
Browse files

See changelog


git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@670 709f56b5-9817-0410-a4d7-c38de5d9e867
parent ed949379
2005-04-21 => 04-26 Kasper Skårhøj,,, <kasper@typo3.com>
* Added a runaway brake to t3lib_div::expandList(): Ranges are limited to 1000 values per range.
* Added authentication services (from sysext/sv/) to the core.
* Added a feature to menu objects that you can have them show pages in the menus which are normally access restricted. The pages shown will like to a fixed page ID as long as access is not allowed - that page could then show a login box for instance. If access to the elements is ok they will of course link to themselves.
* Added the same feature described for menu objects above to normal typolinks, configured with "config.typolinkLinkAccessRestrictedPages". See TSref for details. The feature will allow links pointing to access restricted page to be created but redirected to a central page which could for instnace contain a login form which is what will be shown if the page was not accessible.
* !!! Technical/API: Changed sys_page->where_hid_del so the fe_group check is not included in WHERE clause but found separately in sys_page->where_groupAccess. It is probably quite rare if this affects any extension but it could do so potentially. PHP code would have to be adapted then.
* Implemented configuration to inverse localization setting for pages, $GLOBALS['TYPO3_CONF_VARS']['FE']['hidePagesIfNotTranslatedByDefault']: If TRUE, pages that has no translation will be hidden by default. Basically this will inverse the effect of the page localization setting "Hide page if no translation for current language exists" to "Show page even if no translation exists"
* Added new function; t3lib_div::explodeUrl2Array(): Explodes a string with GETvars (eg. "&id=1&type=2&ext[mykey]=3") into an array
* Added "config.language_alt" which enables localization from locallang-files of plugins to fallback to an alternative language if the main one (specified with config.language) was not found in hte locallang file. Thus a brazil portuguese ("br") website could specify portuguese (pt) as fallback language!
* Added hook for page-not-found handling enabling any handling to be done for really flexible use.
* Extended class t3lib_arraybrowser so it can show a PHP array without links. Used for "realurl" extension displaying its configuration in backend module.
* Introduced readLLfile() and readLLXMLfile() in t3lib_div in the section with TYPO3 specific functions. They were moved from lang/lang.php class (language class) where they served to load locallang.(php|xml) files. Since this functionality was needed in the frontend as well the functions had to exist in a common script, that being t3lib_div.
* fixed "bug" where the meta data from a flexform data structure was returned in t3lib_div::-function
* Completely reverted the removal of the "unsigned" attributes in *.sql files - DBAL has to handle this depending on DB.
* Added record-uid to the listing of reference in TCEform group fields.
* Added features in tslib_fe which records the reasons why a certain page was not accessible if it related to hidden/starttime/endtime/groups. This can be used in page-not-found handlers to produce a proper response to access attempts to eg. protected sections.
* Support for locallang-xml in frontend as well.
* Added unique name for TYPO3 re-login pop-up box
* Fixed a few smaller bugs/inconveniences
2005-04-25 Andreas Otto <andreas.otto@dkd.de>
* Fixed bug #0000649. Used the patch provided in the bug description.
......
......@@ -396,7 +396,7 @@ XQCR: t3lib/class.t3lib_clipboard.php
XQCR: t3lib/class.t3lib_diff.php
XQCR: t3lib/class.t3lib_div.php
t3lib/class.t3lib_dmailer.php [Jan-Erik!]
t3lib/class.t3lib_exec.php [Rene]
-QC-: t3lib/class.t3lib_exec.php
-QCR: t3lib/class.t3lib_extfilefunc.php
-QCR: t3lib/class.t3lib_extmgm.php
-QCR: t3lib/class.t3lib_extobjbase.php
......@@ -419,10 +419,10 @@ XQCR: t3lib/class.t3lib_positionmap.php
-QCR: t3lib/class.t3lib_readmail.php
XQCR: t3lib/class.t3lib_recordlist.php
-QCR: t3lib/class.t3lib_scbase.php
t3lib/class.t3lib_sqlengine.php [Kasper/Karsten?]
t3lib/class.t3lib_sqlengine.php [Karsten?]
-QCR: t3lib/class.t3lib_stdgraphic.php
XQCR: t3lib/class.t3lib_superadmin.php
t3lib/class.t3lib_svbase.php [Rene]
-QC-: t3lib/class.t3lib_svbase.php
-QCR: t3lib/class.t3lib_tceforms.php [Kasper]
t3lib/class.t3lib_tcemain.php [Kasper]
XQCR: t3lib/class.t3lib_timetrack.php
......@@ -508,7 +508,7 @@ OK lang/
lowlevel (2/800)
- Extend support and finish it with the efforts soon to be done for TCEmain.
OK setup/
? sv/ [Rene]
OK sv/
sys_action (1/400)
- Extend with API for adding custom action scripts
- flexforms for configuration!
......
......@@ -75,6 +75,8 @@
* @see SC_mod_tools_config_index::main()
*/
class t3lib_arrayBrowser {
var $expAll = FALSE; // If set, will expand all (depthKeys is obsolete then) (and no links are applied)
var $dontLinkVar = FALSE; // If set, the variable keys are not linked.
var $depthKeys = array(); // Array defining which keys to expand. Typically set from outside from some session variable - otherwise the array will collapse.
var $searchKeys = array(); // After calling the getSearchKeys function this array is populated with the key-positions in the array which contains values matching the search.
var $fixedLgd=1; // If set, the values are truncated with "..." appended if longer than a certain length.
......@@ -104,7 +106,7 @@ class t3lib_arrayBrowser {
$depth = $depth_in.$key;
$goto = substr(md5($depth),0,6);
$deeper = (is_array($arr[$key]) && $this->depthKeys[$depth]) ? 1 : 0;
$deeper = (is_array($arr[$key]) && ($this->depthKeys[$depth] || $this->expAll)) ? 1 : 0;
$PM = 'join';
$LN = ($a==$c)?'blank':'line';
$BTM = ($a==$c)?'bottom':'';
......@@ -116,7 +118,10 @@ class t3lib_arrayBrowser {
if ($PM=='join') {
$HTML.=$theIcon;
} else {
$HTML.='<a name="'.$goto.'" href="'.htmlspecialchars('index.php?node['.$depth.']='.($deeper?0:1).'#'.$goto).'">'.$theIcon.'</a>';
$HTML.=
($this->expAll ? '' : '<a name="'.$goto.'" href="'.htmlspecialchars('index.php?node['.$depth.']='.($deeper?0:1).'#'.$goto).'">').
$theIcon.
($this->expAll ? '' : '</a>');
}
$label = $key;
......@@ -170,7 +175,7 @@ class t3lib_arrayBrowser {
$label = htmlspecialchars($label);
// If varname is set:
if ($this->varName) {
if ($this->varName && !$this->dontLinkVar) {
$variableName = $this->varName.'[\''.str_replace('.','\'][\'',$depth).'\'] = '.(!t3lib_div::testInt($theValue) ? '\''.addslashes($theValue).'\'' : $theValue).'; ';
$label = '<a href="'.htmlspecialchars('index.php?varname='.$variableName.'#varname').'">'.$label.'</a>';
}
......
......@@ -96,7 +96,7 @@ class t3lib_beUserAuth extends t3lib_userAuthGroup {
var $formfield_uident = 'userident'; // formfield with password
var $formfield_chalvalue = 'challenge'; // formfield with a unique value which is used to encrypt the password and username
var $formfield_status = 'login_status'; // formfield with status: *'login', 'logout'
var $security_level = 'challenged'; // sets the level of security. *'normal' = clear-text. 'challenged' = hashed password/username from form in $formfield_uident. 'superchallenged' = hashed password hashed again with username.
var $security_level = 'superchallenged'; // sets the level of security. *'normal' = clear-text. 'challenged' = hashed password/username from form in $formfield_uident. 'superchallenged' = hashed password hashed again with username.
var $writeStdLog = 1; // Decides if the writelog() function is called at login and logout
var $writeAttemptLog = 1; // If the writelog() functions is called if a login-attempt has be tried without success
......@@ -225,7 +225,7 @@ class t3lib_beUserAuth extends t3lib_userAuthGroup {
if (!$this->isAdmin()) {
return TRUE;
} else die('ERROR: CLI backend user "'.$userName.'" was ADMIN which is not allowed!'.chr(10).chr(10));
} else die('ERROR: No backend user named "'.$userName.'" was found!'.chr(10).chr(10));
} else die('ERROR: No backend user named "'.$userName.'" was found! [Database: '.TYPO3_db.']'.chr(10).chr(10));
} else die('ERROR: Module name, "'.$GLOBALS['MCONF']['name'].'", was not prefixed with "_CLI_"'.chr(10).chr(10));
} else die('ERROR: Another user was already loaded which is impossible in CLI mode!'.chr(10).chr(10));
}
......
......@@ -676,6 +676,7 @@ class t3lib_div {
/**
* Expand a comma-separated list of integers with ranges (eg 1,3-5,7 becomes 1,3,4,5,7).
* Ranges are limited to 1000 values per range.
*
* @param string $list comma-separated list of integers with ranges (string)
* @return string new comma-separated list of items
......@@ -687,8 +688,12 @@ class t3lib_div {
while(list(,$item)=each($items)) {
$range = explode('-',$item);
if (isset($range[1])) {
$runAwayBrake = 1000;
for ($n=$range[0]; $n<=$range[1]; $n++) {
$list[] = $n;
$runAwayBrake--;
if ($runAwayBrake<=0) break;
}
} else {
$list[] = $item;
......@@ -1304,8 +1309,9 @@ class t3lib_div {
* @param array The (multidim) array to implode
* @param string (keep blank)
* @param boolean If set, parameters which were blank strings would be removed.
* @param boolean If set, the param name itselt (for example "param[key][key2]") would be rawurlencoded as well.
* @param boolean If set, the param name itself (for example "param[key][key2]") would be rawurlencoded as well.
* @return string Imploded result, fx. &param[key][key2]=value2&param[key][key3]=value3
* @see explodeUrl2Array()
*/
function implodeArrayForUrl($name,$theArray,$str='',$skipBlank=0,$rawurlencodeParamName=0) {
if (is_array($theArray)) {
......@@ -1316,7 +1322,7 @@ class t3lib_div {
} else {
if (!$skipBlank || strcmp($AVal,'')) {
$str.='&'.($rawurlencodeParamName ? rawurlencode($thisKeyName) : $thisKeyName).
'='.rawurlencode($AVal); // strips slashes because _POST / _GET input is with slashes...
'='.rawurlencode($AVal);
}
}
}
......@@ -1324,6 +1330,31 @@ class t3lib_div {
return $str;
}
/**
* Explodes a string with GETvars (eg. "&id=1&type=2&ext[mykey]=3") into an array
*
* @param string GETvars string
* @param boolean If set, the string will be parsed into a multidimensional array if square brackets are used in variable names (using PHP function parse_str())
* @return array Array of values. All values AND keys are rawurldecoded() as they properly should be. But this means that any implosion of the array again must rawurlencode it!
* @see implodeArrayForUrl()
*/
function explodeUrl2Array($string,$multidim=FALSE) {
if ($multidim) {
parse_str($string,$tempGetVars);
return $tempGetVars;
} else {
$output = array();
$p = explode('&',$string);
foreach($p as $v) {
if (strlen($v)) {
list($pK,$pV) = explode('=',$v,2);
$output[rawurldecode($pK)] = rawurldecode($pV);
}
}
return $output;
}
}
/**
* Returns an array with selected keys from incoming data.
* (Better read source code if you want to find out...)
......@@ -3068,6 +3099,151 @@ class t3lib_div {
return $pA;
}
/**
* Responds on input localization setting value whether the page it comes from should be hidden if no translation exists or not.
*
* @param integer Value from "l18n_cfg" field of a page record
* @return boolean True if the page should be hidden
*/
function hideIfNotTranslated($l18n_cfg_fieldValue) {
if ($GLOBALS['TYPO3_CONF_VARS']['FE']['hidePagesIfNotTranslatedByDefault']) {
return $l18n_cfg_fieldValue&2 ? FALSE : TRUE;
} else {
return $l18n_cfg_fieldValue&2 ? TRUE : FALSE;
}
}
/**
* Includes a locallang file and returns the $LOCAL_LANG array found inside.
*
* @param string Input is a file-reference (see t3lib_div::getFileAbsFileName) which, if exists, is included. That file is expected to be a 'local_lang' file containing a $LOCAL_LANG array.
* @param string Language key
* @return array Value of $LOCAL_LANG found in the included file. If that array is found it's returned. Otherwise an empty array
*/
function readLLfile($fileRef,$langKey) {
$file = t3lib_div::getFileAbsFileName($fileRef);
if ($file) {
$baseFile = ereg_replace('\.(php|xml)$', '', $file);
if (@is_file($baseFile.'.xml')) {
$LOCAL_LANG = t3lib_div::readLLXMLfile($baseFile.'.xml', $langKey);
} elseif (@is_file($baseFile.'.php')) {
include($baseFile.'.php');
} else die('Filereference, "'.$file.'", not found!');
}
return is_array($LOCAL_LANG)?$LOCAL_LANG:array();
}
/**
* Includes a locallang-xml file and returns the $LOCAL_LANG array
* Works only when the frontend or backend has been initialized with a charset conversion object. See first code lines.
*
* @param string Absolute reference to locallang-XML file
* @param string TYPO3 language key, eg. "dk" or "de" or "default"
* @return array LOCAL_LANG array in return.
*/
function readLLXMLfile($fileRef,$langKey) {
if (is_object($GLOBALS['LANG'])) {
$csConvObj = &$GLOBALS['LANG']->csConvObj;
} elseif (is_object($GLOBALS['TSFE'])) {
$csConvObj = &$GLOBALS['TSFE']->csConvObj;
} else $csConvObj = NULL;
if (@is_file($fileRef) && $langKey && is_object($csConvObj)) {
// Set charset:
$origCharset = $csConvObj->parse_charset($csConvObj->charSetArray[$langKey] ? $csConvObj->charSetArray[$langKey] : 'iso-8859-1');
// Cache file name:
$hashSource = substr($fileRef,strlen(PATH_site)).'|'.date('d-m-Y H:i:s',filemtime($fileRef));
$cacheFileName = PATH_site.'typo3temp/llxml/'.
#str_replace('_','',ereg_replace('^.*\/','',dirname($fileRef))).
#'_'.basename($fileRef).
substr(basename($fileRef),10,15).
'_'.t3lib_div::shortMD5($hashSource).'.'.$langKey.'.'.$origCharset.'.cache';
// Check if cache file exists...
if (!@is_file($cacheFileName)) { // ... if it doesn't, create content and write it:
// Read XML, parse it.
$xmlString = t3lib_div::getUrl($fileRef);
$xmlContent = t3lib_div::xml2array($xmlString);
// Set default LOCAL_LANG array content:
$LOCAL_LANG = array();
$LOCAL_LANG['default'] = $xmlContent['data']['default'];
// Specific language, convert from utf-8 to backend language charset:
// NOTICE: Converting from utf-8 back to "native" language may be a temporary solution until we can totally discard "locallang.php" files altogether (and use utf-8 for everything). But doing this conversion is the quickest way to migrate now and the source is in utf-8 anyway which is the main point.
if ($langKey!='default') {
$LOCAL_LANG[$langKey] = $xmlContent['data'][$langKey];
// Checking if charset should be converted.
if (is_array($LOCAL_LANG[$langKey]) && $origCharset!='utf-8') {
foreach($LOCAL_LANG[$langKey] as $labelKey => $labelValue) {
$LOCAL_LANG[$langKey][$labelKey] = $csConvObj->utf8_decode($labelValue,$origCharset);
}
}
}
// Cache the content now:
$serContent = array('origFile'=>$hashSource, 'LOCAL_LANG'=>$LOCAL_LANG);
$res = t3lib_div::writeFileToTypo3tempDir($cacheFileName, serialize($serContent));
if ($res) die('ERROR: '.$res);
} else {
// Get content from cache:
$serContent = unserialize(t3lib_div::getUrl($cacheFileName));
$LOCAL_LANG = $serContent['LOCAL_LANG'];
}
// Checking for EXTERNAL file for non-default language:
if ($langKey!='default' && is_string($LOCAL_LANG[$langKey]) && strlen($LOCAL_LANG[$langKey])) {
// Look for localized file:
$localized_file = t3lib_div::getFileAbsFileName($LOCAL_LANG[$langKey]);
if ($localized_file && @is_file($localized_file)) {
// Cache file name:
$hashSource = substr($localized_file,strlen(PATH_site)).'|'.date('d-m-Y H:i:s',filemtime($localized_file));
$cacheFileName = PATH_site.'typo3temp/llxml/ext_'.
substr(basename($localized_file),10,15).
'_'.t3lib_div::shortMD5($hashSource).'.'.$langKey.'.'.$origCharset.'.cache';
// Check if cache file exists...
if (!@is_file($cacheFileName)) { // ... if it doesn't, create content and write it:
// Read and parse XML content:
$local_xmlString = t3lib_div::getUrl($localized_file);
$local_xmlContent = t3lib_div::xml2array($local_xmlString);
$LOCAL_LANG[$langKey] = is_array($local_xmlContent['data'][$langKey]) ? $local_xmlContent['data'][$langKey] : array();
// Checking if charset should be converted.
if (is_array($LOCAL_LANG[$langKey]) && $origCharset!='utf-8') {
foreach($LOCAL_LANG[$langKey] as $labelKey => $labelValue) {
$LOCAL_LANG[$langKey][$labelKey] = $csConvObj->utf8_decode($labelValue,$origCharset);
}
}
// Cache the content now:
$serContent = array('extlang'=>$langKey, 'origFile'=>$LOCAL_LANG[$langKey], 'EXT_DATA'=>$LOCAL_LANG[$langKey]);
$res = t3lib_div::writeFileToTypo3tempDir($cacheFileName, serialize($serContent));
if ($res) die('ERROR: '.$res);
} else {
// Get content from cache:
$serContent = unserialize(t3lib_div::getUrl($cacheFileName));
$LOCAL_LANG[$langKey] = $serContent['EXT_DATA'];
}
} else {
$LOCAL_LANG[$langKey] = array();
}
}
return $LOCAL_LANG;
}
}
/**
* Loads the $TCA (Table Configuration Array) for the $table
*
......@@ -3118,6 +3294,7 @@ class t3lib_div {
} else {
$singleSheet = TRUE;
$dataStruct = $dataStructArray;
unset($dataStruct['meta']); // Meta data should not appear there.
$sheet = 'sDEF'; // Default sheet
}
return array($dataStruct,$sheet,$singleSheet);
......@@ -3359,27 +3536,30 @@ class t3lib_div {
return $GLOBALS['T3_VAR']['makeInstanceService'][$info['className']];
// include file and create object
} elseif (@is_file($info['classFile'])) {
require_once ($info['classFile']);
$obj = t3lib_div::makeInstance($info['className']);
if (is_object($obj)) {
if(!@is_callable(array($obj,'init'))) {
// use silent logging??? I don't think so.
die ('Broken service:'.t3lib_div::view_array($info));
}
$obj->info = $info;
if ($obj->init()) { // service available?
} else {
$requireFile = t3lib_div::getFileAbsFileName($info['classFile']);
if (@is_file($requireFile)) {
require_once ($requireFile);
$obj = t3lib_div::makeInstance($info['className']);
if (is_object($obj)) {
if(!@is_callable(array($obj,'init'))) {
// use silent logging??? I don't think so.
die ('Broken service:'.t3lib_div::view_array($info));
}
$obj->info = $info;
if ($obj->init()) { // service available?
// create persistent object
$T3_VAR['makeInstanceService'][$info['className']] = &$obj;
// create persistent object
$T3_VAR['makeInstanceService'][$info['className']] = &$obj;
// needed to delete temp files
register_shutdown_function(array(&$obj, '__destruct'));
// needed to delete temp files
register_shutdown_function(array(&$obj, '__destruct'));
return $obj; // object is passed as reference by funtion definition
return $obj; // object is passed as reference by function definition
}
$error = $obj->getLastErrorArray();
unset($obj);
}
$error = $obj->getLastErrorArray();
unset($obj);
}
}
// deactivate the service
......
......@@ -81,7 +81,7 @@
class t3lib_exec {
/**
* checks if a command is valid or not
* Checks if a command is valid or not
* updates global vars
*
* @param string the command that should be executed. eg: "convert"
......@@ -152,7 +152,7 @@ class t3lib_exec {
}
/**
* returns a command string for exec(), system()
* Returns a command string for exec(), system()
*
* @param string the command that should be executed. eg: "convert"
* @param string handler (executor) for the command. eg: "perl"
......@@ -183,20 +183,19 @@ class t3lib_exec {
}
/**
* Extend the preset paths. This way an extension can install an axecutable and provide the path to t3lib_exec.
* Extend the preset paths. This way an extension can install an executable and provide the path to t3lib_exec.
*
* @param string comma seperated list of extra paths where a command should be searched. Relative paths (without leading "/") are prepend with site root path (PATH_site).
* @return [type] ...
* @return void
*/
function addPaths($paths) {
t3lib_exec::_initPaths($paths);
}
/**
* set the search paths from different sources
* Set the search paths from different sources
*
* @return [type] ...
* @internal
* @return array Array of absolute paths (keys and values are equal)
*/
function _getPaths() {
global $TYPO3_CONF_VARS;
......@@ -222,12 +221,8 @@ class t3lib_exec {
}
}
# ???? t3lib_div::getIndpEnv('REQUEST_URI');
// add path from environment
#TODO: how does this work for WIN
if ($GLOBALS['_SERVER']['PATH']) {
......@@ -261,9 +256,9 @@ class t3lib_exec {
}
/**
* init
* Initialization, internal
*
* @return [type] ...
* @return void
* @internal
*/
function _init() {
......@@ -276,10 +271,10 @@ class t3lib_exec {
}
/**
* init and extend the preset paths with own
* Init and extend the preset paths with own
*
* @param string comma seperated list of extra paths where a command should be searched. Relative paths (without leading "/") are prepend with site root path (PATH_site).
* @return [type] ...
* @param string Comma seperated list of extra paths where a command should be searched. Relative paths (without leading "/") are prepend with site root path (PATH_site).
* @return void
* @internal
*/
function _initPaths($paths='') {
......@@ -332,7 +327,7 @@ class t3lib_exec {
}
/**
* returns on which OS we're runing
* Returns on which OS we're runing
*
* @return string the OS type: "UNIX" or "WIN"
* @internal
......@@ -342,14 +337,14 @@ class t3lib_exec {
}
/**
* set a path to the right format
* Set a path to the right format
*
* @param string path
* @return string path
* @param string Input path
* @return string Output path
* @internal
*/
function _fixPath($path) {
return str_replace ('//',"/",$path.'/');
return str_replace ('//','/',$path.'/');
}
}
......
......@@ -471,8 +471,8 @@ class t3lib_extMgm {
* Adds a service to the global services array
*
* @param string Extension key
* @param string Service type
* @param string Service key
* @param string Service type, cannot be prefixed "tx_"
* @param string Service key, must be prefixed "tx_"
* @param array Service description array
* @return void
* @author René Fritz <r.fritz@colorcube.de>
......@@ -543,7 +543,7 @@ class t3lib_extMgm {
* @author René Fritz <r.fritz@colorcube.de>
*/
function findService($serviceType, $serviceSubType='', $excludeServiceKeys=array()) {
global $T3_SERVICES;
global $T3_SERVICES, $TYPO3_CONF_VARS;
$serviceKey = FALSE;
$serviceInfo = FALSE;
......
......@@ -101,45 +101,6 @@ class t3lib_install {
var $touchedLine = 0; // updated with line in localconf.php file that was changed.
var $changedUnsignedFields = FALSE; // Switch this to TRUE if you wish the install tool to convert all unsigned fields (for 3.8.0 core) to signed integers (unsigned is depricated due to DBAL but doesn't hurt - usually...). It might be a good idea to flush cache-tables first including the tables from indexed search (which has to be re-build thereafter)
var $coreFieldsWithUnsignedKeywordRemovedIn380 = array(
'be_groups' => 'uid,pid,tstamp,crdate,cruser_id,hidden,inc_access_lists,deleted',
'be_sessions' => 'ses_userid,ses_tstamp',
'be_users' => 'uid,pid,tstamp,admin,disable,starttime,endtime,options,crdate,cruser_id,disableIPlock,deleted,lastlogin',
'cache_hash' => 'tstamp',
'cache_imagesizes' => 'imagewidth,imageheight',
'pages' => 't3ver_oid,t3ver_id,tstamp,sorting,deleted,perms_userid,perms_groupid,perms_user,perms_group,perms_everybody,editlock,crdate,cruser_id,doktype,hidden,starttime,endtime,urltype,shortcut,shortcut_mode,no_cache,layout,lastUpdated,cache_timeout,newUntil,no_search,SYS_LASTCHANGED,extendToSubpages,content_from_pid,mount_pid',
'sys_be_shortcuts' => 'uid,userid',
'sys_filemounts' => 'uid,pid,tstamp,base,hidden,deleted',
'sys_history' => 'uid',
'sys_lockedrecords' => 'uid,userid,tstamp',
'sys_log' => 'uid,userid,action,recuid,error,tstamp,type,details_nr',
'sys_language' => 'uid,pid,tstamp,hidden,static_lang_isocode',
'cache_pages' => 'id,page_id,reg1,tstamp,expires',
'cache_pagesection' => 'page_id,mpvar_hash,tstamp',
'cache_imagesizes' => 'imagewidth,imageheight',
'fe_groups' => 'uid,pid,tstamp,hidden,deleted',
'fe_session_data' => 'tstamp',
'fe_sessions' => 'ses_userid,ses_tstamp',
'fe_users' => 'uid,pid,tstamp,disable,starttime,endtime,crdate,cruser_id,deleted,module_sys_dmail_category,module_sys_dmail_html,fe_cruser_id,lastlogin,is_online',
'pages_language_overlay' => 't3ver_oid,t3ver_id,tstamp,crdate,cruser_id,sys_language_uid,hidden,starttime,endtime',
'static_template' => 'uid,pid,tstamp,crdate',
'sys_domain' => 'uid,pid,tstamp,hidden,sorting',
'sys_template' => 't3ver_oid,t3ver_id,tstamp,sorting,crdate,cruser_id,hidden,starttime,endtime,root,clear,deleted,includeStaticAfterBasedOn,static_file_mode',
'tt_content' => 't3ver_oid,t3ver_id,tstamp,hidden,sorting,imagewidth,imageorient,imagecols,imageborder,layout,deleted,cols,starttime,endtime,colPos,spaceBefore,spaceAfter,image_zoom,image_noRows,image_effects,image_compression,text_face,text_size,text_color,text_properties,table_border,table_cellspacing,table_cellpadding,table_bgColor,select_key,sectionIndex,linkToTop,filelink_size,section_frame,date,image_frames,recursive,imageheight,module_sys_dmail_category',
'sys_note' => 'uid,pid,deleted,tstamp,crdate,cruser,personal,category',
'sys_action' => 'uid,pid,tstamp,crdate,cruser_id,type',
'sys_action_asgr_mm' => 'uid_local,uid_foreign,sorting',
'index_phash' => 'data_page_id,data_page_reg1,data_page_type,tstamp',
'index_rel' => 'count,first,freq,flags',
'index_section' => 'rl0,rl1,rl2',
'index_stat_search' => 'feuser_id',
'index_config' => 'tstamp,crdate,cruser_id,hidden,starttime,type,depth,chashcalc',
);
/**
* Constructor function
*
......@@ -149,12 +110,6 @@ class t3lib_install {
if ($GLOBALS['TYPO3_CONF_VARS']['SYS']['multiplyDBfieldSize']>= 1 && $GLOBALS['TYPO3_CONF_VARS']['SYS']['multiplyDBfieldSize']<=5) {
$this->multiplySize = (double)$GLOBALS['TYPO3_CONF_VARS']['SYS']['multiplyDBfieldSize'];
}
// Init this array:
foreach($this->coreFieldsWithUnsignedKeywordRemovedIn380 as $table => $fieldNameList) {
$this->coreFieldsWithUnsignedKeywordRemovedIn380[$table] = array_flip(t3lib_div::trimExplode(',',$fieldNameList,1));
}
}
......@@ -465,17 +420,9 @@ class t3lib_install {
foreach($keyTypes as $theKey) {
if (is_array($info[$theKey])) {
foreach($info[$theKey] as $fieldN => $fieldC) {
if (!$this->changedUnsignedFields && isset($this->coreFieldsWithUnsignedKeywordRemovedIn380[$table][$fieldN])) {
$FDcomp[$table][$theKey][$fieldN] = str_replace(' unsigned','',$FDcomp[$table][$theKey][$fieldN]);
unset($this->coreFieldsWithUnsignedKeywordRemovedIn380[$table][$fieldN]); // Just to verify that all fields are actually found!
}
if (!isset($FDcomp[$table][$theKey][$fieldN])) {
$extraArr[$table][$theKey][$fieldN] = $fieldC;
} elseif (strcmp($FDcomp[$table][$theKey][$fieldN], $fieldC) && strcmp($FDcomp[$table][$theKey][$fieldN], str_replace(' unsigned','',$fieldC))){
} elseif (strcmp($FDcomp[$table][$theKey][$fieldN], $fieldC) && strcmp($FDcomp[$table][$theKey][$fieldN], $fieldC)){
$diffArr[$table][$theKey][$fieldN] = $fieldC;
$diffArr_cur[$table][$theKey][$fieldN] = $FDcomp[$table][$theKey][$fieldN];
}
......
......@@ -107,6 +107,7 @@
class t3lib_pageSelect {
var $urltypes = Array('','http://','ftp://','mailto:');
var $where_hid_del = ' AND pages.deleted=0'; // This is not the final clauses. There will normally be conditions for the hidden,starttime and endtime fields as well. You MUST initialize the object by the init() function
var $where_groupAccess = ''; // Clause for fe_group access
var $sys_language_uid = 0;
// Versioning preview related:
......@@ -130,6 +131,7 @@ class t3lib_pageSelect {
* @see tslib_fe::fetch_the_id(), tx_tstemplateanalyzer::initialize_editor()
*/
function init($show_hidden) {
$this->where_groupAccess = '';
$this->where_hid_del = ' AND pages.deleted=0 ';
if (!$show_hidden) {
$this->where_hid_del.= 'AND pages.hidden=0 ';
......@@ -165,11 +167,12 @@ class t3lib_pageSelect {