コード例 #1
0
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);
                }
            }
        }
    }
}
コード例 #2
0
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 "&gt; <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);
}
コード例 #3
0
ファイル: TestReadPage.php プロジェクト: seedbank/old-repo
<?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));