function readFolder($folderReadID, $auth, $cascade) { $id = array('id' => $folderReadID, 'type' => 'folder'); $readParams = array('authentication' => $auth, 'identifier' => $id); $folderRead = $cascade->read($readParams); if ($folderRead->readReturn->success != 'true') { echo "looks like it didn't work" . $folderReadID . "\r\n"; } else { echo "folder-" . $folderReadID . "\r\n"; $folderChildren = $folderRead->readReturn->asset->folder->children->child; if (count($folderChildren) == 1) { if ($folderChildren->type == 'folder') { readFolder($folderChildren->id, $auth, $cascade); } elseif ($folderChildren->type == 'page') { readPage($folderChildren->id, $auth, $cascade); } } elseif (count($folderChildren) > 1) { foreach ($folderChildren as $value) { if ($value->type == 'folder') { readFolder($value->id, $auth, $cascade); } elseif ($value->type == 'page') { readPage($value->id, $auth, $cascade); } } } } }
function storeDataFrom($subject, $url) { global $conn; list($doc, $hash) = readPage($url, true); $term = $doc->getElementsByTagName("i")->item(0)->textContent; $tables = $doc->getElementsByTagName("table"); $count = array(); $count[0] = 0; $count[1] = 0; $courses = array(); foreach ($tables as $table) { $title = $table->previousSibling->previousSibling; // happens on the first element... HTML output is not well-formed if ($title->nodeType != XML_ELEMENT_NODE) { $title = $title->previousSibling; } $titleStr = trim($title->textContent); for ($i = 0; $i < strlen($titleStr); $i++) { if (ctype_space($titleStr[$i])) { break; } } // each course number consists of 3 characters that represent the course // number followed by a single optional variant character $nr = substr($titleStr, 0, $i); $var = ''; if (strlen($nr) > 3) { $var = substr($nr, 3); $nr = substr($nr, 0, 3); } // check for an invalid course#.. if the length is less than 3, we // assume the data is invalid. ACCT11, for example, is invalid if (strlen($nr) < 3) { continue; } $str = trim(substr($titleStr, $i)); $desc = ""; // lazy load the catalog info.. if (!isset($catDoc)) { if (!DISABLE_CATALOG_SCRAPING && !courseExists($subject, $nr, $var)) { $campus = strtolower(subjectTaughtAt($subject)); $pageName = false; $query = "SELECT Rprefix FROM SubjectMap WHERE Lprefix='{$subject}'"; if ($campus != "njit") { $res = $conn->query($query); if ($res) { $row = $res->fetch_row(); if ($row) { $pageName = $row[0]; } } } if ($campus == "njit" || $pageName !== false) { try { // the script would run faster if it did not check the course // catalog for course information. $pagestr = $campus == "njit" ? $subject : $pageName; $catDoc = readPage("http://catalog.njit.edu/courses/" . strtolower($pagestr) . ".php"); } catch (Exception $e) { $catDoc = false; } } } } if (isset($catDoc) && $catDoc !== false) { // search for the information excluding the variant // example: BIOL100 // then reduce the returned list if it is greater than $searchPrefix = $campus != "rutg" ? $subject . $nr : $subject . ":" . $nr; $searchPrefix = strtolower($searchPrefix); $list = findByAttribute($catDoc, "a", "name", $searchPrefix); if (count($list) > 1 && strlen($var) > 0) { $searchPrefix .= $var; while (count($list) > 0 && strcasecmp($list[0]->getAttribute("name"), $searchPrefix) != 0) { array_shift($list); } } if (count($list) > 0) { $text = $list[0]->textContent; $titleStart = strpos($text, '-') + 1; $titleEnd = strpos($text, '(', $titleStart + 1); $numEnd = $titleEnd; while (ctype_digit($text[++$numEnd])) { } if ($text[$numEnd] == ')' || $text[$numEnd] == '-' || strpos(substr($text, $titleEnd + 1, strpos($text, ')', $titleEnd) - $titleEnd), "credits") !== false) { $credits = floatval(substr($text, $titleEnd + 1, $numEnd - $titleEnd - 1)); } $text = trim(substr($text, $titleStart, $titleEnd - $titleStart)); $par = $list[0]->parentNode; $par->removeChild($list[0]); $desc = trim(str_replace("\\n", "", getHTML($par))); $prereq = strncasecmp("prerequisite", $desc, 12) == 0; } } if (array_key_exists($subject . $nr . strtoupper($var), $courses)) { $course = $courses[$subject . $nr . strtoupper($var)]; $alt_title = $str; } else { $course = new Course(); $course->title = $str; $course->name = $subject . $nr . strtoupper($var); $course->subject = $subject; $course->coursenr = $nr; $course->coursevar = strtoupper($var); $course->description = $desc; } // echo "> <b>$nr</b>$var - $str<br/>"; if (!isset($alt_title)) { $alt_title = $course->title; } $sections = parseTableData($table, $course, $term, $alt_title); unset($alt_title); if (isset($credits) && $credits > 0) { $course->credits = $credits; $credits = 0; } if (!array_key_exists($course->name, $courses)) { $count[0]++; $courses[$course->name] = $course; } $count[1] += count($sections); //persist($course); } return array(array_values($courses), $count, $hash); }
<?php /** * @file * @ingroup DAPCPTest * * @author Dian */ chdir('C:\\xampp\\htdocs\\mw'); require_once 'C:/xampp/htdocs/mw/includes/Webstart.php'; require_once 'C:/xampp/htdocs/mw/extensions/PageCRUD_Plus/WS/Server.php'; //$editTest = new PCPServer(); $uc; // = new PCP_UserCredentials("WikiSysop", "!>ontoprise?"); #if ($editTest->login($uc)){ #var_dump($editTest->getCookies()); #$editTest->getEditToken("Main Page"); #print($uc->toXML()); // var_dump($editTest->readPage(NULL,"Main Page")); //var_dump($editTest->readPage($uc,"Testeintrag")); // $editTest->logout(); #}else{ # print ("ERROR: Testing failed!".__FILE__); #} var_dump(readPage(NULL, NULL, NULL, NULL, NULL, "Main Page", NULL));