public function display($tpl = null)
 {
     $this->option = JFactory::getApplication()->input->getCmd('option');
     $container = Prism\Container::getContainer();
     $this->state = $this->get('State');
     $this->items = $this->get('Items');
     $this->pagination = $this->get('Pagination');
     // Get params
     $this->params = $this->state->get('params');
     /** @var  $this->params Joomla\Registry\Registry */
     $this->numberInRow = (int) $this->params->get('featured_items_row', 3);
     $helperBus = new Prism\Helper\HelperBus($this->items);
     $helperBus->addCommand(new Crowdfunding\Helper\PrepareItemsHelper());
     $helperBus->handle();
     $this->displayCreator = (bool) $this->params->get('integration_display_creator', true);
     // Prepare integration. Load avatars and profiles.
     if ($this->displayCreator) {
         $userIds = Prism\Utilities\ArrayHelper::getIds($this->items, 'user_id');
         $this->socialProfiles = CrowdfundingHelper::prepareIntegration($this->params->get('integration_social_platform'), $userIds);
     }
     $this->layoutData = new stdClass();
     $this->layoutData->items = $this->items;
     $this->layoutData->params = $this->params;
     $this->layoutData->money = $this->getMoneyFormatter($container, $this->params);
     $this->layoutData->socialProfiles = $this->socialProfiles;
     $this->layoutData->imageFolder = $this->params->get('images_directory', 'images/crowdfunding');
     $this->prepareDocument();
     parent::display($tpl);
 }
 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
     if ($this->params->get('integration_social_platform')) {
         $userIds = Prism\Utilities\ArrayHelper::getIds($this->items, 'user_id');
         $this->socialProfiles = CrowdfundingHelper::prepareIntegration($this->params->get('integration_social_platform'), $userIds);
     }
     $this->prepareDocument();
     parent::display($tpl);
 }
 public function display($tpl = null)
 {
     $this->option = JFactory::getApplication()->input->get('option');
     $this->state = $this->get('State');
     $this->items = $this->get('Items');
     $this->pagination = $this->get('Pagination');
     // Get parameters of com_crowdfunding.
     $this->cfParams = JComponentHelper::getParams('com_crowdfunding');
     $this->money = $this->getMoneyFormatter($this->cfParams);
     // Get transactions number.
     $projectsIds = Prism\Utilities\ArrayHelper::getIds($this->items);
     $projects = new Crowdfunding\Projects(JFactory::getDbo());
     $this->transactions = $projects->getTransactionsNumber($projectsIds);
     // Prepare sorting data
     $this->prepareSorting();
     // Prepare actions
     $this->addToolbar();
     $this->addSidebar();
     $this->setDocument();
     parent::display($tpl);
 }
 public function display($tpl = null)
 {
     $container = Prism\Container::getContainer();
     $this->option = JFactory::getApplication()->input->getCmd('option');
     $this->state = $this->get('State');
     $this->items = $this->get('Items');
     $this->pagination = $this->get('Pagination');
     $this->params = $this->state->get('params');
     $this->prepareItems($this->items);
     // Prepare social integration.
     $showAuthor = CrowdfundingHelper::isShowAuthor($this->items, $this->params);
     if ($showAuthor) {
         $usersIds = Prism\Utilities\ArrayHelper::getIds($this->items, 'user_id');
         $this->socialProfiles = CrowdfundingHelper::prepareIntegration($this->params->get('integration_social_platform'), $usersIds);
     }
     $this->layoutData = new stdClass();
     $this->layoutData->items = $this->items;
     $this->layoutData->params = $this->params;
     $this->layoutData->money = $this->getMoneyFormatter($container, $this->params);
     $this->layoutData->socialProfiles = $this->socialProfiles;
     $this->layoutData->imageFolder = $this->params->get('images_directory', 'images/crowdfunding');
     $this->prepareDocument();
     parent::display($tpl);
 }
 public function display($tpl = null)
 {
     $this->app = JFactory::getApplication();
     $this->option = JFactory::getApplication()->input->getCmd('option');
     $this->state = $this->get('State');
     $this->items = $this->get('Items');
     $this->pagination = $this->get('Pagination');
     // Get params
     $this->params = $this->state->get('params');
     /** @var  $this->params Joomla\Registry\Registry */
     // Prepare subcategories.
     $this->displaySubcategories = (bool) $this->params->get('category_show_subcategories', Prism\Constants::DO_NOT_DISPLAY);
     if ($this->displaySubcategories) {
         $this->prepareSubcategories();
     }
     $this->prepareItems($this->items);
     $container = Prism\Container::getContainer();
     // Prepare social integration.
     $showAuthor = CrowdfundingHelper::isShowAuthor($this->items, $this->params);
     if ($showAuthor) {
         $usersIds = Prism\Utilities\ArrayHelper::getIds($this->items, 'user_id');
         $this->socialProfiles = CrowdfundingHelper::prepareIntegration($this->params->get('integration_social_platform'), $usersIds);
     }
     $this->layoutData = new stdClass();
     $this->layoutData->items = $this->items;
     $this->layoutData->params = $this->params;
     $this->layoutData->money = $this->getMoneyFormatter($container, $this->params);
     $this->layoutData->socialProfiles = $this->socialProfiles;
     $this->layoutData->imageFolder = $this->params->get('images_directory', 'images/crowdfunding');
     // Get current category
     $categoryId = $this->app->input->getInt('id');
     $categories = Crowdfunding\Categories::getInstance('crowdfunding');
     $this->item = $categories->get($categoryId);
     $this->prepareDocument();
     parent::display($tpl);
 }
 public function display($tpl = null)
 {
     $this->option = JFactory::getApplication()->input->get('option');
     $this->state = $this->get('State');
     $this->items = $this->get('Items');
     $this->pagination = $this->get('Pagination');
     $this->params = $this->state->get('params');
     $this->money = $this->getMoneyFormatter($this->params);
     // Get user IDs.
     $usersIds = Prism\Utilities\ArrayHelper::getIds($this->items);
     // Get the number of user's project.
     $statistics = new Crowdfunding\Statistics\Users(JFactory::getDbo(), $usersIds);
     $this->projects = $statistics->getProjectsNumber();
     $this->amounts = $statistics->getAmounts();
     // Add submenu
     CrowdfundingHelper::addSubmenu($this->getName());
     // Prepare sorting data
     $this->prepareSorting();
     // Prepare actions
     $this->addToolbar();
     $this->addSidebar();
     $this->setDocument();
     parent::display($tpl);
 }
 public function display($tpl = null)
 {
     $this->option = JFactory::getApplication()->input->get('option');
     $this->items = $this->get('Items');
     $this->state = $this->get('State');
     $this->pagination = $this->get('Pagination');
     $this->params = $this->state->get('params');
     $this->displayProjectsNumber = $this->params->get('categories_show_projects_number', 0);
     $this->numberInRow = $this->params->get('categories_categories_row', 3);
     // Get description length
     $this->descriptionLength = $this->params->get('categories_description_length');
     // Load projects number.
     if ($this->displayProjectsNumber) {
         $ids = Prism\Utilities\ArrayHelper::getIds($this->items);
         $categories = new Crowdfunding\Categories();
         $categories->setDb(JFactory::getDbo());
         $this->projectsNumber = $categories->getProjectsNumber($ids, array('state' => Prism\Constants::PUBLISHED, 'approved' => Prism\Constants::APPROVED));
     }
     // Prepare items parameters.
     if (is_array($this->items) and count($this->items) > 0) {
         $this->prepareItems($this->items);
     }
     // Get layout
     $layout = $this->params->get('categories_layout', 'grid');
     $this->templateView = in_array($layout, $this->allowedLayouts, true) ? $layout : 'grid';
     // Get params
     /** @var  $params Joomla\Registry\Registry */
     $params = $this->state->get('params');
     $this->params = $params;
     // 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;
     $this->prepareDocument();
     parent::display($tpl);
 }
 protected function prepareFundersScreen()
 {
     $model = JModelLegacy::getInstance('Funders', 'CrowdfundingModel', $config = array('ignore_request' => false));
     $this->items = $model->getItems();
     // Create a currency object if I have to display funders amounts.
     $this->displayAmounts = $this->params->get('funders_display_amounts', 0);
     if ($this->displayAmounts) {
         $this->money = $this->getMoneyFormatter($this->container, $this->params);
     }
     // Prepare social integration.
     $usersIds = Prism\Utilities\ArrayHelper::getIds($this->items, 'id');
     $this->socialProfiles = CrowdfundingHelper::prepareIntegration($this->params->get('integration_social_platform'), $usersIds);
 }