Test Failed
Push — CI ( 0f01dd...c95a04 )
by Adam
55:13
created
include/SubPanel/SubPanelSearchDisplay.php 1 patch
Indentation   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -46,12 +46,12 @@  discard block
 block discarded – undo
46 46
 
47 47
 if(empty($_REQUEST['module']))
48 48
 {
49
-	die("'module' was not defined");
49
+    die("'module' was not defined");
50 50
 }
51 51
 
52 52
 if(!isset($beanList[$_REQUEST['module']]))
53 53
 {
54
-	die("'".$_REQUEST['module']."' is not defined in \$beanList");
54
+    die("'".$_REQUEST['module']."' is not defined in \$beanList");
55 55
 }
56 56
 
57 57
 if (!isset($_REQUEST['subpanel'])) {
@@ -67,7 +67,7 @@  discard block
 block discarded – undo
67 67
 include('include/SubPanel/SubPanel.php');
68 68
 $layout_def_key = '';
69 69
 if(!empty($_REQUEST['layout_def_key'])){
70
-	$layout_def_key = $_REQUEST['layout_def_key'];
70
+    $layout_def_key = $_REQUEST['layout_def_key'];
71 71
 }
72 72
 
73 73
 $subpanel_object = new CustomSubPanel($module, $record, $subpanel,null, $layout_def_key, $collection);
Please login to merge, or discard this patch.
include/SubPanel/SubPanelDefinitions.php 1 patch
Indentation   +709 added lines, -709 removed lines patch added patch discarded remove patch
@@ -54,13 +54,13 @@  discard block
 block discarded – undo
54 54
 class aSubPanel
55 55
 {
56 56
 
57
-	var $name ;
58
-	var $_instance_properties ;
57
+    var $name ;
58
+    var $_instance_properties ;
59 59
 
60
-	var $mod_strings ;
61
-	var $panel_definition ;
62
-	var $sub_subpanels ;
63
-	var $parent_bean ;
60
+    var $mod_strings ;
61
+    var $panel_definition ;
62
+    var $sub_subpanels ;
63
+    var $parent_bean ;
64 64
 
65 65
     /**
66 66
      * Can we display this subpanel?
@@ -72,80 +72,80 @@  discard block
 block discarded – undo
72 72
      */
73 73
     var $canDisplay = true;
74 74
 
75
-	//module's table name and column fields.
76
-	var $table_name ;
77
-	var $db_fields ;
78
-	var $bean_name ;
79
-	var $template_instance ;
80
-
81
-	var $search_query;
82
-	var $base_collection_list = array();
83
-
84
-	function aSubPanel ($name , $instance_properties , $parent_bean , $reload = false , $original_only = false, $search_query = '', $collections = array() ){
85
-
86
-		$this->_instance_properties = $instance_properties ;
87
-
88
-		if(isset($instance_properties['collection_list' ])) $this->base_collection_list = $instance_properties['collection_list' ];
89
-
90
-		if(!empty($collections) && isset($instance_properties['collection_list' ])){
91
-			foreach($instance_properties['collection_list' ] as $cname => $value){
92
-				if(!in_array($value['module'], $collections)){
93
-					unset($instance_properties['collection_list'][$cname]);
94
-				}
95
-			}
96
-		}
97
-		if (!$this->isCollection()){
98
-			$table = strtolower($instance_properties['module']);
99
-			$search_query = str_replace('meetings',$table,$search_query);
100
-		}
101
-
102
-		$this->search_query = $search_query;
103
-		$this->name = $name ;
104
-		$this->parent_bean = $parent_bean ;
105
-
106
-		//set language
107
-		global $current_language ;
108
-		if (! isset ( $parent_bean->mbvardefs ))
109
-		{
110
-			$mod_strings = return_module_language ( $current_language, $parent_bean->module_dir ) ;
111
-		}
112
-		$this->mod_strings = $mod_strings ;
75
+    //module's table name and column fields.
76
+    var $table_name ;
77
+    var $db_fields ;
78
+    var $bean_name ;
79
+    var $template_instance ;
80
+
81
+    var $search_query;
82
+    var $base_collection_list = array();
83
+
84
+    function aSubPanel ($name , $instance_properties , $parent_bean , $reload = false , $original_only = false, $search_query = '', $collections = array() ){
85
+
86
+        $this->_instance_properties = $instance_properties ;
87
+
88
+        if(isset($instance_properties['collection_list' ])) $this->base_collection_list = $instance_properties['collection_list' ];
89
+
90
+        if(!empty($collections) && isset($instance_properties['collection_list' ])){
91
+            foreach($instance_properties['collection_list' ] as $cname => $value){
92
+                if(!in_array($value['module'], $collections)){
93
+                    unset($instance_properties['collection_list'][$cname]);
94
+                }
95
+            }
96
+        }
97
+        if (!$this->isCollection()){
98
+            $table = strtolower($instance_properties['module']);
99
+            $search_query = str_replace('meetings',$table,$search_query);
100
+        }
101
+
102
+        $this->search_query = $search_query;
103
+        $this->name = $name ;
104
+        $this->parent_bean = $parent_bean ;
105
+
106
+        //set language
107
+        global $current_language ;
108
+        if (! isset ( $parent_bean->mbvardefs ))
109
+        {
110
+            $mod_strings = return_module_language ( $current_language, $parent_bean->module_dir ) ;
111
+        }
112
+        $this->mod_strings = $mod_strings ;
113 113
 
114 114
         if ($this->isCollection ())
115
-		{
116
-			$this->canDisplay = $this->load_sub_subpanels () ; //load sub-panel definition.
117
-		} else
118
-		{
119
-			if (!is_dir('modules/' . $this->_instance_properties [ 'module' ])){
120
-				_pstack_trace();
121
-			}
122
-			$def_path = 'modules/' . $this->_instance_properties [ 'module' ] . '/metadata/subpanels/' . $this->_instance_properties [ 'subpanel_name' ] . '.php' ;
123
-
124
-			$orig_exists = is_file($def_path);
125
-			$loaded = false;
126
-			if ($orig_exists)
127
-			{
128
-				require ($def_path);
129
-				$loaded = true;
130
-			}
131
-			if (is_file("custom/$def_path") && (!$original_only  || !$orig_exists))
132
-			{
133
-				require ("custom/$def_path");
134
-				$loaded = true;
135
-			}
136
-
137
-			if (! $original_only && isset ( $this->_instance_properties [ 'override_subpanel_name' ] ) && file_exists ( 'custom/modules/' . $this->_instance_properties [ 'module' ] . '/metadata/subpanels/' . $this->_instance_properties [ 'override_subpanel_name' ] . '.php' ))
138
-			{
139
-				$cust_def_path = 'custom/modules/' . $this->_instance_properties [ 'module' ] . '/metadata/subpanels/' . $this->_instance_properties [ 'override_subpanel_name' ] . '.php' ;
140
-				require ($cust_def_path) ;
141
-				$loaded = true;
142
-			}
143
-
144
-			if (!$loaded)
145
-			{
146
-				$GLOBALS['log']->fatal("Failed to load original or custom subpanel data for $name in $def_path");
115
+        {
116
+            $this->canDisplay = $this->load_sub_subpanels () ; //load sub-panel definition.
117
+        } else
118
+        {
119
+            if (!is_dir('modules/' . $this->_instance_properties [ 'module' ])){
120
+                _pstack_trace();
121
+            }
122
+            $def_path = 'modules/' . $this->_instance_properties [ 'module' ] . '/metadata/subpanels/' . $this->_instance_properties [ 'subpanel_name' ] . '.php' ;
123
+
124
+            $orig_exists = is_file($def_path);
125
+            $loaded = false;
126
+            if ($orig_exists)
127
+            {
128
+                require ($def_path);
129
+                $loaded = true;
130
+            }
131
+            if (is_file("custom/$def_path") && (!$original_only  || !$orig_exists))
132
+            {
133
+                require ("custom/$def_path");
134
+                $loaded = true;
135
+            }
136
+
137
+            if (! $original_only && isset ( $this->_instance_properties [ 'override_subpanel_name' ] ) && file_exists ( 'custom/modules/' . $this->_instance_properties [ 'module' ] . '/metadata/subpanels/' . $this->_instance_properties [ 'override_subpanel_name' ] . '.php' ))
138
+            {
139
+                $cust_def_path = 'custom/modules/' . $this->_instance_properties [ 'module' ] . '/metadata/subpanels/' . $this->_instance_properties [ 'override_subpanel_name' ] . '.php' ;
140
+                require ($cust_def_path) ;
141
+                $loaded = true;
142
+            }
143
+
144
+            if (!$loaded)
145
+            {
146
+                $GLOBALS['log']->fatal("Failed to load original or custom subpanel data for $name in $def_path");
147 147
                 $this->canDisplay = false;
148
-			}
148
+            }
149 149
 
150 150
             // load module info from the module's bean file
151 151
             $this->load_module_info();
@@ -156,10 +156,10 @@  discard block
 block discarded – undo
156 156
             if (isset($subpanel_layout) && is_array($subpanel_layout)) {
157 157
                 $this->set_panel_definition($subpanel_layout);
158 158
 
159
-			}
160
-		}
159
+            }
160
+        }
161 161
 
162
-	}
162
+    }
163 163
 
164 164
     /**
165 165
      * is the sub panel default hidden?
@@ -176,64 +176,64 @@  discard block
 block discarded – undo
176 176
     }
177 177
 
178 178
 
179
-	function distinct_query ()
180
-	{
181
-		if (isset ( $this->_instance_properties [ 'get_distinct_data' ] ))
182
-		{
183
-			return !empty($this->_instance_properties['get_distinct_data']) ? true : false;
184
-		}
185
-		return false ;
186
-	}
187
-
188
-	//return the translated header value.
189
-	function get_title ()
190
-	{
191
-		if (empty ( $this->mod_strings [ $this->_instance_properties [ 'title_key' ] ] ))
192
-		{
193
-			return translate ( $this->_instance_properties [ 'title_key' ], $this->_instance_properties [ 'module' ] ) ;
194
-		}
195
-		return $this->mod_strings [ $this->_instance_properties [ 'title_key' ] ] ;
196
-	}
197
-
198
-	//return the definition of buttons. looks for buttons in 2 locations.
199
-	function get_buttons ()
200
-	{
201
-		$buttons = array ( ) ;
202
-		if (isset ( $this->_instance_properties [ 'top_buttons' ] ))
203
-		{
204
-			//this will happen only in the case of sub-panels with multiple sources(activities).
205
-			$buttons = $this->_instance_properties [ 'top_buttons' ] ;
206
-		} else
207
-		{
208
-			$buttons = $this->panel_definition [ 'top_buttons' ] ;
209
-		}
210
-
211
-		// permissions. hide SubPanelTopComposeEmailButton from activities if email module is disabled.
212
-		//only email is  being tested becuase other submodules in activites/history such as notes, tasks, meetings and calls cannot be disabled.
213
-		//as of today these are the only 2 sub-panels that use the union clause.
214
-		$mod_name = $this->get_module_name () ;
215
-		if ($mod_name == 'Activities' || $mod_name == 'History')
216
-		{
217
-			global $modListHeader ;
218
-			global $modules_exempt_from_availability_check ;
219
-			if (isset ( $modListHeader ) && (! (array_key_exists ( 'Emails', $modListHeader ) or array_key_exists ( 'Emails', $modules_exempt_from_availability_check ))))
220
-			{
221
-				foreach ( $buttons as $key => $button )
222
-				{
223
-					foreach ( $button as $property => $value )
224
-					{
225
-						if ($value === 'SubPanelTopComposeEmailButton' || $value === 'SubPanelTopArchiveEmailButton')
226
-						{
227
-							//remove this button from the array.
228
-							unset ( $buttons [ $key ] ) ;
229
-						}
230
-					}
231
-				}
232
-			}
233
-		}
234
-
235
-		return $buttons ;
236
-	}
179
+    function distinct_query ()
180
+    {
181
+        if (isset ( $this->_instance_properties [ 'get_distinct_data' ] ))
182
+        {
183
+            return !empty($this->_instance_properties['get_distinct_data']) ? true : false;
184
+        }
185
+        return false ;
186
+    }
187
+
188
+    //return the translated header value.
189
+    function get_title ()
190
+    {
191
+        if (empty ( $this->mod_strings [ $this->_instance_properties [ 'title_key' ] ] ))
192
+        {
193
+            return translate ( $this->_instance_properties [ 'title_key' ], $this->_instance_properties [ 'module' ] ) ;
194
+        }
195
+        return $this->mod_strings [ $this->_instance_properties [ 'title_key' ] ] ;
196
+    }
197
+
198
+    //return the definition of buttons. looks for buttons in 2 locations.
199
+    function get_buttons ()
200
+    {
201
+        $buttons = array ( ) ;
202
+        if (isset ( $this->_instance_properties [ 'top_buttons' ] ))
203
+        {
204
+            //this will happen only in the case of sub-panels with multiple sources(activities).
205
+            $buttons = $this->_instance_properties [ 'top_buttons' ] ;
206
+        } else
207
+        {
208
+            $buttons = $this->panel_definition [ 'top_buttons' ] ;
209
+        }
210
+
211
+        // permissions. hide SubPanelTopComposeEmailButton from activities if email module is disabled.
212
+        //only email is  being tested becuase other submodules in activites/history such as notes, tasks, meetings and calls cannot be disabled.
213
+        //as of today these are the only 2 sub-panels that use the union clause.
214
+        $mod_name = $this->get_module_name () ;
215
+        if ($mod_name == 'Activities' || $mod_name == 'History')
216
+        {
217
+            global $modListHeader ;
218
+            global $modules_exempt_from_availability_check ;
219
+            if (isset ( $modListHeader ) && (! (array_key_exists ( 'Emails', $modListHeader ) or array_key_exists ( 'Emails', $modules_exempt_from_availability_check ))))
220
+            {
221
+                foreach ( $buttons as $key => $button )
222
+                {
223
+                    foreach ( $button as $property => $value )
224
+                    {
225
+                        if ($value === 'SubPanelTopComposeEmailButton' || $value === 'SubPanelTopArchiveEmailButton')
226
+                        {
227
+                            //remove this button from the array.
228
+                            unset ( $buttons [ $key ] ) ;
229
+                        }
230
+                    }
231
+                }
232
+            }
233
+        }
234
+
235
+        return $buttons ;
236
+    }
237 237
 
238 238
 
239 239
     /**
@@ -244,327 +244,327 @@  discard block
 block discarded – undo
244 244
      * @return bool         True by default if the subpanel was loaded.  Will return false if none in the collection are
245 245
      *                      allowed by the current user.
246 246
      */
247
-	function load_sub_subpanels ()
248
-	{
249
-
250
-		global $modListHeader ;
251
-		// added a check for security of tabs to see if an user has access to them
252
-		// this prevents passing an "unseen" tab to the query string and pulling up its contents
253
-		if (! isset ( $modListHeader ))
254
-		{
255
-			global $current_user ;
256
-			if (isset ( $current_user ))
257
-			{
258
-				$modListHeader = query_module_access_list ( $current_user ) ;
259
-			}
260
-		}
261
-
262
-		//by default all the activities modules are exempt, so hiding them won't affect their appearance unless the 'activity' subpanel itself is hidden.
263
-		//add email to the list temporarily so it is not affected in activities subpanel
264
-		global $modules_exempt_from_availability_check ;
265
-		$modules_exempt_from_availability_check['Emails'] = 'Emails';
266
-
267
-		$listFieldMap = array();
268
-
269
-		if (empty ( $this->sub_subpanels ))
270
-		{
271
-			$panels = $this->get_inst_prop_value ( 'collection_list' ) ;
272
-			foreach ( $panels as $panel => $properties )
273
-			{
274
-				if (array_key_exists ( $properties [ 'module' ], $modListHeader ) or array_key_exists ( $properties [ 'module' ], $modules_exempt_from_availability_check ))
275
-				{
276
-					$this->sub_subpanels [ $panel ] = new aSubPanel ( $panel, $properties, $this->parent_bean, false, false, $this->search_query ) ;
277
-				}
278
-			}
279
-			// if it's empty just dump out as there is nothing to process.
280
-			if(empty($this->sub_subpanels)) return false;
281
-			//Sync displayed list fields across the subpanels
282
-			$display_fields = $this->getDisplayFieldsFromCollection($this->sub_subpanels);
283
-			$query_fields = array();
284
-			foreach ( $this->sub_subpanels as $key => $subpanel )
285
-			{
286
-				$list_fields = $subpanel->get_list_fields();
287
-				$listFieldMap[$key] = array();
288
-				$index = 0;
289
-				foreach($list_fields as $field => $def)
290
-				{
291
-					if (isset($def['vname']) && isset($def['width']))
292
-					{
293
-						$index++;
294
-						if(!empty($def['alias']))
295
-							$listFieldMap[$key][$def['alias']] = $field;
296
-						else
297
-							$listFieldMap[$key][$field] = $field;
298
-						if (!isset($display_fields[$def['vname']]))
299
-						{
300
-							if(sizeof($display_fields) > $index)
301
-							{
302
-								//Try to insert the new field in an order that makes sense
303
-								$start = array_slice($display_fields, 0, $index);
304
-								$end = array_slice($display_fields, $index);
305
-								$display_fields = array_merge(
306
-									$start,
307
-									array($def['vname'] => array('name' => $field, 'vname' => $def['vname'], 'width' => $def['width'] )),
308
-									$end
309
-								);
310
-							} else
311
-							{
312
-								$display_fields[$def['vname']] = array(
313
-									'name' => empty($def['alias']) ? $field : $def['alias'],
314
-									'vname' => $def['vname'],
315
-									'width' => $def['width'],
316
-								);
317
-							}
318
-						}
319
-					} else {
320
-						$query_fields[$field] = $def;
321
-					}
322
-				}
323
-			}
324
-			foreach ( $this->sub_subpanels as $key => $subpanel )
325
-			{
326
-				$list_fields = array();
327
-				foreach($display_fields as $vname => $def)
328
-				{
329
-					$field = $def['name'];
330
-					$list_key = isset($listFieldMap[$key][$field]) ? $listFieldMap[$key][$field] : $field;
331
-
332
-					if (isset($subpanel->panel_definition['list_fields'][$field]))
333
-					{
334
-						$list_fields[$field] = $subpanel->panel_definition['list_fields'][$field];
335
-					}
336
-					else if ($list_key != $field && isset($subpanel->panel_definition['list_fields'][$list_key]))
337
-					{
338
-						$list_fields[$list_key] = $subpanel->panel_definition['list_fields'][$list_key];
339
-
340
-					}
341
-					else {
342
-						$list_fields[$field] = $display_fields[$vname];
343
-					}
344
-				}
345
-				foreach($query_fields as $field => $def)
346
-				{
347
-					if (isset($subpanel->panel_definition['list_fields'][$field]))
348
-					{
349
-						$list_fields[$field] = $subpanel->panel_definition['list_fields'][$field];
350
-					}
351
-					else {
352
-						$list_fields[$field] = $def;
353
-					}
354
-				}
355
-				$subpanel->panel_definition['list_fields'] = $list_fields;
356
-			}
357
-		}
358
-
359
-		return true;
360
-	}
361
-
362
-	protected function getDisplayFieldsFromCollection($sub_subpanels)
363
-	{
364
-		$display_fields = array();
365
-		foreach ($sub_subpanels as $key => $subpanel )
366
-		{
367
-			$list_fields = $subpanel->get_list_fields();
368
-			$index = 0;
369
-			foreach($list_fields as $field => $def)
370
-			{
371
-				if (isset($def['vname']) && isset($def['width']))
372
-				{
373
-					$index++;
374
-					if (!isset($display_fields[$def['vname']]))
375
-					{
376
-						if(sizeof($display_fields) > $index)
377
-						{
378
-							//Try to insert the new field in an order that makes sense
379
-							$start = array_slice($display_fields, 0, $index);
380
-							$end = array_slice($display_fields, $index);
381
-							$display_fields = array_merge(
382
-								$start,
383
-								array($def['vname'] => array('name' => $field, 'vname' => $def['vname'], 'width' => $def['width'] )),
384
-								$end
385
-							);
386
-						} else
387
-						{
388
-							$display_fields[$def['vname']] = array(
389
-								'name' => $field,
390
-								'vname' => $def['vname'],
391
-								'width' => $def['width'],
392
-							);
393
-						}
394
-					}
395
-				}
396
-			}
397
-		}
398
-	}
399
-
400
-	function isDatasourceFunction ()
401
-	{
402
-		if (strpos ( $this->get_inst_prop_value ( 'get_subpanel_data' ), 'function' ) === false)
403
-		{
404
-			return false ;
405
-		}
406
-		return true ;
407
-	}
247
+    function load_sub_subpanels ()
248
+    {
249
+
250
+        global $modListHeader ;
251
+        // added a check for security of tabs to see if an user has access to them
252
+        // this prevents passing an "unseen" tab to the query string and pulling up its contents
253
+        if (! isset ( $modListHeader ))
254
+        {
255
+            global $current_user ;
256
+            if (isset ( $current_user ))
257
+            {
258
+                $modListHeader = query_module_access_list ( $current_user ) ;
259
+            }
260
+        }
261
+
262
+        //by default all the activities modules are exempt, so hiding them won't affect their appearance unless the 'activity' subpanel itself is hidden.
263
+        //add email to the list temporarily so it is not affected in activities subpanel
264
+        global $modules_exempt_from_availability_check ;
265
+        $modules_exempt_from_availability_check['Emails'] = 'Emails';
266
+
267
+        $listFieldMap = array();
268
+
269
+        if (empty ( $this->sub_subpanels ))
270
+        {
271
+            $panels = $this->get_inst_prop_value ( 'collection_list' ) ;
272
+            foreach ( $panels as $panel => $properties )
273
+            {
274
+                if (array_key_exists ( $properties [ 'module' ], $modListHeader ) or array_key_exists ( $properties [ 'module' ], $modules_exempt_from_availability_check ))
275
+                {
276
+                    $this->sub_subpanels [ $panel ] = new aSubPanel ( $panel, $properties, $this->parent_bean, false, false, $this->search_query ) ;
277
+                }
278
+            }
279
+            // if it's empty just dump out as there is nothing to process.
280
+            if(empty($this->sub_subpanels)) return false;
281
+            //Sync displayed list fields across the subpanels
282
+            $display_fields = $this->getDisplayFieldsFromCollection($this->sub_subpanels);
283
+            $query_fields = array();
284
+            foreach ( $this->sub_subpanels as $key => $subpanel )
285
+            {
286
+                $list_fields = $subpanel->get_list_fields();
287
+                $listFieldMap[$key] = array();
288
+                $index = 0;
289
+                foreach($list_fields as $field => $def)
290
+                {
291
+                    if (isset($def['vname']) && isset($def['width']))
292
+                    {
293
+                        $index++;
294
+                        if(!empty($def['alias']))
295
+                            $listFieldMap[$key][$def['alias']] = $field;
296
+                        else
297
+                            $listFieldMap[$key][$field] = $field;
298
+                        if (!isset($display_fields[$def['vname']]))
299
+                        {
300
+                            if(sizeof($display_fields) > $index)
301
+                            {
302
+                                //Try to insert the new field in an order that makes sense
303
+                                $start = array_slice($display_fields, 0, $index);
304
+                                $end = array_slice($display_fields, $index);
305
+                                $display_fields = array_merge(
306
+                                    $start,
307
+                                    array($def['vname'] => array('name' => $field, 'vname' => $def['vname'], 'width' => $def['width'] )),
308
+                                    $end
309
+                                );
310
+                            } else
311
+                            {
312
+                                $display_fields[$def['vname']] = array(
313
+                                    'name' => empty($def['alias']) ? $field : $def['alias'],
314
+                                    'vname' => $def['vname'],
315
+                                    'width' => $def['width'],
316
+                                );
317
+                            }
318
+                        }
319
+                    } else {
320
+                        $query_fields[$field] = $def;
321
+                    }
322
+                }
323
+            }
324
+            foreach ( $this->sub_subpanels as $key => $subpanel )
325
+            {
326
+                $list_fields = array();
327
+                foreach($display_fields as $vname => $def)
328
+                {
329
+                    $field = $def['name'];
330
+                    $list_key = isset($listFieldMap[$key][$field]) ? $listFieldMap[$key][$field] : $field;
331
+
332
+                    if (isset($subpanel->panel_definition['list_fields'][$field]))
333
+                    {
334
+                        $list_fields[$field] = $subpanel->panel_definition['list_fields'][$field];
335
+                    }
336
+                    else if ($list_key != $field && isset($subpanel->panel_definition['list_fields'][$list_key]))
337
+                    {
338
+                        $list_fields[$list_key] = $subpanel->panel_definition['list_fields'][$list_key];
339
+
340
+                    }
341
+                    else {
342
+                        $list_fields[$field] = $display_fields[$vname];
343
+                    }
344
+                }
345
+                foreach($query_fields as $field => $def)
346
+                {
347
+                    if (isset($subpanel->panel_definition['list_fields'][$field]))
348
+                    {
349
+                        $list_fields[$field] = $subpanel->panel_definition['list_fields'][$field];
350
+                    }
351
+                    else {
352
+                        $list_fields[$field] = $def;
353
+                    }
354
+                }
355
+                $subpanel->panel_definition['list_fields'] = $list_fields;
356
+            }
357
+        }
358
+
359
+        return true;
360
+    }
361
+
362
+    protected function getDisplayFieldsFromCollection($sub_subpanels)
363
+    {
364
+        $display_fields = array();
365
+        foreach ($sub_subpanels as $key => $subpanel )
366
+        {
367
+            $list_fields = $subpanel->get_list_fields();
368
+            $index = 0;
369
+            foreach($list_fields as $field => $def)
370
+            {
371
+                if (isset($def['vname']) && isset($def['width']))
372
+                {
373
+                    $index++;
374
+                    if (!isset($display_fields[$def['vname']]))
375
+                    {
376
+                        if(sizeof($display_fields) > $index)
377
+                        {
378
+                            //Try to insert the new field in an order that makes sense
379
+                            $start = array_slice($display_fields, 0, $index);
380
+                            $end = array_slice($display_fields, $index);
381
+                            $display_fields = array_merge(
382
+                                $start,
383
+                                array($def['vname'] => array('name' => $field, 'vname' => $def['vname'], 'width' => $def['width'] )),
384
+                                $end
385
+                            );
386
+                        } else
387
+                        {
388
+                            $display_fields[$def['vname']] = array(
389
+                                'name' => $field,
390
+                                'vname' => $def['vname'],
391
+                                'width' => $def['width'],
392
+                            );
393
+                        }
394
+                    }
395
+                }
396
+            }
397
+        }
398
+    }
399
+
400
+    function isDatasourceFunction ()
401
+    {
402
+        if (strpos ( $this->get_inst_prop_value ( 'get_subpanel_data' ), 'function' ) === false)
403
+        {
404
+            return false ;
405
+        }
406
+        return true ;
407
+    }
408 408
 
409 409
     /**
410 410
      * Test to see if the sub panels defs contain a collection
411 411
      *
412 412
      * @return bool
413 413
      */
414
-	function isCollection ()
415
-	{
416
-		return ($this->get_inst_prop_value ( 'type' ) == 'collection');
417
-	}
418
-
419
-	//get value of a property defined at the panel instance level.
420
-	function get_inst_prop_value ( $name )
421
-	{
422
-		return isset($this->_instance_properties[$name]) ? $this->_instance_properties [ $name ] : null;
423
-	}
424
-	//get value of a property defined at the panel definition level.
425
-	function get_def_prop_value ( $name )
426
-	{
427
-		if (isset ( $this->panel_definition [ $name ] ))
428
-		{
429
-			return $this->panel_definition [ $name ] ;
430
-		} else
431
-		{
432
-			return null ;
433
-		}
434
-	}
435
-
436
-	//if datasource is of the type function then return the function name
437
-	//else return the value as is.
438
-	function get_function_parameters ()
439
-	{
440
-		$parameters = array ( ) ;
441
-		if ($this->isDatasourceFunction ())
442
-		{
443
-			$parameters = $this->get_inst_prop_value ( 'function_parameters' ) ;
444
-		}
445
-		return $parameters ;
446
-	}
447
-
448
-	function get_data_source_name ( $check_set_subpanel_data = false )
449
-	{
450
-		$prop_value = null ;
451
-		if ($check_set_subpanel_data)
452
-		{
453
-			$prop_value = $this->get_inst_prop_value ( 'set_subpanel_data' ) ;
454
-		}
455
-		if (! empty ( $prop_value ))
456
-		{
457
-			return $prop_value ;
458
-		} else
459
-		{
460
-			//fall back to default behavior.
461
-		}
462
-		if ($this->isDatasourceFunction ())
463
-		{
464
-			return (substr_replace ( $this->get_inst_prop_value ( 'get_subpanel_data' ), '', 0, 9 )) ;
465
-		} else
466
-		{
467
-			return $this->get_inst_prop_value ( 'get_subpanel_data' ) ;
468
-		}
469
-	}
470
-
471
-	//returns the where clause for the query.
472
-	function get_where ()
473
-	{
474
-		if($this->get_def_prop_value ( 'where' ) != '' && $this->search_query != ''){
475
-			return $this->get_def_prop_value ( 'where' ).' AND '.$this->search_query;
476
-		} else if($this->search_query != ''){
477
-			return $this->search_query;
478
-		}
479
-		return $this->get_def_prop_value ( 'where' ) ;
480
-	}
481
-
482
-	function is_fill_in_additional_fields ()
483
-	{
484
-		// do both. inst_prop returns values from metadata/subpaneldefs.php and def_prop returns from subpanel/default.php
485
-		$temp = $this->get_inst_prop_value ( 'fill_in_additional_fields' ) || $this->get_def_prop_value ( 'fill_in_additional_fields' ) ;
486
-		return $temp ;
487
-	}
488
-
489
-	function get_list_fields ()
490
-	{
491
-		if (isset ( $this->panel_definition [ 'list_fields' ] ))
492
-		{
493
-			return $this->panel_definition [ 'list_fields' ] ;
494
-		} else
495
-		{
496
-			return array ( ) ;
497
-		}
498
-	}
499
-
500
-	function get_module_name ()
501
-	{
502
-		return $this->get_inst_prop_value ( 'module' ) ;
503
-	}
504
-
505
-	function get_name ()
506
-	{
507
-		return $this->name ;
508
-	}
509
-
510
-	//load subpanel module's table name and column fields.
511
-	function load_module_info ()
512
-	{
513
-		global $beanList ;
514
-		global $beanFiles ;
515
-
516
-		$module_name = $this->get_module_name () ;
517
-		if (! empty ( $module_name ))
518
-		{
519
-
520
-			$bean_name = $beanList [ $this->get_module_name () ] ;
521
-
522
-			$this->bean_name = $bean_name ;
523
-
524
-			include_once ($beanFiles [ $bean_name ]) ;
525
-			$this->template_instance = new $bean_name ( ) ;
526
-			$this->template_instance->force_load_details = true ;
527
-			$this->table_name = $this->template_instance->table_name ;
528
-			//$this->db_fields=$this->template_instance->column_fields;
529
-		}
530
-	}
531
-	//this function is to be used only with sub-panels that are based
532
-	//on collections.
533
-	function get_header_panel_def ()
534
-	{
535
-		if (! empty ( $this->sub_subpanels ))
536
-		{
537
-			if (! empty ( $this->_instance_properties [ 'header_definition_from_subpanel' ] ) && ! empty ( $this->sub_subpanels [ $this->_instance_properties [ 'header_definition_from_subpanel' ] ] ))
538
-			{
539
-				return $this->sub_subpanels [ $this->_instance_properties [ 'header_definition_from_subpanel' ] ] ;
540
-			} else
541
-			{
542
-				$display_fields = array();
543
-				//If we are not pulling from a specific subpanel, create a list of all list fields and use that.
544
-				foreach($this->sub_subpanels as $subpanel)
545
-				{
546
-					$list_fields = $subpanel->get_list_fields();
547
-					foreach($list_fields as $field => $def)
548
-					{
549
-
550
-					}
551
-				}
552
-
553
-				reset ( $this->sub_subpanels ) ;
554
-				return current ( $this->sub_subpanels ) ;
555
-			}
556
-		}
557
-		return null ;
558
-	}
559
-
560
-	/**
561
-	 * Returns an array of current properties of the class.
562
-	 * It will simply give the class name for instances of classes.
563
-	 */
564
-	function _to_array ()
565
-	{
566
-		return array ( '_instance_properties' => $this->_instance_properties , 'db_fields' => $this->db_fields , 'mod_strings' => $this->mod_strings , 'name' => $this->name , 'panel_definition' => $this->panel_definition , 'parent_bean' => get_class ( $this->parent_bean ) , 'sub_subpanels' => $this->sub_subpanels , 'table_name' => $this->table_name , 'template_instance' => get_class ( $this->template_instance ) ) ;
567
-	}
414
+    function isCollection ()
415
+    {
416
+        return ($this->get_inst_prop_value ( 'type' ) == 'collection');
417
+    }
418
+
419
+    //get value of a property defined at the panel instance level.
420
+    function get_inst_prop_value ( $name )
421
+    {
422
+        return isset($this->_instance_properties[$name]) ? $this->_instance_properties [ $name ] : null;
423
+    }
424
+    //get value of a property defined at the panel definition level.
425
+    function get_def_prop_value ( $name )
426
+    {
427
+        if (isset ( $this->panel_definition [ $name ] ))
428
+        {
429
+            return $this->panel_definition [ $name ] ;
430
+        } else
431
+        {
432
+            return null ;
433
+        }
434
+    }
435
+
436
+    //if datasource is of the type function then return the function name
437
+    //else return the value as is.
438
+    function get_function_parameters ()
439
+    {
440
+        $parameters = array ( ) ;
441
+        if ($this->isDatasourceFunction ())
442
+        {
443
+            $parameters = $this->get_inst_prop_value ( 'function_parameters' ) ;
444
+        }
445
+        return $parameters ;
446
+    }
447
+
448
+    function get_data_source_name ( $check_set_subpanel_data = false )
449
+    {
450
+        $prop_value = null ;
451
+        if ($check_set_subpanel_data)
452
+        {
453
+            $prop_value = $this->get_inst_prop_value ( 'set_subpanel_data' ) ;
454
+        }
455
+        if (! empty ( $prop_value ))
456
+        {
457
+            return $prop_value ;
458
+        } else
459
+        {
460
+            //fall back to default behavior.
461
+        }
462
+        if ($this->isDatasourceFunction ())
463
+        {
464
+            return (substr_replace ( $this->get_inst_prop_value ( 'get_subpanel_data' ), '', 0, 9 )) ;
465
+        } else
466
+        {
467
+            return $this->get_inst_prop_value ( 'get_subpanel_data' ) ;
468
+        }
469
+    }
470
+
471
+    //returns the where clause for the query.
472
+    function get_where ()
473
+    {
474
+        if($this->get_def_prop_value ( 'where' ) != '' && $this->search_query != ''){
475
+            return $this->get_def_prop_value ( 'where' ).' AND '.$this->search_query;
476
+        } else if($this->search_query != ''){
477
+            return $this->search_query;
478
+        }
479
+        return $this->get_def_prop_value ( 'where' ) ;
480
+    }
481
+
482
+    function is_fill_in_additional_fields ()
483
+    {
484
+        // do both. inst_prop returns values from metadata/subpaneldefs.php and def_prop returns from subpanel/default.php
485
+        $temp = $this->get_inst_prop_value ( 'fill_in_additional_fields' ) || $this->get_def_prop_value ( 'fill_in_additional_fields' ) ;
486
+        return $temp ;
487
+    }
488
+
489
+    function get_list_fields ()
490
+    {
491
+        if (isset ( $this->panel_definition [ 'list_fields' ] ))
492
+        {
493
+            return $this->panel_definition [ 'list_fields' ] ;
494
+        } else
495
+        {
496
+            return array ( ) ;
497
+        }
498
+    }
499
+
500
+    function get_module_name ()
501
+    {
502
+        return $this->get_inst_prop_value ( 'module' ) ;
503
+    }
504
+
505
+    function get_name ()
506
+    {
507
+        return $this->name ;
508
+    }
509
+
510
+    //load subpanel module's table name and column fields.
511
+    function load_module_info ()
512
+    {
513
+        global $beanList ;
514
+        global $beanFiles ;
515
+
516
+        $module_name = $this->get_module_name () ;
517
+        if (! empty ( $module_name ))
518
+        {
519
+
520
+            $bean_name = $beanList [ $this->get_module_name () ] ;
521
+
522
+            $this->bean_name = $bean_name ;
523
+
524
+            include_once ($beanFiles [ $bean_name ]) ;
525
+            $this->template_instance = new $bean_name ( ) ;
526
+            $this->template_instance->force_load_details = true ;
527
+            $this->table_name = $this->template_instance->table_name ;
528
+            //$this->db_fields=$this->template_instance->column_fields;
529
+        }
530
+    }
531
+    //this function is to be used only with sub-panels that are based
532
+    //on collections.
533
+    function get_header_panel_def ()
534
+    {
535
+        if (! empty ( $this->sub_subpanels ))
536
+        {
537
+            if (! empty ( $this->_instance_properties [ 'header_definition_from_subpanel' ] ) && ! empty ( $this->sub_subpanels [ $this->_instance_properties [ 'header_definition_from_subpanel' ] ] ))
538
+            {
539
+                return $this->sub_subpanels [ $this->_instance_properties [ 'header_definition_from_subpanel' ] ] ;
540
+            } else
541
+            {
542
+                $display_fields = array();
543
+                //If we are not pulling from a specific subpanel, create a list of all list fields and use that.
544
+                foreach($this->sub_subpanels as $subpanel)
545
+                {
546
+                    $list_fields = $subpanel->get_list_fields();
547
+                    foreach($list_fields as $field => $def)
548
+                    {
549
+
550
+                    }
551
+                }
552
+
553
+                reset ( $this->sub_subpanels ) ;
554
+                return current ( $this->sub_subpanels ) ;
555
+            }
556
+        }
557
+        return null ;
558
+    }
559
+
560
+    /**
561
+     * Returns an array of current properties of the class.
562
+     * It will simply give the class name for instances of classes.
563
+     */
564
+    function _to_array ()
565
+    {
566
+        return array ( '_instance_properties' => $this->_instance_properties , 'db_fields' => $this->db_fields , 'mod_strings' => $this->mod_strings , 'name' => $this->name , 'panel_definition' => $this->panel_definition , 'parent_bean' => get_class ( $this->parent_bean ) , 'sub_subpanels' => $this->sub_subpanels , 'table_name' => $this->table_name , 'template_instance' => get_class ( $this->template_instance ) ) ;
567
+    }
568 568
 
569 569
     /**
570 570
      * Sets definition of the subpanel
@@ -582,301 +582,301 @@  discard block
 block discarded – undo
582 582
 class SubPanelDefinitions
583 583
 {
584 584
 
585
-	var $_focus ;
586
-	var $_visible_tabs_array ;
587
-	var $panels ;
588
-	var $layout_defs ;
589
-
590
-	/**
591
-	 * Enter description here...
592
-	 *
593
-	 * @param BEAN $focus - this is the bean you want to get the data from
594
-	 * @param STRING $layout_def_key - if you wish to use a layout_def defined in the default metadata/subpaneldefs.php that is not keyed off of $bean->module_dir pass in the key here
595
-	 * @param ARRAY $layout_def_override - if you wish to override the default loaded layout defs you pass them in here.
596
-	 * @return SubPanelDefinitions
597
-	 */
598
-	function SubPanelDefinitions ( $focus , $layout_def_key = '' , $layout_def_override = '' )
599
-	{
600
-		$this->_focus = $focus ;
601
-		if (! empty ( $layout_def_override ))
602
-		{
603
-			$this->layout_defs = $layout_def_override ;
604
-
605
-		} else
606
-		{
607
-			$this->open_layout_defs ( false, $layout_def_key ) ;
608
-		}
609
-	}
610
-
611
-	/**
612
-	 * This function returns an ordered list of all "tabs", actually subpanels, for this module
613
-	 * The source list is obtained from the subpanel layout contained in the layout_defs for this module,
614
-	 * found either in the modules metadata/subpaneldefs.php file, or in the modules custom/.../Ext/Layoutdefs/layoutdefs.ext.php file
615
-	 * and filtered through an ACL check.
616
-	 * Note that the keys for the resulting array of tabs are in practice the name of the underlying source relationship for the subpanel
617
-	 * So for example, the key for a custom module's subpanel with Accounts might be 'one_one_accounts', as generated by the Studio Relationship Editor
618
-	 * Although OOB module subpanels have keys such as 'accounts', which might on the face of it appear to be a reference to the related module, in fact 'accounts' is still the relationship name
619
-	 * @param boolean 	Optional - include the subpanel title label in the return array (false)
620
-	 * @return array	All tabs that pass an ACL check
621
-	 */
622
-	function get_available_tabs ($FromGetModuleSubpanels=false)
623
-	{
624
-		global $modListHeader ;
625
-		global $modules_exempt_from_availability_check ;
626
-
627
-		if (isset ( $this->_visible_tabs_array ))
628
-			return $this->_visible_tabs_array ;
629
-
630
-		if (empty($modListHeader))
631
-		    $modListHeader = query_module_access_list($GLOBALS['current_user']);
632
-
633
-		$this->_visible_tabs_array = array ( ) ; // bug 16820 - make sure this is an array for the later ksort
634
-
635
-		if (isset ( $this->layout_defs [ 'subpanel_setup' ] )) // bug 17434 - belts-and-braces - check that we have some subpanels first
636
-		{
637
-			//retrieve list of hidden subpanels
638
-			$hidden_panels = $this->get_hidden_subpanels();
639
-
640
-			//activities is a special use case in that if it is hidden,
641
-			//then the history tab should be hidden too.
642
-			if(!empty($hidden_panels) && is_array($hidden_panels) && in_array('activities',$hidden_panels)){
643
-				//add history to list hidden_panels
644
-				$hidden_panels['history'] = 'history';
645
-			}
646
-
647
-			foreach ( $this->layout_defs [ 'subpanel_setup' ] as $key => $values_array )
648
-			{
649
-				//exclude if this subpanel is hidden from admin screens
585
+    var $_focus ;
586
+    var $_visible_tabs_array ;
587
+    var $panels ;
588
+    var $layout_defs ;
589
+
590
+    /**
591
+     * Enter description here...
592
+     *
593
+     * @param BEAN $focus - this is the bean you want to get the data from
594
+     * @param STRING $layout_def_key - if you wish to use a layout_def defined in the default metadata/subpaneldefs.php that is not keyed off of $bean->module_dir pass in the key here
595
+     * @param ARRAY $layout_def_override - if you wish to override the default loaded layout defs you pass them in here.
596
+     * @return SubPanelDefinitions
597
+     */
598
+    function SubPanelDefinitions ( $focus , $layout_def_key = '' , $layout_def_override = '' )
599
+    {
600
+        $this->_focus = $focus ;
601
+        if (! empty ( $layout_def_override ))
602
+        {
603
+            $this->layout_defs = $layout_def_override ;
604
+
605
+        } else
606
+        {
607
+            $this->open_layout_defs ( false, $layout_def_key ) ;
608
+        }
609
+    }
610
+
611
+    /**
612
+     * This function returns an ordered list of all "tabs", actually subpanels, for this module
613
+     * The source list is obtained from the subpanel layout contained in the layout_defs for this module,
614
+     * found either in the modules metadata/subpaneldefs.php file, or in the modules custom/.../Ext/Layoutdefs/layoutdefs.ext.php file
615
+     * and filtered through an ACL check.
616
+     * Note that the keys for the resulting array of tabs are in practice the name of the underlying source relationship for the subpanel
617
+     * So for example, the key for a custom module's subpanel with Accounts might be 'one_one_accounts', as generated by the Studio Relationship Editor
618
+     * Although OOB module subpanels have keys such as 'accounts', which might on the face of it appear to be a reference to the related module, in fact 'accounts' is still the relationship name
619
+     * @param boolean 	Optional - include the subpanel title label in the return array (false)
620
+     * @return array	All tabs that pass an ACL check
621
+     */
622
+    function get_available_tabs ($FromGetModuleSubpanels=false)
623
+    {
624
+        global $modListHeader ;
625
+        global $modules_exempt_from_availability_check ;
626
+
627
+        if (isset ( $this->_visible_tabs_array ))
628
+            return $this->_visible_tabs_array ;
629
+
630
+        if (empty($modListHeader))
631
+            $modListHeader = query_module_access_list($GLOBALS['current_user']);
632
+
633
+        $this->_visible_tabs_array = array ( ) ; // bug 16820 - make sure this is an array for the later ksort
634
+
635
+        if (isset ( $this->layout_defs [ 'subpanel_setup' ] )) // bug 17434 - belts-and-braces - check that we have some subpanels first
636
+        {
637
+            //retrieve list of hidden subpanels
638
+            $hidden_panels = $this->get_hidden_subpanels();
639
+
640
+            //activities is a special use case in that if it is hidden,
641
+            //then the history tab should be hidden too.
642
+            if(!empty($hidden_panels) && is_array($hidden_panels) && in_array('activities',$hidden_panels)){
643
+                //add history to list hidden_panels
644
+                $hidden_panels['history'] = 'history';
645
+            }
646
+
647
+            foreach ( $this->layout_defs [ 'subpanel_setup' ] as $key => $values_array )
648
+            {
649
+                //exclude if this subpanel is hidden from admin screens
650 650
                 $module = $key;
651 651
                 if ( isset($values_array['module']) )
652 652
                     $module = strtolower($values_array['module']);
653
-				 if ($hidden_panels && is_array($hidden_panels) && (in_array($module, $hidden_panels) || array_key_exists($module, $hidden_panels)) ){
654
-				 	//this panel is hidden, skip it
655
-				 	continue;
656
-				 }
657
-
658
-				// make sure the module attribute is set, else none of this works...
659
-				if ( !isset($values_array [ 'module' ])) {
660
-					$GLOBALS['log']->debug("SubPanelDefinitions->get_available_tabs(): no module defined in subpaneldefs for '$key' =>" . var_export($values_array,true) . " - ingoring subpanel defintion") ;
661
-					continue;
662
-				}
663
-
664
-				//check permissions.
665
-				$exempt = array_key_exists ( $values_array [ 'module' ], $modules_exempt_from_availability_check ) ;
666
-				$ok = $exempt || ( (! ACLController::moduleSupportsACL ( $values_array [ 'module' ] ) || ACLController::checkAccess ( $values_array [ 'module' ], 'list', true ) ) ) ;
667
-
668
-				$GLOBALS [ 'log' ]->debug ( "SubPanelDefinitions->get_available_tabs(): " . $key . "= " . ( $exempt ? "exempt " : "not exempt " .( $ok ? " ACL OK" : "" ) ) ) ;
669
-
670
-				if ( $ok )
671
-				{
672
-					while ( ! empty ( $this->_visible_tabs_array [ $values_array [ 'order' ] ] ) )
673
-					{
674
-						$values_array [ 'order' ] ++ ;
675
-					}
676
-
677
-					$this->_visible_tabs_array [ $values_array ['order'] ] = ($FromGetModuleSubpanels) ? array($key=>$values_array['title_key']) : $key ;
678
-				}
679
-			}
680
-		}
681
-
682
-		ksort ( $this->_visible_tabs_array ) ;
683
-		return $this->_visible_tabs_array ;
684
-	}
685
-
686
-	/**
687
-	 * Load the definition of the a sub-panel.
688
-	 * Also the sub-panel is added to an array of sub-panels.
689
-	 * use of reload has been deprecated, since the subpanel is initialized every time.
653
+                    if ($hidden_panels && is_array($hidden_panels) && (in_array($module, $hidden_panels) || array_key_exists($module, $hidden_panels)) ){
654
+                        //this panel is hidden, skip it
655
+                        continue;
656
+                    }
657
+
658
+                // make sure the module attribute is set, else none of this works...
659
+                if ( !isset($values_array [ 'module' ])) {
660
+                    $GLOBALS['log']->debug("SubPanelDefinitions->get_available_tabs(): no module defined in subpaneldefs for '$key' =>" . var_export($values_array,true) . " - ingoring subpanel defintion") ;
661
+                    continue;
662
+                }
663
+
664
+                //check permissions.
665
+                $exempt = array_key_exists ( $values_array [ 'module' ], $modules_exempt_from_availability_check ) ;
666
+                $ok = $exempt || ( (! ACLController::moduleSupportsACL ( $values_array [ 'module' ] ) || ACLController::checkAccess ( $values_array [ 'module' ], 'list', true ) ) ) ;
667
+
668
+                $GLOBALS [ 'log' ]->debug ( "SubPanelDefinitions->get_available_tabs(): " . $key . "= " . ( $exempt ? "exempt " : "not exempt " .( $ok ? " ACL OK" : "" ) ) ) ;
669
+
670
+                if ( $ok )
671
+                {
672
+                    while ( ! empty ( $this->_visible_tabs_array [ $values_array [ 'order' ] ] ) )
673
+                    {
674
+                        $values_array [ 'order' ] ++ ;
675
+                    }
676
+
677
+                    $this->_visible_tabs_array [ $values_array ['order'] ] = ($FromGetModuleSubpanels) ? array($key=>$values_array['title_key']) : $key ;
678
+                }
679
+            }
680
+        }
681
+
682
+        ksort ( $this->_visible_tabs_array ) ;
683
+        return $this->_visible_tabs_array ;
684
+    }
685
+
686
+    /**
687
+     * Load the definition of the a sub-panel.
688
+     * Also the sub-panel is added to an array of sub-panels.
689
+     * use of reload has been deprecated, since the subpanel is initialized every time.
690 690
      *
691 691
      * @param string $name              The name of the sub-panel to reload
692 692
      * @param boolean $reload           Reload the sub-panel (unused)
693 693
      * @param boolean $original_only    Only load the original sub-panel and no custom ones
694 694
      * @return boolean|aSubPanel        Returns aSubPanel object or boolean false if one is not found or it can't be
695 695
      *      displayed due to ACL reasons.
696
-	 */
697
-	function load_subpanel ( $name , $reload = false , $original_only = false, $search_query = '', $collections = array() )
698
-	{
699
-		if (!is_dir('modules/' . $this->layout_defs [ 'subpanel_setup' ][ strtolower ( $name ) ] [ 'module' ]))
700
-			return false;
696
+     */
697
+    function load_subpanel ( $name , $reload = false , $original_only = false, $search_query = '', $collections = array() )
698
+    {
699
+        if (!is_dir('modules/' . $this->layout_defs [ 'subpanel_setup' ][ strtolower ( $name ) ] [ 'module' ]))
700
+            return false;
701 701
 
702
-		$subpanel = new aSubPanel ( $name, $this->layout_defs [ 'subpanel_setup' ] [ strtolower ( $name ) ], $this->_focus, $reload, $original_only, $search_query, $collections ) ;
702
+        $subpanel = new aSubPanel ( $name, $this->layout_defs [ 'subpanel_setup' ] [ strtolower ( $name ) ], $this->_focus, $reload, $original_only, $search_query, $collections ) ;
703 703
 
704
-		// only return the subpanel object if we can display it.
705
-		if($subpanel->canDisplay == true) {
706
-			return $subpanel;
707
-		}
704
+        // only return the subpanel object if we can display it.
705
+        if($subpanel->canDisplay == true) {
706
+            return $subpanel;
707
+        }
708 708
 
709
-		// by default return false so we don't show anything if it's not required.
710
-		return false;
711
-	}
709
+        // by default return false so we don't show anything if it's not required.
710
+        return false;
711
+    }
712 712
 
713
-	/**
714
-	 * Load the layout def file and associate the definition with a variable in the file.
715
-	 */
716
-	function open_layout_defs ( $reload = false , $layout_def_key = '' , $original_only = false )
717
-	{
718
-		$layout_defs [ $this->_focus->module_dir ] = array ( ) ;
719
-		$layout_defs [ $layout_def_key ] = array ( ) ;
713
+    /**
714
+     * Load the layout def file and associate the definition with a variable in the file.
715
+     */
716
+    function open_layout_defs ( $reload = false , $layout_def_key = '' , $original_only = false )
717
+    {
718
+        $layout_defs [ $this->_focus->module_dir ] = array ( ) ;
719
+        $layout_defs [ $layout_def_key ] = array ( ) ;
720 720
 
721
-		if (empty ( $this->layout_defs ) || $reload || (! empty ( $layout_def_key ) && ! isset ( $layout_defs [ $layout_def_key ] )))
722
-		{
723
-			if (file_exists ( 'modules/' . $this->_focus->module_dir . '/metadata/subpaneldefs.php' ))
724
-				require ('modules/' . $this->_focus->module_dir . '/metadata/subpaneldefs.php') ;
721
+        if (empty ( $this->layout_defs ) || $reload || (! empty ( $layout_def_key ) && ! isset ( $layout_defs [ $layout_def_key ] )))
722
+        {
723
+            if (file_exists ( 'modules/' . $this->_focus->module_dir . '/metadata/subpaneldefs.php' ))
724
+                require ('modules/' . $this->_focus->module_dir . '/metadata/subpaneldefs.php') ;
725 725
 
726
-			if (! $original_only && file_exists ( 'custom/modules/' . $this->_focus->module_dir . '/Ext/Layoutdefs/layoutdefs.ext.php' ))
727
-				require ('custom/modules/' . $this->_focus->module_dir . '/Ext/Layoutdefs/layoutdefs.ext.php') ;
726
+            if (! $original_only && file_exists ( 'custom/modules/' . $this->_focus->module_dir . '/Ext/Layoutdefs/layoutdefs.ext.php' ))
727
+                require ('custom/modules/' . $this->_focus->module_dir . '/Ext/Layoutdefs/layoutdefs.ext.php') ;
728 728
 
729
-			if (! empty ( $layout_def_key ))
730
-				$this->layout_defs = $layout_defs [ $layout_def_key ] ;
731
-			else
732
-				$this->layout_defs = $layout_defs [ $this->_focus->module_dir ] ;
729
+            if (! empty ( $layout_def_key ))
730
+                $this->layout_defs = $layout_defs [ $layout_def_key ] ;
731
+            else
732
+                $this->layout_defs = $layout_defs [ $this->_focus->module_dir ] ;
733 733
 
734
-		}
734
+        }
735 735
 
736
-	}
736
+    }
737 737
 
738
-	/**
739
-	 * Removes a tab from the list of loaded tabs.
740
-	 * Returns true if successful, false otherwise.
741
-	 * Hint: Used by Campaign's DetailView.
742
-	 */
743
-	function exclude_tab ( $tab_name )
744
-	{
745
-		$result = false ;
746
-		//unset layout definition
747
-		if (! empty ( $this->layout_defs [ 'subpanel_setup' ] [ $tab_name ] ))
748
-		{
749
-			unset ( $this->layout_defs [ 'subpanel_setup' ] [ $tab_name ] ) ;
750
-		}
751
-		//unset instance from _visible_tab_array
752
-		if (! empty ( $this->_visible_tabs_array ))
753
-		{
754
-			$key = array_search ( $tab_name, $this->_visible_tabs_array ) ;
755
-			if ($key !== false)
756
-			{
757
-				unset ( $this->_visible_tabs_array [ $key ] ) ;
758
-			}
759
-		}
760
-		return $result ;
761
-	}
762
-
763
-
764
-	/**
765
-	 * return all available subpanels that belong to the list of tab modules.  You can optionally return all
766
-	 * available subpanels, and also optionally group by module (prepends the key with the bean class name).
767
-	 */
768
-	function get_all_subpanels( $return_tab_modules_only = true, $group_by_module = false )
769
-	{
770
-		global $moduleList, $beanFiles, $beanList, $module;
738
+    /**
739
+     * Removes a tab from the list of loaded tabs.
740
+     * Returns true if successful, false otherwise.
741
+     * Hint: Used by Campaign's DetailView.
742
+     */
743
+    function exclude_tab ( $tab_name )
744
+    {
745
+        $result = false ;
746
+        //unset layout definition
747
+        if (! empty ( $this->layout_defs [ 'subpanel_setup' ] [ $tab_name ] ))
748
+        {
749
+            unset ( $this->layout_defs [ 'subpanel_setup' ] [ $tab_name ] ) ;
750
+        }
751
+        //unset instance from _visible_tab_array
752
+        if (! empty ( $this->_visible_tabs_array ))
753
+        {
754
+            $key = array_search ( $tab_name, $this->_visible_tabs_array ) ;
755
+            if ($key !== false)
756
+            {
757
+                unset ( $this->_visible_tabs_array [ $key ] ) ;
758
+            }
759
+        }
760
+        return $result ;
761
+    }
762
+
763
+
764
+    /**
765
+     * return all available subpanels that belong to the list of tab modules.  You can optionally return all
766
+     * available subpanels, and also optionally group by module (prepends the key with the bean class name).
767
+     */
768
+    function get_all_subpanels( $return_tab_modules_only = true, $group_by_module = false )
769
+    {
770
+        global $moduleList, $beanFiles, $beanList, $module;
771 771
 
772
-		//use tab controller function to get module list with named keys
773
-		require_once("modules/MySettings/TabController.php");
774
-		$modules_to_check = TabController::get_key_array($moduleList);
772
+        //use tab controller function to get module list with named keys
773
+        require_once("modules/MySettings/TabController.php");
774
+        $modules_to_check = TabController::get_key_array($moduleList);
775 775
 
776
-		//change case to match subpanel processing later on
777
-		$modules_to_check = array_change_key_case($modules_to_check);
776
+        //change case to match subpanel processing later on
777
+        $modules_to_check = array_change_key_case($modules_to_check);
778 778
         // Append on the CampaignLog module, because that is where the subpanels point, not directly to Campaigns
779 779
         $modules_to_check['campaignlog'] = "CampaignLog";
780 780
 
781 781
 
782
-		$spd = '';
783
-		$spd_arr = array();
784
-		//iterate through modules and build subpanel array
785
-		foreach($modules_to_check as $mod_name){
782
+        $spd = '';
783
+        $spd_arr = array();
784
+        //iterate through modules and build subpanel array
785
+        foreach($modules_to_check as $mod_name){
786 786
 
787
-			//skip if module name is not in bean list, otherwise get the bean class name
788
-			if(!isset($beanList[$mod_name])) continue;
789
-			$class = $beanList[$mod_name];
787
+            //skip if module name is not in bean list, otherwise get the bean class name
788
+            if(!isset($beanList[$mod_name])) continue;
789
+            $class = $beanList[$mod_name];
790 790
 
791
-			//skip if class name is not in file list, otherwise require the bean file and create new class
792
-			if(!isset($beanFiles[$class]) || !file_exists($beanFiles[$class])) continue;
791
+            //skip if class name is not in file list, otherwise require the bean file and create new class
792
+            if(!isset($beanFiles[$class]) || !file_exists($beanFiles[$class])) continue;
793 793
 
794
-			//retrieve subpanels for this bean
795
-			require_once($beanFiles[$class]);
796
-			$bean_class = new $class();
794
+            //retrieve subpanels for this bean
795
+            require_once($beanFiles[$class]);
796
+            $bean_class = new $class();
797 797
 
798
-			//create new subpanel definition instance and get list of tabs
799
-			$spd = new SubPanelDefinitions($bean_class) ;
800
-			$sub_tabs = $spd->get_available_tabs();
798
+            //create new subpanel definition instance and get list of tabs
799
+            $spd = new SubPanelDefinitions($bean_class) ;
800
+            $sub_tabs = $spd->get_available_tabs();
801 801
 
802
-			//add each subpanel to array of total subpanles
803
-			foreach( $sub_tabs as $panel_key){
804
-				$panel_key = strtolower($panel_key);
802
+            //add each subpanel to array of total subpanles
803
+            foreach( $sub_tabs as $panel_key){
804
+                $panel_key = strtolower($panel_key);
805 805
                 $panel_module = $panel_key;
806 806
                 if ( isset($spd->layout_defs['subpanel_setup'][$panel_key]['module']) )
807 807
                     $panel_module = strtolower($spd->layout_defs['subpanel_setup'][$panel_key]['module']);
808 808
                 //if module_only flag is set, only if it is also in module array
809
-				if($return_tab_modules_only && !array_key_exists($panel_module, $modules_to_check)) continue;
810
-				$panel_key_name = $panel_module;
811
-
812
-				//group_by_key_name is set to true, then array will hold an entry for each
813
-				//subpanel, with the module name prepended in the key
814
-				if($group_by_module) $panel_key_name = $class.'_'.$panel_key_name;
815
-				//add panel name to subpanel array
816
-				$spd_arr[$panel_key_name] = $panel_module;
817
-			}
818
-		}
819
-		return 	$spd_arr;
820
-	}
821
-
822
-	/*
809
+                if($return_tab_modules_only && !array_key_exists($panel_module, $modules_to_check)) continue;
810
+                $panel_key_name = $panel_module;
811
+
812
+                //group_by_key_name is set to true, then array will hold an entry for each
813
+                //subpanel, with the module name prepended in the key
814
+                if($group_by_module) $panel_key_name = $class.'_'.$panel_key_name;
815
+                //add panel name to subpanel array
816
+                $spd_arr[$panel_key_name] = $panel_module;
817
+            }
818
+        }
819
+        return 	$spd_arr;
820
+    }
821
+
822
+    /*
823 823
 	 * save array of hidden panels to mysettings category in config table
824 824
 	 */
825
-	function set_hidden_subpanels($panels){
826
-		$administration = new Administration();
827
-		$serialized = base64_encode(serialize($panels));
828
-		$administration->saveSetting('MySettings', 'hide_subpanels', $serialized);
829
-	}
825
+    function set_hidden_subpanels($panels){
826
+        $administration = new Administration();
827
+        $serialized = base64_encode(serialize($panels));
828
+        $administration->saveSetting('MySettings', 'hide_subpanels', $serialized);
829
+    }
830 830
 
831
-	/*
831
+    /*
832 832
 	 * retrieve hidden subpanels
833 833
 	 */
834
-	function get_hidden_subpanels(){
835
-		global $moduleList;
836
-
837
-		//create variable as static to minimize queries
838
-		static $hidden_subpanels = null;
839
-
840
-		// if the static value is not already cached, then retrieve it.
841
-		if(empty($hidden_subpanels))
842
-		{
843
-
844
-			//create Administration object and retrieve any settings for panels
845
-			$administration = new Administration();
846
-			$administration->retrieveSettings('MySettings');
847
-
848
-			if(isset($administration->settings) && isset($administration->settings['MySettings_hide_subpanels'])){
849
-				$hidden_subpanels = $administration->settings['MySettings_hide_subpanels'];
850
-				$hidden_subpanels = trim($hidden_subpanels);
851
-
852
-				//make sure serialized string is not empty
853
-				if (!empty($hidden_subpanels)){
854
-					//decode and unserialize to retrieve the array
855
-					$hidden_subpanels = base64_decode($hidden_subpanels);
856
-					$hidden_subpanels = unserialize($hidden_subpanels);
857
-
858
-					//Ensure modules saved in the preferences exist.
859
-					//get user preference
860
-					//unserialize and add to array if not empty
861
-					$pref_hidden = array();
862
-					foreach($pref_hidden as $id => $pref_hidden_panel) {
863
-						$hidden_subpanels[] = $pref_hidden_panel;
864
-					}
865
-
866
-
867
-				}else{
868
-					//no settings found, return empty
869
-					return $hidden_subpanels;
870
-				}
871
-			}
872
-			else
873
-			{	//no settings found, return empty
874
-				return $hidden_subpanels;
875
-			}
876
-		}
877
-
878
-		return $hidden_subpanels;
879
-	}
834
+    function get_hidden_subpanels(){
835
+        global $moduleList;
836
+
837
+        //create variable as static to minimize queries
838
+        static $hidden_subpanels = null;
839
+
840
+        // if the static value is not already cached, then retrieve it.
841
+        if(empty($hidden_subpanels))
842
+        {
843
+
844
+            //create Administration object and retrieve any settings for panels
845
+            $administration = new Administration();
846
+            $administration->retrieveSettings('MySettings');
847
+
848
+            if(isset($administration->settings) && isset($administration->settings['MySettings_hide_subpanels'])){
849
+                $hidden_subpanels = $administration->settings['MySettings_hide_subpanels'];
850
+                $hidden_subpanels = trim($hidden_subpanels);
851
+
852
+                //make sure serialized string is not empty
853
+                if (!empty($hidden_subpanels)){
854
+                    //decode and unserialize to retrieve the array
855
+                    $hidden_subpanels = base64_decode($hidden_subpanels);
856
+                    $hidden_subpanels = unserialize($hidden_subpanels);
857
+
858
+                    //Ensure modules saved in the preferences exist.
859
+                    //get user preference
860
+                    //unserialize and add to array if not empty
861
+                    $pref_hidden = array();
862
+                    foreach($pref_hidden as $id => $pref_hidden_panel) {
863
+                        $hidden_subpanels[] = $pref_hidden_panel;
864
+                    }
865
+
866
+
867
+                }else{
868
+                    //no settings found, return empty
869
+                    return $hidden_subpanels;
870
+                }
871
+            }
872
+            else
873
+            {	//no settings found, return empty
874
+                return $hidden_subpanels;
875
+            }
876
+        }
877
+
878
+        return $hidden_subpanels;
879
+    }
880 880
 
881 881
 
882 882
 }
Please login to merge, or discard this patch.
include/SubPanel/SubPanel.php 1 patch
Indentation   +356 added lines, -356 removed lines patch added patch discarded remove patch
@@ -45,406 +45,406 @@
 block discarded – undo
45 45
  */
46 46
 class SubPanel
47 47
 {
48
-	var $hideNewButton = false;
49
-	var $subpanel_id;
50
-	var $parent_record_id;
51
-	var $parent_module;  // the name of the parent module
52
-	var $parent_bean;  // the instantiated bean of the parent
53
-	var $template_file;
54
-	var $linked_fields;
55
-	var $action = 'DetailView';
56
-	var $show_select_button = true;
57
-	var $subpanel_define = null;  // contains the layout_def.php
58
-	var $subpanel_defs;
59
-	var $subpanel_query=null;
48
+    var $hideNewButton = false;
49
+    var $subpanel_id;
50
+    var $parent_record_id;
51
+    var $parent_module;  // the name of the parent module
52
+    var $parent_bean;  // the instantiated bean of the parent
53
+    var $template_file;
54
+    var $linked_fields;
55
+    var $action = 'DetailView';
56
+    var $show_select_button = true;
57
+    var $subpanel_define = null;  // contains the layout_def.php
58
+    var $subpanel_defs;
59
+    var $subpanel_query=null;
60 60
     var $layout_def_key='';
61
-	var $search_query='';
62
-	var $collections = array();
63
-
64
-	function SubPanel($module, $record_id, $subpanel_id, $subpanelDef, $layout_def_key='', $collections = array() )
65
-	{
66
-		global $beanList, $beanFiles, $focus, $app_strings;
67
-
68
-		$this->subpanel_defs=$subpanelDef;
69
-		$this->subpanel_id = $subpanel_id;
70
-		$this->parent_record_id = $record_id;
71
-		$this->parent_module = $module;
72
-		$this->layout_def_key = $layout_def_key;
73
-		$this->collections = $collections;
74
-
75
-		$this->parent_bean = $focus;
76
-		$result = $focus;
77
-
78
-		if(empty($result))
79
-		{
80
-			$parent_bean_name = $beanList[$module];
81
-			$parent_bean_file = $beanFiles[$parent_bean_name];
82
-			require_once($parent_bean_file);
83
-			$this->parent_bean = new $parent_bean_name();
84
-			$this->parent_bean->retrieve($this->parent_record_id);
85
-			$result = $this->parent_bean;
86
-		}
87
-
88
-		if($record_id!='fab4' && $result == null)
89
-		{
90
-			sugar_die($app_strings['ERROR_NO_RECORD']);
91
-		}
92
-		$this->buildSearchQuery();
93
-		if (empty($subpanelDef)) {
94
-			//load the subpanel by name.
95
-			if (!class_exists('MyClass')) {
96
-				require_once 'include/SubPanel/SubPanelDefinitions.php' ;
97
-			}
98
-			$panelsdef=new SubPanelDefinitions($result,$layout_def_key);
99
-			$subpanelDef=$panelsdef->load_subpanel($subpanel_id, false, false, $this->search_query,$collections);
100
-			$this->subpanel_defs=$subpanelDef;
101
-
102
-		}
103
-	}
104
-
105
-	function setTemplateFile($template_file)
106
-	{
107
-		$this->template_file = $template_file;
108
-	}
109
-
110
-	function setBeanList(&$value){
111
-		$this->bean_list =$value;
112
-	}
113
-
114
-	function setHideNewButton($value){
115
-		$this->hideNewButton = $value;
116
-	}
117
-
118
-
119
-	function getHeaderText( $currentModule){
120
-	}
121
-
122
-	function get_buttons( $panel_query=null)
123
-	{
124
-
125
-		$thisPanel =& $this->subpanel_defs;
126
-		$subpanel_def = $thisPanel->get_buttons();
127
-
128
-		if(!isset($this->listview)){
129
-			$this->listview = new ListView();
130
-		}
131
-		$layout_manager = $this->listview->getLayoutManager();
132
-		$widget_contents = '<div><table cellpadding="0" cellspacing="0"><tr>';
133
-		foreach($subpanel_def as $widget_data)
134
-		{
135
-			$widget_data['action'] = $_REQUEST['action'];
136
-			$widget_data['module'] =  $thisPanel->get_inst_prop_value('module');
137
-			$widget_data['focus'] = $this->parent_bean;
138
-			$widget_data['subpanel_definition'] = $thisPanel;
139
-			$widget_contents .= '<td style="padding-right: 2px; padding-bottom: 2px;">' . "\n";
140
-
141
-			if(empty($widget_data['widget_class']))
142
-			{
143
-				$widget_contents .= "widget_class not defined for top subpanel buttons";
144
-			}
145
-			else
146
-			{
147
-				$widget_contents .= $layout_manager->widgetDisplay($widget_data);
148
-			}
149
-
150
-			$widget_contents .= '</td>';
151
-		}
152
-
153
-		$widget_contents .= '</tr></table></div>';
154
-		return $widget_contents;
155
-	}
156
-
157
-
158
-	function ProcessSubPanelListView($xTemplatePath, &$mod_strings)
159
-	{
160
-		global $app_strings;
161
-		global $current_user;
162
-		global $sugar_config;
163
-
164
-		if(isset($this->listview)){
165
-			$ListView =& $this->listview;
166
-		}else{
167
-			$ListView = new ListView();
168
-		}
169
-		$ListView->initNewXTemplate($xTemplatePath,$this->subpanel_defs->mod_strings);
170
-		$ListView->xTemplateAssign("RETURN_URL", "&return_module=".$this->parent_module."&return_action=DetailView&return_id=".$this->parent_bean->id);
171
-		$ListView->xTemplateAssign("RELATED_MODULE", $this->parent_module);  // TODO: what about unions?
172
-		$ListView->xTemplateAssign("RECORD_ID", $this->parent_bean->id);
173
-		$ListView->xTemplateAssign("EDIT_INLINE_PNG", SugarThemeRegistry::current()->getImage('edit_inline','align="absmiddle"  border="0"',null,null,'.gif',$app_strings['LNK_EDIT']));
174
-		$ListView->xTemplateAssign("DELETE_INLINE_PNG", SugarThemeRegistry::current()->getImage('delete_inline','align="absmiddle" border="0"',null,null,'.gif',$app_strings['LBL_DELETE_INLINE']));
175
-		$ListView->xTemplateAssign("REMOVE_INLINE_PNG", SugarThemeRegistry::current()->getImage('delete_inline','align="absmiddle" border="0"',null,null,'.gif',$app_strings['LBL_ID_FF_REMOVE']));
176
-		$header_text= '';
177
-
178
-		$ListView->xTemplateAssign("SUBPANEL_ID", $this->subpanel_id);
179
-		$ListView->xTemplateAssign("SUBPANEL_SEARCH", $this->getSearchForm());
180
-		$display_sps = '';
181
-		if($this->search_query == '' && empty($this->collections)) $display_sps = 'display:none';
182
-		$ListView->xTemplateAssign("DISPLAY_SPS",$display_sps);
183
-
184
-		if(is_admin($current_user) && $_REQUEST['module'] != 'DynamicLayout' && !empty($_SESSION['editinplace']))
185
-		{
186
-			$exploded = explode('/', $xTemplatePath);
187
-			$file_name = $exploded[sizeof($exploded) - 1];
188
-			$mod_name =  $exploded[sizeof($exploded) - 2];
189
-			$header_text= "&nbsp;<a href='index.php?action=index&module=DynamicLayout&from_action=$file_name&from_module=$mod_name&mod_lang="
190
-				.$_REQUEST['module']."'>".SugarThemeRegistry::current()->getImage("EditLayout","border='0' align='bottom'",null,null,'.gif','Edit Layout')."</a>";
191
-		}
192
-		$ListView->setHeaderTitle('');
193
-		$ListView->setHeaderText('');
194
-
195
-		ob_start();
196
-
197
-		$ListView->is_dynamic = true;
198
-		$ListView->records_per_page = $sugar_config['list_max_entries_per_subpanel'] + 0;
199
-		if (isset($this->subpanel_defs->_instance_properties['records_per_page'])) {
200
-			$ListView->records_per_page = $this->subpanel_defs->_instance_properties['records_per_page'] + 0;
201
-		}
202
-		$ListView->start_link_wrapper = "javascript:showSubPanel('".$this->subpanel_id."','";
203
-		$ListView->subpanel_id = $this->subpanel_id;
204
-		$ListView->end_link_wrapper = "',true);";
205
-		if ( !empty($this->layout_def_key) ) {
206
-			$ListView->end_link_wrapper = '&layout_def_key='.$this->layout_def_key.$ListView->end_link_wrapper;
207
-		}
208
-
209
-		$where = '';
210
-		$ListView->setQuery($where, '', '', '');
211
-		$ListView->show_export_button = false;
212
-
213
-		//function returns the query that was used to populate sub-panel data.
214
-
215
-		$query=$ListView->process_dynamic_listview($this->parent_module, $this->parent_bean,$this->subpanel_defs);
216
-		$this->subpanel_query=$query;
217
-		$ob_contents = ob_get_contents();
218
-		ob_end_clean();
219
-		return $ob_contents;
220
-	}
221
-
222
-	function display()
223
-	{
224
-		$result_array = array();
225
-
226
-		$return_string = $this->ProcessSubPanelListView($this->template_file,$result_array);
227
-
228
-		print $return_string;
229
-	}
230
-
231
-	function getModulesWithSubpanels()
232
-	{
233
-		global $beanList;
234
-		$dir = dir('modules');
235
-		$modules = array();
236
-		while($entry = $dir->read())
237
-		{
238
-			if(file_exists('modules/' . $entry . '/layout_defs.php'))
239
-			{
240
-				$modules[$entry] = $entry;
241
-			}
242
-		}
243
-		return $modules;
244
-	}
245
-
246
-  static function getModuleSubpanels($module){
247
-  	require_once('include/SubPanel/SubPanelDefinitions.php');
248
-  		global $beanList, $beanFiles;
249
-  		if(!isset($beanList[$module])){
250
-  			return array();
251
-  		}
252
-
253
-  		$class = $beanList[$module];
254
-  		require_once($beanFiles[$class]);
255
-  		$mod = new $class();
256
-  		$spd = new SubPanelDefinitions($mod);
257
-  		$tabs = $spd->get_available_tabs(true);
258
-  		$ret_tabs = array();
259
-  		$reject_tabs = array('history'=>1, 'activities'=>1);
260
-  		foreach($tabs as $key=>$tab){
261
-  		    foreach($tab as $k=>$v){
61
+    var $search_query='';
62
+    var $collections = array();
63
+
64
+    function SubPanel($module, $record_id, $subpanel_id, $subpanelDef, $layout_def_key='', $collections = array() )
65
+    {
66
+        global $beanList, $beanFiles, $focus, $app_strings;
67
+
68
+        $this->subpanel_defs=$subpanelDef;
69
+        $this->subpanel_id = $subpanel_id;
70
+        $this->parent_record_id = $record_id;
71
+        $this->parent_module = $module;
72
+        $this->layout_def_key = $layout_def_key;
73
+        $this->collections = $collections;
74
+
75
+        $this->parent_bean = $focus;
76
+        $result = $focus;
77
+
78
+        if(empty($result))
79
+        {
80
+            $parent_bean_name = $beanList[$module];
81
+            $parent_bean_file = $beanFiles[$parent_bean_name];
82
+            require_once($parent_bean_file);
83
+            $this->parent_bean = new $parent_bean_name();
84
+            $this->parent_bean->retrieve($this->parent_record_id);
85
+            $result = $this->parent_bean;
86
+        }
87
+
88
+        if($record_id!='fab4' && $result == null)
89
+        {
90
+            sugar_die($app_strings['ERROR_NO_RECORD']);
91
+        }
92
+        $this->buildSearchQuery();
93
+        if (empty($subpanelDef)) {
94
+            //load the subpanel by name.
95
+            if (!class_exists('MyClass')) {
96
+                require_once 'include/SubPanel/SubPanelDefinitions.php' ;
97
+            }
98
+            $panelsdef=new SubPanelDefinitions($result,$layout_def_key);
99
+            $subpanelDef=$panelsdef->load_subpanel($subpanel_id, false, false, $this->search_query,$collections);
100
+            $this->subpanel_defs=$subpanelDef;
101
+
102
+        }
103
+    }
104
+
105
+    function setTemplateFile($template_file)
106
+    {
107
+        $this->template_file = $template_file;
108
+    }
109
+
110
+    function setBeanList(&$value){
111
+        $this->bean_list =$value;
112
+    }
113
+
114
+    function setHideNewButton($value){
115
+        $this->hideNewButton = $value;
116
+    }
117
+
118
+
119
+    function getHeaderText( $currentModule){
120
+    }
121
+
122
+    function get_buttons( $panel_query=null)
123
+    {
124
+
125
+        $thisPanel =& $this->subpanel_defs;
126
+        $subpanel_def = $thisPanel->get_buttons();
127
+
128
+        if(!isset($this->listview)){
129
+            $this->listview = new ListView();
130
+        }
131
+        $layout_manager = $this->listview->getLayoutManager();
132
+        $widget_contents = '<div><table cellpadding="0" cellspacing="0"><tr>';
133
+        foreach($subpanel_def as $widget_data)
134
+        {
135
+            $widget_data['action'] = $_REQUEST['action'];
136
+            $widget_data['module'] =  $thisPanel->get_inst_prop_value('module');
137
+            $widget_data['focus'] = $this->parent_bean;
138
+            $widget_data['subpanel_definition'] = $thisPanel;
139
+            $widget_contents .= '<td style="padding-right: 2px; padding-bottom: 2px;">' . "\n";
140
+
141
+            if(empty($widget_data['widget_class']))
142
+            {
143
+                $widget_contents .= "widget_class not defined for top subpanel buttons";
144
+            }
145
+            else
146
+            {
147
+                $widget_contents .= $layout_manager->widgetDisplay($widget_data);
148
+            }
149
+
150
+            $widget_contents .= '</td>';
151
+        }
152
+
153
+        $widget_contents .= '</tr></table></div>';
154
+        return $widget_contents;
155
+    }
156
+
157
+
158
+    function ProcessSubPanelListView($xTemplatePath, &$mod_strings)
159
+    {
160
+        global $app_strings;
161
+        global $current_user;
162
+        global $sugar_config;
163
+
164
+        if(isset($this->listview)){
165
+            $ListView =& $this->listview;
166
+        }else{
167
+            $ListView = new ListView();
168
+        }
169
+        $ListView->initNewXTemplate($xTemplatePath,$this->subpanel_defs->mod_strings);
170
+        $ListView->xTemplateAssign("RETURN_URL", "&return_module=".$this->parent_module."&return_action=DetailView&return_id=".$this->parent_bean->id);
171
+        $ListView->xTemplateAssign("RELATED_MODULE", $this->parent_module);  // TODO: what about unions?
172
+        $ListView->xTemplateAssign("RECORD_ID", $this->parent_bean->id);
173
+        $ListView->xTemplateAssign("EDIT_INLINE_PNG", SugarThemeRegistry::current()->getImage('edit_inline','align="absmiddle"  border="0"',null,null,'.gif',$app_strings['LNK_EDIT']));
174
+        $ListView->xTemplateAssign("DELETE_INLINE_PNG", SugarThemeRegistry::current()->getImage('delete_inline','align="absmiddle" border="0"',null,null,'.gif',$app_strings['LBL_DELETE_INLINE']));
175
+        $ListView->xTemplateAssign("REMOVE_INLINE_PNG", SugarThemeRegistry::current()->getImage('delete_inline','align="absmiddle" border="0"',null,null,'.gif',$app_strings['LBL_ID_FF_REMOVE']));
176
+        $header_text= '';
177
+
178
+        $ListView->xTemplateAssign("SUBPANEL_ID", $this->subpanel_id);
179
+        $ListView->xTemplateAssign("SUBPANEL_SEARCH", $this->getSearchForm());
180
+        $display_sps = '';
181
+        if($this->search_query == '' && empty($this->collections)) $display_sps = 'display:none';
182
+        $ListView->xTemplateAssign("DISPLAY_SPS",$display_sps);
183
+
184
+        if(is_admin($current_user) && $_REQUEST['module'] != 'DynamicLayout' && !empty($_SESSION['editinplace']))
185
+        {
186
+            $exploded = explode('/', $xTemplatePath);
187
+            $file_name = $exploded[sizeof($exploded) - 1];
188
+            $mod_name =  $exploded[sizeof($exploded) - 2];
189
+            $header_text= "&nbsp;<a href='index.php?action=index&module=DynamicLayout&from_action=$file_name&from_module=$mod_name&mod_lang="
190
+                .$_REQUEST['module']."'>".SugarThemeRegistry::current()->getImage("EditLayout","border='0' align='bottom'",null,null,'.gif','Edit Layout')."</a>";
191
+        }
192
+        $ListView->setHeaderTitle('');
193
+        $ListView->setHeaderText('');
194
+
195
+        ob_start();
196
+
197
+        $ListView->is_dynamic = true;
198
+        $ListView->records_per_page = $sugar_config['list_max_entries_per_subpanel'] + 0;
199
+        if (isset($this->subpanel_defs->_instance_properties['records_per_page'])) {
200
+            $ListView->records_per_page = $this->subpanel_defs->_instance_properties['records_per_page'] + 0;
201
+        }
202
+        $ListView->start_link_wrapper = "javascript:showSubPanel('".$this->subpanel_id."','";
203
+        $ListView->subpanel_id = $this->subpanel_id;
204
+        $ListView->end_link_wrapper = "',true);";
205
+        if ( !empty($this->layout_def_key) ) {
206
+            $ListView->end_link_wrapper = '&layout_def_key='.$this->layout_def_key.$ListView->end_link_wrapper;
207
+        }
208
+
209
+        $where = '';
210
+        $ListView->setQuery($where, '', '', '');
211
+        $ListView->show_export_button = false;
212
+
213
+        //function returns the query that was used to populate sub-panel data.
214
+
215
+        $query=$ListView->process_dynamic_listview($this->parent_module, $this->parent_bean,$this->subpanel_defs);
216
+        $this->subpanel_query=$query;
217
+        $ob_contents = ob_get_contents();
218
+        ob_end_clean();
219
+        return $ob_contents;
220
+    }
221
+
222
+    function display()
223
+    {
224
+        $result_array = array();
225
+
226
+        $return_string = $this->ProcessSubPanelListView($this->template_file,$result_array);
227
+
228
+        print $return_string;
229
+    }
230
+
231
+    function getModulesWithSubpanels()
232
+    {
233
+        global $beanList;
234
+        $dir = dir('modules');
235
+        $modules = array();
236
+        while($entry = $dir->read())
237
+        {
238
+            if(file_exists('modules/' . $entry . '/layout_defs.php'))
239
+            {
240
+                $modules[$entry] = $entry;
241
+            }
242
+        }
243
+        return $modules;
244
+    }
245
+
246
+    static function getModuleSubpanels($module){
247
+        require_once('include/SubPanel/SubPanelDefinitions.php');
248
+            global $beanList, $beanFiles;
249
+            if(!isset($beanList[$module])){
250
+                return array();
251
+            }
252
+
253
+            $class = $beanList[$module];
254
+            require_once($beanFiles[$class]);
255
+            $mod = new $class();
256
+            $spd = new SubPanelDefinitions($mod);
257
+            $tabs = $spd->get_available_tabs(true);
258
+            $ret_tabs = array();
259
+            $reject_tabs = array('history'=>1, 'activities'=>1);
260
+            foreach($tabs as $key=>$tab){
261
+                foreach($tab as $k=>$v){
262 262
                 if (! isset ( $reject_tabs [$k] )) {
263 263
                     $ret_tabs [$k] = $v;
264 264
                 }
265 265
             }
266
-  		}
266
+            }
267 267
 
268
-  		return $ret_tabs;
268
+            return $ret_tabs;
269 269
 
270 270
 
271
-  }
271
+    }
272 272
 
273
-  //saves overrides for defs
274
-  function saveSubPanelDefOverride( $panel, $subsection, $override){
275
-  		global $layout_defs, $beanList;
273
+    //saves overrides for defs
274
+    function saveSubPanelDefOverride( $panel, $subsection, $override){
275
+            global $layout_defs, $beanList;
276 276
 
277
-  		//save the new subpanel
278
-  		$name = "subpanel_layout['list_fields']";
277
+            //save the new subpanel
278
+            $name = "subpanel_layout['list_fields']";
279 279
 
280
-  		//bugfix: load looks for moduleName/metadata/subpanels, not moduleName/subpanels
281
-  		$path = 'custom/modules/'. $panel->_instance_properties['module'] . '/metadata/subpanels';
280
+            //bugfix: load looks for moduleName/metadata/subpanels, not moduleName/subpanels
281
+            $path = 'custom/modules/'. $panel->_instance_properties['module'] . '/metadata/subpanels';
282 282
 
283
-  		//bug# 40171: "Custom subpanels not working as expected"
284
-  		//each custom subpanel needs to have a unique custom def file
285
-  		$filename = $panel->parent_bean->object_name . "_subpanel_" . $panel->name; //bug 42262 (filename with $panel->_instance_properties['get_subpanel_data'] can create problem if had word "function" in it)
286
-  		$oldName1 = '_override' . $panel->parent_bean->object_name .$panel->_instance_properties['module'] . $panel->_instance_properties['subpanel_name'] ;
287
-  		$oldName2 = '_override' . $panel->parent_bean->object_name .$panel->_instance_properties['get_subpanel_data'] ;
288
-  		if (file_exists('custom/Extension/modules/'. $panel->parent_bean->module_dir . "/Ext/Layoutdefs/$oldName1.php")){
289
-  		  unlink('custom/Extension/modules/'. $panel->parent_bean->module_dir . "/Ext/Layoutdefs/$oldName1.php");
290
-  		}
291
-  		if (file_exists('custom/Extension/modules/'. $panel->parent_bean->module_dir . "/Ext/Layoutdefs/$oldName2.php")){
292
-         unlink('custom/Extension/modules/'. $panel->parent_bean->module_dir . "/Ext/Layoutdefs/$oldName2.php");
293
-  		}
294
-  		$extname = '_override'.$filename;
295
-  		//end of bug# 40171
283
+            //bug# 40171: "Custom subpanels not working as expected"
284
+            //each custom subpanel needs to have a unique custom def file
285
+            $filename = $panel->parent_bean->object_name . "_subpanel_" . $panel->name; //bug 42262 (filename with $panel->_instance_properties['get_subpanel_data'] can create problem if had word "function" in it)
286
+            $oldName1 = '_override' . $panel->parent_bean->object_name .$panel->_instance_properties['module'] . $panel->_instance_properties['subpanel_name'] ;
287
+            $oldName2 = '_override' . $panel->parent_bean->object_name .$panel->_instance_properties['get_subpanel_data'] ;
288
+            if (file_exists('custom/Extension/modules/'. $panel->parent_bean->module_dir . "/Ext/Layoutdefs/$oldName1.php")){
289
+            unlink('custom/Extension/modules/'. $panel->parent_bean->module_dir . "/Ext/Layoutdefs/$oldName1.php");
290
+            }
291
+            if (file_exists('custom/Extension/modules/'. $panel->parent_bean->module_dir . "/Ext/Layoutdefs/$oldName2.php")){
292
+            unlink('custom/Extension/modules/'. $panel->parent_bean->module_dir . "/Ext/Layoutdefs/$oldName2.php");
293
+            }
294
+            $extname = '_override'.$filename;
295
+            //end of bug# 40171
296 296
 
297
-  		mkdir_recursive($path, true);
298
-  		write_array_to_file( $name, $override,$path.'/' . $filename .'.php');
297
+            mkdir_recursive($path, true);
298
+            write_array_to_file( $name, $override,$path.'/' . $filename .'.php');
299 299
 
300
-  		//save the override for the layoutdef
300
+            //save the override for the layoutdef
301 301
         //tyoung 10.12.07 pushed panel->name to lowercase to match case in subpaneldefs.php files -
302 302
         //gave error on bad index 'module' as this override key didn't match the key in the subpaneldefs
303
-  		$name = "layout_defs['".  $panel->parent_bean->module_dir. "']['subpanel_setup']['" .strtolower($panel->name). "']";
303
+            $name = "layout_defs['".  $panel->parent_bean->module_dir. "']['subpanel_setup']['" .strtolower($panel->name). "']";
304 304
 //  	$GLOBALS['log']->debug('SubPanel.php->saveSubPanelDefOverride(): '.$name);
305
-  		$newValue = override_value_to_string($name, 'override_subpanel_name', $filename);
306
-  		mkdir_recursive('custom/Extension/modules/'. $panel->parent_bean->module_dir . '/Ext/Layoutdefs', true);
307
-  		$fp = sugar_fopen('custom/Extension/modules/'. $panel->parent_bean->module_dir . "/Ext/Layoutdefs/$extname.php", 'w');
308
-  		fwrite($fp, "<?php\n//auto-generated file DO NOT EDIT\n$newValue\n?>");
309
-  		fclose($fp);
310
-  		require_once('ModuleInstall/ModuleInstaller.php');
311
-  		$moduleInstaller = new ModuleInstaller();
312
-  		$moduleInstaller->silent = true; // make sure that the ModuleInstaller->log() function doesn't echo while rebuilding the layoutdefs
313
-  		$moduleInstaller->rebuild_layoutdefs();
314
-  		if (file_exists('modules/'.  $panel->parent_bean->module_dir . '/layout_defs.php'))
315
-  			include('modules/'.  $panel->parent_bean->module_dir . '/layout_defs.php');
316
-  		if (file_exists('custom/modules/'.  $panel->parent_bean->module_dir . '/Ext/Layoutdefs/layoutdefs.ext.php'))
317
-  			include('custom/modules/'.  $panel->parent_bean->module_dir . '/Ext/Layoutdefs/layoutdefs.ext.php');
318
-  }
319
-
320
-	function get_subpanel_setup($module)
321
-	{
322
-		$subpanel_setup = '';
323
-		$layout_defs = get_layout_defs();
324
-
325
-		if(!empty($layout_defs) && !empty($layout_defs[$module]['subpanel_setup']))
326
-      {
327
-      	$subpanel_setup = $layout_defs[$module]['subpanel_setup'];
328
-      }
329
-
330
-      return $subpanel_setup;
331
-	}
332
-
333
-	/**
334
-	 * Retrieve the subpanel definition from the registered layout_defs arrays.
335
-	 */
336
-	function getSubPanelDefine($module, $subpanel_id)
337
-	{
338
-		$default_subpanel_define = SubPanel::_get_default_subpanel_define($module, $subpanel_id);
339
-		$custom_subpanel_define = SubPanel::_get_custom_subpanel_define($module, $subpanel_id);
340
-
341
-		$subpanel_define = array_merge($default_subpanel_define, $custom_subpanel_define);
342
-
343
-		if(empty($subpanel_define))
344
-		{
345
-			print('Could not load subpanel definition for: ' . $subpanel_id);
346
-		}
347
-
348
-		return $subpanel_define;
349
-	}
350
-
351
-	function _get_custom_subpanel_define($module, $subpanel_id)
352
-	{
353
-		$ret_val = array();
354
-
355
-		if($subpanel_id != '')
356
-		{
357
-			$layout_defs = get_layout_defs();
358
-
359
-			if(!empty($layout_defs[$module]['custom_subpanel_defines'][$subpanel_id]))
360
-			{
361
-				$ret_val = $layout_defs[$module]['custom_subpanel_defines'][$subpanel_id];
362
-			}
363
-		}
305
+            $newValue = override_value_to_string($name, 'override_subpanel_name', $filename);
306
+            mkdir_recursive('custom/Extension/modules/'. $panel->parent_bean->module_dir . '/Ext/Layoutdefs', true);
307
+            $fp = sugar_fopen('custom/Extension/modules/'. $panel->parent_bean->module_dir . "/Ext/Layoutdefs/$extname.php", 'w');
308
+            fwrite($fp, "<?php\n//auto-generated file DO NOT EDIT\n$newValue\n?>");
309
+            fclose($fp);
310
+            require_once('ModuleInstall/ModuleInstaller.php');
311
+            $moduleInstaller = new ModuleInstaller();
312
+            $moduleInstaller->silent = true; // make sure that the ModuleInstaller->log() function doesn't echo while rebuilding the layoutdefs
313
+            $moduleInstaller->rebuild_layoutdefs();
314
+            if (file_exists('modules/'.  $panel->parent_bean->module_dir . '/layout_defs.php'))
315
+                include('modules/'.  $panel->parent_bean->module_dir . '/layout_defs.php');
316
+            if (file_exists('custom/modules/'.  $panel->parent_bean->module_dir . '/Ext/Layoutdefs/layoutdefs.ext.php'))
317
+                include('custom/modules/'.  $panel->parent_bean->module_dir . '/Ext/Layoutdefs/layoutdefs.ext.php');
318
+    }
319
+
320
+    function get_subpanel_setup($module)
321
+    {
322
+        $subpanel_setup = '';
323
+        $layout_defs = get_layout_defs();
324
+
325
+        if(!empty($layout_defs) && !empty($layout_defs[$module]['subpanel_setup']))
326
+        {
327
+            $subpanel_setup = $layout_defs[$module]['subpanel_setup'];
328
+        }
329
+
330
+        return $subpanel_setup;
331
+    }
332
+
333
+    /**
334
+     * Retrieve the subpanel definition from the registered layout_defs arrays.
335
+     */
336
+    function getSubPanelDefine($module, $subpanel_id)
337
+    {
338
+        $default_subpanel_define = SubPanel::_get_default_subpanel_define($module, $subpanel_id);
339
+        $custom_subpanel_define = SubPanel::_get_custom_subpanel_define($module, $subpanel_id);
340
+
341
+        $subpanel_define = array_merge($default_subpanel_define, $custom_subpanel_define);
342
+
343
+        if(empty($subpanel_define))
344
+        {
345
+            print('Could not load subpanel definition for: ' . $subpanel_id);
346
+        }
347
+
348
+        return $subpanel_define;
349
+    }
350
+
351
+    function _get_custom_subpanel_define($module, $subpanel_id)
352
+    {
353
+        $ret_val = array();
354
+
355
+        if($subpanel_id != '')
356
+        {
357
+            $layout_defs = get_layout_defs();
358
+
359
+            if(!empty($layout_defs[$module]['custom_subpanel_defines'][$subpanel_id]))
360
+            {
361
+                $ret_val = $layout_defs[$module]['custom_subpanel_defines'][$subpanel_id];
362
+            }
363
+        }
364 364
 
365
-		return $ret_val;
366
-	}
365
+        return $ret_val;
366
+    }
367 367
 
368
-	function _get_default_subpanel_define($module, $subpanel_id)
369
-	{
370
-		$ret_val = array();
368
+    function _get_default_subpanel_define($module, $subpanel_id)
369
+    {
370
+        $ret_val = array();
371 371
 
372
-		if($subpanel_id != '')
373
-		{
374
-	  		$layout_defs = get_layout_defs();
372
+        if($subpanel_id != '')
373
+        {
374
+                $layout_defs = get_layout_defs();
375 375
 
376
-			if(!empty($layout_defs[$subpanel_id]['default_subpanel_define']))
377
-			{
378
-				$ret_val = $layout_defs[$subpanel_id]['default_subpanel_define'];
379
-			}
380
-		}
376
+            if(!empty($layout_defs[$subpanel_id]['default_subpanel_define']))
377
+            {
378
+                $ret_val = $layout_defs[$subpanel_id]['default_subpanel_define'];
379
+            }
380
+        }
381 381
 
382
-		return $ret_val;
383
-	}
382
+        return $ret_val;
383
+    }
384 384
 
385
-	function buildSearchQuery()
386
-	{
387
-		require_once('include/SubPanel/SubPanelSearchForm.php');
385
+    function buildSearchQuery()
386
+    {
387
+        require_once('include/SubPanel/SubPanelSearchForm.php');
388 388
 
389
-		$module = 'Meetings';
389
+        $module = 'Meetings';
390 390
 
391
-		$seed = new Meeting();
391
+        $seed = new Meeting();
392 392
 
393
-		$_REQUEST['searchFormTab'] = 'basic_search';
394
-		$searchForm = new SubPanelSearchForm($seed, $module, $this);
393
+        $_REQUEST['searchFormTab'] = 'basic_search';
394
+        $searchForm = new SubPanelSearchForm($seed, $module, $this);
395 395
 
396
-		$searchMetaData = $searchForm->retrieveSearchDefs($module);
397
-		$searchForm->setup($searchMetaData['searchdefs'], $searchMetaData['searchFields'], 'SubpanelSearchFormGeneric.tpl', 'basic_search');
396
+        $searchMetaData = $searchForm->retrieveSearchDefs($module);
397
+        $searchForm->setup($searchMetaData['searchdefs'], $searchMetaData['searchFields'], 'SubpanelSearchFormGeneric.tpl', 'basic_search');
398 398
 
399
-		$searchForm->populateFromRequest();
399
+        $searchForm->populateFromRequest();
400 400
 
401
-		$where_clauses = $searchForm->generateSearchWhere(true, $seed->module_dir);
401
+        $where_clauses = $searchForm->generateSearchWhere(true, $seed->module_dir);
402 402
 
403
-		if (count($where_clauses) > 0 )$this->search_query = '('. implode(' ) AND ( ', $where_clauses) . ')';
404
-		$GLOBALS['log']->info("Subpanel Where Clause: $this->search_query");
403
+        if (count($where_clauses) > 0 )$this->search_query = '('. implode(' ) AND ( ', $where_clauses) . ')';
404
+        $GLOBALS['log']->info("Subpanel Where Clause: $this->search_query");
405 405
 
406
-		return print_r($where_clauses,true);
407
-	}
406
+        return print_r($where_clauses,true);
407
+    }
408 408
 
409
-	function get_searchdefs($module)
410
-	{
411
-		$thisPanel =& $this->subpanel_defs;
412
-		$subpanel_defs = $thisPanel->_instance_properties;
409
+    function get_searchdefs($module)
410
+    {
411
+        $thisPanel =& $this->subpanel_defs;
412
+        $subpanel_defs = $thisPanel->_instance_properties;
413 413
 
414
-		if(isset($subpanel_defs['searchdefs'])){
415
-			$searchdefs[$module]['layout']['basic_search'] = $subpanel_defs['searchdefs'];
416
-			$searchdefs[$module]['templateMeta'] = Array ('maxColumns' => 3, 'maxColumnsBasic' => 4, 'widths' => Array ( 'label' => 10, 'field' => 30 )) ;
417
-			return $searchdefs;
418
-		}
414
+        if(isset($subpanel_defs['searchdefs'])){
415
+            $searchdefs[$module]['layout']['basic_search'] = $subpanel_defs['searchdefs'];
416
+            $searchdefs[$module]['templateMeta'] = Array ('maxColumns' => 3, 'maxColumnsBasic' => 4, 'widths' => Array ( 'label' => 10, 'field' => 30 )) ;
417
+            return $searchdefs;
418
+        }
419 419
 
420
-		return false;
421
-	}
420
+        return false;
421
+    }
422 422
 
423
-	function getSearchForm()
424
-	{
425
-		require_once('include/SubPanel/SubPanelSearchForm.php');
423
+    function getSearchForm()
424
+    {
425
+        require_once('include/SubPanel/SubPanelSearchForm.php');
426 426
 
427
-		$module = 'Meetings';
427
+        $module = 'Meetings';
428 428
 
429
-		$seed = new Meeting();
429
+        $seed = new Meeting();
430 430
 
431
-		$searchForm = new SubPanelSearchForm($seed, $module, $this);
431
+        $searchForm = new SubPanelSearchForm($seed, $module, $this);
432 432
 
433
-		$searchMetaData = $searchForm->retrieveSearchDefs($module);
433
+        $searchMetaData = $searchForm->retrieveSearchDefs($module);
434 434
 
435
-		if ($subpanel_searchMetaData = $this->get_searchdefs($module)){
435
+        if ($subpanel_searchMetaData = $this->get_searchdefs($module)){
436 436
 
437
-			$searchForm->setup($subpanel_searchMetaData, $searchMetaData['searchFields'], 'SubpanelSearchFormGeneric.tpl', 'basic_search');
437
+            $searchForm->setup($subpanel_searchMetaData, $searchMetaData['searchFields'], 'SubpanelSearchFormGeneric.tpl', 'basic_search');
438 438
 
439
-			if(!empty($this->collections))
440
-				$searchForm->searchFields['collection'] = array();
439
+            if(!empty($this->collections))
440
+                $searchForm->searchFields['collection'] = array();
441 441
 
442
-			$searchForm->populateFromRequest();
442
+            $searchForm->populateFromRequest();
443 443
 
444
-			return $searchForm->display();
445
-		}
444
+            return $searchForm->display();
445
+        }
446 446
 
447
-		return '';
448
-	}
447
+        return '';
448
+    }
449 449
 }
450 450
 ?>
Please login to merge, or discard this patch.
include/SubPanel/registered_layout_defs.php 1 patch
Indentation   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -49,8 +49,8 @@
 block discarded – undo
49 49
 function get_layout_defs()
50 50
 {
51 51
     //TODO add global memory cache support here.  If there is an in memory cache, leverage it.
52
-	global $layout_defs;
53
-	return $layout_defs;
52
+    global $layout_defs;
53
+    return $layout_defs;
54 54
 }
55 55
 
56 56
 ?>
57 57
\ No newline at end of file
Please login to merge, or discard this patch.
include/SubPanel/SubPanelTilesTabs.php 1 patch
Indentation   +51 added lines, -51 removed lines patch added patch discarded remove patch
@@ -48,15 +48,15 @@  discard block
 block discarded – undo
48 48
 class SubPanelTilesTabs extends SubPanelTiles
49 49
 {
50 50
 
51
-	function SubPanelTiles(&$focus, $layout_def_key='', $layout_def_override = '')
52
-	{
51
+    function SubPanelTiles(&$focus, $layout_def_key='', $layout_def_override = '')
52
+    {
53 53
 
54
-		$this->focus = $focus;
55
-		$this->id = $focus->id;
56
-		$this->module = $focus->module_dir;
57
-		$this->layout_def_key = $layout_def_key;
58
-		$this->subpanel_definitions = new SubPanelDefinitions($focus, $layout_def_key, $layout_def_override);
59
-	}
54
+        $this->focus = $focus;
55
+        $this->id = $focus->id;
56
+        $this->module = $focus->module_dir;
57
+        $this->layout_def_key = $layout_def_key;
58
+        $this->subpanel_definitions = new SubPanelDefinitions($focus, $layout_def_key, $layout_def_override);
59
+    }
60 60
 
61 61
     function getSubpanelGroupLayout($selectedGroup)
62 62
     {
@@ -77,9 +77,9 @@  discard block
 block discarded – undo
77 77
     {
78 78
         //WDong Bug: 12258 "All" tab in the middle of a record's detail view is not localized.
79 79
         if($key=='All')
80
-    	{
81
-    		$key=translate('LBL_TABGROUP_ALL');
82
-    	}
80
+        {
81
+            $key=translate('LBL_TABGROUP_ALL');
82
+        }
83 83
         $usersCustomLayout = SubPanelTilesTabs::getSubpanelGroupLayout($key);
84 84
         if(!empty($usersCustomLayout))
85 85
         {
@@ -91,7 +91,7 @@  discard block
 block discarded – undo
91 91
             $tabs = array_intersect($usersCustomLayout, $tabs);
92 92
             foreach($diff as $subpanel)
93 93
             {
94
-            	$tabs []= $subpanel;
94
+                $tabs []= $subpanel;
95 95
             }
96 96
         }
97 97
 
@@ -112,39 +112,39 @@  discard block
 block discarded – undo
112 112
     {
113 113
         //WDong Bug: 12258 "All" tab in the middle of a record's detail view is not localized.
114 114
         if($selectedGroup=='All')
115
-        	$selectedGroup=translate('LBL_TABGROUP_ALL');
116
-
117
-    	// Set up a mapping from subpanelID, found in the $tabs list, to the source module name
118
-    	// As the $GLOBALS['tabStructure'] array holds the Group Tabs by module name we need to efficiently convert between the two
119
-    	// when constructing the subpanel tabs
120
-    	// Note that we can't use the very similar GroupedTabStructure class as it lacks this mapping, and logically, it is designed
121
-    	// for use when constructing the module by module tabs, not the subpanel tabs, as we move away from using module names to represent
122
-    	// subpanels, and use unique subpanel IDs instead.
123
-
124
-    	$moduleNames = array () ;
125
-    	foreach ( $tabs as $subpanelID )
126
-    	{
115
+            $selectedGroup=translate('LBL_TABGROUP_ALL');
116
+
117
+        // Set up a mapping from subpanelID, found in the $tabs list, to the source module name
118
+        // As the $GLOBALS['tabStructure'] array holds the Group Tabs by module name we need to efficiently convert between the two
119
+        // when constructing the subpanel tabs
120
+        // Note that we can't use the very similar GroupedTabStructure class as it lacks this mapping, and logically, it is designed
121
+        // for use when constructing the module by module tabs, not the subpanel tabs, as we move away from using module names to represent
122
+        // subpanels, and use unique subpanel IDs instead.
123
+
124
+        $moduleNames = array () ;
125
+        foreach ( $tabs as $subpanelID )
126
+        {
127 127
             // Bug #44344 : Custom relationships under same module only show once in subpanel tabs
128 128
             // use object property instead new object to have ability run unit test (can override subpanel_definitions)
129 129
             $subpanel =  $this->subpanel_definitions->load_subpanel( $subpanelID );
130
-    		if ($subpanel !== false)
131
-    		  $moduleNames [ $subpanelID ] = $subpanel->get_module_name() ;
132
-    	}
130
+            if ($subpanel !== false)
131
+                $moduleNames [ $subpanelID ] = $subpanel->get_module_name() ;
132
+        }
133 133
 
134
-    	$groups =  array () ;
135
-    	$found = array () ;
134
+        $groups =  array () ;
135
+        $found = array () ;
136 136
 
137 137
         foreach( $GLOBALS['tabStructure'] as $mainTab => $subModules)
138 138
         {
139 139
             foreach( $subModules['modules'] as $key => $subModule )
140 140
             {
141
-    			foreach ( $tabs as $subpanelID )
141
+                foreach ( $tabs as $subpanelID )
142 142
                     if (isset($moduleNames[ $subpanelID ] ) && strcasecmp( $subModule , $moduleNames[ $subpanelID ] ) === 0)
143 143
                     {
144 144
                         // Bug #44344 : Custom relationships under same module only show once in subpanel tabs
145 145
                         $groups [ translate ( $mainTab ) ] [ 'modules' ] [] = $subpanelID ;
146
-                    	$found [ $subpanelID ] = true ;
147
-                	}
146
+                        $found [ $subpanelID ] = true ;
147
+                    }
148 148
             }
149 149
         }
150 150
 
@@ -152,8 +152,8 @@  discard block
 block discarded – undo
152 152
 
153 153
         foreach( $tabs as $subpanelID )
154 154
         {
155
-        	if ( ! isset ( $found [ $subpanelID ] ) )
156
-	        	$groups [ translate ('LBL_TABGROUP_OTHER') ]['modules'] [] = $subpanelID ;
155
+            if ( ! isset ( $found [ $subpanelID ] ) )
156
+                $groups [ translate ('LBL_TABGROUP_OTHER') ]['modules'] [] = $subpanelID ;
157 157
         }
158 158
 
159 159
         /* Move history to same tab as activities */
@@ -161,11 +161,11 @@  discard block
 block discarded – undo
161 161
         {
162 162
             foreach($groups as $mainTab => $group)
163 163
             {
164
-            	if(in_array('activities', array_map('strtolower', $group['modules'])))
164
+                if(in_array('activities', array_map('strtolower', $group['modules'])))
165 165
                 {
166
-                	if(!in_array('history', array_map('strtolower', $group['modules'])))
166
+                    if(!in_array('history', array_map('strtolower', $group['modules'])))
167 167
                     {
168
-                    	/* Move hist from there to here */
168
+                        /* Move hist from there to here */
169 169
                         $groups[$mainTab]['modules'] []= 'history';
170 170
                     }
171 171
                 }
@@ -174,7 +174,7 @@  discard block
 block discarded – undo
174 174
                     unset($groups[$mainTab]['modules'][$i]);
175 175
                     if(empty($groups[$mainTab]['modules']))
176 176
                     {
177
-                    	unset($groups[$mainTab]);
177
+                        unset($groups[$mainTab]);
178 178
                     }
179 179
                 }
180 180
             }
@@ -185,7 +185,7 @@  discard block
 block discarded – undo
185 185
          * it will be overwritten in this union operation.
186 186
          */
187 187
         if(count($groups) <= 1)
188
-        	$groups = array(translate('LBL_TABGROUP_ALL') => array('label' => translate('LBL_TABGROUP_ALL'), 'modules' => $tabs));
188
+            $groups = array(translate('LBL_TABGROUP_ALL') => array('label' => translate('LBL_TABGROUP_ALL'), 'modules' => $tabs));
189 189
         else
190 190
             $groups = array(translate('LBL_TABGROUP_ALL') => array('label' => translate('LBL_TABGROUP_ALL'), 'modules' => $tabs)) + $groups;
191 191
         /* Note - all $display checking and array_intersects with $tabs
@@ -197,14 +197,14 @@  discard block
 block discarded – undo
197 197
         $retTabs = array();
198 198
         if($showTabs)
199 199
         {
200
-        	require_once('include/SubPanel/SugarTab.php');
201
-        	$sugarTab = new SugarTab();
200
+            require_once('include/SubPanel/SugarTab.php');
201
+            $sugarTab = new SugarTab();
202 202
 
203 203
             $displayTabs = array();
204 204
             $otherTabs = array();
205 205
 
206
-    	    foreach ($groups as $key=>$tab)
207
-    		{
206
+            foreach ($groups as $key=>$tab)
207
+            {
208 208
                 $display = false;
209 209
                 foreach($tab['modules'] as $subkey=>$subtab)
210 210
                 {
@@ -227,9 +227,9 @@  discard block
 block discarded – undo
227 227
                     $relevantTabs = SubPanelTilesTabs::applyUserCustomLayoutToTabs($tabs, $key);
228 228
 
229 229
                     $sugarTabs[$key] = array(//'url'=>'index.php?module=' . $_REQUEST['module'] . '&record=' . $_REQUEST['record'] . '&action=' . $_REQUEST['action']. '&subpanel=' . $key.'#tabs',
230
-                                         //'url'=>"javascript:SUGAR.util.retrieveAndFill('index.php?to_pdf=1&module=MySettings&action=LoadTabSubpanels&loadModule={$_REQUEST['module']}&record={$_REQUEST['record']}&subpanel=$key','subpanel_list',null,null,null);",
231
-                                         'label'=>( !empty($tab['label']) ? $tab['label']: $key ),
232
-                                         'type'=>$selected);
230
+                                            //'url'=>"javascript:SUGAR.util.retrieveAndFill('index.php?to_pdf=1&module=MySettings&action=LoadTabSubpanels&loadModule={$_REQUEST['module']}&record={$_REQUEST['record']}&subpanel=$key','subpanel_list',null,null,null);",
231
+                                            'label'=>( !empty($tab['label']) ? $tab['label']: $key ),
232
+                                            'type'=>$selected);
233 233
 
234 234
                     $otherTabs[$key] = array('key'=>$key, 'tabs'=>array());
235 235
 
@@ -246,7 +246,7 @@  discard block
 block discarded – undo
246 246
                         $retTabs = $orderedTabs;
247 247
                     }
248 248
                 }
249
-    		}
249
+            }
250 250
 
251 251
             if(empty($displayTabs) && !empty($otherTabs))
252 252
             {
@@ -258,8 +258,8 @@  discard block
 block discarded – undo
258 258
             }
259 259
 
260 260
             if (!empty($sugarTabs) || !empty($otherTabs) ) {
261
-            	$sugarTab->setup($sugarTabs, $otherTabs, $displayTabs, $selectedGroup);
262
-            	$sugarTab->display();
261
+                $sugarTab->setup($sugarTabs, $otherTabs, $displayTabs, $selectedGroup);
262
+                $sugarTab->display();
263 263
             }
264 264
         }
265 265
         else
@@ -269,7 +269,7 @@  discard block
 block discarded – undo
269 269
             $retTabs = array_intersect($tabs, array_map('strtolower', $groups[$selectedGroup]['modules']));
270 270
         }
271 271
 
272
-		return $retTabs;
273
-	}
272
+        return $retTabs;
273
+    }
274 274
 }
275 275
 ?>
Please login to merge, or discard this patch.
include/SubPanel/SubPanelSearchForm.php 1 patch
Indentation   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -1,9 +1,9 @@
 block discarded – undo
1 1
 <?php
2 2
 /**
3
- * SubPanelSearchForm.php
4
- * @author SalesAgility <[email protected]>
5
- * Date: 28/01/14
6
- */
3
+     * SubPanelSearchForm.php
4
+     * @author SalesAgility <[email protected]>
5
+     * Date: 28/01/14
6
+     */
7 7
 
8 8
 require_once('include/SearchForm/SearchForm2.php');
9 9
 
Please login to merge, or discard this patch.
include/generic/SugarWidgets/SugarWidgetSubPanelGetLatestButton.php 1 patch
Indentation   +29 added lines, -29 removed lines patch added patch discarded remove patch
@@ -45,40 +45,40 @@
 block discarded – undo
45 45
 
46 46
 class SugarWidgetSubPanelGetLatestButton extends SugarWidgetField
47 47
 {
48
-	function displayHeaderCell($layout_def)
49
-	{
50
-		return '&nbsp;';
51
-	}
48
+    function displayHeaderCell($layout_def)
49
+    {
50
+        return '&nbsp;';
51
+    }
52 52
 
53
-	function displayList($layout_def)
54
-	{
55
-		//if the contract has been executed or selected_revision is same as latest revision
56
-		//then hide the latest button. 		
57
-		//if the contract state is executed or document is not a template hide this action.
58
-		if ((!empty($layout_def['fields']['CONTRACT_STATUS']) && $layout_def['fields']['CONTRACT_STATUS']=='executed') or
59
-			$layout_def['fields']['SELECTED_REVISION_ID']== $layout_def['fields']['LATEST_REVISION_ID']) {
60
-			return "";
61
-		}
53
+    function displayList($layout_def)
54
+    {
55
+        //if the contract has been executed or selected_revision is same as latest revision
56
+        //then hide the latest button. 		
57
+        //if the contract state is executed or document is not a template hide this action.
58
+        if ((!empty($layout_def['fields']['CONTRACT_STATUS']) && $layout_def['fields']['CONTRACT_STATUS']=='executed') or
59
+            $layout_def['fields']['SELECTED_REVISION_ID']== $layout_def['fields']['LATEST_REVISION_ID']) {
60
+            return "";
61
+        }
62 62
 		
63
-		global $app_strings;
63
+        global $app_strings;
64 64
 		
65 65
 
66
-		$href = 'index.php?module=' . $layout_def['module']
67
-			. '&action=' . 'GetLatestRevision'
68
-			. '&record=' . $layout_def['fields']['ID']
69
-			. '&return_module=' . $_REQUEST['module']
70
-			. '&return_action=' . 'DetailView'
71
-			. '&return_id=' . $_REQUEST['record']
72
-			. '&get_latest_for_id=' . $layout_def['fields']['LINKED_ID'];
66
+        $href = 'index.php?module=' . $layout_def['module']
67
+            . '&action=' . 'GetLatestRevision'
68
+            . '&record=' . $layout_def['fields']['ID']
69
+            . '&return_module=' . $_REQUEST['module']
70
+            . '&return_action=' . 'DetailView'
71
+            . '&return_id=' . $_REQUEST['record']
72
+            . '&get_latest_for_id=' . $layout_def['fields']['LINKED_ID'];
73 73
 
74
-		$edit_icon_html = SugarThemeRegistry::current()->getImage( 'getLatestDocument','align="absmiddle" border="0"',null,null,'.gif',$app_strings['LNK_GET_LATEST']);
75
-		if($layout_def['EditView']){
76
-			return '<a href="' . $href . '"' . "title ='". $app_strings['LNK_GET_LATEST_TOOLTIP']  ."'"
77
-			. 'class="listViewTdToolsS1">' . $edit_icon_html . '&nbsp;' . $app_strings['LNK_GET_LATEST'] .'</a>&nbsp;';
78
-		}else{
79
-			return '';
80
-		}
81
-	}
74
+        $edit_icon_html = SugarThemeRegistry::current()->getImage( 'getLatestDocument','align="absmiddle" border="0"',null,null,'.gif',$app_strings['LNK_GET_LATEST']);
75
+        if($layout_def['EditView']){
76
+            return '<a href="' . $href . '"' . "title ='". $app_strings['LNK_GET_LATEST_TOOLTIP']  ."'"
77
+            . 'class="listViewTdToolsS1">' . $edit_icon_html . '&nbsp;' . $app_strings['LNK_GET_LATEST'] .'</a>&nbsp;';
78
+        }else{
79
+            return '';
80
+        }
81
+    }
82 82
 		
83 83
 }
84 84
 
Please login to merge, or discard this patch.
include/generic/SugarWidgets/SugarWidgetSubPanelTopCreateLeadNameButton.php 1 patch
Indentation   +67 added lines, -67 removed lines patch added patch discarded remove patch
@@ -51,77 +51,77 @@
 block discarded – undo
51 51
         return parent::getWidgetId();
52 52
     }
53 53
 
54
-	function display($defines, $additionalFormFields = NULL, $nonbutton = false)
55
-	{
56
-		global $app_strings;
57
-		global $currentModule;
54
+    function display($defines, $additionalFormFields = NULL, $nonbutton = false)
55
+    {
56
+        global $app_strings;
57
+        global $currentModule;
58 58
 
59
-		$title = $app_strings['LBL_NEW_BUTTON_TITLE'];
60
-		//$accesskey = $app_strings['LBL_NEW_BUTTON_KEY'];
61
-		$value = $app_strings['LBL_NEW_BUTTON_LABEL'];
62
-		$this->module = 'Leads';
63
-		if( ACLController::moduleSupportsACL($defines['module'])  && !ACLController::checkAccess($defines['module'], 'edit', true)){
64
-			$button = "<input title='$title'class='button' type='button' name='button' value='  $value  ' disabled/>\n";
65
-			return $button;
66
-		}
59
+        $title = $app_strings['LBL_NEW_BUTTON_TITLE'];
60
+        //$accesskey = $app_strings['LBL_NEW_BUTTON_KEY'];
61
+        $value = $app_strings['LBL_NEW_BUTTON_LABEL'];
62
+        $this->module = 'Leads';
63
+        if( ACLController::moduleSupportsACL($defines['module'])  && !ACLController::checkAccess($defines['module'], 'edit', true)){
64
+            $button = "<input title='$title'class='button' type='button' name='button' value='  $value  ' disabled/>\n";
65
+            return $button;
66
+        }
67 67
 		
68
-		$additionalFormFields = array();
68
+        $additionalFormFields = array();
69 69
 		
70
-		//from accounts
71
-		if ($defines['focus']->object_name == 'Account') {
72
-			if(isset($defines['focus']->billing_address_street)) 
73
-				$additionalFormFields['primary_address_street'] = $defines['focus']->billing_address_street;
74
-			if(isset($defines['focus']->billing_address_city)) 
75
-				$additionalFormFields['primary_address_city'] = $defines['focus']->billing_address_city;						  		
76
-			if(isset($defines['focus']->billing_address_state)) 
77
-				$additionalFormFields['primary_address_state'] = $defines['focus']->billing_address_state;
78
-			if(isset($defines['focus']->billing_address_country)) 
79
-				$additionalFormFields['primary_address_country'] = $defines['focus']->billing_address_country;
80
-			if(isset($defines['focus']->billing_address_postalcode)) 
81
-				$additionalFormFields['primary_address_postalcode'] = $defines['focus']->billing_address_postalcode;
82
-			if(isset($defines['focus']->phone_office)) 
83
-				$additionalFormFields['phone_work'] = $defines['focus']->phone_office;
84
-			if(isset($defines['focus']->id)) 
85
-				$additionalFormFields['account_id'] = $defines['focus']->id;
86
-		}
87
-		//from contacts
88
-		if ($defines['focus']->object_name == 'Contact') {
89
-			if(isset($defines['focus']->salutation)) 
90
-				$additionalFormFields['salutation'] = $defines['focus']->salutation;
91
-			if(isset($defines['focus']->first_name)) 
92
-				$additionalFormFields['first_name'] = $defines['focus']->first_name;
93
-			if(isset($defines['focus']->last_name)) 
94
-				$additionalFormFields['last_name'] = $defines['focus']->last_name;
95
-			if(isset($defines['focus']->primary_address_street)) 
96
-				$additionalFormFields['primary_address_street'] = $defines['focus']->primary_address_street;
97
-			if(isset($defines['focus']->primary_address_city)) 
98
-				$additionalFormFields['primary_address_city'] = $defines['focus']->primary_address_city;						  		
99
-			if(isset($defines['focus']->primary_address_state)) 
100
-				$additionalFormFields['primary_address_state'] = $defines['focus']->primary_address_state;
101
-			if(isset($defines['focus']->primary_address_country)) 
102
-				$additionalFormFields['primary_address_country'] = $defines['focus']->primary_address_country;
103
-			if(isset($defines['focus']->primary_address_postalcode)) 
104
-				$additionalFormFields['primary_address_postalcode'] = $defines['focus']->primary_address_postalcode;
105
-			if(isset($defines['focus']->phone_work)) 
106
-				$additionalFormFields['phone_work'] = $defines['focus']->phone_work;
107
-			if(isset($defines['focus']->id)) 
108
-				$additionalFormFields['contact_id'] = $defines['focus']->id;
109
-		}
70
+        //from accounts
71
+        if ($defines['focus']->object_name == 'Account') {
72
+            if(isset($defines['focus']->billing_address_street)) 
73
+                $additionalFormFields['primary_address_street'] = $defines['focus']->billing_address_street;
74
+            if(isset($defines['focus']->billing_address_city)) 
75
+                $additionalFormFields['primary_address_city'] = $defines['focus']->billing_address_city;						  		
76
+            if(isset($defines['focus']->billing_address_state)) 
77
+                $additionalFormFields['primary_address_state'] = $defines['focus']->billing_address_state;
78
+            if(isset($defines['focus']->billing_address_country)) 
79
+                $additionalFormFields['primary_address_country'] = $defines['focus']->billing_address_country;
80
+            if(isset($defines['focus']->billing_address_postalcode)) 
81
+                $additionalFormFields['primary_address_postalcode'] = $defines['focus']->billing_address_postalcode;
82
+            if(isset($defines['focus']->phone_office)) 
83
+                $additionalFormFields['phone_work'] = $defines['focus']->phone_office;
84
+            if(isset($defines['focus']->id)) 
85
+                $additionalFormFields['account_id'] = $defines['focus']->id;
86
+        }
87
+        //from contacts
88
+        if ($defines['focus']->object_name == 'Contact') {
89
+            if(isset($defines['focus']->salutation)) 
90
+                $additionalFormFields['salutation'] = $defines['focus']->salutation;
91
+            if(isset($defines['focus']->first_name)) 
92
+                $additionalFormFields['first_name'] = $defines['focus']->first_name;
93
+            if(isset($defines['focus']->last_name)) 
94
+                $additionalFormFields['last_name'] = $defines['focus']->last_name;
95
+            if(isset($defines['focus']->primary_address_street)) 
96
+                $additionalFormFields['primary_address_street'] = $defines['focus']->primary_address_street;
97
+            if(isset($defines['focus']->primary_address_city)) 
98
+                $additionalFormFields['primary_address_city'] = $defines['focus']->primary_address_city;						  		
99
+            if(isset($defines['focus']->primary_address_state)) 
100
+                $additionalFormFields['primary_address_state'] = $defines['focus']->primary_address_state;
101
+            if(isset($defines['focus']->primary_address_country)) 
102
+                $additionalFormFields['primary_address_country'] = $defines['focus']->primary_address_country;
103
+            if(isset($defines['focus']->primary_address_postalcode)) 
104
+                $additionalFormFields['primary_address_postalcode'] = $defines['focus']->primary_address_postalcode;
105
+            if(isset($defines['focus']->phone_work)) 
106
+                $additionalFormFields['phone_work'] = $defines['focus']->phone_work;
107
+            if(isset($defines['focus']->id)) 
108
+                $additionalFormFields['contact_id'] = $defines['focus']->id;
109
+        }
110 110
 		
111
-		//from opportunities
112
-		if ($defines['focus']->object_name == 'Opportunity') {
113
-			if(isset($defines['focus']->id)) 
114
-				$additionalFormFields['opportunity_id'] = $defines['focus']->id;
115
-			if(isset($defines['focus']->account_name)) 
116
-				$additionalFormFields['account_name'] = $defines['focus']->account_name;
117
-			if(isset($defines['focus']->account_id)) 
118
-				$additionalFormFields['account_id'] = $defines['focus']->account_id;
119
-		}
111
+        //from opportunities
112
+        if ($defines['focus']->object_name == 'Opportunity') {
113
+            if(isset($defines['focus']->id)) 
114
+                $additionalFormFields['opportunity_id'] = $defines['focus']->id;
115
+            if(isset($defines['focus']->account_name)) 
116
+                $additionalFormFields['account_name'] = $defines['focus']->account_name;
117
+            if(isset($defines['focus']->account_id)) 
118
+                $additionalFormFields['account_id'] = $defines['focus']->account_id;
119
+        }
120 120
 		
121
-		$button = $this->_get_form($defines, $additionalFormFields);
122
-		$button .= "<input title='$title' class='button' type='submit' name='{$this->getWidgetId()}_button' id='{$this->getWidgetId()}' value='  $value  '/>\n";
123
-		$button .= "</form>";
124
-		return $button;
125
-	}
121
+        $button = $this->_get_form($defines, $additionalFormFields);
122
+        $button .= "<input title='$title' class='button' type='submit' name='{$this->getWidgetId()}_button' id='{$this->getWidgetId()}' value='  $value  '/>\n";
123
+        $button .= "</form>";
124
+        return $button;
125
+    }
126 126
 }
127 127
 ?>
128 128
\ No newline at end of file
Please login to merge, or discard this patch.
include/generic/SugarWidgets/SugarWidgetFieldrelate.php 1 patch
Indentation   +16 added lines, -16 removed lines patch added patch discarded remove patch
@@ -174,25 +174,25 @@  discard block
 block discarded – undo
174 174
         return $this->_get_column_select($layout_def) . " IN ('" . implode("', '", $ids) . "')";
175 175
     }
176 176
 
177
-	//for to_pdf/to_csv
178
-	function displayListPlain($layout_def) {
179
-	    $reporter = $this->layout_manager->getAttribute("reporter");
180
-		$field_def = $reporter->all_fields[$layout_def['column_key']];
181
-		$display = strtoupper($field_def['secondary_table'].'_name');
182
-		//#31797  , we should get the table alias in a global registered array:selected_loaded_custom_links
183
-		if(!empty($reporter->selected_loaded_custom_links) && !empty($reporter->selected_loaded_custom_links[$field_def['secondary_table']])){
184
-			$display = strtoupper($reporter->selected_loaded_custom_links[$field_def['secondary_table']]['join_table_alias'].'_name');
185
-		}
177
+    //for to_pdf/to_csv
178
+    function displayListPlain($layout_def) {
179
+        $reporter = $this->layout_manager->getAttribute("reporter");
180
+        $field_def = $reporter->all_fields[$layout_def['column_key']];
181
+        $display = strtoupper($field_def['secondary_table'].'_name');
182
+        //#31797  , we should get the table alias in a global registered array:selected_loaded_custom_links
183
+        if(!empty($reporter->selected_loaded_custom_links) && !empty($reporter->selected_loaded_custom_links[$field_def['secondary_table']])){
184
+            $display = strtoupper($reporter->selected_loaded_custom_links[$field_def['secondary_table']]['join_table_alias'].'_name');
185
+        }
186 186
         elseif(isset($field_def['rep_rel_name']) && isset($reporter->selected_loaded_custom_links) && !empty($reporter->selected_loaded_custom_links[$field_def['secondary_table'].'_'.$field_def['rep_rel_name']]))
187 187
         {
188 188
             $display = strtoupper($reporter->selected_loaded_custom_links[$field_def['secondary_table'].'_'.$field_def['rep_rel_name']]['join_table_alias'].'_name');
189 189
         }
190
-		elseif(!empty($reporter->selected_loaded_custom_links) && !empty($reporter->selected_loaded_custom_links[$field_def['secondary_table'].'_'.$field_def['name']])){
191
-			$display = strtoupper($reporter->selected_loaded_custom_links[$field_def['secondary_table'].'_'.$field_def['name']]['join_table_alias'].'_name');
192
-		}
193
-		$cell = $layout_def['fields'][$display];
194
-		return $cell;
195
-	}
190
+        elseif(!empty($reporter->selected_loaded_custom_links) && !empty($reporter->selected_loaded_custom_links[$field_def['secondary_table'].'_'.$field_def['name']])){
191
+            $display = strtoupper($reporter->selected_loaded_custom_links[$field_def['secondary_table'].'_'.$field_def['name']]['join_table_alias'].'_name');
192
+        }
193
+        $cell = $layout_def['fields'][$display];
194
+        return $cell;
195
+    }
196 196
 
197 197
     function displayList($layout_def) {
198 198
         $reporter = $this->layout_manager->getAttribute("reporter");
@@ -201,7 +201,7 @@  discard block
 block discarded – undo
201 201
 
202 202
         //#31797  , we should get the table alias in a global registered array:selected_loaded_custom_links
203 203
         if(!empty($reporter->selected_loaded_custom_links) && !empty($reporter->selected_loaded_custom_links[$field_def['secondary_table']])){
204
-             $display = strtoupper($reporter->selected_loaded_custom_links[$field_def['secondary_table']]['join_table_alias'].'_name');
204
+                $display = strtoupper($reporter->selected_loaded_custom_links[$field_def['secondary_table']]['join_table_alias'].'_name');
205 205
         }
206 206
         elseif(isset($field_def['rep_rel_name']) && isset($reporter->selected_loaded_custom_links) && !empty($reporter->selected_loaded_custom_links[$field_def['secondary_table'].'_'.$field_def['rep_rel_name']]))
207 207
         {
Please login to merge, or discard this patch.