LiveUpdate: Index.php

Top  Previous  Next

The DataPackURL in the Products.xml is called by the Publisher at defined AutoUpdateDays intervals for an update of product and installer files. AutoUpdateDays is defined in  the SetupWizard.

<DataPackURL>http://.../index.php?subshopid=[subshopid]</DataPackURL>

The result from this index.php is a joblist of the necessary files to download for the update. The Publisher application compares the MD5 checksums to decide what to download. You must provide this script in PHP or Javascript, together with the necessary folders containing the product and branding update files. Here is a live example output. This is what the Publisher sees, when an AutoUpdate event is triggered.

Below is a typical index.php. The lines containing the MD5 checksum creation are marked red:

lightbulb_on

You can find a copy of this PHP file in <SetupWizard>\Source\4all.EN\Sample DataPackURL (index).php
The LiveUpdate mechanism is decribed here.

 
<?php

  header("Content-type: text/plain; charset=iso-8859-1");

 

//Index file for CodedColor Publisher LiveUpdate (see products.xml: DataPackURL)

//(c) 2013 1STEIN GmbH

//You may modify the $title strings below, or exclude certain files (see @@@ below)

 

//New Version TODOS: 

//  - update $version corresponding to newest installer, upload newest installer

//  - upload this file to pixpedia-en

//  - make sure "compatible" attribute in products.xml is set correctly

//  - upload new products.xml to pixpedia-en, as well as new product*.zip files (layouts & templates)

 

//Calling examples:

//  show index: http://www.1stein.de/publisher/pixpedia-de/

//  OSX update: http://www.1stein.de/publisher/pixpedia-de/index.php?os=osx

//  redirect:   http://www.1stein.de/publisher/pixpedia-de/index.php?cmd=redir&fn=products.xml

 

//---functions--------------------------------------------------------------------------------

 

function _scandir($dir) {

//function of php5

  $dh  = opendir($dir);

  while (false !== ($filename = readdir($dh))) {

    $files[] = $filename;

  }

  return $files;

}

 

function _stripos($str, $substr) {

//function of php5

  return strpos(strtolower($str), strtolower($substr));

}

 

//---main-------------------------------------------------------------------------------------

 

$path = ".";

$url = $_SERVER[HTTP_HOST] . dirname($_SERVER['PHP_SELF']);

$fname = $_GET["fn"];

if (isset($fname)) $fname = $path . "/" . $fname;

$os = $_GET["os"];  //allowed values: empty or "osx"

 

//*** redirect

if (file_exists($fname) && ($_GET["cmd"] == 'redir')) {

  header("Location: " . $fname);  //immediate redirect (don't output ANY html before this!)

 

//*** create file index

} else if (is_dir($path)) {

  $files = _scandir($path);

  sort($files);

  if (count($files) > 0) $output = "";

  for ($i = 0; $i < count($files); $i++) {

 

    //@@@ you may modify the following line to exclude other files:

    if (($files[$i] != '.') && ($files[$i] != '..') && ($files[$i] != '.htaccess') && (_stripos($files[$i], ".php")==0)) {

 

    //@@@ subfolders: you may create own folders. they are automatically replicated to the client!

      if (is_dir($files[$i])) {

        $subfiles = _scandir($path . "/" . $files[$i]);

        sort($subfiles);

        for ($j = 0; $j < count($subfiles); $j++) {

          if (($subfiles[$j] != '.') && ($subfiles[$j] != '..')) {

            $fname = $files[$i] . "/" . $subfiles[$j];

            $version = "";

            $md5 = "";

 

          //@@@ branding and image files: you may modify the titles and add own files

            switch (strtolower($subfiles[$j])) {

              case "Silver.vsf":             $title = "Publisher Skin";  break;

              case "wzproduct.ini":          $title = "Publisher Style";  break;

              case "basic.css":              $title = "Publisher Style";  break;

              case "res_backgrounds1.zip":   $title = "Publisher Backgrounds";  break;

              case "res_colorprofiles1.zip": $title = "Publisher Color Profiles";  break;

              case "res_frames1.zip":        $title = "Publisher Frames";  break;

              case "res_gallery1.zip":       $title = "Publisher Gallery";  break;

              case "res_masks1.zip":         $title = "Publisher Masks";  break;

              case "res_objects1.zip":       $title = "Publisher Photo Objects";  break;

              case "res_textures1.zip":      $title = "Publisher Textures";  break;

              case "res_clipart1.zip":     { //$md5 = "DFABB310C...";   use static value for large files to improve speed

                                             $title = "Publisher Cliparts";  break; }                                                

              case "publisher_setup.exe":  { 

                if ($os == "osx") { $fname = ""; } else { $version = "3.8.20";  $title = "PC Publisher Update"; }

                break;                                

                   }

              case "publisher_setup.pkg":  {

                if ($os == "osx") { $version = "3.8.20"; $title = "Mac Publisher Update"; } else { $fname = ""; }

                break;                                

                   }

              default: $title = $subfiles[$j];

            }

            

                 if (fname != "") {

                         $output = $output . "\n[$fname]" . "\n" .                              

                                                                 "URL=http://$url/$fname\n" .

                                                                 "Size=" . filesize($path."/".$fname) . "\n";

                         if ($md5 != "") { 

                                 $output = $output . "MD5=" . $md5 . "\n" .

                                                                         "Title=$title\n";

                         } else {

                                 $output = $output . "MD5=" . md5_file($path."/".$fname) . "\n" .  //to improve speed, use static value (see above)

                                                                         "Title=$title\n";

                         }

                         if ($version != "") $output = $output . "Version=$version\n";

                 }

          }

        }

    //@@@ product and wizard files: you may modify the titles and add own files

      } else {

        switch (strtolower($files[$i])) {

          case "wzwelcome.htm":    $title = "Wizard Page";  break;

          case "wzproduct.htm":    $title = "Wizard Page";  break;

          case "wzsummary.htm":    $title = "Wizard Page";  break;

          case "products.xml":     $title = "Product definitions";  break;

        //case "product_fb1.zip":  $title = "Photobook templates #1";  break;

         default: $title = $files[$i];

        }

        $output = $output . "\n[$files[$i]]" . "\n" .

                            "URL=http://$url/$files[$i]\n" .

                            "Size=" . filesize($path."/".$files[$i]) . "\n" .

                            "MD5=" . md5_file($path."/".$files[$i]) . "\n" .  //to improve speed, use static value (see above)

                            "Title=$title\n";

      }

    }

  }

  if (isset($output)) $output = $output . "\n";

 

//*** error message

} else {

  $output = "Fatal Error\n";

}

 

//---output document-----------------------------------------------------------------------------

 

if (isset($output)) {

print <<<END

$output

END;

}

?>

 

2015 © 3P Photobook Publisher