/** * 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; }
/** * 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); }