/** * Set contact picture from $source file * * @param string $source Source file * @param integer $max_width Max picture widht * @param integer $max_height Max picture height * @param boolean $save Save user object when done * @return string */ function setPicture($source, $fileType, $max_width = 50, $max_height = 50, $save = true) { if (!is_readable($source)) { return false; } do { $temp_file = CACHE_DIR . '/' . sha1(uniqid(rand(), true)); } while (is_file($temp_file)); Env::useLibrary('simplegd'); $image = new SimpleGdImage($source); if ($image->getImageType() != IMAGETYPE_PNG) { $image->convertType(IMAGETYPE_PNG); $image->saveAs($temp_file, IMAGETYPE_PNG); $public_fileId = FileRepository::addFile($temp_file, array('type' => 'image/png', 'public' => true)); } else { $public_fileId = FileRepository::addFile($source, array('type' => 'image/png', 'public' => true)); } $this->generateAllSizePictures($public_fileId, $save); $result = true; // Cleanup if (!$result && $public_fileId) { FileRepository::deleteFile($public_fileId); } @unlink($temp_file); return $public_fileId; }