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/gradebook/lib/be/evallink.class.php

192 lines
3.9 KiB

<?php
/**
* Class to be used as basis for links referring to Evaluation objects.
* @author Bert Stepp<EFBFBD>
* @package dokeos.gradebook
*/
abstract class EvalLink extends AbstractLink
{
protected $evaluation = null;
/**
* Constructor
*/
function EvalLink()
{
}
// Functions implementing AbstractLink
public function has_results()
{
$eval = $this->get_evaluation();
return $eval->has_results();
}
public function calc_score($stud_id = null)
{
$eval = $this->get_evaluation();
return $eval->calc_score($stud_id);
}
public function get_link()
{
$eval = $this->get_evaluation();
// course/platform admin can go to the view_results page
if (api_is_allowed_to_create_course())
return 'gradebook_view_result.php?selecteval=' . $eval->get_id();
// students can go to the statistics page (if custom display enabled)
elseif (ScoreDisplay :: instance()->is_custom())
return 'gradebook_statistics.php?selecteval=' . $eval->get_id();
else
return null;
}
public function get_name()
{
$eval = $this->get_evaluation();
return $eval->get_name();
}
public function get_description()
{
$eval = $this->get_evaluation();
return $eval->get_description();
}
public function get_max()
{
$eval = $this->get_evaluation();
return $eval->get_max();
}
public function is_valid_link()
{
$eval = $this->get_evaluation();
return (isset($eval));
}
public function needs_name_and_description()
{
return true;
}
public function needs_max()
{
return true;
}
public function needs_results()
{
return true;
}
public function add_linked_data()
{
if ($this->is_valid_link())
{
$this->evaluation->add();
$this->set_ref_id($this->evaluation->get_id());
}
}
public function save_linked_data()
{
if ($this->is_valid_link())
$this->evaluation->save();
}
public function delete_linked_data()
{
if ($this->is_valid_link())
$this->evaluation->delete_with_results();
}
public function set_name ($name)
{
if ($this->is_valid_link())
$this->evaluation->set_name($name);
}
public function set_description ($description)
{
if ($this->is_valid_link())
$this->evaluation->set_description($description);
}
public function set_max ($max)
{
if ($this->is_valid_link())
$this->evaluation->set_max($max);
}
// Functions overriding non-trivial implementations from AbstractLink
public function set_date ($date)
{
$this->link_date = $date;
if ($this->is_valid_link())
$this->evaluation->set_date($date);
}
public function set_weight ($weight)
{
$this->weight = $weight;
if ($this->is_valid_link())
$this->evaluation->set_weight($weight);
}
public function set_visible ($visible)
{
$this->visible = $visible;
if ($this->is_valid_link())
$this->evaluation->set_visible($visible);
}
// INTERNAL FUNCTIONS
/**
* Lazy load function to get the linked evaluation
*/
protected function get_evaluation ()
{
if (!isset($this->evaluation))
{
if (isset($this->ref_id))
{
$evalarray = Evaluation::load($this->get_ref_id());
$this->evaluation = $evalarray[0];
}
else
{
$eval = new Evaluation();
$eval->set_category_id(-1);
$eval->set_date(time()); // these values will be changed
$eval->set_weight(0); // when the link setter
$eval->set_visible(0); // is called
$eval->set_id(-1); // a 'real' id will be set when eval is added to db
$eval->set_user_id($this->get_user_id());
$eval->set_course_code($this->get_course_code());
$this->evaluation = $eval;
$this->set_ref_id($eval->get_id());
}
}
return $this->evaluation;
}
}
?>