Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Мини-оптимизация Birthday Mod

Ответы на вопросы, связанные с модами для phpBB 2.0.x, кроме относящихся к форуму Для авторов (phpBB 2.0.x).
lolik
phpBB 1.4.2
Сообщения: 74
Стаж: 18 лет 3 месяца

Сообщение lolik »

VVVas писал(а):не внесли изменения в языковые файлы
а можно поконкретние?
lolik
phpBB 1.4.2
Сообщения: 74
Стаж: 18 лет 3 месяца

Сообщение lolik »

Разобрался, просто нужно было еще в русский пакет внести изменения.

Для тех у кого ошибка с цифрой 26 была...
в файле viefprofile.php там где
#-----[ OPEN ]------------------------------------------
#
viewtopic.php

#
#-----[ FIND ]------------------------------------------
#
$poster_birthdate=realdate

#
#-----[ AFTER, ADD ]------------------------------------------
#
$n=0;
while ($n<26)
{
if ($poster_birthdate>=$zodiacdates[$n] && $poster_birthdate<=$zodiacdates[$n+1])
{
$zodiac = $lang[$zodiacs[($n/2)]];
$u_zodiac = $images[$zodiacs[($n/2)]];
$zodiac_img = '<img src="' . $u_zodiac . '" alt="' . $zodiac . '" title="' . $zodiac . '" align="top" border="0" />';
$n=26;
} else
{
$n=$n+2;
}
}
нужно добавлять после строчки
$poster_birthdate=realdate('md', $postrow[$i]['user_birthday']);
У меня тоже с этим маленькая проблемка была :)
anobios
phpBB 1.2.0
Сообщения: 11
Стаж: 19 лет 1 месяц

Сообщение anobios »

господа, подскажите пожалуйста, возможно ли убрать из обязательного выбора - год рождения? пользователи уж больно стеснительные - год не хотят указывать.
Аватара пользователя
Zen
phpBB 2.0.2
Сообщения: 317
Стаж: 18 лет 6 месяцев
Откуда: Москва

Сообщение Zen »

anobios
В админке есть соответствуящая опция.
Как устанавливать MODs/STYLEs
anobios
phpBB 1.2.0
Сообщения: 11
Стаж: 19 лет 1 месяц

Сообщение anobios »

я может чего-то не замечаю, но там есть лишь "Сделать дату рождения обязательной для заполнения". но это не то. мне надо убрать лишь год из списка обязательных для заполнения.
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

anobios
нельзя
я люблю daft punk | новый sugoi.ru
anobios
phpBB 1.2.0
Сообщения: 11
Стаж: 19 лет 1 месяц

Сообщение anobios »

окей. спасибо.
Аватара пользователя
Поручик
Former team member
Сообщения: 3942
Стаж: 18 лет 11 месяцев
Откуда: Оренбург (Южный Урал)
Благодарил (а): 3 раза

Сообщение Поручик »

anobios писал(а):мне надо убрать лишь год из списка обязательных для заполнения.
Посмотрите birthdays by TerraFrost, там есть такая возможность.
Профессионал - тот же дилетант, только знающий, где ошибётся.
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции

наш форум http://forum.aeroion.ru/cat1.html
anobios
phpBB 1.2.0
Сообщения: 11
Стаж: 19 лет 1 месяц

Сообщение anobios »

спасибо, попробую.
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Код: Выделить всё

##   2006-01-12 - Version 1.5.8 
##      - phpBB template & EasyMOD compliance enhancement 
##      - Modify 2 FIND instructions to be phpBB 2.0.18+ compliant 
##      - Include the sql queries in the MOD and remove the 
##        birthday_db_update.php file 
##      - Add DIY instructions to install other languages than English 
##      - Use the INCREMENT instruction to increment the 
##        whosonline.gif rowspan
Абсолютно ничего интересного. Скачать можно в нашем архиве.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5284
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 793 раза

Сообщение Siava »

Кеширование списка именинников на index.php:

1. Создать в каталоге cache подкаталог index и установить там chmod 777

2. Заменить кусок кода Birthday мода этим:
(здесь уже включены изменения, чтобы список будущих именинников был выстроен в порядке убывания)

Код: Выделить всё

// Birthday Mod, Show users with birthday
$cache_data_file = $phpbb_root_path."cache/index/birthday_". $board_config['board_timezone'] . ".dat";
if (@is_file($cache_data_file)  && empty($SID))
{
    $valid = (date('YzH',time(),0) - date('YzH',@filemtime($cache_data_file),0)<1) ? true : false;
} else
{
   $valid = false;
}

if ($valid )
{
   include ($cache_data_file);
   $birthday_today_list = stripslashes($birthday_today_list);
   $birthday_week_list = stripslashes($birthday_week_list);
} else
{
   $sql = ($board_config['birthday_check_day']) ? "SELECT user_id, username, user_birthday,user_level FROM " . USERS_TABLE. " WHERE user_birthday!=999999 ORDER BY username" :"";
   if($result = $db->sql_query($sql))
   {
      if (!empty($result))
      {
         $time_now = time();
         $this_year = create_date('Y', $time_now, $board_config['board_timezone']);
         $date_today = create_date('Ymd', $time_now, $board_config['board_timezone']);
         $date_forward = create_date('Ymd', $time_now+($board_config['birthday_check_day']*86400), $board_config['board_timezone']);
            while ($birthdayrow = $db->sql_fetchrow($result))
         {
               $user_birthday2 = $this_year.($user_birthday = realdate("md",$birthdayrow['user_birthday'] ));
               if ( $user_birthday2 < $date_today ) $user_birthday2 += 10000;
            if ( $user_birthday2 > $date_today  && $user_birthday2 <= $date_forward )
            {
               // user are having birthday within the next days
               $user_age = ( $this_year.$user_birthday < $date_today ) ? $this_year - realdate ('Y',$birthdayrow['user_birthday'])+1 : $this_year- realdate ('Y',$birthdayrow['user_birthday']);
               switch ($birthdayrow['user_level'])
               {
                  case ADMIN :
                        $birthdayrow['username'] = '<b>' . $birthdayrow['username'] . '</b>';
                        $style_color = 'style="color:#' . $theme['fontcolor3'] . '"';break;
                  case MOD :
                        $birthdayrow['username'] = '<b>' . $birthdayrow['username'] . '</b>';
                        $style_color = 'style="color:#' . $theme['fontcolor2'] . '"';break;
                  default: $style_color = '';
               }
//               $birthday_week_list .= ' <a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $birthdayrow['user_id']) . '"' . $style_color .'>' . $birthdayrow['username'] . ' ('.$user_age.')</a>,';
				$birthday_week_list [$user_birthday2.uniqid("")]= ' <a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $birthdayrow['user_id']) . '"' . $style_color .'>' . $birthdayrow['username'] . ' ('.$user_age.')</a>,';
            } else if ( $user_birthday2 == $date_today )
               {
               //user have birthday today
               $user_age = $this_year - realdate ( 'Y',$birthdayrow['user_birthday'] );
               switch ($birthdayrow['user_level'])
               {
                  case ADMIN :
                        $birthdayrow['username'] = '<b>' . $birthdayrow['username'] . '</b>';
                        $style_color = 'style="color:#' . $theme['fontcolor3'] . '"';break;
                  case MOD :
                        $birthdayrow['username'] = '<b>' . $birthdayrow['username'] . '</b>';
                        $style_color = 'style="color:#' . $theme['fontcolor2'] . '"';break;
                  default: $style_color = '';
               }
               $birthday_today_list .= ' <a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $birthdayrow['user_id']) . '"' . $style_color .'>' . $birthdayrow['username'] . ' ('.$user_age.')</a>,';
               }
         }
      @ksort($birthday_week_list);
      $birthday_week_list = @implode ('', $birthday_week_list);
         if ($birthday_today_list) $birthday_today_list[ strlen( $birthday_today_list)-1] = ' ';
         if ($birthday_week_list) $birthday_week_list[ strlen( $birthday_week_list)-1] = ' ';
      }
      $db->sql_freeresult($result);
      if (empty($SID))
      {
         // stores the data set in a cache file
         $data = "<?php\n";
         $data .='$birthday_today_list = \'' . addslashes($birthday_today_list) . ".';\n";
         $data .='$birthday_week_list = \''.addslashes($birthday_week_list) . ".';\n?>";
         $fp = fopen( $cache_data_file, "w" );
         fwrite($fp, $data);
         fclose($fp);
      }
   }
}
Добавлено спустя 5 минут 36 секунд:

P.S.
это изменение мне ускорило генерацию главной страницы с 0.5с до 0.2с!!

Ещё одно дополнение, которое снижает нагрузку на сервер, правда работать оно будет только, если ваш сервер на основе *NIX систем:

в includes/functions.php

найти:

Код: Выделить всё

function realdate($date_syntax="Ymd",$date=0)
{
.....
}
Заменить на:

Код: Выделить всё

function realdate($date_syntax="Ymd",$date=0) 
{ return create_date($date_syntax,$date*86400+1,0); }
Последний раз редактировалось Siava 02.02.2006 23:46, всего редактировалось 1 раз.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

Siava писал(а):$birthday_week_list [$user_birthday.uniqid("")]
нужно

Код: Выделить всё

$birthday_week_list [$user_birthday2.uniqid("")]
А то при смене года фигня лезет - смотри тему этого аддона, Coagulant там отписывал.
я люблю daft punk | новый sugoi.ru
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5284
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 793 раза

Сообщение Siava »

VVVas
Исправил код :) Спасиб.

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

Хотя обнаружился ошибка в работе :(
Новый день наступил, а список не обновился.. ушёл копать.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 19 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

Siava
Я так понял оригинал взят здесь http://www.net4seven.de/ftopic410.html ?
я люблю daft punk | новый sugoi.ru
Аватара пользователя
Поручик
Former team member
Сообщения: 3942
Стаж: 18 лет 11 месяцев
Откуда: Оренбург (Южный Урал)
Благодарил (а): 3 раза

Сообщение Поручик »

Siava, классно придумал!
ТОлько на это

Код: Выделить всё

    $valid = (date('YzH',time(),0) - date('YzH',@filemtime($cache_data_file),0)<1) ? true : false;
форум ругнулся bad argument
заменил этим

Код: Выделить всё

    $valid = (date('YzH',time()) - date('YzH',@filemtime($cache_data_file))<1) ? true : false;

а это

Код: Выделить всё

         $data .='$birthday_today_list = \'' . addslashes($birthday_today_list) . ".';\n"; 
         $data .='$birthday_week_list = \''.addslashes($birthday_week_list) . ".';\n?>";
заменил этим

Код: Выделить всё

         $data .='$birthday_today_list = \'' . addslashes($birthday_today_list) . "';\n"; 
         $data .='$birthday_week_list = \''.addslashes($birthday_week_list) . "';\n?>";
Иначе выводит

Именинники сегодня: .

Если список именинников пуст.

Пойти, что-ли TerraFrost'u предложить твою идею. Сейчас оформлю для его мода.
Профессионал - тот же дилетант, только знающий, где ошибётся.
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции

наш форум http://forum.aeroion.ru/cat1.html

Вернуться в «Поддержка модов для phpBB 2.0.x»