ucFilterUserPopup is called when the USER_LIST_DISPLAY behavior setting has a value of POPUP, and can be used to filter the results of a user search by modifying the TreeMap parameter.
Field Rendering Methods
public void ucFilterUserPopup (SesameSession session, TreeMap userMap)
public void ucFilterUserPopup (SesameSession session, TreeMap userMap) { String role = session.getUserRole(); // only perform check for Customer role if (! "CLIENT".equals(role) ) return; // For Customer (CLIENT) role, filter search results to only users // with same Company Name as the CUSTOMER_ID field value on the record // NOTE: THIS FILTERING AFFECTS ALL USER FIELDS, AS OPPOSED TO THE // SPECIFIC FIELDS LISTED IN THE checkCustomerFields METHOD. HashMap tabVals = (HashMap) session.getAttribute("TAB_VALS"); String companyName = null; String customerUdfListId = null; // first, get the Company Name from the CUSTOMER_ID field if (tabVals != null) { customerUdfListId = (String) tabVals.get("CUSTOMER_ID"); Connection con = null; try { con = Z.pool.getConnection("ucFilterUserPopup"); UdfList ul = UdfList.getReference(con, customerUdfListId); companyName = ul.getTitle(); } catch (Exception e) { ErrorWriter.write(e, ErrorWriter.LOGERR); } finally { Z.pool.close(con); } } // otherwise, get the Company Name from the current user else { SecurityUser su = (SecurityUser) session.getAttribute("USER"); if (su != null) { companyName = su.getCompanyName(); } } if (companyName == null) { Z.log.writeToLog(Z.log.WARN, "ucFilterUserPopup: NO COMPANY NAME DETECTED FOR USER SEARCH FILTERING"); userMap.clear(); } // go through list of users and remove the ones not matching the Company Name Iterator i = userMap.keySet().iterator(); ArrayList removeList = new ArrayList(); while (i.hasNext() ) { String key = (String) i.next(); HashMap hm = (HashMap) userMap.get(key); String userCompany = (String) hm.get("COMPANY_NAME"); if (! companyName.equals(userCompany) ) { removeList.add(key); } } for (int j = 0; j