A site for the students in department at the university (of haifa). Includes - grades, materials, reviews, courses planner, file manager, admin panel and lots more
StudentsPortal is highly documented on the guide and on Version 1.1.0 Down here
- PHP 7.0.0 or higher.
- Fileinfo, iconv, zip, tar, mysql, pdo and mbstring extensions are strongly recommended.
- You should have domain and some hosting plan (or on your own server), with mysql databases support.
- Recommended: some grep tool. In windows: grepWin. In linux it should be default
-
💿 Open Source, light and extremely simple
-
📱 Mobile friendly view for touch devices
-
🕶️: Dark mode supported.
-
🔐: Login protection against non-students (details later)
-
📁 Drive of materials with nice UI.
-
⏫: Option to upload mateirals, easily and anonymously.
-
💯: Grades panel, by lecturer / course (and year).
-
📄: Ranker page, where students can write (and rank) reviewes on courses / lecturers
-
✏️: Contacting forum
-
😎: Admin panel, to manage the entire site data.
-
🌐: Site manager, where can easily edit source files, manage files.
-
⚡: students auto approval using PDF anaylizer (details later)
-
🔒: Inspecting and scrapping code protection
-
‼️ lots more..
Some features are excluded since they compatibile only with Haifa University.
- 📱: Whatsapp automated groups creation, integrated to database, from Whatsapp-web-js.
- 💯: Auto grades histogram recoginition from uploaded grades. That also includes auto upload to database.
- 🥇: Exams scheduling system, with simple maintaining
- 📆: Scheduler, where a student can plan his courses for each semester, with json import & export, exams synch and exporting to excel. Automatically updated from catalog.
- ⏰: Daily running script that performs validty checking, automations, scheduled notification for admins and more.
‼️ lots more automations and loaders in admin's managment.
-
Download ZIP with latest version from master branch. Extract it.
-
Using grep, do the following replaces in all files:
-
SITE_DOMAIN, with your domain address (i.e. yourdomain.com).
-
SITE_URL, with your domain address, where site is stored (i.e. yourdomain.com/websiteDir).
- If your site will be stored on the domain itself, with no subfolders, SITE_URL=SITE_DOMAIN.
-
SITE_SESSION_NAME, with a session name for your choice.
-
SITE_ENC_KEY with some encryption key, to protect personal links in mail sending.
-
SITE_NAME with your site name (i.e. StudDept).
-
DEPT_NAME with your department name (i.e. Computer Science) or your organization for whom you are developing this site.
-
customize the file uploading relative paths (site/uploads, grades/uploads).
-
rtl with ltr, if you want your site to be in right to left languages.
-
set_time_limit(3600), with the wanted session time in seconds (after that the student will be logged out).
-
-
Edit the file "site_manager/pdoconfig.php" Insert there your Credentials to the database.
- If you want to change the admin user, it may be synced with the site manager.
-
In your database admin (i.e. phpmyadmin):
- Download a ready empty database from databases folder.
- Edit the file: change the database name according to the name your created.
- Adjust the collation, charset (within the entire db file)
- Import the database to your platform (i.e. phpmyadmin).
-
Make sure to remove databases folder, guide.pdf, screenshot.png, README.md
In the site manager directory which inspired by the amazing tinyfilemanager you have config.php. Default username/password: admin/admin123 and editor/editor123. The admin's password may be synched with the one from step 3.
$auth_users
before use. password is encrypted with password_hash()
. to generate new password hash here
To enable/disable authentication set $use_auth
to true or false.
ℹ️ You may edit any configuration you want there.
ℹ️ The editor will be able to access the file manager, only to the site directory (where the materials drive is located). Admin has access to the entire website, including the admin's panel.
The main part of each student's site is the drive / materials section. Next to each new folder (by site manager), a directory browser file is auto created. You may modify it by modiying site_manager/index file (NOT index.php).
When new students register to the site, they should upload pdf document that proves they are students at your department. Nice tool tries to auto-detect specific text in each document (and also degree and year). You can modify and extend the login/valid_pdf.php script or remove it entirely (but then, make sure to adjust changes in the register script).
- It is recommeneded to set a daily reminder cron job. Once in a day / week / customized you can make it automtically do what you want. However, it depends on your hosting plan.
- If your hosting plan allows you access to SSH and they have composer installed, install "phpspreadsheet". This package allows you to intergrate with excel files programically using PHP (which is required for grades report and students scheduling, both excluded features).
- At this version, the admin can create folders named "word" which will not be visible nor available for users, in case needed to save some extra files.
There are sections in the site which are limied to only students. For now, the sections are:
- Drive
- Grades panel
- Reviews panel
- Whatsapp panel
To add login protection you should use (don't forget to replace the constants here, like in step 2 of setup)
function log_data($dir, $mail)
{
require_once "site_manager/pdoconfig.php"; // make sure to set the correct relative path
$conn = @new mysqli($host, $username, $password, $dbname);
$sql = "UPDATE `Tusers` SET `last_dir`='$dir' WHERE `email`='$mail'";
$conn->query($sql);
$conn->close();
}
$server_root = "{$_SERVER['DOCUMENT_ROOT']}/";
$curr_dir = getcwd();
$representive_dir = str_replace($server_root, "", $curr_dir);
$representive_url = $_SERVER['REQUEST_SCHEME'].'://SITE_DOMAIN/'.$representive_dir;
$base_url = $_SERVER['REQUEST_SCHEME'].'://SITE_DOMAIN';
@set_time_limit(3600);
session_name("SITE_SESSION_NAME");
session_start();
if (!isset($_SESSION["SITE_SESSION_NAME"])){
header("Location: https://SITE_URL/login/index.php?referer=$representive_url/");
exit();
}
log_data($representive_dir, $_SESSION['SITE_SESSION_NAME']["mail"]);
Note: the log_data function is only if you want to mintor that a student entered that path. If you don't care - you can remove it. Note: in site_manager/index the current code stands for the case SITE_DOMAIN=SITE_URL. You should modify it.
- Only small parts of this site are secured against code injection.
- The login directory (password setting, sensitive data) is higly secured.
- A basic protection against injection obtained by
htmlspecialchars($data, ENT_QUOTES);
- upgraded the grades viewer for students and added filtering.
- upgraded the admin's managment panel to be more comfortable, documented and better.
- bugs fixed
- added grades report in admins panel.
- improving the "contact-us" service.
- added auto grades recognition and saving to database
- added excel exporting in scheduler (without congruences)
- added autoloading catalog to both scheduler and kdams management.
- fixed security errors
- upgrading the courses and lecturers editor to json, with global lecture / course change.
- preventing scheduler to autodelete after trail time.
- deprecated validation before uploading
- removed lectureres from kdams panel manager and whatsapp creation.
- encrypted perosnal details on comments site.
- Added validation before uploading.
- Added deleting course option on admins grades panel.
- Added autodetection of PDF files for student's validation.
- Added admin mail and password for different sites.
- Added limitation for image size and shape in courses (<= 300 and squared) to comply with WhatsApp policy.
- Added "image-add" option to add course directly from kdams manager.
- Added validation before creating WhatsApp data.
- Added free rooms system admin in admin's panel (which is also responsible for the scheduling system).
- Delete previous data.
- Upload new JSON data.
- Create the rooms files.
- Edit rooms list.
- Added Google Calendar Export option in scheduler (aka choicefreak).
- Applied new design to the write us page.
- Added forgot password form.
- Added pre-registered checking if already exists.
- Added tiny folder viewer to securely view new teachers/students registered.
- Added rooms manager panel.
- Added choicefreak in Haifa's version.
- Supports both semesters A and B.
- Supports JSON exporting and image saving.
- Integrates with exams.
- Comments are now always posted but still give admin alert.
- Questions are not always posted but still give admin alert.
- Added exams scheduler visualization page.
- Fixed admin WhatsApp integration to the database.
- Added password login via MD5.
- Added teacher registering page.
- Changes:
- Updated admin mailing list.
- Added option to register users in year 0 (not in 1st year yet).
- Admin can change globally lecture names in kdams page.
- Fixed minor errors on kdams editing.
- Changes:
- Added CV make page.
- Supports Hebrew or English CV.
- Students will get an online link to add their CV.
- Added CV make page.
- Changes:
- Added About page.
- Global UI fixes.
- Loading the "menu" of the site from the database.
- Support log count.
- Displaying messages from admin.
- Support dark mode.
- Confirm using the database that email is a real student.
- Non-existing students can request registration.
- Protected by login.
- Beautiful display of files and folders, size, and date.
- Support dark mode.
- Search bar within all files and folders, recursively.
- Showing current directory; each level is clickable.
- Drag and drop files, support for large files.
- Support assigning to a specific course.
- Support dark mode.
- Only admin has access to uploaded data.
- Protected by login.
- Display grades from the database, by lecture/course.
- Grades are sorted by year (high to low), semester (first to last), moed (first to last).
- Display statistics on data amount.
- Support dark mode.
- Supports uploading grades from the last 4 semesters.
- Support assigning to a specific course.
- Only admin has access to uploaded data.
- Protected by login.
- Supports adding new feedback requests (e.g., new lecture with its specific course) that do not exist yet.
- Support dark mode.
- Support filtering by different course types.
- Support filtering by lecture/course.
- Users in the database can also edit and delete their comments.
- Users can add comments with anonymous display name (admin knows their identity).
- Each post or comment can be ranked.
- Support log count.
- Support dark mode.
- Support filtering by teacher/course.
- Each teacher can be ranked.
- Beautiful demo Google form, users can write messages that will be saved on the site.
- Only admin has access to messages.
- Protected by login.
- Support dark mode.
- Can filter by year/semester.
- Loading links, name, lectures from the database.
- Loading thumbnails from local archive.
- Support dark mode.
- Can add "year1" and "year2" courses, which include all courses recommended in the first year.
- Completed courses are chosen from the autocomplete detector list and can be deselected later.
- Generates all courses that are available after completing the given list and provides collected points.
- Each next course gives a link to the catalog and has details of lecture, points, type, and notes.
- Support adding next courses to the completed list for further simulations.
- Support checking required courses to achieve a specific course.
- Support checking what courses a specific course leads to.
- Support Kdams tree, which visually demonstrates the relationship between courses.
- Given day and hour, outputs all free rooms.
- Each update has its relevant link to handle it.
- By clicking "v", disposes of the update alert.
- Updates from actions:
- Uploaded materials.
- New student tried to register.
- Uploaded grades.
- Added question or comment.
- Someone wrote admin.
- By choosing year, semester, lecture, and course, can edit grades (or insert new ones) with notes and by the course type.
- Direct integration with the database, all automated.
- Supports increment of students' study year (according to the database).
- Support view and edit students' data in the database.
- Supports adding new students in special cases (like registration requests).
- Support getting a mailing list of students.
- Can directly edit the list of all lectures or courses in the system.
- Directly edit the messages that appear on the main page of the site.
- By clicking on a year, can edit the current year.
- Generated editable kdams list directly from the database.
- Can remove a course or add a new one at the bottom.
- Supports global changing of course names.
- Support generating WhatsApp links.
- Available under the MIT license
- Original concept and development by github.com/sharon846/StudentsPortal
- CDN Used - jQuery, Bootstrap, Font Awesome, Highlight js, ace js, DropZone js, and DataTable js
- To report a bug or request a feature, please file an issue
- Contributors