Edgewall Software

MacroBazaar: BackLinks.py

File BackLinks.py, 830 bytes (added by danhon, 8 years ago)

BackLinks wikimacro

Line 
1from StringIO import StringIO
2
3def execute(hdf, args, env):
4    db = env.get_db_cnx()
5    cursor = db.cursor()
6   
7    thispage = None
8   
9    if args:       
10        thispage = args.replace('\'', '\'\'')
11       
12    sql = 'SELECT DISTINCT name FROM wiki '
13
14    if thispage:
15        sql += 'WHERE text LIKE \'%%%s%%\' ' % thispage
16   
17    cursor.execute(sql)
18       
19    buf = StringIO()
20    #debug
21    #buf.write(sql)
22   
23    buf.write('Pages linking to %s:\n' % thispage)
24    buf.write('<ul>')
25       
26    while 1: 
27        row = cursor.fetchone()
28        if row == None:
29            break
30        if row[0] != thispage:
31            buf.write('<li><a href="%s">' % env.href.wiki(row[0]))
32            buf.write(row[0])
33            buf.write('</a></li>\n')
34       
35    buf.write('</ul>')
36       
37    return buf.getvalue()