예제 #1
0
 public function send()
 {
     // Check for request forgeries.
     JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
     $redirectOptions = array("view" => "discover");
     $params = JComponentHelper::getParams("com_crowdfunding");
     /** @var  $params Joomla\Registry\Registry */
     if (!$params->get("security_display_friend_form", 0)) {
         $this->displayNotice(JText::_('COM_CROWDFUNDING_ERROR_CANT_SEND_MAIL'), $redirectOptions);
         return;
     }
     // Get the data from the form POST
     $data = $this->input->post->get('jform', array(), 'array');
     $itemId = Joomla\Utilities\ArrayHelper::getValue($data, "id", 0, "uint");
     // Get project
     $item = Crowdfunding\Project::getInstance(JFactory::getDbo(), $itemId);
     // Prepare redirect link
     $link = CrowdfundingHelperRoute::getEmbedRoute($item->getSlug(), $item->getCatSlug(), "email");
     $redirectOptions = array("force_direction" => $link);
     $model = $this->getModel();
     /** @var $model CrowdfundingModelFriendMail */
     $form = $model->getForm($data, false);
     /** @var $form JForm */
     if (!$form) {
         throw new Exception(JText::_("COM_CROWDFUNDING_ERROR_FORM_CANNOT_BE_LOADED"));
     }
     // Test if the data is valid.
     $validData = $model->validate($form, $data);
     // Check for validation errors.
     if ($validData === false) {
         $this->displayNotice($form->getErrors(), $redirectOptions);
         return;
     }
     try {
         $model->send($validData);
     } catch (Exception $e) {
         JLog::add($e->getMessage());
         throw new Exception(JText::_('COM_CROWDFUNDING_ERROR_SYSTEM'));
     }
     // Redirect to next page
     $this->displayMessage(JText::_("COM_CROWDFUNDING_FRIEND_MAIL_SUCCESSFULLY_SEND"), $redirectOptions);
 }
 /**
  * @param object $item
  * @param Joomla\Registry\Registry $params
  * @param string $url
  *
  * @return string
  */
 private function getEmbeded($item, $params, $url)
 {
     $html = "";
     if (!$params->get("display_embed_link", 1) and !$params->get("display_embed_button", 1) and !$params->get("display_embed_email", 1)) {
         return $html;
     }
     $html = '<div class="clearfix"></div>';
     $html .= '<div class="crowdf-embeded">';
     if ($params->get("display_embed_link", 1)) {
         $html .= '<input type="text" name="share_url" value="' . html_entity_decode($url, ENT_COMPAT, 'UTF-8') . '" class="crowdf-embeded-input" />';
     }
     if ($params->get("display_embed_button", 1)) {
         $link = JRoute::_(CrowdfundingHelperRoute::getEmbedRoute($item->slug, $item->catslug), false);
         $html .= '<a href="' . $link . '" class="btn btn-default" role="button"><span class="glyphicon glyphicon-th-large"></span> ' . JText::_("PLG_CONTENT_CROWDFUNDINGSOCIALSHARE_EMBED") . '</a>';
     }
     if ($params->get("display_embed_email", 1)) {
         $link = JRoute::_(CrowdfundingHelperRoute::getEmbedRoute($item->slug, $item->catslug, "email"), false);
         $html .= '<a class="btn btn-default" href="' . $link . '" role="button"><span class="glyphicon glyphicon-envelope"></span> ' . JText::_("PLG_CONTENT_CROWDFUNDINGSOCIALSHARE_EMAIL") . '</a>';
     }
     if ($params->get("display_follow", 0)) {
         $userId = JFactory::getUser()->get("id");
         $state = Prism\Constants::UNFOLLOWED;
         $projectId = (int) $item->id;
         $text = JText::_("PLG_CONTENT_CROWDFUNDINGSOCIALSHARE_FOLLOW");
         $class = " btn-default";
         // Load scripts.
         JHtml::_('jquery.framework');
         $doc = JFactory::getDocument();
         $doc->addScript(JUri::root() . "plugins/content/crowdfundingsocialshare/script.js");
         if ($userId) {
             $user = new Crowdfunding\User\User(JFactory::getDbo());
             $user->setId($userId);
             $followed = $user->getFollowed();
             if (in_array($projectId, $followed)) {
                 $state = Prism\Constants::FOLLOWED;
                 $text = JText::_("PLG_CONTENT_CROWDFUNDINGSOCIALSHARE_FOLLOWING");
                 $class = " btn-primary";
             }
             JText::script('PLG_CONTENT_CROWDFUNDINGSOCIALSHARE_FOLLOW');
             JText::script('PLG_CONTENT_CROWDFUNDINGSOCIALSHARE_UNFOLLOW');
             JText::script('PLG_CONTENT_CROWDFUNDINGSOCIALSHARE_FOLLOWING');
         }
         $html .= '<a href="javascript: void(0);" class="btn ' . $class . '" id="js-plgsocialshare-btn-follow" role="button" data-uid="' . (int) $userId . '" data-state="' . (int) $state . '" data-pid="' . $projectId . '">
         <span class="glyphicon glyphicon-heart"></span>
         <span id="js-plgsocialshare-btn-text">' . $text . '</span></a>';
     }
     $html .= '</div>';
     return $html;
 }
 /**
  * Generate HTML code for embeding.
  *
  * @param stdclass $item
  * @param string $host
  *
  * @return string
  */
 protected function prepareEmbedCode($item, $host)
 {
     // Generate embed link
     $embedLink = $host . JRoute::_(CrowdfundingHelperRoute::getEmbedRoute($item->slug, $item->catslug) . '&layout=widget&tmpl=component', false);
     return '<iframe src="' . $embedLink . '"" width="280px" height="560px" frameborder="0" scrolling="no"></iframe>';
 }