示例#1
0
 /**
  * Crop and save a user's photo by coordinates for a given user model.
  *
  * @param $source
  * @param $x1
  * @param $x2
  * @param $y1
  * @param $y2
  * @param UserModel $user
  * @return bool
  * @throws \Exception
  */
 public function cropAndSaveUserPhoto($source, $x1, $x2, $y1, $y2, UserModel $user)
 {
     $userPhotoFolder = craft()->path->getUserPhotosPath() . $user->username . '/';
     $targetFolder = $userPhotoFolder . 'original/';
     IOHelper::ensureFolderExists($userPhotoFolder);
     IOHelper::ensureFolderExists($targetFolder);
     $filename = IOHelper::getFileName($source);
     $targetPath = $targetFolder . $filename;
     $image = craft()->images->loadImage($source);
     $image->crop($x1, $x2, $y1, $y2);
     $result = $image->saveAs($targetPath);
     if ($result) {
         IOHelper::changePermissions($targetPath, IOHelper::getWritableFilePermissions());
         $record = UserRecord::model()->findById($user->id);
         $record->photo = $filename;
         $record->save();
         $user->photo = $filename;
         return true;
     }
     return false;
 }
示例#2
0
 /**
  * Stores a value identified by a key in cache. This is the implementation of the method declared in the parent class.
  *
  * @param  string  $key    The key identifying the value to be cached
  * @param  string  $value  The value to be cached
  * @param  integer $expire The number of seconds in which the cached value will expire. 0 means never expire.
  * @return boolean true    If the value is successfully stored into cache, false otherwise
  */
 protected function setValue($key, $value, $expire)
 {
     if (!$this->_gced && mt_rand(0, 1000000) < $this->getGCProbability()) {
         $this->gc();
         $this->_gced = true;
     }
     if ($expire <= 0) {
         $expire = 31536000;
         // 1 year
     }
     $expire += time();
     $cacheFile = $this->getCacheFile($key);
     if ($this->directoryLevel > 0) {
         IOHelper::createFolder(IOHelper::getFolderName($cacheFile), IOHelper::getWritableFolderPermissions());
     }
     if ($this->_originalKey == 'useWriteFileLock') {
         if (IOHelper::writeToFile($cacheFile, $value, true, false, true) !== false) {
             IOHelper::changePermissions($cacheFile, IOHelper::getWritableFilePermissions());
             return IOHelper::touch($cacheFile, $expire);
         } else {
             return false;
         }
     } else {
         if (IOHelper::writeToFile($cacheFile, $value) !== false) {
             IOHelper::changePermissions($cacheFile, IOHelper::getWritableFilePermissions());
             return IOHelper::touch($cacheFile, $expire);
         } else {
             return false;
         }
     }
 }
 /**
  * Insert a file from path in folder.
  *
  * @param AssetFolderModel $folder
  * @param $filePath
  * @param $fileName
  * @return AssetOperationResponseModel
  * @throws Exception
  */
 protected function _insertFileInFolder(AssetFolderModel $folder, $filePath, $fileName)
 {
     $targetFolder = $this->_getSourceFileSystemPath() . $folder->fullPath;
     // Make sure the folder exists.
     if (!IOHelper::folderExists($targetFolder)) {
         throw new Exception(Craft::t('The “File System Path” specified for this asset source does not appear to exist.'));
     }
     // Make sure the folder is writable
     if (!IOHelper::isWritable($targetFolder)) {
         throw new Exception(Craft::t('Craft is not able to write to the “File System Path” specified for this asset source.'));
     }
     $fileName = IOHelper::cleanFilename($fileName);
     $targetPath = $targetFolder . $fileName;
     $extension = IOHelper::getExtension($fileName);
     if (!IOHelper::isExtensionAllowed($extension)) {
         throw new Exception(Craft::t('This file type is not allowed'));
     }
     if (IOHelper::fileExists($targetPath)) {
         $response = new AssetOperationResponseModel();
         return $response->setPrompt($this->_getUserPromptOptions($fileName))->setDataItem('fileName', $fileName);
     }
     if (!IOHelper::copyFile($filePath, $targetPath)) {
         throw new Exception(Craft::t('Could not copy file to target destination'));
     }
     IOHelper::changePermissions($targetPath, IOHelper::getWritableFilePermissions());
     $response = new AssetOperationResponseModel();
     return $response->setSuccess()->setDataItem('filePath', $targetPath);
 }