diff --git a/current_version/.svn/all-wcprops b/current_version/.svn/all-wcprops
deleted file mode 100644
index c56a326..0000000
--- a/current_version/.svn/all-wcprops
+++ /dev/null
@@ -1,155 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 39
-/svn/!svn/ver/204/trunk/current_version
-END
-log
-K 25
-svn:wc:ra_dav:version-url
-V 43
-/svn/!svn/ver/194/trunk/current_version/log
-END
-account.php
-K 25
-svn:wc:ra_dav:version-url
-V 51
-/svn/!svn/ver/174/trunk/current_version/account.php
-END
-functions.js
-K 25
-svn:wc:ra_dav:version-url
-V 52
-/svn/!svn/ver/180/trunk/current_version/functions.js
-END
-stats.php
-K 25
-svn:wc:ra_dav:version-url
-V 47
-/svn/!svn/ver/8/trunk/current_version/stats.php
-END
-settings.php
-K 25
-svn:wc:ra_dav:version-url
-V 51
-/svn/!svn/ver/45/trunk/current_version/settings.php
-END
-qcmCreator.php
-K 25
-svn:wc:ra_dav:version-url
-V 54
-/svn/!svn/ver/187/trunk/current_version/qcmCreator.php
-END
-style.css
-K 25
-svn:wc:ra_dav:version-url
-V 49
-/svn/!svn/ver/202/trunk/current_version/style.css
-END
-changelog
-K 25
-svn:wc:ra_dav:version-url
-V 49
-/svn/!svn/ver/191/trunk/current_version/changelog
-END
-qcmResults.php
-K 25
-svn:wc:ra_dav:version-url
-V 54
-/svn/!svn/ver/191/trunk/current_version/qcmResults.php
-END
-qcmReader.php
-K 25
-svn:wc:ra_dav:version-url
-V 53
-/svn/!svn/ver/132/trunk/current_version/qcmReader.php
-END
-account_admin.php
-K 25
-svn:wc:ra_dav:version-url
-V 57
-/svn/!svn/ver/202/trunk/current_version/account_admin.php
-END
-search.php
-K 25
-svn:wc:ra_dav:version-url
-V 50
-/svn/!svn/ver/174/trunk/current_version/search.php
-END
-frontal.php
-K 25
-svn:wc:ra_dav:version-url
-V 51
-/svn/!svn/ver/202/trunk/current_version/frontal.php
-END
-config.php
-K 25
-svn:wc:ra_dav:version-url
-V 50
-/svn/!svn/ver/202/trunk/current_version/config.php
-END
-install.php
-K 25
-svn:wc:ra_dav:version-url
-V 51
-/svn/!svn/ver/187/trunk/current_version/install.php
-END
-rss.php
-K 25
-svn:wc:ra_dav:version-url
-V 47
-/svn/!svn/ver/142/trunk/current_version/rss.php
-END
-statsAdmin.php
-K 25
-svn:wc:ra_dav:version-url
-V 54
-/svn/!svn/ver/204/trunk/current_version/statsAdmin.php
-END
-index.php
-K 25
-svn:wc:ra_dav:version-url
-V 49
-/svn/!svn/ver/201/trunk/current_version/index.php
-END
-logon.php
-K 25
-svn:wc:ra_dav:version-url
-V 48
-/svn/!svn/ver/62/trunk/current_version/logon.php
-END
-qcmProcess.php
-K 25
-svn:wc:ra_dav:version-url
-V 54
-/svn/!svn/ver/179/trunk/current_version/qcmProcess.php
-END
-styleIe.css
-K 25
-svn:wc:ra_dav:version-url
-V 49
-/svn/!svn/ver/3/trunk/current_version/styleIe.css
-END
-test.php
-K 25
-svn:wc:ra_dav:version-url
-V 48
-/svn/!svn/ver/185/trunk/current_version/test.php
-END
-register.php
-K 25
-svn:wc:ra_dav:version-url
-V 51
-/svn/!svn/ver/91/trunk/current_version/register.php
-END
-backUpCreator.php
-K 25
-svn:wc:ra_dav:version-url
-V 57
-/svn/!svn/ver/192/trunk/current_version/backUpCreator.php
-END
-version.php
-K 25
-svn:wc:ra_dav:version-url
-V 51
-/svn/!svn/ver/193/trunk/current_version/version.php
-END
diff --git a/current_version/.svn/dir-prop-base b/current_version/.svn/dir-prop-base
deleted file mode 100644
index 444b365..0000000
--- a/current_version/.svn/dir-prop-base
+++ /dev/null
@@ -1,6 +0,0 @@
-K 10
-svn:ignore
-V 13
-settings.php
-
-END
diff --git a/current_version/.svn/entries b/current_version/.svn/entries
deleted file mode 100644
index 8990a89..0000000
--- a/current_version/.svn/entries
+++ /dev/null
@@ -1,896 +0,0 @@
-10
-
-dir
-204
-https://qcmmaker.googlecode.com/svn/trunk/current_version
-https://qcmmaker.googlecode.com/svn
-
-
-
-2011-02-08T19:22:12.337819Z
-204
-francois.lutran
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-1abcc3b6-0f78-11df-b47a-af0d17c1a499
-
-
-
-
-
-
-
-
-((conflict settings.php file update deleted edited (version https://qcmmaker.googlecode.com/svn 2 90 trunk/current_version/settings.php file) (version https://qcmmaker.googlecode.com/svn 3 101 trunk/current_version/settings.php none)))
-
-log
-file
-
-
-
-
-2010-11-06T16:35:59.299251Z
-1cce094ea04fcf8e4adfdee41ab40a86
-2010-11-06T16:35:45.574309Z
-194
-francois.lutran
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-192
-
-account.php
-file
-
-
-
-
-2010-06-22T10:03:52.000000Z
-46c44649a38f295b238c3ace19cf3da4
-2010-06-21T21:30:43.058512Z
-174
-francois.lutran
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-8472
-
-functions.js
-file
-
-
-
-
-2010-06-24T18:14:17.000000Z
-d15180502c17f40698bfcd325736b990
-2010-06-24T13:42:55.849562Z
-180
-francois.lutran
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-3240
-
-stats.php
-file
-
-
-
-
-2010-02-03T16:31:26.000000Z
-55364c81629c96272ffe2b148b2099b2
-2010-02-02T23:56:56.079998Z
-8
-Francois.Lutran
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-2040
-
-settings.php
-file
-90
-
-
-add
-2010-03-01T01:00:10.000000Z
-e35626cf50f16ff4312991f13c81740d
-2010-02-28T15:00:52.349625Z
-45
-Francois.Lutran
-
-
-
-
-
-
-
-
-copied
-https://qcmmaker.googlecode.com/svn/trunk/current_version/settings.php
-90
-
-
-
-
-
-
-
-
-
-
-908
-
-qcmCreator.php
-file
-
-
-
-
-2010-09-11T11:41:49.000000Z
-cbae18788a57cc861ce631772497efc8
-2010-09-09T13:24:00.096915Z
-187
-francois.lutran
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-9395
-
-style.css
-file
-
-
-
-
-2011-02-02T21:26:33.598825Z
-052da18b80fd80adbd09e67183a26e03
-2011-02-02T21:25:35.154558Z
-202
-francois.lutran
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-9866
-
-changelog
-file
-
-
-
-
-2010-11-06T12:54:38.555055Z
-3c86289533c86f53a5bc24b8e63eae17
-2010-11-06T12:54:00.872919Z
-191
-francois.lutran
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-5480
-
-qcmResults.php
-file
-
-
-
-
-2010-11-06T12:54:38.555055Z
-740f07de2aa4ee86b1ec555da3c56e27
-2010-11-06T12:54:00.872919Z
-191
-francois.lutran
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-2980
-
-qcmReader.php
-file
-
-
-
-
-2010-05-17T13:58:33.000000Z
-5b783e6fb522798ebb488e412a9312bb
-2010-05-16T21:14:21.358495Z
-132
-Francois.Lutran
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-2208
-
-downloads
-dir
-
-account_admin.php
-file
-
-
-
-
-2011-02-02T21:26:33.608825Z
-502b792e32849d5bc243b7750dc4494b
-2011-02-02T21:25:35.154558Z
-202
-francois.lutran
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-10604
-
-search.php
-file
-
-
-
-
-2010-06-22T10:03:52.000000Z
-5bdfea908f1e9dfa2362d0a03ee58f59
-2010-06-21T21:30:43.058512Z
-174
-francois.lutran
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-2296
-
-frontal.php
-file
-
-
-
-
-2011-02-02T21:26:33.608825Z
-17207ab88483b6a53d38d4c69ab852ce
-2011-02-02T21:25:35.154558Z
-202
-francois.lutran
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-5375
-
-config.php
-file
-
-
-
-
-2011-02-02T21:26:33.608825Z
-ae293d9b13d279274230720e79140db3
-2011-02-02T21:25:35.154558Z
-202
-francois.lutran
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-65700
-
-install.php
-file
-
-
-
-
-2010-09-11T11:41:49.000000Z
-b0d1bd4d0d104dcac219bc0c47ee12f0
-2010-09-09T13:24:00.096915Z
-187
-francois.lutran
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-5734
-
-classes
-dir
-
-statsAdmin.php
-file
-
-
-
-
-2011-02-08T19:23:20.139189Z
-4398d511f7ad18b0de287ba25513c6a3
-2011-02-08T19:22:12.337819Z
-204
-francois.lutran
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-6168
-
-index.php
-file
-
-
-
-
-2011-01-31T18:20:20.014061Z
-2de83ba3f929c392a8e6878097335e2a
-2011-01-31T18:18:47.374394Z
-201
-francois.lutran
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-6081
-
-rss.php
-file
-
-
-
-
-2010-05-27T12:39:51.000000Z
-6c7893982fe245db921986dd61c6434e
-2010-05-26T15:19:46.928829Z
-142
-francois.lutran
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-8081
-
-logon.php
-file
-
-
-
-
-2010-03-11T01:00:06.000000Z
-bf839fe48d1d98afceb8fd45baea1714
-2010-03-10T21:53:51.228739Z
-62
-Francois.Lutran
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-829
-
-images
-dir
-
-qcmProcess.php
-file
-
-
-
-
-2010-06-24T18:14:18.000000Z
-1dbafc64eaf454e018d86d0c7dd962ab
-2010-06-23T16:43:59.392251Z
-179
-francois.lutran
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-4320
-
-styleIe.css
-file
-
-
-
-
-2010-02-02T19:33:46.000000Z
-6898c57837d40aa829bb009679faeac7
-2010-02-01T21:43:55.771214Z
-3
-Francois.Lutran
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-32
-
-test.php
-file
-
-
-
-
-2010-06-27T00:00:06.000000Z
-87796986167401f14d80116616047a3e
-2010-06-26T17:43:33.519351Z
-185
-francois.lutran
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-2673
-
-register.php
-file
-
-
-
-
-2010-04-18T19:27:04.000000Z
-21c92d501dddfdb72e5078292869b3c3
-2010-04-05T16:08:12.568839Z
-91
-Francois.Lutran
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-1132
-
-backUpCreator.php
-file
-
-
-
-
-2010-11-06T14:46:11.949801Z
-751c477b22c6087ca24c02f7d40c3bd3
-2010-11-06T14:45:26.623737Z
-192
-francois.lutran
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-8214
-
-version.php
-file
-
-
-
-
-2010-11-06T16:29:26.119054Z
-0438a184159709dec296f99509a8d14d
-2010-11-06T16:29:05.080573Z
-193
-francois.lutran
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-6380
-
diff --git a/current_version/.svn/prop-base/functions.js.svn-base b/current_version/.svn/prop-base/functions.js.svn-base
deleted file mode 100644
index 138f983..0000000
--- a/current_version/.svn/prop-base/functions.js.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 10
-text/plain
-END
diff --git a/current_version/.svn/prop-base/log.svn-base b/current_version/.svn/prop-base/log.svn-base
deleted file mode 100644
index 869ac71..0000000
--- a/current_version/.svn/prop-base/log.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 14
-svn:executable
-V 1
-*
-END
diff --git a/current_version/.svn/prop-base/style.css.svn-base b/current_version/.svn/prop-base/style.css.svn-base
deleted file mode 100644
index 138f983..0000000
--- a/current_version/.svn/prop-base/style.css.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 10
-text/plain
-END
diff --git a/current_version/.svn/prop-base/styleIe.css.svn-base b/current_version/.svn/prop-base/styleIe.css.svn-base
deleted file mode 100644
index 138f983..0000000
--- a/current_version/.svn/prop-base/styleIe.css.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 10
-text/plain
-END
diff --git a/current_version/.svn/text-base/account.php.svn-base b/current_version/.svn/text-base/account.php.svn-base
deleted file mode 100644
index 69ee7d3..0000000
--- a/current_version/.svn/text-base/account.php.svn-base
+++ /dev/null
@@ -1,230 +0,0 @@
-encryptPassword($_POST['pass'])));
- echo getSuccess('Mot de passe modifié');
- }
- }
- elseif($_GET['type']=='info' && $_POST['login']!='' && $_POST['firstname']!='')
- {
- $sLastName = strtolower($_POST['login']);
- $sFirstName = strtolower($_POST['firstname']);
- //Check if someone has already been registered by that name
- $asChangedUserInfo = getUserFromLogin($sLastName, $sFirstName);
- $bUserAvailable = !$asChangedUserInfo || $iSelectedUserId==$asChangedUserInfo['id_user'];
- if($bUserAvailable)
- {
- $asUserModif = array( 'user_first_name'=>$sFirstName,
- 'user_last_name'=>$sLastName,
- 'grade'=>$_POST['grade'],
- 'class'=>$_POST['class']);
- if($bAdmin)
- {
- $asUserModif['admin'] = isset($_POST['admin'])?'1':'0';
- }
-
- $asUserInfo = selectRow(USER_TABLE, array($iSelectedUserId));
- updateRow(USER_TABLE, $iSelectedUserId, $asUserModif);
-
- //feed
- $sModifiedUserName = $asUserInfo[USER_TABLE.'_first_name'].' '.$asUserInfo[USER_TABLE.'_last_name'];
- if($sModifiedUserName != $sFirstName.' '.$sLastName)
- {
- addFeed('MODIFY', $sModifiedUserName, USER_TABLE.'_name', $sModifiedUserName, $sFirstName.' '.$sLastName);
- }
- if($asUserInfo['grade']!=$_POST['grade'] || $asUserInfo['class']!=$_POST['class'])
- {
- addFeed('MODIFY', $sModifiedUserName, USER_TABLE.'_class', $asUserInfo['grade'].GRADE_CLASS_SEPARATOR.$asUserInfo['class'], $_POST['grade'].GRADE_CLASS_SEPARATOR.$_POST['class']);
- }
-
- echo getSuccess('Coordonnées modifiées');
-
- if($iSelectedUserId==$_SESSION['user'])
- {
- setSession($_SESSION['user']);
- if($sLastName!=$asSelectedUserInfo['user_last_name'] || $sFirstName!=$asSelectedUserInfo['user_first_name'])
- {
- echo getWarning(array('Changement de login pour l\'authentification', 'Votre nouveau login est :', 'Nom : '.$sLastName, 'Prénom : '.$sFirstName));
- }
- }
-
- }
- else
- {
- echo getError('Ce nom existe déjà dans la base de données');
- }
- }
- else
- {
- echo getError('Champs incomplets');
- $bfailedPassModif = ($_GET['type']=="pass");
- }
-}
-
-//student class selection / teacher
-$sTeacherClass = 'Professeur';
-$sStudentClass = getClasses(array('grade' => isset($_POST['grade'])?$_POST['grade']:$asSelectedUserInfo['grade'], 'class' => isset($_POST['class'])?$_POST['class']:$asSelectedUserInfo['class']));
-
-//Admin menu : student selection
-$sPromoteAdmin = '';
-$bIsSelectedUserAdmin = isAdmin($iSelectedUserId);
-if($bAdmin)
-{
- $sPromoteAdmin = '
- | Admin |
- |
-
';
- ?>
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/current_version/.svn/text-base/account_admin.php.svn-base b/current_version/.svn/text-base/account_admin.php.svn-base
deleted file mode 100644
index ff52111..0000000
--- a/current_version/.svn/text-base/account_admin.php.svn-base
+++ /dev/null
@@ -1,280 +0,0 @@
-$sValue)
- {
- list($DelUserTag, $iUserId) = explode('_', $sKey);
- //pre($DelUserTag.' '.$iUserId, '',true);
- if($DelUserTag==DEL_USER_TAG && is_numeric($iUserId))
- {
- $sDeletedUserName = ucwords(getTextFromId(USER_TABLE, $iUserId));
- if(isAdmin($iUserId))
- {
- addMessage(getError('Il est impossible de supprimer un compte administrateur ('.$sDeletedUserName.')'));
- }
- else
- {
- deleteRow(USER_TABLE, $iUserId);
- $asDeletedUserNames[] = $sDeletedUserName;
- addFeed('DELETE', $iUserId , USER_TABLE, $sDeletedUserName, '');
- }
- }
- }
- if(count($asDeletedUserNames)>0)
- {
- addMessage(getSuccess('Les comptes suivants ont été supprimés : '.implode(', ', $asDeletedUserNames)));
- }
-}
-
-
-//modify user account
-$iSelectedUserId = isset($_REQUEST['studentId'])?$_REQUEST['studentId']:$_SESSION['user'];
-$asSelectedUserInfo = selectRow(USER_TABLE, array($iSelectedUserId));
-
-//modifications submit
-$bfailedPassModif = false;
-if(isset($_POST['submit']))
-{
- if($_GET['type']=='pass' && $_POST['pass']!='' && $_POST['oldpass']!='')
- {
- $sErrorMessage = checkPassword($_POST['oldpass'],$asSelectedUserInfo['pass'])?"":'Mot de passe incorrect';
- $sErrorMessage .= ($_POST['pass']==$_POST['pass2'])?"":'Les mots de passe ne sont pas les mêmes';
- $bfailedPassModif = ($sErrorMessage!='');
- if($bfailedPassModif)
- {
- echo getError($sErrorMessage);
- }
- else
- {
- updateRow(USER_TABLE, $iSelectedUserId, array('pass'=>encryptPassword($_POST['pass'])));
- echo getSuccess('Mot de passe modifié');
- }
- }
- elseif($_GET['type']=='info' && $_POST['login']!='' && $_POST['firstname']!='')
- {
- $sLastName = strtolower($_POST['login']);
- $sFirstName = strtolower($_POST['firstname']);
-
- //Check if someone has already been registered by that name
- $asChangedUserInfo = getUserFromLogin($sLastName, $sFirstName);
- $bUserAvailable = !$asChangedUserInfo || $iSelectedUserId==$asChangedUserInfo['id_user'];
- if($bUserAvailable)
- {
- $asUserModif = array( 'user_first_name'=>$sFirstName,
- 'user_last_name'=>$sLastName,
- 'grade'=>$_POST['grade'],
- 'class'=>$_POST['class']);
- if($bAdmin)
- {
- $asUserModif['admin'] = isset($_POST['admin'])?'1':'0';
- }
-
- $asUserInfo = selectRow(USER_TABLE, array($iSelectedUserId));
- updateRow(USER_TABLE, $iSelectedUserId, $asUserModif);
-
- //feed
- $sModifiedUserName = $asUserInfo[USER_TABLE.'_first_name'].' '.$asUserInfo[USER_TABLE.'_last_name'];
- if($sModifiedUserName != $sFirstName.' '.$sLastName)
- {
- addFeed('MODIFY', $sModifiedUserName, USER_TABLE.'_name', $sModifiedUserName, $sFirstName.' '.$sLastName);
- }
- if($asUserInfo['grade']!=$_POST['grade'] || $asUserInfo['class']!=$_POST['class'])
- {
- addFeed('MODIFY', $sModifiedUserName, USER_TABLE.'_class', $asUserInfo['grade'].GRADE_CLASS_SEPARATOR.$asUserInfo['class'], $_POST['grade'].GRADE_CLASS_SEPARATOR.$_POST['class']);
- }
-
- echo getSuccess('Coordonnées modifiées');
-
- if($iSelectedUserId==$_SESSION['user'])
- {
- setSession($_SESSION['user']);
- if($sLastName!=$asSelectedUserInfo['user_last_name'] || $sFirstName!=$asSelectedUserInfo['user_first_name'])
- {
- echo getWarning(array('Changement de login pour l\'authentification', 'Votre nouveau login est :', 'Nom : '.$sLastName, 'Prénom : '.$sFirstName));
- }
- }
-
- }
- else
- {
- echo getError('Ce nom existe déjà dans la base de données');
- }
- }
- else
- {
- echo getError('Champs incomplets');
- $bfailedPassModif = ($_GET['type']=="pass");
- }
-}
-
-//student class selection / teacher
-$sTeacherClass = 'Professeur';
-$sStudentClass = getClasses(array('grade' => isset($_POST['grade'])?$_POST['grade']:$asSelectedUserInfo['grade'], 'class' => isset($_POST['class'])?$_POST['class']:$asSelectedUserInfo['class']));
-
-//forms display : info and password modifications
-if(isset($_GET['type']) && $_GET['type']=="modif" && !isset($_POST['submit']))
-{
- $sPromoteAdmin = '';
- $bIsSelectedUserAdmin = isAdmin($iSelectedUserId);
- $asSelectedUserInfo = selectRow(USER_TABLE, array($iSelectedUserId));
- $sPromoteAdmin = '
- | Admin |
- |
-
';
-?>
-
-
-
-
-
-
-
-
-
-'0');
- $asConstraintsSigns = array('admin'=>'=');
- $sGradeClass = 'Toutes les classes';
- if(isset($_POST['gradeClass']))
- {
- $sGradeClass = $_POST['gradeClass'];
- list($iGrade, $iClass) = explode(GRADE_CLASS_SEPARATOR, $sGradeClass);
- if($iGrade!=0 && $iClass!=0)
- {
- $asConstraints['grade'] = $iGrade;
- $asConstraints['class'] = $iClass;
- }
- }
-
- $asUsers = selectRows(array(
- 'from'=>USER_TABLE,
- 'constraint'=>$asConstraints,
- 'orderBy'=>array('class'=>'asc', 'user_last_name'=>'asc')));
- $asStudents = array();
- foreach($asUsers as $asUser)
- {
- if($asUser['class']==0 || $asUser['grade']==0){continue;}
- $asStudents[] = '
- | '.ucwords($asUser['user_last_name']).' '.ucwords($asUser['user_first_name']).' |
- '.$asUser['grade'].GRADE_CLASS_SEPARATOR.$asUser['class'].' |
- Modifier |
- |
-
';
- }
-
- $iStudentCount = count($asStudents);
- $sStudents = ($iStudentCount>0)?implode("\n", $asStudents):'| Aucun utilisateur dans cette classe |
';
-
-
- //Classes selection
- $asClasses = getListe(array('select'=>array( "CONCAT(grade, '".GRADE_CLASS_SEPARATOR."', class) AS gradeClass", 'grade', 'class'),
- 'from'=>USER_TABLE,
- 'constraint'=>"admin=0 AND class<>0 AND grade<>0",
- 'groupBy' => 'gradeClass',
- 'orderBy'=>array('grade', 'class')));
- $sSelectClasses = getSelect($asClasses, 'gradeClass', '', array('0'.GRADE_CLASS_SEPARATOR.'0'=>'Toutes'), isset($_POST['gradeClass'])?$_POST['gradeClass']:'', 'classSelect');
-?>
-
-
-
\ No newline at end of file
diff --git a/current_version/.svn/text-base/backUpCreator.php.svn-base b/current_version/.svn/text-base/backUpCreator.php.svn-base
deleted file mode 100644
index 040fc8f..0000000
--- a/current_version/.svn/text-base/backUpCreator.php.svn-base
+++ /dev/null
@@ -1,178 +0,0 @@
-'validateBackUp(\'#backUpId#\')', 'Non'=>''));
-$oResetInputBox = new InputBox('Reset complet', 'Etes vous sûr de vouloir procéder à une réintallation complète ? (vous allez perdre toutes vos données)', array('Oui'=>'document.forms[\'reset\'].submit()', 'Non'=>''));
-
-$sTitle = 'Suppression de la base de données courante';
-$sWarningMessage = 'Etes-vous sur de vouloir remplacer la base de données par celle-ci ? Il est fortement conseillé de créer une sauvegarde avant une telle opération.';
-$oUploadInputBox = new InputBox($sTitle, $sWarningMessage, array('Oui'=>'', 'Non'=>'document.forms[\'upload\'].restoreDb.checked = false;'));
-$oSyncInputBox = new InputBox($sTitle, $sWarningMessage, array('Oui'=>'', 'Non'=>'document.forms[\'sync\'].restoreDb.checked = false;'));
-
-//display available backups
-$asFileList = glob(BACKUP_FOLDER.'*.'.DB_EXT_FILE);
-$iFileNb = count($asFileList);
-$iFilePerPage = 10;
-
-//page switcher load
-$oPageSwitcher = new PageSwitch('pageNb', $iFileNb, $iFilePerPage);
-
-foreach($asFileList as $sFileName)
-{
- //set input box variables
- $sBackUpId = encodeUrl(basename($sFileName));
- $sTimeStamp = getTimeStampFromFile($sFileName);
- $sBackUpName = date(LAYOUT_DATE_FORMAT, $sTimeStamp);
- $oRestoreInputBox->setTags(array('backUpId'=>$sBackUpId, 'backUpDate'=>$sBackUpName));
-
- $sLinkBackUp[$sTimeStamp] = '
- | Le '.$sBackUpName.' |
- |
- |
-
';
-}
-if(isset($sLinkBackUp))
-{
- krsort($sLinkBackUp);
- $iFirstItem = $oPageSwitcher->getItemStartPointer();
- $aiFileRange = $oPageSwitcher->getItemRange();
- $sLinkBackUp = array_slice($sLinkBackUp, $iFirstItem, $iFilePerPage, true);
- $sPageSwitchInfo = $aiFileRange['start'].' - '.$aiFileRange['end'].' sur ';
-}
-else
-{
- $sLinkBackUp = array('Aucune sauvegarde disponible |
');
- $sPageSwitchInfo = '';
-}
-
-//KeyRing
-$sKeyRing = getKeyRing();
-?>
-
-
-
-
-
-
-getHtml();
-echo $oResetInputBox->getHtml();
-echo $oUploadInputBox->getHtml();
-echo $oSyncInputBox->getHtml();
-?>
\ No newline at end of file
diff --git a/current_version/.svn/text-base/changelog.svn-base b/current_version/.svn/text-base/changelog.svn-base
deleted file mode 100644
index c84d8dc..0000000
--- a/current_version/.svn/text-base/changelog.svn-base
+++ /dev/null
@@ -1,68 +0,0 @@
-0000-00-00 00:00:00 0.1 new feature Création de QCM
-0000-00-00 00:00:00 1.0 new feature affichage des notes en direct
-0000-00-00 00:00:00 1.0 new feature compte utilisateur
-0000-00-00 00:00:00 1.0 new feature lecture de QCM
-0000-00-00 00:00:00 1.1 new feature visionnage des notes obtenues
-0000-00-00 00:00:00 1.1 new feature modification de compte
-0000-00-00 00:00:00 1.1 new feature menus
-0000-00-00 00:00:00 1.2 new feature calcul de moyenne par classe
-0000-00-00 00:00:00 1.2 new feature modification des comptes par l admin
-0000-00-00 00:00:00 1.2 new feature visionnage des notes par classe
-0000-00-00 00:00:00 1.2 new feature onglet admin
-0000-00-00 00:00:00 1.2 bug fix temps limite pour la création des QCM supprimée
-0000-00-00 00:00:00 1.2 bug fix caractères spéciaux lors de créations de qcm
-0000-00-00 00:00:00 1.3 design Beta tag
-0000-00-00 00:00:00 1.3 design positionnement des paragraphes sur la page de versions
-0000-00-00 00:00:00 1.3 design couleurs des boutons
-0000-00-00 00:00:00 1.3 design Ajout bouton Déconnexion
-0000-00-00 00:00:00 1.3 design Bords arrondis
-0000-00-00 00:00:00 1.3 new feature Téléchargement
-0000-00-00 00:00:00 1.3 new feature Les réponses de l'élève apparaissent sur les résultats des QCM
-0000-00-00 00:00:00 1.3 new feature Suppression de compte
-0000-00-00 00:00:00 1.3 bug fix auto logout à la fin de l'édition de QCM
-0000-00-00 00:00:00 1.3 bug fix couleurs des moyennes
-0000-00-00 00:00:00 1.5 design Logo qcm
-0000-00-00 00:00:00 1.5 design Notification du compte connecté
-0000-00-00 00:00:00 1.5 new feature Export de la base de données
-0000-00-00 00:00:00 1.5 new feature remontée vers le haut du document
-0000-00-00 00:00:00 1.5 new feature Bouton export en csv (Excel)
-0000-00-00 00:00:00 1.5 new feature Option de finalisation des qcm
-0000-00-00 00:00:00 1.5 new feature Téléchargements silencieux
-0000-00-00 00:00:00 1.5 bug fix encodage du mot de passe
-0000-00-00 00:00:00 1.5 bug fix doublon de login à la création et à la modification de login
-0000-00-00 00:00:00 1.5 bug fix onglet paramètre : possibilité de changements sans vérification du mot de passe
-0000-00-00 00:00:00 1.5 bug fix restructuration de l installation
-0000-00-00 00:00:00 1.5 bug fix saut de lignes dans le libellé des questions
-0000-00-00 00:00:00 2.0 new feature Téléchargement en csv avec coma separator embedded
-0000-00-00 00:00:00 2.0 new feature Upload et restoration de backup
-0000-00-00 00:00:00 2.0 new feature retour à la page en cours après déconnexion
-0000-00-00 00:00:00 2.0 bug fix suppression complète des qcm : QCM + notes
-0000-00-00 00:00:00 2.0 bug fix Restructuration complete des questions et des resultats (SQL)
-0000-00-00 00:00:00 2.1 new feature Mélange des questions des QCM en lecture (mode anti-triche)
-0000-00-00 00:00:00 2.1 design remplacement des fenetres javascript par des layers en html
-0000-00-00 00:00:00 2.1 new feature Ajout d'une table pour le changelog
-0000-00-00 00:00:00 2.1 bug fix modifier l'appel des fichiers de back up pour respecter l'ordre des dates
-2010-02-28 15:52:23 2.1 bug fix ajouter les dates de modifications dans lhistorique des versions
-2010-02-28 20:55:08 2.1 bug fix log in par nom de famille et prénom (siblings)
-2010-03-04 13:54:26 2.1 new feature Création dynamique de base de données
-2010-03-04 13:36:51 2.1 bug fix Couper la liste des backups à 10 (et afficher un bouton)
-2010-03-04 13:55:04 2.1 new feature Point d'accès pour back up : export et import de base de données vers ou depuis un url
-2010-03-10 09:27:12 2.1 bug fix Renforcement des sécurités d'accès (qcmResults & qcmProcess)
-2010-03-09 09:48:01 2.1 bug fix qcmProcess.php : redirection en fin de traitement
-2010-03-08 21:43:54 2.1 bug fix Fix : ajout de réponses sans question liée (NULL)
-2010-05-17 16:07:06 2.2 new feature Log des changements utilisateur + flux rss
-2010-04-21 16:23:32 2.2 bug fix Interface dynamique admin <-> eleve (grade + class) dans la gestion des comptes
-2010-04-21 16:21:38 2.2 new feature Report Admin sur les erreurs SQL et relocate()
-2010-05-17 16:08:15 2.2 bug fix Download en fonction (tout passe par index.php !)
-2010-03-29 00:52:20 2.2 bug fix Check usage of insertUpdateRow() and optimize function
-2010-06-08 20:12:53 2.2 bug fix Bug des apostrophes dans le cas d'un server configuré avec des magic quotes
-2010-04-21 10:21:42 2.2 bug fix ajouter changelog au moment de l'installation initiale
-2010-04-01 18:27:06 2.2 new feature moteur de recherche
-2010-04-05 19:17:55 2.2 new feature Kit d'installation facile
-2010-04-21 10:21:15 2.2 new feature téléchargement en zip ou gz en fonction du HTTP_USER_AGENT
-2010-03-12 14:17:47 2.2 bug fix secure access point (v2 : shuffle firstname / name / pass)
-2010-03-17 22:42:46 2.2 bug fix Secure le logon : isset($_SESSION['user']) avec une deuxieme validation sur HTTP_USER_AGENT + IP
-2010-05-17 16:08:40 2.2 new feature image dans les questions
-2010-06-25 13:40:14 2.2 bug fix Gerer le mode message
-2010-06-21 19:21:42 2.2 bug fix modification du fonctionnement des dates des fichiers de back up
-2010-06-25 15:59:12 2.2 new feature remote control
\ No newline at end of file
diff --git a/current_version/.svn/text-base/config.php.svn-base b/current_version/.svn/text-base/config.php.svn-base
deleted file mode 100644
index 14d82dc..0000000
--- a/current_version/.svn/text-base/config.php.svn-base
+++ /dev/null
@@ -1,2171 +0,0 @@
-0);
-
-//remote actions constants
-@define('ACCESS_POINT_DB', 'access_point');
-@define('ACCESS_POINT_LAST_VERSION', ACCESS_POINT_DB.'_last_version');
-@define('ACCESS_POINT_NEW_VERSION', ACCESS_POINT_DB.'_new_version');
-@define('CREATE_NEW_BACKUP', 'create_backup');
-
-//Cookie names constants
-@define('EXPECTED_PAGE', 'backOnTrack');
-
-//database constants
-@define('QCM_TABLE', 'qcm');
-@define('USER_TABLE', 'user');
-@define('RESULT_TABLE', 'result');
-@define('QUESTION_TABLE', 'question');
-@define('ANSWER_TABLE', 'answer');
-@define('CHANGELOG_TABLE', 'changelog');
-@define('FEED_TABLE', 'feed');
-@define('NEWS_TABLE', 'news');
-@define('RIGHT_ANSWER', 'right_'.ANSWER_TABLE);
-@define('DEFAULT_QCM_NAME', 'pas de nom');
-@define('END_OF_QUERY', '/* -END OF QUERY- */');
-
-//display constants
-@define('DEFAULT_LOGGED_PAGE', 'frontal');
-@define('DEFAULT_QUESTION_INPUT', 'Tapez ici la question...');
-@define('DEFAULT_ANSWER_INPUT', 'Tapez ici une reponse...');
-@define('ADD_IMAGE_TEXT', 'Ajouter une image à la question');
-@define('GRADE_CLASS_SEPARATOR', 'eme');
-@define('DECIMAL_LIMIT', 2);
-@define('OS_WINDOWS', 'win');
-@define('OS_MAC', 'mac');
-@define('OS_LINUX', 'linux');
-
-/* Required Classes */
-
-//require_once CLASSES_PATH.'qcm.php';
-require_once CLASSES_PATH.'page_switch.php';
-require_once CLASSES_PATH.'input_box.php';
-
-/* Server & Admin Settings */
-
-if(file_exists(SETTINGS_FILE))
-{
- require_once SETTINGS_FILE;
-}
-
-/* Integrity Functions */
-
-function getFiles($sFileName=false)
-{
- $asFiles =array('account.php' => true,
- 'account_admin.php' => true,
- 'backUpCreator.php' => true,
- 'frontal.php' => true,
- 'functions.js' => true,
- 'index.php' => true,
- 'install.php' => true,
- 'logon.php' => true,
- 'qcmCreator.php' => true,
- 'qcmProcess.php' => true,
- 'qcmReader.php' => true,
- 'qcmResults.php' => true,
- 'register.php' => true,
- 'rss.php' => true,
- 'search.php' => true,
- 'stats.php' => true,
- 'statsAdmin.php' => true,
- 'style.css' => true,
- 'styleIe.css' => false,
- 'version.php' => false,
- 'test.php' => false);
- return (!$sFileName)?$asFiles:$asFiles[$sFileName];
-}
-function getPageDescription($sPageName=false)
-{
- $asFiles =array('account' => 'Paramètres utilisateur',
- 'account_admin' => 'Comptes élèves',
- 'backUpCreator' => 'Gestion des sauvegardes',
- DEFAULT_LOGGED_PAGE => 'Accueil',
- 'index' => 'Index',
- 'install' => 'Paramètres d\'installation',
- 'logon' => 'Connexion',
- 'qcmCreator' => 'Formulaire de création de QCM',
- 'qcmProcess' => 'Enregistrement du QCM dans la base de données',
- 'qcmReader' => 'Evaluation d\'un QCM',
- 'qcmResults' => 'Résultat du QCM',
- 'register' => 'Créer un nouveau compte',
- 'rss' => 'flux rss',
- 'search' => 'Recherche',
- 'stats' => 'Statistiques',
- 'statsAdmin' => 'Statistiques [vue admin]',
- 'version' => 'Logs et téléchargement',
- 'test' => 'Tests Requête SQL',
- 'logout' => 'Déconnexion',
- 'download' => 'Téléchargement de fichier',
- 'remote' => 'Action à distance');
- return (!$sPageName)?$asFiles:$asFiles[$sPageName];
-}
-function checkIntegrity()
-{
- foreach(getFiles() as $sFileName=>$bMandatory)
- {
- if($bMandatory && !file_exists($sFileName))
- {
- $asMissingFiles[] = 'Le fichier '.$sFileName.' est manquant';
- }
- }
- return isset($asMissingFiles)?$asMissingFiles:true;
-}
-
-/* Database Functions */
-
-//Database construction functions
-function connection()
-{
- $asMissingFiles = checkIntegrity();
- if(is_array($asMissingFiles))
- {
- $sPlural = count($asMissingFiles)>1?'s':'';
- array_unshift($asMissingFiles, 'Fichier'.$sPlural.' manquant'.$sPlural, '');
- addMessage(getError($asMissingFiles));
- return false;
- }
- elseif(!defined('READY_TO_USE')) //settings.php ready to use
- {
- $_GET['page'] = 'install';
- return false;
- }
- $oConnection = mysql_connect(DB_SERVER, DB_LOGIN, DB_PASS);
- if(!$oConnection)
- {
- addMessage(getError(array('La connexion à la base de donnée a échouée', 'Vérifiez les paramètres dans '.SETTINGS_FILE, 'Détails : '.mysql_error()), true));
- }
- elseif(!mysql_select_db(DB_NAME, $oConnection))
- {
- addMessage(getError(array('Impossible de sélectionner la base de données "'.DB_NAME.'"', 'Changez les constantes dans le fichier "'.SETTINGS_FILE.'" ou réinstaller la base de données'), true));
- $_GET['page'] = 'install';
- }
- return $oConnection;
-}
-
-function getTables()
-{
- return array(QCM_TABLE, USER_TABLE, RESULT_TABLE, QUESTION_TABLE, ANSWER_TABLE, CHANGELOG_TABLE, FEED_TABLE, NEWS_TABLE);
-}
-function getQcmTables()
-{
- return array(QCM_TABLE, QUESTION_TABLE, ANSWER_TABLE, RESULT_TABLE);
-}
-function getChangeLogEnum()
-{
- return array('bug fix', 'new feature', 'design');
-}
-function getTableColumns($sTable, $sColumnName=false)
-{
- $asTableColumns = array('id_'.$sTable => "int(10) UNSIGNED NOT NULL auto_increment");
- switch($sTable)
- {
- case QCM_TABLE :
- $asTableColumns['id_'.USER_TABLE] = "int(10) UNSIGNED NOT NULL DEFAULT '0'";
- $asTableColumns[QCM_TABLE] = "varchar(255) NOT NULL DEFAULT '".DEFAULT_QCM_NAME."'";
- $asTableColumns['valid'] = "tinyint(1) DEFAULT '0'";
- break;
- case USER_TABLE :
- $asTableColumns[USER_TABLE.'_first_name'] = "varchar(20) NOT NULL";
- $asTableColumns[USER_TABLE.'_last_name'] = "varchar(20) NOT NULL";
- $asTableColumns['grade'] = "varchar(3)";
- $asTableColumns['class'] = "varchar(3)";
- $asTableColumns['pass'] = "varchar(100) NOT NULL";
- $asTableColumns['admin'] = "tinyint(1) DEFAULT '0'";
- break;
- case RESULT_TABLE :
- $asTableColumns['id_'.USER_TABLE] = "int(10) UNSIGNED NOT NULL";
- $asTableColumns['id_'.QCM_TABLE] = "int(10) UNSIGNED NOT NULL";
- $asTableColumns[RESULT_TABLE] = "float(5)";
- break;
- case QUESTION_TABLE :
- $asTableColumns['id_'.QCM_TABLE] = "int(10) UNSIGNED NOT NULL";
- $asTableColumns[QUESTION_TABLE] = "longtext NOT NULL";
- $asTableColumns['image'] = "varchar(100)";
- break;
- case ANSWER_TABLE :
- $asTableColumns['id_'.QUESTION_TABLE] = "int(10) UNSIGNED NOT NULL";
- $asTableColumns['id_'.QCM_TABLE] = "int(10) UNSIGNED NOT NULL";
- $asTableColumns[ANSWER_TABLE] = "longtext";
- $asTableColumns[RIGHT_ANSWER] = "tinyint(1) DEFAULT '0'";
- break;
- case CHANGELOG_TABLE :
- $asTableColumns[CHANGELOG_TABLE] = "longtext NOT NULL";
- $asTableColumns['version'] = "decimal(4, 1)";
- $asTableColumns['type'] = "enum(".encapsulate(getChangeLogEnum(), "'", "'", ", ").")";
- $asTableColumns['progress'] = "tinyint(1) default 0";
- break;
- case FEED_TABLE :
- $asTableColumns['author'] = "varchar(100) NOT NULL";
- $asTableColumns['action'] = "varchar(15) NOT NULL";
- $asTableColumns['source'] = "varchar(255) NOT NULL";
- $asTableColumns['type'] = "varchar(100) NOT NULL";
- $asTableColumns['old_value'] = "varchar(255)";
- $asTableColumns['new_value'] = "varchar(255)";
- $asTableColumns['id_ref'] = "int(10) UNSIGNED DEFAULT 0";
- break;
- case NEWS_TABLE:
- $asTableColumns['id_'.CHANGELOG_TABLE] = "int(10) UNSIGNED NOT NULL";
- $asTableColumns['id_'.USER_TABLE] = "int(10) UNSIGNED NOT NULL";
- break;
- default :
- return false;
- }
- $asTableColumns['led'] = "TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP DEFAULT CURRENT_TIMESTAMP";
- return (!$sColumnName)?$asTableColumns:$asTableColumns[$sColumnName];
-}
-function getTableConstraints($sTable)
-{
- //primary key
- $asTableConstraints = array('PRIMARY' => "PRIMARY KEY (`id_$sTable`)");
-
- //other constraints
- //TODO foreign key
- switch($sTable)
- {
- case QCM_TABLE :
- break;
- case USER_TABLE :
- $asTableConstraints['UNIQUE'] = "UNIQUE KEY `user_first_and_last_name` (`".USER_TABLE."_first_name`, `".USER_TABLE."_last_name`)";
- break;
- case RESULT_TABLE :
- break;
- case QUESTION_TABLE :
- break;
- case ANSWER_TABLE :
- break;
- case CHANGELOG_TABLE :
- break;
- case FEED_TABLE :
- break;
- }
- return $asTableConstraints;
-}
-function getQuote($sTable, $sColumnName)
-{
- $sDesc = getTableColumns($sTable,$sColumnName);
- $sType = substr($sDesc, 0, min(strpos($sDesc.'(', '('), strpos($sDesc.' ', ' ')));
- $asNumericTypes = array('int', 'tinyint', 'decimal', 'float');
- return in_array($sType, $asNumericTypes)?"":"'";
-}
-function getInstallQuery($sTable)
-{
- $asTableColumns = getTableColumns($sTable);
- if(!$asTableColumns)
- {
- return false;
- }
- else
- {
- $sQuery = "\n".implodeAll($asTableColumns, "` ", "\n", "`", ",")."\n".implode(", \n", getTableConstraints($sTable));
- return "CREATE /* ".basename(__FILE__)." ".__LINE__." */ TABLE `{$sTable}` ({$sQuery})";
- }
-}
-function install(&$oConnection, $sDbName, $asAdminsInfo, $bDropDb=true)
-{
-
- $bSuccess = false;
- if($bDropDb)
- {
- setQuery("DROP DATABASE IF EXISTS ".$sDbName);
- }
- if(!setQuery("CREATE /* ".basename(__FILE__)." ".__LINE__." */ DATABASE ".$sDbName, false)) //create database
- {
- addMessage(getError(array( 'Base de données déjà présente',
- 'Choisissez un autre nom de base de donnés ou supprimez la',
- 'Détails : '.mysql_error()), true));
- }
- elseif(!mysql_select_db($sDbName, $oConnection)) //select database
- {
- addMessage(getError(array('Sélection de la database "'.$sDbName.'" impossible', 'Détails : '.mysql_error()), true));
- }
- else
- {
- //create tables
- $asTableNames = getTables();
- array_walk(array_map('getInstallQuery', $asTableNames), 'setQuery');
-
- //insert admin users and a test user
- foreach($asAdminsInfo as $asAdminInfo)
- {
- insertRow(USER_TABLE, $asAdminInfo);
- }
-
- //initial settings
- insertUpdateRow(USER_TABLE,
- array( USER_TABLE.'_last_name'=>'test',
- USER_TABLE.'_first_name'=>'test',
- 'grade'=>'6',
- 'class'=>'1',
- 'pass'=>encryptPassword('test'),
- 'admin'=>0),
- array(USER_TABLE.'_last_name', USER_TABLE.'_first_name'));
-
- //TODO insert Qcm at once use a qcm class
- $iQcmId = insertRow(QCM_TABLE, array(1, 'Qcm test', 1));
- $iQuestionId = insertRow(QUESTION_TABLE, array($iQcmId, 'Quel est la couleur du cheval blanc d\'Henry 4 ?', 'qcm1question1.jpeg'));
- insertRow(ANSWER_TABLE, array($iQuestionId, $iQcmId, 'Rouge !', '0'));
- insertRow(ANSWER_TABLE, array($iQuestionId, $iQcmId, 'Vert', '0'));
- insertRow(ANSWER_TABLE, array($iQuestionId, $iQcmId, 'Bleu', '0'));
- insertRow(ANSWER_TABLE, array($iQuestionId, $iQcmId, 'Blanc', '1'));
-
- //insert changelog
- if(!setChangeLog())
- {
- addMessage(getWarning('Fichier de changelog introuvable'));
- }
- $bSuccess = true;
- }
- return $bSuccess;
-}
-function setChangeLog()
-{
- $bChangeLogFileExists = file_exists(CHANGELOG_FILE);
- if($bChangeLogFileExists)
- {
- $sChangeLog = file_get_contents(CHANGELOG_FILE);
- $asOrder = array('led', 'version', 'type', CHANGELOG_TABLE, 'progress');
- $asChangeLogs = array_filter(explode("\n", str_replace("\r", '', $sChangeLog)));
- foreach($asChangeLogs as $sChangeLogRow)
- {
- $asChangeLogRow = explode("\t", $sChangeLogRow);
- $asChangeLogRow[] = 1;
- insertRow(CHANGELOG_TABLE, array_combine($asOrder, $asChangeLogRow));
- }
- }
- return $bChangeLogFileExists;
-}
-function publishChangeLog($iChangeLogId)
-{
- $asAdmins = selectRows(array('select'=>array('id_'.USER_TABLE), 'from'=>USER_TABLE, 'constraint'=>array('admin'=>1)));
- foreach($asAdmins as $asInfo)
- {
- $iUserId = $asInfo['id_'.USER_TABLE];
- insertRow(NEWS_TABLE, array('id_'.USER_TABLE=>$iUserId, 'id_'.CHANGELOG_TABLE=>$iChangeLogId));
- }
- return !empty($asAdmins);
-}
-function getCleanPublication($iUserId)
-{
- $asNews = selectRows(array('from'=>NEWS_TABLE, 'constraint'=>array('id_user'=>$iUserId)));
- $asNewsPanel = array();
- foreach($asNews as $asNews)
- {
- $iChangelogId = $asNews['id_'.CHANGELOG_TABLE];
- $asChangelog = selectRow(CHANGELOG_TABLE, array('id_'.CHANGELOG_TABLE=>$iChangelogId), array('changelog', 'type'));
- $asNewsPanel[] = getSuccess(array( 'Message personnel',
- getHtml(date(LAYOUT_DATE_FORMAT, strtotime($asNews['led'])), 'span', '', 'font-size:12px'),
- 'Le feedback n°'.$iChangelogId.' ('.$asChangelog['type'].') a été traité : ',
- $asChangelog['changelog'].'.',
- '-- L\'équipe Admin'));
- deleteRow(NEWS_TABLE, $asNews['id_'.NEWS_TABLE]);
- }
- return implode("\n", $asNewsPanel);
-}
-function getTableColumnNames($sTableName, $iTableColumn=false, $bTableId=true, $bTableLed=true)
-{
- $asTableNames = getTableColumns($sTableName);
- if(!$asTableNames)
- {
- return false;
- }
- if(!$bTableLed)
- {
- unset($asTableNames['led']);
- }
- if(!$bTableId)
- {
- unset($asTableNames['id_'.$sTableName]);
- }
- $aiTableColumnNames = array_keys($asTableNames);
- return ($iTableColumn!==false)?$aiTableColumnNames[$iTableColumn]:$aiTableColumnNames;
-}
-function getId($sTableName)
-{
- return $sTableName.'.id_'.$sTableName;
-}
-
-//Back up functions
-function getMaxIncrementedValue($sTable)
-{
- return selectValue($sTable, "MAX(".getId($sTable).")");
-}
-function createBackUp($bDropDb)
-{
- $sFileName = DB_NAME.'_'.date(FILE_DATE_FORMAT);
-
- $sQuery = "/* ID ".$sFileName." */";
- $sQuery .= "\n\n"."SET SQL_MODE=\"NO_AUTO_VALUE_ON_ZERO\";".END_OF_QUERY;
- $sQuery .= $bDropDb?"\n\n"."DROP DATABASE `".DB_NAME."`;".END_OF_QUERY:"";
- $sQuery .= "\n\n"."CREATE DATABASE `".DB_NAME."` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;".END_OF_QUERY;
- $sQuery .= "\n\n"."USE `".DB_NAME."`;".END_OF_QUERY;
-
- foreach(getTables() as $sTable)
- {
- $sQuery .= "\n\n".getUniqueValue("SHOW CREATE TABLE ".$sTable, 'Create Table').";".END_OF_QUERY;
- $oTable = getQuery("SELECT * FROM `{$sTable}`");
- if(mysql_num_rows($oTable) > 0)
- {
- $iColumnNb = mysql_num_fields($oTable);
- $sQuery .= "\n\n"."INSERT INTO `{$sTable}` \n(";
- $sQuery .= encapsulate(array_map('mysql_field_name', array_fill(0, $iColumnNb, $oTable), range(0, $iColumnNb-1)), "`", false, ", ");
- $sQuery .= ") \nVALUES\n";
-
- $asValues = array();
- while ($asTableRow = mysql_fetch_array($oTable, MYSQL_ASSOC))
- {
- cleanSql($asTableRow);
- $asValues[] = "(".encapsulate($asTableRow, "'", false, ", ").")";
- }
- $sQuery .= implode(",\n", $asValues).";".END_OF_QUERY;
- }
- }
- $sFilePath = BACKUP_FOLDER.$sFileName.'.'.DB_EXT_FILE;
- $bResult = file_put_contents($sFilePath, $sQuery);
- if($bResult)
- {
- addMessage(getSuccess('Back up ajouté'));
- addFeed('CREATE', DB_NAME, 'database', $sFilePath);
- }
- else
- {
- addMessage(getError(array( 'Impossible de créer un nouveau fichier de sauvegarde',
- 'Vérifier les droits d\'écriture du dossier '.BACKUP_FOLDER)));
- }
- return $bResult;
-}
-function restoreBackUp($sBackFilePath, &$oConnection)
-{
- $bResult = false;
- if(checkBackup($sBackFilePath))
- {
- $sFileContents = file_get_contents($sBackFilePath);
- mysql_close($oConnection);
- $oConnection = mysql_connect(DB_SERVER, DB_LOGIN, DB_PASS);
- $asQueries = array_filter(explode(END_OF_QUERY, str_replace(array("\r\n", "\n"), '', $sFileContents)));
- foreach($asQueries as $sQuery)
- {
- setQuery($sQuery);
- }
- mysql_select_db(DB_NAME,$oConnection);
- addFeed('RESTORE', DB_NAME, 'database', $sBackFilePath);
- addMessage(getSuccess(array('Base restorée', 'Fichier chargé : '.$sBackFilePath, getHtml('Pour des raisons de sécurité, vous allez être déconnecté', 'strong'))));
- logMeOut();
- $bResult = true;
- }
- return $bResult;
-}
-function checkBackup($sFilePath)
-{
- $bValidBackup = true;
- $sFileContents = file_get_contents($sFilePath);
- foreach(getTables() as $sTable)
- {
- //Check if table exists
- if(getUniqueValue("SHOW TABLES LIKE '$sTable'")!='')
- {
- $sCreateTableQuery = getUniqueValue("SHOW CREATE TABLE ".$sTable, 'Create Table');
- $sCreateTableQuery = substr($sCreateTableQuery, 0, strpos($sCreateTableQuery,'ENGINE'));
- if(strpos($sFileContents, $sCreateTableQuery)===false)
- {
- $iStart = strpos($sFileContents, 'CREATE TABLE `'.$sTable.'`');
- if($iStart===false)
- {
- file_put_contents($sFilePath, $sFileContents."\n".$sCreateTableQuery.";", FILE_APPEND);
- addMessage(getWarning(array('La sauvegarde ne comprends pas la table "'.$sTable.'"', 'Celle-ci a été ajoutée')));
- }
- else
- {
- $sStart = substr($sFileContents, $iStart);
- $sBackupTableCreation = substr($sStart, 0, strpos($sStart, 'ENGINE'));
- addMessage(getError(array('La base de donnée n\'est pas compatible', 'Erreur sur la table "'.$sTable.'"', 'Config'=>$sCreateTableQuery, 'Backup'=>$sBackupTableCreation)));
- $bValidBackup = false;
- }
- }
- }
- }
- return $bValidBackup;
-}
-function uploadBackUp($asFile, $bRestoreBackUp, &$oConnection)
-{
- $bResult = false;
- if(uploadFile($asFile, BACKUP_FOLDER, array(DB_EXT_FILE)))
- {
- $sFilePath = BACKUP_FOLDER.$asFile['name'];
- if(checkBackup($sFilePath))
- {
- addMessage(getSuccess('Upload terminé'));
- addFeed('UPLOAD', DB_NAME, 'file', $asFile['name']);
- $bResult = true;
- if($bRestoreBackUp)
- {
- $bResult = restoreBackUp($sFilePath, $oConnection);
- }
- }
- else
- {
- unlink($sFilePath);
- }
- }
- return $bResult;
-}
-function getKeyRing($asAuth=array())
-{
- switch(count($asAuth))
- {
- case 3:
- $sLastName = $asAuth['lastName'];
- $sFirstName = $asAuth['firstName'];
- $sPass = $asAuth['pass'];
- break;
- case 0:
- $sLastName = $_SESSION['lastName'];
- $sFirstName = $_SESSION['firstName'];
- $sPass = selectValue(USER_TABLE, 'pass', array('id_'.USER_TABLE=>$_SESSION['user'], 'admin'=>1));
- break;
- default:
- return false;
- }
- return encodeUrl(serialize(array('lastname'=>$sLastName, 'firstname'=>$sFirstName, 'pass'=>$sPass)));
-}
-function syncBackUp($sUrl, $bInternalLink, $sAuth, $bRestoreBackUp, &$oConnection)
-{
- $bResult = false;
- $sDomain = $sUrl;
- if($bInternalLink)
- {
- //authorization
- $sUrl .= '&auth='.$sAuth;
- $sFileName = 'sync_'.date(FILE_DATE_FORMAT).'.'.DB_EXT_FILE;
- }
- else
- {
- $sFileName = basename($sUrl);
- }
-
- $sFilePath = BACKUP_FOLDER.$sFileName;
- $sContent = file_get_contents($sUrl);
- $iFileTimeStamp = getTimeStampFromBackUp($sContent);
- if(!isset($sContent) || $sContent=='')
- {
- addMessage(getError(array('Fichier introuvable sur le point d\'accès', 'url : '.$sUrl)));
- }
- elseif($iFileTimeStamp==0)
- {
- addMessage(getError('Fichier incompatible (date illisible)'));
- }
- elseif(!file_put_contents($sFilePath, $sContent))
- {
- addMessage(getError(array('Impossible de créer un nouveau fichier de sauvegarde', 'Vérifier les droits d\'écriture du dossier '.BACKUP_FOLDER)));
- }
- else
- {
- $bResult = true;
- addFeed('UPLOAD', $sDomain, 'sync', $sFileName);
- addMessage(getSuccess(array('Back up ajouté', 'fichier : '.$sFileName, 'Date de la sauvegarde : '.date(LAYOUT_DATE_FORMAT, $iFileTimeStamp))));
- }
-
- if($bResult && $bRestoreBackUp)
- {
- $iServerLastBackTimeStamp = getLastBackUp('timeStamp');
- if($iServerLastBackTimeStamp > $iFileTimeStamp)
- {
- $bResult = false;
- addMessage(getError(array( 'Sauvegarde trop ancienne',
- 'Date de la sauvegarde du point d\'accès : '.date(LAYOUT_DATE_FORMAT, $iFileTimeStamp),
- 'Dernière sauvegarde disponible sur le serveur : '.date(LAYOUT_DATE_FORMAT, $iServerLastBackTimeStamp))));
- }
- else
- {
- $bResult = restoreBackUp($sFilePath, $oConnection);
- }
- }
- return $bResult;
-}
-function resetDatabase(&$oConnection)
-{
- $asAdminsInfo = selectRows(array('select'=>getTableColumnNames(USER_TABLE, false, false, false), 'from'=>USER_TABLE, 'constraint'=>array('admin'=>1)));
-
- if(!$asAdminsInfo)
- {
- relocate(getError('Aucun administrateur trouvé dans la base de données'), 'install');
- }
-
- $bResult = install($oConnection, DB_NAME, $asAdminsInfo);
- if($bResult)
- {
- addFeed('RESET', DB_NAME, 'database');
- addMessage(getSuccess(array('Base de données réinitialisée', getHtml('Pour des raisons de sécurité, vous allez être déconnecté', 'strong'))));
- logMeOut();
- return true;
- }
- return $bResult;
-}
-function uploadFile($asFileInfo, $sDestFolder, $asAuthorizedFileExt)
-{
- $bResult = false;
- $sFileExt = getExtension($asFileInfo['name']);
- if(in_array($sFileExt, $asAuthorizedFileExt))
- {
- if($asFileInfo['size'] 1) :
- addMessage(getWarning(array('Erreur de taille pour la requête :', $sQuery, 'taille = '.$iCount)));
- case ($iCount > 0) :
- $asResult = array_shift($asResult);
- return (count($asColumnName)>0)?array_intersect_key($asResult, array_flip($asColumnName)):$asResult;
- }
-}
-function getUniqueValue($sQuery, $sColumnName=0, $sTypeQuery=__FUNCTION__)
-{
- $asResult = getUniqueQuery($sQuery, array($sColumnName), false, $sTypeQuery);
- return array_shift($asResult);
-}
-function setQuery($sQuery, $bDieOnError=true, $sTypeQuery=__FUNCTION__)
-{
- return getQuery($sQuery, $bDieOnError, $sTypeQuery);
-}
-
-function selectRows($asInfo)
-{
- $sAttributes = array('select'=>"SELECT", 'from'=>"FROM", 'constraint'=>"WHERE", 'groupBy'=>"GROUP BY", 'orderBy'=>"ORDER BY");
- $asRowSeparators = array('select'=>", ", 'from'=>"", 'constraint'=>" AND ", 'groupBy'=>", ", 'orderBy'=>", ");
- $asOperators = array('constraint'=>" = ", 'orderBy'=>" ");
-
- $sQuery = "/* ".basename(__FILE__)." ".__LINE__." */";
- foreach($sAttributes as $sStatement => $sKeyWord)
- {
- $asSelection = array_key_exists($sStatement, $asInfo)?$asInfo[$sStatement]:array();
- if(!is_array($asSelection))
- {
- $asSelection = array($asSelection);
- }
-
- //if provided values
- if(count($asSelection)>0)
- {
- cleanSql($asSelection);
- $sQuery .= " ".$sKeyWord." ";
-
- //in case of double value input
- if(array_key_exists($sStatement, $asOperators))
- {
- if($sStatement=='constraint' && array_key_exists('constOpe', $asInfo))
- {
- $asOperators[$sStatement] = $asInfo['constOpe'];
- }
- $sQuery .= implodeAll($asSelection, $asOperators[$sStatement], $asRowSeparators[$sStatement]);
- }
- else
- {
- $sQuery .= implode($asRowSeparators[$sStatement], $asSelection);
- }
- }
- //default value for select
- elseif($sStatement=='select')
- {
- $sQuery .= " ".$sKeyWord." * ";
- }
- }
- return getArrayQuery($sQuery, true);
-}
-function selectRow($sTableName, $asConstraints, $asColumnNames=array(), $bStringOnly=false)
-{
- cleanSql($sTableName);
- cleanSql($asConstraints);
-
- $asQueryValues = array();
- foreach($asConstraints as $oColumnName =>$oValue)
- {
- //check for column names
- if(is_numeric($oColumnName))
- {
- $oColumnName = getTableColumnNames($sTableName, $oColumnName);
- }
- $sQuote = getQuote($sTableName, $oColumnName);
-
- $asQueryValues[$oColumnName] = $oColumnName." = ".$sQuote.$oValue.$sQuote;
- }
- $sConstraint = (count($asQueryValues)>0)?"WHERE ".implode(" AND ", $asQueryValues):"";
-
- //requested columns
- $sColumns = (count($asColumnNames)>0)?implode(", ", $asColumnNames):"*";
-
- $sQuery = "SELECT /* ".basename(__FILE__)." ".__LINE__." */ $sColumns
- FROM $sTableName
- $sConstraint";
-
- return getUniqueQuery($sQuery, array(), $bStringOnly);
-}
-function selectValue($sTableName, $sColumnName, $asConstraints=array())
-{
- if(is_numeric($asConstraints))
- {
- $asConstraints = array('id_'.$sTableName=>$asConstraints);
- }
-
- $asResult = selectRow($sTableName, $asConstraints, array($sColumnName));
- if(!$asResult || !isset($asResult[$sColumnName]))
- {
- return false;
- }
- else
- {
- return $asResult[$sColumnName];
- }
-}
-function insertUpdateRow($sTableName, $asData, $asKeys=array())
-{
- $sTableIdName = 'id_'.$sTableName;
-
- //check for data in the db
- if($asKeys==array())
- {
- $asKeys[] = $sTableIdName;
- }
- $asValues = array_intersect_key($asData, array_flip($asKeys));
- $iTableId = selectValue($sTableName, $sTableIdName, $asValues);
-
- //insert
- if(!$iTableId)
- {
- $iTableId = insertRow($sTableName, $asData);
- }
- //Update
- else
- {
- if(array_key_exists($sTableIdName, $asData))
- {
- unset($asData[$sTableIdName]);
- }
- $iTableId = updateRow($sTableName, $iTableId, $asData);
- }
- return $iTableId;
-}
-function insertRow($sTableName, $asData)
-{
- cleanSql($sTableName);
- cleanSql($asData);
-
- $asQueryValues = array();
- foreach($asData as $oColumnName =>$oValue)
- {
- //check for column names
- if(is_numeric($oColumnName))
- {
- $oColumnName = getTableColumnNames($sTableName, $oColumnName, false);
- }
- $sQuote = getQuote($sTableName, $oColumnName);
-
- $asQueryValues[$oColumnName] = $sQuote.$oValue.$sQuote;
- }
- $sQuery = "INSERT /* ".basename(__FILE__)." ".__LINE__." */
- INTO ".$sTableName." (`".implode("`, `", array_keys($asQueryValues))."`)
- VALUES (".implode(", ", $asQueryValues).")";
-
- setQuery($sQuery);
- return getMaxIncrementedValue($sTableName);
-}
-function updateRow($sTableName, $iTableId, $asData)
-{
- cleanSql($sTableName);
- cleanSql($iTableId);
- cleanSql($asData);
-
- $asSets = array();
- foreach($asData as $oColumnName=>$oColumnValue)
- {
- //check for column names
- if(is_numeric($oColumnName))
- {
- $oColumnName = getTableColumnNames($sTableName, $oColumnName, false);
- }
- $sQuote = getQuote($sTableName, $oColumnName);
- $asSets[] = "`$oColumnName` = ".$sQuote.$oColumnValue.$sQuote;
- }
- $sQuery = "UPDATE /* ".basename(__FILE__)." ".__LINE__." */ $sTableName
- SET ".implode(", ", $asSets)."
- WHERE ".getId($sTableName)." = ".$iTableId." LIMIT 1";
- setQuery($sQuery);
- return $iTableId;
-}
-function deleteRow($sTableName, $iTableId)
-{
- cleanSql($sTableName);
- cleanSql($iTableId);
-
- //linked tables
- switch($sTableName)
- {
- case is_array($sTableName):
- $asTables = $sTableName;
- break;
- case USER_TABLE :
- $asTables = array(USER_TABLE, RESULT_TABLE);
- break;
- case QCM_TABLE :
- $asTables = getQcmTables();
- break;
- case QUESTION_TABLE :
- $asTables = array(QUESTION_TABLE, ANSWER_TABLE);
- break;
- case is_string($sTableName) :
- $asTables = array($sTableName);
- break;
- default:
- $asTables = array();
- }
- foreach($asTables as $sTable)
- {
- setQuery("DELETE /* ".basename(__FILE__)." ".__LINE__." */ FROM ".$sTable." WHERE id_".$sTableName." = ".$iTableId);
- }
-}
-function setQcmValidity($iQcmId, $bValid)
-{
- $sQcmName = getTextFromId(QCM_TABLE, $iQcmId);
- updateRow(QCM_TABLE, $iQcmId, array('valid'=>$bValid?'1':'0'));
- addFeed($bValid?'ACTIVATE':'DESACTIVATE', $iQcmId, QCM_TABLE, $sQcmName);
-}
-function getListe($asInfo)
-{
- //TODO remplacer par selectRows
- $sAttributes = array('select'=>"", 'from'=>"FROM", 'constraint'=>"WHERE", 'groupBy'=>"GROUP BY", 'orderBy'=>"ORDER BY");
- $sQuery = "SELECT /* ".basename(__FILE__)." ".__LINE__." */";
- foreach($sAttributes as $sStatement => $sKeyWord)
- {
- $sSeparator = ($sStatement=='constraint')?" AND ":", ";
- if(array_key_exists($sStatement, $asInfo))
- {
- $sQuery .= " ".$sKeyWord." ".(is_array($asInfo[$sStatement])?implode($sSeparator, $asInfo[$sStatement]):$asInfo[$sStatement]);
- }
- elseif($sStatement=='select')
- {
- $sQuery .= " ".$sKeyWord." * ";
- }
- }
-
- return getArrayQuery($sQuery, true);
-}
-function arrayKeyFilter($asArray, $sCallBack)
-{
- $asValidKeys = array_flip(array_filter(array_keys($asArray), $sCallBack));
- return array_intersect_key($asArray, $asValidKeys);
-}
-
-//feed functions
-function addFeed($sAction, $sSource, $sType, $sOldValue='', $sNewValue='' , $iRefId=0, $sAuthor='')
-{
- if($sAuthor=='')
- {
- $sAuthor = isset($_SESSION['user'])?$_SESSION['firstName'].' '.$_SESSION['lastName']:'bot';
- }
- return insertRow(FEED_TABLE, array($sAuthor, $sAction, $sSource, $sType, $sOldValue, $sNewValue, $iRefId));
-}
-function cleanRss($oText)
-{
- $asForbiddenChars = array('&', '<', '>', '"', '\'');
- $asReplacementCode = array( '&', '<', '>', '"', ''');
- if(!is_array($oText))
- {
- return str_replace($asForbiddenChars, $asReplacementCode, $oText);
- }
- elseif(count($oText)>0)
- {
- $oTextKeys = array_map('cleanRss', array_keys($oText));
- $oTextValues = array_map('cleanRss', $oText);
- return array_combine($oTextKeys, $oTextValues);
- }
-}
-
-/**
- * Get one or more qcm infos (questions + answers)
- *
- * Output architecture :
- *
- * Array
- * (
- * [id_qcm] => Array
- * (
- * ['qcm'] => qcm_name
- * ['id_user'] => author
- * [QUESTION_TABLE] => Array
- * (
- * [id_question] => Array
- * (
- * [QUESTION_TABLE] => question_title
- * [ANSWER_TABLE] => Array
- * (
- * [answer_id] => Array
- * (
- * [ANSWER_TABLE] => answer_title
- * ['right_answer'] => right_answer
- * )
- * [answer_id] => ...
- * )
- * )
- * [id_question] => ...
- * )
- * )
- * [id_qcm] => ...
- * )
- *
- * @param array $oQcmIds liste of qcm to get
- */
-function getQcm($oQcmIds=false)
-{
- $sQcmConstraint = "";
- $bOneQcm = false;
- if(is_numeric($oQcmIds))
- {
- $bOneQcm = true;
- $sQcmConstraint = " WHERE id_".QCM_TABLE." = ".$oQcmIds;
- }
- elseif(is_array($oQcmIds))
- {
- $sQcmConstraint = " WHERE id_".QCM_TABLE." IN(".implode(',', $oQcmIds);
- }
- $oQcm = getQuery( "SELECT /* ".basename(__FILE__)." ".__LINE__." */ ".getId(QCM_TABLE).", ".QCM_TABLE.", id_".USER_TABLE."
- FROM ".QCM_TABLE.
- $sQcmConstraint."
- ORDER BY ".getId(QCM_TABLE));
- while($asQcms = mysql_fetch_array($oQcm))
- {
- $asResults[$asQcms['id_'.QCM_TABLE]][QCM_TABLE] = $asQcms[QCM_TABLE];
- $asResults[$asQcms['id_'.QCM_TABLE]]['id_'.USER_TABLE] = $asQcms['id_'.USER_TABLE];
- $oQuestion = getQuery( "SELECT /* ".basename(__FILE__)." ".__LINE__." */ ".getId(QUESTION_TABLE).", ".QUESTION_TABLE.", image
- FROM ".QUESTION_TABLE.
- $sQcmConstraint."
- ORDER BY ".getId(QUESTION_TABLE));
- while($asQuestion = mysql_fetch_array($oQuestion))
- {
- $asResults[$asQcms['id_'.QCM_TABLE]][QUESTION_TABLE][$asQuestion['id_'.QUESTION_TABLE]][QUESTION_TABLE] = $asQuestion[QUESTION_TABLE];
- $asResults[$asQcms['id_'.QCM_TABLE]][QUESTION_TABLE][$asQuestion['id_'.QUESTION_TABLE]]['image'] = $asQuestion['image'];
- $oAnswer = getQuery("SELECT /* ".basename(__FILE__)." ".__LINE__." */ ".getId(ANSWER_TABLE).", ".ANSWER_TABLE.", ".RIGHT_ANSWER."
- FROM ".ANSWER_TABLE.
- $sQcmConstraint."
- ".(($sQcmConstraint!='')?"AND":"WHERE")." id_".QUESTION_TABLE." = ".$asQuestion['id_'.QUESTION_TABLE]."
- ORDER BY ".getId(ANSWER_TABLE));
- while($asAnswer = mysql_fetch_array($oAnswer))
- {
- $asResults [$asQcms['id_'.QCM_TABLE]]
- [QUESTION_TABLE]
- [$asQuestion['id_'.QUESTION_TABLE]]
- [ANSWER_TABLE]
- [$asAnswer['id_'.ANSWER_TABLE]] = array(ANSWER_TABLE => $asAnswer[ANSWER_TABLE], RIGHT_ANSWER=>$asAnswer[RIGHT_ANSWER]);
- }
- }
- }
- return $bOneQcm?$asResults[$oQcmIds]:$asResults ;
-}
-function getQcmName($iQcmId)
-{
- return selectValue(QCM_TABLE, QCM_TABLE, $iQcmId);
-}
-function getNbQuestions($iQcmId)
-{
- return selectValue(QUESTION_TABLE, 'COUNT(1)', array('id_qcm'=>$iQcmId));
-}
-function getUserFromLogin($sLastName, $sFirstName)
-{
- if($sLastName!='' && $sFirstName!='')
- {
- return selectRow(USER_TABLE, array('user_last_name'=>strtolower($sLastName), 'user_first_name'=>strtolower($sFirstName)));
- }
- else
- {
- return false;
- }
-}
-function getTextFromId($sTableName, $iTableId)
-{
- $sTextColumnName = $sTableName;
- $sAdditionalInfo = '';
- switch($sTableName)
- {
- case USER_TABLE:
- $sAdditionalInfo = selectValue($sTableName, USER_TABLE.'_first_name', $iTableId).' ';
- $sTextColumnName = USER_TABLE.'_last_name';
- break;
- case FEED_TABLE:
- $sTextColumnName = 'type';
- }
- return $sAdditionalInfo.selectValue($sTableName, $sTextColumnName, $iTableId);
-}
-function getTimeStampFromFile($sFileName)
-{
- return getTimeStampFromBackUp(file_get_contents($sFileName));
-}
-function getTimeStampFromBackUp($sBackUp)
-{
- preg_match('/\/\* ID (?P\S+) \*\//', $sBackUp, $asMatches);
- if(!array_key_exists('date', $asMatches))
- {
- return 0;
- }
- $asData = explode('_', str_replace('.'.DB_EXT_FILE, '', basename($asMatches['date'])));
- if(count($asData)!=3)
- {
- return 0;
- }
- list($sDbName, $sDate, $sTime) = $asData;
- $asDate = explode('.', $sDate);
- $asTime = explode('h', $sTime);
- if(count($asDate)!=3 || count($asTime)!=2)
- {
- return 0;
- }
- return strtotime($asDate[2].'-'.$asDate[1].'-'.$asDate[0].' '.$asTime[0].':'.$asTime[1].':00');
-}
-function getLastBackUp($sInfo)
-{
- foreach(glob(BACKUP_FOLDER.'*.'.DB_EXT_FILE) as $sFileName)
- {
- $asTimeStamp[getTimeStampFromFile($sFileName)] = $sFileName;
- }
- if(isset($asTimeStamp))
- {
- ksort($asTimeStamp);
- switch($sInfo)
- {
- case 'timeStamp':
- return array_pop(array_keys($asTimeStamp));
- case 'fileName':
- return basename(array_pop($asTimeStamp));
- case 'file':
- return file_get_contents(array_pop($asTimeStamp));
- default:
- return getWarning('Info '.$Info.' inconnue');
- }
- }
- else
- {
- return false;
- }
-}
-
-//Results related
-function checkPreviousResults($iUserId, $iQcmId)
-{
- $iResultId = selectValue(RESULT_TABLE, 'id_'.RESULT_TABLE, array('id_'.USER_TABLE=>$iUserId, 'id_'.QCM_TABLE=>$iQcmId));
- return ($iResultId !== false);
-}
-function addResult($iUserId, $iQcmId, $iMark)
-{
- insertRow(RESULT_TABLE, array($iUserId, $iQcmId, $iMark));
-}
-function getSQLResultsConstraints($aiInfoSelect)
-{
- $asConstraintColumns = array('grade' => false, 'class' => false, USER_TABLE => true, QCM_TABLE => true);
- $sConstraints = array('noAdmin' => USER_TABLE.".admin = 0");
- foreach($asConstraintColumns as $sConstraintColumn => $bIsTable)
- {
- if(array_key_exists($sConstraintColumn, $aiInfoSelect) && $aiInfoSelect[$sConstraintColumn]>0)
- {
- $aiConstraintIds = $aiInfoSelect[$sConstraintColumn];
- $sConstraints[$sConstraintColumn] = ($bIsTable?getId($sConstraintColumn):$sConstraintColumn).((is_array($aiConstraintIds))?" IN (".implode(',', $aiConstraintIds).")":" = ".$aiConstraintIds);
- }
- }
- return "WHERE ".implode(" AND ", $sConstraints);
-}
-function getResults($aiInfoSelect)
-{
- //TODO class Qcm
- if(isset($aiInfoSelect['outputOrder']))
- {
- $asOutputOrder = $aiInfoSelect['outputOrder'];
- }
- else
- {
- $asOutputOrder = array('grade', 'class', 'id_'.USER_TABLE, 'id_'.QCM_TABLE);
- }
- $oResults = getQuery( "SELECT /* ".basename(__FILE__)." ".__LINE__." */ grade, class, ".USER_TABLE."_last_name, ".USER_TABLE."_first_name, ".getId(USER_TABLE).", ".RESULT_TABLE.".id_".QCM_TABLE.", ".QCM_TABLE.", result
- FROM ".RESULT_TABLE."
- LEFT JOIN ".USER_TABLE." USING(id_".USER_TABLE.")
- LEFT JOIN ".QCM_TABLE." ON(".RESULT_TABLE.".id_".QCM_TABLE." = ".getId(QCM_TABLE).")
- ".getSQLResultsConstraints($aiInfoSelect)."
- ORDER BY ".QCM_TABLE.", grade, class, ".USER_TABLE."_last_name");
-
- while($asCurrentResult = mysql_fetch_array($oResults))
- {
- $asResults [$asCurrentResult[$asOutputOrder[0]]]
- [$asCurrentResult[$asOutputOrder[1]]]
- [$asCurrentResult[$asOutputOrder[2]]]
- [$asCurrentResult[$asOutputOrder[3]]] = array( QCM_TABLE => $asCurrentResult[QCM_TABLE],
- USER_TABLE.'_first_name' => $asCurrentResult[USER_TABLE.'_first_name'],
- USER_TABLE.'_last_name' => $asCurrentResult[USER_TABLE.'_last_name'],
- RESULT_TABLE => $asCurrentResult['result']);
- }
- return isset($asResults)?$asResults:false;
-}
-function getResultsAverage($iOutOf, $aiInfoSelect)
-{
- $iAvg = getUniqueValue( "SELECT /* ".basename(__FILE__)." ".__LINE__." */ AVG(result) as resultAvg
- FROM ".RESULT_TABLE."
- LEFT JOIN ".USER_TABLE." USING(id_".USER_TABLE.")
- LEFT JOIN ".QCM_TABLE." ON(".RESULT_TABLE.".id_".QCM_TABLE." = ".getId(QCM_TABLE).")
- ".getSQLResultsConstraints($aiInfoSelect), 'resultAvg');
- return roundMark($iOutOf, $iAvg);
-}
-function shuffle_assoc($asArray)
-{
- $aiArrayKeys = array_keys($asArray);
- shuffle($aiArrayKeys);
- foreach($aiArrayKeys as $iKey)
- {
- $asShuffledArray[$iKey] = $asArray[$iKey];
- }
- return $asShuffledArray;
-}
-function roundMark($iOutOf, $iMark)
-{
- return round($iMark*$iOutOf, DECIMAL_LIMIT);
-}
-
-/* QCM Builders */
-
-//HTML question builders
-function getQuestionPattern()
-{
- $sQuestionId = '#new#'.QUESTION_TABLE.'#questionId#';
- return array
- (
- 'html' => '
- |
-
- X
- #image#
- |
- #answersValue# |
- #rightAnswersValue# |
-
',
- 'variables' => array('#questionNum#', '#new#', '#questionId#', '#questionValue#', '#answersValue#', '#rightAnswersValue#', '#image#'),
- 'defaultValues' => array('#questionId#', 'new', '#questionId#', DEFAULT_QUESTION_INPUT, getInputHtml('Answer'), getInputHtml('RightAnswer'), getInputHtml('Image'))
- );
-}
-function getAnswerPattern()
-{
- $sAnswerId = '#new#'.QUESTION_TABLE.'#questionId#'.ANSWER_TABLE.'#answerId#';
- return array
- (
- 'html' => '',
- 'variables' => array('#questionId#', '#answerId#', '#new#', '#answerValue#'),
- 'defaultValues' => array('#questionId#', '#answerId#', 'new', DEFAULT_ANSWER_INPUT)
- );
-}
-function getRightAnswerPattern()
-{
- $sRightAnswerId = '#new#'.QUESTION_TABLE.'#questionId#'.ANSWER_TABLE.'#rightAnswerId#'.RIGHT_ANSWER.'#rightAnswerId#';
- return array
- (
- 'html' => '',
- 'variables' => array('#questionId#', '#rightAnswerId#', '#new#', '#rightAnswerChecked#'),
- 'defaultValues' => array('#questionId#', '#answerId#', 'new', '')
- );
-}
-function getCurrentAnswerPattern()
-{
- return array
- (
- 'html' => '',
- 'variables' => array('#questionId#', '#answerNumber#'),
- 'defaultValues' => array('!+questionId+!', '1')
- );
-}
-function getImagePattern()
-{
- $sQuestionId = '#new#'.QUESTION_TABLE.'#questionId#';
- return array
- (
- 'html' => '#image##imageText# :
',
- 'variables' => array('#image#', '#imageText#', '#new#', '#questionId#'),
- 'defaultValues' => array('', ADD_IMAGE_TEXT, 'new', '#questionId#')
- );
-}
-
-function getInputHtml($sType, $oData=false)
-{
- $asHtml = call_user_func('get'.$sType.'Pattern');
- $sInput = str_replace
- (
- $asHtml['variables'],
- (!$oData)?$asHtml['defaultValues']:$oData,
- $asHtml['html']
- );
- return (!$oData)?printJsString($sInput):$sInput;
-}
-function printJsString($sText)
-{
- return str_replace(array("\'", "'", "!", chr(10), chr(13), chr(9)),array("'", "\'", "'", '', '', ''), $sText);
-}
-function checkQcm($iQcmId)
-{
- $asQcm = getQcm($iQcmId);
- $asErrors = array();
-
- //no qcm name
- if($asQcm[QCM_TABLE] == DEFAULT_QCM_NAME)
- {
- $asErrors[] = getWarning('Le QCM n\'a aucun nom');
- }
-
- if(isset($asQcm[QUESTION_TABLE]) && count($asQcm[QUESTION_TABLE])>0)
- {
- $iQuestionNum = 0;
- foreach($asQcm[QUESTION_TABLE] as $iQuestionId => $asAnswers)
- {
- $iQuestionNum++;
- $iNbAnswers = 0;
- $iNbRightAnswers = 0;
-
- //empty question
- if($asAnswers[QUESTION_TABLE]=='' || $asAnswers[QUESTION_TABLE]==DEFAULT_QUESTION_INPUT)
- {
- $asErrors[] = 'Question '.$iQuestionNum.' : vide';
- }
- if(isset($asAnswers[ANSWER_TABLE]) && count($asAnswers[ANSWER_TABLE])>0)
- {
- foreach($asAnswers[ANSWER_TABLE] as $iAnswerId => $asAnswer)
- {
- $iNbRightAnswers += $asAnswer[RIGHT_ANSWER];
-
- //No answer and a valid answer checked
- if($asAnswer[ANSWER_TABLE]=='' && $asAnswer[RIGHT_ANSWER]>0)
- {
- $asErrors[] = 'Question '.$iQuestionNum.', réponse '.$iNbAnswers.' :
- Aucune réponse n\'a été écrite,
- mais une bonne réponse a été cochée';
- }
- }
- }
- else
- {
- //No answer for a defined question
- $asErrors[] = 'Question '.$iQuestionNum.' : Aucune réponse possible n\'a été ajoutée';
- }
-
- //No right answer
- if($iNbRightAnswers==0)
- {
- $asErrors[] = 'Question '.$iQuestionNum.' : Aucune bonne réponse n\'a été cochée';
- }
- }
- }
- else
- {
- //No question
- $asErrors[] = 'Aucune question n\'a été écrite';
- }
-
- $bResult = true;
- if(count($asErrors)>0)
- {
- array_unshift($asErrors, 'QCM incomplet', 'les éléments suivants comportent une erreur :');
- addMessage(getError($asErrors));
- $bResult = false;
- }
- return $bResult;
-}
-
-//SQL Questions builders
-function parseQuestion($sKey)
-{
- $asTables = array(QUESTION_TABLE, ANSWER_TABLE, RIGHT_ANSWER);
- if(strpos($sKey, QUESTION_TABLE) === false)
- {
- return false;
- }
- else
- {
- $aiParsedKey = array();
- $iCurrentIndex = -1;
- for($i=0;$i2)?false:$aiParsedKey;
- }
-}
-
-/* Security Functions */
-
-//Authorizations
-function pageAccessManagement($sRequestedPage)
-{
- //check on logon
- $bGrantedAccess = false;
- $bConnected = checkSession();
- $asAuth = isset($_GET['auth'])?unserialize(decodeUrl($_GET['auth'])):array();
- if(isAuthorizedPage($sRequestedPage))
- {
- $bGrantedAccess = true;
- }
- elseif($sRequestedPage=='download' || $sRequestedPage=='remote')
- {
- $bResult = false;
- if($sRequestedPage=='download' && $bConnected)
- {
- $sFileName = isset($_POST['generate'])?generateCsv($_POST['file'], $_POST['content']):$_REQUEST['file'];
- $bResult = download($sFileName, array('csv', 'sql', 'zip', 'gz'));
- }
- elseif($sRequestedPage=='remote' && is_array($asAuth) && count($asAuth)>0 && checkExternalAccess($asAuth['lastname'], $asAuth['firstname'], $asAuth['pass']))
- {
- $bResult = remote($_GET['action']);
- }
- die($bResult?'':getCleanMessage());
- }
- elseif(isset($_SESSION['user']))
- {
- if(!$bConnected || $sRequestedPage == 'logout')
- {
- addMessage(logMeOut());
- }
- elseif(isAdminOnlyPage($sRequestedPage) && !isAdmin()) //stop displaying page (requires admin status)
- {
- relocate(getError('Zone réservée aux administrateurs'));
- }
- else
- {
- $bGrantedAccess = true;
- }
- }
- elseif(isset($_GET['register']))
- {
- $bGrantedAccess = ($_GET['register'] == 1)?register($_POST):logMeIn($_POST['login'], $_POST['firstName'], $_POST['pass']);
- if($bGrantedAccess && isset($_COOKIE[EXPECTED_PAGE]))
- {
- $sRequestedPage = $_COOKIE[EXPECTED_PAGE];
- setcookie(EXPECTED_PAGE, '', time()-3600);
- }
- }
- elseif($sRequestedPage!='logout')
- {
- setcookie(EXPECTED_PAGE, $sRequestedPage, time()+3600);
- }
-
- //Choose corresponding page
- if($bGrantedAccess)
- {
- if($sRequestedPage!='logon' && array_key_exists($sRequestedPage, getPageDescription()))
- {
- $sPage = $sRequestedPage;
- }
- else
- {
- $sPage = DEFAULT_LOGGED_PAGE;
- }
- }
- else
- {
- $sPage = 'logon';
- }
- return $sPage;
-}
-function logMeIn($sLastName, $sFirstName, $sPass)
-{
- $asUser = getUserFromLogin($sLastName, $sFirstName);
- if(!$asUser)
- {
- addMessage(getError('Utilisateur inconnu'));
- }
- elseif(checkPassword($sPass, $asUser['pass']))
- {
- setSession($asUser);
- addMessage(getSuccess('Connexion réussie ! Bienvenue '.ucwords($_SESSION['firstName'].' '.$_SESSION['lastName'])));
- //addFeed('CONNECT', $asUser['id_'.USER_TABLE], USER_TABLE, $asUser[USER_TABLE.'_first_name'].' '.$asUser[USER_TABLE.'_last_name']);
- return true;
- }
- else
- {
- addMessage(getError('Mot de passe incorrect'));
- }
- return false;
-}
-function checkExternalAccess($sLastName, $sFirstName, $sPass)
-{
- $asUser = getUserFromLogin($sLastName, $sFirstName);
- return ($asUser && ($sPass == $asUser['pass']) && $asUser['admin']);
-}
-function logMeOut($bRelocate=true)
-{
- //carry messages through sessions
- $sMessages = getCleanMessage();
-
- //destroy session
- $_SESSION = array();
- $bResult = session_destroy();
-
- //start new session and redirect towards the log-in panel
- session_start();
- if($bRelocate)
- {
- relocate($sMessages.($bResult?getSuccess('Vous êtes déconnecté'):getError(array('Echec de la déconnexion', 'Veuillez fermer le navigateur et l\'ouvrir de nouveau'))), 'logon');
- }
- return $bResult;
-}
-function relocate($oMessage, $sPage=DEFAULT_LOGGED_PAGE, $asVar=array())
-{
- //clean buffer
- ob_end_clean();
-
- //set user action result message
- if(!isset($_SESSION))
- {
- session_start();
- }
- addMessage($oMessage);
-
- //load new page with specific variables
- $asVar['page'] = $sPage;
- header('Location:index.php?'.implodeAll($asVar, '=', '&'));
- die();
-}
-function register($asData)
-{
- $sLastName = strtolower($asData['login']);
- $sFirstName = strtolower($asData['firstname']);
- $sPass = $asData['pass'];
- $bExistingUser = getUserFromLogin($sLastName, $sFirstName);
-
- $sErrorMessage = '';
- if($sFirstName=='' || $sLastName=='' || $sPass=="" || $asData['pass2']=='')
- {
- $sErrorMessage = 'Tous les champs ne sont pas remplis';
- }
- elseif(htmlspecialchars($sLastName, ENT_QUOTES)!=$sLastName || htmlspecialchars($sFirstName, ENT_QUOTES)!=$sFirstName)
- {
- $sErrorMessage = 'Les caract&egrav;res HTML sont interdits dans les noms et prénoms';
- }
- elseif($sPass != $asData['pass2'])
- {
- $sErrorMessage = 'Les mots de passes ne sont pas les mêmes';
- }
- elseif($bExistingUser)
- {
- $sErrorMessage = 'Il existe déjà un compte ayant ce nom et ce prénom dans la base de données';
- }
-
- if($sErrorMessage != '')
- {
- addMessage(getError($sErrorMessage));
- }
- else
- {
- $iUserId = insertRow(USER_TABLE, array($sFirstName, $sLastName, $asData['grade'], $asData['class'], encryptPassword($sPass), 0));
- addMessage(getSuccess('Félicitation '.$sFirstName.' '.$sLastName.' ! Votre compte est créé'));
- addFeed('CREATE', $iUserId, USER_TABLE, $sFirstName.' '.$sLastName, '', 0, $sFirstName.' '.$sLastName);
- return logMeIn($sLastName, $sFirstName, $sPass);
- }
- return false;
-}
-function isAdmin($iUserId=false)
-{
- if(!checkSession()) //not connected or wrong id
- {
- $bIsAdmin = false;
- }
- else
- {
- $iUserId = ($iUserId===false)?$_SESSION['user']:$iUserId;
- $bIsAdmin = selectValue(USER_TABLE, 'admin', $iUserId);
- }
- return $bIsAdmin;
-}
-function isAuthorizedPage($sPage)
-{
- $asAuthorizedPages = array('install', 'register', 'qcmProcess', 'qcmResults', 'rss');
- return in_array($sPage,$asAuthorizedPages);
-}
-function isAdminOnlyPage($sPage)
-{
- $asAdminOnlyPages = array('account_admin', 'statsAdmin', 'test', 'version', 'backUpCreator', 'buildCsv', 'download', 'search');
- return in_array($sPage, $asAdminOnlyPages);
-}
-function setSession($asUser)
-{
- if(!is_array($asUser))
- {
- $asUser = selectRow(USER_TABLE, array($asUser));
- }
- $_SESSION['user'] = $asUser['id_user'];
- $_SESSION['lastName'] = $asUser['user_last_name'];
- $_SESSION['firstName'] = $asUser['user_first_name'];
- $_SESSION['grade'] = $asUser['grade'];
- $_SESSION['class'] = $asUser['class'];
- $_SESSION['sessionId'] = getSessionId();
-}
-function checkSession()
-{
- return array_key_exists('user', $_SESSION)
- && is_numeric($_SESSION['user'])
- && array_key_exists('sessionId', $_SESSION)
- && $_SESSION['sessionId'] == getSessionId();
-}
-function getSessionId()
-{
- return encryptPassword($_SERVER['HTTP_USER_AGENT'].$_SERVER['REMOTE_ADDR']);
-}
-function checkOrigin($sPrevPage, $asExtraCheck=array())
-{
- $asUrlParts = parse_url(array_key_exists('HTTP_REFERER', $_SERVER)?$_SERVER['HTTP_REFERER']:'');
- parse_str(array_key_exists('query', $asUrlParts)?$asUrlParts['query']:'', $asUrlVariables);
-
- $bExtraCheck = true;
- $asExtraCheck['page'] = $sPrevPage;
- foreach($asExtraCheck as $sGetVar=>$sGetValue)
- {
- if(!isset($asUrlVariables[$sGetVar]) || $asUrlVariables[$sGetVar]!=$sGetValue)
- {
- $bExtraCheck = false;
- break;
- }
- }
-
- return $bExtraCheck;
-}
-
-//encoding functions
-function encryptPassword($sPass)
-{
- return md5(shuffleText($sPass));
-}
-function checkPassword($sClearPass,$sEncodedPass)
-{
- return encryptPassword($sClearPass) == $sEncodedPass;
-}
-function encodeUrl($sUrl)
-{
- return base64_encode(serialize(explode("\n", shuffleText($sUrl))));
-}
-function decodeUrl($sEncodedUrl)
-{
- return shuffleText(implode("\n", unserialize(base64_decode($sEncodedUrl))));
-}
-function shuffleText($sText)
-{
-/*
- $sRandomText = <<< RANDTEXT
- let's_mess%a&bit;with~it,!just§for¨the^sake*of-it
-RANDTEXT;
-*/
- $sRandomText = "let's_mess%a&bit;with~it,!just§for¨the^sake*of-it";
- for($iIndex=0; $iIndex < strlen($sText); $iIndex++)
- {
- $sText[$iIndex] = $sRandomText[$iIndex%strlen($sRandomText)] ^ $sText[$iIndex];
- }
- return $sText;
-}
-function cleanPost(&$asData)
-{
- //get rid of magic quotes
- if(function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc())
- {
- cleanData($asData, 'stripslashes');
- }
-}
-function cleanData(&$oData, $sCleaningFunc)
-{
- if(!is_array($oData))
- {
- $oData = call_user_func($sCleaningFunc, $oData);
- }
- elseif(count($oData)>0)
- {
- $asKeys = array_map($sCleaningFunc, array_keys($oData));
- $asValues = array_map($sCleaningFunc, $oData);
- $oData = array_combine($asKeys, $asValues);
- }
-}
-
-/* HTML Display Functions */
-
-//Global application messages
-function addMessage($sMessage)
-{
- if(!isset($_SESSION['message']))
- {
- $_SESSION['message'] = '';
- }
- $_SESSION['message'] .= $sMessage;
-}
-function getCleanMessage()
-{
- $sMessage = '';
- if(isset($_SESSION['message']))
- {
- $sMessage = $_SESSION['message'];
- unset($_SESSION['message']);
- }
- return $sMessage;
-}
-
-//Error / Success handling
-function getError($oMessage=false, $bSqlError=false, $bDie=false)
-{
- if(!$oMessage)
- {
- $oMessage = 'Une erreur inconnue est apparue';
- }
- $sErrorMessage = getParagraph($oMessage, 'error', 'Erreur '.($bSqlError?'SQL ':'').'!');
- if($bDie)
- {
- echo $sErrorMessage;
- die('die() called by '.__FUNCTION__);
- }
- else
- {
- return $sErrorMessage;
- }
-}
-function getWarning($sText)
-{
- return getParagraph($sText, 'warning', 'Attention :');
-}
-function getSuccess($sText)
-{
- return getParagraph($sText, 'success');
-}
-function getNotice($sText)
-{
- return getParagraph($sText, 'notice');
-}
-
-//compute HTML
-function getImage($sSrc, $sAlt='', $sClass='', $sStyle='', $asExtraAttr=array())
-{
- $sAlt = ($sAlt=='')?basename($sSrc):$sAlt;
- $asExtraAttr = array_merge(array('src'=>$sSrc, 'alt'=>$sAlt), $asExtraAttr);
- return getHtml('', 'img', $sClass, $sStyle, $asExtraAttr, true);
-}
-function getA($sLink, $oText, $sTitle='', $sClass='', $sStyle='', $asExtraAttr=array())
-{
- $asExtraAttr = array_merge(array('href'=>$sLink, 'title'=>$sTitle), $asExtraAttr);
- return getHtml($oText, 'a', $sClass, $sStyle, $asExtraAttr);
-}
-function getParagraph($oText, $sClass='', $sTitle='')
-{
- $sComments = '';
- if(is_array($oText))
- {
- $sFirstLine = array_shift($oText);
- $iLine=0;
- foreach($oText as $sCommentTitle=>$sLine)
- {
- if(!is_numeric($sCommentTitle))
- {
- $sCommentTitle = getHtml($sCommentTitle, 'span', '', 'font-weight:bold;').' : ';
- }
- else
- {
- $sCommentTitle = '';
- }
- $sComments .= "\n".getHtml($sCommentTitle.$sLine, 'p', ($iLine==0)?'notice':'');
- $iLine++;
- }
- }
- else
- {
- $sFirstLine = $oText;
- }
- $sTitle = getHtml($sTitle.' '.$sFirstLine, 'p', $sClass);
- return getHtml($sTitle.$sComments, 'div', $sClass.' rounded');
-}
-function getHtml($oText, $sTag, $sClass='', $sStyle='', $asExtraAttr=array(), $bAutoClose=false, $sInter='')
-{
- if($sClass!='')
- {
- $asExtraAttr['class'] = $sClass;
- }
- if($sStyle!='')
- {
- $asExtraAttr['style'] = $sStyle;
- }
- $sHtmlAttr = '';
- foreach($asExtraAttr as $sAttrName=>$sAttrValue)
- {
- $sHtmlAttr .= ' '.$sAttrName.'="'.$sAttrValue.'"';
- }
- if($bAutoClose)
- {
- return encapsulate('', "\n".'<'.$sTag.$sHtmlAttr, ' />');
- }
- else
- {
- return encapsulate($oText, "\n".'<'.$sTag.$sHtmlAttr.'>', ''.$sTag.'>', $sInter);
- }
-}
-function encapsulate($oText, $sPre='', $sPost=false, $sInter='')
-{
- if($sPost===false)
- {
- $sPost = $sPre;
- }
- if(is_array($oText))
- {
- $oText = implode($sPost.$sInter.$sPre, $oText);
- }
- return $sPre.$oText.$sPost;
-}
-function implodeAll($asText, $asKeyValueSeparator='', $sRowSeparator='', $sKeyPre='', $sValuePost=false)
-{
- if($sValuePost===false)
- {
- $sValuePost = $sKeyPre;
- }
- $asCombinedText = array();
-
- //if unique value for key value separator
- if(!is_array($asKeyValueSeparator))
- {
- $asKeyValueSeparator = array_combine(array_keys($asText), array_fill(0, count($asText), $asKeyValueSeparator));
- }
-
- foreach($asText as $sKey=>$sValue)
- {
- $asCombinedText[] = $sKeyPre.$sKey.$asKeyValueSeparator[$sKey].$sValue.$sValuePost;
- }
- return implode($sRowSeparator, $asCombinedText);
-}
-function getSelect($asListe, $sOptionIdKey, $sOptionDescKey='', $asAddedValues=array(), $sSelectedValue='', $sFormName='')
-{
- $asOptions = array();
- $asOptionsHtml='';
- $sSelectName = str_replace('id_', '', $sOptionIdKey);
- if($sOptionDescKey=='')
- {
- $sOptionDescKey = $sOptionIdKey;
- }
- foreach($asListe as $asListValues)
- {
- $asOptions[$asListValues[$sOptionIdKey]] = $asListValues[$sOptionDescKey];
- }
- if(count($asAddedValues)>0)
- {
- $asOptions += $asAddedValues;
- }
- ksort($asOptions);
- foreach($asOptions as $sOptionId=>$sOptionDesc)
- {
- $asOptionsHtml .= "\n".'';
- }
- $sAutoSubmit = ($sFormName!='')?' onchange="document.forms[\''.$sFormName.'\'].submit();"':'';
- return '';
-}
-function getMenu($sRequestedPage, $bAdmin)
-{
- $sDisplayMenu = '';
- switch($sRequestedPage)
- {
- case 'logon':
- $sCurrentPage = DEFAULT_LOGGED_PAGE;
- break;
- case 'qcmProcess':
- $sCurrentPage = 'qcmCreator';
- break;
- default:
- $sCurrentPage = $sRequestedPage;
- }
- $asMenuItems = array('Accueil' => DEFAULT_LOGGED_PAGE, 'Créer un nouveau QCM' => 'qcmCreator', 'Compte' => 'account', 'Notes' => 'stats');
- if(isset($_SESSION['user']))
- {
- if($bAdmin)
- {
- $asMenuItems['Back-up'] = 'backUpCreator';
- $asMenuItems['Notes'] = 'statsAdmin';
- $asMenuItems['Compte'] = 'account_admin';
- }
- $asMenuItems['Déconnexion'] = 'logout';
- }
- foreach ($asMenuItems as $sMenuItem => $sItemLink)
- {
- $sClass = 'top-left-rounded top-right-rounded'.(($sCurrentPage == $sItemLink)?' current':'');
- $sDisplayMenu .= getA('?page='.$sItemLink, $sMenuItem, getPageDescription($sItemLink) , $sClass)."\n";
- }
- return $sDisplayMenu;
-}
-function getClasses($aiClass=array(), $sFormName='')
-{
- $iUserGrade = isset($aiClass['grade'])?$aiClass['grade']:'';
- $iUserClass = isset($aiClass['class'])?$aiClass['class']:'';
- $sAutoSubmit = ($sFormName!='')?' onchange="document.forms[\''.$sFormName.'\'].submit();"':'';
- $sSelects = ' ème ';
-}
-function getChangelogTypeSelect($iChangeLogId=false, $sTypeSelected='')
-{
- if(!$iChangeLogId)
- {
- $sStyle = '';
- $iChangeLogId = '0';
- $sChangelogAction = 'addChangelog';
- }
- else
- {
- $sStyle = 'class="nude" ';
- $sChangelogAction = 'modifyChangelog';
- }
- $sSelectType = '';
-}
-function getOutOfForm($iOutOf=20, $bSelectOnly=true, $sAction='', $sText='Note')
-{
- $sFormStart = $sFormEnd = $sClass = $sOnChange = '';
- if(!$bSelectOnly)
- {
- if($sAction=='')
- {
- $sAction = $_SERVER['REQUEST_URI'];
- }
- $sFormStart = '';
- $sClass = ' class="mergeWithTh"';
- $sOnChange = ' onchange="outof.submit();"';
- }
- foreach(array(5, 10, 20, 100) as $iOptionId)
- {
- $sSeleted = ($iOptionId==$iOutOf)?' selected':'';
- $asHtmlOptions[] = '';
- }
- $sHtmlSelect = '';
- return $sFormStart.$sHtmlSelect.$sFormEnd;
-}
-
-/* User Environment Functions */
-
-function getElapsedTime($sStartTime)
-{
- list($iCurrentMilli, $iCurrentSeconde, $iStartMilli, $iStartSeconde) = explode(' ', microtime().' '.$sStartTime);
- return round($iCurrentSeconde + $iCurrentMilli -($iStartSeconde + $iStartMilli), 4);
-}
-function getOS()
-{
- $sUserAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
- if(strpos($sUserAgent, 'mac')!==false || strpos($sUserAgent, 'apple')!==false)
- {
- $sUserOS = OS_MAC;
- }
- elseif(strpos($sUserAgent, 'windows')!==false)
- {
- $sUserOS = OS_WINDOWS;
- }
- else
- {
- $sUserOS = OS_LINUX;
- }
- return $sUserOS;
-}
-function getBrowser()
-{
- $sUserAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
- $asBrowsers = array('msie', 'firefox', 'opera', 'safari', 'chrome');
- foreach($asBrowsers as $sBrowser)
- {
- if(strpos($sUserAgent, $sBrowser)!==false)
- {
- break;
- }
- }
- return $sBrowser;
-}
-function feedback($sMessage)
-{
- if(FEEDBACK_MAIL != '')
- {
- $sHtmlMessage = getHtml('Erreur SQL', 'h2').'
'.getHtml('User Id:'.$_SESSION['user'].' at '.date('r'), 'em').'
'.$sMessage;
- $sPlainMessage = strip_tags(str_replace('
', "\n", $sMessage));
-
- $iBoundary = uniqid("HTMLEMAIL");
- $sHeaders = 'From: feedback@'.DOMAIN."\r\n".
- 'MIME-Version: 1.0'."\r\n".
- 'Content-Type: multipart/alternative;'.
- 'boundary = '.$iBoundary."\r\n\r\n".
- 'MIME encoded Message'.
- '--'.$iBoundary."\r\n".
- 'Content-Type: text/plain; charset=ISO-8859-1'."\r\n".
- 'Content-Transfer-Encoding: base64'."\r\n\r\n".
- chunk_split(base64_encode($sPlainMessage)).
- '--'.$iBoundary."\r\n".
- 'Content-Type: text/html; charset=ISO-8859-1'."\r\n".
- 'Content-Transfer-Encoding: base64'."\r\n\r\n".
- chunk_split(base64_encode($sHtmlMessage));
-
- @mail(FEEDBACK_MAIL, 'SQL Error', '', $sHeaders);
- }
-}
-
-/* File Functions */
-
-function remote($iActionId)
-{
- if($iActionId==CREATE_NEW_BACKUP || $iActionId==ACCESS_POINT_NEW_VERSION)
- {
- createBackUp(true);
- }
- if($iActionId==ACCESS_POINT_LAST_VERSION || $iActionId==ACCESS_POINT_NEW_VERSION)
- {
- return download(encodeUrl(getLastBackUp('fileName')), array('sql'));
- }
-}
-function download($sEncodedFilePath, $asAuthExt)
-{
- if($sEncodedFilePath=='' || count($asAuthExt)==0)
- {
- relocate(getError('Informations incomplètes sur le fichier'));
- }
- $sFileName = basename(decodeUrl($sEncodedFilePath));
- $sFilePath = BACKUP_FOLDER.$sFileName;
- $sFileFullPath = dirname($_SERVER['SCRIPT_FILENAME'])."/".$sFilePath;
-
- if(!in_array(getExtension($sFileName), $asAuthExt))
- {
- relocate(getError('Fichier interdit : '.$sFileName));
- }
- elseif(!file_exists($sFilePath))
- {
- relocate(getError('Fichier introuvable : '.$sFileName));
- }
- else
- {
- //get mime type
- if(class_exists('finfo'))
- {
- $oFileInfo = new finfo(FILEINFO_MIME);
- $sMimetype = $oFileInfo->file($sFileFullPath);
- }
- else
- {
- $sMimetype = 'application/force-download';
- }
-
- //set headers
- header('Pragma: public');
- header('Expires: 0');
- header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
- header('Cache-Control: public');
- header('Content-Description: File Transfer');
- header('Content-Type: '.$sMimetype);
- header('Content-Disposition: attachment; filename='.$sFileName);
- header('Content-Transfer-Encoding: binary');
- header('Content-Length: '.filesize($sFilePath));
-
- // download
- if ($oFile = @fopen($sFilePath, 'rb'))
- {
- while(!feof($oFile))
- {
- print(fread($oFile, 1024*8));
- flush();
- if(connection_status() != 0)
- {
- @fclose($oFile);
- }
- }
- @fclose($oFile);
- }
- }
- return true;
-}
-function generateCsv($sFile, $sContent)
-{
- if($sFile=='' || $sContent=='')
- {
- relocate(getError('Informations incomplètes sur le fichier'));
- }
- else
- {
- $asCsvContent = unserialize(urldecode($sContent));
- $sCsvFileName = $sFile.'_'.date(FILE_DATE_FORMAT).'.csv';
- $oCsvFile = fopen(BACKUP_FOLDER.$sCsvFileName, 'w');
- if(!$oCsvFile)
- {
- relocate(getError(array('Impossible d\'écrire dans le dossier : '.BACKUP_FOLDER, 'Vérifiez les droits d\'écriture')));
- }
- else
- {
- foreach($asCsvContent as $asCsvLine)
- {
- fputs($oCsvFile, implode('|', $asCsvLine)."\n");
- }
- fclose($oCsvFile);
- return encodeUrl($sCsvFileName);
- }
- }
-}
-function resizeRenameImage($sFilePath, $sNewFileName)
-{
- list($iWidth, $iHeight) = getimagesize($sFilePath);
-
- $sExt = getExtension($sFilePath);
- $sNewFilePath = IMAGE_FOLDER.$sNewFileName.'.'.$sExt;
-
- if($iWidth>MAX_IMAGE_WIDTH)
- {
- //new sizes
- $iResizedWidth = MAX_IMAGE_WIDTH;
- $iResizedHeight = ($iResizedWidth / $iWidth) * $iHeight;
-
- //create image from source
- $oSource = call_user_func('imagecreatefrom'.$sExt, $sFilePath);
-
- //Resize
- $oThumb = imagecreatetruecolor($iResizedWidth, $iResizedHeight);
- imagecopyresized($oThumb, $oSource, 0, 0, 0, 0, $iResizedWidth, $iResizedHeight, $iWidth, $iHeight);
-
- //Save
- call_user_func_array('image'.$sExt, array($oThumb, $sNewFilePath));
- }
- else
- {
- rename($sFilePath, $sNewFilePath);
- }
- unlink($sFilePath);
-}
-function getExtension($sFileName)
-{
- $sFileInfo = pathinfo($sFileName);
- $sExt = strtolower($sFileInfo['extension']);
- return $sExt=='jpg'?'jpeg':$sExt;
-}
-
-/* Debug Functions */
-
-function pre($sText, $sTitle='Test', $bDie=false, $bLog=false)
-{
- if($bLog)
- {
- file_put_contents('log', ($sTitle!=''?$sTitle." :\n":'').print_r($sText, true)."\n\n");
- }
- echo '';
- if($bDie)
- {
- die('[die() called by the test function '.__FUNCTION__.'()]');
- }
-}
-?>
\ No newline at end of file
diff --git a/current_version/.svn/text-base/frontal.php.svn-base b/current_version/.svn/text-base/frontal.php.svn-base
deleted file mode 100644
index 159b2f3..0000000
--- a/current_version/.svn/text-base/frontal.php.svn-base
+++ /dev/null
@@ -1,140 +0,0 @@
-#qcmName#', 'Voulez-vous vraiment #qcmAction# le QCM : "#qcmName#" ?');
-$oEditInputBox = new InputBox( 'Modification du QCM : #qcmName#',
- 'Voulez-vous faire une copie du QCM : "#qcmName#" avant de le modifier ?',
- array('Oui'=>'goTo(\'?page=qcmCreator&qcm=#idQcm#©Qcm=1\')', 'Non'=>'goTo(\'?page=qcmCreator&qcm=#idQcm#©Qcm=0\')'));
-
-//display valid and not valid (unfinished) QCM
-$asParams = array
- (
- 'notValid' => array
- (
- 'title' => 'QCM non finalisés',
- 'valid' => '0',
- 'displayConstraint' => $bAdmin?array():array('id_'.USER_TABLE=>$_SESSION['user']),
- 'goTo' => 'Creator',
- 'copyQcm' => false,
- 'deleteAction' => 'deleteQcm',
- 'deleteTitle' => 'Supprimer',
- 'editTitle' => 'Activer'
- ),
- 'valid' => array
- (
- 'title' => 'QCM disponibles',
- 'valid' => '1',
- 'displayConstraint' => array(),
- 'goTo' => 'Reader',
- 'copyQcm' => true,
- 'deleteAction' => 'desactivateQcm',
- 'deleteTitle' => 'Désactiver',
- 'editTitle' => 'Editer'
- )
- );
-
-foreach($asParams as $sParamName => $asParamValues)
-{
- $asConstraints = array_merge(array('valid'=>$asParamValues['valid']), $asParamValues['displayConstraint']);
- $asQcms = selectRows(array('from'=>QCM_TABLE, 'constraint'=>$asConstraints));
- $iTotal = 0;
- if(count($asQcms) > 0)
- {
- $asDisplay[$sParamName] = ''.$asParamValues['title'].' :
- ';
- if($iTotal==0)
- {
- unset($asDisplay[$sParamName]);
- }
- next($asParams);
- }
- elseif($sParamName == 'valid')
- {
- $asDisplay[$sParamName] = getNotice('Aucun Qcm n\'est disponible');
- }
-}
-echo implode("\n",$asDisplay);
-echo $oDeleteInputBox->getHtml();
-echo $oEditInputBox->getHtml();
-?>
\ No newline at end of file
diff --git a/current_version/.svn/text-base/functions.js.svn-base b/current_version/.svn/text-base/functions.js.svn-base
deleted file mode 100644
index ccb8c32..0000000
--- a/current_version/.svn/text-base/functions.js.svn-base
+++ /dev/null
@@ -1,143 +0,0 @@
-/* JavaScript Document. summoned by index.php */
-
-function emptyBox(id)
-{
- if(document.forms['qcmCreator'].elements[id].value == "Tapez ici la question..." || document.forms['qcmCreator'].elements[id].value == "Tapez ici une reponse...")
- {
- document.forms['qcmCreator'].elements[id].value = "";
- }
-}
-
-function goTo(url)
-{
- window.location.href = url;
-}
-
-function setFocus(id, element)
-{
- if(!element)
- {
- document.getElementById(id).focus();
- }
- else
- {
- document.forms[id].elements[element].focus();
- }
-}
-
-function setSelection(form, element)
-{
- document.forms[form].elements[element].select();
-}
-
-function submitForm(formName)
-{
- document.forms[formName].submit();
-}
-
-function validateBackUp(id)
-{
- document.forms['restore'].backUpId.value = id;
- submitForm('restore');
-}
-
-document.onmousemove = setXY;
-
-function mouseX(evt)
-{
- if (evt.pageX)
- {
- return evt.pageX;
- }
- else if (evt.clientX)
- {
- return evt.clientX + (document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft);
- }
- else return null;
-}
-
-function mouseY(evt)
-{
- if (evt.pageY)
- {
- return evt.pageY;
- }
- else if (evt.clientY)
- {
- return evt.clientY + (document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop);
- }
- else return null;
-}
-
-function setXY(evt)
-{
- X = mouseX(evt);
- Y = mouseY(evt);
-}
-
-function hover(id, forceSet)
-{
- var className = document.getElementById(id).className;
- var index = className.indexOf('Hover');
- if(index === -1 && (!forceSet || forceSet=='y'))
- {
- document.getElementById(id).className = className+" "+className+"Hover";
- }
- else if(index !== -1 && (!forceSet || forceSet=='n'))
- {
- var spacePos = className.indexOf(' ');
- document.getElementById(id).className = className.substring(0, spacePos);
- }
-}
-
-function disableBox(form, element, forceSet)
-{
- if(!forceSet)
- {
- document.forms[form].elements[element].disabled = !document.forms[form].elements[element].disabled;
- }
- else
- {
- document.forms[form].elements[element].disabled = (forceSet=='y')?true:false;
- }
- if(document.getElementById(element+'Delete'))
- {
- hover(element+'Delete', forceSet);
- }
- return document.forms[form].elements[element].disabled?'y':'n';
-}
-function disableDiv(id, forceSet)
-{
- var className = document.getElementById(id).className;
- var index = className.indexOf('Disabled');
- if(index === -1 && (!forceSet || forceSet=='y'))
- {
- document.getElementById(id).className = className+"Disabled";
- }
- else if(!forceSet || forceSet=='n')
- {
- document.getElementById(id).className = className.replace(/Disabled/g, "");
- }
- return (document.getElementById(id).className.indexOf('Disabled')===-1)?'n':'y';
-}
-function setBoxDisplay(id, forceSet)
-{
- if(!forceSet)
- {
- document.getElementById(id).style.display = (document.getElementById(id).style.display=='none')?'':'none';
- }
- else
- {
- document.getElementById(id).style.display = (forceSet=='y')?'':'none';
- }
-}
-
-function concatenateKeyWords(keywords)
-{
- return keywords.replace(/ /g, '+');
-}
-
-function replaceInnerText(id, newText)
-{
- document.getElementById(id).innerHTML = newText;
-}
\ No newline at end of file
diff --git a/current_version/.svn/text-base/index.php.svn-base b/current_version/.svn/text-base/index.php.svn-base
deleted file mode 100644
index aae9d86..0000000
--- a/current_version/.svn/text-base/index.php.svn-base
+++ /dev/null
@@ -1,156 +0,0 @@
-
- Recherche
- ';
-}
-$sConnectedUser = $bConnected?'Connecté : '.getHtml(ucwords($_SESSION['firstName'].' '.$_SESSION['lastName']), 'strong'):'Non connecté';
-$asInfoDisplay['connectedUser'] = getHtml($sConnectedUser, 'p', 'connectedUser rounded');
-$asGeneralDisplay['info'] = getHtml(getHtml(getHtml($asInfoDisplay, 'td', 'blank', 'padding:0;width:33%;'), 'tr'), 'table', 'maxWidth', 'border-spacing:0;');
-
-//display browser warning
-if(getBrowser() == 'msie')
-{
- $asGeneralDisplay['main']['browser'] = getWarning(array('Le navigateur Internet Explorer est déconseillé pour cette application',
- 'Nous vous conseillons un navigateur optimisé (et gratuit) tel que
- Firefox'));
-}
-
-/**
- * Get included file
- * Available variables within file:
- * $bNoTemplate Boolean Display the application template
- * $oConnection Object Database connection handle
- * $iUserId Integer User Id (===false is not connected)
- * $bAdmin Boolean Is the current user an admin
- * $sPage String Page displayed
- * $sScriptStartTime String  Time at which the script started to be executed
- */
-$bNoTemplate = false;
-ob_start();
-require_once($sPagePath);
-$asGeneralDisplay['main']['file'] = ob_get_clean();
-
-//display message
-$asGeneralDisplay['message'] = getCleanMessage();
-if($bAdmin && $sPage==DEFAULT_LOGGED_PAGE)
-{
- $asGeneralDisplay['message'] .= getCleanPublication($iUserId);
-}
-
-//display included file
-if($bNoTemplate)
-{
- echo $asGeneralDisplay['main']['file'];
- die();
-}
-
-//display Menu
-$asGeneralDisplay['menu'] = getMenu($sPage, $bAdmin);
-
-//display footer
-$sLogLink = 'Version '.CURRENT_VERSION;
-$asGeneralDisplay['rss'] = '';
-if($bAdmin)
-{
- $sLogLink = getA('?page=version', $sLogLink, 'changelog et téléchargement');
- $asGeneralDisplay['rss'] = getHtml(getA('?page=rss', getImage('images/feedIcon.png', 'flux rss'), 'flux rss'), 'p');
-}
-$asGeneralDisplay['version'] = $sLogLink;
-
-//close SQL connection
-if($oConnection)
-{
- mysql_close($oConnection);
-}
-
-//combine main part
-$asGeneralDisplay['main'] = $asGeneralDisplay['message']."\n".implode("\n", $asGeneralDisplay['main']);
-
-?>
-
-
-
-
-
-
-
-
-
-
- QCM -
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/current_version/.svn/text-base/install.php.svn-base b/current_version/.svn/text-base/install.php.svn-base
deleted file mode 100644
index d8726f2..0000000
--- a/current_version/.svn/text-base/install.php.svn-base
+++ /dev/null
@@ -1,154 +0,0 @@
- $_POST['DB_SERVER'],
- 'DB_LOGIN' => $_POST['DB_LOGIN'],
- 'DB_PASS' => $_POST['DB_PASS'],
- 'DB_NAME' => $_POST['DB_NAME'],
- 'FEEDBACK_MAIL' => $_POST['FEEDBACK_MAIL'],
- 'MAX_CLASS' => $_POST['MAX_CLASS'],
- 'MIN_GRADE' => $_POST['MIN_GRADE'],
- 'MAX_GRADE' => $_POST['MAX_GRADE'],
- 'READY_TO_USE' => $_POST['READY_TO_USE']);
- $sSettingsFile = '';
- if(file_put_contents(SETTINGS_FILE, $sSettingsFile, FILE_APPEND))
- {
- relocate(getSuccess('Installation terminée'));
- }
- else
- {
- addMessage(getError(array('Création de fichier impossible', 'Vérifier les droits sur le dossier principal')));
- }
- }
- }
-}
-else
-{
- logMeOut(false);
-}
-
-if(file_exists(SETTINGS_FILE))
-{
- $sDbServer = DB_SERVER;
- $sDbLogin = DB_LOGIN;
- $sDbName = DB_NAME;
- $sFeedBackMail = FEEDBACK_MAIL;
- $iMaxClass = MAX_CLASS;
- $iMinGrade = MIN_GRADE;
- $iMaxGrade = MAX_GRADE;
-}
-
-//TODO getHtmlTable()
-?>
-Bienvenue dans QcmMaker v !
-Veuillez entrer les informations suivantes :
-
diff --git a/current_version/.svn/text-base/log.svn-base b/current_version/.svn/text-base/log.svn-base
deleted file mode 100644
index 6fce327..0000000
--- a/current_version/.svn/text-base/log.svn-base
+++ /dev/null
@@ -1,5 +0,0 @@
-data :
-INSERT /* config.php 830 */
- INTO changelog (`led`, `version`, `type`, `changelog`, `progress`)
- VALUES ('0000-00-00 00:00:00', 0.1, 'new feature', 'Création de QCM', 1)
-
diff --git a/current_version/.svn/text-base/logon.php.svn-base b/current_version/.svn/text-base/logon.php.svn-base
deleted file mode 100644
index de2685e..0000000
--- a/current_version/.svn/text-base/logon.php.svn-base
+++ /dev/null
@@ -1,19 +0,0 @@
-
\ No newline at end of file
diff --git a/current_version/.svn/text-base/qcmCreator.php.svn-base b/current_version/.svn/text-base/qcmCreator.php.svn-base
deleted file mode 100644
index 0336e43..0000000
--- a/current_version/.svn/text-base/qcmCreator.php.svn-base
+++ /dev/null
@@ -1,278 +0,0 @@
-cloneQcm()->iQcmId;
- }
- */
-
- $bEdition=true;
- $asQcm = getQcm($iQcmId);
- $sQcmName = isset($asQcm[QCM_TABLE])?$asQcm[QCM_TABLE]:'';
- $sQcmAuthorId = isset($asQcm['id_'.USER_TABLE])?$asQcm['id_'.USER_TABLE]:'';
- $asQuestions = isset($asQcm[QUESTION_TABLE])?$asQcm[QUESTION_TABLE]:array();
-
- foreach($asQuestions as $iQuestionId => $asAnswers)
- {
- $asDisplayAnswers = $asDisplayRightAnswers = array();
- $iNbAnswers = 0;
- $iNbQuestions++;
- $sQuestion = $asAnswers[QUESTION_TABLE];
-
- //image
- $sImageName = $asAnswers['image'];
- if($sImageName!='')
- {
- $sImage = getImage(IMAGE_FOLDER.$sImageName, '', '', '', array('id'=>'question'.$iQuestionId.'imageSrc'));
- $sXButton = 'X';
- $sImage = $sXButton.getHtml($sImage, 'div', 'qcmReader', '', array('id'=>'question'.$iQuestionId.'imageDiv'));
- $sImageDiv = getInputHtml('Image', array($sImage, 'Remplacer par une nouvelle image', '', $iQuestionId));
- }
- else
- {
- $sImageDiv = getInputHtml('Image', array('', ADD_IMAGE_TEXT, '', $iQuestionId));
- }
-
- if(array_key_exists(ANSWER_TABLE, $asAnswers) && count($asAnswers[ANSWER_TABLE])>0)
- {
- foreach($asAnswers[ANSWER_TABLE] as $iAnswerId => $asAnswer)
- {
- $iNbAnswers++;
- $asDisplayAnswers[$iAnswerId] = getInputHtml('Answer', array($iQuestionId, $iAnswerId, '', $asAnswer[ANSWER_TABLE]));
- $asDisplayRightAnswers[$iAnswerId] = getInputHtml('RightAnswer', array($iQuestionId, $iAnswerId, '', $asAnswer[RIGHT_ANSWER]?' CHECKED':''));
- }
- }
- $asAnswersCurrentState[] = getInputHtml('CurrentAnswer', array($iQuestionId, $iNbAnswers));
- $asDisplayQuestions[] = getInputHtml('Question', array($iNbQuestions, '', $iQuestionId, $sQuestion, implode($asDisplayAnswers), implode($asDisplayRightAnswers), $sImageDiv));
- $sAdditionalBoxesScript .= 'addAnswer('.$iQuestionId.');';
- }
-
- //check Qcm
- if(!checkOrigin('qcmCreator'))
- {
- checkQcm($iQcmId);
- }
-}
-?>
-
-
-
-
\ No newline at end of file
diff --git a/current_version/.svn/text-base/qcmProcess.php.svn-base b/current_version/.svn/text-base/qcmProcess.php.svn-base
deleted file mode 100644
index 95f9336..0000000
--- a/current_version/.svn/text-base/qcmProcess.php.svn-base
+++ /dev/null
@@ -1,121 +0,0 @@
-$_POST['author'], QCM_TABLE=>$sQcmName);
- $iQcmId = $bNewQcm?insertRow(QCM_TABLE, $asData):updateRow(QCM_TABLE, $_POST['id_'.QCM_TABLE], $asData);
- setQcmValidity($iQcmId, false);
-
- //feed
- $iRefFeedId = addFeed($bNewQcm?'CREATE':'MODIFY', $iQcmId, QCM_TABLE, $sQcmName);
-
- //Add the QCM questions, images & answers to the database
- $asQuestionIds = $asFeedIds = array();
- foreach($_POST as $sKey => $sValue)
- {
- $asDataKeys = parseQuestion($sKey);
- if($asDataKeys && $sValue!=DEFAULT_QUESTION_INPUT && $sValue!=DEFAULT_ANSWER_INPUT)
- {
- $bNew = (strpos($sKey, 'new') !== false);
- $iQuestionId = $asDataKeys[QUESTION_TABLE];
- switch(count($asDataKeys))
- {
- case 1: //Add a question + image
- $asData = array($iQcmId, $sValue);
- if($bNew)
- {
- $asQuestionIds[$iQuestionId] = insertRow(QUESTION_TABLE, $asData);
- }
- else
- {
- $asQuestionIds[$iQuestionId] = updateRow(QUESTION_TABLE, $iQuestionId, $asData);
- }
- $asFeedIds[$iQuestionId] = addFeed($bNew?'CREATE':'MODIFY', $iRefFeedId, QUESTION_TABLE, $sValue, '', $iRefFeedId);
-
- //image
- $sImageName = $_FILES[$sKey.'image']['name'];
- if($sImageName!='')
- {
- $oError = uploadFile($_FILES[$sKey.'image'], IMAGE_FOLDER, array('jpg', 'jpeg', 'bmp', 'png'));
- if(is_string($oError))
- {
- addMessage($oError);
- }
- else
- {
- $sImageNewName = 'qcm'.$iQcmId.'question'.$asQuestionIds[$iQuestionId].'v'.date('dmYHis');
- resizeRenameImage(IMAGE_FOLDER.$sImageName, $sImageNewName);
- $bNewImage = (selectValue(QUESTION_TABLE, 'image', $asQuestionIds[$iQuestionId])=='');
- updateRow(QUESTION_TABLE, $asQuestionIds[$iQuestionId], array('image'=>$sImageNewName.'.'.getExtension($sImageName)));
- addFeed($bNewImage?'CREATE':'MODIFY', $asFeedIds[$iQuestionId], 'image', $sImageNewName, '', $iRefFeedId);
- }
- }
- break;
- case 2: //Add an answer
- //Add a question (empty) in the case of an answer without linked questions
- if(!array_key_exists($iQuestionId, $asQuestionIds))
- {
- $asQuestionIds[$iQuestionId] = insertRow(QUESTION_TABLE, array($iQcmId, ''));
- }
- $bRightAnswer = isset($_POST[$sKey.RIGHT_ANSWER.$asDataKeys[ANSWER_TABLE]])?'1':'0';
- $asData = array($asQuestionIds[$iQuestionId], $iQcmId, $sValue, $bRightAnswer);
- if($bNew)
- {
- insertRow(ANSWER_TABLE, $asData);
- }
- else
- {
- updateRow(ANSWER_TABLE, $asDataKeys[ANSWER_TABLE], $asData);
- }
- addFeed($bNew?'CREATE':'MODIFY', $asFeedIds[$iQuestionId], ANSWER_TABLE, $sValue, '', $iRefFeedId);
- break;
- }
- }
- }
-
- //delete questions / images / answers
- foreach(array_filter(explode(',', $_POST['deletedData'])) as $sDeletedItem)
- {
- $asDataKeys = parseQuestion($sDeletedItem);
- if(strpos($sDeletedItem, 'new') === false && $asDataKeys!=false && count($asDataKeys)>0)
- {
- if(strpos($sDeletedItem, 'image')!==false)
- {
- $sImagePath = IMAGE_FOLDER.selectValue(QUESTION_TABLE, 'image', $asDataKeys[QUESTION_TABLE]);
- updateRow(QUESTION_TABLE, $asDataKeys[QUESTION_TABLE], array('image'=>''));
- addFeed('DELETE', $asDataKeys[QUESTION_TABLE], 'image', $sImagePath, '', $iRefFeedId);
- }
- else
- {
- $sTable = (count($asDataKeys)==1)?QUESTION_TABLE:ANSWER_TABLE;
- deleteRow($sTable, $asDataKeys[$sTable]);
- addFeed('DELETE', $asDataKeys[$sTable], $sTable, $sImagePath, '', $iRefFeedId);
- }
- }
- }
-
- //Check Qcm
- if(checkQcm($iQcmId))
- {
- setQcmValidity($iQcmId, true);
- relocate(getSuccess('Modifications enregistrées'), 'qcmReader', array('qcm'=>$iQcmId));
- }
- else
- {
- relocate('', 'qcmCreator', array('qcm'=>$iQcmId));
- }
-}
-?>
\ No newline at end of file
diff --git a/current_version/.svn/text-base/qcmReader.php.svn-base b/current_version/.svn/text-base/qcmReader.php.svn-base
deleted file mode 100644
index 0e1fa40..0000000
--- a/current_version/.svn/text-base/qcmReader.php.svn-base
+++ /dev/null
@@ -1,60 +0,0 @@
- $asAnswers)
- {
- $asDisplayAnswers = $asDisplayRightAnswers = array();
- $iNbAnswers = 0;
- $iNbQuestions++;
- foreach($asAnswers[ANSWER_TABLE] as $iAnswerId => $asAnswer)
- {
- $iNbAnswers++;
- $asDisplayAnswers[$iAnswerId] = ''.$iNbAnswers.'. '.$asAnswer[ANSWER_TABLE].'
';
- $asDisplayRightAnswers[$iAnswerId] = getInputHtml('RightAnswer', array($iQuestionId, $iAnswerId, '', ''));
- }
-
- $sImage = ($asAnswers['image']!='')?getHtml(getImage(IMAGE_FOLDER.$asAnswers['image']), 'div', 'qcmReader'):'';
- $asDisplayQuestions[$iQuestionId] = '
- | '.$iNbQuestions.'. |
- '.$asAnswers[QUESTION_TABLE].' '.$sImage.' |
- '.implode("\n", $asDisplayAnswers).' |
- '.implode("\n", $asDisplayRightAnswers).' |
-
';
- }
-}
-?>
-
\ No newline at end of file
diff --git a/current_version/.svn/text-base/qcmResults.php.svn-base b/current_version/.svn/text-base/qcmResults.php.svn-base
deleted file mode 100644
index 37cfbd7..0000000
--- a/current_version/.svn/text-base/qcmResults.php.svn-base
+++ /dev/null
@@ -1,81 +0,0 @@
-$_POST['qcm'])) || !isset($_POST['user']))
-{
- relocate(getError('Vous devez répondre à un QCM pour accéder à à la page de résultats'));
-}
-else
-{
- //reconnect session
- setSession($_POST['user']);
-
- //input Qcm data
- $iQcmId = $_POST['qcm'];
- $asQcm = getQcm($iQcmId);
- $sQcmName = $asQcm[QCM_TABLE];
-
- //display QCM results
- $iNbRightAnswers = 0;
- $iNbQuestions = getNbQuestions($iQcmId);
- foreach($asQcm[QUESTION_TABLE] as $iQuestionId => $asQuestion)
- {
- $bAnswerUserResult = true;
- $asDisplayRightResults = $asDisplayUserResults = '';
- $asDisplayResults[$iQuestionId] = '| '.$asQuestion[QUESTION_TABLE].' | ';
- foreach($asQuestion[ANSWER_TABLE] as $iAnswerId => $asAnswer)
- {
- $bUserAnswer = isset($_POST[QUESTION_TABLE.$iQuestionId.ANSWER_TABLE.$iAnswerId.RIGHT_ANSWER.$iAnswerId]);
- $bRightAnswer = ($asAnswer[RIGHT_ANSWER] == '1');
- $bAnswerUserResult = ($bAnswerUserResult && $bUserAnswer==$bRightAnswer);
- $asDisplayRightResults .= $asAnswer[RIGHT_ANSWER]?'• '.$asAnswer[ANSWER_TABLE].'
':'' ;
- $asDisplayUserResults .= $bUserAnswer?'• '.$asAnswer[ANSWER_TABLE].'
':'' ;
-
- }
- $asDisplayResults[$iQuestionId] .= ''.$asDisplayRightResults.' | '.$asDisplayUserResults.' | ';
- if($bAnswerUserResult)
- {
- $asDisplayResults[$iQuestionId] .= "Vrai | ";
- $iNbRightAnswers++;
- }
- else
- {
- $asDisplayResults[$iQuestionId] .= "Faux | ";
- }
- $asDisplayResults[$iQuestionId] .= '
';
- }
-
- //Update results table
- $sUpdateResult = '';
- $bplayed = checkPreviousResults($_SESSION['user'], $iQcmId);
- if($bplayed)
- {
- $sUpdateResult = '(Votre note n\'a pas été enregistrée)';
- }
- else
- {
- addResult($_SESSION['user'], $iQcmId, $iNbRightAnswers/$iNbQuestions);
- addFeed('CREATE', $_SESSION['firstName'].' '.$_SESSION['lastName'], RESULT_TABLE, getTextFromId(QCM_TABLE, $iQcmId));
- }
-}
-?>
-
-
- - Résultats |
-
- |
-
- Question |
- Bonnes réponses |
- Vos réponses |
- Votre résultat |
-
-
-
- |
-
-
- |
-
-
\ No newline at end of file
diff --git a/current_version/.svn/text-base/register.php.svn-base b/current_version/.svn/text-base/register.php.svn-base
deleted file mode 100644
index bad0dd1..0000000
--- a/current_version/.svn/text-base/register.php.svn-base
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
\ No newline at end of file
diff --git a/current_version/.svn/text-base/rss.php.svn-base b/current_version/.svn/text-base/rss.php.svn-base
deleted file mode 100644
index 6abd890..0000000
--- a/current_version/.svn/text-base/rss.php.svn-base
+++ /dev/null
@@ -1,226 +0,0 @@
-FEED_TABLE, 'constraint'=>array('id_ref'=>'0')));
-$sRssFeedUrl = cleanRss('http://'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'].'?page=rss');
-$asItems = array();
-foreach($asRssFeed as $asRssItem)
-{
- $sTitle = $sDesc = '';
- switch($asRssItem['action'])
- {
- case 'CREATE':
- $sTitle .= 'Création ';
- switch($asRssItem['type'])
- {
- case 'database':
- $sTitle .= 'd\'une nouvelle sauvegarde';
- $sDesc = 'Une nouvelle sauvegarde de la base de données "'.$asRssItem['source'].'" a été créée.
- Chemin : '.$asRssItem['old_value'];
- break;
- case QCM_TABLE:
- $sTitle .= 'd\'un QCM';
- $sDesc = 'Le QCM nommé "'.$asRssItem['old_value'].'" a été créé';
- break;
- case QUESTION_TABLE:
- $sTitle .= 'd\'une question';
- $sDesc = 'La question "'.$asRssItem['old_value'].'" a été créé';
- break;
- case 'image':
- $sTitle .= 'd\'une image';
- $sDesc = 'L\'image "'.$asRssItem['old_value'].'" a été ajouté';
- break;
- case ANSWER_TABLE:
- $sTitle .= 'd\'une proposition de réponse';
- $sDesc = 'La proposition de réponse "'.$asRssItem['old_value'].'" a été créé';
- break;
- case RESULT_TABLE:
- $sTitle .= 'd\'un résultat de qcm';
- $sDesc = 'L\'utilisateur "'.ucwords($asRssItem['source']).'" a répondu au qcm "'.$asRssItem['old_value'].'"';
- break;
- case USER_TABLE:
- $sTitle .= 'd\'un compte utilisateur';
- $sDesc = 'L\'utilisateur "'.ucwords($asRssItem['old_value']).'" s\'est enregistré';
- break;
- case CHANGELOG_TABLE:
- $sTitle .= 'd\'un changelog';
- $sDesc = 'La modification n°'.$asRssItem['source'].'. "'.$asRssItem['old_value'].'" a été ajouté';
- break;
- }
- break;
- case 'MODIFY':
- $sTitle .= 'Modification ';
- switch($asRssItem['type'])
- {
- case USER_TABLE.'_name':
- $sTitle .= 'du nom d\'un utilisateur';
- $sDesc = 'l\'utilisateur "'.ucwords($asRssItem['old_value']).'" est dorénavant nommé '.$asRssItem['new_value'];
- break;
- case USER_TABLE.'_class':
- $sTitle .= 'de la classe d\'un utilisateur ';
- $sDesc = 'l\'utilisateur "'.ucwords($asRssItem['source']).'" est passé de la classe '.$asRssItem['old_value'].' à la classe '.$asRssItem['new_value'];
- break;
- case QCM_TABLE:
- $sTitle .= 'd\'un QCM';
- $sDesc = 'Le QCM nommé "'.$asRssItem['old_value'].'" a été modifié';
- break;
- case QUESTION_TABLE:
- $sTitle .= 'd\'une question';
- $sDesc = 'La question "'.$asRssItem['old_value'].'" a été modifiée';
- break;
- case 'image':
- $sTitle .= 'd\'une image';
- $sDesc = 'L\'image "'.$asRssItem['old_value'].'" a été modifié';
- break;
- case ANSWER_TABLE:
- $sTitle .= 'd\'une proposition de réponse';
- $sDesc = 'La proposition de réponse "'.$asRssItem['old_value'].'" a été modifé';
- break;
- case CHANGELOG_TABLE:
- $sTitle .= 'd\'un changelog';
- $sDesc = 'La modification n°'.$asRssItem['source'].'. "'.$asRssItem['old_value'].'" a été modifiée.
- Nouvelle modification : "'.$asRssItem['new_value'].'"';
- break;
- }
- break;
- case 'ACTIVATE':
- $sTitle .= 'Activation ';
- switch($asRssItem['type'])
- {
- case QCM_TABLE:
- $sTitle .= 'd\'un qcm';
- $sDesc = 'Le qcm "'.$asRssItem['old_value'].'" a été activé';
- break;
- case CHANGELOG_TABLE:
- $sTitle .= 'd\'un changelog';
- $sDesc = 'La modification n°'.$asRssItem['source'].'. "'.$asRssItem['old_value'].'" est achevé';
- break;
- }
- break;
- case 'DESACTIVATE':
- $sTitle .= 'Désactivation ';
- switch($asRssItem['type'])
- {
- case QCM_TABLE:
- $sTitle .= 'd\'un qcm';
- $sDesc = 'Le qcm "'.$asRssItem['old_value'].'" a été désactivé';
- break;
- case CHANGELOG_TABLE:
- $sTitle .= 'd\'un changelog';
- $sDesc = 'La modification n°'.$asRssItem['source'].'. "'.$asRssItem['old_value'].'" est passé en mode "non achevé"';
- break;
- }
- break;
- case 'DELETE':
- $sTitle .= 'Suppression ';
- switch($asRssItem['type'])
- {
- case USER_TABLE:
- $sTitle .= 'd\'un utilisateur';
- $sDesc = 'Le compte de l\'utilisateur "'.$asRssItem['old_value'].'" a été supprimé';
- break;
- case QCM_TABLE:
- $sTitle .= 'd\'un qcm ';
- $sDesc = 'Le qcm intitulé "'.$asRssItem['old_value'].'" a été supprimé';
- break;
- case QUESTION_TABLE:
- $sTitle .= 'd\'une question';
- $sDesc = 'La question "'.$asRssItem['old_value'].'" a été supprimée';
- break;
- case 'image':
- $sTitle .= 'd\'une image';
- $sDesc = 'L\'image "'.$asRssItem['old_value'].'" a été supprimée';
- break;
- case ANSWER_TABLE:
- $sTitle .= 'd\'une proposition de réponse';
- $sDesc = 'La proposition de réponse "'.$asRssItem['old_value'].'" a été supprimée';
- break;
- case CHANGELOG_TABLE:
- $sTitle .= 'd\'un changelog';
- $sDesc = 'La modification n°'.$asRssItem['source'].'. "'.$asRssItem['old_value'].'" a été abandonné';
- break;
- }
- break;
- case 'RESET':
- $sTitle .= 'Réinitialisation de la base de données ';
- $sDesc = 'La base de données "'.$asRssItem['source'].'" a été supprimée et réinstallée';
- break;
- case 'RESTORE':
- $sTitle .= 'Restauration de la base de données ';
- $sDesc = 'La base de données "'.$asRssItem['old_value'].'" a été restaurée';
- break;
- case 'UPLOAD':
- $sTitle .= 'Upload d\'une base de données ';
- $sDesc = 'La base de données "'.$asRssItem['old_value'].'" ';
- switch($asRssItem['type'])
- {
- case 'file':
- $sDesc .= 'a été uploadé';
- break;
- case 'sync':
- $sDesc = 'a été synchronisée avec le site '.$asRssItem['source'];
- break;
- }
- break;
- case 'CONNECT':
- $sTitle .= 'Connexion d\'un utilisateur';
- $sDesc = 'L\'utilisateur "'.ucwords($asRssItem['old_value']).'" s\'est connecté';
- break;
- }
- $sAuthor = str_replace(' ', '.', strtolower($asRssItem['author'])).'@'.DOMAIN.' ('.ucwords($asRssItem['author']).')';
-
- if($sTitle!='' && $sDesc!='')
- {
- $sRssItem = getHtml(cleanRss($sTitle), 'title');
- $sRssItem .= getHtml(cleanRss($sAuthor), 'author');
- $sRssItem .= getHtml($sRssFeedUrl, 'link');
- $sRssItem .= getHtml(cleanRss($sDesc.'.'), 'description');
- $sRssItem .= getHtml(cleanRss(date('r', strtotime($asRssItem['led']))), 'pubDate');
- $sRssItem .= getHtml(cleanRss($sRssFeedUrl.'&id='.$asRssItem['id_'.FEED_TABLE]), 'guid', '', '', array('isPermaLink'=>'true'));
-
- $asItems[] = getHtml($sRssItem, 'item');
- }
-}
-
-function fillFeed($sText)
-{
- $asColumnNames = getTableColumnNames(FEED_TABLE);
- foreach($asColumnNames as $sColumnName)
- {
- $sText = str_replace('#'.$sColumnName.'#', $_POST[$sColumnName], $sText);
- }
-}
-
-function getFeedTitle($sAction, $sType)
-{
-
-}
-
-function getFeedDesc($sAction, $sType)
-{
-
-}
-
-//last feed update
-$sPubDate = date('r', strtotime(getUniqueValue("SELECT /* ".basename(__FILE__)." ".__LINE__." */ MAX(led) FROM ".FEED_TABLE)));
-
-//feed header
-$sRssFeed = '';
-$sRssFeedHeader = getHtml('QcmMaker Rss Feed', 'title');
-$sRssFeedHeader .= getHtml($sRssFeedUrl, 'link');
-$sRssFeedHeader .= getHtml('Copyright (C) '.date('Y').' François Lutran', 'copyright');
-$sRssFeedHeader .= getHtml('Users Activity', 'description');
-$sRssFeedHeader .= getHtml('', 'atom:link', '', '', array('href'=>$sRssFeedUrl, 'rel'=>'self', 'type'=>'application/atom+xml'), true);
-$sRssFeedHeader .= getHtml('fr', 'language');
-$sRssFeedHeader .= getHtml(cleanRss($sPubDate), 'pubDate');
-$sRssFeedHeader .= getHtml('qcmMaker rss Feed generator', 'generator');
-$sRssFeedHeader .= getHtml(cleanRss(FEEDBACK_MAIL.' (Webmaster)'), 'webMaster');
-
-//feed items
-$sRssFeed .= getHtml(getHtml($sRssFeedHeader.implode("\n", $asItems), 'channel'), 'rss', '', '', array('version'=>'2.0', 'xmlns:atom'=>'http://www.w3.org/2005/Atom'));
-
-echo $sRssFeed;
-?>
\ No newline at end of file
diff --git a/current_version/.svn/text-base/search.php.svn-base b/current_version/.svn/text-base/search.php.svn-base
deleted file mode 100644
index 37b5a84..0000000
--- a/current_version/.svn/text-base/search.php.svn-base
+++ /dev/null
@@ -1,76 +0,0 @@
-$iRank)
- {
- $asColumnDisplayed = array_filter(array_keys($asResult[$sRowId]), 'filterTable');
- $asResultRow = array_intersect_key($asResult[$sRowId], array_flip($asColumnDisplayed));
-
- $sColumnNames = getHtml(ucwords(str_replace('_', ' ', getHtml(array_keys($asResultRow), 'th'))), 'tr');
- $sHtmlRank = getHtml('Rang : '.$iRank, 'p', '', 'font-size:small;margin-top:10px;margin-bottom:0;');
- $asSearchResults[] = $sHtmlRank.getHtml($sColumnNames.getHtml(getHtml($asResultRow, 'td'), 'tr'), 'table', 'maxWidth');
- }
- }
- else
- {
- relocate(getWarning(array('Aucun r�sultat', 'Recherche effectu�e sur les mots : '.$sHtmlKeyWords)));
- }
-}
-
-function filterTable($sColumnName)
-{
- return (!is_numeric($sColumnName) && $sColumnName!='pass');
-}
-?>
-Mots recherch�s :
-R�sultat1)?'s':''; ?> de la recherche :
-
\ No newline at end of file
diff --git a/current_version/.svn/text-base/settings.php.svn-base b/current_version/.svn/text-base/settings.php.svn-base
deleted file mode 100644
index 2593ab2..0000000
--- a/current_version/.svn/text-base/settings.php.svn-base
+++ /dev/null
@@ -1,34 +0,0 @@
-
\ No newline at end of file
diff --git a/current_version/.svn/text-base/stats.php.svn-base b/current_version/.svn/text-base/stats.php.svn-base
deleted file mode 100644
index f6a41a2..0000000
--- a/current_version/.svn/text-base/stats.php.svn-base
+++ /dev/null
@@ -1,44 +0,0 @@
- $_SESSION['grade'], 'class' => $_SESSION['class'], USER_TABLE => $_SESSION['user']);
-$asResults = getResults($aiConstraints);
-
-if(!$asResults)
-{
- $asDisplay = array('Aucune note.Vous avez répondu à aucun QCM |
', );
- $sDisplayAverage = 'Moyenne : Aucune donnée disponible | ';
-}
-else
-{
- $asResults = $asResults[$_SESSION['grade']][$_SESSION['class']][$_SESSION['user']];
- $iUserGlobalAvg = getResultsAverage($iOutOf, $aiConstraints);
- $aiConstraints[USER_TABLE] = false;
- $aiConstraints[QCM_TABLE] = array_keys($asResults);
- $iClassGlobalAvg = getResultsAverage($iOutOf, $aiConstraints);
- foreach($asResults as $iQcmId => $asQcmResultInfo)
- {
- $aiConstraints[QCM_TABLE] = $iQcmId;
- $iClassAvg = getResultsAverage($iOutOf, $aiConstraints);
- $asDisplay[$iQcmId] = '| '.$asQcmResultInfo[QCM_TABLE].' | '.roundMark($iOutOf, $asQcmResultInfo[RESULT_TABLE]).' / '.$iOutOf.' | '.$iClassAvg.' / '.$iOutOf.' |
';
- }
- $sDisplayAverage = 'Moyenne : '.$iUserGlobalAvg.' / '.$iOutOf.' | Moyenne de la classe : '.$iClassGlobalAvg.' / '.$iOutOf.' | ';
-}
-?>
-
-
- Les notes de |
-
- |
-
- | QCM |
- |
- Moyenne de la classe |
-
-
-
-
-
-
\ No newline at end of file
diff --git a/current_version/.svn/text-base/statsAdmin.php.svn-base b/current_version/.svn/text-base/statsAdmin.php.svn-base
deleted file mode 100644
index 819f986..0000000
--- a/current_version/.svn/text-base/statsAdmin.php.svn-base
+++ /dev/null
@@ -1,135 +0,0 @@
-$iGrade, 'class'=>$iClass, USER_TABLE=>$_POST[USER_TABLE], QCM_TABLE=>$_POST[QCM_TABLE], 'outputOrder'=>$asOutputOrder);
- foreach($asConstraintColumns as $sConstraintColumn=>$sConstraintValue)
- {
- if($sConstraintValue > 0)
- {
- $asResultsConstraints[$sConstraintColumn] = $sConstraintValue;
- }
- }
- $asResults = getResults($asResultsConstraints);
-
- //Display results & building export file
- if(!$asResults)
- {
- $asResultsDisplay = getWarning('Aucune note disponible');
- }
- else
- {
- foreach($asResults as $iQcmId=>$asQcmInfo)
- {
- $sQcmName = getQcmName($iQcmId);
- $asResultsDisplay .= 'QCM "'.$sQcmName.'" |
';
- $asExportCsv[] = array('QCM', $sQcmName);
- foreach($asQcmInfo as $iGradeId=>$asGradeInfo)
- {
- foreach($asGradeInfo as $iClassId=>$asClassInfo)
- {
- $sClass = $iGradeId.GRADE_CLASS_SEPARATOR.$iClassId;
- $asResultsDisplay .= ' |
';
- $asResultsDisplay .= ''.$sClass.' |
';
- $asExportCsv[] = array('');
- $asExportCsv[] = array('Classe', $sClass, 'Note sur', $iOutOf);
- $dClassAvgMark = getResultsAverage($iOutOf, array('grade' => $iGradeId, 'class' => $iClassId, QCM_TABLE=>$iQcmId));
- $asResultsDisplay .= '
- | Eleve |
- Note |
- Moyenne |
-
';
- $asExportCsv[] = array('Eleve', 'Note', 'Moyenne de l\'eleve');
- foreach($asClassInfo as $iUserId=>$asUserInfo)
- {
- $dUserAvgMark = getResultsAverage($iOutOf, array('grade' => $iGradeId, 'class' => $iClassId, USER_TABLE=>$iUserId, QCM_TABLE=>array_keys($asResults)));
- $sUserLastName = ucwords($asUserInfo[USER_TABLE.'_last_name']);
- $sUserFirstName = ucwords($asUserInfo[USER_TABLE.'_first_name']);
- $sUserName = ''.$sUserLastName.' '.$sUserFirstName;
- $asResultsDisplay .= '
- | '.$sUserLastName.' '.$sUserFirstName.' |
- '.roundMark($iOutOf, $asUserInfo[RESULT_TABLE]).' / '.$iOutOf.' |
- '.$dUserAvgMark.' / '.$iOutOf.' |
-
';
- $asExportCsv[] = array($sUserLastName.' '.$sUserFirstName, roundMark($iOutOf, $asUserInfo[RESULT_TABLE]), $dUserAvgMark);
- }
- $asResultsDisplay .= '| Moyenne de la '.$sClass.' : '.$dClassAvgMark.' / '.$iOutOf.' |
';
- $asExportCsv[] = array('Moyenne de la '.$sClass, $dClassAvgMark);
- }
- }
- $asResultsDisplay .= '
Haut de page';
- $asExportCsv[] = array('');
- }
- }
-}
-else
-{
- $bDisableExport = true;
-}
-
-//QCM selection
-$asQcms = getListe(array( 'select'=>array(getId(QCM_TABLE), QCM_TABLE),
- 'from'=>QCM_TABLE,
- 'orderBy'=>QCM_TABLE));
-$sSelectQcm = getSelect($asQcms, 'id_'.QCM_TABLE, QCM_TABLE, array(0=>'Tous'), isset($_POST['qcm'])?$_POST['qcm']:'');
-
-//Classes selection
-$asClasses = getListe(array('select'=>array( "CONCAT(grade, '".GRADE_CLASS_SEPARATOR."', class) AS gradeClass", 'grade', 'class'),
- 'from'=>USER_TABLE,
- 'constraint'=>"admin=0",
- 'groupBy' => 'gradeClass',
- 'orderBy'=>array('grade', 'class')));
-$sSelectClasses = getSelect($asClasses, 'gradeClass', '', array('0'.GRADE_CLASS_SEPARATOR.'0'=>'Toutes'), isset($_POST['gradeClass'])?$_POST['gradeClass']:'');
-
-//Students selection
-$asStudents = getListe(array( 'select'=>array(getId(USER_TABLE), "CONCAT(user_last_name, ' ', user_first_name) AS name"),
- 'from'=>USER_TABLE,
- 'constraint'=>"admin=0",
- 'orderBy'=>'user_last_name'));
-$sSelectStudents = getSelect($asStudents, 'id_'.USER_TABLE, 'name', array(0=>'Tous'), isset($_POST['user'])?$_POST['user']:'');
-
-$sSelectOutOf = getOutOfForm(isset($_POST['outofvalue'])?$_POST['outofvalue']:20);
-
-//pre($_POST);
-//
-?>
-Choisissez l'affichage :
-
-
\ No newline at end of file
diff --git a/current_version/.svn/text-base/style.css.svn-base b/current_version/.svn/text-base/style.css.svn-base
deleted file mode 100644
index 2f303d9..0000000
--- a/current_version/.svn/text-base/style.css.svn-base
+++ /dev/null
@@ -1,506 +0,0 @@
-@CHARSET "ISO-8859-1";
-
-/* Global */
-
-*:focus {
- outline:none;
-}
-body {
- margin:auto;
- padding:0;
- width:1024px;
- min-width:1024px;
- background-color:#CCC;
- font-family: Verdana, Geneva, sans-serif;
- font-size: medium;
- font-style: normal;
- font-weight: normal;
- text-align: left;
-}
-
-/* Structure */
-
-#header {
- margin:50px auto 80px auto;
- text-align:center;
- background-color:#FFFFFF;
- padding:10px;
- width:500px;
- border:2px solid #000000;
-}
-#topMenu {
- margin-bottom:5px;
- text-align:center;
-}
-#main {
- padding:10px;
- border:2px solid #000000;
- background-color:#FFFFFF;
-}
-#info {
- margin-bottom:10px;
-}
-#content {
- clear:both;
-}
-#footer {
- padding:5px 10px 50px 10px;
-}
-.layer {
- position:fixed;
- top:0;
- left:0;
- width:100%;
- height:100%;
- background-color:white;
- opacity:0.8;
-}
-.inputBox {
- width:500px;
-}
-.preload {
- display:none;
-}
-.center {
- margin:4px auto;
-}
-.no-margin {
- margin:0;
-}
-.qcmReader, .qcmReaderDisabled {
- margin:10px auto;
- padding:15px;
- width:90%;
- background-color:#FFFFFF;
- border:1px solid #006;
- border-radius:5px; -moz-border-radius:5px; -webkit-border-radius:5px;
-}
-.rounded {
- border-width:1px;
- border-style:solid;
- border-radius:10px; -moz-border-radius:10px; -webkit-border-radius:10px;
-}
-.top-left-rounded {
- border-radius:10px 0 0 0; -moz-border-radius-topleft: 10px; -webkit-border-top-left-radius: 10px;
-}
-.top-right-rounded {
- border-radius:0 10px 0 0; -moz-border-radius-topright: 10px; -webkit-border-top-right-radius: 10px;
-}
-.bottom-right-rounded {
- border-radius:0 0 10px 0; -moz-border-radius-bottomright: 10px; -webkit-border-bottom-right-radius: 10px;
-}
-.bottom-left-rounded {
- border-radius:0 0 0 10px; -moz-border-radius-bottomleft: 10px; -webkit-border-bottom-left-radius: 10px;
-}
-.bottom-rounded {
- border-radius:0 0 10px 10px;
- -moz-border-radius-bottomleft: 10px; -webkit-border-bottom-left-radius: 10px;
- -moz-border-radius-bottomright: 10px; -webkit-border-bottom-right-radius: 10px;
-}
-
-hr.separator {
- margin:3px;
- height:33px;
- border:none;
- background:none;
- color:#FFFFFF;
-}
-
-/* Table */
-table {
- margin:auto;
- border-spacing:2px;
-}
-table.maxWidth, #info table {
- width:100%;
-}
-table.joinedTable {
- margin-top:-2px;
-}
-table.stats {
- background-color: #F5F5FF;
- margin-top:50px;
- border:1px solid #000000;
-}
-table tr {
- text-align:center;
- font-size:small;
-}
-table tr th {
- border:1px solid #006;
- text-align:center;
- background-color:#006;
- color:#FFFFFF;
- font-size:medium;
-}
-table tr td {
- border:1px solid #006;
- background-color:#D5FFFF;
- padding:5px;
-}
-table tr td.qcmSelection {
- color:#006;
- cursor:pointer;
- text-align:left;
- padding-left:50px;
- font-weight:bold;
- background:#D5FFFF url(images/qcm_selection.gif) 20px 50% no-repeat;
-}
-table tr td.qcmSelection:hover, table tr td.qcmSelection:active {
- color:#000000;
- border-color:#000000;
- background:#d5ffd7 url(images/qcm_selection_hover.gif) 20px 50% no-repeat;
-}
-table tr td.qcmSelection:active {
- background-image:url(images/qcm_selection_active.gif);
-}
-table tr td.left {
- text-align:left;
- padding-left:10px;
-}
-table tr td.true{
- font-weight:bold;
- background-color:#0F0;
-}
-table tr td.false{
- font-weight:bold;
- background-color:#F00;
- color:#FFFFFF;
-}
-.green {
- background-color:#d5ffd7;
-}
-.blank {
- background-color:transparent;
- border:none;
- padding-top:10px;
- padding-bottom:10px;
-}
-
-/* Form */
-input, textarea {
- margin:auto;
- border:1px solid #006;
- padding:2px 5px;
- border-radius:5px; -moz-border-radius:5px; -webkit-border-radius:5px;
-}
-input:disabled, textarea:disabled, textarea.disabled, .qcmReaderDisabled {
- border-color:#aca899;
- background-color:#D5FFFF;
- color:#aca899;
-}
-input.nude, select.nude {
- border:none;
- background:none;
-}
-input[type=checkbox], input[type=checkbox]:disabled {
- border:none;
-}
-input[type=button], input[type=submit] {
- background:#FFFFFF url(images/button_gradient.gif) 0 100% repeat-x;
- font-weight:bold;
- color:#006;
-}
-input[type=button]:hover, input[type=submit]:hover {
- background-image:url(images/button_gradient_hover.gif);
- background-position:0 0;
-}
-input[type=button]:active, input[type=submit]:active {
- background-color:#006;
- background-image:none;
- color:#FFFFFF;
-}
-input[type=button]:disabled, input[type=submit]:disabled {
- background-image:none;
- color:#aca899;
-}
-input[type="file"] {
- border:1px solid #006;
-}
-.centered {
- margin-top:4px;
-}
-textarea {
- font-family:Verdana, Geneva, sans-serif;
- font-size:small;
- width:90%;
- margin:10px auto;
- padding:5px;
-}
-.spaceRight {
- padding-right:25px;
-}
-select {
- border:1px solid #006;
- background:white;
-}
-select.mergeWithTh {
- background-color:#006;
- border-color:#FFFFFF;
- color:#FFFFFF;
- font-weight:bold;
- font-size:medium;
-}
-.answerBox {
- padding:3px;
- height:25px;
-}
-
-/* Text */
-h3 {
- font-style:italic;
- color:#666;
-}
-h1 span.logo {
- border:3px solid #000000;
- padding:0 8px 2px;
- background-color:#CCCCCC;
-}
-fieldset {
- border:1px solid #000000;
- background-color:#F5F5FF;
- padding:10px 10px 20px 10px;
- margin-top:20px;
-}
-legend {
- padding: 1px 6px 2px;
- font-size: medium;
- border:1px solid #000000;
- background:#FFFFFF url(images/button_gradient.gif) 0 100% repeat-x;
-}
-a, a:visited {
- color:#006;
-}
-a:hover {
- color:#000000;
-}
-a:active {
- outline: none;
-}
-a.beta {
- position:absolute;
- margin-left:740px;
- margin-top:-30px;
- padding:10px 20px;
- color:#000000;
- font-size:25pt;
- font-style:italic;
- text-decoration:none;
- background-color:#FFFFFF;
- border:2px solid #000000;
-}
-a.beta:hover {
- background-color:#000000;
- color:#FFFFFF;
- border-color:#FFFFFF;
-}
-a.top {
- position:absolute;
- top:0;
-}
-a.toTheTop {
- float:right;
- margin-top:5px;
- padding:2px 5px 2px 30px;
- background:#D5FFFF url(images/arrow.png) 5px 1px no-repeat;
- font-size:small;
- text-decoration:none;
- border:1px solid #006;
-}
-a.toTheTop:hover {
- background-color:#d5ffd7;
- background-position:5px 0;
- color:#000000;
-}
-a.toTheTop:active {
- background-color:#006;
- background-position: 5px 0;
- color:#FFFFFF;
-}
-a.deleteQuestion, a.deleteAnswer, a.XButton, a.deleteImage {
- padding:2px 5px;
- border:1px solid #006;
- background-color:#FFFFFF;
- text-decoration:none;
- font-weight:bold;
-}
-a.deleteQuestion, a.deleteImage {
- position:absolute;
- margin-top:10px;
- margin-left:-22px;
- border-radius:0 5px; -moz-border-radius:0 5px; -webkit-border-radius:0 5px;
-}
-a.deleteAnswer {
- position:absolute;
- margin-left:-22px;
- border-radius:0 5px 5px 0; -moz-border-radius:0 5px 5px 0; -webkit-border-radius:0 5px 5px 0;
-}
-a.deleteImage {
- margin-top:139px;
- margin-right:0;
-}
-a.XButton {
- padding:1px 3px;
- color:#006;
- font-size:x-small;
-}
-a.deleteQuestion:hover, a.deleteQuestionHover, a.deleteAnswer:hover, a.deleteAnswerHover, a.XButton:hover, a.deleteImage:hover, a.deleteImageHover {
- background-color:#006;
- color:#FFFFFF;
-}
-a.XButton:hover {
- text-decoration:none;
-}
-a.download {
- padding:5px 10px 5px 28px;
- text-decoration:none;
- font-weight:bold;
- color:#000066;
- border-color:#000066;
- background:url(images/arrow_down.png) 5px center no-repeat, url(images/button_gradient.gif) left bottom repeat-x;
-}
-a.download:hover {
- background:url(images/arrow_down.png) 5px 60% no-repeat, url(images/button_gradient_hover.gif) left top repeat-x;
-}
-#topMenu a {
- margin-left:10px;
- margin-right:10px;
- padding:5px 10px;
- background-color:#E5E5E5;
- color:#000000;
- border:1px solid #666;
- border-bottom-color:#000000;
- font-weight:bold;
- text-decoration:none;
-}
-#topMenu a.current {
- border-width:2px;
- border-color:#000000;
- border-bottom-color:#FFFFFF;
- background-color:#FFFFFF;
-}
-#topMenu a:hover {
- border-color:#000000;
- border-bottom-width:2px;
- border-bottom-color:#FFFFFF;
- background:#FFFFFF url(images/button_gradient_hover.gif) 0 0 repeat-x;
-}
-#main p {
- padding-left:3px;
-}
-#main p.center {
- text-align:center;
-}
-#main div.error, #main div.warning, #main div.success, #main div.notice {
- border:1px solid #000000;
- padding:5px;
- margin-top:10px;
- margin-bottom:10px;
-}
-#main div.error {
- border-color:red;
-}
-#main div.warning {
- border-color:orange;
-}
-#main div.success {
- border-color:#008000;
-}
-#main p.error, #main p.warning, #main p.success, #main p.notice {
- font-size:large;
- padding:0;
- margin: 0;
-}
-#main p.error {
- color:red;
- font-weight:bold;
-}
-#main p.warning {
- color:orange;
-}
-#main p.success {
- color:#008000;
-}
-#main p.notice {
- margin:0;
- font-size:medium;
- font-style:italic;
-}
-#main .panel p {
- font-size:small;
-}
-#info p.pageTitle, #info p.connectedUser {
- padding:1px 5px;
- margin:0;
- border:1px solid #000000;
- font-size:medium;
-}
-#info p.pageTitle {
- float:left;
-}
-#info p.connectedUser {
- float:right;
-}
-#footer p{
- text-align:center;
- font-size: x-small;
- margin-top:0;
-}
-p.code, p.keyring {
- font-family:"Courier New";
- overflow:auto;
-}
-p.keyring {
- overflow:hidden;
- width:964px;
-}
-p.question{
- text-align:left;
- margin:15px 0 15px 40px ;
-}
-p.important, ul li {
- font-size:medium;
- font-weight:bold;
-}
-p.tresimportant {
- font-size:x-large;
- font-weight:bold;
-}
-p.separator {
- text-align:center;
- font-weight:bold;
- font-size:large;
-}
-ul li {
- margin-top:10px;
-}
-ul li a {
- text-decoration:none;
-}
-ul li a:hover {
- text-decoration:underline;
-}
-ul li ul li {
- margin:2px;
- font-size:small;
- font-weight:normal;
- font-style:italic;
-}
-.noinfo{
- font-style:italic;
- color:#666;
- margin:auto;
-}
-.divDisabled {
- background-color:#aca899;
-}
-.text {
-}
-.textDisabled {
- color:#aca899;
-}
-
-/* Image */
-img {
- border:none;
-}
\ No newline at end of file
diff --git a/current_version/.svn/text-base/styleIe.css.svn-base b/current_version/.svn/text-base/styleIe.css.svn-base
deleted file mode 100644
index 47fcb33..0000000
--- a/current_version/.svn/text-base/styleIe.css.svn-base
+++ /dev/null
@@ -1,3 +0,0 @@
-a.beta {
- margin-left:480px;
-}
\ No newline at end of file
diff --git a/current_version/.svn/text-base/test.php.svn-base b/current_version/.svn/text-base/test.php.svn-base
deleted file mode 100644
index f90cef1..0000000
--- a/current_version/.svn/text-base/test.php.svn-base
+++ /dev/null
@@ -1,100 +0,0 @@
-';
- $asDisplay[2] = '';
- $i=0;
- while($asCurrentRow = mysql_fetch_array($oResult))
- {
- $asDisplay[2] .= '';
- foreach($asCurrentRow as $index=>$value)
- {
- if(!is_numeric($index))
- {
- if($i==0)
- {
- $asTitles[] = $index;
- }
- $asDisplay[2] .= '| '.$value.' | ';
- }
- }
- $asDisplay[2] .= '
';
- $i++;
- }
- $asDisplay[1] = '| '.implode(' | ', $asTitles).' |
';
- $asDisplay[3] = '';
- ksort($asDisplay);
- $sResult = implode("\n", $asDisplay);
- }
-}
-
-/*
-
-//Other Tests
-pre(selectRows(array( 'select'=>array(getId(QCM_TABLE), QCM_TABLE),
- 'from'=>QCM_TABLE,
- 'constraint'=>array('valid' => '1'),
- 'orderBy'=>array(QCM_TABLE=>'ASC'))), 'apres');
-
-pre(getListe(array( 'select'=>array(getId(QCM_TABLE), QCM_TABLE),
- 'from'=>QCM_TABLE,
- 'constraint'=>"valid = 1",
- 'orderBy'=>QCM_TABLE)), 'avant');
-
-pre(getListe(array('select'=>array( "CONCAT(grade, '".GRADE_CLASS_SEPARATOR."', class) AS gradeClass", 'grade', 'class'),
- 'from'=>USER_TABLE,
- 'constraint'=>"admin=0",
- 'groupBy' => 'gradeClass',
- 'orderBy'=>array('grade', 'class'))), 'avant');
-
-$as2 = selectRows(array('select'=>array('grade', 'class'),
- 'from'=>USER_TABLE,
- 'constraint'=>array('admin'=>'0'),
- 'groupBy' => array('grade', 'class'),
- 'orderBy'=>array('grade'=>'ASC', 'class'=>'ASC')));
-
-foreach($as2 as $s2Key=>$s2)
-{
- $as2[$s2Key]['gradeClass'] = $s2['grade'].GRADE_CLASS_SEPARATOR.$s2['class'];
-}
-
-pre($as2, 'apres');
-
-*/
-?>
-
-
-
\ No newline at end of file
diff --git a/current_version/.svn/text-base/version.php.svn-base b/current_version/.svn/text-base/version.php.svn-base
deleted file mode 100644
index 176e890..0000000
--- a/current_version/.svn/text-base/version.php.svn-base
+++ /dev/null
@@ -1,158 +0,0 @@
-1, 'version'=>NEXT_VERSION));
- break;
- case 'rollback':
- $sAction = 'DESACTIVATE';
- $sDesc = getTextFromId(CHANGELOG_TABLE, $iChangelogId);
- updateRow(CHANGELOG_TABLE, $iChangelogId, array('progress'=>0, 'version'=>'0'));
- break;
- case 'deleteChangelog':
- $sAction = 'DELETE';
- $sDesc = getTextFromId(CHANGELOG_TABLE, $iChangelogId);
- deleteRow(CHANGELOG_TABLE, $iChangelogId);
- break;
- case 'modifyChangelog':
- $sAction = 'MODIFY';
- $sDesc = getTextFromId(CHANGELOG_TABLE, $iChangelogId);
- $sNewValue = $_POST[$iChangelogId.'description'];
- updateRow(CHANGELOG_TABLE, $iChangelogId, array(CHANGELOG_TABLE=>$sNewValue, 'type'=>$_POST[$iChangelogId.'type']));
- break;
- case 'publishChangelog':
- if(publishChangeLog($iChangelogId))
- {
- addMessage(getSuccess('Changelog Publié'));
- }
- break;
- }
- if($sAction!='')
- {
- addFeed($sAction, $iChangelogId, CHANGELOG_TABLE, $sDesc, $sNewValue);
- }
-}
-
-//displays versions log, future features and bug fixes
-$sUserOS = getOS();
-$sPack = 'qcm_v'.STABLE_VERSION.'.'.(($sUserOS==OS_MAC || $sUserOS==OS_WINDOWS)?'zip':'tar.gz');
-$sCurrentVersion = CURRENT_VERSION.(IS_BETA?' (béta)':'');
-
-//add a changelog
-$sAddChangelogType = getChangelogTypeSelect();
-$sAddChangelogProgress = '';
-$sAddChangelogButton = '';
-$asNextVersionDisplay = array($sAddChangelogType.' Effectué : '.$sAddChangelogProgress.' '.$sAddChangelogButton);
-
-$oLogs = selectRows(array('from'=>CHANGELOG_TABLE, 'orderBy'=>array('version'=>'DESC', 'progress'=>'DESC', 'type'=>'ASC', 'led'=>'DESC')));
-foreach($oLogs as $asLogs)
-{
- $sDescription = ucfirst($asLogs[CHANGELOG_TABLE]);
- $sType = $asLogs['type'];
- $sVersion = $asLogs['version'];
-
- //dates
- $iTimeStamp = strtotime($asLogs['led']);
- $sDate = ($asLogs['led']>0)?' ('.date('d/m/Y', $iTimeStamp).')':'';
- if($sDate!='' && (!isset($asMaxTimeStamp[$sVersion]) || $iTimeStamp > $asMaxTimeStamp[$sVersion]))
- {
- $asMaxTimeStamp[$sVersion] = $iTimeStamp;
- $asMaxDates[$sVersion] = $sDate;
- }
-
- $sSeparator = ' : ';
-
- //current version
- if($sVersion==0 || $sVersion==NEXT_VERSION)
- {
- $iChangeLogId = $asLogs['id_'.CHANGELOG_TABLE];
-
- //on progress
- if($asLogs['progress']==0)
- {
- $sAction = 'complete';
- $sActionTitle = 'En cours';
- $sType = getChangelogTypeSelect($iChangeLogId, $sType);
- $sDescription = '';
- $sDeleteButton = ' X';
- $sSubmitButton = ' Ok';
- $sSeparator = substr($sSeparator, 0, -1);
- $sPublishButton = '';
- $sDate = '';
- }
- //completed
- else
- {
- $sDeleteButton = $sSubmitButton = ' ';
- $sAction = 'rollback';
- $sActionTitle = 'Fini';
- $sPublishButton = ' Publier';
- }
- $sProgressLink = '['.$sActionTitle.']';
- $asNextVersionDisplay[] = $sProgressLink.$sPublishButton.$sDeleteButton.$sSubmitButton.$sType.$sSeparator.$sDescription.$sDate;
- }
- //old versions
- else
- {
- $asLogDisplay[$sVersion][] = $sType.$sSeparator.$sDescription.$sDate;
- }
-}
-
-$sVersionDisplay = '';
-if(isset($asLogDisplay))
-{
- foreach($asLogDisplay as $sVersion=>$asChanges)
- {
- $sHtmlVersion = 'v'.$sVersion.(array_key_exists($sVersion, $asMaxDates)?$asMaxDates[$sVersion]:'');
- $sVersionDisplay .= getHtml($sHtmlVersion.getHtml(getHtml($asChanges, 'li'), 'ul'), 'li');
- }
-}
-$sNextVersionDisplay = 'v'.$sCurrentVersion.getHtml(getHtml($asNextVersionDisplay, 'li'), 'ul');
-?>
-
-
\ No newline at end of file