You are here

function commerce_pricelist_filter_pricelists in Commerce Pricelist 7

Filter array of pricelists based on conditions.

Parameters

$pricelists:

$conditions:

2 calls to commerce_pricelist_filter_pricelists()
commerce_pricelist_role_commerce_pricelists_alter in commerce_pricelist_role/commerce_pricelist_role.module
@file Summary
commerce_pricelist_user_commerce_pricelists_alter in commerce_pricelist_user/commerce_pricelist_user.module
Filter out lists not tagged with current user

File

./commerce_pricelist.module, line 474
Implements the basic functionality required for price lists

Code

function commerce_pricelist_filter_pricelists(&$pricelists, $conditions) {
  foreach ($pricelists as $id => $pricelist) {
    $pass = FALSE;
    foreach ($conditions as $key => $values) {

      // Check if this pricelist has this condition set and has correct value.
      if (isset($pricelist->data['filter'][$key])) {

        // Loop over condition values and see if anyone matches this pricelist.
        foreach ($values as $value) {
          if (in_array($value, $pricelist->data['filter'][$key])) {
            $pass = TRUE;
          }
        }
      }
      else {

        // Pricelist is missing condition.
        $pass = FALSE;
        break;
      }
    }
    $pricelist->score = isset($pricelist->score) ? $pricelist->score : 0;
    $pricelist->score += $pass ? 1 : -1;
  }
}