Mercurial > hg > fapweb
view showajax.php @ 140:20ca8edfb01a
Rename some settings and variables.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Wed, 23 Oct 2013 00:04:06 +0300 |
parents | 75cf14ee99a7 |
children | d2e9285b69ad |
line wrap: on
line source
<? // // FAPWeb Simple Demoparty System // Party information display system AJAX backend module // (C) Copyright 2012-2013 Tecnic Software productions (TNSP) // require "mconfig.inc.php"; require "msite.inc.php"; function stPrintCompoEntry($entry, $class, $compo, $title = false) { echo " <div class=\"".$class."\">\n"; if ($title !== false) echo " <div class=\"title\">".$title."</div>\n"; echo " <div class=\"entryIndex\">#".$entry["show_id"]."</div>\n". " <div class=\"entryName\">".chentities($entry["name"])."</div>\n"; if ($compo["showAuthors"]) echo " <div class=\"entryAuthor\">".chentities($entry["author"])."</div>\n"; echo " <div class=\"entryInfo\">".chentities($entry["info"])."</div>\n". " </div>\n"; } function stPrintCompoSlide($compo, $entry, $prev) { echo " <div class=\"compoHeader\">\n". " <img src=\"img/fapsm.png\" /><br />\n". " <div class=\"title\">".chentities($compo["name"])." competition</div>\n". " </div>\n"; if ($entry !== false) stPrintCompoEntry($entry, "compoNext", $compo, false); if ($prev !== false) stPrintCompoEntry($prev, "compoPrev", $compo, "Previous entry"); } function stPrintRotationSlide($slide) { echo " <div class=\"showHeader\">\n". " <img src=\"img/fapsm.png\" /><br />\n". " </div>\n". " <div class=\"showText\">\n". $slide["text"]. " </div>\n"; } // Handle requests stSetupCacheControl(); if (!stConnectSQLDB()) die("Could not connect to SQL database."); // Fetch party display variables and settings if (($res = stExecSQL("SELECT * FROM displayVars")) !== FALSE) { $displayVars = array(); $displayVarsChanged = array(); foreach ($res as $row) { switch ($row["vtype"]) { case VT_INT: $val = intval($row["vint"]); break; case VT_BOOL: $val = intval($row["vint"]) ? true : false; break; case VT_STR: $val = $row["vstr"]; break; case VT_TEXT: $val = $row["vtext"]; break; } $displayVars[$row["key"]] = $val; } } else exit; function stGetDisplayVar($name) { global $displayVars; if (isset($displayVars[$name])) return $displayVars[$name]; else die("No display setting for '".$name."'.\n"); } function stSetDisplayVar($name, $value) { global $displayVars, $displayVarsChanged; if (isset($displayVars[$name])) { $displayVars[$name] = $value; $displayVarsChanged[$name] = true; } else die("No display setting for '".$name."'.\n"); } $action = stChkRequestItem("action") ? $_REQUEST["action"] : ""; switch ($action) { case "check": // Check if there has been any change $changed = FALSE; if (stGetDisplayVar("tempSlideDuration") > 0 && stGetDisplayVar("tempSlide") > 0) { $sql = stPrepareSQL("SELECT * FROM displaySlides WHERE id=%d", stGetDisplayVar("tempSlide")); if (($res = stFetchSQL($sql)) !== false) { stSetDisplayVar("tempSlideDuration", 0); stSetDisplayVar("activeSlideMode", SMODE_ROTATE); stSetDisplayVar("activeSlide", stGetDisplayVar("tempSlide")); stSetDisplayVar("activeSlideExpire", time() + stGetDisplayVar("tempSlideDuration")); $changed = TRUE; } } else switch (stGetDisplayVar("showMode")) { case SMODE_ROTATE: default: stSetDisplayVar("activeSlideMode", SMODE_ROTATE); if (stGetDisplayVar("rotateList") == 0) { stSetDisplayVar("rotateList", 1); stSetDisplayVar("activeSlideExpire", 0); $changed = TRUE; } if (time() >= stGetDisplayVar("activeSlideExpire") && stGetDisplayVar("rotateList") > 0) { error_log("slide rotated"); // Get list of slides from active rotation list $list = stGetDisplayVar("rotateList"); $sql = stPrepareSQL( "SELECT * FROM displayListSlides WHERE list_id=%d ORDER BY id", $list); if (($slideList = stFetchSQL($sql)) !== false) { // Get slide at current index $index = stGetDisplayVar("rotateListIndex"); if (count($slideList) < $index) { $slide_id = $slideList[$index]["slide_id"]; stSetDisplayVar("activeSlide", $slide_id); stSetDisplayVar("activeSlideExpire", time() + stGetDisplayVar("rotateSlideTime")); } // Rotate to next slide if (++$index >= count($slideList)) $index = 0; stSetDisplayVar("rotateListIndex", $index); $changed = TRUE; } } else if (stGetDisplayVar("activeSlide") != -1) { // Emergency slide stSetDisplayVar("activeSlide", -1); stSetDisplayVar("activeSlideExpire", time() + stGetDisplayVar("rotateSlideTime")); $changed = TRUE; } break; case SMODE_COMPO: break; } $changed = FALSE; echo $changed ? "changed" : "nochange"; stSetStatus(200, "OK"); break; case "get": // Based on the currently active mode ... switch (stGetDisplayVar("activeSlideMode")) { case SMODE_ROTATE: // Slide rotation mode, display currently active slide if (stGetDisplayVar("activeSlide") > 0) { $sql = stPrepareSQL("SELECT * FROM displaySlides WHERE id=%d", stGetDisplayVar("activeSlide")); if (($slide = stFetchSQL($sql)) !== false) stPrintRotationSlide($slide); } else { echo "<div>ERROR!</div>\n"; } break; case SMODE_COMPO: // Competition mode $compo = stFetchSQL(stPrepareSQL( "SELECT * FROM compos WHERE id=%d", stGetDisplayVar("compoCompo"))); $prev = stFetchSQL(stPrepareSQL( "SELECT * FROM entries WHERE id=%d", stGetDisplayVar("compoPrevEntry"))); $entry = stFetchSQL(stPrepareSQL( "SELECT * FROM entries WHERE id=%d", stGetDisplayVar("compoCurrEntry"))); if ($compo !== false) stPrintCompoSlide($compo, $entry, $prev); break; } break; default: stSetStatus(404, "Not Found"); break; } // Save changed variables foreach (stExecSQL("SELECT * FROM displayVars") as $item) if (isset($displayVarsChanged[$item["key"]])) { $val = $displayVars[$item["key"]]; switch ($item["vtype"]) { case VT_INT: $vsql = stPrepareSQL("vint=%d", $val); break; case VT_BOOL: $vsql = stPrepareSQL("vint=%d", $val ? 1 : 0); break; case VT_STR: $vsql = stPrepareSQL("vstr=%s", $val); break; case VT_TEXT: $vsql = stPrepareSQL("vtext=%s", $val); break; } $sql = "UPDATE displayVars SET ".$vsql." WHERE key=".$db->quote($item["key"]); stExecSQL($sql); } ?>