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;
 }