CRM-15103 fix - Priceset for memberships on contribution-page not working
[civicrm-core.git] / CRM / Core / Selector / Base.php
CommitLineData
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 */
39class 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