[pLog-svn] r5222 - in plog/branches/lifetype-1.2: . templates/wizard
Mark Wu
markplace at gmail.com
Thu Mar 29 12:48:03 EDT 2007
Hi Oscar:
I think I already fixed all resources file naming related issues.
But, still need the user to test for me.
If you know which user has this problem, please kindly ask him to help me
test the script.
Before test the script, please kindly ask him/she backup his/her
scripts/database first.
Mark
> -----Original Message-----
> From: plog-svn-bounces at devel.lifetype.net
> [mailto:plog-svn-bounces at devel.lifetype.net] On Behalf Of
> mark at devel.lifetype.net
> Sent: Friday, March 30, 2007 12:43 AM
> To: plog-svn at devel.lifetype.net
> Subject: [pLog-svn] r5222 - in plog/branches/lifetype-1.2: .
> templates/wizard
>
> Author: mark
> Date: 2007-03-29 12:42:43 -0400 (Thu, 29 Mar 2007) New Revision: 5222
>
> Added:
> plog/branches/lifetype-1.2/templates/wizard/fix120.template
> Modified:
> plog/branches/lifetype-1.2/templates/wizard/checks.template
> plog/branches/lifetype-1.2/wizard.php
> Log:
> Add Fix120 option for user who already upgrade from lifetype
> 1.1.x to lifetype 1.2.0.
>
> It will fixing those preview images filename for them.
>
> Modified: plog/branches/lifetype-1.2/templates/wizard/checks.template
> ===================================================================
> ---
> plog/branches/lifetype-1.2/templates/wizard/checks.template
> 2007-03-29 15:41:52 UTC (rev 5221)
> +++
> plog/branches/lifetype-1.2/templates/wizard/checks.template
> 2007-03-29 16:42:43 UTC (rev 5222)
> @@ -18,6 +18,11 @@
> system in order to ensure that LifeType can run properly.
> <br/><br/>
> </p>
> + <img src="imgs/admin/icon_info-16.png" alt="Info"
> class="wizardInfoIcon" />
> + <p class="wizardInfoText">
> + <b>NOTE:</b>If you already upgrade to 1.2.0, there
> are some changes that need to be done to your resource file name.
> + This is a known issue in the upgrade process of
> LifeType 1.1.x to 1.2.0 that does not convert preview image
> + file name correctly. In order to have this issue
> fixed, click <a
> +href="?nextStep=Fix120">here</a> and let the browser window
> reload.</p>
> </div>
> {/if}
>
>
> Added: plog/branches/lifetype-1.2/templates/wizard/fix120.template
> ===================================================================
> ---
> plog/branches/lifetype-1.2/templates/wizard/fix120.template
> (rev 0)
> +++
> plog/branches/lifetype-1.2/templates/wizard/fix120.template
> 2007-03-29 16:42:43 UTC (rev 5222)
> @@ -0,0 +1,45 @@
> +{include file="wizard/header.template" step=4 mode=update
> +title="Changes in Resources"} <form name="fix120" method="post"
> +id="update3"> <fieldset class="inputField"> <legend>Data
> +Changes</legend> {if $viewIsError}
> + <div class="wizardError">
> + <img src="imgs/admin/icon_error-16.png" alt="Error"
> class="wizardInfoIcon" />
> + <p style="color:red;margin-left:20px;">{$viewErrorMessage}</p>
> + <p>You may choose to ignore this error and continue
> with the data update process by
> + clicking the "Continue" button below.
> + </div>
> +{else}
> + <div class="wizardInfo">
> + <img src="imgs/admin/icon_info-16.png" alt="Info"
> class="wizardInfoIcon" />
> + <p class="wizardInfoText">
> + {$message}
> + </p>
> + </div>
> +{/if}
> +</fieldset>
> +<div class="buttons">
> + {if !$complete}
> + <input type="hidden" name="nextStep" value="Fix120"/>
> + {else}
> + {if !$viewIsError}
> + <input type="hidden" name="nextStep" value="Update4"/>
> + <input type="submit" name="Prev" value="« Previous"/>
> + <input type="submit" name="Next" value="Next »"/>
> + {/if}
> + {/if}
> + {if $viewIsError}
> + <input type="hidden" name="nextStep" value="Fix120"/>
> + <input type="submit" name="continue" value="Continue" />
> + {/if}
> + <input type="hidden" name="page" value="{$nextStep}" />
> + <input type="hidden" name="transformerId"
> value="{$transformerId}"
> +/> </div> </form> {if !$complete && !$viewIsError}
> + <!-- let's make the document submit itself --> <script
> +type="text/javascript">
> + document.update3.submit();
> + </script>
> +{/if}
> +{include file="wizard/footer.template"}
> \ No newline at end of file
>
> Modified: plog/branches/lifetype-1.2/wizard.php
> ===================================================================
> --- plog/branches/lifetype-1.2/wizard.php 2007-03-29
> 15:41:52 UTC (rev 5221)
> +++ plog/branches/lifetype-1.2/wizard.php 2007-03-29
> 16:42:43 UTC (rev 5222)
> @@ -90,6 +90,7 @@
> $_actionMap["Update1"] = "UpdateStepOne";
> $_actionMap["Update2"] = "UpdateStepTwo";
> $_actionMap["Update3"] = "UpdateStepThree";
> + $_actionMap["Fix120"] = "Fix120StepOne";
>
>
> /**
> @@ -1806,7 +1807,6 @@
> }
> }
> }
> -
>
> // if it's an image, we also
> need to process the previews
> if( $row["resource_type"] ==
> "1" ) { @@ -1843,8 +1843,6 @@
> }
> }
> }
> -
> -
>
> $this->updatedRecords++;
> }
> @@ -1854,9 +1852,8 @@
> }
> }
>
> -
> /**
> - * processes all resource files and renames the files to
> their "real" names
> + * processes all resource files and renames the files to their
> + "encoded" names
> */
> class ResourcesEncodedFileNameDataTransformer extends
> DatabaseDataTransformer
> {
> @@ -1901,9 +1898,6 @@
> $fileName =
> $galleryFolder.$row["owner_id"]."/".$row["owner_id"]."-".$row[
> "id"].".".$fileExt;
> $destFileName =
> $galleryFolder.$row["owner_id"]."/".$row["owner_id"]."-".$row[
> "id"].".".strtolower($fileExt);
>
> - //print( "Renaming file: $fileName ---
> $destFileName<br/>" );
> -
> - // skip the rename if we already did it
> if( $fileName != $destFileName ) {
> if( File::exists( $fileName )) {
> if( !File::exists(
> $destFileName)) { @@ -1922,6 +1916,96 @@
> }
> }
>
> + /**
> + * processes all resource files that we did not convert
> correctly in 1.2.0
> + */
> + class ResourcesFix120FileNameDataTransformer extends
> DatabaseDataTransformer
> + {
> + function getNumSteps()
> + {
> + return( parent::getNumSteps( "gallery_resources" ));
> + }
> +
> + function perform()
> + {
> + $this->message = "Fixing resource files with
> original file naming rule (step %s of %s)<br/>";
> +
> + $query1 = "SELECT id, owner_id, file_name,
> resource_type,
> + thumbnail_format FROM ".$this->dbPrefix."gallery_resources";
> +
> + $config =& Config::getConfig();
> + $galleryFolder = $config->getValue(
> "resources_folder" );
> +
> + // total number of comments
> + $res1 = $this->Execute( $query1, $this->page,
> $this->itemsPerPage );
> + if( !$res1 ) {
> + $this->message .= "Error performing loading
> resource data";
> + return false;
> + }
> + if( $res1->RecordCount() == 0 ) {
> + $this->message .= "No more
> records to process";
> + return( true );
> + }
> + $numComments = Array();
> + while( $row = $res1->FetchRow()) {
> + //
> + // process each one of the rows
> and rename the main file
> + //
> +
> + // get the file extension
> + if(( $extPos = strrpos(
> $row["file_name"], "." )) !== false ) {
>
> + $fileExt = substr(
> $row["file_name"], $extPos+1, strlen( $row["file_name"] ));
> + }
> + else {
> + $fileExt = "";
> + }
> +
> + // Only convert the preview
> file name if the file extension does not lower case
> + if( strtolower( $fileExt ) !=
> $fileExt ) {
> + // if it's an image, we
> also need to process the previews
> + if(
> $row["resource_type"] == "1" ) {
> + // calculate
> the extension of the preview file, depending on how it was saved
> + if(
> $row["thumbnail_format"] == "same" ) {
> +
> $previewExt = strtolower( $fileExt );
> +
> $destFileName = $row["file_name"];
> + }
> + else {
> +
> $previewExt = $row["thumbnail_format"];
> + //
> remove the old extension and put the new one in place
> +
> //print("file name = ".$row["file_name"]." - file ext =
> $fileExt - previewExt = $previewExt" );
> +
> $destFileName = str_replace( $fileExt, $previewExt,
> $row["file_name"] );
> + }
> +
> + // file names
> for the preview and medium preview
> +
> $previewFileName =
> $galleryFolder.$row["owner_id"]."/previews/".$row["owner_id"].
> "-".$row["id"].".".$previewExt;
> +
> $medPreviewFileName =
> $galleryFolder.$row["owner_id"]."/previews-med/".$row["owner_i
> d"]."-".$row["id"].".".$previewExt;
> + // destination
> file names for the preview and medium preview
> +
> $destPreviewFileName =
> $galleryFolder.$row["owner_id"]."/previews/".$destFileName;
> +
> $destMedPreviewFileName =
> +$galleryFolder.$row["owner_id"]."/previews-med/".$destFileName;
> +
> + //print(" --
> renaming preview: $previewFileName -- $destPreviewFileName<br/>");
> + //print(" --
> renaming medium preview: $medPreviewFileName --
> $destMedPreviewFileName<br/>");
> +
> + if(
> File::exists( $previewFileName )) {
> + if( !File::exists(
> $destPreviewFileName)) {
> + File::rename(
> $previewFileName, $destPreviewFileName );
> + }
> + }
> + if(
> File::exists( $medPreviewFileName )) {
> + if( !File::exists(
> $destMedPreviewFileName)) {
> + File::rename(
> $medPreviewFileName, $destMedPreviewFileName );
> + }
> + }
> + }
> + }
> +
> + $this->updatedRecords++;
> + }
> + $res1->Close();
> + $this->message .= "{$this->updatedRecords}
> resource files updated, ".$this->getTotalProcessedRecords()."
> processed so far (".$this->getPercentProcessed()."%)<br/>";
> + return true;
> + }
> + }
> +
> // Dummy Transformer
> class DummyDataTransformer extends DatabaseDataTransformer
> {
> @@ -2107,9 +2191,132 @@
>
> return true;
> }
> + }
>
> - }
> + // Fix those resources that we did not convert
> correctly in 1.2.0
> + class Fix120StepOne extends WizardPagedAction
> + {
> + var $message;
> + var $currentTransformerId;
> + var $totalTransformers;
> +
> + function Fix120StepOne( $actionInfo, $httpRequest )
> + {
> + $this->WizardPagedAction( $actionInfo, $httpRequest );
> +
> + /**
> + * array with the data transformers that will be run
> + */
> + $this->transformers = Array(
> +
> "ResourcesFix120FileNameDataTransformer",
> + "DummyDataTransformer"
> + );
>
> + $this->currentTransformerId =
> $this->getTransformerIdFromRequest();
> + $this->totalTransformers = count(
> $this->transformers ) - 1;
> + }
> +
> + /**
> + * gets the id of the transformer from the request.
> If it is not available, it
> + * will return the id of the first transformer
> available (which is '0')
> + *
> + * @private
> + */
> + function getTransformerIdFromRequest()
> + {
> + $id = HttpVars::getRequestValue(
> "transformerId" );
> + $val = new IntegerValidator();
> + if( !$val->validate( $id ))
> + $id = 0;
> +
> + return $id;
> + }
> +
> + function perform()
> + {
> + $step = $this->getPageFromRequest();
> +
> + // get the current transformer class so that we
> can continue where we left
> + $transformerClass =
> $this->transformers[$this->currentTransformerId];
> + $transformer = new $transformerClass( $step );
> + $result = $transformer->perform();
> + $complete = $transformer->isComplete();
> + $message = $transformer->message;
> + $message = sprintf( $message,
> $this->currentTransformerId +
> + 1, $this->totalTransformers );
> +
> + //print("transformer = $transformerClass<br/>");
> +
> + // error during processing and the processor is
> configured
> + // to fail on error
> + if( !$result && $transformer->failOnError ) {
> + //print("Error in step = $step<br/>");
> + $this->_view = new WizardView( "update3" );
> + // current and next step
> + $this->_view->setValue( "currentStep", $step );
> + $this->_view->setValue( "nextStep", $step+1
> );
> + // whether this transformer is ready
> + $this->_view->setValue( "complete", $complete );
> + // transformer id
> + $this->_view->setValue( "transformerId",
> $this->currentTransformerId );
> + $this->_view->setValue( "error", true );
> + if( $transformer->DbError() != "" ) {
> + $message .= "<br/>The database error
> message was: ".$transformer->DbError()."<br/>";
> + }
> +
> + $this->_view->setErrorMessage( $message );
> + }
> + else {
> + if( !$complete ) {
> + //print("it's not complete! step = $step<br/>");
> + $this->_view = new WizardView( "fix120" );
> + // current and next step
> + $this->_view->setValue( "currentStep", $step );
> + $this->_view->setValue( "nextStep",
> $step+1 );
> + // whether this transformer is ready
> + $this->_view->setValue( "complete", $complete );
> + // transformer id
> + $this->_view->setValue( "transformerId",
> $this->currentTransformerId );
> + }
> + else {
> + // have we already been through all transformers?
> + //print("transformer complete! - num
> transformers = ".count($this->transformers)."<br/>");
> + $moreTransformers = (
> $this->currentTransformerId+1 < count( $this->transformers ));
> + if( $moreTransformers ) {
> + //print("Starting new transformer!<br/>");
> + $this->_view = new WizardView( "fix120" );
> + // current and next step
> + $this->_view->setValue( "currentStep", 0 );
> + $this->_view->setValue( "nextStep", 1 );
> + // whether this transformer is ready
> + $this->_view->setValue( "complete", false );
> + // transformer id
> + $this->_view->setValue(
> "transformerId", $this->currentTransformerId+1 );
> + }
> + else {
> + // no more data to transform, we can
> finalize the installation!
> + // delete the
> contents of the temporary folder
> + include_once(
> PLOG_CLASS_PATH."class/config/config.class.php" );
> + $config =&
> Config::getConfig();
> + $tmpFolder =
> $config->getValue( "temp_folder", TEMP_FOLDER );
> + WizardTools::cleanTmpFolder();
> +
> + // User upgrade LifeType from 1.1.x
> to 1.2.0, they have to use "original_file_name",
> + // becasue there is no option for
> user to choose he want to use encoded file name
> + // or original file name.
> + // save the resources naming rule to
> config table
> +
> $config->saveValue( "resources_naming_rule", "original_file_name"
> +);
> +
> + $this->_view = new WizardView( "update4" );
> + }
> + }
> + }
> +
> + $this->_view->setValue( "message", $message );
>
> +
> + return true;
> + }
> + }
> +
> // check if the "./tmp" folder is writable by us, otherwise
> // throw an error before the user gets countless errors
> // from Smarty
> @@ -2121,4 +2328,4 @@
> //// main part ////
> $controller = new Controller( $_actionMap, "nextStep" );
> $controller->process( HttpVars::getRequest()); -?>
> +?>
> \ No newline at end of file
>
> _______________________________________________
> pLog-svn mailing list
> pLog-svn at devel.lifetype.net
> http://limedaley.com/mailman/listinfo/plog-svn
More information about the pLog-svn
mailing list