"Old" images disappear in new image system

"Old" images disappear in new image system

Monday 26 April 2004 1:07:31 am - 2 replies

Author Message

Marcus Ilgner

Monday 26 April 2004 3:44:47 am

Hi Felix,

this is because of the new directory structure in var/<yourdesign>/storage. I wrote this small script (runs on Linux only, I fear, but migration should be fairly easy) to migrate the old structure into the new hierarchy. Take a look at it and maybe comment out copy() and mkdirs() on the first run.
Also make sure to run the cleanup script beforehand.

#!/usr/bin/php4
<?php
        function mkdirs($mode, $path)
        {
                exec("mkdir -m $mode -p $path");
        }
                                                                                                                            
        $server = "localhost";
        $user = "ezpublish"; // put your mysql-user here
        $password = "password"; // put your password here
        $database = "ez"; // put your database name here
        $baseDir = "var/mydesign/storage/"; // change design name here
                                                                                                                            
        //connect
        $connection = mysql_connect( $server, $user, $password, false );
        mysql_select_db( $database );
                                                                                                                            
        //find all ezimage attributes
        $result = mysql_query( "SELECT id, language_code, version, contentobject_id FROM ezcontentobject_attribute WHERE da
                                                                                                                            
        //enumerate all images
        while( ($data = mysql_fetch_assoc( $result )) != false )
        {
                //attribute
                $attribute_id = $data["id"];
                $version_number = $data["version"];
                $language_code = $data[ "language_code" ];
                $object_id = $data["contentobject_id"];
                                                                                                                            
                //old filename
                $subresult = mysql_query( "SELECT filename FROM ezimage WHERE contentobject_attribute_id=$attribute_id AND
                $row = mysql_fetch_row( $subresult );
                $old_filename = $row[0];
                $oldDir = $baseDir . "original/image/" . $old_filename;
                                                                                                                            
                //build new filename
                $subresult = mysql_query( "SELECT path_identification_string FROM ezcontentobject_tree WHERE contentobject_
                $row = mysql_fetch_row( $subresult );
                $path_string = $row[0];
                $newDir = "images/" . $path_string . "/" . $attribute_id . "-" . $version_number . "-" . $language_code;
                                                                                                                            
                printf("Creating dir %s\n", $newDir );
                mkdirs( 0770, $newDir );
                                                                                                                            
                $asPath = explode( "/", $newDir );
                                                                                                                            
                $newFile = $newDir . "/" . $asPath[ count( $asPath ) - 2 ] . "1.jpg";
                                                                                                                            
                //copy file
                copy( $oldDir, $newFile );
                printf( "Copying \"%s\" to \"%s\"\n", $oldDir, $newFile );
        }
                                                                                                                            
        mysql_close( $connection );
?>

After running this script, just clear the cache and visit the site. The database should then get updated automagically.

Greetings
Marcus

Chris Anderson

Wednesday 28 April 2004 11:58:42 am

Marcus,

I am trying to run this script you have provided and noticed that the code has been truncated to fit within the window. Could you please repost the script for the missing sql SELECT statements?

TIA

-Chris

You must be logged in to post messages in this topic!

Powered by eZ Publish™ CMS Open Source Web Content Management. Copyright © 1999-2014 eZ Systems AS (except where otherwise noted). All rights reserved.