SQRtalk

= Concept = sQRtalk is a QR code tag controlled web application to maintain a list of upcoming speakers per talk, supports a fixed panel of speakers and questions called from the audience. For all speakers and audience members a progress bar of remaining speech time is maintained. Helpers in the audience are able to scan QR code badges of audience members. Most of the displayed information is enriched with extended user information when supplied in their CMS profile.

The web application can be accessed by multiple parties at the same time - every time a moderator switches to the next panel speaker or audience member for a certain talk page at all connected users without the need for reloading. All connected users can access as a result the profile information of the current speaker including his remaining speech time and see the updated list of upcoming speakers.

Users are identified by a unique talk/event-independent ID. All users can select the currently attended event from a list of available talks. The current talk and thus the user-talk relationship is stored in the users browsers session. By logging in as moderator or helper users are able to change their current role. The user QR code is in the form

http://[your-host.com]/[your-event-id]/U[user-id]

for example

http://sqrtalk.com/ig/U123

It is important to understand that the URL doesn't change the current screen - URLs are only used only as a signalling layer. The current look of the page is determined by the database state, the user session and the currently logged in user. The current talk stored in the user session as well. That allows to print all sorts of QR codes with URLs embedded - not only for selecting users, but also for switching roles and talks.

Default User
Scanning a user/speaker QR tag results in redirection to the CMS URL containing the full world readable user profile.

Helper
Scanning a user/speaker QR tag results in adding that user to the queue of upcoming speakers. Helpers have the right to delete users from the queue by pressing the delete icon X next to the names.

Moderator
The Moderator is allowed to delete speakers from the queue. By clicking on the user name every speker in the queue can be made the current speaker. For that person the full profile is displayed for all users having the current talk open in their web browser. Additionally the moderator can extend the current users speech time in 5 minute steps by clicking on the remainig speech time progress bar.

= Source Code = You can contribute at https://github.com/meriac/sQRtalk by spawning your own git repository. Alternatively a static snapshot of the source code can be fetched here.

Directory Layout of Source Tree
The web root directory lives inside www - make sure that the PHP code can access the directory above that level. Inside the directory data you can find the file research.csv which contains a list of research questions to maintain the CMS URL from the shortened numeric QR code URL. In the directory www/qr you can find the dynamic QR code image generation that is use for displaying QR codes.

After creating a database, you need to initialize it from helpers/default.sql. Please makes sure to update the CMS API token and database access information in www/config.php to finish the installatio process. After that you need to run helpers/precache.php to update the user information cache. Please make sure in your web server configuration to point the PHP session cookie management cache to the directory sessions and the PHP temp directory to temp. You also might want to have a look at templates/talk.html to change the talk page layout.

In the directory www/xajax the XAJAX framework can be found which is used for dynamic updates of the talk application. Please check their excellent examples and API documentation.

[sQRtalk] ├── license.txt ├── README ├── [data] │   └── research.csv ├── [helpers] │  ├── default.sql │  └── precache.php ├── [sessions] ├── [temp] ├── [templates] │  └── talk.html └── [www] ├── [css] ├── [img] ├── [js] ├── [qr] ├── [xajax] ├── calendar.php ├── config.php ├── db.php ├── index.php ├── talk.php ├── user.php └── robots.txt

= Installation =

Dependencies

 * tested with Fedora Linux v13-v16
 * MySQLdatabase >=v14.14
 * Apache Web Server >=v2.2.17
 * PHP >=v5.3.6

Installation and Database Setup
Installation is very simple - just untar the demo file system into a file folder accessible by your Apache webserver:

You can find a dump of a demo database in the directory /helpers called default.sql. Please use the command mysql to restore the backup. mysql -u sqrtalk -p sqrtalkdb < helpers/default.sql The default settings for the database connection can be changed in the file config.php.

Server
The .htaccess file for Apache contains some basic settings -essentially all paths are treated as virtual directories - the functionality is implemented in PHP for most of the paths:

The virtual server configuration is straightforward. In this particular example SSL enryption is initialize and the document directory, temporary upload directories and cookie based session management is initialized. An important feature for speeding up access to the application is to enable on-the-fly compression for JSON calls and other text based files as can be seen in the highlighted section:

Runtime Configuration
The settings for the speaker are maintained in the centralized file /config.php. Please don't forget to insert the API token BERLINSYMPOSIUM_API_TOKEN) for the berlinsymposium.org website for enabling real time user profile updates from the Drupal CMS.

$user_passwords
Please update the passwords for helpers and moderators here:
 * normal users have read-only access, no password needed
 * moderators are able to add speakers to panels via QR code scanning. By clicking on the user name set speakers active and deleting speakers from the queue.
 * helpers are able to add speakers to the queue of waiting speakers and deleting speakers from the queue.

SPEAKER_TIME_MAX
The default speech time in seconds per speaker.

SPEAKER_TIME_INCREMENT
The moderator can increment the current speakers speech time in 1 second increments. The default setting is 5 minutes. After each click the speech time is rounded to the next increment. After three clicks the speech time wraps back to SPEAKER_TIME_MAX.

CALENDAR_ICAL_URL
The application will fetch on demand an updated list of talks in iCAL format from this URL - the default URL is http://berlinsymposium.org/kalender/ical/.

http://en.wikipedia.org/wiki/ICal