Здравствуйте. пытаюсь адаптировать модуль vip_module.
Суть его заключается в том что бы группа пользователей качала файлы с определенным лимитом времени. Например это группа VIP.
Данный модуль был написан под 9.3 я его адаптировал под 9.5. Не могу справиться с 9.6 я так понимаю загвоздка в таблице _post.
Внимание! У вас нет прав для просмотра скрытого текста.
Вот инструкция по адаптации под 9.6 но вылазит ошибка при попытке скачивать файл:
//Инструкция по обновлени
Открыть engine/download.php
1. найти:
$row = $db->super_query ( "SELECT name, onserver FROM " . PREFIX . "_files WHERE id ='$id'" );
2. Заменить на:
$row = $db->super_query ( "SELECT name, onserver, news_id FROM " . PREFIX . "_files WHERE id ='$id'" );
3. НАйти:
$config['files_max_speed'] = intval( $config['files_max_speed'] );
выше добавить:
###################################################################################################
$PermDown = 1;
include_once(ENGINE_DIR . '/data/downlimit.php');
if( $row['news_id'] ) {
$category = $db->super_query("SELECT category, access FROM " . PREFIX . "_post WHERE id='{$row['news_id']}'");
$inCatSecTrue = false;
if( strpos($category['category'], ',')) {
$category['categorys'] = @explode(',', $category['category']);
} elseif( $category['category'] ) {
$category['categorys'] = array($category['category']);
}
if(is_array($category['categorys']) && count( $category['categorys'] ) ) {
foreach( $category['categorys'] as $c ) {
if($c && in_array($c, $neoCats))
{
$inCatSecTrue = true; break;
}
}
}
if ( $inCatSecTrue == true ) {
$PermDown = 0;
if( $category['access'] ){
$options = news_permission( $category['access'] );
if( $options[$member_id['user_group']] and $options[$member_id['user_group']] != 3 )
$PermDown = 1;
if( $options[$member_id['user_group']] == 3 )
$PermDown = 0;
}
if( $category['category'] ) {
$cat_list = explode(',', $category['category']);
$allow_list = explode(',', $user_group[$member_id['user_group']]['allow_cats']);
if( count( $cat_list ) == 1 ) {
if( $allow_list[0] != "all" and !in_array( $cat_list[0], $allow_list ) )
$PermDown = 0;
} else {
foreach ( $cat_list as $element ) {
if( $allow_list[0] != "all" and !in_array( $element, $allow_list ) )
$PermDown = 0;
}
}
}
if( $member_id['user_group'] && in_array($member_id['user_group'], $neoGroup) ) {
$downHistory = explode(':', $member_id['down_history']);
if( is_array($downHistory) ) {
if( count($downHistory) ) {@sort($downHistory);@reset($downHistory);}
if( $downHistory[0] > ( time()-($neoCountDate*60) ) ) {
$PermDown = 0;
} else {
$PermDown = 1;
}
if( count($downHistory) < $neoCountDl ) {
$PermDown = 1;
}
if( $PermDown ) {
if( count($downHistory) >= $neoCountDl ) {
unset( $downHistory[0] );
}
$downHistory[] = time();
@sort($downHistory); @reset($downHistory);
$downHistory = implode(':', array_slice(array_filter($downHistory, 'strlen'), 0, $neoCountDl));
$db->query("UPDATE " . USERPREFIX . "_users SET down_history='{$downHistory}' WHERE user_id ='{$member_id['user_id']}'");
}
}
}
}
}
if( $PermDown ){
найти в самом низу:
$file->download_file ();
заменить на:
$file->download_file(); // exit("Скачано...");
} else
exit("Запрешено...");
Дальше открываем engine/modules/functions.php
найти:
$db->query( "SELECT id, name, onserver, dcount FROM " . PREFIX . "_static_files WHERE $where" );
заменить на:
$ws = $db->query( "SELECT id, name, onserver, dcount FROM " . PREFIX . "_static_files WHERE $where" );
найти:
$db->query( "SELECT id, name, onserver, dcount FROM " . PREFIX . "_files WHERE $where" );
заменить на:
$ws = $db->query( "SELECT id, name, onserver, dcount, news_id FROM " . PREFIX . "_files WHERE $where" );
Между:
$area = "";
и
$size = formatsize( @filesize( ROOT_DIR . '/uploads/files/' . $row['onserver'] ) );
добавить:
}
include_once(ENGINE_DIR . '/data/downlimit.php');
while ( $row = $db->get_row($ws) ) {
if( $row['news_id'] ) {
$category = $db->super_query("SELECT category FROM " . PREFIX . "_post WHERE id='{$row['news_id']}'");
$PermDown = 1;
$inCatSecTrue = false;
if( strpos($category['category'], ',')) {
$category['categorys'] = @explode(',', $category['category']);
} elseif( $category['category'] ) {
$category['categorys'] = array($category['category']);
}
if(is_array($category['categorys']) && count( $category['categorys'] ) ) {
foreach( $category['categorys'] as $c ) {
if( $c && in_array($c, $neoCats) )
{
$inCatSecTrue = true; break;
}
}
}
if( $inCatSecTrue == true ) {
$downHistory = explode(':', $member_id['down_history']);
$PermDown = 0;
if( in_array($member_id['user_group'], $neoGroup) )
{
if( is_array($downHistory) ) {
if( count($downHistory) ) {@sort($downHistory);@reset($downHistory);}
if( count($downHistory) < $neoCountDl ) {$PermDown = 1;}
elseif( $downHistory[0] > ( time()-($neoCountDate*60) ) ) {
$PermDown = 0;
$mess = "Вы можете скачать не более 2 файлов за 3 дня";
}
else { $PermDown = 1; }
}
}
else
{
$PermDown = 0;
$mess = "Файл доступен только для VIP пользователей!";
}
}
}
найти:
if ( ! $user_group[$member_id['user_group']]['allow_files'] ) {
заменить на:
if ( !$PermDown ) {
$replace_1[] = "<span class=\"attachment\">{$mess}</span>";
$replace_2[] = "<span class=\"attachment\">{$mess}</span>";
} elseif ( ! $user_group[$member_id['user_group']]['allow_files'] ) {
выполнить запрос в бд:
Выполнить SQL Запрос:
ALTER TABLE dle_users ADD down_history VARCHAR( 255 ) NOT NULL DEFAULT ''
Автор: NEO
Файл data/donwload.php с архива закинуть на сервер.