]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - install/dbConfig_a.php
Release 6.4.0
[Github/sugarcrm.git] / install / dbConfig_a.php
1 <?php
2 if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
3 /*********************************************************************************
4  * SugarCRM Community Edition 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 global $sugar_version, $js_custom_version;
41
42
43 if(empty($_SESSION['setup_db_host_name'])){
44       $_SESSION['setup_db_host_name'] = (isset($sugar_config['db_host_name']))  ? $sugar_config['db_host_name'] :  $_SERVER['SERVER_NAME'];
45 }
46
47 if( !isset( $install_script ) || !$install_script ){
48         die($mod_strings['ERR_NO_DIRECT_SCRIPT']);
49 }
50
51
52 // DB split
53 $createDbCheckbox = '';
54 $createDb = (!empty($_SESSION['setup_db_create_database'])) ? 'checked="checked"' : '';
55 $dropCreate = (!empty($_SESSION['setup_db_drop_tables'])) ? 'checked="checked"' : '';
56 $instanceName = '';
57 if (isset($_SESSION['setup_db_host_instance']) && !empty($_SESSION['setup_db_host_instance'])){
58         $instanceName = $_SESSION['setup_db_host_instance'];
59 }
60
61 $setupDbPortNum ='';
62 if (isset($_SESSION['setup_db_port_num']) && !empty($_SESSION['setup_db_port_num'])){
63         $setupDbPortNum = $_SESSION['setup_db_port_num'];
64 }
65
66 $db = getInstallDbInstance();
67
68 ///////////////////////////////////////////////////////////////////////////////
69 ////    BEGIN PAGE OUTPUT
70
71 $langHeader = get_language_header();
72
73 $out =<<<EOQ
74 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
75 <html {$langHeader}>
76 <head>
77     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
78     <meta http-equiv="Content-Script-Type" content="text/javascript">
79     <meta http-equiv="Content-Style-Type" content="text/css">
80     <title>{$mod_strings['LBL_WIZARD_TITLE']} {$mod_strings['LBL_DBCONF_TITLE']}</title>
81     <link rel="stylesheet" href="install/install.css" type="text/css" />
82     <script type="text/javascript" src="install/installCommon.js"></script>
83     <script type="text/javascript" src="install/dbConfig.js"></script>
84     <link REL="SHORTCUT ICON" HREF="include/images/sugar_icon.ico">
85     <script src="cache/include/javascript/sugar_grp1_yui.js?s={$sugar_version}&c={$js_custom_version}"></script>
86     <script type="text/javascript">
87     <!--
88     if ( YAHOO.env.ua )
89         UA = YAHOO.env.ua;
90     -->
91     </script>
92     <link rel='stylesheet' type='text/css' href='include/javascript/yui/build/container/assets/container.css' />
93
94 </head>
95 EOQ;
96 $out .= '<body onload="document.getElementById(\'button_next2\').focus();">';
97
98 $out2 =<<<EOQ2
99 <form action="install.php" method="post" name="setConfig" id="form">
100 <input type='hidden' name='setup_db_drop_tables' id='setup_db_drop_tables' value=''>
101 <input type="hidden" id="hidden_goto" name="goto" value="{$mod_strings['LBL_BACK']}" />
102 <table cellspacing="0" cellpadding="0" border="0" align="center" class="shell">
103
104       <tr><td colspan="2" id="help"><a href="{$help_url}" target='_blank'>{$mod_strings['LBL_HELP']} </a></td></tr>
105     <tr>
106       <th width="500">
107                 <p>
108                 <img src="{$sugar_md}" alt="SugarCRM" border="0">
109                 </p>
110                 {$mod_strings['LBL_DBCONF_TITLE']}
111         </th>
112         <th width="200" height="30" style="text-align: right;"><a href="http://www.sugarcrm.com" target="_blank">
113                 <IMG src="include/images/sugarcrm_login.png" width="145" height="30" alt="SugarCRM" border="0"></a>
114         </th>
115 </tr>
116 <tr>
117         <td colspan="2">
118 <div id="errorMsgs" style="display:none"></div>
119 <div class="required">{$mod_strings['LBL_REQUIRED']}</div>
120 <table width="100%" cellpadding="0" cellpadding="0" border="0" class="StyleDottedHr">
121 <tr><th colspan="3" align="left" >{$mod_strings['LBL_DBCONF_TITLE_NAME']} </td></tr>
122
123 EOQ2;
124
125 $config_params = $db->installConfig();
126 $form = '';
127 foreach($config_params as $group => $gdata) {
128     $form .= "<tr><td colspan=\"3\" align=\"left\">{$mod_strings[$group]}</td></tr>\n";
129     foreach($gdata as $name => $value) {
130         if(!empty($value)) {
131             $form .= "<tr>";
132             if(!empty($value['required'])) {
133                $form .= "<td><span class=\"required\">*</span></td>\n";
134             } else {
135                 $form .= "<td>&nbsp;</td>\n";
136             }
137             if(!empty($_SESSION[$name])) {
138                 $sessval = $_SESSION[$name];
139             } else {
140                 $sessval = '';
141             }
142             if(!empty($value["type"])) {
143                 $type = $value["type"];
144             } else {
145                 $type = '';
146             }
147             $form .= <<<FORM
148             <td nowrap><b>{$mod_strings[$value["label"]]}</b></td>
149             <td align="left">
150                         <input type="$type" name="$name" id="$name" value="$sessval">
151                         </td></tr>
152 FORM;
153         } else {
154             $form .= "<input name=\"$name\" id=\"$name\" value=\"\" type=\"hidden\">\n";
155         }
156     }
157 }
158
159 $out2 .= $form;
160
161 //if we are installing in custom mode, include the following html
162 if($db->supports("create_user")){
163 // create / set db user dropdown
164 $auto_select = '';$provide_select ='';$create_select = '';$same_select = '';
165 if(isset($_SESSION['dbUSRData'])){
166 //    if($_SESSION['dbUSRData']=='auto')    {$auto_select ='selected';}
167     if($_SESSION['dbUSRData']=='provide') {$provide_select ='selected';}
168 if(isset($_SESSION['install_type'])  && !empty($_SESSION['install_type'])  && strtolower($_SESSION['install_type'])=='custom'){
169     if($_SESSION['dbUSRData']=='create')  {$create_select ='selected';}
170 }
171     if($_SESSION['dbUSRData']=='same')  {$same_select ='selected';}
172 }else{
173     $same_select ='selected';
174 }
175 $dbUSRDD   = "<select name='dbUSRData' id='dbUSRData' onchange='toggleDBUser();'>";
176 $dbUSRDD  .= "<option value='provide' $provide_select>".$mod_strings['LBL_DBCONFIG_PROVIDE_DD']."</option>";
177 $dbUSRDD  .= "<option value='create' $create_select>".$mod_strings['LBL_DBCONFIG_CREATE_DD']."</option>";
178 $dbUSRDD  .= "<option value='same' $same_select>".$mod_strings['LBL_DBCONFIG_SAME_DD']."</option>";
179 $dbUSRDD  .= "</select><br>&nbsp;";
180
181
182
183
184 $out2 .=<<<EOQ2
185
186 <table width="100%" cellpadding="0" cellpadding="0" border="0" class="StyleDottedHr">
187 <tr><td colspan="3" align="left"><br>{$mod_strings['LBL_DBCONFIG_SECURITY']}</td></tr>
188 <tr><td width='1%'>&nbsp;</td><td width='60%'><div id='sugarDBUser'><b>{$mod_strings['LBL_DBCONF_SUGAR_DB_USER']}</b></div>&nbsp;</td><td width='35%'>$dbUSRDD</td></tr>
189 </table>
190
191 <span id='connection_user_div' style="display:none">
192 <table width="100%" cellpadding="0" cellpadding="0" border="0" class="StyleDottedHr">
193     <tr>
194         <td width='1%'><span class="required">*</span></td>
195         <td nowrap width='60%'><b>{$mod_strings['LBL_DBCONF_SUGAR_DB_USER']}</b></td>
196         <td  width='35%'nowrap align="left">
197          <input type="text" name="setup_db_sugarsales_user" maxlength="16" value="{$_SESSION['setup_db_sugarsales_user']}" />
198         </td>
199 </tr>
200 <tr>
201     <td>&nbsp;</td>
202     <td nowrap><b>{$mod_strings['LBL_DBCONF_DB_PASSWORD']}</b></td>
203     <td nowrap align="left"><input type="password" name="setup_db_sugarsales_password" value="{$_SESSION['setup_db_sugarsales_password']}" /></td>
204 </tr>
205 <tr>
206     <td>&nbsp;</td>
207     <td nowrap><b>{$mod_strings['LBL_DBCONF_DB_PASSWORD2']}</b></td>
208     <td nowrap align="left"><input type="password" name="setup_db_sugarsales_password_retype" value="{$_SESSION['setup_db_sugarsales_password_retype']}" /></td>
209 </tr></table>
210 </span>
211
212 EOQ2;
213 }
214
215 //set demo dropdown
216 //$supported_demodata = array(
217 //      'en_us' => 'English (US)',
218 //      'zh_cn' => '简体中文',
219 //      'ja_jp' => 'Japanese - æ—¥æœ¬èªž',
220 //);
221 $demoDD = "<select name='demoData' id='demoData'><option value='no' >".$mod_strings['LBL_NO']."</option><option value='yes'>".$mod_strings['LBL_YES']."</option>";
222 $demoDD .= "</select><br>&nbsp;";
223
224
225 $out3 =<<<EOQ3
226 <table width="100%" cellpadding="0" cellpadding="0" border="0" class="StyleDottedHr">
227 <tr><th colspan="3" align="left">{$mod_strings['LBL_DBCONF_DEMO_DATA_TITLE']}</th></tr>
228 <tr>
229     <td width='1%'>&nbsp;</td>
230     <td  width='60%'nowrap><b>{$mod_strings['LBL_DBCONF_DEMO_DATA']}</b></td>
231     <td  width='35%'nowrap align="left">
232         {$demoDD}
233     </td>
234 </tr>
235 </table>
236 EOQ3;
237
238
239 $out4 =<<<EOQ4
240 </td>
241 </tr>
242 <tr>
243 <td align="right" colspan="2">
244 <hr>
245      <input type="hidden" name="current_step" value="{$next_step}">
246      <table cellspacing="0" cellpadding="0" border="0" class="stdTable">
247         <tr>
248             <td>
249                 <input class="button" type="button" name="goto" value="{$mod_strings['LBL_BACK']}" id="button_back_dbConfig" onclick="document.getElementById('form').submit();" />
250             </td>
251             <td>
252                 <input class="button" type="button" name="goto" id="button_next2" value="{$mod_strings['LBL_NEXT']}" onClick="callDBCheck();"/>
253             </td>
254         </tr>
255      </table>
256 </td>
257 </tr>
258 </table>
259 </form>
260 <br>
261
262 <script>
263 function toggleDBUser(){
264      if(typeof(document.getElementById('dbUSRData')) !='undefined'
265      && document.getElementById('dbUSRData') != null){
266
267         ouv = document.getElementById('dbUSRData').value;
268         if(ouv == 'provide' || ouv == 'create'){
269             document.getElementById('connection_user_div').style.display = '';
270             document.getElementById('sugarDBUser').style.display = 'none';
271         }else{
272             document.getElementById('connection_user_div').style.display = 'none';
273             document.getElementById('sugarDBUser').style.display = '';
274         }
275     }
276 }
277     toggleDBUser();
278
279 var msgPanel;
280 function callDBCheck(){
281
282             //begin main function that will be called
283             ajaxCall = function(msg_panel){
284                 //create success function for callback
285
286                 getPanel = function() {
287                 var args = {    width:"300px",
288                                 modal:true,
289                                 fixedcenter: true,
290                                 constraintoviewport: false,
291                                 underlay:"shadow",
292                                 close:false,
293                                 draggable:true,
294
295                                 effect:{effect:YAHOO.widget.ContainerEffect.FADE, duration:.5}
296                                } ;
297                         msg_panel = new YAHOO.widget.Panel('p_msg', args);
298
299                         msg_panel.setHeader("{$mod_strings['LBL_LICENSE_CHKDB_HEADER']}");
300                         msg_panel.setBody(document.getElementById("checkingDiv").innerHTML);
301                         msg_panel.render(document.body);
302                         msgPanel = msg_panel;
303                 }
304
305
306                 passed = function(url){
307                     document.setConfig.goto.value="{$mod_strings['LBL_NEXT']}";
308                     document.getElementById('hidden_goto').value="{$mod_strings['LBL_NEXT']}";
309                     document.setConfig.current_step.value="{$next_step}";
310                     document.setConfig.submit();
311                 }
312                 success = function(o) {
313
314                     //condition for just the preexisting database
315                     if (o.responseText.indexOf('preexeest')>=0){
316
317                         //  throw confirmation message
318                         msg_panel.setBody(document.getElementById("sysCheckMsg").innerHTML);
319                         msg_panel.render(document.body);
320                         msgPanel = msg_panel;
321                         document.getElementById('accept_btn').focus();
322                     //condition for no errors
323                     }else if (o.responseText.indexOf('dbCheckPassed')>=0){
324                         //make navigation
325                         passed("install.php?goto={$mod_strings['LBL_NEXT']}");
326
327                     //condition for other errors
328                     }else{
329                         //turn off loading message
330                         msgPanel.hide();
331                         document.getElementById("errorMsgs").innerHTML = o.responseText;
332                         document.getElementById("errorMsgs").style.display = '';
333                         return false;
334                     }
335
336
337                 }//end success
338
339                 //set loading message and create url
340
341                 postData = "checkDBSettings=true&to_pdf=1&sugar_body_only=1";
342                 postData += "&setup_db_database_name="+document.setConfig.setup_db_database_name.value;
343                 if(typeof(document.setConfig.setup_db_host_instance) != 'undefined'){
344                     postData += "&setup_db_host_instance="+document.setConfig.setup_db_host_instance.value;
345                 }
346                 if(typeof(document.setConfig.setup_db_port_num) != 'undefined'){
347                     postData += "&setup_db_port_num="+document.setConfig.setup_db_port_num.value;
348                 }
349                 postData += "&setup_db_host_name="+document.setConfig.setup_db_host_name.value;
350                 postData += "&setup_db_admin_user_name="+document.setConfig.setup_db_admin_user_name.value;
351                 postData += "&setup_db_admin_password="+document.setConfig.setup_db_admin_password.value;
352                 if(typeof(document.setConfig.setup_db_sugarsales_user) != 'undefined'){
353                     postData += "&setup_db_sugarsales_user="+document.setConfig.setup_db_sugarsales_user.value;
354                 }
355                 if(typeof(document.setConfig.setup_db_sugarsales_password) != 'undefined'){
356                     postData += "&setup_db_sugarsales_password="+document.setConfig.setup_db_sugarsales_password.value;
357                 }
358                 if(typeof(document.setConfig.setup_db_sugarsales_password_retype) != 'undefined'){
359                     postData += "&setup_db_sugarsales_password_retype="+document.setConfig.setup_db_sugarsales_password_retype.value;
360                 }
361                 if(typeof(document.setConfig.dbUSRData) != 'undefined'){
362                     postData += "&dbUSRData="+document.getElementById('dbUSRData').value;
363                 }
364
365 EOQ4;
366
367 $out_dd = 'postData += "&demoData="+document.setConfig.demoData.value;';
368 $out5 =<<<EOQ5
369                 postData += "&to_pdf=1&sugar_body_only=1";
370
371                 //if this is a call already in progress, then just return
372                     if(typeof ajxProgress != 'undefined'){
373                         return;
374                     }
375
376                 getPanel();
377                 msgPanel.show;
378                 var ajxProgress = YAHOO.util.Connect.asyncRequest('POST','install.php', {success: success, failure: success}, postData);
379
380
381             };//end ajaxCall method
382               ajaxCall();
383             return;
384 }
385
386 function confirm_drop_tables(yes_no){
387
388         if(yes_no == true){
389             document.getElementById('setup_db_drop_tables').value = true;
390            //make navigation
391                     document.setConfig.goto.value="{$mod_strings['LBL_NEXT']}";
392                     document.getElementById('hidden_goto').value="{$mod_strings['LBL_NEXT']}";
393                     document.setConfig.current_step.value="{$next_step}";
394                     document.setConfig.submit();
395         }else{
396             //set drop tables to false
397             document.getElementById('setup_db_drop_tables').value = false;
398             msgPanel.hide();
399         }
400 }
401
402 </script>
403
404
405
406            <div id="checkingDiv" style="display:none">
407            <table cellspacing="0" cellpadding="0" border="0">
408                <tr><td>
409                     <p><img alt="{$mod_strings['LBL_LICENSE_CHKDB_HEADER']}" src='install/processing.gif'> <br>{$mod_strings['LBL_LICENSE_CHKDB_HEADER']}</p>
410                 </td></tr>
411             </table>
412             </div>
413
414           <div id='sysCheckMsg' style="display:none">
415            <table cellspacing="0" cellpadding="0" border="0" >
416                <tr><td>
417                     <p>{$mod_strings['LBL_DROP_DB_CONFIRM']}</p>
418                </td></tr>
419                <tr><td align='center'>
420                     <input id='accept_btn' type='button' class='button' onclick='confirm_drop_tables(true)' value="{$mod_strings['LBL_ACCEPT']}">
421                     <input type='button' class='button' onclick='confirm_drop_tables(false)' id="button_cancel_dbConfig" value="{$mod_strings['LBL_CANCEL']}">
422                 </td></tr>
423             </table>
424
425           <div>
426
427 </body>
428 </html>
429
430
431
432
433 EOQ5;
434
435
436
437
438 ////    END PAGE OUTPUT
439 ///////////////////////////////////////////////////////////////////////////////
440
441
442
443 echo $out;
444 echo $out2;
445     echo $out3;
446 echo $out4;
447     echo $out_dd;
448 echo $out5;
449
450 ?>