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/student_publication.class.php

487 lines
11 KiB

<?php
namespace Model;
use Database;
use ResultSet;
/**
* Represent a database "student_publication" object.
*
* Note:
*
* Each database column is mapped to a property.
*
* The item_property table is available through its own property but is loaded
* alongside document data.
*
* Some db query functions exists in this class and would need to be adapted
* to Symphony once it is moved to production. Yet the object structure should
* stay.
*
* @see \Model\ItemProperty
* @see table c_student_publication
* @license see /license.txt
* @author Laurent Opprecht <laurent@opprecht.info> for the Univesity of Geneva
*/
class StudentPublication
{
public static function void()
{
static $result = null;
if ($result) {
return $result;
}
$result = new self();
return $result;
}
/**
* @return Model\StudentPublicationRepository
*/
public static function repository()
{
return StudentPublicationRepository::instance();
}
/**
*
* @param string $where
* @return \ResultSet
*/
public static function query($where)
{
return self::repository()->query($where);
}
/**
*
* @param int|Course $c_id
* @param int $id
* @return \Model\StudentPublication
*/
public static function get_by_id($c_id, $id)
{
return self::repository()->get_by_id($c_id, $id);
}
protected $c_id = 0;
protected $id = 0;
protected $url = '';
protected $title = '';
protected $description = '';
protected $author = '';
protected $active = null;
protected $accepted = false;
protected $post_group_id = 0;
protected $sent_date = 0;
protected $filetype = '';
protected $has_properties = 0;
protected $view_properties = null;
protected $qualification = 0;
protected $date_of_qualification = 0;
protected $parent_id = 0;
protected $qualificator_id = 0;
protected $weight = 0;
protected $session_id = 0;
protected $user_id = null;
protected $allow_text_assignment = 0;
protected $contains_file = 0;
protected $course = null;
protected $item_property = null;
public function __construct($data)
{
$data = (object) $data;
$this->c_id = (int) $data->c_id;
$this->id = (int) $data->id;
$this->url = $data->url;
$this->title = $data->title;
$this->description = $data->description;
$this->author = $data->author;
$this->active = $data->active;
$this->accepted = $data->accepted;
$this->post_group_id = $data->post_group_id;
$this->sent_date = $data->sent_date;
$this->filetype = $data->filetype;
$this->has_properties = $data->has_properties;
$this->view_properties = $data->view_properties;
$this->qualification = $data->qualification;
$this->date_of_qualification = $data->date_of_qualification;
$this->parent_id = $data->parent_id;
$this->qualificator_id = $data->qualificator_id;
$this->weight = $data->weight;
$this->session_id = $data->session_id;
$this->user_id = $data->user_id;
$this->allow_text_assignment = $data->allow_text_assignment;
$this->contains_file = $data->contains_file;
$this->course = $data->course;
$this->item_property = $data->item_property;
$this->course = null;
if (isset($data->property_id)) {
$property = (array) $data;
$property = (object) $property;
$property->id = $property->property_id;
$this->item_property = ItemProperty::create($property);
} else {
$this->item_property = null;
}
}
public function get_c_id()
{
return $this->c_id;
}
public function set_c_id($value)
{
$this->c_id = $value;
}
public function get_id()
{
return $this->id;
}
public function set_id($value)
{
$this->id = $value;
}
public function get_url()
{
return $this->url;
}
public function set_url($value)
{
$this->url = $value;
}
public function get_title()
{
return $this->title;
}
public function set_title($value)
{
$this->title = $value;
}
public function get_description()
{
return $this->description;
}
public function set_description($value)
{
$this->description = $value;
}
public function get_author()
{
return $this->author;
}
public function set_author($value)
{
$this->author = $value;
}
public function get_active()
{
return $this->active;
}
public function set_active($value)
{
$this->active = $value;
}
public function get_accepted()
{
return $this->accepted;
}
public function set_accepted($value)
{
$this->accepted = $value;
}
public function get_post_group_id()
{
return $this->post_group_id;
}
public function set_post_group_id($value)
{
$this->post_group_id = $value;
}
public function get_sent_date()
{
return $this->sent_date;
}
public function set_sent_date($value)
{
$this->sent_date = $value;
}
public function get_filetype()
{
return $this->filetype;
}
public function set_filetype($value)
{
$this->filetype = $value;
}
public function get_has_properties()
{
return $this->has_properties;
}
public function set_has_properties($value)
{
$this->has_properties = $value;
}
public function get_view_properties()
{
return $this->view_properties;
}
public function set_view_properties($value)
{
$this->view_properties = $value;
}
public function get_qualification()
{
return $this->qualification;
}
public function set_qualification($value)
{
$this->qualification = $value;
}
public function get_date_of_qualification()
{
return $this->date_of_qualification;
}
public function set_date_of_qualification($value)
{
$this->date_of_qualification = $value;
}
public function get_parent_id()
{
return $this->parent_id;
}
public function set_parent_id($value)
{
$this->parent_id = $value;
}
public function get_qualificator_id()
{
return $this->qualificator_id;
}
public function set_qualificator_id($value)
{
$this->qualificator_id = $value;
}
public function get_weight()
{
return $this->weight;
}
public function set_weight($value)
{
$this->weight = $value;
}
public function get_session_id()
{
return $this->session_id;
}
public function set_session_id($value)
{
$this->session_id = $value;
}
public function get_user_id()
{
return $this->user_id;
}
public function set_user_id($value)
{
$this->user_id = $value;
}
public function get_allow_text_assignment()
{
return $this->allow_text_assignment;
}
public function set_allow_text_assignment($value)
{
$this->allow_text_assignment = $value;
}
public function get_contains_file()
{
return $this->contains_file;
}
public function set_contains_file($value)
{
$this->contains_file = $value;
}
public function is_folder()
{
return $this->filetype == 'folder';
}
public function is_file()
{
return $this->filetype == 'file';
}
public function is_visible()
{
$this->get_item_property()->get_visibility() == 1;
}
public function is_accessible($user = null)
{
$user_id = $user ? $user : api_get_user_id();
$result = $this->is_visible() || $this->get_user_id() == $user_id || api_is_allowed_to_edit();
return $result;
}
public function get_absolute_path()
{
return api_get_path(SYS_COURSE_PATH) . api_get_course_path() . '/' . $this->get_url();
}
/**
*
* @return \Model\ItemProperty
*/
public function get_item_property()
{
if ($this->item_property && $this->item_property->get_c_id() == $this->c_id && $this->item_property->get_ref() == $this->id) {
return $this->item_property;
}
$this->item_property = ItemProperty::get_by_ref($this->id, TOOL_DOCUMENT);
return $this->item_property;
}
/**
*
* @param bool $all
* @return ResultSet|array
*/
public function get_children()
{
if (!$this->is_folder()) {
return array();
}
$id = $this->id;
$c_id = $this->c_id;
$where = "pub.c_id = $c_id AND pub.parent_id = $id";
return self::query($where);
}
}
class StudentPublicationRepository
{
/**
*
* @staticvar null $result
* @return StudentPublicationRepository
*/
public static function instance()
{
static $result = null;
if (empty($result)) {
$result = new self();
}
return $resutl;
}
/**
*
* @param string $where
* @return \ResultSet
*/
public function query($where)
{
$table_item_property = Database::get_course_table(TABLE_ITEM_PROPERTY);
$table = Database::get_course_table(TABLE_STUDENT_PUBLICATION);
$tool = 'work';
$sql = "SELECT pub.*,
prop.id AS property_id,
prop.tool,
prop.insert_user_id,
prop.insert_date,
prop.lastedit_date,
prop.ref,
prop.lastedit_type,
prop.lastedit_user_id,
prop.to_group_id,
prop.to_user_id,
prop.visibility,
prop.start_visible,
prop.end_visible,
prop.id_session
FROM
$table AS pub,
$table_item_property AS prop
WHERE
(pub.id = prop.ref AND
pub.c_id = prop.c_id AND
prop.tool = '$tool')";
$sql .= $where ? "AND ($where)" : '';
$result = new ResultSet($sql);
return $result->return_type(__CLASS__);
}
/**
*
* @param int|Course $c_id
* @param int $id
* @return \Model\StudentPublication
*/
public function get_by_id($c_id, $id)
{
$c_id = is_object($c_id) ? $c_id->get_id() : (int) $c_id;
return $this->query("pub.c_id = $c_id AND pub.id = $id")->first();
}
public function update($pub)
{
}
}