function move_album() { global $cache, $db, $user; $album_id = request_var('album_id', 0); phpbb_gallery_album::check_user($album_id); $move = request_var('move', '', true); $moving = phpbb_gallery_album::get_info($album_id); $sql = 'SELECT album_id, left_id, right_id FROM ' . GALLERY_ALBUMS_TABLE . "\n\t\t\tWHERE parent_id = {$moving['parent_id']}\n\t\t\t\tAND album_user_id = {$user->data['user_id']}\n\t\t\t\tAND " . ($move == 'move_up' ? "right_id < {$moving['right_id']} ORDER BY right_id DESC" : "left_id > {$moving['left_id']} ORDER BY left_id ASC"); $result = $db->sql_query_limit($sql, 1); $target = $db->sql_fetchrow($result); $db->sql_freeresult($result); if (!sizeof($target)) { // The album is already on top or bottom return false; } if ($move == 'move_up') { $left_id = $target['left_id']; $right_id = $moving['right_id']; $diff_up = $moving['left_id'] - $target['left_id']; $diff_down = $moving['right_id'] + 1 - $moving['left_id']; $move_up_left = $moving['left_id']; $move_up_right = $moving['right_id']; } else { $left_id = $moving['left_id']; $right_id = $target['right_id']; $diff_up = $moving['right_id'] + 1 - $moving['left_id']; $diff_down = $target['right_id'] - $moving['right_id']; $move_up_left = $moving['right_id'] + 1; $move_up_right = $target['right_id']; } // Now do the dirty job $sql = 'UPDATE ' . GALLERY_ALBUMS_TABLE . "\n\t\t\tSET left_id = left_id + CASE\n\t\t\t\tWHEN left_id BETWEEN {$move_up_left} AND {$move_up_right} THEN -{$diff_up}\n\t\t\t\tELSE {$diff_down}\n\t\t\tEND,\n\t\t\tright_id = right_id + CASE\n\t\t\t\tWHEN right_id BETWEEN {$move_up_left} AND {$move_up_right} THEN -{$diff_up}\n\t\t\t\tELSE {$diff_down}\n\t\t\tEND,\n\t\t\talbum_parents = ''\n\t\t\tWHERE\n\t\t\t\tleft_id BETWEEN {$left_id} AND {$right_id}\n\t\t\t\tAND right_id BETWEEN {$left_id} AND {$right_id}\n\t\t\t\tAND album_user_id = {$user->data['user_id']}"; $db->sql_query($sql); $cache->destroy('sql', GALLERY_ALBUMS_TABLE); $cache->destroy('_albums'); phpbb_gallery_url::redirect('phpbb', 'ucp', 'i=gallery&mode=manage_albums&action=manage&parent_id=' . $moving['parent_id']); }