Changeset 2794299
- Timestamp:
- 10/04/2022 11:42:43 PM (3 years ago)
- Location:
- profitori/trunk
- Files:
-
- 2 edited
-
profitori.php (modified) (7 diffs)
-
readme.txt (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
profitori/trunk/profitori.php
r2791631 r2794299 7 7 Plugin URI: https://profitori.com/ 8 8 Description: Profitori: WooCommerce ERP Plugin - Purchase Orders, Stock Management and Profit Margin Tracking 9 Version: 2.1.0. 29 Version: 2.1.0.3 10 10 Author: Unity Business Technology Pty Ltd 11 11 Text Domain: profitori … … 622 622 </style> 623 623 <?php 624 wp_deregister_script('heartbeat'); 624 625 echo "<div id='stocktend-root' data-defaultcaption='$caption'><div class=\"lds-ring\"><div></div><div></div><div></div><div></div></div></div>"; 625 626 } … … 5560 5561 function field_names_to_product_meta_joins($aNames) { 5561 5562 global $wpdb; 5563 global $prfi_subselects; 5562 5564 $res = ''; 5565 if ( $prfi_subselects ) 5566 return $res; 5563 5567 $idx = 0; 5564 5568 foreach ( $aNames as $name ) { … … 5591 5595 function get_polylang_clauses($options) { 5592 5596 global $wpdb; 5597 global $prfi_subselects; 5593 5598 $res = array("cols" => "", "joins" => ""); 5594 5599 $ignore_polylang = $options && isset($options["ignore_polylang"]) ? true : false; … … 5599 5604 return $res; 5600 5605 $db = $wpdb->prefix; 5601 $res["cols"] = ", tt.description polylang_language "; 5602 $res["joins"] = " 5603 INNER JOIN {$db}term_relationships tr ON p.ID = tr.object_id 5604 INNER JOIN {$db}term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id and tt.taxonomy = 'language' 5605 "; 5606 /* 5607 if ( $prfi_subselects ) { 5608 $res["cols"] = ", 5609 ( 5610 SELECT tt.description 5611 FROM {$db}term_relationships tr 5612 INNER JOIN {$db}term_taxonomy tt 5613 ON tr.term_taxonomy_id = tt.term_taxonomy_id and tt.taxonomy = 'language' 5614 WHERE 5615 p.ID = tr.object_id 5616 LIMIT 1 5617 ) polylang_language "; 5618 $res["joins"] = ""; 5619 } else { 5620 */ 5621 $res["cols"] = ", tt.description polylang_language "; 5622 $res["joins"] = " 5623 INNER JOIN {$db}term_relationships tr ON p.ID = tr.object_id 5624 INNER JOIN {$db}term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id and tt.taxonomy = 'language' 5625 "; 5626 /* 5627 } 5628 */ 5606 5629 return $res; 5607 5630 } … … 5609 5632 function get_prod_rows($options) { 5610 5633 global $wpdb; 5634 global $prfi_subselects; 5635 $prfi_subselects = prfi_conf_val('subselects') === 'Yes'; 5611 5636 $polylang_clauses = $this->get_polylang_clauses($options); 5612 5637 $polylang_cols = $polylang_clauses["cols"]; 5613 5638 $polylang_joins = $polylang_clauses["joins"]; 5614 5639 $fieldNames = $this->get_product_metakey_fields(); 5615 $cols = $this->field_names_to_cols($fieldNames ); // Note: secured within field_names_to_cols5640 $cols = $this->field_names_to_cols($fieldNames, true); // Note: secured within field_names_to_cols 5616 5641 $joins = $this->field_names_to_product_meta_joins($fieldNames); // Note: secured within field_names_to_product_meta_joins 5617 5642 $db = $wpdb->prefix; … … 5622 5647 else 5623 5648 $modifiedAfter = '1970-01-01 00:00:01'; 5624 $sql = $wpdb->prepare(" 5625 SELECT p.ID, 5626 p.post_title, 5627 p.post_parent, 5628 p.post_modified, 5629 CONVERT(pm.meta_value, SIGNED INTEGER) _stock, 5630 sku.meta_value _sku, 5631 COALESCE(low_stock_amount.meta_value, parent_low_stock_amount.meta_value) _low_stock_amount, 5632 regular_price.meta_value _regular_price, 5633 IF(tax_class.meta_value <> 'parent', tax_class.meta_value, parent_tax_class.meta_value) _tax_class, 5634 tax_status.meta_value _tax_status, 5635 pa.meta_value _product_attributes, 5636 IF ( p.post_status IN ('publish', 'private'), '', 'DELETE' ) __incrementalDelete 5637 $cols 5638 $polylang_cols 5639 FROM {$db}posts p 5640 LEFT JOIN {$db}postmeta pm ON (p.ID = pm.post_id AND pm.meta_key = '_stock') 5641 LEFT JOIN {$db}postmeta sku ON (p.ID = sku.post_id AND sku.meta_key = '_sku') 5642 LEFT JOIN {$db}postmeta tax_status ON 5643 (p.ID = tax_status.post_id AND tax_status.meta_key = '_tax_status') 5644 LEFT JOIN {$db}postmeta tax_class ON 5645 (p.ID = tax_class.post_id AND tax_class.meta_key = '_tax_class') 5646 LEFT JOIN {$db}postmeta low_stock_amount ON 5647 (p.ID = low_stock_amount.post_id AND low_stock_amount.meta_key = '_low_stock_amount') 5648 LEFT JOIN {$db}postmeta regular_price ON 5649 (p.ID = regular_price.post_id AND regular_price.meta_key = '_regular_price') 5650 LEFT JOIN {$db}postmeta parent_low_stock_amount ON 5651 (p.post_parent = parent_low_stock_amount.post_id AND parent_low_stock_amount.meta_key = '_low_stock_amount') 5652 LEFT JOIN {$db}postmeta parent_tax_class ON 5653 (p.post_parent = parent_tax_class.post_id AND parent_tax_class.meta_key = '_tax_class') 5654 INNER JOIN {$db}postmeta manageStock ON (p.ID = manageStock.post_id AND manageStock.meta_key = '_manage_stock') 5655 LEFT JOIN {$db}postmeta pa ON (p.ID = pa.post_id AND pa.meta_key = '_product_attributes') 5656 $joins 5657 $polylang_joins 5658 WHERE p.post_type IN ('product', 'product_variation') 5659 AND p.post_modified >= %s 5660 AND ((%s = 'includeDeleted') OR (p.post_status IN ('publish', 'private'))) 5661 AND manageStock.meta_value <> 'no' 5662 " . $this->get_subset_condition() . " 5663 GROUP BY p.ID 5664 ORDER BY p.ID ASC; 5665 ", 5666 $modifiedAfter, 5667 $includeDeleted 5668 ); 5649 if ( $prfi_subselects ) { 5650 $sql = $wpdb->prepare(" 5651 SELECT p.ID, 5652 p.post_title, 5653 p.post_parent, 5654 p.post_modified, 5655 CONVERT( 5656 (SELECT pm.meta_value FROM {$db}postmeta pm WHERE (p.ID = pm.post_id AND pm.meta_key = '_stock') LIMIT 1), 5657 SIGNED INTEGER) _stock, 5658 (SELECT sku.meta_value FROM {$db}postmeta sku WHERE (p.ID = sku.post_id AND sku.meta_key = '_sku') LIMIT 1) _sku, 5659 COALESCE( 5660 (SELECT low_stock_amount.meta_value FROM {$db}postmeta low_stock_amount 5661 WHERE (p.ID = low_stock_amount.post_id AND low_stock_amount.meta_key = '_low_stock_amount') 5662 LIMIT 1), 5663 (SELECT parent_low_stock_amount.meta_value FROM {$db}postmeta parent_low_stock_amount 5664 WHERE (p.post_parent = parent_low_stock_amount.post_id AND parent_low_stock_amount.meta_key = '_low_stock_amount') 5665 LIMIT 1) 5666 ) 5667 _low_stock_amount, 5668 (SELECT regular_price.meta_value FROM {$db}postmeta regular_price 5669 WHERE (p.ID = regular_price.post_id AND regular_price.meta_key = '_regular_price') LIMIT 1) _regular_price, 5670 IF( 5671 (SELECT tax_class.meta_value FROM {$db}postmeta tax_class 5672 WHERE (p.ID = tax_class.post_id AND tax_class.meta_key = '_tax_class') LIMIT 1) 5673 <> 'parent', 5674 (SELECT tax_class.meta_value FROM {$db}postmeta tax_class 5675 WHERE (p.ID = tax_class.post_id AND tax_class.meta_key = '_tax_class') LIMIT 1), 5676 (SELECT parent_tax_class.meta_value FROM {$db}postmeta parent_tax_class 5677 WHERE (p.post_parent = parent_tax_class.post_id AND parent_tax_class.meta_key = '_tax_class') LIMIT 1) 5678 ) 5679 _tax_class, 5680 (SELECT tax_status.meta_value FROM {$db}postmeta tax_status 5681 WHERE (p.ID = tax_status.post_id AND tax_status.meta_key = '_tax_status') LIMIT 1) _tax_status, 5682 (SELECT pa.meta_value FROM {$db}postmeta pa 5683 WHERE (p.ID = pa.post_id AND pa.meta_key = '_product_attributes') LIMIT 1) _product_attributes, 5684 IF ( p.post_status IN ('publish', 'private'), '', 'DELETE' ) __incrementalDelete 5685 $cols 5686 $polylang_cols 5687 FROM {$db}posts p 5688 $polylang_joins 5689 WHERE p.post_type IN ('product', 'product_variation') 5690 AND p.post_modified >= %s 5691 AND ((%s = 'includeDeleted') OR (p.post_status IN ('publish', 'private'))) 5692 AND 5693 (SELECT manageStock.meta_value FROM {$db}postmeta manageStock 5694 WHERE (p.ID = manageStock.post_id AND manageStock.meta_key = '_manage_stock') LIMIT 1) 5695 <> 'no' 5696 " . $this->get_subset_condition() . " 5697 GROUP BY p.ID 5698 ORDER BY p.ID ASC; 5699 ", 5700 $modifiedAfter, 5701 $includeDeleted 5702 ); 5703 } else { 5704 $sql = $wpdb->prepare(" 5705 SELECT p.ID, 5706 p.post_title, 5707 p.post_parent, 5708 p.post_modified, 5709 CONVERT(pm.meta_value, SIGNED INTEGER) _stock, 5710 sku.meta_value _sku, 5711 COALESCE(low_stock_amount.meta_value, parent_low_stock_amount.meta_value) _low_stock_amount, 5712 regular_price.meta_value _regular_price, 5713 IF(tax_class.meta_value <> 'parent', tax_class.meta_value, parent_tax_class.meta_value) _tax_class, 5714 tax_status.meta_value _tax_status, 5715 pa.meta_value _product_attributes, 5716 IF ( p.post_status IN ('publish', 'private'), '', 'DELETE' ) __incrementalDelete 5717 $cols 5718 $polylang_cols 5719 FROM {$db}posts p 5720 LEFT JOIN {$db}postmeta pm ON (p.ID = pm.post_id AND pm.meta_key = '_stock') 5721 LEFT JOIN {$db}postmeta sku ON (p.ID = sku.post_id AND sku.meta_key = '_sku') 5722 LEFT JOIN {$db}postmeta tax_status ON 5723 (p.ID = tax_status.post_id AND tax_status.meta_key = '_tax_status') 5724 LEFT JOIN {$db}postmeta tax_class ON 5725 (p.ID = tax_class.post_id AND tax_class.meta_key = '_tax_class') 5726 LEFT JOIN {$db}postmeta low_stock_amount ON 5727 (p.ID = low_stock_amount.post_id AND low_stock_amount.meta_key = '_low_stock_amount') 5728 LEFT JOIN {$db}postmeta regular_price ON 5729 (p.ID = regular_price.post_id AND regular_price.meta_key = '_regular_price') 5730 LEFT JOIN {$db}postmeta parent_low_stock_amount ON 5731 (p.post_parent = parent_low_stock_amount.post_id AND parent_low_stock_amount.meta_key = '_low_stock_amount') 5732 LEFT JOIN {$db}postmeta parent_tax_class ON 5733 (p.post_parent = parent_tax_class.post_id AND parent_tax_class.meta_key = '_tax_class') 5734 INNER JOIN {$db}postmeta manageStock ON (p.ID = manageStock.post_id AND manageStock.meta_key = '_manage_stock') 5735 LEFT JOIN {$db}postmeta pa ON (p.ID = pa.post_id AND pa.meta_key = '_product_attributes') 5736 $joins 5737 $polylang_joins 5738 WHERE p.post_type IN ('product', 'product_variation') 5739 AND p.post_modified >= %s 5740 AND ((%s = 'includeDeleted') OR (p.post_status IN ('publish', 'private'))) 5741 AND manageStock.meta_value <> 'no' 5742 " . $this->get_subset_condition() . " 5743 GROUP BY p.ID 5744 ORDER BY p.ID ASC; 5745 ", 5746 $modifiedAfter, 5747 $includeDeleted 5748 ); 5749 } 5669 5750 $res = $wpdb->get_results($sql); 5670 5751 if ( $polylang_cols ) { -
profitori/trunk/readme.txt
r2791040 r2794299 367 367 368 368 == Changelog == 369 370 = 2.1.0.2 = 371 * Tuned performance of product query 369 372 370 373 = 2.1.0.1 =
Note: See TracChangeset
for help on using the changeset viewer.