* Fixed bug: Creation of sys_refindex table was not possible if [SYS][multipl...
authorMichael Stucki <michael.stucki@typo3.org>
Thu, 31 Aug 2006 23:09:19 +0000 (23:09 +0000)
committerMichael Stucki <michael.stucki@typo3.org>
Thu, 31 Aug 2006 23:09:19 +0000 (23:09 +0000)
        * Indexed Search: Fixed bug #3994: OpenOffice.org files cannot be indexed by class.external_parser.php
        * Indexed Search: Fixed bug #4093: PHP warning if indexed_search search word contains a front slash
        * Get rid of blob fields in TYPO3 databases (replaced with text fields)

git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@1709 709f56b5-9817-0410-a4d7-c38de5d9e867

ChangeLog
t3lib/class.t3lib_install.php
t3lib/stddb/tables.sql
typo3/sysext/indexed_search/ChangeLog
typo3/sysext/indexed_search/class.external_parser.php
typo3/sysext/indexed_search/pi/class.tx_indexedsearch.php

index 0689e5e..14634b5 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2006-09-01  Michael Stucki  <michael@typo3.org>
+
+       * Fixed bug: Creation of sys_refindex table was not possible if $TYPO3_CONF_VARS[SYS][multiplyDBfieldSize] was set.
+       * Indexed Search: Fixed bug #3994: OpenOffice.org files cannot be indexed by class.external_parser.php
+       * Indexed Search: Fixed bug #4093: PHP warning if indexed_search search word contains a front slash
+       * Get rid of blob fields in TYPO3 databases (replaced with "text" fields)
+
 2006-08-31  Ernesto Baschny <ernst@cron-it.de>
 
        * Fixed bug #4035/3971: Error message when uploading one or two files in file-browser (BE)
index 6ec0803..2ac5cc0 100755 (executable)
@@ -335,10 +335,11 @@ class t3lib_install {
                                                if ($parts[0]!='PRIMARY' && $parts[0]!='KEY' && $parts[0]!='UNIQUE')    {
                                                        $key = str_replace('`', '', $parts[0]);
                                                        $total[$isTable]['fields'][$key] = $parts[1];
-                                               } else {
+                                               } else {        // Process keys
                                                        $newParts = explode(' ',$parts[1],2);
                                                        $key = str_replace('`', '', ($parts[0]=='PRIMARY'?$parts[0]:$newParts[0]));
-                                                       $total[$isTable]['keys'][$key] = str_replace('`', '', $lineV);
+                                                       $lineV = str_replace('`', '', $lineV);
+                                                       $total[$isTable]['keys'][$key] = $lineV;
                                                }
                                        }
                                }
@@ -425,7 +426,19 @@ class t3lib_install {
                        $keyInformation = $GLOBALS['TYPO3_DB']->admin_get_keys($tableName);
                        foreach($keyInformation as $kN => $keyRow)      {
                                $tempKeys[$tableName][$keyRow['Key_name']][$keyRow['Seq_in_index']] = $keyRow['Column_name'];
-                               $tempKeysPrefix[$tableName][$keyRow['Key_name']]= ($keyRow['Key_name']=='PRIMARY'?'PRIMARY KEY':($keyRow['Non_unique']?'KEY':'UNIQUE').' '.$keyRow['Key_name']);
+                               if ($keyRow['Sub_part'])        {
+                                       $tempKeys[$tableName][$keyRow['Key_name']][$keyRow['Seq_in_index']].= '('.$keyRow['Sub_part'].')';
+                               }
+                               if ($keyRow['Key_name']=='PRIMARY')     {
+                                       $tempKeysPrefix[$tableName][$keyRow['Key_name']] = 'PRIMARY KEY';
+                               } else {
+                                       if ($keyRow['Non_unique'])      {
+                                               $tempKeysPrefix[$tableName][$keyRow['Key_name']] = 'KEY';
+                                       } else {
+                                               $tempKeysPrefix[$tableName][$keyRow['Key_name']] = 'UNIQUE';
+                                       }
+                                       $tempKeysPrefix[$tableName][$keyRow['Key_name']].= ' '.$keyRow['Key_name'];
+                               }
                        }
                }
 
index 94d0b62..e9bf0e6 100755 (executable)
@@ -14,25 +14,25 @@ CREATE TABLE be_groups (
   pid int(11) unsigned DEFAULT '0' NOT NULL,
   tstamp int(11) unsigned DEFAULT '0' NOT NULL,
   title varchar(20) DEFAULT '' NOT NULL,
-  non_exclude_fields blob NOT NULL,
-  explicit_allowdeny blob NOT NULL,
-  allowed_languages tinyblob NOT NULL,
-  custom_options blob NOT NULL,
+  non_exclude_fields text NOT NULL,
+  explicit_allowdeny text NOT NULL,
+  allowed_languages tinytext NOT NULL,
+  custom_options text NOT NULL,
   db_mountpoints varchar(40) DEFAULT '' NOT NULL,
-  pagetypes_select tinyblob NOT NULL,
-  tables_select blob NOT NULL,
-  tables_modify blob NOT NULL,
+  pagetypes_select tinytext NOT NULL,
+  tables_select text NOT NULL,
+  tables_modify text NOT NULL,
   crdate int(11) unsigned DEFAULT '0' NOT NULL,
   cruser_id int(11) unsigned DEFAULT '0' NOT NULL,
-  groupMods tinyblob NOT NULL,
+  groupMods tinytext NOT NULL,
   file_mountpoints varchar(40) DEFAULT '' NOT NULL,
-  hidden tinyint(3) unsigned DEFAULT '0' NOT NULL,
+  hidden tinyint(1) unsigned DEFAULT '0' NOT NULL,
   inc_access_lists tinyint(3) unsigned DEFAULT '0' NOT NULL,
   description text NOT NULL,
   lockToDomain varchar(50) DEFAULT '' NOT NULL,
-  deleted tinyint(3) unsigned DEFAULT '0' NOT NULL,
-  TSconfig blob NOT NULL,
-  subgroup tinyblob NOT NULL,
+  deleted tinyint(1) unsigned DEFAULT '0' NOT NULL,
+  TSconfig text NOT NULL,
+  subgroup tinytext NOT NULL,
   hide_in_lists tinyint(4) DEFAULT '0' NOT NULL,
   workspace_perms tinyint(3) DEFAULT '1' NOT NULL,
   PRIMARY KEY (uid),
@@ -49,7 +49,7 @@ CREATE TABLE be_sessions (
   ses_hashlock int(11) DEFAULT '0' NOT NULL,
   ses_userid int(11) unsigned DEFAULT '0' NOT NULL,
   ses_tstamp int(11) unsigned DEFAULT '0' NOT NULL,
-  ses_data mediumblob NOT NULL,
+  ses_data mediumtext NOT NULL,
   ses_backuserid int(11) NOT NULL default '0',
   PRIMARY KEY (ses_id,ses_name)
 );
@@ -64,8 +64,8 @@ CREATE TABLE be_users (
   username varchar(20) DEFAULT '' NOT NULL,
   password varchar(40) DEFAULT '' NOT NULL,
   admin tinyint(4) unsigned DEFAULT '0' NOT NULL,
-  usergroup tinyblob NOT NULL,
-  disable tinyint(4) unsigned DEFAULT '0' NOT NULL,
+  usergroup tinytext NOT NULL,
+  disable tinyint(1) unsigned DEFAULT '0' NOT NULL,
   starttime int(11) unsigned DEFAULT '0' NOT NULL,
   endtime int(11) unsigned DEFAULT '0' NOT NULL,
   lang varchar(2) DEFAULT '' NOT NULL,
@@ -75,16 +75,16 @@ CREATE TABLE be_users (
   crdate int(11) unsigned DEFAULT '0' NOT NULL,
   cruser_id int(11) unsigned DEFAULT '0' NOT NULL,
   realName varchar(80) DEFAULT '' NOT NULL,
-  userMods tinyblob NOT NULL,
-  allowed_languages tinyblob NOT NULL,
-  uc blob NOT NULL,
+  userMods tinytext NOT NULL,
+  allowed_languages tinytext NOT NULL,
+  uc text NOT NULL,
   file_mountpoints varchar(40) DEFAULT '' NOT NULL,
   fileoper_perms tinyint(4) DEFAULT '0' NOT NULL,
   workspace_perms tinyint(3) DEFAULT '1' NOT NULL,
   lockToDomain varchar(50) DEFAULT '' NOT NULL,
-  disableIPlock tinyint(3) unsigned DEFAULT '0' NOT NULL,
-  deleted tinyint(3) unsigned DEFAULT '0' NOT NULL,
-  TSconfig blob NOT NULL,
+  disableIPlock tinyint(1) unsigned DEFAULT '0' NOT NULL,
+  deleted tinyint(1) unsigned DEFAULT '0' NOT NULL,
+  TSconfig text NOT NULL,
   lastlogin int(10) unsigned DEFAULT '0' NOT NULL,
   createdByAction int(11) DEFAULT '0' NOT NULL,
   usergroup_cached_list tinytext NOT NULL,
@@ -100,7 +100,7 @@ CREATE TABLE be_users (
 #
 CREATE TABLE cache_hash (
   hash varchar(32) DEFAULT '' NOT NULL,
-  content mediumblob NOT NULL,
+  content mediumtext NOT NULL,
   tstamp int(11) unsigned DEFAULT '0' NOT NULL,
   ident varchar(20) DEFAULT '' NOT NULL,
   PRIMARY KEY (hash)
@@ -137,7 +137,7 @@ CREATE TABLE pages (
   t3_origuid int(11) DEFAULT '0' NOT NULL,
   tstamp int(11) unsigned DEFAULT '0' NOT NULL,
   sorting int(11) unsigned DEFAULT '0' NOT NULL,
-  deleted tinyint(4) unsigned DEFAULT '0' NOT NULL,
+  deleted tinyint(1) unsigned DEFAULT '0' NOT NULL,
   perms_userid int(11) unsigned DEFAULT '0' NOT NULL,
   perms_groupid int(11) unsigned DEFAULT '0' NOT NULL,
   perms_user tinyint(4) unsigned DEFAULT '0' NOT NULL,
@@ -148,7 +148,7 @@ CREATE TABLE pages (
   cruser_id int(11) unsigned DEFAULT '0' NOT NULL,
   title tinytext NOT NULL,
   doktype tinyint(3) unsigned DEFAULT '0' NOT NULL,
-  TSconfig blob NOT NULL,
+  TSconfig text NOT NULL,
   storage_pid int(11) DEFAULT '0' NOT NULL,
   is_siteroot tinyint(4) DEFAULT '0' NOT NULL,
   php_tree_stop tinyint(4) DEFAULT '0' NOT NULL,
@@ -197,7 +197,7 @@ CREATE TABLE sys_filemounts (
   path varchar(120) DEFAULT '' NOT NULL,
   base tinyint(4) unsigned DEFAULT '0' NOT NULL,
   hidden tinyint(3) unsigned DEFAULT '0' NOT NULL,
-  deleted tinyint(3) unsigned DEFAULT '0' NOT NULL,
+  deleted tinyint(1) unsigned DEFAULT '0' NOT NULL,
   PRIMARY KEY (uid),
   KEY parent (pid)
 );
@@ -209,7 +209,7 @@ CREATE TABLE sys_workspace (
   uid int(11) NOT NULL auto_increment,
   pid int(11) DEFAULT '0' NOT NULL,
   tstamp int(11) DEFAULT '0' NOT NULL,
-  deleted tinyint(3) DEFAULT '0' NOT NULL,
+  deleted tinyint(1) DEFAULT '0' NOT NULL,
   title varchar(30) DEFAULT '' NOT NULL,
   description tinytext NOT NULL,
   adminusers tinytext NOT NULL,
@@ -222,7 +222,7 @@ CREATE TABLE sys_workspace (
   freeze tinyint(3) DEFAULT '0' NOT NULL,
   live_edit tinyint(3) DEFAULT '0' NOT NULL,
   vtypes tinyint(3) DEFAULT '0' NOT NULL,
-  disable_autocreate tinyint(3) DEFAULT '0' NOT NULL,
+  disable_autocreate tinyint(1) DEFAULT '0' NOT NULL,
   swap_modes tinyint(3) DEFAULT '0' NOT NULL,
   publish_access tinyint(3) DEFAULT '0' NOT NULL,
   stagechg_notification tinyint(3) DEFAULT '0' NOT NULL,
@@ -237,12 +237,12 @@ CREATE TABLE sys_workspace (
 CREATE TABLE sys_history (
   uid int(11) unsigned NOT NULL auto_increment,
   sys_log_uid int(11) DEFAULT '0' NOT NULL,
-  history_data mediumblob NOT NULL,
-  fieldlist blob NOT NULL,
+  history_data mediumtext NOT NULL,
+  fieldlist text NOT NULL,
   recuid int(11) DEFAULT '0' NOT NULL,
   tablename varchar(40) DEFAULT '' NOT NULL,
   tstamp int(11) DEFAULT '0' NOT NULL,
-  history_files mediumblob NOT NULL,
+  history_files mediumtext NOT NULL,
   snapshot tinyint(4) DEFAULT '0' NOT NULL,
   PRIMARY KEY (uid),
   KEY recordident (tablename,recuid),
@@ -276,7 +276,7 @@ CREATE TABLE sys_refindex (
   softref_key varchar(30) DEFAULT '' NOT NULL,
   softref_id varchar(40) DEFAULT '' NOT NULL,
   sorting int(11) DEFAULT '0' NOT NULL,
-  deleted int(11) DEFAULT '0' NOT NULL,
+  deleted tinyint(1) DEFAULT '0' NOT NULL,
   ref_table varchar(40) DEFAULT '' NOT NULL,
   ref_uid int(11) DEFAULT '0' NOT NULL,
   ref_string varchar(200) DEFAULT '' NOT NULL,
@@ -284,7 +284,7 @@ CREATE TABLE sys_refindex (
   PRIMARY KEY (hash),
   KEY lookup_rec (tablename,recuid),
   KEY lookup_uid (ref_table,ref_uid),
-  KEY lookup_string (ref_table,ref_string)
+  KEY lookup_string (ref_table,ref_string(199))
 );
 
 #
@@ -303,7 +303,7 @@ CREATE TABLE sys_log (
   type tinyint(3) unsigned DEFAULT '0' NOT NULL,
   details_nr tinyint(3) unsigned DEFAULT '0' NOT NULL,
   IP varchar(39) DEFAULT '' NOT NULL,
-  log_data tinyblob NOT NULL,
+  log_data tinytext NOT NULL,
   event_pid int(11) DEFAULT '-1' NOT NULL,
   workspace int(11) DEFAULT '0' NOT NULL,
   NEWid varchar(20) DEFAULT '' NOT NULL,
index dc355bb..45930bd 100755 (executable)
@@ -1,3 +1,8 @@
+2006-09-01  Michael Stucki  <michael@typo3.org>
+
+       * Fixed bug #3994: OpenOffice.org files cannot be indexed by class.external_parser.php
+       * Fixed bug #4093: PHP warning if indexed_search search word contains a front slash
+
 2006-04-06  Michael Stucki  <michael@typo3.org>
 
        * Fixed bug #3132: preg_replace() compilation error
index 0b148d5..6bab688 100755 (executable)
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *
-*  (c) 2001-2005 Kasper Skaarhoj (kasperYYYY@typo3.com)
+*  (c) 2001-2006 Kasper Skaarhoj (kasperYYYY@typo3.com)
 *  All rights reserved
 *
 *  This script is part of the TYPO3 project. The TYPO3 project is
@@ -365,6 +365,7 @@ class tx_indexed_search_extparse {
                                        $cmd = $this->app['pdfinfo'].' "'.$absFile.'"';
                                        exec($cmd,$res);
                                        $pdfInfo = $this->splitPdfInfo($res);
+                                       unset($res);
                                        if (intval($pdfInfo['pages']))  {
                                                list($low,$high) = explode('-',$cPKey);
 
@@ -372,7 +373,7 @@ class tx_indexed_search_extparse {
                                                $tempFileName = t3lib_div::tempnam('Typo3_indexer');            // Create temporary name
                                                @unlink ($tempFileName);        // Delete if exists, just to be safe.
                                                $cmd = $this->app['pdftotext'].' -f '.$low.' -l '.$high.' -enc UTF-8 -q "'.$absFile.'" '.$tempFileName;
-                                               exec($cmd,$res);
+                                               exec($cmd);
                                                if (@is_file($tempFileName))    {
                                                        $content = t3lib_div::getUrl($tempFileName);
                                                        unlink($tempFileName);
@@ -390,6 +391,7 @@ class tx_indexed_search_extparse {
                                        $cmd = $this->app['catdoc'].' -d utf-8 "'.$absFile.'"';
                                        exec($cmd,$res);
                                        $content = implode(chr(10),$res);
+                                       unset($res);
                                        $contentArr = $this->pObj->splitRegularContent($this->removeEndJunk($content));
                                }
                        break;
@@ -399,6 +401,7 @@ class tx_indexed_search_extparse {
                                        $cmd = $this->app['ppthtml'].' "'.$absFile.'"';
                                        exec($cmd,$res);
                                        $content = implode(chr(10),$res);
+                                       unset($res);
                                        $content = $this->pObj->convertHTMLToUtf8($content);
                                        $contentArr = $this->pObj->splitHTMLContent($this->removeEndJunk($content));
                                        $contentArr['title'] = basename($absFile);      // Make sure the title doesn't expose the absolute path!
@@ -409,6 +412,7 @@ class tx_indexed_search_extparse {
                                        $cmd = $this->app['xlhtml'].' -nc -te "'.$absFile.'"';
                                        exec($cmd,$res);
                                        $content = implode(chr(10),$res);
+                                       unset($res);
                                        $content = $this->pObj->convertHTMLToUtf8($content);
                                        $contentArr = $this->pObj->splitHTMLContent($this->removeEndJunk($content));
                                        $contentArr['title'] = basename($absFile);      // Make sure the title doesn't expose the absolute path!
@@ -422,14 +426,16 @@ class tx_indexed_search_extparse {
                        case 'odt':
                                if ($this->app['unzip'])        {
                                                // Read content.xml:
-                                       $cmd = $this->app['unzip'].' -p '.$absFile.' content.xml';
-                                       exec($cmd,$out);
-                                       $content_xml = implode(chr(10),$out);
+                                       $cmd = $this->app['unzip'].' -p "'.$absFile.'" content.xml';
+                                       exec($cmd,$res);
+                                       $content_xml = implode(chr(10),$res);
+                                       unset($res);
 
                                                // Read meta.xml:
-                                       $cmd = $this->app['unzip'].' -p '.$absFile.' meta.xml';
-                                       exec($cmd, $out);
-                                       $meta_xml = implode(chr(10),$out);
+                                       $cmd = $this->app['unzip'].' -p "'.$absFile.'" meta.xml';
+                                       exec($cmd, $res);
+                                       $meta_xml = implode(chr(10),$res);
+                                       unset($res);
 
                                        $utf8_content = trim(strip_tags(str_replace('<',' <',$content_xml)));
                                        $contentArr = $this->pObj->splitRegularContent($utf8_content);
@@ -456,6 +462,7 @@ class tx_indexed_search_extparse {
                                        $cmd = $this->app['unrtf'].' "'.$absFile.'"';
                                        exec($cmd,$res);
                                        $fileContent = implode(chr(10),$res);
+                                       unset($res);
                                        $fileContent = $this->pObj->convertHTMLToUtf8($fileContent);
                                        $contentArr = $this->pObj->splitHTMLContent($fileContent);
                                }
@@ -526,6 +533,7 @@ class tx_indexed_search_extparse {
                                $cmd = $this->app['pdfinfo'].' "'.$absFile.'"';
                                exec($cmd,$res);
                                $pdfInfo = $this->splitPdfInfo($res);
+                               unset($res);
 
                                if (intval($pdfInfo['pages']))  {
                                        $cParts = array();
index f17fe08..b3c0c74 100755 (executable)
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *
-*  (c) 2001-2005 Kasper Skaarhoj (kasperYYYY@typo3.com)
+*  (c) 2001-2006 Kasper Skaarhoj (kasperYYYY@typo3.com)
 *  All rights reserved
 *
 *  This script is part of the TYPO3 project. The TYPO3 project is
@@ -1958,7 +1958,7 @@ class tx_indexedsearch extends tslib_pibase {
        /**
         * Marks up the search words from $this->sWarr in the $str with a color.
         *
-        * @param       string          text in which to find and mark up search words. This text is assumed to be UTF-8 like the search words internally is.
+        * @param       string          Text in which to find and mark up search words. This text is assumed to be UTF-8 like the search words internally is.
         * @return      string          Processed content.
         */
        function markupSWpartsOfString($str)    {
@@ -1970,13 +1970,13 @@ class tx_indexedsearch extends tslib_pibase {
 
                        // Prepare search words for regex:
                foreach ($this->sWArr as $d)    {
-                       $swForReg[] = quotemeta($d['sword']);
+                       $swForReg[] = preg_quote($d['sword'],'/');
                }
                $regExString = '('.implode('|',$swForReg).')';
 
                        // Split and combine:
                $parts = preg_split('/'.$regExString.'/i', ' '.$str.' ', 20000, PREG_SPLIT_DELIM_CAPTURE);
-#debug($parts,$regExString);
+// debug($parts,$regExString);
                        // Constants:
                $summaryMax = 300;
                $postPreLgd = 60;