/** * shopp_set_image_setting - saves an image setting * * The settings parameter accepts: * width => (pixel width) * height => (pixel height) * size => (pixels, sets width and height) * fit => (all,matte,crop,width,height) * quality => (0-100 quality percentage) * sharpen => (0-100 sharpen percentage) * bg => (hex color, such as red: #ff0000) * * @api * @since 1.2 * * @param string $name The name of the setting that is to be stored. * @param array $settings A named array of settings and values, accepts: width, height, size, fit, quality, sharpen, bg * @return bool true on success, false on failure. **/ function shopp_set_image_setting($name, array $settings = array()) { if (empty($name)) { shopp_debug(__FUNCTION__ . " failed: Setting name parameter required."); return false; } $defaults = array('width' => false, 'height' => false, 'fit' => 'all', 'size' => 96, 'quality' => 100, 'sharpen' => 100, 'bg' => false); if (isset($settings['size'])) { $settings['width'] = $settings['height'] = $settings['size']; } $settings = array_merge($defaults, $settings); if (in_array($settings['fit'], ImageSetting::$fittings)) { $settings['fit'] = array_search($settings['fit'], ImageSetting::$fittings); } // Load/update an existing one there is one $ImageSetting = new ImageSetting($name, 'name'); $ImageSetting->name = $name; foreach ($settings as $prop => $value) { $ImageSetting->{$prop} = $value; } $ImageSetting->save(); return true; }
public function images() { if (!current_user_can('shopp_settings')) { wp_die(__('You do not have sufficient permissions to access this page.')); } $defaults = array('paged' => 1, 'per_page' => 25, 'action' => false, 'selected' => array()); $args = array_merge($defaults, $_REQUEST); extract($args, EXTR_SKIP); $edit = false; if (isset($_GET['id'])) { $edit = (int) $_GET['id']; if ('new' == $_GET['id']) { $edit = 'new'; } } if (isset($_GET['delete']) || 'delete' == $action) { check_admin_referer('shopp-settings-images'); if (!empty($_GET['delete'])) { $selected[] = (int) $_GET['delete']; } $selected = array_filter($selected); foreach ($selected as $delete) { $Record = new ImageSetting((int) $delete); $Record->delete(); } } if (!empty($_POST['save'])) { check_admin_referer('shopp-settings-images'); $ImageSetting = new ImageSetting($edit); $_POST['name'] = sanitize_title_with_dashes($_POST['name']); $_POST['sharpen'] = floatval(str_replace('%', '', $_POST['sharpen'])); $ImageSetting->updates($_POST); if (!empty($ImageSetting->name)) { $ImageSetting->save(); } } $start = $per_page * ($paged - 1); $ImageSetting = new ImageSetting($edit); $table = $ImageSetting->_table; $columns = 'SQL_CALC_FOUND_ROWS *'; $where = array("type='{$ImageSetting->type}'", "context='{$ImageSetting->context}'"); $limit = "{$start},{$per_page}"; $options = compact('columns', 'useindex', 'table', 'joins', 'where', 'groupby', 'having', 'limit', 'orderby'); $query = sDB::select($options); $settings = sDB::query($query, 'array', array($ImageSetting, 'loader')); $total = sDB::found(); $num_pages = ceil($total / $per_page); $ListTable = ShoppUI::table_set_pagination($this->screen, $total, $num_pages, $per_page); $fit_menu = $ImageSetting->fit_menu(); $quality_menu = $ImageSetting->quality_menu(); $actions_menu = array('delete' => __('Delete', 'Shopp')); $json_settings = array(); $skip = array('created', 'modified', 'numeral', 'context', 'type', 'sortorder', 'parent'); foreach ($settings as &$Setting) { if (method_exists($Setting, 'json')) { $json_settings[$Setting->id] = $Setting->json($skip); } } include $this->ui('images.php'); }