Internal - Add notebook as resource

pull/3543/head
Julio Montoya 4 years ago
parent 9fd1a862d6
commit c35fdc8fa9
  1. 2
      psalm.xml
  2. 1
      public/main/auth/inscription.php
  3. 2
      public/main/inc/lib/api.lib.php
  4. 130
      public/main/inc/lib/notebook.lib.php
  5. 4
      public/main/notebook/index.php
  6. 6
      src/CoreBundle/Framework/Container.php
  7. 65
      src/CourseBundle/Entity/CNotebook.php
  8. 14
      src/CourseBundle/Repository/CNotebookRepository.php

@ -87,7 +87,7 @@
<file name="public/main/inc/lib/model.lib.php"/>
<!-- <file name="public/main/inc/lib/MoodleImport.php"/>-->
<!-- <file name="public/main/inc/lib/myspace.lib.php"/>-->
<!-- <file name="public/main/inc/lib/notebook.lib.php"/>-->
<file name="public/main/inc/lib/notebook.lib.php"/>
<file name="public/main/inc/lib/notification.lib.php"/>
<file name="public/main/inc/lib/NotificationEvent.php"/>

@ -1105,5 +1105,4 @@ if ($form->validate()) {
$inscription = $tpl->get_template('auth/inscription.tpl');
$tpl->display($inscription);
}

@ -8393,13 +8393,11 @@ function api_is_student_view_active()
* @param int $itemId
* @param string $cropParameters
*
*
* @return array|bool
*/
function api_upload_file($type, $file, $itemId, $cropParameters = '')
{
throw new Exception('api_upload_file not implemented');
$upload = process_uploaded_file($file);
if ($upload) {
$name = api_replace_dangerous_char($file['name']);

@ -1,6 +1,7 @@
<?php
/* For licensing terms, see /license.txt */
use Chamilo\CoreBundle\Framework\Container;
use Chamilo\CourseBundle\Entity\CNotebook;
use ChamiloSession as Session;
@ -41,64 +42,31 @@ class NotebookManager
</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)
public static function saveNote(array $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'];
$course = api_get_course_entity($courseId);
$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
);
$session = api_get_session_entity($sessionId);
return $id;
}
$notebook = new CNotebook();
$notebook
->setTitle($values['note_title'])
->setDescription($values['note_comment'])
->setUserId($userId)
->addCourseLink($course, $session)
;
$repo = Container::getNotebookRepository();
$repo->getEntityManager()->persist($notebook);
$repo->getEntityManager()->flush();
return $notebook->getIid();
}
/**
@ -118,12 +86,12 @@ class NotebookManager
$notebook_id = (int) $notebook_id;
$sql = "SELECT
notebook_id AS notebook_id,
iid 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."' ";
WHERE iid = '".$notebook_id."' ";
$result = Database::query($sql);
if (1 != Database::num_rows($result)) {
return [];
@ -133,57 +101,28 @@ class NotebookManager
}
/**
* 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)
public static function updateNote($values)
{
if (!is_array($values) || empty($values['note_title'])) {
return false;
}
// Database table definition
$table = Database::get_course_table(TABLE_NOTEBOOK);
$repo = Container::getNotebookRepository();
$notebook = $repo->find($values['notebook_id']);
$course_id = api_get_course_int_id();
$sessionId = api_get_session_id();
if (!$notebook) {
return false;
}
$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'],
],
]
);
$notebook
->setTitle($values['note_title'])
->setDescription($values['note_comment'])
;
// update item_property (update)
api_item_property_update(
api_get_course_info(),
TOOL_NOTEBOOK,
$values['notebook_id'],
'NotebookUpdated',
api_get_user_id()
);
$repo->getEntityManager()->persist($notebook);
$repo->getEntityManager()->flush();
return true;
}
@ -207,8 +146,7 @@ class NotebookManager
$sql = "DELETE FROM $table
WHERE
c_id = $course_id AND
notebook_id='".$notebook_id."' AND
iid='".$notebook_id."' AND
user_id = '".api_get_user_id()."'";
$result = Database::query($sql);
$affected_rows = Database::affected_rows($result);
@ -218,13 +156,13 @@ class NotebookManager
}
// Update item_property (delete)
api_item_property_update(
/*api_item_property_update(
api_get_course_info(),
TOOL_NOTEBOOK,
$notebook_id,
'delete',
api_get_user_id()
);
);*/
return true;
}

@ -106,7 +106,7 @@ if ('addnote' === $action) {
$check = Security::check_token('post');
if ($check) {
$values = $form->exportValues();
$res = NotebookManager::save_note($values);
$res = NotebookManager::saveNote($values);
if ($res) {
echo Display::return_message(get_lang('Note added'), 'confirmation');
}
@ -169,7 +169,7 @@ if ('addnote' === $action) {
$check = Security::check_token('post');
if ($check) {
$values = $form->exportValues();
$res = NotebookManager::update_note($values);
$res = NotebookManager::updateNote($values);
if ($res) {
echo Display::return_message(get_lang('Note updated'), 'confirmation');
}

@ -33,6 +33,7 @@ use Chamilo\CourseBundle\Repository\CLinkCategoryRepository;
use Chamilo\CourseBundle\Repository\CLinkRepository;
use Chamilo\CourseBundle\Repository\CLpCategoryRepository;
use Chamilo\CourseBundle\Repository\CLpRepository;
use Chamilo\CourseBundle\Repository\CNotebookRepository;
use Chamilo\CourseBundle\Repository\CQuizQuestionCategoryRepository;
use Chamilo\CourseBundle\Repository\CQuizQuestionRepository;
use Chamilo\CourseBundle\Repository\CQuizRepository;
@ -405,6 +406,11 @@ class Container
return self::$container->get(CLpCategoryRepository::class);
}
public static function getNotebookRepository(): CNotebookRepository
{
return self::$container->get(CNotebookRepository::class);
}
public static function getUserRepository(): UserRepository
{
return self::$container->get(UserRepository::class);

@ -4,21 +4,20 @@
namespace Chamilo\CourseBundle\Entity;
use Chamilo\CoreBundle\Entity\AbstractResource;
use Chamilo\CoreBundle\Entity\ResourceInterface;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
/**
* CNotebook.
*
* @ORM\Entity
* @ORM\Table(
* name="c_notebook",
* indexes={
* @ORM\Index(name="course", columns={"c_id"})
* }
* name="c_notebook"
* )
* @ORM\Entity(repositoryClass="Chamilo\CourseBundle\Repository\CNotebookRepository")
*/
class CNotebook
class CNotebook extends AbstractResource implements ResourceInterface
{
/**
* @var int
@ -36,13 +35,6 @@ class CNotebook
*/
protected $cId;
/**
* @var int
*
* @ORM\Column(name="notebook_id", type="integer")
*/
protected $notebookId;
/**
* @var int
*
@ -108,6 +100,12 @@ class CNotebook
$this->status = 0;
}
public function __toString(): string
{
return $this->getTitle();
}
/**
* Set userId.
*
@ -201,7 +199,7 @@ class CNotebook
*/
public function getTitle()
{
return $this->title;
return (string) $this->title;
}
/**
@ -300,30 +298,6 @@ class CNotebook
return $this->status;
}
/**
* Set notebookId.
*
* @param int $notebookId
*
* @return CNotebook
*/
public function setNotebookId($notebookId)
{
$this->notebookId = $notebookId;
return $this;
}
/**
* Get notebookId.
*
* @return int
*/
public function getNotebookId()
{
return $this->notebookId;
}
/**
* Set cId.
*
@ -357,4 +331,19 @@ class CNotebook
{
return $this->iid;
}
public function getResourceIdentifier(): int
{
return $this->getIid();
}
public function getResourceName(): string
{
return $this->getTitle();
}
public function setResourceName(string $name): self
{
return $this->setTitle($name);
}
}

@ -7,23 +7,13 @@ namespace Chamilo\CourseBundle\Repository;
use Chamilo\CoreBundle\Entity\Course;
use Chamilo\CoreBundle\Entity\Session;
use Chamilo\CoreBundle\Entity\User;
use Chamilo\CourseBundle\Entity\CNotebook;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Common\Persistence\ManagerRegistry;
use Chamilo\CoreBundle\Repository\ResourceRepository;
/**
* Class CNotebookRepository.
*/
class CNotebookRepository extends ServiceEntityRepository
class CNotebookRepository extends ResourceRepository
{
/**
* CNotebookRepository constructor.
*/
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, CNotebook::class);
}
/**
* Get the user notebooks in a course.
*

Loading…
Cancel
Save