I am down at NCSA right now working on pulling site membership info out of Sakai for the Maeviz project so it can be stuffed into SAML assertions to pass to other systems. We are using MyProxy and GridShib.
My job was to come up with a queru whcih for a particular Enterprise ID (i.e. csev) – find all the sites they are in, give the site ID, Site title, and whether they were the owner or just a member (I used site.upd for this).
I seldom get to play in the DB – after a few hours I came up with this query. Feel free to criticize – it only works on MySql 2.3 for sure:
SELECT SAKAI_SITE.SITE_ID,SAKAI_SITE.TITLE, NOT ISNULL(SAKAI_REALM_RL_FN.FUNCTION_KEY) AS POWER FROM SAKAI_USER_ID_MAP JOIN SAKAI_SITE_USER ON SAKAI_USER_ID_MAP.USER_ID = SAKAI_SITE_USER.USER_ID join SAKAI_SITE ON SAKAI_SITE_USER.SITE_ID = SAKAI_SITE.SITE_ID JOIN SAKAI_REALM ON SAKAI_REALM.REALM_ID = CONCAT('/site/',SAKAI_SITE.SITE_ID) JOIN SAKAI_REALM_RL_GR ON SAKAI_REALM.REALM_KEY = SAKAI_REALM_RL_GR.REALM_KEY AND SAKAI_SITE_USER.USER_ID = SAKAI_REALM_RL_GR.USER_ID LEFT JOIN SAKAI_REALM_RL_FN ON SAKAI_REALM.REALM_KEY = SAKAI_REALM_RL_FN.REALM_KEY AND SAKAI_REALM_RL_GR.ROLE_KEY = SAKAI_REALM_RL_FN.ROLE_KEY AND SAKAI_REALM_RL_FN.FUNCTION_KEY IN (SELECT FUNCTION_KEY FROM SAKAI_REALM_FUNCTION WHERE FUNCTION_NAME = 'site.upd') WHERE SAKAI_USER_ID_MAP.EID='tmclaren' ;
Here is sample output:
+---------------------------------------+--------------------------+-------+ | SITE_ID | TITLE | POWER | +---------------------------------------+--------------------------+-------+ | !admin | Administration Workspace | 1 | | ed4fd8d8-a717-4a3d-00f0-f1e368ac1faa | MAEviz | 0 | | ~1d722376-bd33-44a0-80ba-de56ba912175 | My Workspace | 1 | +---------------------------------------+--------------------------+-------+
Good fun.