public function createThumbnailsFor()
 {
     $_SESSION[__CLASS__]['template'] = $_POST['template'];
     $miniaturesFolder = SH_TEMPLATE_FOLDER . $_POST['template'] . '/images/miniatures/';
     $defaultFolder = $miniaturesFolder . 'default/';
     if (!is_dir($defaultFolder)) {
         echo 'The folder ' . SH_TEMPLATE_PATH . $_POST['template'] . '/images/miniatures/default/ does not exist!!';
         return true;
     }
     if (file_exists($miniaturesFolder . '370_reallyShiny.png')) {
         echo 'ALREADY_DONE';
         return true;
     }
     $_SESSION[__CLASS__]['cpt'] = 0;
     // Listing the images to creation the variations for
     if (file_exists($defaultFolder . 'params.xml')) {
         // We read the params
         $paramsFile = new DOMDocument();
         $paramsFile->load(realpath($defaultFolder . 'params.xml'));
         $xpath = new DOMXpath($paramsFile);
         // We get the layers
         $layers = array();
         $query = '//miniatures/layers/layer';
         $entries = $xpath->query($query);
         foreach ($entries as $entry) {
             if ($entry->hasAttributes()) {
                 $attributes = $entry->attributes;
                 $zindex = $attributes->getNamedItem('zindex')->nodeValue;
                 $children = $entry->childNodes;
                 foreach ($children as $child) {
                     $nodeName = $child->nodeName;
                     if ($nodeName == 'image') {
                         $attributes = $child->attributes;
                         $src = $attributes->getNamedItem('src')->nodeValue;
                         $layers[$zindex]['imageSrc'] = $defaultFolder . $src;
                         $layers[$zindex]['name'] = basename($src);
                     } elseif ($nodeName == 'palette') {
                         $attributes = $child->attributes;
                         $layers[$zindex]['type'] = $attributes->getNamedItem('type')->nodeValue;
                         if ($layers[$zindex]['type'] == 'file') {
                             $src = $attributes->getNamedItem('src')->nodeValue;
                             flush();
                             $layers[$zindex]['palette'] = sh_colors::getPalette($defaultFolder . $src);
                         }
                     }
                 }
             }
         }
     } else {
         echo 'There was no params file.';
         exit;
     }
     ksort($layers);
     $_SESSION[__CLASS__]['layersForThumbnails'] = $layers;
     echo 'OK';
 }
 protected function getPalette($source)
 {
     if (isset($this->palettes[basename($source)])) {
         return basename($source);
     }
     if (file_exists($this->unpackFolder . $source)) {
         $source = $this->unpackFolder . $source;
     }
     $this->palettes[basename($source)] = sh_colors::getPalette($source);
     return basename($source);
 }