123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315 |
- <?php
- /* For licensing terms, see /license.txt */
- use ChamiloSession as Session;
- /**
- * This class provides methods for the notebook management.
- * Include/require it in your code to use its features.
- *
- * @author Carlos Vargas <litox84@gmail.com>, move code of main/notebook up here
- *
- * @package chamilo.library
- */
- class NotebookManager
- {
- /**
- * Constructor.
- */
- public function __construct()
- {
- }
- /**
- * a little bit of javascript to display a prettier warning when deleting a note.
- *
- * @return string
- *
- * @author Patrick Cool <patrick.cool@ugent.be>, Ghent University, Belgium
- *
- * @version januari 2009, dokeos 1.8.6
- */
- public static function javascript_notebook()
- {
- return "<script>
- function confirmation (name)
- {
- if (confirm(\" ".get_lang("Are you sure you want to delete this note")." \"+ name + \" ?\"))
- {return true;}
- else
- {return false;}
- }
- </script>";
- }
- /**
- * This functions stores the note in the database.
- *
- * @param array $values
- * @param int $userId Optional. The user ID
- * @param int $courseId Optional. The course ID
- * @param int $sessionId Optional. The session ID
- *
- * @return bool
- *
- * @author Christian Fasanando <christian.fasanando@dokeos.com>
- * @author Patrick Cool <patrick.cool@ugent.be>, Ghent University, Belgium
- *
- * @version januari 2009, dokeos 1.8.6
- */
- public static function save_note($values, $userId = 0, $courseId = 0, $sessionId = 0)
- {
- if (!is_array($values) || empty($values['note_title'])) {
- return false;
- }
- // Database table definition
- $table = Database::get_course_table(TABLE_NOTEBOOK);
- $userId = $userId ?: api_get_user_id();
- $courseId = $courseId ?: api_get_course_int_id();
- $courseInfo = api_get_course_info_by_id($courseId);
- $courseCode = $courseInfo['code'];
- $sessionId = $sessionId ?: api_get_session_id();
- $now = api_get_utc_datetime();
- $params = [
- 'notebook_id' => 0,
- 'c_id' => $courseId,
- 'user_id' => $userId,
- 'course' => $courseCode,
- 'session_id' => $sessionId,
- 'title' => $values['note_title'],
- 'description' => $values['note_comment'],
- 'creation_date' => $now,
- 'update_date' => $now,
- 'status' => 0,
- ];
- $id = Database::insert($table, $params);
- if ($id > 0) {
- $sql = "UPDATE $table SET notebook_id = $id WHERE iid = $id";
- Database::query($sql);
- //insert into item_property
- api_item_property_update(
- $courseInfo,
- TOOL_NOTEBOOK,
- $id,
- 'NotebookAdded',
- $userId
- );
- return $id;
- }
- }
- /**
- * @param int $notebook_id
- *
- * @return array
- */
- public static function get_note_information($notebook_id)
- {
- if (empty($notebook_id)) {
- return [];
- }
- // Database table definition
- $table = Database::get_course_table(TABLE_NOTEBOOK);
- $course_id = api_get_course_int_id();
- $notebook_id = (int) $notebook_id;
- $sql = "SELECT
- notebook_id AS notebook_id,
- title AS note_title,
- description AS note_comment,
- session_id AS session_id
- FROM $table
- WHERE c_id = $course_id AND notebook_id = '".$notebook_id."' ";
- $result = Database::query($sql);
- if (Database::num_rows($result) != 1) {
- return [];
- }
- return Database::fetch_array($result);
- }
- /**
- * This functions updates the note in the database.
- *
- * @param array $values
- *
- * @author Christian Fasanando <christian.fasanando@dokeos.com>
- * @author Patrick Cool <patrick.cool@ugent.be>, Ghent University, Belgium
- *
- * @return bool
- *
- * @version januari 2009, dokeos 1.8.6
- */
- public static function update_note($values)
- {
- if (!is_array($values) || empty($values['note_title'])) {
- return false;
- }
- // Database table definition
- $table = Database::get_course_table(TABLE_NOTEBOOK);
- $course_id = api_get_course_int_id();
- $sessionId = api_get_session_id();
- $params = [
- 'user_id' => api_get_user_id(),
- 'course' => api_get_course_id(),
- 'session_id' => $sessionId,
- 'title' => $values['note_title'],
- 'description' => $values['note_comment'],
- 'update_date' => api_get_utc_datetime(),
- ];
- Database::update(
- $table,
- $params,
- [
- 'c_id = ? AND notebook_id = ?' => [
- $course_id,
- $values['notebook_id'],
- ],
- ]
- );
- // update item_property (update)
- api_item_property_update(
- api_get_course_info(),
- TOOL_NOTEBOOK,
- $values['notebook_id'],
- 'NotebookUpdated',
- api_get_user_id()
- );
- return true;
- }
- /**
- * @param int $notebook_id
- *
- * @return bool
- */
- public static function delete_note($notebook_id)
- {
- $notebook_id = (int) $notebook_id;
- if (empty($notebook_id)) {
- return false;
- }
- // Database table definition
- $table = Database::get_course_table(TABLE_NOTEBOOK);
- $course_id = api_get_course_int_id();
- $sql = "DELETE FROM $table
- WHERE
- c_id = $course_id AND
- notebook_id='".$notebook_id."' AND
- user_id = '".api_get_user_id()."'";
- $result = Database::query($sql);
- $affected_rows = Database::affected_rows($result);
- if ($affected_rows != 1) {
- return false;
- }
- // Update item_property (delete)
- api_item_property_update(
- api_get_course_info(),
- TOOL_NOTEBOOK,
- $notebook_id,
- 'delete',
- api_get_user_id()
- );
- return true;
- }
- /**
- * Display notes.
- */
- public static function display_notes()
- {
- $sessionId = api_get_session_id();
- $_user = api_get_user_info();
- if (!isset($_GET['direction'])) {
- $sort_direction = 'ASC';
- $link_sort_direction = 'DESC';
- } elseif ($_GET['direction'] == 'ASC') {
- $sort_direction = 'ASC';
- $link_sort_direction = 'DESC';
- } else {
- $sort_direction = 'DESC';
- $link_sort_direction = 'ASC';
- }
- // action links
- echo '<div class="actions">';
- if (!api_is_anonymous()) {
- if ($sessionId == 0 || api_is_allowed_to_session_edit(false, true)) {
- echo '<a href="index.php?'.api_get_cidreq().'&action=addnote">'.
- Display::return_icon('new_note.png', get_lang('Add new note in my personal notebook'), '', '32').'</a>';
- }
- }
- echo '<a href="index.php?'.api_get_cidreq().'&action=changeview&view=creation_date&direction='.$link_sort_direction.'">'.
- Display::return_icon('notes_order_by_date_new.png', get_lang('Sort by date created'), '', '32').'</a>';
- echo '<a href="index.php?'.api_get_cidreq().'&action=changeview&view=update_date&direction='.$link_sort_direction.'">'.
- Display::return_icon('notes_order_by_date_mod.png', get_lang('Sort by date last modified'), '', '32').'</a>';
- echo '<a href="index.php?'.api_get_cidreq().'&action=changeview&view=title&direction='.$link_sort_direction.'">'.
- Display::return_icon('notes_order_by_title.png', get_lang('Sort by title'), '', '32').'</a>';
- echo '</div>';
- $notebookView = Session::read('notebook_view');
- if (empty($notebookView)) {
- $notebookView = 'creation_date';
- }
- if (!in_array($notebookView, ['creation_date', 'update_date', 'title'])) {
- Session::write('notebook_view', 'creation_date');
- }
- // Database table definition
- $table = Database::get_course_table(TABLE_NOTEBOOK);
- $order_by = ' ORDER BY '.$notebookView." $sort_direction ";
- // Condition for the session
- $condition_session = api_get_session_condition($sessionId);
- $cond_extra = $notebookView == 'update_date' ? " AND update_date <> ''" : ' ';
- $course_id = api_get_course_int_id();
- $sql = "SELECT * FROM $table
- WHERE
- c_id = $course_id AND
- user_id = '".api_get_user_id()."'
- $condition_session
- $cond_extra $order_by
- ";
- $result = Database::query($sql);
- while ($row = Database::fetch_array($result)) {
- // Validation when belongs to a session
- $session_img = api_get_session_image($row['session_id'], $_user['status']);
- $updateValue = '';
- if ($row['update_date'] != $row['creation_date']) {
- $updateValue = ', '.get_lang('Updated').': '.Display::dateToStringAgoAndLongDate($row['update_date']);
- }
- $actions = '<a href="'.api_get_self().'?action=editnote¬ebook_id='.$row['notebook_id'].'">'.
- Display::return_icon('edit.png', get_lang('Edit'), '', ICON_SIZE_SMALL).'</a>';
- $actions .= '<a href="'.api_get_self().'?action=deletenote¬ebook_id='.$row['notebook_id'].'" onclick="return confirmation(\''.$row['title'].'\');">'.
- Display::return_icon('delete.png', get_lang('Delete'), '', ICON_SIZE_SMALL).'</a>';
- echo Display::panel(
- $row['description'],
- $row['title'].$session_img.' <div class="pull-right">'.$actions.'</div>',
- get_lang('Creation date').': '.Display::dateToStringAgoAndLongDate($row['creation_date']).$updateValue
- );
- }
- }
- }
|