protected function prepareDefaultLayout() { $this->rewards = new Crowdfunding\User\Rewards(JFactory::getDbo()); $this->rewards->load(array('reward_id' => $this->item->id)); $this->rewardOwnerId = CrowdfundingHelper::getUserIdByRewardId($this->item->id); $dateValidator = new Prism\Validator\Date($this->item->delivery); $this->deliveryDate = $dateValidator->isValid() ? JHtml::_('date', $this->item->delivery, JText::_('DATE_FORMAT_LC3')) : '--'; $this->imagesFolder = CrowdfundingHelper::getImagesFolderUri($this->rewardOwnerId); // Get social profile $socialPlatform = $this->params->get('integration_social_platform'); if ($socialPlatform) { $this->socialProfile = CrowdfundingHelper::prepareIntegration($socialPlatform, $this->rewardOwnerId); $this->profileLink = $this->socialProfile->getLink(); } $this->returnUrl = base64_encode('index.php?option=com_crowdfunding&view=reward&id=' . $this->item->id); }
public function display($tpl = null) { $app = JFactory::getApplication(); /** @var $app JApplicationSite */ $this->option = JFactory::getApplication()->input->get('option'); // Get user ID. $this->userId = JFactory::getUser()->get('id'); // Get reward ID. $rewardId = $app->input->getInt('id'); // Validate reward owner $validator = new Crowdfunding\Validator\Reward\Owner(JFactory::getDbo(), $rewardId, $this->userId); if (!$validator->isValid()) { $app->enqueueMessage(JText::_('COM_CROWDFUNDING_ERROR_INVALID_REWARD'), 'notice'); $app->redirect(JRoute::_(CrowdfundingHelperRoute::getDiscoverRoute())); return; } $this->items = $this->get('Items'); $this->state = $this->get('State'); $this->pagination = $this->get('Pagination'); // Get params /** @var $params Joomla\Registry\Registry */ $params = $this->state->get('params'); $this->params = $params; // Prepare an URL where user will be redirected when change the state of a reward. $this->redirectUrl = 'index.php?option=com_crowdfunding&view=reward&id=' . $rewardId; // Prepare filters $this->listOrder = $this->escape($this->state->get('list.ordering')); $this->listDirn = $this->escape($this->state->get('list.direction')); $this->saveOrder = strcmp($this->listOrder, 'a.ordering') === 0; // Load reward data. $this->reward = new Crowdfunding\Reward(JFactory::getDbo()); $this->reward->load($rewardId); // Prepare reward delivery date. $dateValidator = new Prism\Validator\Date($this->reward->getDeliveryDate()); $this->deliveryDate = $dateValidator->isValid() ? JHtml::_('date', $this->reward->getDeliveryDate(), JText::_('DATE_FORMAT_LC3')) : '--'; // Get images folder. $this->imagesFolder = CrowdfundingHelper::getImagesFolderUri($this->userId); // Get social profile $socialPlatform = $this->params->get('integration_social_platform'); if (JString::strlen($socialPlatform) > 0) { $this->prepareSocialIntegration($socialPlatform); } $this->prepareDocument(); parent::display($tpl); }
protected function prepareDefaultLayout() { $this->rewards = new Crowdfunding\User\Rewards(JFactory::getDbo()); $this->rewards->load(array("reward_id" => $this->item->id)); $this->rewardOwnerId = CrowdfundingHelper::getUserIdByRewardId($this->item->id); $dateValidator = new Prism\Validator\Date($this->item->delivery); $this->deliveryDate = $dateValidator->isValid() ? JHtml::_('date', $this->item->delivery, JText::_('DATE_FORMAT_LC3')) : "--"; $this->imagesFolder = CrowdfundingHelper::getImagesFolderUri($this->rewardOwnerId); // Get social profile $socialPlatform = $this->params->get("integration_social_platform"); if (!empty($socialPlatform)) { $options = array("social_platform" => $socialPlatform, "user_id" => $this->rewardOwnerId); $profileBuilder = new Prism\Integration\Profile\Builder($options); $profileBuilder->build(); $this->socialProfile = $profileBuilder->getProfile(); $this->profileLink = $this->socialProfile->getLink(); } $this->returnUrl = base64_encode("index.php?option=com_crowdfunding&view=reward&id=" . $this->item->id); }
$amount = new Crowdfunding\Amount($componentParams); $amount->setCurrency($currency); $project = Crowdfunding\Project::getInstance(JFactory::getDbo(), $projectId); $rewards = $project->getRewards(array('state' => Prism\Constants::PUBLISHED, 'order_by' => 'ordering', 'order_direction' => 'ASC')); // Calculate the number of funders. if ($params->get('display_funders', 0)) { $rewards->countReceivers(); } $additionalInfo = false; if ($params->get('display_funders', 0) or $params->get('display_claimed', 0) or $params->get('display_delivery_date', 0)) { $additionalInfo = true; } $layout = $params->get('layout', 'default'); switch ($layout) { case '_:square': case '_:thumbnail': // Get the folder where the images are saved. $userId = $project->getUserId(); $rewardsImagesUri = CrowdfundingHelper::getImagesFolderUri($userId); JHtml::_('crowdfunding.jqueryFancybox'); $js = ' jQuery(document).ready(function() { jQuery("a.js-rewards-images-gallery").fancybox(); });'; $doc = JFactory::getDocument(); $doc->addScriptDeclaration($js); break; default: break; } require JModuleHelper::getLayoutPath('mod_crowdfundingrewards', $layout);
protected function prepareRewards() { $model = JModelLegacy::getInstance("Rewards", "CrowdfundingModel", $config = array('ignore_request' => false)); // Get state $this->state = $model->getState(); // Get params $this->projectId = $this->state->get("rewards.project_id"); // Check if rewards are enabled. if (!$this->rewardsEnabled) { $this->app->enqueueMessage(JText::_("COM_CROWDFUNDING_ERROR_REWARDS_DISABLED"), "notice"); $this->app->redirect(JRoute::_(CrowdfundingHelperRoute::getFormRoute($this->projectId, "manager"), false)); return; } $this->items = $model->getItems($this->projectId); // Get project and validate it $project = Crowdfunding\Project::getInstance(JFactory::getDbo(), $this->projectId); $project = $project->getProperties(); $this->item = Joomla\Utilities\ArrayHelper::toObject($project); // Check if the item exists. if (!$this->isValid()) { return; } // Create a currency object. $this->currency = Crowdfunding\Currency::getInstance(JFactory::getDbo(), $this->params->get("project_currency")); $this->amount = new Crowdfunding\Amount($this->params); $this->amount->setCurrency($this->currency); // Get date format $this->dateFormat = CrowdfundingHelper::getDateFormat(); $this->dateFormatCalendar = CrowdfundingHelper::getDateFormat(true); $language = JFactory::getLanguage(); $languageTag = $language->getTag(); $js = ' // Rewards calendar date format. var projectWizard = { dateFormat: "' . $this->dateFormatCalendar . '", locale: "' . substr($languageTag, 0, 2) . '" }; '; $this->document->addScriptDeclaration($js); // Prepare rewards images. $this->rewardsImagesEnabled = $this->params->get("rewards_images", 0); $this->rewardsImagesUri = CrowdfundingHelper::getImagesFolderUri($this->userId); $this->prepareProjectType(); $this->pathwayName = JText::_("COM_CROWDFUNDING_STEP_REWARDS"); }
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_CROWDFUNDING_FAIL'))->setText(JText::_('COM_CROWDFUNDING_ERROR_NOT_LOG_IN'))->failure(); echo $response; $app->close(); } // Get the model $model = $this->getModel(); /** @var $model CrowdfundingModelProject */ $projectId = $this->input->post->get("id"); // If there is a project, validate the owner. if (!empty($projectId)) { // Validate project owner. $validator = new Crowdfunding\Validator\Project\Owner(JFactory::getDbo(), $projectId, $userId); if (!$validator->isValid()) { $response->setTitle(JText::_('COM_CROWDFUNDING_FAIL'))->setText(JText::_('COM_CROWDFUNDING_ERROR_INVALID_PROJECT'))->failure(); echo $response; $app->close(); } } // Get the filename from the session. $fileName = basename($app->getUserState(Crowdfunding\Constants::TEMPORARY_IMAGE_CONTEXT)); $temporaryFile = JPath::clean(CrowdfundingHelper::getTemporaryImagesFolder() . "/" . $fileName); if (!$fileName or !JFile::exists($temporaryFile)) { $response->setTitle(JText::_('COM_CROWDFUNDING_FAIL'))->setText(JText::_('COM_CROWDFUNDING_ERROR_FILE_DOES_NOT_EXIST'))->failure(); echo $response; $app->close(); } $imageUrl = ""; try { // Get the folder where the images will be stored $destination = CrowdfundingHelper::getTemporaryImagesFolder(); $params = JComponentHelper::getParams("com_crowdfunding"); $options = array("width" => $this->input->getFloat("width"), "height" => $this->input->getFloat("height"), "x" => $this->input->getFloat("x"), "y" => $this->input->getFloat("y"), "destination" => $destination, "resize_width" => $params->get("image_width", 200), "resize_height" => $params->get("image_height", 200)); // Resize the picture. $images = $model->cropImage($temporaryFile, $options); $imageName = basename(Joomla\Utilities\ArrayHelper::getValue($images, "image")); // Remove the temporary images if they exist. $temporaryImages = $app->getUserState(Crowdfunding\Constants::CROPPED_IMAGES_CONTEXT); if (!empty($temporaryImages)) { $model->removeTemporaryImages($temporaryImages, $destination); } // If there is a project, store the images to database. // If there is NO project, store the images in the session. if (!empty($projectId)) { $model->updateImages($projectId, $images, $destination); $app->setUserState(Crowdfunding\Constants::CROPPED_IMAGES_CONTEXT, null); // Get the folder of the images where the pictures will be stored. $imageUrl = JUri::base() . CrowdfundingHelper::getImagesFolderUri() . "/" . $imageName; } else { $app->setUserState(Crowdfunding\Constants::CROPPED_IMAGES_CONTEXT, $images); // Get the temporary folder where the images will be stored. $imageUrl = JUri::base() . CrowdfundingHelper::getTemporaryImagesFolderUri() . "/" . $imageName; } } catch (RuntimeException $e) { $response->setTitle(JText::_('COM_CROWDFUNDING_FAIL'))->setText($e->getMessage())->failure(); echo $response; $app->close(); } catch (Exception $e) { $response->setTitle(JText::_('COM_CROWDFUNDING_FAIL'))->setText(JText::_('COM_CROWDFUNDING_ERROR_SYSTEM'))->failure(); echo $response; $app->close(); } $response->setTitle(JText::_('COM_CROWDFUNDING_SUCCESS'))->setText(JText::_('COM_CROWDFUNDING_IMAGE_SAVED'))->setData($imageUrl)->success(); echo $response; $app->close(); }
protected function prepareRewards() { $model = JModelLegacy::getInstance('Rewards', 'CrowdfundingModel', $config = array('ignore_request' => false)); // Get state $this->state = $model->getState(); // Get params $this->projectId = $this->state->get('rewards.project_id'); // Check if rewards are enabled. if (!$this->rewardsEnabled) { $this->app->enqueueMessage(JText::_('COM_CROWDFUNDING_ERROR_REWARDS_DISABLED'), 'notice'); $this->app->redirect(JRoute::_(CrowdfundingHelperRoute::getFormRoute($this->projectId, 'manager'), false)); return; } $this->items = $model->getItems($this->projectId); // Get project and validate it $project = Crowdfunding\Project::getInstance(JFactory::getDbo(), $this->projectId); $project = $project->getProperties(); $this->item = Joomla\Utilities\ArrayHelper::toObject($project); // Check if the item exists. if (!CrowdfundingHelper::isAuthorized($this->userId, $this->item, 'rewards')) { $this->app->enqueueMessage(JText::_('COM_CROWDFUNDING_ERROR_SOMETHING_WRONG'), 'notice'); $this->app->redirect(JRoute::_(CrowdfundingHelperRoute::getDiscoverRoute())); return; } // Create a currency object. $this->currency = Crowdfunding\Currency::getInstance(JFactory::getDbo(), $this->params->get('project_currency')); $this->amount = new Crowdfunding\Amount($this->params); $this->amount->setCurrency($this->currency); // Get date format $this->dateFormat = CrowdfundingHelper::getDateFormat(); $this->dateFormatCalendar = CrowdfundingHelper::getDateFormat(true); $language = JFactory::getLanguage(); $languageTag = $language->getTag(); $js = ' // Rewards calendar date format. var projectWizard = { dateFormat: "' . $this->dateFormatCalendar . '", locale: "' . substr($languageTag, 0, 2) . '" }; '; $this->document->addScriptDeclaration($js); // Prepare rewards images. $this->rewardsImagesEnabled = (bool) $this->params->get('rewards_images', 0); $this->rewardsImagesUri = CrowdfundingHelper::getImagesFolderUri($this->userId); $this->options['column_left'] = (!$this->rewardsImagesEnabled or count($this->items) === 0) ? 12 : 8; $this->options['column_right'] = (!$this->rewardsImagesEnabled or count($this->items) === 0) ? 0 : 4; $this->prepareProjectType(); $this->pathwayName = JText::_('COM_CROWDFUNDING_STEP_REWARDS'); }