[3.1][3.2][BETA] ActiveUser - Конкурс на самого активного пользователя

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).

Внимание! Не устанавливайте бета-версии расширений на работающие форумы!
Аватара пользователя
saturn-z
phpBB 2.0.0
Сообщения: 241
Зарегистрирован: 10.11.2012 23:49
Откуда: РФ, Тюмень
Благодарил (а): 13 раз
Поблагодарили: 93 раза

[3.1][3.2][BETA] ActiveUser - Конкурс на самого активного пользователя

Сообщение saturn-z » 05.03.2015 20:05

Название: ActiveUser
Автор: saturn-z
Описание: Конкурс на самого активного пользователя
Расширение создаёт отдельную страницу конкурса. Отсортировывает пользователей, которые оставили больше всего сообщений на форуме за месяц, и рандомно выбирает одного из них. Отображает победителей прошлых месяцев. Прогнозирует победителей текущего месяца.
Возможности: 
Выбор групп которые будут участвовать в конкурсе.
Можно исключить некоторые форумы из конкурса.
Настройка количества призовых мест.
Настройка количества отображаемых претендентов на победу.
Настройка количества предупреждений, при котором пользователь будет исключен из конкурса.
Правка текстов из админки.
Настройка количества отображаемых победителей прошлых месяцев.
Скрины 
Страница конкурса
Страница конкурса
Административная часть конкурса
Административная часть конкурса
Это моё первое расширение, с phpbb 3.1.* я познакомился только в этом году, до этого я сидел на версии phpbb2 и никогда ничего подобного не делал. Поэтому, как разработчик, я новенький! Прошу отнестись к этому с пониманием.
Расширение делал для себя.
В версии 0.0.2 добавлено: 
Управление из админки, а именно:
Возможность задать количество отображаемых на странице месяцев.
Исключение пользователей из участия в конкурсе при определённом количестве предупреждений.
Возможность выбрать какие группы пользователей будут участвовать в конкурсе.
Управление текстами из админки.
В версии 0.0.3 добавлено: 
Добавлена ссылка в навигатор (меню)
Добавлена возможность исключить некоторые форумы из конкурса
Добавлено отображение количества сообщений пользователя (чтобы он знал на сколько сообщений отстаёт)
Исправлены незначительные ошибки...
НА ВЕРСИЮ 0.0.3 ОБНОВЛЯТЬСЯ С УДАЛЕНИЕМ ДАННЫХ!!!
В версии 0.0.4 добавлено: 
Добавлена настройка призовых мест!
Добавлена настройка количества отображаемых претендентов на победу!
Немного облегчен код.
Немного подкорректирован перевод.

С версии 0.0.3 можно обновляться простым выключением расширения, заменой файлов, включением расширения.
С более ранних версий - выключить расширение, удалить данные, заменить файлы, включить расширение.
В версии 0.0.5 добавлено: 
Вырезаны 2 запроса к БД и помещены в планировщик заданий крон.
В админке добавлена возможность включения, выключения, отображения ссылки на страницу конкурса.
Почищен код, удалены лишние пробелы и.т.п.
В версии 0.0.6 добавлено: 
Добавлена функция "Минимальное кол-во сообщений" если пользователи наберут менее указанного кол-ва сообщений, то победитель объявлен не будет. + мелкие правки шаблона.
В версии 1.0.1 добавлено: 
В блоке прогноза победителей добавлена функция "Минимальное количество сообщений", у пользователей с меньшим кол-вом сообщений в комментарии будет соответствующее сообщение.
Добавлена функция проверки версии расширения.
DEMO: http://www.ribak72.ru/community/activeuser
Версия Расширения: 1.0.1
Требования: phpBB 3.1.*@dev
GitHub репозиторий: https://github.com/saturn-z/activeuser
Загрузить расширение: https://github.com/saturn-z/activeuser/ ... master.zip

Модуль ActiveUser для Board3 Portal: [BETA] ActiveUser - Конкурс на самого активного пользователя
Скрин 
Модуль ActiveUser для Board3 Portal
Модуль ActiveUser для Board3 Portal
Последний раз редактировалось saturn-z 17.02.2017 20:56, всего редактировалось 18 раз.
Немало нужно знания, чтобы уметь скрыть перед другими свое незнание.

Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 14537
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 348 раз
Поблагодарили: 1556 раз

Re: [BETA] ActiveUser - Конкурс на самого активного пользова

Сообщение rxu » 05.03.2015 20:16

saturn-z
Расширение работает только с MySQL. используйте методы абстрактного уровня интерфейса СУБД, через экземпляр объекта $this->db.
Вместо вот такой дефиниции констант имен таблиц

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

		define(__NAMESPACE__ . '\ACTIVE_USER_TABLE', $this->table_prefix . 'active_user');
		define(__NAMESPACE__ . '\USER_TABLE', $this->table_prefix . 'users');
		define(__NAMESPACE__ . '\POSTS_TABLE', $this->table_prefix . 'posts');
лучше пользоваться средствами Symfony, например, как здесь https://github.com/rxu/thanks_for_posts ... tables.yml -> https://github.com/rxu/thanks_for_posts ... rvices.yml
Изображение

Аватара пользователя
владимир1983
phpBB 3.1.9
Сообщения: 5954
Зарегистрирован: 27.04.2010 2:17
Откуда: Сергиев Посад
Благодарил (а): 391 раз
Поблагодарили: 730 раз

Re: [BETA] ActiveUser - Конкурс на самого активного пользова

Сообщение владимир1983 » 05.03.2015 20:19

Интересная задумка)
За ваши деньги решу ваши проблемы. Стучи в ЛС.
Нет человека - нет проблемы. (c)

Аватара пользователя
Alecto
phpBB 3.0.11
Сообщения: 2840
Зарегистрирован: 25.12.2009 0:27
Откуда: Украина! Харьков
Благодарил (а): 69 раз
Поблагодарили: 286 раз

Re: [BETA] ActiveUser - Конкурс на самого активного пользова

Сообщение Alecto » 05.03.2015 21:06

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

 PHP Warning: in file [ROOT]/ext/saturnZ/ActiveUser/controller/ActiveUser.php on line 91: mysql_query(): Access denied for user 'root'@'localhost' (using password: NO)
[phpBB Debug] PHP Warning: in file [ROOT]/ext/saturnZ/ActiveUser/controller/ActiveUser.php on line 91: mysql_query(): A link to the server could not be established
[phpBB Debug] PHP Warning: in file [ROOT]/ext/saturnZ/ActiveUser/controller/ActiveUser.php on line 92: mysql_num_rows() expects parameter 1 to be resource, boolean given
[phpBB Debug] PHP Warning: in file [ROOT]/ext/saturnZ/ActiveUser/controller/ActiveUser.php on line 109: mysql_query(): Access denied for user 'root'@'localhost' (using password: NO)
[phpBB Debug] PHP Warning: in file [ROOT]/ext/saturnZ/ActiveUser/controller/ActiveUser.php on line 109: mysql_query(): A link to the server could not be established
[phpBB Debug] PHP Warning: in file [ROOT]/ext/saturnZ/ActiveUser/controller/ActiveUser.php on line 110: mysql_num_rows() expects parameter 1 to be resource, boolean given
[phpBB Debug] PHP Warning: in file [ROOT]/ext/saturnZ/ActiveUser/controller/ActiveUser.php on line 136: mysql_query(): Access denied for user 'root'@'localhost' (using password: NO)
[phpBB Debug] PHP Warning: in file [ROOT]/ext/saturnZ/ActiveUser/controller/ActiveUser.php on line 136: mysql_query(): A link to the server could not be established
[phpBB Debug] PHP Warning: in file [ROOT]/ext/saturnZ/ActiveUser/controller/ActiveUser.php on line 137: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given
Добавлено спустя 1 минуту 24 секунды:
Re: [BETA] ActiveUser - Конкурс на самого активного пользователя
и, на тесте у меня все поля пустые.
пользователи туда не захаживают, но я там создавал посты....
так что не работает экст.

Аватара пользователя
saturn-z
phpBB 2.0.0
Сообщения: 241
Зарегистрирован: 10.11.2012 23:49
Откуда: РФ, Тюмень
Благодарил (а): 13 раз
Поблагодарили: 93 раза

Re: [BETA] ActiveUser - Конкурс на самого активного пользова

Сообщение saturn-z » 05.03.2015 21:18

Alecto писал(а):но я там создавал посты....
Расширение не учитывает посты администратора (id=2)
А на счет ошибок, пока ничего сказать немогу...

Добавлено спустя 3 минуты 38 секунд:
Re: [BETA] ActiveUser - Конкурс на самого активного пользователя
На счёт ошибок, я понял....
rxu писал(а):Расширение работает только с MySQL
Я понял свою ошибку, завтра попробую исправить.
Немало нужно знания, чтобы уметь скрыть перед другими свое незнание.

Аватара пользователя
Sheer
phpBB Guru
phpBB Guru
Сообщения: 11499
Зарегистрирован: 18.02.2007 19:01
Откуда: Калининград не Кенигсберг
Благодарил (а): 53 раза
Поблагодарили: 2581 раз

Re: [BETA] ActiveUser - Конкурс на самого активного пользова

Сообщение Sheer » 05.03.2015 21:23

Первый блин... вернее каша.
Строка 91

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

$res = mysql_query($sql);
и там же...

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

 $this->db->sql_query("INSERT INTO " . ACTIVE_USER_TABLE . " (user_id, date, user_posts) VALUES ('0', '$arhive_date', '0')");
логика использования вперемешку функций php и интерфейса phpBB мне совершенно непонятна. К тому же код нечитабелен.
saturn-z, читайте Руководство по написанию программного кода и исправляйте (не буду называть как это называется, чтоб не обидеть).
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.

Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 14537
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 348 раз
Поблагодарили: 1556 раз

Re: [BETA] ActiveUser - Конкурс на самого активного пользова

Сообщение rxu » 05.03.2015 21:27

Sheer
saturn-z писал(а):как разработчик, я новенький! Прошу отнестись к этому с пониманием.
Для первого раза неплохо :)
Изображение

Аватара пользователя
Alecto
phpBB 3.0.11
Сообщения: 2840
Зарегистрирован: 25.12.2009 0:27
Откуда: Украина! Харьков
Благодарил (а): 69 раз
Поблагодарили: 286 раз

Re: [BETA] ActiveUser - Конкурс на самого активного пользова

Сообщение Alecto » 05.03.2015 21:28

напостить под юзером не проблема.
ради эксперимента сделаю.
автор, отпишись когда обновишь архив с исправлением ошибки.
мне идея понравилась, правда премировать бабками пользователей - жена с дому пообещала выгнать :( и так сайт из своего кармана...

Аватара пользователя
Sheer
phpBB Guru
phpBB Guru
Сообщения: 11499
Зарегистрирован: 18.02.2007 19:01
Откуда: Калининград не Кенигсберг
Благодарил (а): 53 раза
Поблагодарили: 2581 раз

Re: [BETA] ActiveUser - Конкурс на самого активного пользова

Сообщение Sheer » 05.03.2015 21:29

Я и говорю, первый блин. А стремление похвально.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.

Аватара пользователя
saturn-z
phpBB 2.0.0
Сообщения: 241
Зарегистрирован: 10.11.2012 23:49
Откуда: РФ, Тюмень
Благодарил (а): 13 раз
Поблагодарили: 93 раза

Re: [BETA] ActiveUser - Конкурс на самого активного пользова

Сообщение saturn-z » 06.03.2015 19:23

Обновил архив, исправил ошибки с подключением к БД.
Sheer писал(а):К тому же код нечитабелен.
Начал, постепенно, приводить код к читабельному виду. Со временем обязательно научусь.
Так и не понял как правильно заменить функцию mysql_num_rows
В крации просмотрел папку /phpbb/db/driver/ и мне кажется, что надо использовать функцию sql_affectedrows. Правильно ли я понял?
Немало нужно знания, чтобы уметь скрыть перед другими свое незнание.

Аватара пользователя
neexforg
phpBB 2.0.4
Сообщения: 448
Зарегистрирован: 14.01.2014 8:37
Благодарил (а): 96 раз
Поблагодарили: 18 раз

Re: [BETA] ActiveUser - Конкурс на самого активного пользова

Сообщение neexforg » 06.03.2015 20:26

Если кто надумает сделать подобное для 3.0.12 расцелую))
Учусь сайтостроению вместе с phpbbguru

Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1799
Зарегистрирован: 19.05.2012 19:00
Благодарил (а): 152 раза
Поблагодарили: 215 раз
Забанен: Бессрочно

Re: [BETA] ActiveUser - Конкурс на самого активного пользова

Сообщение xisp » 06.03.2015 20:56

saturn-z писал(а):Правильно ли я понял?
Кажется нет. Приведённая вами функция возвращает число затронутых при обновлении строк БД.
Кажется нужной вам функции нет. Как вариант- сохранить результаты запроса в массив и посчитать его длину. Всё равно же они понадобятся, правда?
phpBBex

Аватара пользователя
saturn-z
phpBB 2.0.0
Сообщения: 241
Зарегистрирован: 10.11.2012 23:49
Откуда: РФ, Тюмень
Благодарил (а): 13 раз
Поблагодарили: 93 раза

Re: [BETA] ActiveUser - Конкурс на самого активного пользова

Сообщение saturn-z » 06.03.2015 21:12

xisp писал(а):Всё равно же они понадобятся, правда?
Нет :)
Я просто что-то недопонимаю, я уверен что нужное мне действие можно выполнить намного проще, более разумным способом.

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

$sql = "SELECT date FROM " . ACTIVE_USER_TABLE . " WHERE date LIKE '$arhive_date'";
$res = $this->db->sql_query($sql);
if ($this->db->sql_affectedrows($res) == 0)   // if (mysql_num_rows($res) == 0)
{
выполняю действие
}
else
{
ничего не делаю
}
т.е. мне просто нужно убедиться что функция вернула 0 строк.
Немало нужно знания, чтобы уметь скрыть перед другими свое незнание.

Аватара пользователя
Sheer
phpBB Guru
phpBB Guru
Сообщения: 11499
Зарегистрирован: 18.02.2007 19:01
Откуда: Калининград не Кенигсберг
Благодарил (а): 53 раза
Поблагодарили: 2581 раз

Re: [BETA] ActiveUser - Конкурс на самого активного пользова

Сообщение Sheer » 06.03.2015 21:20

saturn-z писал(а):как правильно заменить функцию mysql_num_rows
Есть функция mssqlnative_num_rows --> ./phpbb/db/driver/mssqlnative.php

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

	/**
	* Utility method used to retrieve number of rows
	* Emulates mysql_num_rows
	* Used in acp_database.php -> write_data_mssqlnative()
	* Requires a static or keyset cursor to be definde via
	* mssqlnative_set_query_options()
	*/
	function mssqlnative_num_rows($res)
	{
		if ($res !== false)
		{
			return sqlsrv_num_rows($res);
		}
		else
		{
			return false;
		}
	}
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.

Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 14537
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 348 раз
Поблагодарили: 1556 раз

Re: [BETA] ActiveUser - Конкурс на самого активного пользова

Сообщение rxu » 06.03.2015 21:25

Зачем это надо? Есть стандартная выборка из результатов запроса

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

while ($row = $db->sql_fetchrow($result))
{
DO STUFF
}
Изображение

Вернуться в «Бета-версии расширений для phpBB»