root/backlinksmacro/0.10/BackLinks.5.py

Revision 3164, 1.3 kB (checked in by trapanator, 10 months ago)

BackLinks? 5.0

Line 
1 #
2 # BackLinks plugin for Trac
3 # Version: 5.0
4 #
5 # Author: Trapanator trap@trapanator.com
6 # Website: http://www.trapanator.com/blog/archives/category/trac
7 # License: GPL 3.0
8 #
9 from StringIO import StringIO
10 def execute(hdf, args, env):
11         db = env.get_db_cnx()
12         cursor = db.cursor()
13         thispage = None
14         if args:
15                 thispage = args.replace('\'', '\'\'')
16         else:
17                 thispage = hdf.getValue('wiki.page_name', '')
18         sql = 'SELECT w1.name FROM wiki w1, ' + \
19                   '(SELECT name, MAX(version) AS VERSION FROM WIKI GROUP BY NAME) w2 ' + \
20                   'WHERE w1.version = w2.version AND w1.name = w2.name '
21         if thispage:
22                         sql += 'AND (w1.text LIKE \'%%[wiki:%s %%\' ' % (unicode(thispage, "utf-8").encode ("utf-8"))
23                         sql += 'OR w1.text LIKE \'%%[wiki:%s]%%\')' % (unicode (thispage, "utf-8").encode ("utf-8"))
24         cursor.execute(sql)
25         buf = StringIO()
26         buf.write('<hr style="width: 10%; padding: 0; margin: 2em 0 1em 0;"/>')
27         buf.write('Pages linking to %s:\n' % (unicode (thispage, "utf-8")))
28         buf.write('<ul>')
29         while 1:
30                 row = cursor.fetchone()
31                 if row == None:
32                         break
33                 s2 = unicode (thispage, "utf-8")
34                 if row[0] == s2:
35                         pass
36                 else:
37                         buf.write('<li><a href="%s">' % env.href.wiki(row[0]))
38                         buf.write(row[0])
39                         buf.write('</a></li>\n')
40         buf.write('</ul>')
41         return buf.getvalue()
Note: See TracBrowser for help on using the browser.