[TYPO3-dam-devel] RFC #7762: Failed query during install

Michiel Roos michiel at netcreators.com
Fri May 9 23:53:41 CEST 2008


+1

On May 9, 2008, at 10:49 AM, Peter Kuehn [wmdb] wrote:

> Hi yall,
>
> this is a SVN patch request.
>
> Branches: DAM_1.0 and Trunk (1.1)
>
> BT Reference: http://bugs.typo3.org/view.php?id=7762
>
> Type: Bugfix / Cleanup
>
> Descripton from Mantis:
> -----------------------
> When installing the DAM on a 4.2 TYPO3 install, the script dam/ 
> class.ext_update.php is called many times, each time the  
> CMD[showExt]=dam query parameter is set. This calls  
> ext_update::access() which itself calls ext_update::perform_update().
>
> This last method tries to perform some changes on table  
> tx_dam_mm_ref without first checking whether it exists or not. This  
> of course generates a SQL error. It should be just necessary to add  
> a test before calling:
>
> $res = $GLOBALS['TYPO3_DB']->admin_get_fields('tx_dam_mm_ref');
>
> line 121
>
> This happened on a TYPO3 4.2-beta3 install, with DAM not yet  
> installed. Looking at the code it should happen on a 4.1 install too.
>
> Steps to reproduce:
> -------------------
> install dam on a newborn typo3-db with no dam tables and php set to  
> display_errors=on
>
> Solution:
> ---------
> check if tx_dam_mm_ref exists before trying to modify it ;)
>
> Notes:
> ------
> i added a relation to http://bugs.typo3.org/view.php?id=6843 to the  
> ticket. as discussed on the list earlier, the whole  
> class.ext_update.php should be reworked asap in coop with the core  
> team.
>
> pls ack
> gRTz
> pekue
> Index: class.ext_update.php
> ===================================================================
> --- class.ext_update.php	(revision 9116)
> +++ class.ext_update.php	(working copy)
> @@ -118,21 +118,24 @@
>
> 		if  
> (t3lib_div 
> ::int_from_ver(TYPO3_branch)>=t3lib_div::int_from_ver('4.1')) {
> 			
> -			$res = $GLOBALS['TYPO3_DB']->admin_get_fields('tx_dam_mm_ref');
> -			if (isset($res['sorting_foreign'])) {
> -				# for testing only: $GLOBALS['TYPO3_DB']- 
> >exec_UPDATEquery('tx_dam_mm_ref', '', array('sorting_foreign'=>'0'));
> -				$rows = $GLOBALS['TYPO3_DB']- 
> >exec_SELECTgetRows('count(sorting_foreign)', 'tx_dam_mm_ref',  
> 'sorting_foreign>0');
> -				if ($rows['0']['count(sorting_foreign)']==0) {
> -					$GLOBALS['TYPO3_DB']->admin_query('ALTER TABLE tx_dam_mm_ref  
> DROP sorting_foreign');
> -					unset($res['sorting_foreign']);
> +			$existingTables=$GLOBALS['TYPO3_DB']->admin_get_tables();
> +			if(isset($existingTables['tx_dam_mm_ref']))	{
> +				$res = $GLOBALS['TYPO3_DB']->admin_get_fields('tx_dam_mm_ref');
> +				if (isset($res['sorting_foreign'])) {
> +					# for testing only: $GLOBALS['TYPO3_DB']- 
> >exec_UPDATEquery('tx_dam_mm_ref', '', array('sorting_foreign'=>'0'));
> +					$rows = $GLOBALS['TYPO3_DB']- 
> >exec_SELECTgetRows('count(sorting_foreign)', 'tx_dam_mm_ref',  
> 'sorting_foreign>0');
> +					if ($rows['0']['count(sorting_foreign)']==0) {
> +						$GLOBALS['TYPO3_DB']->admin_query('ALTER TABLE tx_dam_mm_ref  
> DROP sorting_foreign');
> +						unset($res['sorting_foreign']);
> +					}
> 				}
> +				
> +				if (!isset($res['sorting_foreign'])) {
> +					$GLOBALS['TYPO3_DB']->admin_query('ALTER TABLE tx_dam_mm_ref  
> CHANGE sorting sorting_foreign int(11) unsigned DEFAULT 0 NOT NULL');
> +					$GLOBALS['TYPO3_DB']->admin_query('ALTER TABLE tx_dam_mm_ref  
> ADD sorting int(11) unsigned DEFAULT 0 NOT NULL');
> +					$content .= 'Renamed field tx_dam_mm_ref.sorting to  
> sorting_foreign<br />';
> +				}
> 			}
> -			
> -			if (!isset($res['sorting_foreign'])) {
> -				$GLOBALS['TYPO3_DB']->admin_query('ALTER TABLE tx_dam_mm_ref  
> CHANGE sorting sorting_foreign int(11) unsigned DEFAULT 0 NOT NULL');
> -				$GLOBALS['TYPO3_DB']->admin_query('ALTER TABLE tx_dam_mm_ref  
> ADD sorting int(11) unsigned DEFAULT 0 NOT NULL');
> -				$content .= 'Renamed field tx_dam_mm_ref.sorting to  
> sorting_foreign<br />';
> -			}
> 		}
> 		
> 		return $content;
> _______________________________________________
> Before posting to this list, please have a look to the posting rules
> on the following websites:
>
> http://typo3.org/teams/core/core-mailinglist-rules/
> http://typo3.org/development/bug-fixing/diff-and-patch/
> _______________________________________________
> TYPO3-team-dam mailing list
> TYPO3-team-dam at lists.netfielders.de
> http://lists.netfielders.de/cgi-bin/mailman/listinfo/typo3-team-dam


Met vriendelijke groet,

Michiel Roos

Netcreators BV :: creation and innovation
www.netcreators.com

Interesse in werken bij Netcreators?
http://www.netcreators.com/bedrijf/vacatures/



More information about the TYPO3-team-dam mailing list