public function onAfterDispatch()
 {
     $app = JFactory::getApplication();
     /** @var $app JApplicationSite */
     if ($app->isAdmin()) {
         return;
     }
     $document = JFactory::getDocument();
     /** @var $document JDocumentHtml */
     $type = $document->getType();
     if (strcmp('html', $type) !== 0) {
         return;
     }
     // It works only for GET and POST requests.
     $method = strtolower($app->input->getMethod());
     if (!in_array($method, array('get', 'post'), true)) {
         return;
     }
     // Check component enabled
     if (!JComponentHelper::isEnabled('com_crowdfunding')) {
         return;
     }
     $view = $app->input->getCmd('view');
     $option = $app->input->getCmd('option');
     $isCrowdfundingComponent = strcmp($option, 'com_crowdfunding') === 0;
     $isDetailsPage = (strcmp($option, 'com_crowdfunding') === 0 and strcmp($view, 'details') === 0);
     // Allowed views for the module Crowdfunding Details
     $allowedViewsModuleDetails = array('backing', 'embed', 'report', 'friendmail');
     $allowedViewsModuleFilters = array('discover', 'category');
     // Hide some modules if it is not details page.
     if (!$isDetailsPage) {
         $this->hideModule('mod_crowdfundinginfo');
         $this->hideModule('mod_crowdfundingprofile');
         $this->hideModule('mod_crowdfundingreporting');
     }
     // Module Crowdfunding Rewards (mod_crowdfundingrewards).
     if (!$isDetailsPage) {
         $this->hideModule('mod_crowdfundingrewards');
     } else {
         // Check project type. If the rewards are disable, hide the module.
         $projectId = $app->input->getInt('id');
         if ($projectId > 0 and !CrowdfundingHelper::isRewardsEnabled($projectId)) {
             // Hide the module Crowdfunding Rewards, if rewards are disabled.
             $this->hideModule('mod_crowdfundingrewards');
         }
     }
     // Module Crowdfunding Details (mod_crowdfundingdetails) on backing and embed pages.
     if (!$isCrowdfundingComponent or strcmp($option, 'com_crowdfunding') === 0 and !in_array($view, $allowedViewsModuleDetails, true)) {
         $this->hideModule('mod_crowdfundingdetails');
     }
     // Module Crowdfunding Filters (mod_crowdfundingfilters).
     if (!$isCrowdfundingComponent or strcmp($option, 'com_crowdfunding') === 0 and !in_array($view, $allowedViewsModuleFilters, true)) {
         $this->hideModule('mod_crowdfundingfilters');
     }
     // Module Crowdfunding Filters (mod_crowdfundingsearch).
     if (!$isCrowdfundingComponent or strcmp($option, 'com_crowdfunding') === 0 and !in_array($view, $allowedViewsModuleFilters, true)) {
         $this->hideModule('mod_crowdfundingsearch');
     }
 }
 public function onAfterDispatch()
 {
     $app = JFactory::getApplication();
     /** @var $app JApplicationSite */
     if ($app->isAdmin()) {
         return;
     }
     $document = JFactory::getDocument();
     /** @var $document JDocumentHtml */
     $type = $document->getType();
     if (strcmp("html", $type) != 0) {
         return;
     }
     // It works only for GET and POST requests.
     $method = JString::strtolower($app->input->getMethod());
     if (!in_array($method, array("get", "post"))) {
         return;
     }
     // Check component enabled
     if (!JComponentHelper::isEnabled('com_crowdfunding', true)) {
         return;
     }
     $view = $app->input->getCmd("view");
     $option = $app->input->getCmd("option");
     $isCrowdfundingComponent = strcmp($option, "com_crowdfunding") == 0;
     $isDetailsPage = (strcmp($option, "com_crowdfunding") == 0 and strcmp($view, "details") == 0);
     // Allowed views for the module Crowdfunding Details
     $allowedViewsModuleDetails = array("backing", "embed", "report");
     $allowedViewsModuleFilters = array("discover", "category");
     // Hide some modules if it is not details page.
     if (!$isDetailsPage) {
         $this->hideModule("mod_crowdfundinginfo");
         $this->hideModule("mod_crowdfundingprofile");
         $this->hideModule("mod_crowdfundingreporting");
     }
     // Module Crowdfunding Rewards (mod_crowdfundingrewards).
     if (!$isDetailsPage) {
         $this->hideModule("mod_crowdfundingrewards");
     } else {
         // Check project type. If the rewards are disable, hide the module.
         $projectId = $app->input->getInt("id");
         if (!empty($projectId)) {
             // Hide the module Crowdfunding Rewards, if rewards are disabled.
             if (!CrowdfundingHelper::isRewardsEnabled($projectId)) {
                 $this->hideModule("mod_crowdfundingrewards");
             }
         }
     }
     // Module Crowdfunding Details (mod_crowdfundingdetails) on backing and embed pages.
     if (!$isCrowdfundingComponent or strcmp($option, "com_crowdfunding") == 0 and !in_array($view, $allowedViewsModuleDetails)) {
         $this->hideModule("mod_crowdfundingdetails");
     }
     // Module Crowdfunding Filters (mod_crowdfundingfilters).
     if (!$isCrowdfundingComponent or strcmp($option, "com_crowdfunding") == 0 and !in_array($view, $allowedViewsModuleFilters)) {
         $this->hideModule("mod_crowdfundingfilters");
     }
 }
Пример #3
0
 public function display($tpl = null)
 {
     // Get model state.
     $this->state = $this->get('State');
     $this->item = $this->get("Item");
     // Get params
     $this->params = $this->state->get("params");
     if (!$this->item) {
         $this->app->enqueueMessage(JText::_("COM_CROWDFUNDING_ERROR_INVALID_PROJECT"), "notice");
         $this->app->redirect(JRoute::_(CrowdfundingHelperRoute::getDiscoverRoute(), false));
         return;
     }
     // Create an object that will contain the data during the payment process.
     $this->paymentSessionContext = Crowdfunding\Constants::PAYMENT_SESSION_CONTEXT . $this->item->id;
     $paymentSession = $this->app->getUserState($this->paymentSessionContext);
     // Create payment session object.
     if (!$paymentSession or !isset($paymentSession->step1)) {
         $paymentSession = new JData();
         $paymentSession->step1 = false;
     }
     // Images
     $this->imageFolder = $this->params->get("images_directory", "images/crowdfunding");
     // Get currency
     $this->currency = Crowdfunding\Currency::getInstance(JFactory::getDbo(), $this->params->get("project_currency"));
     $this->amount = new Crowdfunding\Amount($this->params);
     $this->amount->setCurrency($this->currency);
     // Set a link that points to project page
     $filter = JFilterInput::getInstance();
     $host = JUri::getInstance()->toString(array('scheme', 'host'));
     $host = $filter->clean($host);
     $this->item->link = $host . JRoute::_(CrowdfundingHelperRoute::getDetailsRoute($this->item->slug, $this->item->catslug), false);
     // Set a link to image
     $this->item->link_image = $host . "/" . $this->imageFolder . "/" . $this->item->image;
     // Get wizard type
     $this->wizardType = $this->params->get("backing_wizard_type", "three_steps");
     $this->fourSteps = strcmp("four_steps", $this->wizardType) != 0 ? false : true;
     // Import "crowdfundingpayment" plugins.
     JPluginHelper::importPlugin('crowdfundingpayment');
     $this->layout = $this->getLayout();
     switch ($this->layout) {
         case "step2":
             $this->prepareStep2();
             break;
         case "payment":
             $this->preparePayment($paymentSession);
             break;
         case "share":
             $this->prepareShare($paymentSession);
             break;
         default:
             //  Pledge and Rewards
             $this->prepareRewards($paymentSession);
             break;
     }
     // Get project type and check for enabled rewards.
     $this->rewardsEnabled = CrowdfundingHelper::isRewardsEnabled($this->item->id);
     // Check days left. If there is no days, disable the button.
     $this->disabledButton = "";
     if (!$this->item->days_left) {
         $this->disabledButton = 'disabled="disabled"';
     }
     $this->paymentSession = $paymentSession;
     // Prepare the data of the layout
     $this->layoutData = new JData(array("layout" => $this->layout, "item" => $this->item, "paymentSession" => $paymentSession, "rewards_enabled" => $this->rewardsEnabled));
     $this->prepareDebugMode($paymentSession);
     $this->prepareDocument();
     parent::display($tpl);
 }
Пример #4
0
                    </div>
                </div>

            </div>
    </div>

    <div class="col-md-4">
        <?php 
echo $this->loadTemplate("basic");
?>
    </div>

    <div class="col-md-4">
        <?php 
echo $this->loadTemplate("settings");
?>
    </div>
</div>

<?php 
if (CrowdfundingHelper::isRewardsEnabled($this->item->id)) {
    ?>
<div class="row">
    <div class="col-md-12">
        <?php 
    echo $this->loadTemplate("rewards");
    ?>
    </div>
</div>
<?php 
}
Пример #5
0
 public function display($tpl = null)
 {
     $this->app = JFactory::getApplication();
     $this->option = $this->app->input->get('option');
     $this->state = $this->get('State');
     $this->item = $this->get('Item');
     // Get params
     $this->params = $this->state->get('params');
     if (!$this->item) {
         $this->app->enqueueMessage(JText::_('COM_CROWDFUNDING_ERROR_INVALID_PROJECT'), 'notice');
         $this->app->redirect(JRoute::_(CrowdfundingHelperRoute::getDiscoverRoute(), false));
         return;
     }
     // Create an object that will contain the data during the payment process.
     $this->paymentSessionContext = Crowdfunding\Constants::PAYMENT_SESSION_CONTEXT . $this->item->id;
     $paymentSession = $this->app->getUserState($this->paymentSessionContext);
     // Create payment session object.
     if (!$paymentSession or !isset($paymentSession->step1)) {
         $paymentSession = $this->createPaymentSession();
     }
     // Images
     $this->imageFolder = $this->params->get('images_directory', 'images/crowdfunding');
     // Get currency
     $this->currency = Crowdfunding\Currency::getInstance(JFactory::getDbo(), $this->params->get('project_currency'));
     $this->amount = new Crowdfunding\Amount($this->params);
     $this->amount->setCurrency($this->currency);
     // Set a link that points to project page
     $filter = JFilterInput::getInstance();
     $host = JUri::getInstance()->toString(array('scheme', 'host'));
     $host = $filter->clean($host);
     $this->item->link = $host . JRoute::_(CrowdfundingHelperRoute::getDetailsRoute($this->item->slug, $this->item->catslug), false);
     // Set a link to image
     $this->item->link_image = $host . '/' . $this->imageFolder . '/' . $this->item->image;
     // Get wizard type
     $this->wizardType = $this->params->get('backing_wizard_type', 'three_steps');
     $this->fourSteps = strcmp('four_steps', $this->wizardType) === 0;
     // Import 'crowdfundingpayment' plugins.
     JPluginHelper::importPlugin('crowdfundingpayment');
     $this->layout = $this->getLayout();
     switch ($this->layout) {
         case 'step2':
             // Step 2 on wizard in four steps.
             $this->prepareStep2();
             break;
         case 'payment':
             // Step 2
             $paymentSession = $this->preparePayment($paymentSession);
             break;
         case 'share':
             // Step 3
             $paymentSession = $this->prepareShare($paymentSession);
             break;
         default:
             //  Step 1 ( Rewards )
             $paymentSession = $this->prepareRewards($paymentSession);
             break;
     }
     // Get project type and check for enabled rewards.
     $this->rewardsEnabled = CrowdfundingHelper::isRewardsEnabled($this->item->id);
     // Check days left. If there is no days, disable the button.
     $this->disabledButton = '';
     if (!$this->item->days_left) {
         $this->disabledButton = 'disabled="disabled"';
     }
     // Prepare the data of the layout
     $this->layoutData = new JData(array('layout' => $this->layout, 'item' => $this->item, 'paymentSession' => $paymentSession, 'rewards_enabled' => $this->rewardsEnabled));
     $this->prepareDebugMode($paymentSession);
     $this->prepareDocument();
     $this->paymentSession = $paymentSession;
     // Store the new values of the payment process to the user session.
     $this->app->setUserState($this->paymentSessionContext, $paymentSession);
     parent::display($tpl);
 }