00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00032 class tx_coreupdates_compatversion {
00033 var $versionNumber;
00034 var $pObj;
00035 var $userInput;
00036
00043 function checkForUpdate(&$description) {
00044 global $TYPO3_CONF_VARS;
00045 if ($this->compatVersionIsCurrent()) {
00046 $description = '<b>If you do not use the wizard, your current TYPO3 installation is configured to use all the features included in the current release '.TYPO3_version.'.</b>
00047 There are two possibilities that you see this screen:<ol><li><b>You just updated from a previous version of TYPO3:</b>
00048 Because of some new features, the frontend output of your site might have changed. To emulate the "old" frontend behavior, change the compatibility version by continuing to step 2.
00049 This is <b>recommended</b> after every update to make sure the frontend output is not altered. When re-running the wizard, you will see the changes needed for using the new features.
00050 <i>Please continue to step two.</i></li>
00051 <li><b>You just made a fresh install of TYPO3:</b>
00052 Perfect! All new features will be used.
00053 <i>You can stop here and do not need this wizard now.</i></li></ol>';
00054
00055 if (!$TYPO3_CONF_VARS['SYS']['compat_version']) {
00056 $description .= '
00057 The compatibility version has been set to the current TYPO3 version. This is a stamp and has no impact for your installation.';
00058 }
00059 } else {
00060 $description = 'Your current TYPO3 installation is configured to <b>behave like version '.$TYPO3_CONF_VARS['SYS']['compat_version'].'</b> of TYPO3. If you just upgraded from this version, you most likely want to <b>use new features</b> as well. In the next step, you will see the things that need to be adjusted to make your installation compatible with the new features.';
00061 }
00062
00063 return 1;
00064 }
00065
00072 function getUserInput($inputPrefix) {
00073 global $TYPO3_CONF_VARS;
00074 if ($this->compatVersionIsCurrent()) {
00075 $content = '<b>You updated from an older version of TYPO3</b>:<br>
00076 <label for="'.$inputPrefix.'[version]">Select the version where you have upgraded from:</label> <select name="'.$inputPrefix.'[version]" id="'.$inputPrefix.'[version]">';
00077 $versions = array(
00078 '3.8' => '<= 3.8'
00079 );
00080 foreach ($versions as $singleVersion => $caption) {
00081 $content .= '<option value="'.$singleVersion.'">'.$caption.'</option>';
00082 }
00083 $content .= '</select>';
00084 } else {
00085 $content = 'TYPO3 output is currently compatible to version '.$TYPO3_CONF_VARS['SYS']['compat_version'].'. To use all the new features in the current TYPO3 version, make sure you follow the guidelines below to upgrade without problems.<br />
00086 <b>Follow the steps below carefully and confirm every step!</b> You will see this list again after you performed the update.';
00087
00088 $content .= $this->showChangesNeeded($inputPrefix);
00089
00090 $content .= '<br /><input type="checkbox" name="'.$inputPrefix.'[compatVersion][all]" id="'.$inputPrefix.'[compatVersion][all]" value="1"> <b><label for="'.$inputPrefix.'[compatVersion][all]">ignore selection above - WARNING: this might break the output of your website.</label></b>';
00091 }
00092 return $content;
00093 }
00094
00101 function checkUserInput(&$customMessages) {
00102 global $TYPO3_CONF_VARS;
00103 if ($this->compatVersionIsCurrent()) {
00104 return 1;
00105 } else {
00106 if ($this->userInput['compatVersion']['all']) {
00107 return 1;
00108 } else {
00109 $performUpdate = 1;
00110 $oldVersion = t3lib_div::int_from_ver($TYPO3_CONF_VARS['SYS']['compat_version']);
00111 $currentVersion = t3lib_div::int_from_ver(TYPO3_version);
00112 foreach ($TYPO3_CONF_VARS['SC_OPTIONS']['ext/install']['compat_version'] as $internalName => $details) {
00113 if ($details['version'] > $oldVersion && $details['version'] <= $currentVersion) {
00114 if (!$this->userInput['compatVersion'][$internalName]) {
00115 $performUpdate = 0;
00116 $customMessages = 'If you want to update the compatibility version, you need to confirm all checkboxes on the previous page.';
00117 break;
00118 }
00119 }
00120 }
00121 return $performUpdate;
00122 }
00123 }
00124 }
00125
00133 function performUpdate(&$dbQueries, &$customMessages) {
00134 $customMessages = '';
00135
00136
00137 if ($this->userInput['version']) {
00138 $customMessages .= 'If you want to see what you need to do to use the new features, run the update wizard again!';
00139 }
00140
00141 $linesArr = $this->pObj->writeToLocalconf_control();
00142 $version = $this->userInput['version']?$this->userInput['version']:TYPO3_version;
00143 $this->pObj->setValueInLocalconfFile($linesArr, '$TYPO3_CONF_VARS["SYS"]["compat_version"]', $version);
00144 $this->pObj->writeToLocalconf_control($linesArr,0);
00145 $customMessages .= '
00146 The compatibility version has been set to '.$version.'.';
00147 $customMessages .= $this->showChangesNeeded();
00148
00149 return 1;
00150 }
00151
00152
00153
00154
00155
00156
00157
00163 function compatVersionIsCurrent() {
00164 global $TYPO3_CONF_VARS;
00165 if ($TYPO3_CONF_VARS['SYS']['compat_version'] && t3lib_div::int_from_ver(TYPO3_version) != t3lib_div::int_from_ver($TYPO3_CONF_VARS['SYS']['compat_version'])) {
00166 return 0;
00167 } else {
00168 return 1;
00169 }
00170 }
00171
00178 function showChangesNeeded($inputPrefix = '') {
00179 global $TYPO3_CONF_VARS;
00180 $oldVersion = t3lib_div::int_from_ver($TYPO3_CONF_VARS['SYS']['compat_version']);
00181 $currentVersion = t3lib_div::int_from_ver(TYPO3_version);
00182
00183 $tableContents = '';
00184 if (is_array($TYPO3_CONF_VARS['SC_OPTIONS']['ext/install']['compat_version'])) {
00185 foreach ($TYPO3_CONF_VARS['SC_OPTIONS']['ext/install']['compat_version'] as $internalName => $details) {
00186 if ($details['version'] > $oldVersion && $details['version'] <= $currentVersion) {
00187 $tableContents .= '<tr><td colspan="2"><hr /></td></tr>
00188 <tr><td valign="bottom">'.($inputPrefix?'<input type="checkbox" name="'.$inputPrefix.'[compatVersion]['.$internalName.']" id="'.$inputPrefix.'[compatVersion]['.$internalName.']" value="1">':' ').'</td><td>'.str_replace(chr(10),'<br />',$details['description']).($inputPrefix?'<br /><b><label for="'.$inputPrefix.'[compatVersion]['.$internalName.']">'.$details['description_acknowledge'].'</label></b>':'').'</td></tr>';
00189 }
00190 }
00191 }
00192 if (strlen($tableContents)) {
00193 return '<table>'.$tableContents.'</table>';
00194 }
00195 return '';
00196 }
00197 }
00198 ?>