# -*- coding: iso-8859-1 -*-
"""
    MoinMoin - RecentChangesMax Macro
    Mashup of RecentChanges and RandomPage Macros

    @mixed: 2006 by Roger Ögretir <moinmoin@yoopee.de>
    @license: GNU GPL, see COPYING for details.
"""

from MoinMoin.Page import Page
from MoinMoin.logfile import editlog

Dependencies = ["time"]

def execute(macro, args):
    request = macro.request
    
    # get number of wanted links        
    try:
        maxlinks = max(int(args), 1)
    except StandardError:
        maxlinks = 1

    log = editlog.EditLog(request)

    pages = []
    known = {}
    found = 0

    for line in log.reverse():
	
	page = Page(request, line.pagename)

	if page.exists() and request.user.may.read(line.pagename) and not known.has_key(line.pagename):
		pages.append(line.pagename)
		found += 1
		known[line.pagename] = None

	if found >= maxlinks:
		break

           
    if not pages:
        return ''

    f = macro.formatter

    # return a list of page links
    result = []
    write = result.append

    write(f.bullet_list(1))
    for name in pages:
        write(f.listitem(1))
        write(f.pagelink(1, name, generated=1))
        write(f.text(name))
        write(f.pagelink(0, name))
        write(f.listitem(0))
    write(f.bullet_list(0))

    result = ''.join(result)
    return result
