/**
  * 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'));
 }
Beispiel #2
0
 /**
  * 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');
 }
Beispiel #3
0
 /**
  * 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();
 }
Beispiel #4
0
 /**
  * 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');
     }
 }
Beispiel #5
0
 /**
  * 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')));
 }
Beispiel #6
0
 /**
  * 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();
     }
 }
Beispiel #7
0
 /**
  * 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');
     }
 }
Beispiel #8
0
 /**
  * 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');
 }
Beispiel #9
0
 /**
  * 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');
     }
 }
Beispiel #10
0
 /**
  * Place URL into engine's endpoints
  * 
  * @return void
  */
 protected function doActionLocate()
 {
     $engines = \XLite\Core\Request::getInstance()->engines;
     if ($engines) {
         foreach ($this->getEngines() as $key => $engine) {
             if (in_array($key, $engines)) {
                 $url = urlencode(\XLite::getInstance()->getShopURL(\XLite\Core\Converter::buildURL('sitemap', '', array(), \XLite::CART_SELF)));
                 $url = str_replace('%url%', $url, $engine['url']);
                 $request = new \XLite\Core\HTTP\Request($url);
                 $response = $request->sendRequest();
                 if (200 == $response->code) {
                     \XLite\Core\TopMessage::addInfo('Site map successfully registred on X', array('engine' => $key));
                 } else {
                     \XLite\Core\TopMessage::addWarning('Site map has not been registred in X', array('engine' => $key));
                 }
             }
         }
     }
 }
Beispiel #11
0
 /**
  * Do action 'Update'
  *
  * @return void
  */
 public function doActionUpdate()
 {
     $isUpdated = false;
     $postedData = \XLite\Core\Request::getInstance()->getData();
     $a2cpEnableForDropping = !empty($postedData['a2cp_enable_for_dropping']);
     if ($a2cpEnableForDropping != \XLite\Core\Config::getInstance()->XC->Add2CartPopup->a2cp_enable_for_dropping) {
         \XLite\Core\Database::getRepo('\\XLite\\Model\\Config')->createOption(array('category' => 'XC\\Add2CartPopup', 'name' => 'a2cp_enable_for_dropping', 'value' => $a2cpEnableForDropping ? 'Y' : 'N'));
         $isUpdated = true;
     }
     $options = array();
     if (isset($postedData['data']) && is_array($postedData['data'])) {
         foreach ($postedData['data'] as $code => $info) {
             $options[$code] = array('position' => $info['position'], 'enabled' => $info['enabled']);
         }
         \XLite\Core\Database::getRepo('\\XLite\\Model\\Config')->createOption(array('category' => 'XC\\Add2CartPopup', 'name' => 'product_sources', 'value' => serialize($options)));
         $isUpdated = true;
     }
     if ($isUpdated) {
         \XLite\Core\TopMessage::addInfo('Add to Cart popup module settings have been updated.');
     }
 }
Beispiel #12
0
 /**
  * Apply coupon to the cart
  *
  * @return void
  */
 protected function doActionAdd()
 {
     $code = (string) \XLite\Core\Request::getInstance()->code;
     /** @var \XLite\Module\CDev\Coupons\Model\Coupon $coupon */
     $coupon = \XLite\Core\Database::getRepo('XLite\\Module\\CDev\\Coupons\\Model\\Coupon')->findOneByCode($code);
     $cart = $this->getCart();
     if ($coupon) {
         $error = $this->checkCompatibility($coupon, $cart);
     } else {
         $error = static::t('There is no such a coupon, please check the spelling: X', array('code' => $code));
     }
     if ('' === $error) {
         $cart->addCoupon($coupon);
         \XLite\Core\Database::getEM()->flush();
         $this->updateCart();
         \XLite\Core\TopMessage::addInfo('The coupon has been applied to your order');
     } elseif ($error) {
         \XLite\Core\Event::invalidElement('code', $error);
     }
     $this->setPureAction();
 }
Beispiel #13
0
 /**
  * Update payment method
  *
  * @return void
  */
 protected function doActionUpdate()
 {
     $settings = \XLite\Core\Request::getInstance()->settings;
     $m = $this->getPaymentMethod();
     if (!$m) {
         \XLite\Core\TopMessage::addError('An attempt to update settings of unknown payment method');
     } else {
         if (is_array($settings)) {
             foreach ($settings as $name => $value) {
                 $m->setSetting($name, $value);
             }
         }
         $properties = \XLite\Core\Request::getInstance()->properties;
         if (is_array($properties) && !empty($properties)) {
             $m->map($properties);
         }
         \XLite\Core\Database::getRepo('\\XLite\\Model\\Payment\\Method')->update($m);
         \XLite\Core\TopMessage::addInfo('The settings of payment method successfully updated');
         $this->setReturnURL($this->buildURL('payment_settings'));
     }
 }
Beispiel #14
0
 /**
  * Place URL into engine's endpoints
  *
  * @return void
  */
 protected function doActionLocate()
 {
     $engines = \XLite\Core\Request::getInstance()->engines;
     if ($engines) {
         foreach ($this->getEngines() as $key => $engine) {
             if (in_array($key, $engines)) {
                 $url = urlencode(\XLite::getInstance()->getShopURL(\XLite\Core\Converter::buildURL('sitemap', '', array(), \XLite::getCustomerScript())));
                 $url = str_replace('%url%', $url, $engine['url']);
                 $request = new \XLite\Core\HTTP\Request($url);
                 $response = $request->sendRequest();
                 if (200 == $response->code) {
                     \XLite\Core\TopMessage::addInfo('Site map successfully registred on X', array('engine' => $key));
                 } else {
                     \XLite\Core\TopMessage::addWarning('Site map has not been registred in X', array('engine' => $key));
                 }
             }
         }
     }
     $postedData = \XLite\Core\Request::getInstance()->getData();
     $options = \XLite\Core\Database::getRepo('\\XLite\\Model\\Config')->findBy(array('category' => $this->getOptionsCategory()));
     $isUpdated = false;
     foreach ($options as $key => $option) {
         $name = $option->getName();
         $type = $option->getType();
         if (isset($postedData[$name]) || 'checkbox' == $type) {
             if ('checkbox' == $type) {
                 $option->setValue(isset($postedData[$name]) ? 'Y' : 'N');
             } else {
                 $option->setValue($postedData[$name]);
             }
             $isUpdated = true;
             \XLite\Core\Database::getEM()->persist($option);
         }
     }
     if ($isUpdated) {
         \XLite\Core\Database::getEM()->flush();
     }
 }
Beispiel #15
0
 /**
  * doActionConfirm
  *
  * @return void
  */
 protected function doActionConfirm()
 {
     if ($this->get('email') && \XLite\Core\Request::getInstance()->request_id && $this->doPasswordRecovery($this->get('email'), \XLite\Core\Request::getInstance()->request_id)) {
         \XLite\Core\TopMessage::addInfo('Please create a new password');
         $this->setReturnURL($this->buildURL());
         \XLite\Core\Event::recoverPasswordDone(array('email' => $this->get('email')));
     }
 }
Beispiel #16
0
 /**
  * Add top message
  *
  * @return void
  */
 protected function addDataDeletedTopMessage()
 {
     \XLite\Core\TopMessage::addInfo('Data have been deleted successfully');
 }
Beispiel #17
0
 /**
  * Add top message
  *
  * @return void
  */
 protected function addDataSavedTopMessage()
 {
     if ('create' !== $this->currentAction) {
         \XLite\Core\TopMessage::addInfo('The category has been updated');
     } else {
         \XLite\Core\TopMessage::addInfo('The category has been added');
     }
 }
Beispiel #18
0
 /**
  * Request for upgrade
  *
  * @return void
  */
 protected function doActionRequestForUpgrade()
 {
     $modules = \XLite\Upgrade\Cell::getInstance()->getIncompatibleModules();
     if ($modules) {
         $result = \XLite\Core\Marketplace::getInstance()->requestForUpgrade($modules);
         if (!empty($result) && $result[\XLite\Core\Marketplace::FIELD_IS_REQUEST_FOR_UPGRADE_SENT]) {
             \XLite\Core\TopMessage::addInfo('Your request has been sent successfully');
         } else {
             \XLite\Core\TopMessage::addWarning('An error occurred while sending the request');
         }
     }
 }
Beispiel #19
0
 /**
  * Do action disable
  *
  * @return void
  */
 protected function doActionDisable()
 {
     $select = \XLite\Core\Request::getInstance()->select;
     if ($select && is_array($select)) {
         \XLite\Core\Database::getRepo('\\XLite\\Model\\Country')->updateInBatchById(array_fill_keys(array_keys($select), array('enabled' => false)));
         \XLite\Core\TopMessage::addInfo('Countries information has been successfully updated');
     } else {
         \XLite\Core\TopMessage::addWarning('Please select the countries first');
     }
 }
Beispiel #20
0
 /**
  * Decorator run this method at the end of cache rebuild
  *
  * @return void
  */
 public static function runBuildCacheHandler()
 {
     $language = \XLite\Core\Database::getRepo('\\XLite\\Model\\Language')->findOneByCode(static::LANG_CODE);
     if (isset($language)) {
         if (!$language->getEnabled()) {
             $language->setEnabled(true);
             \XLite\Core\Database::getRepo('\\XLite\\Model\\Language')->update($language);
             \XLite\Core\TopMessage::addInfo('The X language has been added and enabled successfully', array('language' => $language->getName()), $language->getCode());
         }
         \XLite\Core\Translation::getInstance()->reset();
     } else {
         \XLite\Core\TopMessage::addError('The language you want to add has not been found');
     }
 }
Beispiel #21
0
 /**
  * Import payment methods from X-Payments and return error or warning message (if any)
  *
  * @return void
  */
 public function importPaymentMethods()
 {
     $list = \XLite\Module\CDev\XPaymentsConnector\Core\XPaymentsClient::getInstance()->requestPaymentMethods();
     if (is_array($list) && !empty($list)) {
         foreach ($this->getPaymentMethods() as $pm) {
             if (!$this->checkMethodInImportedList($pm, $list)) {
                 \XLite\Core\Database::getEM()->remove($pm);
             }
         }
         foreach ($list as $settings) {
             if (!isset($settings['paymentMethodId'])) {
                 // Create new payment method
                 $pm = new \XLite\Model\Payment\Method();
                 \XLite\Core\Database::getEM()->persist($pm);
                 $xpModuleClass = $this->detectModuleClass($settings);
                 $pm->setClass('Module\\CDev\\XPaymentsConnector\\Model\\Payment\\Processor\\XPayments');
                 $pm->setServiceName('XPayments.' . $xpModuleClass);
                 $pm->setName($settings['moduleName']);
                 $pm->setType(\XLite\Model\Payment\Method::TYPE_CC_GATEWAY);
                 $pm->setOrderby(static::getPaymentMethodOrderby('XPayments.' . $xpModuleClass));
                 $pm->setAdded(true);
                 // Tokenization is disabled by default
                 $pm->setSetting('saveCards', 'N');
             } else {
                 // Use existsting payment method
                 $pm = \XLite\Core\Database::getRepo('XLite\\Model\\Payment\\Method')->find($settings['paymentMethodId']);
             }
             $this->setPaymentMethodSettings($pm, $settings);
         }
         \XLite\Core\Database::getEM()->flush();
         \XLite\Core\TopMessage::addInfo('Payment methods have been imported successfully');
     } elseif (is_array($list)) {
         \XLite\Core\TopMessage::addWarning('There are no payment configurations for this store.');
     } else {
         \XLite\Core\TopMessage::addError('Error had occured during the requesting of payment methods from X-Payments. See log files for details.');
     }
 }
Beispiel #22
0
 /**
  * Add top message
  *
  * @return void
  */
 protected function addDataSavedTopMessage()
 {
     if ('create' != $this->currentAction) {
         if ($this->updateMessage) {
             \XLite\Core\TopMessage::addInfo($this->updateMessage);
         }
     } else {
         if ($this->createMessage) {
             \XLite\Core\TopMessage::addInfo($this->createMessage);
         }
     }
 }
Beispiel #23
0
 /**
  * Update model
  *
  * @return void
  */
 protected function doActionUpdate()
 {
     $data = $this->getRequestData();
     $review = $this->getReview();
     $status = false == \XLite\Core\Config::getInstance()->XC->Reviews->disablePendingReviews || empty($data['review']) ? \XLite\Module\XC\Reviews\Model\Review::STATUS_APPROVED : \XLite\Module\XC\Reviews\Model\Review::STATUS_PENDING;
     $review->setStatus($status);
     $review->map($data);
     \XLite\Core\Database::getEM()->flush();
     $this->updateReviewIds($review);
     \XLite\Core\TopMessage::addInfo(static::t('Your review has been updated. Thank your for sharing your opinion with us!'));
 }
 /**
  * Change product attribute values
  *
  * @return void
  */
 protected function doActionChange()
 {
     if ('cart' == \XLite\Core\Request::getInstance()->source) {
         $attributeValues = $this->getProduct()->prepareAttributeValues(\XLite\Core\Request::getInstance()->attribute_values);
         if ($this->saveAttributeValues($attributeValues)) {
             $this->updateCart();
             \XLite\Core\Database::getEM()->flush();
             \XLite\Core\TopMessage::addInfo('Attributes have been successfully changed');
             $this->checkItemsAmount();
             $this->setSilenceClose();
         } else {
             $message = $this->getErrorMessage();
             \XLite\Core\TopMessage::addError($message);
             \XLite\Core\Session::getInstance()->error_message = static::t($message);
             $this->setInternalRedirect();
             $this->internalError = true;
         }
     }
 }
Beispiel #25
0
 /**
  * Set sale price parameters for products list
  *
  * @param resource $stream Stream
  *
  * @return void
  */
 protected function addFromStreamAction($stream)
 {
     $product = \XLite\Core\Database::getRepo('XLite\\Model\\Product')->find(\XLite\Core\Request::getInstance()->product_id);
     if (!is_resource($stream)) {
         \XLite\Logger::getInstance()->log('No valid resource supplied to add pin codes controller.' . ' Data type: ' . gettype($stream), LOG_ERR);
         \XLite\Core\TopMessage::addError('Unknown error occurred');
     } elseif (!$product) {
         \XLite\Logger::getInstance()->log('No valid product id supplied to add pin codes controller.' . ' Request data: ' . print_r(\XLite\Core\Request::getInstance()->getData(), true), LOG_ERR);
         \XLite\Core\TopMessage::addError('Unknown error occurred');
     } else {
         $codes = array();
         $created = 0;
         $duplicates = 0;
         $exceededLength = 0;
         $maxLength = 64;
         for ($data = fgetcsv($stream); false !== $data; $data = fgetcsv($stream)) {
             $code = trim($data[0]);
             if (strlen($code) > $maxLength) {
                 $exceededLength++;
                 $code = '';
             }
             if (!empty($code)) {
                 $existing = \XLite\Core\Database::getRepo('XLite\\Module\\CDev\\PINCodes\\Model\\PinCode')->findOneBy(array('product' => $product->getId(), 'code' => $code));
                 if (!$existing) {
                     $existing = in_array($code, $codes);
                 }
                 if ($existing) {
                     $duplicates++;
                 } else {
                     $object = new \XLite\Module\CDev\PINCodes\Model\PinCode();
                     $object->setCode($code);
                     $object->setProduct($product);
                     \XLite\Core\Database::getEM()->persist($object);
                     $created++;
                 }
                 $codes[] = $code;
                 if (1000 < count($codes)) {
                     \XLite\Core\Database::getEM()->flush();
                     $codes = array();
                 }
             }
         }
         \XLite\Core\Database::getEM()->flush();
         if ($created) {
             \XLite\Core\TopMessage::addInfo(static::t('X PIN codes created successfully.', array('count' => $created)));
         }
         if ($duplicates) {
             \XLite\Core\TopMessage::addWarning(static::t('X PIN code duplicates ignored.', array('count' => $duplicates)));
         }
         if ($exceededLength) {
             \XLite\Core\TopMessage::addError(static::t('X PIN codes longer than Y characters ignored.', array('count' => $exceededLength, 'max' => $maxLength)));
         }
         if (!$created && !$duplicates && !$exceededLength) {
             \XLite\Core\TopMessage::addError(static::t('No valid code found.'));
         }
     }
 }
 /**
  * Request marketplace to resend license key info on the specified email
  *
  * @return void
  */
 protected function doActionResendKey()
 {
     $result = \XLite\Core\Marketplace::getInstance()->doResendLicenseKey(\XLite\Core\Request::getInstance()->email);
     if ($result) {
         \XLite\Core\TopMessage::addInfo('Information about free license key has been sent', array('email' => \XLite\Core\Request::getInstance()->email));
     } else {
         \XLite\Core\TopMessage::addError(\XLite\Core\Marketplace::getInstance()->getError());
     }
     $this->setReturnURL($this->buildURL('activate_free_license'));
 }
Beispiel #27
0
 /**
  * Common handler for product attachments
  *
  * @param string $methodToLoad Method to use for getting images
  * @param array  $paramsToLoad Parameters to use in attachment getter method
  *
  * @return void
  */
 protected function doActionSelectAttachmentAttachments($methodToLoad, array $paramsToLoad)
 {
     $attachment = $this->getAttachment();
     if (isset($attachment)) {
         $storage = $attachment->getStorage();
         $storage->setFilename('');
         if (call_user_func_array(array($storage, $methodToLoad), $paramsToLoad)) {
             \XLite\Core\Database::getEM()->flush();
             \XLite\Core\TopMessage::addInfo('The attachment has been successfully re-upload');
         } else {
             \XLite\Core\TopMessage::addError('Failed to re-upload attachment');
         }
     } else {
         \XLite\Core\TopMessage::addError('Failed to re-upload attachment');
     }
 }
Beispiel #28
0
 /**
  * doActionDelete
  *
  * @return void
  */
 protected function doActionDelete()
 {
     $address = $this->getAddress();
     if (isset($address)) {
         \XLite\Core\Database::getEM()->remove($address);
         \XLite\Core\Database::getEM()->flush();
         \XLite\Core\TopMessage::addInfo('Address has been deleted');
     }
 }
Beispiel #29
0
 /**
  * Perform some actions on success
  *
  * @return void
  */
 protected function postprocessSuccessActionDelete()
 {
     \XLite\Core\TopMessage::addInfo('Profile has been deleted successfully');
 }
Beispiel #30
0
 /**
  * Clear cart
  *
  * @return void
  */
 protected function doActionClear()
 {
     if (!$this->getCart()->isEmpty()) {
         foreach ($this->getCart()->getItems() as $item) {
             \XLite\Core\Database::getEM()->remove($item);
         }
         $this->getCart()->getItems()->clear();
         $this->updateCart();
     }
     \XLite\Core\TopMessage::addInfo('Item has been deleted from cart');
     $this->setReturnURL($this->buildURL('cart'));
 }