upgrade
This commit is contained in:
17310
documentation/changelog.html
Normal file
17310
documentation/changelog.html
Normal file
File diff suppressed because it is too large
Load Diff
775
documentation/credits.html
Normal file
775
documentation/credits.html
Normal file
@@ -0,0 +1,775 @@
|
|||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<title>Chamilo Credits</title>
|
||||||
|
<link rel="stylesheet" href="../web/assets/bootstrap/dist/css/bootstrap.css" type="text/css" media="screen,projection" />
|
||||||
|
<link rel="stylesheet" href="default.css" type="text/css" media="screen,projection" />
|
||||||
|
<link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav class="navbar navbar-default navbar-fixed-top">
|
||||||
|
<div class="container">
|
||||||
|
<div class="navbar-header">
|
||||||
|
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
|
||||||
|
<span class="sr-only">Toggle navigation</span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
</button>
|
||||||
|
<a class="navbar-brand" href="#">Chamilo - Documentation</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="collapse navbar-collapse">
|
||||||
|
<ul class="nav navbar-nav">
|
||||||
|
<li><a href="index.html">Home</a></li>
|
||||||
|
<li><a href="readme.html">About</a></li>
|
||||||
|
<li><a href="license.html">License</a></li>
|
||||||
|
<li class="active"><a href="credits.html">Credits</a></li>
|
||||||
|
<li><a href="dependencies.html">Dependencies</a></li>
|
||||||
|
<li><a href="changelog.html">Changelog</a></li>
|
||||||
|
</ul>
|
||||||
|
</div><!--/.nav-collapse -->
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<div class="container">
|
||||||
|
<ul class="breadcrumb">
|
||||||
|
<li>
|
||||||
|
<a href="index.html">Documentation</a>
|
||||||
|
<span class="divider">/</span>
|
||||||
|
</li>
|
||||||
|
<li>Credits</li>
|
||||||
|
</ul>
|
||||||
|
<h1>Chamilo Credits</h1>
|
||||||
|
<h2>Table of contents</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="#core-developers">Core contributors</a></li>
|
||||||
|
<li><a href="#quality-assurance">Quality assurance</a></li>
|
||||||
|
<li><a href="#performance">System performance</a></li>
|
||||||
|
<li><a href="#tools">Tools</a></li>
|
||||||
|
<li><a href="#online-authoring">Online authoring</a></li>
|
||||||
|
<li><a href="#translations">Translations</a></li>
|
||||||
|
<li><a href="#documentation">Documentation</a></li>
|
||||||
|
<li><a href="#special-thanks">Special thanks</a></li>
|
||||||
|
<li><a href="#organisations">Organisations and institutions</a></li>
|
||||||
|
<li><a href="#deprecated-developments">Deprecated developments</a></li>
|
||||||
|
<li><a href="#association">The Chamilo Association</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
In the following (unmaintained since at least 2018) historical credits, we tried to put the more recent contributors first, in order to show more clearly the contributions relevant to the corresponding timeline (pre-2015).<br />
|
||||||
|
Note: this list of credits has been discontinued. We now refer to our repositories for the list of contributors and reviewers from our different projects on <a href="https://github.com/chamilo">https://github.com/chamilo</a><br />
|
||||||
|
These lists are never complete, and we thank all our community contributors for the regular input they give us, allowing us to improve continually.
|
||||||
|
|
||||||
|
<a id="core-developers"></a>
|
||||||
|
<h1>Core contributors / Core team</h1>
|
||||||
|
<p>The core contributors are the people who contributed most to the Chamilo software in the past. We are eternally thankful to them for having demonstrated a very high level of commitment, contributing their time and ideas to the project. Since version 1.9, we also include non-developer contributors as we consider their help is essential to the success of our project. This list is updated with each version.</p>
|
||||||
|
<h2>Chamilo LMS 1.11.*</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Yannick Warnier (yannick.warnier@beeznest.com) - Technical coordinator, Project Leader - BeezNest, Belgium/Peru</li>
|
||||||
|
<li>Julio Montoya (gugli100@gmail.com) - Lead developer - BeezNest, France</li>
|
||||||
|
<li>Angel Quiroz (<a href="https://github.com/AngelFQC">https://github.com/AngelFQC</a>) - Developer - BeezNest, Peru</li>
|
||||||
|
<li>Alex Aragon (<a href="https://github.com/aragonc/">https://github.com/aragonc/</a>) - Designer - BeezNest, Peru</li>
|
||||||
|
<li>José Loguercio (<a href="https://github.com/jloguercio/">https://github.com/jloguercio/</a>) - Developer - BeezNest, Peru</li>
|
||||||
|
</ul>
|
||||||
|
<h2>Chamilo LMS 1.9.*</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Yannick Warnier (yannick.warnier@beeznest.com) - Technical coordinator, Project Leader - BeezNest, Belgium/Peru</li>
|
||||||
|
<li>Julio Montoya (gugli100@gmail.com) - Lead developer - BeezNest, France</li>
|
||||||
|
<li>Angel Quiroz (<a href="https://github.com/AngelFQC">https://github.com/AngelFQC</a>) - Developer - BeezNest, Peru</li>
|
||||||
|
<li>Alex Aragon (<a href="https://github.com/aragonc/">https://github.com/aragonc/</a>) - Designer - BeezNest, Peru</li>
|
||||||
|
<li>Michela Mosquera - Community manager for the (very large) Latin American community - BeezNest, Peru</li>
|
||||||
|
<li>Noa Orizales - Tireless coordinator of everything non-related to coding, which enabled developers to do a better job - Contidos Dixitais, Spain</li>
|
||||||
|
<li>Laura Guirao, José & José Angel from Nosolored - Technical assistance and contributions to testing and forum community</li>
|
||||||
|
<li>Hubert Borderiou - Developer responsible for exercises categories and many other practical fixes - Université de Grenoble, France</li>
|
||||||
|
<li>Coursenligne45 - Anonymous reporter and contributor to many bugfixes - Independent, France</li>
|
||||||
|
<li>Yoselyn Castillo (yoselyn.castillo@beeznest.com) - Maintainer developer - BeezNest, Cuba</li>
|
||||||
|
<li>Marko Kastelic - Reporter and contributor to many bugfixes - Independent, Slovenia</li>
|
||||||
|
<li>Juan Carlos Raña Trabado - Independent developer and mastermind for documents, wiki and other pedagogical tools - Independent, Spain</li>
|
||||||
|
<li>Laurent Opprecht - Developer responsible for rewriting/restructuring the application core and plugins - Université de Genève, Switzerland</li>
|
||||||
|
<li>Special thanks go to <a href="#special-thanks">many other people</a>, less involved in the project directly but whose support was greatly appreciated</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Previous versions</h2>
|
||||||
|
<ul>
|
||||||
|
<li>BeezNest Latino (2007-2014) (aka Dokeos Latinoamérica from 2007-2009)
|
||||||
|
<ul>
|
||||||
|
<li>Yannick Warnier (ywarnier@beeznest.org) - Lead developer</li>
|
||||||
|
<li>Julio Montoya (gugli100@gmail.com) - Lead Latino developer</li>
|
||||||
|
<li>Christian Fasanando (christian534@hotmail.com) - 2009-2010</li>
|
||||||
|
<li>Yoselyn Castillo (yoselyn.castillo@beeznest.com) - Developer</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Independent (2008-2013)
|
||||||
|
<ul>
|
||||||
|
<li>Juan Carlos Raña Trabado - considerable work on the wiki integration and improvements, and the FCKEditor/Mimetex extension as well as *many* FCKEditor's file manager and other modules improvements, as well as a continuous stream of recommendations that helped shape 1.8.5 and 1.8.6.*</li>
|
||||||
|
<li>Ivan Tcholakov - various bugfixes in 1.8.6.*, very accurate bug reporting contributions and a considerable work in the integration of a new version of FCKEditor, along with a bunch of useful plugins and an exceptional work on internationalization</li>
|
||||||
|
<li>Coursenligne45 - Anonymous reporter and contributor to many bugfixes - France</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Université de Grenoble, France (2011-2013)
|
||||||
|
<ul>
|
||||||
|
<li>Hubert Borderiou - Reporter and occasional developer</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Dokeos (2004-2009)
|
||||||
|
<ul>
|
||||||
|
<li>Thomas De Praetere (thomas.depraetere@dokeos.com) - Creator of Claroline (2000) and later Dokeos (2004)</li>
|
||||||
|
<li>Yannick Warnier (ywarnier@beeznest.org) - Developer (2004-2005) and Technical lead (2006-2009)</li>
|
||||||
|
<li>Arnaud Ligot (arnaud@cblue.be) - also independently, through CBlue (2010-2011)</li>
|
||||||
|
<li>Noel Dieschburg (noel@cblue.be)</li>
|
||||||
|
<li>Frédéric Burlet (fburlet@cblue.be)</li>
|
||||||
|
<li>Toon Keppens (toon@develop-it.be)</li>
|
||||||
|
<li>Luk Van Landuyt (luk@develop-it.be)</li>
|
||||||
|
<li>Sebastian Wagner (seba.wagner@gmail.com)</li>
|
||||||
|
<li>Julian Prud'homme (j.prudhomme@elixir-interactive.com)</li>
|
||||||
|
<li>Eric Marguin (eric.marguin@elixir-interactive.com)</li>
|
||||||
|
<li>Alexandre Pelissard (a.pellissard@elixir-interactive.com)</li>
|
||||||
|
<li>Ravin Minocha (ravin@comprointertech.com)</li>
|
||||||
|
<li>Priya Siani (priya@ballisticlearning.com)</li>
|
||||||
|
<li>Denes Nagy (denes.nagy@dokeos.com)</li>
|
||||||
|
<li>Olivier Brouckaert (oli.brouckaert@dokeos.com)</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Ghent University (2004-2007)
|
||||||
|
<ul>
|
||||||
|
<li>Patrick Cool (patrick.cool@ugent.be)</li>
|
||||||
|
<li>Bert Vanderkimpen (bert.vanderkimpen@ugent.be)</li>
|
||||||
|
<li>Toon Van Hoecke (toon.vanhoecke@UGent.be) </li>
|
||||||
|
<li>René Haentjens (rene.haentjens@intec.ugent.be)</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Hogeschool Gent (2004-2007)
|
||||||
|
<ul>
|
||||||
|
<li> Bart Mollet (bart.mollet@hogent.be)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</li>
|
||||||
|
<li>Université Catholique de Louvain (Claroline, 2001-2003)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<a id="quality-assurance"></a>
|
||||||
|
<h1>Quality Assurance</h1>
|
||||||
|
<ul>
|
||||||
|
<li>Yannick Warnier as QA coordinator (2008-2013)</li>
|
||||||
|
<li>Noa Orizales, through numerous implementations in Spain (2008-2013)</li>
|
||||||
|
<li>Coursenligne on the forum (2012-2013)</li>
|
||||||
|
<li>Yoselyn Castillo (2012-2013)</li>
|
||||||
|
<li>Jeremy Saavedra (2012)</li>
|
||||||
|
<li>Hector Lacherre and colleagues from USIL, Lima (2008-2011)</li>
|
||||||
|
<li>Carlos Vargas (2009)</li>
|
||||||
|
<li>Arthur Portugal (2009)</li>
|
||||||
|
<li>Ricardo Rodriguez (2009)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<a id="performance"></a>
|
||||||
|
<h1>System performance</h1>
|
||||||
|
<ul>
|
||||||
|
<li>Yannick Warnier - implementation of CDN, SQL improvements, memcached and documentation in the optimization guide</li>
|
||||||
|
<li>Julio Montoya</li>
|
||||||
|
<li>Ivan Tcholakov - language loading performances improvements in 1.8</li>
|
||||||
|
<li>Arnaud Ligot</li>
|
||||||
|
<li>Jérôme Warnier</li>
|
||||||
|
<li>Ludwig Chauvin</li>
|
||||||
|
<li>Ludovic Gasc</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<a id="tools"></a>
|
||||||
|
<h1>Developments</h1>
|
||||||
|
<h2>Announcement tool </h2>
|
||||||
|
|
||||||
|
First versions by
|
||||||
|
<ul>
|
||||||
|
<li>Pablo Rey (prey@cesga.es)</li>
|
||||||
|
<li>Roan Embrechts (roan.embrechts@vub.ac.be)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
Rewritten by
|
||||||
|
<ul>
|
||||||
|
<li>Patrick Cool (patrick.cool@ugent.be)</li>
|
||||||
|
<li>Frederik Vermeire</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Agenda</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Patrick Cool (patrick.cool@UGent.be)</li>
|
||||||
|
<li>Carlos Vargas (global agenda)</li>
|
||||||
|
<li>Yannick Warnier (web services)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Blog</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Toon Keppens (toon@vi-host.net) </li>
|
||||||
|
<li>Kevin Van Den Haute (kevin@develop-it.be)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Course navigation menu</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Sandra Mathijs</li>
|
||||||
|
<li> Roan Embrechts (roan.embrechts@vub.ac.be)</li>
|
||||||
|
<li> Wolfgang Schneider</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Course copy</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Bart Mollet (bart.mollet@hogent.be)</li>
|
||||||
|
<li>Yannick Warnier (yannick.warnier@beeznest.com)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Course Quota</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Roan Embrechts (roan.embrechts@vub.ac.be)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Course validation optional feature</h2>
|
||||||
|
<ul>
|
||||||
|
<li>José Manuel Abuin Mosquera <chema@cesga.es>, 2010, Centro de Supercomputacion de Galicia (CESGA)</li>
|
||||||
|
<li>Bruno Rubio Gayo <brubio@cesga.es>, 2010, CESGA</li>
|
||||||
|
<li>Ivan Tcholakov <ivantcholakov@gmail.com> (technical adaptation for Chamilo 1.8.8), 2011</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Chat</h2>
|
||||||
|
<ul>
|
||||||
|
<li>First version:</li>
|
||||||
|
<li>Olivier Brouckaert</li>
|
||||||
|
<li>Improvements:</li>
|
||||||
|
<li>Isaac Flores</li>
|
||||||
|
<li>Juan Carlos Raña (open in new window, smileys, ...)</li>
|
||||||
|
<li>Yannick Warnier</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Database refactoring</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Yannick Warnier (yannick.warnier@beeznest.com) (with thanks to many other contributors)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Document tool </h2>
|
||||||
|
<ul>
|
||||||
|
<li>First version:</li>
|
||||||
|
<li>Bert Vanderkimpen (bert.vanderkimpen@ugent.be)</li>
|
||||||
|
<li>Improvements:</li>
|
||||||
|
<li>*Many* contributors (too many to list, but they are all mentionned in this file)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Dropbox</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Jan Bols (jan.bols@UGent.be)</li>
|
||||||
|
<li>Rene Haentjens (rene.haentjens@intec.UGent.be)</li>
|
||||||
|
<li>Patrick Cool (patrick.cool@UGent.be)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Extensions and plugins</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Yannick Warnier (yannick.warnier@beeznest.com), </li>
|
||||||
|
<li>Patrick Cool (patrick.cool@UGent.be)</li>
|
||||||
|
<li>Many other contributors</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Forum tool</h2>
|
||||||
|
<ul>
|
||||||
|
<li>First version:</li>
|
||||||
|
<li>Adapted from PHPBB 1.4 (https://www.phpbb.com)</li>
|
||||||
|
<li>Modifications: Patrick Cool (patrick.cool@ugent.be)</li>
|
||||||
|
<li>Julio Montoya (gugli100@gmail.com)</li>
|
||||||
|
<li>Management of scoring of threads:</li>
|
||||||
|
<li>Christian Fasanando</li>
|
||||||
|
<li>Isaac Flores</li>
|
||||||
|
<li>Carlos Vargas</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Full-text search</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Initial version (based on MnoGoSearch):</li>
|
||||||
|
<li>Yannick Warnier</li>
|
||||||
|
<li>Second version (based on Xapian):</li>
|
||||||
|
<li>Diego Escalante Urrelo (+ occasional bugfixes)</li>
|
||||||
|
<li>Marco Villegas Vega (+ occasional bugfixes)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Groups</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Bart Mollet (bart.mollet@hogent.be</li>
|
||||||
|
</ul>
|
||||||
|
<h2>HTML_QuickForm</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Bart Mollet (bart.mollet@hogent.be) </li>
|
||||||
|
</ul>
|
||||||
|
<h2>Icons</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Icons for the messages: confirmation, error, normal and warning<br />
|
||||||
|
Icons used from the Crystal icon theme by Everaldo<br />
|
||||||
|
https://linuxcult.com</li>
|
||||||
|
<li>Other icons: Nuvola </li>
|
||||||
|
</ul>
|
||||||
|
<h2>Interface and CSS</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Julio Montoya (gugli100@gmail.com)</li>
|
||||||
|
<li>Noa Orizales Iglesias (noa@contidosdixitais.com)</li>
|
||||||
|
<li>Sandra Matthys</li>
|
||||||
|
<li>Wolfgang Schneider (webmaster@bibelcenter.de)</li>
|
||||||
|
<li>Patrick Cool (patrick.cool@UGent.be)</li>
|
||||||
|
<li>Rudy Hanson (rudy@cblue.be)</li>
|
||||||
|
<li>Noel Dieschburg (noel@cblue.be)</li>
|
||||||
|
</ul>
|
||||||
|
<h2>Installation procedure</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Olivier Brouckaert</li>
|
||||||
|
<li>Refactoring:</li>
|
||||||
|
<li>Evie Embrechts</li>
|
||||||
|
<li>Yannick Warnier (yannick.warnier@beeznest.com), including database upgrade mechanism</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Learning Path & SCORM </h2>
|
||||||
|
<ul>
|
||||||
|
<li>Alpha version by:</li>
|
||||||
|
<li>Patrick Cool (patrick.cool@UGent.be) </li>
|
||||||
|
<li>First version by:</li>
|
||||||
|
<li>Denes Nagy (darkden@evk.bke.hu) </li>
|
||||||
|
<li>Dokeos 1.8 version by</li>
|
||||||
|
<li>Yannick Warnier (yannick.warnier@beeznest.com)</li>
|
||||||
|
<li>Eric Marguin</li>
|
||||||
|
<li>Julian Prud'homme</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>LDAP</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Main code: University Jean Monnet of Saint Etienne</li>
|
||||||
|
<li>Updates and improvements:</li>
|
||||||
|
<li>Evie Embrechts</li>
|
||||||
|
<li>Yannick Warnier</li>
|
||||||
|
<li>Mustapha Alouani - Université Paris 1 (Sorbonne)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Link tool</h2>
|
||||||
|
<ul>
|
||||||
|
<li> Patrick Cool (patrick.cool@ugent.be)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Messages</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Original code written by:</li>
|
||||||
|
<li>Facultad de Matematicas, UADY (México):</li>
|
||||||
|
<li> Díaz Braga Alan Israel (bafles2@hotmail.com)</li>
|
||||||
|
<li>Menéndez Domínguez Victor Hugo (mdoming@uady.mx)</li>
|
||||||
|
<li>Torre Díaz Manuel</li>
|
||||||
|
<li>Tuk Sulú Walter Lorenzo (walt_30_ 1@hotmail.com)</li>
|
||||||
|
<li>Vargas Palma Rubén (thiefdp@hotmail.com)</li>
|
||||||
|
<li>Dokeos 1.8 integration and refactoring:</li>
|
||||||
|
<li> Evie Embrechts </li>
|
||||||
|
<li>Julio Montoya (gugli100@gmail.com)</li>
|
||||||
|
<li>Isaac Flores</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Metadata</h2>
|
||||||
|
<ul>
|
||||||
|
<li>René Haentjens (rene.haentjens@intec.ugent.be)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>My Agenda</h2>
|
||||||
|
<ul>
|
||||||
|
<li> Eric Remy</li>
|
||||||
|
<li> Toon Van Hoecke (toon.vanhoecke@ugent.be)</li>
|
||||||
|
<li> Patrick Cool (patrick.cool@ugent.be</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>PDF-files generation</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Based on mPDF code library (https://mpdf.bpm1.com/). Main author: Ian N Back</li>
|
||||||
|
<li>Adaptation for Chamilo 1.8.x: Ivan Tcholakov</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Platform administration</h2>
|
||||||
|
<ul>
|
||||||
|
<li>User management: Bart Mollet (bart.mollet@hogent.be)</li>
|
||||||
|
<li>Class management: Bart Mollet (bart.mollet@hogent.be)</li>
|
||||||
|
<li>Course management: </li>
|
||||||
|
<li>Platform announcements: Bart Mollet (bart.mollet@hogent.be)</li>
|
||||||
|
<li>Languages and platform settings (AWACS): Patrick Cool (patrick.cool@UGent.be)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Resource Linker</h2>
|
||||||
|
<ul>
|
||||||
|
<li> Patrick Cool (patrick.cool@ugent.be</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Statistics tool and tracking (event-based)</h2>
|
||||||
|
<ul>
|
||||||
|
<li> Based on ezBoo (https://www.ezboo.com)</li>
|
||||||
|
<li>Sebastien Piraux (piraux_seb@hotmail.com)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Reporting (user-based)</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Elixir Interactive https://www.elixir-interactive.com</li>
|
||||||
|
<li>Improvements:</li>
|
||||||
|
<li>Eric Marguin</li>
|
||||||
|
<li>Yannick Warnier</li>
|
||||||
|
<li>Julio Montoya through *many* revision cycles in Chamilo</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Single DB customisation</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Roger Hedlund (rhedlund@passagen.se)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Survey</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Patrick Cool</li>
|
||||||
|
<li>Julio Montoya (gugli100@gmail.com)</li>
|
||||||
|
<li>Yannick Warnier</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Test / Quizz Tool</h2>
|
||||||
|
<ul>
|
||||||
|
<li> Olivier Brouckaert (oli.brouckaert@dokeos.com)</li>
|
||||||
|
<li> Denes Nagy (hotpotatoes integration)</li>
|
||||||
|
<li> Eric Marguin </li>
|
||||||
|
<li> Julian Prud'homme</li>
|
||||||
|
<li>Julio Montoya (gugli100@gmail.com)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Wiki</h2>
|
||||||
|
<ul>
|
||||||
|
<li>First implementation as an extension (Cool Wiki): Patrick Cool</li>
|
||||||
|
<li>First integration into Dokeos/Chamilo and many improvements (including Google Maps integration): Juan Carlos Raña</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>Social Network</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Thanks to Universidad San Ignacio de Loyola, Lima for the sponsoring of this development</li>
|
||||||
|
<li>Julio Montoya (gugli100@gmail.com)</li>
|
||||||
|
<li>Isaac Flores</li>
|
||||||
|
<li>Christian Fasanando</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Platform group tool</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Thanks to Universidad San Ignacio de Loyola, Lima for the sponsoring of this development</li>
|
||||||
|
<li>Julio Montoya (gugli100@gmail.com)</li>
|
||||||
|
<li>Christian Fasanando</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>User Image</h2>
|
||||||
|
<ul>
|
||||||
|
<li> Miguel (miguel@cesga.es)</li>
|
||||||
|
<li> Patrick Cool(patrick.cool@ugent.be)</li>
|
||||||
|
<li> Fixes and improvements: </li>
|
||||||
|
<li> Yannick Warnier </li>
|
||||||
|
<li> Christian Fasanando</li>
|
||||||
|
<li> Juan Carlos Raña</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<h2>User tool, subscribe existing users</h2>
|
||||||
|
<ul>
|
||||||
|
<li> Elie Harfouche (elie at harfdesign dot com)</li>
|
||||||
|
<li> Roan Embrechts (roan.embrechts@vub.ac.be)</li>
|
||||||
|
<li> Bart Mollet (bart.mollet@hogent.be)</li>
|
||||||
|
<li> Julio Montoya (gugli100@gmail.com)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>(un)zip</h2>
|
||||||
|
<ul>
|
||||||
|
<li>PclZip library - Vincent Blavet (https://www.phpconcept.net)</li>
|
||||||
|
<li>Integration of adapted new versions: </li>
|
||||||
|
<li>Yannick Warnier</li>
|
||||||
|
<li>Ivan Tcholakov</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Virtual course support / Combined courses</h2>
|
||||||
|
<ul>
|
||||||
|
<li> Roan Embrechts (roan.embrechts@vub.ac.be)</li>
|
||||||
|
<li>Bart Mollet (bart.mollet@hogent.be)</li>
|
||||||
|
<li>(with thanks to Toon Van Hoecke and Olivier Cauberghe from Ghent University)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Web adjustable (admin) settings</h2>
|
||||||
|
<ul>
|
||||||
|
<li>brainstorming by:</li>
|
||||||
|
<li> Jan Bols</li>
|
||||||
|
<li> Patrick Cool (patrick.cool@ugent.be)</li>
|
||||||
|
<li> Roan Embrechts (roan.embrechts@vub.ac.be)</li>
|
||||||
|
<li> Toon Van Hoecke (toon.vanhoecke@ugent.be)</li>
|
||||||
|
<li>Implementation by:</li>
|
||||||
|
<li> Patrick Cool (patrick.cool@ugent.be)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Who is online in portal/course/session</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Patrick Cool (patrick.cool@UGent.be)</li>
|
||||||
|
<li>Eric Marguin</li>
|
||||||
|
<li>Yannick Warnier</li>
|
||||||
|
<li>Social network improvements: Julio Montoya (gugli100@gmail.com)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Web services</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Yannick Warnier</li>
|
||||||
|
<li>Christian Fasanando</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Conectivity with CMS (Drupal, Joomla)</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Fernando P. García</li>
|
||||||
|
<li>Marco Villegas Vega</li>
|
||||||
|
<li>Yannick Warnier</li>
|
||||||
|
<li>Furio Petrossi (for the hint on JFusion)</li>
|
||||||
|
<li>Carlos Vargas (for extending the JFusion plugin to Dokeos 1.8.6)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<a id="online-authoring"></a>
|
||||||
|
<h1>Online Authoring</h1>
|
||||||
|
<h2>HTML Editor</h2>
|
||||||
|
<ul>
|
||||||
|
<li>First integration: HTMLArea</li>
|
||||||
|
<li>Second integration: FCKEditor</li>
|
||||||
|
<li>Update to FCKEditor 2.6.2: Julio Montoya (gugli100@gmail.com)</li>
|
||||||
|
<li>Update to FCKEditor 2.6.6 and addition of other plugins: Ivan Tcholakov</li>
|
||||||
|
<li>ASCIIMathML-based formula rendering and ASCIIsvg-based mathematical graphics:
|
||||||
|
<ul>
|
||||||
|
<li>Peter Jipsen</li>
|
||||||
|
<li>David Lippman</li>
|
||||||
|
<li>Mauno Korpelainen for extending the symbol tables within the script ASCIIMathML.js</li>
|
||||||
|
<li>Ivan Tcholakov for porting code in Chamilo LMS</li>
|
||||||
|
<li>Furio Petrossi for advocacy, research and recommendations </li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Upgrade to CKeditor 4 in Chamilo 1.10.0</li>
|
||||||
|
</ul>
|
||||||
|
<h2>Drawing tool</h2>
|
||||||
|
<ul>
|
||||||
|
<li> SVG-edit integration: Juan Carlos Raña Trabado</li>
|
||||||
|
</ul>
|
||||||
|
<h2>Voice generator</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Integration audio services from Google, Pediaphon and vozMe: Juan Carlos Raña Trabado</li>
|
||||||
|
</ul>
|
||||||
|
<h2>Bitmap image editor</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Integration of Pixlr image editing services and photo retouching: Juan Carlos Raña Trabado</li>
|
||||||
|
</ul>
|
||||||
|
<h2>Voice recorder</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Nanogong integration: Juan Carlos Raña Trabado</li>
|
||||||
|
<li>Wami-recorder integration: Juan Carlos Raña Trabado</li>
|
||||||
|
</ul>
|
||||||
|
<h2>Webcam Clip</h2>
|
||||||
|
<ul>
|
||||||
|
<li>JPEGCam integration: Juan Carlos Raña Trabado</li>
|
||||||
|
</ul>
|
||||||
|
<h2>Shibboleth authentication, plugins, etc. - University of Geneva</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Laurent Opprecht</li>
|
||||||
|
<li>Nicolas Rod</li>
|
||||||
|
</ul>
|
||||||
|
<a id="translations"></a>
|
||||||
|
<h1>Translations</h1>
|
||||||
|
There are too many translators to list them all. Please check https://translate.chamilo.org <br />
|
||||||
|
|
||||||
|
<a id="documentation"></a>
|
||||||
|
<h1>Documentation</h1>
|
||||||
|
<ul>
|
||||||
|
<li>Yannick Warnier</li>
|
||||||
|
<li>Steve Miller</li>
|
||||||
|
<li>Anaël Boulier</li>
|
||||||
|
<li>Laura Guirao</li>
|
||||||
|
<li>José Garcia</li>
|
||||||
|
<li>Noa Orizales</li>
|
||||||
|
<li>Jerome Warnier</li>
|
||||||
|
<li>Arnaud Ligot</li>
|
||||||
|
<li>Andrew Lynn (alynn@strathclyde.ac.be)</li>
|
||||||
|
<li>Emmanuel Pecquet (emmanuel.pecquet@wanadoo.fr) </li>
|
||||||
|
<li>Nikolai Stiehl (nikolai.stiehl@web.de)</li>
|
||||||
|
<li>Isabel Deprez</li>
|
||||||
|
<li>Philippe Danckaert</li>
|
||||||
|
<li>Slawomir Gurdala</li>
|
||||||
|
<li>Dalton Piegas Simoni</li>
|
||||||
|
<li>Maria Jose Rodriges Malmierca</li>
|
||||||
|
<li>Roan Embrechts (roan.embrechts@vub.ac.be)</li>
|
||||||
|
<li>Hugues Peeters</li>
|
||||||
|
<li>René Haentjens</li>
|
||||||
|
<li>Arthur Portugal</li>
|
||||||
|
<li>Sergio Infante Montero, for (humble) technical documentation translation to Spanish</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<a id="special-thanks"></a>
|
||||||
|
<h1>Our special thanks also go to</h1>
|
||||||
|
(in no particular order - bug reporters are only listed when having contributed 4 reports or more)
|
||||||
|
|
||||||
|
Note that we are infinitely grateful to our translators, having made the spread of Chamilo to other cultures possible. Sadly, we aren't quite as organized as we would like, and we haven't been able to sort the real translators out from people having just registered on our translation portal. This is on our TO DO list, so please be just a little more patient. We know we can count on you! Thank you. Your efforts mean a lot to us!
|
||||||
|
<ul>
|
||||||
|
<li> Hubert Borderiou for various bugfixes</li>
|
||||||
|
<li> Philippe Béranger</li>
|
||||||
|
<li> Thomas Corthals (forum: Turboke)</li>
|
||||||
|
<li> Dietrich Van Damme (images)</li>
|
||||||
|
<li> Koen Heirbaut (xhtml) </li>
|
||||||
|
<li> Domingos de Freitas (forum: domifreitas)</li>
|
||||||
|
<li> Emmanuel Pecquet (forum: Emmanuel)</li>
|
||||||
|
<li> Furio Petrossi (forum: petrossi)</li>
|
||||||
|
<li> Mark (forum: Mark111)</li>
|
||||||
|
<li> Pablo Rey (prey@cesga.es)</li>
|
||||||
|
<li> Wolfgang Schneider (webmaster@bibelcenter.de) for bug reports from 1.6 to 1.8.8 and help with early CSS </li>
|
||||||
|
<li> Christophe Gesché (gesche@ipm.ucl.ac.be) aka Moosh</li>
|
||||||
|
<li> Hugues Peeters (peeters@ipm.ucl.ac.be)</li>
|
||||||
|
<li> Paolo Mioni</li>
|
||||||
|
<li> Diederik De Deckere</li>
|
||||||
|
<li> Eric Remy</li>
|
||||||
|
<li> Roel Visseren</li>
|
||||||
|
<li> Michel Moreau-Belliard for his supervision on dynamic LDAP import tool</li>
|
||||||
|
<li> Mustapha Alouani for his work on dynamic LDAP import tool</li>
|
||||||
|
<li> Simon Zalar for a patch to FCKeditor 2.2 allowing linking in FF3</li>
|
||||||
|
<li> Juan Valenzuela, for patch suggestions for random tests in D.1.8.6</li>
|
||||||
|
<li> Daniel Enrique Perales Gomez, for various bugfixes in various tools</li>
|
||||||
|
<li> Arthur Jonathan Portugal Guerrero, for his patient work on the technical documentation and his thorough testing of 1.8.6 features and implementing the first browser-based tests set</li>
|
||||||
|
<li> Michela Karina Mosquera Guardamino, for helping improve the visibility of Chamilo (and Dokeos before that) in the Latin American area, patiently answering crazy amounts of information requests and organizing great community events (Chamilo P@rty, Chamilo Users Day Perú, ...), and usability suggestions for LMS 1.9</li>
|
||||||
|
<li> Jhon Rhoos Hinojosa Portuguez, for various bugfixes in 1.8.6</li>
|
||||||
|
<li> Carlos Vargas (litox84@hotmail.com), for a huge amount of bugfixes in 1.8.6 and a few bug reports in LMS 1.9</li>
|
||||||
|
<li> Jan Derriks- various bugfixes in 1.8.7 and very accurate bug reporting contributions from 1.8.7 to 1.9.4</li>
|
||||||
|
<li> Ronny Velasquez, for a series of bugfixes and improvements in 1.8.6</li>
|
||||||
|
<li> Ricardo Rodriguez, for implementing the first set of unit tests in 1.8.6, and manual testing and reporting</li>
|
||||||
|
<li> Franco Cedillo, for minor bugfixes in 1.8.6</li>
|
||||||
|
<li> Ruben Pereira, Ana Elena Olivera and all the kids from the Joaquin Sant'Anna school for being an inspiration to all of us.</li>
|
||||||
|
<li> Wolfgang Schneider for various bugfixes in various tools</li>
|
||||||
|
<li> Carlos Brolo for reporting bugs for 1.8.7</li>
|
||||||
|
<li> Hubert Borderiou - various bugfixes in 1.8.7 and very accurate bug reporting contributions </li>
|
||||||
|
<li> David Auzeine- various bugfixes in 1.8.7</li>
|
||||||
|
<li> Anna Frovola for reporting bugs for 1.8.7</li>
|
||||||
|
<li> Omar Arino (omar.arino _at__ linuxdojo.com.ar) - various bugfixes in 1.8.7.1</li>
|
||||||
|
<li> Claire Thibault (claire.thibault _at__ ac-orleans-tours.fr) - bugfix in 1.8.7.1</li>
|
||||||
|
<li> Jean Robert Opgenort (jeanrobert __a_t_ opgenort dot nl) - very accurate score tracking bug reports in 1.8.7.1</li>
|
||||||
|
<li> Anaël Boulier (intern at https://www.2i2l.fr), for his excelent work of writing user documentation in French for 1.8.7</li>
|
||||||
|
<li> Alberto Torreblanca for help fixing bugs during code sprint 2011-01-16 and learning path mini-panel implementation, and bug reports in LMS 1.9.*</li>
|
||||||
|
<li> Joel Porras for help fixing bugs during code sprint 2011-01-16</li>
|
||||||
|
<li> Simon Legner for improvements suggestions (first one being #1538)</li>
|
||||||
|
<li> Jean Karim Bockstael, for patch to avoid hardcoded db_glue (commit 13878)</li>
|
||||||
|
<li> Marco Sousa, for additional reports elements (and translation to Brazilian) for 1.8.8 and webservices for Android app in 1.8.8.4</li>
|
||||||
|
<li> Olivier Corre, Lily Ni and Thorsten Giertz for translation to Simplified Chinese and several bug reports to 1.8.8 and 1.8.8.2 and bug reports for LMS 1.9.*</li>
|
||||||
|
<li> Alain Deschênes, for numerous bug reports to 1.8.8 and LMS 1.9.*</li>
|
||||||
|
<li> Peter Van den Broek, for bug reports to 1.8.8</li>
|
||||||
|
<li> Dominique Colombani, for bug report to 1.8.8</li>
|
||||||
|
<li> Hubert Borderiou, for bug reports to 1.8.8, reports for 1.8.8.4 and social marketing, and important contributions to 1.9 (now considered core contributor)</li>
|
||||||
|
<li> Jose Ramos Garces, for bug reports to 1.8.8</li>
|
||||||
|
<li> André Boivin, for considerable number of bug reports and patches to HotPotatoes system and more bug reports in LMS 1.9.*</li>
|
||||||
|
<li> Stéphane Lofreda, for bug reports to 1.8.8</li>
|
||||||
|
<li> Marko Kastelic, for bug reports to 1.8.8 & 1.9</li>
|
||||||
|
<li> Jorge Frisancho, USIL, for several small improvements to usability in 1.8.8 </li>
|
||||||
|
<li> Jonas Fangstrom, for bug reports to 1.8.8</li>
|
||||||
|
<li> Jeroen Brussich, for bug reports to 1.8.8</li>
|
||||||
|
<li> Antonio Salinas, for bug reports to 1.8.8</li>
|
||||||
|
<li>Jose Abuin Mosquera, for bug reports to 1.8.8 and LMS 1.9.*</li>
|
||||||
|
<li>Tony Taylor, for bug reports to 1.8.8</li>
|
||||||
|
<li>Omar Arino, for bug reports to 1.8.8</li>
|
||||||
|
<li>Cécile Deruy, for bug reports to 1.8.8</li>
|
||||||
|
<li>Simon Legner, for bug reports to 1.8.8</li>
|
||||||
|
<li>Patrick Roth, for both reporting bugs and bringing vision to the project</li>
|
||||||
|
<li>Nick Van Loocke, for bug reports to 1.8.8</li>
|
||||||
|
<li>Erik Das (FKS), for bug reports to 1.8.8</li>
|
||||||
|
<li>Marc De Caluwé, for patches to 1.8.8.4</li>
|
||||||
|
<li>Alberto Montes, Contidos Dixitais, for CSS "sport_red" in 1.9</li>
|
||||||
|
<li>Bart Mollet, Hogeschool Gent, for patches in 1.6 & 1.8</li>
|
||||||
|
<li>Kristof Van Steenkiste & Sebastien Jacobs (initial Reservation plugin, 2007)</li>
|
||||||
|
<li>Codesprint Lima 2012<ul><li>Sheyla Balandra</li><li>Michela Mosquera</li><li>Fernando P. García</li><li>Alberto Torreblanca</li></ul></li>
|
||||||
|
<li>Yoselyn Castillo, BeezNest, Cuba, for a few bugfixes in LMS 1.9</li>
|
||||||
|
<li>Anne-Lise Lambin, CBlue, Belgium, for a few new admin features in LMS 1.9</li>
|
||||||
|
<li>Bas Wijnen, The Netherlands, for a series of bug reports & contributions in LMS 1.9.*</li>
|
||||||
|
<li>José García, NoSoloRed, for bug reports in LMS 1.9.*</li>
|
||||||
|
<li>Laura Guirao, NoSoloRed, for bug reports in LMS 1.9.*</li>
|
||||||
|
<li>Philippe Nicolas, ESIAJ, for bug reports in LMS 1.9.*</li>
|
||||||
|
<li>Valérie Gérard, ESIAJ, for bug and usability reports in LMS 1.9</li>
|
||||||
|
<li>Julio Bonifacio Aliaga, BeezNest, for a few fixes in LMS 1.9</li>
|
||||||
|
<li>Mic Yu, for bug reports in LMS 1.9</li>
|
||||||
|
<li>Melissa Cadelina, for bug reports in LMS 1.9</li>
|
||||||
|
<li>Robert Parlett, for bug reports in LMS 1.9</li>
|
||||||
|
<li>Henry Caballero, Peru, for bug reports in LMS 1.9</li>
|
||||||
|
<li>Stijn Michels, for bug reports in LMS 1.9.*</li>
|
||||||
|
<li>Ph A, France, for anonymous bug reports in LMS 1.9</li>
|
||||||
|
<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>Fausto Puppo, for bug reports and testing on exercises and learning paths in LMS 1.9.4</li>
|
||||||
|
<li>Carlos del Solar, for bug reports and testing on exercises and learning paths in LMS 1.9.4</li>
|
||||||
|
<li>Alexander Hu, for bug reports in LMS 1.9.4</li>
|
||||||
|
<li>Fernando Muñoz (occasionally via Secunia SVCRP) for multiple security vulnerability reports in Chamilo 1.8-1.9</li>
|
||||||
|
<li>Gaëtan Frenoy, for efficient and well-coded updates to Drupal module and the integration with Drupal Ubercart in 1.9.8</li>
|
||||||
|
<li>Francis Gonzales Tello, for a first draft of the OpenMeetings plugin for 1.9.8</li>
|
||||||
|
<li>Maxim Solodovnik, for his help in the development of the OpenMeetings plugin for 1.9.8 - see https://issues.apache.org/jira/browse/OPENMEETINGS-802</li>
|
||||||
|
<li>Hector Lacherre, Alan García, Genesis Lopez and Kenny Rodas, for their work extending Chamilo at USIL and letting us share the advance (notably for exercises tool and the tickets plugin) in 1.8 and 1.9</li>
|
||||||
|
<li>Adolfo Igualada Martínez, for changes to the glossary to PDF export for subdir installs in 1.9.8 (#6929)</li>
|
||||||
|
<li>Kevin Levron, for several contributions to Chamilo LMS 1.9.*</li>
|
||||||
|
<li>Cesar Perales, for several contributions to Chamilo LMS 1.9.*</li>
|
||||||
|
<li>Jérémie Grepilloux, for team work on getting issues reported for the University of Grenoble for 1.9.*</li>
|
||||||
|
<li>Guillaume Fosset, Aix-Marseilles Academy, for issues reporting and improvement suggestions in 1.9.*</li>
|
||||||
|
<li>Laurent Goossens, for Encora, Antwerp, for issues reporting and improvement suggestions in 1.9.* (most notably on the assignments tool)</li>
|
||||||
|
<li>Diego Escalante, Peru, for issues reporting and fixes in 1.9.*</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>
|
||||||
|
|
||||||
|
<a id="organisations"></a>
|
||||||
|
<h1>Contributing organizations (only recorded since 2010)</h1>
|
||||||
|
These institutions and companies have either contributed to a better free Chamilo LMS project directly or through hiring services to contribute to Chamilo from an official provider:
|
||||||
|
<ul>
|
||||||
|
<li>Académie d'Aix-Marseilles, France</li>
|
||||||
|
<li>ACTA VZW, Belgium</li>
|
||||||
|
<li>agence-codecouleurs.fr, France</li>
|
||||||
|
<li>APA e-Learning, Spain</li>
|
||||||
|
<li>BeezNest Belgium, Brussels, Belgium</li>
|
||||||
|
<li>BeezNest Latino, Lima, Peru</li>
|
||||||
|
<li>Commission Scolaire des Hautes-Rivières, project TIC-FP, Canada</li>
|
||||||
|
<li>Contidos Dixitais, Lugo, Spain</li>
|
||||||
|
<li>Costengineering.eu, The Netherlands</li>
|
||||||
|
<li>Encora/HBO5, Antwerp, Belgium</li>
|
||||||
|
<li>EPSU, Genève, Switzerland</li>
|
||||||
|
<li>ESIAJ, Namur, Belgium</li>
|
||||||
|
<li>Formascience, Strasbourg, France</li>
|
||||||
|
<li>Gobierno Regional del Callao, Callao, Peru</li>
|
||||||
|
<li>ICPNA, Peru</li>
|
||||||
|
<li>Imag'in, Nouméa, New Caledony</li>
|
||||||
|
<li>IPYS, Lima, Peru</li>
|
||||||
|
<li>Ministerio de Educación (UCG), Peru (with financial support from Canada through GRADE - https://www.grade.org.pe/)</li>
|
||||||
|
<li>Ministerio de Salud, Peru (with financial support from the Belgian Cooperation - https://btcctb.org)</li>
|
||||||
|
<li>NoSoloRed, Spain</li>
|
||||||
|
<li>Ricoh, Panama</li>
|
||||||
|
<li>Rimac Seguros, Peru</li>
|
||||||
|
<li>Universidad San Ignacio de Loyola, Lima, Peru</li>
|
||||||
|
<li>Universidad Tecnológica del Perú, Lima, Peru</li>
|
||||||
|
<li>Universidad de Tocantins, Tocantins, Brazil</li>
|
||||||
|
<li>Université de Genève, Geneva, Switzerland</li>
|
||||||
|
<li>Université de Grenoble, Grenoble, France</li>
|
||||||
|
<li>Université de Pau, Pau, France</li>
|
||||||
|
<li>Unidad Editorial, Spain</li>
|
||||||
|
<li>Universidad Autónoma, Chile</li>
|
||||||
|
<li>Vall d'Hebron Hospital, Barcelona, Spain</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<a id="deprecated-developments"></a>
|
||||||
|
<h1>Deprecated developments</h1>
|
||||||
|
<ul>
|
||||||
|
<li>Rich Text Editor (WYSIWYG html editor), Kevin Roth: now removed and replaced by HTMLarea</li>
|
||||||
|
<li>HTMLarea (WYSIWYG html editor): now removed and replaced by FCKeditor</li>
|
||||||
|
<li>Table of contents: now removed, replaced by learning path</li>
|
||||||
|
<li>Facultad de Matematicas, UADY (México) (original asynchronous Message plugin, was later dumped)</li>
|
||||||
|
<li>Reservations tool</li>
|
||||||
|
</ul>
|
||||||
|
<br />
|
||||||
|
<a id="association"></a>
|
||||||
|
<h1>The Chamilo Association</h1>
|
||||||
|
The Chamilo Association is very present inside the organizational structure of the Chamilo community, yet it tries to avoid interfering in the development of the software. It acts as a neutral organization supporting the development of the Chamilo software, and improving its popularity.
|
||||||
|
To know more about the Chamilo Association and how to get involve, <a href="https://www.chamilo.org/en/association" target="_blank" rel="noopener noreferrer">> start by reading its presentation <</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
<a href="https://validator.w3.org/check?uri=referer"><img src="//www.w3.org/Icons/valid-xhtml10-blue" alt="Valid XHTML 1.0 Transitional" style="margin: 1em; float: right;" height="31" width="88" /></a>
|
||||||
|
<a href="https://jigsaw.w3.org/css-validator/">
|
||||||
|
<img src="//jigsaw.w3.org/css-validator/images/vcss-blue" style="margin: 1em; float: right;" alt="Valid CSS" />
|
||||||
|
</a>
|
||||||
|
</body></html>
|
||||||
12
documentation/default.css
Normal file
12
documentation/default.css
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
body {
|
||||||
|
padding-bottom: 40px;
|
||||||
|
padding-top: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1, h2, h3 {
|
||||||
|
border-bottom: 1px solid #DDDDDD;
|
||||||
|
box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
|
||||||
|
padding-bottom: 10px;
|
||||||
|
line-height: 1;
|
||||||
|
margin: 20px 0px 20px 0px;
|
||||||
|
}
|
||||||
156
documentation/dependencies.html
Normal file
156
documentation/dependencies.html
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<title>Chamilo Server Dependencies</title>
|
||||||
|
<link rel="stylesheet" href="../web/assets/bootstrap/dist/css/bootstrap.css" type="text/css" media="screen,projection" />
|
||||||
|
<link rel="stylesheet" href="default.css" type="text/css" media="screen,projection" />
|
||||||
|
<link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav class="navbar navbar-default navbar-fixed-top">
|
||||||
|
<div class="container">
|
||||||
|
<div class="navbar-header">
|
||||||
|
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
|
||||||
|
<span class="sr-only">Toggle navigation</span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
</button>
|
||||||
|
<a class="navbar-brand" href="#">Chamilo - Documentation</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="collapse navbar-collapse">
|
||||||
|
<ul class="nav navbar-nav">
|
||||||
|
<li><a href="index.html">Home</a></li>
|
||||||
|
<li><a href="readme.html">About</a></li>
|
||||||
|
<li><a href="license.html">License</a></li>
|
||||||
|
<li><a href="credits.html">Credits</a></li>
|
||||||
|
<li class="active"><a href="dependencies.html">Dependencies</a></li>
|
||||||
|
<li><a href="changelog.html">Changelog</a></li>
|
||||||
|
</ul>
|
||||||
|
</div><!--/.nav-collapse -->
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<div class="container">
|
||||||
|
<ul class="breadcrumb">
|
||||||
|
<li>
|
||||||
|
<a href="index.html">Documentation</a>
|
||||||
|
<span class="divider">/</span>
|
||||||
|
</li>
|
||||||
|
<li>Dependencies</li>
|
||||||
|
</ul>
|
||||||
|
<h1>Chamilo - Server Dependencies</h1>
|
||||||
|
|
||||||
|
<h2>Introduction</h2>
|
||||||
|
<p>In the ever-evolving web environment, Chamilo has to rely on
|
||||||
|
state-of-the-art third-party software in order to provide you with useful and
|
||||||
|
practical features. Some of this third-party software usually come bundled with
|
||||||
|
your operating system, but some don't. This means that if that software is
|
||||||
|
not installed on your Chamilo server, along with Chamilo, you might not enjoy
|
||||||
|
the best possible experience with your Chamilo platform. To avoid this problem,
|
||||||
|
most of the software we used is bundled into a typical Chamilo installation.</p>
|
||||||
|
<p>
|
||||||
|
However, if such a third-party software is too big to be included, or if it
|
||||||
|
doesn't make sense to include it for whatever reason, you must make sure it is
|
||||||
|
installed on your system. This is the goal of this list: to help you keep a
|
||||||
|
track of what software is needed and, as much as possible, where to get the
|
||||||
|
required information to install it.</p>
|
||||||
|
|
||||||
|
<a id="dependencies"></a>
|
||||||
|
<h2>Dependencies - client-side</h2>
|
||||||
|
We recommend using HTML5-compatible technology.
|
||||||
|
<ul>
|
||||||
|
<li>PC with a minimum of 512MB or any tablet or smartphone</li>
|
||||||
|
<li>We recommend a Pentium-I as a minimum processor capability for PCs</li>
|
||||||
|
<li>Works on Windows 8 and later versions, Linux (any version with a graphical interface), Mac OSX (any version), FreeBSD, Android, iOS and pretty much any other operating system with a graphical interface you might think about</li>
|
||||||
|
<li>Any modern browser (IE10 and inferior *excluded*).</li>
|
||||||
|
<li>Optional: Flash plugin (only required if WebRTC is not supported by your browser)</li>
|
||||||
|
<li>Optional: Java applet capability (only required for some plugins)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Dependencies - server-side</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Apache 2+</li>
|
||||||
|
<li>PHP 7.4. PHP 8.1 should be supported at more than 95%, but we lack elements of infrastructure to check it fully and thoroughly.</li>
|
||||||
|
<li>MySQL 5.6+ or any version of MariaDB database server</li>
|
||||||
|
<li>php-curl</li>
|
||||||
|
<li>php-dom (usually available by default)</li>
|
||||||
|
<li>php-fileinfo (usually available by default)</li>
|
||||||
|
<li>php-gd or php-imagick (for images resizing/cropping)</li>
|
||||||
|
<li>php-intl (for international behaviour support)</li>
|
||||||
|
<li>php-json</li>
|
||||||
|
<li>php-mbstring</li>
|
||||||
|
<li>php-mysql</li>
|
||||||
|
<li>php-soap (for web services)</li>
|
||||||
|
<li>php-xml</li>
|
||||||
|
<li>php-zip</li>
|
||||||
|
<li>php-ldap (only required for connection to an LDAP server)</li>
|
||||||
|
</ul><br />
|
||||||
|
<a id="included_dependencies"></a>
|
||||||
|
<h2>Included Dependencies</h2>
|
||||||
|
<ul>
|
||||||
|
<li>EZpdf and MPDF</li>
|
||||||
|
<li>CKEditor (previously FCKeditor, previously HTMLArea) </li>
|
||||||
|
<li>FormValidator (own version)</li>
|
||||||
|
<li>iCalCreator</li>
|
||||||
|
<li>kSes</li>
|
||||||
|
<li>mathjax</li>
|
||||||
|
<li>MIMETex</li>
|
||||||
|
<li>MP3Player</li>
|
||||||
|
<li>Mediaplayer</li>
|
||||||
|
<li>PCLZip</li>
|
||||||
|
<li>PEAR::HTML_Common</li>
|
||||||
|
<li>PEAR::HTML_QuickForm</li>
|
||||||
|
<li>PEAR::HTML_Table</li>
|
||||||
|
<li>PEAR::OLE</li>
|
||||||
|
<li>PEAR::Pager</li>
|
||||||
|
<li>PEAR::Spreadsheet_Excel_Writer</li>
|
||||||
|
<li>PHPMailer</li>
|
||||||
|
<li>WCAG_Rendering</li>
|
||||||
|
<li>xajax</li>
|
||||||
|
<li>jQuery</li>
|
||||||
|
<li>Others (see composer.json)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Extra features dependencies - server-side</h2>
|
||||||
|
|
||||||
|
Chamilo LMS is a very complex software suite, and some of its components wil
|
||||||
|
only work when some specific server-side libraries are installed. The names of
|
||||||
|
the libraries below are taken from a Debian/Ubuntu installation, so you might
|
||||||
|
need to adapt these if you are installing on Windows, Mac or another Linux
|
||||||
|
distribution.<br />
|
||||||
|
Please note that, as for the rest of free software, we are NOT giving or
|
||||||
|
implying any warranty of any kind that this will work on your system, even on
|
||||||
|
the intended Debian/Ubuntu systems. You should take your own precautions to
|
||||||
|
ensure all components are installed by an expert in the field.<br />
|
||||||
|
<ul>
|
||||||
|
<li>Chamilo Rapid (ex Oogie(TM))
|
||||||
|
<ul>
|
||||||
|
<li>libreoffice</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Audio recording (generate mp3 from wav)
|
||||||
|
<ul>
|
||||||
|
<li>libav-tools libavcodec-extra-53 *or* ffmpeg on more recent distributions</li>
|
||||||
|
<li>libmp3lame0</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>BigBlueButton videoconference
|
||||||
|
<ul>
|
||||||
|
<li>bigbluebutton</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Resources sequencing
|
||||||
|
<ul>
|
||||||
|
<li>graphviz (only required for resources sequencing - for sessions etc)</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<hr />
|
||||||
|
<a href="https://validator.w3.org/check?uri=referer"><img src="//www.w3.org/Icons/valid-xhtml10-blue" alt="Valid XHTML 1.0 Transitional" style="margin: 1em; float: right;" height="31" width="88" /></a>
|
||||||
|
<a href="https://jigsaw.w3.org/css-validator/">
|
||||||
|
<img src="//jigsaw.w3.org/css-validator/images/vcss-blue" style="margin: 1em; float: right;" alt="Valid CSS" />
|
||||||
|
</a>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
85
documentation/index.html
Normal file
85
documentation/index.html
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<title>Chamilo</title>
|
||||||
|
<link rel="stylesheet" href="../web/assets/bootstrap/dist/css/bootstrap.css" type="text/css" media="screen,projection" />
|
||||||
|
<link rel="stylesheet" href="default.css" type="text/css" media="screen,projection" />
|
||||||
|
<link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav class="navbar navbar-default navbar-fixed-top">
|
||||||
|
<div class="container">
|
||||||
|
<div class="navbar-header">
|
||||||
|
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
|
||||||
|
<span class="sr-only">Toggle navigation</span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
</button>
|
||||||
|
<a class="navbar-brand" href="#">Chamilo - Documentation</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="collapse navbar-collapse">
|
||||||
|
<ul class="nav navbar-nav">
|
||||||
|
<li class="active"><a href="index.html">Home</a></li>
|
||||||
|
<li ><a href="readme.html">About</a></li>
|
||||||
|
<li><a href="license.html">License</a></li>
|
||||||
|
<li><a href="credits.html">Credits</a></li>
|
||||||
|
<li ><a href="dependencies.html">Dependencies</a></li>
|
||||||
|
<li><a href="changelog.html">Changelog</a></li>
|
||||||
|
</ul>
|
||||||
|
</div><!--/.nav-collapse -->
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="hero-unit">
|
||||||
|
<h1>Chamilo 1.11 - Documentation</h1>
|
||||||
|
<h2>Installation guides</h2>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="installation_guide.html">English installation guide</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="installation_guide_es_ES.html">Guía de instalacion en español (puede ser ligeramente desactualizada)</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="installation_guide_fr_FR.html">Guide d'installation en français (pourrait être légèrement désactualisé)</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="installation_guide_it_IT.html">Italian installation guide (outdated)</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h2>User guides</h2>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="https://docs.chamilo.org/">English manuals for teachers, admins and developers</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://docs.chamilo.org/v/1.11.x-es">Guías para profesores, para administradores y para desarrolladores en español</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://docs.chamilo.org/v/1.11.x-fr">Guides pour professeurs/tuteurs et pour administrateurs en français</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://chamilo.org/forum">Chamilo Forum</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h2>Contribute</h2>
|
||||||
|
|
||||||
|
<p> Are you interested in translating the installation guide to your own language? The best way to proceed is to ask us on the <a href="http://forum.chamilo.org">Chamilo forum</a>
|
||||||
|
for the latest version – there may be updates to the guide since
|
||||||
|
this version was released – and send new translations off to the <a href="mailto:translation@chamilo.com">translation@chamilo.com</a> email address.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
<a href="http://validator.w3.org/check?uri=referer"><img src="//www.w3.org/Icons/valid-xhtml10-blue" alt="Valid XHTML 1.0 Transitional" style="margin: 1em; float: right;" height="31" width="88" /></a>
|
||||||
|
<a href="http://jigsaw.w3.org/css-validator/">
|
||||||
|
<img src="//jigsaw.w3.org/css-validator/images/vcss-blue" style="margin: 1em; float: right;" alt="Valid CSS" />
|
||||||
|
</a>
|
||||||
|
</body></html>
|
||||||
1051
documentation/installation_guide.html
Normal file
1051
documentation/installation_guide.html
Normal file
File diff suppressed because it is too large
Load Diff
1183
documentation/installation_guide_es_ES.html
Normal file
1183
documentation/installation_guide_es_ES.html
Normal file
File diff suppressed because it is too large
Load Diff
1059
documentation/installation_guide_fr_FR.html
Normal file
1059
documentation/installation_guide_fr_FR.html
Normal file
File diff suppressed because it is too large
Load Diff
520
documentation/installation_guide_it_IT.html
Normal file
520
documentation/installation_guide_it_IT.html
Normal file
@@ -0,0 +1,520 @@
|
|||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<title>Guida di installazione di Chamilo LMS</title>
|
||||||
|
<link rel="stylesheet" href="../web/assets/bootstrap/dist/css/bootstrap.css" type="text/css" media="screen,projection" />
|
||||||
|
<link rel="stylesheet" href="default.css" type="text/css" media="screen,projection" />
|
||||||
|
<link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav class="navbar navbar-default navbar-fixed-top">
|
||||||
|
<div class="container">
|
||||||
|
<div class="navbar-header">
|
||||||
|
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
|
||||||
|
<span class="sr-only">Toggle navigation</span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
</button>
|
||||||
|
<a class="navbar-brand" href="#">Chamilo - Documentation</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="collapse navbar-collapse">
|
||||||
|
<ul class="nav navbar-nav">
|
||||||
|
<li class="active"><a href="index.html">Home</a></li>
|
||||||
|
<li ><a href="readme.html">About</a></li>
|
||||||
|
<li><a href="license.html">License</a></li>
|
||||||
|
<li><a href="credits.html">Credits</a></li>
|
||||||
|
<li ><a href="dependencies.html">Dependencies</a></li>
|
||||||
|
<li><a href="changelog.html">Changelog</a></li>
|
||||||
|
</ul>
|
||||||
|
</div><!--/.nav-collapse -->
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
<h1>Guida di installazione di Chamilo LMS 1.9</h1>
|
||||||
|
<p class="p1"><span class="s1">For more up-to-date guides, please check the <a href="installation_guide.html">english version of this guide</a></span></p>
|
||||||
|
<p class="p1"><span class="s1">Grazie per aver scaricato Chamilo</span></p>
|
||||||
|
<ul>
|
||||||
|
<li class="li2"><span class="s1">Testa le funzionalità di Chamilo nel <a href="https://campus.chamilo.org/"><span class="s2">Free Campus</span></a></span></li>
|
||||||
|
</ul>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p1"><span class="s1">Questa guida spiega come installare Chamilo FREE. Per favore leggi attentamente questa guida prima di procedere all'installazione.</span></p>
|
||||||
|
<p>English: Get back to the <a href="installation_guide.html">English version of the installation guide</a>.</p>
|
||||||
|
<p>Spanish: También puede leer <a href="installation_guide_es_ES.html">esta guía de instalación en español</a>.</p>
|
||||||
|
<p>French: Vous pouvez aussi lire <a href="installation_guide_fr_FR.html">ce guide d'installation en français</a>.</p>
|
||||||
|
|
||||||
|
<p class="p4"><span class="s1">Contenuti</span></p>
|
||||||
|
<ol class="ol1">
|
||||||
|
<li class="li2"><span class="s1">Pre-requisiti</span></li>
|
||||||
|
<li class="li2"><span class="s1">Installazione di Chamilo LMS</span></li>
|
||||||
|
<li class="li2"><span class="s1">Upgrade da una versione precedente di Chamilo/Dok€os</span></li>
|
||||||
|
<li class="li2"><span class="s1">Troubleshooting</span></li>
|
||||||
|
<li class="li2"><span class="s1">Sezione Administrazione</span></li>
|
||||||
|
<li class="li2"><span class="s1">LDAP </span></li>
|
||||||
|
<li class="li2"><span class="s1">Formule matematiche con LaTeX</span></li>
|
||||||
|
<li class="li2"><span class="s1">Formule matematiche con ASCIIMathML</span></li>
|
||||||
|
<li class="li2"><span class="s1">Formule matematiche con Wiris MathType</span></li>
|
||||||
|
<li class="li2"><span class="s1">Indicizzazione Full-Text con Xapian</span></li>
|
||||||
|
<li class="li2"><span class="s1">Chamilo Rapid - sistema di conversione PPT</span></li>
|
||||||
|
<li class="li2"><span class="s1">Impostare attività temporizzate</span></li>
|
||||||
|
<li class="li2"><span class="s1">Cambiare l'ordine cognome/nome nella lingua utilizzata</span></li>
|
||||||
|
</ol>
|
||||||
|
<p class="p5"><span class="s1"></span><br></p>
|
||||||
|
<p class="p5"><span class="s1"></span><br></p>
|
||||||
|
<p class="p6"><span class="s1">------------------------------------------</span></p>
|
||||||
|
<p class="p7"><span class="s1"></span><br></p>
|
||||||
|
<p class="p7"><span class="s1"></span><br></p>
|
||||||
|
<ol class="ol1">
|
||||||
|
<li class="li6"><span class="s1">Pre-requisiti</span></li>
|
||||||
|
</ol>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1"><b>Chamilo</b> può essere installato indifferentemente su server Windows, Linux, Mac OS X e Unix. Tuttavia raccomandiamo l’utilizzo di server Linux per sfruttarne al meglio le caratteristiche di flessibilità, controllo remoto e scalabilità.</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1"><b>Chamilo</b> è principalmente un <b>LMS (Learning Management System)</b> che gira sulla piattaforma composta da <b>Apache 2.2+</b>, <b>MySQL 5.6+ (o MariaDB</b>) e <b>PHP 7.4</b>, meglio nota come piattaforma <b>AMP</b>.</span></p>
|
||||||
|
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">Tutti questi software sono gratuiti e liberamente scaricabili.</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">Per eseguire <b>Chamilo LMS</b> sul tuo server, devi installare WAMP, LAMP o MAMP:</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<ul>
|
||||||
|
<li class="li2"><span class="s1">per installare <b>WAMP</b> (AMP su Windows), raccomandiamo XAMPP</span></li>
|
||||||
|
<li class="li2"><span class="s1">per installare <b>LAMP</b> (AMP su Linux), utilizza il Package Manager della tua distribuzione linux preferita (Synaptic, RPMFinder, etc.). Per esempio su un server Ubuntu utilizza Shell o Synaptic seguendo la Ubuntu Guide on Apache e le sezioni che seguono di questa guida.</span></li>
|
||||||
|
<li class="li2"><span class="s1">per installare <b>MAMP</b> (AMP su Mac OS X), fai riferimento al sito ufficiale di MAMP</span></li>
|
||||||
|
<li class="li2"><span class="s1">assicurati di verificare la pagina delle dipendenze se hai bisogno di sapere con precisione quali sono i requisiti minimi.</span></li>
|
||||||
|
</ul>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1"><b>Database Server MySQL o MariaDB</b></span></p>
|
||||||
|
<p class="p2"><span class="s1">Ti servono le credenziali di accesso (login e password) per poter gestire e creare un database. Tipicamente la configurazione di default su computer locali ti consente di connetterti al database manager come utente root con password vuota. E’ strettamente consigliato di cambiare la password e di definire un utente con accesso limitato ad uno specifico database. Fate riferimento alla documentazione ufficiale di MySQL e di MariaDB per effettuare queste operazioni.</span></p>
|
||||||
|
<p class="p2"><span class="s1">Si fa presente che questa procedura è stata enormemente semplificata dalla versione 1.9 di Chamilo, in quanto precedentemente si prevedeva di scegliere tra numerosi database oppure un unico database deprecato.</span></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p6"><span class="s1">2. Installazione di Chamilo LMS</span></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<ol class="ol1">
|
||||||
|
<li class="li2"><span class="s1">Fare il download di Chamilo LMS</span></li>
|
||||||
|
<li class="li2"><span class="s1">Effettuare l’unzip</span></li>
|
||||||
|
<li class="li2"><span class="s1">Copiare la cartella Chamilo nella tua cartella web sul server Apache. Potrebbe essere C:\xampp\htdocs\ su un server Windows oppure /var/www/html (o /var/www/chamilo) su un server Linux</span></li>
|
||||||
|
<li class="li2"><span class="s1">Apri il tuo browser web (Internet Explorer, Firefox, Chrome,etc.) e digita <a href="http://localhost/chamilo/"><span class="s2">http://localhost/chamilo/</span></a> se stai facendo un’installazione in locale oppure <a href="https://www.dominio.com/chamilo/"><span class="s2">https://www.dominio.com/chamilo/</span></a> se stai facendo una installazione su un server remoto. Raccomandiamo di definire uno specifico Virtual Host per questa installazione se hai le competenze tecniche per poterlo fare</span></li>
|
||||||
|
<li class="li2"><span class="s1">Segui il processo di installazione web Puoi accettare tutti i valori di default. Considera la possibilità di cambiare la password di amministratore e di ricordartela!</span></li>
|
||||||
|
</ol>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">Le seguenti cartelle devono essere leggibili (readable), scrivibili (writeable) ed eseguibili (executable) dal tuo server web. Questo non richiede tipicamente azioni specifiche sui server Windows, mentre richiede un “chmod” sui server Linux e Mac. Segui le istruzioni che seguono.</span></p>
|
||||||
|
<p class="p9"><span class="s3">Sostituisci </span><span class="s1">[chamilo] con la cartella dove hai posizionato i file di installazione di chamilo:</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<ul>
|
||||||
|
<li>[chamilo]/app/config/</li>
|
||||||
|
<li>[chamilo]/app/upload/users/</li>
|
||||||
|
<li>[chamilo]/app/upload/sessions/</li>
|
||||||
|
<li>[chamilo]/app/upload/courses/</li>
|
||||||
|
<li>[chamilo]/app/cache/</li>
|
||||||
|
<li>[chamilo]/app/courses/</li>
|
||||||
|
<li>[chamilo]/app/home/</li>
|
||||||
|
<li>[chamilo]/app/logs/</li>
|
||||||
|
<li>[chamilo]/main/default_course_document/images/</li>
|
||||||
|
</ul>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">Opzionalmente puoi fare lo stesso alle seguenti cartelle se vuoi consentire il caricamento dei pacchetti di stile CSS (CSS styles package) e la definizione di sotto-linguaggi (sub-language definition):</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<ul>
|
||||||
|
<li class="li2"><span class="s1">[chamilo]/app/Resources/public/css/themes/</span></li>
|
||||||
|
<li class="li2"><span class="s1">[chamilo]/main/lang/</span></li>
|
||||||
|
</ul>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">Dalla versione 1.8.8 di Chamilo puoi anche abilitare la funzione di indicizzazione full-text che richiede l’installazione del modulo di estensione PHP chiamato php-xapian. Se lo vuoi utilizzare devi pertanto consentire al tuo sistema di scrivere nella cartella searchdb:</span></p>
|
||||||
|
<ul>
|
||||||
|
<li class="li2"><span class="s1">[chamilo]/searchdb/</span></li>
|
||||||
|
</ul>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">Se trovi una cartella /test/ nella cartella radice root del tuo pacchetto di installazione sei pregato di cancellarla. Si tratta di una cartella di sviluppo che non è stata controllata e verificata in termini di sicurezza e non dovrebbe essere mai accessibile agli utenti finali sul server di produzione.</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">Sui sistemi operativi Linux, Mac OS X e BSD puoi utilizzare il comando chmod 0775 per questa operazione (ad ogni modo ti raccomandiamo di coinvolgere e chiedere consiglio ad esperti amministratori di sistema per evitare problemi di sicurezza) Sui sistemi Windows devi controllare le proprietà delle cartelle (facendo click sul tasto destro quando sei posizionato su di esse).</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">La seguente cartella deve essere leggibile e scrivibile dal browser we soltanto durante il processo di installazione:</span></p>
|
||||||
|
<p class="p3"><span class="s1"><span class="Apple-converted-space"> </span></span></p>
|
||||||
|
<ul>
|
||||||
|
<li class="li2"><span class="s1">[chamilo]/main/inc/conf/ <span class="Apple-converted-space"> </span>(se presente)</span></li>
|
||||||
|
</ul>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">Sui sistemi operativi Linux, Mac OS X e BSD puoi usare il comando chmod 666 per questa operazione (ad ogni modo ti raccomandiamo di coinvolgere e chiedere consiglio ad esperti amministratori di sistema per evitare problemi di sicurezza) Sui sistemi Windows devi controllare le proprietà delle cartelle (facendo click sul tasto destro quando sei posizionato su di esse).</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">NOTE:</span></p>
|
||||||
|
<p class="p2"><span class="s1">Non modificare direttamente i file home_*.html. Se devi modificarli entra nella sezione Amministrazione di Chamilo e scegli la funzione “Configura la HomePage”.</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">Windows: tramite i pacchetti tipo XAMPP puoi installare facilmente Chamilo. In questo caso e a meno che tu non lo userai in produzione, il login e la passoword per MySQL probabilmente rimarranno vuoti.</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1"><b>Configurazione e sicurezza dopo l’installazione</b></span></p>
|
||||||
|
<p class="p2"><span class="s1">Proteggi la tua cartella di configurazione: assicurati che nessun altro tranne te possa sovrascriverla. Troverai la cartella di configurazione in [chamilo]/main/inc/conf. Fai in modo che sia solo leggibile (read-only), in Windows fai click con tasto destro sulla cartella per modificarne le proprietà. In Linux/Mac/BSD utilizza il comando chmod 0555. Il file di configurazione è creato dal tuo server web (Apache + PHP, tipicamente) pertanto devi avere l’accesso come utente root sul server web per modificare questi permessi.</span></p>
|
||||||
|
<p class="p2"><span class="s1">Proteggi la tua cartella di installazione: se [chamilo]/main/install è ancora accessibile qualcuno potrebbe effettuare una nuova installazione sopra alla tua, facendoti perdere tutti i dati che avevi. Sposta la cartella install da un’altra parte rispetto alle cartelle web, in un posto non accessibile, cambiane il nome, cancellala completamente o modificane le proprietà in modo tale che nessuno possa leggerla o eseguirla.</span></p>
|
||||||
|
<p class="p2"><span class="s1">Per un livello di sicurezza migliore: facendo si che tutti i file siano scrivibili da tutti ti aiuta sicuramente durante il processo di installazione e risolve molti problemi tipici per le persone che non hanno molta esperienza di amministratori. Ad ogni modo è molto più sicuro creare un utente diverso come proprietario di tutti i file e di tutte le cartelle di chamilo e consentire l’accesso in lettura a tutti i file soltanto al server web e in particolare poi l’accesso in scrittura soltanto alle cartelle sopra menzionate. In questo modo tali file devono essere leggibili e scrivibili soltanto dal proprietario dei processi di Apache e non da chiunque. E’ altresì preferibile far si che tutte le cartelle scrivibili rifiutino l’interpretazione dei file PHP (ad eccezione della cartella root della sottocartella dei corsi). Non esitate a chiedere aiuto ad esperti amministratori di sistema per fare queste operazioni che sembrano essere eccessivamente dispendiose ora, ma che vi proteggeranno da potenziali perdite di dati se il vostro sito viene attaccato.</span></p>
|
||||||
|
<p class="p2"><span class="s1">Configurare la vostra installazione Chamilo: nella sezione di amministrazione di chamilo potete utilizzare la funzione specifica di impostazione della configurazione per tarare il sistema in modo più aderente alle vostre esigenze.</span></p>
|
||||||
|
<p class="p2"><span class="s1">Configurare la mail di chamilo: molte installazioni di chamilo utilizzano le impostazioni mail del file php.ini. Ad ogni modo se voi utilizzate un server e-mail differente potete farlo, dovrete però modificare le impostazioni mail nel file [chamilo]/main/inc/conf/mail.conf.php.</span></p>
|
||||||
|
<p class="p2"><span class="s1">Controllate le nostra nuova guida di sicurezza per ulteriori informazioni</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1"><b>Configurazione di PHP<span class="Apple-converted-space"> </span></b></span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">Per ottenere il meglio da Chamilo è opportuno raffinare la tua configurazione delle impostazioni PHP. Considera le seguenti modifiche :<span class="Apple-converted-space"> </span></span></p>
|
||||||
|
<ul>
|
||||||
|
<li class="li2"><span class="s1">Edita il file php.ini (in windows dovrebbe essere localizzato in <b>C:\xampp\php\php.ini</b>, mentre in Ubuntu Linux : <b>/etc/php5/apache2/php.ini</b></span></li>
|
||||||
|
<li class="li2"><span class="s1">cerca la parola "_max" ed incrementa i due valori che troverai per ottimizzare le prestazioni del server</span></li>
|
||||||
|
<li class="li2"><span class="s1">ti raccomandiamo i seguenti valori:</span></li>
|
||||||
|
</ul>
|
||||||
|
<p class="p2"><span class="s1"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>max_execution_time = 300; rappresenta il tempo massimo di <span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>esecuzione di ogni script, misurato in secondi</span></p>
|
||||||
|
<p class="p2"><span class="s1"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>max_input_time = 600; rappresenta il tempo massimo che ogni <span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>script può dedicare nel parsing delle richieste di dati</span></p>
|
||||||
|
<p class="p2"><span class="s1"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>memory_limit = 256M; rappresenta il massimo ammontare di <span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>memoria che uno script può consumare (128MB)</span></p>
|
||||||
|
<p class="p2"><span class="s1"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>post_max_size = 100M</span></p>
|
||||||
|
<p class="p2"><span class="s1"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>upload_max_filesize = 100M</span></p>
|
||||||
|
<p class="p10"><span class="s1"></span><br></p>
|
||||||
|
<p class="p1"><span class="s1">Qualche utente potrebbe riscontrare problemi se le sue impostazioni PHP non sono uguali alle seguenti:</span></p>
|
||||||
|
<ul>
|
||||||
|
<li class="li2"><span class="s1">short_open_tag = Off</span></li>
|
||||||
|
<li class="li2"><span class="s1">safe_mode = Off</span></li>
|
||||||
|
<li class="li2"><span class="s1">magic_quotes_gpc = Off</span></li>
|
||||||
|
<li class="li2"><span class="s1">magic_quotes_runtime = Off</span></li>
|
||||||
|
</ul>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p1"><span class="s1">Le versioni precedenti di Chamilo richiedevano che la variabile register_globals fosse impostata come “On”. Questo non è più necessario nelle versioni attuali e future di Chamilo, per cui può essere e dovrebbe essere impostata sempre su “Off”. E’ considerata una scelta scorretta impostare register_globals su “On” in termini di sicurezza.</span></p>
|
||||||
|
<p class="p1"><span class="s1"><b>Nota:</b> Devi impostare il tuo valore di <i>date.timezone</i> rispetto alla timezone del tuo server. Per esempio se il tuo server si trova nella timezone 'America/New_York', imposta il parametro date.timezone in php.ini come segue:</span></p>
|
||||||
|
<p class="p2"><span class="s1">date.timezone = 'America/New_York'</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p1"><span class="s1"><b>Per utenti BSD:</b> le seguenti librerie php devono essere incluse durante l’installazione php:</span></p>
|
||||||
|
<ul>
|
||||||
|
<li class="li2"><span class="s1">php-mysql, l’estensione mysql shared per php</span></li>
|
||||||
|
<li class="li2"><span class="s1">php-pcre, l’estensione pcre shared per php</span></li>
|
||||||
|
<li class="li2"><span class="s1">php-session, l’estensione session shared per php</span></li>
|
||||||
|
<li class="li2"><span class="s1">php-zlib, l’estensione zlib shared per php</span></li>
|
||||||
|
<li class="li2"><span class="s1">(opzionale) php-ldap, se vuoi poter utilizzare l’autenticazione LDAP</span></li>
|
||||||
|
</ul>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p1"><span class="s1">Potresti altresì aggiungere i seguenti moduli e packages PHP:</span></p>
|
||||||
|
<ul>
|
||||||
|
<li class="li2"><span class="s1">php-ctype</span></li>
|
||||||
|
<li class="li2"><span class="s1">php-gd</span></li>
|
||||||
|
<li class="li2"><span class="s1">php-iconv</span></li>
|
||||||
|
<li class="li2"><span class="s1">php-json</span></li>
|
||||||
|
<li class="li2"><span class="s1">php-mbstring</span></li>
|
||||||
|
<li class="li2"><span class="s1">php-intl</span></li>
|
||||||
|
<li class="li2"><span class="s1">php-curl</span></li>
|
||||||
|
<li class="li2"><span class="s1">php-iconv</span></li>
|
||||||
|
<li class="li2"><span class="s1">php-xsl</span></li>
|
||||||
|
<li class="li2"><span class="s1">php-ldap</span></li>
|
||||||
|
<li class="li2"><span class="s1">php-xapian</span></li>
|
||||||
|
<li class="li2"><span class="s1">php-soap</span></li>
|
||||||
|
</ul>
|
||||||
|
<p class="p11"><span class="s1"></span><br></p>
|
||||||
|
<p class="p11"><span class="s1"></span><br></p>
|
||||||
|
<p class="p11"><span class="s1"></span><br></p>
|
||||||
|
<ol class="ol1">
|
||||||
|
<li class="li6"><span class="s1">3. Upgrade da versioni precedenti di Chamilo LMS (1.*) o Dok€os (<2.0)</span></li>
|
||||||
|
</ol>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">Prima di fare l’aggiornamento, ti raccomandiamo fortemente di effettuare un backup completo delle precedenti cartelle e dei database di Chamilo p Dok€os. Se non sei sicuro come procedere per queste operazioni chiedi al tuo hosting provider per un consiglio.</span></p>
|
||||||
|
<p class="p2"><span class="s1">La versione 1.9 di Chamilo LMS si presenta con una nuova struttura del database. Sebbene gli script di aggiornamento si occupano anche di questa migrazione specifica, tale attività genera un carico molto pesante per il tuo server durante l’aggiornamento e modificherà completamente il tuo database, preservando i tuoi dati al meglio possibile (abbiamo testato la procedura molte volte, ma ricorda che si tratta di un progetto rilasciato sotto GNU/GPLv3 e non possiamo essere ritenuti responsabili per quello che può succedere ai tuoi dati senza una supervisione professionale). Questo è il motivo per cui ti raccomandiamo *vivamente* di effettuare un backup completo del tuo sistema prima di fare l’aggiornamento.</span></p>
|
||||||
|
<p class="p2"><span class="s1"><b>Nota</b>: Questa versione di Chamilo può essere utilizzata per aggiornare da versioni più piccole di Chamilo o Dok€os. Per esempio, non puoi utilizzare lo script di aggiornamento standard di Chamilo 1.9 per aggiornare un sistema Dok€os 2.0. Se per te è necessario effettuare questo tipo di aggiornamento per favore contatta uno dei partner ufficiali associati di Chamilo.</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1"><b>3.1 Aggiornare da Chamilo 1.9.x (minor upgrade)</b></span></p>
|
||||||
|
<p class="p2"><span class="s1">Siccome si tratta solamente di modifiche minori rispetto alla versione 1.9.* di Chamilo le sole cose che devi fare sono le seguenti:</span></p>
|
||||||
|
<ul>
|
||||||
|
<li class="li2"><span class="s1">controlla di non aver lasciato stylesheet o immagini personalizzate (se così fosse assicurati di averne fatto una copia a parte*)</span></li>
|
||||||
|
<li class="li2"><span class="s1">fai il download del package di installazione di Chamilo 1.9 dalla pagina di download di Chamilo</span></li>
|
||||||
|
<li class="li2"><span class="s1">fai unzip dei nuovi file di Chamilo 1.9 trascrivendoli sopra i file della versione precedente (oppure fai unzip dei file in una cartella e poi copia i file da questa cartella alla cartella della versione precedente)</span></li>
|
||||||
|
<li class="li2"><span class="s1">modifica il file main/inc/conf/configuration.php: alla fine del file cerca il numero di versione precedente (per esempio ‘1.9.2’) e modificalo con la presente nuova versione (per esempio ‘1.9.4’)</span></li>
|
||||||
|
<li class="li2"><span class="s1">questo è quanto! Non sono necessarie altre procedure di aggiornamento</span></li>
|
||||||
|
</ul>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1"><b>3.2 Aggiornare da Chamilo 1.8.x</b></span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<ul>
|
||||||
|
<li class="li2"><span class="s1">controlla di non aver lasciato stylesheet o immagini personalizzate (se così fosse assicurati di averne fatto una copia a parte*)</span></li>
|
||||||
|
<li class="li2"><span class="s1">fai il download del package di installazione di Chamilo 1.9 dalla pagina di download di Chamilo</span></li>
|
||||||
|
<li class="li2"><span class="s1">fai unzip dei nuovi file di Chamilo 1.9 trascrivendoli sopra i file della versione precedente (oppure fai unzip dei file in una cartella e poi copia i file da questa cartella alla cartella della versione precedente)</span></li>
|
||||||
|
<li class="li2"><span class="s1">collegati con il tuo browser alla pagina: [ChamiloLMS-URL]+ main/install</span></li>
|
||||||
|
<li class="li2"><span class="s1">seleziona la tua lingua e fai click su “Upgrade from 1.8.x”</span></li>
|
||||||
|
</ul>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1"><b>3.3 Aggiornare da Dok€os 1.8.x</b></span></p>
|
||||||
|
<p class="p2"><span class="s1">Se stai facendo l’aggiornamento da Dok€os 1.8.x:</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<ul>
|
||||||
|
<li class="li2"><span class="s1">controlla di non aver lasciato stylesheet o immagini personalizzate (se così fosse assicurati di averne fatto una copia a parte*)</span></li>
|
||||||
|
<li class="li2"><span class="s1">fai il download del package di installazione di Chamilo 1.9 dalla pagina di download di Chamilo</span></li>
|
||||||
|
<li class="li2"><span class="s1">fai unzip dei nuovi file di Chamilo 1.9 trascrivendoli sopra i file della versione precedente (oppure fai unzip dei file in una cartella e poi copia i file da questa cartella alla cartella della versione precedente)</span></li>
|
||||||
|
<li class="li2"><span class="s1">collegati con il tuo browser alla pagina: [ChamiloLMS-URL]+ main/install</span></li>
|
||||||
|
<li class="li2"><span class="s1">seleziona la tua lingua e fai click su “Upgrade from 1.8.x”</span></li>
|
||||||
|
</ul>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">Alcuni amministratori di Chamilo hanno riportato alcuni problemi minori nella migrazione tra versioni molto diverse tra loro (per esempio nel passaggio da DokΩos a Chamilo). Questi includono la perdita di alcuni esercizi assegnati o post dei forum. Per evitare qualsiasi spiacevole effetto nei confronti dei tuoi utenti ti raccomandiamo di definire una checklist di tutti i contenuti che sono critici per te e di mantenere attiva una copia funzionante del tuo sito durante la migrazione. In questo modo sarà più semplice gestire la transizione permettendo ai tuoi utenti di accedere ai propri contenuti dalla precedente versione del sito e permettendo a te di effettuare una facile comparazione delle versioni dei contenuti. Se incontri difficoltà considera la possibilità di chiedere aiuto ad uno sviluppatore PHP o chiedere a qualcuno dei provider ufficiali di Chamilo. Essi ti daranno il supporto migliore per assicurarti una corretta migrazione di Chamilo.</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">*Gli Style e le immagini sono localizzate nella cartella main/img/ e app/Resources/public/css/themes/. Puoi comunque recuperarle dal tuo backup se lo hai fatto. Qualsiasi style o image che utilizza il nome di default di style o image verrà sovrascritto nel passaggio successivo a questa fase della migrazione. Per evitare di perdere la tua personalizzazione, ricordati sempre di fare una copia degli styles e images con un nuovo nome, utilizzando e modificando questo file copia, mai l’originale. L’originale viene sempre sovrascritto nella nuova versione. In Do€os 1.8.5 abbiamo cambiato il nome di molti temi CSS. La retro compatibilità è assicurata dal fatto che un aggiornamento aggiunge solamente nuovi temi, ma dovresti provare ed utilizzare i nuovi temi piuttosto che continuare ad utilizzare i vecchi che verranno deprecati rapidamente (ovvero non più mantenuti).</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1"><b>3.4 Aggiornare da Dok€os 1.6.x</b></span></p>
|
||||||
|
<p class="p2"><span class="s1">Se stai facendo l’aggiornamento da una vecchia versione di Dok€os (1.6.x) la prima e più importante cosa da fare è di *spostare* la tua cartella corrente in un altro posto. Il modo più veloce per farlo è di creare una sottocartella chiamata “old_version” nella tua attuale cartella Chamilo/Dok€os e spostare tutto ciò che vi è presente utilizzando il semplice comando “move” (per esempio in Linux: mkdir old_version;mv * old_version/), successivamente rendere la cartella old_version scrivibile dal webserver in modo tale che le cartelle /courses e /upload possano essere trasferite dalla old_version nella nuova installazione.</span></p>
|
||||||
|
<p class="p2"><span class="s1">Il processo completo è il seguente:</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<ul>
|
||||||
|
<li class="li2"><span class="s1">sposta tutto il contenuto della cartella corrente Dok€os in una sottocartella chiamata “old_version” e rendila scrivibile dal webserver. Questo è importante per consentire di spostare o copiare le cartelle /courses e /upload nella nuova installazione</span></li>
|
||||||
|
<li class="li2"><span class="s1">fai il download del package di installazione di Chamilo 1.9 dalla pagina di download di Chamilo</span></li>
|
||||||
|
<li class="li2"><span class="s1">fai unzip dei nuovi file di Chamilo 1.9 nella cartella principale Chamilo/Dok€os. La nuova cartella “main” dovrebbe essere localizzata direttamente nella cartella root di Chamilo/Dok€os</span></li>
|
||||||
|
<li class="li2"><span class="s1">collegati con il tuo browser alla pagina: [ChamiloLMS-URL]</span></li>
|
||||||
|
<li class="li2"><span class="s1">seleziona la tua lingua e fai click su “Upgrade from 1.6.x” e conferma la cartella corrente della vecchia versione</span></li>
|
||||||
|
</ul>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1"><b>Nota</b>: l’aggiornamento da 1.6.x a 1.8.x implica una revisione della grafica e degli stili personalizzati. La nuova versione utilizza un set di icone e stili completamente rinnovato, per cui quelli della versione 1.6 non possono essere semplicemente riutilizzati. La buona notizia è che la versione 1.8.x consente di creare il tuo stile in un file CSS separato, che puoi pertanto riutilizzare in tutte le versioni 1.8.x</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1"><b>Attenzione</b>: non cancellate la cartella di installazione precedente di Chamilo/Dok€os prima di installare la nuova versione. Soltanto quando l’aggiornamento è andato a buon fine potete rimuovere la vecchia cartella.</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1"><b>Nota</b>: non modificate mai direttamente i file home_*.html. Piuttosto scegliete l’opzione “Configura la homepage” nella sezione di amministrazione di Chamilo.</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1"><b>3.5 In entrambi gli ultimi casi</b></span></p>
|
||||||
|
<p class="p2"><span class="s1">Le seguenti cartelle devono essere leggibili (readable), scrivibili (writeble) ed eseguibili (executable) dal webserver:</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<ul>
|
||||||
|
<li>[chamilo]/app/config/</li>
|
||||||
|
<li>[chamilo]/app/upload/users/</li>
|
||||||
|
<li>[chamilo]/app/upload/sessions/</li>
|
||||||
|
<li>[chamilo]/app/upload/courses/</li>
|
||||||
|
<li>[chamilo]/app/cache/</li>
|
||||||
|
<li>[chamilo]/app/courses/</li>
|
||||||
|
<li>[chamilo]/app/home/</li>
|
||||||
|
<li>[chamilo]/app/logs/</li>
|
||||||
|
<li>[chamilo]/main/default_course_document/images/</li>
|
||||||
|
</ul>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">Sui sistemi operativi Linux, Mac OS X e BSD puoi facilmente settare queste impostazioni utilizzando il comando “chmod 0777”, ma se non ne sei sicuro, ti raccomandiamo di chiedere consiglio per il tuo sistema operativo sul nostro forum. In Windows devi controllare le proprietà di tutte le cartelle sopraindicate.</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<ol class="ol1">
|
||||||
|
<li class="li13"><span class="s1">4. Risoluzione dei problemi (Troubleshooting)</span></li>
|
||||||
|
</ol>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">Se hai problemi visita il sito di Chamilo e chiedi aiuto al support forum. Leggi<span class="Apple-converted-space"> </span>prima attentamente i messaggi archiviati per vedere se trovi già la soluzione ai tuoi problemi.</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<ol class="ol1">
|
||||||
|
<li class="li13"><span class="s1">5. Sezione amministrazione</span></li>
|
||||||
|
</ol>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">Per accedere alla sezione di amministrazione di Chamilo, apri il browser e vai all’indirizzo web del tuo sistema Chamilo, fai il login come utente admin. Vedrai il link “Sezione Amministrazione della Piattaforma” nell’Header della pagina. In questa sezione potrai gestire gli utenti, i corsi, le sessioni, il look and feel del portale, il contenuto della homepage, le categorie dei corsi, etc.</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<ol class="ol1">
|
||||||
|
<li class="li13"><span class="s1">6. LDAP</span></li>
|
||||||
|
</ol>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">Questa parte è opzionale, soltanto le organizzazioni con un server LDAP sono interessate a questa parte del documento.</span></p>
|
||||||
|
<p class="p2"><span class="s1">Un modulo LDAP è già presente in Chamilo, ma deve essere configurato per poter funzionare.</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1"><b>Compilazione</b></span></p>
|
||||||
|
<p class="p2"><span class="s1">Linux Servers: è possibile che si debba ricompilare php per il supporto ldap. Le distribuzioni più recenti permettono di fare il download dei file rpms per i packages addizionali.</span></p>
|
||||||
|
<p class="p3"><span class="s1"><b></b></span><br></p>
|
||||||
|
<p class="p2"><span class="s1"><b>Attivazione del LDAP in Chamilo</b></span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">Nota: Il sistema LDAP è stato modificato in 1.9. Come risultato, alcune delle seguenti informazioni potrebbero non essere corrette. Si prega di verificare le impostazioni di configurazione all'interno di Chamilo per verificare i dettagli.</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">In [Chamilo folder] /main/inc/conf/configuration.conf.php, intorno alla linea 93, troverete le impostazioni come le seguenti:</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">// -> Uncomment the two lines below to activate LDAP AND edit main/inc/conf/auth.conf.php for configuration</span></p>
|
||||||
|
<p class="p2"><span class="s1">// $extAuthSource["extldap"]["login"] = $_configuration['root_sys'].$_configuration['code_append']."auth/external_login/login.ldap.php";</span></p>
|
||||||
|
<p class="p2"><span class="s1">// $extAuthSource["extldap"]["newUser"] = $_configuration['root_sys'].$_configuration['code_append']."auth/external_login/newUser.ldap.php";</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">Eliminate il simbolo di commento // dalle ultime 2 linee per attivare LDAP</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1"><b>Impostazioni</b></span></p>
|
||||||
|
<p class="p2"><span class="s1">Chiedete all’amministratore del server LDAP le seguenti informazioni di settings:</span></p>
|
||||||
|
<ul>
|
||||||
|
<li class="li2"><span class="s1">LDAP server name</span></li>
|
||||||
|
<li class="li2"><span class="s1">LDAP server port (tipicamente 389)</span></li>
|
||||||
|
<li class="li2"><span class="s1">LDAP dc</span></li>
|
||||||
|
</ul>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">Dalla versione 1.8.5 dovete cambiare le impostazioni LDAP all’interno del pannello di controllo “Amministrazione Portale”, sotto “Impostazioni di configurazione Chamilo”, sezione “LDAP”.</span></p>
|
||||||
|
<p class="p2"><span class="s1">Come esempio dovreste trovare questo tipo di valori:</span></p>
|
||||||
|
<p class="p2"><span class="s1">LDAP main server's address: "myldapserver.com"; // your ldap server</span></p>
|
||||||
|
<p class="p2"><span class="s1">LDAP main server's port: 389; // your ldap server's port number</span></p>
|
||||||
|
<p class="p2"><span class="s1">LDAP domain: "dc=xx, dc=yy, dc=zz"; //domain</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1"><b>Stato Insegnanti/Studenti</b></span></p>
|
||||||
|
<p class="p2"><span class="s1">Per default Chamilo verifica che il campo “numero impiegato” abbia un valore. Se si allora Chamilo considererà questo utente come un insegnante.</span></p>
|
||||||
|
<p class="p2"><span class="s1">Se vuoi modificare questo comportamento, puoi modificare come meglio credi il file main/auth/ldap/authldap.php, e più precisamente la funzione ldap_put_user_info_locally() nel ciclo condizionale <i>if (empty($info_array[$tutor_field])).</i></span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">Puoi anche rimuovere questo controllo eliminando la condizione e lasciando solamente la linea di codice <i>$status = STUDENT;</i></span></p>
|
||||||
|
<p class="p3"><span class="s1"><b></b></span><br></p>
|
||||||
|
<p class="p2"><span class="s1"><b>Server LDAP Protetti</b></span></p>
|
||||||
|
<p class="p2"><span class="s1">Alcuni server LDAP non supportano l’utilizzo anonimo dei servizi di directory.</span></p>
|
||||||
|
<p class="p2"><span class="s1">In questo caso dovreste compilare i campi appropriati nel pannello di amministrazione (per esempio. “manager” e “mypassword”) e Chamilo cercherà di autenticarvi usando queste credenziali, oppure tornerà nella modalità anonima prima di rinunciare all’accesso.</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1"><b>Import LDAP nelle Sessioni</b></span></p>
|
||||||
|
<p class="p2"><span class="s1">C’è un nuovo insieme di scripts ora che consente di inserire gli utenti direttamente da LDAP nelle sessione di Chamilo. Questo, comunque, dipende da una serie di scelte prefissate negli attributi di contatto di LDAP.</span></p>
|
||||||
|
<p class="p2"><span class="s1">I campi utilizzati intensamente dal modulo Chamilo sono:</span></p>
|
||||||
|
<ul>
|
||||||
|
<li class="li2"><span class="s1">uid, che viene confrontato con lo username di Chamilo</span></li>
|
||||||
|
<li class="li2"><span class="s1">userPassword, che viene confrontato con la user password, sebbene questa parte funzionerà solo per password non criptate, per il momento, ma non dovrebbe essere necessario se si sta utilizzando il server LDAP come sistema di autenticazione</span></li>
|
||||||
|
<li class="li2"><span class="s1">ou dovrebbe terminare con l’anno di registrazione della persona o con un qualsiasi criterio che potresti voler usare per filtrare gli utenti, in modo tale che essi possano essere ricercati con questo criterio</span></li>
|
||||||
|
<li class="li2"><span class="s1">sn viene usato come il campo lastname in Chamilo</span></li>
|
||||||
|
<li class="li2"><span class="s1">givenName viene usato come campo firstname in Chamilo</span></li>
|
||||||
|
<li class="li2"><span class="s1">mail viene usato come campo email in Chamilo</span></li>
|
||||||
|
</ul>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<ol class="ol1">
|
||||||
|
<li class="li13"><span class="s1">7. Formule matematiche con LaTeX</span></li>
|
||||||
|
</ol>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1"><i>Questa parte è opzionale, solo le organizzazioni che intendono utilizzare le formule matematiche all’interno dell’editor online dovrebbero leggere questa parte.</i></span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">Puoi abilitare le equazioni matematiche scrivendo all’interno dell’editor online di Chamilo (FCKEditor) seguendo questi passi:</span></p>
|
||||||
|
<ol class="ol1">
|
||||||
|
<li class="li2"><span class="s1">Configurare la vostra installazione Chamilo in modo tale da<span class="Apple-converted-space"> </span>aggiungere la directory cgi-bin che contiene il link simbolico al file mimetex.cgi che fisicamente si trova in <i>chamilo/main/inc/lib/mimetex/</i> (* vedi oltre, al punto 4)</span></li>
|
||||||
|
<li class="li2"><span class="s1">Ricarica la configurazione di Apache in modo tale da rendere attive le nuove impostazioni</span></li>
|
||||||
|
<li class="li2"><span class="s1">Modifica il file di configurazione dell’editor online <i>chamilo/main/inc/lib/fckeditor/myconfig.php</i> e</span></li>
|
||||||
|
</ol>
|
||||||
|
<p class="p2"><span class="s1"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>3.1<span class="Apple-tab-span"> </span>Abilita il plugin mimetex, cercando la linea <i>//$config[‘LoadPlugin’][]<span class="Apple-tab-span"> </span>= ‘mimetex’;</i> e rimuovendo il simbolo di commento <i>//</i></span></p>
|
||||||
|
<p class="p2"><span class="s1"><i><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></i>3.2 <span class="Apple-tab-span"> </span>Le impostazioni addizionali <b>$config[‘MimetexExecutableInstalled’], $config[‘MimetexExecutableDetectionMethod’] e $config[‘MimetexExecutableDetectionTimeout’]</b> sono configurate per la condizione più probabile di riconoscimento automatico del file mimetex.cgi<span class="Apple-converted-space"> </span>o mimetex.exe installato. In alcuni casi eccezionali queste opzioni devono essere ritarate, consultando i commenti che le accompagnano nel file <i>myconfig.php<span class="Apple-converted-space"> </span></i></span></p>
|
||||||
|
<p class="p2"><span class="s1"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>3.3 <span class="Apple-tab-span"> </span>Una volta che il plugin è attivo troverete il relativo pulsante in quasi tutte le toolbar. Se dovete modificare qualche toolbar consultate i file di configuraizone in php all’interno della directory <i>chamilo/main/inc/lib/fckeditor/toolbars/.</i> Ecco un esempio:</span></p>
|
||||||
|
<p class="p2"><span class="s1">$config['ToolbarSets']['Normal'] = array(</span></p>
|
||||||
|
<p class="p2"><span class="s1"> array('FitWindow','Bold','Image','Link','PasteWord','MP3','<b>mimetex</b>','Table','Subscript','Superscript','ShowBlocks'));</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p2"><span class="s1">La voce ‘mimetex’ rappresenta il pulsante, puoi aggiungerlo o rimuoverlo da qualsiasi toolbar.</span></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<p class="p3"><span class="s1"></span><br></p>
|
||||||
|
<ol class="ol1">
|
||||||
|
<li class="li2"><span class="s1">4. Per installare il file eseguibile mimetex dovete apportare le seguenti modifiche:</span></li>
|
||||||
|
</ol>
|
||||||
|
<p class="p2"><span class="s1">Aggiungere la corrispondente directory cgi-bin nel vostro file di configurazione di Apache, che per Apache2 vuol dire :</span></p>
|
||||||
|
<p class="p14"><span class="s1">ScriptAlias /cgi-bin/ /var/www/cgi-bin/</span></p>
|
||||||
|
<p class="p14"><span class="s1"><Directory "/var/www/cgi-bin"></span></p>
|
||||||
|
<p class="p14"><span class="s1"> AllowOverride None</span></p>
|
||||||
|
<p class="p14"><span class="s1"> Options ExecCGI -MultiViews +SymLinksIfOwnerMatch</span></p>
|
||||||
|
<p class="p14"><span class="s1"> Order allow,deny</span></p>
|
||||||
|
<p class="p14"><span class="s1"> Allow from all</span></p>
|
||||||
|
<p class="p14"><span class="s1"></Directory></span></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p14"><span class="s1">Per aggiungere un link simbolico in Windows basta creare un shortcut al file mimetex.exe dalla cartella cgi-bin, mentre in Linux usare il seguente comando:</span></p>
|
||||||
|
<p class="p14"><span class="s1">ln -s /var/www/chamilo/main/inc/lib/mimetex/mimetex.cgi /var/www/cgi-bin/mimetex.cgi</span></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p14"><span class="s1">Se non volete modificare il vostro file di configurazione di Apache potete, in alternativa, nel passaggio n.4 semplicemente compiare il file mimetex.exe (per Windows) o il file mimetex.cgi (per Linux) dalla cartella <i>chamilo/main/inc/lib/mimetex</i> direttamente nella cartella <i>cgi-bin</i></span></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<ol class="ol1">
|
||||||
|
<li class="li14"><span class="s1">5. Assicuratevi che il file mimetex.cgi (o mimetex.exe) abbia i permessi di esecuzione da parte del server web. Per esempio, in un sistema<span class="Apple-converted-space"> </span>Ubuntu Linux dovreste scrivere il seguente comando:</span></li>
|
||||||
|
</ol>
|
||||||
|
<p class="p14"><span class="s1">sudo chmod a+x mimetex.cgi</span></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<ol class="ol1">
|
||||||
|
<li class="li14"><span class="s1">6. Assicuratevi che il file mimetex.cgi (o mimetex.exe) venga caricato in formato <b>BINARY</b>. Questo è un altro problema tipico che viene risolto molto semplicemente ri-caricando il file nel formato ASCII. Consulta la documentazione del tuo programma FTP per capire come effettuare questa operazione. BINARY viene usato per oggetti non-text, quali file eseguibili (*.exe), zip files (*.zip), file immagine (*.jpg,*.gif) e similari. ASCII viene usato solo per documenti di testo, il che include *.txt,*.cgi,*.pl,*.css,*.html, etc.</span></li>
|
||||||
|
</ol>
|
||||||
|
<p class="p14"><span class="s1">Puoi anche provare a ricaricare il file mimetex utilizzando la funzione “Upload file” nel “File manager” tipicamente presente in CPanel/Plesk se le soluzioni precedenti non sembrano funzionare o ti sembrano difficili da effettuare.</span></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p14"><span class="s1">Come risultato di questa procedura un nuovo pulsante diventa disponibile nel tuo editor online all’interno di Chamilo che ti consente di inserire formule matematiche nei tuoi documenti.</span></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<ol class="ol1">
|
||||||
|
<li class="li6"><span class="s1">8. Formule matematiche con ASCIIMathML</span></li>
|
||||||
|
</ol>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p14"><span class="s1">Le formule matematiche possono essere visualizzate nelle pagine web utilizzando lo script ASCIIMathML.js (una versione customizzata per Chamilo). Per maggiori informazioni relative a questo script ed alla sintassi di ASCIIMath vedere <a href="https://www1.chapman.edu/%7Ejipsen/mathml/asciimath.html"><span class="s2">https://www1.chapman.edu/~jipsen/mathml/asciimath.html</span></a> e <a href="https://dlippman.imathas.com/asciimathtex/AMT.html"><span class="s2">https://dlippman.imathas.com/asciimathtex/AMT.html</span></a>.</span></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p14"><span class="s1">Per scrivere formule con ASCIIMath nei documenti esiste un corrispondente plugin per l’editor online che deve essere attivato. Per fare ciò vedere la sezione di amministrazione della piattaforma, aprendo la pagina “Amministrazione”>”Impostazioni di Configurazione”>”Editor”. Abilitare l’impostazione “ASCIIMathML mathematical editor”.</span></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p14"><span class="s1">All’interno dei vostri documenti lo script ASCIIMathML.js presenterà le formule matematiche in queste due modalità alternative:</span></p>
|
||||||
|
<ul>
|
||||||
|
<li class="li14"><span class="s1">traducendo le notazioni delle formule ASCIIMath in codice MathML. Gli standard di MathML sono supportati attualmente dai seguenti browsers:</span></li>
|
||||||
|
<ul>
|
||||||
|
<li class="li14"><span class="s1">Mozilla Firefox, potresti però dover installare i font STIX (<a href="https://www.stixfonts.org"><span class="s2">https://www.stixfonts.org</span></a>) sulle tue macchine client per avere una resa ottimale delle formule;</span></li>
|
||||||
|
<li class="li14"><span class="s1">Internet Explorer 6 o superiore utilizzando l’add-on MathPlayer 2.0 o superiore (<a href="https://ww.dessci.com/en/products/mathplayer"><span class="s2">https://ww.dessci.com/en/products/mathplayer</span></a>);</span></li>
|
||||||
|
<li class="li14"><span class="s1">Opera 9.5 o superiore</span></li>
|
||||||
|
</ul>
|
||||||
|
<li class="li14"><span class="s1">per browser che non supportano MathML viene effettuata la conversione della notazione delle formule ASCIIMath in notazione TeX passando tramite un servizio esterno. Il servizio esterno produce e ritorna un’immagine che contiene la formula. Questa modalità è chiamata “image-based fallback”.</span></li>
|
||||||
|
</ul>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p14"><span class="s1">Per fornire un servizio di image-based fallback in un sistema di produzione dovresti installare sul tuo server il software per il rendering TeX quale:</span></p>
|
||||||
|
<p class="p14"><span class="s6">- </span><span class="s1">mimeTeX - <a href="https://www.forkosh.dreamhost.com/source_mimetex.html"><span class="s2">https://www.forkosh.dreamhost.com/source_mimetex.html</span></a>. Vedi il capitolo 7 per le istruzioni su come utilizzare questo servizio</span></p>
|
||||||
|
<ul>
|
||||||
|
<li class="li14"><span class="s6"></span><span class="s1">mathTeX - <a href="https://www.forkosh.com/mathtex.html"><span class="s2">https://www.forkosh.com/mathtex.html</span></a>. Naviga il sito per le istruzioni di installazione</span></li>
|
||||||
|
</ul>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p14"><span class="s1">Come alternativa potresti provare qualcuno dei servizi pubblici di rendering in TeX quali:</span></p>
|
||||||
|
<ul>
|
||||||
|
<li class="li15"><span class="s6"></span><span class="s4">MathTran - <a href="https://www.mathtran.org/"><span class="s5">https://www.mathtran.org</span></a></span></li>
|
||||||
|
<li class="li15"><span class="s6"></span><span class="s4">Google Chart Tools - <a href="https://code.google.com/apis/charttools"><span class="s5">https://code.google.com/apis/charttools</span></a></span></li>
|
||||||
|
</ul>
|
||||||
|
<p class="p16"><span class="s5"></span><br></p>
|
||||||
|
<p class="p14"><span class="s1">Apri con un editor di testo il file <b>.../chamilo/main/inc/lib/asciimath/ASCIIMathML.js</b>. Cerca all’inizio del codice che inizializza la variabile <b>AMTcgiloc</b>.</span></p>
|
||||||
|
<p class="p14"><span class="s1">Dovresti modificare le impostazioni come nell’esempio seguente:</span></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<ul>
|
||||||
|
<li class="li15"><span class="s4">var AMTcgiloc = "<a href="https://mychamiloserver.org/cgi-bin/mimetex.cgi"><span class="s5">https://mychamiloserver.org/cgi-bin/mimetex.cgi</span></a>";</span></li>
|
||||||
|
<li class="li15"><span class="s4">var AMTcgiloc = "<a href="https://mychamiloserver.org/cgi-bin/mathtex.cgi"><span class="s5">https://mychamiloserver.org/cgi-bin/mathtex.cgi</span></a>";</span></li>
|
||||||
|
<li class="li15"><span class="s4">var AMTcgiloc = "<a href="https://www.mathtran.org/cgi-bin/mathtran?tex="><span class="s5">https://www.mathtran.org/cgi-bin/mathtran?tex=</span></a>";</span></li>
|
||||||
|
<li class="li15"><span class="s4">var AMTcgiloc = "<a href="https://chart.apis.google.com/chart?cht=tx&chs=1x0&chl="><span class="s5">https://chart.apis.google.com/chart?cht=tx&chs=1x0&chl=</span></a>";</span></li>
|
||||||
|
<li class="li14"><span class="s1">... o simili</span></li>
|
||||||
|
</ul>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p14"><span class="s1">Per testare come deve essere impostata la variabile <b>AMTcgiloc</b> ci sono alcuni esempi all’interno dello script stesso.</span></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<ol class="ol1">
|
||||||
|
<li class="li6"><span class="s1">9. Formule matematiche con Wiris MathType</span></li>
|
||||||
|
</ol>
|
||||||
|
<p>
|
||||||
|
Installare il plugin <a href="https://www.wiris.com/plugins/ckeditor/download" target="_blank" rel="noopener noreferrer">PHP plugin for CKeditor WIRIS</a>, decompattarlo nella cartella /main/inc/lib/javascript/ckeditor/plugins/ckeditor_wiris.
|
||||||
|
A seguito dell’installazione si ottiene un editor Wiris MathType.
|
||||||
|
Si segnala che WIRIS è un software proprietario ed i suoi servizi sono servizi
|
||||||
|
<a href="https://www.wiris.com/store/who-pays" target="_blank" rel="noopener noreferrer">commerciali</a>.
|
||||||
|
Per qualsiasi modifica o configurazione ulteriore del plugin modificare il file configuration.ini o sostituirlo con il file configuration.ini di default di Chamilo.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="p6"><span class="s1">10. Indicizzazione Full-text con Xapian</span></p>
|
||||||
|
<p class="p14"><span class="s1">Nota: questo passaggio richiede un server dedicato o un virtual server perchè il pacchetto tipicamente non è disponibile nella maggior parte delle soluzioni di hosting condivise presenti sul mercato.</span></p>
|
||||||
|
<p class="p14"><span class="s1">Su un sistema Debian o Ubuntu 10.04 o superiori devi semplicemente istallare il pacchetto php5-xapian e riavviare il web server:</span></p>
|
||||||
|
<p class="p17"><span class="s1">sudo apt-get install php5-xapian</span></p>
|
||||||
|
<p class="p17"><span class="s1">sudo /etc/init.d/apache2 restart</span></p>
|
||||||
|
<p class="p16"><span class="s5"></span><br></p>
|
||||||
|
<p class="p14"><span class="s1">Poi vai nella pagina di Ammistrazione-> Impostazioni di Configurazione>Ricerca e abilita il tool di ricerca. Segui le raccomandazioni indicate nella pagina per istallare correttamente la funzione di indicizzazione. Una volta terminata tale operazione tutti i documenti che importerai in Chamilo saranno indicizzati e resi ricercabili se ne viene riconosciuto il formato.</span></p>
|
||||||
|
<p class="p14"><span class="s1">I corsi di Amministratore Chamilo (che puoi richiedere ai nostri <a href="https://chamilo.org/en/providers"><span class="s2">Chamilo's Official Provider</span></a>) comprendono un completo approfondimento della funzione di ricerca full-text.</span></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p6"><span class="s1">11. Sistema Chamilo Rapid per conversione file PPT</span></p>
|
||||||
|
<p class="p14"><span class="s1">Nota: questo passaggio richiede un server dedicato oppure un server virtuale perchè il pacchetto tipicamente non è supportato dalla maggior parte delle soluzioni di hosting condiviso presenti sul mercato.</span></p>
|
||||||
|
<p class="p14"><span class="s1">Su un sistema Debian o Ubuntu 22.04 o superiori basta semplicemente installare LibreOffice v7 ed avviarlo come server headless:</span></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p17"><span class="s1">sudo apt-get install libreoffice</span></p>
|
||||||
|
<p class="p17"><span class="s1">/usr/bin/libreoffice --headless --accept="socket,host=127.0.0.1,port=2002;urp;"</span></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p14"><span class="s1">Poi vai nella pagina di Amministrazione> Chamilo Rapid ed imposta l’host a “localhost”, la porta a “2002”. Salva. Ora vai nel tuo corso, nel tool Percorsi di Apprendimento e dovresti vedere una nuova icona aggiunta. Ora puoi importare un file PPT e dovrebbe funzionare.</span></p>
|
||||||
|
<p class="p14"><span class="s1">Nota: qualche volta non funziona così facilmente. Potresti dover necessitare di assistenza da parte di qualche amministratore di sistema con conoscenze di base di Java e PHP o comunque puoi chiedere assistenza ai nostri Provider Ufficiali (con un contratto commerciale di assistenza per questo tipo di servizio)</span></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p6"><span class="s1">12. Impostare compiti con cadenza regolare</span></p>
|
||||||
|
<p class="p14"><span class="s1">Dalla versione 1.8.8 di Chamilo alcuni compiti necessitano di essere eseguiti regolarmente per ottimizzare l’utilizzo delle risorse del server. Uno tra questi (e l’unico al tempo di Chamilo 1.8.8) è quello di inviare messaggi interni di notifica via e-mail, per esempio quando ricevi una mail da un’altra persona all’interno di un gruppo all’interno del sistema di messaggistica di Chamilo. Se tutte le email venissero inviate immediatamente allora non avresti nessuna possibilità di riceverle con scadenze regolarei, una volta al giorno, oppure alla settimana. Per questo tipo di casistica, in qualità di Amministratore Chamilo, dovresti impostare un processo cron sul server per verificare la coda di email da inviare ed inviarli con le cadenze opportune.</span></p>
|
||||||
|
<p class="p14"><span class="s1">Impostando un task cron è facile e ci sono diversi modi per farlo. Noi raccomandiamo di guardare il documento <a href="https://drupal.org/cron"><span class="s2">Drupal documentation for setting up cron</span></a> e stabilire i tuoi processi cron in questo modo:</span></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p18"><span class="s4">35 * * * * wget -O - -q -t 1 <a href="https://campus.example.com/main/cron/run.php"><span class="s7">https://campus.example.com/main/cron/run.php</span></a></span></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p14"><span class="s1">Assicurati di controllare il file run.php perchè potresti dover modificare qualche impostazione.</span></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p6"><span class="s1">13. Cambiare l’ordine firstname/lastname di lingua</span></p>
|
||||||
|
<p class="p14"><span class="s1">Con la crescente popolarità di Chamilo accade frequentemente che gli amministratori vogliano riordinare i campi nelle tabelle relative ai firstname/lastname e vogliano altresi invertire il campo di ordinamento primario tra firstname/lastname.</span></p>
|
||||||
|
<p class="p14"><span class="s1">Questo può essere modificato facilmente modificando il file main/inc/lib/internationalization_database/name_order_conventions.php, cercare al suo interno la vostra lingua e modificare i campi. E’ molto autoesplicativo e dovrebbe apparire come segue:</span></p>
|
||||||
|
<p class="p17"><span class="s1">'simpl_chinese' => array( 'format' => 'title last_name first_name', 'sort_by' => 'last_name' ), // Eastern order</span></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p14"><span class="s1">Sentiti libero di modificarlo per esempio come segue, l’effetto sarà immediato:</span></p>
|
||||||
|
<p class="p17"><span class="s1">'simpl_chinese' => array( 'format' => 'title first_name lastname', 'sort_by' => 'last_name' ), // Eastern order</span></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
<p class="p14"><span class="s1">--------------------------------------</span></p>
|
||||||
|
<p class="p14"><span class="s1">Per contatti</span></p>
|
||||||
|
<p class="p15"><span class="s4">Mail: <a href="mailto:info@chamilo.org"><span class="s5">info@chamilo.org</span></a></span></p>
|
||||||
|
<p class="p8"><span class="s1"></span><br></p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
741
documentation/license.html
Normal file
741
documentation/license.html
Normal file
@@ -0,0 +1,741 @@
|
|||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<title>Chamilo License</title>
|
||||||
|
<link rel="stylesheet" href="../web/assets/bootstrap/dist/css/bootstrap.css" type="text/css" media="screen,projection" />
|
||||||
|
<link rel="stylesheet" href="default.css" type="text/css" media="screen,projection" />
|
||||||
|
<link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<nav class="navbar navbar-default navbar-fixed-top">
|
||||||
|
<div class="container">
|
||||||
|
<div class="navbar-header">
|
||||||
|
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
|
||||||
|
<span class="sr-only">Toggle navigation</span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
</button>
|
||||||
|
<a class="navbar-brand" href="#">Chamilo - Documentation</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="collapse navbar-collapse">
|
||||||
|
<ul class="nav navbar-nav">
|
||||||
|
<li><a href="index.html">Home</a></li>
|
||||||
|
<li><a href="readme.html">About</a></li>
|
||||||
|
<li class="active"><a href="license.html">License</a></li>
|
||||||
|
<li><a href="credits.html">Credits</a></li>
|
||||||
|
<li ><a href="dependencies.html">Dependencies</a></li>
|
||||||
|
<li><a href="changelog.html">Changelog</a></li>
|
||||||
|
</ul>
|
||||||
|
</div><!--/.nav-collapse -->
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<div class="container">
|
||||||
|
|
||||||
|
<ul class="breadcrumb">
|
||||||
|
<li>
|
||||||
|
<a href="index.html">Documentation</a>
|
||||||
|
<span class="divider">/</span>
|
||||||
|
</li>
|
||||||
|
<li>Gnu General Public License</li>
|
||||||
|
</ul><h1>Chamilo License</h1>
|
||||||
|
|
||||||
|
<h3 style="text-align: left;">GNU GENERAL PUBLIC LICENSE</h3>
|
||||||
|
<p style="text-align: left;">Version 3, 29 June 2007</p>
|
||||||
|
|
||||||
|
<p>Copyright © 2007 Free Software Foundation, Inc.
|
||||||
|
<<a href="https://fsf.org/">https://fsf.org/</a>></p><p>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.</p>
|
||||||
|
|
||||||
|
<h3><a id="preamble"></a>Preamble</h3>
|
||||||
|
|
||||||
|
<p>The GNU General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works.</p>
|
||||||
|
|
||||||
|
<p>The licenses for most software and other practical works are designed
|
||||||
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
the GNU General Public License is intended to guarantee your freedom to
|
||||||
|
share and change all versions of a program--to make sure it remains free
|
||||||
|
software for all its users. We, the Free Software Foundation, use the
|
||||||
|
GNU General Public License for most of our software; it applies also to
|
||||||
|
any other work released this way by its authors. You can apply it to
|
||||||
|
your programs, too.</p>
|
||||||
|
|
||||||
|
<p>When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.</p>
|
||||||
|
|
||||||
|
<p>To protect your rights, we need to prevent others from denying you
|
||||||
|
these rights or asking you to surrender the rights. Therefore, you have
|
||||||
|
certain responsibilities if you distribute copies of the software, or if
|
||||||
|
you modify it: responsibilities to respect the freedom of others.</p>
|
||||||
|
|
||||||
|
<p>For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must pass on to the recipients the same
|
||||||
|
freedoms that you received. You must make sure that they, too, receive
|
||||||
|
or can get the source code. And you must show them these terms so they
|
||||||
|
know their rights.</p>
|
||||||
|
|
||||||
|
<p>Developers that use the GNU GPL protect your rights with two steps:
|
||||||
|
(1) assert copyright on the software, and (2) offer you this License
|
||||||
|
giving you legal permission to copy, distribute and/or modify it.</p>
|
||||||
|
|
||||||
|
<p>For the developers' and authors' protection, the GPL clearly explains
|
||||||
|
that there is no warranty for this free software. For both users' and
|
||||||
|
authors' sake, the GPL requires that modified versions be marked as
|
||||||
|
changed, so that their problems will not be attributed erroneously to
|
||||||
|
authors of previous versions.</p>
|
||||||
|
|
||||||
|
<p>Some devices are designed to deny users access to install or run
|
||||||
|
modified versions of the software inside them, although the manufacturer
|
||||||
|
can do so. This is fundamentally incompatible with the aim of
|
||||||
|
protecting users' freedom to change the software. The systematic
|
||||||
|
pattern of such abuse occurs in the area of products for individuals to
|
||||||
|
use, which is precisely where it is most unacceptable. Therefore, we
|
||||||
|
have designed this version of the GPL to prohibit the practice for those
|
||||||
|
products. If such problems arise substantially in other domains, we
|
||||||
|
stand ready to extend this provision to those domains in future versions
|
||||||
|
of the GPL, as needed to protect the freedom of users.</p>
|
||||||
|
|
||||||
|
<p>Finally, every program is threatened constantly by software patents.
|
||||||
|
States should not allow patents to restrict development and use of
|
||||||
|
software on general-purpose computers, but in those that do, we wish to
|
||||||
|
avoid the special danger that patents applied to a free program could
|
||||||
|
make it effectively proprietary. To prevent this, the GPL assures that
|
||||||
|
patents cannot be used to render the program non-free.</p>
|
||||||
|
|
||||||
|
<p>The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.</p>
|
||||||
|
|
||||||
|
<h3><a id="terms"></a>TERMS AND CONDITIONS</h3>
|
||||||
|
|
||||||
|
<h4><a id="section0"></a>0. Definitions.</h4>
|
||||||
|
|
||||||
|
<p>“This License” refers to version 3 of the GNU General Public License.</p>
|
||||||
|
|
||||||
|
<p>“Copyright” also means copyright-like laws that apply to other kinds of
|
||||||
|
works, such as semiconductor masks.</p>
|
||||||
|
|
||||||
|
<p>“The Program” refers to any copyrightable work licensed under this
|
||||||
|
License. Each licensee is addressed as “you”. “Licensees” and
|
||||||
|
|
||||||
|
“recipients” may be individuals or organizations.</p>
|
||||||
|
|
||||||
|
<p>To “modify” a work means to copy from or adapt all or part of the work
|
||||||
|
in a fashion requiring copyright permission, other than the making of an
|
||||||
|
exact copy. The resulting work is called a “modified version” of the
|
||||||
|
earlier work or a work “based on” the earlier work.</p>
|
||||||
|
|
||||||
|
<p>A “covered work” means either the unmodified Program or a work based
|
||||||
|
on the Program.</p>
|
||||||
|
|
||||||
|
<p>To “propagate” a work means to do anything with it that, without
|
||||||
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.</p>
|
||||||
|
|
||||||
|
<p>To “convey” a work means any kind of propagation that enables other
|
||||||
|
parties to make or receive copies. Mere interaction with a user through
|
||||||
|
a computer network, with no transfer of a copy, is not conveying.</p>
|
||||||
|
|
||||||
|
<p>An interactive user interface displays “Appropriate Legal Notices”
|
||||||
|
to the extent that it includes a convenient and prominently visible
|
||||||
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
|
tells the user that there is no warranty for the work (except to the
|
||||||
|
extent that warranties are provided), that licensees may convey the
|
||||||
|
work under this License, and how to view a copy of this License. If
|
||||||
|
the interface presents a list of user commands or options, such as a
|
||||||
|
menu, a prominent item in the list meets this criterion.</p>
|
||||||
|
|
||||||
|
<h4><a id="section1"></a>1. Source Code.</h4>
|
||||||
|
|
||||||
|
<p>The “source code” for a work means the preferred form of the work
|
||||||
|
for making modifications to it. “Object code” means any non-source
|
||||||
|
form of a work.</p>
|
||||||
|
|
||||||
|
<p>A “Standard Interface” means an interface that either is an official
|
||||||
|
standard defined by a recognized standards body, or, in the case of
|
||||||
|
interfaces specified for a particular programming language, one that
|
||||||
|
is widely used among developers working in that language.</p>
|
||||||
|
|
||||||
|
<p>The “System Libraries” of an executable work include anything, other
|
||||||
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
|
packaging a Major Component, but which is not part of that Major
|
||||||
|
Component, and (b) serves only to enable use of the work with that
|
||||||
|
Major Component, or to implement a Standard Interface for which an
|
||||||
|
implementation is available to the public in source code form. A
|
||||||
|
“Major Component”, in this context, means a major essential component
|
||||||
|
(kernel, window system, and so on) of the specific operating system
|
||||||
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.</p>
|
||||||
|
|
||||||
|
<p>The “Corresponding Source” for a work in object code form means all
|
||||||
|
the source code needed to generate, install, and (for an executable
|
||||||
|
work) run the object code and to modify the work, including scripts to
|
||||||
|
control those activities. However, it does not include the work's
|
||||||
|
System Libraries, or general-purpose tools or generally available free
|
||||||
|
programs which are used unmodified in performing those activities but
|
||||||
|
which are not part of the work. For example, Corresponding Source
|
||||||
|
includes interface definition files associated with source files for
|
||||||
|
the work, and the source code for shared libraries and dynamically
|
||||||
|
linked subprograms that the work is specifically designed to require,
|
||||||
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.</p>
|
||||||
|
|
||||||
|
<p>The Corresponding Source need not include anything that users
|
||||||
|
can regenerate automatically from other parts of the Corresponding
|
||||||
|
Source.</p>
|
||||||
|
|
||||||
|
<p>The Corresponding Source for a work in source code form is that
|
||||||
|
same work.</p>
|
||||||
|
|
||||||
|
<h4><a id="section2"></a>2. Basic Permissions.</h4>
|
||||||
|
|
||||||
|
<p>All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.</p>
|
||||||
|
|
||||||
|
<p>You may make, run and propagate covered works that you do not
|
||||||
|
convey, without conditions so long as your license otherwise remains
|
||||||
|
in force. You may convey covered works to others for the sole purpose
|
||||||
|
of having them make modifications exclusively for you, or provide you
|
||||||
|
with facilities for running those works, provided that you comply with
|
||||||
|
the terms of this License in conveying all material for which you do
|
||||||
|
not control copyright. Those thus making or running the covered works
|
||||||
|
for you must do so exclusively on your behalf, under your direction
|
||||||
|
and control, on terms that prohibit them from making any copies of
|
||||||
|
your copyrighted material outside their relationship with you.</p>
|
||||||
|
|
||||||
|
<p>Conveying under any other circumstances is permitted solely under
|
||||||
|
the conditions stated below. Sublicensing is not allowed; section 10
|
||||||
|
makes it unnecessary.</p>
|
||||||
|
|
||||||
|
<h4><a id="section3"></a>3. Protecting Users' Legal Rights From Anti-Circumvention Law.</h4>
|
||||||
|
|
||||||
|
<p>No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.</p>
|
||||||
|
|
||||||
|
<p>When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such circumvention
|
||||||
|
is effected by exercising rights under this License with respect to
|
||||||
|
the covered work, and you disclaim any intention to limit operation or
|
||||||
|
modification of the work as a means of enforcing, against the work's
|
||||||
|
users, your or third parties' legal rights to forbid circumvention of
|
||||||
|
technological measures.</p>
|
||||||
|
|
||||||
|
<h4><a id="section4"></a>4. Conveying Verbatim Copies.</h4>
|
||||||
|
|
||||||
|
<p>You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.</p>
|
||||||
|
|
||||||
|
<p>You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.</p>
|
||||||
|
|
||||||
|
<h4><a id="section5"></a>5. Conveying Modified Source Versions.</h4>
|
||||||
|
|
||||||
|
<p>You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these conditions:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.</li>
|
||||||
|
|
||||||
|
<li>b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under section
|
||||||
|
7. This requirement modifies the requirement in section 4 to
|
||||||
|
“keep intact all notices”.</li>
|
||||||
|
|
||||||
|
<li>c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.</li>
|
||||||
|
|
||||||
|
<li>d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
“aggregate” if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.</p>
|
||||||
|
|
||||||
|
<h4><a id="section6"></a>6. Conveying Non-Source Forms.</h4>
|
||||||
|
|
||||||
|
<p>You may convey a covered work in object code form under the terms
|
||||||
|
of sections 4 and 5, provided that you also convey the
|
||||||
|
machine-readable Corresponding Source under the terms of this License,
|
||||||
|
in one of these ways:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.</li>
|
||||||
|
|
||||||
|
<li>b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the
|
||||||
|
Corresponding Source from a network server at no charge.</li>
|
||||||
|
|
||||||
|
<li>c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.</li>
|
||||||
|
|
||||||
|
<li>d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.</li>
|
||||||
|
|
||||||
|
<li>e) Convey the object code using peer-to-peer transmission, provided
|
||||||
|
you inform other peers where the object code and Corresponding
|
||||||
|
Source of the work are being offered to the general public at no
|
||||||
|
charge under subsection 6d.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.</p>
|
||||||
|
|
||||||
|
<p>A “User Product” is either (1) a “consumer product”, which means any
|
||||||
|
tangible personal property which is normally used for personal, family,
|
||||||
|
or household purposes, or (2) anything designed or sold for incorporation
|
||||||
|
into a dwelling. In determining whether a product is a consumer product,
|
||||||
|
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||||
|
product received by a particular user, “normally used” refers to a
|
||||||
|
typical or common use of that class of product, regardless of the status
|
||||||
|
of the particular user or of the way in which the particular user
|
||||||
|
actually uses, or expects or is expected to use, the product. A product
|
||||||
|
is a consumer product regardless of whether the product has substantial
|
||||||
|
commercial, industrial or non-consumer uses, unless such uses represent
|
||||||
|
the only significant mode of use of the product.</p>
|
||||||
|
|
||||||
|
<p>“Installation Information” for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to install
|
||||||
|
and execute modified versions of a covered work in that User Product from
|
||||||
|
a modified version of its Corresponding Source. The information must
|
||||||
|
suffice to ensure that the continued functioning of the modified object
|
||||||
|
code is in no case prevented or interfered with solely because
|
||||||
|
modification has been made.</p>
|
||||||
|
|
||||||
|
<p>If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).</p>
|
||||||
|
|
||||||
|
<p>The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or updates
|
||||||
|
for a work that has been modified or installed by the recipient, or for
|
||||||
|
the User Product in which it has been modified or installed. Access to a
|
||||||
|
network may be denied when the modification itself materially and
|
||||||
|
adversely affects the operation of the network or violates the rules and
|
||||||
|
protocols for communication across the network.</p>
|
||||||
|
|
||||||
|
<p>Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.</p>
|
||||||
|
|
||||||
|
<h4><a id="section7"></a>7. Additional Terms.</h4>
|
||||||
|
|
||||||
|
<p>“Additional permissions” are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.</p>
|
||||||
|
|
||||||
|
<p>When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.</p>
|
||||||
|
|
||||||
|
<p>Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders of
|
||||||
|
that material) supplement the terms of this License with terms:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or</li>
|
||||||
|
|
||||||
|
<li>b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or</li>
|
||||||
|
|
||||||
|
<li>c) Prohibiting misrepresentation of the origin of that material, or
|
||||||
|
requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or</li>
|
||||||
|
|
||||||
|
<li>d) Limiting the use for publicity purposes of names of licensors or
|
||||||
|
authors of the material; or</li>
|
||||||
|
|
||||||
|
<li>e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or</li>
|
||||||
|
|
||||||
|
<li>f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions of
|
||||||
|
it) with contractual assumptions of liability to the recipient, for
|
||||||
|
any liability that these contractual assumptions directly impose on
|
||||||
|
those licensors and authors.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>All other non-permissive additional terms are considered “further
|
||||||
|
restrictions” within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.</p>
|
||||||
|
|
||||||
|
<p>If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.</p>
|
||||||
|
|
||||||
|
<p>Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions;
|
||||||
|
the above requirements apply either way.</p>
|
||||||
|
|
||||||
|
<h4><a id="section8"></a>8. Termination.</h4>
|
||||||
|
|
||||||
|
<p>You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).</p>
|
||||||
|
|
||||||
|
<p>However, if you cease all violation of this License, then your
|
||||||
|
license from a particular copyright holder is reinstated (a)
|
||||||
|
provisionally, unless and until the copyright holder explicitly and
|
||||||
|
finally terminates your license, and (b) permanently, if the copyright
|
||||||
|
holder fails to notify you of the violation by some reasonable means
|
||||||
|
prior to 60 days after the cessation.</p>
|
||||||
|
|
||||||
|
<p>Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.</p>
|
||||||
|
|
||||||
|
<p>Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.</p>
|
||||||
|
|
||||||
|
<h4><a id="section9"></a>9. Acceptance Not Required for Having Copies.</h4>
|
||||||
|
|
||||||
|
<p>You are not required to accept this License in order to receive or
|
||||||
|
run a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.</p>
|
||||||
|
|
||||||
|
<h4><a id="section10"></a>10. Automatic Licensing of Downstream Recipients.</h4>
|
||||||
|
|
||||||
|
<p>Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.</p>
|
||||||
|
|
||||||
|
<p>An “entity transaction” is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.</p>
|
||||||
|
|
||||||
|
<p>You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.</p>
|
||||||
|
|
||||||
|
<h4><a id="section11"></a>11. Patents.</h4>
|
||||||
|
|
||||||
|
<p>A “contributor” is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's “contributor version”.</p>
|
||||||
|
|
||||||
|
<p>A contributor's “essential patent claims” are all patent claims
|
||||||
|
owned or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, “control” includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.</p>
|
||||||
|
|
||||||
|
<p>Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.</p>
|
||||||
|
|
||||||
|
<p>In the following three paragraphs, a “patent license” is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To “grant” such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.</p>
|
||||||
|
|
||||||
|
<p>If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. “Knowingly relying” means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.</p>
|
||||||
|
|
||||||
|
|
||||||
|
<p>If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.</p>
|
||||||
|
|
||||||
|
<p>A patent license is “discriminatory” if it does not include within
|
||||||
|
the scope of its coverage, prohibits the exercise of, or is
|
||||||
|
conditioned on the non-exercise of one or more of the rights that are
|
||||||
|
specifically granted under this License. You may not convey a covered
|
||||||
|
work if you are a party to an arrangement with a third party that is
|
||||||
|
in the business of distributing software, under which you make payment
|
||||||
|
to the third party based on the extent of your activity of conveying
|
||||||
|
the work, and under which the third party grants, to any of the
|
||||||
|
parties who would receive the covered work from you, a discriminatory
|
||||||
|
patent license (a) in connection with copies of the covered work
|
||||||
|
conveyed by you (or copies made from those copies), or (b) primarily
|
||||||
|
for and in connection with specific products or compilations that
|
||||||
|
contain the covered work, unless you entered into that arrangement,
|
||||||
|
or that patent license was granted, prior to 28 March 2007.</p>
|
||||||
|
|
||||||
|
<p>Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.</p>
|
||||||
|
|
||||||
|
<h4><a id="section12"></a>12. No Surrender of Others' Freedom.</h4>
|
||||||
|
|
||||||
|
<p>If conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you may
|
||||||
|
not convey it at all. For example, if you agree to terms that obligate you
|
||||||
|
to collect a royalty for further conveying from those to whom you convey
|
||||||
|
the Program, the only way you could satisfy both those terms and this
|
||||||
|
License would be to refrain entirely from conveying the Program.</p>
|
||||||
|
|
||||||
|
<h4><a id="section13"></a>13. Use with the GNU Affero General Public License.</h4>
|
||||||
|
|
||||||
|
<p>Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU Affero General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the special requirements of the GNU Affero General Public License,
|
||||||
|
section 13, concerning interaction through a network will apply to the
|
||||||
|
combination as such.</p>
|
||||||
|
|
||||||
|
<h4><a id="section14"></a>14. Revised Versions of this License.</h4>
|
||||||
|
|
||||||
|
<p>The Free Software Foundation may publish revised and/or new versions of
|
||||||
|
the GNU General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.</p>
|
||||||
|
|
||||||
|
<p>Each version is given a distinguishing version number. If the
|
||||||
|
Program specifies that a certain numbered version of the GNU General
|
||||||
|
Public License “or any later version” applies to it, you have the
|
||||||
|
option of following the terms and conditions either of that numbered
|
||||||
|
version or of any later version published by the Free Software
|
||||||
|
Foundation. If the Program does not specify a version number of the
|
||||||
|
GNU General Public License, you may choose any version ever published
|
||||||
|
by the Free Software Foundation.</p>
|
||||||
|
|
||||||
|
<p>If the Program specifies that a proxy can decide which future
|
||||||
|
versions of the GNU General Public License can be used, that proxy's
|
||||||
|
public statement of acceptance of a version permanently authorizes you
|
||||||
|
to choose that version for the Program.</p>
|
||||||
|
|
||||||
|
<p>Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.</p>
|
||||||
|
|
||||||
|
<h4><a id="section15"></a>15. Disclaimer of Warranty.</h4>
|
||||||
|
|
||||||
|
<p>THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY
|
||||||
|
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||||
|
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||||
|
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.</p>
|
||||||
|
|
||||||
|
<h4><a id="section16"></a>16. Limitation of Liability.</h4>
|
||||||
|
|
||||||
|
<p>IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||||
|
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||||
|
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||||
|
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||||
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||||
|
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||||
|
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGES.</p>
|
||||||
|
|
||||||
|
<h4><a id="section17"></a>17. Interpretation of Sections 15 and 16.</h4>
|
||||||
|
|
||||||
|
<p>If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.</p>
|
||||||
|
|
||||||
|
<p>END OF TERMS AND CONDITIONS</p>
|
||||||
|
|
||||||
|
<h3><a id="howto"></a>How to Apply These Terms to Your New Programs</h3>
|
||||||
|
|
||||||
|
<p>If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.</p>
|
||||||
|
|
||||||
|
<p>To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
state the exclusion of warranty; and each file should have at least
|
||||||
|
the “copyright” line and a pointer to where the full notice is found.</p>
|
||||||
|
|
||||||
|
<pre> <one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p>Also add information on how to contact you by electronic and paper mail.</p>
|
||||||
|
|
||||||
|
<p>If the program does terminal interaction, make it output a short
|
||||||
|
notice like this when it starts in an interactive mode:</p>
|
||||||
|
|
||||||
|
<pre> <program> Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p>The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, your program's commands
|
||||||
|
might be different; for a GUI interface, you would use an “about box”.</p>
|
||||||
|
|
||||||
|
<p>You should also get your employer (if you work as a programmer) or school,
|
||||||
|
if any, to sign a “copyright disclaimer” for the program, if necessary.
|
||||||
|
For more information on this, and how to apply and follow the GNU GPL, see
|
||||||
|
<<a href="https://www.gnu.org/licenses/">https://www.gnu.org/licenses/</a>>.</p>
|
||||||
|
|
||||||
|
<p>The GNU General Public License does not permit incorporating your program
|
||||||
|
into proprietary programs. If your program is a subroutine library, you
|
||||||
|
may consider it more useful to permit linking proprietary applications with
|
||||||
|
the library. If this is what you want to do, use the GNU Lesser General
|
||||||
|
Public License instead of this License. But first, please read
|
||||||
|
<<a href="https://www.gnu.org/philosophy/why-not-lgpl.html">https://www.gnu.org/philosophy/why-not-lgpl.html</a>>.</p>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<hr/>
|
||||||
|
<a href="https://validator.w3.org/check?uri=referer"><img
|
||||||
|
src="//www.w3.org/Icons/valid-xhtml10-blue"
|
||||||
|
alt="Valid XHTML 1.0 Transitional" height="31" width="88" style="float: right; margin: 1em;" /></a>
|
||||||
|
<a href="https://jigsaw.w3.org/css-validator/">
|
||||||
|
<img src="//jigsaw.w3.org/css-validator/images/vcss-blue" style="float: right; margin: 1em;"
|
||||||
|
alt="Valid CSS" />
|
||||||
|
</a>
|
||||||
|
</html>
|
||||||
674
documentation/license.txt
Normal file
674
documentation/license.txt
Normal file
@@ -0,0 +1,674 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The GNU General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works.
|
||||||
|
|
||||||
|
The licenses for most software and other practical works are designed
|
||||||
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
the GNU General Public License is intended to guarantee your freedom to
|
||||||
|
share and change all versions of a program--to make sure it remains free
|
||||||
|
software for all its users. We, the Free Software Foundation, use the
|
||||||
|
GNU General Public License for most of our software; it applies also to
|
||||||
|
any other work released this way by its authors. You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to prevent others from denying you
|
||||||
|
these rights or asking you to surrender the rights. Therefore, you have
|
||||||
|
certain responsibilities if you distribute copies of the software, or if
|
||||||
|
you modify it: responsibilities to respect the freedom of others.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must pass on to the recipients the same
|
||||||
|
freedoms that you received. You must make sure that they, too, receive
|
||||||
|
or can get the source code. And you must show them these terms so they
|
||||||
|
know their rights.
|
||||||
|
|
||||||
|
Developers that use the GNU GPL protect your rights with two steps:
|
||||||
|
(1) assert copyright on the software, and (2) offer you this License
|
||||||
|
giving you legal permission to copy, distribute and/or modify it.
|
||||||
|
|
||||||
|
For the developers' and authors' protection, the GPL clearly explains
|
||||||
|
that there is no warranty for this free software. For both users' and
|
||||||
|
authors' sake, the GPL requires that modified versions be marked as
|
||||||
|
changed, so that their problems will not be attributed erroneously to
|
||||||
|
authors of previous versions.
|
||||||
|
|
||||||
|
Some devices are designed to deny users access to install or run
|
||||||
|
modified versions of the software inside them, although the manufacturer
|
||||||
|
can do so. This is fundamentally incompatible with the aim of
|
||||||
|
protecting users' freedom to change the software. The systematic
|
||||||
|
pattern of such abuse occurs in the area of products for individuals to
|
||||||
|
use, which is precisely where it is most unacceptable. Therefore, we
|
||||||
|
have designed this version of the GPL to prohibit the practice for those
|
||||||
|
products. If such problems arise substantially in other domains, we
|
||||||
|
stand ready to extend this provision to those domains in future versions
|
||||||
|
of the GPL, as needed to protect the freedom of users.
|
||||||
|
|
||||||
|
Finally, every program is threatened constantly by software patents.
|
||||||
|
States should not allow patents to restrict development and use of
|
||||||
|
software on general-purpose computers, but in those that do, we wish to
|
||||||
|
avoid the special danger that patents applied to a free program could
|
||||||
|
make it effectively proprietary. To prevent this, the GPL assures that
|
||||||
|
patents cannot be used to render the program non-free.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
0. Definitions.
|
||||||
|
|
||||||
|
"This License" refers to version 3 of the GNU General Public License.
|
||||||
|
|
||||||
|
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||||
|
works, such as semiconductor masks.
|
||||||
|
|
||||||
|
"The Program" refers to any copyrightable work licensed under this
|
||||||
|
License. Each licensee is addressed as "you". "Licensees" and
|
||||||
|
"recipients" may be individuals or organizations.
|
||||||
|
|
||||||
|
To "modify" a work means to copy from or adapt all or part of the work
|
||||||
|
in a fashion requiring copyright permission, other than the making of an
|
||||||
|
exact copy. The resulting work is called a "modified version" of the
|
||||||
|
earlier work or a work "based on" the earlier work.
|
||||||
|
|
||||||
|
A "covered work" means either the unmodified Program or a work based
|
||||||
|
on the Program.
|
||||||
|
|
||||||
|
To "propagate" a work means to do anything with it that, without
|
||||||
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
|
To "convey" a work means any kind of propagation that enables other
|
||||||
|
parties to make or receive copies. Mere interaction with a user through
|
||||||
|
a computer network, with no transfer of a copy, is not conveying.
|
||||||
|
|
||||||
|
An interactive user interface displays "Appropriate Legal Notices"
|
||||||
|
to the extent that it includes a convenient and prominently visible
|
||||||
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
|
tells the user that there is no warranty for the work (except to the
|
||||||
|
extent that warranties are provided), that licensees may convey the
|
||||||
|
work under this License, and how to view a copy of this License. If
|
||||||
|
the interface presents a list of user commands or options, such as a
|
||||||
|
menu, a prominent item in the list meets this criterion.
|
||||||
|
|
||||||
|
1. Source Code.
|
||||||
|
|
||||||
|
The "source code" for a work means the preferred form of the work
|
||||||
|
for making modifications to it. "Object code" means any non-source
|
||||||
|
form of a work.
|
||||||
|
|
||||||
|
A "Standard Interface" means an interface that either is an official
|
||||||
|
standard defined by a recognized standards body, or, in the case of
|
||||||
|
interfaces specified for a particular programming language, one that
|
||||||
|
is widely used among developers working in that language.
|
||||||
|
|
||||||
|
The "System Libraries" of an executable work include anything, other
|
||||||
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
|
packaging a Major Component, but which is not part of that Major
|
||||||
|
Component, and (b) serves only to enable use of the work with that
|
||||||
|
Major Component, or to implement a Standard Interface for which an
|
||||||
|
implementation is available to the public in source code form. A
|
||||||
|
"Major Component", in this context, means a major essential component
|
||||||
|
(kernel, window system, and so on) of the specific operating system
|
||||||
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.
|
||||||
|
|
||||||
|
The "Corresponding Source" for a work in object code form means all
|
||||||
|
the source code needed to generate, install, and (for an executable
|
||||||
|
work) run the object code and to modify the work, including scripts to
|
||||||
|
control those activities. However, it does not include the work's
|
||||||
|
System Libraries, or general-purpose tools or generally available free
|
||||||
|
programs which are used unmodified in performing those activities but
|
||||||
|
which are not part of the work. For example, Corresponding Source
|
||||||
|
includes interface definition files associated with source files for
|
||||||
|
the work, and the source code for shared libraries and dynamically
|
||||||
|
linked subprograms that the work is specifically designed to require,
|
||||||
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.
|
||||||
|
|
||||||
|
The Corresponding Source need not include anything that users
|
||||||
|
can regenerate automatically from other parts of the Corresponding
|
||||||
|
Source.
|
||||||
|
|
||||||
|
The Corresponding Source for a work in source code form is that
|
||||||
|
same work.
|
||||||
|
|
||||||
|
2. Basic Permissions.
|
||||||
|
|
||||||
|
All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.
|
||||||
|
|
||||||
|
You may make, run and propagate covered works that you do not
|
||||||
|
convey, without conditions so long as your license otherwise remains
|
||||||
|
in force. You may convey covered works to others for the sole purpose
|
||||||
|
of having them make modifications exclusively for you, or provide you
|
||||||
|
with facilities for running those works, provided that you comply with
|
||||||
|
the terms of this License in conveying all material for which you do
|
||||||
|
not control copyright. Those thus making or running the covered works
|
||||||
|
for you must do so exclusively on your behalf, under your direction
|
||||||
|
and control, on terms that prohibit them from making any copies of
|
||||||
|
your copyrighted material outside their relationship with you.
|
||||||
|
|
||||||
|
Conveying under any other circumstances is permitted solely under
|
||||||
|
the conditions stated below. Sublicensing is not allowed; section 10
|
||||||
|
makes it unnecessary.
|
||||||
|
|
||||||
|
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||||
|
|
||||||
|
No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.
|
||||||
|
|
||||||
|
When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such circumvention
|
||||||
|
is effected by exercising rights under this License with respect to
|
||||||
|
the covered work, and you disclaim any intention to limit operation or
|
||||||
|
modification of the work as a means of enforcing, against the work's
|
||||||
|
users, your or third parties' legal rights to forbid circumvention of
|
||||||
|
technological measures.
|
||||||
|
|
||||||
|
4. Conveying Verbatim Copies.
|
||||||
|
|
||||||
|
You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.
|
||||||
|
|
||||||
|
5. Conveying Modified Source Versions.
|
||||||
|
|
||||||
|
You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.
|
||||||
|
|
||||||
|
b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under section
|
||||||
|
7. This requirement modifies the requirement in section 4 to
|
||||||
|
"keep intact all notices".
|
||||||
|
|
||||||
|
c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.
|
||||||
|
|
||||||
|
d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.
|
||||||
|
|
||||||
|
A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
"aggregate" if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.
|
||||||
|
|
||||||
|
6. Conveying Non-Source Forms.
|
||||||
|
|
||||||
|
You may convey a covered work in object code form under the terms
|
||||||
|
of sections 4 and 5, provided that you also convey the
|
||||||
|
machine-readable Corresponding Source under the terms of this License,
|
||||||
|
in one of these ways:
|
||||||
|
|
||||||
|
a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.
|
||||||
|
|
||||||
|
b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the
|
||||||
|
Corresponding Source from a network server at no charge.
|
||||||
|
|
||||||
|
c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.
|
||||||
|
|
||||||
|
d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.
|
||||||
|
|
||||||
|
e) Convey the object code using peer-to-peer transmission, provided
|
||||||
|
you inform other peers where the object code and Corresponding
|
||||||
|
Source of the work are being offered to the general public at no
|
||||||
|
charge under subsection 6d.
|
||||||
|
|
||||||
|
A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.
|
||||||
|
|
||||||
|
A "User Product" is either (1) a "consumer product", which means any
|
||||||
|
tangible personal property which is normally used for personal, family,
|
||||||
|
or household purposes, or (2) anything designed or sold for incorporation
|
||||||
|
into a dwelling. In determining whether a product is a consumer product,
|
||||||
|
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||||
|
product received by a particular user, "normally used" refers to a
|
||||||
|
typical or common use of that class of product, regardless of the status
|
||||||
|
of the particular user or of the way in which the particular user
|
||||||
|
actually uses, or expects or is expected to use, the product. A product
|
||||||
|
is a consumer product regardless of whether the product has substantial
|
||||||
|
commercial, industrial or non-consumer uses, unless such uses represent
|
||||||
|
the only significant mode of use of the product.
|
||||||
|
|
||||||
|
"Installation Information" for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to install
|
||||||
|
and execute modified versions of a covered work in that User Product from
|
||||||
|
a modified version of its Corresponding Source. The information must
|
||||||
|
suffice to ensure that the continued functioning of the modified object
|
||||||
|
code is in no case prevented or interfered with solely because
|
||||||
|
modification has been made.
|
||||||
|
|
||||||
|
If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).
|
||||||
|
|
||||||
|
The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or updates
|
||||||
|
for a work that has been modified or installed by the recipient, or for
|
||||||
|
the User Product in which it has been modified or installed. Access to a
|
||||||
|
network may be denied when the modification itself materially and
|
||||||
|
adversely affects the operation of the network or violates the rules and
|
||||||
|
protocols for communication across the network.
|
||||||
|
|
||||||
|
Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.
|
||||||
|
|
||||||
|
7. Additional Terms.
|
||||||
|
|
||||||
|
"Additional permissions" are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.
|
||||||
|
|
||||||
|
When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders of
|
||||||
|
that material) supplement the terms of this License with terms:
|
||||||
|
|
||||||
|
a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or
|
||||||
|
|
||||||
|
b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or
|
||||||
|
|
||||||
|
c) Prohibiting misrepresentation of the origin of that material, or
|
||||||
|
requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or
|
||||||
|
|
||||||
|
d) Limiting the use for publicity purposes of names of licensors or
|
||||||
|
authors of the material; or
|
||||||
|
|
||||||
|
e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or
|
||||||
|
|
||||||
|
f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions of
|
||||||
|
it) with contractual assumptions of liability to the recipient, for
|
||||||
|
any liability that these contractual assumptions directly impose on
|
||||||
|
those licensors and authors.
|
||||||
|
|
||||||
|
All other non-permissive additional terms are considered "further
|
||||||
|
restrictions" within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.
|
||||||
|
|
||||||
|
If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.
|
||||||
|
|
||||||
|
Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions;
|
||||||
|
the above requirements apply either way.
|
||||||
|
|
||||||
|
8. Termination.
|
||||||
|
|
||||||
|
You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your
|
||||||
|
license from a particular copyright holder is reinstated (a)
|
||||||
|
provisionally, unless and until the copyright holder explicitly and
|
||||||
|
finally terminates your license, and (b) permanently, if the copyright
|
||||||
|
holder fails to notify you of the violation by some reasonable means
|
||||||
|
prior to 60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.
|
||||||
|
|
||||||
|
9. Acceptance Not Required for Having Copies.
|
||||||
|
|
||||||
|
You are not required to accept this License in order to receive or
|
||||||
|
run a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.
|
||||||
|
|
||||||
|
10. Automatic Licensing of Downstream Recipients.
|
||||||
|
|
||||||
|
Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.
|
||||||
|
|
||||||
|
An "entity transaction" is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.
|
||||||
|
|
||||||
|
You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.
|
||||||
|
|
||||||
|
11. Patents.
|
||||||
|
|
||||||
|
A "contributor" is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's "contributor version".
|
||||||
|
|
||||||
|
A contributor's "essential patent claims" are all patent claims
|
||||||
|
owned or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, "control" includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.
|
||||||
|
|
||||||
|
In the following three paragraphs, a "patent license" is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To "grant" such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.
|
||||||
|
|
||||||
|
If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. "Knowingly relying" means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.
|
||||||
|
|
||||||
|
If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.
|
||||||
|
|
||||||
|
A patent license is "discriminatory" if it does not include within
|
||||||
|
the scope of its coverage, prohibits the exercise of, or is
|
||||||
|
conditioned on the non-exercise of one or more of the rights that are
|
||||||
|
specifically granted under this License. You may not convey a covered
|
||||||
|
work if you are a party to an arrangement with a third party that is
|
||||||
|
in the business of distributing software, under which you make payment
|
||||||
|
to the third party based on the extent of your activity of conveying
|
||||||
|
the work, and under which the third party grants, to any of the
|
||||||
|
parties who would receive the covered work from you, a discriminatory
|
||||||
|
patent license (a) in connection with copies of the covered work
|
||||||
|
conveyed by you (or copies made from those copies), or (b) primarily
|
||||||
|
for and in connection with specific products or compilations that
|
||||||
|
contain the covered work, unless you entered into that arrangement,
|
||||||
|
or that patent license was granted, prior to 28 March 2007.
|
||||||
|
|
||||||
|
Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.
|
||||||
|
|
||||||
|
12. No Surrender of Others' Freedom.
|
||||||
|
|
||||||
|
If conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you may
|
||||||
|
not convey it at all. For example, if you agree to terms that obligate you
|
||||||
|
to collect a royalty for further conveying from those to whom you convey
|
||||||
|
the Program, the only way you could satisfy both those terms and this
|
||||||
|
License would be to refrain entirely from conveying the Program.
|
||||||
|
|
||||||
|
13. Use with the GNU Affero General Public License.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU Affero General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the special requirements of the GNU Affero General Public License,
|
||||||
|
section 13, concerning interaction through a network will apply to the
|
||||||
|
combination as such.
|
||||||
|
|
||||||
|
14. Revised Versions of this License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions of
|
||||||
|
the GNU General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Program specifies that a certain numbered version of the GNU General
|
||||||
|
Public License "or any later version" applies to it, you have the
|
||||||
|
option of following the terms and conditions either of that numbered
|
||||||
|
version or of any later version published by the Free Software
|
||||||
|
Foundation. If the Program does not specify a version number of the
|
||||||
|
GNU General Public License, you may choose any version ever published
|
||||||
|
by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Program specifies that a proxy can decide which future
|
||||||
|
versions of the GNU General Public License can be used, that proxy's
|
||||||
|
public statement of acceptance of a version permanently authorizes you
|
||||||
|
to choose that version for the Program.
|
||||||
|
|
||||||
|
Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.
|
||||||
|
|
||||||
|
15. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||||
|
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||||
|
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||||
|
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. Limitation of Liability.
|
||||||
|
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||||
|
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||||
|
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||||
|
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||||
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||||
|
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||||
|
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGES.
|
||||||
|
|
||||||
|
17. Interpretation of Sections 15 and 16.
|
||||||
|
|
||||||
|
If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
state the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program does terminal interaction, make it output a short
|
||||||
|
notice like this when it starts in an interactive mode:
|
||||||
|
|
||||||
|
<program> Copyright (C) <year> <name of author>
|
||||||
|
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, your program's commands
|
||||||
|
might be different; for a GUI interface, you would use an "about box".
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or school,
|
||||||
|
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||||
|
For more information on this, and how to apply and follow the GNU GPL, see
|
||||||
|
<http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
The GNU General Public License does not permit incorporating your program
|
||||||
|
into proprietary programs. If your program is a subroutine library, you
|
||||||
|
may consider it more useful to permit linking proprietary applications with
|
||||||
|
the library. If this is what you want to do, use the GNU Lesser General
|
||||||
|
Public License instead of this License. But first, please read
|
||||||
|
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||||
666
documentation/optimization.html
Normal file
666
documentation/optimization.html
Normal file
@@ -0,0 +1,666 @@
|
|||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<title>Chamilo Optimization Guide</title>
|
||||||
|
<link rel="stylesheet" href="../web/assets/bootstrap/dist/css/bootstrap.css" type="text/css" media="screen,projection" />
|
||||||
|
<link rel="stylesheet" href="default.css" type="text/css" media="screen,projection" />
|
||||||
|
<link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav class="navbar navbar-default navbar-fixed-top">
|
||||||
|
<div class="container">
|
||||||
|
<div class="navbar-header">
|
||||||
|
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
|
||||||
|
<span class="sr-only">Toggle navigation</span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
</button>
|
||||||
|
<a class="navbar-brand" href="#">Chamilo - Documentation</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="collapse navbar-collapse">
|
||||||
|
<ul class="nav navbar-nav">
|
||||||
|
<li><a href="index.html">Home</a></li>
|
||||||
|
<li class="active"><a href="readme.html">About</a></li>
|
||||||
|
<li><a href="license.html">License</a></li>
|
||||||
|
<li><a href="credits.html">Credits</a></li>
|
||||||
|
<li ><a href="dependencies.html">Dependencies</a></li>
|
||||||
|
<li><a href="changelog.html">Changelog</a></li>
|
||||||
|
</ul>
|
||||||
|
</div><!--/.nav-collapse -->
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<div class="container">
|
||||||
|
<h1>Chamilo : Optimization Guide</h1>
|
||||||
|
|
||||||
|
<a href="index.html">Documentation</a> > Optimization Guide
|
||||||
|
|
||||||
|
<p>In seldom cases, you will need to start looking into efficiency issues
|
||||||
|
with Chamilo. This guide is a work in progress intended to help
|
||||||
|
administrators optimize their Chamilo installation.</p>
|
||||||
|
|
||||||
|
|
||||||
|
<h2><b>Contents</b></h2>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li><a href="#1.Using-XCache">Using opcaches</a></li>
|
||||||
|
<li><a href="#2.Slow-queries">Slow queries</a></li>
|
||||||
|
<li><a href="#3.Indexes-caching">Indexes caching</a></li>
|
||||||
|
<li><a href="#4.Sessions-directories">Sessions directories</a></li>
|
||||||
|
<li><a href="#5.Users-upload-directories">Users upload directories</a></li>
|
||||||
|
<li><a href="#6.Zlib-compression">Zlib compressed output</a></li>
|
||||||
|
<li><a href="#7.High-numbers-memory">Memory considerations for high numbers of users</a></li>
|
||||||
|
<li><a href="#8.Avoid-non-fixed-values">Avoiding non-fixed values</a></li>
|
||||||
|
<li><a href="#9.xsendfile">Speeding file downloads with mod_xsendfile</a></li>
|
||||||
|
<li><a href="#10.igbinary">IGBinary for faster courses backups and better sessions</a></li>
|
||||||
|
<li><a href="#11.permissions-check">Removing files download permissions check</a></li>
|
||||||
|
<li><a href="#12.MySQL-compression">MySQL/MariaDB compression</a></li>
|
||||||
|
<li><a href="#13.increasing-php-limits">Increasing PHP limits</a></li>
|
||||||
|
<li><a href="#14.Enable-cache">Enable cache</a></li>
|
||||||
|
<li><a href="#15.Enable-text-compression">Enable text compression</a></li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<h2><a id="1.Using-XCache"></a>1. Using opcaches</h2>
|
||||||
|
<h3>Zend OpCode (Zend Optimizer+)</h3>
|
||||||
|
From version 5.5, PHP includes the Zend OpCache Optimizer, which can
|
||||||
|
bring considerable efficiency improvements and is very reliable.
|
||||||
|
|
||||||
|
Using OpCache should come by default, but if you want to make sure it's
|
||||||
|
running, just check that your opcache.ini config file says
|
||||||
|
<pre>opcache.enable = 1</pre>
|
||||||
|
Some websites will recommend the addition of additional settings, and this
|
||||||
|
is really up to you. Check
|
||||||
|
<a href="https://php.net/manual/en/opcache.configuration.php">the official OpCache config page for more information</a>.
|
||||||
|
|
||||||
|
To check if OpCache is effectively running, you can check the
|
||||||
|
<a href="/main/admin/system_status.php?section=php">Chamilo systems status page</a>
|
||||||
|
on the administration page, or you can check it in phpinfo, if you have any script with it.
|
||||||
|
|
||||||
|
Zend OpCache is an "opcode" cache, meaning it will compile static code to make their processing faster.
|
||||||
|
However, this will not allow you to "store" shared variables in memory between all users. To do that, we suggest
|
||||||
|
you complement Zend OpCache (opcode) with a user-land cache like APCu.
|
||||||
|
|
||||||
|
<h3>APCu</h3>
|
||||||
|
You can also check whether APCu is working or not from the systems status page. Check
|
||||||
|
<a href="https://php.net/manual/en/apcu.configuration.php">the official APCu config page</a>
|
||||||
|
for configuration options.
|
||||||
|
|
||||||
|
In previous versions, this optimization guide contained information about how to use xCache, APC or Memcache to
|
||||||
|
boost the number of online users. However, starting from version 1.11, code has been added to Chamilo to use
|
||||||
|
APCu by default from the banner.lib.php library, so as long as APCu is installed and running, you'll benefit from
|
||||||
|
this optimization naturally.
|
||||||
|
|
||||||
|
<h3>Other items</h3>
|
||||||
|
|
||||||
|
<p>It is also worth noting that the Université de Genève, Switzerland, observed
|
||||||
|
that the calculation of the total size used by course documents is one of
|
||||||
|
the heaviest queries in Chamilo, so you might want to cache the results of
|
||||||
|
this one as well, using the same technique.</p>
|
||||||
|
|
||||||
|
<p>Finally, if your portal is highly public *and* you are showing the popular
|
||||||
|
courses on the homepage, you might want to also reduce the amount of
|
||||||
|
queries this generates, using the same technique as above, but for the
|
||||||
|
main/inc/lib/auth.lib.php library, looking for the
|
||||||
|
"Tracking::get_course_connections_count()" call:</p>
|
||||||
|
<pre>
|
||||||
|
while ($row = Database::fetch_array($result)) {
|
||||||
|
$row['registration_code'] = !empty($row['registration_code']);
|
||||||
|
$count_users = CourseManager::get_users_count_in_course($row['code']);
|
||||||
|
$xc = function_exists('apc_exists');
|
||||||
|
if ($xc) {
|
||||||
|
$apc = apc_cache_info(null, true);
|
||||||
|
$apx_end = $apc['start_time']+$apx['ttl'];
|
||||||
|
if (apc_exists('my_campus_course_visits_'.$row['code']) AND (time() < $apc_end) AND apc_fetch('my_campus_course_visits_'.$row['code']) > 0) {
|
||||||
|
$count_connections_last_month = apc_fetch('my_campus_course_visits_'.$row['code']);
|
||||||
|
} else {
|
||||||
|
$count_connections_last_month = Tracking::get_course_connections_count($row['code'], 0, api_get_utc_datetime(time() - (30 * 86400)));
|
||||||
|
apc_store('my_campus_course_visits_'.$row['code'], $count_connections_last_month, $apc['ttl']);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$count_connections_last_month = Tracking::get_course_connections_count($row['code'], 0, api_get_utc_datetime(time() - (30 * 86400)));
|
||||||
|
}
|
||||||
|
...
|
||||||
|
}
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
Finally, the Free Campus of Chamilo has a very specific case of slow query:
|
||||||
|
the courses catalog! Because there might be more than 32,000 courses in
|
||||||
|
there, getting the number of "Connections last month" can be a disastrous
|
||||||
|
query in terms of performances. This is why you should try to cache the
|
||||||
|
results as well.<br />
|
||||||
|
Obviously, as we are speaking about showing the number of visits this month,
|
||||||
|
it doesn't really matter if the number doesn't refresh for an hour or so...<br />
|
||||||
|
Locate the main/inc/lib/course_category.lib.php file, open it and go to the
|
||||||
|
browseCoursesInCategory() function.<br />
|
||||||
|
Locate the $count_connections_last_month = Tracking::get_course_connections_count(...)
|
||||||
|
call, and wrap in into something like this (you'll have to update this to use APCu):
|
||||||
|
<pre>
|
||||||
|
$xc = method_exists('Memcached', 'add');
|
||||||
|
if ($xc) {
|
||||||
|
// Make sure the server is available
|
||||||
|
$xm = new Memcached;
|
||||||
|
$xm->addServer('localhost', 11211);
|
||||||
|
// The following concatenates the name of the database + the id of the
|
||||||
|
// access url to make it a unique variable prefix for the variables to
|
||||||
|
// be stored
|
||||||
|
$xs = $_configuration['main_database'].'_'.$_configuration['access_url'].'_';
|
||||||
|
}
|
||||||
|
$result = Database::query($sql);
|
||||||
|
$courses = array();
|
||||||
|
while ($row = Database::fetch_array($result)) {
|
||||||
|
$row['registration_code'] = !empty($row['registration_code']);
|
||||||
|
$count_users = CourseManager::get_users_count_in_course($row['code']);
|
||||||
|
if ($xc) {
|
||||||
|
if ($xm->get($xs.'cccount_'.$row['code'])) {
|
||||||
|
$number = $xm->get($xs.'cccount_'.$row['code']);
|
||||||
|
} else {
|
||||||
|
$count_connections_last_month = Tracking::get_course_connections_count($row['code'], 0, api_get_utc_datetime(time() - (30 * 86400)));
|
||||||
|
$xm->set($xs.'cccount_'.$row['code'], $count_connections_last_month, 3600);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$count_connections_last_month = Tracking::get_course_connections_count($row['code'], 0, api_get_utc_datetime(time() - (30 * 86400)));
|
||||||
|
}
|
||||||
|
...
|
||||||
|
</pre>
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<h2><a id="2.Slow-queries"></a>2. Slow queries</h2>
|
||||||
|
Enable slow_queries in /etc/mysqld/my.cnf, restart MySQL then follow using sudo tail -f /var/log/mysql/mysql-slow.log
|
||||||
|
<br /><br />
|
||||||
|
In Chamilo 1.9 in particular, due to the merge of all databases into one, you might experience performance issues.<br />
|
||||||
|
To solve this performance issue, you can execute the following query manually in your database:<br />
|
||||||
|
<pre>
|
||||||
|
ALTER TABLE user_rel_tag ADD INDEX idx_user_rel_tag_user (user_id);
|
||||||
|
</pre>
|
||||||
|
<br /><br />
|
||||||
|
In Chamilo 1.10.0 (the first version of the serie), many indexes were forgotten, so you can boost your database by adding the following indexes:<br />
|
||||||
|
<pre>
|
||||||
|
alter table extra_field_values add index idx_extra_field_values (field_id, item_id);
|
||||||
|
alter table usergroup_rel_user add index idx_usergroup_ru (usergroup_id);
|
||||||
|
alter table usergroup_rel_user add index idx_usergroup_ru_u (user_id);
|
||||||
|
alter table c_student_publication add index idxstudpub_cid (c_id);
|
||||||
|
alter table c_student_publication add index idxstudpub_uid (user_id);
|
||||||
|
alter table c_quiz_question add index idx_cqq_cid (c_id);
|
||||||
|
alter table c_quiz_rel_question ADD INDEX idx_cqrq_qid (question_id);
|
||||||
|
alter table c_quiz_rel_question ADD INDEX idx_cqrq_cid (c_id);
|
||||||
|
alter table c_quiz_answer add index idx_qa_cidqid (c_id, question_id);
|
||||||
|
</pre>
|
||||||
|
In Chamilo 1.10.6, two additional queries were confirmed to still have effect a considerable effect:
|
||||||
|
<pre>
|
||||||
|
ALTER TABLE c_quiz_question_rel_category ADD INDEX idx_qqrc_qid (question_id);
|
||||||
|
ALTER TABLE c_lp_item_view ADD INDEX idx_clpiv_c_i_v (c_id, id, view_count);
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
Note that, because these situations only occur when a portal is under real-world high-load stress, we only get to
|
||||||
|
find out about these possible bottlenecks after we release stable versions of Chamilo. This is why we list those
|
||||||
|
queries here. However, as soon as we confirm them with a few real life scenarios, we add them into the core of
|
||||||
|
Chamilo, so you can benefit from them immediately by installing a new version.
|
||||||
|
<p>In Chamilo 1.11.x you can boost the DB tables related surveys invitations by adding the following indexes:</p>
|
||||||
|
<pre>
|
||||||
|
|
||||||
|
ALTER TABLE c_quiz_answer add index idx_qa_cidqid (c_id, question_id);
|
||||||
|
ALTER TABLE c_lp_item_view ADD INDEX idx_clpiv_c_i_v (c_id, id, view_count);
|
||||||
|
CREATE INDEX idx_survey_q_qid ON c_survey_question (question_id);
|
||||||
|
CREATE INDEX idx_survey_code ON c_survey (code);
|
||||||
|
CREATE INDEX idx_survey_inv_code ON c_survey_invitation (survey_code);
|
||||||
|
CREATE INDEX idx_survey_qo_qid ON c_survey_question_option (question_id);
|
||||||
|
CREATE INDEX idx_c_survey_answerucsq ON c_survey_answer (user, c_id, survey_id, question_id);
|
||||||
|
|
||||||
|
# Also by adding a index on access_url_rel_session to improve the course/session list
|
||||||
|
CREATE INDEX idx_accessurs_sid ON access_url_rel_session (session_id);
|
||||||
|
|
||||||
|
# If you have lots of gradebook stuff, add this
|
||||||
|
ALTER TABLE gradebook_result ADD INDEX idx_gb_uid_eid (user_id, evaluation_id);
|
||||||
|
ALTER TABLE gradebook_category ADD INDEX idx_gb_cat_parent (parent_id);
|
||||||
|
ALTER TABLE gradebook_evaluation ADD INDEX idx_ge_cat (category_id);
|
||||||
|
ALTER TABLE gradebook_link ADD INDEX idx_gl_cat (category_id);
|
||||||
|
|
||||||
|
# If you have to delete a lot of users, you'll realize deleting users is a slow operation.
|
||||||
|
# Using the following queries might help:
|
||||||
|
ALTER TABLE extra_field_values ADD INDEX idx_efv_item (item_id);
|
||||||
|
ALTER TABLE c_document ADD INDEX idx_cdoc_path (path);
|
||||||
|
ALTER TABLE c_document ADD INDEX idx_cdoc_size (size);
|
||||||
|
ALTER TABLE c_document ADD INDEX idx_cdoc_id (id);
|
||||||
|
ALTER TABLE c_document add index idx_cdoc_type (filetype);
|
||||||
|
ALTER TABLE c_document add index idx_cdoc_sid (session_id);
|
||||||
|
|
||||||
|
ALTER TABLE track_e_attempt ADD INDEX idx_track_e_attempt_tms (tms);
|
||||||
|
ALTER TABLE track_e_login CHANGE login_date login_date DATETIME NOT NULL;
|
||||||
|
ALTER TABLE track_e_login ADD INDEX idx_track_e_login_date (login_date);
|
||||||
|
ALTER TABLE track_e_login ADD INDEX idx_track_e_login_user_id (login_user_id);
|
||||||
|
ALTER TABLE track_e_login ADD INDEX idx_track_e_login_user_date (login_user_id, login_date);
|
||||||
|
ALTER TABLE track_e_course_access ADD INDEX idx_teca_countconn (c_id, session_id, login_course_date);
|
||||||
|
ALTER TABLE track_e_course_access ADD INDEX idx_c_id_session_user (c_id, session_id, user_id);
|
||||||
|
ALTER TABLE track_e_course_access ADD INDEX idx_session_user_login (session_id, user_id, login_course_date);
|
||||||
|
|
||||||
|
ALTER TABLE extra_field_values ADD INDEX idx_efv_fv1 (field_id, value(1));
|
||||||
|
ALTER TABLE message ADD INDEX idx_message_senddate (send_date);
|
||||||
|
|
||||||
|
CREATE INDEX idx_message_receiver_status_send_date ON message (user_receiver_id, msg_status, send_date);
|
||||||
|
CREATE INDEX idx_message_status ON message (msg_status);
|
||||||
|
CREATE INDEX idx_message_user_receiver_status ON message (user_receiver_id, msg_status);
|
||||||
|
CREATE INDEX idx_msg_urid ON message (user_receiver_id);
|
||||||
|
|
||||||
|
ALTER TABLE c_item_property CHANGE insert_date insert_date DATETIME NOT NULL, CHANGE lastedit_date lastedit_date DATETIME NOT NULL;
|
||||||
|
# If you have to delete a lot of users, you'll realize deleting users is a slow operation.
|
||||||
|
# Using the following queries might help:
|
||||||
|
ALTER TABLE c_item_property ADD INDEX idx_cip_lasteditu (lastedit_user_id);
|
||||||
|
ALTER TABLE c_item_property ADD INDEX idx_item_property_visibility (visibility);
|
||||||
|
ALTER TABLE c_item_property ADD INDEX idx_cip_ctv (c_id, tool(25), visibility);
|
||||||
|
ALTER TABLE c_dropbox_person ADD INDEX idx_file(file_id);
|
||||||
|
|
||||||
|
ALTER TABLE c_chat_connected ADD INDEX idx_user_course_session(user_id, c_id, session_id);
|
||||||
|
ALTER TABLE c_chat_connected ADD INDEX idx_user_course_group(user_id, c_id, to_group_id);
|
||||||
|
|
||||||
|
ALTER TABLE c_chat_connected ADD INDEX idx_course_session(c_id, session_id);
|
||||||
|
ALTER TABLE c_chat_connected ADD INDEX idx_course_group(c_id, to_group_id);
|
||||||
|
-- For big online exams, this index reduces the load considerably
|
||||||
|
ALTER TABLE c_quiz_question ADD INDEX idx_cqq_cidid (c_id, id);
|
||||||
|
ALTER TABLE c_quiz_question ADD INDEX idx_cqq_type (type);
|
||||||
|
-- If you have many messages with attachments
|
||||||
|
ALTER TABLE message_attachment ADD index idx_msgat_msgid (message_id);
|
||||||
|
-- If you query audit logs from track_e_default on huge tables
|
||||||
|
ALTER TABLE track_e_default ADD INDEX idx_ted_uid (default_user_id);
|
||||||
|
ALTER TABLE track_e_default ADD INDEX idx_ted_et (default_event_type);
|
||||||
|
</pre>
|
||||||
|
<hr />
|
||||||
|
<h2><a id="3.Indexes-caching"></a>3. Indexes caching</h2>
|
||||||
|
One good reference: <a href="https://dev.mysql.com/doc/refman/5.6/en/multiple-key-caches.html">MySQL documentation on multiple key caches</a><br />
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<h2><a id="4.Sessions-directories"></a>4. Sessions directories</h2>
|
||||||
|
|
||||||
|
<p>On large implementations, the users sessions might be stored in numbers too large (hundreds of thousands) to be
|
||||||
|
efficiently managed by the filesystem is stored in one single folder. In order to avoid that, you can either store
|
||||||
|
your sessions in another key-value storage (memcache, redis, etc.) or you can instruct PHP to store your session
|
||||||
|
files in a directory with a certain level of subdirectories (so sessions are spread across multiple directories
|
||||||
|
instead of inside just one.</p>
|
||||||
|
|
||||||
|
<p>This is done by adding the following setting to your php.ini or your Apache's Virtual Host</p>
|
||||||
|
<pre>php_admin_value session.save_path 1;/var/www/test.chamilo.org/sessions/</pre>
|
||||||
|
<p>Please note that, by defining a different directory than your system's default, you will need to reconfigure
|
||||||
|
your system's session cleaning procedure, which is usually defined under /etc/cron.d/php, so that it cleans
|
||||||
|
this specific directory as well.</p>
|
||||||
|
<hr />
|
||||||
|
<h2><a id="5.Users-upload-directories"></a>5. Users upload directories</h2>
|
||||||
|
The default in Chamilo is now to spread user accounts in 10 different directories inside app/upload/users/ to avoid
|
||||||
|
overloading that specific directory. Nothing to be done here. Please move on.
|
||||||
|
<hr />
|
||||||
|
<h2><a id="6.Zlib-compression"></a>6. Zlib compressed output</h2>
|
||||||
|
Although this will not make your server faster, compressing the pages you are sending to the users will definitely
|
||||||
|
make them feel like your website's responses are a lot faster, and thus increase their well-being when using Chamilo.<br /><br />
|
||||||
|
Zlib output compression has to be set at two levels: PHP configuration for PHP pages and Apache for images and CSS.<br /><br />
|
||||||
|
To update the PHP configuration (either in php.ini or in your VirtualHost), use the
|
||||||
|
<a href="https://php.net/manual/en/zlib.configuration.php">zlib.output_compression</a>. If you set this inside your
|
||||||
|
Apache's VirtualHost, you should use the following syntax.
|
||||||
|
<pre>
|
||||||
|
php_value zlib.output_compression 1
|
||||||
|
</pre>
|
||||||
|
<br />
|
||||||
|
Configuring your Apache server to use output compression is a bit trickier. You have to use <a href="https://httpd.apache.org/docs/2.2/mod/mod_deflate.html">the mod_deflate module</a> to do it. Your configuration should look like something like this (please read the corresponding documentation before implementing in production).<br />
|
||||||
|
Easy mode:
|
||||||
|
<pre>
|
||||||
|
AddOutputFilterByType DEFLATE text/html text/plain text/xml
|
||||||
|
</pre> or, for every content type (dangerous) you can put the following inside a location or directory block:<pre>SetOutputFilter DEFLATE</pre>
|
||||||
|
<br />
|
||||||
|
Advanced mode:
|
||||||
|
<pre>
|
||||||
|
<Location />
|
||||||
|
# Insert filter
|
||||||
|
SetOutputFilter DEFLATE
|
||||||
|
|
||||||
|
# Netscape 4.x has some problems...
|
||||||
|
BrowserMatch ^Mozilla/4 gzip-only-text/html
|
||||||
|
|
||||||
|
# Netscape 4.06-4.08 have some more problems
|
||||||
|
BrowserMatch ^Mozilla/4\.0[678] no-gzip
|
||||||
|
|
||||||
|
# MSIE masquerades as Netscape, but it is fine
|
||||||
|
# BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
|
||||||
|
|
||||||
|
# NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
|
||||||
|
# the above regex won't work. You can use the following
|
||||||
|
# workaround to get the desired effect:
|
||||||
|
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
|
||||||
|
|
||||||
|
# Don't compress images
|
||||||
|
SetEnvIfNoCase Request_URI \
|
||||||
|
\.(?:gif|jpe?g|png)$ no-gzip dont-vary
|
||||||
|
|
||||||
|
# Make sure proxies don't deliver the wrong content
|
||||||
|
Header append Vary User-Agent env=!dont-vary
|
||||||
|
</Location>
|
||||||
|
</pre>
|
||||||
|
<hr />
|
||||||
|
Don't have time or resources to optimize your Chamilo installation yourself? Hire an <a href="https://www.chamilo.org/en/providers">official Chamilo provider</a> and get it sorted out professionally by specialists.
|
||||||
|
<a href="https://validator.w3.org/check?uri=referer"><img src="//www.w3.org/Icons/valid-xhtml10-blue" alt="Valid XHTML 1.0 Transitional" style="margin: 1em; float: right;" height="31" width="88" /></a>
|
||||||
|
<a href="https://jigsaw.w3.org/css-validator/">
|
||||||
|
<img src="//jigsaw.w3.org/css-validator/images/vcss-blue" style="margin: 1em; float: right;" alt="Valid CSS" />
|
||||||
|
</a>
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<h2><a id="7.High-numbers-memory"></a>Memory considerations for high numbers of users</h2>
|
||||||
|
Some administration scripts *have to* handle lists of all users, and this might have a considerable impact on portals with very high numbers of users. For example, the main/admin/add_users_to_session.php script that handles the registration of users into a specific session, if used with the (non-default) full list of users, will devour about 3KB per user, which, for 100,000 users, translates into the need for around 300MB of RAM just to show this page, and to around 3GB for 1,000,000 users.<br />
|
||||||
|
This mode is not loaded by default, but could still be selected, leading to a "Fatal error: Allowed memory size ... exhausted" message.<br />
|
||||||
|
The only non-scripted solution here is to allow for the corresponding amount of RAM for your PHP configuration (<em>memory_limit = 300M</em>) or your specific VirtualHost if you use mod-php5 (<em>php_value memory_limit 300M</em>).<br/>
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<h2><a id="8.Avoid-non-fixed-values"></a>Avoiding dynamic values</h2>
|
||||||
|
Many things in Chamilo are written focusing on the ease of use, even for the
|
||||||
|
administrator. Sometimes, these settings are weighing a little bit more on
|
||||||
|
the system. This is the case, between others, of the mail.conf.php file
|
||||||
|
(being loaded unconditionally) and its CONSTANT "IS_WINDOWS_OS", which is
|
||||||
|
defined by a function call (api_is_windows_os()) at the beginning of
|
||||||
|
main_api.lib.php.
|
||||||
|
|
||||||
|
The definition of this constant (which is executed at *every* page load) can
|
||||||
|
easily be avoided, and the only place where it is used unconditionally
|
||||||
|
(mail.conf.php) can be modified to set the line as you expect it
|
||||||
|
(depending on whether you use sendmail/exim or smtp).
|
||||||
|
<pre>
|
||||||
|
$platform_email['SMTP_MAILER'] = 'smtp';
|
||||||
|
</pre>
|
||||||
|
or
|
||||||
|
<pre>
|
||||||
|
$platform_email['SMTP_MAILER'] = 'mail';
|
||||||
|
</pre>
|
||||||
|
In fact, the complete loading of mail.conf.php can also be avoided if
|
||||||
|
loaded conditionally (with <i>require_once</i>) when sending an
|
||||||
|
e-mail (which is the only case where it is useful).
|
||||||
|
<p>
|
||||||
|
As an additional node, on very active portals with a lot of courses
|
||||||
|
for each user, the icons that appear next to the courses illustrating
|
||||||
|
changes in the corresponding course might be heavyweighted. You can
|
||||||
|
alter slightly the behaviour by not querying for notifications you
|
||||||
|
don't care about, like dropbox, notebook or chat. Change this in
|
||||||
|
main/inc/lib/display.lib.php, in function show_notification().
|
||||||
|
</p>
|
||||||
|
<hr />
|
||||||
|
<h2><a id="9.xsendfile"></a>Speeding file downloads with mod_xsendfile</h2>
|
||||||
|
<p>It might have come to your attention that file downloads through Chamilo
|
||||||
|
might get slow, under default conditions, in particular using Apache 2.</p>
|
||||||
|
<p>There are several ways to fix this, one of which is removing the .htaccess
|
||||||
|
inside the courses/ directory. This, however, will remove all permissions
|
||||||
|
checks on the files contained in this directory, so... most of the time,
|
||||||
|
not ideal unless your portal is *really* open to the world.</p>
|
||||||
|
<p>Another technique, revealed to us by
|
||||||
|
<a href="https://stackoverflow.com/users/46594/virtualblackfox">VirtualBlackFox</a>
|
||||||
|
on <a href="https://stackoverflow.com/questions/3697748/fastest-way-to-serve-a-file-using-php">this Stackoverflow post</a>,
|
||||||
|
is to use the X-SendFile module for Apache 2.2+ (other web servers might
|
||||||
|
offer other solutions, or avoid the problem initially).</p>
|
||||||
|
<p>Installing the X-SendFile module will depend on your operating system,
|
||||||
|
but if you use Ubuntu, you'll have to check you are including the "universe"
|
||||||
|
repository inside your packages sources (check /etc/apt/sources.list), then:
|
||||||
|
<pre>
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install libapache2-mod-xsendfile
|
||||||
|
sudo service apache2 restart
|
||||||
|
</pre>
|
||||||
|
Once you're done with installing, you'll have to configure Chamilo to use it.<br />
|
||||||
|
First, edit your VirtualHost or your Apache configuration in general (in Ubuntu,
|
||||||
|
check the /etc/apache2/ or /etc/apache2/sites-available/ folder). This is done
|
||||||
|
by adding the following line inside your configuration, and reloading Apache
|
||||||
|
(example provided on the basis of a virtual host located in
|
||||||
|
/etc/apache2/sites-available/my.chamilo.net.conf) :
|
||||||
|
<pre>
|
||||||
|
sudo vim /etc/apache2/sites-available/my.chamilo.net.conf
|
||||||
|
# add the following line:
|
||||||
|
X-SendFile on
|
||||||
|
# exit the file
|
||||||
|
sudo service apache2 reload
|
||||||
|
</pre>
|
||||||
|
Finally, you'll have to go to your Chamilo configuration file, and add the
|
||||||
|
following line at the very bottom of the file main/inc/conf/configuration.php:
|
||||||
|
<pre>
|
||||||
|
$_configuration['enable_x_sendfile_headers'] = true;
|
||||||
|
</pre>
|
||||||
|
Done! Now your downloads should go substantially faster. This is still a
|
||||||
|
feature in observation. We're not sure the benefits are sufficient, so
|
||||||
|
don't hesitate to let us know in
|
||||||
|
<a href="https://support.chamilo.org/issues/6853">the related issue in Chamilo's tracking system</a>
|
||||||
|
</p>
|
||||||
|
<hr />
|
||||||
|
<h2><a id="10.igbinary"></a>IGBinary for courses backups and better
|
||||||
|
sessions management</h2>
|
||||||
|
<p>
|
||||||
|
<a href="https://pecl.php.net/package/igbinary">IGBinary</a> is a small PECL
|
||||||
|
library that replaces the PHP serializer. It uses less space (so less
|
||||||
|
memory for serialized objects) and is particularly efficient with memory-based
|
||||||
|
storages (like Memcached). Use it for course backups
|
||||||
|
(see <a href="https://support.chamilo.org/issues/4443">issue 4443</a>) or
|
||||||
|
<a href="https://www.neanderthal-technology.com/2011/11/ubuntu-10-install-php-memcached-with-igbinary-support/">to boost sessions management</a>.
|
||||||
|
</p>
|
||||||
|
<hr />
|
||||||
|
<h2><a id="11.permissions-check"></a>Removing files download permissions check</h2>
|
||||||
|
<p>
|
||||||
|
This measure is not cumulative with mod_xsendfile explained above. It is not *recommended*
|
||||||
|
either, as it removes an important security layer.<br />
|
||||||
|
<br />
|
||||||
|
In Chamilo, for security and tracking purposes, all downloaded files pass through PHP
|
||||||
|
scripts that check whether the user has access to the file given his/her current
|
||||||
|
permissions. This process requires important database accesses and processing, which
|
||||||
|
might terminally affect your server's performance. In particular, this can
|
||||||
|
have a huge effect if having hundreds of simultaneous users accessing
|
||||||
|
learning paths pages composed of local resources.<br /><br />
|
||||||
|
The logic behind this verification is that, whatever resources that needs to be
|
||||||
|
downloaded/viewed that come from the /courses/ directory, the /courses/.htaccess
|
||||||
|
file with get in the middle and redirect these accesses to a PHP script
|
||||||
|
(usually called download.php but there are more than one depending on the
|
||||||
|
type of resource).<br /><br />
|
||||||
|
If you want to speed up files accesses, and you don't really care about whom can
|
||||||
|
see your files, then an option is to simply change this redirection to
|
||||||
|
download.php and let Apache treat the file directly.<br /><br />
|
||||||
|
Furthermore, using a PHP script for the download (unless you have special rules)
|
||||||
|
will usually prevent static content caching, which will multiply downloads
|
||||||
|
and use large amounts of additional bandwidth.<br /><br />
|
||||||
|
Typically, the .htaccess will look like this (with additional comments):<br />
|
||||||
|
<pre>
|
||||||
|
<IfModule mod_rewrite.c>
|
||||||
|
RewriteEngine On
|
||||||
|
RewriteBase /courses/
|
||||||
|
RewriteCond %{REQUEST_URI} !^/main/
|
||||||
|
RewriteRule ([^/]+)/document/(.*)&(.*)$ $1/document/$2///$3 [N]
|
||||||
|
RewriteRule ([^/]+)/scorm/(.*)$ /main/document/download_scorm.php?doc_url=/$2&cDir=$1 [QSA,L]
|
||||||
|
RewriteRule ([^/]+)/document/(.*)$ /main/document/download.php?doc_url=/$2&cDir=$1 [QSA,L]
|
||||||
|
RewriteRule ([^/]+)/work/(.*)$ /main/work/download.php?file=work/$2&cDir=$1 [QSA,L]
|
||||||
|
</IfModule>
|
||||||
|
</pre><br />
|
||||||
|
The idea is to allow direct access (without access validation) to resources in the "scorm" directory with:
|
||||||
|
<pre>
|
||||||
|
<IfModule mod_rewrite.c>
|
||||||
|
RewriteEngine On
|
||||||
|
RewriteBase /courses/
|
||||||
|
RewriteCond %{REQUEST_URI} !^/main/
|
||||||
|
RewriteRule ([^/]+)/document/(.*)&(.*)$ $1/document/$2///$3 [N]
|
||||||
|
RewriteRule ([^/]+)/scorm/(.*)$ /app/courses/$1/scorm/$2 [QSA,L]
|
||||||
|
RewriteRule ([^/]+)/document/(.*)$ /main/document/download.php?doc_url=/$2&cDir=$1 [QSA,L]
|
||||||
|
RewriteRule ([^/]+)/work/(.*)$ /main/work/download.php?file=work/$2&cDir=$1 [QSA,L]
|
||||||
|
</IfModule>
|
||||||
|
</pre><br />
|
||||||
|
This is easy, doesn't require a server reload, and you should see the results pretty
|
||||||
|
quickly. As mentioned above, if security of your content is an issue, though,
|
||||||
|
you should avoid using this technique.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
You can also mitigate the risk by disabling permissions check only
|
||||||
|
for some static resource like css,js and fonts files.
|
||||||
|
<br/>
|
||||||
|
For that is required to load header module
|
||||||
|
in apache (check with a2enmod in your favorite root terminal)<br />
|
||||||
|
add these lines after RewriteBase /courses/:
|
||||||
|
<pre>
|
||||||
|
<IfModule mod_headers.c>
|
||||||
|
# all file name ended with these extensions names will bypass the permission check (and also served by the browser cache at the next request)
|
||||||
|
<FilesMatch "\.(gif|jpg|jpeg|png|js|pdf|ico|icon|css|swf|avi|mp3|ogg|wav|ttf|otf|eot|woff)$">
|
||||||
|
Header unset Cache-Control
|
||||||
|
Header set Cache-Control "public, max-age=29030400"
|
||||||
|
RequestHeader unset Cookie
|
||||||
|
Header unset ETag
|
||||||
|
</FilesMatch>
|
||||||
|
</IfModule>
|
||||||
|
# also adjust files here
|
||||||
|
RewriteRule (\.(html|gif|jpg|jpeg|png|js|pdf|ico|icon|css|swf|avi|mp3|ogg|wav|ttf|otf|eot|woff))$ - [L]
|
||||||
|
</pre>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Since version 1.11.10, the .htaccess has been modified to do this by default with media files, and a change post-1.11.10 also does it for documents that are not in a SCORM folder. These changes will improve speed considerably but will lower the security on media files, as a direct link could be used to open the file with no validation. As such, you can comment those lines with media files to ensure increased security, at the cost of performance. These are the two lines (followed by their more wide-ranging rule) that have to be present in .htaccess for maximum efficiency.
|
||||||
|
<pre>
|
||||||
|
RewriteRule ^courses/([^/]+)/scorm/(.*\.(js|css|png|jpg|jpeg|gif))$ app/courses/$1/scorm/$2 [QSA,L]
|
||||||
|
RewriteRule ^courses/([^/]+)/scorm/(.*)$ main/document/download_scorm.php?doc_url=/$2&cDir=$1 [QSA,L]
|
||||||
|
[...]
|
||||||
|
RewriteRule ^courses/([^/]+)/document/(.*\.(js|css|png|jpg|jpeg|gif|mp4|webm|avi|mpeg|mp3|wav|ogg]))$ app/courses/$1/document/$2 [QSA,L]
|
||||||
|
RewriteRule ^courses/([^/]+)/document/(.*)$ main/document/download.php?doc_url=/$2&cDir=$1 [QSA,L]
|
||||||
|
</pre>
|
||||||
|
</p>
|
||||||
|
<hr />
|
||||||
|
<h2><a id="12.MySQL-compression"></a>MySQL/MariaDB compression</h2>
|
||||||
|
<p>
|
||||||
|
If your database server is separate from your web server, you have to play with
|
||||||
|
bandwidth, firewalls, and network restrictions in general.<br />
|
||||||
|
In particular, when dealing with large-scale portals, the time a SQL query
|
||||||
|
will take to return to the web server will take longer and, eventually,
|
||||||
|
in the most critical cases, will take <b>too long</b>, and your web servers
|
||||||
|
will be completely overloaded (load average very high because the system
|
||||||
|
is waiting for I/O operations, but processors usage not being very high
|
||||||
|
is a clear sign of this).<br />
|
||||||
|
To solve this kind of issues, MySQL and MariaDB offer a data compression
|
||||||
|
mechanism, which will reduce the amount of data passed between PHP and
|
||||||
|
the database server. Ultimately, this reduction will lower bandwidth
|
||||||
|
usage and reduce the impact of numerous and heavy data requests (and
|
||||||
|
save you).<br />
|
||||||
|
In 1.10.0, we have added the possibility to enable this compression very
|
||||||
|
easily, from the configuration.php file, defining a secret parameter called
|
||||||
|
db_client_flags. The database connection library changed in 1.11.0 and this
|
||||||
|
possibility was removed until 1.11.12. where you can now use client flags
|
||||||
|
by defining an array (it is very important to define it as an array) in
|
||||||
|
configuration.php, like this:
|
||||||
|
<pre>
|
||||||
|
$_configuration['db_client_flags'] = [0x00000020];
|
||||||
|
</pre>
|
||||||
|
The values used in the array (in this case CLIENT_COMPRESS) are the hexadecimal
|
||||||
|
values documented in the <a href="https://dev.mysql.com/doc/internals/en/capability-flags.html">MySQL</a>
|
||||||
|
documentation. There is no corresponding documentation for MariaDB, so we assume
|
||||||
|
most of these flags will work in MariaDB too. The PDO driver for MySQL
|
||||||
|
doesn't seem to understand the constants related to those flags, so you
|
||||||
|
have to use the hexadecimal value directly.
|
||||||
|
Changing CLIENT_COMPRESS will only have a positive impact if the CPU
|
||||||
|
utilisation is low and the bandwidth utilisation is high in your specific
|
||||||
|
use case, so make sure you analyze this properly.
|
||||||
|
</p>
|
||||||
|
<hr />
|
||||||
|
<h2><a id="13.increasing-php-limits"></a>Increasing PHP limits</h2>
|
||||||
|
<p>
|
||||||
|
As your use of Chamilo increases, and you get above the thousands of users,
|
||||||
|
you're likely to hit a few milestones set by PHP to avoid hacks.
|
||||||
|
One of them is PHP5.4's Suhosin extension limit post_max_vars, which was
|
||||||
|
extended into PHP5.5 and above through the max_input_vars limit. This limit
|
||||||
|
is usually set to 1000. What does it mean?<br />
|
||||||
|
It means that, when you manipulate any list greater than 1000 items, PHP will
|
||||||
|
automatically remove anything sent above the first 1000 registers (usually
|
||||||
|
a little bit less because it needs to add the other input fields of the page).
|
||||||
|
For example, if subscribing 5 new users to a course where you already have
|
||||||
|
1000 users subscribed, you will remain at 1000, although the 1000 will not
|
||||||
|
necessarily be the 1000 that were there in the first place (they are sent
|
||||||
|
in order of the elements inside the form, so probably alphabetically,
|
||||||
|
depending on the page).<br /><br />
|
||||||
|
Increasing this limit to a higher level (say 10,000 instead of 1000) should
|
||||||
|
be relatively safe, considering your application is normally not open to
|
||||||
|
the public (and so also open to the evil kind of users). So, in your
|
||||||
|
php.ini, this limit should now look like this:<br />
|
||||||
|
<pre>
|
||||||
|
max_input_vars = 10000
|
||||||
|
</pre><br /><br />
|
||||||
|
A number of other limits might also become an issue in the long run, like
|
||||||
|
memory_limit, post_max_size, etc. We have given reasonnable recommendations
|
||||||
|
in the installation process for these values, but remember that if you
|
||||||
|
have a larger portal than anyone else, you probably need to give it more
|
||||||
|
care than anyone else.
|
||||||
|
</p>
|
||||||
|
<h2><a id="14.Enable-cache"></a>Enable cache</h2>
|
||||||
|
<pre>
|
||||||
|
# Enable cache
|
||||||
|
<IfModule mod_expires.c>
|
||||||
|
ExpiresActive On
|
||||||
|
|
||||||
|
# Images
|
||||||
|
ExpiresByType image/jpeg "access plus 1 year"
|
||||||
|
ExpiresByType image/gif "access plus 1 year"
|
||||||
|
ExpiresByType image/png "access plus 1 year"
|
||||||
|
ExpiresByType image/webp "access plus 1 year"
|
||||||
|
ExpiresByType image/svg+xml "access plus 1 year"
|
||||||
|
ExpiresByType image/x-icon "access plus 1 year"
|
||||||
|
|
||||||
|
# Video
|
||||||
|
ExpiresByType video/webm "access plus 1 year"
|
||||||
|
ExpiresByType video/mp4 "access plus 1 year"
|
||||||
|
ExpiresByType video/mpeg "access plus 1 year"
|
||||||
|
|
||||||
|
# Fonts
|
||||||
|
ExpiresByType font/ttf "access plus 1 year"
|
||||||
|
ExpiresByType font/otf "access plus 1 year"
|
||||||
|
ExpiresByType font/woff "access plus 1 year"
|
||||||
|
ExpiresByType font/woff2 "access plus 1 year"
|
||||||
|
ExpiresByType application/font-woff "access plus 1 year"
|
||||||
|
|
||||||
|
# CSS, JavaScript
|
||||||
|
ExpiresByType text/css "access plus 1 year"
|
||||||
|
ExpiresByType text/javascript "access plus 1 year"
|
||||||
|
ExpiresByType application/javascript "access plus 1 year"
|
||||||
|
|
||||||
|
# Others
|
||||||
|
ExpiresByType application/pdf "access plus 1 year"
|
||||||
|
ExpiresByType image/vnd.microsoft.icon "access plus 1 year"
|
||||||
|
</IfModule>
|
||||||
|
</IfModule>
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<h2><a id="15.Enable-text-compression"></a>Enable text compression</h2>
|
||||||
|
<pre>
|
||||||
|
# Enable text compression
|
||||||
|
<IfModule mod_deflate.c>
|
||||||
|
# Compress HTML, CSS, JavaScript, Text, XML and fonts
|
||||||
|
AddOutputFilterByType DEFLATE application/javascript
|
||||||
|
AddOutputFilterByType DEFLATE application/rss+xml
|
||||||
|
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
|
||||||
|
AddOutputFilterByType DEFLATE application/x-font
|
||||||
|
AddOutputFilterByType DEFLATE application/x-font-opentype
|
||||||
|
AddOutputFilterByType DEFLATE application/x-font-otf
|
||||||
|
AddOutputFilterByType DEFLATE application/x-font-truetype
|
||||||
|
AddOutputFilterByType DEFLATE application/x-font-ttf
|
||||||
|
AddOutputFilterByType DEFLATE application/x-javascript
|
||||||
|
AddOutputFilterByType DEFLATE application/xhtml+xml
|
||||||
|
AddOutputFilterByType DEFLATE application/xml
|
||||||
|
AddOutputFilterByType DEFLATE font/opentype
|
||||||
|
AddOutputFilterByType DEFLATE font/otf
|
||||||
|
AddOutputFilterByType DEFLATE font/ttf
|
||||||
|
AddOutputFilterByType DEFLATE image/svg+xml
|
||||||
|
AddOutputFilterByType DEFLATE image/x-icon
|
||||||
|
AddOutputFilterByType DEFLATE text/css
|
||||||
|
AddOutputFilterByType DEFLATE text/html
|
||||||
|
AddOutputFilterByType DEFLATE text/javascript
|
||||||
|
AddOutputFilterByType DEFLATE text/plain
|
||||||
|
AddOutputFilterByType DEFLATE text/xml
|
||||||
|
|
||||||
|
# Remove browser bugs (only needed for really old browsers)
|
||||||
|
BrowserMatch ^Mozilla/4 gzip-only-text/html
|
||||||
|
BrowserMatch ^Mozilla/4\.0[678] no-gzip
|
||||||
|
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
|
||||||
|
Header append Vary User-Agent
|
||||||
|
</IfModule>
|
||||||
|
</pre>
|
||||||
|
<hr />
|
||||||
|
<h2>Authors</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Document redacted and maintained by Yannick Warnier, Zend Certified PHP Engineer, BeezNest Belgium SPRL, <a href="mailto:yannick.warnier@beeznest.com">yannick.warnier@beeznest.com</a>.</li>
|
||||||
|
</ul>
|
||||||
|
<hr />
|
||||||
|
Don't have time or resources to optimize your Chamilo installation
|
||||||
|
yourself? Hire an <a href="//www.chamilo.org/en/providers">official Chamilo provider</a> and get it sorted out professionally by specialists.<br />
|
||||||
|
<a href="https://validator.w3.org/check?uri=referer"><img src="//www.w3.org/Icons/valid-xhtml10-blue" alt="Valid XHTML 1.0 Transitional" style="margin: 1em; float: right;" height="31" width="88" /></a>
|
||||||
|
<a href="https://jigsaw.w3.org/css-validator/">
|
||||||
|
<img src="//jigsaw.w3.org/css-validator/images/vcss-blue" style="margin: 1em; float: right;" alt="Valid CSS" />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
152
documentation/readme.html
Normal file
152
documentation/readme.html
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<title>Chamilo Information</title>
|
||||||
|
<link rel="stylesheet" href="../web/assets/bootstrap/dist/css/bootstrap.css" type="text/css" media="screen,projection" />
|
||||||
|
<link rel="stylesheet" href="default.css" type="text/css" media="screen,projection" />
|
||||||
|
<link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav class="navbar navbar-default navbar-fixed-top">
|
||||||
|
<div class="container">
|
||||||
|
<div class="navbar-header">
|
||||||
|
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
|
||||||
|
<span class="sr-only">Toggle navigation</span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
</button>
|
||||||
|
<a class="navbar-brand" href="#">Chamilo - Documentation</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="collapse navbar-collapse">
|
||||||
|
<ul class="nav navbar-nav">
|
||||||
|
<li><a href="index.html">Home</a></li>
|
||||||
|
<li class="active"><a href="readme.html">About</a></li>
|
||||||
|
<li><a href="license.html">License</a></li>
|
||||||
|
<li><a href="credits.html">Credits</a></li>
|
||||||
|
<li ><a href="dependencies.html">Dependencies</a></li>
|
||||||
|
<li><a href="changelog.html">Changelog</a></li>
|
||||||
|
</ul>
|
||||||
|
</div><!--/.nav-collapse -->
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
|
||||||
|
<ul class="breadcrumb">
|
||||||
|
<li>
|
||||||
|
<a href="index.html">Documentation</a>
|
||||||
|
<span class="divider">/</span>
|
||||||
|
</li>
|
||||||
|
<li>About Chamilo</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h1>About Chamilo</h1>
|
||||||
|
<p>Chamilo is an e-learning and course management web application, a free software under the GNU/GPLv3+ license.
|
||||||
|
It's translated into more 30 languages, SCORM 1.2 compatible, light and flexible.</p>
|
||||||
|
|
||||||
|
<p>Chamilo supports many different kinds of learning and collaboration activities.
|
||||||
|
Teachers/trainers can create, manage and publish their courses through the web.
|
||||||
|
Students/trainees can follow courses, read content or participate actively
|
||||||
|
through groups, forums, chat.
|
||||||
|
Administrators provide support to trainers and trainee</p>
|
||||||
|
|
||||||
|
|
||||||
|
<p>Technically, Chamilo is a web application written in PHP that stores data in a MySQL database.
|
||||||
|
Users access it using a web browser.
|
||||||
|
The first stable version of Chamilo, 1.8.6.2 Salto, was based on the Dokeos(TM) 1.8.6.1 code and
|
||||||
|
can be used to upgrade institutions away from Dokeos or Claroline 1.*.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<p>If you would like to know more or help develop this software, please visit<br />
|
||||||
|
our homepage at <a href="https://chamilo.org">https://chamilo.org</a></p>
|
||||||
|
<h1>SCORM</h1>
|
||||||
|
Chamilo imports and manages SCORM 1.2 contents.<br />
|
||||||
|
For more information on SCORM normalisation, see https://www.adlnet.org<br />
|
||||||
|
Chamilo does not implement the full set of SCORM 1.2 specifications, as many are not mandatory.
|
||||||
|
Check our website for more details.<br />
|
||||||
|
<h1>IMS/LTI</h1>
|
||||||
|
Since version 1.11.10, Chamilo also fully supports IMS/LTI 1, 1.1, 1.1.1, Outcomes and Deep Linking.<br />
|
||||||
|
Since version 1.11.12, Chamilo also fully supports IMS/LTI 1.3.<br />
|
||||||
|
|
||||||
|
<h1>License</h1>
|
||||||
|
|
||||||
|
<p>Chamilo is distributed under the GNU General Public license (GNU/GPLv3+).<br />
|
||||||
|
|
||||||
|
Read the <a href="license.html">GNU General Public license (GPL)</a> .</p>
|
||||||
|
|
||||||
|
|
||||||
|
<h1>Portability</h1>
|
||||||
|
<p>Chamilo is an AMP software. This means it should work on any platform running Apache<br />
|
||||||
|
+ MySQL + PHP. It is then supposed to work on the following Operating Systems :</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li> Linux</li>
|
||||||
|
<li> Windows (98, Me, NT4, 2000, XP, VISTA)</li>
|
||||||
|
<li> Unix</li>
|
||||||
|
<li> Mac OS X</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<p>It has been tested on </p>
|
||||||
|
<ul>
|
||||||
|
<li> Fedora, Mandrake, Red Hat Enterprise Server, CentOS, Ubuntu, Debian</li>
|
||||||
|
<li> Windows XP, Windows 2000</li>
|
||||||
|
<li> Mac OS X 10.3</li>
|
||||||
|
</ul>
|
||||||
|
We officially recommend Debian and Ubuntu operating systems for their security, packaging system, community and
|
||||||
|
availability to the public.<br />
|
||||||
|
|
||||||
|
<p>E-mail functions remain silent on systems where there is no mail sending software
|
||||||
|
(Sendmail, Postfix, Exim4, Hamster...), which is the case by default on a Windows machine.</p>
|
||||||
|
|
||||||
|
<h1>Interoperability</h1>
|
||||||
|
|
||||||
|
<p>Chamilo imports SCORM 1.2 compliant learning contents. It imports "On the shelves"
|
||||||
|
contents from many companies : NETg, Skillsoft, Explio, Microsoft, Macromedia, etc.</p>
|
||||||
|
|
||||||
|
<p>Admin interface imports users through CSV and XML. You can create a CSV file
|
||||||
|
from a list of users in MS-Excel. OpenOffice can export to both CSV and XML
|
||||||
|
formats.<br />
|
||||||
|
Many database management systems, like Oracle, SAP, Access, SQL-Server, LDAP, etc
|
||||||
|
export to CSV and/or XML.</p>
|
||||||
|
|
||||||
|
<p>Chamilo includes an LDAP module that allows admin to disable database
|
||||||
|
authentication and replace it by connecting to an LDAP directory.</p>
|
||||||
|
|
||||||
|
<p>Client side, Chamilo runs on any browser : Firefox, Internet Explorer
|
||||||
|
(11+), Chrome, Safari, Opera, ...<br />
|
||||||
|
For better user experience, we recommend Firefox (you can download it
|
||||||
|
freely from <a href="https://getfirefox.com">https://getfirefox.com</a>).</p>
|
||||||
|
|
||||||
|
<h1>Chamilo.org</h1>
|
||||||
|
|
||||||
|
<p>Chamilo is also an association, backed up by a network of private partners
|
||||||
|
to assist companies and institutions in their e-learning projects. This
|
||||||
|
network also promotes professional versions of Chamilo solutions, which
|
||||||
|
consist of complete packages of services (see https://chamilo.org/providers
|
||||||
|
for more details)</p>
|
||||||
|
|
||||||
|
<h1>Certification</h1>
|
||||||
|
|
||||||
|
<p>The Chamilo association offers official certification programs through its
|
||||||
|
official providers. These certifications are available for affordable fees.
|
||||||
|
Check https://shop.beeznest.com for more info and to take the certification
|
||||||
|
test directly.</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<em>Association Contact address</em>: <br />
|
||||||
|
Mail: <a href="mailto:info@chamilo.org">info@chamilo.org</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
<a href="https://validator.w3.org/check?uri=referer"><img src="//www.w3.org/Icons/valid-xhtml10-blue" alt="Valid XHTML 1.0 Transitional" style="margin: 1em; float: right;" height="31" width="88" /></a>
|
||||||
|
<a href="https://jigsaw.w3.org/css-validator/">
|
||||||
|
<img src="//jigsaw.w3.org/css-validator/images/vcss-blue" style="margin: 1em; float: right;" alt="Valid CSS" />
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
290
documentation/security.html
Normal file
290
documentation/security.html
Normal file
@@ -0,0 +1,290 @@
|
|||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<title>Chamilo Security Guide</title>
|
||||||
|
<link rel="stylesheet" href="../web/assets/bootstrap/dist/css/bootstrap.css" type="text/css" media="screen,projection" />
|
||||||
|
<link rel="stylesheet" href="default.css" type="text/css" media="screen,projection" />
|
||||||
|
<link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>Chamilo LMS: Security Guide</h1>
|
||||||
|
|
||||||
|
<a href="index.html">Documentation</a> > Security Guide
|
||||||
|
|
||||||
|
<p>We recommend you don't take security issues too lightly. Chamilo is security-audited at least once a year,
|
||||||
|
but you're never too sure. This list is a work in progress. Feel free to recommend additional measures by
|
||||||
|
sending us an e-mail at info@chamilo.org.</p>
|
||||||
|
|
||||||
|
<h2><b>Contents</b></h2>
|
||||||
|
<ol>
|
||||||
|
<li><a href="#1.Disclosing-server-info">Disclosing server info</a></li>
|
||||||
|
<li><a href="#2.Keeping-up-to-date">Keeping up to date</a></li>
|
||||||
|
<li><a href="#3.Using-safe-browsers">Using safe browsers</a></li>
|
||||||
|
<li><a href="#4.Moving-config-file">Moving your configuration file out of the web directory</a></li>
|
||||||
|
<li><a href="#5.Files-permissions">Restricting files permissions</a></li>
|
||||||
|
<li><a href="#6.HSTS">HTTP Headers Security</a></li>
|
||||||
|
<li><a href="#7.Direct-web-access">Direct web access to files</a></li>
|
||||||
|
<li><a href="#8.Disable-webservices">Disable webservices</a></li>
|
||||||
|
<li><a href="#9.Change-password-first-login">Change password on first login</a></li>
|
||||||
|
<li><a href="#10.Hide-breadcrumb">Hide breadcrumb on unauthorized page load</a></li>
|
||||||
|
<li><a href="#11.SVG-and-XSS">SVG and XSS</a></li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<h2><a id="1.Disclosing-server-info"></a>1. Disclosing server info</h2>
|
||||||
|
<p>
|
||||||
|
It is considered a safer behaviour not to disclose server information from your Chamilo page. In order to avoid
|
||||||
|
both web server and PHP information disclosure, you might want to take the following actions:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>Locate the <i>ServerTokens</i> setting inside your Apache configuration and set it to "Prod"</li>
|
||||||
|
<li>Locate the <i>ServerSignature</i> setting inside your Apache configuration and set it to "Off"</li>
|
||||||
|
<li>Locate the <i>expose_php</i> setting inside your PHP configuration and set it to "Off"</li>
|
||||||
|
<li>Reload Apache</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2><a id="2.Keeping-up-to-date"></a>2. Keeping up to date</h2>
|
||||||
|
<p>
|
||||||
|
Make sure you check <a href="https://support.chamilo.org/projects/chamilo-18/wiki/Security_issues">our security
|
||||||
|
issues page</a> from time to time.
|
||||||
|
You can also follow our security Twitter feed: <a href="https://twitter.com/chamilosecurity">https://twitter.com/chamilosecurity</a>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2><a id="3.Using-safe-browsers"></a>3. Using safe browsers</h2>
|
||||||
|
<p> Additionally to lacking the implementation of features that really improve the quality of your browsing the
|
||||||
|
Internet, older browsers tend to have many unresolved security flaws. Using an old browser, you put in danger the
|
||||||
|
security of your computer and the data it contains, but you can also put others in danger by letting crackers take
|
||||||
|
control of it and attacking others.</p>
|
||||||
|
<p>To avoid being a risk to yourself and others, you should download and install a recent browser. We recommend
|
||||||
|
<a href="https://www.getfirefox.com" target="_blank" rel="noopener noreferrer">the latest stable version of Firefox</a>.</p>
|
||||||
|
|
||||||
|
<h2><a id="4.Moving-config-file"></a>4. Moving your configuration file out of the web directory</h2>
|
||||||
|
<p>It is considered unsafe to leave the configuration file inside the app/config/ directory, as it will be directly
|
||||||
|
accessible for all users, which could lead crackers to download it, uninterpreted, and read through your
|
||||||
|
configuration, which could lead to illicit
|
||||||
|
access to your database if that one isn't well protected and many other stuff we'd prefer to avoid. To secure it,
|
||||||
|
move the configuration file out of your web directory. If your Chamilo installation is in /var/www/, move your
|
||||||
|
configuration to /etc/chamilo/configuration.php, for example. Then create a new app/config/configuration.php
|
||||||
|
file, open it, and write the following:</p>
|
||||||
|
<pre>
|
||||||
|
<?php
|
||||||
|
require '/etc/chamilo/configuration.php';
|
||||||
|
</pre>
|
||||||
|
<p>
|
||||||
|
This will prevent direct access to your settings and make it seem totally the same to Chamilo.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2><a id="5.Files-permissions"></a>5. Restricting files permissions</h2>
|
||||||
|
<p>Making all the Chamilo files world-writable will help you install quickly, and it solves many
|
||||||
|
issues for people without much admin experience. However, it's more
|
||||||
|
secure to make a distinct user owner of all the chamilo files and folders,
|
||||||
|
and only give read access to the web server to all files, and write access
|
||||||
|
only to the directories previously mentioned.</p>
|
||||||
|
<p>This way, these files need
|
||||||
|
only be readable and writable by the Apache process owner, not by the
|
||||||
|
entire world. It would also be advisable to make all writable directory
|
||||||
|
refuse the interpretation of PHP files (except for the root of the courses
|
||||||
|
directories).</p>
|
||||||
|
<p>Don't hesitate to hire an experienced administrator to do that,
|
||||||
|
it might be a bit more expensive now, but you'll be happy not to have to lose
|
||||||
|
all of your data to a hacker who attacked your site.</p>
|
||||||
|
<p>Only the following directories have required (or optional) write
|
||||||
|
permissions from the web server:<br />
|
||||||
|
<ul>
|
||||||
|
<li>app/cache/</li>
|
||||||
|
<li>app/courses/</li>
|
||||||
|
<li>app/home/</li>
|
||||||
|
<li>app/logs/</li>
|
||||||
|
<li>app/upload/</li>
|
||||||
|
<li>main/default_course_document/images/</li>
|
||||||
|
<li>main/lang/ (optional, only for sublanguages)</li>
|
||||||
|
<li>web/css/ (optional, only for switching CSS through the web)</li>
|
||||||
|
</ul>
|
||||||
|
<br />
|
||||||
|
Because these directories have "write by the web server" permissions,
|
||||||
|
it is important to prevent the execution of PHP scripts from those
|
||||||
|
directories (because a specially-crafted attack could end up allowing
|
||||||
|
the upload of a PHP script to one of these). To do that, taking into
|
||||||
|
account we authorize overrides through .htaccess, we need to set
|
||||||
|
something that a .htaccess file cannot revert, and we need to set it
|
||||||
|
for each of those directories. This can be done as follows inside
|
||||||
|
your VirtualHost definition in Apache, where "/var/www/URL/" is the path of your VirtualHost web root:<br />
|
||||||
|
<pre>
|
||||||
|
<Directory /var/www/URL/app/cache>
|
||||||
|
php_admin_value engine Off
|
||||||
|
</Directory>
|
||||||
|
<Directory /var/www/URL/app/courses>
|
||||||
|
php_admin_value engine Off
|
||||||
|
</Directory>
|
||||||
|
<Directory /var/www/URL/app/home>
|
||||||
|
php_admin_value engine Off
|
||||||
|
</Directory>
|
||||||
|
<Directory /var/www/URL/app/logs>
|
||||||
|
php_admin_value engine Off
|
||||||
|
</Directory>
|
||||||
|
<Directory /var/www/URL/app/upload>
|
||||||
|
php_admin_value engine Off
|
||||||
|
</Directory>
|
||||||
|
<Directory /var/www/URL/app/Resources/public/css>
|
||||||
|
php_admin_value engine Off
|
||||||
|
</Directory>
|
||||||
|
<Directory /var/www/URL/main/default_course_document/images>
|
||||||
|
php_admin_value engine Off
|
||||||
|
</Directory>
|
||||||
|
<Directory /var/www/URL/main/lang>
|
||||||
|
php_admin_value engine Off
|
||||||
|
</Directory>
|
||||||
|
<Directory /var/www/URL/web/css>
|
||||||
|
php_admin_value engine Off
|
||||||
|
</Directory>
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
For Nginx, this would look like the following rules. However, do
|
||||||
|
remember that Nginx interprets rules in order of appearance, so these
|
||||||
|
rules would have to be at the top of your location rules to take the
|
||||||
|
highest priority:
|
||||||
|
<pre>
|
||||||
|
location ~ ^/app/(cache|courses|home|logs|upload|Resources/public/css)/.*\.ph(p[3457]?|t|tml|ar)$ {
|
||||||
|
deny all;
|
||||||
|
}
|
||||||
|
location ~ ^/main/default_course_document/images/.*\.ph(p[3457]?|t|tml|ar)$ {
|
||||||
|
deny all;
|
||||||
|
}
|
||||||
|
location ~ ^/main/lang/.*\.ph(p[3457]?|t|tml|ar)$ {
|
||||||
|
deny all;
|
||||||
|
}
|
||||||
|
location ~ ^/web/css/.*\.ph(p[3457]?|t|tml|ar)$ {
|
||||||
|
deny all;
|
||||||
|
}
|
||||||
|
</pre>
|
||||||
|
<br />
|
||||||
|
<hr />
|
||||||
|
<h2><a id="6.HSTS">HTTP Headers Security</a></h2>
|
||||||
|
<p>A relatively recent development in web security, HTTP headers can be modified either
|
||||||
|
from the web server or from the application (like Chamilo) to increase the security
|
||||||
|
of your visitors.</p>
|
||||||
|
<p>These implies several aspects, from simple to complex, to deal with, from stuff like
|
||||||
|
indicating which websites you say media or libraries can be loaded from, to adding
|
||||||
|
extra info about your SSL certificate to make sure a hacked certification authority
|
||||||
|
will not immediately make your certificate useless.</p>
|
||||||
|
<p>In Chamilo 1.11.6, we have added several parameters, together with recommendations,
|
||||||
|
to main/install/configuration.dist.php, that you are free to use or ignore,
|
||||||
|
depending on the level of security you want to achieve.</p>>
|
||||||
|
<p>To check your portal for possible improvements in terms of headers security,
|
||||||
|
we highly recommend the <a href="https://securityheaders.io/">securityheaders.io</a>
|
||||||
|
website. If you want to read more about CSP and all related headers
|
||||||
|
security techniques, check <a href="https://scotthelme.co.uk/">Scott Helme's blog</a>.
|
||||||
|
</p>
|
||||||
|
<p>As per reported vulnerabilities #175 and #176 on
|
||||||
|
<a href="https://github.com/chamilo/chamilo-lms/wiki/security-issues">our Security Issues page</a>,
|
||||||
|
we highly recommend setting <em>$_configuration['security_content_policy']</em>, in particular for
|
||||||
|
elements like 'script-src', 'style-src' and 'form-action' to 'self' or to a limited number of trusted URLs.<br>
|
||||||
|
In particular, the social wall and the course chat spaces could be abused by some users to trick others
|
||||||
|
into filling forms that will send personal data to external sites. Letting users edit HTML is useful
|
||||||
|
but dangerous if you cannot trust people using these features. These features cannot be used by anonymous
|
||||||
|
users, but portals allowing for open registration could be particularly vulnerable.
|
||||||
|
</p>
|
||||||
|
<p>The inline editor in Chamilo 1.11 requires
|
||||||
|
the Content Security Policy (CSP) headers to include 'unsafe-inline' and 'unsafe-eval'. This is because the
|
||||||
|
editor includes a number of complex features that require those accesses. This means that your Chamilo install
|
||||||
|
will probably not validate as an "A+" score in standard CSP tests. We have no solution for this except to
|
||||||
|
prevent users from using the inline editor, which would remove a considerable level of usability from Chamilo.</p>
|
||||||
|
<br />
|
||||||
|
<hr />
|
||||||
|
<h2><a id="7.Direct-web-access">Direct web access to files</a></h2>
|
||||||
|
<p>If .htaccess is enabled or the .htaccess rules are translated into the
|
||||||
|
web server vhost configuration (see installation guide for that), Chamilo
|
||||||
|
will do some natural files access protection.<br />
|
||||||
|
<br />
|
||||||
|
This protection is executed through redirections of some URLs to make the
|
||||||
|
request go through some kind of permissions validation script. For
|
||||||
|
documents, this means going through the main/document/download.php script,
|
||||||
|
but there are some more specific rules (see .htaccess for details).<br />
|
||||||
|
<br />
|
||||||
|
While this does a great job to avoid access by unprivileged users, this
|
||||||
|
also creates an efficiency issue, whereby some files, in version 1.11, can
|
||||||
|
take up to 5 times the load time when it goes through the permissions
|
||||||
|
validation.<br />
|
||||||
|
<br />
|
||||||
|
Because of that, we have taken some decisions to reduce the impact in a
|
||||||
|
reasonable way. For example, static files in SCORM content
|
||||||
|
(in courses/[code]/scorm/) like CSS, JS, PNG, JPG and GIF are *not* scanned
|
||||||
|
this way (there is an exception for that). We believe that these resources
|
||||||
|
do not contain confidential information. If you *DO* have confidential
|
||||||
|
information in images, CSS or JavaScript files, you will need to update
|
||||||
|
these rules to suit your needs.<br />
|
||||||
|
<br />
|
||||||
|
<h3>Access to "personal" files</h3>
|
||||||
|
In Chamilo 1.*, it is possible to upload files to one's "personal" folder
|
||||||
|
through the social network page, or through any upload popup that allows
|
||||||
|
you to choose the file destination (and you select your personal folder).<br />
|
||||||
|
<br />
|
||||||
|
Due to the development background in Chamilo, these files are then directly
|
||||||
|
accessible by anonymous users, which can lead to personal data leaks. This
|
||||||
|
has been left in this mode by default because many teacher users had used
|
||||||
|
this option to share common images between different courses and blocking
|
||||||
|
the feature would have meant public courses would not have shown the given
|
||||||
|
images.<br />
|
||||||
|
<br />
|
||||||
|
To avoid this issue and make files accessible *only* to authenticated users,
|
||||||
|
please set the following option to 'true' in configuration.php:<br />
|
||||||
|
<br />
|
||||||
|
<pre>
|
||||||
|
$_configuration['block_my_files_access'] = true;</pre>
|
||||||
|
This will prevent anonymous access, but will not prevent access from other
|
||||||
|
authenticated users.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2><a id="8.Disable-webservices">Disable webservices</a></h2>
|
||||||
|
<p>
|
||||||
|
In order to disable webservices add the configuration below:
|
||||||
|
<pre>
|
||||||
|
$_configuration['disable_webservices'] = true;
|
||||||
|
</pre>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2><a id="9.Change-password-first-login">Change password on first login</a></h2>
|
||||||
|
<p>
|
||||||
|
To force users to change their password on their first login, add the configuration below:
|
||||||
|
<pre>
|
||||||
|
$_configuration['force_renew_password_at_first_login'] = true;
|
||||||
|
</pre>
|
||||||
|
and add the 'ask_new_password' checkbox extra field to users.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2><a id="10.Hide-breadcrumb">Hide breadcrumb on unauthorized page load</a></h2>
|
||||||
|
<p>
|
||||||
|
To hide the breadcrumb on pages with the "not allowed" error message, add the configuration below:
|
||||||
|
<pre>
|
||||||
|
$_configuration['hide_breadcrumb_if_not_allowed'] = true;
|
||||||
|
</pre>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2><a id="11.SVG-and-XSS">SVG and XSS</a></h2>
|
||||||
|
<p>
|
||||||
|
SVG files and HTML files containing inline SVG are vulnerable to XSS attacks. This is a general fact, not
|
||||||
|
immediately related to Chamilo, but that can affect it.<br />
|
||||||
|
As a general rule of thumb, you should not let your portal open to unauthenticated people, and you should not
|
||||||
|
allow unknown or unreliable people to upload content to your portal.<br />
|
||||||
|
But in case you do, or accesses of reliable people get stolen and abused, you might want to take precautions to
|
||||||
|
avoid as much as possible giving the tools to crackers, to damage your portal's reputation.<br />
|
||||||
|
The following are a series of measures you can take to reduce the risk to the maximum when talking about the
|
||||||
|
combination of SVG and XSS.<br />
|
||||||
|
<ul>
|
||||||
|
<li>Disable the SVG editor, in the platform settings</li>
|
||||||
|
<li>In the security section of the platform settings, filter the SVG extension (either through putting it in the blacklist or removing it from the whitelist)</li>
|
||||||
|
<li>Make sure <em>$_configuration['course_introduction_html_strict_filtering'] = true;</em> is commented or is set to true in your configuration.php file</li>
|
||||||
|
<li>Do not make courses "public" if they include student-contributed content</li>
|
||||||
|
<li>Define some Content Security Policies ('security_content_policy') in your configuration.php file</li>
|
||||||
|
<li>Define some XSS Protection clause ('security_xss_protection') in your configuration.php file</li>
|
||||||
|
</ul>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Authors</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Yannick Warnier, Chamilo Project Leader, Zend Certified PHP Engineer, BeezNest Belgium SPRL,
|
||||||
|
<a href="mailto:yannick.warnier@beeznest.com">yannick.warnier@beeznest.com</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Reference in New Issue
Block a user