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

Расширения - это просто!

Форум для авторов расширений для phpBB. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Алг
Former team member
Сообщения: 933
Стаж: 11 лет 9 месяцев
Откуда: Израиль
Благодарил (а): 73 раза
Поблагодарили: 248 раз

Re: Расширения - это просто!

Сообщение Алг »

я так и отлаживаю все расписания. но! Как мой комп узнаёт, что наступило летнее время? Я предполагаю, ему провайдер об этом должен сказать? а от того, то я сама время передвину, провайдер не догадается меня перевести. Короче, не уверена.
Sheer писал(а):А в какое-то расширение впердолили board_dst
его теперь нет в конфиге? Предупреждать надо(ц)
Кроме того, я использую для подсчётов и board_timezone, в котором стояло простое число 2, а сейчас стоит хрень вида Etc/GMT-2 и как мне использовать это для расчётов, тоже непонятно. придётся разбираться
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...

Т. Шаов
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 3 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1716 раз

Re: Расширения - это просто!

Сообщение Sheer »

Алг писал(а):Я предполагаю, ему провайдер об этом должен сказать?
Вообще-то, ему об этом виндовус говорит.
Алг писал(а):хрень вида Etc/GMT-2 и как мне использовать это для расчётов
Откинуть Etc/GMT-

Добавлено спустя 2 минуты 18 секунд:
И таки да, часики надо в BIOS передвинуть.

Добавлено спустя 44 секунды:
Алг писал(а):его теперь нет в конфиге?
Нет, ага.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16384
Стаж: 18 лет
Откуда: Красноярск
Благодарил (а): 524 раза
Поблагодарили: 1749 раз

Re: Расширения - это просто!

Сообщение rxu »

Таймзона на сервере учитывает и переход на летнее время, по идее.
Изображение
Аватара пользователя
Алг
Former team member
Сообщения: 933
Стаж: 11 лет 9 месяцев
Откуда: Израиль
Благодарил (а): 73 раза
Поблагодарили: 248 раз

Re: Расширения - это просто!

Сообщение Алг »

rxu, конечно, есть подозрения, что учитывается, иначе б не отменяли, не заменяли, но так же есть подозрения, что на стыках времен может повести себя неадекватно
Sheer писал(а):Алг писал(а):
хрень вида Etc/GMT-2 и как мне использовать это для расчётов

Откинуть Etc/GMT-
ответ неверный
Нашла функцию в миграции

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

	/**
	* Determine the new timezone for a given phpBB 3.0 timezone and
	* "Daylight Saving Time" option
	*
	*	@param	$timezone	float	Users timezone in 3.0
	*	@param	$dst		int		Users daylight saving time
	*	@return		string		Users new php Timezone which is used since 3.1
	*/
	public function convert_phpbb30_timezone($timezone, $dst)
	{
		$offset = $timezone + $dst;

		switch ($timezone)
		{
			case '-12':
				return 'Etc/GMT+' . abs($offset);	//'[UTC - 12] Baker Island Time'
			case '-11':
				return 'Etc/GMT+' . abs($offset);	//'[UTC - 11] Niue Time, Samoa Standard Time'
			case '-10':
				return 'Etc/GMT+' . abs($offset);	//'[UTC - 10] Hawaii-Aleutian Standard Time, Cook Island Time'
			case '-9.5':
				return 'Pacific/Marquesas';			//'[UTC - 9:30] Marquesas Islands Time'
			case '-9':
				return 'Etc/GMT+' . abs($offset);	//'[UTC - 9] Alaska Standard Time, Gambier Island Time'
			case '-8':
				return 'Etc/GMT+' . abs($offset);	//'[UTC - 8] Pacific Standard Time'
			case '-7':
				return 'Etc/GMT+' . abs($offset);	//'[UTC - 7] Mountain Standard Time'
			case '-6':
				return 'Etc/GMT+' . abs($offset);	//'[UTC - 6] Central Standard Time'
			case '-5':
				return 'Etc/GMT+' . abs($offset);	//'[UTC - 5] Eastern Standard Time'
			case '-4.5':
				return 'America/Caracas';			//'[UTC - 4:30] Venezuelan Standard Time'
			case '-4':
				return 'Etc/GMT+' . abs($offset);	//'[UTC - 4] Atlantic Standard Time'
			case '-3.5':
				return 'America/St_Johns';			//'[UTC - 3:30] Newfoundland Standard Time'
			case '-3':
				return 'Etc/GMT+' . abs($offset);	//'[UTC - 3] Amazon Standard Time, Central Greenland Time'
			case '-2':
				return 'Etc/GMT+' . abs($offset);	//'[UTC - 2] Fernando de Noronha Time, South Georgia & the South Sandwich Islands Time'
			case '-1':
				return 'Etc/GMT+' . abs($offset);	//'[UTC - 1] Azores Standard Time, Cape Verde Time, Eastern Greenland Time'
			case '0':
				return (!$dst) ? 'UTC' : 'Etc/GMT-1';	//'[UTC] Western European Time, Greenwich Mean Time'
			case '1':
				return 'Etc/GMT-' . $offset;		//'[UTC + 1] Central European Time, West African Time'
			case '2':
				return 'Etc/GMT-' . $offset;		//'[UTC + 2] Eastern European Time, Central African Time'
			case '3':
				return 'Etc/GMT-' . $offset;		//'[UTC + 3] Moscow Standard Time, Eastern African Time'
			case '3.5':
				return 'Asia/Tehran';				//'[UTC + 3:30] Iran Standard Time'
			case '4':
				return 'Etc/GMT-' . $offset;		//'[UTC + 4] Gulf Standard Time, Samara Standard Time'
			case '4.5':
				return 'Asia/Kabul';				//'[UTC + 4:30] Afghanistan Time'
			case '5':
				return 'Etc/GMT-' . $offset;		//'[UTC + 5] Pakistan Standard Time, Yekaterinburg Standard Time'
			case '5.5':
				return 'Asia/Kolkata';				//'[UTC + 5:30] Indian Standard Time, Sri Lanka Time'
			case '5.75':
				return 'Asia/Kathmandu';			//'[UTC + 5:45] Nepal Time'
			case '6':
				return 'Etc/GMT-' . $offset;		//'[UTC + 6] Bangladesh Time, Bhutan Time, Novosibirsk Standard Time'
			case '6.5':
				return 'Indian/Cocos';				//'[UTC + 6:30] Cocos Islands Time, Myanmar Time'
			case '7':
				return 'Etc/GMT-' . $offset;		//'[UTC + 7] Indochina Time, Krasnoyarsk Standard Time'
			case '8':
				return 'Etc/GMT-' . $offset;		//'[UTC + 8] Chinese Standard Time, Australian Western Standard Time, Irkutsk Standard Time'
			case '8.75':
				return 'Australia/Eucla';			//'[UTC + 8:45] Southeastern Western Australia Standard Time'
			case '9':
				return 'Etc/GMT-' . $offset;		//'[UTC + 9] Japan Standard Time, Korea Standard Time, Chita Standard Time'
			case '9.5':
				return 'Australia/ACT';				//'[UTC + 9:30] Australian Central Standard Time'
			case '10':
				return 'Etc/GMT-' . $offset;		//'[UTC + 10] Australian Eastern Standard Time, Vladivostok Standard Time'
			case '10.5':
				return 'Australia/Lord_Howe';		//'[UTC + 10:30] Lord Howe Standard Time'
			case '11':
				return 'Etc/GMT-' . $offset;		//'[UTC + 11] Solomon Island Time, Magadan Standard Time'
			case '11.5':
				return 'Pacific/Norfolk';			//'[UTC + 11:30] Norfolk Island Time'
			case '12':
				return 'Etc/GMT-12';				//'[UTC + 12] New Zealand Time, Fiji Time, Kamchatka Standard Time'
			case '12.75':
				return 'Pacific/Chatham';			//'[UTC + 12:45] Chatham Islands Time'
			case '13':
				return 'Pacific/Tongatapu';			//'[UTC + 13] Tonga Time, Phoenix Islands Time'
			case '14':
				return 'Pacific/Kiritimati';		//'[UTC + 14] Line Island Time'
			default:
				return 'UTC';
		}
	}
Не делать же обратные преобразования, придётся гуглить, как рассчитывать время, используя именно эти значения
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...

Т. Шаов
Аватара пользователя
Борис Бердичевский
phpBB 3.0.0 RC1
Сообщения: 1457
Стаж: 16 лет 4 месяца
Откуда: Израиль, Беэр-Шева
Благодарил (а): 33 раза
Поблагодарили: 61 раз

Re: Расширения - это просто!

Сообщение Борис Бердичевский »

После того, как удалили флаг летнего времени, наделали делов. По идее (по их идее) timezone должен скакать вместе с переходом на летнее-зимнее время, но в результате получается натуральный глюк (прямо по покойному Черномырдину, хотели как лучше...). Я открывал баг на это в трекере, они закрыли, как не баг. Жаль, сейчас нет доступа, будет доступ, дам ссылку.
По идее код надо там поправить и вернуть флаг летнего времени.
После нескольких лет общения здесь и техсопровождения форумов я наконец понял, что ничего не понимаю в phpBB!
VADR
phpBB 1.4.3
Сообщения: 94
Стаж: 14 лет 3 месяца
Благодарил (а): 9 раз
Поблагодарили: 3 раза

Re: Расширения - это просто!

Сообщение VADR »

Если я правильно понял, расчёт сделан на то, что на сервере установлена свежая версия tzdata. Тогда там есть все переходы на зимнее/летнее время, отключения/включения режимов перехода, и ещё много чего. (к примеру, на хабре на эту тему). Всё это прекрасно работает, если сисадмины хостера за этим делом следят...
Аватара пользователя
Борис Бердичевский
phpBB 3.0.0 RC1
Сообщения: 1457
Стаж: 16 лет 4 месяца
Откуда: Израиль, Беэр-Шева
Благодарил (а): 33 раза
Поблагодарили: 61 раз

Re: Расширения - это просто!

Сообщение Борис Бердичевский »

Там другой баг. Летом было дело. В Общих настройках в Личке есть 2 бокса для выбора часового пояса. Так вот, наш часовой пояс GMT+2, выбор: Азия/Иерусалим. Так одно другому не соответствовало. При установке второго бокса устаналиваются неверные часы GMT+3. В трекере всё описано, но трекер мёртв...
После нескольких лет общения здесь и техсопровождения форумов я наконец понял, что ничего не понимаю в phpBB!
Аватара пользователя
Алг
Former team member
Сообщения: 933
Стаж: 11 лет 9 месяцев
Откуда: Израиль
Благодарил (а): 73 раза
Поблагодарили: 248 раз

Re: Расширения - это просто!

Сообщение Алг »

хорошо бы найти готовый примерчик.
Например, хостер находится в США (-7), board_dst израильское (+2), юзер с Урала (+5) хочет выставить расписание по Москве(+3) ( и по локальному времени тоже)
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...

Т. Шаов
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 3 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1716 раз

Re: Расширения - это просто!

Сообщение Sheer »

Алг писал(а):функцию в миграции
Как все запущено...
Алг писал(а):Не делать же обратные преобразования
Думаю без этого не обойтись.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
VADR
phpBB 1.4.3
Сообщения: 94
Стаж: 14 лет 3 месяца
Благодарил (а): 9 раз
Поблагодарили: 3 раза

Re: Расширения - это просто!

Сообщение VADR »

Алг писал(а):хорошо бы найти готовый примерчик.
Например, хостер находится в США (-7), board_dst израильское (+2), юзер с Урала (+5) хочет выставить расписание по Москве(+3) ( и по локальному времени тоже)
По идее, если сервера настроены правильно, часы в них ходят по GMT, и приводятся к местному времени для каждого пользователя в зависимости от его настроек. То есть - для пользователя из США делается -7, для израильского +2 и т.д. Пользователь для этого указывает свой часовой пояс. И, кстати, что такое board_dst? В 3.0, помнится, была настройка часового пояса по умолчанию, и это касалось только гостей, т.к. у пользователей своя настройка.

PS: интересно, кто-нибудь сподобится написать расширение, ищущее положение гостя по geoip и определяющее его часовой пояс по tzdata? Не то, чтобы это было нужно, но так... прикольненько :)
Аватара пользователя
Алг
Former team member
Сообщения: 933
Стаж: 11 лет 9 месяцев
Откуда: Израиль
Благодарил (а): 73 раза
Поблагодарили: 248 раз

Re: Расширения - это просто!

Сообщение Алг »

А в движке уже есть что-то. Я решила сделать вид, что я с Урала, поставила себе время +6 и получила в личных настройках
picTZ.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...

Т. Шаов
Аватара пользователя
Алг
Former team member
Сообщения: 933
Стаж: 11 лет 9 месяцев
Откуда: Израиль
Благодарил (а): 73 раза
Поблагодарили: 248 раз

Re: Расширения - это просто!

Сообщение Алг »

есть файл core/helper.php в котором сидят общие функции. Продекларирован в services.yml( стандартным образом) и все файлы ( листенер и контроллеры) имеют к нему доступ через, условно говоря,

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

- @alg.suki.helper
Но как мне получить доступ к этим функциям в файлах из папки acp?
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...

Т. Шаов
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16384
Стаж: 18 лет
Откуда: Красноярск
Благодарил (а): 524 раза
Поблагодарили: 1749 раз

Re: Расширения - это просто!

Сообщение rxu »

Алг писал(а):Но как мне получить доступ к этим функциям в файлах из папки acp?
Через контейнер.

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

global $phpbb_container;
$my_helper = $phpbb_container->get('alg.suki.helper');
Как-то так.
Изображение
Аватара пользователя
Борис Бердичевский
phpBB 3.0.0 RC1
Сообщения: 1457
Стаж: 16 лет 4 месяца
Откуда: Израиль, Беэр-Шева
Благодарил (а): 33 раза
Поблагодарили: 61 раз

Re: Расширения - это просто!

Сообщение Борис Бердичевский »

Я писал(а):В трекере всё описано, но трекер мёртв...
Всё, трекер ожил, вот ссылка, там описано, с чем я столкнулся: https://tracker.phpbb.com/browse/PHPBB3-12780
После нескольких лет общения здесь и техсопровождения форумов я наконец понял, что ничего не понимаю в phpBB!
LBeaver
phpBB 1.4.4
Сообщения: 153
Стаж: 9 лет 6 месяцев
Благодарил (а): 47 раз
Поблагодарили: 44 раза

Re: Расширения - это просто!

Сообщение LBeaver »

Есть набор PHP-классов от стороннего разработчика в виде файлов следующего содержания:

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

<?php
class foo
{
	...
}
?>
Как их правильно подключить и использовать в своём расширении? При этом сами файлы желательно оставить в исходном состоянии, чтобы упростить обновление.

Вернуться в «Для разработчиков»