5 * SearchableObjects class
7 * @http://www.projectpier.org/
9 abstract class BaseSearchableObjects
extends DataManager
{
12 * Column name => Column type map
17 static private $columns = array('rel_object_manager' => DATA_TYPE_STRING
, 'rel_object_id' => DATA_TYPE_INTEGER
, 'column_name' => DATA_TYPE_STRING
, 'content' => DATA_TYPE_STRING
, 'project_id' => DATA_TYPE_INTEGER
, 'is_private' => DATA_TYPE_BOOLEAN
);
22 * @return BaseSearchableObjects
24 function __construct() {
25 parent
::__construct('SearchableObject', 'searchable_objects', true);
28 // -------------------------------------------------------
29 // Description methods
30 // -------------------------------------------------------
33 * Return array of object columns
39 function getColumns() {
40 return array_keys(self
::$columns);
47 * @param string $column_name
50 function getColumnType($column_name) {
51 if(isset(self
::$columns[$column_name])) {
52 return self
::$columns[$column_name];
54 return DATA_TYPE_STRING
;
59 * Return array of PK columns. If only one column is PK returns its name as string
63 * @return array or string
65 function getPkColumns() {
67 0 => 'rel_object_manager',
74 * Return name of first auto_incremenent column if it exists
80 function getAutoIncrementColumn() {
82 } // getAutoIncrementColumn
84 // -------------------------------------------------------
86 // -------------------------------------------------------
89 * Do a SELECT query over database with specified arguments
92 * @param array $arguments Array of query arguments. Fields:
94 * - one - select first row
95 * - conditions - additional conditions
96 * - order - order by string
97 * - offset - limit offset, valid only if limit is present
100 * @return one or SearchableObjects objects
101 * @throws DBQueryError
103 function find($arguments = null) {
104 if(isset($this) && instance_of($this, 'SearchableObjects')) {
105 return parent
::find($arguments);
107 return SearchableObjects
::instance()->find($arguments);
108 //$instance =& SearchableObjects::instance();
109 //return $instance->find($arguments);
117 * @param array $arguments
118 * @return one or SearchableObjects objects
120 function findAll($arguments = null) {
121 if(isset($this) && instance_of($this, 'SearchableObjects')) {
122 return parent
::findAll($arguments);
124 return SearchableObjects
::instance()->findAll($arguments);
125 //$instance =& SearchableObjects::instance();
126 //return $instance->findAll($arguments);
131 * Find one specific record
134 * @param array $arguments
135 * @return SearchableObject
137 function findOne($arguments = null) {
138 if(isset($this) && instance_of($this, 'SearchableObjects')) {
139 return parent
::findOne($arguments);
141 return SearchableObjects
::instance()->findOne($arguments);
142 //$instance =& SearchableObjects::instance();
143 //return $instance->findOne($arguments);
148 * Return object by its PK value
152 * @param boolean $force_reload If true cache will be skipped and data will be loaded from database
153 * @return SearchableObject
155 function findById($id, $force_reload = false) {
156 if(isset($this) && instance_of($this, 'SearchableObjects')) {
157 return parent
::findById($id, $force_reload);
159 return SearchableObjects
::instance()->findById($id, $force_reload);
160 //$instance =& SearchableObjects::instance();
161 //return $instance->findById($id, $force_reload);
166 * Return number of rows in this table
169 * @param string $conditions Query conditions
172 function count($condition = null) {
173 if(isset($this) && instance_of($this, 'SearchableObjects')) {
174 return parent
::count($condition);
176 return SearchableObjects
::instance()->count($condition);
177 //$instance =& SearchableObjects::instance();
178 //return $instance->count($condition);
183 * Delete rows that match specific conditions. If $conditions is NULL all rows from table will be deleted
186 * @param string $conditions Query conditions
189 function delete($condition = null) {
190 if(isset($this) && instance_of($this, 'SearchableObjects')) {
191 return parent
::delete($condition);
193 return SearchableObjects
::instance()->delete($condition);
194 //$instance =& SearchableObjects::instance();
195 //return $instance->delete($condition);
200 * This function will return paginated result. Result is an array where first element is
201 * array of returned object and second populated pagination object that can be used for
202 * obtaining and rendering pagination data using various helpers.
204 * Items and pagination array vars are indexed with 0 for items and 1 for pagination
205 * because you can't use associative indexing with list() construct
208 * @param array $arguments Query argumens (@see find()) Limit and offset are ignored!
209 * @param integer $items_per_page Number of items per page
210 * @param integer $current_page Current page number
213 function paginate($arguments = null, $items_per_page = 10, $current_page = 1) {
214 if(isset($this) && instance_of($this, 'SearchableObjects')) {
215 return parent
::paginate($arguments, $items_per_page, $current_page);
217 return SearchableObjects
::instance()->paginate($arguments, $items_per_page, $current_page);
218 //$instance =& SearchableObjects::instance();
219 //return $instance->paginate($arguments, $items_per_page, $current_page);
224 * Return manager instance
226 * @return SearchableObjects
228 function instance() {
230 if(!instance_of($instance, 'SearchableObjects')) {
231 $instance = new SearchableObjects();
236 } // SearchableObjects