You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							100 lines
						
					
					
						
							2.2 KiB
						
					
					
				
			
		
		
	
	
							100 lines
						
					
					
						
							2.2 KiB
						
					
					
				<?php
 | 
						|
 | 
						|
/**
 | 
						|
 * Description of Entity
 | 
						|
 *
 | 
						|
 * @license see /license.txt
 | 
						|
 * @author Laurent Opprecht <laurent@opprecht.info> for the Univesity of Geneva
 | 
						|
 */
 | 
						|
class Entity
 | 
						|
{
 | 
						|
 | 
						|
    /**
 | 
						|
     *
 | 
						|
     * @return \Entity\Course 
 | 
						|
     */
 | 
						|
    public static function current_course()
 | 
						|
    {
 | 
						|
        static $result = false;
 | 
						|
        if ($result === false) {
 | 
						|
            $repo = \Entity\Course::repository();
 | 
						|
            $course_id = api_get_course_int_id();
 | 
						|
            if ($course_id) {
 | 
						|
                $result = $repo->find($course_id);
 | 
						|
            }
 | 
						|
        }
 | 
						|
        return $result;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     *
 | 
						|
     * @return \Entity\Session  
 | 
						|
     */
 | 
						|
    public static function current_session()
 | 
						|
    {
 | 
						|
        static $result = false;
 | 
						|
        if ($result === false) {
 | 
						|
            $repo = \Entity\Session::repository();
 | 
						|
            $session_id = api_get_session_id();
 | 
						|
            $result = $repo->find($session_id);
 | 
						|
        }
 | 
						|
        return $result;
 | 
						|
    }
 | 
						|
 | 
						|
    function __construct($data = null)
 | 
						|
    {
 | 
						|
        if ($data) {
 | 
						|
            foreach ($this as $key => $value) {
 | 
						|
                if (isset($data->{$key})) {
 | 
						|
                    $this->{$key} = $data->{$key};
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
        $this->defaults('session_id', api_get_session_id());
 | 
						|
    }
 | 
						|
 | 
						|
    function __get($name)
 | 
						|
    {
 | 
						|
        $f = array($this, "get_$name");
 | 
						|
        return call_user_func($f);
 | 
						|
    }
 | 
						|
 | 
						|
    function __isset($name)
 | 
						|
    {
 | 
						|
        $f = array($this, "get_$name");
 | 
						|
        return is_callable($f);
 | 
						|
    }
 | 
						|
 | 
						|
    function __set($name, $value)
 | 
						|
    {
 | 
						|
        $f = array($this, "set_$name");
 | 
						|
        if (!is_callable($f)) {
 | 
						|
            return;
 | 
						|
        }
 | 
						|
        call_user_func($f, $value);
 | 
						|
    }
 | 
						|
 | 
						|
    function before_save()
 | 
						|
    {
 | 
						|
        $repo = $this->repository();
 | 
						|
        $field = $repo->get_id_field();
 | 
						|
        if (empty($field)) {
 | 
						|
            return;
 | 
						|
        }
 | 
						|
 | 
						|
        $value = isset($this->{$field}) ? $this->{$field} : null;
 | 
						|
        if ($value) {
 | 
						|
            return;
 | 
						|
        }
 | 
						|
        $next_id = $repo->next_id($this);
 | 
						|
        $this->{$field} = $next_id;
 | 
						|
    }
 | 
						|
 | 
						|
    function defaults($name, $value)
 | 
						|
    {
 | 
						|
        if (property_exists($this, $name) && empty($this->{$name})) {
 | 
						|
            $this->{$name} = $value;
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
} |