Chamilo is a learning management system focused on ease of use and accessibility
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.
 
 
 
 
 
 
chamilo-lms/main/inc/lib/entity.class.php

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;
}
}
}