]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - json.php
Add .gitignore for custom/ directory
[Github/sugarcrm.git] / json.php
1 <?php
2 if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
3 /*********************************************************************************
4  * SugarCRM Community Edition is a customer relationship management program developed by
5  * SugarCRM, Inc. Copyright (C) 2004-2011 SugarCRM Inc.
6  * 
7  * This program is free software; you can redistribute it and/or modify it under
8  * the terms of the GNU Affero General Public License version 3 as published by the
9  * Free Software Foundation with the addition of the following permission added
10  * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
11  * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
12  * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
13  * 
14  * This program is distributed in the hope that it will be useful, but WITHOUT
15  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16  * FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
17  * details.
18  * 
19  * You should have received a copy of the GNU Affero General Public License along with
20  * this program; if not, see http://www.gnu.org/licenses or write to the Free
21  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
22  * 02110-1301 USA.
23  * 
24  * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
25  * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
26  * 
27  * The interactive user interfaces in modified source and object code versions
28  * of this program must display Appropriate Legal Notices, as required under
29  * Section 5 of the GNU Affero General Public License version 3.
30  * 
31  * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
32  * these Appropriate Legal Notices must retain the display of the "Powered by
33  * SugarCRM" logo. If the display of the logo is not reasonably feasible for
34  * technical reasons, the Appropriate Legal Notices must display the words
35  * "Powered by SugarCRM".
36  ********************************************************************************/
37
38
39 ///////////////////////////////////////////////////////////////////////////////
40 ////    HELPER FUNCTIONS
41 function json_retrieve() {
42         global $beanFiles,$beanList;
43         require_once($beanFiles[$beanList[$_REQUEST['module']]]);
44
45         $json = getJSONobj();
46         
47         $focus = new $beanList[$_REQUEST['module']];
48         $focus->retrieve($_REQUEST['record']);
49
50         $all_fields = array_merge($focus->column_fields,$focus->additional_column_fields);
51
52         $obj = array();
53         $ret = array();
54
55         foreach($all_fields as $field) {
56                 if(isset($focus->$field)) {
57                         $obj[$field] = $focus->$field;
58                 }
59         }
60
61         // cn: bug 12274 - defend against CSRF
62         $ret['fields'] = $obj;
63         print $json->encode($ret, true);
64 }
65
66 function json_get_full_list() {
67         global $beanFiles;
68         global $beanList;
69
70         require_once('include/utils.php');
71         require_once($beanFiles[$beanList[$_REQUEST['module']]]);
72
73         $json = getJSONobj();
74
75         $where = str_replace('\\','', rawurldecode($_REQUEST['where']));
76         $order = str_replace('\\','', rawurldecode($_REQUEST['order']));
77         $focus = new $beanList[$_REQUEST['module']];
78         $fullList = $focus->get_full_list($order, $where, '');
79         $all_fields = array_merge($focus->column_fields,$focus->additional_column_fields);
80
81         $js_fields_arr = array();
82         
83         $i=1; // js doesn't like 0 index?
84         foreach($fullList as $note) {
85                 $js_fields_arr[$i] = array();
86                 
87                 foreach($all_fields as $field) {
88                         if(isset($note->$field)) {
89                                 $note->$field = from_html($note->$field);
90                                 $note->$field = preg_replace('/\r\n/','<BR>',$note->$field);
91                                 $note->$field = preg_replace('/\n/','<BR>',$note->$field);
92                                 $js_fields_arr[$i][$field] = addslashes($note->$field);
93                         }
94                 }
95                 $i++;
96         }
97         
98         $out = $json->encode($js_fields_arr, true);
99         print($out);
100 }
101 ////    END HELPER FUNCTIONS
102 ///////////////////////////////////////////////////////////////////////////////
103
104 // called from another file
105 $GLOBALS['log'] = LoggerManager::getLogger('json.php');
106
107 $supported_functions = array('retrieve','get_full_list');
108 if(in_array($_REQUEST['action'],$supported_functions)) {
109         call_user_func('json_'.$_REQUEST['action']);
110 }
111
112 ?>