示例#1
0
    $datas = array();
    foreach ($images as $id) {
        $datas[] = array('category_id' => $category_id, 'image_id' => $id, 'rank' => ++$current_rank);
    }
    $fields = array('primary' => array('image_id', 'category_id'), 'update' => array('rank'));
    mass_updates(IMAGE_CATEGORY_TABLE, $fields, $datas);
}
// +-----------------------------------------------------------------------+
// |                       global mode form submission                     |
// +-----------------------------------------------------------------------+
$image_order_choices = array('default', 'rank', 'user_define');
$image_order_choice = 'default';
if (isset($_POST['submit'])) {
    if (isset($_POST['rank_of_image'])) {
        asort($_POST['rank_of_image'], SORT_NUMERIC);
        save_images_order($page['category_id'], array_keys($_POST['rank_of_image']));
        $page['infos'][] = l10n('Images manual order was saved');
    }
    if (!empty($_POST['image_order_choice']) && in_array($_POST['image_order_choice'], $image_order_choices)) {
        $image_order_choice = $_POST['image_order_choice'];
    }
    $image_order = null;
    if ($image_order_choice == 'user_define') {
        for ($i = 0; $i < 3; $i++) {
            if (!empty($_POST['image_order'][$i])) {
                if (!empty($image_order)) {
                    $image_order .= ',';
                }
                $image_order .= $_POST['image_order'][$i];
            }
        }
示例#2
0
/**
 * API method
 * Sets the rank of an image in a category
 * @param mixed[] $params
 *    @option int image_id
 *    @option int category_id
 *    @option int rank
 */
function ws_images_setRank($params, $service)
{
    if (count($params['image_id']) > 1) {
        include_once PHPWG_ROOT_PATH . 'admin/include/functions.php';
        save_images_order($params['category_id'], $params['image_id']);
        $query = '
SELECT
    image_id
  FROM ' . IMAGE_CATEGORY_TABLE . '
  WHERE category_id = ' . $params['category_id'] . '
  ORDER BY rank ASC
;';
        $image_ids = query2array($query, null, 'image_id');
        // return data for client
        return array('image_id' => $image_ids, 'category_id' => $params['category_id']);
    }
    // turns image_id into a simple int instead of array
    $params['image_id'] = array_shift($params['image_id']);
    if (empty($params['rank'])) {
        return new PwgError(WS_ERR_MISSING_PARAM, 'rank is missing');
    }
    // does the image really exist?
    $query = '
SELECT COUNT(*)
  FROM ' . IMAGES_TABLE . '
  WHERE id = ' . $params['image_id'] . '
;';
    list($count) = pwg_db_fetch_row(pwg_query($query));
    if ($count == 0) {
        return new PwgError(404, 'image_id not found');
    }
    // is the image associated to this category?
    $query = '
SELECT COUNT(*)
  FROM ' . IMAGE_CATEGORY_TABLE . '
  WHERE image_id = ' . $params['image_id'] . '
    AND category_id = ' . $params['category_id'] . '
;';
    list($count) = pwg_db_fetch_row(pwg_query($query));
    if ($count == 0) {
        return new PwgError(404, 'This image is not associated to this category');
    }
    // what is the current higher rank for this category?
    $query = '
SELECT MAX(rank) AS max_rank
  FROM ' . IMAGE_CATEGORY_TABLE . '
  WHERE category_id = ' . $params['category_id'] . '
;';
    $row = pwg_db_fetch_assoc(pwg_query($query));
    if (is_numeric($row['max_rank'])) {
        if ($params['rank'] > $row['max_rank']) {
            $params['rank'] = $row['max_rank'] + 1;
        }
    } else {
        $params['rank'] = 1;
    }
    // update rank for all other photos in the same category
    $query = '
UPDATE ' . IMAGE_CATEGORY_TABLE . '
  SET rank = rank + 1
  WHERE category_id = ' . $params['category_id'] . '
    AND rank IS NOT NULL
    AND rank >= ' . $params['rank'] . '
;';
    pwg_query($query);
    // set the new rank for the photo
    $query = '
UPDATE ' . IMAGE_CATEGORY_TABLE . '
  SET rank = ' . $params['rank'] . '
  WHERE image_id = ' . $params['image_id'] . '
    AND category_id = ' . $params['category_id'] . '
;';
    pwg_query($query);
    // return data for client
    return array('image_id' => $params['image_id'], 'category_id' => $params['category_id'], 'rank' => $params['rank']);
}