Index: trunk/kernel/units/images/image_event_handler.php =================================================================== diff -u -N -r4303 -r6625 --- trunk/kernel/units/images/image_event_handler.php (.../image_event_handler.php) (revision 4303) +++ trunk/kernel/units/images/image_event_handler.php (.../image_event_handler.php) (revision 6625) @@ -1,44 +1,44 @@ 'ImageAction', 'OnBeforeDeleteFromLive'=>'ImageAction', 'OnBeforeCopyToLive'=>'ImageAction', 'OnBeforeItemDelete'=>'ImageAction', 'OnAfterClone'=>'ImageAction', ); - + $this->eventMethods = array_merge($this->eventMethods, $image_events); } - + function customProcessing(&$event, $type) { $object =& $event->GetObject(); switch ($type) { - case 'before' : + case 'before' : if ($object->GetDBField('LocalImage')) { $object->SetDBField('Url', ''); } - else + else { $object->SetDBField('LocalPath', ''); } - - if ($object->GetDBField('LocalThumb')) + + if ($object->GetDBField('LocalThumb')) { $object->SetDBField('ThumbUrl', ''); } - else + else { $object->SetDBField('ThumbPath', ''); } - + if ($object->GetDBField('SameImages')) { $object->SetDBField('LocalImage', 1); @@ -53,12 +53,12 @@ $object->GetDBField('ResourceId').' AND ImageId<>'. $object->GetId(); $res = $this->Conn->Query($sql); - } + } break; default: } } - + function ImageAction(&$event) { $id = $event->getEventParam('id'); @@ -72,26 +72,26 @@ else { $object->SwitchToTemp(); } - + $object->Load($id); - + $fields = Array('LocalPath' => 'LocalImage', 'ThumbPath' => 'LocalThumb'); foreach ($fields as $a_field => $mode_field) { $file = $object->GetField($a_field); if (!$file) continue; $source_file = FULL_PATH.$file; - + switch ($event->Name) { // Copy image files to pending dir and update corresponding fields in temp record // Checking for existing files and renaming if nessessary - two users may upload same pending files at the same time! - case 'OnAfterCopyToTemp': + case 'OnAfterCopyToTemp': $new_file = IMAGES_PENDING_PATH . $this->ValidateFileName(FULL_PATH.IMAGES_PENDING_PATH, basename($file)); - $dest_file = FULL_PATH.$new_file; + $dest_file = FULL_PATH.$new_file; copy($source_file, $dest_file); $object->Fields[$a_field]['skip_empty'] = false; $object->SetDBField($a_field, $new_file); break; - + // Copy image files to live dir (checking if fileexists and renameing if nessessary) // and update corresponding fields in temp record (which gets copied to live automatically) case 'OnBeforeCopyToLive': @@ -108,12 +108,12 @@ $object->Fields[$a_field]['skip_empty'] = false; $object->SetDBField($a_field, $new_file); break; - + case 'OnBeforeDeleteFromLive': // Delete image files from live folder before copying over from temp case 'OnBeforeItemDelete': // Delete image files when deleteing Image object - @unlink(FULL_PATH.$file); + @unlink(FULL_PATH.$file); break; - + case 'OnAfterClone': // Copy files when cloning objects, renaming it on the fly $path_info = pathinfo($file); $new_file = $path_info['dirname'].'/'.$this->ValidateFileName(FULL_PATH.$path_info['dirname'], $path_info['basename']); @@ -128,25 +128,25 @@ $object->Update(null, true); } } - + function ValidateFileName($path, $name) { $parts = pathinfo($name); $ext = '.'.$parts['extension']; $filename = substr($parts['basename'], 0, -strlen($ext)); $new_name = $filename.$ext; - while ( file_exists($path.'/'.$new_name) ) + while ( file_exists($path.'/'.$new_name) ) { if ( preg_match("/({$filename}_)([0-9]*)($ext)/", $new_name, $regs) ) { $new_name = $regs[1].($regs[2]+1).$regs[3]; } else { $new_name = $filename.'_1'.$ext; } - } - return $new_name; + } + return $new_name; } - + /** * Enter description here... * @@ -158,7 +158,7 @@ $object->SetDBField('DefaultImg', 1); $object->Update(); } - + /** * Enter description here... * @@ -177,22 +177,22 @@ } if($object->GetDBField('DefaultImg') && $object->Validate()) { - + $sql = 'UPDATE '.$object->TableName.' SET DefaultImg = 0 WHERE ResourceId = '.$id.' AND ImageId <> '.$object->GetDBField('ImageId'); $this->Conn->Query($sql); $object->SetDBField('Enabled', 1); } } - + function OnAfterItemCreate(&$event) { $event->CallSubEvent('OnBeforeItemUpdate'); $object =& $event->getObject(); $object->Update(); - } - + } + /** * Deletes all selected items. * Automatically recurse into sub-items using temp handler, and deletes sub-items @@ -203,15 +203,15 @@ function OnMassDelete(&$event) { $event->status=erSUCCESS; - + $temp =& $this->Application->recallObject($event->getPrefixSpecial().'_TempHandler', 'kTempTablesHandler'); - + $this->StoreSelectedIDs($event); - + $event->setEventParam('ids', $this->getSelectedIDs($event) ); $this->customProcessing($event, 'before'); $ids = $event->getEventParam('ids'); - + $object =& $event->getObject(); $sql = 'SELECT ImageId FROM '.$object->TableName.' WHERE DefaultImg=1'; $primary = $this->Conn->GetOne($sql); @@ -224,18 +224,18 @@ unset($ids[$key]); } } - + if($ids) { $temp->DeleteItems($event->Prefix, $event->Special, $ids); } $this->clearSelectedIDs($event); } - + /*function OnAfterItemLoad(&$event) { $object =& $event->getObject(); - + if ( $object->GetDBField('ThumbPath') || $object->GetDBField('SameImages') ) { // return local image or url @@ -246,24 +246,24 @@ $path = $object->GetDBField('LocalImage') ? PROTOCOL.SERVER_NAME.BASE_PATH.$object->GetDBField('LocalPath') : $object->GetDBField('Url'); if ( $object->GetDBField('LocalImage') && !file_exists(FULL_PATH.$object->GetDBField('LocalPath')) ) $path = ''; } - + $object->SetDBField('ImageUrl', $path); }*/ - + function SetCustomQuery(&$event) { parent::SetCustomQuery($event); - + $types=$event->getEventParam('types'); $except_types=$event->getEventParam('except'); $object =& $event->getObject(); $type_clauses = Array(); - + if( !$this->Application->IsAdmin() ) { $object->addFilter('active', '%1$s.Enabled = 1'); } - + if($product_id = $event->getEventParam('product_id')) { $object->removeFilter('parent_filter'); @@ -272,27 +272,27 @@ $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); - + $excepts_and_filter =& $this->Application->makeClass('kMultipleFilter'); $excepts_and_filter->setType(FLT_TYPE_AND); $includes_or_filter_h =& $this->Application->makeClass('kMultipleFilter'); $includes_or_filter_h->setType(FLT_TYPE_OR); - + $excepts_and_filter_h =& $this->Application->makeClass('kMultipleFilter'); $excepts_and_filter_h->setType(FLT_TYPE_AND); $except_types_array=explode(',', $types); - + if ($types){ $types_array=explode(',', $types); for ($i=0; $iaddFilter('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); }