Example #1
0
/**
 * 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'], ShoppImageSetting::$fittings)) {
        $settings['fit'] = array_search($settings['fit'], ShoppImageSetting::$fittings);
    }
    // Load/update an existing one there is one
    $ImageSetting = new ShoppImageSetting($name, 'name');
    $ImageSetting->name = $name;
    foreach ($settings as $prop => $value) {
        $ImageSetting->{$prop} = $value;
    }
    $ImageSetting->save();
    return true;
}
Example #2
0
 public function column_fit($Item)
 {
     $menu = ShoppImageSetting::fit_menu();
     $fit = isset($menu[$Item->fit]) ? $menu[$Item->fit] : '?';
     echo esc_html($fit);
 }
Example #3
0
 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 ShoppImageSetting((int) $delete);
             $Record->delete();
         }
     }
     if (!empty($_POST['save'])) {
         check_admin_referer('shopp-settings-images');
         $ImageSetting = new ShoppImageSetting($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 ShoppImageSetting($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');
 }