Index: trunk/kernel/units/users/users_event_handler.php
===================================================================
diff -u -N -r2818 -r2820
--- trunk/kernel/units/users/users_event_handler.php (.../users_event_handler.php) (revision 2818)
+++ trunk/kernel/units/users/users_event_handler.php (.../users_event_handler.php) (revision 2820)
@@ -175,10 +175,16 @@
}
}
- function checkSubscriber(&$event)
+
+ /**
+ * When creating user & user with such email exists then force to use OnUpdate insted of OnCreate
+ *
+ * @param kEvent $event
+ */
+ function OnSubstituteSubscriber(&$event)
{
+ $ret = false;
$object =& $event->getObject( Array('skip_autoload' => true) );
-
$items_info = $this->Application->GetVar( $event->getPrefixSpecial(true) );
if($items_info)
{
@@ -193,20 +199,48 @@
{
$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;
+ $ret = true;
}
}
}
+
+ if( isset($event->MasterEvent) )
+ {
+ $event->MasterEvent->setEventParam('is_subscriber_only', $ret);
+ }
+ else
+ {
+ $event->setEventParam('is_subscriber_only', $ret);
+ }
}
+
/**
+ * Enter description here...
+ *
+ * @param kEvent $event
+ * @return bool
+ */
+ function isSubscriberOnly(&$event)
+ {
+ $event->CallSubEvent('OnSubstituteSubscriber');
+ $is_subscriber = false;
+ if( $event->getEventParam('is_subscriber_only') )
+ {
+ $is_subscriber = true;
+ $object =& $event->getObject( Array('skip_autoload' => true) );
+ $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 $is_subscriber;
+ }
+
+ /**
* Creates new user
*
* @param kEvent $event
@@ -215,22 +249,23 @@
{
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);
-
- $this->Application->SetVar('u_id', $object->getID() );
- $this->Application->setUnitOption('u', 'AutoLoad', true);
-
- $this->setNextTemplate($event);
-
- if( !$this->Application->IsAdmin() && ($event->status == erSUCCESS) && $event->redirect)
+ if( !$this->isSubscriberOnly($event) )
{
- $object->SendEmailEvents();
- $this->autoLoginUser($event);
+ $cs_helper =& $this->Application->recallObject('CountryStatesHelper');
+ $cs_helper->CheckStateField($event, 'State', 'Country');
+
+ parent::OnCreate($event);
+
+ $this->Application->SetVar('u_id', $object->getID() );
+ $this->Application->setUnitOption('u', 'AutoLoad', true);
+
+ $this->setNextTemplate($event);
+
+ if( !$this->Application->IsAdmin() && ($event->status == erSUCCESS) && $event->redirect)
+ {
+ $object->SendEmailEvents();
+ $this->autoLoginUser($event);
+ }
}
}
Index: trunk/core/units/users/users_config.php
===================================================================
diff -u -N -r2385 -r2820
--- trunk/core/units/users/users_config.php (.../users_config.php) (revision 2385)
+++ trunk/core/units/users/users_config.php (.../users_config.php) (revision 2820)
@@ -7,7 +7,7 @@
'EventHandlerClass' => Array('class'=>'UsersEventHandler','file'=>'users_event_handler.php','build_event'=>'OnBuild'),
'TagProcessorClass' => Array('class'=>'UsersTagProcessor','file'=>'users_tag_processor.php','build_event'=>'OnBuild'),
'AutoLoad' => true,
- 'Hooks' => Array(
+ 'Hooks' => Array(
Array(
'Mode' => hAFTER,
'Conditional' => false,
@@ -18,6 +18,18 @@
'DoSpecial' => '',
'DoEvent' => 'OnPrepareStates',
),
+
+ Array(
+ 'Mode' => hBEFORE,
+ 'Conditional' => false,
+ 'HookToPrefix' => 'affil',
+ 'HookToSpecial' => '',
+ 'HookToEvent' => Array('OnCheckAffiliateAgreement'),
+ 'DoPrefix' => '',
+ 'DoSpecial' => '',
+ 'DoEvent' => 'OnSubstituteSubscriber',
+ ),
+
),
'QueryString' => Array(
Index: trunk/core/units/users/users_event_handler.php
===================================================================
diff -u -N -r2818 -r2820
--- trunk/core/units/users/users_event_handler.php (.../users_event_handler.php) (revision 2818)
+++ trunk/core/units/users/users_event_handler.php (.../users_event_handler.php) (revision 2820)
@@ -175,10 +175,16 @@
}
}
- function checkSubscriber(&$event)
+
+ /**
+ * When creating user & user with such email exists then force to use OnUpdate insted of OnCreate
+ *
+ * @param kEvent $event
+ */
+ function OnSubstituteSubscriber(&$event)
{
+ $ret = false;
$object =& $event->getObject( Array('skip_autoload' => true) );
-
$items_info = $this->Application->GetVar( $event->getPrefixSpecial(true) );
if($items_info)
{
@@ -193,20 +199,48 @@
{
$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;
+ $ret = true;
}
}
}
+
+ if( isset($event->MasterEvent) )
+ {
+ $event->MasterEvent->setEventParam('is_subscriber_only', $ret);
+ }
+ else
+ {
+ $event->setEventParam('is_subscriber_only', $ret);
+ }
}
+
/**
+ * Enter description here...
+ *
+ * @param kEvent $event
+ * @return bool
+ */
+ function isSubscriberOnly(&$event)
+ {
+ $event->CallSubEvent('OnSubstituteSubscriber');
+ $is_subscriber = false;
+ if( $event->getEventParam('is_subscriber_only') )
+ {
+ $is_subscriber = true;
+ $object =& $event->getObject( Array('skip_autoload' => true) );
+ $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 $is_subscriber;
+ }
+
+ /**
* Creates new user
*
* @param kEvent $event
@@ -215,22 +249,23 @@
{
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);
-
- $this->Application->SetVar('u_id', $object->getID() );
- $this->Application->setUnitOption('u', 'AutoLoad', true);
-
- $this->setNextTemplate($event);
-
- if( !$this->Application->IsAdmin() && ($event->status == erSUCCESS) && $event->redirect)
+ if( !$this->isSubscriberOnly($event) )
{
- $object->SendEmailEvents();
- $this->autoLoginUser($event);
+ $cs_helper =& $this->Application->recallObject('CountryStatesHelper');
+ $cs_helper->CheckStateField($event, 'State', 'Country');
+
+ parent::OnCreate($event);
+
+ $this->Application->SetVar('u_id', $object->getID() );
+ $this->Application->setUnitOption('u', 'AutoLoad', true);
+
+ $this->setNextTemplate($event);
+
+ if( !$this->Application->IsAdmin() && ($event->status == erSUCCESS) && $event->redirect)
+ {
+ $object->SendEmailEvents();
+ $this->autoLoginUser($event);
+ }
}
}
Index: trunk/kernel/parser.php
===================================================================
diff -u -N -r2771 -r2820
--- trunk/kernel/parser.php (.../parser.php) (revision 2771)
+++ trunk/kernel/parser.php (.../parser.php) (revision 2820)
@@ -82,6 +82,11 @@
foreach($ids as $ItemType=>$idlist)
{
$Item =& $objItemTypes->GetItem($ItemType);
+ if( !is_object($Item) )
+ {
+ if( isDebugMode() ) echo 'Item with RID ['.$ResourceId.'] has invalid relation to items with RIDS: '.print_r($idlist, true).'
';
+ continue;
+ }
$table = GetTablePrefix().$Item->Get("SourceTable");
if($ItemType!=1)
{
Index: trunk/kernel/units/users/users_config.php
===================================================================
diff -u -N -r2385 -r2820
--- trunk/kernel/units/users/users_config.php (.../users_config.php) (revision 2385)
+++ trunk/kernel/units/users/users_config.php (.../users_config.php) (revision 2820)
@@ -7,7 +7,7 @@
'EventHandlerClass' => Array('class'=>'UsersEventHandler','file'=>'users_event_handler.php','build_event'=>'OnBuild'),
'TagProcessorClass' => Array('class'=>'UsersTagProcessor','file'=>'users_tag_processor.php','build_event'=>'OnBuild'),
'AutoLoad' => true,
- 'Hooks' => Array(
+ 'Hooks' => Array(
Array(
'Mode' => hAFTER,
'Conditional' => false,
@@ -18,6 +18,18 @@
'DoSpecial' => '',
'DoEvent' => 'OnPrepareStates',
),
+
+ Array(
+ 'Mode' => hBEFORE,
+ 'Conditional' => false,
+ 'HookToPrefix' => 'affil',
+ 'HookToSpecial' => '',
+ 'HookToEvent' => Array('OnCheckAffiliateAgreement'),
+ 'DoPrefix' => '',
+ 'DoSpecial' => '',
+ 'DoEvent' => 'OnSubstituteSubscriber',
+ ),
+
),
'QueryString' => Array(