/** * Connect * * @return void */ public function connect() { if (\XLite::isAdminZone()) { \Includes\Utils\ConfigParser::registerConfigFile('config.demo.php'); } parent::connect(); }
/** * Return common data to send to JS * * @return array */ protected function getCommonJSData() { $data = parent::getCommonJSData(); if (!\XLite::isAdminZone()) { $data += $this->getCloudSearchInitData(); } return $data; }
/** * Return list of the form default parameters * * @return array */ protected function getDefaultParams() { $params = array(); if (\XLite::isAdminZone()) { $params = array('amount' => \XLite\Core\Request::getInstance()->amount, 'order_number' => \XLite\Core\Request::getInstance()->order_number); } return $params; }
/** * Get total rate * * @return float */ public function getTotalRate() { $total = parent::getTotalRate(); if (!\XLite::isAdminZone() && $this->getMethod()) { $total = \XLite\Module\CDev\VAT\Logic\Shipping\Tax::getInstance()->calculateRateCost($this, $total); } return $total; }
/** * Return list of required CSS files * * @return array */ public function getCSSFiles() { $list = parent::getCSSFiles(); if (!\XLite::isAdminZone()) { $list[] = 'common/grid-list.css'; } return $list; }
/** * get Shipping Method name * for Canada Post add '(Canada Post)' (except admin area, shipping methods page) * * @return string */ public function getName() { $name = parent::getName(); if ('capost' == $this->getProcessor() && !(\XLite::isAdminZone() && \XLite::getController() instanceof \XLite\Controller\Admin\ShippingMethods)) { $name = 'Canada Post ' . $name; } return $name; }
/** * Return widget default template * * @return string */ protected function getDefaultTemplate() { if (!\XLite::isAdminZone() && method_exists('\\XLite\\Core\\Request', 'isMobileDevice') && \XLite\Core\Request::isMobileDevice()) { return 'modules/Amazon/PayWithAmazon/checkout_mobile.tpl'; } else { return 'modules/Amazon/PayWithAmazon/checkout.tpl'; } }
/** * Return list of the form default parameters * * @return array */ protected function getDefaultParams() { $params = array(); if (\XLite::isAdminZone()) { $params = array('profile_id' => \XLite\Core\Request::getInstance()->profile_id); } return $params; }
/** * Return list of allowed targets * * @return array */ public static function getAllowedTargets() { $targets = parent::getAllowedTargets(); $targets[] = 'order'; if (!\XLite::isAdminZone()) { $targets[] = 'checkoutSuccess'; } return $targets; }
/** * getJSFiles * * @return array */ public function getJSFiles() { $list = parent::getJSFiles(); if (!\XLite::isAdminZone() && \XLite\Module\CDev\Paypal\Main::isExpressCheckoutEnabled() && \XLite\Module\CDev\Paypal\Main::isInContextCheckoutAvailable()) { $list[] = 'modules/CDev/Paypal/button/in_context.js'; } else { $list[] = 'modules/CDev/Paypal/button/default.js'; } return $list; }
/** * Return theme common files * * @param boolean $adminZone Admin zone flag OPTIONAL * * @return array */ protected function getThemeFiles($adminZone = null) { $list = parent::getThemeFiles($adminZone); if (!(null === $adminZone ? \XLite::isAdminZone() : $adminZone)) { $list[static::RESOURCE_CSS][] = \XLite\Module\XC\ColorSchemes\Main::getColorSchemeCSS(); if (!\XLite\Module\XC\ColorSchemes\Main::isDefaultColorScheme()) { $list[static::RESOURCE_CSS][] = array('file' => \XLite\Module\XC\ColorSchemes\Main::getColorSchemeLess(), 'media' => 'screen', 'merge' => 'bootstrap/css/bootstrap.less'); } } return $list; }
/** * Get a list of JS files required to display the widget properly * * @return array */ public function getJSFiles() { $list = parent::getJSFiles(); if (!\XLite::isAdminZone()) { $list[] = 'modules/QSL/CloudSearch/loader.js'; $list[] = 'modules/QSL/CloudSearch/init.js'; $list[] = 'modules/QSL/CloudSearch/lib/handlebars.min.js'; $list[] = 'modules/QSL/CloudSearch/lib/jquery.hoverIntent.min.js'; } return $list; }
/** * Get current language * * @return string Language code */ protected function getCurrentLanguage() { // DO NOT change call order here if (!\XLite::isAdminZone() && function_exists('drupal_multilingual') && drupal_multilingual()) { global $language; if ($language instanceof \stdClass) { $object = \XLite\Core\Database::getRepo('XLite\\Model\\Language')->findOneByCode($language->language); // DO NOT use "===" here if (isset($object) && \XLite\Model\Language::ENABLED == $object->getStatus()) { $result = $object->getCode(); } } } return isset($result) ? $result : parent::getCurrentLanguage(); }
/** * Assign price range-based search condition * * @param \Doctrine\ORM\QueryBuilder $queryBuilder Query builder * @param float $min Minimum * @param float $max Maximum * * @return void */ protected function assignPriceRangeCondition(\Doctrine\ORM\QueryBuilder $queryBuilder, $min, $max) { if (\XLite::isAdminZone()) { parent::assignPriceRangeCondition($queryBuilder, $min, $max); } else { $queryBuilder->leftJoin('p.classes', 'classes', 'WITH'); $cnd = \XLite\Module\CDev\VAT\Logic\Product\Tax::getInstance()->getSearchPriceCondition('p.price', 'classes'); if (isset($min)) { $queryBuilder->andWhere($cnd . ' > :minPrice')->setParameter('minPrice', doubleval($min)); } if (isset($max)) { $queryBuilder->andWhere($cnd . ' < :maxPrice')->setParameter('maxPrice', doubleval($max)); } } }
public function testIsAvailable() { $order = $this->getTestOrder(); $t = $order->getPaymentTransactions()->get(0); $r = $t->getData()->get(0); if (\XLite::isAdminZone()) { $r->setAccessLevel($r::ACCESS_ADMIN); $this->assertTrue($r->isAvailable(), 'check admin access'); $r->setAccessLevel($r::ACCESS_CUSTOMER); $this->assertTrue($r->isAvailable(), 'check admin access #2'); } else { $r->setAccessLevel($r::ACCESS_ADMIN); $this->assertFalse($r->isAvailable(), 'check customer access'); $r->setAccessLevel($r::ACCESS_CUSTOMER); $this->assertTrue($r->isAvailable(), 'check customer access #2'); } }
/** * Mark templates * * @return boolean */ protected function isMarkTemplates() { return !\XLite::isAdminZone() && \XLite\Module\XC\ThemeTweaker\Main::isTargetAllowed() && \XLite\Module\XC\ThemeTweaker\Main::isUserAllowed() && !\XLite\Core\Request::getInstance()->isPost() && !\XLite\Core\Request::getInstance()->isCLI() && !\XLite\Core\Request::getInstance()->isAJAX() && !\Includes\Decorator\Utils\CacheManager::isRebuildNeeded() && \XLite\Core\Config::getInstance()->XC->ThemeTweaker->edit_mode; }
/** * Check - second sidebar is visible or not * * @return boolean */ public function isSidebarSecondVisible() { return \XLite::isAdminZone() ? $this->isAdminSidebarSecondVisible() : $this->isCustomerSidebarSecondVisible(); }
/** * Adds additional condition to the query for checking if product has available membership * * @param \Doctrine\ORM\QueryBuilder $queryBuilder Query builder object * @param string $alias Entity alias OPTIONAL * * @return void */ protected function addMembershipCondition(\Doctrine\ORM\QueryBuilder $queryBuilder, $alias = null) { if (!\XLite::isAdminZone()) { $alias = $alias ?: $queryBuilder->getRootAlias(); $membership = \XLite\Core\Auth::getInstance()->getMembershipId(); $queryBuilder->linkLeft($alias . '.memberships', 'membership'); if ($membership) { $queryBuilder->andWhere('membership.membership_id = :membershipId OR membership.membership_id IS NULL')->setParameter('membershipId', \XLite\Core\Auth::getInstance()->getMembershipId()); } else { $queryBuilder->andWhere('membership.membership_id IS NULL'); } } }
/** * Return class of button panel widget * * @return string */ protected function getButtonPanelClass() { return \XLite::isAdminZone() ? '\\XLite\\View\\StickyPanel\\Model\\Model' : null; }
/** * Add some additional information for the pages inner structure which is specific for view * * @return void */ protected function preparePagesForView() { foreach ($this->pages as $k => $page) { $num = isset($page['num']) ? $page['num'] : null; $type = $page['type']; $isItem = isset($num) && in_array($type, array('item', 'first-page', 'last-page')); $isOmittedItems = 'more-pages' === $type; $isSpecialItem = !$isItem && !$isOmittedItems; $isCurrent = isset($num) && $this->isCurrentPage($num); $isSelected = $isItem && $isCurrent; $isDisabled = $isSpecialItem && $isCurrent; $isActive = !$isSelected && !$isOmittedItems && !$isDisabled && !\XLite::isAdminZone() || $isSelected && \XLite::isAdminZone(); if ($isItem || 'first-page' === $type || 'last-page' === $type) { $this->pages[$k]['text'] = $num; } elseif ($isOmittedItems) { $this->pages[$k]['text'] = '...'; } elseif ('previous-page' === $type && \XLite::isAdminZone()) { $this->pages[$k]['text'] = '«'; } elseif ('next-page' === $type && \XLite::isAdminZone()) { $this->pages[$k]['text'] = '»'; } else { $this->pages[$k]['text'] = ' '; } $this->pages[$k]['page'] = !isset($num) ? null : 'page-' . $num; $needHrefForCustomer = isset($num) && !$isSelected && !$isDisabled && !\XLite::isAdminZone(); $needHrefForAdmin = isset($num) && !$isOmittedItems && \XLite::isAdminZone(); if ($needHrefForCustomer || $needHrefForAdmin) { $this->pages[$k]['href'] = $this->buildURLByPageId($num); } $classes = array('item' => $isItem || $isSpecialItem, 'selected' => $isSelected, 'disabled' => $isDisabled, 'active' => $isActive, $this->pages[$k]['page'] => $isItem, $type => true); $css = array(); foreach ($classes as $class => $enabled) { if ($enabled) { $css[] = $class; } } $this->pages[$k]['classes'] = join(' ', $css); } }
/** * Compose URL from target, action and additional params * * @param string $target Page identifier OPTIONAL * @param string $action Action to perform OPTIONAL * @param array $params Additional params OPTIONAL * @param string $interface Interface script OPTIONAL * @param boolean $forceCleanURL Force flag - use Clean URL OPTIONAL * @param boolean $forceCuFlag Force cu flag ?? OPTIONAL * * @return string */ public static function buildURL($target = '', $action = '', array $params = array(), $interface = null, $forceCleanURL = false, $forceCuFlag = null) { $result = null; $cuFlag = null !== $forceCuFlag ? $forceCuFlag : LC_USE_CLEAN_URLS && (!\XLite::isAdminZone() || $forceCleanURL); if ($cuFlag) { $result = static::buildCleanURL($target, $action, $params); } if (null === $result) { if (null === $interface && !$cuFlag) { $interface = \XLite::getInstance()->getScript(); } $result = \Includes\Utils\Converter::buildURL($target, $action, $params, $interface); if ($cuFlag && !$result) { $result = \XLite::getInstance()->getShopURL($result, null, array()); } } return $result; }
/** * Compose URL from target, action and additional params * * @param string $target Page identifier OPTIONAL * @param string $action Action to perform OPTIONAL * @param array $params Additional params OPTIONAL * @param string $interface Interface script OPTIONAL * * @return string */ public static function buildURL($target = '', $action = '', array $params = array(), $interface = null, $forceCleanURL = false) { $result = null; $cuFlag = LC_USE_CLEAN_URLS && (!\XLite::isAdminZone() || $forceCleanURL); if ($cuFlag) { $result = static::buildCleanURL($target, $action, $params); } if (!isset($result)) { if (!isset($interface) && !$cuFlag) { $interface = \XLite::getInstance()->getScript(); } $result = \Includes\Utils\Converter::buildURL($target, $action, $params, $interface); if ($cuFlag && !$result) { $result = \XLite::getInstance()->getShopURL($result, null, array(), \Includes\Utils\URLManager::URL_OUTPUT_SHORT); } } return $result; }
/** * Check if product is accessible * * @return boolean */ public function isAvailable() { return \XLite::isAdminZone() || $this->isPublicAvailable(); }
/** * doQuery * * @param array $data Data * @param boolean $ignoreCache Flag: if true then do not get rates from cache * * @return array */ protected function doQuery($data, $ignoreCache) { $rates = array(); $key = $this->getConfigurationFingerPrint() . serialize($data); if (!$ignoreCache) { $cachedResponse = $this->getDataFromCache($key); } $response = null; if (isset($cachedResponse)) { $response = $cachedResponse; } elseif (!\XLite\Model\Shipping::isIgnoreLongCalculations()) { $APIConnector = $this->getAPIConnector(); $this->setRequestData($data); $status = false; if (\XLite\Module\XC\AuctionInc\Main::isSSAvailable()) { $status = $APIConnector->GetItemShipRateSS($response); } elseif (\XLite\Module\XC\AuctionInc\Main::isXSAvailable()) { $methods = $this->getEnabledMethods(); if (count($methods)) { $status = $APIConnector->GetItemShipRateXS($response); } } $this->logResponse($status, $data, $response); if ($status) { $this->saveDataInCache($key, $response); // drop selected shipping method to set it to cheapest if (!\XLite::isAdminZone()) { /** @var \XLite\Model\Cart $cart */ $cart = \XLite::getController()->getCart(); $cart->setShippingId(0); if ($cart->getProfile()) { $cart->getProfile()->setLastShippingId(0); } } } elseif (isset($response['ErrorList'])) { // report error $errorMessages = array(); foreach ($response['ErrorList'] as $error) { $errorMessages[] = $error['Message']; } $this->errorMsg = implode('; ', $errorMessages); } } if ($response && empty($this->errorMsg)) { $rates = $this->parseResponse($response); } else { $this->saveDataInCache($key, $response, static::CACHE_TTL); } if (!$response || empty($rates)) { // Apply fallback rate if (empty($rates) && 'N' != \XLite\Core\Config::getInstance()->XC->AuctionInc->fallbackRate) { $rateValue = $this->getFallbackRateValue($data['package']); $rate = new \XLite\Model\Shipping\Rate(); $rate->setBaseRate($rateValue); $method = $this->findMethod('FF', 'FIXEDFEE', 'Fixed fee'); $rate->setMethod($method); $rates[] = $rate; $this->errorMsg = null; } } return $rates; }
/** * Define default variant * * @return \XLite\Module\XC\ProductVariants\Model\ProductVariant */ protected function defineDefaultVariant() { $defVariant = null; if ($this->mustHaveVariants() && $this->hasVariants()) { $repo = \XLite\Core\Database::getRepo('\\XLite\\Module\\XC\\ProductVariants\\Model\\ProductVariant'); $defVariant = $repo->findOneBy(array('product' => $this, 'defaultValue' => true)); if (!$defVariant || !\XLite::isAdminZone() && $defVariant->isOutOfStock()) { $minPrice = $minPriceOutOfStock = false; $defVariantOutOfStock = null; foreach ($this->getVariants() as $variant) { if (!$variant->isOutOfStock()) { if (false === $minPrice || $minPrice > $variant->getClearPrice()) { $minPrice = $variant->getClearPrice(); $defVariant = $variant; } } elseif (!$defVariant) { if (false === $minPriceOutOfStock || $minPriceOutOfStock > $variant->getClearPrice()) { $minPriceOutOfStock = $variant->getClearPrice(); $defVariantOutOfStock = $variant; } } } $defVariant = $defVariant ?: $defVariantOutOfStock; } } return $defVariant; }
/** * Check record availability * * @return boolean */ public function isAvailable() { return \XLite::isAdminZone() && \XLite\Model\Payment\TransactionData::ACCESS_ADMIN == $this->getAccessLevel() || \XLite\Model\Payment\TransactionData::ACCESS_CUSTOMER == $this->getAccessLevel(); }
/** * Detect current view zone * * @return string */ protected static function detectCurrentViewZone() { if (\XLite\View\Mailer::isComposeRunned()) { $zone = \XLite\Model\ViewList::INTERFACE_MAIL; } elseif (\XLite\Core\Request::getInstance()->isCLI()) { $zone = \XLite\Model\ViewList::INTERFACE_CONSOLE; } elseif (\XLite::isAdminZone()) { $zone = \XLite\Model\ViewList::INTERFACE_ADMIN; } else { $zone = \XLite\Model\ViewList::INTERFACE_CUSTOMER; } return $zone; }
/** * @todo: remove since we do not use it anymore. * Use the Form classes instead * * @staticvar null $script_start * @param type $tokenIndex */ protected function attachFormID($tokenIndex) { if (\XLite::isAdminZone()) { $token = $this->tokens[$tokenIndex]; $token['name'] = empty($token['name']) ? '' : strtolower($token['name']); // sign each form with generated form_id if ('tag' == $token['type'] && 'form' == $token['name']) { $genFormId = $this->getXliteFormIDText(); $this->subst($token['end'], 0, '<fieldset><input type="hidden" name="' . \XLite::FORM_ID . '" value="' . $genFormId . '" /></fieldset>'); } // attach form_id to all links inside attributes (in case they contain javascript links) if ('attribute-value' == $token['type']) { $str = $this->getTokenText($tokenIndex); $this->_addFormIdToActions($str, $token['start']); } // attach form_id to all links inside scripts static $script_start = null; if ('tag' == $token['type'] && 'script' == $token['name']) { $script_start = $token['end']; } elseif ('close-tag' == $token['type'] && 'script' == $token['name'] && isset($script_start)) { $script_end = $token['start']; $script_body = substr($this->source, $script_start, $script_end - $script_start); $this->_addFormIdToActions($script_body, $script_start); $script_start = null; } } }
/** * Send headers * * @return void */ public static function sendHeaders() { // send no-cache headers header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); header('Cache-Control: no-store, no-cache, must-revalidate'); header('Cache-Control: post-check=0, pre-check=0', false); header('Pragma: no-cache'); header('Content-Type: text/html; charset=utf-8'); if (\XLite::isAdminZone()) { header('X-Robots-Tag: noindex, nofollow'); } foreach (\XLite\Core\URLManager::getAllowedDomains() as $domain) { header('Access-Control-Allow-Origin: ' . $domain, false); } $option = \XLite::getInstance()->getOptions(array('other', 'x_frame_options')); if (isset($option) && 'disabled' !== $option) { header('X-Frame-Options:' . $option); } }
/** * Get surcharge totals * * @return array */ public function getSurchargeTotals() { $surcharges = array(); $rawSurcharges = \XLite::isAdminZone() ? array_merge($this->getExcludeSurcharges(), $this->getIncludeSurcharges()) : $this->getExcludeSurcharges(); foreach ($rawSurcharges as $surcharge) { $code = $surcharge->getCode(); if (!isset($surcharges[$code])) { $modifierClass = $surcharge->getClass(); $surcharges[$code] = array('name' => $surcharge->getTypeName(), 'cost' => 0, 'available' => $surcharge->getAvailable(), 'count' => 0, 'lastName' => null, 'code' => $code, 'widget' => \Includes\Utils\Operator::checkIfClassExists($modifierClass) ? $modifierClass::getWidgetClass() : \XLite\Logic\Order\Modifier\AModifier::getWidgetClass(), 'object' => $surcharge); } $surcharges[$code]['cost'] += $surcharge->getValue(); $surcharges[$code]['count']++; $surcharges[$code]['lastName'] = $surcharge->getName(); $surcharges[$code]['weight'] = $surcharge->getSortingWeight(); } uasort($surcharges, function ($a, $b) { return $a['weight'] < $b['weight'] ? -1 : $a['weight'] > $b['weight']; }); return $surcharges; }