76

Re: [Релиз] AnyCode Tool (1.0.0 Beta)

knyshow пишет:

конечно, вариант добавить поле в таблицу posts с кодом страны и дергать картинку оттуда

Кстати вариант, почему нет.

Сайт hcs

Поделиться

77 (14.02.2009 03:53 отредактировано De-Luxis)

Re: [Релиз] AnyCode Tool (1.0.0 Beta)

Задача:
Поместить значек ICQ, который меняется в зависимости от статуса.
Решение
Воспользоваться соответствующим сервисом на ICQ.

Название: - ICQ_status
Хук№1: vt_row_pre_post_contacts_merge

/////////- Аськин статус -//////////////////////            
    if  (!empty($cur_post['icq'])){
            if (!$forum_user['is_guest'])  {
$forum_page['author_ident']['icq'] = '
                <a href="http://www.icq.com/people/webmsg.php?to='.forum_htmlencode($cur_post['icq']).' target="_blank" onClick="window.open(\'http://www.icq.com/people/webmsg.php?to='.forum_htmlencode($cur_post['icq']).'\',\'\',\'width=503,height=535\');return(false);"">
                <script type="text/javascript">
                <!--
                document.write(\'<img border="0" src="http://status.icq.com/online.gif?icq='.forum_htmlencode($cur_post['icq']).'&img=27&rnd=\'+Math.rnd+\'border="0"  width="16" height="16" style="padding-top: 10px"/> '.forum_htmlencode($cur_post['icq']).'\')
                //-->
                </script>
                <noscript>
                <img src="http://status.icq.com/online.gif?icq='.forum_htmlencode($cur_post['icq']).'&img=27" border="0" width="16" height="16" style="padding-top: 10px"/> '.forum_htmlencode($cur_post['icq']).'</noscript></a>';
                }
            }
//////////////////////////////

Хук№2: vt_qr_get_posts (упростил)

$query['SELECT'] .= ', u.icq';

smile

Добавлено спустя 14 минут 24 секунды:

http://s58.radikal.ru/i159/0902/16/79a0b13aa639.jpg

Сайт De-Luxis

Поделиться

78

Re: [Релиз] AnyCode Tool (1.0.0 Beta)

да, это можно и нужно упростить:

$query['SELECT'] .= ', u.icq';

Добавлено спустя 1 минуту 25 секунд:

Поясняю, query уже сформирован, нет нужды его формировать заново, достаточно добавить к нему свои потребности, в данном случае нам надо в селект вставить u.icq, что мы и делаем.

Сайт hcs

Поделиться

79

Re: [Релиз] AnyCode Tool (1.0.0 Beta)

Спасибо. я просто не знал как это реализовать. smile

Сайт De-Luxis

Поделиться

80

Re: [Релиз] AnyCode Tool (1.0.0 Beta)

Здорово конечно. Но позвольте мне немного отойти от темы. Насколько это реально используется посетителями форумов? Видел такие шашечки, но не понимал смысла.

У каждого свой взгляд на мир.

Сайт coordinator

Поделиться

81

Re: [Релиз] AnyCode Tool (1.0.0 Beta)

Незнаю, но в принципе на форумах всякого рода поддержки контакт всегда перед глазами будет.

Сайт hcs

Поделиться

82

Re: [Релиз] AnyCode Tool (1.0.0 Beta)

hcs - подскажи пожалуйста, тут в 2х хуках  "vt_start" как их добавить так чтоб не глючило?

Сайт flashcat

Поделиться

83

Re: [Релиз] AnyCode Tool (1.0.0 Beta)

А в чем проблема? У разных решений разная область "видимости" хуков, код одних и тех же хуков, вызываемых разными расширениями будет вызываться поочередно.
Или я что-то не понял?

Сайт hcs

Поделиться

84 (23.03.2009 08:51 отредактировано flashcat)

Re: [Релиз] AnyCode Tool (1.0.0 Beta)

hcs пишет:

А в чем проблема? У разных решений разная область "видимости" хуков, код одних и тех же хуков, вызываемых разными расширениями будет вызываться поочередно.
Или я что-то не понял?

Ну вполне возможно что я не так понимаю просто я пробывал добавить 2й он мне написал ошибку... вот я  написал "vt_start_1" вот так всё встало только ошибка пишется в написание ответов....

Notice: Undefined variable: lang_hcsmrg in /home/......./viewtopic.php(635) : eval()'d code on line 13

вот у меня такая проблема... я просто может не до конца еще понял как работать с хуками...

Сайт flashcat

Поделиться

85

Re: [Релиз] AnyCode Tool (1.0.0 Beta)

Ты видимо вставил хук в другое решение, в данном случае в склейку сообщений.
2 одинаковых хука не могут быть в одном решении.
Объясняю популярно.
Хук vt_start  - это место, в vietopic.php, в котором скрипт начнет вызывать код хранящийся в бд (или манифестах) по очереди.
Как организован этот вызываемый код:
этот код идентифицируется по имени расширения (или решения в случае с anycodetool), например:

номер     имя_решения      имя_хука        исполняемый_код     

1             pun_poll              vt_start             <?php echo "hello world" ?>   
2             pun_quote           vt_start             <?php echo "hello world2" ?>


Как видно из таблицы у разных расширений в столбце "имя хука" присутствует одинаковый хук.
Согласно этой таблице система извлечет код из столбца "исполняемый код" и исполнит его, в месте вызова хука vt_strt (не забываем что этот вызов в viewtopic.php) по очереди, согласно номеру в таблице.


Все некогда, напишу вечером, если будут еще вопросы

Сайт hcs

Поделиться

86 (23.03.2009 22:27 отредактировано flashcat)

Re: [Релиз] AnyCode Tool (1.0.0 Beta)

Всё понял как это работает))) очень удобная штука... хуки спасибо hcs за помощь) всё оказывается еще проще чем я думал) Я не понял сразу что солюшен или как его надо имя давать)

Сайт flashcat

Поделиться

87

Re: [Релиз] AnyCode Tool (1.0.0 Beta)

Notice: Undefined index: Today online in /home/signend/public_html/talk/index.php(360) : eval()'d code on line 40
talk
Подскажите как вылечить эту болезнь? возникла при установке этого расширения

knyshow пишет:

решение - today_users
хук - in_info_end

//************************************************************************
// knyshow
// список юзеров за сегодня
//************************************************************************
$todays_users = array();
$query = array(
    'SELECT'    =>    'id, username',
    'FROM'       =>    'users',
    'WHERE'    =>    'last_visit>"'.strtotime(gmdate("M d Y")).'"',
    'ORDER BY'   =>    'username'
);
$result = $forum_db->query_build($query) or error(__FILE__, __LINE__);

while(list($id, $username) = $forum_db->fetch_row($result))
{
 if (!$forum_user['is_guest'])
 {
  $todays_users[] = '<a href="'.forum_link($forum_url['user'], $id).'">'.forum_htmlencode($username).'</a>';
 }
 else
 {
  $todays_users[] = forum_htmlencode($username);
 }
}
if (!empty($todays_users))
{
?>
    <div id="brd-todayonline" class="gen-content">
        <h3 class="hn"><span>
<?
 echo $lang_index['Today online'] . implode(', ', $todays_users);
?>
        </span></h3>
    </div>
<?
}

Поделиться

88

Re: [Релиз] AnyCode Tool (1.0.0 Beta)

Лучше взять расширение online plus, там больше фишек и настроек.

Сайт hcs

Поделиться

89

Re: [Релиз] AnyCode Tool (1.0.0 Beta)

Подскажите как вылечить эту болезнь?

Вариант 1:
Заменить строку

 echo $lang_index['Today online'] . implode(', ', $todays_users);

на

 echo 'Сегодня были замечены: ' . implode(', ', $todays_users);

Вариант 2:
Добавить строку

'Today online'                =>    'Сегодня были замечены: '

в конец файла

lang\Russian\index.php

ну и аналогично для других используемых языков форума.


hcs, http://www.kolobok.us/smiles/light_skin/beee.gif

Поделиться

90

Re: [Релиз] AnyCode Tool (1.0.0 Beta)

Оформление заголовка темы:

Решение: Format_title_post
Хук: po_pre_add_topic
Код:

function my_ucfirst($string, $e ='utf-8') { 
        if (function_exists('mb_strtoupper') && function_exists('mb_substr') && !empty($string)) { 
            $string = mb_strtolower($string, $e); 
            $upper = mb_strtoupper($string, $e); 
            preg_match('#(.)#us', $upper, $matches); 
            $string = $matches[1] . mb_substr($string, 1, mb_strlen($string, $e), $e); 
        } else { 
            $string = ucfirst($string); 
        } 
        return $string; 
}
$post_info['subject'] = my_ucfirst(mb_strtolower($post_info['subject'], 'UTF8'));

Соотвественно требуется чтобы в похапе был скомпилирован с поддержкой мультибайт строк.

Добавлено спустя 8 минут 53 секунды:

Удаление неактивированных ботов. Руками чистить лень, потому наваял небольшой хук.

Решение: delete_users
Хук: ain_start
Код Postgre!!!:

$query = "DELETE FROM forum_users WHERE id>1 AND group_id = 0 AND registered < timestamptz_to_epoch(current_timestamp - interval '3 day')";

$result = $forum_db->query($query) or error(__FILE__, __LINE__);

Функции для работы с обычным timestamp в Postgre:

CREATE OR REPLACE FUNCTION "public"."timestamp_to_epoch" (timestamp) RETURNS double precision AS
$body$
-- Here we assume input timestamp is relative to UTC!    
SELECT EXTRACT(EPOCH FROM $1 AT TIME ZONE 'UTC');
$body$
LANGUAGE 'sql' IMMUTABLE RETURNS NULL ON NULL INPUT SECURITY INVOKER;

CREATE OR REPLACE FUNCTION "public"."epoch_to_timestamp" (double precision) RETURNS TIMESTAMP WITHOUT TIME ZONE AS
$body$
SELECT ('epoch'::timestamp + $1 * '1 second'::interval)::timestamp;
$body$
LANGUAGE 'sql' IMMUTABLE RETURNS NULL ON NULL INPUT SECURITY INVOKER;

CREATE OR REPLACE FUNCTION "public"."timestamptz_to_epoch" (timestamptz) RETURNS double precision AS
$body$
SELECT EXTRACT(EPOCH FROM $1);
$body$
LANGUAGE 'sql' IMMUTABLE RETURNS NULL ON NULL INPUT SECURITY INVOKER;

CREATE OR REPLACE FUNCTION "public"."epoch_to_timestamptz" (double precision) RETURNS TIMESTAMP WITH TIME ZONE AS
$body$
SELECT ('epoch'::timestamptz + $1 * '1 second'::interval)::timestamptz;
$body$
LANGUAGE 'sql' IMMUTABLE RETURNS NULL ON NULL INPUT SECURITY INVOKER;

То есть всех пользователей которые зарегистрировались раньше 3 дней, и не активировали себя (group_id = 0) мы посылаем в лес. Как это будет в мускуле не знаю. BTW between

Сайт Crazy_LionHeart

Поделиться

91

Re: [Релиз] AnyCode Tool (1.0.0 Beta)

а что он делает то этот хук?  Оформление заголовка темы: (с) как то не о чем не сказало... как их оформляет или что он вообще позволяет делать?

Сайт flashcat

Поделиться

92

Re: [Релиз] AnyCode Tool (1.0.0 Beta)

"ВОТ ЭТОТ УЖАС" и "вот этот" в заголовках приводит к такому: "Этот ужас"

Сайт Crazy_LionHeart

Поделиться

93

Re: [Релиз] AnyCode Tool (1.0.0 Beta)

Описание: данное решение удаляет подписи при просмотре темы у всех, у кого сообщений меньше 10. Смысл - борьба со спамерами, оставляющими бестолковые сообщения ради ссылки в подписи. Обычно спамеры ставляют 1-2 сообщения.

Решение: anti_signature

хук: vt_row_pre_display

код хука:

if ($cur_post['num_posts'] < 10)
    $forum_page['message']['signature'] = '';

Меняйте число 10 в коде хука на любое по вашему усмотрению.

Сайт hcs

Поделиться

94

Re: [Релиз] AnyCode Tool (1.0.0 Beta)

Описание: Добавляет возможность вставлять в сообщения flash-видео.

Решение: EmbeddVideo
Хук: ps_parse_message_end
Код:

//Yandex.Video & RuTube flash video:
$text    =    preg_replace("#\[flash=([0-9]{3}),([0-9]{3}),(.+?)\]#is", 
'<object type="application/x-shockwave-flash" data="$3"  width="$1" height="$2">
<param name="movie" value="$3" />
<param name="loop" value="false" />
<param name="menu" value="false" />
<param name="quality" value="best" />
<param name="scale" value="noborder" />
<param name="wmode" value="transparent" />
<param name="bgcolor" value="#FFFFFF" /></object>',$text);
//the end of Yandex.Video & RuTube flash video:

Вставляем видео через новый тег [flash =ширина, высота, адрес_видео]

Сайт Crazy_LionHeart

Поделиться

95

Re: [Релиз] AnyCode Tool (1.0.0 Beta)

Отличное решение, для него еще надо хинт в страницу по бб-кодам и кнопку в бб-панель

Сайт hcs

Поделиться

96

Re: [Релиз] AnyCode Tool (1.0.0 Beta)

knyshow пишет:

padizar, как вариант, хук in_qr_get_cats_and_forums изменить к виду:

$query['SELECT'] .=', IF(CHAR_LENGTH(t.subject)<20, t.subject, CONCAT(LEFT(t.subject, 20), "...")) as subject';
$query['JOINS'][] = array(
    'LEFT JOIN'    => 'topics AS t',
    'ON'        => 'f.last_post_id=t.last_post_id'
);

где IF(CHAR_LENGTH(t.subject)<20, t.subject, CONCAT(LEFT(t.subject, 20), "...")) обрезает длину темы до 20 символов, если ее длина была больше 20 и добавляет "..." в конце. такое решения использую я.

подскажите плиз, а как к ссылке на последнее сообщение, т.е. к "обрезанной теме" сообщения, прикрутить alt="" с полной темой, ну чтоб когда на ссылку курсор наводишь, появлялась полная, не обрезанная тема... таким образом ее можно было бы предварительно увидеть наведя курсор мыши на обрезанный заголовок

Поделиться

97 (30.04.2009 10:41 отредактировано knyshow)

Re: [Релиз] AnyCode Tool (1.0.0 Beta)

т.е. к "обрезанной теме" сообщения, прикрутить alt="" с полной темой

насколько я помню, это не alt, а title?

хук in_qr_get_cats_and_forums

$query['SELECT'] .=', IF(CHAR_LENGTH(t.subject)<=25, t.subject, CONCAT(LEFT(t.subject, 22), "...")) as short_subject, t.subject';
$query['JOINS'][] = array(
    'LEFT JOIN'    => 'topics AS t',
    'ON'        => 'f.last_post_id=t.last_post_id'
);

хук in_normal_row_pre_display

$forum_page['item_body']['info']['lastpost'] = str_replace(array(format_time($cur_forum['last_post']), '<cite>'),array(forum_htmlencode($cur_forum['short_subject']), '<cite>'.format_time($cur_forum['last_post']).'</cite><cite>'),
$forum_page['item_body']['info']['lastpost']);

if(strlen($cur_forum['subject']) > strlen($cur_forum['short_subject']))
{
$forum_page['item_body']['info']['lastpost'] = str_replace('<a href="','<a title="'.forum_htmlencode($cur_forum['subject']).'" href="',
$forum_page['item_body']['info']['lastpost']);
}

решения бывают и менее кривые, правда...

Поделиться

98

Re: [Релиз] AnyCode Tool (1.0.0 Beta)

knyshow пишет:

решения бывают и менее кривые, правда...

ага, спасибо огромное! smile

P.S: а не кто не пробывал сделать описание к темам топиков?

Поделиться

99 (16.05.2009 14:36 отредактировано knyshow)

Re: [Релиз] AnyCode Tool (1.0.0 Beta)

решение: update_user_post_count_on_post_delete
хук dl_post_deleted_pre_redirect:

//=======================================================
// обновление счетчика постов пользователей при удалении любого сообщения
//=======================================================
        $result = $forum_db->query("UPDATE users b, (SELECT poster_id, count(id) AS kol FROM posts GROUP BY poster_id) a SET b.num_posts = a.kol WHERE b.id = a.poster_id");
//=======================================================

запрос бы перерисовать под билдер...

Поделиться

100

Re: [Релиз] AnyCode Tool (1.0.0 Beta)

sad не работает как было у меня 928 так и осталось, хоть и удалил 2 поста roll

Сайт flashcat

Поделиться