[TYPO3-mvc] adding files through a service: references not updated

Henjo Hoeksma me at henjohoeksma.nl
Sat Feb 26 22:16:37 CET 2011


On 2011-02-25 22:30:03 +0100, Henjo Hoeksma said:

> Hi list,
> 
> I am working on a gallery extension that reads images from a path.
> 
> I have two issues:
> 1/  The images are not uploaded to the uploads folder (hence no preview 
> images are shown in the BE) (not my biggest concern, but it would be 
> nice to have).
> 2/ References are not updated on deleting or adding this way... (this 
> leaves clutter in the db, which is of concern to me)
> 
> Hope you can provide me with some suggestions.
> 
> Service code:
> <code>
> class Tx_Gallery_Services_LoadFromPathService extends 
> Tx_Gallery_Domain_Model_Gallery {
> 
>     /**
>      * @param Tx_Gallery_Domain_Model_Gallery $gallery
>      * @return void
>      */
>     public function 
> updateImagesFromPath(Tx_Gallery_Domain_Model_Gallery $gallery) {
> 
>         // Get images from path
>         $path = $gallery->getPath();
>         $files = array();
>         if ($handle = opendir($path)) {
>             while (false !== ($file = readdir($handle))) {
>                 if ($file != "." && $file != "..") {
>                     $files[]= $file;
>                 }
>             }
>             closedir($handle);
>         }
> 
>         // Get current images from the gallery
>         $currentImages = $gallery->getImages();
>         $currentImagesArray = array();
>         foreach ($currentImages as $v) {
>             $currentImagesArray[] = $v->getFile();
>         }
> 
>         $filesToRemove = array_diff($currentImagesArray,$files);
>         $filesToAdd = array_diff($files,$currentImagesArray);
> 
>         for($i=0;count($filesToRemove)>$i;$i++){
>             foreach($currentImages as $v){
>                 if(in_array($v->getFile(),$filesToRemove)){
>                     $gallery->removeImage($v);
>                 }
>             }
>         }
> 
>         for($i=0;count($filesToAdd)>$i;$i++){
>             $image = new Tx_Gallery_Domain_Model_Image;
>             $image->setFile($filesToAdd[$i]);
>             $gallery->addImage($image);
>             unset($image);
>         }
> 
> 
>     }
> }
> </code>
> 
> Thanks for your response.

Figured out what I  missed out... I have to delete the imageobject 
itself as well...



More information about the TYPO3-project-typo3v4mvc mailing list