private static function sendAnnouncementForm($founderror = array(), $dbData = array()) { $stdout = ""; if (!$GLOBALS["send"] && !$GLOBALS["template_id"]) { return "<div class='col-content-1of3'>\r\n" . " <h3><span class='green anfang'>1</span> Make sure the new newsletter " . "<span class='nowrap'>is ready</span> for publication</h3>\r\n" . " <p>The issue to be released is ....</p>\r\n" . " <p>[Not ready yet...]</p>\r\n" . "</div> <div class='col-content-2of3 divider'>\r\n" . " <h3><span class='green anfang'>2</span> Check that the " . "list of e-mail subscriptions " . "<span class='nowrap'>is up to date</span></h3>\r\n" . " <p style='margin-bottom:-1em'>There are currently</p>\r\n" . " <p class='nowrap bold green' style='font-size:1.3em; " . "margin-bottom:-0.5em;text-indent:1em'>" . $GLOBALS["newsClass"]->getNumberOfSubscribers() . " active subscribers.</p>\r\n" . " <p>You can <a href='" . SUBSITE . "/subscriptions/announcement_edit/index.php'><strong>view and " . "edit the list of subscribers</strong></a>. " . "Only subscriptions marked 'active' will receive " . "an announcement by e-mail.</p>\r\n" . "</div> <div class='col-content-3of3 divider'>\r\n" . " <h3 class='bottommargin'><span class='green anfang'>3</span> Edit and<br>send the announcement e-mail</h3>\r\n" . "<form method='post' action='" . $_SERVER["PHP_SELF"] . "' style='margin-bottom:2em;text-align:right'>\r\n" . " <input type='submit' value='Continue to the e-mail form »' class='fakelink h4'>\r\n" . " <input type='hidden' name='template_id' value='1'>\r\n" . "</form>\r\n" . "</div><div style='clear:both'><br></div>\r\n" . "\r\n"; } //debug::rrr(); //debug::rr($dbData); $stdout .= "<div class='col-content-left1third'>\r\n"; if (empty($dbData)) { $stdout .= "<p class='messages error bold'>There are no announcement templates. " . "Please write your own text in the form below.</p>\r\n"; } else { $news_url = isInPath("/" . PATH_NEWSEDITTEST . "/") ? PATH_NEWSEDITTEST : PATH_NEWSEDIT; $stdout .= "<h3 class='bottommargin'>First select a " . "<a href='" . $news_url . "/subscriptions/announcement_template/index.php'>template</a>:</h3>\r\n"; foreach ($dbData as $id => $data) { $stdout .= "<form method='post' action='" . $_SERVER["PHP_SELF"] . "'>\r\n" . " <input type='submit' value='" . $data["title"] . "' " . "class='fakelink' style='font-size:1.2em;font-weight:bold'>\r\n" . (isset($data["isdefault"]) && $data["isdefault"] ? " <span style='color:black;font-weight:normal;font-style:italic;padding-left:0.5em'>[default]</span>" : "") . " <input type='hidden' name='template_id' value='" . ($id + 1) . "'>\r\n" . " <p" . " style='margin-left:2em;margin-top:0;font-style:italic;line-height:1.0;font-size:0.9em'" . ">"" . functions::truncateStringByWord($data["text"], 120) . "..."</p>\r\n" . "</form>\r\n"; } } $stdout .= "</div> <div class='col right2of3'>\r\n"; $stdout .= "<h3 class='bottommargin'>Then edit the message and send:</h3>\r\n"; foreach ($founderror as $error) { $stdout .= "<p class='messages error bold'>» " . $error . "</p>\r\n"; } $stdout .= "<form method='post' action='" . $_SERVER["PHP_SELF"] . "' style='margin-bottom:2em'>\r\n" . " <table class='padding'>\r\n" . " <tr>\r\n" . " <td style='text-align:right;padding:0'><span class='red'>*</span></td>\r\n" . " <td>Subject line:</td>\r\n" . " </tr>\r\n" . " <tr>\r\n" . " <td></td>\r\n" . " <td><input" . (isset($founderror["subject"]) ? " class='error'" : "") . " type='text' name='subject' size='60' value='" . (!empty($GLOBALS["subject"]) ? $GLOBALS["subject"] : "") . "'></td>\r\n" . " </tr>\r\n" . " <tr>\r\n" . " <td style='text-align:right;padding:0'><span class='red'>*</span></td>\r\n" . " <td>Message:\r\n" . " </td>\r\n" . " </tr>\r\n" . " <tr>\r\n" . " <td></td>\r\n" . " <td><textarea" . (isset($founderror["text"]) ? " class='error'" : "") . " name='text' rows='20' cols='55'>" . (!empty($GLOBALS["text"]) ? $GLOBALS["text"] : (isset($dbData[$GLOBALS["template_id"] - 1]) ? $dbData[$GLOBALS["template_id"] - 1]["text"] : "")) . "</textarea></td>\r\n" . " </tr>\r\n" . " <tr>\r\n" . " <td colspan='3' style='text-align:right;padding-top:0.5em'>\r\n" . " <input type='submit' value='Send Announcement Mail'>\r\n" . " <input type='input' name='" . HONEYTRAP_ID . "' class='osynl'>\r\n" . " <input type='hidden' name='send' value='1'>\r\n" . " </td>\r\n" . " </tr>\r\n" . " </table>\r\n" . "</form>\r\n"; if (NEWS_DEBUG) { $to = ($username = auth::getUsername()) && functions::isEmailAddress($username . "@nordita.org") ? $username . "@nordita.org" : "*****@*****.**"; $stdout .= "<h1 class='red'>TEST MODE!</h1>\r\n" . "<p class='red h4'>Actually only '<strong>" . $to . "</strong>' will get this mail</p>\r\n"; //"<p>Only seleted beta testers actually get these mails</p>\r\n"; } $stdout .= "</div><div style='clear:both'><br></div>\r\n"; return $stdout; }
public static function outputPositionsDropdown($text = "data", $id = "position_id", $maxChars = 35) { $stdout = ""; $data = array(); functions::gpc_declare_input($id, "", false); // ----------------------------- // -- Obtain data // ----------------------------- $campaigns = functions::callMethod('fromdb_nwpositions', 'fromdb/nwpositions', 'getCampaigns'); if (empty($campaigns)) { return ""; } foreach ($campaigns as $regend => $arr) { foreach ($arr as $idx => $a) { $data[$regend . " " . $idx] = array($id => $a[$id], "title" => isset($a["title"]) ? $a["title"] : "", "regend" => isset($a["regend"]) ? $a["regend"] : ""); } } krsort($data); // ----------------------------- // -- Dropdown list // ----------------------------- $dropdownList = " <strong>Select the Nordita position</strong> for which you want to display the " . $text . ":\r\n" . " <br><select name='" . $id . "' onchange='submit()' style='font-size:1.1em'>\r\n" . " <option value='0'>--- select from list ---</option>\r\n"; foreach ($data as $pos) { $lbl = functions::truncateStringByWord($pos["title"], $maxChars); $lbl = substr($pos["title"], 0, $maxChars); if ($maxChars < strlen($pos["title"])) { $lbl .= "..."; } $dropdownList .= " <option value='" . $pos["position_id"] . "'" . (isset($_REQUEST[$id]) && $pos[$id] == $_REQUEST[$id] ? " selected" : "") . (strtotime($pos["regend"]) >= time() ? " class='future'>" . $pos["regend"] . " " . $lbl : " class='past'>" . $pos["regend"] . " [" . $lbl . "]") . "</option>\r\n"; } // end foreach $dropdownList .= " </select>\r\n" . "\r\n"; // ----------------------------- $stdout .= " <div class='only_online'>\r\n" . " <form " . "action='" . $_SERVER["PHP_SELF"] . "' " . "method='POST' " . "enctype='multipart/form-data' " . "name='ST1'>\r\n" . $dropdownList . " </form>\r\n" . " </div>\r\n" . "\r\n"; return $stdout; }
public static function outputFeed($feedchannel = array(), $feeditems = array(), $inArchive = false) { $stdout = ""; // --------------------------------- $channelUrlXml = "http://" . $_SERVER["SERVER_NAME"] . $_SERVER["PHP_SELF"]; $channelUrlHtml = str_replace("/feed", "", $channelUrlXml); //if ($inArchive) $channelUrlHtml = str_replace("/index.php", "", $channelUrlHtml) . "/archive/index.php"; // --------------------------------- $preamble = "<" . "?xml version='1.0' encoding='UTF-8'?" . ">\r\n" . "\r\n"; // --------------------------------- //TODO $stylesheet = empty($feedchannel["stylesheetFile"]) ? "" : "<" . "?xml-stylesheet type='text/xsl' media='screen' href='" . $feedchannel["stylesheetFile"] . "'?" . ">\r\n" . "\r\n"; // --------------------------------- $root = "<rss version='2.0'\r\n" . " xmlns:admin='http://webns.net/mvcb/'\r\n" . " xmlns:atom='http://www.w3.org/2005/Atom'\r\n" . " xmlns:cc='http://web.resource.org/cc/'\r\n" . " xmlns:content='http://purl.org/rss/1.0/modules/content/'\r\n" . " xmlns:creativeCommons='http://backend.userland.com/creativeCommonsRssModule'\r\n" . " xmlns:dc='http://purl.org/dc/elements/1.1/'\r\n" . " xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'\r\n" . " xmlns:slash='http://purl.org/rss/1.0/modules/slash/'\r\n" . " xmlns:sy='http://purl.org/rss/1.0/modules/syndication/'\r\n" . ">\r\n" . "\r\n"; // --------------------------------- $channelHeader = " <channel>\r\n" . " <title>" . $feedchannel["channelTitle"] . "</title>\r\n" . " <link>" . $channelUrlHtml . "</link>\r\n" . " <description>" . $feedchannel["channelDescription"] . "</description>\r\n" . " <atom:link href='" . $channelUrlXml . "' rel='self' type='application/rss+xml' />\r\n" . " <language>en-US</language>\r\n" . " <managingEditor>info@nordita.org (Hans Mühlen)</managingEditor>\r\n" . " <webMaster>info@nordita.org (Hans Mühlen)</webMaster>\r\n" . " <admin:errorReportsTo rdf:resource='mailto:info@nordita.org' />\r\n" . " <copyright>Copyright 2007-" . date("Y") . ", Nordita</copyright>\r\n" . " <category>Newsletter</category>\r\n" . " <image>\r\n" . " <url>" . URL_PREFIX . "/img/_theme/th-frost/icon_apple.png</url>\r\n" . " <link>" . $channelUrlHtml . "</link>\r\n" . " <title>The Nordita Newsletter</title>\r\n" . " <description>" . $feedchannel["channelTitle"] . "</description>\r\n" . " <width>57</width>\r\n" . " <height>57</height>\r\n" . " </image>\r\n" . " <ttl>1440</ttl>\r\n" . " <sy:updatePeriod>daily</sy:updatePeriod>\r\n" . " <sy:updateFrequency>1</sy:updateFrequency>\r\n" . " <sy:updateBase>2007-01-01T12:00+00:00</sy:updateBase>\r\n" . "\r\n"; // --------------------------------- $channelFooter = " </channel>\r\n" . "\r\n" . "</rss>\r\n" . "\r\n"; // --------------------------------- $itemlist = ""; //foreach ($feeditems as $date => $items) { // foreach ($items as $key => $item) { foreach ($feeditems as $key => $item) { $itemId = $key; $item["text"] = trim(preg_replace("/[\r\n]/", " ", $item["text"])); $item["title"] = trim(str_replace(" ", " ", strip_tags($item["title"]))); $itemlist .= " <item>\r\n" . " <title>" . $item["title"] . "</title>\r\n" . " <link>" . $channelUrlHtml . "#" . $itemId . "</link>\r\n" . " <source url='" . $channelUrlXml . "'>" . $item["title"] . "</source>\r\n" . ""; foreach ($item["cat"] as $cat) { // -- CATEGORIES OF ITEM $itemlist .= " <category><![CDATA[" . $cat . "]]></category>\r\n"; } $itemlist .= " <guid isPermaLink='false'>" . $channelUrlHtml . "#" . $itemId . "</guid>\r\n" . " <description><![CDATA[" . functions::truncateStringByWord(strip_tags($item["text"]), 200) . " [...]]]></description>\r\n" . " <content:encoded><![CDATA[" . str_replace("src='img/", "src='" . URL_PREFIX . "/img/", $item["text"]) . "]]></content:encoded>\r\n" . " </item>\r\n" . "\r\n"; // } // end foreach } // end foreach // --------------------------------- return $preamble . $stylesheet . $root . $channelHeader . $itemlist . $channelFooter; }
public static function AnewseditCreateTestDb($select = "") { $stdout = ""; functions::gpc_declare_input("doit", false, true); if ($GLOBALS["doit"]) { $stdout .= "<div class='box blackborder padding' style='max-width:752px'>\r\n" . " <form action='" . $_SERVER["PHP_SELF"] . "' method='post'>\r\n" . " <input type='submit' name='doit' value='Drop and recreate " . ($select == "test" ? "TEST " : "REAL ") . "database again'>\r\n" . " </form>\r\n" . "</div>\r\n\r\n"; // if (!class_exists("fromdb_client",FALSE)) require_once PATH_CLASSES . "/fromdb/client.php"; // $dbClient = new fromdb_client(); // Includes connect to "nordita" database // Also gives access to the following useful functions: // function client_connectToDatabase ($db_host,$db_user,$db_password,$db_database) // function client_submitQuery ($nr,$ledtext,$sqlStmt,$showsql) // function client_safeMysqlQuery ($sqlStmt,$queryName) // function client_safeMysqlFetchRow ($resultset) // function client_safeMysqlFetchAssoc ($resultset) if (!class_exists("fromdb_nwnews", FALSE)) { require_once PATH_CLASSES . "/fromdb/nwnews.php"; } $dbClient = new fromdb_nwnews(); // includes connect to "nordita" database unset($SQL); // Define array $SQL[] in these insert files: switch ($select) { case "empty": $news_db_prefix = "norditanews_"; require PATH_SQL . "/sql_news_create_tables.php"; break; case "lookup": $news_db_prefix = "norditanews_"; require PATH_SQL . "/sql_news_insertlookup.php"; break; case "article": $news_db_prefix = "norditanews_"; require PATH_SQL . "/sql_news_insertarticle.php"; break; case "subscribe": $news_db_prefix = "norditanews_"; require PATH_SQL . "/sql_news_insertsubscribe.php"; break; case "test": $news_db_prefix = "norditanewstest_"; require PATH_SQL . "/sql_news_create_tables.php"; require PATH_SQL . "/sql_news_insertlookup.php"; require PATH_SQL . "/sql_news_inserttest.php"; break; } if (is_array($SQL)) { $stdout .= "<ol class='tightlist'>\r\n"; foreach ($SQL as $sqlStmt) { $stdout .= $dbClient->query($sqlStmt) ? " <li><strong class='green'>OK</strong> - " . functions::truncateStringByWord($sqlStmt) . "</li>\r\n" : " <li><strong class='red'>ERROR</strong> - " . functions::truncateStringByWord($sqlStmt) . "<br>" . $dbClient->dbMysqlError . "</li>\r\n"; } $stdout .= "</ol>\r\n"; $stdout .= "<h3 class='green'>Done</h3>"; } else { $stdout .= "<h3 class='red'>Found no SQL statements to execute</h3>"; } } else { $stdout .= "<h3 class='red bottommargin'>WARNING</h3>\r\n" . "\r\n" . "<form action='" . $_SERVER["PHP_SELF"] . "' method='post'>\r\n" . " <input type='submit' name='doit' value='Drop and Recreate Database with " . (isInPath("_test/") ? "TEST " : "REAL ") . "Data'>\r\n" . "</form>\r\n" . "\r\n"; } return $stdout; }
public static function outputMockagendaEditorList($onlyEditCurrentAndFuture = FALSE, $updatedConfId = 0, $showCacheUpdateLink = FALSE) { $stdout = ""; // Experimental: jQuery accordion $stdalt = ""; $allevents = $unallocatedevents = array(); // -------------------------------- // -- Obtain data // -------------------------------- $allConfids = functions::callMethod('fromdb_nwevents', 'fromdb/nwevents', 'getAgendaConferenceIdsForNorditaEvents', '', '1'); if (!is_array($allConfids) || empty($allConfids)) { return BLURB_SORRY_NO_EVENTS; } //TODO: use exception instead foreach ($allConfids as $confId) { $event = functions::callMethod('fromdb_nwevents', 'fromdb/nwevents', 'getOneEvent', $confId, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); if (!empty($event)) { if (!empty($event["from"]) && substr($event["startdate"], -5) != "01-01") { $idx = $event["from"]; while (isset($allevents[$idx])) { $idx++; } $allevents[$idx] = $event; } elseif (!empty($event["id"])) { $event["from"] = 0; $unallocatedevents[$event["id"]] = $event; } } } // end foreach krsort($allevents); krsort($unallocatedevents); $allevents = array_merge($unallocatedevents, $allevents); // -------------------------------- // -- Output data // -------------------------------- $stdout .= " <p class='largefont'><strong>Select Event to be " . ($onlyEditCurrentAndFuture ? "Updated" : "Edited") . " Below</strong>" . ($showCacheUpdateLink ? " or <strong><a href='" . $_SERVER["PHP_SELF"] . "?menulookup=1'>Recreate 'menulookup' cache</a></strong>" : "") . "</p>\r\n"; if (!$onlyEditCurrentAndFuture) { $stdout .= " <p style='margin-bottom:2em'>" . "<strong>[Edit]</strong> = edit manually kept fields in nw_events DB;" . "<br><strong>[Update]</strong> = update Agenda fields in nw_events DB from Agenda DB;" . "<br><strong>[Delete]</strong> = delete record from nw_events DB</p>\r\n"; } $stdout .= "<table style='border-top:2px solid black;border-bottom:2px solid black'>\r\n"; // Experimental: jQuery accordion $stdalt = "<style type='text/css'>.eventsynclist\n{\n display: block;\n position: relative;\n overflow: visible;\n clip: inherit ! important;\n visibility: visible;\n float: none;\n clear: both;\n top: 0;\n right: auto;\n bottom: auto;\n left: 0;\n width: auto;\n height: auto;\n z-index: 25;\n}</style>\r\n" . "<div class='eventsynclist'>\r\n" . " <h3>[Not assigned]</h3>\r\n" . " <div><table>\r\n"; $numberOfColumns = $onlyEditCurrentAndFuture ? 6 : 8; $processedYear = ""; foreach ($allevents as $thisevent) { if ($thisevent["from"]) { $year = date("Y", $thisevent["from"]); // Write a year headline? if ((!$onlyEditCurrentAndFuture || $year >= date("Y")) && $year != $processedYear) { $processedYear = $year; $stdout .= " <tr class='theyear'>\r\n" . " <th colspan='" . $numberOfColumns . "' " . "style='border:1px solid black;padding:0.2em 1em;background-color:#eee'>" . $processedYear . "</th>\r\n" . " </tr>\r\n"; // Experimental: jQuery accordion $stdalt .= " </table></div>\r\n" . " <h3>" . $processedYear . "</h3>\r\n" . " <div><table>\r\n"; } $period = functions::readableDateInterval($thisevent["start"], $thisevent["end"], TRUE); } else { $period = "(<em>Dates missing</em>)"; } // end if $title = functions::truncateStringByWord($thisevent["title"], 50); if ($thisevent["title"] != $title) { $title .= "..."; } $img = !empty($thisevent["subpath"]) && file_exists(INCLEVEL . PATH_EVENTLOGOS . "/" . $thisevent["subpath"] . ".png") ? "<img src='" . PATH_EVENTLOGOS . "/" . $thisevent["subpath"] . ".png' alt='' style='width:10px;height:10px;border:1px solid black'>" : ""; if (!$onlyEditCurrentAndFuture || isset($thisevent["current"]) && in_array($thisevent["current"], array("current", "future"))) { $stdout .= " <tr" . ($updatedConfId == $thisevent["id"] ? " class='green'" : "") . ">\r\n" . " <td style='padding-right:0.5em'>" . $img . "</td>\r\n" . " <td style='padding-right:0.5em' class='bold' title='" . $thisevent["subpath"] . "'>" . $title . "</td>\r\n" . " <td style='padding-right:0.5em'><em>" . $thisevent["id"] . "</em></td>\r\n" . " <td style='padding-right:0.5em'>" . $thisevent["eventtype"] . "</td>\r\n" . " <td style='padding-right:0.5em'>" . $period . "</td>\r\n" . ($onlyEditCurrentAndFuture ? "" : " <td style='padding-right:0.5em' class='bold'>" . "<a href='" . $_SERVER["PHP_SELF"] . "?c=" . urlencode($thisevent["id"]) . "&e=1'>[Edit]</a></td>\r\n") . " <td style='padding-right:0.5em' class='bold'><a href='" . $_SERVER["PHP_SELF"] . "?c=" . urlencode($thisevent["id"]) . "&u=1'>[Update]</a></td>\r\n" . ($onlyEditCurrentAndFuture ? "" : " <td style='padding-right:0.5em' class='bold'>" . "[Delete]</td>\r\n") . " </tr>\r\n"; // Experimental: jQuery accordion $stdalt .= " <tr>\r\n" . " <td style='padding-right:0.5em'>" . $img . "</td>\r\n" . " <td style='padding-right:0.5em' class='bold' title='" . $thisevent["subpath"] . "'>" . $title . "</td>\r\n" . " <td style='padding-right:0.5em'><em>" . $thisevent["id"] . "</em></td>\r\n" . " <td style='padding-right:0.5em'>" . $thisevent["eventtype"] . "</td>\r\n" . " <td style='padding-right:0.5em'>" . $period . "</td>\r\n" . ($onlyEditCurrentAndFuture ? "" : " <td style='padding-right:0.5em' class='bold'>" . "<a href='" . $_SERVER["PHP_SELF"] . "?c=" . urlencode($thisevent["id"]) . "&e=1'>[Edit]</a></td>\r\n") . " <td style='padding-right:0.5em' class='bold'><a href='" . $_SERVER["PHP_SELF"] . "?c=" . urlencode($thisevent["id"]) . "&u=1'>[Update]</a></td>\r\n" . ($onlyEditCurrentAndFuture ? "" : " <td style='padding-right:0.5em' class='bold'>" . "[Delete]</td>\r\n") . " </tr>\r\n"; } // end if } // end foreach $stdout .= "</table>\r\n"; // Experimental: jQuery accordion $stdalt .= " </table></div>\r\n" . "</div>\r\n"; // -------------------------------- // Experimental: jQuery accordion // return $stdalt; return $stdout; }
function parseAndExecuteSql($dbLink, $filename = "", $SQL = array()) { $res = array(); mysqli_autocommit($dbLink, FALSE); if (!empty($filename) && preg_match("~.sql\$~", $filename)) { // (1) -- Process file with raw SQL data (used only for CREATE, not INSERT) ini_set("auto_detect_line_endings", true); // enables detecting '\r' line endings $handle = @fopen(INCLEVEL . PATH_SETUP_SQL . "/" . $filename, "r"); if ($handle) { while (($sqlStmt = fgets($handle, 4096)) !== false) { $sqlStmt = preg_replace("~^--(.*)\$~", "", $sqlStmt); $sqlStmt = preg_replace("~^/\\*!(.*)\$~", "", $sqlStmt); $sqlStmt = trim($sqlStmt); $sqlStmt = preg_replace("~;\$~", "", $sqlStmt); if (empty($sqlStmt)) { continue; } if (mysqli_query($dbLink, $sqlStmt)) { $res[] = array("sql" => functions::truncateStringByWord($sqlStmt), "res" => 1); } else { $res[] = array("sql" => functions::truncateStringByWord($sqlStmt), "res" => 0, "err" => mysqli_error($dbLink), "all" => $sqlStmt); } } fclose($handle); } return $res; } else { // (2) -- Obtain file with definition of PHP array $SQL if (!empty($filename) && preg_match("~.php\$~", $filename)) { if (file_exists(INCLEVEL . PATH_SETUP_SQL . "/" . $filename)) { include INCLEVEL . PATH_SETUP_SQL . "/" . $filename; if ($GLOBALS["dbFoundError"]) { return array(); } } } // (3) -- Process PHP array $SQL from input parameter or from file included in (2) if (!empty($SQL) && is_array($SQL)) { foreach ($SQL as $sqlStmt) { $sqlStmt = trim($sqlStmt); if (empty($sqlStmt)) { continue; } if (mysqli_query($dbLink, $sqlStmt)) { $res[] = array("sql" => truncateStringByWord($sqlStmt), "res" => 1); } else { $GLOBALS["dbFoundError"] .= "<p><strong>»</strong> " . "Could not execute SQL command '<strong>" . $sqlStmt . "</strong>'" . "</p>"; $res[] = array("sql" => truncateStringByWord($sqlStmt), "res" => 0, "err" => mysqli_error($dbLink), "all" => $sqlStmt); } } } } // end if // NB. Transaction rollbacks don't work for CREATE, DROP, DELETE if ($GLOBALS["dbFoundError"]) { mysqli_rollback($dbLink); } elseif (!mysqli_commit($dbLink)) { $GLOBALS["dbFoundError"] .= ERRORMESSAGE_SORRY_NO_COMMIT; } mysqli_autocommit($dbLink, TRUE); return $res; }
public static function outputRoomsEditorList() { $stdout = $update = ""; $allevents = $unallocatedevents = array(); // -------------------------------- // -- Obtain data // -------------------------------- $allConfids = false; //TODO: /* $allConfids = functions::callMethod('fromdb_nwevents','fromdb/nwevents','getAgendaConferenceIdsForNorditaEvents','','1'); */ if (!is_array($allConfids) || empty($allConfids)) { return BLURB_SORRY_NO_EVENTS; } //TODO: use exception instead foreach ($allConfids as $confId) { $event = false; //TODO: /* $event = functions::callMethod('fromdb_nwevents','fromdb/nwevents','getOneEvent',$confId,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE); */ if (!empty($event)) { if (!empty($event["from"]) && substr($event["startdate"], -5) != "01-01") { $allevents[$event["from"]] = $event; } elseif (!empty($event["id"])) { $event["from"] = 0; $unallocatedevents[$event["id"]] = $event; } } } // end foreach krsort($allevents); krsort($unallocatedevents); $allevents = array_merge($unallocatedevents, $allevents); // -------------------------------- // -- Output data // -------------------------------- $stdout .= " <p class='largefont'><strong>Select Event to be Edited Below</strong> or " . "<strong><a href='" . $_SERVER["PHP_SELF"] . "?menulookup=1'>Recreate 'menulookup' cache</a></strong></p>\r\n" . " <p style='margin-bottom:2em'><strong>[Edit]</strong> = edit manually kept fields in nw_events DB;<br><strong>[Update]</strong> = update Agenda fields in nw_events DB from Agenda DB;<br><strong>[Delete]</strong> = delete record from nw_events DB</p>\r\n"; $stdout .= "<table style='border-top:2px solid black;border-bottom:2px solid black'>\r\n"; $currentyear = ""; foreach ($allevents as $thisevent) { if ($thisevent["from"]) { $year = date("Y", $thisevent["from"]); if ($year != $currentyear) { $currentyear = $year; $stdout .= " <tr>\r\n" . " <th colspan='7' style='border:1px solid black;padding:0.2em 1em;background-color:#eee'>" . $currentyear . "</th>\r\n" . " </tr>\r\n"; } $period = functions::readableDateInterval($thisevent["start"], $thisevent["end"], TRUE); $update = "<a href='" . $_SERVER["PHP_SELF"] . "?c=" . urlencode($thisevent["id"]) . "&u=1'>[Update]</a>"; } else { $period = "(<em>Dates missing</em>)"; $update = ""; } $title = functions::truncateStringByWord($thisevent["title"], 50); if ($thisevent["title"] != $title) { $title .= "..."; } $img = !empty($thisevent["subpath"]) && file_exists(INCLEVEL . PATH_EVENTLOGOS . "/" . $thisevent["subpath"] . ".png") ? "<img src='" . PATH_EVENTLOGOS . "/" . $thisevent["subpath"] . ".png' alt='' style='width:10px;height:10px;border:1px solid black'>" : ""; $stdout .= " <tr>\r\n" . " <td style='padding-right:0.5em'>" . $img . "</td>\r\n" . " <td style='padding-right:0.5em' class='bold' title='" . $thisevent["subpath"] . "'>" . $title . "</td>\r\n" . " <td style='padding-right:0.5em'>" . $thisevent["eventtype"] . "</td>\r\n" . " <td style='padding-right:0.5em'>" . $period . "</td>\r\n" . " <td style='padding-right:0.5em' class='bold'>" . "<a href='" . $_SERVER["PHP_SELF"] . "?c=" . urlencode($thisevent["id"]) . "&e=1'>[Edit]</a></td>\r\n" . " <td style='padding-right:0.5em' class='bold'>" . $update . "</td>\r\n" . " <td style='padding-right:0.5em' class='bold'>" . "[Delete]</td>\r\n" . " </tr>\r\n"; } $stdout .= "</table>\r\n"; // -------------------------------- return $stdout; }