ATutor is an Open Source Web-based Learning Management System (LMS) used to develop and deliver online courses. Administrators can install or update ATutor in minutes, develop custom themes to give ATutor a new look, and easily extend its functionality with feature modules. Educators can quickly assemble, package, and redistribute standardized Web-based instructional content, easily import prepackaged content, and conduct their courses online. Students learn in an accessible, adaptive, social learning environment.
If a new event occurs in a shared forum, the link may point to the shared forum through a course the student is not registered in, resulting in a permission denied error when the student clicks on the link
For example, in include/install/config_template.php, write_config_file() has @param when @return should be used, and the syntax is wrong.
Although technically speaking there is no standard, but if the comments look like they are following PHPDoc then it should at least try to actually follow the conventions.
During installation, the wizard always asks you for a site name. However, the site name, once committed to the database during a previous installation attempt, is not updated even if you specified a different name by rerunning the installer.
Step 2 in the installation process, file install/include/step2.php
The asterisk for indicating a required field is completely CSS-generated (class=required), but this will not work in text browsers, and obviously will not work on screen readers either
Step 2 in installation process, file include/install/install.inc.php called by install/include/step2.php
If the database password contains a neutral single quote (U+0027), the backend (which is step2.php itself) fails to handle it correctly and produces misleading error messages:
Error
Unable to connect to database server.
MySQL version was detected. ATutor requires version 4.1.10 or later.
Unable to select or create database .
Note that it fails to even detect the MySQL version.
This was from a few days ago, but the creation of the user “Bob” (as in the standard “Alice” and “Bob” pair) failed. Need to investigate what’s going on.
On the Anonymous Data Collection screen (step 6), the MySQL version is always blank.
Removing the @ operator from step6.php reveals that the error was “Warning: mysql_connect() [function.mysql-connect]: Access denied for user '…'@'localhost' (using password: YES) in …/ATutor/install/include/step6.php on line 157”
(This means if the password does not contain U+0027 then the MySQL version should probably be non-blank.)
If the web server cannot write to the directory specified in step 4, it produces the misleading error message “Content Directory entered does not exist.”
If the user replies to a post, ATutor will insert an [op] tag with the actual relative URL of the original post (instead of, for example, embedding the necessary ID numbers so that we can reconstruct the URL). This means that a new module to replace forums is actually infeasible, because these URL’s will be pointing to the original module.
If a thread has 10n + 1 replies (for some integer n), on the forum’s thread listing page the forum module will correctly display a functional link for the (n + 9)/10’th page, but the number of comments will be incorrectly listed as n – 1
If a thread has 10n + 1 replies (for some integer n), on the thread page the forum module will display a link for the (n + 9)/10’th page, but that page will not actually contain the 10n + 1’st reply. (It will be essentially blank.)
In install/include/step5.php, if config.inc.php does not already exist in the “include” directory (../include relative to install; i.e., the include directory from the ATutor root), the installation script generates the error message “../include/config.inc.php does not exist.”
The “help” text just asks people to change permissions, without telling people what file or in which directory.
It should instead either
tell people to create an empty file and then change the file’s permissions, or
check for writability in the include directory and attempt to create config.inc.php if it’s writable, and only say “does not exist” if it cannot actually write to the file
Max length attribute in post titles exceed actual field length in database, causing titles to be truncated even if the user took great lengths to create a title that fits in the edit field
If we ended up on a page number that is out of range (such as due to a bug), the list of pages is not shown. Ironically, this is precisely when the user needs that list the most.