]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - modules/UpgradeWizard/end.php
Release 6.1.4
[Github/sugarcrm.git] / modules / UpgradeWizard / end.php
1 <?php
2 if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
3 /*********************************************************************************
4  * SugarCRM is a customer relationship management program developed by
5  * SugarCRM, Inc. Copyright (C) 2004-2011 SugarCRM Inc.
6  * 
7  * This program is free software; you can redistribute it and/or modify it under
8  * the terms of the GNU Affero General Public License version 3 as published by the
9  * Free Software Foundation with the addition of the following permission added
10  * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
11  * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
12  * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
13  * 
14  * This program is distributed in the hope that it will be useful, but WITHOUT
15  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16  * FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
17  * details.
18  * 
19  * You should have received a copy of the GNU Affero General Public License along with
20  * this program; if not, see http://www.gnu.org/licenses or write to the Free
21  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
22  * 02110-1301 USA.
23  * 
24  * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
25  * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
26  * 
27  * The interactive user interfaces in modified source and object code versions
28  * of this program must display Appropriate Legal Notices, as required under
29  * Section 5 of the GNU Affero General Public License version 3.
30  * 
31  * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
32  * these Appropriate Legal Notices must retain the display of the "Powered by
33  * SugarCRM" logo. If the display of the logo is not reasonably feasible for
34  * technical reasons, the Appropriate Legal Notices must display the words
35  * "Powered by SugarCRM".
36  ********************************************************************************/
37
38 /*********************************************************************************
39
40  * Description:
41  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. All Rights
42  * Reserved. Contributor(s): ______________________________________..
43  * *******************************************************************************/
44 logThis('[At end.php]');
45 global $unzip_dir;
46 global $path;
47 global $sugar_config;
48
49 if($unzip_dir == null ) {
50         $unzip_dir = $_SESSION['unzip_dir'];
51 }
52
53 //First repair the databse to ensure it is up to date with the new vardefs/tabledefs
54 logThis('About to repair the database.', $path);
55 //Use Repair and rebuild to update the database.
56 global $dictionary, $beanFiles; 
57 require_once("modules/Administration/QuickRepairAndRebuild.php");
58 $rac = new RepairAndClear();
59 $rac->clearVardefs();
60 $rac->rebuildExtensions();
61
62 $repairedTables = array();
63                 
64 foreach ($beanFiles as $bean => $file) {
65         if(file_exists($file)){
66                 require_once ($file);
67                 unset($GLOBALS['dictionary'][$bean]);
68                 $focus = new $bean ();
69                 if (($focus instanceOf SugarBean) && !isset($repairedTables[$focus->table_name])) {
70                         $sql = $db->repairTable($focus, true);
71                         logThis('Running sql:' . $sql, $path);
72                         $repairedTables[$focus->table_name] = true;
73                 }
74         }
75 }
76                 
77 $olddictionary = $dictionary;
78
79 unset ($dictionary);
80 include ('modules/TableDictionary.php');
81 foreach ($dictionary as $meta) {
82         $tablename = $meta['table'];
83         if (isset($repairedTables[$tablename])) continue;
84         $fielddefs = $meta['fields'];
85         $indices = $meta['indices'];
86         $sql = $GLOBALS['db']->repairTableParams($tablename, $fielddefs, $indices, true);
87         logThis('Running sql:' . $sql, $path);
88         $repairedTables[$tablename] = true;
89 }
90
91                 $dictionary = $olddictionary;
92
93 logThis('database repaired', $path);
94
95 $ce_to_pro_ent = isset($_SESSION['upgrade_from_flavor']) && ($_SESSION['upgrade_from_flavor'] == 'SugarCE to SugarPro' || $_SESSION['upgrade_from_flavor'] == 'SugarCE to SugarEnt');
96
97 if(isset($_SESSION['current_db_version']) && $_SESSION['current_db_version'] < '550')
98 {
99     include("install/seed_data/Advanced_Password_SeedData.php");
100 }
101
102 if(isset($_SESSION['current_db_version']) && $_SESSION['current_db_version'] < '550' && $sugar_config['dbconfig']['db_type'] == 'mssql' && !is_freetds())
103 {
104      convertImageToText('import_maps', 'content');
105      convertImageToText('import_maps', 'default_values');
106 }
107
108 logThis(" Start Rebuilding the config file again", $path);
109
110 //check and set the logger before rebuilding config
111 if(!isset($sugar_config['logger'])){
112         $sugar_config['logger'] =array (
113                 'level'=>'fatal',
114             'file' =>
115               array (
116                       'ext' => '.log',
117                       'name' => 'sugarcrm',
118                       'dateFormat' => '%c',
119                       'maxSize' => '10MB',
120                       'maxLogs' => 10,
121                       'suffix' => '%m_%Y',
122                   ),
123         );
124 }
125
126 if(!rebuildConfigFile($sugar_config, $sugar_version)) {
127         logThis('*** WARNING: could not write config.php!', $path);
128 }
129 logThis(" Finish Rebuilding the config file again", $path);
130
131 set_upgrade_progress('end','in_progress');
132
133
134 if(isset($_SESSION['current_db_version']) && isset($_SESSION['target_db_version'])){
135         if($_SESSION['current_db_version'] != $_SESSION['target_db_version']){
136                 logThis("Upgrading multienum data", $path);
137         require_once("$unzip_dir/scripts/upgrade_multienum_data.php");
138         upgrade_multienum_data();       
139          }
140          
141
142          //keeping separate. making easily visible and readable
143          if($_SESSION['current_db_version'] == $_SESSION['target_db_version']){
144             $_REQUEST['upgradeWizard'] = true;
145             ob_start();
146                         include('modules/ACL/install_actions.php');
147                         include_once('include/Smarty/internals/core.write_file.php');
148                 ob_end_clean();
149                 $db =& DBManagerFactory::getInstance();
150                 if($ce_to_pro_ent){
151                 //Also set license information
152                         $admin = new Administration();
153                         $category = 'license';
154                         $value = '0';
155                         $admin->saveSetting($category, 'users', $value);
156                         $key = array('num_lic_oc','key','expire_date');
157                         $value = '';
158                         foreach($key as $k){
159                                 $admin->saveSetting($category, $k, $value);
160                         }
161                 }
162         }
163 }
164
165 // Mark the instance as having gone thru the admin wizard
166 $admin = new Administration();
167 $admin->saveSetting('system','adminwizard',1);
168
169  /////////////////////////Old Logger settings///////////////////////////////////////
170 ///////////////////////////////////////////////////////////////////////////////
171 if(file_exists('modules/Configurator/Configurator.php')){
172         require_once('include/utils/array_utils.php');
173         require_once('modules/Configurator/Configurator.php');
174         $Configurator = new Configurator();
175         $Configurator->parseLoggerSettings();
176 }
177 //unset the logger previously instantiated
178 if(file_exists('include/SugarLogger/LoggerManager.php')){
179         
180         unset($GLOBALS['log']);
181         $GLOBALS['log'] = LoggerManager::getLogger('SugarCRM');
182 }
183
184
185 //Upgrade connectors
186 if(function_exists('upgrade_connectors'))
187 {
188    upgrade_connectors($path);
189 }
190
191 //Unlink files that have been removed
192 if(function_exists('unlinkUpgradeFiles'))
193 {
194         unlinkUpgradeFiles($_SESSION['current_db_version']);
195 }
196
197 require_once('modules/Administration/upgrade_custom_relationships.php');
198 upgrade_custom_relationships();
199
200 //Update the license
201 logThis('Start Updating the license ', $path);
202 ob_start();
203    
204    check_now(get_sugarbeat());
205 ob_end_clean();
206 logThis('End Updating the license ', $path);
207
208 set_upgrade_progress('end','done');
209
210 logThis('Cleaning up the session.  Goodbye.');
211 unlinkTempFiles();
212 logThis('Cleaning up the session.  Goodbye.');
213 resetUwSession();
214 // flag to say upgrade has completed
215 $_SESSION['upgrade_complete'] = true;
216
217 //add the clean vardefs here
218 if(!class_exists('VardefManager')){
219         
220 }
221 VardefManager::clearVardef();
222
223 require_once('include/TemplateHandler/TemplateHandler.php');
224 TemplateHandler::clearAll();
225
226 //also add the cache cleaning here.
227 if(function_exists('deleteCache')){
228         deleteCache();
229 }
230
231 global $mod_strings;
232 global $current_language;
233
234 if(!isset($current_language) || ($current_language == null)){
235         $current_language = 'en_us';
236 }
237 if(isset($GLOBALS['current_language']) && ($GLOBALS['current_language'] != null)){
238         $current_language = $GLOBALS['current_language'];
239 }
240 $mod_strings = return_module_language($current_language, 'UpgradeWizard');
241 $stop = false;
242
243
244 $httpHost               = $_SERVER['HTTP_HOST'];  // cn: 8472 - HTTP_HOST includes port in some cases
245 if($colon = strpos($httpHost, ':')) {
246         $httpHost       = substr($httpHost, 0, $colon);
247 }
248 $parsedSiteUrl  = parse_url($sugar_config['site_url']);
249 $host                   = ($parsedSiteUrl['host'] != $httpHost) ? $httpHost : $parsedSiteUrl['host'];
250
251 // aw: 9747 - use SERVER_PORT for users who don't plug in the site_url at install correctly
252 if ($_SERVER['SERVER_PORT'] != 80){
253         $port = ":".$_SERVER['SERVER_PORT'];
254 }
255 else if (isset($parsedSiteUrl['port']) && $parsedSiteUrl['port'] != 80){
256         $port = ":".$parsedSiteUrl['port'];
257 }
258 else{
259         $port = '';
260 }
261 $path                   = $parsedSiteUrl['path'];
262 $cleanUrl               = "{$parsedSiteUrl['scheme']}://{$host}{$port}{$path}/index.php";
263
264 $uwMain =<<<eoq
265 <table cellpadding="3" cellspacing="0" border="0">
266
267         <tr>
268                 <td align="left">
269                         <p>
270                         <br>
271                         {$mod_strings['LBL_UW_END_LOGOUT_PRE2']}
272                         <br>
273                         <br>
274             <b>{$mod_strings['LBL_UW_END_LOGOUT_PRE']}</b> {$mod_strings['LBL_UW_END_LOGOUT']}
275                         </p>
276                 </td>
277         </tr>
278 </table>
279
280 <script>
281  function deleteCacheAjax(){
282         //AJAX call for checking the file size and comparing with php.ini settings.
283         var callback = {
284                  success:function(r) {
285                      //alert(r.responseText);
286                  }
287         }
288         postData = '&module=UpgradeWizard&action=deleteCache&to_pdf=1';
289         YAHOO.util.Connect.asyncRequest('POST', 'index.php', callback, postData);
290 }
291 </script>
292 eoq;
293
294 $showBack               = false;
295 $showCancel             = false;
296 $showRecheck    = false;
297 $showNext               = false;
298 $showDone       = true;
299
300 $stepBack               = 0;
301 $stepNext               = 0;
302 $stepCancel     = 0;
303 $stepRecheck    = 0;
304
305 $_SESSION['step'][$steps['files'][$_REQUEST['step']]] = ($stop) ? 'failed' : 'success';
306
307 ?>