static function Acron($onlycaches = array()) { $stdout = ""; $newcache = $updatedRecords = array(); // ---------------------- // -- Update current event data from Agenda // ---------------------- if (!class_exists("fromdb_nwevents", FALSE)) { require_once PATH_CLASSES . "/fromdb/nwevents.php"; } if (!isset($dbEv) || !is_object($dbEv)) { $dbEv = new fromdb_nwevents(); } $updatedRecords = $dbEv->updateCurrentEventsFromAgenda(); // ---------------------- // -- Recreate all caches // ---------------------- if (!class_exists("fromcache", FALSE)) { require_once PATH_CLASSES . "/lib/fromcache.php"; } $cachesCallback = fromcache::get_cache_callback(); foreach (array_reverse($cachesCallback) as $cachename => $callback) { $callback = str_replace("URL_PREFIX", URL_PREFIX, $callback); eval("\$c = functions::callMethod(" . $callback . ");"); if ($c) { $newcache[] = $cachename . "\r\n"; } } // ---------------------- // -- Output confirmation // ---------------------- $thecache = is_array($onlycaches) || !empty($onlycaches) ? $onlycaches : $newcache; $stdout .= "<div class='col-content-left' style='width:30%'>\r\n"; if (count($updatedRecords)) { $stdout .= "<h3>Updated data for events:</h3>" . " <ul>\r\n"; foreach ($updatedRecords as $confId) { $stdout .= " <li><a href='http://agenda.albanova.se/conferenceDisplay.py?confId=" . $confId . "'>" . $dbEv->getEventTitle($confId) . "</a></li>\r\n"; } $stdout .= " </ul>\r\n"; } $stdout .= "<h3>Recreated Caches:</h3>" . "<ul>\r\n"; foreach ($thecache as $c) { $stdout .= "<li>" . $c . "</li>\r\n"; } $stdout .= "</ul>\r\n" . "\r\n</div><div class='col-content-right' style='width:60%'>\r\n" . admin::AcacheFilesList() . "</div>\r\n"; return $stdout; }
public function updateEventsFromLocalFile() { if (!file_exists(INCLEVEL . PATH_MENU . "/m_events.php")) { return false; } include_once PATH_MENU . "/m_events.php"; if (!isset($dbEv) || !is_object($dbEv)) { $dbEv = new fromdb_nwevents(); } $existingConfids = $dbEv->getAgendaConferenceIdsForNorditaEvents(); $success = true; $updatedRecords = 0; // ----------------------- $events = menu_events(); if (empty($events)) { return false; } foreach ($events as $path => $event) { if (preg_match("#events/([^/]*)#", $path, $subpath) && !empty($subpath[1]) && !empty($event["confid"])) { foreach (array("title", "blurb", "venue", "surveyresponse", "youtube") as $field) { if (!isset($event[$field])) { $event[$field] = ""; } } foreach (array("confid_parent", "syrveyid") as $field) { if (!isset($event[$field])) { $event[$field] = "0"; } } $event["subpath"] = $subpath[1]; $et = strtolower($event["etype"]); $event["eventtype"] = isset(event::$eventTypeId[$et]) ? event::$eventTypeId[$et] : "0"; $sql = "INSERT INTO " . $this->dbprefix . "event " . " (event_id," . " subpath," . " eventtype," . " title," . " blurb," . " venue," . " confid_parent," . " surveyid," . " surveyresponse," . " youtube) " . "VALUES " . " ('" . addslashes(strip_tags($event["confid"])) . "'," . " '" . addslashes(strip_tags($event["subpath"])) . "'," . " '" . addslashes(strip_tags($event["eventtype"])) . "'," . " '" . addslashes(strip_tags($event["title"])) . "'," . " '" . addslashes(strip_tags($event["blurb"])) . "'," . " '" . addslashes(strip_tags($event["venue"])) . "'," . " '" . addslashes(strip_tags($event["confid_parent"])) . "'," . " '" . addslashes(strip_tags($event["surveyid"])) . "'," . " '" . addslashes(strip_tags($event["surveyresponse"])) . "'," . " '" . addslashes(strip_tags($event["youtube"])) . "'" . " ) " . "ON DUPLICATE KEY UPDATE " . " subpath='" . addslashes(strip_tags($event["subpath"])) . "'," . " eventtype='" . addslashes(strip_tags($event["eventtype"])) . "'," . " title='" . addslashes(strip_tags($event["title"])) . "'," . " blurb='" . addslashes(strip_tags($event["blurb"])) . "'," . " venue='" . addslashes(strip_tags($event["venue"])) . "'," . " confid_parent='" . addslashes(strip_tags($event["confid_parent"])) . "'," . " surveyid='" . addslashes(strip_tags($event["surveyid"])) . "'," . " surveyresponse='" . addslashes(strip_tags($event["surveyresponse"])) . "'," . " youtube='" . addslashes(strip_tags($event["youtube"])) . "'"; if ((bool) $this->query($sql, IS_TESTSERVER)) { // includes a call to connect $updatedRecords++; } else { $success = false; } } } // end foreach // ----------------------- return $updatedRecords; //return $success; }
public static function OutputMockagendaUpdate($updateCurrentEvents = FALSE, $updateFutureEvents = FALSE, $showOnlyAgendaOptions = FALSE) { $stdout = ""; $options = $headers = $allConfids = $allConfidsUpdated = array(); $eventTitle = $updatedRecords = array(); $numberOfUpdatedRecords = 0; // ---------------------------------------------- // -- GPC and initiations // ---------------------------------------------- // UPDATE manually kept fields from legacy file - ALL events: functions::gpc_declare_input("uf", false, true); // UPDATE VM fields [disabled]: functions::gpc_declare_input("uv", false, true); // UPDATE Agenda fields - ALL events: functions::gpc_declare_input("ua", false, true); // UPDATE Agenda fields - CURRENT events: functions::gpc_declare_input("uc", $updateCurrentEvents && !$updateFutureEvents, true); // UPDATE Agenda fields - CURRENT and FUTURE events: functions::gpc_declare_input("un", $updateCurrentEvents && $updateFutureEvents, true); // Recreate 'menulookup' cache: functions::gpc_declare_input("um", false, true); if (!class_exists("fromdb_nwevents", FALSE)) { require_once PATH_CLASSES . "/fromdb/nwevents.php"; } if (!isset($dbEv) || !is_object($dbEv)) { $dbEv = new fromdb_nwevents(); } $allConfids = $dbEv->getAgendaConferenceIdsForNorditaEvents(); $noRecordsInDB = (bool) (!is_array($allConfids) || empty($allConfids)); if ($noRecordsInDB) { $GLOBALS["uv"] = $GLOBALS["ua"] = $GLOBALS["un"] = false; } // ---------------------------------------------- // -- Act on selected option // ---------------------------------------------- // UPDATE manually kept fields from legacy file - ALL events if ($GLOBALS["uf"]) { $numberOfUpdatedRecords = $dbEv->updateEventsFromLocalFile(); if ($numberOfUpdatedRecords) { $noRecordsInDB = false; } } elseif ($GLOBALS["uv"]) { //if (!class_exists("fromdb_vm",FALSE)) require_once PATH_CLASSES . "/fromdb/vm.php"; //$dbEv = new fromdb_vm(); //$numberOfUpdatedRecords = ...(); } elseif ($GLOBALS["ua"]) { $updatedRecords = $dbEv->updateEventsFromAgenda(""); $numberOfUpdatedRecords = is_array($updatedRecords) ? count($updatedRecords) : $updatedRecords; } elseif ($GLOBALS["uc"]) { $updatedRecords = $dbEv->updateCurrentEventsFromAgenda(); $numberOfUpdatedRecords = is_array($updatedRecords) ? count($updatedRecords) : $updatedRecords; document::recreateMenulookupCache(); // also recreate menu cache, to make sure } elseif ($GLOBALS["un"]) { $updatedRecords = $dbEv->updateEventsFromAgenda(date("Y-m-d", strtotime("-50 days"))); $numberOfUpdatedRecords = is_array($updatedRecords) ? count($updatedRecords) : $updatedRecords; document::recreateMenulookupCache(); // also recreate menu cache, to make sure } elseif ($GLOBALS["um"]) { if (document::recreateMenulookupCache()) { $stdout .= "\r\n" . functions::boxMessage("confirm", "<strong>Cache 'menulookup'</strong> was successfully recreated.") . "\r\n"; } else { $stdout .= "\r\n" . functions::boxMessage("error", "<strong>Cache 'menulookup'</strong> could not be recreated") . "\r\n"; } } // ----------------------- $allConfidsUpdated = $numberOfUpdatedRecords ? $dbEv->getAgendaConferenceIdsForNorditaEvents() : $allConfids; // ---------------------------------------------- // -- Output // ---------------------------------------------- $stdout .= " <p class='largefont'>There are currently <strong>" . count($allConfidsUpdated) . " events</strong> in the local 'nw_events' database.</p>\r\n"; // ----------------------- $stdout .= "<div class='col c1of2'>\r\n"; $stdout .= " <p><strong>The local database 'nw_events'</strong> collects information of Nordita events (programs, workshops, conferences, meetings, schools) from several sources: most data comes from the <strong>AlbaNova Agenda database</strong>; some fields are fetched from the <strong>VM database</strong>; and some metadata fields are <strong>manually kept only in the 'nw_events' database</strong>.</p>\r\n"; if (!$showOnlyAgendaOptions) { $headers["manual"] = "Manually Kept Files"; $options["manual"][] = "<a href='" . $_SERVER["PHP_SELF"] . "?uf=1'>UPDATE manually kept fields from legacy file - ALL events</a>"; if (!$noRecordsInDB) { $options["manual"][] = "<a href='" . str_replace("nw_events_update", "nw_events_edit", $_SERVER["PHP_SELF"]) . "'>" . "EDIT manually kept fields - SINGLE event</a> " . "<span style='padding-left:1em;font-weight:normal;white-space:nowrap'>(use [Edit] links)</span>"; } } $headers["agenda"] = "Agenda Fields"; if (!$showOnlyAgendaOptions) { $options["agenda"][] = "<a href='" . $_SERVER["PHP_SELF"] . "?ua=1'>UPDATE Agenda fields - ALL events</a> " . "<span style='padding-left:1em;font-weight:normal;white-space:nowrap'>(going back to 2007)</span>"; } if (!$noRecordsInDB) { $options["agenda"][] = "<a href='" . $_SERVER["PHP_SELF"] . "?uc=1'>UPDATE Agenda fields - CURRENT events</a>"; } if (!$noRecordsInDB) { $options["agenda"][] = "<a href='" . $_SERVER["PHP_SELF"] . "?un=1'>UPDATE Agenda fields - CURRENT and FUTURE events</a>"; } if (!$showOnlyAgendaOptions) { if (!$noRecordsInDB) { $options["agenda"][] = "<a href='" . str_replace("nw_events_update", "nw_events_edit", $_SERVER["PHP_SELF"]) . "'>UPDATE Agenda fields - SINGLE event</a> <span style='padding-left:1em;font-weight:normal;white-space:nowrap'>(use [Update] links)</span>"; } $options["agenda"][] = "<a href='" . AGENDA_URI . "/'>EDIT Agenda events</a> " . EXTERNAL_LINK; } if (!$showOnlyAgendaOptions) { $headers["vm"] = "VM Fields"; $options["vm"][] = "[UPDATE VM fields - disabled]"; //$options["vm"][] = "<a href='".$_SERVER["PHP_SELF"]."?uv=1'>UPDATE VM fields</a>"; } if (!$showOnlyAgendaOptions) { $headers["varia"] = "Varia"; $options["varia"][] = "<a href='" . $_SERVER["PHP_SELF"] . "?um=1'>Recreate 'menulookup' cache</a>"; } //$stdout .= "<p><strong>» Update event records in database 'nw_events'...</strong></p>\r\n"; foreach (array("manual", "agenda", "vm", "varia") as $db) { if (!empty($options[$db])) { $stdout .= (!empty($headers[$db]) ? "<h4>" . $headers[$db] . "</h4>\r\n" : "") . "<ul class='bold tightlist'>\r\n" . " <li>" . implode($options[$db], "</li>\r\n <li>") . "</li>\r\n" . "</ul>\r\n"; } } // ----------------------- $stdout .= "</div> <div class='col c2of2'>\r\n"; if (!empty($_REQUEST) && !$GLOBALS["um"] && !$noRecordsInDB && isset($numberOfUpdatedRecords)) { $stdout .= $numberOfUpdatedRecords > 0 ? " <p class='box padding confirm background'>Successfully updated " . "<strong>" . $numberOfUpdatedRecords . "</strong> records in the database 'nw_events'.</p>\r\n" : " <p class='box padding error background'><strong>Could not update any records</strong> " . "in the database 'nw_events'." . (!$noRecordsInDB && $numberOfUpdatedRecords == ERROR_NO_EVENTS_REQUESTED ? " [No events requested]" : "") . (!$noRecordsInDB && $numberOfUpdatedRecords == 0 ? " [No events updated]" : "") . "</p>\r\n"; if (count($updatedRecords)) { $stdout .= " <ul>\r\n"; foreach ($updatedRecords as $confId) { $stdout .= " <li><a href='http://agenda.albanova.se/conferenceDisplay.py?confId=" . $confId . "'>" . $dbEv->getEventTitle($confId) . "</a></li>\r\n"; } $stdout .= " </ul>\r\n"; } } // ----------------------- $stdout .= "</div><div style='clear:both'><br></div>\r\n"; // ----------------------- return $stdout; }