Forums / National / Russian / Модули и плагины / [Plugin] Userman

12>>>

Kabak
#1 2023-10-19 19:56

Плагин работы с пользователями в админке.

Обновил для работы с Cotonti 0.9.24 beta  и добавил экстраполя.

должен работать с Cotonti 0.9.23 и PHP 8.1.2

GIT


Как пользоваться плагином ?


Как быстро создать нового пользователя ?

1) устанавливаем имя , Email , подпись. ( по умолчанию плагин берёт из своих настроек )

2) Если на вашем сайте есть обязательные поля которые должен заполнить пользователь при регистрации, то они отобразятся в разделе Обязательные экстраполя

Их необходимо заполнить, иначе плагин напишет сообщение об ошибке и поьзователь не создасться. Если обязательные экстраполя отсутствуют, то в разделе

экстраполя будет написано, что поля отсутствуют.

после заполнения всех полей нужно нажать серую кнопку "Создать пользователя" под формой. Если всё хорошо, то вверху будет сообщение об успешном создании.


 

3) Если необходимо отредактировать профиль пользователя нужно нажать на его имя в таблице. 

Откроется такая же форма как в модуле users , но с дополнительными кнопками.

3.1) Кнопка "Обновить" её нужно нажать ,если вы хотите сохранить внесённые вами изменения в профиль пользователя.

3.2) Кнопка "Вернуться"  Вернёт вас на главную страницу плагина Userman со списком всех пользователей на вашем сайте.

3.3) Кнопка "Изменить временный доступ к группам" - это временное назначение пользовтелю доступа к группам на вашем сайте.

Например, вы хотите разрешить кому-нибудь на время читать какой-то раздел на форуме или страницы которые не доступны пользователям с уровнем Members 

Так удобно управлять индивидуальными "подписками" - временному доступом к ресурсам на вашем сайте.

3.4)  Кроме основной группы пользователю вы можете отметить любую группу выше по уровню, для установки доступа ко всем ресурсам доступным этому уровню пользователей.

В графе "Причина установки доступа к группам" можно укзать пометку для вас. Это просто текст с информацией для авмина о причинах открытия доступа пользователю.

Дата начала доступа (по умолчанию устаналивается текущей).  Просто оставляйте текущую дату в этом поле.   ( Отложенный доступ пока не реализован )

Дата окончания доступа (по умолчанию устаналивается текущей). Это дата окончания доступа. Как только пользователь авторизуется на вашем сайте плагин проверит, не пора ли отключить доступ.

И если дата на сервере больше чем указанная в этом поле, временный доступ пользователю к группам отключится.

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

В планах сделать проверку при каждом посещении сайта пользователем. 

 

В таблице есть столбец TGA. Здесь оттображается у кого есть временный доступ к другим группам и активен ли этот доступ.

В блоке Фильтры можно ввести Email и найти пользователя по Email ( необходимо полное совпадение ). Так же можно найти по имени

Пользователя можно удалять по одному. Справа на против каждого есть красная кнопка удаления. Она с запросом подтверждения действия.

Есть возможность группового удаления. Слева чекбоксы.  Можно выбрать одного или сразу ВСЕХ в соотвествии с установленным фильтром.

Если вы нажмёте на серую кнопки "Удалить всех выбранных" , то плагин удалит всех отмеченных чекбоксами без предупреждения.

 

Внизу на каждой странице плагина есть подсказка

This post was edited by Kabak (2023-10-22 13:57, 6 months ago)
Alex300
#2 2023-10-29 06:24

Отлично. Было бы здорово еще и тут обновить описание

Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english...
Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/
Argont
#3 2023-10-29 08:29
#47272 Kabak:

Плагин работы с пользователями в админке.

Обновил для работы с Cotonti 0.9.24 beta  и добавил экстраполя.

должен работать с Cotonti 0.9.23 и PHP 8.1.2

GIT

пожалуйста, спокойно, я серьезно только поддерживыю новые идеи движка, о которых боюсь и сами разработчики не осведомлены, я не "поддеваю" , но немного не понимаю механику, точнее математику в файлах

userman.install.sql

и

userman.uninstall.php

иногда поржать над задравшим подбородок разработчиком
Kabak
#4 2023-10-30 10:05

Я не понимаю суть вопроса.  Что-то не работает или работает неправильно ?

Argont
#5 2023-11-05 02:54

Не пугайте так больше ))) знаю что полей штук пять, захожу в таблицу - пусто.

беда видна тогда, когда префикс отличается от `cot_`

в userman.admin.php

строку

	'UM_EXTRA_FIELDS' => cot_url('admin','m=extrafields&n=cot_users'),

замените на

	'UM_EXTRA_FIELDS' => cot_url('admin','m=extrafields&n='.$db_users),

 

Добавлено 49 минут спустя:

и не разобрался, аватарки пользователей не подтягиваются при редактировании и просмотре. я так понимаю, это где нужно прописать, чтоб теги пользователя генерировались.

Добавлено 1 час спустя:

без этой функции работает спокойно

function cot_generate_um_usertags($user_data, $tag_prefix = '', $emptyname='', $allgroups = false, $cacheitem = true)

 

Добавлено 9 минут спустя:

в userman.admin.php

foreach ($sqlusers as $urr)
{
	$jj++;
	$temp->assign(array(
        'UM_ROW_NUM' => $jj,
		'UM_ROW' => $urr
	));
	$temp->assign(cot_generate_um_usertags($urr, 'UM_ROW_'));

заменил на

foreach ($sqlusers as $urr)
{
	$jj++;
	$temp->assign(array(
        'UM_ROW_NUM' => $jj,
		'UM_ROW' => $urr,
		
	));
	$temp->assign(array(
	'UM_URL_FOR_EDIT' => cot_url('admin', 'm=other&p=userman&a=edit&id='.$urr['user_id']),
	));
	$temp->assign(cot_generate_usertags($urr, 'UM_ROW_'));

в userman.admin.tpl строку

<td class="centerall">{UM_ROW_NAME}&nbsp</td>

заменил на

<td class="centerall"><a href="{UM_URL_FOR_EDIT}">{UM_ROW_NICKNAME}</a></td>

кстати и автарки пошли ))

Добавлено 27 минут спустя:

в userman.edit.php

сразу после

$delete_pfs = cot_module_active('pfs') ? cot_checkbox(false, 'um_edit_userdelpfs', $L['PFS']) : '';

добавить

	$temp->assign(cot_generate_usertags($urr, 'UM_EDIT_'));

 

иногда поржать над задравшим подбородок разработчиком
This post was edited by Argont (2023-11-05 05:37, 5 months ago)
Kabak
#6 2023-11-05 12:12

Argont,

Благодраю за найденные ошибки.  Как устраню, напишу здесь

С фото и аватарками всё сложнее.  Вам просто показывают фото и аватар, но чтобы заменить... нужно подумать как это сделать.

без cot_generate_um_usertags()  вас будет выкидывать в модуль users

 

 

This post was edited by Kabak (2023-11-05 12:29, 5 months ago)
Argont
#7 2023-11-05 20:29
#47303 Kabak:

Argont,

без cot_generate_um_usertags()  вас будет выкидывать в модуль users

ни разу не выкидывало ))

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

что я не понял, так почему при деинсталяции плагина не удаляется таблица из базы.

а в остальном, было интерересно на выходном поковыряться yes

иногда поржать над задравшим подбородок разработчиком
Kabak
#8 2023-11-05 22:30

что я не понял, так почему при деинсталяции плагина не удаляется таблица из базы.

Какая именно таблица не удаляется ?

Argont
#9 2023-11-06 05:35
#47305 Kabak:

что я не понял, так почему при деинсталяции плагина не удаляется таблица из базы.

Какая именно таблица не удаляется ?

в инсталляторе только одна )))

выдавало фатал эрор указывая на

$db->query("DROP TABLE IF EXISTS `cot_userman`");

пришлось отказаться пока от сценария в userman.uninstall.php полностью

это все на последней версии движка с репозитория

иногда поржать над задравшим подбородок разработчиком
Kabak
#10 2023-11-06 06:42

Вчера вечером проверил - не подтверждается.  У меня cot_userman удаляется в 0.9.24 бета   и ночью обновил репозиторий. 

Добавлены Аватарки и Фото, но при удалении фото или аватаруи в плагине пока выбрасывает в другую локацию.  Разбираюсь с этим

Dayver
#11 2023-11-06 08:59
#47305 Kabak:

что я не понял, так почему при деинсталяции плагина не удаляется таблица из базы.

Какая именно таблица не удаляется ?

Тут правильно писать так

$db->query("DROP TABLE IF EXISTS $db_userman");

Поскольку если будет использоватся не стадартный префикс к таблицам то и удаление закончится ошибкой.

А тут что бы быть точным нужно писать не "баз" а "таблиц"

Pavlo Tkachenko aka Dayver
Kabak
#12 2023-11-06 09:23

Dayver, благодарю.   обновил репозиторий

Как взаимодействовать с модулем Users и плагином UserImages  чтобы не копировать + не модернизировать их функции , но при этом всё работало в админке ?

Я может чего-то не понимаю, но вынужден копировать и модернизировать некоторые функции из Users и UserImages только потому, что нужно возвращать движок не в Users и UserImages, а в админку в Userman.

Я понимаю, что это неправильно, но не могу догадаться для красивого решения. frown

Argont
#13 2023-11-06 10:50
#47310 Kabak:

Dayver, благодарю.   обновил репозиторий

Как взаимодействовать с модулем Users и плагином UserImages  чтобы не копировать + не модернизировать их функции , но при этом всё работало в админке ?

Я понимаю, что это неправильно, но не могу догадаться для красивого решения. frown

если копировать то смотря что и для чего, а дублировать думаю точно лишнее.

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

иногда поржать над задравшим подбородок разработчиком
Kabak
#14 2023-11-06 10:57

Argont ,

Если вы знаете Cotonti и умеете писать плагины, то прошу вас, высказывайтесь по существу, чтобы вопрос решался, а не просто что-то сказать. Мой вопрос я чётко описал. Если вы знаете на него ответ, то помогайте. Всё это пишеься для всех и бесплатно.  Заодно и уровень владения движком подтянем вместе.

 

Задача была написать удобный менеджер пользователей в админке

Argont
#15 2023-11-06 11:22
#47312 Kabak:

Argont ,

Если вы знаете Cotonti и умеете писать плагины, то прошу вас, высказывайтесь по существу, чтобы вопрос решался, а не просто что-то сказать. Мой вопрос я чётко описал. Если вы знаете на него ответ, то помогайте. Всё это пишеься для всех и бесплатно.  Заодно и уровень владения движком подтянем вместе.

 

Задача была написать удобный менеджер пользователей в админке

я хотел как лучше, не хочу разводить демагогию, котонти знаю не настолько хорошо как вы думаете, здесь важно понимать конкретную задачу (нужна функция и в определенном месте) а затем отслеживать связи, и как их подключать уже пример приводил

сразу после

1
$delete_pfs = cot_module_active('pfs') ? cot_checkbox(false, 'um_edit_userdelpfs', $L['PFS']) : '';

добавить

1
$temp->assign(cot_generate_usertags($urr, 'UM_EDIT_'));

"Задача была написать удобный менеджер " - это размытая задача, даже для человека, а системе нужно четко, в нужном участке/локации выполнение функции, которая сообщаятся с модулем пользователей.

пример конкретной задачи, который бы нам помог имел бы вопрос:

"как при создании пользователя, ему сразу сделать N-авторизаций".

с таким вопросом можно работать.

Добавлено 2 часа спустя:

Вот, я бы сказал дествительно прекрасный пример (готовая конструкция) импорта данных по запросу из параметров запроса, которые затем можно будет использовать уже по всему плагину.

и не прийдется в при создании пользователя заводить

$umuser['user_logcount'] = cot_import('um_userlogcount','P','INT');	

а просто используем

'UM_CREATE_USER_LOGCOUNT' => cot_inputbox('text', 'um_userlogcount', $cfg['plugin']['userman']['defaultlogcount'], array('size' => 32, 'maxlength' => 64)),

а для его редактирования, тоже не прийдется заводить

$euser['user_logcount']     = cot_import('ruserlogcount','P', 'INT');

где уже просто используем

'UM_EDIT_LOGCOUNT' =>  cot_inputbox('text', 'ruserlogcount', $urr['user_logcount'], array('maxlength' => '8')),

и можно указать произвольное количество посещений, отличимое от того, что у нас по дефолту в сетапе

defaultlogcount=04:string::17:

 

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

сори за сумбор в  тексте

Добавлено 11 минут спустя:

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

	$temp->assign(cot_generate_usertags($urr, 'UM_EDIT_'));

в userman.function.php я вовсе закоментировал

function cot_build_um_country($flag)

и

function cot_build_um_flag($flag)

и т.д.

работает.

Добавлено 23 минуты спустя:

если надумаете редактировать дату последнего визита пользователя(авторизацию)

	$euser['user_lastlog']    = (int)cot_import_date('ruserlastlog');

и

'UM_EDIT_LASTLOG' => cot_selectbox_date($urr['user_lastlog'], 'long', 'ruserlastlog').' '.Cot::$usr['timetext'],

 

иногда поржать над задравшим подбородок разработчиком
This post was edited by Argont (2023-11-06 14:05, 5 months ago)

12>>>