Merge pull request #14422 from civicrm/5.14
[civicrm-core.git] / CRM / Admin / Form / Setting / Component.php
1 <?php
2 /*
3 +--------------------------------------------------------------------+
4 | CiviCRM version 5 |
5 +--------------------------------------------------------------------+
6 | Copyright CiviCRM LLC (c) 2004-2019 |
7 +--------------------------------------------------------------------+
8 | This file is a part of CiviCRM. |
9 | |
10 | CiviCRM is free software; you can copy, modify, and distribute it |
11 | under the terms of the GNU Affero General Public License |
12 | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
13 | |
14 | CiviCRM is distributed in the hope that it will be useful, but |
15 | WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
17 | See the GNU Affero General Public License for more details. |
18 | |
19 | You should have received a copy of the GNU Affero General Public |
20 | License and the CiviCRM Licensing Exception along |
21 | with this program; if not, contact CiviCRM LLC |
22 | at info[AT]civicrm[DOT]org. If you have questions about the |
23 | GNU Affero General Public License or the licensing of CiviCRM, |
24 | see the CiviCRM license FAQ at http://civicrm.org/licensing |
25 +--------------------------------------------------------------------+
26 */
27
28 /**
29 *
30 * @package CRM
31 * @copyright CiviCRM LLC (c) 2004-2019
32 */
33
34 /**
35 * This class generates form components for Component.
36 */
37 class CRM_Admin_Form_Setting_Component extends CRM_Admin_Form_Setting {
38 protected $_components;
39
40 protected $_settings = [
41 'enable_components' => CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME,
42 ];
43
44 /**
45 * Build the form object.
46 */
47 public function buildQuickForm() {
48 $this->addFormRule(['CRM_Admin_Form_Setting_Component', 'formRule'], $this);
49 parent::buildQuickForm();
50 }
51
52 /**
53 * Global form rule.
54 *
55 * @param array $fields
56 * The input form values.
57 * @param array $files
58 * The uploaded files if any.
59 * @param array $options
60 * Additional user data.
61 *
62 * @return bool|array
63 * true if no errors, else array of errors
64 */
65 public static function formRule($fields, $files, $options) {
66 $errors = [];
67
68 if (array_key_exists('enable_components', $fields) && is_array($fields['enable_components'])) {
69 if (in_array('CiviPledge', $fields['enable_components']) &&
70 !in_array('CiviContribute', $fields['enable_components'])
71 ) {
72 $errors['enable_components'] = ts('You need to enable CiviContribute before enabling CiviPledge.');
73 }
74 if (in_array('CiviCase', $fields['enable_components']) &&
75 !CRM_Core_DAO::checkTriggerViewPermission(TRUE, FALSE)
76 ) {
77 $errors['enable_components'] = ts('CiviCase requires CREATE VIEW and DROP VIEW permissions for the database.');
78 }
79 }
80
81 return $errors;
82 }
83
84 }