|
Revision 3164, 1.3 kB
(checked in by trapanator, 1 year 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() |
|---|