コード例 #1
0
    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&amp;mode=manage_albums&amp;action=manage&amp;parent_id=' . $moving['parent_id']);
    }