Merge pull request #23148 from totten/5.48-cache-ver-suffix
[civicrm-core.git] / CRM / Group / Page / Group.php
1 <?php
2 /*
3 +--------------------------------------------------------------------+
4 | Copyright CiviCRM LLC. All rights reserved. |
5 | |
6 | This work is published under the GNU AGPLv3 license with some |
7 | permitted exceptions and without any warranty. For full license |
8 | and copyright information, see https://civicrm.org/licensing |
9 +--------------------------------------------------------------------+
10 */
11
12 /**
13 *
14 * @package CRM
15 * @copyright CiviCRM LLC https://civicrm.org/licensing
16 */
17 class CRM_Group_Page_Group extends CRM_Core_Page_Basic {
18 protected $_sortByCharacter;
19
20 /**
21 * Get BAO name.
22 *
23 * @return string
24 */
25 public function getBAOName() {
26 return 'CRM_Contact_BAO_Group';
27 }
28
29 /**
30 * Define action links.
31 *
32 * self::$_links array of action links
33 */
34 public function &links() {
35 }
36
37 /**
38 * Return class name of edit form.
39 *
40 * @return string
41 */
42 public function editForm() {
43 return 'CRM_Group_Form_Edit';
44 }
45
46 /**
47 * Return name of edit form.
48 *
49 * @return string
50 */
51 public function editName() {
52 return ts('Edit Group');
53 }
54
55 /**
56 * Return name of delete form.
57 *
58 * @return string
59 */
60 public function deleteName() {
61 return 'Delete Group';
62 }
63
64 /**
65 * Return user context uri to return to.
66 *
67 * @param null $mode
68 *
69 * @return string
70 */
71 public function userContext($mode = NULL) {
72 return 'civicrm/group';
73 }
74
75 /**
76 * Return user context uri params.
77 *
78 * @param null $mode
79 *
80 * @return string
81 */
82 public function userContextParams($mode = NULL) {
83 return 'reset=1&action=browse';
84 }
85
86 /**
87 * Re-implement browse.
88 *
89 * We need to do slightly different things for groups vs saved search groups, hence we
90 * re-implement browse from Page_Basic.
91 *
92 * @param int $action
93 */
94 public function browse($action = NULL) {
95 $groupPermission = CRM_Core_Permission::check('edit groups') ? CRM_Core_Permission::EDIT : CRM_Core_Permission::VIEW;
96 $this->assign('groupPermission', $groupPermission);
97
98 $showOrgInfo = FALSE;
99
100 // CRM-9936
101 $reservedPermission = CRM_Core_Permission::check('administer reserved groups') ? CRM_Core_Permission::EDIT : CRM_Core_Permission::VIEW;
102 $this->assign('reservedPermission', $reservedPermission);
103
104 if (CRM_Core_Permission::check('administer Multiple Organizations') &&
105 CRM_Core_Permission::isMultisiteEnabled()
106 ) {
107 $showOrgInfo = TRUE;
108 }
109 $this->assign('showOrgInfo', $showOrgInfo);
110
111 // Refresh smart group cache
112 if (!empty($_GET['update_smart_groups'])) {
113 CRM_Contact_BAO_GroupContactCache::loadAll();
114 }
115 elseif (!CRM_Core_DAO::singleValueQuery("SELECT contact_id FROM civicrm_group_contact_cache LIMIT 1")) {
116 CRM_Core_Session::setStatus(ts('Count data for smart groups is not currently calculated. You may click Update Smart Groups to generate it. Be aware this can cause significant server load'));
117 }
118
119 $this->search();
120 }
121
122 /**
123 * Search for groups.
124 */
125 public function search() {
126 if ($this->_action & (CRM_Core_Action::ADD |
127 CRM_Core_Action::UPDATE |
128 CRM_Core_Action::DELETE
129 )
130 ) {
131 return;
132 }
133
134 $form = new CRM_Core_Controller_Simple('CRM_Group_Form_Search', ts('Search Groups'), CRM_Core_Action::ADD);
135 $form->setEmbedded(TRUE);
136 $form->setParent($this);
137 $form->process();
138 $form->run();
139 }
140
141 }