<p>Chamilo 1.9.4 is a minor stable version with a series of improvements on top of 1.9.2.</p>
<h3>Release name</h3>
<h3>New Features</h3>
<ul>
<li></li>
</ul>
<h3>Improvements</h3>
<ul>
<li></li>
</ul>
<h3>Debugging</h3>
<ul>
<li></li>
</ul>
<h1>Chamilo 1.9.2 - Hanga Roa, 27th of September, 2012</h1>
<h3>Release notes - summary</h3>
<p>Chamilo 1.9.2 is a minor stable version with a series of improvements on top of 1.9.0.</p>
<h3>Release name</h3>
<p><ahref="http://en.wikipedia.org/wiki/Hanga_Roa">Hanga Roa</a> is the capital city of Rapa Nui, the Easter Island. The entire Rapa Nui culture is filled with mystery and assumptions about where and how the first Rapa Nui people came to be on the island, but it is accepted by many that the main strain came from Polynesia a long time ago. The population there is around 3,300 but warmly welcomes tons of tourists every year, a bit in the image of the small team of Chamilo now serving more than 1.4M users worldwide, with a welcoming 1.9.2 version that will help you get more time to yourself...</p>
<h3>New Features</h3>
<ul>
<li>Course home: Allow for the publication of direct links to learning paths in the sessions (#3367)</li>
<li>Global: We now show th teacher's professional "card" when clicking on the teacher's name in the courses list (#3388)</li>
<li>Global: Added option to send the student to the courses catalog the first time he logs in (#3898)</li>
<li>Exercises: Added "success score" to exercises (#4541)</li>
<li>Exercises: Added automated distribution of score in specific question type (#4656)</li>
<li>Attendances: Added PDF + print button to attendance sheets (#5069)</li>
<li>Assignments: Users can now see if they have already uploaded their assignment (#5145)</li>
<li>Global: Added a course-specific registration link to increase speed of auto-registration (#5299)</li>
<li>Exercises: Success score for an exercise can now be set manually to allow for specific percentages (#5330)</li>
<li>Documents: The images and audio integrated apps now check available space left on disk before saving (#5346)</li>
<li>Sessions: Added an "official" start and end date to the sessions</li>
<li>Forum: Forum categories, fora and forum threads (but not forum posts to avoid inconsistencies in users property) can now be copied from one course to another (#5462)</li>
<li>Users: Added the possibility for teachers to add students to their course through users classes (#5514)</li>
</ul>
<h3>Improvements</h3>
<ul>
<li>Exercises: Exercises and questions can now be copied inside or between courses, and be better included into learning paths (#651)</li>
<li>Global: Improved WYSIWYG behaviour, now more natural (#1780)</li>
<li>Interface: The action icons bar was improved (#2810)</li>
<li>Social network: Added an icon to show whether users are on- or offline (#3316)</li>
<li>Exercises: Improved interface in true/false/don't know question type (#3370)</li>
<li>Learning paths: Fixed a series of small issues with the learning paths edition page (#3533)</li>
<li>Global: Improvements on various timezone issues (#3747)</li>
<li>Exercises: The test description now only shows on the test start page (#3845)</li>
<li>Global: Fixed CSS positionning problem (#4075)</li>
<li>Learning paths: Improved error message for too large SCORM files (#4142)</li>
<li>Attendances: Reduced steps to create attendance sheets (#4484)</li>
<li>Forum: E-mail notifications can now be sent daily only (#4761)</li>
<li>Plugins: Improved the BBB 0.8 plugin (#4840 & #5312)</li>
<li>Global: Enabled custom pages feature, which allows the system to server specific pages after login to specific user roles (#4850)</li>
<li>Survey: Added surveys in item_property tracking (#4923)</li>
<li>Global: Disable auto-capitalize when using mobile phones (#5116)</li>
<li>Agenda: Improved the personal agenda items system (#5201)</li>
<li>Global: Added a link for portal admins to hide the "Popular courses" block (#5268)</li>
<li>Social network: Deleting private messages now requires confirmation (#5269)</li>
<li>Global: Invalid address errors are now saved to the default error log (#5306)</li>
<li>Exercises: Exercises with a pass % of 0 disable the pass % feature (#5383)</li>
<li>Exercises: Small aesthetics improvements for true/false/dunno answer type (#5385)</li>
<li>Users: Added the registration date in the users lists tables (#5473)</li>
<li>Course copy: Improved error message on missing file (#5515)</li>
<li>Exercises: Added grey icon for audio questions when exercise is bloqued (#5516)</li>
</ul>
<h3>Debugging</h3>
<ul>
<li>Global: Fixed a bug with XLS export encoding (#1831)</li>
<li>Documents: Fixed bug editing jpg/png with SVGedit (#3261)</li>
<li>Exercises: Fixed missing reports on some questions in test feedback (#3347)</li>
<li>Learning paths: Fixed tab-switching issue in LP edition (#3352)</li>
<li>Assignments: Fixed issue by which students could send assignments passed the end date (#3918)</li>
<li>Global: Fixed issue by which password reminder stopped working in some cases (#4032)</li>
<li>Global: Fixed bug by which users lost their sessions when the Wiris plugin was enabled (#4468)</li>
<li>Assessments: Fixed issue with the QR code generation in certificates (#5015)</li>
<li>Plugins: Fixed issue when installing the BBB plugin when using subdirectories (#5103)</li>
<li>Learning paths: Fixed the learning path tracking reset buttong (#5239)</li>
<li>Learning paths: Fixed issue with HotPotatoes files paths being shown (#5253)</li>
<li>Learning paths: Fixed blanck page when editing a document without title (#5265)</li>
<li>Learning paths: Fixed issues in learning paths export (#5286)</li>
<li>Social network: Fixed chat box remaining enabled when social network is not (#5295)</li>
<li>Exercises: Fixed issue with exercise's start time not being saved (#5301)</li>
<li>Migration: Fixed courses disappearing when migrating from 1.8 to 1.9 (#5302)</li>
<li>Global: Fixed font preview being different from the final result (#5303)</li>
<li>Exercises: Fixed very rare case where the expiration of time when reviewing questions with delete results (#5304)</li>
<li>Exercises: Fixed display bug in modal results window (#5311)</li>
<li>Social network: Fixed wrong extra text field in reply form in social messaging (#5327)</li>
<li>Learning paths: Fixed a fatal error in learner reporting (#5347)</li>
<li>Agenda: Fixed wrong month in calendar event popup (#5348)</li>
<li>Global: Fixed issue by which profile fields of type select did not unfold (#5351)</li>
<li>Sessions: Fixed issue by which access delays did not influence the visibility in courses list (#5353)</li>
@ -124,6 +124,9 @@ In the following credits, when possible, we tried to put the latest contributors
<h1>Quality Assurance</h1>
<ul>
<li>Yannick Warnier as QA coordinator</li>
<li>Yoselyn Castillo</li>
<li>Jeremy Saavedra</li>
<li>Coursenligne on the forum</li>
<li>Noa Orizales, through numerous implementations in Spain</li>
<li>Hector Lacherre and colleagues from USIL, Lima</li>
<li>Carlos Vargas</li>
@ -136,6 +139,7 @@ In the following credits, when possible, we tried to put the latest contributors
<ul>
<li>Yannick Warnier - implementation of CDN, SQL improvements, memcached and documentation in the optimization guide</li>
<li>Ivan Tcholakov - language loading performances improvements in 1.8</li>
<li>Julio Montoya</li>
<li>Arnaud Ligot</li>
<li>Jérôme Warnier</li>
<li>Ludwig Chauvin</li>
@ -655,6 +659,8 @@ There are too much translators to list them all. Please check http://translate.c
<li>Henri Hedman, for bug reports in LMS 1.9</li>
<li>Ludovic Gasc, France, for optimization patch in LMS 1.9</li>
<li>Juho Paranko, Finland, for bug reports in LMS 1.9</li>
<li>Jeremy Saavedra, for bug reports in LMS 1.9.2</li>
<li>Ricel Leite, for bug reports and fixes in LMS 1.9.4</li>
<li>All the supporting parents, partners, children, friends, colleagues and sometimes students, of the very special geeks that we are, for their continous support and inspiration</li>
</ul>
@ -679,6 +685,8 @@ These institutions and companies have either contributed to the Chamilo project
<li>Commission Scolaire des Hautes-Rivières, project TIC-FP, Canada</li>
Database::query("INSERT INTO $tbl_category(name,code,parent_id,tree_pos,children_count,auth_course_child) VALUES('$name','$code',".(empty($parent_id)?"NULL":"'$parent_id'").",'$tree_pos','0','$canHaveCourses')");
$result = Database::query("SELECT 1 FROM $tbl_category WHERE code='$code'");
if (Database::num_rows($result)) {
return false;
}
}
$code = generate_course_code($code);
Database::query("UPDATE $tbl_category SET name='$name', code='$code',auth_course_child='$canHaveCourses' WHERE code='$old_code'");
$sql = "UPDATE $tbl_course SET category_code = '$code' WHERE category_code = '$old_code' ";
Database::query($sql);
return true;
}
function moveNodeUp($code,$tree_pos,$parent_id)
{
global $tbl_category;
$code = Database::escape_string($code);
$tree_pos = Database::escape_string($tree_pos);
$parent_id = Database::escape_string($parent_id);
function moveNodeUp($code, $tree_pos, $parent_id) {
global $tbl_category;
$code = Database::escape_string($code);
$tree_pos = Database::escape_string($tree_pos);
$parent_id = Database::escape_string($parent_id);
$result=Database::query("SELECT code,tree_pos FROM $tbl_category WHERE parent_id ".(empty($parent_id)?"IS NULL":"='$parent_id'")." AND tree_pos<'$tree_pos' ORDER BY tree_pos DESC LIMIT 0,1");
$result = Database::query("SELECT code,tree_pos FROM $tbl_category WHERE parent_id ".(empty($parent_id)?"IS NULL":"='$parent_id'")." AND tree_pos<'$tree_pos' ORDER BY tree_pos DESC LIMIT 0,1");
if(!$row=Database::fetch_array($result))
{
$result=Database::query("SELECT code,tree_pos FROM $tbl_category WHERE parent_id ".(empty($parent_id)?"IS NULL":"='$parent_id'")." AND tree_pos>'$tree_pos' ORDER BY tree_pos DESC LIMIT 0,1");
if (!$row = Database::fetch_array($result)) {
$result = Database::query("SELECT code,tree_pos FROM $tbl_category WHERE parent_id " . (empty($parent_id) ? "IS NULL" : "='$parent_id'") . " AND tree_pos>'$tree_pos' ORDER BY tree_pos DESC LIMIT 0,1");
if(!$row=Database::fetch_array($result))
{
return false;
}
}
if (!$row = Database::fetch_array($result)) {
return false;
}
}
Database::query("UPDATE $tbl_category SET tree_pos='".$row['tree_pos']."' WHERE code='$code'");
Database::query("UPDATE $tbl_category SET tree_pos='$tree_pos' WHERE code='$row[code]'");
Database::query("UPDATE $tbl_category SET tree_pos='".$row['tree_pos']."' WHERE code='$code'");
Database::query("UPDATE $tbl_category SET tree_pos='$tree_pos' WHERE code='$row[code]'");
}
function updateFils($category)
{
global $tbl_category;
$category = Database::escape_string($category);
$result=Database::query("SELECT parent_id FROM $tbl_category WHERE code='$category'");
if($row=Database::fetch_array($result))
{
updateFils($row['parent_id']);
}
function updateFils($category) {
global $tbl_category;
$category = Database::escape_string($category);
$result = Database::query("SELECT parent_id FROM $tbl_category WHERE code='$category'");
$children_count=compterFils($category,0)-1;
if ($row = Database::fetch_array($result)) {
updateFils($row['parent_id']);
}
Database::query("UPDATE $tbl_category SET children_count='$children_count' WHERE code='$category'");
$children_count = compterFils($category, 0) - 1;
Database::query("UPDATE $tbl_category SET children_count='$children_count' WHERE code='$category'");
}
function compterFils($pere,$cpt)
{
global $tbl_category;
$pere = Database::escape_string($pere);
$result=Database::query("SELECT code FROM $tbl_category WHERE parent_id='$pere'");
function compterFils($pere, $cpt) {
global $tbl_category;
$pere = Database::escape_string($pere);
$result = Database::query("SELECT code FROM $tbl_category WHERE parent_id='$pere'");
$sql = 'DELETE FROM %s WHERE course_code=\'%s\' AND tool_id=\'%s\' AND ref_id_high_level=%s LIMIT 1';
@ -1178,10 +1177,26 @@ class DocumentManager {
$condition = "AND id_session IN ('$session_id', '0') ";
// The " d.filetype='file' " let the user see a file even if the folder is hidden see #2198
//When using hotpotatoes files, new files are generated in the hotpotatoe folder, if user_id=1 does the exam a new html file will be generated: hotpotatoe.html.(user_id).t.html
//so we remove that string in order to find correctly the origin file
// Updated for FCKeditor by: Paul Moers, http://www.saulmade.nl/FCKeditor/FCKPlugins.php
// FOR TRANSLATORS:
//
// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE
// (at least a valid email address)
//
// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING;
// (if this is not possible, please include a comment
// that states what encoding is necessary.)
if(!this.ImageManager)
{
ImageManager=newObject();
};
ImageManager.I18N={
"Demo":"Demo",
"Replace":"Ersetzen ",
"Watermark":"Wasserzeichen",
"Image Manager":"Bildmanager",
"Insert Image":"Bild einfügen",
"Directory":"Ordner",
"Directory Up":"übergeordneter Ordner",
"New Folder":"Neuer Ordner",
"Trash":"Müll",
"Edit":"bearbeiten",
"Image File":"Bilddatei",
"Upload":"Hochladen",
"Width":"Breite",
"Height":"Höhe",
"Width:":"Breite:",
"Height:":"Höhe:",
"Constrain Proportions":"Proportional",
"Border":"Rand",
"V Space":"vertikaler Freiraum",
"H Space":"horizontaler Freiraum",
"Refresh":"Aktualisieren",
"Uploading...":"Hochladen...",
"Crop":"Beschneiden",
"Resize":"Größe ändern",
"Rotate":"Drehen",
"Measure":"Abmessungen",
"Marker":"Marker",
"Save":"Speichern",
"Filename:":"Dateiname:",
"Image Format":"Bildformat",
"Quality:":"Qualität:",
"JPEG High":"JPEG hoch",
"JPEG Medium":"JPEG mittel",
"JPEG Low":"JPEG niedrig",
"File saved.":"Datei gespeichert.",
"File was not saved.":"Datei wurde nicht gespeichert.",
"Start X:":"Start X:",
"Start Y:":"Start Y:",
"Lock":"Sperren",
"Flip Image":"Bild spiegeln",
"Flip Horizontal":"horizontal spiegeln",
"Flip Vertical":"vertikal spiegeln",
"Rotate Image":"Bild drehen",
"Rotate 180 °":"180° drehen",
"Rotate 90 ° CW":"90° drehen im UZS",
"Rotate 90 ° CCW":"90° drehen gegen UZS",
"Angle:":"Winkel:",
"W:":"B:",
"H:":"H:",
"A:":"W:",
"D:":"D:",
"Clear":"Entfernen",
"Loading":"Laden",
"Invalid base directory:":"Ungültiges Startverzeichnis:",
"Delete file?":"Datei löschen?",
"Delete folder?":"Ordner löschen?",
"Folder Name:":"Ordnername:",
"No Images Found":"Kein Bild gefunden",
"No Image Available":"Kein Bild verfügbar",
"No Image selected.":"Kein Bild ausgewählt.",
"Color:":"Farbe:",
"Align:":"Ausrichtung:",
"Description:":"Beschreibung:",
"Margin:":"Außenabstand:",
"Padding:":"Innenabstand:",
"Border:":"Rand:",
"Upload:":"Hochladen:",
"File name was changed into ":"File name was changed into ",// not translated yet
"start x coordinate":"start x coordinate",// not translated yet
"start y coordinate":"start y coordinate",// not translated yet
"height":"höhe",
"width":"breite ",
"angle":"winkel ",
"opacity":"opazität",
"diagonal length":"diagonal length",// not translated yet
"Watermarking is disabled.":"Watermarking is disabled.",// not translated yet
"No watermarks were found or all watermarks are to big for the target image.":"No watermarks were found or all watermarks are to big for the target image.",// not translated yet
"Please delete all files/folders inside the folder you wish to delete first.":"Bitte löschen Sie zuerst alle Dateien im Ordner den Sie löschen möchten.",
"Invalid folder name, please choose another folder name.":"Ungültiger Ordnername, bitte wählen sie einen anderen Namen.",
"GIF format is not supported, image editing not supported.":"GIF Format wird nicht unterstützt, Bildbearbeitung wird nicht unterstützt.",
"Please do not close the window while uploading a new image! If you do, the original image gets deleted!":"Please do not close the window while uploading a new image! If you do, the original image gets deleted!",// not translated yet
"Error: Couldn't update editor window.\nAny image that was edited and saved will still be visible as the old version!\nPlease save and reload the editor content.":"Error: Couldn't update editor window.\nAny image that was edited and saved will still be visible as the old version!\nPlease save and reload the editor content.",// not translated yet
// Updated for FCKeditor by: Paul Moers, http://www.saulmade.nl/FCKeditor/FCKPlugins.php
// FOR TRANSLATORS:
//
// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE
// (at least a valid email address)
//
// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING;
// (if this is not possible, please include a comment
// that states what encoding is necessary.)
if(!this.ImageManager)
{
ImageManager=newObject();
};
ImageManager.I18N={
"Demo":"Demo",
"Replace":"Ersetzen ",
"Watermark":"Wasserzeichen",
"Image Manager":"Bildmanager",
"Insert Image":"Bild einfügen",
"Directory":"Ordner",
"Directory Up":"übergeordneter Ordner",
"New Folder":"Neuer Ordner",
"Trash":"Müll",
"Edit":"bearbeiten",
"Image File":"Bilddatei",
"Upload":"Hochladen",
"Width":"Breite",
"Height":"Höhe",
"Width:":"Breite:",
"Height:":"Höhe:",
"Constrain Proportions":"Proportional",
"Border":"Rand",
"V Space":"vertikaler Freiraum",
"H Space":"horizontaler Freiraum",
"Refresh":"Aktualisieren",
"Uploading...":"Hochladen...",
"Crop":"Beschneiden",
"Resize":"Größe ändern",
"Rotate":"Drehen",
"Measure":"Abmessungen",
"Marker":"Marker",
"Save":"Speichern",
"Filename:":"Dateiname:",
"Image Format":"Bildformat",
"Quality:":"Qualität:",
"JPEG High":"JPEG hoch",
"JPEG Medium":"JPEG mittel",
"JPEG Low":"JPEG niedrig",
"File saved.":"Datei gespeichert.",
"File was not saved.":"Datei wurde nicht gespeichert.",
"Start X:":"Start X:",
"Start Y:":"Start Y:",
"Lock":"Sperren",
"Flip Image":"Bild spiegeln",
"Flip Horizontal":"horizontal spiegeln",
"Flip Vertical":"vertikal spiegeln",
"Rotate Image":"Bild drehen",
"Rotate 180 °":"180° drehen",
"Rotate 90 ° CW":"90° drehen im UZS",
"Rotate 90 ° CCW":"90° drehen gegen UZS",
"Angle:":"Winkel:",
"W:":"B:",
"H:":"H:",
"A:":"W:",
"D:":"D:",
"Clear":"Entfernen",
"Loading":"Laden",
"Invalid base directory:":"Ungültiges Startverzeichnis:",
"Delete file?":"Datei löschen?",
"Delete folder?":"Ordner löschen?",
"Folder Name:":"Ordnername:",
"No Images Found":"Kein Bild gefunden",
"No Image Available":"Kein Bild verfügbar",
"No Image selected.":"Kein Bild ausgewählt.",
"Color:":"Farbe:",
"Align:":"Ausrichtung:",
"Description:":"Beschreibung:",
"Margin:":"Außenabstand:",
"Padding:":"Innenabstand:",
"Border:":"Rand:",
"Upload:":"Hochladen:",
"File name was changed into ":"Dateiname wurde geändert zu ",
"start x coordinate":"X Koordinate Anfang",
"start y coordinate":"Y Koordinate Anfang",
"height":"Höhe",
"width":"Breite ",
"angle":"Winkel ",
"opacity":"Opazität",
"diagonal length":"Diagonale",
"Watermarking is disabled.":"Wasserzeichen wurde deaktiviert.",
"No watermarks were found or all watermarks are to big for the target image.":"Keine Wasserzeichen gefunden oder diese sind zu groß für das Ziel-Bild.",
"Please delete all files/folders inside the folder you wish to delete first.":"Bitte löschen Sie zuerst alle Dateien im Ordner den Sie löschen möchten.",
"Invalid folder name, please choose another folder name.":"Ungültiger Ordnername, bitte wählen sie einen anderen Namen.",
"GIF format is not supported, image editing not supported.":"GIF Format wird zur Bildbearbeitung nicht unterstützt.",
"Please do not close the window while uploading a new image! If you do, the original image gets deleted!":"Bitte das Fenster während dem Hochladen beim Überschreiben nicht schliessen! Ansonsten wird das Originalbild gelöscht!",
"Error: Couldn't update editor window.\nAny image that was edited and saved will still be visible as the old version!\nPlease save and reload the editor content.":"Fehler: Editor kann nicht aktualisiert werde.\nAlle Bilder, die bearbeitet und gespeichert wurden, werden daher nicht korrekt angezeigt!\nBitte nochmals speichern, und den Editor neu laden.",
"Edit image":"Bild bearbeiten",
"Alt":"alternativer Text",
"Align":"Ausrichtung",
"Not Set":"nicht gesetzt",
"Left":"links",
"Right":"rechts",
"Texttop":"am oberen Schriftrand ausrichten",
"Absmiddle":"in jedem Fall mittig ausrichten",
"Baseline":"am unteren Schriftrand ausrichten",
"Absbottom":"in jedem Fall untenbündig ausrichten",
FCKLang.GMapsMarkerDefaultText='Geben Sie einen Text ein';
FCKLang.GMapsLine='Linie';
FCKLang.GMapsLineInstructions='Klicken Sie auf die Karte um den ersten Punkt zu setzten. Jeder weitere Klick setzt einen neuen Punkte.<br>Gesetzte Punkte können Sie auch verschieben und wieder löschen.';
FCKLang.GMapsHelpFile='install.html';
FCKLang.GMapsUserHelpFile='users.html';
FCKLang.Help='Hilfe';
FCKLang.GMapsClickToAddMarker='Klicken Sie auf die Karte um eine Ortsmarke zu setzen.';
FCKLang.GMapsDeleteMarker='Ortsmarke löschen';
FCKLang.GMapsAddMarker='Neue Ortsmarke setzen';
FCKLang.GMaps_MissingKey='You must enter the Google Maps Key for your domain.';
FCKLang.GMapsMarkerDefaultText='Geben Sie einen Text ein';
FCKLang.GMapsLine='Linie';
FCKLang.GMapsLineInstructions='Klicken Sie auf die Karte um den ersten Punkt zu setzten. Jeder weitere Klick setzt einen neuen Punkte.<br>Gesetzte Punkte können Sie auch verschieben und wieder löschen.';
FCKLang.GMapsHelpFile='install.html';
FCKLang.GMapsUserHelpFile='users.html';
FCKLang.Help='Hilfe';
FCKLang.GMapsClickToAddMarker='Klicken Sie auf die Karte um eine Ortsmarke zu setzen.';
FCKLang.GMapsDeleteMarker='Ortsmarke löschen';
FCKLang.GMapsAddMarker='Neue Ortsmarke setzen';
FCKLang.GMaps_MissingKey='Bitte einen gültigen Google Maps Key für Deine Domain angeben.';
FCKLang.WikilinkErrNoName='Please type the wiki link name.';
FCKLang.WikilinkErrNameInUse='The specified name is already in use.';
FCKLang.WikilinkHelp='TIP: Also, you can create a wiki link without using this button. To create a new page or create a link to an existing one using wiki links, edit a page and add [[page title]] or [[name of link|title of page]] to its content.';
FCKLang.WikilinkErrNoName='Bitte den Namen des Links eingeben.';
FCKLang.WikilinkErrNameInUse='Der angegebene Name ist bereits in Verwendung.';
FCKLang.WikilinkHelp='Hinweis: Wiki-Links können auch ohne diesen Button erstellt werden. Um eine neue Seite oder einen Link auf eine existierende Seite zu erstellen, reicht es, eine bereits existierende Seite zu modifizieren und [[Titel der Seite]] oder [[Name des Links|Titel der Seite]] zum bestehenden Inhalt hinzuzufügen.';
* This file contains class used like library, provides functions for thematic option inside attendance tool. It's also used like model to thematic_controller (MVC pattern)
* Thematic class can be used to instanciate objects or as a library for thematic control
* @author Christian Fasanando <christian1827@gmail.com>
* @author Julio Montoya <gugli100@gmail.com> SQL fixes
* @package chamilo.course_progress
*/
/**
* Thematic class can be used to instanciate objects or as a library for thematic control
* @package chamilo.course_progress
*/
class Thematic
{
private $session_id;
@ -45,13 +41,11 @@ class Thematic
}
$course_id = api_get_course_int_id();
$sql = "SELECT COUNT(id) AS total_number_of_items FROM $tbl_thematic WHERE c_id = $course_id AND active = 1 $condition_session ";
$res = Database::query($sql);
$res = Database::query($sql);
$res = Database::query($sql);
$obj = Database::fetch_object($res);
return $obj->total_number_of_items;
}
/**
* Get the thematics to display on the current page (fill the sortable-table)
$sql = "SELECT lp_iv.id as lp_item_view_id, lp_iv.score as score,lp_i.max_score, lp_iv.max_score as max_score_item_view, lp_i.path, lp_i.item_type, lp_i.id as iid
FROM $lp_item_view_table as lp_iv INNER JOIN $lp_item_table as lp_i ON lp_i.id = lp_iv.lp_item_id AND (lp_i.item_type='sco' OR lp_i.item_type='".TOOL_QUIZ."')
WHERE lp_iv.c_id = $course_id AND
lp_i.c_id = $course_id AND
lp_item_id = $my_lp_item_id AND
$sql = "SELECT lp_iv.id as lp_item_view_id,
lp_iv.score as score,
lp_i.max_score,
lp_iv.max_score as max_score_item_view,
lp_i.path,
lp_i.item_type,
lp_i.id as iid
FROM $lp_item_view_table as lp_iv
INNER JOIN $lp_item_table as lp_i
ON lp_i.id = lp_iv.lp_item_id AND
lp_iv.c_id = $course_id AND
lp_i.c_id = $course_id AND
(lp_i.item_type='sco' OR lp_i.item_type='".TOOL_QUIZ."')
WHERE lp_item_id = $my_lp_item_id AND
lp_view_id = $lp_view_id
ORDER BY view_count DESC
LIMIT 1";
@ -763,11 +772,20 @@ class Tracking {
} else {
// For the currently analysed view, get the score and
// max_score of each item if it is a sco or a TOOL_QUIZ
$sql_max_score = "SELECT lp_iv.id as lp_item_view_id, lp_iv.score as score,lp_i.max_score, lp_iv.max_score as max_score_item_view, lp_i.path, lp_i.item_type, lp_i.id as iid
FROM $lp_item_view_table as lp_iv INNER JOIN $lp_item_table as lp_i ON lp_i.id = lp_iv.lp_item_id AND (lp_i.item_type='sco' OR lp_i.item_type='".TOOL_QUIZ."')
WHERE lp_iv.c_id = $course_id AND
lp_i.c_id = $course_id AND
lp_view_id = $lp_view_id ";
$sql_max_score = "SELECT lp_iv.id as lp_item_view_id,
lp_iv.score as score,
lp_i.max_score,
lp_iv.max_score as max_score_item_view,
lp_i.path,
lp_i.item_type,
lp_i.id as iid
FROM $lp_item_view_table as lp_iv
INNER JOIN $lp_item_table as lp_i
ON lp_i.id = lp_iv.lp_item_id AND
lp_iv.c_id = $course_id AND
lp_i.c_id = $course_id AND
(lp_i.item_type='sco' OR lp_i.item_type='".TOOL_QUIZ."')
* @param int Status (1 for course tutor, 5 for student, 6 for anonymous)
@ -147,10 +146,9 @@ class UserManager {
* @param array Extra fields
* @param string Encrypt method used if password is given encrypted. Set to an empty string by default
* @return mixed new user id - if the new user creation succeeds, false otherwise
*
* @desc The function tries to retrieve $_user['user_id'] from the global space.
* if it exists, $_user['user_id'] is the creator id. If a problem arises,
* it stores the error message in global $api_failureList
* @desc The function tries to retrieve $_user['user_id'] from the global space. If it exists, $_user['user_id'] is the creator id. If a problem arises, it stores the error message in global $api_failureList
@ -976,6 +976,7 @@ $NumberOfCoursesPrivate = "Number of private courses";
$NumberOfCoursesClosed = "Number of closed courses";
$NumberOfCoursesTotal = "Total number of courses";
$NumberOfUsersActive = "Number of active users";
$ReturnToCourseList = "Return to the course list";
$dateFormatShortNumberNoYear = "%d/%m";
$CourseTutor = "Course tutor";
$StudentInSessionCourse = "Student in session course";
@ -1003,13 +1004,13 @@ $YouMustAcceptLicence = "You must accept the licence";
$SelectOne = "Select one";
$ContactInformationHasBeenSent = "Contact information has been sent";
$UserInactivedSinceX = "User inactive since %s";
$ContactInformationDescription = "Dear user,<br/>
<br/>You are about to start using one of the best open-source e-learning platform on the market. Like many other open-source project, this project is backed up by a large community of students, teachers, developers and content creators who would like to promote the project better.<br/>
<br/>
By knowing a little bit more about you, one of our most important users, who will manage this e-learning system, we will be able to let people know that our software is used and let you know when we organize events that might be relevant to you.<br/>
<br/>
By filling this form, you accept that the Chamilo association or its members might send you information by e-mail about important events or updates in the Chamilo software or community. This will help the community grow as an organized entity where information flow, with a permanent respect of your time and your privacy.<br/>
<br/>
$ContactInformationDescription = "Dear user,<br/>
<br/>You are about to start using one of the best open-source e-learning platform on the market. Like many other open-source project, this project is backed up by a large community of students, teachers, developers and content creators who would like to promote the project better.<br/>
<br/>
By knowing a little bit more about you, one of our most important users, who will manage this e-learning system, we will be able to let people know that our software is used and let you know when we organize events that might be relevant to you.<br/>
<br/>
By filling this form, you accept that the Chamilo association or its members might send you information by e-mail about important events or updates in the Chamilo software or community. This will help the community grow as an organized entity where information flow, with a permanent respect of your time and your privacy.<br/>
<br/>
Please note that you are <b>not required</b> to fill this form. If you want to remain anonymous, we will loose the opportunity to offer you all the privileges of being a registered portal administrator, but we will respect your decision. Simply leave this form empty and click \"Next\".<br/><br/>";
$CompanyActivity = "Your company's activity";
$DateUnLock = "Unlock date";
@ -1215,7 +1216,7 @@ $SaveForNow = "Save and continue later";
$NoQuicktime = "Your browser does not have the QuickTime plugin installed. You can still use the platform, but to run a larger number of media file types, we suggest you might want to install it.";
$NoJavaSun = "Your browser doesn't seem to have the Sun Java plugin installed. You can still use the platform, but you will lose a few of its capabilities.";
$NoJava = "Your browser does not support Java";
$JavaSun24 = "Your browser has a Java version not supported by this tool.
$JavaSun24 = "Your browser has a Java version not supported by this tool.
To use it you have to install a Java Sun version higher than 24";
$NoMessageAnywere = "If you do not want to see this message again during this session, click here";
$GoAheadAndBrowseOurCourseCatalogXOnceRegisteredYouWillSeeTheCourseHereX = "Révisez notre catalogue de cours %s pour vous inscrire à votre cours préféré. Une fois inscrit(e), votre cours apparaîtra %s, à la place de ce message.";
$HelloXAsYouCanSeeYourCourseListIsEmpty = "Bonjour %s, nous vous souhaitons la bienvenue,<br/>
Comme vous pouvez le voir, votre liste de cours est vide. C'est parce que vous ne nous êtes pas encore inscrit à un cours!";
$PleaseAllowUsALittleTimeToSubscribeYouToOneOfOurCourses = "Merci de nous donner un moment pour vous inscrire à l'un de nos cours. Si vous pensez avoir été oublié, merci de contacter les administrateurs du site. Vous pouvez généralement trouver leurs informations de contact dans le pied de page.";
$SessionDisplayEndDate = "Prikazan datum zaključka";
$SessionDisplayStartDate = "Prikazan datum začetka";
$UserHasNoCourse = "Ta uporabnik ni vpisan v noben tečaj";
$SessionTutorsCanSeeExpiredSessionsResultsComment = "Ali bo tutor seje videl poročila seje po tem, ko bo seja pretekla!?";
$SessionTutorsCanSeeExpiredSessionsResultsTitle = "Vidnost poročil tutorja seje";
$TheXMLImportLetYouAddMoreInfoAndCreateResources = "XML uvoz omogoča dodajanje več informacije in hkrati pri uvozu ustvari zahtevane elemente (tečaje, uporabnike). CSV uvoz zgolj kreira seje in omogoča prirejanje obstoječih resursov sejam.";
$ShowLinkBugNotificationTitle = "Pokoži povezavo za poročanje o napakah";
$ShowLinkBugNotificationComment = "V glavi prikaže povezavo na stran za poročanje o napakah (http://support.chamilo.org). S klikom na povezavo se prestavite na podporno stran z Wiki stranjo, ki opisuje proces poročanja o odkritih napakah.";
Some files were not shown because too many files have changed in this diff
Show More