[pLog-svn] r4385 - in plog/branches/lifetype-1.2-resource-test: class/action class/file class/gallery/dao class/gallery/resizers class/net class/view templates/admin

Oscar Renalias oscar at renalias.net
Mon Dec 11 23:32:52 GMT 2006


There is one thing that I forgot to mention, and it's that you will  
have to manually rename all files that have already been uploaded to  
their "real" names (the value of the file_name field from the  
lt_gallery_resources table) When LT 1.2 is out this will be taken  
care of by wizard.php but right now it'll have to be a manual process.

Oscar

On 12 Dec 2006, at 00:44, Oscar Renalias wrote:

> I think merging this into a 1.1.x should be pretty straightforward,  
> as all the changes are pretty much self-contained.
>
> Just bear in mind the issue I'm currently having with file names  
> that use non-latin characters such as umlauts and accent, as they  
> are not working. For what it's worth, they don't work at  
> wordpress.com either using their upload system (not that it makes  
> me happy that they are having problems too, but at least we're not  
> the only ones...)
>
> On 12 Dec 2006, at 00:40, Jon Daley wrote:
>
>> 	That sounds good.  What do you think the chances are of this  
>> patch applying correctly to a 1.1.3 install?
>>
>> On Mon, 11 Dec 2006, oscar at devel.lifetype.net wrote:
>>
>>> Author: oscar
>>> Date: 2006-12-11 21:52:47 +0000 (Mon, 11 Dec 2006)
>>> New Revision: 4385
>>>
>>> Removed:
>>>   plog/branches/lifetype-1.2-resource-test/class/view/ 
>>> resourceserverview.class.php
>>> Modified:
>>>   plog/branches/lifetype-1.2-resource-test/class/action/ 
>>> resourceserveraction.class.php
>>>   plog/branches/lifetype-1.2-resource-test/class/file/ 
>>> fileupload.class.php
>>>   plog/branches/lifetype-1.2-resource-test/class/gallery/dao/ 
>>> galleryresource.class.php
>>>   plog/branches/lifetype-1.2-resource-test/class/gallery/dao/ 
>>> galleryresources.class.php
>>>   plog/branches/lifetype-1.2-resource-test/class/gallery/dao/ 
>>> galleryresourcestorage.class.php
>>>   plog/branches/lifetype-1.2-resource-test/class/gallery/resizers/ 
>>> gallerythumbnailgenerator.class.php
>>>   plog/branches/lifetype-1.2-resource-test/class/net/ 
>>> baserequestgenerator.class.php
>>>   plog/branches/lifetype-1.2-resource-test/class/net/ 
>>> customrequestgenerator.class.php
>>>   plog/branches/lifetype-1.2-resource-test/class/net/ 
>>> prettyrequestgenerator.class.php
>>>   plog/branches/lifetype-1.2-resource-test/class/net/ 
>>> rawrequestgenerator.class.php
>>>   plog/branches/lifetype-1.2-resource-test/class/view/ 
>>> redirectview.class.php
>>>   plog/branches/lifetype-1.2-resource-test/templates/admin/ 
>>> globalsettings_url.template
>>> Log:
>>> Just finished implementing experimental support for resources, so  
>>> that files are now uploaded with their "real" name to the gallery/ 
>>> X/ folder and accessed directly via the resource server.
>>>
>>> URLs to files and previews now look like http://www.host.com/ 
>>> gallery/X/file.jpg, http://www.host.com/gallery/X/preview/ 
>>> file.jpg and so on. Albums remain for organizational purposes but  
>>> their structure is not mapped to folders in disk.
>>>
>>> Backward compatibility with older URLs is achieved by means of an  
>>> HTTP redirect from for example resserver.php? 
>>> blogId=1&resource=file.jpg to the new URL format. This should  
>>> ensure a smooth transition from the old system to the new one as  
>>> long as things like resource_download_link are not modified (they  
>>> are marked as non-editable in "general settings"->"URL")
>>>
>>> This feature needs a bit more testing specially regarding files  
>>> with non-latin characters, but otherwise it works pretty well.  
>>> Letting the web server serve these files is obviously a lot  
>>> faster than doing it via resserver.php, so this should eliminate  
>>> all the complaints regarding resserver's hunger for server  
>>> resources... I'd like to hear your opinion, specially from those  
>>> of you running bigger servers.
>>>
>>>
>>> Modified: plog/branches/lifetype-1.2-resource-test/class/action/ 
>>> resourceserveraction.class.php
>>> ===================================================================
>>> --- plog/branches/lifetype-1.2-resource-test/class/action/ 
>>> resourceserveraction.class.php	2006-12-11 21:50:45 UTC (rev 4384)
>>> +++ plog/branches/lifetype-1.2-resource-test/class/action/ 
>>> resourceserveraction.class.php	2006-12-11 21:52:47 UTC (rev 4385)
>>> @@ -1,13 +1,17 @@
>>> <?php
>>>
>>> +	// the three different modes that a resource can be requested
>>> +	define( 'RESOURCE_VIEW_MODE_DEFAULT', '' );
>>> +	define( 'RESOURCE_VIEW_MODE_PREVIEW', 'preview' );
>>> +	define( 'RESOURCE_VIEW_MODE_MEDIUM', 'medium' );
>>> +
>>>     lt_include( PLOG_CLASS_PATH."class/action/action.class.php" );
>>>     lt_include( PLOG_CLASS_PATH."class/config/config.class.php" );
>>> -    lt_include( PLOG_CLASS_PATH."class/view/ 
>>> resourceserverview.class.php" );
>>> +    lt_include( PLOG_CLASS_PATH."class/view/ 
>>> redirectview.class.php" );
>>>     lt_include( PLOG_CLASS_PATH."class/net/http/ 
>>> subdomains.class.php" );
>>>     lt_include( PLOG_CLASS_PATH."class/dao/blogs.class.php" );
>>>     lt_include( PLOG_CLASS_PATH."class/gallery/dao/ 
>>> galleryresources.class.php" );
>>>     lt_include( PLOG_CLASS_PATH."class/security/ 
>>> pipeline.class.php" );
>>> -    lt_include( PLOG_CLASS_PATH."class/plugin/ 
>>> pluginmanager.class.php" );
>>> 	lt_include( PLOG_CLASS_PATH."class/data/validator/ 
>>> stringvalidator.class.php" );
>>> 	lt_include( PLOG_CLASS_PATH."class/data/validator/ 
>>> integervalidator.class.php" );
>>>
>>> @@ -45,7 +49,7 @@
>>>
>>> 			// since this class does not return HTML code but files, we  
>>> cannot
>>> 			// return HTML so let's return 404 status code with a custom  
>>> error message
>>> -			$view = new ResourceServerView();
>>> +			$view = new View();
>>> 			$view->addHeaderResponse( "HTTP/1.1 404 Not Found" );
>>> 			$view->addHeaderResponse( "Status: 404 Not Found" );
>>> 			$view->addHeaderResponse( "X-LifeType-Error: Invalid  
>>> parameters" );
>>> @@ -127,7 +131,7 @@
>>> 			$this->_getBlogInfo();
>>> 			if( $this->_blogInfo == false ) {
>>> 				// return 404 not found because the blog id is not correct!
>>> -				$this->_view = new ResourceServerView();
>>> +				$this->_view = new View();
>>> 				$this->_view->addHeaderResponse( "HTTP/1.1 404 Not Found" );
>>> 				$this->_view->addHeaderResponse( "Status: 404 Not Found" );
>>> 				$this->_view->addHeaderResponse( "X-LifeType-Error: Blog  
>>> $resId is not correct" );
>>> @@ -135,28 +139,6 @@
>>> 				return false;
>>> 			}
>>>
>>> -			//
>>> -            // security stuff
>>> -			//
>>> -			// :KLUDGE: the problem with the security Pipeline and the  
>>> PluginManager in this
>>> -			// action is that we need to reimplement the whole stuff  
>>> because... this action does not
>>> -			// inherit from BlogAction and therefore nobody is doing  
>>> these things for us! I don't really
>>> -			// like to do it like this but while I think of a better way,  
>>> let's leave like it
>>> -			//
>>> -            $pipeline = new Pipeline( $this->_request, $this- 
>>> >_blogInfo );
>>> -            $result = $pipeline->process();
>>> -
>>> -            // if the pipeline blocked the request, then we have  
>>> to let the user know and quit
>>> -			// processing
>>> -            if( !$result->isValid()) {
>>> -				$this->_view = new ResourceServerView();
>>> -				$this->_view->addHeaderResponse( "HTTP/1.1 403 Forbidden" );
>>> -				$this->_view->addHeaderResponse( "Status: 403 Forbidden" );
>>> -				$this->_view->addHeaderResponse( "X-LifeType-Error: Access  
>>> is blocked" );
>>> -
>>> -				return false;
>>> -            }
>>> -
>>> 			// now if the blog id was correct, then we can proceed to get  
>>> the rest of the parameters
>>> 			$this->_resName = $this->_request->getValue( "resource" );
>>> 			$this->_resId = $this->_request->getValue( "resId" );
>>> @@ -172,7 +154,7 @@
>>> 					$albums = new GalleryAlbums();
>>> 					$album = $albums->getAlbumByName( $this->_albumName );
>>> 					if( !$album ) {
>>> -						$this->_view = new ResourceServerView();
>>> +						$this->_view = new View();
>>> 						$this->_view->addHeaderResponse( "HTTP/1.1 404 Not Found" );
>>> 						$this->_view->addHeaderResponse( "Status: 404 Not Found" );
>>> 						$this->_view->addHeaderResponse( "X-LifeType-Error: Album  
>>> $albumId not found" );
>>> @@ -185,29 +167,8 @@
>>> 			return true;
>>> 		}
>>>
>>> -		/**
>>> -		 * notifies of events using the plugin manager. It also adds a  
>>> couple of useful parameters!
>>> -		 *
>>> -		 * @see PluginManager
>>> -		 */
>>> -		function notifyEvent( $eventType, $params = Array())
>>> -		{
>>> -			$params[ 'from' ] = $this->_actionInfo->getActionParamValue();
>>> -			$params[ 'request' ] = $this->_request;
>>> -
>>> -			return $this->_pm->notifyEvent( $eventType, $params );
>>> -		}
>>> -
>>> 		function perform()
>>> 		{
>>> -			// initialize the plugin manager, needed to inform plugins of  
>>> the EVENT_RESOURCE_LOADED
>>> -			// event, in case any of them is waiting for it! This  
>>> obviously slows things down but
>>> -			// hey, what can I do? Users ask and I deliver...
>>> -            $this->_pm =& PluginManager::getPluginManager();
>>> -            $this->_pm->setBlogInfo( $this->_blogInfo );
>>> -			$this->_userInfo = $this->_blogInfo->getOwnerInfo();
>>> -            $this->_pm->setUserInfo( $this->_userInfo );
>>> -
>>> 			// and fetch the resource
>>> 			$resources = new GalleryResources();
>>> 			if( $this->_resName ) {
>>> @@ -219,7 +180,7 @@
>>>
>>> 			if( !$resource ) {
>>> 				// return 404 not found because the resource wasn't found
>>> -				$this->_view = new ResourceServerView();
>>> +				$this->_view = new View();
>>> 				$this->_view->addHeaderResponse( "HTTP/1.1 404 Not Found" );
>>> 				$this->_view->addHeaderResponse( "Status: 404 Not Found" );
>>> 				$this->_view->addHeaderResponse( "X-LifeType-Error: Resource  
>>> $this->_resId not found" );
>>> @@ -227,11 +188,21 @@
>>> 				return false;
>>> 			}
>>>
>>> -			// we need to let plugins know that we have successfully  
>>> loaded a resource
>>> -			$this->notifyEvent( EVENT_RESOURCE_LOADED, Array( "resource"  
>>> => &$resource ));
>>> +			$url = $this->_blogInfo->getBlogRequestGenerator();
>>> +			switch( $this->_mode ) {
>>> +				case RESOURCE_VIEW_MODE_PREVIEW:
>>> +					$redirectUrl = $url->resourcePreviewLink( $resource );
>>> +					break;
>>> +				case RESOURCE_VIEW_MODE_MEDIUM:
>>> +					$redirectUrl = $url->resourceMediumSizePreviewLink 
>>> ( $resource );
>>> +					break;
>>> +				default:
>>> +					$redirectUrl = $url->resourceDownloadLink( $resource );
>>> +					break;
>>> +			}
>>>
>>> 			// generate the correct view with the resource data...
>>> -			$this->_view = new ResourceServerView( $resource, $this- 
>>> >_mode );
>>> +			$this->_view = new RedirectView( $redirectUrl, $this->_mode );
>>>
>>> 			return true;
>>> 		}
>>>
>>> Modified: plog/branches/lifetype-1.2-resource-test/class/file/ 
>>> fileupload.class.php
>>> ===================================================================
>>> --- plog/branches/lifetype-1.2-resource-test/class/file/ 
>>> fileupload.class.php	2006-12-11 21:50:45 UTC (rev 4384)
>>> +++ plog/branches/lifetype-1.2-resource-test/class/file/ 
>>> fileupload.class.php	2006-12-11 21:52:47 UTC (rev 4385)
>>> @@ -41,6 +41,11 @@
>>>         	return $this->_name;
>>>         }
>>>
>>> +		function setFileName( $fileName )
>>> +		{
>>> +			$this->_name = $fileName;
>>> +		}
>>> +
>>> 		/**
>>> 		 * returns the MIME type of the file
>>> 		 *
>>>
>>> Modified: plog/branches/lifetype-1.2-resource-test/class/gallery/ 
>>> dao/galleryresource.class.php
>>> ===================================================================
>>> --- plog/branches/lifetype-1.2-resource-test/class/gallery/dao/ 
>>> galleryresource.class.php	2006-12-11 21:50:45 UTC (rev 4384)
>>> +++ plog/branches/lifetype-1.2-resource-test/class/gallery/dao/ 
>>> galleryresource.class.php	2006-12-11 21:52:47 UTC (rev 4385)
>>> @@ -33,6 +33,7 @@
>>>         var $_album;
>>> 		var $_thumbnailFormat;
>>> 		var $_fileDescriptor;
>>> +		var $_fileSize;
>>>
>>> 		/**
>>> 		 * Constructor.
>>> @@ -70,6 +71,7 @@
>>>             $this->_resourceType = $resourceType;
>>>             $this->_filePath = $filePath;
>>>             $this->_fileName = $fileName;
>>> +			$this->_fileSize = 0;
>>>             $this->_metadata = $metadata;
>>>             $this->_date = $date;
>>> 			$this->_thumbnailFormat = $thumbnailFormat;
>>> @@ -239,68 +241,6 @@
>>>         }
>>>
>>> 		/**
>>> -		 * returns an stream of bytes with the contents of the file
>>> -		 *
>>> -		 * @return an string with all the bytes or false otherwise
>>> -		 */
>>> -        function getData()
>>> -        {
>>> -        	lt_include( PLOG_CLASS_PATH."class/gallery/dao/ 
>>> galleryresourcestorage.class.php" );
>>> -
>>> -        	$fileParts = explode( ".", $this->getFileName());
>>> -            $fileExt = $fileParts[count($fileParts)-1];
>>> -
>>> -			$resourceStorageFolder =  
>>> GalleryResourceStorage::getResourcesStorageFolder();
>>> -            $fileName = $resourceStorageFolder.$this->getOwnerId 
>>> ()."/".$this->getOwnerId()."-".$this->getId().".".$fileExt;
>>> -
>>> -			return $this->_getData( $fileName );
>>> -        }
>>> -
>>> -		/**
>>> -		 * returns a buffer of bytes limited to $chunkSize in bytes from
>>> -		 * the file descriptor provided
>>> -		 *
>>> -		 * @return a buffer of bytes from the file or false if empty  
>>> or error
>>> -		 * @private
>>> -		 */
>>> -		function _getDataChunk(&$filedesc,$chunkSize)
>>> -		{
>>> -			if (feof($filedesc) || !$filedesc) {
>>> -				/* finished reading file */
>>> -				if (feof($filedesc))
>>> -					fclose($filedesc);
>>> -
>>> -				return false;
>>> -			}
>>> -			else {
>>> -				/* return $chunksize of bytes */
>>> -				return fread($filedesc,$chunkSize);
>>> -			}
>>> -		}
>>> -
>>> -		/**
>>> -		 * @private
>>> -		 */
>>> -		function getDataChunk($chunksize)
>>> -		{
>>> -			if (!$this->_fileDescriptor) {
>>> -				lt_include( PLOG_CLASS_PATH."class/gallery/dao/ 
>>> galleryresourcestorage.class.php" );
>>> -				$fileParts = explode(".",$this->getFileName());
>>> -				$fileExt = $fileParts[count($fileParts)-1];
>>> -				$resourceStorageFolder =  
>>> GalleryResourceStorage::getResourcesStorageFolder();
>>> -				$fileName = $resourceStorageFolder.$this->getOwnerId()."/". 
>>> $this->getOwnerId()."-".$this->getId().".".$fileExt;
>>> -
>>> -				/* store this for use again */
>>> -				$this->_fileDescriptor = @fopen($fileName,"rb");
>>> -
>>> -				/* open failed... we'll just say empty file */
>>> -				if (!$this->_fileDescriptor)
>>> -					return false;
>>> -			}
>>> -			return $this->_getDataChunk($this->_fileDescriptor,$chunksize);
>>> -		}
>>> -
>>> -		/**
>>> 		 * Sets the album id. You should normally not need to use this  
>>> method
>>> 		 *
>>> 		 * @param albumId The id of the album
>>> @@ -368,9 +308,13 @@
>>> 		 */
>>> 		function getFileSize()
>>> 		{
>>> -			$reader = $this->getMetadataReader();
>>> -			return $reader->getFileSize();
>>> +			return( $this->_fileSize );
>>> 		}
>>> +
>>> +		function setFileSize( $size )
>>> +		{
>>> +			$this->_fileSize = $size;
>>> +		}
>>>
>>> 		/**
>>> 		 * returns an object that will allow to access the metadata of  
>>> this resource
>>> @@ -430,36 +374,15 @@
>>>     		lt_include( PLOG_CLASS_PATH."class/gallery/dao/ 
>>> galleryresourcestorage.class.php" );
>>>
>>> 			if( $this->getThumbnailFormat() ==  
>>> THUMBNAIL_OUTPUT_FORMAT_SAME_AS_IMAGE ) {
>>> -				$fileParts = explode( ".", $this->getFileName());
>>> -				$fileExt = $fileParts[count($fileParts)-1];
>>> -
>>> -				$fileName = $this->getOwnerId()."-".$this->getId 
>>> ().".".strtolower($fileExt);
>>> -				$previewFile = GalleryResourceStorage::getPreviewsFolder 
>>> ( $this->getOwnerId()).$fileName;
>>> +				$previewFile = GalleryResourceStorage::getPreviewsFolder 
>>> ( $this->getOwnerId()).$this->getFileName();
>>> 			}
>>> 			else {
>>> -				$previewType = $this->getThumbnailFormat();
>>> -				$fileName = $this->getOwnerId()."-".$this->getId 
>>> ().".".strtolower($previewType);
>>> -				$previewFile = GalleryResourceStorage::getPreviewsFolder 
>>> ( $this->getOwnerId()).$fileName;
>>> +				throw( new Exception( "TODO: this case has not been  
>>> implemented yet!" ));
>>> 			}
>>>
>>> 			return $previewFile;
>>> 		}
>>>
>>> -        /**
>>> -         * Returns the binary data corresponding to the preview.
>>> -         *
>>> -         * @return A string of binary data.
>>> -         */
>>> -        function getPreview()
>>> -        {
>>> -        	if( !$this->hasPreview())
>>> -            	return false;
>>> -
>>> -			$previewFile = $this->getPreviewFileName();
>>> -
>>> -			return $this->_getData( $previewFile );
>>> -        }
>>> -
>>> 		/**
>>> 		 * returns the full path to the file with the medium-sized preview
>>> 		 *
>>> @@ -470,64 +393,15 @@
>>> 			lt_include( PLOG_CLASS_PATH."class/gallery/dao/ 
>>> galleryresourcestorage.class.php" );
>>>
>>> 			if( $this->getThumbnailFormat() ==  
>>> THUMBNAIL_OUTPUT_FORMAT_SAME_AS_IMAGE ) {
>>> -				$fileParts = explode( ".", $this->getFileName());
>>> -				$fileExt = $fileParts[count($fileParts)-1];
>>> -
>>> -				$fileName = $this->getOwnerId()."-".$this->getId 
>>> ().".".strtolower($fileExt);
>>> -				$previewFile =  
>>> GalleryResourceStorage::getMediumSizePreviewsFolder( $this- 
>>> >getOwnerId()).$fileName;
>>> +				$previewFile =  
>>> GalleryResourceStorage::getMediumSizePreviewsFolder( $this- 
>>> >getOwnerId()).$this->getFileName();
>>> 			}
>>> 			else {
>>> -				$previewType = $this->getThumbnailFormat();
>>> -				$fileName = $this->getOwnerId()."-".$this->getId 
>>> ().".".strtolower($previewType);
>>> -				$previewFile =  
>>> GalleryResourceStorage::getMediumSizePreviewsFolder( $this- 
>>> >getOwnerId()).$fileName;
>>> +				throw( new Exception( "TODO: this case has not been  
>>> implemented yet!" ));
>>> 			}
>>>
>>> 			return $previewFile;
>>> 		}
>>>
>>> -        /**
>>> -         * Returns the binary data corresponding to the preview.
>>> -         *
>>> -         * @return A string of binary data.
>>> -         */
>>> -        function getMediumSizePreview()
>>> -        {
>>> -        	if( !$this->hasPreview())
>>> -            	return false;
>>> -
>>> -			// get the file name of the medium size preview
>>> -			$previewFile = $this->getMediumSizePreviewFileName();
>>> -
>>> -			// if there is no medium size file, then return the big  
>>> one... for compatibility reasons
>>> -			$data = $this->_getData( $previewFile );
>>> -			if( !$data )
>>> -				return $this->getData();
>>> -			else
>>> -				return $data;
>>> -        }
>>> -
>>> -		/**
>>> -		 * returns an stream of data with the contents of the file.  
>>> This method is used by
>>> -		 * getData(), getPreviewData and getMediumSizePreviewData()
>>> -		 *
>>> -		 * @return The contents of the given file or nothing if empty  
>>> or if it can't be read
>>> -		 * @private
>>> -		 */
>>> -		function _getData( $file )
>>> -		{
>>> -			if( File::isReadable ( $file )) {
>>> -				$file = new File( $file );
>>> -				$file->open( "rb" );
>>> -
>>> -				$size = $file->getSize();
>>> -
>>> -				return $file->read( $size );
>>> -			}
>>> -			else {
>>> -				return false;
>>> -			}
>>> -		}
>>> -
>>> 		function getNormalizedDescription()
>>> 		{
>>> 			lt_include( PLOG_CLASS_PATH."class/data/textfilter.class.php" );
>>>
>>> Modified: plog/branches/lifetype-1.2-resource-test/class/gallery/ 
>>> dao/galleryresources.class.php
>>> ===================================================================
>>> --- plog/branches/lifetype-1.2-resource-test/class/gallery/dao/ 
>>> galleryresources.class.php	2006-12-11 21:50:45 UTC (rev 4384)
>>> +++ plog/branches/lifetype-1.2-resource-test/class/gallery/dao/ 
>>> galleryresources.class.php	2006-12-11 21:52:47 UTC (rev 4385)
>>> @@ -106,7 +106,7 @@
>>> 			$id = $resource->getId();
>>> 			$query = "SELECT id, owner_id, album_id, description,
>>>         	                 date, flags, resource_type, file_path,  
>>> file_name,
>>> -        	                 metadata, thumbnail_format, properties
>>> +        	                 metadata, thumbnail_format,  
>>> properties, file_size
>>>         	          FROM {$prefix}gallery_resources
>>> 			          WHERE album_id = '$albumId' AND date >= '$date' AND  
>>> id > $id
>>> 					  ORDER BY date ASC,id ASC LIMIT 1";
>>> @@ -146,7 +146,7 @@
>>> 			$id = $resource->getId();
>>> 			$query = "SELECT id, owner_id, album_id, description,
>>>         	                 date, flags, resource_type, file_path,  
>>> file_name,
>>> -        	                 metadata, thumbnail_format, properties
>>> +        	                 metadata, thumbnail_format,  
>>> properties, file_size
>>>         	          FROM {$prefix}gallery_resources
>>> 			          WHERE album_id = '$albumId' AND date <= '$date' AND  
>>> id < $id
>>> 					  ORDER BY date DESC,id DESC LIMIT 1";
>>> @@ -189,23 +189,23 @@
>>>                                    $page = DEFAULT_PAGING_ENABLED,
>>>                                    $itemsPerPage =  
>>> DEFAULT_ITEMS_PER_PAGE )
>>>         {
>>> -		$resources = Array();
>>> -		$query = "SELECT id FROM ".$this->getPrefix 
>>> ()."gallery_resources WHERE owner_id = '".Db::qstr($ownerId)."'";
>>> -		if( $albumId != GALLERY_NO_ALBUM )
>>> -			$query .= " AND album_id = '".Db::qstr($albumId)."'";
>>> -		if( $resourceType != GALLERY_RESOURCE_ANY )
>>> -			$query .= " AND resource_type = '".Db::qstr($resourceType)."'";
>>> -		if( $searchTerms != "" )
>>> -			$query .= " AND (".$this->getSearchConditions 
>>> ( $searchTerms ).")";
>>> +			$resources = Array();
>>> +			$query = "SELECT id FROM ".$this->getPrefix 
>>> ()."gallery_resources WHERE owner_id = '".Db::qstr($ownerId)."'";
>>> +			if( $albumId != GALLERY_NO_ALBUM )
>>> +				$query .= " AND album_id = '".Db::qstr($albumId)."'";
>>> +			if( $resourceType != GALLERY_RESOURCE_ANY )
>>> +				$query .= " AND resource_type = '".Db::qstr($resourceType)."'";
>>> +			if( $searchTerms != "" )
>>> +				$query .= " AND (".$this->getSearchConditions 
>>> ( $searchTerms ).")";
>>>
>>> -		$result = $this->Execute( $query, $page, $itemsPerPage );
>>> -		if( !$result )
>>> -			return $resources;
>>> +			$result = $this->Execute( $query, $page, $itemsPerPage );
>>> +			if( !$result )
>>> +				return $resources;
>>>
>>> -		while( $row = $result->FetchRow()) {
>>> -			// use the primary key to retrieve the items via the cache
>>> -			$resources[] = $resource = $this->get( "id", $row["id"],  
>>> CACHE_RESOURCES );
>>> -		}
>>> +			while( $row = $result->FetchRow()) {
>>> +				// use the primary key to retrieve the items via the cache
>>> +				$resources[] = $resource = $this->get( "id", $row["id"],  
>>> CACHE_RESOURCES );
>>> +			}
>>>
>>>             return $resources;
>>>         }
>>> @@ -303,6 +303,9 @@
>>> 			$tf = new Textfilter();
>>> 			$normalizedDescription = $tf->normalizeText( $description );
>>> 			$properties = serialize( array() );
>>> +
>>> +			// check if there already is a file with the same name stored
>>> +			$duplicated = $this->isDuplicatedFileName( $fileName );
>>>
>>> 			// finally put the query together and execute it
>>> 			$query = "INSERT INTO ".$this->getPrefix()."gallery_resources(
>>> @@ -328,13 +331,12 @@
>>> 			// if that's the case, then we should rename the one we just
>>> 			// added with some random prefix, to make it different from the
>>> 			// other one...
>>> -			if( $this->isDuplicatedFilename( $fileName )) {
>>> +			if( $duplicated ) {
>>> 				$query = "UPDATE ".$this->getPrefix()."gallery_resources
>>> 						  SET file_name = '$resourceId-$fileName'
>>> 						  WHERE id = $resourceId";
>>>
>>> 				$this->Execute( $query );
>>> -
>>> 			}
>>>
>>> 			lt_include( PLOG_CLASS_PATH."class/gallery/dao/ 
>>> galleryalbums.class.php" );
>>> @@ -427,8 +429,8 @@
>>>             $getId3 = new GetID3();
>>>             $metadata = $getId3->analyze( $upload->getTmpName());
>>>             // nifty helper method from the getid3 package
>>> -            getid3_lib::CopyTagsToComments($metadata);
>>> -
>>> +            getid3_lib::CopyTagsToComments($metadata);
>>> +
>>>             $resourceType = $this->_getResourceType( $upload- 
>>> >getFileName(), $metadata );
>>>
>>>             // set the flags
>>> @@ -440,10 +442,17 @@
>>>
>>>             // add the record to the database
>>>             $fileName = $upload->getFileName();
>>> +			print("file name = $fileName<br/>" );
>>> +			$duplicated = $this->isDuplicatedFilename( $fileName );
>>> 			$filePath = "";
>>> 			$resourceId = $this->addResourceToDatabase( $ownerId,  
>>> $albumId, $description, $flags, $resourceType, $filePath,  
>>> $fileName, $info );
>>> 			if( !$resourceId )
>>> 				return false;
>>> +
>>> +			if( $duplicated ) {
>>> +				print("duplicated!!!<br/>");
>>> +				$upload->setFileName( $resourceId."-".$upload->getFileName());
>>> +			}
>>>
>>>             // and finally move the file to the right place in disk
>>>             // move the file to disk
>>> @@ -467,7 +476,7 @@
>>>             	lt_include( PLOG_CLASS_PATH."class/gallery/resizers/ 
>>> gallerythumbnailgenerator.class.php" );
>>>
>>> 				lt_include( PLOG_CLASS_PATH."class/config/config.class.php" );
>>> -				$config =& Config::getConfig();
>>> +				$config =& Config::getConfig();
>>>
>>>             	$imgWidth = $info["video"]["resolution_x"];
>>>             	$imgHeight = $info["video"]["resolution_y"];
>>> @@ -556,7 +565,7 @@
>>> 				if( isset( $metadata["jpg"] )) {
>>> 					$info["jpg"]["exif"]["FILE"] = $metadata["jpg"]["exif"] 
>>> ["FILE"];
>>> 					$info["jpg"]["exif"]["COMPUTED"] = $metadata["jpg"]["exif"] 
>>> ["COMPUTED"];
>>> -					$info["jpg"]["exif"]["IFD0"] = $metadata["jpg"]["exif"] 
>>> ["IFD0"];
>>> +					if(isset( $metadata["jpg"]["exif"]["IFD0"] )) $info["jpg"] 
>>> ["exif"]["IFD0"] = $metadata["jpg"]["exif"]["IFD0"];
>>> 					$metadata["jpg"]["exif"]["EXIF"]["MakerNote"] = "";
>>> 					$info["jpg"]["exif"]["EXIF"] = $metadata["jpg"]["exif"] 
>>> ["EXIF"];
>>> 				}
>>> @@ -809,14 +818,22 @@
>>>         	$query = "SELECT COUNT(id) AS total FROM ".$this- 
>>> >getPrefix()."gallery_resources
>>>                       WHERE file_name = '$fileName'";
>>>
>>> +			print($query."<br/>");
>>> +
>>>             $result = $this->Execute( $query );
>>>
>>>             $row = $result->FetchRow();
>>> -            $result->Close();
>>> -            if( $row["total"] == 0 || $row["total"] == 1 )
>>> -            	return false;
>>> +
>>> +			print_r($row);
>>> +
>>> +            if( $row["total"] == 0 )
>>> +            	$result = false;
>>>             else
>>> -            	return true;
>>> +            	$result = true;
>>> +
>>> +			$result == true ? print("duplicated<br/>") : print("not  
>>> duplicated<br/>");
>>> +
>>> +			return( $result );
>>>         }
>>>
>>> 		/**
>>> @@ -844,6 +861,7 @@
>>> 										$row["thumbnail_format"],
>>> 										unserialize($row["properties"]),
>>>                                         $row["id"] );
>>> +										$res->setFileSize( $row["file_size"] );
>>>
>>>              return $res;
>>>         }
>>>
>>> Modified: plog/branches/lifetype-1.2-resource-test/class/gallery/ 
>>> dao/galleryresourcestorage.class.php
>>> ===================================================================
>>> --- plog/branches/lifetype-1.2-resource-test/class/gallery/dao/ 
>>> galleryresourcestorage.class.php	2006-12-11 21:50:45 UTC (rev 4384)
>>> +++ plog/branches/lifetype-1.2-resource-test/class/gallery/dao/ 
>>> galleryresourcestorage.class.php	2006-12-11 21:52:47 UTC (rev 4385)
>>> @@ -225,9 +225,6 @@
>>> 				return false;
>>>
>>>             // new name for the file
>>> -            $fileParts = explode( ".", $upload->getFileName());
>>> -            $fileExt = $fileParts[count($fileParts)-1];
>>> -            $fileName = "$ownerId-$resourceId.$fileExt";
>>>             $filePath = $this->getUserFolder( $ownerId );
>>>
>>>             // move the file to the temporaray folder first
>>> @@ -248,11 +245,15 @@
>>> 			//do not use storeFile method because I have change filename  
>>> in $tmpFolder.
>>> 			//$destFile = $this->storeFile( $resourceId, $ownerId,  
>>> $origFile, RESOURCE_STORAGE_STORE_MOVE );
>>> 			//$destFile use $filePath and $fileName generated above.
>>> -			$destFile = $filePath.$fileName;
>>> +
>>> +			//$destFile = $filePath.$fileName;
>>> +			$destFile = $filePath.$upload->getFileName();
>>> +
>>> //=========================================
>>> //codes below are copy and modify from method storeFile
>>> 			// first of all, check if the file is readable and if not, quit
>>> 			if( !File::isReadable($origFile)) {
>>> +				print("dest file = ".$destFile." - orig file = ". 
>>> $origFile."<br/>");
>>> 				return false;
>>> 			}
>>>
>>> @@ -323,11 +324,8 @@
>>>         {
>>>         	if( $resource ) {
>>> 				// first of all, remove the resource file itself
>>> -        		$fileParts = explode( ".", $resource->getFileName());
>>> -                $fileExt = $fileParts[count($fileParts)-1];
>>> -                $fileName = $resource->getOwnerId()."-". 
>>> $resource->getId().".".$fileExt;
>>>                 $filePath = $this->getUserFolder( $resource- 
>>> >getOwnerId());
>>> -				$fullName = $filePath.$fileName;
>>> +				$fullName = $filePath.$resource->getFileName();
>>>
>>> 				if( File::isReadable( $fullName)) {
>>> 					$result = File::delete( $fullName );
>>> @@ -362,12 +360,7 @@
>>> 		 */
>>> 		function getResourcePath( $resource )
>>> 		{
>>> -			$fileParts = explode( ".", $resource->getFileName());
>>> -			$fileExt = $fileParts[count($fileParts)-1];
>>> -			$filePath = $this->getUserFolder( $resource->getOwnerId());
>>> -			$fileName = $resource->getOwnerId()."-".$resource->getId 
>>> ().".".$fileExt;
>>> -
>>> -			return $filePath.$fileName;
>>> +			return( $this->getUserFolder( $resource->getOwnerId()). 
>>> $resource->getFileName());
>>> 		}
>>>     }
>>> ?>
>>>
>>> Modified: plog/branches/lifetype-1.2-resource-test/class/gallery/ 
>>> resizers/gallerythumbnailgenerator.class.php
>>> ===================================================================
>>> --- plog/branches/lifetype-1.2-resource-test/class/gallery/ 
>>> resizers/gallerythumbnailgenerator.class.php	2006-12-11 21:50:45  
>>> UTC (rev 4384)
>>> +++ plog/branches/lifetype-1.2-resource-test/class/gallery/ 
>>> resizers/gallerythumbnailgenerator.class.php	2006-12-11 21:52:47  
>>> UTC (rev 4385)
>>> @@ -23,18 +23,14 @@
>>> 			$config =& Config::getConfig();
>>> 			$previewKeepAspectRatio = $config->getValue 
>>> ( "thumbnails_keep_aspect_ratio" );
>>>
>>> -			// get the file extension
>>> -			$fileParts = explode( ".", $resFile );
>>> -			$fileExt = strtolower($fileParts[count($fileParts)-1]);
>>> -			$fileName = $ownerId."-".$resourceId.".".$fileExt;
>>> -
>>> 			// and start the resizing process
>>> 			lt_include( PLOG_CLASS_PATH."class/gallery/resizers/ 
>>> galleryresizer.class.php" );
>>> 			$resizer = new GalleryResizer( $resFile );
>>> 			lt_include( PLOG_CLASS_PATH."class/gallery/dao/ 
>>> galleryresourcestorage.class.php" );
>>> 			GalleryResourceStorage::checkPreviewsStorageFolder( $ownerId );
>>> -			$outFile = GalleryResourceStorage::getPreviewsFolder 
>>> ( $ownerId ).$fileName;
>>>
>>> +			$outFile = GalleryResourceStorage::getPreviewsFolder 
>>> ( $ownerId ).basename($resFile);
>>> +
>>> 			// and finally, we can generate the preview!
>>> 			$result = $resizer->generate( $outFile, $previewHeight,  
>>> $previewWidth, $previewKeepAspectRatio );
>>>
>>> @@ -61,17 +57,12 @@
>>> 			$config =& Config::getConfig();
>>> 			$previewKeepAspectRatio = $config->getValue 
>>> ( "thumbnails_keep_aspect_ratio" );
>>>
>>> -			// get the file extension
>>> -			$fileParts = explode( ".", $resFile );
>>> -			$fileExt = strtolower($fileParts[count($fileParts)-1]);
>>> -			$fileName = $ownerId."-".$resourceId.".".$fileExt;
>>> -
>>> 			// and start the resizing process
>>> 		    lt_include( PLOG_CLASS_PATH."class/gallery/resizers/ 
>>> galleryresizer.class.php" );
>>> 			$resizer = new GalleryResizer( $resFile );
>>> 		    lt_include( PLOG_CLASS_PATH."class/gallery/dao/ 
>>> galleryresourcestorage.class.php" );
>>> 			GalleryResourceStorage::checkMediumSizePreviewsStorageFolder 
>>> ( $ownerId );
>>> -			$outFile = GalleryResourceStorage::getMediumSizePreviewsFolder 
>>> ( $ownerId ).$fileName;
>>> +			$outFile = GalleryResourceStorage::getMediumSizePreviewsFolder 
>>> ( $ownerId ).basename( $resFile );
>>>
>>> 			// and finally, we can generate the preview!
>>> 			$result = $resizer->generate( $outFile, $previewWidth,  
>>> $previewHeight, $previewKeepAspectRatio );
>>> @@ -100,18 +91,13 @@
>>> 			lt_include( PLOG_CLASS_PATH."class/config/config.class.php" );
>>> 			$config =& Config::getConfig();
>>> 			$previewKeepAspectRatio = $config->getValue 
>>> ( "thumbnails_keep_aspect_ratio" );
>>> -
>>> -			// get the file extension
>>> -			$fileParts = explode( ".", $resFile );
>>> -			$fileExt = $fileParts[count($fileParts)-1];
>>> -			$fileName = $ownerId."-".$resourceId.".".$fileExt;
>>> -
>>> +
>>> 			// and start the resizing process
>>> 		    lt_include( PLOG_CLASS_PATH."class/gallery/resizers/ 
>>> galleryresizer.class.php" );
>>> 			$resizer = new GalleryResizer( $resFile );
>>> 		    lt_include( PLOG_CLASS_PATH."class/gallery/dao/ 
>>> galleryresourcestorage.class.php" );
>>> 			GalleryResourceStorage::checkUserStorageFolder( $ownerId );
>>> -			$outFile = GalleryResourceStorage::getUserFolder( $ownerId ). 
>>> $fileName;
>>> +			$outFile = GalleryResourceStorage::getUserFolder 
>>> ( $ownerId ).basename( $resFile );
>>>
>>> 			// and finally, we can generate the preview!
>>> 			$result = $resizer->generate( $outFile, $previewWidth,  
>>> $previewHeight, $previewKeepAspectRatio );
>>>
>>> Modified: plog/branches/lifetype-1.2-resource-test/class/net/ 
>>> baserequestgenerator.class.php
>>> ===================================================================
>>> --- plog/branches/lifetype-1.2-resource-test/class/net/ 
>>> baserequestgenerator.class.php	2006-12-11 21:50:45 UTC (rev 4384)
>>> +++ plog/branches/lifetype-1.2-resource-test/class/net/ 
>>> baserequestgenerator.class.php	2006-12-11 21:52:47 UTC (rev 4385)
>>> @@ -483,35 +483,42 @@
>>>         	throw( new Exception( "This function must be implemented  
>>> by child classes." ));
>>>         }
>>>
>>> +
>>>         /**
>>> -         * Returns the link to a resource preview. Must be  
>>> implemented by child classes to generate a valid URL.
>>> +         * Returns the link to a resource preview
>>>          *
>>>          * @param album Generates the correct link to fetch a  
>>> resource preview
>>>          */
>>>         function resourcePreviewLink( $resource )
>>>         {
>>> -        	throw( new Exception( "This function must be  
>>> implemented by child classes." ));
>>> +            $blogId = ($resource->getOwnerId() ? $resource- 
>>> >getOwnerId() : $this->_blogInfo->getId());
>>> +			$resourceLink = $this->getBaseUrl()."/gallery/".$blogId."/ 
>>> previews/".$resource->getFileName();
>>> +            return $resourceLink;
>>>         }
>>> -
>>> +
>>>         /**
>>> -         * Returns the link to a resource preview. Must be  
>>> implemented by child classes to generate a valid URL.
>>> +         * Returns the link to a resource preview
>>>          *
>>>          * @param album Generates the correct link to fetch a  
>>> resource preview
>>>          */
>>>         function resourceMediumSizePreviewLink( $resource )
>>>         {
>>> -	        throw( new Exception( "This function must be  
>>> implemented by child classes." ));
>>> +            $blogId = ($resource->getOwnerId() ? $resource- 
>>> >getOwnerId() : $this->_blogInfo->getId());
>>> +			$resourceLink = $this->getBaseUrl()."/gallery/".$blogId."/ 
>>> previews-med/".$resource->getFileName();
>>> +            return $resourceLink;
>>> 		}
>>>
>>>         /**
>>> -         * Returns the link to a resource. Must be implemented  
>>> by child classes to generate a valid URL.
>>> +         * Returns the link to a resource
>>>          *
>>>          * @param resource Generates the correct link to fetch a  
>>> resource
>>>          */
>>>         function resourceDownloadLink( $resource )
>>>         {
>>> -	        throw( new Exception( "This function must be  
>>> implemented by child classes." ));
>>> -        }
>>> +            $blogId = ($resource->getOwnerId() ? $resource- 
>>> >getOwnerId() : $this->_blogInfo->getId());
>>> +			$resourceLink = $this->getBaseUrl()."/gallery/".$blogId."/". 
>>> $resource->getFileName();
>>> +            return $resourceLink;
>>> +        }
>>>
>>> 		/**
>>> 		 * whether we should generate valid xhtml requests or not
>>>
>>> Modified: plog/branches/lifetype-1.2-resource-test/class/net/ 
>>> customrequestgenerator.class.php
>>> ===================================================================
>>> --- plog/branches/lifetype-1.2-resource-test/class/net/ 
>>> customrequestgenerator.class.php	2006-12-11 21:50:45 UTC (rev 4384)
>>> +++ plog/branches/lifetype-1.2-resource-test/class/net/ 
>>> customrequestgenerator.class.php	2006-12-11 21:52:47 UTC (rev 4385)
>>> @@ -386,48 +386,6 @@
>>> 			return $resourceLink;
>>>         }
>>>
>>> -        /**
>>> -         * Returns the link to a resource preview
>>> -         *
>>> -         * @param album Generates the correct link to fetch a  
>>> resource preview
>>> -         */
>>> -        function resourcePreviewLink( $resource )
>>> -        {
>>> -            $resourcePreviewFormat = $this->_config->getValue 
>>> ( "resource_preview_link_format" );
>>> -			$params = $this->_fillResourceParameters( $resource );
>>> -			$resourcePreviewLink = $this->getBaseUrl().$this->_replaceTags 
>>> ( $resourcePreviewFormat, $params );
>>> -
>>> -			return $resourcePreviewLink;
>>> -        }
>>> -
>>> -        /**
>>> -         * Returns the link to a resource preview
>>> -         *
>>> -         * @param album Generates the correct link to fetch a  
>>> resource preview
>>> -         */
>>> -        function resourceMediumSizePreviewLink( $resource )
>>> -        {
>>> -            $resourcePreviewFormat = $this->_config->getValue 
>>> ( "resource_medium_size_preview_link_format" );
>>> -			$params = $this->_fillResourceParameters( $resource );
>>> -			$resourcePreviewLink = $this->getBaseUrl().$this->_replaceTags 
>>> ( $resourcePreviewFormat, $params );
>>> -
>>> -			return $resourcePreviewLink;
>>> -        }
>>> -
>>> -        /**
>>> -         * Returns the link to a resource
>>> -         *
>>> -         * @param resource Generates the correct link to fetch a  
>>> resource
>>> -         */
>>> -        function resourceDownloadLink( $resource )
>>> -        {
>>> -            $resourceDownloadFormat = $this->_config->getValue 
>>> ( "resource_download_link_format" );
>>> -			$params = $this->_fillResourceParameters( $resource );
>>> -			$resourceDownloadLink = $this->getBaseUrl().$this- 
>>> >_replaceTags( $resourceDownloadFormat, $params );
>>> -
>>> -			return $resourceDownloadLink;
>>> -        }
>>> -
>>> 		/**
>>> 		 * @private
>>> 		 */
>>>
>>> Modified: plog/branches/lifetype-1.2-resource-test/class/net/ 
>>> prettyrequestgenerator.class.php
>>> ===================================================================
>>> --- plog/branches/lifetype-1.2-resource-test/class/net/ 
>>> prettyrequestgenerator.class.php	2006-12-11 21:50:45 UTC (rev 4384)
>>> +++ plog/branches/lifetype-1.2-resource-test/class/net/ 
>>> prettyrequestgenerator.class.php	2006-12-11 21:52:47 UTC (rev 4385)
>>> @@ -312,43 +312,6 @@
>>>         }
>>>
>>>         /**
>>> -         * Returns the link to a resource preview
>>> -         *
>>> -         * @param album Generates the correct link to fetch a  
>>> resource preview
>>> -         */
>>> -        function resourcePreviewLink( $resource )
>>> -        {
>>> -			$blogId = ($resource->getOwnerId() ? $resource->getOwnerId 
>>> () : $this->_blogInfo->getId());
>>> -
>>> -        	return $resourceLink = $this->getBaseUrl()."/ 
>>> resserver.php?blogId=".$blogId."&amp;resource=".rawurlencode 
>>> ($resource->getFileName())."&amp;mode=preview";
>>> -        }
>>> -
>>> -        /**
>>> -         * Returns the link to a resource preview
>>> -         *
>>> -         * @param album Generates the correct link to fetch a  
>>> resource preview
>>> -         */
>>> -        function resourceMediumSizePreviewLink( $resource )
>>> -        {
>>> -			$blogId = ($resource->getOwnerId() ? $resource->getOwnerId 
>>> () : $this->_blogInfo->getId());
>>> -
>>> -        	return $resourceLink = $this->getBaseUrl()."/ 
>>> resserver.php?blogId=".$blogId."&amp;resource=".rawurlencode 
>>> ($resource->getFileName())."&amp;mode=medium";
>>> -        }
>>> -
>>> -        /**
>>> -         * Returns the link to a resource
>>> -         *
>>> -         * @param resource Generates the correct link to fetch a  
>>> resource
>>> -         */
>>> -        function resourceDownloadLink( $resource )
>>> -        {
>>> -        	$blogId = ($resource->getOwnerId() ? $resource- 
>>> >getOwnerId() : $this->_blogInfo->getId());
>>> -
>>> -        	return $resourceLink = $this->getBaseUrl()."/get/". 
>>> $blogId."/".rawurlencode($resource->getFileName());
>>> -        }
>>> -
>>> -
>>> -        /**
>>>          * Returns a string representing the request
>>>          *
>>>          * @return A String object representing the request
>>>
>>> Modified: plog/branches/lifetype-1.2-resource-test/class/net/ 
>>> rawrequestgenerator.class.php
>>> ===================================================================
>>> --- plog/branches/lifetype-1.2-resource-test/class/net/ 
>>> rawrequestgenerator.class.php	2006-12-11 21:50:45 UTC (rev 4384)
>>> +++ plog/branches/lifetype-1.2-resource-test/class/net/ 
>>> rawrequestgenerator.class.php	2006-12-11 21:52:47 UTC (rev 4385)
>>> @@ -379,59 +379,6 @@
>>>         }
>>>
>>>         /**
>>> -         * Returns the link to a resource preview
>>> -         *
>>> -         * @param album Generates the correct link to fetch a  
>>> resource preview
>>> -         */
>>> -        function resourcePreviewLink( $resource )
>>> -        {
>>> -            $blogId = ($resource->getOwnerId() ? $resource- 
>>> >getOwnerId() : $this->_blogInfo->getId());
>>> -
>>> -            $this->addParameter( "blogId", $blogId);
>>> -            $this->addParameter( "resource", $resource- 
>>> >getFileName());
>>> -            $this->addParameter( "mode", "preview" );
>>> -
>>> -            $resourceLink = $this->getResourceServerUrl().$this- 
>>> >getRequest( false );
>>> -
>>> -            return $resourceLink;
>>> -        }
>>> -
>>> -        /**
>>> -         * Returns the link to a resource preview
>>> -         *
>>> -         * @param album Generates the correct link to fetch a  
>>> resource preview
>>> -         */
>>> -        function resourceMediumSizePreviewLink( $resource )
>>> -        {
>>> -            $blogId = ($resource->getOwnerId() ? $resource- 
>>> >getOwnerId() : $this->_blogInfo->getId());
>>> -
>>> -            $this->addParameter( "blogId", $blogId);
>>> -            $this->addParameter( "resource", $resource- 
>>> >getFileName());
>>> -            $this->addParameter( "mode", "medium" );
>>> -
>>> -            $resourceLink = $this->getResourceServerUrl().$this- 
>>> >getRequest( false );
>>> -
>>> -            return $resourceLink;
>>> -		}
>>> -
>>> -        /**
>>> -         * Returns the link to a resource
>>> -         *
>>> -         * @param resource Generates the correct link to fetch a  
>>> resource
>>> -         */
>>> -        function resourceDownloadLink( $resource )
>>> -        {
>>> -            $blogId = ($resource->getOwnerId() ? $resource- 
>>> >getOwnerId() : $this->_blogInfo->getId());
>>> -
>>> -            $this->addParameter( "blogId", $blogId);
>>> -            $this->addParameter( "resource", $resource- 
>>> >getFileName());
>>> -
>>> -            $resourceLink = $this->getResourceServerUrl().$this- 
>>> >getRequest( false );
>>> -
>>> -            return $resourceLink;
>>> -        }
>>> -
>>> -        /**
>>>          * Returns a string representing the request
>>>          *
>>>          * @return A String object representing the request
>>>
>>> Modified: plog/branches/lifetype-1.2-resource-test/class/view/ 
>>> redirectview.class.php
>>> ===================================================================
>>> --- plog/branches/lifetype-1.2-resource-test/class/view/ 
>>> redirectview.class.php	2006-12-11 21:50:45 UTC (rev 4384)
>>> +++ plog/branches/lifetype-1.2-resource-test/class/view/ 
>>> redirectview.class.php	2006-12-11 21:52:47 UTC (rev 4385)
>>> @@ -1,5 +1,7 @@
>>> <?php
>>>
>>> +	include_once( PLOG_CLASS_PATH."class/view/view.class.php" );
>>> +
>>>     /**
>>>      * This view returns no content, it just sends a
>>>      * "Location:" header to the browser so that the browser  
>>> itself takes care
>>>
>>> Deleted: plog/branches/lifetype-1.2-resource-test/class/view/ 
>>> resourceserverview.class.php
>>> ===================================================================
>>> --- plog/branches/lifetype-1.2-resource-test/class/view/ 
>>> resourceserverview.class.php	2006-12-11 21:50:45 UTC (rev 4384)
>>> +++ plog/branches/lifetype-1.2-resource-test/class/view/ 
>>> resourceserverview.class.php	2006-12-11 21:52:47 UTC (rev 4385)
>>> @@ -1,108 +0,0 @@
>>> -<?php
>>> -
>>> -	lt_include( PLOG_CLASS_PATH.'class/view/view.class.php' );
>>> -
>>> -	// the three different modes that a resource can be requested
>>> -	define( 'RESOURCE_VIEW_MODE_DEFAULT', '' );
>>> -	define( 'RESOURCE_VIEW_MODE_PREVIEW', 'preview' );
>>> -	define( 'RESOURCE_VIEW_MODE_MEDIUM', 'medium' );
>>> -    define( 'DEFAULT_HTTP_CACHE_LIFETIME', '86400');
>>> -    define( 'RESOURCE_DEFAULT_CHUNK_SIZE', '32768' );
>>> -
>>> -    /**
>>> -     * \ingroup View
>>> -     * @private
>>> -     */
>>> -	class ResourceServerView extends View
>>> -	{
>>> -
>>> -		var $_resource;
>>> -		var $_mode;
>>> -
>>> -		function ResourceServerView( $resource = null, $mode =  
>>> RESOURCE_VIEW_MODE_DEFAULT )
>>> -		{
>>> -			$this->View();
>>> -
>>> -			$this->_resource = $resource;
>>> -			$this->_mode = $mode;
>>> -
>>> -			if( $this->_resource != null )
>>> -				$this->_initResponse();
>>> -		}
>>> -
>>> -		/**
>>> -		 * @private
>>> -		 * Initializes the mime type needed for this resource and the  
>>> headers, if any is needed
>>> -		 */
>>> -		function _initResponse()
>>> -		{
>>> -			$this->addHeaderResponse( 'Pragma: public' );
>>> -			$this->addHeaderResponse( 'Accept-Ranges: bytes' );
>>> -			$this->addHeaderResponse( 'Content-Disposition: inline;  
>>> filename='.rawurlencode($this->_resource->getFileName()));
>>> -
>>> -			// depending on what we're sending, the content of the  
>>> headers will vary...
>>> -			if( $this->_mode == RESOURCE_VIEW_MODE_PREVIEW )
>>> -				$this->addHeaderResponse( 'Content-Type: '.$this->_resource- 
>>> >getThumbnailMimeType());
>>> -			elseif( $this->_mode == RESOURCE_VIEW_MODE_MEDIUM )
>>> -				$this->addHeaderResponse( 'Content-Type: '.$this->_resource- 
>>> >getThumbnailMimeType());
>>> -			else {
>>> -				$data = $this->_resource->getMetadataReader();
>>> -				$this->addHeaderResponse( 'Content-Type: '.$this->_resource- 
>>> >getMimeType());
>>> -				$this->addHeaderResponse( 'Content-Length: '.$data- 
>>> >getFileSize());
>>> -			}
>>> -
>>> -			return true;
>>> -		}
>>> -
>>> -		/**
>>> -		 * we need to overwrite this method or else the View class  
>>> will be sending the wrong
>>> -		 * content type and character encoding... We overwrite it to  
>>> do nothing, since we have
>>> -		 * already sent the content type in _initResponse()
>>> -		 *
>>> -		 * @see View::sendContentType()
>>> -		 */
>>> -		function sendContentType()
>>> -		{
>>> -			return( true );
>>> -		}
>>> -
>>> -		function render()
>>> -		{
>>> -			// call the render method in the main view class... it will  
>>> take care of sending the headers
>>> -			// for us and so on...
>>> -			parent::render();
>>> -
>>> -			// if there is no resource to send... then we can quit right  
>>> away!
>>> -			if( $this->_resource == null )
>>> -				return;
>>> -
>>> -			// let's see if we really need to send some data or not...
>>> -			// send also some headers that will help caching, if  
>>> configured to do so
>>> -			$config =& Config::getConfig();
>>> -			$useCaching = $config->getValue 
>>> ( 'resource_server_http_cache_enabled' );
>>> -			if( $useCaching ) {
>>> -				// send the "Last-Modified" header
>>> -				$resDate = $this->_resource->getTimestamp();
>>> -				$lastModified = $resDate->getDate( DATE_FORMAT_UNIXTIME );
>>> -				$cacheLifetime = $config->getValue 
>>> ( 'resource_server_http_cache_lifetime',  
>>> DEFAULT_HTTP_CACHE_LIFETIME );
>>> -
>>> -				// check if we have to resent the data and if not, then  
>>> we're done!
>>> -				lt_include( PLOG_CLASS_PATH.'class/net/http/ 
>>> httpcache.class.php' );
>>> -				if( HttpCache::httpConditional( $lastModified,  
>>> $cacheLifetime ))
>>> -					exit();
>>> -			}
>>> -
>>> -			// if we need to send something, then let's do it now and finish
>>> -			if( $this->_mode == RESOURCE_VIEW_MODE_PREVIEW )
>>> -				print( $this->_resource->getPreview());
>>> -			elseif( $this->_mode == RESOURCE_VIEW_MODE_MEDIUM )
>>> -				print( $this->_resource->getMediumSizePreview());
>>> -			else {
>>> -				while($chunk =& $this->_resource->getDataChunk 
>>> ( RESOURCE_DEFAULT_CHUNK_SIZE ))
>>> -					echo( $chunk );
>>> -			}
>>> -
>>> -			return true;
>>> -		}
>>> -	}
>>> -?>
>>> \ No newline at end of file
>>>
>>> Modified: plog/branches/lifetype-1.2-resource-test/templates/ 
>>> admin/globalsettings_url.template
>>> ===================================================================
>>> --- plog/branches/lifetype-1.2-resource-test/templates/admin/ 
>>> globalsettings_url.template	2006-12-11 21:50:45 UTC (rev 4384)
>>> +++ plog/branches/lifetype-1.2-resource-test/templates/admin/ 
>>> globalsettings_url.template	2006-12-11 21:52:47 UTC (rev 4385)
>>> @@ -81,19 +81,19 @@
>>>    <div class="field">
>>>     <label for="config 
>>> [resource_preview_link_format]">resource_preview_link_format</label>
>>>     <div class="formHelp">{$locale->tr 
>>> ("help_resource_preview_link_format")}</div>
>>> -    <input style="width:100%" type="text" id="config 
>>> [resource_preview_link_format]" name="config 
>>> [resource_preview_link_format]"  
>>> value="{$resource_preview_link_format}"/>
>>> +    <input disabled="disabled" style="width:100%" type="text"  
>>> id="config[resource_preview_link_format]" name="config 
>>> [resource_preview_link_format]"  
>>> value="{$resource_preview_link_format}"/>
>>>    </div>
>>>    <!-- resource_preview_link_format -->
>>>    <div class="field">
>>>     <label for="config 
>>> [resource_medium_size_preview_link_format]">resource_medium_size_pre 
>>> view_link_format</label>
>>>     <div class="formHelp">{$locale->tr 
>>> ("help_resource_medium_size_preview_link_format")}</div>
>>> -    <input style="width:100%" type="text" id="config 
>>> [resource_medium_size_preview_link_format]" name="config 
>>> [resource_medium_size_preview_link_format]"  
>>> value="{$resource_medium_size_preview_link_format}"/>
>>> +    <input disabled="disabled" style="width:100%" type="text"  
>>> id="config[resource_medium_size_preview_link_format]" name="config 
>>> [resource_medium_size_preview_link_format]"  
>>> value="{$resource_medium_size_preview_link_format}"/>
>>>    </div>
>>>    <!-- resource_download_link_format -->
>>>    <div class="field">
>>>     <label for="config 
>>> [resource_download_link_format]">resource_download_link_format</ 
>>> label>
>>>     <div class="formHelp">{$locale->tr 
>>> ("help_resource_download_link_format")}</div>
>>> -    <input style="width:100%" type="text" id="config 
>>> [resource_download_link_format]" name="config 
>>> [resource_download_link_format]"  
>>> value="{$resource_download_link_format}"/>
>>> +    <input disabled="disabled" style="width:100%" type="text"  
>>> id="config[resource_download_link_format]" name="config 
>>> [resource_download_link_format]"  
>>> value="{$resource_download_link_format}"/>
>>>    </div>
>>>    <!-- page_suffix_format -->
>>>    <div class="field">
>>>
>>> _______________________________________________
>>> pLog-svn mailing list
>>> pLog-svn at devel.lifetype.net
>>> http://devel.lifetype.net/mailman/listinfo/plog-svn
>>>
>>
>> -- 
>> Jon Daley
>> http://jon.limedaley.com/
>>
>> The shortest distance between two points is under construction.
>> -- Altito
>> _______________________________________________
>> pLog-svn mailing list
>> pLog-svn at devel.lifetype.net
>> http://devel.lifetype.net/mailman/listinfo/plog-svn
>>
>



More information about the pLog-svn mailing list