示例#1
0
 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"] . "&amp;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") . "]" . "&nbsp;&nbsp;" . "[" . ($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" . "  &quot;" . strtoupper($ev["title"]) . "&quot;\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>";
 }