diff --git a/campus/calendar.php b/campus/calendar.php
deleted file mode 100644
index 3816e9b..0000000
--- a/campus/calendar.php
+++ /dev/null
@@ -1,160 +0,0 @@
- urlencode('> Login'),
- 'p' => urlencode($_GET['p']),
- 'u' => urlencode($_GET['u'])
-);
-
-curl_request('POST', $baseUrl . $loginPath, $cookieFile, $loginParams);
-curl_fixcookie($cookieFile);
-
-/* request calendar */
-// TODO args
-$calParams = array(
- 'startdt' => strftime('%d.%m.%Y'),
- 'enddt' => strftime('%d.%m.%Y', time() + 6*31*24*60*60) /* halbes Jahr == ein Semester */
-);
-
-$response = curl_request('GET', $baseUrl . $calPath, $cookieFile, $calParams);
-curl_fixcookie($cookieFile);
-
-/* filter some changes */
-list($headers, $body) = explode("\r\n\r\n", $response, 2);
-
-$db = sqlite_open('campus.db');
-$create = false;
-$result = sqlite_query($db, "SELECT name FROM sqlite_master WHERE type='table' AND name='rooms';");
-if (!sqlite_valid($result)) {
- sqlite_exec($db, 'CREATE TABLE rooms (name VARCHAR(255), address VARCHAR(255));');
-}
-
-/* header pass through */
-$headers = array_slice(explode("\r\n", $headers), 1);
-foreach ($headers as $header) {
- list($key, $value) = explode(": ", $header);
-
- switch($key) {
- case 'Content-Disposition':
- $value = 'attachment; filename=campus_office_' . $_GET['u'] . '.ics';
- break;
- case 'Content-Type':
- //$value .= '; charset=utf-8';
- $value = 'text/plain; charset=utf-8';
- break;
- }
-
- if ($key != 'Content-Disposition')
- header($key . ': ' . $value);
-}
-
-$location = '';
-$lines = explode("\r\n", $body);
-foreach ($lines as $line) {
- if ($line) {
- list($key, $value) = explode(":", $line);
- switch ($key) {
- case 'LOCATION':
- $location = $value;
- $room = strtok($location, " ");
- $address = get_address($db, $room);
-
- if ($address === false) {
- $address = preg_replace('/[ ]{2,}/sm', ' ', utf8_encode(crawl_address($room)));
- set_address($db, $room, $address);
- $crawled = true;
- }
- $value = $address . ', Aachen';
- break;
-
- case 'DESCRIPTION':
- if ($value) $value .= '\n';
- $value .= $location;
- break;
- }
-
- echo $key . ':' . $value;
- }
- echo "\r\n";
-}
-
-/* cleanup */
-unlink($cookieFile);
-
-function curl_fixcookie($cookieFile) {
- $contents = file_get_contents($cookieFile);
- $lines = explode("\n", $contents);
-
- foreach ($lines as $i => $line) {
- if (strpos($line, "#HttpOnly_") === 0) {
- $lines[$i] = substr($line, strlen("#HttpOnly_"));
- }
- }
-
- $contents = implode("\n", $lines);
- file_put_contents($cookieFile, $contents);
-}
-
-function curl_request($method, $url, $cookieFile = false, $params = array()) {
- $ch = curl_init();
-
- $options = array(
- CURLOPT_URL => $url,
- CURLOPT_FOLLOWLOCATION => true,
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_HEADER => true
- );
-
- if ($cookieFile) {
- $options[CURLOPT_COOKIEFILE] = $cookieFile;
- $options[CURLOPT_COOKIEJAR] = $cookieFile;
- }
-
- array_walk($params, function(&$value, $key) { $value = $key . '=' . $value; });
-
- if ($params && strtolower($method) == 'post') {
- $options[CURLOPT_POST] = true;
- $options[CURLOPT_POSTFIELDS] = implode("&", $params);
- }
- else if ($params) { /* assuming default mehtod: GET */
- $options[CURLOPT_URL] .= '?' . implode('&', $params);
- }
-
- curl_setopt_array($ch, $options);
- $output = curl_exec($ch);
- curl_close($ch);
-
- return $output;
-}
-
-function get_address($db, $room) {
- $result = sqlite_query($db, 'SELECT address FROM rooms WHERE name = "' . sqlite_escape_string($room). '";');
- return ($result && sqlite_valid($result)) ? sqlite_fetch_string($result) : false;
-}
-
-function set_address($db, $room, $address) {
- sqlite_exec($db, 'INSERT INTO rooms VALUES ("' . sqlite_escape_string($room) . '", "' . sqlite_escape_string($address) . '");', $error);
-}
-
-function crawl_address($room) {
- $response = curl_request('GET', 'http://www.campus.rwth-aachen.de/rwth/all/room.asp?room=' . urlencode($room));
-
- $matches = array();
- $r = preg_match("/
Geb.udeanschrift<\/td> | ([^<]*)<\/td>/", $response, $matches);
-
- return ($r > 0) ? $matches[1] : false;
-}
-
-?>
diff --git a/campus/campus.db b/php_scripts/cocal.db
similarity index 100%
rename from campus/campus.db
rename to php_scripts/cocal.db
diff --git a/php_scripts/cocal.php b/php_scripts/cocal.php
new file mode 100644
index 0000000..0ef56f2
--- /dev/null
+++ b/php_scripts/cocal.php
@@ -0,0 +1,212 @@
+ $line) {
+ if (strpos($line, "#HttpOnly_") === 0) {
+ $lines[$i] = substr($line, strlen("#HttpOnly_"));
+ }
+ }
+
+ $contents = implode("\n", $lines);
+ file_put_contents($cookieFile, $contents);
+}
+
+function curl_request($method, $url, $cookieFile = false, $params = array()) {
+ $ch = curl_init();
+
+ $options = array(
+ CURLOPT_URL => $url,
+ CURLOPT_FOLLOWLOCATION => true,
+ CURLOPT_RETURNTRANSFER => true,
+ CURLOPT_HEADER => true
+ );
+
+ if ($cookieFile) {
+ $options[CURLOPT_COOKIEFILE] = $cookieFile;
+ $options[CURLOPT_COOKIEJAR] = $cookieFile;
+ }
+
+ array_walk($params, function(&$value, $key) { $value = $key . '=' . $value; });
+
+ if ($params && strtolower($method) == 'post') {
+ $options[CURLOPT_POST] = true;
+ $options[CURLOPT_POSTFIELDS] = implode("&", $params);
+ }
+ else if ($params) { /* assuming default mehtod: GET */
+ $options[CURLOPT_URL] .= '?' . implode('&', $params);
+ }
+
+ curl_setopt_array($ch, $options);
+ $output = curl_exec($ch);
+ curl_close($ch);
+
+ return $output;
+}
+
+function get_address($db, $room) {
+ $result = sqlite_query($db, 'SELECT address FROM rooms WHERE name = "' . sqlite_escape_string($room). '";');
+ return ($result && sqlite_valid($result)) ? sqlite_fetch_string($result) : false;
+}
+
+function set_address($db, $room, $address) {
+ sqlite_exec($db, 'INSERT INTO rooms VALUES ("' . sqlite_escape_string($room) . '", "' . sqlite_escape_string($address) . '");', $error);
+}
+
+function crawl_address($room) {
+ $response = curl_request('GET', 'http://www.campus.rwth-aachen.de/rwth/all/room.asp?room=' . urlencode($room));
+
+ $matches = array();
+ $r = preg_match("/ | Geb.udeanschrift<\/td> | ([^<]*)<\/td>/", $response, $matches);
+
+ return ($r > 0) ? $matches[1] : false;
+}
+
+
+/* Code */
+if (!empty($_GET['p']) && !empty($_GET['u'])) {
+ /* perform login to get session cookie */
+ $cookieFile = tempnam('/tmp', 'campus_');
+
+ /* open database */
+ $db = sqlite_open('cocal.db');
+ $result = sqlite_query($db, "SELECT name FROM sqlite_master WHERE type='table' AND name='rooms';");
+ if (!sqlite_valid($result)) {
+ sqlite_exec($db, 'CREATE TABLE rooms (name VARCHAR(255), address VARCHAR(255));');
+ }
+
+ curl_request('GET', $baseUrl . $homePath, $cookieFile);
+ curl_fixcookie($cookieFile);
+
+ $loginParams = array(
+ 'login' => urlencode('> Login'),
+ 'p' => urlencode($_GET['p']),
+ 'u' => urlencode($_GET['u'])
+ );
+
+ curl_request('POST', $baseUrl . $loginPath, $cookieFile, $loginParams);
+ curl_fixcookie($cookieFile);
+
+ /* request calendar */
+ $calParams = array(
+ 'startdt' => strftime('%d.%m.%Y'),
+ 'enddt' => strftime('%d.%m.%Y', time() + 6*31*24*60*60) /* halbes Jahr == ein Semester */
+ );
+
+ $response = curl_request('GET', $baseUrl . $calPath, $cookieFile, $calParams);
+ curl_fixcookie($cookieFile);
+
+ /* filter some changes */
+ list($headers, $body) = explode("\r\n\r\n", $response, 2);
+
+
+ /* header pass through */
+ $headers = array_slice(explode("\r\n", $headers), 1);
+ foreach ($headers as $header) {
+ list($key, $value) = explode(": ", $header);
+
+ switch($key) {
+ case 'Content-Disposition':
+ $value = 'attachment; filename=campus_office_' . $_GET['u'] . '.ics';
+ break;
+ case 'Content-Type':
+ $value .= '; charset=utf-8';
+ break;
+ }
+
+ if ($key != 'Content-Disposition') {
+ header($key . ': ' . $value);
+ }
+ }
+
+ $location = '';
+ $lines = explode("\r\n", $body);
+ foreach ($lines as $line) {
+ if ($line) {
+ list($key, $value) = explode(":", $line);
+ switch ($key) {
+ case 'LOCATION':
+ $location = $value;
+ $room = strtok($location, " ");
+ $address = get_address($db, $room);
+
+ if ($address === false) {
+ $address = preg_replace('/[ ]{2,}/sm', ' ', utf8_encode(crawl_address($room)));
+ set_address($db, $room, $address);
+ $crawled = true;
+ }
+ $value = $address . ', Aachen';
+ break;
+
+ case 'DESCRIPTION':
+ if ($value) $value .= '\n';
+ $value .= $location;
+ break;
+ }
+ echo $key . ':' . $value;
+ }
+ echo "\r\n";
+ }
+
+ /* cleanup */
+ unlink($cookieFile);
+ sqlite_close($db);
+}
+else {
+ echo '';
+?>
+
+
+
+
+ /dev/nulll - CampusOffice to Google Sync
+
+
+
+
+
+
+
+
+
+
+
+
+ CampusOffice to Google Sync
+
+
+
+
+
+
+
+
+
+
diff --git a/php_scripts/contactimg.php b/php_scripts/contactimg.php
index bdb8ff2..1e900e1 100644
--- a/php_scripts/contactimg.php
+++ b/php_scripts/contactimg.php
@@ -142,7 +142,6 @@ echo '';
-
|