Commit | Line | Data |
---|---|---|
6a488035 TO |
1 | <?php |
2 | /* | |
3 | +--------------------------------------------------------------------+ | |
232624b1 | 4 | | CiviCRM version 4.4 | |
6a488035 TO |
5 | +--------------------------------------------------------------------+ |
6 | | Copyright CiviCRM LLC (c) 2004-2013 | | |
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 | * A simple base class for objects that need to implement the selector api | |
31 | * interface. This class provides common functionality with regard to actions | |
32 | * and display names | |
33 | * | |
34 | * @package CRM | |
35 | * @copyright CiviCRM LLC (c) 2004-2013 | |
36 | * $Id$ | |
37 | * | |
38 | */ | |
39 | class CRM_Core_Selector_Base { | |
40 | ||
41 | /** | |
42 | * the sort order which is computed from the columnHeaders | |
43 | * | |
44 | * @var array | |
45 | */ | |
46 | protected $_order; | |
47 | ||
48 | /** | |
49 | * The permission mask for this selector | |
50 | * | |
51 | * @var string | |
52 | */ | |
53 | protected $_permission = NULL; | |
54 | ||
55 | /** | |
56 | * The qfKey of the underlying search | |
57 | * | |
58 | * @var string | |
59 | */ | |
60 | protected $_key; | |
61 | ||
62 | /** | |
63 | * This function gets the attribute for the action that | |
64 | * it matches. | |
65 | * | |
66 | * @param string match the action to match against | |
67 | * @param string attribute the attribute to return ( name, link, title ) | |
68 | * | |
69 | * @return string the attribute that matches the action if any | |
70 | * | |
71 | * @access public | |
72 | * | |
73 | */ | |
74 | function getActionAttribute($match, $attribute = 'name') { | |
75 | $links = &$this->links(); | |
76 | ||
77 | foreach ($link as $action => $item) { | |
78 | if ($match & $action) { | |
79 | return $item[$attribute]; | |
80 | } | |
81 | } | |
82 | return NULL; | |
83 | } | |
84 | ||
85 | /** | |
86 | * This is a static virtual function returning reference on links array. Each | |
87 | * inherited class must redefine this function | |
88 | * | |
89 | * links is an array of associative arrays. Each element of the array | |
90 | * has at least 3 fields | |
91 | * | |
92 | * name : the name of the link | |
93 | * url : the URI to be used for this link | |
94 | * qs : the parameters to the above url along with any dynamic substitutions | |
95 | * title : A more descriptive name, typically used in breadcrumbs / navigation | |
96 | */ | |
97 | static function &links() { | |
98 | return NULL; | |
99 | } | |
100 | ||
101 | /** | |
102 | * compose the template file name from the class name | |
103 | * | |
104 | * @param string $action the action being performed | |
105 | * | |
106 | * @return string template file name | |
107 | * @access public | |
108 | */ | |
109 | function getTemplateFileName($action = NULL) { | |
110 | return (str_replace('_', DIRECTORY_SEPARATOR, CRM_Utils_System::getClassName($this)) . ".tpl"); | |
111 | } | |
112 | ||
113 | /** | |
114 | * getter for the sorting direction for the fields which will be displayed on the form. | |
115 | * | |
116 | * @param string action the action being performed | |
117 | * | |
118 | * @return array the elements that can be sorted along with their properties | |
119 | * @access public | |
120 | */ | |
121 | function &getSortOrder($action) { | |
122 | $columnHeaders = &$this->getColumnHeaders(NULL); | |
123 | ||
124 | if (!isset($this->_order)) { | |
125 | $this->_order = array(); | |
126 | $start = 2; | |
127 | $firstElementNotFound = TRUE; | |
128 | if (!empty($columnHeaders)) { | |
129 | foreach ($columnHeaders as $k => $header) { | |
130 | $header = &$columnHeaders[$k]; | |
131 | if (array_key_exists('sort', $header)) { | |
132 | if ($firstElementNotFound && $header['direction'] != CRM_Utils_Sort::DONTCARE) { | |
133 | $this->_order[1] = &$header; | |
134 | $firstElementNotFound = FALSE; | |
135 | } | |
136 | else { | |
137 | $this->_order[$start++] = &$header; | |
138 | } | |
139 | } | |
140 | unset($header); | |
141 | } | |
142 | } | |
143 | if ($firstElementNotFound) { | |
144 | // CRM_Core_Error::fatal( "Could not find a valid sort directional element" ); | |
145 | } | |
146 | } | |
147 | return $this->_order; | |
148 | } | |
149 | ||
150 | /** | |
151 | * setter for permission | |
152 | * | |
153 | * @var string | |
154 | * @access public | |
155 | */ | |
156 | public function setPermission($permission) { | |
157 | $this->_permission = $permission; | |
158 | } | |
159 | ||
160 | /** | |
161 | * get the display text in plain language for the search | |
162 | * to display on the results page | |
163 | * | |
164 | * @return string | |
165 | * @access public | |
166 | */ | |
167 | public function getQill() { | |
168 | return NULL; | |
169 | } | |
170 | ||
171 | public function getSummary() { | |
172 | return NULL; | |
173 | } | |
174 | ||
175 | public function setKey($key) { | |
176 | $this->_key = $key; | |
177 | } | |
178 | ||
179 | public function getKey() { | |
180 | return $this->_key; | |
181 | } | |
182 | } | |
183 |