public function render() { if (!$this->wp->isUserLoggedIn()) { return Render::get('user/login', array()); } $customer = $this->customerService->getCurrent(); return Render::get('user/account/change_password', array('messages' => $this->messages, 'customer' => $customer, 'myAccountUrl' => $this->wp->getPermalink($this->options->getPageId(Pages::ACCOUNT)))); }
public function render() { if (!$this->wp->isUserLoggedIn()) { return Render::get('user/login', array()); } $content = $this->wp->getPostField('post_content', $this->options->getPageId(Pages::ACCOUNT)); $content = do_shortcode($content); $customer = $this->customerService->getCurrent(); $query = new \WP_Query(array('post_type' => Types::ORDER, 'post_status' => array(Status::PENDING, Status::ON_HOLD), 'posts_per_page' => $this->options->get('shopping.unpaid_orders_number'), 'meta_query' => array(array('key' => 'customer_id', 'value' => $this->wp->getCurrentUserId(), 'compare' => '=')))); $orders = $this->orderService->findByQuery($query); $permalink = get_permalink(); return Render::get('user/account', array('content' => $content, 'messages' => $this->messages, 'customer' => $customer, 'unpaidOrders' => $orders, 'editBillingAddressUrl' => Api::getEndpointUrl('edit-address', 'billing', $permalink), 'editShippingAddressUrl' => Api::getEndpointUrl('edit-address', 'shipping', $permalink), 'changePasswordUrl' => Api::getEndpointUrl('change-password', '', $permalink), 'myOrdersUrl' => Api::getEndpointUrl('orders', '', $permalink))); }
public function render() { if (!$this->wp->isUserLoggedIn()) { return Render::get('user/login', array()); } $order = $this->wp->getQueryParameter('orders'); $accountUrl = $this->wp->getPermalink($this->options->getPageId(Pages::ACCOUNT)); if (!empty($order) && is_numeric($order)) { $order = $this->orderService->find($order); /** @var Entity $order */ return Render::get('user/account/orders/single', array('messages' => $this->messages, 'order' => $order, 'myAccountUrl' => $accountUrl, 'listUrl' => Api::getEndpointUrl('orders', '', $accountUrl), 'showWithTax' => $this->options->get('tax.price_tax') == 'with_tax', 'getTaxLabel' => function ($taxClass) use($order) { return Tax::getLabel($taxClass, $order); })); } $customer = $this->customerService->getCurrent(); $orders = $this->orderService->findForUser($customer->getId()); return Render::get('user/account/orders', array('messages' => $this->messages, 'customer' => $customer, 'orders' => $orders, 'myAccountUrl' => $accountUrl)); }
/** * Renders page template. * * @return string Page template. */ public function render() { $content = $this->wp->getPostField('post_content', $this->options->getPageId(Pages::CHECKOUT)); $content = do_shortcode($content); $cart = $this->cartService->getCurrent(); $billingFields = $this->getBillingFields($cart->getCustomer()->getBillingAddress()); $shippingFields = $this->getShippingFields($cart->getCustomer()->getShippingAddress()); $termsUrl = ''; $termsPage = $this->options->get('advanced.pages.terms'); if ($termsPage > 0) { $termsUrl = $this->wp->getPageLink($termsPage); } $verificationMessage = $this->options->get('shopping.enable_verification_message') ? $this->options->get('shopping.verification_message') : ''; return Render::get('shop/checkout', array('cartUrl' => $this->wp->getPermalink($this->options->getPageId(Pages::CART)), 'content' => $content, 'cart' => $cart, 'messages' => $this->messages, 'shippingMethods' => $this->shippingService->getEnabled(), 'paymentMethods' => $this->paymentService->getEnabled(), 'billingFields' => $billingFields, 'shippingFields' => $shippingFields, 'showWithTax' => $this->options->get('tax.price_tax') == 'with_tax', 'showLoginForm' => $this->options->get('shopping.show_login_form') && !$this->wp->isUserLoggedIn(), 'allowRegistration' => $this->options->get('shopping.allow_registration') && !$this->wp->isUserLoggedIn(), 'showRegistrationForm' => $this->options->get('shopping.allow_registration') && !$this->options->get('shopping.guest_purchases') && !$this->wp->isUserLoggedIn(), 'alwaysShowShipping' => $this->options->get('shipping.always_show_shipping'), 'verificationMessage' => $verificationMessage, 'differentShipping' => isset($_POST['jigoshop_order']) ? $_POST['jigoshop_order']['different_shipping_address'] == 'on' : false, 'termsUrl' => $termsUrl, 'defaultGateway' => $this->options->get('payment.default_gateway'))); }
public function render() { if (!$this->wp->isUserLoggedIn()) { return Render::get('user/login', array()); } $customer = $this->customerService->getCurrent(); switch ($this->wp->getQueryParameter('edit-address')) { case 'shipping': $address = $customer->getShippingAddress(); break; case 'billing': default: $address = $customer->getBillingAddress(); break; } return Render::get('user/account/edit_address', array('messages' => $this->messages, 'customer' => $customer, 'address' => $address, 'myAccountUrl' => $this->wp->getPermalink($this->options->getPageId(Pages::ACCOUNT)))); }
/** * Displays Google Analytics tracking code in the header as the LAST item before closing </head> tag */ public function googleAnalyticsTracking() { // Do not track admin pages if ($this->wp->isAdmin()) { return; } // Do not track shop owners if ($this->wp->currentUserCan('manage_jigoshop')) { return; } $trackingId = $this->options->get('advanced.integration.google_analytics'); if (empty($trackingId)) { return; } $userId = ''; if ($this->wp->isUserLoggedIn()) { $userId = $this->wp->getCurrentUserId(); } ?> <script type="text/javascript"> (function(i, s, o, g, r, a, m) { i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function() { (i[r].q = i[r].q || []).push(arguments) }, i[r].l = 1 * new Date(); a = s.createElement(o), m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m) })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'jigoshopGoogleAnalytics'); jigoshopGoogleAnalytics('create', '<?php echo $trackingId; ?> ', {'userId': '<?php echo $userId; ?> '}); jigoshopGoogleAnalytics('send', 'pageview'); </script> <?php }
public function processResponse() { if (isset($_GET['file'])) { try { $data = explode('.', $_GET['file']); if (count($data) != 3) { throw new Exception(__('Invalid download key. Unable to download file.', 'jigoshop')); } list($key, $id, $itemKey) = $data; $order = $this->orderService->find((int) $id); /** @var $order Order */ if ($order->getKey() !== $key) { throw new Exception(__('Invalid security key. Unable to download file.', 'jigoshop')); } if (!in_array($order->getStatus(), array(Order\Status::COMPLETED, Order\Status::PROCESSING))) { throw new Exception(__('Invalid order.', 'jigoshop')); } $item = $order->getItem($itemKey); if ($item === null) { throw new Exception(__('Product not found.', 'jigoshop')); } if ($item->getType() !== Downloadable::TYPE) { throw new Exception(__('Invalid file to download.', 'jigoshop')); } $downloads = $item->getMeta('downloads')->getValue(); if (!empty($downloads) && $downloads == 0) { throw new Exception(__('Sorry, you have reached your download limit for this file.', 'jigoshop')); } if ($this->options->get('shopping.login_for_downloads')) { if (!$this->wp->isUserLoggedIn()) { throw new Exception(__('You have to log in before you can download a file.', 'jigoshop')); } else { if ($order->getCustomer()->getId() != $this->wp->getCurrentUserId()) { throw new Exception(__('This is not your download link.', 'jigoshop')); } } } $file = $item->getMeta('file')->getValue(); if (!$file) { throw new Exception(__('File not found.', 'jigoshop')); } if (!empty($downloads)) { $item->getMeta('downloads')->setValue($downloads - 1); $this->orderService->saveItemMeta($item, $item->getMeta('downloads')); } if (!$this->wp->isMultisite()) { $site_url = $this->wp->siteUrl(); $site_url = str_replace('https:', 'http:', $site_url); $file = str_replace($this->wp->getHelpers()->trailingslashit($site_url), ABSPATH, $file); } else { $network_url = $this->wp->networkAdminUrl(); $network_url = str_replace('https:', 'http:', $network_url); $upload_dir = $this->wp->wpUploadDir(); // Try to replace network url $file = str_replace($this->wp->getHelpers()->trailingslashit($network_url), ABSPATH, $file); // Now try to replace upload URL $file = str_replace($upload_dir['baseurl'], $upload_dir['basedir'], $file); } $file = $this->wp->applyFilters('jigoshop\\downloadable\\file_path', $file, $itemKey, $order); // See if its local or remote if (strstr($file, 'http:') || strstr($file, 'https:') || strstr($file, 'ftp:')) { $isRemote = true; } else { $isRemote = false; $file = realpath($file); } // Download the file $extension = strtolower(substr(strrchr($file, '.'), 1)); switch ($extension) { case 'pdf': $type = 'application/pdf'; break; case 'exe': $type = 'application/octet-stream'; break; case 'zip': $type = 'application/zip'; break; case 'doc': $type = 'application/msword'; break; case 'xls': $type = 'application/vnd.ms-excel'; break; case 'ppt': $type = 'application/vnd.ms-powerpoint'; break; case 'gif': $type = 'image/gif'; break; case 'png': $type = 'image/png'; break; case 'jpe': case 'jpeg': case 'jpg': $type = 'image/jpg'; break; default: $type = 'application/force-download'; } $this->wp->doAction('jigoshop\\downloadable\\before_download', $file, $order); @session_write_close(); @set_time_limit(0); @ob_end_clean(); // required for IE, otherwise Content-Disposition may be ignored if (ini_get('zlib.output_compression')) { ini_set('zlib.output_compression', 'Off'); } header('Pragma: no-cache'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Robots: none'); header('Content-Type: ' . $type); header('Content-Description: File Transfer'); header('Content-Transfer-Encoding: binary'); if (strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE')) { // workaround for IE filename bug with multiple periods / multiple dots in filename header('Content-Disposition: attachment; filename="' . preg_replace('/\\./', '%2e', basename($file), substr_count(basename($file), '.') - 1) . '";'); } else { header('Content-Disposition: attachment; filename="' . basename($file) . '";'); } if ($isRemote) { header('Location: ' . $file); } else { if (file_exists($file)) { header('Content-Length: ' . filesize($file)); readfile($file); } else { throw new Exception(__('File not found.', 'jigoshop')); } } } catch (Exception $e) { $this->messages->addError($e->getMessage()); $this->wp->redirectTo($this->options->getPageId(Pages::SHOP)); } exit; } }