Страница 1 из 15

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

Добавлено: 05.03.2015 20:05
saturn-z
Название: ActiveUser
Автор: saturn-z
Описание: Конкурс на самого активного пользователя
Расширение создаёт отдельную страницу конкурса. Отсортировывает пользователей, которые оставили больше всего сообщений на форуме за месяц, и рандомно выбирает одного из них. Отображает победителей прошлых месяцев. Прогнозирует победителей текущего месяца.
Возможности: 
Выбор групп которые будут участвовать в конкурсе.
Можно исключить некоторые форумы из конкурса.
Настройка количества призовых мест.
Настройка количества отображаемых претендентов на победу.
Настройка количества предупреждений, при котором пользователь будет исключен из конкурса.
Правка текстов из админки.
Настройка количества отображаемых победителей прошлых месяцев.
Скрины 
2015-07-27_00-34-55.png
2015-07-27_00-33-25.png
Это моё первое расширение, с 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 - Конкурс на самого активного пользователя
Скрин 
BlockPortal.png

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

Добавлено: 05.03.2015 20:16
rxu
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

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

Добавлено: 05.03.2015 20:19
владимир1983
Интересная задумка)

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

Добавлено: 05.03.2015 21:06
Alecto

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

 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 - Конкурс на самого активного пользователя
и, на тесте у меня все поля пустые.
пользователи туда не захаживают, но я там создавал посты....
так что не работает экст.

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

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

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

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

Добавлено: 05.03.2015 21:23
Sheer
Первый блин... вернее каша.
Строка 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, читайте Руководство по написанию программного кода и исправляйте (не буду называть как это называется, чтоб не обидеть).

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

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

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

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

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

Добавлено: 05.03.2015 21:29
Sheer
Я и говорю, первый блин. А стремление похвально.

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

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

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

Добавлено: 06.03.2015 20:26
neexforg
Если кто надумает сделать подобное для 3.0.12 расцелую))

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

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

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

Добавлено: 06.03.2015 21:12
saturn-z
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 строк.

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

Добавлено: 06.03.2015 21:20
Sheer
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;
		}
	}

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

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

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

while ($row = $db->sql_fetchrow($result))
{
DO STUFF
}