caaf5cefb276c8f48858912d249156bcb45477d3
tdreszer
  Wed Apr 20 14:55:34 2011 -0700
Support for cv.ra typeOfTerm hidden being alpha,beta,public
diff --git src/hg/lib/cv.c src/hg/lib/cv.c
index 41caa6e..532cddd 100644
--- src/hg/lib/cv.c
+++ src/hg/lib/cv.c
@@ -1,23 +1,24 @@
 
 
 // cv.c stands for Controlled Vocabullary and this file contains the
 // library APIs for reading and making sense of the contents of cv.ra.
 
 #include "common.h"
 #include "linefile.h"
 #include "dystring.h"
+#include "hdb.h"
 #include "ra.h"
 #include "hui.h"
 #include "mdb.h"
 
 // CV Defines that should not necessarily be public
 
 // CV UGLY TERMS (NOTE: These should be hiddne inside cv.c APIS and callers should use non-UGLY terms)
 #define CV_UGLY_TOT_CELLTYPE    "cellType"
 #define CV_UGLY_TERM_CELL_LINE  "Cell Line"
 #define CV_UGLY_TERM_ANTIBODY   "Antibody"
 
 // Type of Terms searchable defines
 #define CV_SEARCHABLE               "searchable"
 #define CV_SEARCHABLE_SINGLE_SELECT "select"
 #define CV_SEARCHABLE_MULTI_SELECT  "multiSelect"
@@ -127,48 +128,74 @@
         {
         hashAdd(cvHashOfTermTypes,CV_TERM_CELL,cellHash);
         hashReplace(cellHash, CV_TERM, cloneString(CV_TERM_CELL)); // spilling memory of 'cellType' val
         }
     struct hash *abHash = hashRemove(cvHashOfTermTypes,CV_UGLY_TERM_ANTIBODY);
     if (abHash)
         {
         hashAdd(cvHashOfTermTypes,CV_TERM_ANTIBODY,abHash);
         hashReplace(abHash, CV_TERM, cloneString(CV_TERM_ANTIBODY)); // spilling memory of 'Antibody' val
         }
     }
 
 return cvHashOfTermTypes;
 }
 
+static boolean cvHiddenIsTrue(char *setting)
+// returns TRUE if hidden setting passed in is true for this browser
+{
+if (setting != NULL)
+    {
+    if (sameWord(setting,"yes") || sameWord(setting,"on") || sameWord(setting,"true"))
+        return TRUE;
+    if (hIsPrivateHost() || hIsPreviewHost())
+        {
+        if (strstrNoCase(setting,"alpha"))
+            return TRUE;
+        }
+    else if (hIsBetaHost())
+        {
+        if (strstrNoCase(setting,"beta"))
+            return TRUE;
+        }
+    else // RR and everyone else
+        {
+        if (strstrNoCase(setting,"public"))
+            return TRUE;
+        }
+    }
+return FALSE;
+}
+
 struct slPair *cvWhiteList(boolean searchTracks, boolean cvDefined)
 // returns the official mdb/controlled vocabulary terms that have been whitelisted for certain uses.
 // TODO: change to return struct that includes searchable!
 {
 struct slPair *whitePairs = NULL;
 
 // Get the list of term types from thew cv
 struct hash *termTypeHash = (struct hash *)cvTermTypeHash();
 struct hashCookie hc = hashFirst(termTypeHash);
 struct hashEl *hEl;
 while ((hEl = hashNext(&hc)) != NULL)
     {
     char *setting = NULL;
     struct hash *typeHash = (struct hash *)hEl->val;
     //if (!includeHidden)
         {
         setting = hashFindVal(typeHash,CV_TOT_HIDDEN);
-        if(SETTING_IS_ON(setting))
+        if (cvHiddenIsTrue(setting))
             continue;
         }
     if (searchTracks)
         {
         setting = hashFindVal(typeHash,CV_SEARCHABLE);
         if (setting == NULL
         || (   differentWord(setting,CV_SEARCHABLE_SINGLE_SELECT)
             && differentWord(setting,CV_SEARCHABLE_MULTI_SELECT)
             && differentWord(setting,CV_SEARCHABLE_FREE_TEXT)))
            continue;
         }
     if (cvDefined)
         {
         setting = hashFindVal(typeHash,CV_TOT_CV_DEFINED);
         if(SETTING_NOT_ON(setting))
@@ -214,15 +241,29 @@
 
 const char *cvLabel(char *term)
 // returns cv label if term found or else just term
 {
 // Get the list of term types from thew cv
 struct hash *termTypeHash = (struct hash *)cvTermTypeHash();
 struct hash *termHash = hashFindVal(termTypeHash,term);
 if (termHash != NULL)
     {
     char *label = hashFindVal(termHash,CV_LABEL);
     if (label != NULL)
         return label;
     }
 return term;
 }
+
+boolean cvTermIsHidden(char *term)
+// returns TRUE if term is defined as hidden in cv.ra
+{
+struct hash *termTypeHash = (struct hash *)cvTermTypeHash();
+struct hash *termHash = hashFindVal(termTypeHash,term);
+if (termHash != NULL)
+    {
+    char *setting = hashFindVal(termHash,CV_TOT_HIDDEN);
+    return cvHiddenIsTrue(setting);
+    }
+return FALSE;
+}
+