Skip to content

Commit 976591d

Browse files
committed
Merge branch 'main' into next
2 parents a7413b8 + 460ce65 commit 976591d

File tree

10 files changed

+123
-35
lines changed

10 files changed

+123
-35
lines changed

app/code/core/Mage/Catalog/Model/Resource/Layer/Filter/Price.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ public function loadPrices($filter, $limit, $offset = null, $lowerPrice = null,
309309
if (!is_null($upperPrice)) {
310310
$select->where("$priceExpression < " . $this->_getComparingValue($upperPrice, $filter));
311311
}
312-
$select->order("$priceExpression ASC")->limit($limit, $offset);
312+
$select->order(new Zend_Db_Expr("$priceExpression ASC"))->limit($limit, $offset);
313313

314314
return $this->_getReadAdapter()->fetchCol($select);
315315
}
@@ -372,7 +372,7 @@ public function loadNextPrices($filter, $price, $rightIndex, $upperPrice = null)
372372
if (!is_null($upperPrice)) {
373373
$pricesSelect->where("$priceExpression < " . $this->_getComparingValue($upperPrice, $filter));
374374
}
375-
$pricesSelect->order("$priceExpression DESC")->limit($rightIndex - $offset + 1, $offset - 1);
375+
$pricesSelect->order(new Zend_Db_Expr("$priceExpression DESC"))->limit($rightIndex - $offset + 1, $offset - 1);
376376

377377
return array_reverse($this->_getReadAdapter()->fetchCol($pricesSelect));
378378
}

app/code/core/Mage/CatalogInventory/Model/Stock/Item/Api/V2.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,15 @@ public function update($productId, $data)
3535
$idBySku = $product->getIdBySku($productId);
3636
$productId = $idBySku ? $idBySku : $productId;
3737

38-
$product->setStoreId($this->_getStoreId())
39-
->load($productId);
38+
/** @var Mage_CatalogInventory_Model_Stock_Item $stockItem */
39+
$stockItem = Mage::getModel('cataloginventory/stock_item')
40+
->setStoreId($this->_getStoreId())
41+
->loadByProduct($productId);
4042

41-
if (!$product->getId()) {
43+
if (!$stockItem->getId()) {
4244
$this->_fault('not_exists');
4345
}
4446

45-
$stockItem = $product->getStockItem();
4647
$stockData = array_replace($stockItem->getData(), (array)$data);
4748
$stockItem->setData($stockData);
4849

app/code/core/Mage/Core/Controller/Request/Http.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ public function getScheme()
307307
{
308308
return $this->getServer('HTTPS') == 'on'
309309
|| $this->getServer('HTTP_X_FORWARDED_PROTO') == 'https'
310-
|| (Mage::isInstalled() && Mage::app()->getStore()->isCurrentlySecure()) ?
310+
|| (Mage::isInstalled() && Mage::app()->isCurrentlySecure()) ?
311311
self::SCHEME_HTTPS :
312312
self::SCHEME_HTTP;
313313
}

app/code/core/Mage/Core/Model/App.php

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1295,6 +1295,37 @@ public function setRequest(Mage_Core_Controller_Request_Http $request)
12951295
return $this;
12961296
}
12971297

1298+
/**
1299+
* @return bool
1300+
*/
1301+
public function isCurrentlySecure()
1302+
{
1303+
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') {
1304+
return true;
1305+
}
1306+
1307+
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
1308+
return true;
1309+
}
1310+
1311+
if (isset($_SERVER['SERVER_PORT']) && ($_SERVER['SERVER_PORT'] == 443)) {
1312+
return true;
1313+
}
1314+
1315+
if (Mage::isInstalled()) {
1316+
$offloaderHeader = strtoupper(trim((string) Mage::getConfig()->getNode(Mage_Core_Model_Store::XML_PATH_OFFLOADER_HEADER, 'default')));
1317+
if ($offloaderHeader) {
1318+
$offloaderHeader = preg_replace('/[^A-Z]+/', '_', $offloaderHeader);
1319+
$offloaderHeader = strpos($offloaderHeader, 'HTTP_') === 0 ? $offloaderHeader : 'HTTP_' . $offloaderHeader;
1320+
if (!empty($_SERVER[$offloaderHeader]) && $_SERVER[$offloaderHeader] !== 'http') {
1321+
return true;
1322+
}
1323+
}
1324+
}
1325+
1326+
return false;
1327+
}
1328+
12981329
/**
12991330
* Retrieve response object
13001331
*

app/code/core/Mage/Core/Model/Store.php

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -749,34 +749,12 @@ public function isFrontUrlSecure()
749749
/**
750750
* Check if request was secure
751751
*
752+
* @deprecated
752753
* @return bool
753754
*/
754755
public function isCurrentlySecure()
755756
{
756-
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') {
757-
return true;
758-
}
759-
760-
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
761-
return true;
762-
}
763-
764-
if (isset($_SERVER['SERVER_PORT']) && ($_SERVER['SERVER_PORT'] == 443)) {
765-
return true;
766-
}
767-
768-
if (Mage::isInstalled()) {
769-
$offloaderHeader = strtoupper(trim((string) Mage::getStoreConfig(self::XML_PATH_OFFLOADER_HEADER)));
770-
if ($offloaderHeader) {
771-
$offloaderHeader = preg_replace('/[^A-Z]+/', '_', $offloaderHeader);
772-
$offloaderHeader = strpos($offloaderHeader, 'HTTP_') === 0 ? $offloaderHeader : 'HTTP_' . $offloaderHeader;
773-
if (!empty($_SERVER[$offloaderHeader]) && $_SERVER[$offloaderHeader] !== 'http') {
774-
return true;
775-
}
776-
}
777-
}
778-
779-
return false;
757+
return Mage::app()->isCurrentlySecure();
780758
}
781759

782760
/*************************************************************************************

app/code/core/Mage/Core/etc/system.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1499,6 +1499,10 @@
14991499
<show_in_default>1</show_in_default>
15001500
<show_in_website>0</show_in_website>
15011501
<show_in_store>0</show_in_store>
1502+
<comment><![CDATA[
1503+
Provide the name of the request header set by the upstream proxy to indicate a secure connection.
1504+
The header <code>X-Forwarded-Proto: https</code> is already checked by default regardless of this configuration option.
1505+
]]></comment>
15021506
</offloader_header>
15031507
</fields>
15041508
</secure>

app/code/core/Mage/Index/Model/Indexer.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -282,10 +282,10 @@ public function logEvent(Varien_Object $entity, $entityType, $eventType, $doSave
282282
* @param Varien_Object $entity
283283
* @param string $entityType
284284
* @param string $eventType
285-
* @throws Exception
286285
* @return Mage_Index_Model_Indexer
286+
* @throws Exception|Throwable
287287
*/
288-
public function processEntityAction(Varien_Object $entity, $entityType, $eventType)
288+
public function processEntityAction(Varien_Object $entity, $entityType, $eventType): Mage_Index_Model_Indexer
289289
{
290290
$event = $this->logEvent($entity, $entityType, $eventType, false);
291291
/**

app/code/core/Mage/Index/Model/Observer.php

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
*/
2020
class Mage_Index_Model_Observer
2121
{
22+
public const OLD_INDEX_EVENT_THRESHOLD_SECONDS = 24 * 60 * 60;
23+
public const OLD_INDEX_EVENT_DELETE_COUNT = 1000;
24+
2225
/**
2326
* Indexer model
2427
*
@@ -35,6 +38,7 @@ public function __construct()
3538
* Store after commit observer. Process store related indexes
3639
*
3740
* @param Varien_Event_Observer $observer
41+
* @throws Throwable
3842
*/
3943
public function processStoreSave(Varien_Event_Observer $observer)
4044
{
@@ -50,6 +54,7 @@ public function processStoreSave(Varien_Event_Observer $observer)
5054
* Store group after commit observer. Process store group related indexes
5155
*
5256
* @param Varien_Event_Observer $observer
57+
* @throws Throwable
5358
*/
5459
public function processStoreGroupSave(Varien_Event_Observer $observer)
5560
{
@@ -65,6 +70,7 @@ public function processStoreGroupSave(Varien_Event_Observer $observer)
6570
* Website save after commit observer. Process website related indexes
6671
*
6772
* @param Varien_Event_Observer $observer
73+
* @throws Throwable
6874
*/
6975
public function processWebsiteSave(Varien_Event_Observer $observer)
7076
{
@@ -80,6 +86,7 @@ public function processWebsiteSave(Varien_Event_Observer $observer)
8086
* Store after commit observer. Process store related indexes
8187
*
8288
* @param Varien_Event_Observer $observer
89+
* @throws Throwable
8390
*/
8491
public function processStoreDelete(Varien_Event_Observer $observer)
8592
{
@@ -95,6 +102,7 @@ public function processStoreDelete(Varien_Event_Observer $observer)
95102
* Store group after commit observer. Process store group related indexes
96103
*
97104
* @param Varien_Event_Observer $observer
105+
* @throws Throwable
98106
*/
99107
public function processStoreGroupDelete(Varien_Event_Observer $observer)
100108
{
@@ -110,6 +118,7 @@ public function processStoreGroupDelete(Varien_Event_Observer $observer)
110118
* Website save after commit observer. Process website related indexes
111119
*
112120
* @param Varien_Event_Observer $observer
121+
* @throws Throwable
113122
*/
114123
public function processWebsiteDelete(Varien_Event_Observer $observer)
115124
{
@@ -125,6 +134,7 @@ public function processWebsiteDelete(Varien_Event_Observer $observer)
125134
* Config data after commit observer.
126135
*
127136
* @param Varien_Event_Observer $observer
137+
* @throws Throwable
128138
*/
129139
public function processConfigDataSave(Varien_Event_Observer $observer)
130140
{
@@ -135,4 +145,57 @@ public function processConfigDataSave(Varien_Event_Observer $observer)
135145
Mage_Index_Model_Event::TYPE_SAVE
136146
);
137147
}
148+
149+
/**
150+
* Clean old index events for indexers in manual mode
151+
*
152+
* @return void
153+
* @throws Exception
154+
*/
155+
public function cleanOutdatedEvents()
156+
{
157+
$manualIndexProcessCollection = Mage::getSingleton('index/indexer')
158+
->getProcessesCollection()
159+
->addFieldToFilter('mode', Mage_Index_Model_Process::MODE_MANUAL);
160+
161+
$now = new DateTime();
162+
/** @noinspection PhpUnhandledExceptionInspection */
163+
$dateInterval = new DateInterval('PT' . self::OLD_INDEX_EVENT_THRESHOLD_SECONDS . 'S');
164+
$oldEventsThreshold = $now
165+
->sub($dateInterval)
166+
->format(Varien_Db_Adapter_Pdo_Mysql::TIMESTAMP_FORMAT);
167+
168+
$coreResource = Mage::getSingleton('core/resource');
169+
$writeConnection = $coreResource->getConnection('core_write');
170+
$indexEventTableName = $coreResource->getTableName('index/event');
171+
172+
/** @var Mage_Index_Model_Process $process */
173+
foreach ($manualIndexProcessCollection as $process) {
174+
$unprocessedEventsCollection = $process
175+
->getUnprocessedEventsCollection()
176+
->addFieldToFilter('created_at', ['lt' => $oldEventsThreshold])
177+
->load();
178+
179+
$i = 0;
180+
$eventList = [];
181+
/** @var Mage_Index_Model_Event $unprocessedEvent */
182+
foreach ($unprocessedEventsCollection as $unprocessedEvent) {
183+
$i++;
184+
$eventList[] = $unprocessedEvent->getId();
185+
if ($i === self::OLD_INDEX_EVENT_DELETE_COUNT) {
186+
break;
187+
}
188+
}
189+
190+
if (!empty($eventList)) {
191+
$where = new Zend_Db_Expr(
192+
sprintf(
193+
'event_id in (%s)',
194+
implode(',', $eventList)
195+
)
196+
);
197+
$writeConnection->delete($indexEventTableName, $where);
198+
}
199+
}
200+
}
138201
}

app/code/core/Mage/Index/etc/config.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,18 @@
2020
<version>1.6.0.0</version>
2121
</Mage_Index>
2222
</modules>
23+
<crontab>
24+
<jobs>
25+
<index_clean_events>
26+
<schedule>
27+
<cron_expr>30 */4 * * *</cron_expr>
28+
</schedule>
29+
<run>
30+
<model>index/observer::cleanOutdatedEvents</model>
31+
</run>
32+
</index_clean_events>
33+
</jobs>
34+
</crontab>
2335
<global>
2436
<helpers>
2537
<index>

app/design/adminhtml/default/default/template/page/head.phtml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,5 +50,4 @@
5050
</script>
5151

5252
<?php echo $this->helper('core/js')->getTranslatorScript() ?>
53-
<?php echo $this->getChildHtml('calendar'); ?>
54-
<?php echo $this->getChildHtml('optional_zip_countries'); ?>
53+
<?php echo $this->getChildHtml(); ?>

0 commit comments

Comments
 (0)