/** * Delete related images when this object is deleted * * @param Doctrine_Event $event */ public function preDelete(Doctrine_Event $event) { $object = $event->getInvoker(); // Default in documentation is that images are shared $images_shared = $this->getOption('shared_images'); if (null === $images_shared) { $images_shared = true; } // if images are shared - delete only the lookups, leave images alone for other objects to use if ($images_shared) { sfImagePoolLookupTable::getInstance()->removeImages($object); } else { $object->getPoolImages()->delete(); } }
/** * Get the number of pool images on this object * * @param Doctrine_Record $object * @param Doctrine_Query $query * @return int **/ public function getNbPoolImages(Doctrine_Record $object = null, Doctrine_Query $query = null) { $object = is_null($object) ? $this->getInvoker() : $object; if (!$object->hasMappedValue('_nb_pool_images')) { // If already have getPoolImages _images mapped then get count if ($object->hasMappedValue('_images')) { $object->mapValue('_nb_pool_images', count($object->_images->count())); } else { $image_ids = sfImagePoolLookupTable::getInstance()->getImages($object, Doctrine_Core::HYDRATE_SINGLE_SCALAR); $object->mapValue('_nb_pool_images', count($image_ids)); } } return $object->_nb_pool_images; }