|
Форум torrenpier который уже живет
это сообщество владельцев форумов на phphBB2, торрент-трекеров на движках torrentpier и SVN всех версий.
Здесь можно найти решение своих проблем на своем сайта. Здесь можно скачать полезные и нужные моды torrenpier, phpBB2 и svn. Наш форум - это место для общения и обмена опытом между любителей движков, создателей модов на заказ и владельцев сайтов!
|
Автор |
Сообщение |
екун Зарегистрирован: 2010-12-01 Сообщ.: 94
|
26-Май-12 22:07 |
#1 |
Пожалуйста адаптируйте! ####################################################################################################
## MOD Title: ReadOnly (Только чтение)
## MOD Author: (Nightmare) http://greattorrent.tv/profile.php?mode=viewprofile&u=1
## http://torrentpier.kz/profile.php?mode=viewprofile&u=1
## MOD Description: Мод добавляет возможность администраторам и модераторам, ставить пользователям
## режим "Только Чтение", с таймером и уведомлениями в ЛС. Мод не включает панель
## управления предупреждениями.
## MOD Version: 0.1
##
## Installation Level: Easy
## Installation Time: 10 Minutes
## Files To Edit:
## modcp.php
## viewtopic.php
## viewforum.php
## templates/default/viewtopic.tpl
## language/lang_russian/lang_main.php
## includes/functions.php
## includes/init_bb.php
##
## Included Files: N/A
####################################################################################################
## Для безопасности, свяжитесь со мной
####################################################################################################
## Author Notes:
## За идею мода спасибо svk
## Написан SVN R534
####################################################################################################
##
####################################################################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
#################################################################################################### Код: | #
#
#-----[ SQL ]------------------------------------------
#
CREATE TABLE `bb_readonly` (
`user_id` mediumint(8) NOT NULL default '0',
`forum_id` mediumint(8) NOT NULL default '0',
`endtime` int(32) NOT NULL default '0',
`mod_id` mediumint(8) NOT NULL default '0'
);
#-----[ OPEN ]------------------------------------------
#
includes/functions.php
#
#-----[ FIND ]------------------------------------------
#
function get_user_id ($username)
{
if (empty($username)) return false;
$row = $GLOBALS['db']->fetch_row("SELECT user_id FROM ". USERS_TABLE ." WHERE username = '$username' LIMIT 1");
return $row['user_id'];
}
#
#-----[ AFTER, ADD ]------------------------------------------
#
// Check user Read Only mode by Nightmare
function get_user_readonly ($user_id, $forum_id)
{
global $is_auth;
if (empty($user_id) || empty($forum_id)) return false;
$sql = "SELECT * FROM ".READONLY_TABLE." WHERE user_id = ".$user_id." AND (forum_id = ".$forum_id." OR forum_id = 0) AND (endtime > ".time()." OR endtime = 0)";
$row = $GLOBALS['db']->sql_fetchrow($GLOBALS['db']->sql_query($sql));
return (!empty($row['user_id'])) ? ($is_auth['auth_post'] = $is_auth['auth_reply'] = $is_auth['auth_edit'] = $is_auth['auth_delete'] = $is_auth['auth_vote'] = 0) : false;
}
//Send PM by Nightmare
function send_pm ($subject, $message, $user_from, $user_to)
{
$sql = "INSERT INTO ". PRIVMSGS_TABLE. "(privmsgs_type, privmsgs_subject, privmsgs_from_userid, privmsgs_to_userid, privmsgs_date, privmsgs_ip) VALUES(" . PRIVMSGS_NEW_MAIL . ",'" . $subject . "'," . $user_from ."," . $user_to . "," . time() . ",'" . encode_ip($HTTP_SERVER_VARS['REMOTE_ADDR']) . "')";
if(!$result = $GLOBALS['db']->sql_query($sql))
{
message_die(GENERAL_ERROR, "Couldn't send message", "", __LINE__, __FILE__, $sql);
}
$id_mess=mysql_insert_id();
$sql = "INSERT INTO ". PRIVMSGS_TEXT_TABLE ." VALUES(" . $id_mess . ", '', '" .$message. "')";
if(!$result = $GLOBALS['db']->sql_query($sql))
{
message_die(GENERAL_ERROR, "Couldn't send text by message", "", __LINE__, __FILE__, $sql);
}
$sql = "SELECT u.user_new_privmsg FROM " . USERS_TABLE . " u WHERE user_id=".$user_to;
if(!$result = $GLOBALS['db']->sql_query($sql))
{
message_die(GENERAL_ERROR, "Couldn't UPDATE popup", "", __LINE__, __FILE__, $sql);
}
$priv_msg = $GLOBALS['db']->sql_fetchrowset($result);
$sql = "UPDATE " . USERS_TABLE . " SET user_new_privmsg=".($priv_msg[0]['user_new_privmsg'] + 1).", user_last_privmsg=" . time() . ", user_newest_pm_id=". $id_mess ." WHERE user_id=" . $user_to;
if(!$result = $GLOBALS['db']->sql_query($sql))
{
message_die(GENERAL_ERROR, "Couldn't UPDATE popup", "", __LINE__, __FILE__, $sql);
}
return $id_mess;
}
#
#-----[ OPEN ]------------------------------------------
#
includes/init_bb.php
#
#-----[ FIND ]------------------------------------------
#
define('TOPICS_WATCH_TABLE', $t .'topics_watch');
#
#-----[ AFTER, ADD ]------------------------------------------
#
// Read Only by Nightmare
define('READONLY_TABLE', $t.'readonly');
// Read Only by Nightmare
#
#-----[ OPEN ]------------------------------------------
#
language/lang_russian/lang_main.php
#
#-----[ FIND ]------------------------------------------
#
// That's all, Folks!
// -------------------------------------------------
#
#-----[ AFTER, ADD ]------------------------------------------
#
// Read Only by Nightmare
$lang['add_readonly'] = '+';
$lang['user_already_readonly'] = 'Пользователь уже имеет статус "только чтение" в этом форуме';
$lang['del_readonly'] = '-';
$lang['readonly'] = 'Только чтение';
$lang['ro_in_all'] = 'Во всех форумах';
// Read Only by Nightmare
#
#-----[ OPEN ]------------------------------------------
#
modcp.php
#
#-----[ FIND ]------------------------------------------
#
$start = isset($_REQUEST['start']) ? abs(intval($_REQUEST['start'])) : 0;
$confirmed = isset($_POST['confirm']);
#
#-----[ AFTER, ADD ]------------------------------------------
#
// Read Only by Nightmare
if ( isset($_REQUEST['user']) )
{
$ro_user_id = intval($_REQUEST['user']);
}
else
{
$ro_user_id = '';
}
if ( isset($_REQUEST['time']) )
{
$time = intval($_REQUEST['time']);
}
else
{
$time = '';
}
if ( isset($_REQUEST['mod']) )
{
$mod_id = intval($_REQUEST['mod']);
}
else
{
$mod_id = '';
}
$all = ($_REQUEST['all'] == 'on') ? TRUE : FALSE; // Возможны нотисы с $REQUEST['all'], уверен у вас хватит сил справится с ними
// Read Only by Nightmare
#
#-----[ FIND ]------------------------------------------
#
default:
bb_die('invalid action');
break;
#
#-----[ BEFORE, ADD ]------------------------------------------
#
//readonly mode by Nightmare
case 'readonly' :
$endtime = time()+($time*60*60); //seconds
if ($all) $forum_id = 0;
$sql = "SELECT user_id
FROM " . READONLY_TABLE . "
WHERE user_id = ". $ro_user_id ."
AND (forum_id = ".$forum_id." OR forum_id = 0)
AND (endtime > ".time()." OR endtime = 0)";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not get Read Only information for this user', '', __LINE__, __FILE__, $sql);
}
$ro_row = $db->sql_fetchrow($result);
if ( !empty($ro_row['user_id']) )
{
// if ( $ro_row['forum_id'] == 0 ) $forum_id = 0;
$sql = "DELETE FROM ".READONLY_TABLE." WHERE user_id = ".$ro_user_id." AND forum_id = ".$forum_id;
if (!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not delete Read Only information', '', __LINE__, __FILE__, $sql);
}
} else
{
$sql = "INSERT INTO ".READONLY_TABLE." (user_id, forum_id, endtime, mod_id) VALUES (".$ro_user_id.", ".$forum_id.", ".$endtime.", ".$mod_id.")";
if (!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not add Read Only information', '', __LINE__, __FILE__, $sql);
}
$forum_row = $db->sql_fetchrow($result);
if ($forum_id==0){$forums_txt="во всех форумах" ;}
else {$sql = "SELECT forum_name
FROM " . FORUMS_TABLE . "
WHERE forum_id = ". $forum_id ."
LIMIT 1";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not get forums information', '', __LINE__, __FILE__, $sql);
}
$forums_txt = "в форуме <b><a href=\"viewforum.php?f=".$forum_id."\">".$forum_row['forum_name']."</a></b>";}
$tz = get_userdata($ro_user_id);
$user_from = $mod_id;
$user_to = $ro_user_id;
$subject = 'Уведомление о включении режима "Только Чтение"';
$message ='Здравствуйте, вам был включен режим "Только Чтение" '.$forums_txt.' за данное <b><a href="viewtopic.php?p='.$post_id.'#'.$post_id.'">сообщение</a></b>.<br>В данном режиме вы не имеете возможности писать сообщения, а только просматривать темы в данном форуме<br> Режим включен до '. create_date("d.m.Y H:i", $endtime, $tz['user_timezone']) .'';
// не стал использовать $langs для ЛС
$id_mess = send_pm($subject, $message, $user_from, $user_to);
// Send e-mail notification
$script_name = preg_replace('/^\/?(.*?)\/?$/', "\\1", trim($bb_cfg['script_path']));
$script_name = ( $script_name != '' ) ? $script_name . '/privmsg.'.$phpEx : 'privmsg.'.$phpEx;
$server_name = trim($bb_cfg['server_name']);
$server_protocol = ( $bb_cfg['cookie_secure'] ) ? 'https://' : 'http://';
$server_port = ( $bb_cfg['server_port'] <> 80 ) ? ':' . trim($bb_cfg['server_port']) . '/' : '/';
$to_userdata = get_userdata($ro_user_id);
include($phpbb_root_path . 'includes/emailer.'.$phpEx);
$emailer = new emailer($bb_cfg['smtp_delivery']);
$emailer->from($bb_cfg['board_email']);
$emailer->replyto($bb_cfg['board_email']);
$emailer->use_template('privmsg_notify', $to_userdata['user_lang']);
$emailer->email_address($to_userdata['user_email']);
$emailer->set_subject($lang['NOTIFICATION_SUBJECT']);
$emailer->assign_vars(array(
'USERNAME' => stripslashes($to_userdata['username']),
'NAME_FROM' => $userdata['username'],
'MSG_SUBJECT' => stripslashes($privmsg_subject),
'SITENAME' => $bb_cfg['sitename'],
'EMAIL_SIG' => (!empty($bb_cfg['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $bb_cfg['board_email_sig']) : '',
'U_INBOX' => $server_protocol . $server_name . $server_port . $script_name . '?folder=inbox&mode=read&p=' . $id_mess)
);
$emailer->send();
$emailer->reset();
}
redirect("viewtopic.$phpEx?p=$post_id#$post_id");
break;
// readonly mode by Nightmare
#
#-----[ OPEN ]------------------------------------------
#
templates/default/viewtopic.tpl
#
#-----[ FIND ]------------------------------------------
#
</script>
<!-- ENDIF / SPLIT_FORM -->
#
#-----[ AFTER, ADD ]------------------------------------------
#
<script type-"text/javascript">
$(document).ready(function (){
$('div.ro-parent').toggle(function(){
$(this).parent().children('div.ro-child').slideDown(500);
}, function(){
$(this).parent().children('div.ro-child').slideUp("SLOW");
});
});
</script>
#
#-----[ FIND ]------------------------------------------
#
<!-- IF postrow.POSTER_FROM_FLAG --><p class="flag">{postrow.POSTER_FROM_FLAG}</p><!-- ENDIF -->
<!-- ENDIF -->
#
#-----[ AFTER, ADD ]------------------------------------------
#
<!-- READONLY BY NIGHTMARE --> {postrow.POSTER_READONLY} <!-- READONLY BY NIGHTMARE -->
#
#-----[ OPEN ]------------------------------------------
#
viewtopic.php
#
#-----[ FIND ]------------------------------------------
#
// Auth check
$is_auth = auth(AUTH_ALL, $forum_id, $userdata, $t_data);
#
#-----[ AFTER, ADD ]------------------------------------------
#
// Read Only by Nightmare
if (!(IS_ADMIN))
{
get_user_readonly ($userdata['user_id'], $forum_id);
}
// Read Only by Nightmare
#
#-----[ FIND ]------------------------------------------
#
$l_edited_by = '';
}
#
#-----[ AFTER, ADD ]------------------------------------------
#
// Read Only by Nightmare
$sql = "SELECT *
FROM ".READONLY_TABLE."
WHERE user_id = ".$poster_id." AND (forum_id = ".$forum_id." OR forum_id = 0)
AND (endtime > ".time()." OR endtime = 0)";
if ( !($result2 = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "Could not get Read Only information", '', __LINE__, __FILE__, $sql);
}
$rorow = $db->sql_fetchrow($result2);
if ( !empty($rorow['user_id']) && ($rorow['forum_id'] == 0 || $rorow['forum_id'] = $forum_id) )
{
$langreadonly = $lang['del_readonly'];
$readonly = true;
} else
{
$langreadonly = $lang['add_readonly'];
$readonly = false;
}
// if you haven't LESS_ADMIN, delete && ($postrow[$i]['user_level'] != LESS_ADMIN)
if ( $is_auth['auth_mod'] && ($postrow[$i]['user_level'] != ADMIN) && ($postrow[$i]['user_level'] != MOD) && ($userdata['user_id'] != $poster_id) && ($poster_id != BOT_UID) )
{
$poster_readonly = '<div><div align="center" style="border:1px solid #DEDEDE;background-color:#FFFFFF;padding:5px;padding-bottom:-5px;margin-left:-2px;margin-right:-2px;cursor:pointer;" class="ro-parent" title="Нажмите для того чтобы открыть опции режима Только Чтение">
<form action="modcp.php" method=get>
<input type="hidden" name="mode" value="readonly" />
<input type="hidden" name="f" value="'.$forum_id.'" />
<input type="hidden" name="user" value="'.$poster_id.'" />
<input type="hidden" name="p" value="'.$postrow[$i]['post_id'].'" />
<input type="hidden" name="sid" value="'.$userdata['session_id'].'" />
<input type="hidden" name="mod" value="'.$userdata['user_id'].'" />
'.$lang['readonly'].' </div><div style="display:none;border:1px solid #DEDEDE;border-top:none;background-color:#FFFFFF;padding:5px;padding-bottom:-5px;margin-left:-2px;margin-right:-2px;" class="ro-child">';
if (!$readonly) {
if ( IS_ADMIN ) $poster_readonly.=$lang['ro_in_all'].'<input type="checkbox" name="all" checked /><br />';
$poster_readonly.='<input type="text" name="time" value="1" size=3 /> '.$lang['HOURS'];
} elseif ( $rorow['forum_id'] == 0 )
{
$poster_readonly.= '<input type="hidden" name="all" value="on" />';
}
$poster_readonly.=' <input type="submit" name="submit" value=\''.$langreadonly.'\' /></form></div></div>';
} else
{
$poster_readonly = '';
}
// Read Only by Nightmare
#
#-----[ FIND ]------------------------------------------
#
'POSTER_AVATAR' => $poster_avatar,
#
#-----[ AFTER, ADD ]------------------------------------------
#
'POSTER_READONLY' => $poster_readonly, // Read Only by Nightmare
#
#-----[ FIND ]------------------------------------------
#
$new_topic_url = ( $t_data['forum_status'] == FORUM_LOCKED ) ? "" : "posting.$phpEx?mode=newtopic&f=$forum_id";
#
#-----[ REPLACE ]------------------------------------------
#
$new_topic_url = ( $t_data['forum_status'] == FORUM_LOCKED || !$is_auth['auth_post'] ) ? "" : "posting.$phpEx?mode=newtopic&f=$forum_id";
#
#-----[ FIND ]------------------------------------------
#
$reply_topic_url = ( $t_data['forum_status'] == FORUM_LOCKED || $t_data['topic_status'] == TOPIC_LOCKED ) ? "" : "posting.$phpEx?mode=reply&t=$topic_id";
#
#-----[ REPLACE ]------------------------------------------
#
$reply_topic_url = ( $t_data['forum_status'] == FORUM_LOCKED || $t_data['topic_status'] == TOPIC_LOCKED || !$is_auth['auth_reply'] ) ? "" : "posting.$phpEx?mode=reply&t=$topic_id";
#
#-----[ FIND ]------------------------------------------
#
$reply_img = ( $t_data['forum_status'] == FORUM_LOCKED || $t_data['topic_status'] == TOPIC_LOCKED ) ? $images['reply_locked'] : $images['reply_new'];
$reply_alt = ( $t_data['forum_status'] == FORUM_LOCKED || $t_data['topic_status'] == TOPIC_LOCKED ) ? $lang['TOPIC_LOCKED_SHORT'] : $lang['REPLY_TO_TOPIC'];
#
#-----[ REPLACE ]------------------------------------------
#
$reply_img = ( $t_data['forum_status'] == FORUM_LOCKED || $t_data['topic_status'] == TOPIC_LOCKED || !$is_auth['auth_reply'] ) ? $images['reply_locked'] : $images['reply_new'];
$reply_alt = ( $t_data['forum_status'] == FORUM_LOCKED || $t_data['topic_status'] == TOPIC_LOCKED || !$is_auth['auth_reply']) ? $lang['TOPIC_LOCKED_SHORT'] : $lang['REPLY_TO_TOPIC'];
#
#-----[ OPEN ]------------------------------------------
#
viewforum.php
#
#-----[ FIND ]------------------------------------------
#
// Auth
$is_auth = auth(AUTH_ALL, $forum_id, $userdata, $forum_data);
$moderation = (!empty($_REQUEST['mod']) && $is_auth['auth_mod']);
#
#-----[ AFTER, ADD ]------------------------------------------
#
// Read Only by Nightmare
if (!(IS_ADMIN))
{
get_user_readonly ($userdata['user_id'], $forum_id);
}
// Read Only by Nightmare
#
#-----[ FIND ]------------------------------------------
#
$post_new_topic_url = "posting.$phpEx?mode=newtopic&f=$forum_id";
#
#-----[ REPLACE ]------------------------------------------
#
$post_new_topic_url =(!$is_auth['auth_post']) ? "" : "posting.$phpEx?mode=newtopic&f=$forum_id";
#
#-----[ FIND ]------------------------------------------
#
'T_POST_NEW_TOPIC' => ($forum_data['forum_status'] == FORUM_LOCKED) ? $lang['FORUM_LOCKED'] : $lang['POST_NEW_TOPIC'],
#
#-----[ REPLACE ]------------------------------------------
#
'T_POST_NEW_TOPIC' => ($forum_data['forum_status'] == FORUM_LOCKED || !$is_auth['auth_post']) ? $lang['FORUM_LOCKED'] : $lang['POST_NEW_TOPIC'],
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
|
_________________
|
|
Вернуться к началу
|
|
Admin Администратор Зарегистрирован: 2010-07-27 Сообщ.: 777
|
|
Вернуться к началу
|
|
екун Зарегистрирован: 2010-12-01 Сообщ.: 94
|
|
Вернуться к началу
|
|
Admin Администратор Зарегистрирован: 2010-07-27 Сообщ.: 777
|
|
Вернуться к началу
|
|
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
Все материалы сайта представлены только для ознакомления. При копировании материала ссылка на torrentpier-download.ru
обязательна!
sitemap карта форума | Статистика визитов поисковых ботов | Выдача в поисковиках
Powered by phpBB © 2001, 2011 phpBB Group | ©2011-2024 - Воронеж |
|