|
|
@@ -1,5 +1,110 @@
|
|
|
from .tool.func import *
|
|
|
-from .bbs_w_post import bbs_w_post_make_thread
|
|
|
+
|
|
|
+def api_topic_thread_make(user_id, date, data, code, color = '', blind = '', add_style = ''):
|
|
|
+ if blind != '':
|
|
|
+ if data == '':
|
|
|
+ color_b = 'opennamu_comment_blind'
|
|
|
+ else:
|
|
|
+ color_b = 'opennamu_comment_blind_admin'
|
|
|
+ else:
|
|
|
+ color_b = 'opennamu_comment_blind_not'
|
|
|
+
|
|
|
+ return '''
|
|
|
+ <table class="opennamu_comment" style="''' + add_style + '''">
|
|
|
+ <tr>
|
|
|
+ <td class="opennamu_comment_color_''' + color + '''">
|
|
|
+ <a href="#thread_shortcut" id="''' + code + '''">#''' + code + '''</a>
|
|
|
+ ''' + user_id + '''
|
|
|
+ <span style="float: right;">''' + date + '''</span>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td class="''' + color_b + '''" id="opennamu_comment_data_main">
|
|
|
+ ''' + data + '''
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ '''
|
|
|
+
|
|
|
+def api_topic_thread_pre_render(curs, data, num, ip, topic_num = '', name = '', sub = '', do_type = 'thread'):
|
|
|
+ call_thread_regex = r"( |\n|^)(?:#([0-9]+)(?:-([0-9]+))?)( |\n|$)"
|
|
|
+ call_thread_count = len(re.findall(call_thread_regex, data)) * 3
|
|
|
+ while 1:
|
|
|
+ rd_data = re.search(call_thread_regex, data)
|
|
|
+ if call_thread_count < 0:
|
|
|
+ break
|
|
|
+ elif not rd_data:
|
|
|
+ break
|
|
|
+ else:
|
|
|
+ rd_data = rd_data.groups()
|
|
|
+
|
|
|
+ view_data = rd_data[1]
|
|
|
+ send_topic_num = topic_num
|
|
|
+ if rd_data[2]:
|
|
|
+ view_data += '-' + rd_data[2]
|
|
|
+ if do_type == 'thread':
|
|
|
+ send_topic_num = rd_data[2]
|
|
|
+ else:
|
|
|
+ set_id = topic_num.split('-')
|
|
|
+
|
|
|
+ send_topic_num = set_id[0] + '-' + rd_data[2]
|
|
|
+ view_data += '-' + set_id[0]
|
|
|
+
|
|
|
+ print(send_topic_num, rd_data[1])
|
|
|
+ if do_type == 'thread':
|
|
|
+ curs.execute(db_change("select ip from topic where code = ? and id = ?"), [send_topic_num, rd_data[1]])
|
|
|
+ else:
|
|
|
+ if rd_data[1] == '0':
|
|
|
+ set_id = send_topic_num.split('-')
|
|
|
+ set_id = ['', ''] if len(set_id) < 2 else set_id
|
|
|
+
|
|
|
+ curs.execute(db_change('select set_data from bbs_data where set_name = "user_id" and set_id = ? and set_code = ?'), [set_id[0], set_id[1]])
|
|
|
+ else:
|
|
|
+ curs.execute(db_change('select set_data from bbs_data where set_name = "comment_user_id" and set_id = ? and set_code = ?'), [send_topic_num, rd_data[1]])
|
|
|
+
|
|
|
+ ip_data = curs.fetchall()
|
|
|
+ if ip_data and ip_or_user(ip_data[0][0]) == 0:
|
|
|
+ if do_type == 'thread':
|
|
|
+ add_alarm(ip_data[0][0], ip, '<a href="/thread/' + topic_num + '#' + num + '">' + html.escape(name) + ' - ' + html.escape(sub) + '#' + num + '</a>')
|
|
|
+ else:
|
|
|
+ set_id = topic_num.split('-')
|
|
|
+ set_id = ['', ''] if len(set_id) < 2 else set_id
|
|
|
+
|
|
|
+ add_alarm(ip_data[0][0], ip, 'BBS <a href="/bbs/w/' + set_id[0] + '/' + set_id[1] + '#' + num + '">' + html.escape(name) + ' - ' + html.escape(sub) + '#' + num + '</a>')
|
|
|
+
|
|
|
+ data = re.sub(call_thread_regex, rd_data[0] + '<topic_a_' + do_type + '>#' + view_data + '</topic_a_' + do_type + '>' + rd_data[3], data, 1)
|
|
|
+
|
|
|
+ call_thread_count -= 1
|
|
|
+
|
|
|
+ call_user_regex = r"( |\n|^)(?:@([^ \n]+))( |\n|$)"
|
|
|
+ call_user_count = len(re.findall(call_user_regex, data)) * 3
|
|
|
+ while 1:
|
|
|
+ rd_data = re.search(call_user_regex, data)
|
|
|
+ if call_user_count < 0:
|
|
|
+ break
|
|
|
+ elif not rd_data:
|
|
|
+ break
|
|
|
+ else:
|
|
|
+ rd_data = rd_data.groups()
|
|
|
+
|
|
|
+ curs.execute(db_change("select ip from history where ip = ? limit 1"), [rd_data[1]])
|
|
|
+ ip_data = curs.fetchall()
|
|
|
+ if not ip_data:
|
|
|
+ curs.execute(db_change("select ip from topic where ip = ? limit 1"), [rd_data[1]])
|
|
|
+ ip_data = curs.fetchall()
|
|
|
+
|
|
|
+ if ip_data and ip_or_user(ip_data[0][0]) == 0:
|
|
|
+ if do_type == 'thread':
|
|
|
+ add_alarm(ip_data[0][0], ip, '<a href="/thread/' + topic_num + '#' + num + '">' + html.escape(name) + ' - ' + html.escape(sub) + '#' + num + '</a>')
|
|
|
+ else:
|
|
|
+ set_id = topic_num.split('-')
|
|
|
+ add_alarm(ip_data[0][0], ip, 'BBS <a href="/bbs/w/' + set_id[0] + '/' + set_id[1] + '#' + num + '">' + html.escape(name) + ' - ' + html.escape(sub) + '#' + num + '</a>')
|
|
|
+
|
|
|
+ data = re.sub(call_user_regex, rd_data[0] + '<topic_call>@' + rd_data[1] + '</topic_call>' + rd_data[2], data, 1)
|
|
|
+
|
|
|
+ call_user_count -= 1
|
|
|
+
|
|
|
+ return data
|
|
|
|
|
|
def api_topic(topic_num = 1, tool = 'normal', num = '', render = ''):
|
|
|
with get_db_connect() as conn:
|
|
|
@@ -77,7 +182,7 @@ def api_topic(topic_num = 1, tool = 'normal', num = '', render = ''):
|
|
|
else:
|
|
|
color = 'default'
|
|
|
|
|
|
- data_r += bbs_w_post_make_thread(
|
|
|
+ data_r += api_topic_thread_make(
|
|
|
for_a["ip_pas"],
|
|
|
'<a href="/thread/' + topic_num + '/comment/' + for_a["id"] + '/tool">(' + load_lang('tool') + ')</a> ' + for_a["date"],
|
|
|
for_a["data_pas"][0] + '<script>' + for_a["data_pas"][1] + '</script>',
|