%@ page isThreadSafe="false" %><%@ include file="globalPaths.jsp" %><%@ include file="globalDefinitions.jsp" %><% // This code prevents caching for malicious cnt parameter specified by user int artworksPerPage = 60; int count = -1; try { if (request.getParameter("cnt") != null) { count=Integer.parseInt(request.getParameter("cnt")); } } catch (Exception e) { count = -1; } int cnt = count - count % artworksPerPage; if (cnt < 0) cnt = 0; String newurl = "os.jsp"; String queryString = "?"; if (request.getParameter("type") != null) { queryString = queryString + "type=" + request.getParameter("type") + "&"; } if (request.getParameter("cat") != null) { queryString = queryString + "cat=" + request.getParameter("cat") + "&"; } newurl=newurl + queryString; if (cnt != count) { sendRedirect(newurl + "cnt=" + cnt); return; } %><%@ include file="cacheBegin.jsp" %><% Cookie[] cookies; cookies = request.getCookies(); String cookieArtist = ""; for (int icook = 0; cookies!=null && icook < cookies.length; icook++) { Cookie cookie = cookies[icook]; if ((cookie.getName()).equals("galleryArtistID")) { cookieArtist = cookie.getValue(); } } String remoteIP = "UndefinedIP"; if (request.getRemoteAddr() != null) { remoteIP = request.getRemoteAddr(); } %><% Connection connection = null; Statement statement = null; ResultSet resultSet = null; String query = ""; %><% Vector artworkIDs = new Vector(); Vector names = new Vector(); Vector artistNames = new Vector(); Vector artists = new Vector(); Vector smallshots = new Vector(); Vector imageHeights = new Vector(); Vector imageWidths = new Vector(); Vector osNames = new Vector(); boolean needCaching = true; %><% try { connection = openConnection(); statement = connection.createStatement(); query = "SELECT W.*, A.id, A.firstName, A.lastName, A.activeflag, OS.name " + "FROM galleryArtwork W LEFT JOIN galleryArtist A ON W.artist=A.id LEFT JOIN" + " galleryOpenStudioArtist OSA ON OSA.artist = A.id LEFT JOIN galleryOpenStudio OS" + " ON OS.id = OSA.openStudioId WHERE" + " A.package!=0 AND A.unwelcome=0 AND (W.activeflag='Y' OR W.activeflag='L')" + " AND OS.name IS NOT NULL AND (A.activeflag='Y' OR A.id=" + quoteString(cookieArtist) + " OR A.ipLastLoggedFrom=" + quoteString(remoteIP) + " OR 'admin'=" + quoteString((String)session.getValue("logged")) + ")" + " ORDER BY A.lastName, A.firstName, W.activeflag, W.id, OS.name"; resultSet = statement.executeQuery(query); String lastId = null; while (resultSet.next()) { String id = resultSet.getString("A.id"); if (!id.equals(lastId)) { String af = resultSet.getString("A.activeflag"); if (!"Y".equals(af)) { needCaching = false; } artworkIDs.addElement(resultSet.getString("W.id")); names.addElement(resultSet.getString("W.name")); osNames.addElement(resultSet.getString("OS.name")); String fln; String fn = resultSet.getString("A.firstName"); String ln = resultSet.getString("A.lastName"); if (fn.equals("")) fln = ln; else fln = fn + " " + ln; artistNames.addElement(fln); artists.addElement(resultSet.getString("A.id")); if (resultSet.getString("smallshot") == null || "".equals(resultSet.getString("smallshot"))) { smallshots.addElement("ima/e1.gif"); } else { smallshots.addElement(resultSet.getString("smallshot")); } if (resultSet.getString("W.heightImage") == null || "".equals(resultSet.getString("W.heightImage"))) { imageHeights.addElement("1"); } else { imageHeights.addElement(resultSet.getString("W.heightImage")); } if (resultSet.getString("W.widthImage") == null || "".equals(resultSet.getString("W.widthImage"))) { imageWidths.addElement("1"); } else { imageWidths.addElement(resultSet.getString("W.widthImage")); } lastId = id; } } resultSet.close(); connection.close(); } catch (Exception e) { errorLog(e, query); sendRedirect(globalErrorPage + "?errorDescription=" + URLEncoder.encode(e.getMessage() + ".")); return; } finally { if (resultSet != null) resultSet.close(); if (connection != null && !connection.isClosed()) connection.close(); } %><% int numpages = (int)Math.ceil((double)artworkIDs.size() / (double)artworksPerPage); int[] pageindex = new int[numpages]; for (int i = 0; i < numpages; i ++) { pageindex[i] = i * artworksPerPage; } if (cnt > artworkIDs.size() - 1) { if (numpages > 0) { cnt = pageindex[numpages-1]; } else { cnt = 0; } } if (cnt != count) { sendRedirect(newurl + "cnt=" + cnt); return; } int fromindex = cnt; int toindex = cnt + artworksPerPage - 1; if (toindex > artworkIDs.size() - 1) toindex = artworkIDs.size() - 1; int previndex = fromindex - artworksPerPage; if (previndex < 0) previndex = 0; %><% if (needCaching) { %><%@ include file="cacheLaunch.jsp" %><% } %>
Portfolios | Artist Studios | Artist Galleries | Open Studios | Lobby |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Marin Arts Council OS | Pro Arts - EBOS | San Francisco Spring OS | San Francisco Fall OS | Silicon Valley OS | Benicia OS |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<%
if (artworkIDs.size() < 1)
{
%>
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||