public static function OutputSeminarsNextweek($w = 0) { $stdout = ""; $talks_selection = $events = $colloquium = $visits = $contributions = $seminars = $talks = array(); functions::gpc_declare_input("w", $w, true); $delta = $GLOBALS["w"] == 0 ? 7 : 0; $saturday1 = date("Y-m-d", time() - 3600 + ($delta - 1 + date("w", time() - 3600)) * 86400); $sunday = date("Y-m-d", time() - 3600 + ($delta - date("w", time() - 3600)) * 86400); $saturday2 = date("Y-m-d", time() - 3600 + ($delta + 7 - date("w", time() - 3600)) * 86400); $agenda_timespan = $GLOBALS["w"] == 0 ? "nextweek" : "thisweek"; // ---------------------- // Obtain data from VM DB: records for visitors outside events // ---------------------- $visits = functions::callMethod('fromdb_vm', 'fromdb/vm', 'getArrivingVisitors', "extweek", $GLOBALS["w"]); // 'extweek' = extended week // ---------------------- // Obtain data from Agenda DB: seminars and colloquium // ---------------------- //@@@ -- VERKAR OK -- in OutputSeminarsNextweek() -- calls getTalkRecordsSeminars+getTalkRecordsColloquium // ---------------------- // Obtain data from nw_events DB: programs and other events, and talks inside these events // ---------------------- $events = functions::callMethod('fromdb_nwevents', 'fromdb/nwevents', 'getEventsInPeriod', $agenda_timespan); $seminars = functions::callMethod('fromdb_nwevents', 'fromdb/nwevents', 'getTalkRecordsSeminars', $agenda_timespan); $colloquium = functions::callMethod('fromdb_nwevents', 'fromdb/nwevents', 'getTalkRecordsColloquium', $agenda_timespan); $contributions = functions::callMethod('fromdb_nwevents', 'fromdb/nwevents', 'getEventContributionsInPeriod', $agenda_timespan); // ---------------------- // Postparsing of seminars data records --> array $talks_selection[] // ---------------------- // $seminars = self::mergeTalkRecords($seminars,$colloquium); // $talks = self::mergeTalkRecords($seminars,$contributions); $talks = self::mergeTalkRecords($colloquium, self::mergeTalkRecords($seminars, $contributions)); if (isset($talks) && count($talks)) { foreach ($talks as $day => $dayevents) { if (count($dayevents)) { foreach ($dayevents as $categoryId => $dayevent) { // $dayevent["id"|"end"|"title"] /* if (isset($dayevent["eventtype"]) && in_array(strtolower($dayevent["eventtype"]), array("nordita program","program","conference","workshop","meeting","school")) ) { // -- Nordita event(s) //doesn't seem to work... $talks_selection[0][] = array( "title" => trim($dayevent["title"]), "eventtype" => $dayevent["eventtype"], "startdate" => $dayevent["startdate"], "enddate" => $dayevent["enddate"], "subpath" => $dayevent["subpath"], "id" => $dayevent["id"], "categoryid" => $dayevent["categoryid"] ); unset($talks[$day][$categoryId]); } else { */ // -- Seminars unset($sel); if (isset($dayevent["title"])) { $dayevent["title"] = trim($dayevent["title"]); } $sel["heading"] = ""; if (isset($dayevent["eventtitle"])) { $sel["heading"] = "Event Talk" . (!empty($dayevent["eventtitle"]) ? " (" . $dayevent["eventtitle"] . ")" : ""); } if (isset($dayevent["categoryid"])) { include PATH_DATA . "/agenda_fids.php"; // -> $fids[] if (isset($fids)) { if (in_array($dayevent["categoryid"], array_keys($fids["colloquium"]))) { // -- AN COLLOQUIUM $sel["heading"] = "The AlbaNova Colloquium"; } else { // -- SEMINARS foreach ($fids as $group => $farray) { foreach ($farray as $categoryid => $label) { if ($categoryid == $dayevent["categoryid"] && (preg_match("/^Seminar\\S*\\s*(.*)\$/i", $label, $res) || preg_match("/^Group meeting\\S*\\s*(.*)\$/i", $label, $res)) && !empty($res[1])) { $sel["heading"] = $res[1]; } } } } } } $sel["eventtype"] = isset($dayevent["eventtype"]) ? ucfirst($dayevent["eventtype"]) : ""; $sel["period"] = ucfirst($dayevent["period"]); $sel["period"] = $dayevent["starttime"] . (!empty($dayevent["endtime"]) ? "—" . $dayevent["endtime"] : ""); $sel["room"] = isset($dayevent["room"]) ? ucfirst($dayevent["room"]) : ""; $sel["title"] = """ . $dayevent["title"] . """; $sel["title"] = str_replace("<span class='agenda-programtalk'><span>Event Talk</span></span> ", "", $sel["title"]); //if (isset($dayevent["url"]) && (strpos($dayevent["url"],"contribId")!==false)) $programtalk = "[Program Talk] "; $seltmp = array(); if (isset($dayevent["speakers"])) { foreach ($dayevent["speakers"] as $speaker) { $tmp = (!empty($speaker["nw_fullname"]) ? $speaker["nw_fullname"] . " " : "") . (!empty($speaker["av_institute"]) ? "(" . $speaker["av_institute"] . ")" : ""); $seltmp[] = trim($tmp); } } $sel["thespeaker"] = implode(", ", $seltmp); $sel["url"] = empty($dayevent["id"]) ? "" : AGENDA_URI . "/" . (isset($dayevent["parent_id"]) ? "contributionDisplay.py?contribId=" . $dayevent["id"] . "&confId=" . $dayevent["parent_id"] : "conferenceDisplay.py?confId=" . $dayevent["id"]); $sel["ical"] = empty($dayevent["id"]) && !isset($dayevent["parent_id"]) ? "" : AGENDA_URI . "/conferenceDisplay.py/ical?confId=" . $dayevent["id"]; $talks_selection[$day][$dayevent["starttime"] . ":" . str_pad(rand(0, 999), 3, "0", STR_PAD_LEFT)] = $sel; /* } // end if */ } // end foreach } } // end foreach } // end if ksort($talks_selection); foreach (array_keys($talks_selection) as $key) { ksort($talks_selection[$key]); } // ---------------------- // -- Output data // ---------------------- $stdout .= " <p class='only_online'>" . "[" . ($GLOBALS["w"] == 0 ? "<a href='" . $_SERVER["PHP_SELF"] . "?w=1' class='bold' rel='nofollow'>This Week</a>" : "This Week") . "]" . " " . "[" . ($GLOBALS["w"] == 1 ? "<a href='" . $_SERVER["PHP_SELF"] . "?w=0' class='bold' rel='nofollow'>Next Week</a>" : "Next Week") . "]" . "</p>\r\n" . "\r\n" . "<pre class='box letter'>\r\n" . "Dear Norditans,\r\n" . "\r\n" . "-------------\r\n\r\n"; if (count($visits)) { $visitortext = ""; foreach ($visits as $type) { if (isset($type["Visitors"])) { foreach ($type["Visitors"] as $v) { $visitortext .= "*" . $v["name"] . "*\r\n" . " " . $v["affiliation"] . "\r\n" . " " . $v["dates"] . "\r\n" . "\r\n"; } } } $stdout .= ($GLOBALS["w"] == 0 ? "Next" : "This") . " week, Nordita welcomes these guests:\r\n" . "\r\n" . $visitortext . "-------------\r\n\r\n"; } /* "*MONDAY, __________ 2011* 12:30- Nordita West Seminar Room (122:026) ASTRO-PH LUNCH MEETING http://wiki.nordita.org/index.php/Astro-ph_Meeting " . */ if (empty($talks_selection) && empty($events)) { $stdout .= "Nothing of theoretical interest will happen " . ($GLOBALS["w"] == 0 ? "next" : "this") . " week!\r\n" . "-------------\r\n\r\n"; } else { if (!empty($events)) { $stdout .= "Major Nordita Events " . ($GLOBALS["w"] == 0 ? "next" : "this") . " week:\r\n\r\n"; foreach ($events as $key => $ev) { $stdout .= " During the week, the " . str_replace("nordita", "Nordita", $ev["eventtype"]) . "\r\n" . " "" . strtoupper($ev["title"]) . ""\r\n" . " " . ($sunday < $ev["start"] ? "starts on " . functions::readableDateInterval($ev["start"], $ev["start"]) : "continues") . ", and will continue until " . functions::readableDateInterval($ev["end"], $ev["end"]) . ".\r\n"; if (!empty($ev["subpath"])) { $stdout .= " " . URL_PREFIX . "/" . $ev["subpath"] . "\r\n"; } elseif (!empty($ev["id"])) { $stdout .= " http://agenda.albanova.se/conferenceDisplay.py?confId=" . $ev["id"] . "\r\n"; } $stdout .= "\r\n"; } $stdout .= "-------------\r\n\r\n"; } if (!empty($talks_selection)) { $stdout .= "Here are some of the seminars at Nordita and AlbaNova " . ($GLOBALS["w"] == 0 ? "next" : "this") . " week:\r\n\r\n"; foreach ($talks_selection as $day => $record) { $stdout .= "*" . strtoupper(date("l, j F Y", strtotime($day))) . "*\r\n\r\n"; foreach ($record as $start => $dayevent) { if (count($dayevent)) { if (in_array(strtolower($dayevent["eventtype"]), array("nordita program", "program", "conference", "workshop", "meeting", "school"))) { $stdout .= " " . ucfirst($dayevent["eventtype"]) . "\r\n" . " " . $dayevent["period"] . "\r\n" . "\r\n"; } else { $stdout .= " " . (!empty($dayevent["period"]) ? $dayevent["period"] : "") . (!empty($dayevent["room"]) ? " " . $dayevent["room"] : "") . "\r\n" . (!empty($dayevent["heading"]) ? " " . strtoupper($dayevent["heading"]) . "\r\n" : "") . (!empty($dayevent["thespeaker"]) ? " " . $dayevent["thespeaker"] . "\r\n" : "") . (!empty($dayevent["title"]) ? " " . $dayevent["title"] . "\r\n" : "") . (!empty($dayevent["url"]) ? " Info: " . $dayevent["url"] . "\r\n" : "") . (!empty($dayevent["ical"]) ? " Add to calendar: " . $dayevent["ical"] . "\r\n" : "") . "\r\n"; } } } // end if } // end foreach $stdout .= "-------------\r\n\r\n"; } } // end if (empty($talks_selection)) // ---------------------- move to suitable class! $dbWiki = new fromdb_nwwiki(); $dbWiki->get_text("Cake"); $txt = $dbWiki->wikipage_text["text"]; preg_match_all("~<td>([^<]*)</td>[^<].*<td>([^<]*)</td>~mU", $txt, $res); foreach ($res[1] as $ix => $v) { $cake[strtotime($v)] = $res[2][$ix]; } $delta = $GLOBALS["w"] == 0 ? 8 : 1; $monday = date("Y-m-d", time() - 3600 + ($delta - date("w", time() - 3600)) * 86400); $m = strtotime($monday); $nextm = $m + 604800; $stdout .= "*MONDAY CAKE, " . strtoupper(functions::readableDateInterval($monday, $monday)) . "*\r\n"; //functions::readableDateInterval($monday,$monday) . if (isset($cake[$m]) && strlen($cake[$m]) > 5) { $stdout .= " Cakemaster this week is " . $cake[$m] . ".\r\n"; } else { $stdout .= " No cakemaster appointed!\r\n"; } if (isset($cake[$nextm]) && strlen($cake[$nextm]) > 5) { $stdout .= " (Cakemaster on " . date("l, F jS", $nextm) . " the following week, will be " . $cake[$nextm] . ".)\r\n"; } $stdout .= " " . URL_PREFIX . "/cake\r\n"; // ---------------------- return str_replace("()", "", $stdout) . "</pre>"; }