[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
Tue Dec 12 07:17:29 GMT 2006


In that case it definitely is an issue with OS X, PHP and the OS X
filesystem. Thanks for the test :)

On 12/12/06, Jon Daley <plogworld at jon.limedaley.com> wrote:
>         It appears to have worked on my system, but my terminal program
> doesn't know how to display the filename.
> Can you see it here:
> http://jon.limedaley.com/test/
>
> All I see are '?'s but when tab completing, they are completed as
> different characters, and not all the same.
>
> On Tue, 12 Dec 2006, Oscar Renalias wrote:
>
> > Hmmm... It might be an OS X problem when using the HFS+ filesystem.
> >
> > Can anybody try the following script?
> >
> > <?php
> >       copy( "./newfile.txt", "./tmp/ביםףת.txt" );
> > ?>
> >
> > Create a file called "newfile.txt" with whatever contents, place the script
> > above in the LT root folder (for example), run it, and check whether the file
> > tmp/ביםףת.txt exists or you got an error like "Warning: copy(./tmp/ביםףת.txt)
> > [function.copy]: failed to open stream: Invalid argument". I just tried in a
> > Linux system and it seemed to work, but not in OS X.
> >
> > 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_preview_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
> >>>
> >>
> >> _______________________________________________
> >> pLog-svn mailing list
> >> pLog-svn at devel.lifetype.net
> >> http://devel.lifetype.net/mailman/listinfo/plog-svn
> >>
> >
> > _______________________________________________
> > pLog-svn mailing list
> > pLog-svn at devel.lifetype.net
> > http://devel.lifetype.net/mailman/listinfo/plog-svn
>
> --
> Jon Daley
> http://jon.limedaley.com/
>
> Sympathy is never wasted except when you give it to yourself.
> -- John W. Draper
>
> _______________________________________________
> 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