Index: branches/5.2.x/core/units/images/image_event_handler.php =================================================================== diff -u -N -r13840 -r14095 --- branches/5.2.x/core/units/images/image_event_handler.php (.../image_event_handler.php) (revision 13840) +++ branches/5.2.x/core/units/images/image_event_handler.php (.../image_event_handler.php) (revision 14095) @@ -1,6 +1,6 @@ getEventParam('id'); + $object =& $this->Application->recallObject($event->Prefix.'.-item', $event->Prefix, Array ('skip_autoload' => true)); + /* @var $object kDBItem */ + if (in_array($event->Name, Array('OnBeforeDeleteFromLive','OnAfterClone')) ) { $object->SwitchToLive(); } @@ -132,7 +135,7 @@ $new_file = IMAGES_PENDING_PATH . $this->ValidateFileName(FULL_PATH.IMAGES_PENDING_PATH, basename($file)); $dest_file = FULL_PATH.$new_file; copy($source_file, $dest_file); - $object->Fields[$a_field]['skip_empty'] = false; + $object->SetFieldOption($a_field, 'skip_empty', false); $object->SetDBField($a_field, $new_file); break; @@ -149,7 +152,7 @@ if (file_exists($source_file)) @unlink($source_file); $new_file = ''; } - $object->Fields[$a_field]['skip_empty'] = false; + $object->SetFieldOption($a_field, 'skip_empty', false); $object->SetDBField($a_field, $new_file); break; @@ -163,7 +166,7 @@ $new_file = $path_info['dirname'].'/'.$this->ValidateFileName(FULL_PATH.$path_info['dirname'], $path_info['basename']); $dest_file = FULL_PATH . $new_file; copy($source_file, $dest_file); - $object->Fields[$a_field]['skip_empty'] = false; + $object->SetFieldOption($a_field, 'skip_empty', false); $object->SetDBField($a_field, $new_file); break; } @@ -247,11 +250,11 @@ function OnMassDelete(&$event) { if ($this->Application->CheckPermission('SYSTEM_ACCESS.READONLY', 1)) { - $event->status = erFAIL; + $event->status = kEvent::erFAIL; return; } - $event->status=erSUCCESS; + $event->status=kEvent::erSUCCESS; $temp =& $this->Application->recallObject($event->getPrefixSpecial().'_TempHandler', 'kTempTablesHandler'); @@ -301,81 +304,53 @@ { parent::SetCustomQuery($event); - $types=$event->getEventParam('types'); - $except_types=$event->getEventParam('except'); $object =& $event->getObject(); - $type_clauses = Array(); + /* @var $object kDBList */ if (!$this->Application->isAdminUser) { $object->addFilter('active', '%1$s.Enabled = 1'); } - if($product_id = $event->getEventParam('product_id')) - { + $product_id = $event->getEventParam('product_id'); + + if ($product_id) { $object->removeFilter('parent_filter'); - $sql = 'SELECT ResourceId FROM '.$this->Application->getUnitOption('p', 'TableName').' + + $sql = 'SELECT ResourceId + FROM '.$this->Application->getUnitOption('p', 'TableName').' WHERE ProductId = '.$product_id; $resource_id = (int) $this->Conn->GetOne($sql); + $object->addFilter('product_images', '%1$s.ResourceId = '.$resource_id); } - $type_clauses['additional']['include'] = '%1$s.DefaultImg != 1'; - $type_clauses['additional']['except'] = '%1$s.DefaultImg = 1'; - $type_clauses['additional']['having_filter'] = false; - /********************************************/ - $includes_or_filter =& $this->Application->makeClass('kMultipleFilter'); - $includes_or_filter->setType(FLT_TYPE_OR); + $search_helper =& $this->Application->recallObject('SearchHelper'); + /* @var $search_helper kSearchHelper */ - $excepts_and_filter =& $this->Application->makeClass('kMultipleFilter'); - $excepts_and_filter->setType(FLT_TYPE_AND); + $types = $event->getEventParam('types'); + $except_types = $event->getEventParam('except'); + $type_clauses = $this->getTypeClauses($event); - $includes_or_filter_h =& $this->Application->makeClass('kMultipleFilter'); - $includes_or_filter_h->setType(FLT_TYPE_OR); + $search_helper->SetComplexFilter($event, $type_clauses, $types, $except_types); + } - $excepts_and_filter_h =& $this->Application->makeClass('kMultipleFilter'); - $excepts_and_filter_h->setType(FLT_TYPE_AND); + /** + * Return type clauses for list bulding on front + * + * @param kEvent $event + * @return Array + */ + function getTypeClauses(&$event) + { + $type_clauses = Array (); - $except_types_array=explode(',', $types); + $type_clauses['additional']['include'] = '%1$s.DefaultImg != 1'; + $type_clauses['additional']['except'] = '%1$s.DefaultImg = 1'; + $type_clauses['additional']['having_filter'] = false; - if ($types){ - $types_array=explode(',', $types); - for ($i=0; $iremoveFilter('filter_'.$type); - $includes_or_filter_h->addFilter('filter_'.$type, $type_clauses[$type]['include']); - }else{ - $includes_or_filter->removeFilter('filter_'.$type); - $includes_or_filter->addFilter('filter_'.$type, $type_clauses[$type]['include']); - } - } - } - } - - if ($except_types){ - $except_types_array=explode(',', $except_types); - for ($i=0; $iremoveFilter('filter_'.$type); - $excepts_and_filter_h->addFilter('filter_'.$type, $type_clauses[$type]['except']); - }else{ - $excepts_and_filter->removeFilter('filter_'.$type); - $excepts_and_filter->addFilter('filter_'.$type, $type_clauses[$type]['except']); - } - } - } - } - - $object->addFilter('includes_filter', $includes_or_filter); - $object->addFilter('excepts_filter', $excepts_and_filter); - - $object->addFilter('includes_filter_h', $includes_or_filter_h, HAVING_FILTER); - $object->addFilter('excepts_filter_h', $excepts_and_filter_h, HAVING_FILTER); + return $type_clauses; } /**