]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - include/generic/SugarWidgets/SugarWidgetFieldenum.php
Release 6.1.5
[Github/sugarcrm.git] / include / generic / SugarWidgets / SugarWidgetFieldenum.php
1 <?php
2 if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
3 /*********************************************************************************
4  * SugarCRM is a customer relationship management program developed by
5  * SugarCRM, Inc. Copyright (C) 2004-2011 SugarCRM Inc.
6  * 
7  * This program is free software; you can redistribute it and/or modify it under
8  * the terms of the GNU Affero General Public License version 3 as published by the
9  * Free Software Foundation with the addition of the following permission added
10  * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
11  * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
12  * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
13  * 
14  * This program is distributed in the hope that it will be useful, but WITHOUT
15  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16  * FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
17  * details.
18  * 
19  * You should have received a copy of the GNU Affero General Public License along with
20  * this program; if not, see http://www.gnu.org/licenses or write to the Free
21  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
22  * 02110-1301 USA.
23  * 
24  * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
25  * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
26  * 
27  * The interactive user interfaces in modified source and object code versions
28  * of this program must display Appropriate Legal Notices, as required under
29  * Section 5 of the GNU Affero General Public License version 3.
30  * 
31  * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
32  * these Appropriate Legal Notices must retain the display of the "Powered by
33  * SugarCRM" logo. If the display of the logo is not reasonably feasible for
34  * technical reasons, the Appropriate Legal Notices must display the words
35  * "Powered by SugarCRM".
36  ********************************************************************************/
37
38
39 class SugarWidgetFieldEnum extends SugarWidgetReportField {
40
41     function SugarWidgetFieldEnum(&$layout_manager) {
42         parent::SugarWidgetReportField($layout_manager);
43         $this->reporter = $this->layout_manager->getAttribute('reporter');  
44     }
45         
46         function queryFilterEmpty(&$layout_def)
47         {
48         if( $this->reporter->db->dbType == 'mysql') {
49                         return '( '.$this->_get_column_select($layout_def).' IS NULL'.
50                                  ' OR '.$this->_get_column_select($layout_def)." = ''".
51                                  ' OR '.$this->_get_column_select($layout_def)." = '^^' )\n";
52         }               
53         elseif( $this->reporter->db->dbType == 'mssql') {
54                         return '( '.$this->_get_column_select($layout_def).' IS NULL'.
55                                  ' OR '.$this->_get_column_select($layout_def)." LIKE ''".
56                                  ' OR '.$this->_get_column_select($layout_def)." = '^^' )\n";
57         }
58         }
59
60          function queryFilterNot_Empty(&$layout_def)
61          {
62             $reporter = $this->layout_manager->getAttribute("reporter");
63         if( $this->reporter->db->dbType == 'mysql') {
64                         return '( '.$this->_get_column_select($layout_def).' IS NOT NULL'.
65                                 ' AND '.$this->_get_column_select($layout_def)." <> ''".
66                                 ' AND '.$this->_get_column_select($layout_def)." != '^^' )\n";
67         }
68         else if( $this->reporter->db->dbType == 'mssql') {
69                         return '( '.$this->_get_column_select($layout_def).' IS NOT NULL'.
70                                 ' AND '.$this->_get_column_select($layout_def)." != '^^' )\n";
71         }
72          }
73         
74             
75         function queryFilteris(& $layout_def) {
76                 $input_name0 = $layout_def['input_name0'];
77                 if (is_array($layout_def['input_name0'])) {
78                         $input_name0 = $layout_def['input_name0'][0];
79                 }
80                 return $this->_get_column_select($layout_def)." = '".$GLOBALS['db']->quote($input_name0)."'\n";
81         }
82         
83         function queryFilteris_not(& $layout_def) {
84                 $input_name0 = $layout_def['input_name0'];
85                 if (is_array($layout_def['input_name0'])) {
86                         $input_name0 = $layout_def['input_name0'][0];
87                 }
88                 return $this->_get_column_select($layout_def)." <> '".$GLOBALS['db']->quote($input_name0)."'\n";
89         }
90
91         function queryFilterone_of(& $layout_def) {
92                 $arr = array ();
93                 foreach ($layout_def['input_name0'] as $value) {
94                         $arr[] = "'".$GLOBALS['db']->quote($value)."'";
95                 }
96             $reporter = $this->layout_manager->getAttribute("reporter");
97                 $str = implode(",", $arr);
98                 return $this->_get_column_select($layout_def)." IN (".$str.")\n";
99         }
100
101         function queryFilternot_one_of(& $layout_def) {
102                 $arr = array ();
103                 foreach ($layout_def['input_name0'] as $value) {
104                         $arr[] = "'".$GLOBALS['db']->quote($value)."'";
105                 }
106             $reporter = $this->layout_manager->getAttribute("reporter");
107                 $str = implode(",", $arr);
108                 return $this->_get_column_select($layout_def)." NOT IN (".$str.")\n";
109         }
110
111
112         function & displayListPlain($layout_def) {
113                 if(!empty($layout_def['column_key'])){
114                         $field_def = $this->reporter->all_fields[$layout_def['column_key']];    
115                 }else if(!empty($layout_def['fields'])){
116                         $field_def = $layout_def['fields'];
117                 }
118                 
119                 if (!empty($layout_def['table_key'] ) &&( empty ($field_def['fields']) || empty ($field_def['fields'][0]) || empty ($field_def['fields'][1]))){
120                         $value = $this->_get_list_value($layout_def);
121                 }else if(!empty($layout_def['name']) && !empty($layout_def['fields'])){
122                         $key = strtoupper($layout_def['name']);
123                         $value = $layout_def['fields'][$key];
124                 }
125                 $cell = '';
126
127                         if(isset($field_def['options'])){
128                                 $cell = translate($field_def['options'], $field_def['module'], $value);
129                         }else if(isset($field_def['type']) && $field_def['type'] == 'enum' && isset($field_def['function'])){
130                     global $beanFiles;
131                     if(empty($beanFiles)) {
132                         include('include/modules.php');
133                     }
134                     $bean_name = get_singular_bean_name($field_def['module']);
135                     require_once($beanFiles[$bean_name]);
136                     $list = $field_def['function']();
137                     $cell = $list[$value];
138                 }
139                 if (is_array($cell)) {
140                         
141                         //#22632  
142                         $value = unencodeMultienum($value);
143                         $cell=array();
144                         foreach($value as $val){
145                                 $returnVal = translate($field_def['options'],$field_def['module'],$val);
146                                 if(!is_array($returnVal)){
147                                         array_push( $cell, translate($field_def['options'],$field_def['module'],$val));
148                                 }
149                         }
150                         $cell = implode(", ",$cell);
151                 }
152                 return $cell;
153         }
154
155
156         function & queryOrderBy($layout_def) {
157                 $field_def = $this->reporter->all_fields[$layout_def['column_key']];
158                 if (!empty ($field_def['sort_on'])) {
159                         $order_by = $layout_def['table_alias'].".".$field_def['sort_on'];
160                 } else {
161                                 $order_by = $this->_get_column_select($layout_def);
162                 }
163                 $list = array();
164         if(isset($field_def['options']))
165                 $list = translate($field_def['options'], $field_def['module']);
166         else if(isset($field_def['type']) && $field_def['type'] == 'enum' && isset($field_def['function']))
167         {
168                 global $beanFiles;
169                     if(empty($beanFiles)) {
170                         include('include/modules.php');
171                     }
172                     $bean_name = get_singular_bean_name($field_def['module']);
173                     require_once($beanFiles[$bean_name]);
174             $list = $field_def['function']();
175         }
176                 $order_by_arr = array ();
177
178                         if (empty ($layout_def['sort_dir']) || $layout_def['sort_dir'] == 'a') {
179                                 $order_dir = " DESC";
180                         } else {
181                                 $order_dir = " ASC";
182                         }
183
184                         foreach ($list as $key => $value) {
185                                 if ($key == '') {
186                                         array_push($order_by_arr, "(".$order_by."='".$key."' OR ".$order_by." IS NULL)" . " $order_dir\n");
187                                 } else {
188                                     array_push($order_by_arr, $order_by."='".$key."' $order_dir\n");
189                                 }
190                         }
191                         $thisarr = implode(',', $order_by_arr);
192                         return $thisarr;
193
194     }
195     
196     function displayInput(&$layout_def) {
197         global $app_list_strings;
198
199         if(!empty($layout_def['remove_blank']) && $layout_def['remove_blank']) {
200             if ( isset($layout_def['options']) &&  is_array($layout_def['options']) ) {
201                 $ops = $layout_def['options'];
202             }
203             elseif (isset($layout_def['options']) && isset($app_list_strings[$layout_def['options']])){ 
204                 $ops = $app_list_strings[$layout_def['options']];
205                 if(array_key_exists('', $app_list_strings[$layout_def['options']])) {
206                    unset($ops['']);
207                     }
208             } 
209             else{
210                 $ops = array();
211             }
212         }
213         else {
214             $ops = $app_list_strings[$layout_def['options']];
215         }
216         
217         $str = '<select multiple="true" size="3" name="' . $layout_def['name'] . '[]">';
218         $str .= get_select_options_with_id($ops, $layout_def['input_name0']);
219         $str .= '</select>';
220         return $str;
221     }
222 }
223 ?>
224