diff --git a/include/utils/UserInfoUtil.php b/include/utils/UserInfoUtil.php index 2ce1811cc2c4d200d78e3cce48ab8814ec112da8..632e79778e048cfd512b512315b424c78a6657a0 100755 --- a/include/utils/UserInfoUtil.php +++ b/include/utils/UserInfoUtil.php @@ -1082,7 +1082,7 @@ function getRoleUsers($roleId) $roleRelatedUsers=Array(); for($i=0; $i<$num_rows; $i++) { - $roleRelatedUsers[$adb->query_result($result,$i,'userid')]=getFullNameFromQResult($result, $i, 'Users'); + $roleRelatedUsers[$adb->query_result($result,$i,'userid')]=$adb->query_result($result,$i,'userlabel'); } $log->debug("Exiting getRoleUsers method ..."); return $roleRelatedUsers; @@ -1302,14 +1302,14 @@ function getAllUserName() global $log; $log->debug("Entering getAllUserName() method ..."); global $adb; - $query="select * from vtiger_users where deleted=0"; + $query="select id, userlabel from vtiger_users where deleted=0"; $result = $adb->pquery($query, array()); $num_rows=$adb->num_rows($result); $user_details=Array(); for($i=0;$i<$num_rows;$i++) { $userid=$adb->query_result($result,$i,'id'); - $username=getFullNameFromQResult($result, $i, 'Users'); + $username=$adb->query_result($result,$i,'userlabel'); $user_details[$userid]=$username; } diff --git a/include/utils/utils.php b/include/utils/utils.php index a5a4e1b4afc5a9cae97a69f0c1d846f638b11bab..e1c93af892ba823fa64b3b4915351cddf075b78e 100755 --- a/include/utils/utils.php +++ b/include/utils/utils.php @@ -136,24 +136,24 @@ function get_user_array($add_blank=true, $status="Active", $assigned_user="",$pr $temp_result = Array(); // Including deleted vtiger_users for now. if (empty($status)) { - $query = "SELECT id, user_name from vtiger_users"; + $query = "SELECT id, user_name, userlabel from vtiger_users"; $params = array(); } else { if($private == 'private') { $log->debug("Sharing is Private. Only the current user should be listed"); - $query = "select id as id,user_name as user_name,first_name,last_name from vtiger_users where id=? and status='Active' union select vtiger_user2role.userid as id,vtiger_users.user_name as user_name , - vtiger_users.first_name as first_name ,vtiger_users.last_name as last_name + $query = "select id as id,user_name as user_name,first_name,last_name,userlabel from vtiger_users where id=? and status='Active' union select vtiger_user2role.userid as id,vtiger_users.user_name as user_name , + vtiger_users.first_name as first_name ,vtiger_users.last_name as last_name, vtiger_users.userlabel AS userlabel from vtiger_user2role inner join vtiger_users on vtiger_users.id=vtiger_user2role.userid inner join vtiger_role on vtiger_role.roleid=vtiger_user2role.roleid where vtiger_role.parentrole like ? and status='Active' union select shareduserid as id,vtiger_users.user_name as user_name , - vtiger_users.first_name as first_name ,vtiger_users.last_name as last_name from vtiger_tmp_write_user_sharing_per inner join vtiger_users on vtiger_users.id=vtiger_tmp_write_user_sharing_per.shareduserid where status='Active' and vtiger_tmp_write_user_sharing_per.userid=? and vtiger_tmp_write_user_sharing_per.tabid=? and (user_name != 'admin' OR is_owner=1)"; + vtiger_users.first_name as first_name ,vtiger_users.last_name as last_name,vtiger_users.userlabel AS userlabel from vtiger_tmp_write_user_sharing_per inner join vtiger_users on vtiger_users.id=vtiger_tmp_write_user_sharing_per.shareduserid where status='Active' and vtiger_tmp_write_user_sharing_per.userid=? and vtiger_tmp_write_user_sharing_per.tabid=? and (user_name != 'admin' OR is_owner=1)"; $params = array($current_user->id, $current_user_parent_role_seq."::%", $current_user->id, getTabid($module)); } else { $log->debug("Sharing is Public. All vtiger_users should be listed"); - $query = "SELECT id, user_name,first_name,last_name from vtiger_users WHERE status=? and (user_name != 'admin' OR is_owner=1)"; + $query = "SELECT id, user_name,first_name,last_name,userlabel from vtiger_users WHERE status=? and (user_name != 'admin' OR is_owner=1)"; $params = array($status); } } @@ -174,7 +174,7 @@ function get_user_array($add_blank=true, $status="Active", $assigned_user="",$pr // Get the id and the name. while($row = $db->fetchByAssoc($result)) { - $temp_result[$row['id']] = getFullNameFromArray('Users', $row); + $temp_result[$row['id']] = $row['userlabel']; } $user_array = &$temp_result; diff --git a/layouts/v7/modules/Vtiger/Header.tpl b/layouts/v7/modules/Vtiger/Header.tpl index f42113ed79d7bdf89799605fc82a1a59ffb87d02..707f6117481cdf2a0f85d23be636f5df715556c9 100644 --- a/layouts/v7/modules/Vtiger/Header.tpl +++ b/layouts/v7/modules/Vtiger/Header.tpl @@ -60,7 +60,7 @@ {if $CURRENT_USER_MODEL} _USERMETA = { 'id' : "{$CURRENT_USER_MODEL->get('id')}", 'menustatus' : "{$CURRENT_USER_MODEL->get('leftpanelhide')}", 'currency' : "{$USER_CURRENCY_SYMBOL}", 'currencySymbolPlacement' : "{$CURRENT_USER_MODEL->get('currency_symbol_placement')}", - 'currencyGroupingPattern' : "{$CURRENT_USER_MODEL->get('currency_grouping_pattern')}", 'truncateTrailingZeros' : "{$CURRENT_USER_MODEL->get('truncate_trailing_zeros')}"}; + 'currencyGroupingPattern' : "{$CURRENT_USER_MODEL->get('currency_grouping_pattern')}", 'truncateTrailingZeros' : "{$CURRENT_USER_MODEL->get('truncate_trailing_zeros')}",'userlabel':"{decode_html($CURRENT_USER_MODEL->get('userlabel'))}",}; {/if} </script> </head> diff --git a/layouts/v7/modules/Vtiger/partials/Topbar.tpl b/layouts/v7/modules/Vtiger/partials/Topbar.tpl index febd704847fcaed929f67a796629e7018ad2c70f..8ea4a0f2be380a8d11068e6c9369c3a2e1c20c1e 100644 --- a/layouts/v7/modules/Vtiger/partials/Topbar.tpl +++ b/layouts/v7/modules/Vtiger/partials/Topbar.tpl @@ -152,7 +152,7 @@ <li class="dropdown"> <div> <a href="#" class="userName dropdown-toggle pull-right" data-toggle="dropdown" role="button"> - <span class="fa fa-user" aria-hidden="true" title="{$USER_MODEL->get('first_name')} {$USER_MODEL->get('last_name')} + <span class="fa fa-user" aria-hidden="true" title="{$USER_MODEL->get('userlabel')} ({$USER_MODEL->get('user_name')})"></span> <span class="link-text-xs-only hidden-lg hidden-md hidden-sm">{$USER_MODEL->getName()}</span> </a> diff --git a/layouts/vlayout/modules/Emails/EmailPreviewPrint.tpl b/layouts/vlayout/modules/Emails/EmailPreviewPrint.tpl index f1c1d829031aeaba3c41a923c35c77dd26757594..dc75e49041880f00f0acce8fc69310461f85ebb1 100644 --- a/layouts/vlayout/modules/Emails/EmailPreviewPrint.tpl +++ b/layouts/vlayout/modules/Emails/EmailPreviewPrint.tpl @@ -20,7 +20,7 @@ {assign var="TO_EMAIL" value=$TO_EMAILS|replace:'[':''} {assign var="TO_EMAIL_VALUE" value=$TO_EMAIL|replace:'"':''} <span style="position:absolute;right:6%;top:3%;font-family:'Lucida Grande';font-size:15px"> - {$USER_MODEL->get('last_name')} {$USER_MODEL->get('first_name')} <{$USER_MODEL->get('email1')}> + {$USER_MODEL->get('userlabel')} <{$USER_MODEL->get('email1')}> </span><hr/> <span style="font-family:'Lucida Grande';font-size:15px"> {$RECORD->get('subject')} diff --git a/modules/Calendar/CalendarCommon.php b/modules/Calendar/CalendarCommon.php index cfecd4161fba2e0a6e0740ab8c8a25b28a9e83c1..93ea23f7eea69c46923fcf1ab544662976470903 100644 --- a/modules/Calendar/CalendarCommon.php +++ b/modules/Calendar/CalendarCommon.php @@ -225,12 +225,11 @@ function generateIcsAttachment($record) { $fileName = str_replace(' ', '_', decode_html($record['subject'])); $assignedUserId = $record['user_id']; $userModel = Users_Record_Model::getInstanceById($assignedUserId, 'Users'); - $firstName = $userModel->entity->column_fields['first_name']; - $lastName = $userModel->entity->column_fields['last_name']; + $userLabel = $userModel->entity->column_fields['userlabel']; $email = $userModel->entity->column_fields['email1']; $fp = fopen('test/upload/'.$fileName.'.ics', "w"); fwrite($fp, "BEGIN:VCALENDAR\nVERSION:2.0\nBEGIN:VEVENT\n"); - fwrite($fp, "ORGANIZER;CN=".$firstName." ".$lastName.":MAILTO:".$email."\n"); + fwrite($fp, "ORGANIZER;CN=".$userLabel.":MAILTO:".$email."\n"); fwrite($fp, "DTSTART:".date('Ymd\THis\Z', strtotime($record['st_date_time']))."\n"); fwrite($fp, "DTEND:".date('Ymd\THis\Z', strtotime($record['end_date_time']))."\n"); fwrite($fp, "DTSTAMP:".date('Ymd\THis\Z')."\n"); diff --git a/modules/Calendar/models/Module.php b/modules/Calendar/models/Module.php index adfd7ed18202e1c4030f2ce14c66174e2ac92f8f..8cccc7648df9028f2234a84b0892c9f6aa4efe10 100644 --- a/modules/Calendar/models/Module.php +++ b/modules/Calendar/models/Module.php @@ -305,11 +305,11 @@ class Calendar_Module_Model extends Vtiger_Module_Model { $db = PearDatabase::getInstance(); $currentUser = Users_Record_Model::getCurrentUserModel(); if($currentUser->isAdminUser()) { - $query = "SELECT first_name,last_name, id AS userid + $query = "SELECT userlabel, id AS userid FROM vtiger_users WHERE status='Active' AND (user_name != 'admin' OR is_owner = 1) AND id <> ?"; $result = $db->pquery($query, array($id)); } else { - $query = "SELECT vtiger_users.first_name,vtiger_users.last_name, vtiger_users.id AS userid + $query = "SELECT vtiger_users.userlabel, vtiger_users.id AS userid FROM vtiger_sharedcalendar RIGHT JOIN vtiger_users ON vtiger_sharedcalendar.userid=vtiger_users.id AND vtiger_users.status= 'Active' WHERE vtiger_sharedcalendar.sharedid=? OR (vtiger_users.status='Active' AND vtiger_users.calendarsharedtype='public' AND vtiger_users.id <> ?)"; $result = $db->pquery($query, array($id, $id)); @@ -319,7 +319,7 @@ class Calendar_Module_Model extends Vtiger_Module_Model { $userIds = Array(); for($i=0; $i<$rows; $i++){ $id = $db->query_result($result,$i,'userid'); - $userName = $db->query_result($result,$i,'first_name').' '.$db->query_result($result,$i,'last_name'); + $userName = $db->query_result($result,$i,'userlabel'); $userIds[$id] =$userName; } diff --git a/modules/CustomView/CustomView.php b/modules/CustomView/CustomView.php index d83ac066113a99cbcbbd94cb1029a52b336ddda5..9860ad30079b6287a557bc5dd302dc1c2914dec6 100644 --- a/modules/CustomView/CustomView.php +++ b/modules/CustomView/CustomView.php @@ -209,7 +209,7 @@ class CustomView extends CRMEntity { if ($markselected == false) $selected = ''; - $ssql = "select vtiger_customview.*, vtiger_users.first_name,vtiger_users.last_name from vtiger_customview inner join vtiger_tab on vtiger_tab.name = vtiger_customview.entitytype + $ssql = "select vtiger_customview.*, vtiger_users.first_name,vtiger_users.last_name,vtiger_users.userlabel from vtiger_customview inner join vtiger_tab on vtiger_tab.name = vtiger_customview.entitytype left join vtiger_users on vtiger_customview.userid = vtiger_users.id "; $ssql .= " where vtiger_tab.tabid=?"; $sparams = array($tabid); @@ -230,7 +230,7 @@ class CustomView extends CRMEntity { if ($cvrow['status'] == CV_STATUS_DEFAULT || $cvrow['userid'] == $current_user->id) { $disp_viewname = $viewname; } else { - $userName = getFullNameFromArray('Users', $cvrow); + $userName = $cvrow['userlabel']; $disp_viewname = $viewname . " [" . $userName . "] "; } diff --git a/modules/Emails/Emails.php b/modules/Emails/Emails.php index e05b9fa3d06f81b73e48ef4091a0dd45542e4ec9..1a552f8bd4f992229ba0c9a8c22052adaf5555af 100644 --- a/modules/Emails/Emails.php +++ b/modules/Emails/Emails.php @@ -380,7 +380,7 @@ class Emails extends CRMEntity { onclick=\"return window.open("index.php?module=Users&return_module=Emails&action=Popup&popuptype=detailview&select=enable&form=EditView&form_submit=true&return_id=' . $id . '&recordid=' . $id . '","test","width=640,height=520,resizable=0,scrollbars=0");\" type="button">'; - $query = 'SELECT vtiger_users.id, vtiger_users.first_name,vtiger_users.last_name, vtiger_users.user_name, vtiger_users.email1, vtiger_users.email2, vtiger_users.secondaryemail , vtiger_users.phone_home, vtiger_users.phone_work, vtiger_users.phone_mobile, vtiger_users.phone_other, vtiger_users.phone_fax from vtiger_users inner join vtiger_salesmanactivityrel on vtiger_salesmanactivityrel.smid=vtiger_users.id and vtiger_salesmanactivityrel.activityid=?'; + $query = 'SELECT vtiger_users.id, vtiger_users.first_name,vtiger_users.last_name, vtiger_users.user_name, vtiger_users.email1, vtiger_users.email2, vtiger_users.secondaryemail , vtiger_users.phone_home, vtiger_users.phone_work, vtiger_users.phone_mobile, vtiger_users.phone_other, vtiger_users.phone_fax,vtiger_users.userlabel from vtiger_users inner join vtiger_salesmanactivityrel on vtiger_salesmanactivityrel.smid=vtiger_users.id and vtiger_salesmanactivityrel.activityid=?'; $result = $adb->pquery($query, array($id)); $noofrows = $adb->num_rows($result); @@ -397,12 +397,7 @@ class Emails extends CRMEntity { $entries = Array(); - if (is_admin($current_user)) { - $entries[] = getFullNameFromArray('Users', $row); - } else { - $entries[] = getFullNameFromArray('Users', $row); - } - + $entries[] = $row['userlabel']; $entries[] = $row['user_name']; $entries[] = $row['email1']; if ($email == '') diff --git a/modules/Emails/mail.php b/modules/Emails/mail.php index 5824fbdb73ad5d59e5b18475d9e3e8e41065c909..58d9f5f6caa9fb1fa612f15e22a12987e3971d9f 100755 --- a/modules/Emails/mail.php +++ b/modules/Emails/mail.php @@ -153,11 +153,11 @@ function addSignature($contents, $fromname, $fromEmail = '') { $sign = VTCacheUtils::getUserSignature($fromname); if ($sign == null) { $sign = VTCacheUtils::getUserSignature($fromEmail); - $result = $adb->pquery("select signature, first_name, last_name from vtiger_users where user_name=? or user_name=? or email1=? or email2=? or secondaryemail=?", array($fromname, $fromEmail, $fromEmail, $fromEmail, $fromEmail)); + $result = $adb->pquery("select signature, userlabel from vtiger_users where user_name=? or user_name=? or email1=? or email2=? or secondaryemail=?", array($fromname, $fromEmail, $fromEmail, $fromEmail, $fromEmail)); $sign = $adb->query_result($result,0,"signature"); VTCacheUtils::setUserSignature($fromname, $sign); VTCacheUtils::setUserSignature($fromEmail, $sign); - VTCacheUtils::setUserFullName($fromname, $adb->query_result($result,0,"first_name").' '.$adb->query_result($result,0,"last_name")); + VTCacheUtils::setUserFullName($fromname, $adb->query_result($result,0,"userlabel")); } $sign = nl2br($sign); @@ -215,10 +215,10 @@ function setMailerProperties($mail,$subject,$contents,$from_email,$from_name,$to $userFullName = $HELPDESK_SUPPORT_NAME; } if(empty($userFullName)) { - $rs = $adb->pquery("select first_name,last_name from vtiger_users where user_name=?", array($from_name)); + $rs = $adb->pquery("select first_name,last_name,userlabel from vtiger_users where user_name=?", array($from_name)); $num_rows = $adb->num_rows($rs); if($num_rows > 0) { - $fullName = getFullNameFromQResult($rs, 0, 'Users'); + $fullName = $adb->query_result($rs, 0, 'userlabel'); VTCacheUtils::setUserFullName($from_name, $fullName); } } else { diff --git a/modules/HelpDesk/models/Module.php b/modules/HelpDesk/models/Module.php index e0b2c4acfad56cf225365c626216287bdc157833..1ba6037196d9b5a81ad68c5043a48a6e8e6ffd23 100644 --- a/modules/HelpDesk/models/Module.php +++ b/modules/HelpDesk/models/Module.php @@ -69,7 +69,7 @@ class HelpDesk_Module_Model extends Vtiger_Module_Model { if(in_array('Open', $picklistvaluesmap)) $params[] = 'Open'; if(count($params) > 0) { - $result = $db->pquery('SELECT count(*) AS count, COALESCE(vtiger_groups.groupname,concat(vtiger_users.first_name, " " ,vtiger_users.last_name)) as name, COALESCE(vtiger_groups.groupid,vtiger_users.id) as id FROM vtiger_troubletickets + $result = $db->pquery('SELECT count(*) AS count, COALESCE(vtiger_groups.groupname,vtiger_users.userlabel) as name, COALESCE(vtiger_groups.groupid,vtiger_users.id) as id FROM vtiger_troubletickets INNER JOIN vtiger_crmentity ON vtiger_troubletickets.ticketid = vtiger_crmentity.crmid LEFT JOIN vtiger_users ON vtiger_users.id=vtiger_crmentity.smownerid AND vtiger_users.status="ACTIVE" LEFT JOIN vtiger_groups ON vtiger_groups.groupid=vtiger_crmentity.smownerid diff --git a/modules/Migration/schema/730_to_740.php b/modules/Migration/schema/730_to_740.php index 4a0b367a12b62922088f3911c1674f10a3d68010..563270f25458b9dc5dc5404179556b6a343608e6 100644 --- a/modules/Migration/schema/730_to_740.php +++ b/modules/Migration/schema/730_to_740.php @@ -16,4 +16,36 @@ if (defined('VTIGER_UPGRADE')) { $className = 'Vtiger_RecordLabelUpdater_Handler'; $eventManager->unregisterHandler($className); echo "Unregistered record label update handler.<br>"; + + $moduleName = 'Users'; + $moduleModel = Vtiger_Module_Model::getInstance($moduleName); + $fieldName = 'userlabel'; + $blockModel = Vtiger_Block_Model::getInstance('LBL_MORE_INFORMATION', $moduleModel); + if ($blockModel) { + $fieldModel = Vtiger_Field_Model::getInstance($fieldName, $moduleModel); + if (!$fieldModel) { + $fieldModel = new Vtiger_Field(); + $fieldModel->name = $fieldName; + $fieldModel->label = 'User Label'; + $fieldModel->table = 'vtiger_users'; + $fieldModel->columntype = 'VARCHAR(255)'; + $fieldModel->typeofdata = 'V~O'; + $fieldModel->displaytype= 3; + $blockModel->addField($fieldModel); + echo "<br>Successfully added <b>$fieldName</b> field to <b>$moduleName</b><br>"; + } + } + $db->pquery("UPDATE vtiger_users SET $fieldName=TRIM(CONCAT(first_name, ' ' , last_name))", array()); + echo "<br>Successfully updated <b>$fieldName</b> value as concatenate of firstname and lastname for <b>$moduleName</b> module<br>"; + + vimport('~modules/Users/CreateUserPrivilegeFile.php'); + $result = $db->pquery('SELECT id FROM vtiger_users', array()); + $count = $db->num_rows($result); + while ($row = $db->fetch_array($result)) { + $userId = $row['id']; + createUserPrivilegesfile($userId); + echo "<br>Successfully recreated <b>User's privileges</b> file for id:<b>$userId</b><br>"; + } + echo "<br>Successfully completed concatenate of firstname and lastname as label in <b>$moduleName</b> module<br>"; + } \ No newline at end of file diff --git a/modules/Potentials/models/Module.php b/modules/Potentials/models/Module.php index bb6a9a7a342bc4e0214120d1085187c3424dc2b7..cc90a4899688ce31c7bac35925c3c5cfd84a7231 100644 --- a/modules/Potentials/models/Module.php +++ b/modules/Potentials/models/Module.php @@ -99,7 +99,7 @@ class Potentials_Module_Model extends Vtiger_Module_Model { $params[] = $picklistValue; } - $result = $db->pquery('SELECT COUNT(*) AS count, concat(first_name," ",last_name) as last_name, vtiger_potential.sales_stage, vtiger_groups.groupname FROM vtiger_potential + $result = $db->pquery('SELECT COUNT(*) AS count, vtiger_users.userlabel as last_name, vtiger_potential.sales_stage, vtiger_groups.groupname FROM vtiger_potential INNER JOIN vtiger_crmentity ON vtiger_potential.potentialid = vtiger_crmentity.crmid AND vtiger_crmentity.deleted = 0 LEFT JOIN vtiger_users ON vtiger_users.id=vtiger_crmentity.smownerid AND vtiger_users.status="ACTIVE" LEFT JOIN vtiger_groups ON vtiger_groups.groupid=vtiger_crmentity.smownerid'.Users_Privileges_Model::getNonAdminAccessControlQuery($this->getName()).' @@ -134,7 +134,7 @@ class Potentials_Module_Model extends Vtiger_Module_Model { unset($picklistvaluesmap['Closed Won']);unset($picklistvaluesmap['Closed Lost']); foreach($picklistvaluesmap as $picklistValue) $params[] = $picklistValue; - $result = $db->pquery('SELECT sum(amount) AS amount, concat(first_name," ",last_name) as last_name, vtiger_potential.sales_stage FROM vtiger_potential + $result = $db->pquery('SELECT sum(amount) AS amount, vtiger_users.userlabel as last_name, vtiger_potential.sales_stage FROM vtiger_potential INNER JOIN vtiger_crmentity ON vtiger_potential.potentialid = vtiger_crmentity.crmid INNER JOIN vtiger_users ON vtiger_users.id=vtiger_crmentity.smownerid AND vtiger_users.status="ACTIVE" AND vtiger_crmentity.deleted = 0 '.Users_Privileges_Model::getNonAdminAccessControlQuery($this->getName()). @@ -168,7 +168,7 @@ class Potentials_Module_Model extends Vtiger_Module_Model { $params[] = $dateFilter['end']; } - $result = $db->pquery('SELECT sum(amount) amount, concat(first_name," ",last_name) as last_name,vtiger_users.id as id,DATE_FORMAT(closingdate, "%d-%m-%Y") AS closingdate FROM vtiger_potential + $result = $db->pquery('SELECT sum(amount) amount, vtiger_users.userlabel as last_name,vtiger_users.id as id,DATE_FORMAT(closingdate, "%d-%m-%Y") AS closingdate FROM vtiger_potential INNER JOIN vtiger_crmentity ON vtiger_potential.potentialid = vtiger_crmentity.crmid INNER JOIN vtiger_users ON vtiger_users.id=vtiger_crmentity.smownerid AND vtiger_users.status="ACTIVE" AND vtiger_crmentity.deleted = 0 '.Users_Privileges_Model::getNonAdminAccessControlQuery($this->getName()).'WHERE sales_stage = ? '.' '.$dateFilterSql.' GROUP BY smownerid', $params); diff --git a/modules/Reports/models/ListView.php b/modules/Reports/models/ListView.php index 6bcfb4aef0abeabc226c08002aec6f21fb3480e4..f1557fa0032d361a25aafc5ea5edd4ae8e58b2b6 100644 --- a/modules/Reports/models/ListView.php +++ b/modules/Reports/models/ListView.php @@ -100,7 +100,7 @@ class Reports_ListView_Model extends Vtiger_ListView_Model { if (!empty($orderBy) && $orderBy === 'smownerid') { $fieldModel = Vtiger_Field_Model::getInstance('assigned_user_id', $moduleModel); if ($fieldModel->getFieldDataType() == 'owner') { - $orderBy = 'COALESCE(CONCAT(vtiger_users.first_name,vtiger_users.last_name),vtiger_groups.groupname)'; + $orderBy = 'COALESCE(vtiger_users.userlabel,vtiger_groups.groupname)'; } } if(!empty($orderBy)) { diff --git a/modules/Settings/Groups/models/Member.php b/modules/Settings/Groups/models/Member.php index bcc72c1e075e9e9b42f71449a280fe804155af6a..9a3dc90fe1a25c4b917d2d87bfbc6c0c2e83a8ce 100644 --- a/modules/Settings/Groups/models/Member.php +++ b/modules/Settings/Groups/models/Member.php @@ -102,7 +102,7 @@ class Settings_Groups_Member_Model extends Vtiger_Base_Model { $tableName = $tables[self::MEMBER_TYPE_USERS]['table']; $tableIndex = $tables[self::MEMBER_TYPE_USERS]['index']; $refIndex = $tables[self::MEMBER_TYPE_USERS]['refIndex']; - $sql = "SELECT vtiger_users.id, vtiger_users.last_name, vtiger_users.first_name FROM vtiger_users + $sql = "SELECT vtiger_users.id, vtiger_users.last_name, vtiger_users.first_name, vtiger_users.userlabel FROM vtiger_users INNER JOIN $tableName ON $tableName.$refIndex = vtiger_users.id WHERE $tableName.$tableIndex = ?"; $params = array($groupModel->getId()); @@ -113,7 +113,7 @@ class Settings_Groups_Member_Model extends Vtiger_Base_Model { $row = $db->query_result_rowdata($result, $i); $userId = $row['id']; $qualifiedId = self::getQualifiedId(self::MEMBER_TYPE_USERS, $userId); - $name = getFullNameFromArray('Users', $row); + $name = $row['userlabel']; $member = new self(); $members[$qualifiedId] = $member->set('id', $qualifiedId)->set('name', $name)->set('userId', $userId); } diff --git a/modules/Settings/Vtiger/models/ListView.php b/modules/Settings/Vtiger/models/ListView.php index 1e944f10c12bcfb9408ad44043befb162c0daa67..0ffe2428a446c98ec83432c24afc95a06a60557b 100644 --- a/modules/Settings/Vtiger/models/ListView.php +++ b/modules/Settings/Vtiger/models/ListView.php @@ -72,7 +72,7 @@ class Settings_Vtiger_ListView_Model extends Vtiger_Base_Model { if (!empty($orderBy) && $orderBy === 'smownerid') { $fieldModel = Vtiger_Field_Model::getInstance('assigned_user_id', $moduleModel); if ($fieldModel->getFieldDataType() == 'owner') { - $orderBy = 'COALESCE(CONCAT(vtiger_users.first_name,vtiger_users.last_name),vtiger_groups.groupname)'; + $orderBy = 'COALESCE(vtiger_users.userlabel,vtiger_groups.groupname)'; } } if (!empty($orderBy)) { diff --git a/modules/Users/Users.php b/modules/Users/Users.php index 6c024b967b63c8567bdb775120487fdcf970f5f1..232ad18e8d0ad3a9826d1db9896dd17ccc87d7cd 100755 --- a/modules/Users/Users.php +++ b/modules/Users/Users.php @@ -112,7 +112,7 @@ class Users extends CRMEntity { ); //Default Fields for Email Templates -- Pavani - var $emailTemplate_defaultFields = array('first_name','last_name','title','department','phone_home','phone_mobile','signature','email1','email2','address_street','address_city','address_state','address_country','address_postalcode'); + var $emailTemplate_defaultFields = array('first_name','last_name','userlabel','title','department','phone_home','phone_mobile','signature','email1','email2','address_street','address_city','address_state','address_country','address_postalcode'); var $popup_fields = array('last_name'); @@ -621,14 +621,14 @@ class Users extends CRMEntity { } function fill_in_additional_detail_fields() { - $query = "SELECT u1.first_name, u1.last_name from vtiger_users u1, vtiger_users u2 where u1.id = u2.reports_to_id AND u2.id = ? and u1.deleted=0"; + $query = "SELECT u1.first_name, u1.last_name, u1.userlabel from vtiger_users u1, vtiger_users u2 where u1.id = u2.reports_to_id AND u2.id = ? and u1.deleted=0"; $result =$this->db->pquery($query, array($this->id), true, "Error filling in additional detail vtiger_fields") ; $row = $this->db->fetchByAssoc($result); $this->log->debug("additional detail query results: $row"); if($row != null) { - $this->reports_to_name = stripslashes(getFullNameFromArray('Users', $row)); + $this->reports_to_name = stripslashes($row['userlabel']); } else { $this->reports_to_name = ''; @@ -768,6 +768,20 @@ class Users extends CRMEntity { // We will set the crypt_type based on the insertion_mode $crypt_type = ''; + // userlabel is a field. So, setting to column_fields will take care for update and insert as well + if($table_name == 'vtiger_users') { + $entityFields = Vtiger_Functions::getEntityModuleInfo($module); + $entityFieldNames = explode(',', $entityFields['fieldname']); + + $userlabel = ''; + foreach($entityFieldNames as $entityFieldName) { + $userlabel .= $this->column_fields[$entityFieldName]." "; + } + $userlabel = trim(decode_html($userlabel)); + + $this->column_fields['userlabel'] = strip_tags($userlabel); + } + if($insertion_mode == 'edit') { $update = ''; $update_params = array(); @@ -1795,7 +1809,7 @@ class Users extends CRMEntity { $reportsTo = null; foreach($allUsers as $user) { $userName = strtolower($user->get('user_name')); - $firstLastName = strtolower($user->get('first_name')." ".$user->get('last_name')); + $firstLastName = strtolower($user->get('userlabel')); if(strtolower($fieldValue) == $userName || strtolower($fieldValue) == $firstLastName) { $reportsTo = $user->getId(); break; diff --git a/modules/Users/models/Module.php b/modules/Users/models/Module.php index f875d3c5024d4feae09f2bc8367c9c485e341ed7..617a61528071c3173798b1f187304d45ea501a34 100644 --- a/modules/Users/models/Module.php +++ b/modules/Users/models/Module.php @@ -46,7 +46,7 @@ class Users_Module_Model extends Vtiger_Module_Model { if(!empty($searchValue)) { $db = PearDatabase::getInstance(); - $query = 'SELECT * FROM vtiger_users WHERE (first_name LIKE ? OR last_name LIKE ?) AND status = ?'; + $query = 'SELECT * FROM vtiger_users WHERE userlabel LIKE ? AND status = ?'; $currentUser = Users_Record_Model::getCurrentUserModel(); $allSubordinates = $currentUser->getAllSubordinatesByReportsToField($currentUser->getId()); $params = array("%$searchValue%", "%$searchValue%", 'Active'); diff --git a/modules/Users/models/Record.php b/modules/Users/models/Record.php index 206b8aac48a07bbea5c097cb9049585292f4e989..b6a0c43c692bcef3638059411d8c76c9ad1e9a3b 100644 --- a/modules/Users/models/Record.php +++ b/modules/Users/models/Record.php @@ -275,7 +275,7 @@ class Users_Record_Model extends Vtiger_Record_Model { if($subordinateRoleUsers) { foreach($subordinateRoleUsers as $role=>$users) { foreach($users as $user) { - $subordinateUsers[$user] = $privilegesModel->get('first_name').' '.$privilegesModel->get('last_name'); + $subordinateUsers[$user] = $privilegesModel->get('userlabel'); } } } @@ -458,7 +458,7 @@ class Users_Record_Model extends Vtiger_Record_Model { $currentUserRoleModel = Settings_Roles_Record_Model::getInstanceById($this->getRole()); $childernRoles = $currentUserRoleModel->getAllChildren(); $users = $this->getAllUsersOnRoles($childernRoles); - $currentUserDetail = array($this->getId() => $this->get('first_name').' '.$this->get('last_name')); + $currentUserDetail = array($this->getId() => $this->get('userlabel')); $users = $currentUserDetail + $users; return $users; } @@ -488,14 +488,12 @@ class Users_Record_Model extends Vtiger_Record_Model { for($i=0; $i<$noOfUsers; ++$i) { $userIds[] = $db->query_result($result, $i, 'userid'); } - $query = 'SELECT id, first_name, last_name FROM vtiger_users WHERE status = ? AND id IN ('. generateQuestionMarks($userIds).')'; + $query = 'SELECT id, userlabel FROM vtiger_users WHERE status = ? AND id IN ('. generateQuestionMarks($userIds).')'; $result = $db->pquery($query, array('ACTIVE', $userIds)); $noOfUsers = $db->num_rows($result); for($j=0; $j<$noOfUsers; ++$j) { $userId = $db->query_result($result, $j,'id'); - $firstName = $db->query_result($result, $j, 'first_name'); - $lastName = $db->query_result($result, $j, 'last_name'); - $subUsers[$userId] = $firstName .' '.$lastName; + $subUsers[$userId] = $db->query_result($result, $j, 'userlabel'); } } return $subUsers; @@ -807,7 +805,12 @@ class Users_Record_Model extends Vtiger_Record_Model { * @return <String> - Entity Display Name for the record */ public function getDisplayName() { - return getFullNameFromArray($this->getModuleName(),$this->getData()); + $userLabel = $this->get('userlabel'); + + if (!$userLabel) { + $userLabel = getFullNameFromArray($this->getModuleName(),$this->getData()); + } + return $userLabel; } /** diff --git a/modules/Vtiger/models/RelationListView.php b/modules/Vtiger/models/RelationListView.php index 74e829bec76437437709147fcc5797b477078712..d09fc9d2853a600a919452a2aba974deb8cad382 100644 --- a/modules/Vtiger/models/RelationListView.php +++ b/modules/Vtiger/models/RelationListView.php @@ -318,7 +318,7 @@ class Vtiger_RelationListView_Model extends Vtiger_Base_Model { $query = $selectAndFromClause.' WHERE '.$whereCondition; $query .= ' ORDER BY '.$qualifiedOrderBy.'.label '.$sortOrder; } elseif($orderByFieldModuleModel && $orderByFieldModuleModel->isOwnerField()) { - $query .= ' ORDER BY COALESCE(CONCAT(vtiger_users.first_name,vtiger_users.last_name),vtiger_groups.groupname) '.$sortOrder; + $query .= ' ORDER BY COALESCE(vtiger_users.userlabel,vtiger_groups.groupname) '.$sortOrder; } else{ // Qualify the the column name with table to remove ambugity $qualifiedOrderBy = $orderBy; diff --git a/modules/Vtiger/uitypes/Reference.php b/modules/Vtiger/uitypes/Reference.php index 3ac8f7e77494f1eaa18a0ebd3a7cb288fbdc94a7..2769a45538a146f81e2e7e45f613f42c03e5a84f 100644 --- a/modules/Vtiger/uitypes/Reference.php +++ b/modules/Vtiger/uitypes/Reference.php @@ -46,9 +46,9 @@ class Vtiger_Reference_UIType extends Vtiger_Base_UIType { $referenceModuleName = $referenceModule->get('name'); if($referenceModuleName == 'Users') { $db = PearDatabase::getInstance(); - $nameResult = $db->pquery('SELECT first_name, last_name FROM vtiger_users WHERE id = ?', array($value)); + $nameResult = $db->pquery('SELECT userlabel FROM vtiger_users WHERE id = ?', array($value)); if($db->num_rows($nameResult)) { - return $db->query_result($nameResult, 0, 'first_name').' '.$db->query_result($nameResult, 0, 'last_name'); + return $db->query_result($nameResult, 0, 'userlabel'); } } else { $fieldModel = $this->get('field'); diff --git a/modules/com_vtiger_workflow/tasks/VTEmailTask.inc b/modules/com_vtiger_workflow/tasks/VTEmailTask.inc index cc8b6eb5c4b5d4ed82535567b95ce06a9f7798c1..ff514b2d511ccbd9d30b73cb7963246241db00a1 100644 --- a/modules/com_vtiger_workflow/tasks/VTEmailTask.inc +++ b/modules/com_vtiger_workflow/tasks/VTEmailTask.inc @@ -256,11 +256,11 @@ class VTEmailTask extends VTTask{ } else { if ($userObj) { $fromEmail = $userObj->email1; - $fromName = trim($userObj->first_name.' '.$userObj->last_name); + $fromName = $userObj->userlabel; } else { $fromEmail = $this->getDefaultFromEmail(); $userObj = Users::getActiveAdminUser(); - $fromName = trim($userObj->first_name.' '.$userObj->last_name); + $fromName = $userObj->userlabel; } } diff --git a/pkg/vtiger/modules/Import/modules/Import/actions/Data.php b/pkg/vtiger/modules/Import/modules/Import/actions/Data.php index 5e0e36a0965a1fb656cef858d5b7f9335295c0cc..718a828e58dbebadeb1cd1ca03c32269412baf74 100644 --- a/pkg/vtiger/modules/Import/modules/Import/actions/Data.php +++ b/pkg/vtiger/modules/Import/modules/Import/actions/Data.php @@ -896,7 +896,7 @@ class Import_Data_Action extends Vtiger_Action_Controller { $emailData = getTranslatedString('LBL_IMPORT_COMPLETED', 'Import').' '.$importResult.getTranslatedString('LBL_CHECK_IMPORT_STATUS', 'Import'); - $userName = getFullNameFromArray('Users', $importDataController->user->column_fields); + $userName = $importDataController->user->column_fields['userlabel']; $userEmail = $importDataController->user->email1; $vtigerMailer->AddAddress($userEmail, $userName); $vtigerMailer->Subject = $emailSubject; diff --git a/pkg/vtiger/modules/MailManager/modules/MailManager/views/Mail.php b/pkg/vtiger/modules/MailManager/modules/MailManager/views/Mail.php index 7d03ebff4cc62ac61393f14a575f7c473c66ece4..996f53ff1c8b3498fd3e8c385922d2c325ea877c 100755 --- a/pkg/vtiger/modules/MailManager/modules/MailManager/views/Mail.php +++ b/pkg/vtiger/modules/MailManager/modules/MailManager/views/Mail.php @@ -164,7 +164,7 @@ class MailManager_Mail_View extends MailManager_Abstract_View { } $fromEmail = $connector->getFromEmailAddress(); - $userFullName = getFullNameFromArray('Users', $currentUserModel->getData()); + $userFullName = $currentUserModel->get('userlabel'); $userId = $currentUserModel->getId(); $mailer = new Vtiger_Mailer(); diff --git a/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/FetchModuleOwners.php b/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/FetchModuleOwners.php index 381a9b41863e5942271a87d1784f181db25cc993..2d0a8800087eff2124af6fb19f5be2d19c3cc9a0 100644 --- a/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/FetchModuleOwners.php +++ b/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/FetchModuleOwners.php @@ -38,7 +38,7 @@ class Mobile_WS_FetchModuleOwners extends Mobile_WS_Controller { $userRecord = Users_Record_Model::getInstanceById($userId, 'Users'); $usersList[] = array( 'value' => $usersWSId . 'x' . $userId, - 'label' => decode_html($userRecord->get("first_name") . ' ' . $userRecord->get('last_name')) + 'label' => decode_html($userRecord->get("userlabel")) ); } return $usersList; diff --git a/vtlib/Vtiger/Deprecated.php b/vtlib/Vtiger/Deprecated.php index 7a5288679a7f44f0d6ea6841a1b72423e20746a9..a23a02a49264d560d6463a3ed1bdcad09cc63cb6 100644 --- a/vtlib/Vtiger/Deprecated.php +++ b/vtlib/Vtiger/Deprecated.php @@ -544,6 +544,23 @@ class Vtiger_Deprecated { } static function getSqlForNameInDisplayFormat($input, $module, $glue = ' ') { + if ($module == 'Users') { + if (is_string($input)) { + $input = array($input); + } + + $tableName = ''; + foreach ($input as $fieldTableColumn) { + if ($fieldTableColumn) { + list($tableName, $columnName) = explode('.', $fieldTableColumn); + break; + } + } + if ($tableName) { + return "$tableName.userlabel"; + } + } + $entity_field_info = Vtiger_Functions::getEntityModuleInfoFieldsFormatted($module); $fieldsName = $entity_field_info['fieldname']; if(is_array($fieldsName)) {