Установил модуль CMSUsers/1.0.0 и соответственно зависимость CMSForms/0.1.4.
Описание проблемы №1:
Не сохраняются настройки Settings.
Перехожу на "Пользователи и группы » CMS Users" вкладка "Settings" (последний таб), редактирую настройки (ставлю галочку "Allow users to sign in"), нажимаю кнопочку "Save". Перехожу снова на "Пользователи и группы » CMS Users" вкладка "Settings", настройки остаются пустые.
Как я решил проблему:
В файле "..\modules\CMSUsers\action.defaultadmin.php"
есть такая строчка
Code: Select all
$form_settings = new CMSForm($this->GetName(), $id.'settings', 'defaultadmin', $returnid);
id формы и всех инпутов создается с двумя окончаниями '
settings'
Code: Select all
<form id="m1_settingssettingsmoduleform_1" method="get" action="moduleinterface.php" class="cms_form">
...
<input class="cms_submit" name="m1_settingssettingssubmit" id="m1_settingssettingssubmit" value="Save" type="submit" class="submit" />
мои попытки разобраться с классом CMSForm, почему он вставляет два окончания, не увенчались успехом, поэтому я просто убрал окончание 'settings'
Code: Select all
$form_settings = new CMSForm($this->GetName(), $id, 'defaultadmin', $returnid);
Понимаю, что по хорошему надо разбираться с классом CMSForm.
Описание проблемы №2:
не снимаются галочки "Is active" и "Is disabled", после сохранения они опять активны.
"Пользователи и группы » CMS Users" вкладка "Users" редактирование пользователя.
файл "..\modules\CMSUsers\action.user_manage.php"
Code: Select all
$form->setWidget('is_active', 'checkbox', array('object' => &$user));
$form->setWidget('is_disabled', 'checkbox', array('object' => &$user));
когда снимаю галочки, "$user->is_active" и "$user->is_disabled" ничего не имеет
Я так понимаю, проблема в function update() в файле "..\modules\CMSUsers\lib\classes\CMSUser.class.php"
Функция update создает шаблон запроса:
$query: UPDATE cms_module_cmsusers_users SET updated_at = NOW(), username = ?, algorithm = ?, salt = ?, email = ?, token = ?, is_active = ?, is_disabled = ?, last_login = ?, comments = ?, password = ? WHERE id = ?
значения следующие:
$values:
Array
(
[0] => test
[1] => sha1
[2] => cf73324249082825cacd7b5a9e347d63
[3] =>
rikcage@gmail.com
[4] =>
[5] => 1
[6] =>
[7] => 2012-03-23 19:26:17
[8] =>
[9] => c8761b2a042ea311175f966fd8e0e784b5496600
[10] => 1
)
т.е. получается такой
$query:
UPDATE cms_module_cmsusers_users SET updated_at = NOW(), username = 'test', algorithm = 'sha1', salt = 'cf73324249082825cacd7b5a9e347d63', email = '
rikcage@gmail.com', token = '', is_active = 1, is_disabled = '', last_login = '2012-03-23 19:26:17', comments = '', password = 'c8761b2a042ea311175f966fd8e0e784b5496600' WHERE id = 1
is_disabled = '', но is_active и is_disabled должны иметь значения 1 или 0, соответственно такой запрос ничего не обновляет.
Данную проблему я пока решил так
перед строкой $user->save(); в файле "..\modules\CMSUsers\action.user_manage.php" добавил следующий код
Code: Select all
$user->is_active = strlen($user->is_active) ? $user->is_active : 0;
$user->is_disabled = strlen($user->is_disabled) ? $user->is_disabled : 0;
$user->save();
Ваши предложения, как решить данные проблемы?