/** * Run task * * @return void */ protected function doActionRun() { $event = \XLite\Core\Request::getInstance()->event; $result = false; $errors = array(); $task = \XLite\Core\Database::getRepo('XLite\\Model\\EventTask')->findOneBy(array('name' => $event)); if ($task) { if (\XLite\Core\EventListener::getInstance()->handle($task->getName(), $task->getArguments())) { \XLite\Core\Database::getEM()->remove($task); $result = true; } $errors = \XLite\Core\EventListener::getInstance()->getErrors(); } else { \XLite\Core\Database::getRepo('XLite\\Model\\TmpVar')->removeEventState($event); } \XLite\Core\Database::getEM()->flush(); $state = \XLite\Core\Database::getRepo('XLite\\Model\\TmpVar')->getEventState($event); $this->setPureAction(true); if ($result && $state) { \XLite\Core\Event::eventTaskRun(array('percent' => \XLite\Core\Database::getRepo('XLite\\Model\\TmpVar')->getEventStatePercent($event), 'error' => !empty($errors))); } else { $result = false; } if ($errors) { foreach ($errors as $message) { \XLite\Core\TopMessage::addError($message); } $result = false; } $this->valid = $result; }
/** * Clear list * * @return void */ public function clearTopMessages() { parent::clearTopMessages(); if (\XLite\Core\CMSConnector::isCMSStarted()) { \XLite\Module\CDev\DrupalConnector\Handler::getInstance()->clearTopMessages(); } }
/** * Update membership list * * @return void */ protected function doActionUpdate() { $data = \XLite\Core\Request::getInstance()->update_memberships; if (!is_array($data)) { // TODO - add top message } else { $code = $this->getCurrentLanguage(); $flag = false; foreach ($data as $id => $row) { $m = \XLite\Core\Database::getRepo('\\XLite\\Model\\Membership')->find($id); if ($m) { $duplicate = \XLite\Core\Database::getRepo('\\XLite\\Model\\Membership')->createQueryBuilder()->andWhere('translations.name = :name', 'm.membership_id != :id')->setParameter('name', $row['name'])->setParameter('id', $id)->setMaxResults(1)->getSingleResult(); if (!is_null($duplicate)) { \XLite\Core\TopMessage::addWarning('"' . $row['name'] . '" ' . ' membership name is already in use. ' . 'Please specify another name for this membership level'); } else { \XLite\Core\Database::getRepo('\\XLite\\Model\\Membership')->update($m, $row); } $flag = true; } else { \XLite\Core\TopMessage::addError('Could not find membership ID#' . $id . ' record in the database'); } } if ($flag) { \XLite\Core\Database::getEM()->flush(); } } }
/** * Switch state * * @return void */ protected function doActionSwitch() { $value = !\XLite\Core\Config::getInstance()->XC->ThemeTweaker->edit_mode; \XLite\Core\Database::getRepo('XLite\\Model\\Config')->createOption(array('category' => 'XC\\ThemeTweaker', 'name' => 'edit_mode', 'value' => $value)); \XLite\Core\TopMessage::addInfo($value ? 'Webmaster mode is enabled' : 'Webmaster mode is disabled'); $this->setReturnURL($this->buildURL('theme_tweaker_templates')); }
/** * Validate return from Canada Post merchant registration process * * @return void */ protected function capostValidateMerchant() { $token = \XLite\Core\Request::getInstance()->{'token-id'}; $status = \XLite\Core\Request::getInstance()->{'registration-status'}; if (\XLite\Module\XC\CanadaPost\Core\Service\Platforms::REG_STATUS_SUCCESS === $status) { // Registration is complete // Send request to Canada Post server to retrieve merchant details $data = \XLite\Module\XC\CanadaPost\Core\Service\Platforms::getInstance()->callGetMerchantRegistrationInfoByToken($token); if (isset($data->merchantInfo)) { // Update Canada Post settings $this->updateCapostMerchantSettings($data->merchantInfo); // Disable wizard $this->disableCapostWizard(); \XLite\Core\TopMessage::getInstance()->addInfo('Registration process has been completed successfully.'); } else { foreach ($data->errors as $err) { \XLite\Core\TopMessage::getInstance()->addError('ERROR: [' . $err->code . '] ' . $err->description); } } } else { // An error occurred if (\XLite\Module\XC\CanadaPost\Core\Service\Platforms::REG_STATUS_CANCELLED === $status) { \XLite\Core\TopMessage::getInstance()->addError('Registration process has been canceled.'); } else { \XLite\Core\TopMessage::getInstance()->addError('Failure to finish registration process.'); } } // Remove token from the session \XLite\Core\Session::getInstance()->capost_token_id = null; \XLite\Core\Session::getInstance()->capost_token_ts = null; // Redirect back to the Canada Post settings page $this->setReturnURL($this->buildURL('capost')); }
/** * Preprocessor for no-action run * * @return void */ protected function doNoAction() { $this->restoreOrder(); if ($this->addedOrder) { $reason = $this->addedOrder->getFailureReason() ?: $this->getDefaultFailureReason(); \XLite\Core\TopMessage::addError($reason); } }
/** * doActionUpdateInventoryProducts * * @return void */ protected function doActionUpdateInventoryProducts() { // Update price and other fields \XLite\Core\Database::getRepo('\\XLite\\Model\\Product')->updateInBatchById($this->getPostedData()); // Update inventory \XLite\Core\Database::getRepo('\\XLite\\Model\\Inventory')->updateInBatchById($this->getPostedData()); \XLite\Core\TopMessage::addInfo('Inventory has been successfully updated'); }
/** * Prevent users registering by administrator * * @return void */ public function handleRequest() { if ($this->isRegisterMode() || 'delete' === \XLite\Core\Request::getInstance()->action) { \XLite\Core\TopMessage::addError('It is impossible to delete or create user accounts because your store currently works ' . 'as an integration with Drupal and shares users with Drupal. Deleting/creating user ' . 'accounts is possible via Drupal administrator interface.'); $this->markAsAccessDenied(); } return parent::handleRequest(); }
/** * Do action * * @return void */ protected function doActionConfirmWithPassword() { $password = \XLite\Core\Request::getInstance()->password; $result = null !== $password && \XLite\Core\Auth::comparePassword(\XLite\Core\Auth::getInstance()->getProfile()->getPassword(), $password); if (!$result) { \XLite\Core\TopMessage::addError('Incorrect password. Please try again.'); } \XLite\Core\Event::passwordConfirmed(array('result' => $result)); }
/** * doActionDelete * * @return void * @throws */ protected function doActionDelete() { if (\Includes\Utils\FileManager::isExists($this->sqldumpFile) && !\Includes\Utils\FileManager::deleteFile($this->sqldumpFile)) { \XLite\Core\TopMessage::addError(static::t('Unable to delete file') . ' ' . $this->sqldumpFile); } else { \XLite\Core\TopMessage::addInfo('SQL file was deleted successfully'); } $this->doRedirect(); }
/** * Check amazon S3 settings * * @return void */ protected function checkAmazonS3Settings() { $config = \XLite\Core\Config::getInstance()->CDev->AmazonS3Images; if (!function_exists('curl_init')) { \XLite\Core\TopMessage::addError('This module uses PHP\'s cURL functions which are disabled on your web server'); } elseif ($config->access_key && $config->secret_key && !\XLite\Module\CDev\AmazonS3Images\Core\S3::getInstance()->isValid()) { \XLite\Core\TopMessage::addWarning('Connection to Amazon S3 failed.' . ' Check whether the AWS Access key и AWS Secret key specified in the module settings are correct.'); } }
/** * Do action clone * * @return void */ protected function doActionSaleCancelSale() { $select = \XLite\Core\Request::getInstance()->select; if ($select && is_array($select)) { \XLite\Core\Database::getRepo('\\XLite\\Model\\Product')->updateInBatchById($this->getUpdateInfo()); \XLite\Core\TopMessage::addInfo('Products information has been successfully updated'); } else { \XLite\Core\TopMessage::addWarning('Please select the products first'); } }
/** * Do redirect customer to iDEAL server for payment * * @return void */ protected function doActionTransaction() { try { $processor = new \XLite\Module\XC\IdealPayments\Model\Payment\Processor\IdealProfessional(); $processor->doTransactionRequest(\XLite\Core\Request::getInstance()->iid, \XLite\Core\Request::getInstance()->transid); } catch (\Exception $e) { \XLite\Core\TopMessage::addError(static::t('Something wrong in the iDEAL payment module settings. Please try later or use other payment option.')); $this->setReturnURL('checkout'); } }
/** * Request probe script * * @return void */ protected function requestProbe() { $url = \XLite::getInstance()->getShopURL(\XLite\Core\Converter::buildURL('', '', array('key' => \XLite\Core\Config::getInstance()->Internal->probe_key), 'probe.php')); set_time_limit(0); $request = new \XLite\Core\HTTP\Request($url); $response = $request->sendRequest(); if (200 != $response->code) { \XLite\Core\TopMessage::addError('Measuring productivity in manual mode failed.'); } }
/** * doActionRecoverPassword * * @return void */ protected function doActionRecoverPassword() { // show recover message if email is valid if ($this->requestRecoverPassword($this->get('email'))) { $this->setReturnURL($this->buildURL('recover_password', '', array('mode' => 'recoverMessage', 'link_mailed' => 1, 'email' => $this->get('email')))); } else { $this->setReturnURL($this->buildURL('recover_password', '', array('valid' => 0))); \XLite\Core\TopMessage::addError('There is no user with specified email address'); } }
/** * This function is called if action is forbidden in demo mode * * @return void */ protected function forbidInDemoMode() { $message = $this->getForbidInDemoModeMessage(); if ($message) { \XLite\Core\TopMessage::addWarning($message); } $url = $this->getForbidInDemoModeRedirectURL(); if ($url) { \Includes\Utils\Operator::redirect($url); } }
/** * Do action * * @return void */ protected function doActionConfirmWithPassword() { $password = \XLite\Core\Request::getInstance()->password; $result = null !== $password && \XLite\Core\Auth::comparePassword(\XLite\Core\Auth::getInstance()->getProfile()->getPassword(), $password); if ($result) { echo 1; } else { \XLite\Core\TopMessage::addError('Incorrect password. Please try again.'); echo 0; } }
/** * Action 'import' * * @return void */ protected function doActionImport() { $fileName = \XLite\Core\Session::getInstance()->language_import_file; if (\Includes\Utils\FileManager::isExists($fileName)) { $result = \XLite\Core\Database::getRepo('XLite\\Model\\Language')->parseImportFile($fileName, true); \XLite\Core\Session::getInstance()->language_import_result = $result; } else { \XLite\Core\Session::getInstance()->language_import_file = null; \XLite\Core\TopMessage::addError('File not found'); } $this->setReturnURL($this->buildURL('languages')); }
/** * Set sale price parameters for products list * * @return void */ protected function doActionSetSalePrice() { $form = new \XLite\Module\CDev\Sale\View\Form\SaleSelectedDialog(); $form->getRequestData(); if ($form->getValidationMessage()) { \XLite\Core\TopMessage::addError($form->getValidationMessage()); } else { \XLite\Core\Database::getRepo('\\XLite\\Model\\Product')->updateInBatchById($this->getUpdateInfo()); \XLite\Core\TopMessage::addInfo('Products information has been successfully updated'); } $this->setReturnURL($this->buildURL('product_list', '', array('mode' => 'search'))); }
/** * Process 'Add item' success * * @return void */ protected function processAddItemSuccess() { // todo: rewrite add2cartPopup top message block // parent::processAddItemSuccess(); if (\XLite\Module\CDev\Paypal\Main::isExpressCheckoutEnabled()) { if (!\XLite\Core\Request::getInstance()->expressCheckout) { \XLite\Core\TopMessage::addInfo(new \XLite\Module\CDev\Paypal\View\Button\TopMessage\ExpressCheckout()); } } else { parent::processAddItemSuccess(); } }
/** * Return current module object * * @return \XLite\Model\Module * @throws \Exception */ public function getModule() { if (!isset($this->module)) { $this->module = \XLite\Core\Database::getRepo('\\XLite\\Model\\Module')->find($this->getModuleID()); if (!$this->module) { \XLite\Core\TopMessage::addError('Add-on does not exist.'); \XLite\Logger::getInstance()->log('Add-on does not exist (ID: ' . $this->getModuleID() . ')', LOG_ERR); $this->redirect($this->buildURL('addons_list_installed')); } } return $this->module; }
/** * X-Cart Wrapper for BitPay Library * @param \XLite\Model\Payment\Method $method */ public function __construct($method) { $this->method = $method; // Load up the BitPay library $autoloader = LC_DIR_MODULES . 'BitPay' . LC_DS . 'BitPay' . LC_DS . 'lib' . LC_DS . 'Bitpay' . LC_DS . 'xcartAutoloader.php'; if (true === file_exists($autoloader) && true === is_readable($autoloader)) { require_once $autoloader; \Bitpay\xcartAutoloader::register(); } else { \XLite\Core\TopMessage::getInstance()->addError('[Error] Unable to load BitPay library'); } }
protected function getFormURL() { $this->callEbanxLib(); $params = array(); $params = $this->getFormFields(); $response = \Ebanx\Ebanx::doRequest($params); if ($response->status == 'SUCCESS') { $checkoutURL = $response->redirect_url; } else { \XLite\Core\TopMessage::addError('Erro processando pagamento! EBANX: ' . $response->status_code . ": " . $response->status_message); return; } return $checkoutURL; }
/** * Renew egood link * * @return void */ protected function doActionEgoodsRenew() { $id = \XLite\Core\Request::GetInstance()->attachment_id; $attachment = \XLite\Core\Database::getRepo('XLite\\Module\\CDev\\Egoods\\Model\\OrderItem\\PrivateAttachment')->find($id); if (!$attachment) { \XLite\Core\TopMessage::addError('Download link did not found'); } elseif (!$attachment->isActive()) { \XLite\Core\TopMessage::addError('Download link is not active'); } else { $attachment->renew(); \XLite\Core\Database::getEM()->flush(); \XLite\Core\Mailer::sendEgoodsLinks($attachment->getItem()->getOrder()); \XLite\Core\TopMessage::addInfo('Download link is renew'); } }
/** * Login * * @return void */ protected function doActionLogin() { $profile = \XLite\Core\Auth::getInstance()->loginAdministrator(\XLite\Core\Request::getInstance()->login, \XLite\Core\Request::getInstance()->password); if (is_int($profile) && \XLite\Core\Auth::RESULT_ACCESS_DENIED === $profile) { $this->set('valid', false); \XLite\Core\TopMessage::addError('Invalid login or password'); $returnURL = $this->buildURL('login'); } elseif (isset(\XLite\Core\Session::getInstance()->lastWorkingURL)) { $returnURL = \XLite\Core\Session::getInstance()->get('lastWorkingURL'); \XLite\Core\Session::getInstance()->set('lastWorkingURL', null); } else { $returnURL = $this->buildURL(); } $this->setReturnURL($returnURL); }
/** * Common handler for pin codes import * * @param string $methodToLoad Method to use for getting file * @param array $paramsToLoad Parameters to use in getter method * * @return void */ protected function doActionSelectImportPinCodes($methodToLoad, array $paramsToLoad) { \XLite\Core\Session::getInstance()->importPinCodesCell = null; $methodToLoad .= 'Import'; $path = call_user_func_array(array($this, $methodToLoad), $paramsToLoad); if (is_array($path)) { if (!$path[0] && $path[1]) { \XLite\Core\TopMessage::addError($path[1]); } $path = $path[0]; } if ($path) { chmod($path, 0644); \XLite\Core\Session::getInstance()->pinCodesImportFile = $path; } }
/** * Return zone * * @return \XLite\Model\Zone */ public function getZone() { if (!isset($this->zone)) { if (isset(\XLite\Core\Request::getInstance()->zone_id)) { $zone = \XLite\Core\Database::getRepo('XLite\\Model\\Zone')->find(\XLite\Core\Request::getInstance()->zone_id); if (!isset($zone)) { \XLite\Core\TopMessage::addError('Requested zone does not exists'); } else { $this->zone = $zone; } } else { $this->zone = new \XLite\Model\Zone(); } } return $this->zone; }
/** * Update pin codes action handler * * @return void */ public function doActionUpdatePinCodes() { $product = $this->getProduct(); $product->setPinCodesEnabled((bool) \XLite\Core\Request::getInstance()->pins_enabled); $product->setAutoPinCodes(\XLite\Core\Request::getInstance()->autoPinCodes); if (\XLite\Core\Request::getInstance()->delete) { foreach (\XLite\Core\Request::getInstance()->delete as $id => $checked) { $obj = \XLite\Core\Database::getRepo('XLite\\Module\\CDev\\PINCodes\\Model\\PinCode')->findOneBy(array('id' => $id, 'product' => $product->getId(), 'isSold' => 0)); if ($obj) { \XLite\Core\Database::getEM()->remove($obj); } } } \XLite\Core\Database::getEM()->flush(); \XLite\Core\TopMessage::addInfo('PIN codes data have been successfully updated'); }
/** * Perform login action * * @return void */ protected function doActionLogin() { $loginApi = new \XLite\Module\CDev\Paypal\Core\Login(); $requestProcessed = false; $returnURL = ''; \XLite\Module\CDev\Paypal\Main::addLog('Login return', \XLite\Core\Request::getInstance()->getData()); if ($loginApi->checkRequest()) { $accessToken = $loginApi->createFromAuthorisationCode(\XLite\Core\Request::getInstance()->code); $profileInfo = isset($accessToken['access_token']) ? $loginApi->getUserinfo($accessToken['access_token']) : null; if ($profileInfo && !empty($profileInfo['user_id']) && !empty($profileInfo['email'])) { $profile = $this->getSocialLoginProfile($profileInfo['email'], 'PayPal', $profileInfo['user_id'], $profileInfo); if ($profile) { if ($profile->isEnabled()) { \XLite\Core\Auth::getInstance()->loginProfile($profile); $accessToken['expirationTime'] = LC_START_TIME + $accessToken['expires_in']; \XLite\Core\Session::getInstance()->paypalAccessToken = $accessToken; // We merge the logged in cart into the session cart $profileCart = $this->getCart(); $profileCart->login($profile); \XLite\Core\Database::getEM()->flush(); if ($profileCart->isPersistent()) { $this->updateCart(); } $returnURL = $this->getAuthReturnURL(); } else { \XLite\Core\TopMessage::addError('Profile is disabled'); $returnURL = $this->getAuthReturnURL(true); } } else { $provider = \XLite\Core\Database::getRepo('XLite\\Model\\Profile')->findOneBy(array('login' => $profileInfo['email'], 'order' => null))->getSocialLoginProvider(); if ($provider) { $signInVia = 'Please sign in with ' . $provider . '.'; } else { $signInVia = 'Profile with the same e-mail address already registered. ' . 'Please sign in the classic way.'; } \XLite\Core\TopMessage::addError($signInVia); $returnURL = $this->getAuthReturnURL(true); } $requestProcessed = true; } } if (!$requestProcessed) { \XLite\Core\TopMessage::addError('We were unable to process this request'); $returnURL = ''; } $this->closePopup($returnURL); }
/** * Common handler for page images. * * @param string $methodToLoad Method to use for getting images * @param array $paramsToLoad Parameters to use in image getter method * * @return void * @see ____func_see____ * @since 1.0.7 */ protected function doActionSelectPageImage($methodToLoad, array $paramsToLoad) { $pageId = intval(\XLite\Core\Request::getInstance()->objectId); $page = \XLite\Core\Database::getRepo('XLite\\Module\\CDev\\SimpleCMS\\Model\\Page')->find($pageId); $image = $page->getImage(); if (!$image) { $image = new \XLite\Module\CDev\SimpleCMS\Model\Image\Page\Image(); } if (call_user_func_array(array($image, $methodToLoad), $paramsToLoad)) { $image->setPage($page); $page->setImage($image); \XLite\Core\Database::getEM()->persist($image); \XLite\Core\Database::getEM()->flush(); \XLite\Core\TopMessage::addInfo('The image has been updated'); } else { \XLite\Core\TopMessage::addError('Failed to update page image'); } }