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
00046 if ($this->compatVersionIsCurrent()) {
00047 $description = '<strong>Up to date!</strong><br />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.'.<br />
00048 There are two possibilities that you see this screen:<ol><li><b>You just updated from a previous version of TYPO3:</b>
00049 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.
00050 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.
00051 <i>Please continue to step two.</i></li>
00052 <li><b>You just made a fresh install of TYPO3:</b>
00053 Perfect! All new features will be used.
00054 <i>You can stop here and do not need this wizard now.</i></li></ol>';
00055
00056 if (!$TYPO3_CONF_VARS['SYS']['compat_version']) {
00057 $description .= '
00058 The compatibility version has been set to the current TYPO3 version. This is a stamp and has no impact for your installation.';
00059 }
00060 } else {
00061 $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.</p><p>In the next step, you will see the things that need to be adjusted to make your installation compatible with the new features.';
00062 }
00063
00064 return 1;
00065 }
00066
00073 function getUserInput($inputPrefix) {
00074 global $TYPO3_CONF_VARS;
00075 if ($this->compatVersionIsCurrent()) {
00076 $content = '<strong>You updated from an older version of TYPO3</strong>:<br />
00077 <label for="'.$inputPrefix.'[version]">Select the version where you have upgraded from:</label> <select name="'.$inputPrefix.'[version]" id="'.$inputPrefix.'[version]">';
00078 $versions = array(
00079 '3.8' => '<= 3.8'
00080 );
00081 foreach ($versions as $singleVersion => $caption) {
00082 $content .= '<option value="'.$singleVersion.'">'.$caption.'</option>';
00083 }
00084 $content .= '</select>';
00085 } else {
00086 $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 />
00087 <p><strong>Follow the steps below carefully and confirm every step!</strong><br />You will see this list again after you performed the update.</p>';
00088
00089 $content .= $this->showChangesNeeded($inputPrefix);
00090
00091 $content.= '<p><input type="checkbox" name="'.$inputPrefix.'[compatVersion][all]" id="'.$inputPrefix.'[compatVersion][all]" value="1"> <strong><label for="'.$inputPrefix.'[compatVersion][all]">Check all (ignore selection above)<br />WARNING: this might break the output of your website.</label></strong></p><hr />';
00092 }
00093 return $content;
00094 }
00095
00102 function checkUserInput(&$customMessages) {
00103 global $TYPO3_CONF_VARS;
00104
00105 if ($this->compatVersionIsCurrent()) {
00106 return 1;
00107 } else {
00108 if ($this->userInput['compatVersion']['all']) {
00109 return 1;
00110 } else {
00111 $performUpdate = 1;
00112 $oldVersion = t3lib_div::int_from_ver($TYPO3_CONF_VARS['SYS']['compat_version']);
00113 $currentVersion = t3lib_div::int_from_ver(TYPO3_branch);
00114
00115 foreach ($TYPO3_CONF_VARS['SC_OPTIONS']['ext/install']['compat_version'] as $internalName => $details) {
00116 if ($details['version'] > $oldVersion && $details['version'] <= $currentVersion) {
00117 if (!$this->userInput['compatVersion'][$internalName]) {
00118 $performUpdate = 0;
00119 $customMessages = 'If you want to update the compatibility version, you need to confirm all checkboxes on the previous page.';
00120 break;
00121 }
00122 }
00123 }
00124 return $performUpdate;
00125 }
00126 }
00127 }
00128
00136 function performUpdate(&$dbQueries, &$customMessages) {
00137 $customMessages = '';
00138
00139
00140 if ($this->userInput['version']) {
00141 $customMessages .= 'If you want to see what you need to do to use the new features, run the update wizard again!';
00142 }
00143
00144 $linesArr = $this->pObj->writeToLocalconf_control();
00145 $version = $this->userInput['version'] ? $this->userInput['version'] : TYPO3_branch;
00146 $this->pObj->setValueInLocalconfFile($linesArr, '$TYPO3_CONF_VARS["SYS"]["compat_version"]', $version);
00147 $this->pObj->writeToLocalconf_control($linesArr,0);
00148 $customMessages.= '<br />The compatibility version has been set to '.$version.'.';
00149
00150 return 1;
00151 }
00152
00153
00154
00155
00156
00157
00158
00164 function compatVersionIsCurrent() {
00165 global $TYPO3_CONF_VARS;
00166 if (TYPO3_branch != $TYPO3_CONF_VARS['SYS']['compat_version']) {
00167 return 0;
00168 } else {
00169 return 1;
00170 }
00171 }
00172
00179 function showChangesNeeded($inputPrefix = '') {
00180 global $TYPO3_CONF_VARS;
00181 $oldVersion = t3lib_div::int_from_ver($TYPO3_CONF_VARS['SYS']['compat_version']);
00182 $currentVersion = t3lib_div::int_from_ver(TYPO3_branch);
00183
00184 $tableContents = '';
00185
00186 if (is_array($TYPO3_CONF_VARS['SC_OPTIONS']['ext/install']['compat_version'])) {
00187 $updateWizardBoxes = '';
00188 foreach ($TYPO3_CONF_VARS['SC_OPTIONS']['ext/install']['compat_version'] as $internalName => $details) {
00189 if ($details['version'] > $oldVersion && $details['version'] <= $currentVersion) {
00190 $description = str_replace(chr(10),'<br />',$details['description']);
00191 $description_acknowledge = (isset($details['description_acknowledge']) ? str_replace(chr(10),'<br />',$details['description_acknowledge']) : '');
00192
00193 $updateWizardBoxes.= '
00194 <div style="border: 1px solid; padding: 10px; margin: 10px; padding-top: 0px; width: 500px;">
00195 <h3>'.(isset($details['title'])?$details['title']:$internalName).'</h3>
00196 <p>'.$description.'</p>'.
00197 (strlen($description_acknowledge) ? '<p>'.$description_acknowledge.'</p>' : '').
00198 (strlen($inputPrefix) ? '<p><input type="checkbox" name="'.$inputPrefix.'[compatVersion]['.$internalName.']" id="'.$inputPrefix.'[compatVersion]['.$internalName.']" value="1"> <strong><label for="'.$inputPrefix.'[compatVersion]['.$internalName.']">Acknowledged</label></strong></p>' : '').'
00199 </div>';
00200 }
00201 }
00202 }
00203 if (strlen($updateWizardBoxes)) {
00204 return '<table><tr><td>'.$updateWizardBoxes.'</td></tr></table>';
00205 }
00206 return '';
00207 }
00208 }
00209 ?>