Example #1
0
 $filter = array();
 // step 1. validation and normalize format, remove failed filters and fields
 foreach ($_POST['filters'] as $fId => $filterInfo) {
     // validate logic
     if (!array_key_exists('logic', $filterInfo) || $filterInfo['logic'] !== 'AND' && $filterInfo['logic'] !== 'OR') {
         continue;
     }
     $iFilterItems = array();
     foreach ($filterInfo as $key => $subFilter) {
         // collect fields and subfilters
         if ($key === 'logic') {
             continue;
         }
         if ($subFilter['type'] == 'field') {
             // validate field and calc
             if (array_key_exists($subFilter['name'], $fieldList) && CReport::isValidFilterCompareVariation($subFilter['name'], $fieldList[$subFilter['name']]->getDataType(), $subFilter['compare'], $compareVariations)) {
                 $iFilterItems[] = $subFilter;
             }
         } else {
             if ($subFilter['type'] == 'filter') {
                 // hold link to another filter
                 $iFilterItems[] = $subFilter;
             }
         }
     }
     if (!empty($iFilterItems)) {
         $iFilterItems['LOGIC'] = $filterInfo['logic'];
         $filter[$fId] = $iFilterItems;
     }
 }
 // step 2. replace (link) sub-filters if it still exists
Example #2
0
 $filter = array();
 // step 1. validation and normalize format, remove failed filters and fields
 foreach ($_POST['filters'] as $fId => $filterInfo) {
     // validate logic
     if (!array_key_exists('logic', $filterInfo) || $filterInfo['logic'] !== 'AND' && $filterInfo['logic'] !== 'OR') {
         continue;
     }
     $iFilterItems = array();
     foreach ($filterInfo as $key => $subFilter) {
         // collect fields and subfilters
         if ($key === 'logic') {
             continue;
         }
         if ($subFilter['type'] == 'field') {
             // validate field and calc
             if (array_key_exists($subFilter['name'], $fieldList) && CReport::isValidFilterCompareVariation($subFilter['name'], call_user_func(array($arParams['REPORT_HELPER_CLASS'], 'getFieldDataType'), $fieldList[$subFilter['name']]), $subFilter['compare'], $compareVariations)) {
                 $iFilterItems[] = $subFilter;
             }
         } else {
             if ($subFilter['type'] == 'filter') {
                 // hold link to another filter
                 $iFilterItems[] = $subFilter;
             }
         }
     }
     if (!empty($iFilterItems)) {
         $iFilterItems['LOGIC'] = $filterInfo['logic'];
         $filter[$fId] = $iFilterItems;
     }
 }
 // step 2. replace (link) sub-filters if it still exists