Array('self' => true), ); $this->permMapping = array_merge($this->permMapping, $permissions); } /** * Enter description here... * * @param kEvent $event */ function OnApplyGiftCertificate(&$event) { $code = $this->Application->GetVar('giftcert_code'); if ($code == '') { return ; } $object =& $event->getObject(Array('skip_autoload' => true)); $object->Load($code, 'Code'); if (!$object->isLoaded()) { $event->status = kEvent::erFAIL; $this->Application->SetVar('set_checkout_error', 104); $event->redirect = false; // check!!! return ; } $expire_date = $object->GetDBField('Expiration'); $debit = $object->GetDBField('Debit'); if( $object->GetDBField('Status') != 1 || ($expire_date && $expire_date < adodb_mktime()) || ($debit <= 0)) { $event->status = kEvent::erFAIL; $this->Application->SetVar('set_checkout_error', 105); $event->redirect->false; return ; } $this->Application->setUnitOption('ord', 'AutoLoad', true); $order =& $this->Application->recallObject('ord'); $order->SetDBField('GiftCertificateId', $object->GetDBField('GiftCertificateId')); $order->Update(); $this->Application->SetVar('set_checkout_error', 110); } /** * Enter description here... * * @param kEvent $event */ function OnPreCreate(&$event) { parent::OnPreCreate($event); $object =& $event->getObject(); /* @var $object kDBItem */ $exp_date = adodb_mktime(); $default_duration = $this->Application->ConfigValue('Comm_DefaultCouponDuration'); if ($default_duration){ $exp_date += (int)$default_duration * 86400; } $object->SetDBField('Expiration_date', $exp_date); } function OnBeforeItemUpdate(&$event) { $object =& $event->getObject(); /* @var $object kDBItem */ $amount = abs($object->GetDBField('Amount')); $debit = abs($object->GetDBField('Debit')); if ($debit > $amount) { $debit = $amount; } $object->SetDBField('Amount', $amount); $object->SetDBField('Debit', $debit); if ($object->GetDBField('SendVia') == 1) { // by postal mail if ($this->Application->GetVar('email_certificate') == 0) { $object->setRequired('RecipientEmail', false); } $cs_helper =& $this->Application->recallObject('CountryStatesHelper'); /* @var $cs_helper kCountryStatesHelper */ if (!$cs_helper->CountryHasStates($object->GetDBField('RecipientCountry'))) { $object->setRequired('RecipientState', false); } $cs_helper->CheckStateField($event, 'RecipientState', 'RecipientCountry'); } else { $non_required_fields = Array ( 'RecipientState', 'RecipientCity', 'RecipientCountry', 'RecipientZipcode', 'RecipientAddress1', 'RecipientFirstname', 'RecipientLastname', ); foreach ($non_required_fields as $non_required_field) { $object->setRequired($non_required_field, false); } } } function OnBeforeItemCreate(&$event) { $this->OnBeforeItemUpdate($event); $object =& $event->getObject(); /* @var $object kDBItem */ $object->SetDBField('Debit', $object->GetDBField('Amount')); } /** * Print current gift certiicate * * @param kEvent $event */ function OnSave(&$event) { parent::OnSave($event); if ($event->status == kEvent::erSUCCESS) { $object =& $event->getObject(); /* @var $object kDBItem */ if ($this->Application->GetVar('print_certificate') == 1) { // get object id by unique field Code $sql = 'SELECT '.$object->IDField.' FROM '.$this->Application->GetLiveName($object->TableName).' WHERE Code = '.$this->Conn->qstr($object->GetDBField('Code')); $id = $this->Conn->GetOne($sql); $this->Application->StoreVar('print_certificate_id', $id); } } } /** * Email selected gift certificate * * @param kEvent $event */ function OnEmailGiftCertificate(&$event) { $ids = $this->StoreSelectedIDs($event); if (!$ids) { return ; } $object =& $event->getObject( Array ('skip_autoload' => true) ); /* @var $object kDBItem */ foreach ($ids as $id) { $object->Load($id); $send_params = Array ( 'from_email' => $this->Application->ConfigValue('Smtp_AdminMailFrom'), 'from_name' => $object->GetDBField('Purchaser'), 'to_email' => $object->GetDBField('RecipientEmail'), 'to_name' => $object->GetDBField('Recipient'), 'message' => $object->GetDBField('Message'), 'amount' => $object->GetField('Amount'), 'gifcert_id' => $object->GetDBField('Code'), ); $this->Application->EmailEventUser('USER.GIFTCERTIFICATE', null, $send_params); $this->Application->EmailEventAdmin('USER.GIFTCERTIFICATE', null, $send_params); } $this->clearSelectedIDs($event); } }