Entries filed under PHP

MRBS: Check if user has booked 2 rooms at the same time

Posted on 17. Oktober 2013 Comments

This little function checks if the same user has booked $room1 and $room2 at the same time.

function checkForSameUser($room1,$room2,$user,$starttime,$endtime,$tbl_entry) {
$sql = "SELECT id, name, start_time, create_by, status
FROM $tbl_entry
WHERE start_time < $endtime
AND end_time > $starttime
AND (room_id=$room1 OR room_id=$room2)
AND create_by=\"$user\"";
$res = sql_query($sql);
if (empty($res))
{
// probably because the table hasn't been created properly
trigger_error(sql_error(), E_USER_WARNING);
fatal_error(TRUE, get_vocab("fatal_db_error"));
}
if (sql_count($res) != 0)
{
sql_free($res);
return "error";
}
}

 

You can use it e.g. in mrbs_sql.inc in the function mrbsCheckFree(..) to check if a user is allowed to book a certain room like this.

// 1 and 2 are the roomIDs
$result = checkForSameUser(1,2,$user,$starttime,$endtime,$tbl_entry);
if ($result == "error"){
$err[] = get_vocab("multiple_rooms");
return $err;
}
}

As you can see the first function returns the string „error“ in case an error occured. I translated the string for multiple_rooms in every language used on this MRBS system and edited the the lang.x file in the main folder, e.g. lang.de:

$vocab["multiple_rooms"] = "Mehrere Räume können nicht gleichzeitig vom selben User gebucht werden";

MRBS: Show email address instead of username

Posted on 17. Oktober 2013 Comments

Oftentimes people use MRBS with an LDAP directory and the users have identifiers that don’t fit their real names. MRBS uses these identifiers publicly to show who reserved a room.

I see 2 problems here: if the MRBS website is public, attackers get valid usernames(although this is more obscuring than actually making it more secure), and in case users want to discuss the usage of meeting rooms, they don’t know who to talk to. In my opinion, the email address would be much more helpful.

So I had a look at the sourcecode(v. 1.8.4) and edited the following lines:

file: functions_view.inc
line: 149 ..

// This was the original code
// $tbody .= create_details_row(get_vocab("createdby"), $data['create_by'], $as_html, $class);
// This is what I made out of it
$mail = authLdapGetEmail($data['create_by']);
$tbody .= create_details_row(get_vocab("createdby"), $mail, $as_html, $class); 

Simple MRBS Output from Database

Posted on 17. September 2013 Comments

I wrote a little PHP-script that extracts the most important and current data from MRBS’s MySQL database and just prints them in a simple HTML file. Its not pretty but good for bandwith and clarity. We use it to display information on an energy efficient e-ink screen in front of conference/computer rooms.

$date is set like this:

$date = date("Y-m-d");

The SELECT-statements go like this, where N is the ID of the room(in the database, not what you might call it)

SELECT name,description,from_unixtime(start_time),from_unixtime(end_time) FROM mrbs_entry WHERE from_unixtime(start_time) LIKE '%" . $date . "%' AND room_id = N;

I’m not gonna explain here how to establish a database connection in PHP, but you can have a  look at the whole sourcecode at github 😉

I then cut off the date with substr() because it’s always 10 characters in front of time->(YYYY-MM-DD) and printed it via echo. This is the simple version, there is a version with tables on github.

while($row=mysql_fetch_row($qry01)) {
echo "- <strong>Room</strong> 01 | <strong>Desc:</strong>" . $row[0]." - ".$row[1]." |  <strong>Time:</strong> ". substr($row[2],10) . " - " . substr($row[3],10) . " <br />";
}

update: I wrote another version that prints JSON objects which can be parsed on the other side. For easier parsing(e.g. if everything is in one String) I numbered them:

$jsonarray = array('begin' . $i => substr($row[2],11, 5), 'end' . $i => substr($row[3],11,5), 'name' . $i => $row['name'], 'description' . $i =>  $row['description']);

You’ll find the whole thing on github.

Scuttle Bookmarks in Owncloud App

Posted on 21. Juni 2013 Comments

Ich habe ein kleines PHP-Skript geschrieben, was aus einer Scuttle Installation die Bookmarks ausliest und in die Owncloud Bookmark App einfügt.

In der jetzigen Version wird nur MySQL (noch kein SQLite) unterstützt und aus  einem mir nicht erklärlichen Grund funktionieren die Tags nicht. Vielleicht kommt ja jemand dahinter.

Den Quellcode findet man auf github.

Open Source Social Bookmarking: Scuttle

Posted on 9. März 2011 Comments

Seit Facebook abgestellt hat, dass man eine Liste seiner eigenen Links sehen kann, und ich keine Lust habe durch hunderte meiner Statusnachrichten zu scrollen um einen Link von vor ein paar Monaten zu finden, geschweige denn die Profile von anderen Leuten zu durchsuchen, wollte ich mir einen Social Bookmarking Account zulegen und dann halt immer wenn ich etwas auf Facebook oder Twitter poste oder finde, gleich es dort mit eintragen, weil man die meisten ja verbinden kann. Wikipedia sagt zu Social Bookmarking

"Es gibt eine Reihe von Open-Source Lösungen für Social Bookmarks, die auf dem eigenen Server
 installiert werden können, z. B. Unalo, Connotea, Scuttl oder Pligg."

Gleich dem drittbesten, also scuttle, hinterher gegoogelt und stellte sich heraus, dass es zwar nicht besonders Admin-freundlich ist(kein Admin-Panel!), man aber mit wenig Hintergrundwissen auch überhaupt keins braucht, höchstens für das Verwalten mehrerer User, dafür aber simpel und User-freundlich. Was mir fehlt ist jetzt natürlich eine Twitter/Facebook integration, da kann man aber auch nochmal reinschauen, allzu schwer dürfte das ja nicht sein(?). Sonst geht es auch über RSS-Feed

Die Installation sah folgendermaßen aus:

1. Mit PHPMyAdmin einloggen

2. Datenbank erstellen(muss keine neue sein, in dem Fall dann Datenbankname merken)

3. Datenbank Name/Username/Password in die config.inc.php.example eintragen und evtl. Einstellungen vornehmen.

4. config.inc.php.example in config.inc.php umbenennen

5. In PHPMyAdmin die Datei tables.sql importieren

6. Account erstellen und loslegen.

Es scheint ein Problem mit Spam Bots zu geben, deshalb hier der Tip von B2 Performance:

 

"Dazu habe ich in /templates/toolbar.inc.php den Register-Link enfernt und die register.php entfernt."

Ich hab die jetzt nicht entfernt, auch wenn man ohne weiteres über PHPMyAdmin User anlegen könnte, allerdings umbenannt und per FTP Client alle Rechte genommen. Alternativ gibt es noch die Weiterentwicklung namens Semantic Scuttle, die eine Anti-Spam Registrierung und noch einige Funktionen mehr hat. Sehr dubios erscheint mir das Angebot von Scuttle Plus, einem Admin Interface für ~$70, lieber nicht ausprobieren 😉

update: Was mir noch eingefallen ist: man kann ja neuerdings seine facebook-Daten runterladen und dann in den .html-Dateien nach einem bestimmten Link suchen. Jenachdem wie lange man bei facebook ist und wieviel man postet ist das Durchsuchen per Konsole aber eventuell praktischer, weil der Browser bei ein paar Megabyte großen Dateien schonmal abstürzt.