Jump to content

Featured Replies

Название: Tutorials 1.4.1

Добавил: Respected

Добавлен: 05 May 2012

Категория: Premium файлы

Tutorials 1.4.1 - полноценная система статей для IP.Board 3.3.x!

Некоторые возможности компонента Tutorials 1.4.1:

- Неограниченное число категорий для статей

- Неограниченная вложенность категорий

- Встроенная система комментариев

- Тема поддержки статьи

- Установка прав для групп на различные действия (комментирование, добавление, обход модерирования и тд.)

- Модераторские действия на статьи и комментарии

- Создание канала RSS как для всех статей, так и для отдельных категорий

- Возможность прикреплять файлы к статьям

- Возможность создавать многостраничный статьи

- Добавляется вкладка Tutorials в профили пользователей для отображения собственных статей

- Блок в боковой панельке отображает список последних статей

- Кнопка в сообщении для конвертирования его в статью

- Возможность копирования статьи из одной категории в другую

- Возможность изменения репутации в статьях

- Оценка статей

- Возможность подписываться на обновления статей

- И многое многое другое..

Link to comment
https://ipbmafia.ru/topic/817-premium-tutorials-141/
Share on other sites
  • 5 месяцев спустя...

После установки данного девайса форум падает со словами:

[Thu Oct 25 17:16:20 2012] [error] [client 173.199.115.91] PHP Warning: Invalid argument supplied for foreach() in

/home/ХХХХХХХ/data/www/ХХХХХХХХ/admin/applications_addon/other/tutorials/extensions/search/engines/sql.php on line 374

Началось три дня назад. Судя по IP роботы типа google. Как это можно вылечить? На данный момент, я просто отключил ботам возможность поиска по форуму, но это не панацея. Надоть решить грамотно...

Link to comment
https://ipbmafia.ru/topic/817-premium-tutorials-141/?&do=findComment&comment=12844
Share on other sites

Каково содержание данной строки?

Link to comment
https://ipbmafia.ru/topic/817-premium-tutorials-141/?&do=findComment&comment=12845
Share on other sites

/* Searching tags? */

if ( $search_tags )

{

$_tagIds = array();


foreach ( $tags as $id => $data )

{

$_tagIds[] = $data['tag_meta_id'];

}


if ( count( $_tagIds ) )

{

$where_clause[] = 'a.a_id IN(' . implode( ',', $_tagIds ) . ')';

}

else

{

$where_clause[] = 'a.a_id=0';

}

}

foreach ( $tags as $id => $data )

Link to comment
https://ipbmafia.ru/topic/817-premium-tutorials-141/?&do=findComment&comment=12847
Share on other sites

Может быть хуки поотключать все?

Link to comment
https://ipbmafia.ru/topic/817-premium-tutorials-141/?&do=findComment&comment=12848
Share on other sites

Пробовал в режиме производительности, ноль эмоций. Загрузка памяти 300%. Надо посмотреть что там с тегами которые он ищет... Кстати, в порядке бреда. А как убить все в этой функции, ну чтобы при запросе к ней ничего не выполнялось (включилась, выключилась) По идее получится, что при поисковом запросе к функции обращение есть, ответ нулевой и соответственно как результат ничего не найдено...

Link to comment
https://ipbmafia.ru/topic/817-premium-tutorials-141/?&do=findComment&comment=12850
Share on other sites

А там бред какой-то кстати, в этом коде.

Вот отрывок из функции:


private function _buildWhereStatement( $search_term, $type='articles', $search_tags=null )
{
/* INIT */
$where_clause = array();

if ( $search_term )
{
$search_term = str_replace( '"', '"', $search_term );

if ( $type == 'articles' )
{
switch ( IPSSearchRegistry::get('opt.searchType') )
{
case 'both':
default:
$where_clause[] = '(' . $this->DB->buildSearchStatement( 'a.a_name', $search_term, true, false, ipsRegistry::$settings['use_fulltext'] ) . ' OR ' . $this->DB->buildSearchStatement( 'a.a_content', $search_term, true, false, ipsRegistry::$settings['use_fulltext'] ) . ')';
break;

case 'titles':
$where_clause[] = $this->DB->buildSearchStatement( 'a.a_name', $search_term, true, false, ipsRegistry::$settings['use_fulltext'] );
break;

case 'content':
$where_clause[] = $this->DB->buildSearchStatement( 'a.a_content', $search_term, true, false, ipsRegistry::$settings['use_fulltext'] );
break;
}
}
else
{
$where_clause[] = $this->DB->buildSearchStatement( 'c.comment', $search_term, true, false, ipsRegistry::$settings['use_fulltext'] );
}
}

/* Searching tags? */
if ( $search_tags )
{
$_tagIds = array();

foreach ( $tags as $id => $data )
{
$_tagIds[] = $data['tag_meta_id'];
}

if ( count( $_tagIds ) )
{
$where_clause[] = 'a.a_id IN(' . implode( ',', $_tagIds ) . ')';
}
else
{
$where_clause[] = 'a.a_id=0';
}
}

Там переменная $tags вообще не определена, проблема на уровне кода, IP.Board тут не при делах.

Способ исправления не знаю, понятия не имею, что там хотел автор сделать, но он вообще ничего не сделал.

Link to comment
https://ipbmafia.ru/topic/817-premium-tutorials-141/?&do=findComment&comment=12858
Share on other sites

Сейчас сделал так:

Вместо

/* Searching tags? */

if ( $search_tags )

{

$_tagIds = array();


foreach ( $tags as $id => $data )

{

$_tagIds[] = $data['tag_meta_id'];

}


if ( count( $_tagIds ) )

{

$where_clause[] = 'a.a_id IN(' . implode( ',', $_tagIds ) . ')';

}

else

{

$where_clause[] = 'a.a_id=0';

}

}

Залил файл в котором эта функция заканчивается не начавшись:
/* Searching tags? */

{

}

Посмотрим что получится из такого изврата...

Link to comment
https://ipbmafia.ru/topic/817-premium-tutorials-141/?&do=findComment&comment=12871
Share on other sites

Лучше так тогда:


private function _buildWhereStatement( $search_term, $type='articles', $search_tags=null )
{
return '';
}
[/CODE]

Link to comment
https://ipbmafia.ru/topic/817-premium-tutorials-141/?&do=findComment&comment=12873
Share on other sites

Пасип. Отправил. Посмотрим что за на...

Неа...:

Parse error: syntax error, unexpected T_PRIVATE in /home/ххххххх/data/www/хххххххх/admin/applications_addon/other/tutorials/extensions/search/engines/sql.php on line 370

Писал:

/* Searching tags? */

private function _buildWhereStatement( $search_term, $type='articles', $search_tags=null)

{

  return '';

}

Link to comment
https://ipbmafia.ru/topic/817-premium-tutorials-141/?&do=findComment&comment=12874
Share on other sites

Нет, нужно полностью заменить всю эту функцию на код выше, не внутри ф-ии написать это, а заменить ее.

Т.е. что бы просто было


private function _buildWhereStatement( $search_term, $type='articles', $search_tags=null)
{
return '';
}
[/CODE]

вместо всей функции.

Link to comment
https://ipbmafia.ru/topic/817-premium-tutorials-141/?&do=findComment&comment=12876
Share on other sites

/* INIT */

$where_clause = array();


if ( $search_term )

{

$search_term = str_replace( '"', '"', $search_term );


if ( $type == 'articles' )

{

switch ( IPSSearchRegistry::get('opt.searchType') )

{

case 'both':

default:

$where_clause[] = '(' . $this->DB->buildSearchStatement( 'a.a_name', $search_term, true, false, ipsRegistry::$settings['use_fulltext'] ) . ' OR ' . $this->DB->buildSearchStatement( 'a.a_content', $search_term, true, false, ipsRegistry::$settings['use_fulltext'] ) . ')';

break;


case 'titles':

$where_clause[] = $this->DB->buildSearchStatement( 'a.a_name', $search_term, true, false, ipsRegistry::$settings['use_fulltext'] );

break;


case 'content':

$where_clause[] = $this->DB->buildSearchStatement( 'a.a_content', $search_term, true, false, ipsRegistry::$settings['use_fulltext'] );

break;

}

}

else

{

$where_clause[] = $this->DB->buildSearchStatement( 'c.comment', $search_term, true, false, ipsRegistry::$settings['use_fulltext'] );

}

}


private function _buildWhereStatement( $search_term, $type='articles', $search_tags=null)

{

return '';

}

/* Date Restrict */

Parse error: syntax error, unexpected T_PRIVATE in /home/ххххххх/data/www/ххххххх/admin/applications_addon/other/tutorials/extensions/search/engines/sql.php on line 369

--> private function _buildWhereStatement( $search_term, $type='articles', $search_tags=null) <--

Link to comment
https://ipbmafia.ru/topic/817-premium-tutorials-141/?&do=findComment&comment=12879
Share on other sites

:D

Вместо всего этого:


private function _buildWhereStatement( $search_term, $type='articles', $search_tags=null )
{
/* INIT */
$where_clause = array();

if ( $search_term )
{
$search_term = str_replace( '&quot;', '"', $search_term );

if ( $type == 'articles' )
{
switch ( IPSSearchRegistry::get('opt.searchType') )
{
case 'both':
default:
$where_clause[] = '(' . $this->DB->buildSearchStatement( 'a.a_name', $search_term, true, false, ipsRegistry::$settings['use_fulltext'] ) . ' OR ' . $this->DB->buildSearchStatement( 'a.a_content', $search_term, true, false, ipsRegistry::$settings['use_fulltext'] ) . ')';
break;

case 'titles':
$where_clause[] = $this->DB->buildSearchStatement( 'a.a_name', $search_term, true, false, ipsRegistry::$settings['use_fulltext'] );
break;

case 'content':
$where_clause[] = $this->DB->buildSearchStatement( 'a.a_content', $search_term, true, false, ipsRegistry::$settings['use_fulltext'] );
break;
}
}
else
{
$where_clause[] = $this->DB->buildSearchStatement( 'c.comment', $search_term, true, false, ipsRegistry::$settings['use_fulltext'] );
}
}

/* Searching tags? */
if ( $search_tags )
{
$_tagIds = array();

foreach ( $tags as $id => $data )
{
$_tagIds[] = $data['tag_meta_id'];
}

if ( count( $_tagIds ) )
{
$where_clause[] = 'a.a_id IN(' . implode( ',', $_tagIds ) . ')';
}
else
{
$where_clause[] = 'a.a_id=0';
}
}

/* Date Restrict */
if ( $this->search_begin_timestamp && $this->search_end_timestamp )
{
if ( $type == 'articles' )
{
$where_clause[] = $this->DB->buildBetween( "a.a_updated", $this->search_begin_timestamp, $this->search_end_timestamp );
}
else
{
$where_clause[] = $this->DB->buildBetween( "c.date", $this->search_begin_timestamp, $this->search_end_timestamp );
}
}
else
{
if ( $type == 'articles' )
{
if ( $this->search_begin_timestamp )
{
$where_clause[] = "a.a_updated > {$this->search_begin_timestamp}";
}

if ( $this->search_end_timestamp )
{
$where_clause[] = "a.a_updated < {$this->search_end_timestamp}";
}
}
else
{
if ( $this->search_begin_timestamp )
{
$where_clause[] = "c.date > {$this->search_begin_timestamp}";
}

if ( $this->search_end_timestamp )
{
$where_clause[] = "c.date < {$this->search_end_timestamp}";
}
}
}

/* What categories do we have access to? */
if ( count( $this->cats ) )
{
$categories = array();

foreach ( $this->cats as $category )
{
$categories[ $category ] = $category;
}
}
else
{
$categories = array( 0 );
}

/* We have categories? We aren't checking permissions here because the i.perm_view filter covers that already */
if ( !empty( ipsRegistry::$request['search_app_filters']['tutorials']['cats'] ) && count( ipsRegistry::$request['search_app_filters']['tutorials']['cats'] ) )
{
foreach ( $categories as $cat )
{
if ( !in_array( $cat, ipsRegistry::$request['search_app_filters']['tutorials']['cats'] ) )
{
unset( $categories[ $cat ] );
}
}
}

if ( count( $categories ) )
{
$where_clause[] = "a.a_cat IN(" . implode( ',', $categories ) . ")";
}
else
{
$where_clause[] = "a.a_cat=0";
}

/* Add in AND where conditions */
if ( isset( $this->whereConditions['AND'] ) && count( $this->whereConditions['AND'] ) )
{
$where_clause = array_merge( $where_clause, $this->whereConditions['AND'] );
}

/* ADD in OR where conditions */
if ( isset( $this->whereConditions['OR'] ) && count( $this->whereConditions['OR'] ) )
{
$where_clause[] = '( ' . implode( ' OR ', $this->whereConditions['OR'] ) . ' )';
}

/* Permissions */
if ( !$this->memberData['g_is_supmod'] )
{
/* Approved files */
$where_clause[] = "a.a_approved=1";
}

/* Never deleted articles */
$where_clause[] = "a.a_deleted=0";

/* Build and return the string */
return implode( " AND ", $where_clause );
}



(с 336 строчки по 489 в оригинальном файле), вот это:

private function _buildWhereStatement( $search_term, $type='articles', $search_tags=null )
{
return '';
}
[/code]

Link to comment
https://ipbmafia.ru/topic/817-premium-tutorials-141/?&do=findComment&comment=12880
Share on other sites

Ты не мню экспериментироваешь штоле? :3:

При моем варианте { } Все работает и поиск в том числе. Не думаю, что есть смысл менять шило на другое шило. Пока да и вообще не надо стирать то что мы понаписали, если мой вариант глюканет, то буду дальше экспериментировать

Link to comment
https://ipbmafia.ru/topic/817-premium-tutorials-141/?&do=findComment&comment=12882
Share on other sites

Я написал как лучше, а там не мое дело.

Link to comment
https://ipbmafia.ru/topic/817-premium-tutorials-141/?&do=findComment&comment=12883
Share on other sites

Не ругайся, и не обижайся. Я не хотел тебя обидеть. Просто на данный момент, работает. А есть правило, не трогай работающий механизм, он и не сломается.

Link to comment
https://ipbmafia.ru/topic/817-premium-tutorials-141/?&do=findComment&comment=12888
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.


Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.