Index: branches/5.2.x/core/admin_templates/users/user_blocks.tpl
===================================================================
diff -u -N
--- branches/5.2.x/core/admin_templates/users/user_blocks.tpl (revision 0)
+++ branches/5.2.x/core/admin_templates/users/user_blocks.tpl (revision 14468)
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+ style="display: none" id="email_password">
+
+ onchange="update_checkbox(this, document.getElementById(''));"/>
+
+
+
+
+ |
+
+
+
+
+ var $field_mask = '';
+ var $email_phrase = '';
+
+ $( get_control($field_mask, 'Password') ).change(
+ function ($e) {
+ var $password = $(this).val();
+
+ if ($password) {
+ $('label', '#email_password').html( $email_phrase.replace('{password}', $password) );
+ $('#email_password').show();
+ }
+ }
+ );
+
+ $('#generate_password').click(
+ function ($e) {
+ $.get(
+ '',
+ function ($password) {
+ $( get_control($field_mask, 'Password') ).val($password).change();
+ $( get_control($field_mask, 'VerifyPassword') ).val($password);
+ }
+ )
+ }
+ );
+
+ $('label', '#email_password').html( $email_phrase.replace('{password}', '') );
+
\ No newline at end of file
Index: branches/5.2.x/core/install/install_data.sql
===================================================================
diff -u -N -r14437 -r14468
--- branches/5.2.x/core/install/install_data.sql (.../install_data.sql) (revision 14437)
+++ branches/5.2.x/core/install/install_data.sql (.../install_data.sql) (revision 14468)
@@ -167,6 +167,8 @@
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'FORM.SUBMISSION.REPLY.TO.USER', NULL, 1, 0, 'Core', 'Admin Reply to User Form Submission', 1, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'FORM.SUBMISSION.REPLY.FROM.USER', NULL, 1, 0, 'Core', 'User Replied to It\'s Form Submission', 1, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'FORM.SUBMISSION.REPLY.FROM.USER.BOUNCED', NULL, 1, 0, 'Core', 'Form Submission Admin Reply Delivery Failure', 1, 1, 1);
+INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'USER.NEW.PASSWORD', NULL, 1, 0, 'Core', 'Sends new password to an existing user', 0, 1, 0);
+INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'USER.ADD.BYADMIN', NULL, 1, 0, 'Core', 'Sends password to a new user', 0, 1, 0);
INSERT INTO IdGenerator VALUES ('100');
Index: branches/5.2.x/core/units/users/users_event_handler.php
===================================================================
diff -u -N -r14447 -r14468
--- branches/5.2.x/core/units/users/users_event_handler.php (.../users_event_handler.php) (revision 14447)
+++ branches/5.2.x/core/units/users/users_event_handler.php (.../users_event_handler.php) (revision 14468)
@@ -1,6 +1,6 @@
Array('self' => true),
'OnUpdatePassword' => Array('self' => true),
'OnSaveSelected' => Array ('self' => 'view'),
+ 'OnGeneratePassword' => Array ('self' => 'view'),
// front
'OnRefreshForm' => Array('self' => true),
@@ -297,7 +298,7 @@
*/
function OnAfterItemCreate(&$event)
{
- $this->saveUserImages($event);
+ $this->afterItemChanged($event);
$object =& $event->getObject();
/* @var $object kDBItem */
@@ -1285,7 +1286,7 @@
*/
function OnAfterItemUpdate(&$event)
{
- $this->saveUserImages($event);
+ $this->afterItemChanged($event);
$object =& $event->getObject();
/* @var $object UsersItem */
@@ -1298,6 +1299,27 @@
}
/**
+ * Occurs, after item is changed
+ *
+ * @param kEvent $event
+ */
+ function afterItemChanged(&$event)
+ {
+ $this->saveUserImages($event);
+
+ $object =& $event->getObject();
+ /* @var $object kDBItem */
+
+ if ( $object->GetDBField('EmailPassword') && $object->GetDBField('Password_plain') ) {
+ $email_passwords = $this->Application->RecallVar('email_passwords');
+ $email_passwords = $email_passwords ? unserialize($email_passwords) : Array ();
+
+ $email_passwords[ $object->GetID() ] = $object->GetDBField('Password_plain');
+ $this->Application->StoreVar('email_passwords', serialize($email_passwords));
+ }
+ }
+
+ /**
* Stores user's original Status before overwriting with data from temp table
*
* @param kEvent $event
@@ -1324,15 +1346,34 @@
function OnAfterCopyToLive(&$event)
{
$temp_id = $event->getEventParam('temp_id');
- if ($temp_id == 0) {
- // this is new user create, don't send email events
- return ;
+ $email_passwords = $this->Application->RecallVar('email_passwords');
+
+ if ( $email_passwords ) {
+ $email_passwords = unserialize($email_passwords);
+
+ if ( isset($email_passwords[$temp_id]) ) {
+ $object =& $event->getObject();
+ /* @var $object kDBItem */
+
+ $object->SwitchToLive();
+ $object->Load( $event->getEventParam('id') );
+ $object->SetField('Password', $email_passwords[$temp_id]);
+ $object->SetField('VerifyPassword', $email_passwords[$temp_id]);
+
+ $this->Application->EmailEventUser($temp_id > 0 ? 'USER.NEW.PASSWORD': 'USER.ADD.BYADMIN', $object->GetID());
+
+ unset($email_passwords[$temp_id]);
+ $this->Application->StoreVar('email_passwords', serialize($email_passwords));
+ }
}
- $new_status = $this->getUserStatus($temp_id);
- $user_status = $this->Application->GetVar('user_status');
+ if ( $temp_id > 0 ) {
+ // only send status change e-mail on user update
+ $new_status = $this->getUserStatus($temp_id);
+ $user_status = $this->Application->GetVar('user_status');
- $this->sendStatusChangeEvent($temp_id, $user_status[$temp_id], $new_status);
+ $this->sendStatusChangeEvent($temp_id, $user_status[$temp_id], $new_status);
+ }
}
/**
@@ -1601,22 +1642,28 @@
{
parent::OnPreCreate($event);
- if ($event->status == kEvent::erSUCCESS) {
- $user_type = $this->Application->GetVar('user_type');
+ if ($event->status != kEvent::erSUCCESS) {
+ return ;
+ }
- if ($user_type) {
- $object =& $event->getObject();
- /* @var $object kDBItem */
+ $object =& $event->getObject();
+ /* @var $object kDBItem */
- $object->SetDBField('UserType', $user_type);
+ $user_type = $this->Application->GetVar('user_type');
- if ( $user_type == UserType::ADMIN ) {
- $object->SetDBField('PrimaryGroupId', $this->Application->ConfigValue('User_AdminGroup'));
- }
+ if ($user_type) {
+ $object->SetDBField('UserType', $user_type);
+
+ if ( $user_type == UserType::ADMIN ) {
+ $object->SetDBField('PrimaryGroupId', $this->Application->ConfigValue('User_AdminGroup'));
}
+ }
- $this->_makePasswordRequired($event);
+ if ( $this->Application->ConfigValue('User_Password_Auto') ) {
+ $object->SetDBField('EmailPassword', 1);
}
+
+ $this->_makePasswordRequired($event);
}
/**
@@ -1670,4 +1717,18 @@
parent::LoadItem($event);
}
+
+ /**
+ * Generates password
+ *
+ * @param kEvent $event
+ */
+ function OnGeneratePassword(&$event)
+ {
+ $event->status = kEvent::erSTOP;
+
+ if ( $this->Application->isAdminUser ) {
+ echo kUtil::generatePassword();
+ }
+ }
}
Index: branches/5.2.x/core/units/users/users_config.php
===================================================================
diff -u -N -r14447 -r14468
--- branches/5.2.x/core/units/users/users_config.php (.../users_config.php) (revision 14447)
+++ branches/5.2.x/core/units/users/users_config.php (.../users_config.php) (revision 14468)
@@ -1,6 +1,6 @@
Array('type'=>'string','default'=>''),
'PrimaryGroup' => Array('type' => 'string', 'default' => ''),
'RootPassword' => Array('type' => 'string', 'formatter' => 'kPasswordFormatter', 'encryption_method' => 'md5', 'verify_field' => 'VerifyRootPassword', 'skip_empty' => 1, 'default' => md5('') ),
-
+ 'EmailPassword' => Array ('type' => 'string', 'default' => ''),
'FullName' => Array ('type' => 'string', 'default' => ''),
),
Index: branches/5.2.x/core/admin_templates/users/admins_edit.tpl
===================================================================
diff -u -N -r14437 -r14468
--- branches/5.2.x/core/admin_templates/users/admins_edit.tpl (.../admins_edit.tpl) (revision 14437)
+++ branches/5.2.x/core/admin_templates/users/admins_edit.tpl (.../admins_edit.tpl) (revision 14468)
@@ -59,6 +59,7 @@
+
@@ -67,13 +68,21 @@
+
+
\ No newline at end of file
Index: branches/5.2.x/core/admin_templates/incs/form_blocks.tpl
===================================================================
diff -u -N -r14244 -r14468
--- branches/5.2.x/core/admin_templates/incs/form_blocks.tpl (.../form_blocks.tpl) (revision 14244)
+++ branches/5.2.x/core/admin_templates/incs/form_blocks.tpl (.../form_blocks.tpl) (revision 14468)
@@ -638,7 +638,6 @@
-
class="" onchange="update_checkbox(this, document.getElementById(''));" onclick="">
|
Index: branches/5.2.x/core/admin_templates/users/users_edit.tpl
===================================================================
diff -u -N -r14244 -r14468
--- branches/5.2.x/core/admin_templates/users/users_edit.tpl (.../users_edit.tpl) (revision 14244)
+++ branches/5.2.x/core/admin_templates/users/users_edit.tpl (.../users_edit.tpl) (revision 14468)
@@ -58,14 +58,14 @@
+
+
+
\ No newline at end of file
Index: branches/5.2.x/core/install/english.lang
===================================================================
diff -u -N -r14437 -r14468
--- branches/5.2.x/core/install/english.lang (.../english.lang) (revision 14437)
+++ branches/5.2.x/core/install/english.lang (.../english.lang) (revision 14468)
@@ -30,6 +30,7 @@
RWRpdCBCbG9jaw==
RWRpdCBDb250ZW50
RWRpdCBEZXNpZ24=
+ R2VuZXJhdGU=
R2V0IFZhbHVl
TG9jYXRl
TW92ZSBEb3du
@@ -428,6 +429,7 @@
RWxhcHNlZCBUaW1l
RS1tYWls
RS1tYWlsIENvbW11bmljYXRpb24gUm9sZQ==
+ RS1tYWlsICI8c3Ryb25nPntwYXNzd29yZH08L3N0cm9uZz4iIHBhc3N3b3JkIHRvIHVzZXI=
RW1haWxzIGluIFF1ZXVl
RW1haWxzIFNlbnQ=
RW1haWxzIFRvdGFs
@@ -1575,6 +1577,7 @@
U3ViamVjdDogTmV3IGZvcm0gc3VibWlzc2lvbgoKPHA+Rm9ybSBoYXMgYmVlbiBzdWJtaXR0ZWQuIFBsZWFzZSBwcm9jZWVkIHRvIHRoZSBBZG1pbiBDb25zb2xlIHRvIHJldmlldyB0aGUgc3VibWlzc2lvbiE8L3A+
U3ViamVjdDogSW4tcG9ydGFsIHJlZ2lzdHJhdGlvbgoKRGVhciA8aW5wMjp1X0ZpZWxkIG5hbWU9IkZpcnN0TmFtZSIgLz4gPGlucDI6dV9GaWVsZCBuYW1lPSJMYXN0TmFtZSIgLz4sDQoNClRoYW5rIHlvdSBmb3IgcmVnaXN0ZXJpbmcgb24gPGlucDI6bV9CYXNlVXJsLz4uIFlvdXIgcmVnaXN0cmF0aW9uIGlzIG5vdyBhY3RpdmUu
U3ViamVjdDogTmV3IFVzZXIgUmVnaXN0cmF0aW9uICg8aW5wMjp1X0ZpZWxkIG5hbWU9IkxvZ2luIi8+KQoKQSBuZXcgdXNlciAiPGlucDI6dV9GaWVsZCBuYW1lPSJMb2dpbiIvPiIgaGFzIGJlZW4gYWRkZWQu
+ U3ViamVjdDogTmV3IHVzZXIgaGFzIGJlZW4gY3JlYXRlZAoKRGVhciA8aW5wMjp1X0ZpZWxkIG5hbWU9IkZpcnN0TmFtZSIvPiwNCg0KQSBuZXcgdXNlciBoYXMgYmVlbiBjcmVhdGVkIGFuZCBhc3NpZ25lZCB0byB5b3UNCg0KTm93IHlvdSBjYW4gbG9naW4gdXNpbmcgdGhlIGZvbGxvd2luZyBjcmVkZW50aWFsczoNCg0KPGlucDI6bV9pZiBjaGVjaz0idV9GaWVsZCIgbmFtZT0iTG9naW4iPlVzZXJuYW1lOiA8aW5wMjp1X0ZpZWxkIG5hbWU9IkxvZ2luIi8+PGlucDI6bV9lbHNlLz5FLW1haWw6IDxpbnAyOnVfRmllbGQgbmFtZT0iRW1haWwiLz48L2lucDI6bV9pZj4gDQpQYXNzd29yZDogPGlucDI6dV9GaWVsZCBuYW1lPSJQYXNzd29yZF9wbGFpbiIvPiANCg==
U3ViamVjdDogTmV3IFVzZXIgUmVnaXN0cmF0aW9uICg8aW5wMjptX2lmIGNoZWNrPSJtX0dldENvbmZpZyIgbmFtZT0iVXNlcl9BbGxvd19OZXciIGVxdWFsc190bz0iNCI+IC0gQWN0aXZhdGlvbiBFbWFpbDwvaW5wMjptX2lmPikKCkRlYXIgPGlucDI6dV9GaWVsZCBuYW1lPSJGaXJzdE5hbWUiIC8+IDxpbnAyOnVfRmllbGQgbmFtZT0iTGFzdE5hbWUiIC8+LDxici8+PGJyLz4NCg0KPGlucDI6bV9pZiBjaGVjaz0ibV9HZXRDb25maWciIG5hbWU9IlVzZXJfQWxsb3dfTmV3IiBlcXVhbHNfdG89IjQiPg0KVGhhbmsgeW91IGZvciByZWdpc3RlcmluZyBvbiA8aW5wMjptX0xpbmsgdGVtcGxhdGU9ImluZGV4Ii8+IHdlYnNpdGUuIFRvIGFjdGl2YXRlIHlvdXIgcmVnaXN0cmF0aW9uIHBsZWFzZSBmb2xsb3cgbGluayBiZWxvdy4NCjxpbnAyOnVfQWN0aXZhdGlvbkxpbmsgdGVtcGxhdGU9InBsYXRmb3JtL2xvZ2luL2FjdGl2YXRlX2NvbmZpcm0iLz4NCjxpbnAyOm1fZWxzZS8+DQpUaGFuayB5b3UgZm9yIHJlZ2lzdGVyaW5nIG9uIDxpbnAyOm1fTGluayB0ZW1wbGF0ZT0iaW5kZXgiLz4gd2Vic2l0ZS4gWW91ciByZWdpc3RyYXRpb24gd2lsbCBiZSBhY3RpdmUgYWZ0ZXIgYXBwcm92YWwuDQo8L2lucDI6bV9pZj4=
U3ViamVjdDogTmV3IFVzZXIgUmVnaXN0ZXJlZAoKQSBuZXcgdXNlciAiPGlucDI6dV9GaWVsZCBuYW1lPSJMb2dpbiIvPiIgaGFzIHJlZ2lzdGVyZWQgYW5kIGlzIHBlbmRpbmcgYWRtaW5pc3RyYXRpdmUgYXBwcm92YWwu
U3ViamVjdDogWW91ciBBY2NvdW50IGlzIEFjdGl2ZQoKV2VsY29tZSB0byA8aW5wMjptX0Jhc2VVcmwvPiENCg0KWW91ciB1c2VyIHJlZ2lzdHJhdGlvbiBoYXMgYmVlbiBhcHByb3ZlZC4gWW91ciB1c2VyIG5hbWUgaXM6ICI8aW5wMjp1X0ZpZWxkIG5hbWU9IkxvZ2luIi8+Ii4=
@@ -1585,6 +1588,7 @@
U3ViamVjdDogTWVtYmVyc2hpcCBFeHBpcmF0aW9uIE5vdGljZSBmb3IgIjxpbnAyOnVfRmllbGQgbmFtZT0iTG9naW4iLz4iIFNlbnQKClVzZXIgPGlucDI6dV9GaWVsZCBuYW1lPSJMb2dpbiIvPiBtZW1iZXJzaGlwIHdpbGwgZXhwaXJlIHNvb24u
U3ViamVjdDogWW91ciBNZW1iZXJzaGlwIEV4cGlyZWQKCllvdXIgbWVtYmVyc2hpcCBvbiA8aW5wMjptX0Jhc2VVcmwvPiB3ZWJzaXRlIGhhcyBleHBpcmVkLg==
U3ViamVjdDogVXNlcidzIE1lbWJlcnNoaXAgRXhwaXJlZCAgKCA8aW5wMjp1X0ZpZWxkIG5hbWU9IkxvZ2luIi8+KQoKVXNlcidzICg8aW5wMjp1X0ZpZWxkIG5hbWU9IkxvZ2luIi8+KSBtZW1iZXJzaGlwIG9uIDxpbnAyOm1fQmFzZVVybC8+IHdlYnNpdGUgaGFzIGV4cGlyZWQu
+ U3ViamVjdDogTmV3IHBhc3N3b3JkIGdlbmVyYXRlZAoKRGVhciA8aW5wMjp1X0ZpZWxkIG5hbWU9IkZpcnN0TmFtZSIvPiwNCg0KQSBuZXcgcGFzc3dvcmQgaGFzIGJlZW4gZ2VuZXJhdGVkIGZvciB5b3VyIHVzZXIuDQoNCk5vdyB5b3UgY2FuIGxvZ2luIHVzaW5nIHRoZSBmb2xsb3dpbmcgY3JlZGVudGlhbHM6DQoNCjxpbnAyOm1faWYgY2hlY2s9InVfRmllbGQiIG5hbWU9IkxvZ2luIj5Vc2VybmFtZTogPGlucDI6dV9GaWVsZCBuYW1lPSJMb2dpbiIvPjxpbnAyOm1fZWxzZS8+RS1tYWlsOiA8aW5wMjp1X0ZpZWxkIG5hbWU9IkVtYWlsIi8+PC9pbnAyOm1faWY+IA0KUGFzc3dvcmQ6IDxpbnAyOnVfRmllbGQgbmFtZT0iUGFzc3dvcmRfcGxhaW4iLz4g
U3ViamVjdDogUGFzc3dvcmQgUmVjb3ZlcnkKCllvdXIgbG9zdCBwYXNzd29yZCBoYXMgYmVlbiByZXNldC4gPGJyLz48YnIvPg0KWW91ciBuZXcgcGFzc3dvcmQgaXM6ICI8aW5wMjp1X0ZvcmdvdHRlblBhc3N3b3JkIC8+Ii4=
U3ViamVjdDogUGFzc3dvcmQgUmVjb3ZlcnkgZm9yICI8aW5wMjp1X0ZpZWxkIG5hbWU9IkxvZ2luIiAvPiIKCkxvc3QgcGFzc3dvcmQgaGFzIGJlZW4gcmVzZXQgZm9yICI8aW5wMjp1X0ZpZWxkIG5hbWU9IkxvZ2luIiAvPiIgdXNlci4gPGJyLz48YnIvPg0KTmV3IHBhc3N3b3JkIGlzOiAiPGlucDI6dV9Gb3Jnb3R0ZW5QYXNzd29yZCAvPiIu
U3ViamVjdDogUmVzZXQgUGFzc3dvcmQgQ29uZmlybWF0aW9uCgpIZWxsbyw8YnIvPjxici8+DQoNCkl0IHNlZW1zIHRoYXQgeW91IGhhdmUgcmVxdWVzdGVkIGEgcGFzc3dvcmQgcmVzZXQgZm9yIHlvdXIgSW4tcG9ydGFsIGFjY291bnQuIElmIHlvdSB3b3VsZCBsaWtlIHRvIHByb2NlZWQgYW5kIGNoYW5nZSB0aGUgcGFzc3dvcmQsIHBsZWFzZSBjbGljayBvbiB0aGUgbGluayBiZWxvdzo8YnIvPjxici8+DQoNCjxhIGhyZWY9IjxpbnAyOnVfQ29uZmlybVBhc3N3b3JkTGluayBub19hbXA9IjEiLz4iPjxpbnAyOnVfQ29uZmlybVBhc3N3b3JkTGluayBub19hbXA9IjEiLz48L2E+PGJyLz48YnIvPg0KDQpZb3Ugd2lsbCByZWNlaXZlIGEgc2Vjb25kIGVtYWlsIHdpdGggeW91ciBuZXcgcGFzc3dvcmQgc2hvcnRseS48YnIvPjxici8+DQoNCklmIHlvdSBiZWxpZXZlIHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgZW1haWwgaW4gZXJyb3IsIHBsZWFzZSBpZ25vcmUgdGhpcyBlbWFpbC4gWW91ciBwYXNzd29yZCB3aWxsIG5vdCBiZSBjaGFuZ2VkIHVubGVzcyB5b3UgaGF2ZSBjbGlja2VkIG9uIHRoZSBhYm92ZSBsaW5rLg0K