PHP:
##############################################################
## MOD Title: ParserMod
## MOD Author: Lektor
## MOD Описание: Этот мод добавит функцию для получения bccode с html-страниц некоторых сайтов, что поможет скопировать выпуски из других мест.
##
## MOD Version: 0.7.2
##
## Уровень установки: простой
## Время установки: 5 минут
## Файлы для редактирования: 4
## ajax.php,
## posting.php,
## library/language/ru/main.php,
## styles/templates/default/posting.tpl
## Included Files: 8
## library/ajax/parser.php
## library/includes/functions_parser.php
## styles/templates/default/images/p/nnm-club.ico
## styles/templates/default/images/p/rutor.ico
## styles/templates/default/images/p/rutracker.ico
## admin/admin_pars_cfg.php
## styles/templates/admin/admin_pars_cfg.tpl
## data/cookies/.htaccess
##
## Лицензия: http://opensource.org/licenses/gpl-license.php GNU General Public License, версия 3.0 (GPLv3)
##############################################################
## В целях безопасности, пожалуйста, проверьте: http://www.bittorrentua.com
## для последней версии этого MOD.
##############################################################
##Примечания автора:
##
##############################################################
## MOD History:
## 2015-01-15 - Version 0.5.0
## - First Release
##
## 2015-01-17 - Version 0.6.1
## - fix minor bugs
## - Add a possibility to copy the torrents from the rutracker
## - add module's settings to admin panel
##
## 2015-02-21 - Version 0.7.2
## - fix bugs with downloading torrents and etc.
## - Add parser menu which gives you the possibility to choose download a torrent file or not, to preview a post or not
## - add possibility of parsing www.rutor.org, nnm-club.me
##
##
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################
##
#
#-----[ Копировать ]------------------------------------------
#
copy library/ajax/parser.php to library/ajax/parser.php
copy library/includes/functions_parser.php to library/includes/functions_parser.php
copy styles/templates/default/images/p/nnm-club.ico to styles/templates/default/images/p/nnm-club.ico
copy styles/templates/default/images/p/rutor.ico to styles/templates/default/images/p/rutor.ico
copy styles/templates/default/images/p/rutracker.ico to styles/templates/default/images/p/rutracker.ico
copy admin/admin_pars_cfg.php to admin/admin_pars_cfg.php
copy styles/templates/admin/admin_pars_cfg.tpl to styles/templates/admin/admin_pars_cfg.tpl
copy data/cookies/.htaccess to data/cookies/.htaccess
#
#-----[ SQL зделать запрос в БД]------------------------------------------
#
INSERT INTO `bb_config` (`config_name`, `config_value`) VALUES
('parsmod_disable', '0'),
('parsmod_rutracker_login', ''),
('parsmod_nnm_login', ''),
('parsmod_nnm_password', ''),
('parsmod_rutracker_password', '');
#
#-----[ Открыть фаил ]------------------------------------------
#
ajax.php
#
#-----[ Найти ]------------------------------------------
#
require(CLASS_DIR .'sitemap.php');
break;
#
#-----[ ПОСЛЕ, ДОБАВИТЬ ]------------------------------------------
#
case 'pars':
require(INC_DIR . 'functions_parser.php');
break;
#
#-----[ Найти ]------------------------------------------
#
'manage_group' => array('user'),
#
#-----[ ПОСЛЕ ДОБАВИТЬ ]------------------------------------------
#
'pars' => array('user'),
#
#-----[ Найти ]------------------------------------------
#
require(AJAX_DIR . 'edit_group_profile.php');
}
#
#-----[ ПОСЛЕ ДОБАВИТЬ ]------------------------------------------
#
function pars()
{
require(AJAX_DIR . 'parser.php');
}
#
#-----[ Открыть файл ]------------------------------------------
#
posting.php
#
#-----[ Найти ]------------------------------------------
#
if ($mode == 'newtopic' || $post_data['first_post'])
{
$template->assign_var('POSTING_SUBJECT');
}
#
#-----[ ПОСЛЕ ДОБАВИТЬ ]------------------------------------------
#
if (!$bb_cfg['parsmod_disable'] && ($mode == 'newtopic' || $post_data['first_post']))
{
$template->assign_var('PARSMOD_ON');
}
#
#-----[ Открыть ]------------------------------------------
#
library/language/ru/main.php
#
#-----[ Найти ]---------------------------------
#
$lang['CAPTCHA_WRONG'] = 'Вы не смогли подтвердить, что вы не робот';
#
#-----[ ПОСЛЕ ДОБАВИТЬ ]---------------------------------
#
//PARS
$lang['PARS_NEW_RELEASE'] = 'Скопировать готовое оформление релиза';
$lang['PARS_ALLOWED_SOURCES'] = 'Поддерживаемые источники';
$lang['PARS_RUTRACKER_SOURCES'] = 'Rutracker';
$lang['PARS_NNM_SOURCES'] = 'NNM-Club';
$lang['PARS_RUTOR_SOURCES'] = 'Rutor';
$lang['PARS_IN_NEXT_VERSION'] = 'В следующей версии';
$lang['PARS_SOURCE'] = 'Источник';
$lang['PARS_PASTE_SOURCE_URL'] = 'Вставьте ссылку на тему с релизом...';
$lang['PARS_NO_URL'] = 'Вставьте ссылку на релиз';
$lang['PARS_NOT_ALLOWED_SOURCES'] = 'С указанным источником не умею работать';
$lang['PARS_NO_WORK'] = 'Использование мода запрещено администратором.';
$lang['PARS_CONFIG'] = 'Настройки ParsMod';
$lang['PARS_CONFIG_DESC'] = 'Эта форма позволит вам изменить общие настройки мода, а также ввести логины/пароли к учетным записям трекеров, с которых будут парситься торрент файлы.';
$lang['PARS_GENERAL_SETTINGS'] = 'Общие настройки мода';
$lang['PARS_DISABLE_MOD'] = 'Отключить мод';
$lang['PARS_DISABLE_MOD_DESC'] = 'Использование мода станет не доступным.';
$lang['PARS_RUTRACKER'] = 'Настройки для Rutracker';
$lang['PARS_NNM'] = 'Настройки для NNM-Club';
$lang['PARS_LOGIN'] = 'Логин';
$lang['PARS_PASS'] = 'Пароль';
$lang['CLICK_RETURN_PARS_CFG'] = '%sВернуться к настройкам ParsMod%s';
$lang['PARS_OPT'] = 'Опции';
$lang['PARS_OPT_TITLE'] = 'Опции парсера';
$lang['PARS_OPT_TOR'] = '.torrent';
$lang['PARS_OPT_DWNLD'] = 'Скачать .torrent из источника';
$lang['PARS_OPT_NO_DWNLD'] = 'Не скачивать .torrent из источника';
$lang['PARS_OPT_VIEW'] = 'Опции просмотра';
$lang['PARS_OPT_NO_VIEW'] = 'Без просмотра';
$lang['PARS_OPT_QVIEW'] = 'Быстрый просмотр';
$lang['PARS_OPT_PREVIEW'] = 'Предварительный просмотр';
$lang['PARS_OPT_POST'] = 'Сразу создавать топик';
#
#-----[ Открыть ]---------------------------------
#
styles/templates/default/posting.tpl
#
#-----[ Найти ]---------------------------------
#
<div class="spacer_12"></div>
#
#-----[ ДОБАВИТЬ ПЕРД НАЙДЕНОЙ СТРАКОЙ ]---------------------------------
#
<div class="menu-sub" id="pars-opt">
<table cellspacing="1" cellpadding="4">
<tr><th>{L_PARS_OPT_TITLE}</th></tr>
<tr><td>
<fieldset id="p_tor">
<legend>{L_PARS_OPT_TOR}</legend>
<div class="pad_4">
<label><input id="dwnld_tor" name="pars_tor" type="checkbox" <!-- IF DOWNLOAD_TORRENT_ON -->{CHECKED}<!-- ENDIF -->
onclick="return checkmeman(this, {DOWNLOAD_TORRENT});" />{L_PARS_OPT_DWNLD}
</label><label>
<input id="not_dwnld_tor" name="pars_tor" type="checkbox" <!-- IF NOT_DOWNLOAD_TORRENT_ON -->{CHECKED}<!-- ENDIF -->
onclick="return checkmeman(this, {NOT_DOWNLOAD_TORRENT});" />{L_PARS_OPT_NO_DWNLD}
</label></div>
</fieldset>
<fieldset id="p_view">
<legend>{L_PARS_OPT_VIEW}</legend>
<div class="pad_4">
<label>
<input id="p_no_view" name="pars_view" type="checkbox" <!-- IF PARS_NO_VIEW_ON -->{CHECKED}<!-- ENDIF -->
onclick="return checkmeman(this, {PARS_NO_VIEW});" />{L_PARS_OPT_NO_VIEW}
</label><label>
<input id="p_view_mess" name="pars_view" type="checkbox" <!-- IF PARS_VIEW_MESSAGE_ON -->{CHECKED}<!-- ENDIF -->
onclick="return checkmeman(this, {PARS_VIEW_MESSAGE});" />{L_PARS_OPT_QVIEW}
</label><label>
<input id="p_preview_mess" name="pars_view" type="checkbox" <!-- IF PARS_PREVIEW_MESSAGE_ON -->{CHECKED}<!-- ENDIF -->
onclick="return checkmeman(this, {PARS_PREVIEW_MESSAGE});" />{L_PARS_OPT_PREVIEW}
</label><label>
<input id="p_post_topic" name="pars_view" type="checkbox" <!-- IF PARS_POST_TOPIC_ON -->{CHECKED}<!-- ENDIF -->
onclick="return checkmeman(this, {PARS_POST_TOPIC});" />{L_PARS_OPT_POST}
</label></div>
</fieldset>
</td></tr>
</table>
</div>
#
#-----[ Найти ]---------------------------------
#
<tr>
<th colspan="2" class="thHead"><b>{POSTING_TYPE_TITLE}</b></th>
#
#-----[ ДОБАВИТЬ ПЕРД НАЙДЕНОЙ СТРАКОЙ ]---------------------------------
#
<!-- IF PARSMOD_ON -->
<tbody class="pad_4">
<tr>
<th colspan="2" class="thHead"><b>{L_PARS_NEW_RELEASE}</b><div class="floatR med bold"><a class="menu-root" style="color:white;" href="#pars-opt">{L_PARS_OPT}</a></div></th>
</tr>
<tr>
<td style="vertical-align:top;">
<div title="{L_PARS_ALLOWED_SOURCES}" style="float: right;vertical-align:top;">
<img src="./styles/templates/default/images/p/rutracker.ico" alt="Rutracker" title="{L_PARS_RUTRACKER_SOURCES}">
<img src="./styles/templates/default/images/p/nnm-club.ico" alt="nnm-club" title="{L_PARS_NNM_SOURCES}">
<img src="./styles/templates/default/images/p/rutor.ico" alt="Rutor" title="{L_PARS_RUTOR_SOURCES}"><br>
</div>
<b>{L_PARS_SOURCE}</b> <br>
</td>
<td>
<input id="release_url" type="url" size=60 placeholder="{l_PARS_PASTE_SOURCE_URL}"> <input type="button" value="{L_SUBMIT}" name="Send" id="pars">
<div id="hida"></div>
</td>
</tr>
<script type="text/javascript">
function checkmeman(e, val){
var ptag = $(e).attr('name');
user.set(ptag, ( $(e).is(":checked") ? val : 0 ), 365, false);
$("input[name="+ptag+"]:checked").attr('checked', false);
$(e).attr('checked', true);
}
$('#pars').click(function(){
var fileid = [0,0];
var gettorrent = (($( "input[name='pars_tor']:checked" ).attr('id')) == 'dwnld_tor') ? 1:0;
var filename = $(".gen:contains('torrent')" ).text();
var mode = $("input[name|=mode]" ).val();
if (filename && gettorrent && mode == 'editpost') gettorrent = confirm("Перезаписать торрент?")? 1:0;
if (filename && gettorrent) {
var attach_url = $("a:contains("+filename+")").attr('href');
if (fileid = attach_url.match(/dl\.php\?id=(\d+)/)) {
var tmp_str = $("input[name|='update_attachment["+fileid[1]+"]']" ).next("input" ).attr("name");
var phys_name = tmp_str.match(/del_attachment\[(.*)\]/);
$( "input[value|='"+fileid[1]+"']" ).remove();
}else{
var phys_name = attach_url.match(/.*\/(.*)/);
var fileid = [0,0];
}
$( "input[value|='"+filename+"']" ).remove();
$( "input[value|='"+phys_name[1]+"']" ).remove();
$("a:contains("+filename+")").attr({href:" "});
$("a:contains("+filename+")").text(' ');
}
ajax.exec({action: 'pars', pars_url: $('#release_url').val(), gettorrent:gettorrent, tor_id:fileid[1]});
ajax.callback.pars = function(data) {
$( "#hida" ).html(data.hid);
$( "input[name='subject']" ).val(data.title);
$('textarea#message').val(data.bbcode)
var p_view = $("input[name='pars_view']:checked").attr('id');
switch (p_view) {
case 'p_view_mess': ajax.exec({ action: 'posts', type: 'view_message', message: $('textarea#message').val()});break
case 'p_preview_mess': $('#post-preview-btn').click();break
case 'p_post_topic': $('#post-submit-btn').click();break
}
};
});
</script>
<!-- ENDIF -->
#
#-----[ СОХРАНИТЕ ЗАКРЫТЬ ВСЕ ФАЙЛЫ]------------------------------------------
#
# EoM