Index: branches/5.2.x/units/products/products_event_handler.php =================================================================== diff -u -N -r15053 -r15061 --- branches/5.2.x/units/products/products_event_handler.php (.../products_event_handler.php) (revision 15053) +++ branches/5.2.x/units/products/products_event_handler.php (.../products_event_handler.php) (revision 15061) @@ -1,6 +1,6 @@ CallSubEvent('OnPreSave'); $this->LoadItem($event); @@ -676,36 +680,34 @@ */ function OnRateProduct(&$event) { - $event->setRedirectParams(Array('pass' => 'all,p'), true); + $event->SetRedirectParam('pass', 'all,p'); $event->redirect = $this->Application->GetVar('success_template'); $object =& $event->getObject(); /* @var $object kDBItem */ $user_id = $this->Application->RecallVar('user_id'); - $sql = ' SELECT * FROM '.TABLE_PREFIX.'SpamControl - WHERE ItemResourceId='.$object->GetDBField('ResourceId').' - AND IPaddress="'.$_SERVER['REMOTE_ADDR'].'" - AND PortalUserId='.$user_id.' + $sql = ' SELECT * FROM ' . TABLE_PREFIX . 'SpamControl + WHERE ItemResourceId=' . $object->GetDBField('ResourceId') . ' + AND IPaddress="' . $_SERVER['REMOTE_ADDR'] . '" + AND PortalUserId=' . $user_id . ' AND DataType="Rating"'; $res = $this->Conn->GetRow($sql); - if( $res && $res['Expire'] < adodb_mktime() ) - { - $sql = ' DELETE FROM '.TABLE_PREFIX.'SpamControl - WHERE ItemResourceId='.$object->GetDBField('ResourceId').' - AND IPaddress="'.$_SERVER['REMOTE_ADDR'].'" - AND PortalUserId='.$user_id.' + if ( $res && $res['Expire'] < adodb_mktime() ) { + $sql = ' DELETE FROM ' . TABLE_PREFIX . 'SpamControl + WHERE ItemResourceId=' . $object->GetDBField('ResourceId') . ' + AND IPaddress="' . $_SERVER['REMOTE_ADDR'] . '" + AND PortalUserId=' . $user_id . ' AND DataType="Rating"'; $this->Conn->Query($sql); unset($res); } $new_rating = $this->Application->GetVar('rating'); - if($new_rating !== false && !$res) - { + if ( $new_rating !== false && !$res ) { $rating = $object->GetDBField('CachedRating'); $votes = $object->GetDBField('CachedVotesQty'); $new_votes = $votes + 1; @@ -716,19 +718,18 @@ $object->Update(); $expire = adodb_mktime() + $this->Application->ConfigValue('product_ReviewDelay_Value') * $this->Application->ConfigValue('product_ReviewDelay_Interval'); - $sql = ' INSERT INTO '.TABLE_PREFIX.'SpamControl + $sql = ' INSERT INTO ' . TABLE_PREFIX . 'SpamControl (ItemResourceId, IPaddress, PortalUserId, DataType, Expire) - VALUES ('.$object->GetDBField('ResourceId').', - "'.$_SERVER['REMOTE_ADDR'].'", - '.$user_id.', + VALUES (' . $object->GetDBField('ResourceId') . ', + "' . $_SERVER['REMOTE_ADDR'] . '", + ' . $user_id . ', "Rating", - '.$expire.')'; + ' . $expire . ')'; $this->Conn->Query($sql); } - else - { + else { $event->status == kEvent::erFAIL; - $event->redirect=false; + $event->redirect = false; $object->SetError('CachedRating', 'too_frequent', 'lu_ferror_rate_duplicate'); } } @@ -740,7 +741,7 @@ */ function OnCancelAction(&$event) { - $event->setRedirectParams(Array('pass' => 'all,p'), true); + $event->SetRedirectParam('pass', 'all,p'); $event->redirect = $this->Application->GetVar('cancel_template'); } @@ -774,12 +775,12 @@ $email_event = &$this->Application->EmailEventAdmin('PRODUCT.SUGGEST'); if ($email_event->status == kEvent::erSUCCESS){ - $event->setRedirectParams(Array('opener' => 's', 'pass' => 'all'), true); + $event->setRedirectParams(Array('opener' => 's', 'pass' => 'all')); $event->redirect = $this->Application->GetVar('template_success'); } else { -// $event->setRedirectParams(Array('opener' => 's', 'pass' => 'all'), true); -// $event->redirect = $this->Application->GetVar('template_fail'); +// $event->setRedirectParams(Array('opener' => 's', 'pass' => 'all')); +// $event->redirect = $this->Application->GetVar('template_fail'); $object->SetError('Email', 'send_error', 'lu_email_send_error'); $event->status = kEvent::erFAIL; @@ -985,7 +986,7 @@ * @return void * @access protected */ - protected function OnPreSave(&$event) + protected function OnPreSave(kEvent &$event) { $this->CheckRequiredOptions($event); @@ -999,7 +1000,7 @@ * @return void * @access protected */ - protected function OnAfterItemCreate(&$event) + protected function OnAfterItemCreate(kEvent &$event) { parent::OnAfterItemCreate($event); @@ -1010,8 +1011,10 @@ * Set new price to ProductsPricing * * @param kEvent $event + * @return void + * @access protected */ - function OnAfterItemUpdate(&$event) + protected function OnAfterItemUpdate(kEvent &$event) { parent::OnAfterItemUpdate($event); @@ -1093,19 +1096,24 @@ } /** - * Enter description here... + * Occurs after deleting item, id of deleted item + * is stored as 'id' param of event * * @param kEvent $event + * @return void + * @access protected */ - function OnAfterItemDelete(&$event) + protected function OnAfterItemDelete(kEvent &$event) { + parent::OnAfterItemDelete($event); + $product_id = $event->getEventParam('id'); - if(!$product_id) - { + if ( !$product_id ) { return; } - $sql = 'DELETE FROM '.TABLE_PREFIX.'UserFileAccess - WHERE ProductId = '.$product_id; + + $sql = 'DELETE FROM ' . TABLE_PREFIX . 'UserFileAccess + WHERE ProductId = ' . $product_id; $this->Conn->Query($sql); } @@ -1122,7 +1130,7 @@ * @return void * @access protected */ - protected function OnAfterItemLoad(&$event) + protected function OnAfterItemLoad(kEvent &$event) { parent::OnAfterItemLoad($event); @@ -1267,7 +1275,7 @@ { //$event->CallSubEvent('OnUpdate'); $event->redirect = false; - //$event->setRedirectParams(Array('opener'=>'s','pass'=>'all,p'), true); + //$event->setRedirectParams(Array ('opener' => 's', 'pass' => 'all,p')); } /** @@ -1303,18 +1311,27 @@ } /** - * Enter description here... + * Occurs before deleting item, id of item being + * deleted is stored as 'id' event param * * @param kEvent $event + * @return void + * @access protected */ + protected function OnBeforeItemDelete(kEvent &$event) + { + parent::OnBeforeItemDelete($event); + + $object =& $event->getObject(); + /* @var $object kDBItem */ - function OnBeforeItemDelete(&$event){ + $sql = 'SELECT COUNT(*) + FROM ' . TABLE_PREFIX . 'Products + WHERE PackageContent LIKE "%|' . $object->GetID() . '%"'; + $product_includes_in = $this->Conn->GetOne($sql); - $object = &$event->getObject(); - - $product_includes_in = $this->Conn->GetOne('SELECT COUNT(*) FROM '.TABLE_PREFIX.'Products WHERE PackageContent LIKE "%|'.$object->GetID().'%"'); - if ($product_includes_in > 0){ - $event->status=kEvent::erFAIL; + if ( $product_includes_in > 0 ) { + $event->status = kEvent::erFAIL; } } @@ -1323,14 +1340,17 @@ * * @param kEvent $event * @return Array + * @access protected */ - function getCustomExportColumns(&$event) + public function getCustomExportColumns(kEvent &$event) { $columns = parent::getCustomExportColumns($event); - $new_columns = Array( + + $new_columns = Array ( '__VIRTUAL__Price' => 'Price', '__VIRTUAL__Cost' => 'Cost', ); + return array_merge($columns, $new_columns); } @@ -1352,15 +1372,15 @@ function OnPreSaveAndOpenPopup(&$event) { $object =& $event->getObject(); + /* @var $object kDBItem */ + $this->RemoveRequiredFields($object); $event->CallSubEvent('OnPreSave'); $event->redirect = $this->Application->GetVar('t'); // pass ID too, in case if product is created by OnPreSave call to ensure proper editing - $event->setRedirectParams( Array( - 'pass' => 'all', - $event->getPrefixSpecial(true).'_id' => $object->GetID(), - ), true); + $event->SetRedirectParam('pass', 'all'); + $event->SetRedirectParam($event->getPrefixSpecial(true) . '_id', $object->GetID()); } @@ -1438,10 +1458,13 @@ * Starts product editing, remove any pending inventory actions * * @param kEvent $event + * @return void + * @access protected */ - function OnEdit(&$event) + protected function OnEdit(kEvent &$event) { $this->Application->RemoveVar('inventory_actions'); + parent::OnEdit($event); } @@ -1461,12 +1484,14 @@ * [HOOK] Allows to add cloned subitem to given prefix * * @param kEvent $event + * @return void + * @access protected */ - function OnCloneSubItem(&$event) + protected function OnCloneSubItem(kEvent &$event) { parent::OnCloneSubItem($event); - if ($event->MasterEvent->Prefix == 'rev') { + if ( $event->MasterEvent->Prefix == 'rev' ) { $clones = $this->Application->getUnitOption($event->MasterEvent->Prefix, 'Clones'); $subitem_prefix = $event->Prefix . '-' . $event->MasterEvent->Prefix;