1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- <?php
-
- namespace Logipro\Bundle\SCORMBundle;
-
- use Symfony\Component\HttpKernel\Bundle\Bundle;
- use Symfony\Component\DependencyInjection\ContainerBuilder;
-
- class LogiproSCORMBundle extends Bundle
- {
- public function boot()
- {
- $this->initialiseFolders();
- }
-
- public function build(ContainerBuilder $container)
- {
- parent::build($container);
- }
- /**
- * *creation du repertoire qui contiendra les ressources accesibles :
- * ** stockage des paquets scorms (logipro_scorm.content_folder)
- * * creation du fichier .htaccess qui restreindra l'acces aux ressources
- *
- * @return void
- */
- private function initialiseFolders() : void
- {
- $contentFolder = $this->container->getParameter('logipro_scorm.content_folder');
- // creation du repertoire de reception du contenu
- if (!file_exists($contentFolder)) {
- mkdir($contentFolder, 0755, true);
- }
- // creation du fichier .htaccess
- $contentUrlPrefix = $this->container->getParameter('logipro_scorm.content_url_prefix');
-
- $htaccess = $contentFolder.'/.htaccess';
- // on prendra garde de doubler le \ en \\
- $now = $today = date("Y-m-d H:i:s");
- $content=<<<EOT
- # automatically generated by LogiproSCORMBundle.initialiseFolders at $now
- Options +FollowSymlinks
- RewriteEngine On
-
- RewriteBase "$contentUrlPrefix/"
-
- #en cas d'acces à un fichier/existant existant laisse l'acces...
- #...a condition d'un environnement phpsession indice (insuffisant) que c'est un utilisateur connu
- # (a ameliorer)
- RewriteCond %{REQUEST_FILENAME} -f [OR]
- RewriteCond %{REQUEST_FILENAME} -d
- RewriteCond %{HTTP_COOKIE} !PHPSESSID= [NC]
- RewriteRule .* - [L]
-
- # l'acces au ressource est donnée a une url qui contient un code correspondant à
- # une operation de transformation de la valeur du cookie
-
- #si le coockie n'existe pas alors pas droit d'acces à la ressource : 403
- RewriteCond %{HTTP_COOKIE} !SCORMBundle= [NC]
- RewriteRule .* - [R=403,L]
-
- #on stocke la valeur du cookie...
- RewriteCond %{HTTP_COOKIE} SCORMBundle=([^;]+)
- RewriteRule ^(.*) $1 [E=md5scormkey:%1]
-
- # on recupere la clef contenue dans la chaine
- RewriteCond %{REQUEST_URI} ^$contentUrlPrefix/([^/]+)/(.+)$
- RewriteRule .* - [E=key:%1,E=resource:%2]
- RewriteCond expr "md5('%{ENV:key}') == %{ENV:md5scormkey}"
-
- RewriteRule .* $contentUrlPrefix/%{ENV:resource} [L]
- EOT;
-
- $handle = fopen($htaccess, 'w');
- fwrite($handle, $content);
- fclose($handle);
-
- $packageFolder = $this->container->getParameter('logipro_scorm.package_folder');
- // creation du repertoire de reception du contenu
- if (!file_exists($packageFolder)) {
- mkdir($packageFolder, 0777, true);
- }
- }
- }
|