Index: trunk/core/units/users/users_event_handler.php =================================================================== diff -u -N -r2663 -r2818 --- trunk/core/units/users/users_event_handler.php (.../users_event_handler.php) (revision 2663) +++ trunk/core/units/users/users_event_handler.php (.../users_event_handler.php) (revision 2818) @@ -137,14 +137,19 @@ function OnAfterItemCreate(&$event) { $is_subscriber = $this->Application->GetVar('IsSubscriber'); - if (!$is_subscriber){ - + if(!$is_subscriber) + { $object =& $event->getObject(); + + $sql = 'UPDATE '.TABLE_PREFIX.'UserGroup + SET PrimaryGroup = 0 + WHERE PortalUserId = '.$object->GetDBField('PortalUserId'); + $this->Conn->Query($sql); + $group_id = $this->Application->ConfigValue('User_NewGroup'); - $sql = 'INSERT INTO '.TABLE_PREFIX.'UserGroup(PortalUserId,GroupId,PrimaryGroup) VALUES (%s,%s,1)'; + $sql = 'REPLACE INTO '.TABLE_PREFIX.'UserGroup(PortalUserId,GroupId,PrimaryGroup) VALUES (%s,%s,1)'; $this->Conn->Query( sprintf($sql, $object->GetID(), $group_id) ); - } } @@ -170,6 +175,37 @@ } } + function checkSubscriber(&$event) + { + $object =& $event->getObject( Array('skip_autoload' => true) ); + + $items_info = $this->Application->GetVar( $event->getPrefixSpecial(true) ); + if($items_info) + { + list($id, $field_values) = each($items_info); + $user_email = $field_values['Email']; + if($user_email) + { + // check if is subscriber + $verify_user =& $this->Application->recallObject('u.verify', null, Array('skup_autoload' => true) ); + $verify_user->Load($user_email, 'Email'); + if( $verify_user->isLoaded() && $verify_user->isSubscriberOnly() ) + { + $items_info = Array( $verify_user->GetDBField('PortalUserId') => $field_values ); + $this->Application->SetVar($event->getPrefixSpecial(true), $items_info); + $this->OnUpdate($event); + if($event->status == erSUCCESS) + { + $this->OnAfterItemCreate($event); + $object->SendEmailEvents(); + if( !$this->Application->IsAdmin() && ($event->status == erSUCCESS) && $event->redirect) $this->autoLoginUser($event); + } + return true; + } + } + } + } + /** * Creates new user * @@ -179,43 +215,22 @@ { if( !$this->Application->IsAdmin() ) $this->setUserStatus($event); + $this->checkSubscriber($event); + $cs_helper =& $this->Application->recallObject('CountryStatesHelper'); $cs_helper->CheckStateField($event, 'State', 'Country'); parent::OnCreate($event); - $object =& $event->getObject(); - $this->Application->SetVar('u_id', $object->getID() ); - - - $this->Application->setUnitOption('u', 'AutoLoad', true); - - switch ($object->GetDBField('Status')){ - case 1: - $this->Application->EmailEventAdmin('USER.ADD', $object->GetID()); - $this->Application->EmailEventUser('USER.ADD', $object->GetID()); - break; - case 2: - $this->Application->EmailEventAdmin('USER.ADD.PENDING', $object->GetID()); - $this->Application->EmailEventUser('USER.ADD.PENDING', $object->GetID()); - break; - } - $this->setNextTemplate($event); if( !$this->Application->IsAdmin() && ($event->status == erSUCCESS) && $event->redirect) { + $object->SendEmailEvents(); $this->autoLoginUser($event); - - /*$object =& $event->getObject(); - if( $object->GetDBField('Status') != STATUS_ACTIVE ) - { - $next_template = $this->Application->GetVar('next_template'); - if($next_template) $event->redirect = $next_template; - }*/ } }