from StringIO import StringIO

def execute(hdf, args, env):
    db = env.get_db_cnx()
    cursor = db.cursor()

    thispage = None

    if args:
        thispage = args.replace('\'', '\'\'')
    else :
	thispage = hdf.getValue('wiki.page_name', '')


    sql = 'SELECT w1.name FROM wiki w1, ' + \
          '(SELECT name, MAX(version) AS VERSION FROM WIKI GROUP BY NAME) w2 ' + \
          'WHERE w1.version = w2.version AND w1.name = w2.name '

    if thispage:
        sql += 'AND w1.text LIKE \'%%%s%%\' ' % thispage

    cursor.execute(sql)

    buf = StringIO()

    buf.write('Pages linking to %s:\n' % thispage)
    buf.write('<ul>')

    while 1:
        row = cursor.fetchone()
        if row == None:
            break
        if row[0] != thispage:
            buf.write('<li><a href="%s">' % env.href.wiki(row[0]))
            buf.write(row[0])
            buf.write('</a></li>\n')

    buf.write('</ul>')

    return buf.getvalue()

