db); } // Returns the list of keys filter by pageNumber public function getList($key, $pageNumber, $amountOfItems) { if (!isset($this->db[$key])) { Log::set(__METHOD__.LOG_SEP.'Error key does not exist '.$key); return false; } // List of keys $list = $this->db[$key]['list']; // Returns all the items from the list if ($amountOfItems==-1) { // Invert keys to values, is necesary returns as key the key pages $list = array_flip($list); return $list; } // The first page number is 1, so the real is 0 $realPageNumber = $pageNumber - 1; $chunks = array_chunk($list, $amountOfItems); if (isset($chunks[$realPageNumber])) { return $chunks[$realPageNumber]; } // Out of index,returns FALSE return false; } public function generateKey($name) { $key = Text::cleanUrl($name); while (isset($this->db[$key])) { $key++; } return $key; } // Add a new item to the dblist // $args => 'name', 'template', 'description', list' public function add($args) { $key = $this->generateKey($args['name']); $this->db[$key]['name'] = $args['name']; $this->db[$key]['template'] = isset($args['template'])?$args['template']:''; $this->db[$key]['description'] = isset($args['description'])?$args['description']:''; $this->db[$key]['list'] = isset($args['list'])?$args['list']:array(); $this->sortAlphanumeric(); $this->save(); return $key; } public function remove($key) { if (!isset($this->db[$key])) { Log::set(__METHOD__.LOG_SEP.'The key does not exist, key: '.$key); return false; } unset($this->db[$key]); return $this->save(); } // Edit an item to the dblist // $args => 'name', 'oldkey', 'newKey', 'template', 'description' public function edit($args) { if ( isset($this->db[$args['newKey']]) && ($args['newKey']!==$args['oldKey']) ) { Log::set(__METHOD__.LOG_SEP.'The new key already exists. Key: '.$args['newKey'], LOG_TYPE_WARN); return false; } $this->db[$args['newKey']]['name'] = $args['name']; $this->db[$args['newKey']]['template'] = isset($args['template'])?$args['template']:''; $this->db[$args['newKey']]['description'] = isset($args['description'])?$args['description']:''; $this->db[$args['newKey']]['list'] = $this->db[$args['oldKey']]['list']; // Remove the old category if ($args['oldKey'] !== $args['newKey']) { unset( $this->db[$args['oldKey']] ); } $this->sortAlphanumeric(); $this->save(); return $args['newKey']; } // Sort the categories by "Natural order" private function sortAlphanumeric() { // Sort key alphanumeric strings, a01, a10, b10, c02 return ksort($this->db); } // Returns the name associated to the key, FALSE if the key doesn't exist public function getName($key) { if (isset($this->db[$key])) { return $this->db[$key]['name']; } return false; } // Returns an array with key=>name of the list public function getKeyNameArray() { $tmp = array(); foreach($this->db as $key=>$fields) { $tmp[$key] = $fields['name']; } return $tmp; } // Returns the amount of items for some key public function countItems($key) { if( isset($this->db[$key]) ) { return count($this->db[$key]['list']); } return 0; } public function exists($key) { return isset( $this->db[$key] ); } public function existsName($name) { foreach ($this->db as $key=>$fields) { if ($name==$fields['name']) { return true; } } return false; } // Returns an array with a portion of the database filtered by key // Returns array( 'key'=>'', 'name'=>'', 'template'=>'', 'description'=>'', list'=>array() ) public function getMap($key) { if (isset($this->db[$key])) { $tmp = $this->db[$key]; $tmp['key'] = $key; return $tmp; } return false; } }