table = $this->db->prefix . 'gg_settings_presets'; } /** * Saves the preset. * @param int $id Settings ID. * @param string $title Preset title. * @return bool */ public function set($settingsId, $title) { $title = htmlspecialchars($title, ENT_QUOTES, get_bloginfo('charset')); $query = $this->getQueryBuilder()->insertInto($this->table) ->fields('settings_id', 'title') ->values((int)$settingsId, $title); if (false === $this->db->query($query->build())) { return false; } return true; } /** * Removes the preset. * @param int $id Preset ID. * @return bool */ public function remove($presetId) { $query = $this->getQueryBuilder()->deleteFrom($this->table) ->where('id', '=', (int)$presetId); if (false === $this->db->query($query->build())) { return false; } return true; } /** * Returns all presets. * @return array|null */ public function getAll() { $query = $this->getQueryBuilder()->select('*') ->from($this->table); if (false === $presets = $this->db->get_results($query->build())) { throw new RuntimeException( sprintf('Failed to get presets: %s', $this->getLastError()) ); } if (is_array($presets)) { $presets = array_map(array($this, 'extend'), $presets); } return $presets; } /** * Returns the preset by the ID. * @param int $presetId Preset Id. * @return object|null */ public function getById($presetId) { return $this->getBy('id', (int)$presetId); } /** * Returns the preset by the settings Id. * @param string $settingsId Settings id. * @return object|null */ public function getBySettingsId($settingsId) { return $this->getBy('settings_id', (int)$settingsId); } /** * Lazy loading method for settings model. * @return GridGallery_Galleries_Model_Settings */ protected function getSettingsModel() { if (!$this->settingsModel) { $this->settingsModel = $this->createSettingsModel(); } return $this->settingsModel; } /** * Factory method to create the settings model. * @return GridGallery_Galleries_Model_Settings */ protected function createSettingsModel() { $model = new GridGallery_Galleries_Model_Settings(); $model->setDebugEnabled($this->debugEnabled); if ($this->logger && method_exists($model, 'setLogger')) { $model->setLogger($this->logger); } return $model; } /** * Extends the $preset object with the settings. * @param object $preset * @throws UnexpectedValueException If the preset is not object. * @return object */ protected function extend($preset) { if (!is_object($preset)) { throw new UnexpectedValueException( sprintf( '$preset must be the object, %s given.', gettype($preset) ) ); } $preset->settings = $this->getSettingsModel() ->getById((int)$preset->settings_id); return $preset; } /** * Returns the preset by custom fields and values. * @param string $field Field name. * @param mixed $value Field value. * @return object|null */ protected function getBy($field, $value) { $query = $this->getQueryBuilder()->select('*') ->from($this->table) ->where($field, '=', $value); if (null !== $preset = $this->db->get_row($query->build())) { $preset = $this->extend($preset); } return $preset; } /** * Returns an array of the names of user categories presets. * @return array */ public function getCatsPresetsNames() { $presetsNames = array(); $dbPresetOpt = get_option('customCatsPresets'); $i = 1; foreach($dbPresetOpt as $dbPresetName) { $presetsNames[$i] = $dbPresetName['preset']['name']; $i++; } return $presetsNames; } /** * Returns an array of the names of user pages presets. * @return array */ public function getPagesPresetsNames() { $presetsNames = array(); $dbPresetOpt = get_option('customPagesPresets'); $i = 1; foreach($dbPresetOpt as $dbPresetName) { $presetsNames[$i] = $dbPresetName['preset']['name']; $i++; } return $presetsNames; } }