Crowdfunding Forma 5

Keep Forma Open,
Make Forma Yours

Play your part in the exciting adventure
of creating Forma 5

previous arrow
next arrow

Built for corporate training

organization

Modern Design

Modern and responsive layout and designed for an easy and engaging user experience

organization

Multi Client

Manage multiple clients and brands with custom layouts from a single platform

report

Custom Reports

Easily create advanced custom reports

plugins

Extend Features

Add and customize features to make it perfect for your needs

ABOUT FORMA LMS

Forma LMS is an open source Learning Management System, built around the specific needs of corporate training. With Forma You can provide internal training to your employees, build an extended enterprise Lms (by providing training to your employees and your partners, dealers and sellers, each one with their specific courses, look and feel) or use Forma as a content hub with which you can sell your off-the -shelf courses to your customers.

The project is carried out by the forma.association, with over 50 members and 4.000 community users, which are constantly adding new features and making the software more complete and secure.

This maintenance version introduces some minor improvements and a few relevant fixes, stabilizing code while preparing for the upcoming 4.2 release.

The following points are particularly relevant:

  • Usage stats: fixed an issue blocking tracking of browsing actions with MySql databases (worked on mariadb)
  • Average course time now allows decimals
  • Course type editing: is not possible anymore to change the course type if users are already enrolled to the course. This and other conditions (subscriptions via API or import) led to some inconsistencies in previous versions, with "ghost" subscribed users on master courses converted from elearning to classroom or vice versa. Also, An automatic realignment algorithm ensures consistency between master course enrollments and classroom session enrollments by removing users enrolled only in the master course and adding those enrolled only in sessions. It operates on one or all classroom courses, respects overbooking rules, and safely handles repeated executions without side effects. It is also applied during upgrades to fix legacy inconsistencies.Check techincal details below.

 

Automatic realignment of classroom course enrollments

Context:
In classroom-type courses, enrollment in the "master" course and enrollment in individual sessions/dates are managed in two separate tables. Over time, due to misalignments caused by imports, APIs, migrations, or manual operations, inconsistent states could occur: users enrolled in the course but not in any session, or users enrolled in a session without being enrolled in the parent course.
A realignment algorithm has been introduced to automatically resolve both cases.

Where:
Method SubscriptionAlms::cleanupUsersNotEnrolledInClassroomDates($id_course = null) — formalms/html/appLms/admin/models/SubscriptionAlms.php
Reference commit: 34803f5747fc5dec00c19b6669b36f2ac7e2763e

Scope:

  • If a course ID is provided, it operates only on that course.
  • If invoked without parameters, it scans all classroom-type courses in the platform.
  • E-learning courses and editions are not affected.

The method performs two realignment steps, one in each direction:

Cleanup of “ghost” enrollments from the master course
It identifies users present in the master course (learning_courseuser) who are not enrolled in any course session (learning_course_date_user). These users are unenrolled from the master course, restoring a consistent state.

Automatic enrollment in the master course
It identifies users enrolled in one or more sessions/dates (learning_course_date_user) who are not enrolled in the parent course (learning_courseuser). For each user:

  • Retrieves the course levels; if missing, they are created.
  • Assigns the user to the student level group.
  • Creates the enrollment record in the master course, respecting the overbooking rules configured for the course.

Handled scenarios

CaseAction
User enrolled in the master course but not in any session Unenrollment from the master course
User enrolled in a session but not in the master course Enrollment in the master course as student, creation of levels if missing

Properties

  • Idempotent operation: it can be executed multiple times without producing duplicates or side effects.
  • Overbooking rules are respected, so automatic enrollment in the master course does not bypass configured limits.
  • It is also invoked during upgrade procedures to fix legacy inconsistencies in migrating environments.

MAKE YOUR OPINION COUNT!

The Forma Lms project is driven by the community of its adopters, organized in the forma.association

Become a member to support the project and make your opinion count: join the association now!

 

Open Source for Open Innovation

Knowledge, through learning, today is probably the most critical asset for any company willing to stay competitive and alive. Modern organizations need adaptive models to face the challenges of their markets: that's why whe choose to be open to evolving diversity since our core code with an open source licencing model, and based the forma.association on the principes of participation, sharing and networking. 

opened window door of glasses color

Get POWER from FLEXIBILITY

A learning management system designed to fit the specific needs of your organization: start with all the features of a standard LMS, configure it with hundreds of available options, integrate with your other systems through connectors and APIs, extend with lots of available plugins, or add your custom features.
Forget the limits of saas platform and get free: here EVERYTHING IS POSSIBLE!

features panel

Login Form

This site uses cookies.

Some of the cookies we use are essential for parts of the site to operate and have already been set. We also use Google Analytics scripts, which all use cookies. You may delete or block all cookies from this site in your browser options.