function commerce_reports_patterns_load in Commerce Reporting 7.3
Same name and namespace in other branches
- 7.4 modules/patterns/commerce_reports_patterns.batch.inc \commerce_reports_patterns_load()
1 string reference to 'commerce_reports_patterns_load'
- commerce_reports_patterns_form_submit in modules/
patterns/ commerce_reports_patterns.admin.inc
File
- modules/
patterns/ commerce_reports_patterns.batch.inc, line 3
Code
function commerce_reports_patterns_load($min_support, &$context) {
if (empty($context['sandbox'])) {
$total_transactions = db_query("SELECT COUNT(order_id) FROM {commerce_order} WHERE status IN ('completed', 'pending')")
->fetchField();
$min_transactions = (int) floor($total_transactions * $min_support);
$context['results'] = array(
'total_transactions' => $total_transactions,
'minimum_transactions' => $min_transactions,
'frequent_sets' => array(
1 => array(
array(
'prefix' => array(),
'sets' => array(),
),
),
),
);
$context['sandbox']['products'] = db_query('SELECT sku, COUNT(li.line_item_id) AS occurences FROM {commerce_product} p LEFT JOIN {commerce_line_item} li ON p.sku = li.line_item_label GROUP BY sku HAVING occurences >= :min_occurences ORDER BY occurences DESC', array(
':min_occurences' => $min_transactions,
))
->fetchAll();
$context['sandbox']['progress'] = 0;
$context['sandbox']['max'] = count($context['sandbox']['products']);
if (!$context['sandbox']['max']) {
drupal_set_message(t('The value of your minimum support is too high to include any of the available transactions.'), 'error');
return;
}
}
$product = $context['sandbox']['products'][$context['sandbox']['progress']];
if ($product) {
$context['results']['frequent_sets'][1][0]['sets'][] = array(
'items' => array(
$product->sku,
),
'tidlist' => db_query("SELECT DISTINCT order_id FROM {commerce_line_item} WHERE line_item_label = :sku", array(
':sku' => $product->sku,
))
->fetchCol(),
);
}
$context['sandbox']['progress']++;
if ($context['sandbox']['progress'] < $context['sandbox']['max']) {
$context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
}
else {
if (!count($context['results']['frequent_sets'][1][0]['sets'])) {
unset($context['results']['frequent_sets'][1]);
}
}
}