Completed
Push — console-installer ( e2b50d...6ce748 )
by Adam
22:30
created

InstallLayout::getFormItems()   F

Complexity

Conditions 32
Paths > 20000

Size

Total Lines 910
Code Lines 292

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 32
eloc 292
c 2
b 0
f 0
nc 348096
nop 15
dl 0
loc 910
rs 2

How to fix   Long Method    Complexity    Many Parameters   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

Many Parameters

Methods with many parameters are not only hard to understand, but their parameters also often become inconsistent when you need more, or different data.

There are several approaches to avoid long parameter lists:

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-2013 SugarCRM Inc.
6
7
 * SuiteCRM is an extension to SugarCRM Community Edition developed by Salesagility Ltd.
8
 * Copyright (C) 2011 - 2014 Salesagility Ltd.
9
 *
10
 * This program is free software; you can redistribute it and/or modify it under
11
 * the terms of the GNU Affero General Public License version 3 as published by the
12
 * Free Software Foundation with the addition of the following permission added
13
 * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
14
 * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
15
 * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
16
 *
17
 * This program is distributed in the hope that it will be useful, but WITHOUT
18
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
19
 * FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
20
 * details.
21
 *
22
 * You should have received a copy of the GNU Affero General Public License along with
23
 * this program; if not, see http://www.gnu.org/licenses or write to the Free
24
 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
25
 * 02110-1301 USA.
26
 *
27
 * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
28
 * SW2-130, Cupertino, CA 95014, USA. or at email address [email protected].
29
 *
30
 * The interactive user interfaces in modified source and object code versions
31
 * of this program must display Appropriate Legal Notices, as required under
32
 * Section 5 of the GNU Affero General Public License version 3.
33
 *
34
 * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
35
 * these Appropriate Legal Notices must retain the display of the "Powered by
36
 * SugarCRM" logo and "Supercharged by SuiteCRM" logo. If the display of the logos is not
37
 * reasonably feasible for  technical reasons, the Appropriate Legal Notices must
38
 * display the words  "Powered by SugarCRM" and "Supercharged by SuiteCRM".
39
 ********************************************************************************/
40
41
42
if( !isset( $install_script ) || !$install_script ){
43
    die($mod_strings['ERR_NO_DIRECT_SCRIPT']);
44
}
45
46
class NonDBLocalization extends Localization {
47
48
    public function __construct() {
49
        global $sugar_config;
50
        $this->localeNameFormatDefault = empty($sugar_config['locale_name_format_default']) ? 's f l' : $sugar_config['default_name_format'];
51
    }
52
53
    /**
54
     * Creates dropdown items that have localized example names while filtering out invalid formats
55
     *
56
     * @override
57
     * @param array un-prettied dropdown list
58
     * @return array array of dropdown options
59
     */
60
    public function getUsableLocaleNameOptions($options) {
61
        global $mod_strings;
62
        $examples = array('s' => $mod_strings['LBL_LOCALE_NAME_FIRST'],
63
            'f' => $mod_strings['LBL_LOCALE_NAME_LAST'],
64
            'l' => $mod_strings['LBL_LOCALE_NAME_SALUTATION']);
65
        $newOpts = array();
66
        foreach ($options as $key => $val) {
67
            if ($this->isAllowedNameFormat($key) && $this->isAllowedNameFormat($val)) {
68
                $newVal = '';
69
                $pieces = str_split($val);
70
                foreach ($pieces as $piece) {
71
                    if (isset($examples[$piece])) {
72
                        $newVal .= $examples[$piece];
73
                    } else {
74
                        $newVal .= $piece;
75
                    }
76
                }
77
                $newOpts[$key] = $newVal;
78
            }
79
        }
80
        return $newOpts;
81
    }
82
83
}
84
85
class InstallLayout
0 ignored issues
show
Coding Style Compatibility introduced by
PSR1 recommends that each class should be in its own file to aid autoloaders.

Having each class in a dedicated file usually plays nice with PSR autoloaders and is therefore a well established practice. If you use other autoloaders, you might not want to follow this rule.

Loading history...
86
{
87
88
    public static function getSelect($name, $options, $default) {
89
        $out = "<select name=\"$name\">";
90
        foreach($options as $key => $value) {
91
            $selected = '';
92
            if($key==$default) $selected = ' selected="selected"';
93
            $out .= "<option label=\"$value\" value=\"$key\"$selected>$value</option>";
94
        }
95
        $out .= "</select>";
96
        return $out;
97
    }
98
99
    private function getHeaderStyles() {
100
        $out = <<<EOQ
101
       <link REL="SHORTCUT ICON" HREF="include/images/sugar_icon.ico">
102
       <link rel="stylesheet" href="install/install2.css" type="text/css">
103
       <link rel="stylesheet" href="themes/Suite7/css/fontello.css">
104
       <link rel="stylesheet" href="themes/Suite7/css/animation.css"><!--[if IE 7]><link rel="stylesheet" href="css/fontello-ie7.css"><![endif]-->
105
       <link rel='stylesheet' type='text/css' href='include/javascript/yui/build/container/assets/container.css' />
106
EOQ;
107
        return $out;
108
    }
109
110
    private function getHeaderScripts($sugar_version, $js_custom_version) {
111
        $out = <<<EOQ
112
            <script src="include/javascript/jquery/jquery-min.js"></script>
113
            <script src="cache/include/javascript/sugar_grp1_yui.js?s={$sugar_version}&c={$js_custom_version}"></script>
114
EOQ;
115
        return $out;
116
    }
117
118
    /**
119
     * @param $title page title
120
     * @param $styles linked css files (string)
121
     * @param $scripts linked javascript files (string)
122
     * @return string Install page layout header
123
     */
124
    private function getHeader($mod_strings, $styles, $scripts)
125
    {
126
        $out = <<<EOQ
127
    <head>
128
       <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
129
       <meta http-equiv="Content-Style-Type" content="text/css">
130
       <meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport' />
131
       <title>{$mod_strings['LBL_WIZARD_TITLE']} {$mod_strings['LBL_SYSOPTS_DB_TITLE']}</title>
132
       $styles
133
       $scripts
134
    </head>
135
EOQ;
136
        return $out;
137
    }
138
139
140
    /**
141
     * @param $name form tag name
142
     * @param $id form tag id
143
     * @param $errs form errors
144
     * @param $title form header line
145
     * @param $items form items (string)
146
     * @param $controlls form controll buttons (string)
147
     * @return string
148
     */
149
    private function getForm($mod_strings, $name, $id, $errs, $items, $controlls, $scripts, $next_step)
150
    {
151
        $out = <<<EOQ
152
            <iframe id="upload_target" name="upload_target" src="install.php?sugar_body_only=1&uploadLogoFrame=1" style="width:0;height:0;border:0px solid #fff;"></iframe>
153
            <form action="install.php" method="post" name="$name" id="$id" enctype="multipart/form-data">
154
                <input type="hidden" name="current_step" value="{$next_step}">
155
                <div id="install_content">
156
                    <div id="installoptions">
157
                        {$errs}
158
                        $items
159
                    </div>
160
                </div>
161
                <div class="clear"></div>
162
                <hr>
163
                <div id="installcontrols">
164
                    $controlls
165
                </div>
166
                <script type="text/javascript">
167
                    $scripts;
168
                </script>
169
            </form>
170
            <div id="installStatus" style="display: none;">
171
                <h2>{$mod_strings['LBL_INSTALL_PROCESS']}</h2>
172
                <p><img alt="Status" src="install/processing.gif"><br><span class="preloader-status"></span></p>
173
            </div>
174
EOQ;
175
176
        return $out;
177
    }
178
179
180
    /**
181
     * @param $header install page head
182
     * @param $form install page form step
183
     * @return string install page
184
     */
185
    private function getOutput($header, $form, $sugar_md, $mod_strings)
186
    {
187
        $langHeader = get_language_header();
188
        $out = <<<EOQ
189
    <!DOCTYPE HTML>
190
    <html {$langHeader}>
191
    $header
192
    <body onload="//document.getElementById('button_next2').focus();">
193
        <!--SuiteCRM installer-->
194
        <div id="install_container">
195
            <div id="install_box">
196
                <div id='licenseDiv'></div>
197
                <header id="install_header">
198
                    <div class="install_img">
199
                        <a href="https://suitecrm.com" target="_blank">
200
                            <img src="{$sugar_md}" alt="SuiteCRM">
201
                        </a>
202
                    </div>
203
                    <div id="steps">
204
                        <p>{$mod_strings['LBL_STEP2']}</p>
205
                        <i class="icon-progress-0" id="complete"></i>
206
                        <i class="icon-progress-1" id="complete"></i>
207
                        <i class="icon-progress-2"></i>
208
                    </div>
209
                </header>
210
                $form
211
            </div>
212
213
            <footer id="install_footer">
214
                <p id="footer_links"><a href="https://suitecrm.com" target="_blank">Visit suitecrm.com</a> | <a href="https://suitecrm.com/index.php?option=com_kunena&view=category&Itemid=1137&layout=list" target="_blank">Support Forums</a> | <a href="https://suitecrm.com/wiki/index.php/Installation" target="_blank">Installation Guide</a> | <a href="LICENSE.txt" target="_blank">License</a>
215
            </footer>
216
        </div>
217
    </body>
218
    </html>
219
EOQ;
220
        return $out;
221
    }
222
223
    private function getFormItems($mod_strings, $app_list_strings, $sugarConfigDefaults, $drivers, $checked, $db, $errors, $supportedLanguages,
224
                                  $current_language, $customSession, $customLog, $customId, $customSessionHidden, $customLogHidden, $customIdHidden) {
225
226
227
228
        // ------------------------------
229
        //  DB Type and DB configuration
230
        // ---------------------------------->
231
232
233
        // database selection
234
        $out_dbtypesel = "
235
    <div class=\"floatbox\" id=\"fb5\">
236
        <h2>{$mod_strings['LBL_DBCONF_TITLE']}</h2>
237
238
        <div class=\"form_section\">
239
          <h3>{$mod_strings['LBL_SYSOPTS_DB']}</h3>";
240
241
        foreach($drivers as $type => $driver) {
242
            $oci = ($type == "oci8")?"":'none'; // hack for special oracle message
243
            $out_dbtypesel.=<<<EOQ
244
                <input type="radio" class="checkbox" name="setup_db_type" id="setup_db_type" value="$type" {$checked[$type]} onclick="onDBTypeClick(this);//document.getElementById('ociMsg').style.display='$oci'"/>{$mod_strings[$driver->label]}<br>
245
EOQ;
246
        }
247
        $out_dbtypesel.=<<<EOQ
248
        </div>
249
            <div name="ociMsg" id="ociMsg" style="display:none"></div>
250
    <!-- </div> -->
251
EOQ;
252
253
254
        $out2 = $out_dbtypesel;
255
256
257
        $out2.=<<<EOQ2
258
259
        <!-- <div class="floatbox"> -->
260
261
            <div class="form_section starhook">
262
            <!-- <div class="required">{$mod_strings['LBL_REQUIRED']}</div> -->
263
            <h3>{$mod_strings['LBL_DBCONF_TITLE_NAME']}</h3>
264
EOQ2;
265
266
        $config_params = $db->installConfig();
267
        $form = '';
268
        foreach($config_params as $group => $gdata) {
269
            $form.= "<div class='install_block'>";
270
            if($mod_strings[$group . '_LABEL']) {
271
                $form .= "<label>{$mod_strings[$group . '_LABEL']}" . "<i> i <div class=\"tooltip\">{$mod_strings[$group]}</div></i></label>\n";
272
            }
273
            foreach($gdata as $name => $value) {
274
275
                if(!empty($value)) {
276
                    if(!empty($value['required'])) {
277
                        $form .= "<span class=\"required\">*</span>";
278
                    }
279
                    else {
0 ignored issues
show
Unused Code introduced by
This else statement is empty and can be removed.

This check looks for the else branches of if statements that have no statements or where all statements have been commented out. This may be the result of changes for debugging or the code may simply be obsolete.

These else branches can be removed.

if (rand(1, 6) > 3) {
print "Check failed";
} else {
    //print "Check succeeded";
}

could be turned into

if (rand(1, 6) > 3) {
    print "Check failed";
}

This is much more concise to read.

Loading history...
280
                    }
281
                    if(!empty($_SESSION[$name])) {
282
                        $sessval = $_SESSION[$name];
283
                    } else {
284
                        $sessval = '';
285
                    }
286
                    if(!empty($value["type"])) {
287
                        $type = $value["type"];
288
                    } else {
289
                        $type = '';
290
                    }
291
292
                    $form .= <<<FORM
293
294
FORM;
295
                    //if the type is password, set a hidden field to capture the value.  This is so that we can properly encode special characters, which is a limitation with password fields
296
                    if($type=='password'){
297
                        $form .= "</div><div class=\"install_block\"><label>{$mod_strings['LBL_DBCONF_TITLE_PSWD_INFO_LABEL']}</label><span>&nbsp;</span><input type='$type' name='{$name}_entry' id='{$name}_entry' value='".urldecode($sessval)."'><input type='hidden' name='$name' id='$name' value='".urldecode($sessval)."'></div><div class=\"install_block\">";
298
                    }else{
299
                        $form .= "<input type='$type' name='$name' id='$name' value='$sessval'>";
300
                    }
301
302
303
304
                    $form .= <<<FORM
305
FORM;
306
307
                } else {
308
                    $form .= "<input name=\"$name\" id=\"$name\" value=\"\" type=\"hidden\">\n";
309
                }
310
            }
311
            $form .= "</div>";
312
        }
313
314
        $out2 .= $form;
315
316
317
318
        // ---------- user data set (dbConfig_a.php)
319
320
321
//if we are installing in custom mode, include the following html
322
        if($db->supports("create_user")) {
323
// create / set db user dropdown
324
            $auto_select = '';
325
            $provide_select = '';
326
            $create_select = '';
327
            $same_select = '';
328
            if (isset($_SESSION['dbUSRData'])) {
329
//    if($_SESSION['dbUSRData']=='auto')    {$auto_select ='selected';}
330
                if ($_SESSION['dbUSRData'] == 'provide') {
331
                    $provide_select = 'selected';
332
                }
333
                if (isset($_SESSION['install_type']) && !empty($_SESSION['install_type']) && strtolower($_SESSION['install_type']) == 'custom') {
334
                    if ($_SESSION['dbUSRData'] == 'create') {
335
                        $create_select = 'selected';
336
                    }
337
                }
338
                if ($_SESSION['dbUSRData'] == 'same') {
339
                    $same_select = 'selected';
340
                }
341
            } else {
342
                $same_select = 'selected';
343
            }
344
            $dbUSRDD = "<select name='dbUSRData' id='dbUSRData' onchange='toggleDBUser();'>";
345
            $dbUSRDD .= "<option value='provide' $provide_select>" . $mod_strings['LBL_DBCONFIG_PROVIDE_DD'] . "</option>";
346
            $dbUSRDD .= "<option value='create' $create_select>" . $mod_strings['LBL_DBCONFIG_CREATE_DD'] . "</option>";
347
            $dbUSRDD .= "<option value='same' $same_select>" . $mod_strings['LBL_DBCONFIG_SAME_DD'] . "</option>";
348
            $dbUSRDD .= "</select><br>&nbsp;";
349
350
351
            $setup_db_sugarsales_password = urldecode($_SESSION['setup_db_sugarsales_password']);
352
            $setup_db_sugarsales_user = urldecode($_SESSION['setup_db_sugarsales_user']);
353
            $setup_db_sugarsales_password_retype = urldecode($_SESSION['setup_db_sugarsales_password_retype']);
354
355
356
            $out2 .= <<<EOQ2
357
<br>
358
<div class='install_block'>
359
<!--
360
    <div class="ibmsg">{$mod_strings['LBL_DBCONFIG_SECURITY']}</div>
361
    -->
362
</div>
363
<div class='install_block'>
364
    <div class="formrow">
365
        <label>{$mod_strings['LBL_DBCONF_SUGAR_DB_USER']}<i> i <div class="tooltip">{$mod_strings['LBL_DBCONFIG_SECURITY']}</div></i></label>
366
        $dbUSRDD
367
    </div>
368
    <div class="clear"></div>
369
    <span id='connection_user_div' style="display:none">
370
        <div class="formrow">
371
            <label>{$mod_strings['LBL_DBCONF_SUGAR_DB_USER']} <span class="required">*</span></label>
372
            <input type="text" name="setup_db_sugarsales_user" maxlength="16" value="{$_SESSION['setup_db_sugarsales_user']}" />
373
        </div>
374
        <div class="clear"></div>
375
        <div class="formrow">
376
            <label>{$mod_strings['LBL_DBCONF_DB_PASSWORD']}</label>
377
            <input type="password" name="setup_db_sugarsales_password_entry" value="{$setup_db_sugarsales_password}" />
378
            <input type="hidden" name="setup_db_sugarsales_password" value="{$setup_db_sugarsales_password}" />
379
        </div>
380
        <div class="clear"></div>
381
        <div class="formrow">
382
            <label>{$mod_strings['LBL_DBCONF_DB_PASSWORD2']}</label>
383
            <input type="password" name="setup_db_sugarsales_password_retype_entry" value="{$setup_db_sugarsales_password_retype}"  />
384
            <input type="hidden" name="setup_db_sugarsales_password_retype" value="{$setup_db_sugarsales_password_retype}" />
385
        </div>
386
    </span>
387
</div>
388
389
EOQ2;
390
        }
391
        $out =$out2;
392
393
394
395
        // ------ siteConfig_a.php
396
        $out .=<<<EOQ
397
        </div>
398
    </div>
399
    <div class="floatbox" id="fb6">
400
                    <h2>{$mod_strings['LBL_SITECFG_TITLE']}</h2>
401
                    <div class="form_section">
402
                    <p>{$errors}</p>
403
                    <div class="required">{$mod_strings['LBL_REQUIRED']}</div>
404
405
                    <h3>{$mod_strings['LBL_SITECFG_TITLE2']}<div class="tooltip-toggle"><em> i </em><div class="tooltip">{$mod_strings['LBL_SITECFG_PASSWORD_MSG']}</div></div></h3>
406
EOQ;
407
        //hide this in typical mode
408
        if(!empty($_SESSION['install_type']) && strtolower($_SESSION['install_type'])=='custom'){
409
            $out .=<<<EOQ
410
<div class='install_block'>
411
    {$mod_strings['LBL_SITECFG_URL_MSG']}
412
    <span class="required">*</span>
413
    <label><b>{$mod_strings['LBL_SITECFG_URL']}</b></label>
414
    <input type="text" name="setup_site_url" value="{$_SESSION['setup_site_url']}" size="40" />
415
    <br>{$mod_strings['LBL_SITECFG_SYS_NAME_MSG']}
416
    <span class="required">*</span>
417
    <label><b>{$mod_strings['LBL_SYSTEM_NAME']}</b></label>
418
    <input type="text" name="setup_system_name" value="{$_SESSION['setup_system_name']}" size="40" /><br>
419
</div>
420
EOQ;
421
            $db = getDbConnection();
422
            if($db->supports("collation")) {
423
                $collationOptions = $db->getCollationList();
424
            }
425
            if(!empty($collationOptions)) {
426
                if(isset($_SESSION['setup_db_options']['collation'])) {
427
                    $default = $_SESSION['setup_db_options']['collation'];
428
                } else {
429
                    $default = $db->getDefaultCollation();
430
                }
431
                $options = get_select_options_with_id(array_combine($collationOptions, $collationOptions), $default);
432
                $out .=<<<EOQ
433
     <div class='install_block'>
434
        <br>{$mod_strings['LBL_SITECFG_COLLATION_MSG']}
435
        <span class="required">*</span>
436
        <label><b>{$mod_strings['LBL_COLLATION']}</b></label>
437
        <select name="setup_db_collation" id="setup_db_collation">$options</select><br>
438
     </div>
439
EOQ;
440
            }
441
        }
442
443
        $help_url = get_help_button_url();
444
        if(!isset($_SESSION['email1'])) {
445
            $_SESSION['email1'] = null;
446
        }
447
448
		if(!isset($_SESSION['setup_site_admin_user_name'])) {
449
			$_SESSION['setup_site_admin_user_name'] = null;
450
		}
451
		
452
        $out .=<<<EOQ
453
<div class='install_block'>
454
    <!--
455
    <p class="ibmsg">{$mod_strings['LBL_SITECFG_PASSWORD_MSG']}</p>
456
    -->
457
    <div class="formrow big">
458
        <label>{$mod_strings['LBL_SITECFG_ADMIN_Name']} <span class="required">*</span></label>
459
        <input type="text" name="setup_site_admin_user_name" value="{$_SESSION['setup_site_admin_user_name']}" size="20" maxlength="60" />
460
    </div>
461
462
    <div class="clear"></div>
463
464
    <div class="formrow big">
465
        <label>{$mod_strings['LBL_SITECFG_ADMIN_PASS']} <span class="required">*</span></label>
466
        <input type="password" name="setup_site_admin_password" value="{$_SESSION['setup_site_admin_password']}" size="20" />
467
    </div>
468
469
    <div class="clear"></div>
470
471
    <div class="formrow big">
472
        <label>{$mod_strings['LBL_SITECFG_ADMIN_PASS_2']} <span class="required">*</span></label>
473
        <input type="password" name="setup_site_admin_password_retype" value="{$_SESSION['setup_site_admin_password_retype']}" size="20" />
474
    </div>
475
476
    <div class="clear"></div>
477
478
    <div class="formrow big">
479
        <label>{$mod_strings['LBL_SITECFG_URL']} <span class="required">*</span></label>
480
        <input type="text" name="setup_site_url" value="{$_SESSION['setup_site_url']}" size="40" />
481
    </div>
482
483
    <div class="clear"></div>
484
485
486
    <div class="formrow big">
487
        <label>{$mod_strings['LBL_EMAIL_ADDRESS']} <span class="required">*</span></label>
488
        <input type="email" name="email1" value="{$_SESSION['email1']}" size="40" />
489
    </div>
490
491
    <div class="clear"></div>
492
493
494
    <div class="clear"></div>
495
<!--
496
    <a href="javascript:;" onclick="$('.security-block').toggle();">More..</a><br/><br/>
497
-->
498
EOQ;
499
500
501
        $out.=<<<EOQ
502
</div>
503
EOQ;
504
505
        $out .= <<<EOQ
506
507
EOQ;
508
509
510
511
        // ------------------
512
        //  Choose Demo Data
513
        // ------------------------->
514
515
516
        //demo data select
517
        $demoDD = "<select name='demoData' id='demoData' class='select'><option value='no' >".$mod_strings['LBL_NO']."</option><option value='yes'>".$mod_strings['LBL_YES']."</option>";
518
        $demoDD .= "</select>";
519
520
        $out .=<<<EOQ3
521
        </div>
522
        </div>
523
524
        <div class="floatbox full" id="fb0">
525
            <h2>{$mod_strings['LBL_MORE_OPTIONS_TITLE']}</h2>
526
        </div>
527
528
        <div class="floatbox full" id="fb1">
529
            <div class="install_block">
530
                <h3 onclick="$(this).next().toggle();" class="toggler">&raquo; {$mod_strings['LBL_DBCONF_DEMO_DATA_TITLE']}</h3>
531
532
                <div class="form_section" style="display: none;">
533
                <div class="clear"></div>
534
                    <div class="formrow big">
535
                        <label>{$mod_strings['LBL_DBCONF_DEMO_DATA']}</label>
536
                        {$demoDD}
537
                    </div>
538
                </div>
539
            </div>
540
        </div>
541
EOQ3;
542
543
544
545
546
        //---------------
547
        // SMTP Settings
548
        //-------------------->
549
550
551
        // smtp
552
        // TODO-t: test it for all types
553
        $MAIL_SSL_OPTIONS_GMAIL = get_select_options_with_id($app_list_strings['email_settings_for_ssl'], '2');
554
        //$MAIL_SSL_OPTIONS_YAHOO = get_select_options_with_id($app_list_strings['email_settings_for_ssl'], '1');
555
        $MAIL_SSL_OPTIONS_EXCHG = get_select_options_with_id($app_list_strings['email_settings_for_ssl'], 'none');
556
        $MAIL_SSL_OPTIONS_OTHER = get_select_options_with_id($app_list_strings['email_settings_for_ssl'], 'none');
557
558
        // set default notify_allow_default_outbound checkbox value
559
        $notify_allow_default_outbound_checked = empty($_SESSION['notify_allow_default_outbound']) ? '' : ' checked="checked" ';
560
561
        // set default smtp toggle buttons selected value
562
        if(empty($_SESSION['smtp_tab_selected'])) $_SESSION['smtp_tab_selected'] = 'smtp_tab_other';
563
564
        $out .= <<<EOQ
565
        <div class="floatbox full" id="fb2">
566
            <!-- smtp settings -->
567
            <h3 onclick="$(this).next().toggle();" class="toggler">&raquo; {$mod_strings['LBL_MAIL_SMTP_SETTINGS']}</h3>
568
            <div style="display: none;">
569
570
            <br>
571
            <!--
572
            <p>{$mod_strings['LBL_WIZARD_SMTP_DESC']}</p>
573
            -->
574
575
            <!-- smtp types toggler buttons -->
576
577
            <p style="display: inline;">{$mod_strings['LBL_CHOOSE_EMAIL_PROVIDER']} </p><div class="tooltip-toggle"> <em>i</em> <div class="tooltip">{$mod_strings['LBL_WIZARD_SMTP_DESC']}</div></div>
578
            <div class="clear"></div>
579
            <div>
580
                <input type="button" class="smtp_tab_toggler" id="smtp_tab_gmail_toggler" for="smtp_tab_gmail" value="{$mod_strings['LBL_SMTPTYPE_GMAIL']}" />
581
                <input type="button" class="smtp_tab_toggler" id="smtp_tab_yahoo_toggler" for="smtp_tab_yahoo" value="{$mod_strings['LBL_SMTPTYPE_YAHOO']}" />
582
                <input type="button" class="smtp_tab_toggler" id="smtp_tab_exchange_toggler" for="smtp_tab_exchange" value="{$mod_strings['LBL_SMTPTYPE_EXCHANGE']}" />
583
                <input type="button" class="smtp_tab_toggler selected" id="smtp_tab_other_toggler" for="smtp_tab_other" value="{$mod_strings['LBL_SMTPTYPE_OTHER']}" />
584
                <input type="hidden" name="smtp_tab_selected" value="{$_SESSION['smtp_tab_selected']}">
585
            </div>
586
587
            <!-- smtp / gmail tab -->
588
589
            <div class="form_section smtp_tab" id="smtp_tab_gmail">
590
591
                <div class="formrow">
592
                    <label>{$mod_strings['LBL_MAIL_SMTPSERVER']}</label>
593
                    <input type="text" name="smtp_tab_gmail[mail_smtpserver]" size="25" maxlength="64" value="smtp.gmail.com">
594
                </div>
595
596
                <div class="formrow">
597
                    <label>{$mod_strings['LBL_MAIL_SMTPPORT']}</label>
598
                    <input type="text" name="smtp_tab_gmail[mail_smtpport]" size="5" maxlength="5" value="587">
599
                </div>
600
601
                <div class="clear"></div>
602
603
                <div class="formrow">
604
                    <label>{$mod_strings['LBL_MAIL_SMTPAUTH_REQ']}</label>
605
                    <input type="checkbox" name="smtp_tab_gmail[mail_smtpauth_req]" id="smtp_tab_gmail__mail_smtpauth_req" value="1" checked="checked" onclick="toggleSMTPAuthSettings(this, 'toggleArea_1');">
606
                </div>
607
608
                <div class="formrow">
609
                    <label>{$mod_strings['LBL_EMAIL_SMTP_SSL_OR_TLS']}</label>
610
                    <select name="smtp_tab_gmail[mail_smtpssl]">
611
                        {$MAIL_SSL_OPTIONS_GMAIL}
612
                    </select>
613
                </div>
614
615
                <div class="clear"></div>
616
617
618
                <div class="toggleArea" id="toggleArea_1">
619
                    <div class="formrow">
620
                        <label>{$mod_strings['LBL_GMAIL_SMTPUSER']}</label>
621
                        <input type="text" name="smtp_tab_gmail[mail_smtpuser]" id="smtp_tab_gmail__mail_smtpuser" size="25" maxlength="64">
622
                    </div>
623
624
                    <div class="clear"></div>
625
626
                    <div class="formrow">
627
                        <label>{$mod_strings['LBL_GMAIL_SMTPPASS']}</label>
628
                        <input type="password" name="smtp_tab_gmail[mail_smtppass]" id="smtp_tab_gmail__mail_smtppass" size="25" maxlength="64" value="" tabindex="1">
629
                    </div>
630
631
                    <div class="clear"></div>
632
633
                    <div class="formrow">
634
                        <label>{$mod_strings['LBL_ALLOW_DEFAULT_SELECTION']} <i>i<div class="tooltip">{$mod_strings['LBL_ALLOW_DEFAULT_SELECTION_HELP']}</div></i></label>
635
                        <input name="smtp_tab_gmail[notify_allow_default_outbound]" id="smtp_tab_gmail__notify_allow_default_outbound" value="2" tabindex="1" class="checkbox" type="checkbox" {$notify_allow_default_outbound_checked}>
636
                    </div>
637
                </div>
638
639
                <div class="clear"></div>
640
            </div>
641
642
            <!-- smtp / yahoo! mail tab -->
643
644
            <div class="form_section smtp_tab" id="smtp_tab_yahoo">
645
646
                <input type="hidden" name="smtp_tab_yahoo[mail_smtpserver]" size="25" maxlength="64" value="smtp.mail.yahoo.com">
647
                <input type="text" name="smtp_tab_yahoo[mail_smtpport]" size="5" maxlength="5" value="465">
648
                <input type="hidden" name="smtp_tab_yahoo[mail_smtpssl]" value="1">
649
650
                <div class="formrow">
651
                    <label>{$mod_strings['LBL_YAHOOMAIL_SMTPUSER']}</label>
652
                    <input type="text" name="smtp_tab_yahoo[mail_smtpuser]" size="25" maxlength="64">
653
                </div>
654
655
                <div class="clear"></div>
656
657
                <div class="formrow">
658
                    <label>{$mod_strings['LBL_YAHOOMAIL_SMTPPASS']}</label>
659
                    <input type="password" name="smtp_tab_yahoo[mail_smtppass]" size="25" maxlength="64" value="" tabindex="1">
660
                </div>
661
662
                <div class="clear"></div>
663
664
                <div class="formrow">
665
                    <label>{$mod_strings['LBL_ALLOW_DEFAULT_SELECTION']} <i>i<div class="tooltip">{$mod_strings['LBL_ALLOW_DEFAULT_SELECTION_HELP']}</div></i></label>
666
                    <input name="smtp_tab_yahoo[notify_allow_default_outbound]" value="2" tabindex="1" class="checkbox" type="checkbox" {$notify_allow_default_outbound_checked}>
667
                </div>
668
669
                <div class="clear"></div>
670
            </div>
671
672
            <!-- smtp / ms-exchange tab -->
673
674
            <div class="form_section smtp_tab" id="smtp_tab_exchange">
675
676
                <div class="formrow">
677
                    <label>{$mod_strings['LBL_EXCHANGE_SMTPSERVER']}</label>
678
                    <input type="text" name="smtp_tab_exchange[mail_smtpserver]" size="25" maxlength="64" value="">
679
                </div>
680
681
                <div class="formrow">
682
                    <label>{$mod_strings['LBL_EXCHANGE_SMTPPORT']}</label>
683
                    <input type="text" name="smtp_tab_exchange[mail_smtpport]" size="5" maxlength="5" value="25">
684
                </div>
685
686
                <div class="clear"></div>
687
688
                <div class="formrow">
689
                    <label>{$mod_strings['LBL_MAIL_SMTPAUTH_REQ']}</label>
690
                    <input type="checkbox" name="smtp_tab_exchange[mail_smtpauth_req]" id="smtp_tab_exchange__mail_smtpauth_req" value="1" checked="checked" onclick="toggleSMTPAuthSettings(this, 'toggleArea_2');">
691
                </div>
692
693
                <div class="formrow">
694
                    <label>{$mod_strings['LBL_EMAIL_SMTP_SSL_OR_TLS']}</label>
695
                    <select name="smtp_tab_exchange[mail_smtpssl]" tabindex="501">
696
                        {$MAIL_SSL_OPTIONS_EXCHG}
697
                    </select>
698
                </div>
699
700
                <div class="clear"></div>
701
702
                <div class="toggleArea" id="toggleArea_2">
703
                    <div class="formrow">
704
                        <label>{$mod_strings['LBL_EXCHANGE_SMTPUSER']}</label>
705
                        <input type="text" name="smtp_tab_exchange[mail_smtpuser]" id="smtp_tab_exchange__mail_smtpuser" size="25" maxlength="64">
706
                    </div>
707
708
                    <div class="clear"></div>
709
710
                    <div class="formrow">
711
                        <label>{$mod_strings['LBL_EXCHANGE_SMTPPASS']}</label>
712
                        <input type="password" name="smtp_tab_exchange[mail_smtppass]" id="smtp_tab_exchange__mail_smtppass" size="25" maxlength="64" value="" tabindex="1">
713
                    </div>
714
715
                    <div class="clear"></div>
716
717
                    <div class="formrow">
718
                        <label>{$mod_strings['LBL_ALLOW_DEFAULT_SELECTION']} <i>i<div class="tooltip">{$mod_strings['LBL_ALLOW_DEFAULT_SELECTION_HELP']}</div></i></label>
719
                        <input name="smtp_tab_exchange[notify_allow_default_outbound]" id="smtp_tab_exchange__notify_allow_default_outbound" value="2" tabindex="1" class="checkbox" type="checkbox" {$notify_allow_default_outbound_checked}>
720
                    </div>
721
                </div>
722
723
                <div class="clear"></div>
724
            </div>
725
726
            <!-- smtp / other tab-->
727
728
            <div class="form_section smtp_tab" id="smtp_tab_other">
729
730
                <div class="formrow">
731
                    <label>{$mod_strings['LBL_MAIL_SMTPSERVER']}</label>
732
                    <input type="text" name="smtp_tab_other[mail_smtpserver]" size="25" maxlength="64" value="">
733
                </div>
734
735
                <div class="formrow">
736
                    <label>{$mod_strings['LBL_MAIL_SMTPPORT']}</label>
737
                    <input type="text" name="smtp_tab_other[mail_smtpport]" size="5" maxlength="5" value="25">
738
                </div>
739
740
                <div class="clear"></div>
741
742
                <div class="formrow">
743
                    <label>{$mod_strings['LBL_MAIL_SMTPAUTH_REQ']}</label>
744
                    <input type="hidden" name="smtp_tab_other[mail_smtpauth_req]" value="0">
745
                    <input type="checkbox" id="mail_smtpauth_req_chk" name="smtp_tab_other[mail_smtpauth_req]" value="1" checked="checked" onclick="toggleSMTPAuthSettings(this, 'toggleArea_3');">
746
                </div>
747
748
                <div class="formrow">
749
                    <label>{$mod_strings['LBL_EMAIL_SMTP_SSL_OR_TLS']}</label>
750
                    <select name="smtp_tab_other[mail_smtpssl]" tabindex="501">
751
                        {$MAIL_SSL_OPTIONS_OTHER}
752
                    </select>
753
                </div>
754
755
                <div class="clear"></div>
756
757
                <div class="toggleArea" id="toggleArea_3">
758
                    <div class="formrow">
759
                        <label>{$mod_strings['LBL_MAIL_SMTPUSER']}</label>
760
                        <input type="text" name="smtp_tab_other[mail_smtpuser]" id="smtp_tab_other__mail_smtpuser" size="25" maxlength="64">
761
                    </div>
762
763
                    <div class="clear"></div>
764
765
                    <div class="formrow">
766
                        <label>{$mod_strings['LBL_MAIL_SMTPPASS']}</label>
767
                        <input type="password" name="smtp_tab_other[mail_smtppass]" id="smtp_tab_other__mail_smtppass" size="25" maxlength="64" value="" tabindex="1">
768
                    </div>
769
770
                    <div class="clear"></div>
771
772
                    <div class="formrow">
773
                        <label>{$mod_strings['LBL_ALLOW_DEFAULT_SELECTION']} <i>i<div class="tooltip">{$mod_strings['LBL_ALLOW_DEFAULT_SELECTION_HELP']}</div></i></label>
774
                        <input type="hidden" name="smtp_tab_other[notify_allow_default_outbound]" value="0">
775
                        <input id="notify_allow_default_outbound_chk" name="smtp_tab_other[notify_allow_default_outbound]" value="2" tabindex="1" class="checkbox" type="checkbox" {$notify_allow_default_outbound_checked}>
776
                    </div>
777
                </div>
778
779
                <div class="clear"></div>
780
            <!-- </div> -->
781
782
            <!-- smtp default values & tabs toggler js & tooltip help -->
783
784
            <script>
785
786
                var toggleSMTPAuthFields = {
787
                    toggleArea_1 : {
788
                        user: 'smtp_tab_gmail__mail_smtpuser',
789
                        pass: 'smtp_tab_gmail__mail_smtppass',
790
                        allow: 'smtp_tab_gmail__notify_allow_default_outbound'
791
                    },
792
                    toggleArea_2 : {
793
                        user: 'smtp_tab_exchange__mail_smtpuser',
794
                        pass: 'smtp_tab_exchange__mail_smtppass',
795
                        allow: 'smtp_tab_exchange__notify_allow_default_outbound'
796
                    },
797
                    toggleArea_3 : {
798
                        user: 'smtp_tab_other__mail_smtpuser',
799
                        pass: 'smtp_tab_other__mail_smtppass',
800
                        allow: 'notify_allow_default_outbound_chk'
801
                    }
802
                };
803
804
                var toggleSMTPAuthSettings = function(chkbox, elemID) {
805
                    if($(chkbox).prop('checked')) {
806
                        $('#' + elemID).show();
807
                    }
808
                    else {
809
                        $('#' + toggleSMTPAuthFields[elemID].user).val('');
810
                        $('#' + toggleSMTPAuthFields[elemID].pass).val('');
811
                        $('#' + toggleSMTPAuthFields[elemID].allow).prop('checked', false);
812
                        $('#' + elemID).hide();
813
                    }
814
                };
815
816
                $(function(){
817
818
                    $('.smtp_tab_toggler').click(function(){
819
                        $('.smtp_tab_toggler.selected').removeClass('selected');
820
                        $(this).addClass('selected');
821
                        $('.smtp_tab').hide();
822
                        $('#'+$(this).attr('for')).show();
823
                        $('input[name="smtp_tab_selected"]').val($(this).attr('for'));
824
                    });
825
826
                    // save last selected tab and set as default when form (re)load
827
                    $('#{$_SESSION['smtp_tab_selected']}_toggler').click();
828
829
                    $('select[name="smtp_tab_gmail[mail_smtpssl]"] option').each(function(){
830
                        if(!$(this).html()) {
831
                            $(this).html('-none-');
832
                        }
833
                    });
834
                    $('select[name="smtp_tab_yahoo[mail_smtpssl]"] option').each(function(){
835
                        if(!$(this).html()) {
836
                            $(this).html('-none-');
837
                        }
838
                    });
839
                    $('select[name="smtp_tab_exchange[mail_smtpssl]"] option').each(function(){
840
                        if(!$(this).html()) {
841
                            $(this).html('-none-');
842
                        }
843
                    });
844
                    $('select[name="smtp_tab_other[mail_smtpssl]"] option').each(function(){
845
                        if(!$(this).html()) {
846
                            $(this).html('-none-');
847
                        }
848
                    });
849
850
851
                    toggleSMTPAuthSettings(document.getElementById('smtp_tab_gmail__mail_smtpauth_req'), 'toggleArea_1');
852
                    toggleSMTPAuthSettings(document.getElementById('smtp_tab_exchange__mail_smtpauth_req'), 'toggleArea_2');
853
                    toggleSMTPAuthSettings(document.getElementById('mail_smtpauth_req_chk'), 'toggleArea_3');
854
855
                });
856
            </script>
857
858
            </div> <!-- toggle hidden box end -->
859
EOQ;
860
861
862
        // db setup (dbConfig_a.php)
863
        $out2 =<<<EOQ2
864
            <input type='hidden' name='setup_db_drop_tables' id='setup_db_drop_tables' value=''>
865
        </div>
866
EOQ2;
867
868
869
870
871
872
873
874
        // ----------
875
        //  Branding
876
        // ------------->
877
878
        // company logo
879
        $currentLogoLink = SugarThemeRegistry::current()->getImageURL('company_logo.png');
880
        // show logo if we have
881
        $hiddenLogo = '';
882
        if(!file_exists($currentLogoLink)) {
883
            $hiddenLogo = 'display:none;';
884
        }
885
886
887
        // TODO--low: check the tooltip text at the logo image!
888
889
        $out .= <<<EOQ
890
891
            <!-- Branding  -->
892
            </div>
893
        </div>
894
        <div class="floatbox full" id="fb3">
895
            <h3 onclick="$(this).next().toggle();" class="toggler">&raquo; {$mod_strings['LBL_WIZARD_SYSTEM_TITLE']}</h3>
896
897
            <div class="form_section" style="display: none;">
898
899
                <p class="ibmsg">{$mod_strings['LBL_WIZARD_SYSTEM_DESC']}</p>
900
901
                <p class="ibmsg">{$mod_strings['LBL_SITECFG_SYS_NAME_MSG']}</p>
902
903
                <div class="formrow">
904
                    <label>{$mod_strings['SYSTEM_NAME_WIZARD']} <i>i<div class="tooltip">{$mod_strings['SYSTEM_NAME_HELP']}</div></i></label>
905
                    <input type="text" name="setup_system_name" size="25" maxlength="64" value="{$_SESSION['setup_system_name']}">
906
                </div>
907
908
                <div class="clear"></div>
909
910
                <div class="formrow">
911
                    <!-- file upload -->
912
                    <label>{$mod_strings['NEW_LOGO']} <i>i<div class="tooltip">{$mod_strings['NEW_LOGO_HELP']}</div></i></label>
913
                    <input type="file" name="company_logo" id="company_logo">
914
                </div>
915
916
                <div class="clear"></div>
917
918
                <div class="formrow">
919
                    <label>&nbsp;</label>
920
                    <input type="button" name="company_logo_upload_btn" value="{$mod_strings['COMPANY_LOGO_UPLOAD_BTN']}" onclick="onUploadImageClick(this);">
921
                </div>
922
923
924
                <div class="clear"></div>
925
926
                <div class="formrow" id="current_logo_row">
927
                    <label>{$mod_strings['CURRENT_LOGO']} <i>i<div class="tooltip">{$mod_strings['CURRENT_LOGO_HELP']}</div></i> </label>
928
                    <img height="100" src="$currentLogoLink" alt="Company Logo" style="max-height: 100px; max-width: 230px; float:left; $hiddenLogo" />
929
                </div>
930
931
                <div class="clear"></div>
932
            </div>
933
934
EOQ;
935
936
937
        // System location defaults
938
939
        // TODO--low: 1000s sep, Decimal Symb, Name Format
940
941
        $defaultDateFormatSelect = self::getSelect('default_date_format', $sugarConfigDefaults['date_formats'], empty($_SESSION['default_date_format']) ? $sugarConfigDefaults['datef'] : $_SESSION['default_date_format']);
942
        $defaultTimeFormatSelect = self::getSelect('default_time_format', $sugarConfigDefaults['time_formats'], empty($_SESSION['default_time_format']) ? 'h:ia' : $_SESSION['default_time_format'] /* $sugarConfigDefaults['timef'] */);
943
944
        $timezoneSelect = self::getSelect('timezone', array_merge(array(TimeDate::guessTimezone() => TimeDate::guessTimezone()), TimeDate::getTimezoneList()), TimeDate::guessTimezone());
945
946
        //$defaultLanguageSelect = get_select_options_with_id($supportedLanguages, $current_language);
947
        $defaultLanguageSelect = self::getSelect('default_language', $supportedLanguages, $current_language);
948
949
        // example name formats (its are in the original language file so may this functionality was there in the original sugarcrm installer also)
950
        $nonDBLocalization = new NonDBLocalization();
951
        $sugarConfigDefaults['name_formats'] = $nonDBLocalization->getUsableLocaleNameOptions($sugarConfigDefaults['name_formats']);
952
        $defaultLocalNameFormatSelect = self::getSelect('default_locale_name_format', $sugarConfigDefaults['name_formats'], empty($_SESSION['default_locale_name_format']) ? $sugarConfigDefaults['default_locale_name_format'] : $_SESSION['default_locale_name_format']);
953
954
        $out .= <<<EOQ
955
        </div>
956
            <!-- System Local Settings  -->
957
            <!-- TODO--low: add the time-zone settings here!! -->
958
        <div class="floatbox full" id="fb4">
959
            <h3 onclick="$(this).next().toggle();" class="toggler">&raquo; {$mod_strings['LBL_LOCALE_TITLE']}</h3>
960
961
            <div class="form_section" style="display: none;">
962
963
                <p class="ibmsg">{$mod_strings['LBL_WIZARD_LOCALE_DESC']}</p>
964
965
                <div class="formrow">
966
                    <label>{$mod_strings['LBL_DATE_FORMAT']}</label>
967
                    $defaultDateFormatSelect
968
                </div>
969
970
                <div class="formrow">
971
                    <label>{$mod_strings['LBL_TIME_FORMAT']}</label>
972
                    $defaultTimeFormatSelect
973
                </div>
974
975
                <div class="clear"></div>
976
977
                <div class="formrow">
978
                    <label>{$mod_strings['LBL_TIMEZONE']}</label>
979
                    $timezoneSelect
980
                </div>
981
982
                <div class="clear"></div>
983
984
                <div class="formrow" style="display: none;">
985
                    <label>{$mod_strings['LBL_LANGUAGE']}</label>
986
                    $defaultLanguageSelect
987
                </div>
988
989
                <div class="clear"></div>
990
991
                <div class="formrow">
992
                    <label>{$mod_strings['LBL_CURRENCY']}</label>
993
                    <input type="text" name="default_currency_name" value="{$sugarConfigDefaults['default_currency_name']}">
994
                </div>
995
996
                <div class="formrow">
997
                    <label>{$mod_strings['LBL_CURRENCY_SYMBOL']}</label>
998
                    <input type="text" name="default_currency_symbol" size="4" value="{$sugarConfigDefaults['default_currency_symbol']}">
999
                </div>
1000
1001
                <div class="clear"></div>
1002
1003
                <div class="formrow">
1004
                    <label>{$mod_strings['LBL_CURRENCY_ISO4217']}</label>
1005
                    <input type="text" name="default_currency_iso4217" size="4" value="{$sugarConfigDefaults['default_currency_iso4217']}">
1006
                </div>
1007
1008
                <!--
1009
                <div class="formrow">
1010
                    <label>{$mod_strings['LBL_NUMBER_GROUPING_SEP']}</label>
1011
                    <input type="text" name="default_number_grouping_seperator" size="3" maxlength="1" value="{$sugarConfigDefaults['default_number_grouping_seperator']}">
1012
                </div>
1013
1014
1015
                <div class="formrow">
1016
                    <label>{$mod_strings['LBL_DECIMAL_SEP']}</label>
1017
                    <input type="text" name="default_decimal_seperator" size="3" maxlength="1" value="{$sugarConfigDefaults['default_decimal_seperator']}">
1018
                </div>
1019
1020
                <div class="clear"></div>
1021
1022
                <div class="formrow">
1023
                    <label>{$mod_strings['LBL_NAME_FORMAT']}</label>
1024
                    $defaultLocalNameFormatSelect
1025
                </div>
1026
                -->
1027
1028
                <div class="clear"></div>
1029
            </div>
1030
        </div>
1031
1032
EOQ;
1033
1034
1035
$out.= "<div class=\"floatbox full\">";
1036
$out.= "    <h3 onclick=\"$(this).next().toggle();\" class=\"toggler\">&raquo; {$mod_strings['LBL_SITECFG_SECURITY_TITLE']}</h3>";
1037
1038
        $out.=<<<EOQ
1039
1040
<div class="security-block" style="display:none;">
1041
<table cellspacing="0" cellpadding="0" border="0" align="center" class="shell">
1042
      <tr><td colspan="2" id="help"><!-- <a href="{$help_url}" target='_blank'>{$mod_strings['LBL_HELP']} </a> --></td></tr>
1043
    <tr>
1044
      <th width="500">
1045
   </th>
1046
   <th width="200" style="text-align: right;">&nbsp;</th>
1047
   </tr>
1048
<tr>
1049
    <td colspan="2">
1050
    {$errors}
1051
   <div class="required">{$mod_strings['LBL_REQUIRED']}</div>
1052
   <table width="100%" cellpadding="0" cellpadding="0" border="0" class="StyleDottedHr">
1053
   <tr><th colspan="3" align="left">{$mod_strings['LBL_SITECFG_SITE_SECURITY']}</td></tr>
1054
1055
EOQ;
1056
        $checked = '';
1057
//if(!empty($_SESSION['setup_site_sugarbeet_anonymous_stats'])) $checked = 'checked=""';
1058
        $out .= "
1059
   <tr style='display:none'><td></td>
1060
       <td><input type='checkbox' class='checkbox' name='setup_site_sugarbeet_anonymous_stats' value='yes' $checked /></td>
1061
       <td><b>{$mod_strings['LBL_SITECFG_ANONSTATS']}</b><br><i>{$mod_strings['LBL_SITECFG_ANONSTATS_DIRECTIONS']}</i></td></tr>
1062
1063
";
1064
        $checked = '';
1065
//if(!empty($_SESSION['setup_site_sugarbeet_automatic_checks'])) $checked = 'checked=""';
1066
        $out .= <<<EOQ
1067
   <tr style='display:none'><td></td>
1068
       <td><input type="checkbox" class="checkbox" name="setup_site_sugarbeet_automatic_checks" value="yes" /></td>
1069
       <td><b>{$mod_strings['LBL_SITECFG_SUGAR_UP']}</b><br><i>{$mod_strings['LBL_SITECFG_SUGAR_UP_DIRECTIONS']}</i><br>&nbsp;</td></tr>
1070
   <tbody id="setup_site_session_section_pre">
1071
   <tr><td></td>
1072
       <td><input type="checkbox" class="checkbox" name="setup_site_custom_session_path" value="yes" onclick="javascript:$('#setup_site_session_section').toggle();" {$customSession} /></td>
1073
       <td><b>{$mod_strings['LBL_SITECFG_CUSTOM_SESSION']}</b><br>
1074
            <em>{$mod_strings['LBL_SITECFG_CUSTOM_SESSION_DIRECTIONS']}</em><br>&nbsp;</td>
1075
   </tr>
1076
   </tbody>
1077
   <tbody id="setup_site_session_section" {$customSessionHidden}>
1078
   <tr><td></td>
1079
       <td style="text-align : right;"></td>
1080
       <td align="left">
1081
	       <div><div style="width:200px;float:left">{$mod_strings['LBL_SITECFG_SESSION_PATH']} <span class="required">*</span></div>
1082
	               <input type="text" name="setup_site_session_path" size='40' value="{$_SESSION['setup_site_session_path']}" /></td>
1083
	       </div>
1084
       </td>
1085
   </tr>
1086
   </tbody>
1087
   <tbody id="setup_site_log_dir_pre">
1088
   <tr><td></td>
1089
       <td><input type="checkbox" class="checkbox" name="setup_site_custom_log_dir" value="yes" onclick="javascript:$('#setup_site_log_dir').toggle();" {$customLog} /></td>
1090
       <td><b>{$mod_strings['LBL_SITECFG_CUSTOM_LOG']}</b><br>
1091
            <em>{$mod_strings['LBL_SITECFG_CUSTOM_LOG_DIRECTIONS']}</em><br>&nbsp;</td>
1092
   </tr>
1093
   </tbody>
1094
   <tbody id="setup_site_log_dir" {$customLogHidden}>
1095
   <tr><td></td>
1096
       <td style="text-align : right;" ></td>
1097
       <td align="left">
1098
       <div><div style="width:200px;float:left">{$mod_strings['LBL_SITECFG_LOG_DIR']} <span class="required">*</span></div>
1099
            <input type="text" name="setup_site_log_dir" size='30' value="{$_SESSION['setup_site_log_dir']}" />
1100
       </div>
1101
   </tr>
1102
   </tbody>
1103
   <tbody id="setup_site_guid_section_pre">
1104
   <tr><td></td>
1105
       <td><input type="checkbox" class="checkbox" name="setup_site_specify_guid" value="yes" onclick="javascript:$('#setup_site_guid_section').toggle();" {$customId} /></td>
1106
       <td><b>{$mod_strings['LBL_SITECFG_CUSTOM_ID']}</b><br>
1107
            <em>{$mod_strings['LBL_SITECFG_CUSTOM_ID_DIRECTIONS']}</em><br>&nbsp;</td>
1108
   </tr>
1109
   </tbody>
1110
   <tbody id="setup_site_guid_section" {$customIdHidden}>
1111
   <tr><td></td>
1112
       <td style="text-align : right;"></td>
1113
       <td align="left">
1114
	       <div><div style="width:200px;float:left">{$mod_strings['LBL_SITECFG_APP_ID']} <span class="required">*</span></div>
1115
	               <input type="text" name="setup_site_guid" size='30' value="{$_SESSION['setup_site_guid']}" />
1116
	       </div>
1117
       </td>
1118
   </tr>
1119
   </tbody>
1120
</table>
1121
</td>
1122
</tr>
1123
</table>
1124
</div>
1125
EOQ;
1126
1127
$out.= "</div>";
1128
1129
1130
1131
        return $out;
1132
    }
1133
1134
    private function getFormControlls($mod_strings, $formId) {
1135
        $out =<<<EOQ
1136
        <div id="checkingDiv" style="display:none">
1137
                    <p><img alt="{$mod_strings['LBL_LICENSE_CHKDB_HEADER']}" src='install/processing.gif'> <br>{$mod_strings['LBL_LICENSE_CHKDB_HEADER']}</p>
1138
           </div>
1139
          <div id='sysCheckMsg' style="display:none">
1140
                    <p>{$mod_strings['LBL_DROP_DB_CONFIRM']}</p>
1141
                    <input id='accept_btn' type='button' class='button' onclick='confirm_drop_tables(true)' value="{$mod_strings['LBL_ACCEPT']}">
1142
                    <input type='button' class='button' onclick='confirm_drop_tables(false)' id="button_cancel_dbConfig" value="{$mod_strings['LBL_CANCEL']}">
1143
          </div>
1144
1145
            <div id="preloaderDiv" style="display:none">
1146
                <p><img alt="Please wait.." src='install/processing.gif'> <br><span id="process_msg">Please wait..</span></p>
1147
            </div>
1148
            <div class="clear"></div>
1149
1150
            <div id="errorMsgs" style="display:none"></div>
1151
1152
            <div class="text-right">
1153
                <input type='hidden' name='setup_db_drop_tables' id='setup_db_drop_tables' value=''>
1154
1155
                <input type="hidden" name="goto" id="goto">
1156
                <input type="hidden" id="hidden_goto" name="goto" value="{$mod_strings['LBL_BACK']}" />
1157
1158
                <input class="button" type="button" value="{$mod_strings['LBL_BACK']}" id="button_back_settings" onclick="onBackClick(this); //document.getElementById('goto').value='{$mod_strings['LBL_BACK']}';document.getElementById('$formId').submit();" />
1159
                <!--
1160
                <input class="button" type="button" value="{$mod_strings['LBL_LANG_BUTTON_COMMIT']}" onclick="document.getElementById('goto').value='{$mod_strings['LBL_NEXT']}';document.getElementById('$formId').submit();" id="button_next2"/>
1161
                -->
1162
                <input class="button" type="button" name="goto" id="button_next2" value="{$mod_strings['LBL_NEXT']}" onClick="onNextClick(this); //callDBCheck();"/>
1163
                <script>
1164
1165
                    /**
1166
                     * Back button clicked
1167
                     */
1168
                    var onBackClick = function(e) {
1169
                        removeSMTPSettings();
1170
                        storeConfig(e, function(){
1171
                            removeSMTPSettings();
1172
                            // original back-submit
1173
                            document.getElementById('goto').value='{$mod_strings['LBL_BACK']}';
1174
                            document.getElementById('$formId').submit();
1175
                        });
1176
                    };
1177
1178
1179
                    /**
1180
                     * Preloader popup panel.
1181
                     */
1182
                    var preloaderMsgPanel;
1183
1184
                    /**
1185
                     * Show a preloader popup panel.
1186
                     */
1187
                    var preloaderOn = function(msg, status) {
1188
                        //$('#process_msg').html(msg);
1189
                        //$('#preloaderDiv').show();
1190
                        getPanel = function() {
1191
                            var args = {    width:"300px",
1192
                                            modal:true,
1193
                                            fixedcenter: true,
1194
                                            constraintoviewport: false,
1195
                                            underlay:"shadow",
1196
                                            close:false,
1197
                                            draggable:true,
1198
1199
                                            effect:{effect:YAHOO.widget.ContainerEffect.FADE, duration:.5}
1200
                                           } ;
1201
                                    msg_panel = new YAHOO.widget.Panel('p_msg', args);
1202
1203
                                    msg_panel.setHeader(msg);
1204
                                    status = status?status:'Please wait...';
1205
                                    msg_panel.setBody('<p><img alt="'+status+'" src="install/processing.gif"><br><span class="preloader-status">'+status+'</span></p>');
1206
                                    msg_panel.render(document.body);
1207
                                    preloaderMsgPanel = msg_panel;
1208
                            }
1209
                            getPanel();
1210
                            preloaderMsgPanel.show;
1211
                    };
1212
1213
                    /**
1214
                     * Popup panel hide.
1215
                     */
1216
                    var preloaderOff = function() {
1217
                        //$('#process_msg').html('');
1218
                        //$('#preloaderDiv').hide();
1219
                        preloaderMsgPanel.hide();
1220
                    };
1221
1222
                    /**
1223
                     * Change status message in popup panel.
1224
                     */
1225
                    var preloaderSetStatus = function(msg) {
1226
                        $('.preloader-status').html(msg);
1227
                    };
1228
1229
                    /**
1230
                     * Otiginal callback function for compant logo uploader, override this function to callback the upload finist event.
1231
                     */
1232
                    var uploadLogoCallback = function(status) {
1233
                        // Upload finished, more details in status. (override this function)
1234
                    };
1235
1236
                    /**
1237
                     * Upload company logo in uploader-iframe.
1238
                     */
1239
                    var uploadLogo = function(e, cb) {
1240
                        if(cb) {
1241
                            uploadLogoCallback = cb;
1242
                        }
1243
                        $(e.form).attr('action', 'install.php?sugar_body_only=1&uploadLogo=1&callback=uploadLogoCallback')
1244
                        $(e.form).attr('target', 'upload_target');
1245
                        $(e.form).submit();
1246
                    };
1247
1248
                    /**
1249
                     * Store config into the server session.
1250
                     */
1251
                    var storeConfig = function(e, cb) {
1252
                        var _cb = false;
1253
                        if(cb) {
1254
                            _cb = cb;
1255
                        }
1256
                        $.post('install.php?sugar_body_only=1&storeConfig=1', $(e.form).serialize(), function(resp, err){
1257
                            if(err!=='success') {
1258
                                console.error(err);
1259
                            }
1260
                            else if(resp) {
1261
                                //console.error('configuration store failed');
1262
1263
                                document.getElementById("errorMsgs").innerHTML = resp;
1264
                                document.getElementById("errorMsgs").style.display = '';
1265
                                return false;
1266
1267
                            }
1268
                            else {
1269
                                $('#errorMsgs').html('');
1270
                                $('#errorMsgs').hide();
1271
                                if(_cb) {
1272
                                    _cb();
1273
                                }
1274
                            }
1275
                        });
1276
                    };
1277
1278
                    /**
1279
                     * Other SMTP settings form parts to Other tab. we want to add these to the POST request.
1280
                     */
1281
                    var removeSMTPSettings = function() {
1282
//                        // on form submit prevent set the other tab div with inputs and post that!
1283
//                        $('.smtp_tab').each(function(i,e){
1284
//                            if($(this).attr('id') == $('input[name="smtp_tab_selected"]').val() && $(this).attr('id')!='smtp_tab_other') {
1285
//                                var selid = '#' + $(this).attr('id') + ' ';
1286
//                                $('input[name="mail_smtpserver"]').val( $(selid+'input[name="_mail_smtpserver"]').val() );
1287
//                                $('#mail_smtpauth_req_chk').prop( $(selid+'input[name="_mail_smtpauth_req"]').prop() );
1288
//                                $('input[name="mail_smtpuser"]').val( $(selid+'input[name="_mail_smtpuser"]').val() );
1289
//                                $('input[name="mail_smtppass"]').val( $(selid+'input[name="_mail_smtppass"]').val() );
1290
//                                $('#notify_allow_default_outbound_chk').prop( $(selid+'input[name="_notify_allow_default_outbound"]').prop() );
1291
//                                $('input[name="mail_smtpport"]').val( $(selid+'input[name="_mail_smtpport"]').val() );
1292
//                                $('input[name="mail_smtpssl"]').val( $(selid+'input[name="_mail_smtpssl"]').val() );
1293
//                            }
1294
//                        });
1295
                    };
1296
1297
                    /**
1298
                     * Show and refresh status message to user.
1299
                     */
1300
                    statReaderStop = false;
1301
                    var startStatusReader = function() {
1302
                        setInterval(function(){
1303
                            if(!statReaderStop) {
1304
                                $.getJSON('install/status.json?' + Math.random(), function(resp){
1305
                                    preloaderSetStatus(resp.message);
1306
                                    if(resp.command && resp.command.function == 'redirect') {
1307
                                        document.location.href = resp.command.arguments;
1308
                                        statReaderStop = true;
1309
                                    }
1310
                                });
1311
                            }
1312
                        }, 1200);
1313
                    };
1314
1315
                    var dbCheckPassed = function(url, next_step, msgpanel) {
1316
                                msgpanel.hide();
1317
                                document.installForm.goto.value="{$mod_strings['LBL_NEXT']}";
1318
                                document.getElementById('hidden_goto').value="{$mod_strings['LBL_NEXT']}";
1319
                                document.installForm.current_step.value=next_step;
1320
                                removeSMTPSettings();
1321
                                // TODO--low: add correct form validation for all fields (number is number, server name a valid server name etc)
1322
                                $('#installForm').attr('action', 'install.php');
1323
1324
                                //preloaderOn('{$mod_strings['LBL_INSTALL_PROCESS']}', '...');
1325
                                startStatusReader();
1326
1327
                                $('#installForm').hide();
1328
                                $('#installStatus').show();
1329
                                $("html, body").animate({
1330
                                     scrollTop:0
1331
                                });
1332
                                document.installForm.submit();
1333
                    };
1334
1335
                    /**
1336
                     * Starting company logo upload.
1337
                     */
1338
                    var onUploadImageClick = function(e) {
1339
                        var _e = e;
1340
                        preloaderOn('{$mod_strings['UPLOAD_LOGO']}');
1341
                        uploadLogo(e, function(status){
1342
                            preloaderOff();
1343
                            // upload finish
1344
                            $('#errorMsgs').html('');
1345
                            $('#errorMsgs').hide();
1346
                            if(status.errors) {
1347
                                // show errors..
1348
                                var errList = '';
1349
                                $.each(status.errors, function(i,e){
1350
                                    errList+= '<li class="error"><span class="error">' + e + '</span></li>';
1351
                                });
1352
                                $('#errorMsgs').html('<p><b>{$mod_strings['LBL_SYSOPTS_ERRS_TITLE']}</b></p><ul>' + errList + '</ul>');
1353
                                $('#errorMsgs').show();
1354
1355
//                                storeConfig(_e);
1356
                            }
1357
                            else {
1358
                                // show logo ..
1359
                                $('#current_logo_row img').attr('src', status.filepath + '?' + Math.random());
1360
                                var imghtml = $('<div>').append($('#current_logo_row img')).html();
1361
                                $('#current_logo_row img').remove();
1362
                                $('#current_logo_row').append(imghtml);
1363
                                $('#current_logo_row img').show();
1364
//                                storeConfig(_e, function(){
1365
//                                    callDBCheck(function(url, next_step, msgpanel){
1366
//                                        dbCheckPassed(url, next_step, msgpanel);
1367
//                                    });
1368
//                                });
1369
                            }
1370
                        });
1371
                    };
1372
1373
                    /**
1374
                     * Client side pre-validation.
1375
                     */
1376
                    var getFormErrors = function() {
1377
                        var errors = [];
1378
1379
                        $('.field-error').removeClass('field-error');
1380
1381
                        if(!$('input[name="email1"]').val()) {
1382
                            errors.push('{$mod_strings['ERR_ADMIN_EMAIL']}');
1383
                            $('input[name="email1"]').addClass('field-error');
1384
                        }
1385
1386
                        if(!$('input[name="setup_site_url"]').val()) {
1387
                            errors.push('{$mod_strings['ERR_SITE_URL']}');
1388
                            $('input[name="email1"]').addClass('field-error');
1389
                        }
1390
1391
                        return errors;
1392
                    };
1393
1394
                    /**
1395
                     * Click to next button and start the installation.
1396
                     */
1397
                    var onNextClick = function(e) {
1398
1399
                        if($('#dbUSRData').val() == 'provide') {
1400
                            $('#setup_db_admin_user_name').val($('input[name="setup_db_sugarsales_user"]').val());
1401
                            $('#setup_db_admin_password_entry').val($('input[name="setup_db_sugarsales_password_entry"]').val());
1402
                            $('#setup_db_admin_password').val($('input[name="setup_db_sugarsales_password_entry"]').val());
1403
                        }
1404
1405
                        var errors = getFormErrors();
1406
                        if(!errors.length) {
1407
                            var _e = e;
1408
                            storeConfig(_e, function(){
1409
                                callDBCheck(function(url, next_step, msgpanel){
1410
                                    dbCheckPassed(url, next_step, msgpanel);
1411
                                });
1412
                            });
1413
                        }
1414
                        else {
1415
                            $('#errorMsgs').html("<p><b>Please fix the following errors before proceeding:</b></p><ul><li class=\"error\">" + errors.join('</li><li>') + "</li></ul>");
1416
                            $('#errorMsgs').show();
1417
                            //alert(errors.join('</li><li>'));
1418
                        }
1419
                        return false;
1420
                    };
1421
                </script>
1422
            </div>
1423
EOQ;
1424
        return $out;
1425
    }
1426
1427
    private function getFormScripts($mod_strings, $next_step) {
1428
        $out =<<<EOQ
1429
            /**
1430
             * Submit form without step.
1431
             */
1432
            var formRefreshSubmit = function(e) {
1433
                document.getElementById('goto').value='resend';
1434
                document.getElementById('hidden_goto').value='resend';
1435
                e.form.submit();
1436
            }
1437
1438
            $('#fts_type').change(function(){
1439
                if($(this).val() == '')
1440
                    hideFTSSettings();
1441
                else
1442
                    showFTSSettings();
1443
            });
1444
1445
            function showFTSSettings()
1446
            {
1447
                $('#fts_port_row').show();
1448
                $('#fts_host_row').show();
1449
            }
1450
1451
            function hideFTSSettings()
1452
            {
1453
                $('#fts_port_row').hide();
1454
                $('#fts_host_row').hide();
1455
            }
1456
1457
1458
            function toggleDBUser(){
1459
                 if(typeof(document.getElementById('dbUSRData')) !='undefined'
1460
                 && document.getElementById('dbUSRData') != null){
1461
1462
                    ouv = document.getElementById('dbUSRData').value;
1463
                    if(ouv == 'provide' || ouv == 'create'){
1464
                        document.getElementById('connection_user_div').style.display = '';
1465
                        //document.getElementById('sugarDBUs<br>er').style.display = 'none';
1466
1467
                        if(ouv == 'provide') {
1468
                            $('#setup_db_admin_user_name').parent().prev().hide();
1469
                            $('#setup_db_admin_user_name').parent().hide();
1470
                            $('#setup_db_admin_password_entry').parent().hide();
1471
                        }
1472
                        else {
1473
                            $('#setup_db_admin_user_name').parent().prev().show();
1474
                            $('#setup_db_admin_user_name').parent().show();
1475
                            $('#setup_db_admin_password_entry').parent().show();
1476
                        }
1477
1478
                    }else{
1479
                        document.getElementById('connection_user_div').style.display = 'none';
1480
                        //document.getElementById('sugarDBUser').style.display = '';
1481
                    }
1482
                }
1483
            }
1484
            toggleDBUser();
1485
1486
            var msgPanel;
1487
1488
            // Modified: Callback function added.
1489
            function callDBCheck(cb){
1490
                var _cb = cb;
1491
                        //begin main function that will be called
1492
                        ajaxCall = function(msg_panel){
1493
                            //create success function for callback
1494
1495
                            getPanel = function() {
1496
                            var args = {    width:"300px",
1497
                                            modal:true,
1498
                                            fixedcenter: true,
1499
                                            constraintoviewport: false,
1500
                                            underlay:"shadow",
1501
                                            close:false,
1502
                                            draggable:true,
1503
1504
                                            effect:{effect:YAHOO.widget.ContainerEffect.FADE, duration:.5}
1505
                                           } ;
1506
                                    msg_panel = new YAHOO.widget.Panel('p_msg', args);
1507
1508
                                    msg_panel.setHeader("{$mod_strings['LBL_LICENSE_CHKDB_HEADER']}");
1509
                                    msg_panel.setBody(document.getElementById("checkingDiv").innerHTML);
1510
                                    msg_panel.render(document.body);
1511
                                    msgPanel = msg_panel;
1512
                            }
1513
1514
1515
                            passed = function(url){
1516
                                _cb(url, "{$next_step}", msgPanel);
1517
                            }
1518
                            success = function(o) {
1519
                                //condition for just the preexisting database
1520
                                if (o.responseText.indexOf('preexeest')>=0){
1521
1522
                                    //  throw confirmation message
1523
                                    msg_panel.setBody(document.getElementById("sysCheckMsg").innerHTML);
1524
                                    msg_panel.render(document.body);
1525
                                    msgPanel = msg_panel;
1526
                                    document.getElementById('accept_btn').focus();
1527
                                //condition for no errors
1528
                                }else if (o.responseText.indexOf('dbCheckPassed')>=0){
1529
                                    //make navigation
1530
                                    passed("install.php?goto={$mod_strings['LBL_NEXT']}");
1531
1532
                                //condition for other errors
1533
                                }else{
1534
                                    //turn off loading message
1535
                                    msgPanel.hide();
1536
                                    document.getElementById("errorMsgs").innerHTML = o.responseText;
1537
                                    document.getElementById("errorMsgs").style.display = '';
1538
                                    return false;
1539
                                }
1540
1541
1542
                            }//end success
1543
1544
1545
                            //copy the db values over to the hidden field counterparts
1546
                            document.installForm.setup_db_admin_password.value = document.installForm.setup_db_admin_password_entry.value;
1547
1548
1549
1550
                            //set loading message and create url
1551
                            postData = "checkDBSettings=true&to_pdf=1&sugar_body_only=1";
1552
                            postData += "&setup_db_database_name="+document.installForm.setup_db_database_name.value;
1553
                            if(typeof(document.installForm.setup_db_host_instance) != 'undefined'){
1554
                                postData += "&setup_db_host_instance="+document.installForm.setup_db_host_instance.value;
1555
                            }
1556
                            if(typeof(document.installForm.setup_db_port_num) != 'undefined'){
1557
                                postData += "&setup_db_port_num="+document.installForm.setup_db_port_num.value;
1558
                            }
1559
                            postData += "&setup_db_host_name="+document.installForm.setup_db_host_name.value;
1560
                            postData += "&setup_db_admin_user_name="+document.installForm.setup_db_admin_user_name.value;
1561
                            postData += "&setup_db_admin_password="+encodeURIComponent(document.installForm.setup_db_admin_password.value);
1562
                            if(typeof(document.installForm.setup_db_sugarsales_user) != 'undefined'){
1563
                                postData += "&setup_db_sugarsales_user="+document.installForm.setup_db_sugarsales_user.value;
1564
                            }
1565
                            if(typeof(document.installForm.setup_db_sugarsales_password) != 'undefined'){
1566
                            document.installForm.setup_db_sugarsales_password.value = document.installForm.setup_db_sugarsales_password_entry.value;
1567
                                postData += "&setup_db_sugarsales_password="+encodeURIComponent(document.installForm.setup_db_sugarsales_password.value);
1568
                            }
1569
                            if(typeof(document.installForm.setup_db_sugarsales_password_retype) != 'undefined'){
1570
                                document.installForm.setup_db_sugarsales_password_retype.value = document.installForm.setup_db_sugarsales_password_retype_entry.value;
1571
                                postData += "&setup_db_sugarsales_password_retype="+encodeURIComponent(document.installForm.setup_db_sugarsales_password_retype.value);
1572
                            }
1573
                            if(typeof(document.installForm.dbUSRData) != 'undefined'){
1574
                                postData += "&dbUSRData="+document.getElementById('dbUSRData').value;
1575
                            }
1576
1577
                            postData += "&demoData="+document.installForm.demoData.value;
1578
1579
                            postData += "&to_pdf=1&sugar_body_only=1";
1580
1581
                            //if this is a call already in progress, then just return
1582
                                if(typeof ajxProgress != 'undefined'){
1583
                                    return;
1584
                                }
1585
1586
                            getPanel();
1587
                            msgPanel.show;
1588
                            var ajxProgress = YAHOO.util.Connect.asyncRequest('POST','install.php', {success: success, failure: success}, postData);
1589
1590
1591
                        };//end ajaxCall method
1592
                          ajaxCall();
1593
                        return;
1594
            }
1595
1596
            // Modified: Show a message for user when install started.. "Installation process, pease wait..."
1597
            function confirm_drop_tables(yes_no){
1598
1599
                    if(yes_no == true){
1600
                        document.getElementById('setup_db_drop_tables').value = true;
1601
                       //make navigation
1602
                                document.installForm.goto.value="{$mod_strings['LBL_NEXT']}";
1603
                                document.getElementById('hidden_goto').value="{$mod_strings['LBL_NEXT']}";
1604
                                document.installForm.current_step.value="{$next_step}";
1605
1606
                                msgPanel.hide();
1607
1608
                                //preloaderOn('{$mod_strings['LBL_INSTALL_PROCESS']}', '...');
1609
                                startStatusReader();
1610
1611
                                removeSMTPSettings();
1612
1613
                                $('#installForm').hide();
1614
                                $('#installStatus').show();
1615
                                $("html, body").animate({
1616
                                     scrollTop:0
1617
                                });
1618
                                document.installForm.submit();
1619
1620
                    }else{
1621
                        //set drop tables to false
1622
                        document.getElementById('setup_db_drop_tables').value = false;
1623
                        msgPanel.hide();
1624
                    }
1625
            }
1626
1627
1628
                        var onDBTypeClick = function(e) {
1629
                            formRefreshSubmit(e);
1630
                        };
1631
EOQ;
1632
        return $out;
1633
    }
1634
1635
    /**
1636
     * @param $data   form data
1637
     * @return string   output
1638
     */
1639
    public function show($data = null) {
1640
        foreach($data as $__key => $__val) {
1641
            $$__key = $__val;
1642
        }
1643
        $formId = 'installForm';
1644
        $out = $this->getOutput(
1645
            $this->getHeader(
1646
                $mod_strings,
1647
                $this->getHeaderStyles(),
1648
                $this->getHeaderScripts($sugar_version, $js_custom_version)
1649
            ),
1650
            $this->getForm(
1651
                $mod_strings,
1652
                $formId,
1653
                $formId,
1654
                $errs,
1655
                $this->getFormItems($mod_strings, $app_list_strings, $sugarConfigDefaults, $drivers, $checked, $db, $errors, $supportedLanguages,
1656
                    $current_language, $customSession, $customLog, $customId, $customSessionHidden, $customLogHidden, $customIdHidden),
1657
                $this->getFormControlls($mod_strings, $formId),
1658
                $this->getFormScripts($mod_strings, $next_step),
1659
                $next_step
1660
            ),
1661
            $sugar_md,
1662
            $mod_strings
1663
        );
1664
        echo $out;
1665
        return $out;
1666
    }
1667
1668
}
1669
1670
class DisplayErrors {
0 ignored issues
show
Coding Style Compatibility introduced by
PSR1 recommends that each class should be in its own file to aid autoloaders.

Having each class in a dedicated file usually plays nice with PSR autoloaders and is therefore a well established practice. If you use other autoloaders, you might not want to follow this rule.

Loading history...
1671
1672
    private static $settingsStack = array();
1673
1674
    public static function show() {
1675
        array_push(self::$settingsStack, array(
1676
            'level' => error_reporting(),
1677
            'display_errors' => ini_get('display_errors'),
1678
        ));
1679
1680
        error_reporting(E_ALL);
1681
        ini_set('display_errors', 1);
1682
    }
1683
1684
    public static function restore() {
1685
        $settings = array_pop(self::$settingsStack);
1686
        error_reporting($settings['level']);
1687
        ini_set('display_errors', $settings['display_errors']);
1688
    }
1689
}
1690
1691
1692
//-------------------------------------- InstallLayout
1693
1694
global $sugar_version, $js_custom_version;
1695
1696
1697
1698
if( !isset( $install_script ) || !$install_script ){
1699
    die($mod_strings['ERR_NO_DIRECT_SCRIPT']);
1700
}
1701
1702
1703
1704
//---------------- systemOption: db driver select
1705
1706
if(!isset($_SESSION['setup_db_type']) || $_SESSION['setup_db_type'] ==''){
1707
    $_SESSION['setup_db_type'] = 'mysql';
1708
}
1709
$setup_db_type = $_SESSION['setup_db_type'];
1710
1711
$errs = '';
1712
if(isset($validation_errors)) {
1713
    if(count($validation_errors) > 0) {
1714
        $errs  = '<div id="errorMsgs">';
1715
        $errs .= "<p>{$mod_strings['LBL_SYSOPTS_ERRS_TITLE']}</p>";
1716
        $errs .= '<ul>';
1717
1718
        foreach($validation_errors as $error) {
1719
            $errs .= '<li>' . $error . '</li>';
1720
        }
1721
1722
        $errs .= '</ul>';
1723
        $errs .= '</div>';
1724
    }
1725
}
1726
1727
$drivers = DBManagerFactory::getDbDrivers();
1728
foreach(array_keys($drivers) as $dname) {
1729
    $checked[$dname] = '';
1730
}
1731
$checked[$setup_db_type] = 'checked="checked"';
1732
1733
1734
1735
//----------------- dbConfig_a: db name user pass...
1736
1737
if(empty($_SESSION['setup_db_host_name'])){
1738
    $_SESSION['setup_db_host_name'] = (isset($sugar_config['db_host_name']))  ? $sugar_config['db_host_name'] :  $_SERVER['SERVER_NAME'];
1739
}
1740
1741
1742
// DB split
1743
$createDbCheckbox = '';
1744
$createDb = (!empty($_SESSION['setup_db_create_database'])) ? 'checked="checked"' : '';
1745
$dropCreate = (!empty($_SESSION['setup_db_drop_tables'])) ? 'checked="checked"' : '';
1746
$instanceName = '';
1747
if (isset($_SESSION['setup_db_host_instance']) && !empty($_SESSION['setup_db_host_instance'])){
1748
    $instanceName = $_SESSION['setup_db_host_instance'];
1749
}
1750
1751
$setupDbPortNum ='';
1752
if (isset($_SESSION['setup_db_port_num']) && !empty($_SESSION['setup_db_port_num'])){
1753
    $setupDbPortNum = $_SESSION['setup_db_port_num'];
1754
}
1755
1756
if(!isset($_SESSION['setup_db_manager'])) {
1757
    $_SESSION['setup_db_manager'] = null;
1758
}
1759
1760
$db = getInstallDbInstance();
1761
1762
1763
1764
1765
1766
//----------------- siteConfig_a.php Site Config & admin user
1767
1768
1769
if( is_file("config.php") ){
1770
    if(!empty($sugar_config['default_theme']))
1771
        $_SESSION['site_default_theme'] = $sugar_config['default_theme'];
1772
1773
    if(!empty($sugar_config['disable_persistent_connections']))
1774
        $_SESSION['disable_persistent_connections'] =
1775
            $sugar_config['disable_persistent_connections'];
1776
    if(!empty($sugar_config['default_language']))
1777
        $_SESSION['default_language'] = $sugar_config['default_language'];
1778
    if(!empty($sugar_config['translation_string_prefix']))
1779
        $_SESSION['translation_string_prefix'] = $sugar_config['translation_string_prefix'];
1780
    if(!empty($sugar_config['default_charset']))
1781
        $_SESSION['default_charset'] = $sugar_config['default_charset'];
1782
1783
    if(!empty($sugar_config['default_currency_name']))
1784
        $_SESSION['default_currency_name'] = $sugar_config['default_currency_name'];
1785
    if(!empty($sugar_config['default_currency_symbol']))
1786
        $_SESSION['default_currency_symbol'] = $sugar_config['default_currency_symbol'];
1787
    if(!empty($sugar_config['default_currency_iso4217']))
1788
        $_SESSION['default_currency_iso4217'] = $sugar_config['default_currency_iso4217'];
1789
1790
    if(!empty($sugar_config['rss_cache_time']))
1791
        $_SESSION['rss_cache_time'] = $sugar_config['rss_cache_time'];
1792
    if(!empty($sugar_config['languages']))
1793
    {
1794
        // We need to encode the languages in a way that can be retrieved later.
1795
        $language_keys = Array();
1796
        $language_values = Array();
1797
1798
        foreach($sugar_config['languages'] as $key=>$value)
1799
        {
1800
            $language_keys[] = $key;
1801
            $language_values[] = $value;
1802
        }
1803
1804
        $_SESSION['language_keys'] = urlencode(implode(",",$language_keys));
1805
        $_SESSION['language_values'] = urlencode(implode(",",$language_values));
1806
    }
1807
}
1808
1809
////	errors
1810
$errors = '';
1811
if( isset($validation_errors) && is_array($validation_errors)){
1812
    if( count($validation_errors) > 0 ){
1813
        $errors  = '<div id="errorMsgs">';
1814
        $errors .= '<p>'.$mod_strings['LBL_SITECFG_FIX_ERRORS'].'</p><ul>';
1815
        foreach( $validation_errors as $error ){
1816
            $errors .= '<li>' . $error . '</li>';
1817
        }
1818
        $errors .= '</ul></div>';
1819
    }
1820
}
1821
1822
1823
////	ternaries
1824
$sugarUpdates = (isset($_SESSION['setup_site_sugarbeet']) && !empty($_SESSION['setup_site_sugarbeet'])) ? 'checked="checked"' : '';
1825
$siteSecurity = (isset($_SESSION['setup_site_defaults']) && !empty($_SESSION['setup_site_defaults'])) ? 'checked="checked"' : '';
1826
1827
$customSession = (isset($_SESSION['setup_site_custom_session_path']) && !empty($_SESSION['setup_site_custom_session_path'])) ? 'checked="checked"' : '';
1828
$customLog = (isset($_SESSION['setup_site_custom_log_dir']) && !empty($_SESSION['setup_site_custom_log_dir'])) ? 'checked="checked"' : '';
1829
$customId = (isset($_SESSION['setup_site_specify_guid']) && !empty($_SESSION['setup_site_specify_guid'])) ? 'checked="checked"' : '';
1830
1831
$customSessionHidden = (isset($_SESSION['setup_site_custom_session_path']) && !empty($_SESSION['setup_site_custom_session_path'])) ? '' : ' style="display:none;" ';
1832
$customLogHidden = (isset($_SESSION['setup_site_custom_log_dir']) && !empty($_SESSION['setup_site_custom_log_dir'])) ? '' : ' style="display:none;" ';
1833
$customIdHidden = (isset($_SESSION['setup_site_specify_guid']) && !empty($_SESSION['setup_site_specify_guid'])) ? '' : ' style="display:none;" ';
1834
1835
1836
// defaults or user sets
1837
// warn: may the system bring it up
1838
$_SESSION = array_merge($_SESSION, $_POST);
1839
$sugarConfigDefaults = array_merge(get_sugar_config_defaults(), $_SESSION);
1840
1841
//----- show layout
1842
1843
// show display errors (for testing only - do not forget restore!)
1844
// DisplayErrors::show();
1845
1846
$installConfigLayout = new InstallLayout();
1847
$installConfigLayout->show(get_defined_vars());
1848
1849
// restore display errors
1850
// DisplayErrors::restore();
1851
1852
// TODO--low: add Name Format 	[default_locale_name_format]	[Dr. David Livingstone]	-- ???
1853
1854
?>