Răsfoiți Sursa

Use symfony2 classes

jmontoyaa 8 ani în urmă
părinte
comite
8c55ecbb87

+ 5 - 0
main/inc/lib/api.lib.php

@@ -3129,6 +3129,11 @@ function api_is_anonymous($user_id = null, $db_check = false)
  */
 function api_not_allowed($print_headers = false, $message = null)
 {
+    if (empty($message)) {
+        $message = get_lang('NotAllowed');
+    }
+    throw new Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException($message);
+
     if (api_get_setting('sso_authentication') === 'true') {
         global $osso;
         if ($osso) {

+ 119 - 109
main/inc/lib/chamilo_session.class.php

@@ -1,152 +1,162 @@
 <?php
+/* For licensing terms, see /license.txt */
 
-use Symfony\Component\HttpFoundation\Session\Session;
-use Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage;
+use Chamilo\CoreBundle\Framework\Container;
 
 /**
- * Chamilo session (i.e. the session that maintains the connection open after usr login)
- *
- * Usage:
- *
- *
- *      use ChamiloSession as Session;
- *
- *      Session::read('name');
- *
- * Or
- *
- *      Chamilo::session()->...
- *      session()->...
- *
- * @license see /license.txt
- * @author Laurent Opprecht <laurent@opprecht.info> for the Univesity of Geneva
- */
-/**
- * @todo use session symfony component
  * @todo replace all $_SESSION calls with this class.
- * @todo remove System\Session class
- * ChamiloSession class definition
  */
-class ChamiloSession extends System\Session
+class ChamiloSession implements \ArrayAccess
 {
-    const NAME = 'ch_sid';
-
     /**
-     * Generate new session instance
-     * @return ChamiloSession
+     * @param string $variable
+     * @param null $default
+     * @return mixed|null
      */
-    static function instance()
+    static function read($variable, $default = null)
     {
-        static $result = null;
+        $session = Container::getSession();
+        $result = null;
+        if (isset($session)) {
+            $result = $session->get($variable);
+        }
+
+        // Check if the value exists in the $_SESSION array
         if (empty($result)) {
-            $result = new ChamiloSession();
+            return $default;
+        } else {
+            return $result;
         }
-        return $result;
     }
 
     /**
-     * Returns the session lifetime
-     * @return int The session lifetime as defined in the config file, in seconds
+     * @param string $variable
+     * @param mixed $value
      */
-    static function session_lifetime()
+    static function write($variable, $value)
     {
-        global $_configuration;
-        return $_configuration['session_lifetime'];
+        //$_SESSION[$variable] = $value;
+        $session = Container::getSession();
+        // Writing the session in 2 instances because
+        $_SESSION[$variable] = $value;
+        $session->set($variable, $value);
     }
 
+    /**
+     * @param string $variable
+     */
+    static function erase($variable)
+    {
+        $variable = (string) $variable;
+        $session = Container::getSession();
+        $session->remove($variable);
+
+        if (isset($GLOBALS[$variable])) {
+            unset($GLOBALS[$variable]);
+        }
+        if (isset($_SESSION[$variable])) {
+            unset($_SESSION[$variable]);
+        }
+    }
 
     /**
-     * Starts the Chamilo session.
+     * Returns true if session has variable set up, false otherwise.
      *
-     * The default lifetime for session is set here. It is not possible to have it
-     * as a database setting as it is used before the database connection has been made.
-     * It is taken from the configuration file, and if it doesn't exist there, it is set
-     * to 360000 seconds
+     * @param string $variable
      *
-     * @author Olivier Brouckaert
-     * @param  string variable - the variable name to save into the session
-     * @return void
+     * @return bool
      */
-    static function start($already_installed = true)
+    static function has($variable)
     {
-        global $_configuration;
-
-        /*
-         * Prevent Session fixation bug fixes
-         * See http://support.chamilo.org/issues/3600
-         * http://php.net/manual/en/session.configuration.php
-         * @todo use session_set_cookie_params with some custom admin parameters
-         */
-
-        //session.cookie_lifetime
-        //the session ID is only accepted from a cookie
-        ini_set('session.use_only_cookies', 1);
-
-        //HTTPS only if possible
-        //ini_set('session.cookie_secure', 1);
-        //session ID in the cookie is only readable by the server
-        ini_set('session.cookie_httponly', 1);
-
-        //Use entropy file
-        //session.entropy_file
-        //ini_set('session.entropy_length', 128);
-        //Do not include the identifier in the URL, and not to read the URL for
-        // identifiers.
-        ini_set('session.use_trans_sid', 0);
-
-        session_name(self::NAME);
-        session_start();
-
-        $session = self::instance();
-
-        if ($already_installed) {
-            if (!isset($session['checkChamiloURL'])) {
-                $session['checkChamiloURL'] = api_get_path(WEB_PATH);
-            } elseif ($session['checkChamiloURL'] != api_get_path(WEB_PATH)) {
-                self::clear();
-            }
-        }
+        return isset($_SESSION[$variable]);
+    }
 
-        /*if (!$session->has('starttime') && !$session->is_expired()) {
-            $session->write('starttime', time());
-        }*/
-        // If the session time has expired, refresh the starttime value,
-        //  so we're starting to count down from a later time
-        if ( $session->has('starttime') && $session->is_expired()) {
-            $session->destroy();
-        } else {
-            //error_log('Time not expired, extend session for a bit more');
-            $session->write('starttime', time());
-        }
+    /**
+     * Clear
+     */
+    static function clear()
+    {
+        $session = Container::getSession();
+        $session->clear();
+    }
+
+    /**
+     * Destroy
+     */
+    static function destroy()
+    {
+        $session = Container::getSession();
+        $session->invalidate();
+    }
+
+    /*
+     * ArrayAccess
+     */
+    public function offsetExists($offset)
+    {
+        return isset($_SESSION[$offset]);
     }
 
     /**
-     * Session start time: that is the last time the user loaded a page (before this time)
-     * @return int timestamp
+     * It it exists returns the value stored at the specified offset.
+     * If offset does not exists returns null. Do not trigger a warning.
+     *
+     * @param string $offset
+     * @return any
      */
-    function start_time()
+    public function offsetGet($offset)
     {
-        return self::read('starttime');
+        return self::read($offset);
+    }
+
+    public function offsetSet($offset, $value)
+    {
+        self::write($offset, $value);
+    }
+
+    public function offsetUnset($offset)
+    {
+        unset($_SESSION[$offset]);
     }
 
     /**
-     * Session end time: when the session expires. This is made of the last page
-     * load time + a number of seconds
-     * @return int UNIX timestamp (server's timezone)
+     * @param string $name
      */
-    function end_time()
+    public function __unset($name)
     {
-        $start_time = $this->start_time();
-        $lifetime = self::session_lifetime();
-        return $start_time + $lifetime;
+        unset($_SESSION[$name]);
     }
 
     /**
-     * Returns whether the session is expired
-     * @return bool True if the session is expired, false if it is still valid
+     * @param string $name
+     * @return bool
+     */
+    public function __isset($name)
+    {
+        return self::has($name);
+    }
+
+    /**
+     * It it exists returns the value stored at the specified offset.
+     * If offset does not exists returns null. Do not trigger a warning.
+     *
+     * @param string $name
+     *
+     * @return mixed
+     *
+     */
+    function __get($name)
+    {
+        return self::read($name);
+    }
+
+    /**
+     *
+     * @param string $name
+     * @param mixed $value
      */
-    public function is_expired()
+    function __set($name, $value)
     {
-        return $this->end_time() < time();
+        self::write($name, $value);
     }
 }

+ 24 - 5
src/Chamilo/CoreBundle/Resources/views/default/layout/footer.html.twig

@@ -36,14 +36,16 @@
             </div>
 
             <div id="footer_right" class="col-md-4">
-
-                <div id="admin_name">
-                    {{ 'Manager' | trans }}
-                </div>
+                {% if chamilo_settings_get('display.show_administrator_data') == 'true' %}
+                    <div id="admin_name">
+                        {{ 'Manager' | trans }}
+                        : {{ chamilo_settings_get('admin.administrator_name') }} {{ chamilo_settings_get('admin.administrator_surname') }}
+                    </div>
+                {% endif %}
 
                 <div id="software_name">
                     {{ "Platform"|trans }}
-                    <a href="" target="_blank">
+                    <a href="{{ url('home') }}" target="_blank">
                         {{ software_name }}
                     </a>
                     &copy; {{ "now"|date("Y") }}
@@ -61,4 +63,21 @@
     </div><!-- end of #container -->
 </footer>
 
+<div class="modal fade" id="expand-image-modal" tabindex="-1" role="dialog"
+     aria-labelledby="expand-image-modal-title" aria-hidden="true">
+    <div class="modal-dialog modal-lg">
+        <div class="modal-content">
+            <div class="modal-header">
+                <button type="button" class="close" data-dismiss="modal"
+                        aria-label="{{ "Close" | trans }}"><span
+                            aria-hidden="true">&times;</span></button>
+                <h4 class="modal-title" id="expand-image-modal-title">
+                    &nbsp;</h4>
+            </div>
+            <div class="modal-body">
+            </div>
+        </div>
+    </div>
+</div>
+
 {{ footer_extra_content }}