]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - modules/Users/EditView.php
Release 6.3.1
[Github/sugarcrm.git] / modules / Users / EditView.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  * Description:  TODO: To be written.
41  * Portions created by SugarCRM are Copyright(C) SugarCRM, Inc.
42  * All Rights Reserved.
43  * Contributor(s): ______________________________________..
44  ********************************************************************************/
45
46
47
48 $sugar_smarty = new Sugar_Smarty();
49 require_once('include/export_utils.php');
50 require_once('modules/Configurator/Configurator.php');
51 require_once('modules/Users/Forms.php');
52 require_once('modules/Users/UserSignature.php');
53
54 global $app_strings;
55 global $app_list_strings;
56 global $mod_strings;
57
58 $admin = new Administration();
59 $admin->retrieveSettings();
60
61 $focus = new User();
62 $is_current_admin=is_admin($current_user)
63                 ||$GLOBALS['current_user']->isAdminForModule('Users');
64 $is_super_admin = is_admin($current_user);
65
66 if(isset($_REQUEST['record'])) {
67     if(!$is_current_admin && $_REQUEST['record'] != $current_user->id) sugar_die("Unauthorized access to administration.");
68     $focus->retrieve($_REQUEST['record']);
69 }
70
71 if(!$is_super_admin && $GLOBALS['current_user']->isAdminForModule('Users') && $focus->is_admin == 1) sugar_die("Unauthorized access to administrator.");
72
73 if(isset($_REQUEST['isDuplicate']) && $_REQUEST['isDuplicate'] == 'true') {
74         $focus->id = "";
75         $focus->user_name = "";
76 }else if(!isset($_REQUEST['record'])){
77     if ( !defined('SUGARPDF_USE_DEFAULT_SETTINGS') ) {
78         define('SUGARPDF_USE_DEFAULT_SETTINGS', true);
79     }
80 }
81
82
83
84
85
86
87
88
89 $the_query_string = 'module=Users&action=DetailView';
90 if(isset($_REQUEST['record'])) {
91     $the_query_string .= '&record='.$_REQUEST['record'];
92 }
93 $buttons = "";
94 if (!$current_user->is_group){
95     if ($focus->id == $current_user->id) {
96         $reset_pref_warning = $mod_strings['LBL_RESET_PREFERENCES_WARNING'];
97         $reset_home_warning = $mod_strings['LBL_RESET_HOMEPAGE_WARNING'];
98     }
99     else {
100         $reset_pref_warning = $mod_strings['LBL_RESET_PREFERENCES_WARNING_USER'];
101         $reset_home_warning = $mod_strings['LBL_RESET_HOMEPAGE_WARNING_USER'];
102     }
103         $buttons .="<input type='button' class='button' onclick='if(confirm(\"{$reset_pref_warning}\"))window.location=\"".$_SERVER['PHP_SELF'] .'?'.$the_query_string."&reset_preferences=true\";' value='".$mod_strings['LBL_RESET_PREFERENCES']."' />";
104         $buttons .="&nbsp;<input type='button' class='button' onclick='if(confirm(\"{$reset_home_warning}\"))window.location=\"".$_SERVER['PHP_SELF'] .'?'.$the_query_string."&reset_homepage=true\";' value='".$mod_strings['LBL_RESET_HOMEPAGE']."' />";
105 }
106 if (isset($buttons)) $sugar_smarty->assign("BUTTONS", $buttons);
107
108 echo "\n<p>\n";
109 $params = array();
110 if(empty($focus->id)){
111         $params[] = $GLOBALS['app_strings']['LBL_CREATE_BUTTON_LABEL'];
112 }else{
113         $params[] = "<a href='index.php?module=Users&action=DetailView&record={$focus->id}'>".$locale->getLocaleFormattedName($focus->first_name,$focus->last_name)."</a>";
114         $params[] = $GLOBALS['app_strings']['LBL_EDIT_BUTTON_LABEL'];
115 }
116
117 $index_url = ($is_current_admin) ? "index.php?module=Users&action=index" : "index.php?module=Users&action=DetailView&record={$focus->id}"; 
118 echo getClassicModuleTitle("Users", $params, true,$index_url);
119
120 $GLOBALS['log']->info('User edit view');
121 $sugar_smarty->assign('MOD', $mod_strings);
122 $sugar_smarty->assign('APP', $app_strings);
123
124 if(isset($_REQUEST['error_string'])) $sugar_smarty->assign('ERROR_STRING', '<span class="error">Error: '.$_REQUEST['error_string'].'</span>');
125 if(isset($_REQUEST['error_password'])) $sugar_smarty->assign('ERROR_PASSWORD', '<span id="error_pwd" class="error">Error: '.$_REQUEST['error_password'].'</span>');
126
127 if(isset($_REQUEST['isDuplicate']) && $_REQUEST['isDuplicate'] == 'true') {
128
129         $sugar_smarty->assign('RETURN_MODULE', $_REQUEST['return_module']);
130         $sugar_smarty->assign('RETURN_ACTION', $_REQUEST['return_action']);
131         $sugar_smarty->assign('RETURN_ID', $_REQUEST['record']);
132
133 } else {
134         if(isset($_REQUEST['return_module'])) $sugar_smarty->assign('RETURN_MODULE', $_REQUEST['return_module']);
135         else { $sugar_smarty->assign('RETURN_MODULE', $focus->module_dir);}
136         if(isset($_REQUEST['return_id'])) $sugar_smarty->assign('RETURN_ID', $_REQUEST['return_id']);
137         else { $sugar_smarty->assign('RETURN_ID', $focus->id); }
138         if(isset($_REQUEST['return_action'])) $sugar_smarty->assign('RETURN_ACTION', $_REQUEST['return_action']);
139         else { $sugar_smarty->assign('RETURN_ACTION', 'DetailView'); }
140 }
141
142
143 $sugar_smarty->assign('JAVASCRIPT',user_get_validate_record_js().user_get_chooser_js().user_get_confsettings_js().'<script type="text/javascript" language="Javascript" src="modules/Users/User.js"></script>');
144 $sugar_smarty->assign('PRINT_URL', 'index.php?'.$GLOBALS['request_string']);
145 $sugar_smarty->assign('ID', $focus->id);
146
147 $sugar_smarty->assign('USER_NAME', $focus->user_name);
148 $sugar_smarty->assign('FIRST_NAME', $focus->first_name);
149 $sugar_smarty->assign('LAST_NAME', $focus->last_name);
150 $sugar_smarty->assign('TITLE', $focus->title);
151 $sugar_smarty->assign('DEPARTMENT', $focus->department);
152 $sugar_smarty->assign('REPORTS_TO_ID', $focus->reports_to_id);
153 $sugar_smarty->assign('REPORTS_TO_NAME', get_assigned_user_name($focus->reports_to_id));
154 $sugar_smarty->assign('PHONE_HOME', $focus->phone_home);
155 $sugar_smarty->assign('PHONE_MOBILE', $focus->phone_mobile);
156 $sugar_smarty->assign('PHONE_WORK', $focus->phone_work);
157 $sugar_smarty->assign('PHONE_OTHER', $focus->phone_other);
158 $sugar_smarty->assign('PHONE_FAX', $focus->phone_fax);
159 $sugar_smarty->assign('EMAIL1', $focus->email1);
160 $sugar_smarty->assign('EMAIL2', $focus->email2);
161 $sugar_smarty->assign('ADDRESS_STREET', $focus->address_street);
162 $sugar_smarty->assign('ADDRESS_CITY', $focus->address_city);
163 $sugar_smarty->assign('ADDRESS_STATE', $focus->address_state);
164 $sugar_smarty->assign('ADDRESS_POSTALCODE', $focus->address_postalcode);
165 $sugar_smarty->assign('ADDRESS_COUNTRY', $focus->address_country);
166 $sugar_smarty->assign('DESCRIPTION', $focus->description);
167 $sugar_smarty->assign('EXPORT_DELIMITER', $focus->getPreference('export_delimiter'));
168 $sugar_smarty->assign('PWDSETTINGS', isset($GLOBALS['sugar_config']['passwordsetting']) ? $GLOBALS['sugar_config']['passwordsetting'] : array());
169
170 if(!empty($GLOBALS['sugar_config']['authenticationClass'])){
171                 $sugar_smarty->assign('EXTERNAL_AUTH_CLASS_1', $GLOBALS['sugar_config']['authenticationClass']);
172                 $sugar_smarty->assign('EXTERNAL_AUTH_CLASS', $GLOBALS['sugar_config']['authenticationClass']);
173 }else{
174         if(!empty($GLOBALS['system_config']->settings['system_ldap_enabled'])){
175                 $sugar_smarty->assign('EXTERNAL_AUTH_CLASS_1', $mod_strings['LBL_LDAP']);
176                 $sugar_smarty->assign('EXTERNAL_AUTH_CLASS', $mod_strings['LBL_LDAP_AUTHENTICATION']);
177         }
178 }
179 if(!empty($focus->external_auth_only))$sugar_smarty->assign('EXTERNAL_AUTH_ONLY_CHECKED', 'CHECKED');
180 if ($is_current_admin)
181         $sugar_smarty->assign('IS_ADMIN','1');
182 else
183         $sugar_smarty->assign('IS_ADMIN', '0');
184
185 if ($is_super_admin)
186     $sugar_smarty->assign('IS_SUPER_ADMIN','1');
187 else
188     $sugar_smarty->assign('IS_SUPER_ADMIN', '0');
189
190
191 //jc:12293 - modifying to use the accessor method which will translate the
192 //available character sets using the translation files
193 $sugar_smarty->assign('EXPORT_CHARSET', get_select_options_with_id($locale->getCharsetSelect(), $locale->getExportCharset('', $focus)));
194 //end:12293
195
196 if( $focus->getPreference('use_real_names') == 'on' || ( empty($focus->id) && isset($GLOBALS['sugar_config']['use_real_names'])
197        && $GLOBALS['sugar_config']['use_real_names'] && $focus->getPreference('use_real_names') != 'off') )
198 {
199
200         $sugar_smarty->assign('USE_REAL_NAMES', 'CHECKED');
201 }
202 if($focus->getPreference('no_opps') == 'on') {
203     $sugar_smarty->assign('NO_OPPS', 'CHECKED');
204 }
205
206
207
208
209
210 // check if the user has access to the User Management
211 $sugar_smarty->assign('USER_ADMIN',$current_user->isAdminForModule('Users')&& !is_admin($current_user));
212
213
214 ///////////////////////////////////////////////////////////////////////////////
215 ////    NEW USER CREATION ONLY
216 if(empty($focus->id)) {
217         $sugar_smarty->assign('SHOW_ADMIN_CHECKBOX','height="30"');
218         $sugar_smarty->assign('NEW_USER','1');
219 }else{
220         $sugar_smarty->assign('NEW_USER','0');
221         $sugar_smarty->assign('NEW_USER_TYPE','DISABLED');
222 }
223
224 ////    END NEW USER CREATION ONLY
225 ///////////////////////////////////////////////////////////////////////////////
226
227 ///////////////////////////////////////////////////////////////////////////////
228 ////    REDIRECTS FROM COMPOSE EMAIL SCREEN
229 if(isset($_REQUEST['type']) && (isset($_REQUEST['return_module']) && $_REQUEST['return_module'] == 'Emails')) {
230         $sugar_smarty->assign('REDIRECT_EMAILS_TYPE', $_REQUEST['type']);
231 }
232 ////    END REDIRECTS FROM COMPOSE EMAIL SCREEN
233 ///////////////////////////////////////////////////////////////////////////////
234
235
236 ///////////////////////////////////////////////////////////////////////////////
237 ////    LOCALE SETTINGS
238 ////    Date/time format
239 $dformat = $locale->getPrecedentPreference($focus->id?'datef':'default_date_format', $focus);
240 $tformat = $locale->getPrecedentPreference($focus->id?'timef':'default_time_format', $focus);
241 $timeOptions = get_select_options_with_id($sugar_config['time_formats'], $tformat);
242 $dateOptions = get_select_options_with_id($sugar_config['date_formats'], $dformat);
243 $sugar_smarty->assign('TIMEOPTIONS', $timeOptions);
244 $sugar_smarty->assign('DATEOPTIONS', $dateOptions);
245 //// Timezone
246 if(empty($focus->id)) { // remove default timezone for new users(set later)
247     $focus->user_preferences['timezone'] = '';
248 }
249
250 $userTZ = $focus->getPreference('timezone');
251
252 if(empty($userTZ) && !$focus->is_group && !$focus->portal_only) {
253         $userTZ = TimeDate::guessTimezone();
254         $focus->setPreference('timezone', $userTZ);
255 }
256
257 if(!$focus->getPreference('ut')) {
258         $sugar_smarty->assign('PROMPTTZ', ' checked');
259 }
260 $sugar_smarty->assign('TIMEZONE_CURRENT', $userTZ);
261 $sugar_smarty->assign('TIMEZONEOPTIONS', TimeDate::getTimezoneList());
262
263 //// Numbers and Currency display
264 require_once('modules/Currencies/ListCurrency.php');
265 $currency = new ListCurrency();
266
267 // 10/13/2006 Collin - Changed to use Localization.getConfigPreference
268 // This was the problem- Previously, the "-99" currency id always assumed
269 // to be defaulted to US Dollars.  However, if someone set their install to use
270 // Euro or other type of currency then this setting would not apply as the
271 // default because it was being overridden by US Dollars.
272 $cur_id = $locale->getPrecedentPreference('currency', $focus);
273 if($cur_id) {
274         $selectCurrency = $currency->getSelectOptions($cur_id);
275         $sugar_smarty->assign("CURRENCY", $selectCurrency);
276 } else {
277         $selectCurrency = $currency->getSelectOptions();
278         $sugar_smarty->assign("CURRENCY", $selectCurrency);
279 }
280
281 $currenciesVars = "";
282 foreach($locale->currencies as $id => $arrVal) {
283         $currenciesVars .= "currencies['{$id}'] = '{$arrVal['symbol']}';\n";
284 }
285 $currencySymbolsJs = <<<eoq
286 var currencies = new Object;
287 {$currenciesVars}
288 function setSymbolValue(id) {
289         document.getElementById('symbol').value = currencies[id];
290 }
291 eoq;
292 $sugar_smarty->assign('currencySymbolJs', $currencySymbolsJs);
293
294
295 // fill significant digits dropdown
296 $significantDigits = $locale->getPrecedentPreference('default_currency_significant_digits', $focus);
297 $sigDigits = '';
298 for($i=0; $i<=6; $i++) {
299         if($significantDigits == $i) {
300            $sigDigits .= "<option value=\"$i\" selected=\"true\">$i</option>";
301         } else {
302            $sigDigits .= "<option value=\"$i\">{$i}</option>";
303         }
304 }
305
306 $sugar_smarty->assign('sigDigits', $sigDigits);
307
308 $num_grp_sep = $focus->getPreference('num_grp_sep');
309 $dec_sep = $focus->getPreference('dec_sep');
310 $sugar_smarty->assign("NUM_GRP_SEP",(empty($num_grp_sep) ? $sugar_config['default_number_grouping_seperator'] : $num_grp_sep));
311 $sugar_smarty->assign("DEC_SEP",(empty($dec_sep) ? $sugar_config['default_decimal_seperator'] : $dec_sep));
312 $sugar_smarty->assign('getNumberJs', $locale->getNumberJs());
313
314 //// Name display format
315 $sugar_smarty->assign('default_locale_name_format', $locale->getLocaleFormatMacro($focus));
316 $sugar_smarty->assign('getNameJs', $locale->getNameJs());
317 ////    END LOCALE SETTINGS
318 ///////////////////////////////////////////////////////////////////////////////
319
320 //require_once($theme_path.'config.php');
321
322
323 // Grouped tabs?
324 $useGroupTabs = $focus->getPreference('navigation_paradigm');
325 if ( ! isset($useGroupTabs) ) {
326     if ( ! isset($GLOBALS['sugar_config']['default_navigation_paradigm']) ) {
327         $GLOBALS['sugar_config']['default_navigation_paradigm'] = 'gm';
328     }
329     $useGroupTabs = $GLOBALS['sugar_config']['default_navigation_paradigm'];
330 }
331 $sugar_smarty->assign("USE_GROUP_TABS",($useGroupTabs=='gm')?'checked':'');
332
333 $user_max_tabs = $focus->getPreference('max_tabs');
334 if(isset($user_max_tabs) && $user_max_tabs > 0) {
335         $sugar_smarty->assign("MAX_TAB", $user_max_tabs);
336 } elseif(SugarThemeRegistry::current()->maxTabs > 0) {
337     $sugar_smarty->assign("MAX_TAB", SugarThemeRegistry::current()->maxTabs);
338 } else {
339     $sugar_smarty->assign("MAX_TAB", $GLOBALS['sugar_config']['default_max_tabs']);
340 }
341 $sugar_smarty->assign("MAX_TAB_OPTIONS", range(1, ((!empty($GLOBALS['sugar_config']['default_max_tabs']) && $GLOBALS['sugar_config']['default_max_tabs'] > 10 ) ? $GLOBALS['sugar_config']['default_max_tabs'] : 10)));
342
343 $user_subpanel_tabs = $focus->getPreference('subpanel_tabs');
344 if(isset($user_subpanel_tabs)) {
345     $sugar_smarty->assign("SUBPANEL_TABS", $user_subpanel_tabs?'checked':'');
346 } else {
347     $sugar_smarty->assign("SUBPANEL_TABS", $GLOBALS['sugar_config']['default_subpanel_tabs']?'checked':'');
348 }
349
350 $user_theme = $focus->getPreference('user_theme');
351 if(isset($user_theme)) {
352     $sugar_smarty->assign("THEMES", get_select_options_with_id(SugarThemeRegistry::availableThemes(), $user_theme));
353 } else {
354     $sugar_smarty->assign("THEMES", get_select_options_with_id(SugarThemeRegistry::availableThemes(), $GLOBALS['sugar_config']['default_theme']));
355 }
356 $sugar_smarty->assign("SHOW_THEMES",count(SugarThemeRegistry::availableThemes()) > 1);
357 $sugar_smarty->assign("USER_THEME_COLOR", $focus->getPreference('user_theme_color'));
358 $sugar_smarty->assign("USER_THEME_FONT", $focus->getPreference('user_theme_font'));
359 $sugar_smarty->assign("USER_THEME", $user_theme);
360
361 // Build a list of themes that support group modules
362 $sugar_smarty->assign("DISPLAY_GROUP_TAB", 'none');
363
364 $selectedTheme = $user_theme;
365 if(!isset($user_theme)) {
366     $selectedTheme = $GLOBALS['sugar_config']['default_theme'];
367 }
368
369 $themeList = SugarThemeRegistry::availableThemes();
370 $themeGroupList = array();
371
372 foreach ( $themeList as $themeId => $themeName ) {
373     $currThemeObj = SugarThemeRegistry::get($themeId);
374     if ( isset($currThemeObj->group_tabs) && $currThemeObj->group_tabs == 1 ) {
375         $themeGroupList[$themeId] = true;
376         if ( $themeId == $selectedTheme ) {
377             $sugar_smarty->assign("DISPLAY_GROUP_TAB", '');
378         }
379     } else {
380         $themeGroupList[$themeId] = false;
381     }
382 }
383 $sugar_smarty->assign("themeGroupListJSON",json_encode($themeGroupList));
384
385 $sugar_smarty->assign("MAIL_SENDTYPE", get_select_options_with_id($app_list_strings['notifymail_sendtype'], $focus->getPreference('mail_sendtype')));
386 $reminder_time = $focus->getPreference('reminder_time');
387 if(empty($reminder_time)){
388         $reminder_time = -1;
389 }
390 $sugar_smarty->assign("REMINDER_TIME_OPTIONS", get_select_options_with_id($app_list_strings['reminder_time_options'],$reminder_time));
391 if($reminder_time > -1){
392         $sugar_smarty->assign("REMINDER_TIME_DISPLAY", 'inline');
393         $sugar_smarty->assign("REMINDER_CHECKED", 'checked');
394 }else{
395         $sugar_smarty->assign("REMINDER_TIME_DISPLAY", 'none');
396 }
397 //Add Custom Fields
398 $xtpl = $sugar_smarty;
399 require_once('modules/DynamicFields/templates/Files/EditView.php');
400
401 $edit_self = $current_user->id == $focus->id;
402 $admin_edit_self = is_admin($current_user) && $edit_self;
403
404 if($is_current_admin) {
405         $status  = "<td scope='row'><slot>".$mod_strings['LBL_STATUS'].": <span class='required'>".$app_strings['LBL_REQUIRED_SYMBOL']."</span></slot></td>\n";
406         $status .= "<td><select name='status' tabindex='1'";
407         if((!empty($sugar_config['default_user_name']) &&
408                 $sugar_config['default_user_name']== $focus->user_name &&
409                 isset($sugar_config['lock_default_user_name']) &&
410                 $sugar_config['lock_default_user_name']) || $admin_edit_self)
411         {
412                 $status .= ' disabled="disabled" ';
413         }
414         $status .= ">";
415         $status .= get_select_options_with_id($app_list_strings['user_status_dom'], $focus->status);
416         $status .= "</select></td>\n";
417         $sugar_smarty->assign("USER_STATUS_OPTIONS", $status);
418 }
419 if($is_current_admin && $_REQUEST['module'] != 'DynamicLayout' && !empty($_SESSION['editinplace'])){
420         $record = '';
421         if(!empty($_REQUEST['record'])){
422                 $record =       $_REQUEST['record'];
423         }
424         $sugar_smarty->assign("ADMIN_EDIT","<a href='index.php?action=index&module=DynamicLayout&from_action=".$_REQUEST['action'] ."&from_module=".$_REQUEST['module'] ."&record=".$record. "'>".SugarThemeRegistry::current()->getImage("EditLayout","border='0' alt='Edit Layout' align='bottom'")."</a>");
425 }
426
427 if(!empty($sugar_config['default_user_name']) &&
428         $sugar_config['default_user_name'] == $focus->user_name &&
429         isset($sugar_config['lock_default_user_name']) &&
430         $sugar_config['lock_default_user_name'])
431 {
432         $status .= ' disabled ';
433         $sugar_smarty->assign('FIRST_NAME_DISABLED', 'disabled="disabled"');
434         $sugar_smarty->assign('USER_NAME_DISABLED', 'disabled="disabled"');
435         $sugar_smarty->assign('LAST_NAME_DISABLED', 'disabled="disabled"');
436         $sugar_smarty->assign('IS_ADMIN_DISABLED', 'disabled="disabled"');
437         $sugar_smarty->assign('IS_PORTAL_ONLY_DISABLED', 'disabled="disabled"');
438         $sugar_smarty->assign('IS_GROUP_DISABLED', 'disabled="disabled"');
439 }
440
441 if($focus->receive_notifications ||(!isset($focus->id) && $admin->settings['notify_send_by_default'])) $sugar_smarty->assign("RECEIVE_NOTIFICATIONS", "checked");
442 if($focus->getPreference('mailmerge_on') == 'on') {
443         $sugar_smarty->assign('MAILMERGE_ON', 'checked');
444 }
445 $usertype='REGULAR';
446 if(!empty($focus->is_admin) && $focus->is_admin){
447    $usertype='ADMIN';
448 }
449
450
451
452 if((!empty($focus->is_group) && $focus->is_group)  || (isset($_REQUEST['usertype']) && $_REQUEST['usertype']=='group')){
453         $sugar_smarty->assign('IS_GROUP', '1');
454         $usertype='GROUP';
455 } else
456         $sugar_smarty->assign('IS_GROUP', '0');
457
458 $sugar_smarty->assign("USER_TYPE_DESC", $mod_strings['LBL_'.$usertype.'_DESC']);
459 $sugar_smarty->assign("USER_TYPE_LABEL", $mod_strings['LBL_'.$usertype.'_USER']);
460 $sugar_smarty->assign('USER_TYPE',$usertype);
461
462 $enable_syst_generate_pwd=false;
463 if(isset($sugar_config['passwordsetting']) && isset($sugar_config['passwordsetting']['SystemGeneratedPasswordON'])){
464         $enable_syst_generate_pwd=$sugar_config['passwordsetting']['SystemGeneratedPasswordON'];
465 }
466
467 // If new regular user without system generated password or new portal user
468 if(((isset($enable_syst_generate_pwd) && !$enable_syst_generate_pwd && $usertype!='GROUP') || $usertype =='PORTAL_ONLY') && empty($focus->id))
469         $sugar_smarty->assign('REQUIRED_PASSWORD','1');
470 else
471     $sugar_smarty->assign('REQUIRED_PASSWORD','0');
472
473 // If my account page or portal only user or regular user without system generated password or a duplicate user
474 if((($current_user->id == $focus->id) || $usertype=='PORTAL_ONLY' || (($usertype=='REGULAR' || $usertype == 'ADMIN' || (isset($_REQUEST['isDuplicate']) && $_REQUEST['isDuplicate'] == 'true' && $usertype!='GROUP')) && !$enable_syst_generate_pwd)) && !$focus->external_auth_only )
475    $sugar_smarty->assign('CHANGE_PWD', '1');
476 else
477    $sugar_smarty->assign('CHANGE_PWD', '0');
478
479 // Make sure group users don't get a password change prompt
480 if ( $usertype == 'GROUP' ) {
481     $sugar_smarty->assign('CHANGE_PWD', '0');
482 }
483
484 $configurator = new Configurator();
485 if ( isset($configurator->config['passwordsetting']) && ($configurator->config['passwordsetting']['SystemGeneratedPasswordON'] || $configurator->config['passwordsetting']['forgotpasswordON'])
486         && $usertype != 'GROUP' && $usertype != 'PORTAL_ONLY' )
487         $sugar_smarty->assign('REQUIRED_EMAIL_ADDRESS','1');
488 else
489         $sugar_smarty->assign('REQUIRED_EMAIL_ADDRESS','0');
490 if($usertype=='GROUP' || $usertype=='PORTAL_ONLY'){
491         $sugar_smarty->assign('HIDE_FOR_GROUP_AND_PORTAL', 'none');
492         $sugar_smarty->assign('HIDE_CHANGE_USERTYPE','none');}
493 else{
494         $sugar_smarty->assign('HIDE_FOR_NORMAL_AND_ADMIN','none');
495         if (!$is_current_admin)
496                 $sugar_smarty->assign('HIDE_CHANGE_USERTYPE','none');
497         else
498                 $sugar_smarty->assign('HIDE_STATIC_USERTYPE','none');
499         }
500
501 $sugar_smarty->assign('IS_FOCUS_ADMIN', is_admin($focus));
502
503 if($edit_self) {
504         $sugar_smarty->assign('EDIT_SELF','1');
505 }
506 if($admin_edit_self) {
507         $sugar_smarty->assign('ADMIN_EDIT_SELF','1');
508 }
509
510
511 if (isset($sugar_config['show_download_tab']))
512 {
513         $enable_download_tab = $sugar_config['show_download_tab'];
514 }else{
515         
516         $enable_download_tab = true;
517 }       
518
519 $sugar_smarty->assign('SHOW_DOWNLOADS_TAB', $enable_download_tab);
520         
521
522
523 /////////////////////////////////////////////
524 /// Handle email account selections for users
525 /////////////////////////////////////////////
526  $hide_if_can_use_default = true;
527 if( !($usertype=='GROUP' || $usertype=='PORTAL_ONLY') )
528 {
529     // email smtp
530     $systemOutboundEmail = new OutboundEmail();
531     $systemOutboundEmail = $systemOutboundEmail->getSystemMailerSettings();
532     $mail_smtpserver = $systemOutboundEmail->mail_smtpserver;
533     $mail_smtptype = $systemOutboundEmail->mail_smtptype;
534     $mail_smtpport = $systemOutboundEmail->mail_smtpport;
535     $mail_smtpssl = $systemOutboundEmail->mail_smtpssl;
536     $mail_smtpuser = "";
537     $mail_smtppass = "";
538     $mail_smtpdisplay = $systemOutboundEmail->mail_smtpdisplay;
539     $hide_if_can_use_default = true;
540     $mail_smtpauth_req=true;
541
542     if( !$systemOutboundEmail->isAllowUserAccessToSystemDefaultOutbound() )
543     {
544
545         $mail_smtpauth_req = $systemOutboundEmail->mail_smtpauth_req;
546         $userOverrideOE = $systemOutboundEmail->getUsersMailerForSystemOverride($current_user->id);
547         if($userOverrideOE != null) {
548
549             $mail_smtpuser = $userOverrideOE->mail_smtpuser;
550             $mail_smtppass = $userOverrideOE->mail_smtppass;
551
552         }
553
554
555         if(!$mail_smtpauth_req &&
556             ( empty($systemOutboundEmail->mail_smtpserver) || empty($systemOutboundEmail->mail_smtpuser)
557             || empty($systemOutboundEmail->mail_smtppass)))
558         {
559             $hide_if_can_use_default = true;
560         }
561         else{
562             $hide_if_can_use_default = false;
563         }
564     }
565
566     $sugar_smarty->assign("mail_smtpdisplay", $mail_smtpdisplay);
567     $sugar_smarty->assign("mail_smtpserver", $mail_smtpserver);
568     $sugar_smarty->assign("mail_smtpuser", $mail_smtpuser);
569     $sugar_smarty->assign("mail_smtppass", "");
570     $sugar_smarty->assign("mail_haspass", empty($systemOutboundEmail->mail_smtppass)?0:1);
571     $sugar_smarty->assign("mail_smtpauth_req", $mail_smtpauth_req);
572     $sugar_smarty->assign('MAIL_SMTPPORT',$mail_smtpport);
573     $sugar_smarty->assign('MAIL_SMTPSSL',$mail_smtpssl);
574 }
575 $sugar_smarty->assign('HIDE_IF_CAN_USE_DEFAULT_OUTBOUND',$hide_if_can_use_default );
576
577 $reports_to_change_button_html = '';
578
579 if($is_current_admin) {
580         //////////////////////////////////////
581         ///
582         /// SETUP USER POPUP
583
584         $reportsDisplayName = showFullName() ? 'name' : 'user_name';
585         $popup_request_data = array(
586                 'call_back_function' => 'set_return',
587                 'form_name' => 'EditView',
588                 'field_to_name_array' => array(
589                         'id' => 'reports_to_id',
590                         "$reportsDisplayName" => 'reports_to_name',
591                         ),
592                 );
593
594         $json = getJSONobj();
595         $encoded_popup_request_data = $json->encode($popup_request_data);
596         $sugar_smarty->assign('encoded_popup_request_data', $encoded_popup_request_data);
597
598         //
599         ///////////////////////////////////////
600
601         $reports_to_change_button_html = '<input type="button"'
602         . " title=\"{$app_strings['LBL_SELECT_BUTTON_TITLE']}\""
603         . " accesskey=\"{$app_strings['LBL_SELECT_BUTTON_KEY']}\""
604         . " value=\"{$app_strings['LBL_SELECT_BUTTON_LABEL']}\""
605         . ' tabindex="5" class="button" name="btn1"'
606         . " onclick='open_popup(\"Users\", 600, 400, \"\", true, false, {$encoded_popup_request_data});'"
607         . "' />";
608 } else {
609         $sugar_smarty->assign('IS_ADMIN_DISABLED', 'disabled="disabled"');
610 }
611 $sugar_smarty->assign('REPORTS_TO_CHANGE_BUTTON', $reports_to_change_button_html);
612
613 /* Module Tab Chooser */
614 require_once('include/templates/TemplateGroupChooser.php');
615 require_once('modules/MySettings/TabController.php');
616 $chooser = new TemplateGroupChooser();
617 $controller = new TabController();
618
619
620 if($is_current_admin || $controller->get_users_can_edit()) {
621         $chooser->display_hide_tabs = true;
622 } else {
623         $chooser->display_hide_tabs = false;
624 }
625
626 $chooser->args['id'] = 'edit_tabs';
627 $chooser->args['values_array'] = $controller->get_tabs($focus);
628 foreach($chooser->args['values_array'][0] as $key=>$value) {
629     $chooser->args['values_array'][0][$key] = $app_list_strings['moduleList'][$key];
630 }
631
632 foreach($chooser->args['values_array'][1] as $key=>$value) {
633     $chooser->args['values_array'][1][$key] = $app_list_strings['moduleList'][$key];
634 }
635
636 foreach($chooser->args['values_array'][2] as $key=>$value) {
637     $chooser->args['values_array'][2][$key] = $app_list_strings['moduleList'][$key];
638 }
639
640 $chooser->args['left_name'] = 'display_tabs';
641 $chooser->args['right_name'] = 'hide_tabs';
642
643 $chooser->args['left_label'] =  $mod_strings['LBL_DISPLAY_TABS'];
644 $chooser->args['right_label'] =  $mod_strings['LBL_HIDE_TABS'];
645 $chooser->args['title'] =  $mod_strings['LBL_EDIT_TABS'].' <img border="0" src="themes/default/images/helpInline.gif" onmouseover="return overlib(\'Choose which tabs are displayed.\', FGCLASS, \'olFgClass\', CGCLASS, \'olCgClass\', BGCLASS, \'olBgClass\', TEXTFONTCLASS, \'olFontClass\', CAPTIONFONTCLASS, \'olCapFontClass\', CLOSEFONTCLASS, \'olCloseFontClass\', WIDTH, -1, NOFOLLOW, \'ol_nofollow\' );" onmouseout="return nd();"/>';
646 $sugar_smarty->assign('TAB_CHOOSER', $chooser->display());
647 $sugar_smarty->assign('CHOOSER_SCRIPT','set_chooser();');
648 $sugar_smarty->assign('CHOOSE_WHICH', $mod_strings['LBL_CHOOSE_WHICH']);
649 ///////////////////////////////////////////////////////////////////////////////
650 ////    EMAIL OPTIONS
651 // We need to turn off the requiredness of emails if it is a group or portal user
652 if ($usertype == 'GROUP' || $usertype == 'PORTAL_ONLY' ) {
653     global $dictionary;
654     $dictionary['User']['fields']['email1']['required'] = false;
655 }
656 // hack to disable email field being required if it shouldn't be required
657 if ( $sugar_smarty->get_template_vars("REQUIRED_EMAIL_ADDRESS") == '0' )
658     $GLOBALS['dictionary']['User']['fields']['email1']['required'] = false;
659 $sugar_smarty->assign("NEW_EMAIL", getEmailAddressWidget($focus, "email1", $focus->email1, "EditView"));
660 // hack to undo that previous hack
661 if ( $sugar_smarty->get_template_vars("REQUIRED_EMAIL_ADDRESS") == '0' )
662     $GLOBALS['dictionary']['User']['fields']['email1']['required'] = true;
663 $sugar_smarty->assign('EMAIL_LINK_TYPE', get_select_options_with_id($app_list_strings['dom_email_link_type'], $focus->getPreference('email_link_type')));
664 /////   END EMAIL OPTIONS
665 ///////////////////////////////////////////////////////////////////////////////
666
667
668 if ($is_current_admin) {
669 $employee_status = '<select tabindex="5" name="employee_status">';
670 $employee_status .= get_select_options_with_id($app_list_strings['employee_status_dom'], $focus->employee_status);
671 $employee_status .= '</select>';
672 } else {
673         $employee_status = $focus->employee_status;
674 }
675 $sugar_smarty->assign('EMPLOYEE_STATUS_OPTIONS', $employee_status);
676 $sugar_smarty->assign('EMPLOYEE_STATUS_OPTIONS', $employee_status);
677
678 $messenger_type = '<select tabindex="5" name="messenger_type">';
679 $messenger_type .= get_select_options_with_id($app_list_strings['messenger_type_dom'], $focus->messenger_type);
680 $messenger_type .= '</select>';
681 $sugar_smarty->assign('MESSENGER_TYPE_OPTIONS', $messenger_type);
682 $sugar_smarty->assign('MESSENGER_ID', $focus->messenger_id);
683
684 $sugar_smarty->assign('CALENDAR_PUBLISH_KEY', $focus->getPreference('calendar_publish_key' ));
685 //$sugar_smarty->parse('main.freebusy');
686
687
688 $sugar_smarty->display('modules/Users/EditView.tpl');
689 $json = getJSONobj();
690
691 require_once('include/QuickSearchDefaults.php');
692 $qsd = new QuickSearchDefaults();
693 $sqs_objects = array('EditView_reports_to_name' => $qsd->getQSUser());
694 $sqs_objects['EditView_reports_to_name']['populate_list'] = array('reports_to_name', 'reports_to_id');
695
696
697 $quicksearch_js = '<script type="text/javascript" language="javascript">
698                     sqs_objects = ' . $json->encode($sqs_objects) . '; enableQS();</script>';
699 echo $quicksearch_js;
700
701 //echo $str;
702 //BUG #16298
703 ?>