/** * @param string $orderNumber * @param string $transactionId * @return array */ public function getInstructionsByOrderNumberAndTransactionId($orderNumber, $transactionId) { $sql = "SELECT *\n FROM s_payment_paypal_plus_payment_instruction\n WHERE ordernumber = :orderNumber\n AND reference_number = :referenceNumber;"; $result = $this->db->fetchRow($sql, array('orderNumber' => $orderNumber, 'referenceNumber' => $transactionId)); if ($result) { $links = json_decode($result['links'], true); $result['links'] = $links; } return $result; }
/** * Insert articles in comparision chart * @param int $articleId s_articles.id * @throws Enlight_Exception * @return bool true/false */ public function sAddComparison($articleId) { $articleId = (int) $articleId; if (!$articleId) { return null; } // Check if this article is already noted $checkForArticle = $this->db->fetchRow("SELECT id FROM s_order_comparisons WHERE sessionID=? AND articleID=?", [$this->session->offsetGet('sessionId'), $articleId]); // Check if max. numbers of articles for one comparison-session is reached $checkNumberArticles = $this->db->fetchRow("SELECT COUNT(id) AS countArticles FROM s_order_comparisons WHERE sessionID=?", [$this->session->offsetGet('sessionId')]); if ($checkNumberArticles["countArticles"] >= $this->config->offsetGet("sMAXCOMPARISONS")) { return "max_reached"; } if (!$checkForArticle["id"]) { $articleName = $this->db->fetchOne("SELECT s_articles.name AS articleName FROM s_articles WHERE id = ?", [$articleId]); if (!$articleName) { return false; } $sql = "\n INSERT INTO s_order_comparisons (sessionID, userID, articlename, articleID, datum)\n VALUES (?,?,?,?,now())\n "; $queryNewPrice = $this->db->executeUpdate($sql, [$this->session->offsetGet('sessionId'), empty($this->session["sUserId"]) ? 0 : $this->session["sUserId"], $articleName, $articleId]); if (!$queryNewPrice) { throw new Enlight_Exception("sArticles##sAddComparison##01: Error in SQL-query"); } } return true; }
/** * @param $id * @return mixed */ public function getOptionRow($id) { $sql = 'SELECT `id`, `group_id`, `name`, `position` FROM s_article_configurator_options WHERE `id` = ?'; return $this->db->fetchRow($sql, array($id)); }
/** * Gets related pages for the given subpage * If a shop id is provided, only content for that shop is displayed * * @param array $staticPage * @param int|null $shopId * @return mixed */ private function getRelatedForSubPage($staticPage, $shopId = null) { $andWhere = ''; $siblingsParams = array('pageId' => $staticPage['id'], 'parentId' => $staticPage['parentID']); $parentParams = array('parentId' => $staticPage['parentID']); if ($shopId) { $andWhere .= ' AND (p.shop_ids IS NULL OR p.shop_ids LIKE :shopId)'; $siblingsParams['shopId'] = '%|' . $shopId . '|%'; $parentParams['shopId'] = '%|' . $shopId . '|%'; } $siblingsSql = ' SELECT p.id, p.description, p.link, p.target, IF(p.id=:pageId, 1, 0) as active, p.page_title FROM s_cms_static p WHERE p.parentID = :parentId ' . $andWhere . ' ORDER BY p.position '; $staticPage['siblingPages'] = $this->db->fetchAll($siblingsSql, $siblingsParams); $parentSql = ' SELECT p.id, p.description, p.link, p.target, p.page_title FROM s_cms_static p WHERE p.id = :parentId ' . $andWhere; $staticPage['parent'] = $this->db->fetchRow($parentSql, $parentParams); $staticPage['parent'] = $staticPage['parent'] ?: array(); return $staticPage; }
/** * Convenience function to check if there is at least one order with the * provided cleared status. * * @param int $cleared * @return boolean */ private function riskCheckClearedLevel($cleared) { if (!$this->session->offsetGet('sUserId')) { return false; } $checkOrder = $this->db->fetchRow("\n SELECT id FROM s_order\n WHERE cleared = ? AND userID = ?", array($cleared, $this->session->offsetGet('sUserId'))); return $checkOrder && $checkOrder["id"]; }
/** * Read a specific, static page (E.g. terms and conditions, etc.) * * @param int $staticId The page id * @return array|false Page data, or false if none found by given id */ public function sGetStaticPage($staticId = null) { if (empty($staticId)) { $staticId = (int) $this->front->Request()->getQuery('sCustom', $staticId); } if (empty($staticId)) { return false; } // Load static page data from database $staticPage = $this->db->fetchRow("SELECT * FROM s_cms_static WHERE id = ?", array($staticId)); if ($staticPage === false) { return false; } /** * Add support for sub pages */ if (!empty($staticPage['parentID'])) { $sql = ' SELECT p.id, p.description, p.link, p.target, IF(p.id=?, 1, 0) as active, p.page_title FROM s_cms_static p WHERE p.parentID = ? ORDER BY p.position '; $staticPage['siblingPages'] = $this->db->fetchAll($sql, array($staticId, $staticPage['parentID'])); $sql = ' SELECT p.id, p.description, p.link, p.target, p.page_title FROM s_cms_static p WHERE p.id = ? '; $staticPage['parent'] = $this->db->fetchRow($sql, array($staticPage['parentID'])); $staticPage['parent'] = $staticPage['parent'] ?: array(); } else { $sql = ' SELECT p.id, p.description, p.link, p.target, p.page_title FROM s_cms_static p WHERE p.parentID = ? ORDER BY p.position '; $staticPage['subPages'] = $this->db->fetchAll($sql, array($staticId)); } return $staticPage; }
/** * Returns the article data for the trusted shop article calculated by the current basket amount * * @param $amount * @return array */ private function getTsArticleByAmount($amount) { if (empty($amount)) { return array(); } $currency = $this->shop->getCurrency()->toArray(); $currencyForSelect = '%' . $currency['currency']; $sql = "SELECT a.id AS id,\n REPLACE(ROUND(ap.price * (100+t.tax) / 100, 2), '.', ',') AS grossFee,\n ROUND(ap.price, 2) AS netFee,\n aa.swag_trusted_range AS protectedAmountDecimal,\n aa.swag_trusted_duration AS protectionDurationInt,\n ad.ordernumber AS tsProductID\n\n FROM s_articles AS a\n INNER JOIN s_articles_attributes AS aa\n ON a.id = aa.articleID\n INNER JOIN s_articles_details AS ad\n ON a.id = ad.articleID\n INNER JOIN s_core_tax AS t\n ON t.id = a.taxID\n INNER JOIN s_articles_prices AS ap\n ON a.id = ap.articleID\n AND ap.pricegroup = 'EK'\n AND ap.from = 1\n\n WHERE aa.swag_trusted_range >= :amount AND ad.ordernumber LIKE :currency\n ORDER BY aa.swag_trusted_range ASC LIMIT 1;"; $nextProtectionItem = $this->db->fetchRow($sql, array('amount' => $amount, 'currency' => $currencyForSelect)); $nextProtectionItem['currency'] = $currency['currency']; return $nextProtectionItem; }
/** * @param int $shippingId * @param array $postData * @return array */ private function filterShippingAttributeData($shippingId, $postData) { $data = $this->db->fetchRow("SELECT * FROM s_user_shippingaddress_attributes WHERE shippingID = ?", [$shippingId]); unset($data['id']); unset($data['shippingID']); $allowedKeys = array_keys($data); foreach ($postData as $key => $value) { if (!in_array($key, $allowedKeys)) { continue; } $data[$key] = $value; } return $data; }
/** * Get article data for sAddArticle * * @param int $id Article ordernumber * @return array|false Article data, or false if none found */ private function getArticleForAddArticle($id) { $sql = "\n SELECT s_articles.id AS articleID, name AS articleName, taxID,\n additionaltext, s_articles_details.shippingfree, laststock, instock,\n s_articles_details.id as articledetailsID, ordernumber\n FROM s_articles, s_articles_details\n WHERE s_articles_details.ordernumber = ?\n AND s_articles_details.articleID = s_articles.id\n AND s_articles.active = 1\n AND (\n SELECT articleID\n FROM s_articles_avoid_customergroups\n WHERE articleID = s_articles.id AND customergroupID = ?\n ) IS NULL\n "; $article = $this->db->fetchRow($sql, array($id, $this->sSYSTEM->sUSERGROUPDATA["id"])); $article = $this->eventManager->filter('Shopware_Modules_Basket_getArticleForAddArticle_FilterArticle', $article, array("id" => $id, 'subject' => $this, "partner" => $this->sSYSTEM->_SESSION["sPartner"])); if (!$article) { return false; } $name = $this->moduleManager->Articles()->sGetArticleNameByOrderNumber($article["ordernumber"], true); if (!empty($name)) { $article["articleName"] = $name["articleName"]; $article["additionaltext"] = $name["additionaltext"]; } return $article; }
/** * Get article data for sAddArticle * * @param int $id Article ordernumber * @return array|false Article data, or false if none found */ private function getArticleForAddArticle($id) { $sql = "\n SELECT s_articles.id AS articleID, s_articles.main_detail_id, name AS articleName, taxID,\n additionaltext, s_articles_details.shippingfree, laststock, instock,\n s_articles_details.id as articledetailsID, ordernumber,\n s_articles.configurator_set_id\n FROM s_articles, s_articles_details\n WHERE s_articles_details.ordernumber = ?\n AND s_articles_details.articleID = s_articles.id\n AND s_articles.active = 1\n AND (\n SELECT articleID\n FROM s_articles_avoid_customergroups\n WHERE articleID = s_articles.id AND customergroupID = ?\n ) IS NULL\n "; $article = $this->db->fetchRow($sql, array($id, $this->sSYSTEM->sUSERGROUPDATA["id"])); $article = $this->eventManager->filter('Shopware_Modules_Basket_getArticleForAddArticle_FilterArticle', $article, array("id" => $id, 'subject' => $this, "partner" => $this->sSYSTEM->_SESSION["sPartner"])); if (!$article) { return false; } $article = $this->moduleManager->Articles()->sGetTranslation($article, $article['articleID'], "article"); $article = $this->moduleManager->Articles()->sGetTranslation($article, $article['articledetailsID'], "variant"); if ($article['configurator_set_id'] > 0) { $context = $this->contextService->getProductContext(); $product = Shopware()->Container()->get('shopware_storefront.list_product_service')->get($article['ordernumber'], $context); $product = $this->additionalTextService->buildAdditionalText($product, $context); $article['additionaltext'] = $product->getAdditional(); } return $article; }
private function createProperties($groupCount, $optionCount, $namePrefix = 'Test') { $this->propertyNames[] = $namePrefix; $this->deleteProperties($namePrefix); $this->db->insert('s_filter', array('name' => $namePrefix . '-Set', 'comparable' => 1)); $data = $this->db->fetchRow("SELECT * FROM s_filter WHERE name = '" . $namePrefix . "-Set'"); for ($i = 0; $i < $groupCount; $i++) { $this->db->insert('s_filter_options', array('name' => $namePrefix . '-Gruppe-' . $i, 'filterable' => 1)); $group = $this->db->fetchRow("SELECT * FROM s_filter_options WHERE name = '" . $namePrefix . "-Gruppe-" . $i . "'"); for ($i2 = 0; $i2 < $optionCount; $i2++) { $this->db->insert('s_filter_values', array('value' => $namePrefix . '-Option-' . $i . '-' . $i2, 'optionID' => $group['id'])); } $group['options'] = $this->db->fetchAll("SELECT * FROM s_filter_values WHERE optionID = ?", array($group['id'])); $data['groups'][] = $group; $this->db->insert('s_filter_relations', array('optionID' => $group['id'], 'groupID' => $data['id'])); } return $data; }
private function createAclResource() { // If exists: find existing SwagImportExport resource $pluginId = $this->db->fetchRow('SELECT pluginID FROM s_core_acl_resources WHERE name = ? ', ["swagimportexport"]); $pluginId = isset($pluginId['pluginID']) ? $pluginId['pluginID'] : null; if ($pluginId) { // prevent creation of new acl resource return; } $resource = new \Shopware\Models\User\Resource(); $resource->setName('swagimportexport'); $resource->setPluginId($this->getId()); foreach (['export', 'import', 'profile', 'read'] as $action) { $privilege = new \Shopware\Models\User\Privilege(); $privilege->setResource($resource); $privilege->setName($action); $this->em->persist($privilege); } $this->em->persist($resource); $this->em->flush(); }
/** * @param array $article * @return array */ protected function findExistingEntries($article) { $articleId = null; $mainDetailId = null; $detailId = null; // Try to find an existing main variant if ($article['mainNumber']) { $result = $this->db->fetchRow('SELECT ad.id, ad.articleID FROM s_articles_details ad WHERE ordernumber = ?', $article['mainNumber']); if (!empty($result)) { $mainDetailId = $result['id']; $articleId = $result['articleID']; } } // try to find the existing detail $result = $this->db->fetchRow('SELECT ad.id, ad.articleID FROM s_articles_details ad WHERE ordernumber = ?', array($article['orderNumber'])); if (!empty($result)) { $detailId = $result['id']; $articleId = $result['articleID']; } return array($mainDetailId, $articleId, $detailId); }
/** * Helper method for sAdmin::sGetPremiumDispatchSurcharge() * Calculates the surcharge for the current basket and dispatches * * @param $basket * @param $dispatches * @return float */ private function calculateDispatchSurcharge($basket, $dispatches) { $surcharge = 0; if (empty($dispatches)) { return $surcharge; } foreach ($dispatches as $dispatch) { if (empty($dispatch['calculation'])) { $from = round($basket['weight'], 3); } elseif ($dispatch['calculation'] == 1) { if ($this->config->get('sARTICLESOUTPUTNETTO') && !$this->sSYSTEM->sUSERGROUPDATA["tax"] || !$this->sSYSTEM->sUSERGROUPDATA["tax"] && $this->sSYSTEM->sUSERGROUPDATA["id"]) { $from = round($basket['amount_net'], 2); } else { $from = round($basket['amount'], 2); } } elseif ($dispatch['calculation'] == 2) { $from = round($basket['count_article']); } elseif ($dispatch['calculation'] == 3) { $from = round($basket['calculation_value_' . $dispatch['id']]); } else { continue; } $result = $this->db->fetchRow('SELECT `value` , factor FROM s_premium_shippingcosts WHERE `from` <= ? AND dispatchID = ? ORDER BY `from` DESC LIMIT 1', array($from, $dispatch['id'])); if ($result === false) { continue; } $surcharge += $result['value']; if (!empty($result['factor'])) { //die($result["factor"].">".$from); $surcharge += $result['factor'] / 100 * $from; } } return $surcharge; }
/** * @param array $article * @return bool|array */ private function getArticleNumbers(array $article) { if (empty($article['articleID']) && empty($article['articledetailsID']) && empty($article['ordernumber'])) { return false; } if (!empty($article['articledetailsID'])) { $article['articledetailsID'] = intval($article['articledetailsID']); $where = "id = {$article['articledetailsID']}"; } elseif (!empty($article['articleID'])) { $article['articleID'] = intval($article['articleID']); $where = "articleID = {$article['articleID']} AND kind = 1"; } else { $article['ordernumber'] = $this->db->quote((string) $article['ordernumber']); $where = "ordernumber = {$article['ordernumber']}"; } $sql = "SELECT id AS articledetailsID, ordernumber, articleID\n FROM s_articles_details\n WHERE {$where}"; $numbers = $this->db->fetchRow($sql); if (empty($numbers['articledetailsID'])) { return false; } return $numbers; }
/** * @return bool */ public function hasAdditionalShippingAddress() { $sql = "SHOW COLUMNS FROM `s_user_shippingaddress` LIKE 'additional_address_line1'"; $result = $this->db->fetchRow($sql); return !empty($result); }
/** * Replacement for: Shopware()->Api()->Export()->sOrderCustomers(array('orderID' => $orderId)); * * @param $orderId * @return array|false */ public function getCustomerInformationByOrderId($orderId) { $sql = <<<EOT SELECT `b`.`company` AS `billing_company`, `b`.`department` AS `billing_department`, `b`.`salutation` AS `billing_salutation`, `ub`.`customernumber`, `b`.`firstname` AS `billing_firstname`, `b`.`lastname` AS `billing_lastname`, `b`.`street` AS `billing_street`, `b`.`zipcode` AS `billing_zipcode`, `b`.`city` AS `billing_city`, `b`.`phone` AS `phone`, `b`.`phone` AS `billing_phone`, `b`.`fax` AS `fax`, `b`.`fax` AS `billing_fax`, `b`.`countryID` AS `billing_countryID`, `b`.`stateID` AS `billing_stateID`, `bc`.`countryname` AS `billing_country`, `bc`.`countryiso` AS `billing_countryiso`, `bca`.`name` AS `billing_countryarea`, `bc`.`countryen` AS `billing_countryen`, `b`.`ustid`, `ba`.`text1` AS `billing_text1`, `ba`.`text2` AS `billing_text2`, `ba`.`text3` AS `billing_text3`, `ba`.`text4` AS `billing_text4`, `ba`.`text5` AS `billing_text5`, `ba`.`text6` AS `billing_text6`, `b`.`orderID` as `orderID`, `s`.`company` AS `shipping_company`, `s`.`department` AS `shipping_department`, `s`.`salutation` AS `shipping_salutation`, `s`.`firstname` AS `shipping_firstname`, `s`.`lastname` AS `shipping_lastname`, `s`.`street` AS `shipping_street`, `s`.`zipcode` AS `shipping_zipcode`, `s`.`city` AS `shipping_city`, `s`.`stateID` AS `shipping_stateID`, `s`.`countryID` AS `shipping_countryID`, `sc`.`countryname` AS `shipping_country`, `sc`.`countryiso` AS `shipping_countryiso`, `sca`.`name` AS `shipping_countryarea`, `sc`.`countryen` AS `shipping_countryen`, `sa`.`text1` AS `shipping_text1`, `sa`.`text2` AS `shipping_text2`, `sa`.`text3` AS `shipping_text3`, `sa`.`text4` AS `shipping_text4`, `sa`.`text5` AS `shipping_text5`, `sa`.`text6` AS `shipping_text6`, `u`.*, ub.birthday, `g`.`id` AS `preisgruppe`, `g`.`tax` AS `billing_net` FROM `s_order_billingaddress` as `b` LEFT JOIN `s_order_shippingaddress` as `s` ON `s`.`orderID` = `b`.`orderID` LEFT JOIN `s_user_billingaddress` as `ub` ON `ub`.`userID` = `b`.`userID` LEFT JOIN `s_user` as `u` ON `b`.`userID` = `u`.`id` LEFT JOIN `s_core_countries` as `bc` ON `bc`.`id` = `b`.`countryID` LEFT JOIN `s_core_countries` as `sc` ON `sc`.`id` = `s`.`countryID` LEFT JOIN `s_core_customergroups` as `g` ON `u`.`customergroup` = `g`.`groupkey` LEFT JOIN s_core_countries_areas bca ON bc.areaID = bca.id LEFT JOIN s_core_countries_areas sca ON sc.areaID = sca.id LEFT JOIN s_order_billingaddress_attributes ba ON b.id = ba.billingID LEFT JOIN s_order_shippingaddress_attributes sa ON s.id = sa.shippingID WHERE `b`.`orderID`=:orderId EOT; $row = $this->db->fetchRow($sql, ['orderId' => $orderId]); return $row; }
/** * @param integer $subShopID * @return array */ protected function getMainShopDefaultPaymentId($subShopID) { $query = "SELECT `value`.value\n FROM s_core_config_elements AS element\n JOIN s_core_config_values AS `value` ON `value`.element_id = element.id\n WHERE `value`.shop_id = (SELECT main_id FROM s_core_shops WHERE id = ?)\n AND element.name = ?"; return $this->db->fetchRow($query, [$subShopID, 'defaultpayment']); }
public function sGetArticlePremiumShippingcosts($article, $payment, $country, $dispatch = null) { $basket = $this->sGetDispatchBasket($article, $country['id'], $payment['id']); if (empty($basket)) { return false; } $dispatch = $this->sGetPremiumDispatch($basket, $dispatch); if (empty($dispatch)) { return false; } if (!empty($dispatch['shippingfree']) && $dispatch['shippingfree'] <= $basket['amount'] || empty($basket['count_article']) || !empty($basket['shippingfree']) && empty($dispatch['bind_shippingfree'])) { if (empty($dispatch['surcharge_calculation'])) { return $payment['surcharge']; } else { return 0; } } if (empty($dispatch['calculation'])) { $from = round($basket['weight'], 3); } elseif ($dispatch['calculation'] == 1) { $from = round($basket['amount'], 2); } elseif ($dispatch['calculation'] == 2) { $from = round($basket['count_article']); } elseif ($dispatch['calculation'] == 3) { $from = round($basket['calculation_value_' . $dispatch['id']]); } else { return false; } $sql = "\n SELECT `value` , `factor`\n FROM `s_premium_shippingcosts`\n WHERE `from`<={$from}\n AND `dispatchID`={$dispatch['id']}\n ORDER BY `from` DESC\n LIMIT 1\n "; $result = $this->db->fetchRow($sql); if (empty($result)) { return false; } $result['shippingcosts'] = $result['value']; if (!empty($result['factor'])) { $result['shippingcosts'] += $result['factor'] / 100 * $from; } $result['surcharge'] = $this->sGetPremiumDispatchSurcharge($basket); if (!empty($result['surcharge'])) { $result['shippingcosts'] += $result['surcharge']; } $result['shippingcosts'] *= $this->sCurrency["factor"]; $result['shippingcosts'] = round($result['shippingcosts'], 2); if (!empty($payment['surcharge']) && $dispatch['surcharge_calculation'] != 2 && (empty($article['shippingfree']) || empty($dispatch['surcharge_calculation']))) { $result['shippingcosts'] += $payment['surcharge']; } return $result['shippingcosts']; }
/** * Get article taxrate by id * @param int $id article id * @return float tax or false */ public function sGetArticleTaxById($id) { $checkForArticle = $this->db->fetchRow("\n SELECT s_core_tax.tax AS tax FROM s_core_tax, s_articles WHERE s_articles.id=? AND\n s_articles.taxID = s_core_tax.id\n ", array($id)); if (isset($checkForArticle["tax"])) { return $checkForArticle["tax"]; } else { return false; } }
/** * @covers sBasket::sAddArticle */ public function testsAddArticle() { // No id, expect false $this->assertFalse($this->module->sAddArticle(null)); $this->module->sSYSTEM->sSESSION_ID = uniqid(); $this->session->offsetSet('sessionId', $this->module->sSYSTEM->sSESSION_ID); // Get random article with stock controll and add it to the basket $randomArticleOne = $this->db->fetchRow('SELECT detail.* FROM s_articles_details detail INNER JOIN s_articles article ON article.id = detail.articleID LEFT JOIN s_articles_avoid_customergroups avoid ON avoid.articleID = article.id WHERE detail.active = 1 AND laststock = 1 AND instock > 3 AND avoid.articleID IS NULL AND article.id NOT IN ( SELECT articleID FROM s_articles_avoid_customergroups WHERE customergroupID = 1 ) ORDER BY RAND() LIMIT 1'); // Adding article without quantity adds one $this->module->sAddArticle($randomArticleOne['ordernumber']); $basket = $this->module->sGetBasket(); $this->assertEquals(1, $basket['Quantity']); $this->assertEquals(1, $basket['content'][0]['quantity']); // Adding article with quantity adds correctly, finds stacks $this->module->sAddArticle($randomArticleOne['ordernumber'], 2); $basket = $this->module->sGetBasket(); $this->assertEquals(1, $basket['Quantity']); $this->assertEquals(3, $basket['content'][0]['quantity']); // Start over $this->module->sDeleteBasket(); // Adding article with quantity over stock, check that we have the available stock $this->module->sAddArticle($randomArticleOne['ordernumber'], $randomArticleOne['instock'] + 200); $basket = $this->module->sGetBasket(); $this->assertEquals(1, $basket['Quantity']); $this->assertEquals(min($randomArticleOne['instock'], 100), $basket['content'][0]['quantity']); // Start over $this->module->sDeleteBasket(); // Get random article and add it to the basket $randomArticleTwo = $this->db->fetchRow('SELECT detail.* FROM s_articles_details detail INNER JOIN s_articles article ON article.id = detail.articleID WHERE detail.active = 1 AND laststock = 0 AND instock > 20 AND instock < 70 AND article.id NOT IN ( SELECT articleID FROM s_articles_avoid_customergroups WHERE customergroupID = 1 ) ORDER BY RAND() LIMIT 1'); // Adding article with quantity over stock, check that we have the desired quantity $this->module->sAddArticle($randomArticleTwo['ordernumber'], $randomArticleTwo['instock'] + 20); $basket = $this->module->sGetBasket(); $this->assertEquals(1, $basket['Quantity']); $this->assertEquals(min($randomArticleTwo['instock'] + 20, 100), $basket['content'][0]['quantity']); // Housekeeping $this->db->delete('s_order_basket', array('sessionID = ?' => $this->session->get('sessionId'))); }
/** * Create status mail * * @param int $orderId * @param int $statusId * @param string $templateName * @return Enlight_Components_Mail */ public function createStatusMail($orderId, $statusId, $templateName = null) { $statusId = (int) $statusId; $orderId = (int) $orderId; if (empty($templateName)) { $templateName = 'sORDERSTATEMAIL' . $statusId; } if (empty($orderId) || !is_numeric($statusId)) { return; } $order = $this->getOrderForStatusMail($orderId); $orderDetails = $this->getOrderDetailsForStatusMail($orderId); if (!empty($order['dispatchID'])) { $dispatch = $this->db->fetchRow(' SELECT name, description FROM s_premium_dispatch WHERE id=? ', array($order['dispatchID'])); } $user = Shopware()->Api()->Export()->sOrderCustomers(array('orderID' => $orderId)); $user = current($user); if (empty($order) || empty($orderDetails) || empty($user)) { return; } $repository = Shopware()->Models()->getRepository('Shopware\\Models\\Shop\\Shop'); $shopId = is_numeric($order['language']) ? $order['language'] : $order['subshopID']; $shop = $repository->getActiveById($shopId); $shop->registerResources(Shopware()->Bootstrap()); /* @var $mailModel \Shopware\Models\Mail\Mail */ $mailModel = Shopware()->Models()->getRepository('Shopware\\Models\\Mail\\Mail')->findOneBy(array('name' => $templateName)); if (!$mailModel) { return; } $context = array('sOrder' => $order, 'sOrderDetails' => $orderDetails, 'sUser' => $user); if (!empty($dispatch)) { $context['sDispatch'] = $dispatch; } $result = $this->eventManager->notify('Shopware_Controllers_Backend_OrderState_Notify', array('subject' => Shopware()->Front(), 'id' => $orderId, 'status' => $statusId, 'mailname' => $templateName)); if (!empty($result)) { $context['EventResult'] = $result->getValues(); } $mail = Shopware()->TemplateMail()->createMail($templateName, $context, $shop); $return = array('content' => $mail->getPlainBodyText(), 'subject' => $mail->getPlainSubject(), 'email' => trim($user['email']), 'frommail' => $mail->getFrom(), 'fromname' => $mail->getFromName()); $return = $this->eventManager->filter('Shopware_Controllers_Backend_OrderState_Filter', $return, array('subject' => Shopware()->Front(), 'id' => $orderId, 'status' => $statusId, 'mailname' => $templateName, 'mail' => $mail, 'engine' => Shopware()->Template())); $mail->clearSubject(); $mail->setSubject($return['subject']); $mail->setBodyText($return['content']); $mail->clearFrom(); $mail->setFrom($return['frommail'], $return['fromname']); $mail->addTo($return['email']); return $mail; }
public function sMailCampaignsGetDetail($id) { $sql = "\n SELECT * FROM s_campaigns_mailings\n WHERE id={$id}\n "; $getCampaigns = $this->db->fetchRow($sql); if (!$getCampaigns) { return false; } else { // Fetch all positions $sql = "\n SELECT id, type, description, value FROM s_campaigns_containers\n WHERE promotionID={$id}\n ORDER BY position\n "; $sql = Enlight()->Events()->filter('Shopware_Modules_Marketing_MailCampaignsGetDetail_FilterSQL', $sql, array('subject' => $this, 'id' => $id)); $getCampaignContainers = $this->db->fetchAll($sql); foreach ($getCampaignContainers as $campaignKey => $campaignValue) { switch ($campaignValue["type"]) { case "ctBanner": // Query Banner $getBanner = $this->db->fetchRow("\n SELECT image, link, linkTarget, description FROM s_campaigns_banner\n WHERE parentID={$campaignValue["id"]}\n "); // Rewrite banner if ($getBanner["image"]) { $getBanner["image"] = $this->sSYSTEM->sPathBanner . $getBanner["image"]; } if (!preg_match("/http/", $getBanner["link"]) && $getBanner["link"]) { $getBanner["link"] = "http://" . $getBanner["link"]; } $getCampaignContainers[$campaignKey]["description"] = $getBanner["description"]; $getCampaignContainers[$campaignKey]["data"] = $getBanner; break; case "ctLinks": // Query links $getLinks = $this->db->fetchAll("\n SELECT description, link, target FROM s_campaigns_links\n WHERE parentID={$campaignValue["id"]}\n ORDER BY position\n "); $getCampaignContainers[$campaignKey]["data"] = $getLinks; break; case "ctArticles": $sql = "\n SELECT articleordernumber, type FROM s_campaigns_articles\n WHERE parentID={$campaignValue["id"]}\n ORDER BY position\n "; $getArticles = $this->db->fetchAll($sql); unset($articleData); $context = $this->contextService->getShopContext(); foreach ($getArticles as $article) { if ($article["type"]) { $category = $this->sSYSTEM->_GET["sCategory"] ?: $context->getShop()->getCategory()->getId(); $tmpContainer = $this->sSYSTEM->sMODULES['sArticles']->sGetPromotionById($article["type"], $category, $article['articleordernumber']); if (count($tmpContainer) && isset($tmpContainer["articleName"])) { $articleData[] = $tmpContainer; } } } $getCampaignContainers[$campaignKey]["data"] = $articleData; break; case "ctText": case "ctVoucher": $getText = $this->db->fetchRow("\n SELECT headline, html,image,alignment,link FROM s_campaigns_html\n WHERE parentID={$campaignValue["id"]}\n "); if ($getText["image"]) { $getText["image"] = $this->sSYSTEM->sPathBanner . $getText["image"]; } if (!preg_match("/http/", $getText["link"]) && $getText["link"]) { $getText["link"] = "http://" . $getText["link"]; } $getCampaignContainers[$campaignKey]["description"] = $getText["headline"]; $getCampaignContainers[$campaignKey]["data"] = $getText; break; } } $getCampaigns["containers"] = $getCampaignContainers; return $getCampaigns; } }
/** * @param $name * @return mixed */ protected function getMediaByName($name) { $media = $this->db->fetchRow('SELECT id, name, description, extension FROM s_media media WHERE media.name = ?', array($name)); return $media; }