Index: branches/5.2.x/units/coupons/coupons_event_handler.php =================================================================== diff -u -N -r14625 -r14641 --- branches/5.2.x/units/coupons/coupons_event_handler.php (.../coupons_event_handler.php) (revision 14625) +++ branches/5.2.x/units/coupons/coupons_event_handler.php (.../coupons_event_handler.php) (revision 14641) @@ -1,6 +1,6 @@ getObject(); /* @var $object kDBItem */ - + $this->SetNewCode($object); - + $object->SetDBField('LastUsedBy', NULL); $object->SetDBField('LastUsedOn', NULL); $object->SetDBField('NumberOfUses', NULL); - + $expiration = $this->Application->GetVar('clone_coupon_expiration'); $object->SetDBField('Expiration_date', $expiration); $object->SetDBField('Expiration_time', $expiration); } - + function OnApplyClone(&$event) - { + { if ($this->Application->CheckPermission('SYSTEM_ACCESS.READONLY', 1)) { $event->status = kEvent::erFAIL; return; } - + $object =& $event->getObject( Array ('skip_autoload' => true) ); /* @var $object kDBItem */ @@ -106,23 +106,30 @@ $event->status = kEvent::erFAIL; return ; } - + $temp =& $this->Application->recallObject($event->getPrefixSpecial().'_TempHandler', 'kTempTablesHandler'); /* @var $temp kTempTablesHandler */ - + $original_coupon_ids = $this->getSelectedIDs($event, true); $clone_count = $object->GetDBField('CouponCount'); - $this->Application->StoreVar('CoupLastCloneCount', $clone_count); + $this->Application->StoreVar('CoupLastCloneCount', $clone_count); $this->Application->SetVar('clone_coupon_expiration', $object->GetDBField('DefaultExpiration')); - + for ($i = 0; $i < $clone_count; $i++) { $temp->CloneItems($event->Prefix, $event->Special, $original_coupon_ids); } - $this->finalizePopup($event); + $event->SetRedirectParam('opener', 'u'); } - function setCloningRequired(&$object) + /** + * Sets fields required during coupon cloning + * + * @param kDBItem $object + * @return void + * @access protected + */ + protected function setCloningRequired(&$object) { $this->RemoveRequiredFields($object); $object->setRequired('CouponCount'); @@ -132,7 +139,7 @@ function SetNewCode(&$item) { do{ - $new_code = $this->RandomCouponCode(10); + $new_code = $this->RandomCouponCode(); $exists = $this->Conn->GetOne('SELECT COUNT(*) FROM '.TABLE_PREFIX.'ProductsCoupons WHERE Code='.$this->Conn->qstr($new_code)); if ($exists){ $new_code = false; @@ -142,74 +149,16 @@ $item->SetDBField('Code', $new_code); } - function RandomCouponCode($size) + function RandomCouponCode() { - $rand_code = ""; - for ($i=0; $i<10; $i++){ - $is_letter = rand(0,1); - if ($is_letter){ - $rand_char = chr(rand(65,90)); - }else{ - $rand_char = rand(0,9); - } - $rand_code .= $rand_char; - } - return $rand_code; - } + $rand_code = ''; - /** - * Enter description here... - * - * @param kEvent $event - */ - function OnApplyCoupon(&$event) - { - $code = $this->Application->GetVar('coupon_code'); - if ($code == '') { - return ; + for ($i = 0; $i < 10; $i++) { + $is_letter = rand(0, 1); + $rand_code .= ($is_letter ? chr(rand(65, 90)) : rand(0, 9)); } - $object =& $event->getObject(Array('skip_autoload' => true)); - $object->Load($code, 'Code'); - - if (!$object->isLoaded()) { - $event->status = kEvent::erFAIL; - $this->Application->SetVar('set_checkout_error', 4); - $event->redirect = false; // check!!! - return ; - } - - $expire_date = $object->GetDBField('Expiration'); - $number_of_use = $object->GetDBField('NumberOfUses'); - if( $object->GetDBField('Status') != 1 || ($expire_date && $expire_date < adodb_mktime()) || - (isset($number_of_use) && $number_of_use <= 0)) - { - $event->status = kEvent::erFAIL; - $this->Application->SetVar('set_checkout_error', 5); - $event->redirect->false; - return ; - } - - $last_used = adodb_mktime(); - $object->SetDBField('LastUsedBy', $this->Application->RecallVar('user_id')); - $object->SetDBField('LastUsedOn_date', $last_used); - $object->SetDBField('LastUsedOn_time', $last_used); - if(isset($number_of_use)) - { - $object->SetDBField('NumberOfUses', $number_of_use - 1); - if($number_of_use == 1) - { - $object->SetDBField('Status', 2); - } - } - $object->Update(); - - $this->Application->setUnitOption('ord', 'AutoLoad', true); - $order =& $this->Application->recallObject('ord'); - $order->SetDBField('CouponId', $object->GetDBField('CouponId')); - $order->Update(); - - $this->Application->SetVar('set_checkout_error', 10); + return $rand_code; } /**