static function convertHierarchyLevelMapToSQL($hierarchy_level_map, $object_table = 'a.', $hierarchy_user_table = 'z.', $type_id_column = NULL) { /* ( z.hierarchy_control_id = 469 AND a.authorization_level = 1 ) OR ( z.hierarchy_control_id = 471 AND a.authorization_level = 2 ) OR ( z.hierarchy_control_id = 470 AND a.authorization_level = 3 ) OR ( z.hierarchy_control_id = 469 AND a.authorization_level = 1 AND a.type_id in (10,20,30) ) OR ( z.hierarchy_control_id = 471 AND a.authorization_level = 2 AND a.type_id in (10) ) OR ( z.hierarchy_control_id = 470 AND a.authorization_level = 3 AND a.type_id in (100) ) */ if (is_array($hierarchy_level_map)) { $rf = new RequestFactory(); $clause_arr = array(); foreach ($hierarchy_level_map as $hierarchy_data) { if ($hierarchy_data['last_level'] == TRUE) { $operator = ' >= '; } else { $operator = ' = '; } $object_type_clause = NULL; if ($type_id_column != '' and isset($hierarchy_data['object_type_id']) and count($hierarchy_data['object_type_id']) > 0) { $hierarchy_data['object_type_id'] = $rf->getTypeIdFromHierarchyTypeId($hierarchy_data['object_type_id']); $object_type_clause = ' AND ' . $type_id_column . ' in (' . implode(',', $hierarchy_data['object_type_id']) . ')'; } $clause_arr[] = '( ' . $hierarchy_user_table . 'hierarchy_control_id = ' . (int) $hierarchy_data['hierarchy_control_id'] . ' AND ' . $object_table . 'authorization_level ' . $operator . ' ' . (int) $hierarchy_data['level'] . $object_type_clause . ' )'; } $retval = implode(' OR ', $clause_arr); //Debug::Text(' Hierarchy Filter SQL: '. $retval, __FILE__, __LINE__, __METHOD__,10); return $retval; } return FALSE; }