/** * Remove all sessions for the user name * * Method is called after user data is deleted from the database * * @param array $user Holds the user data * @param boolean $success True if user was successfully stored in the database * @param string $msg Message * * @return boolean * * @since 1.6 */ public function onUserAfterDelete($user, $success, $msg) { $userId = Joomla\Utilities\ArrayHelper::getValue($user, 'id', 0, 'int'); if (!$success or !$userId) { return false; } // Remove profile images. $profile = new Socialcommunity\Profile\Profile($this->db); $profile->load(array('user_id' => $userId)); if ($profile->getId()) { // Remove profile record. $query = $this->db->getQuery(true); $query->delete($this->db->quoteName('#__itpsc_profiles'))->where($this->db->quoteName('user_id') . '=' . (int) $userId); $this->db->setQuery($query); $this->db->execute(); // Remove profile images. $params = JComponentHelper::getParams('com_socialcommunity'); /** @var $params Joomla\Registry\Registry */ jimport('Prism.libs.init'); $filesystemHelper = new Prism\Filesystem\Helper($params); $mediaFolder = $filesystemHelper->getMediaFolder($userId); $filesystem = $filesystemHelper->getFilesystem(); $profile->removeImages($filesystem, $mediaFolder); } return true; }
/** * Delete image */ public function removeImage() { // Check for request forgeries. JSession::checkToken('get') or jexit(JText::_('JINVALID_TOKEN')); // Check for registered user $userId = JFactory::getUser()->get('id'); if (!$userId) { $redirectOptions = array('force_direction' => 'index.php?option=com_users&view=login'); $this->displayNotice(JText::_('COM_SOCIALCOMMUNITY_ERROR_NOT_LOG_IN'), $redirectOptions); return; } $redirectOptions = array('view' => 'form', 'layout' => 'avatar'); try { $params = JComponentHelper::getParams('com_socialcommunity'); $filesystemHelper = new Prism\Filesystem\Helper($params); jimport('Prism.libs.init'); $storageFilesystem = $filesystemHelper->getFilesystem(); $mediaFolder = $filesystemHelper->getMediaFolder($userId); $model = $this->getModel(); $model->removeImage($userId, $mediaFolder, $storageFilesystem); } catch (Exception $e) { JLog::add($e->getMessage()); throw new Exception(JText::_('COM_SOCIALCOMMUNITY_ERROR_SYSTEM')); } $this->displayMessage(JText::_('COM_SOCIALCOMMUNITY_IMAGE_DELETED'), $redirectOptions); }
/** * Pre-processor for $table->delete($pk) * * @param mixed $pk An optional primary key value to delete. If not set the instance property value is used. * * @return void * * @since 3.1.2 * @throws UnexpectedValueException */ public function onBeforeDelete($pk) { $db = $this->table->getDbo(); jimport('Socialcommunity.profile'); $profile = new Socialcommunity\Profile\Profile($db); $profile->load($this->table->id); if ($profile->getId()) { $params = JComponentHelper::getParams('com_socialcommunity'); /** @var $params Joomla\Registry\Registry */ $filesystemHelper = new Prism\Filesystem\Helper($params); $mediaFolder = $filesystemHelper->getMediaFolderUri($profile->getId()); $filesystem = $filesystemHelper->getFilesystem(); $profile->removeImages($filesystem, $mediaFolder); } }
public function cropImage() { // Check for request forgeries. JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $app = JFactory::getApplication(); /** @var $app JApplicationSite */ $response = new Prism\Response\Json(); $userId = JFactory::getUser()->get('id'); if (!$userId) { $response->setTitle(JText::_('COM_SOCIALCOMMUNITY_FAILURE'))->setText(JText::_('COM_SOCIALCOMMUNITY_ERROR_NOT_LOG_IN'))->failure(); echo $response; $app->close(); } // Get the model $model = $this->getModel(); /** @var $model SocialcommunityModelAvatar */ $params = JComponentHelper::getParams('com_socialcommunity'); $filesystemHelper = new Prism\Filesystem\Helper($params); // Get the filename from the session. $fileName = basename($app->getUserState(Socialcommunity\Constants::TEMPORARY_IMAGE_CONTEXT)); $temporaryFolder = $filesystemHelper->getTemporaryMediaFolder(JPATH_BASE); $temporaryFile = JPath::clean($temporaryFolder . '/' . $fileName); if (!$fileName or !JFile::exists($temporaryFile)) { $response->setTitle(JText::_('COM_SOCIALCOMMUNITY_FAILURE'))->setText(JText::_('COM_SOCIALCOMMUNITY_ERROR_FILE_DOES_NOT_EXIST'))->failure(); echo $response; $app->close(); } $imageUrl = ''; try { // Get the folder where the images will be stored $params = JComponentHelper::getParams('com_socialcommunity'); $options = array('width' => $this->input->getFloat('width'), 'height' => $this->input->getFloat('height'), 'x' => $this->input->getFloat('x'), 'y' => $this->input->getFloat('y'), 'destination' => $temporaryFolder); // Resize the picture. $images = $model->cropImage($temporaryFile, $options, $params); jimport('Prism.libs.init'); $temporaryAdapter = new League\Flysystem\Adapter\Local($temporaryFolder); $temporaryFilesystem = new League\Flysystem\Filesystem($temporaryAdapter); $storageFilesystem = $filesystemHelper->getFilesystem(); $manager = new League\Flysystem\MountManager(['temporary' => $temporaryFilesystem, 'storage' => $storageFilesystem]); $mediaFolder = $filesystemHelper->getMediaFolder($userId); $model->moveImages($images, $mediaFolder, $manager); $model->storeImages($userId, $images, $mediaFolder, $storageFilesystem); // Prepare URL to the image. $imageName = basename(Joomla\Utilities\ArrayHelper::getValue($images, 'image_profile')); $imageUrl = $filesystemHelper->getMediaFolderUri($userId) . '/' . $imageName; $app->setUserState(Socialcommunity\Constants::TEMPORARY_IMAGE_CONTEXT, null); } catch (RuntimeException $e) { $response->setTitle(JText::_('COM_SOCIALCOMMUNITY_FAILURE'))->setText($e->getMessage())->failure(); echo $response; $app->close(); } catch (Exception $e) { JLog::add($e->getMessage(), JLog::DEBUG); $response->setTitle(JText::_('COM_SOCIALCOMMUNITY_FAILURE'))->setText(JText::_('COM_SOCIALCOMMUNITY_ERROR_SYSTEM'))->failure(); echo $response; $app->close(); } $response->setTitle(JText::_('COM_SOCIALCOMMUNITY_SUCCESS'))->setText(JText::_('COM_SOCIALCOMMUNITY_IMAGE_SAVED'))->setData($imageUrl)->success(); echo $response; $app->close(); }
/** * Delete image */ public function removeImage() { // Check for request forgeries. JSession::checkToken('get') or jexit(JText::_('JINVALID_TOKEN')); $itemId = $this->input->getInt('id', 0); $profile = new Socialcommunity\Profile\Profile(JFactory::getDbo()); $profile->load($itemId); $redirectOptions = array('view' => 'profile', 'id' => $itemId); if (!$profile->getId()) { $this->displayNotice(JText::_('COM_SOCIALCOMMUNITY_INVALID_PROFILE'), $redirectOptions); return; } try { $params = JComponentHelper::getParams('com_socialcommunity'); $filesystemHelper = new Prism\Filesystem\Helper($params); jimport('Prism.libs.init'); $storageFilesystem = $filesystemHelper->getFilesystem(); $mediaFolder = $filesystemHelper->getMediaFolder($profile->getUserId()); $model = $this->getModel(); $model->removeImage($itemId, $mediaFolder, $storageFilesystem); } catch (Exception $e) { JLog::add($e->getMessage()); throw new Exception(JText::_('COM_SOCIALCOMMUNITY_ERROR_SYSTEM')); } $this->displayMessage(JText::_('COM_SOCIALCOMMUNITY_IMAGE_DELETED'), $redirectOptions); }
/** * Prepare and sanitise the table prior to saving. * * @param SocialCommunityTableProfile $table * @param array $data * * @since 1.6 */ protected function prepareImages($table, $data) { // Prepare image if (!empty($data['image'])) { $params = JComponentHelper::getParams($this->option); /** @var $params Joomla\Registry\Registry */ jimport('Prism.libs.init'); $filesystemHelper = new Prism\Filesystem\Helper($params); $mediaFolder = $filesystemHelper->getMediaFolder($data['user_id']); $storageFilesystem = $filesystemHelper->getFilesystem(); // Delete old image if I upload a new one if ($table->get('image')) { $this->deleteImages($table, $mediaFolder, $storageFilesystem); } // Move the images from temporary to media folder. $this->moveImages($data, $mediaFolder, $storageFilesystem); $table->set('image', $data['image']); $table->set('image_small', $data['image_small']); $table->set('image_icon', $data['image_icon']); $table->set('image_square', $data['image_square']); } }