parent
2671d9c549
commit
755a754cce
@ -1,318 +0,0 @@ |
|||||||
<?php |
|
||||||
/* For licensing terms, see /license.txt */ |
|
||||||
|
|
||||||
/** |
|
||||||
* Class Timeline |
|
||||||
* Timeline model class definition. |
|
||||||
*/ |
|
||||||
class Timeline extends Model |
|
||||||
{ |
|
||||||
public $table; |
|
||||||
public $columns = [ |
|
||||||
'headline', |
|
||||||
'type', |
|
||||||
'start_date', |
|
||||||
'end_date', |
|
||||||
'text', |
|
||||||
'media', |
|
||||||
'media_credit', |
|
||||||
'media_caption', |
|
||||||
'title_slide', |
|
||||||
'parent_id', |
|
||||||
'status', |
|
||||||
'c_id', |
|
||||||
]; |
|
||||||
public $is_course_model = true; |
|
||||||
|
|
||||||
/** |
|
||||||
* Timeline constructor. |
|
||||||
*/ |
|
||||||
public function __construct() |
|
||||||
{ |
|
||||||
parent::__construct(); |
|
||||||
$this->table = Database::get_course_table(TABLE_TIMELINE); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Get the count of elements. |
|
||||||
* |
|
||||||
* @return int |
|
||||||
*/ |
|
||||||
public function get_count() |
|
||||||
{ |
|
||||||
$course_id = api_get_course_int_id(); |
|
||||||
$row = Database::select( |
|
||||||
'count(*) as count', |
|
||||||
$this->table, |
|
||||||
[ |
|
||||||
'where' => [ |
|
||||||
'parent_id = ? AND c_id = ?' => [ |
|
||||||
'0', |
|
||||||
$course_id, |
|
||||||
], |
|
||||||
], |
|
||||||
], |
|
||||||
'first' |
|
||||||
); |
|
||||||
|
|
||||||
return $row['count']; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* @param array $options |
|
||||||
* |
|
||||||
* @return array |
|
||||||
*/ |
|
||||||
public function get_all($options = []) |
|
||||||
{ |
|
||||||
return Database::select( |
|
||||||
'*', |
|
||||||
$this->table, |
|
||||||
['where' => $options, 'order' => 'headline ASC'] |
|
||||||
); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Displays the title + grid. |
|
||||||
*/ |
|
||||||
public function listing() |
|
||||||
{ |
|
||||||
// action links |
|
||||||
$html = '<div class="actions">'; |
|
||||||
$html .= '<a href="'.api_get_self().'?action=add">'. |
|
||||||
Display::return_icon('add.png', get_lang('Add'), '', '32').'</a>'; |
|
||||||
$html .= '</div>'; |
|
||||||
$html .= Display::grid_html('timelines'); |
|
||||||
|
|
||||||
return $html; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* @return array |
|
||||||
*/ |
|
||||||
public function get_status_list() |
|
||||||
{ |
|
||||||
return [ |
|
||||||
TIMELINE_STATUS_ACTIVE => get_lang('active'), |
|
||||||
TIMELINE_STATUS_INACTIVE => get_lang('inactive'), |
|
||||||
]; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Returns a Form validator Obj. |
|
||||||
* |
|
||||||
* @todo the form should be auto generated |
|
||||||
* |
|
||||||
* @param string url |
|
||||||
* @param string action add, edit |
|
||||||
* |
|
||||||
* @return FormValidator |
|
||||||
*/ |
|
||||||
public function return_form($url, $action) |
|
||||||
{ |
|
||||||
$form = new FormValidator('timeline', 'post', $url); |
|
||||||
// Setting the form elements |
|
||||||
$header = get_lang('Add'); |
|
||||||
if ('edit' == $action) { |
|
||||||
$header = get_lang('Edit'); |
|
||||||
} |
|
||||||
$form->addElement('header', $header); |
|
||||||
$id = isset($_GET['id']) ? intval($_GET['id']) : ''; |
|
||||||
$form->addElement('hidden', 'id', $id); |
|
||||||
|
|
||||||
$form->addElement('text', 'headline', get_lang('Name'), ['size' => '70']); |
|
||||||
$status_list = $this->get_status_list(); |
|
||||||
$form->addSelect('status', get_lang('Status'), $status_list); |
|
||||||
if ('edit' == $action) { |
|
||||||
//$form->addElement('text', 'created_at', get_lang('Created at')); |
|
||||||
//$form->freeze('created_at'); |
|
||||||
} |
|
||||||
if ('edit' == $action) { |
|
||||||
$form->addButtonSave(get_lang('Edit'), 'submit'); |
|
||||||
} else { |
|
||||||
$form->addButtonCreate(get_lang('Add'), 'submit'); |
|
||||||
} |
|
||||||
|
|
||||||
$form->addRule('headline', get_lang('Required field'), 'required'); |
|
||||||
|
|
||||||
// Setting the defaults |
|
||||||
$defaults = $this->get($id); |
|
||||||
|
|
||||||
/*if (!empty($defaults['created_at'])) { |
|
||||||
$defaults['created_at'] = api_convert_and_format_date($defaults['created_at']); |
|
||||||
} |
|
||||||
if (!empty($defaults['updated_at'])) { |
|
||||||
$defaults['updated_at'] = api_convert_and_format_date($defaults['updated_at']); |
|
||||||
}*/ |
|
||||||
$form->setDefaults($defaults); |
|
||||||
|
|
||||||
// Setting the rules |
|
||||||
$form->addRule('headline', get_lang('Required field'), 'required'); |
|
||||||
|
|
||||||
return $form; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* @param $url |
|
||||||
* @param $action |
|
||||||
* |
|
||||||
* @return FormValidator |
|
||||||
*/ |
|
||||||
public function return_item_form($url, $action) |
|
||||||
{ |
|
||||||
$form = new FormValidator('item_form', 'post', $url); |
|
||||||
// Setting the form elements |
|
||||||
$header = get_lang('Add'); |
|
||||||
if ('edit' == $action) { |
|
||||||
$header = get_lang('Edit'); |
|
||||||
} |
|
||||||
$form->addElement('header', $header); |
|
||||||
$id = isset($_GET['id']) ? intval($_GET['id']) : ''; |
|
||||||
$parent_id = isset($_GET['parent_id']) ? intval($_GET['parent_id']) : ''; |
|
||||||
$form->addElement('hidden', 'parent_id', $parent_id); |
|
||||||
$form->addElement('hidden', 'id', $id); |
|
||||||
$form->addElement('text', 'headline', get_lang('Name')); |
|
||||||
|
|
||||||
//@todo fix this |
|
||||||
$form->addElement('text', 'start_date', get_lang('Start Date'), ['size' => '70']); |
|
||||||
$form->addElement('text', 'end_date', get_lang('End Date'), ['size' => '70']); |
|
||||||
$form->addElement('textarea', 'text', get_lang('Text')); |
|
||||||
$form->addElement('text', 'media', get_lang('Media'), ['size' => '70']); |
|
||||||
$form->addElement('text', 'media_caption', get_lang('MediaCaption'), ['size' => '70']); |
|
||||||
$form->addElement('text', 'media_credit', get_lang('MediaCredit'), ['size' => '70']); |
|
||||||
$form->addElement('text', 'title_slide', get_lang('Slider title'), ['size' => '70']); |
|
||||||
|
|
||||||
$form->addRule('headline', get_lang('Required field'), 'required'); |
|
||||||
$form->addRule('start_date', get_lang('Required field'), 'required'); |
|
||||||
|
|
||||||
if ('edit' == $action) { |
|
||||||
// Setting the defaults |
|
||||||
$defaults = $this->get($id); |
|
||||||
$form->addButtonSave(get_lang('Edit'), 'submit'); |
|
||||||
} else { |
|
||||||
$form->addButtonCreate(get_lang('Add'), 'submit'); |
|
||||||
} |
|
||||||
$form->setDefaults($defaults); |
|
||||||
|
|
||||||
// Setting the rules |
|
||||||
$form->addRule('headline', get_lang('Required field'), 'required'); |
|
||||||
|
|
||||||
return $form; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* @param array $params |
|
||||||
* |
|
||||||
* @return bool |
|
||||||
*/ |
|
||||||
public function save_item($params) |
|
||||||
{ |
|
||||||
$params['c_id'] = api_get_course_int_id(); |
|
||||||
$id = parent::save($params); |
|
||||||
if (!empty($id)) { |
|
||||||
//event_system(LOG_CAREER_CREATE, LOG_CAREER_ID, $id, api_get_utc_datetime(), api_get_user_id()); |
|
||||||
} |
|
||||||
|
|
||||||
return $id; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* @param array $params |
|
||||||
* @param bool $showQuery |
|
||||||
* |
|
||||||
* @return bool |
|
||||||
*/ |
|
||||||
public function save($params, $showQuery = false) |
|
||||||
{ |
|
||||||
$params['c_id'] = api_get_course_int_id(); |
|
||||||
$params['parent_id'] = '0'; |
|
||||||
$params['type'] = 'default'; |
|
||||||
$id = parent::save($params, $showQuery); |
|
||||||
if (!empty($id)) { |
|
||||||
//event_system(LOG_CAREER_CREATE, LOG_CAREER_ID, $id, api_get_utc_datetime(), api_get_user_id()); |
|
||||||
} |
|
||||||
|
|
||||||
return $id; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* @param int $id |
|
||||||
*/ |
|
||||||
public function delete($id) |
|
||||||
{ |
|
||||||
parent::delete($id); |
|
||||||
//event_system(LOG_CAREER_DELETE, LOG_CAREER_ID, $id, api_get_utc_datetime(), api_get_user_id()); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* @param int $id |
|
||||||
* |
|
||||||
* @return string |
|
||||||
*/ |
|
||||||
public function get_url($id) |
|
||||||
{ |
|
||||||
return api_get_path(WEB_AJAX_PATH).'timeline.ajax.php?a=get_timeline_content&id='.intval($id); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* @param int $id |
|
||||||
* |
|
||||||
* @return array |
|
||||||
*/ |
|
||||||
public function get_timeline_content($id) |
|
||||||
{ |
|
||||||
$timeline = []; |
|
||||||
$course_id = api_get_course_int_id(); |
|
||||||
$timeline['timeline'] = $this->process_item($this->get($id)); |
|
||||||
$items = $this->process_items($this->get_all(['parent_id = ? AND c_id = ? ' => [$id, $course_id]])); |
|
||||||
$timeline['timeline']['date'] = $items; |
|
||||||
|
|
||||||
return $timeline; |
|
||||||
} |
|
||||||
|
|
||||||
public function process_items($items) |
|
||||||
{ |
|
||||||
foreach ($items as &$item) { |
|
||||||
$item = $this->process_item($item); |
|
||||||
} |
|
||||||
$new_array = []; |
|
||||||
foreach ($items as $item) { |
|
||||||
$new_array[] = $item; |
|
||||||
} |
|
||||||
|
|
||||||
return $new_array; |
|
||||||
} |
|
||||||
|
|
||||||
public function process_item($item) |
|
||||||
{ |
|
||||||
$item['startDate'] = $item['start_date']; |
|
||||||
unset($item['start_date']); |
|
||||||
if (!empty($item['end_date'])) { |
|
||||||
$item['endDate'] = $item['end_date']; |
|
||||||
} else { |
|
||||||
unset($item['endDate']); |
|
||||||
} |
|
||||||
unset($item['end_date']); |
|
||||||
// Assets |
|
||||||
$item['asset'] = [ |
|
||||||
'media' => $item['media'], |
|
||||||
'credit' => $item['media_credit'], |
|
||||||
'caption' => $item['media_caption'], |
|
||||||
]; |
|
||||||
|
|
||||||
//Cleaning items |
|
||||||
unset($item['id']); |
|
||||||
if (empty($item['type'])) { |
|
||||||
unset($item['type']); |
|
||||||
} |
|
||||||
unset($item['media']); |
|
||||||
unset($item['media_credit']); |
|
||||||
unset($item['media_caption']); |
|
||||||
unset($item['status']); |
|
||||||
unset($item['title_slide']); |
|
||||||
unset($item['parent_id']); |
|
||||||
unset($item['c_id']); |
|
||||||
|
|
||||||
return $item; |
|
||||||
} |
|
||||||
} |
|
Loading…
Reference in new issue