]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - modules/Administration/Async.php
Release 6.5.0
[Github/sugarcrm.git] / modules / Administration / Async.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-2012 SugarCRM Inc.
6  * 
7  * This program is free software; you can redistribute it and/or modify it under
8  * the terms of the GNU Affero General Public License version 3 as published by the
9  * Free Software Foundation with the addition of the following permission added
10  * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
11  * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
12  * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
13  * 
14  * This program is distributed in the hope that it will be useful, but WITHOUT
15  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16  * FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
17  * details.
18  * 
19  * You should have received a copy of the GNU Affero General Public License along with
20  * this program; if not, see http://www.gnu.org/licenses or write to the Free
21  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
22  * 02110-1301 USA.
23  * 
24  * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
25  * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
26  * 
27  * The interactive user interfaces in modified source and object code versions
28  * of this program must display Appropriate Legal Notices, as required under
29  * Section 5 of the GNU Affero General Public License version 3.
30  * 
31  * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
32  * these Appropriate Legal Notices must retain the display of the "Powered by
33  * SugarCRM" logo. If the display of the logo is not reasonably feasible for
34  * technical reasons, the Appropriate Legal Notices must display the words
35  * "Powered by SugarCRM".
36  ********************************************************************************/
37
38 /*********************************************************************************
39
40  * Description:
41  * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. All Rights
42  * Reserved. Contributor(s): ______________________________________..
43  *********************************************************************************/
44
45 require_once("include/entryPoint.php");
46
47 $json = getJSONObj();
48 $out = "";
49
50 switch($_REQUEST['adminAction']) {
51         ///////////////////////////////////////////////////////////////////////////
52         ////    REPAIRXSS
53         case "refreshEstimate":
54                 include("include/modules.php"); // provide $moduleList
55                 $target = $_REQUEST['bean'];
56                 
57                 $count = 0;
58                 $toRepair = array();
59                 
60                 if($target == 'all') {
61                         $hide = array('Activities', 'Home', 'iFrames', 'Calendar', 'Dashboard');
62                 
63                         sort($moduleList);
64                         $options = array();
65                         
66                         foreach($moduleList as $module) {
67                                 if(!in_array($module, $hide)) {
68                                         $options[$module] = $module;
69                                 }
70                         }
71
72                         foreach($options as $module) {
73                                 if(!isset($beanFiles[$beanList[$module]]))
74                                         continue;
75                                 
76                                 $file = $beanFiles[$beanList[$module]];
77                                 
78                                 if(!file_exists($file))
79                                         continue;
80                                         
81                                 require_once($file);
82                                 $bean = new $beanList[$module]();
83                                 
84                                 $q = "SELECT count(*) as count FROM {$bean->table_name}";
85                                 $r = $bean->db->query($q);
86                                 $a = $bean->db->fetchByAssoc($r);
87                                 
88                                 $count += $a['count'];
89                                 
90                                 // populate to_repair array
91                                 $q2 = "SELECT id FROM {$bean->table_name}";
92                                 $r2 = $bean->db->query($q2);
93                                 $ids = '';
94                                 while($a2 = $bean->db->fetchByAssoc($r2)) {
95                                         $ids[] = $a2['id'];
96                                 }
97                                 $toRepair[$module] = $ids;
98                         }
99                 } elseif(in_array($target, $moduleList)) {
100                         require_once($beanFiles[$beanList[$target]]);
101                         $bean = new $beanList[$target]();
102                         $q = "SELECT count(*) as count FROM {$bean->table_name}";
103                         $r = $bean->db->query($q);
104                         $a = $bean->db->fetchByAssoc($r);
105                         
106                         $count += $a['count'];
107                         
108                         // populate to_repair array
109                         $q2 = "SELECT id FROM {$bean->table_name}";
110                         $r2 = $bean->db->query($q2);
111                         $ids = '';
112                         while($a2 = $bean->db->fetchByAssoc($r2)) {
113                                 $ids[] = $a2['id'];
114                         }
115                         $toRepair[$target] = $ids;
116                 }
117                 
118                 $out = array('count' => $count, 'target' => $target, 'toRepair' => $toRepair);
119         break;
120         
121         case "repairXssExecute":
122                 if(isset($_REQUEST['bean']) && !empty($_REQUEST['bean']) && isset($_REQUEST['id']) && !empty($_REQUEST['id'])) {
123                         include("include/modules.php"); // provide $moduleList
124                         $target = $_REQUEST['bean'];
125                         require_once($beanFiles[$beanList[$target]]);
126                         
127                         $ids = $json->decode(from_html($_REQUEST['id']));
128                         $count = 0;
129                         foreach($ids as $id) {
130                                 if(!empty($id)) {
131                                         $bean = new $beanList[$target]();
132                                         $bean->retrieve($id,true,false);
133                                         $bean->new_with_id = false;
134                                         $bean->save(); // cleanBean() is called on save()
135                                         $count++;
136                                 }
137                         }
138                         
139                         $out = array('msg' => "success", 'count' => $count);
140                 } else {
141                         $out = array('msg' => "failure: bean or ID not defined");
142                 }
143         break;
144         ////    END REPAIRXSS
145         ///////////////////////////////////////////////////////////////////////////
146         
147         default:
148                 die();
149         break;  
150 }
151
152 $ret = $json->encode($out, true);
153 echo $ret;