Note: the session has at least one active custom " - "track (in database "); - for (sln = liveDbList; sln != NULL; sln = sln->next) - dyStringPrintf(dyMessage, "%s%s", - cartSidUrlString(cart), sln->name, - sln->name, (sln->next ? sln->next->next ? ", " : " and " : "")); - dyStringAppend(dyMessage, "; click on the database link " - "to manage custom tracks). "); - - } - if (gotExpiredCT) - { - slSort(&expiredDbList, slNameCmp); - dyStringPrintf(dyMessage, - "
Note: the session has at least one expired custom " - "track (in database "); - for (sln = expiredDbList; sln != NULL; sln = sln->next) - dyStringPrintf(dyMessage, "%s%s", - sln->name, (sln->next ? sln->next->next ? ", " : " and " : "")); - dyStringPrintf(dyMessage, - "), so it may not appear as originally intended. "); - } - dyStringPrintf(dyMessage, - "Custom tracks are subject to an expiration policy described in the " - "" - "Session documentation.
"); - slNameFreeList(&liveDbList); - slNameFreeList(&expiredDbList); - } -/* Check for saved blat results (quasi custom track). */ -char *ss = cartOptionalString(cart, "ss"); -if (isNotEmpty(ss)) - { - char buf[1024]; - char *words[2]; - int wordCount; - boolean exists = FALSE; - safecpy(buf, sizeof(buf), ss); - wordCount = chopLine(buf, words); - if (wordCount < 2) - exists = FALSE; - else - exists = fileExists(words[0]) && fileExists(words[1]); - - if (exists) - dyStringPrintf(dyMessage, - "Note: the session contains BLAT results. "); - else - dyStringPrintf(dyMessage, - "
Note: the session contains an expired reference to "
- "previously saved BLAT results, so it may not appear as "
- "originally intended. ");
- dyStringPrintf(dyMessage,
- "BLAT results are subject to an "
- ""
- "expiration policy.");
- }
-}
char *doUpdateSessions()
/* Look for cart variables matching prefixes for sharing/unsharing,
* loading or deleting a previously saved session.
* Return a message confirming what we did, or NULL if no such variables
* were in the cart. */
{
struct dyString *dyMessage = dyStringNew(1024);
struct hashEl *cartHelList = NULL, *hel = NULL;
struct sqlConnection *conn = hConnectCentral();
char *userName = getLinkUserName();
char *encUserName = cgiEncodeFull(userName);
boolean didSomething = FALSE;
char query[512];
@@ -843,31 +742,31 @@
hel = cartFindPrefix(cart, hgsLoadPrefix);
if (hel != NULL)
{
char *encSessionName = hel->name + strlen(hgsLoadPrefix);
char *sessionName = cgiDecodeClone(encSessionName);
char wildStr[256];
safef(wildStr, sizeof(wildStr), "%s*", hgsLoadPrefix);
dyStringPrintf(dyMessage,
"Loaded settings from session %s. %s %s
\n",
htmlEncode(sessionName),
getSessionLink(encUserName, encSessionName),
getSessionEmailLink(encUserName, encSessionName));
cartLoadUserSession(conn, userName, sessionName, cart, NULL, wildStr);
hubConnectLoadHubs(cart);
cartCopyCustomTracks(cart);
- checkForCustomTracks(dyMessage);
+ cartCheckForCustomTracks(cart, dyMessage);
didSomething = TRUE;
}
cartHelList = cartFindPrefix(cart, hgsDeletePrefix);
for (hel = cartHelList; hel != NULL; hel = hel->next)
{
char *encSessionName = hel->name + strlen(hgsDeletePrefix);
char *sessionName = cgiDecodeClone(encSessionName);
sqlSafef(query, sizeof(query), "DELETE FROM %s "
"WHERE userName = '%s' AND sessionName = '%s';",
namedSessionTable, encUserName, encSessionName);
sqlUpdate(conn, query);
dyStringPrintf(dyMessage,
"Deleted session %s.
\n",
htmlEncode(sessionName));
@@ -891,31 +790,31 @@
struct sqlConnection *conn = hConnectCentral();
struct dyString *dyMessage = dyStringNew(1024);
char *otherUser = trimSpaces(cartString(cart, hgsOtherUserName));
char *sessionName = trimSpaces(cartString(cart, hgsOtherUserSessionName));
char *encOtherUser = cgiEncodeFull(otherUser);
char *encSessionName = cgiEncodeFull(sessionName);
dyStringPrintf(dyMessage,
"Loaded settings from user %s's session %s. %s %s",
otherUser, htmlEncode(sessionName),
getSessionLink(otherUser, encSessionName),
getSessionEmailLink(encOtherUser, encSessionName));
cartLoadUserSession(conn, otherUser, sessionName, cart, NULL, actionVar);
hubConnectLoadHubs(cart);
cartCopyCustomTracks(cart);
-checkForCustomTracks(dyMessage);
+cartCheckForCustomTracks(cart, dyMessage);
hDisconnectCentral(&conn);
return dyStringCannibalize(&dyMessage);
}
void doSaveLocal()
/* Output current settings to be saved as a file on the user's machine.
* Return a message confirming what we did. */
{
char *fileName = trimSpaces(cartString(cart, hgsSaveLocalFileName));
char *compressType = cartString(cart, hgsSaveLocalFileCompress);
struct pipeline *compressPipe = textOutInit(fileName, compressType, NULL);
cleanHgSessionFromCart(cart);
cartDump(cart);
@@ -990,31 +889,31 @@
dyStringPrintf(dyMessage, ", only the filename %s",
fileName);
dyStringAppend(dyMessage, ". Your settings have not been changed.");
lf = NULL;
}
dyStringPrintf(dyMessage, " "
"Browser",
cgiAppendSForHttps(), cgiServerNamePort(), destAppScriptName(),
cartSessionVarName(), cartSessionId(cart));
}
if (lf != NULL)
{
cartLoadSettings(lf, cart, NULL, actionVar);
hubConnectLoadHubs(cart);
cartCopyCustomTracks(cart);
- checkForCustomTracks(dyMessage);
+ cartCheckForCustomTracks(cart, dyMessage);
lineFileClose(&lf);
}
return dyStringCannibalize(&dyMessage);
}
char *doSessionDetail(char *sessionName)
/* Show details about a particular session. */
{
struct dyString *dyMessage = dyStringNew(4096);
char *encSessionName = cgiEncodeFull(sessionName);
char *userName = getLinkUserName();
char *encUserName = cgiEncodeFull(userName);
struct sqlConnection *conn = hConnectCentral();
struct sqlResult *sr = NULL;
char **row = NULL;