Browse Source

Adding setup() function to create driver folder if needed.

Julio Montoya 10 years ago
parent
commit
e3c8087d33

+ 3 - 2
src/Chamilo/CoreBundle/Component/Editor/Connector.php

@@ -131,14 +131,14 @@ class Connector
 
     /**
      * @param bool $processDefaultValues
+     *
      * @return array
      */
     public function getRoots($processDefaultValues = true)
     {
         $roots = array();
-        /** @var Driver $driver */
         $drivers = $this->getDrivers();
-
+        /** @var Driver $driver */
         foreach ($drivers as $driver) {
             if ($processDefaultValues) {
                 $plugin = array(
@@ -148,6 +148,7 @@ class Connector
                     )
                 );
                 $configuration = $driver->getConfiguration();
+                $driver->setup();
                 $configuration['plugin'] = $plugin;
                 $root = $this->updateWithDefaultValues($configuration);
             }

+ 55 - 1
src/Chamilo/CoreBundle/Component/Editor/Driver/CourseDriver.php

@@ -8,10 +8,64 @@ namespace Chamilo\CoreBundle\Component\Editor\Driver;
  * @package Chamilo\CoreBundle\Component\Editor\Driver
  *
  */
-class CourseDriver extends Driver
+class CourseDriver extends Driver implements DriverInterface
 {
     public $name = 'CourseDriver';
 
+    /**
+     * Setups the folder
+     */
+    public function setup()
+    {
+        $userId = api_get_user_id();
+        $userInfo = api_get_user_info();
+        $sessionId = api_get_session_id();
+
+        $courseInfo = $this->connector->course;
+
+        $coursePath = api_get_path(SYS_COURSE_PATH);
+        $courseDir = $courseInfo['directory'] . '/document';
+        $baseDir = $coursePath . $courseDir;
+
+        // Creates shared folder
+
+        if (!file_exists($baseDir.'/shared_folder')) {
+            $title = get_lang('UserFolders');
+            $folderName = '/shared_folder';
+            //$groupId = 0;
+            $visibility = 0;
+            create_unexisting_directory(
+                $courseInfo,
+                $userId,
+                $sessionId,
+                0,
+                null,
+                $baseDir,
+                $folderName,
+                $title,
+                $visibility
+            );
+        }
+
+        // Creates user-course folder
+        if (!file_exists($baseDir.'/shared_folder/sf_user_'.$userId)) {
+            $title = $userInfo['complete_name'];
+            $folderName = '/shared_folder/sf_user_'.$userId;
+            $visibility = 1;
+            create_unexisting_directory(
+                $courseInfo,
+                $userId,
+                $sessionId,
+                0,
+                null,
+                $baseDir,
+                $folderName,
+                $title,
+                $visibility
+            );
+        }
+    }
+
     /**
      * {@inheritdoc}
      */

+ 2 - 9
src/Chamilo/CoreBundle/Component/Editor/Driver/Driver.php

@@ -7,9 +7,10 @@ use Chamilo\CoreBundle\Component\Editor\Connector;
 
 /**
  * Class Driver
+ *
  * @package Chamilo\CoreBundle\Component\Editor\Driver
  */
-class Driver extends \elFinderVolumeLocalFileSystem implements DriverInterface
+class Driver extends \elFinderVolumeLocalFileSystem
 {
     /** @var string */
     public $name;
@@ -60,12 +61,4 @@ class Driver extends \elFinderVolumeLocalFileSystem implements DriverInterface
         $options = $this->getAppPluginOptions();
         $this->setConnector($options['connector']);
     }
-
-    /**
-     * @return bool
-     */
-    public function allow()
-    {
-        return false;
-    }
 }

+ 3 - 0
src/Chamilo/CoreBundle/Component/Editor/Driver/DriverInterface.php

@@ -43,4 +43,7 @@ interface DriverInterface
      * @return bool
      */
     public function allow();
+
+    public function getConfiguration();
+    public function setup();
 }

+ 1 - 0
src/Chamilo/CoreBundle/Component/Editor/Driver/DropBoxDriver.php

@@ -8,6 +8,7 @@ use Chamilo\CoreBundle\Component\Editor\Connector;
 
 /**
  * Class DropBoxDriver
+ * @todo finish implementation
  * @package Chamilo\CoreBundle\Component\Editor\Driver
  */
 class DropBoxDriver extends \elFinderVolumeMySQL implements DriverInterface

+ 9 - 1
src/Chamilo/CoreBundle/Component/Editor/Driver/HomeDriver.php

@@ -7,10 +7,18 @@ namespace Chamilo\CoreBundle\Component\Editor\Driver;
  * Class HomeDriver
  * @package Chamilo\CoreBundle\Component\Editor\Driver
  */
-class HomeDriver extends Driver
+class HomeDriver extends Driver implements DriverInterface
 {
     public $name = 'HomeDriver';
 
+    /**
+     * @inheritdoc
+     */
+    public function setup()
+    {
+
+    }
+
     /**
      * {@inheritdoc}
      */

+ 22 - 1
src/Chamilo/CoreBundle/Component/Editor/Driver/PersonalDriver.php

@@ -8,10 +8,30 @@ namespace Chamilo\CoreBundle\Component\Editor\Driver;
  * @todo add more checks in upload/rm
  * @package Chamilo\CoreBundle\Component\Editor\Driver
  */
-class PersonalDriver extends Driver
+class PersonalDriver extends Driver implements DriverInterface
 {
     public $name = 'PersonalDriver';
 
+    /**
+     * @inheritdoc
+     */
+    public function setup()
+    {
+        $userId = api_get_user_id();
+        $path = \UserManager::get_user_picture_path_by_id($userId, 'none');
+        if (!empty($path['dir'])) {
+            $dir = api_get_path(SYS_CODE_PATH) . $path['dir'];
+
+            if (!is_dir($dir)) {
+                mkdir($dir);
+            }
+
+            if (!is_dir($dir . 'my_files')) {
+                mkdir($dir . 'my_files');
+            }
+        }
+    }
+
     /**
      * {@inheritdoc}
      */
@@ -28,6 +48,7 @@ class PersonalDriver extends Driver
                     $userId,
                     'system'
                 );
+
                 $dirWeb = \UserManager::get_user_picture_path_by_id(
                     $userId,
                     'web'