/**
  * Create image thumbnail. This function will return true on success, false otherwise
  *
  * @param void
  * @return boolean
  */
 protected function createThumb()
 {
     do {
         $source_file = CACHE_DIR . '/' . sha1(uniqid(rand(), true));
     } while (is_file($source_file));
     if (!file_put_contents($source_file, $this->getFileContent()) || !is_readable($source_file)) {
         return false;
     }
     // if
     do {
         $temp_file = CACHE_DIR . '/' . sha1(uniqid(rand(), true));
     } while (is_file($temp_file));
     try {
         Env::useLibrary('simplegd');
         $image = new SimpleGdImage($source_file);
         $thumb = $image->scale(100, 100, SimpleGdImage::BOUNDARY_DECREASE_ONLY, false);
         $thumb->saveAs($temp_file, IMAGETYPE_PNG);
         $public_filename = PublicFiles::addFile($temp_file, 'png');
         if ($public_filename) {
             $this->setThumbFilename($public_filename);
             $this->save();
         }
         // if
         $result = true;
     } catch (Exception $e) {
         $result = false;
     }
     // try
     @unlink($source_file);
     @unlink($temp_file);
     return $result;
 }
예제 #2
0
 /**
  * Set logo value
  *
  * @param string $source Source file
  * @param integer $max_width
  * @param integer $max_height
  * @param boolean $save Save object when done
  * @return null
  */
 function setLogo($source, $max_width = 50, $max_height = 50, $save = true)
 {
     if (!is_readable($source)) {
         return false;
     }
     do {
         $temp_file = ROOT . '/cache/' . sha1(uniqid(rand(), true));
     } while (is_file($temp_file));
     try {
         Env::useLibrary('simplegd');
         $image = new SimpleGdImage($source);
         $thumb = $image->scale($max_width, $max_height, SimpleGdImage::BOUNDARY_DECREASE_ONLY, false);
         $thumb->saveAs($temp_file, IMAGETYPE_PNG);
         $public_filename = PublicFiles::addFile($temp_file, 'png');
         if ($public_filename) {
             $this->setLogoFile($public_filename);
             if ($save) {
                 $this->save();
             }
             // if
         }
         // if
         $result = true;
     } catch (Exception $e) {
         $result = false;
     }
     // try
     // Cleanup
     if (!$result && $public_filename) {
         PublicFiles::deleteFile($public_filename);
     }
     // if
     @unlink($temp_file);
     return $result;
 }