parent
f2c684e43a
commit
b256c09001
@ -0,0 +1,19 @@ |
||||
<?php |
||||
|
||||
/* |
||||
* This file contains the portfolios configuration. |
||||
* |
||||
* Portfolios are external applicatoins used to display and share files. The |
||||
* portfolio configuration set up where files can be sent. |
||||
* |
||||
* @see \Portfolio |
||||
*/ |
||||
|
||||
$portfolios = array(); |
||||
|
||||
//$_mahara_portfolio = new Portfolio\Mahara('http(s)://...'); |
||||
//$portfolios[] = $_mahara_portfolio; |
||||
|
||||
//$download_portfolio = new Portfolio\Download(); |
||||
//$download_portfolio->set_title(get_lang('Download')); |
||||
//$portfolios[] = $download_portfolio; |
After Width: | Height: | Size: 5.7 KiB |
@ -0,0 +1,41 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
use Chamilo\CoreBundle\Entity\PortfolioCategory; |
||||
|
||||
$form = new FormValidator('add_category', 'post', "$baseUrl&action=add_category"); |
||||
$form->addText('title', get_lang('Title')); |
||||
$form->addHtmlEditor('description', get_lang('Description'), false, false, ['ToolbarSet' => 'Minimal']); |
||||
$form->addButtonCreate(get_lang('Create')); |
||||
|
||||
if ($form->validate()) { |
||||
$values = $form->exportValues(); |
||||
|
||||
$category = new PortfolioCategory(); |
||||
$category |
||||
->setTitle($values['title']) |
||||
->setDescription($values['description']) |
||||
->setUser($user); |
||||
|
||||
$em->persist($category); |
||||
$em->flush(); |
||||
|
||||
Display::addFlash( |
||||
Display::return_message(get_lang('CategoryAdded'), 'success') |
||||
); |
||||
|
||||
header("Location: $baseUrl"); |
||||
exit; |
||||
} |
||||
|
||||
$toolName = get_lang('AddCategory'); |
||||
$interbreadcrumb[] = [ |
||||
'name' => get_lang('Portfolio'), |
||||
'url' => $baseUrl, |
||||
]; |
||||
|
||||
$actions[] = Display::url( |
||||
Display::return_icon('back.png', get_lang('Back'), [], ICON_SIZE_MEDIUM), |
||||
$baseUrl |
||||
); |
||||
$content = $form->returnForm(); |
@ -0,0 +1,59 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
use Chamilo\CoreBundle\Entity\Portfolio; |
||||
|
||||
$categories = $em |
||||
->getRepository('ChamiloCoreBundle:PortfolioCategory') |
||||
->findBy([ |
||||
'user' => $user, |
||||
]); |
||||
|
||||
$form = new FormValidator('add_portfolio', 'post', $baseUrl.'action=add_item'); |
||||
$form->addText('title', get_lang('Title')); |
||||
$form->addHtmlEditor('content', get_lang('Content'), true, false, ['ToolbarSet' => 'NotebookStudent']); |
||||
$form->addSelectFromCollection('category', get_lang('Category'), $categories, [], true); |
||||
$form->addButtonCreate(get_lang('Create')); |
||||
|
||||
if ($form->validate()) { |
||||
$values = $form->exportValues(); |
||||
$currentTime = new DateTime( |
||||
api_get_utc_datetime(), |
||||
new DateTimeZone('UTC') |
||||
); |
||||
|
||||
$portfolio = new Portfolio(); |
||||
$portfolio |
||||
->setTitle($values['title']) |
||||
->setContent($values['content']) |
||||
->setUser($user) |
||||
->setCourse($course) |
||||
->setSession($session) |
||||
->setCategory( |
||||
$em->find('ChamiloCoreBundle:PortfolioCategory', $values['category']) |
||||
) |
||||
->setCreationDate($currentTime) |
||||
->setUpdateDate($currentTime); |
||||
|
||||
$em->persist($portfolio); |
||||
$em->flush(); |
||||
|
||||
Display::addFlash( |
||||
Display::return_message(get_lang('PortfolioItemAdded'), 'success') |
||||
); |
||||
|
||||
header("Location: $baseUrl"); |
||||
exit; |
||||
} |
||||
|
||||
$toolName = get_lang('AddPortfolioItem'); |
||||
$interbreadcrumb[] = [ |
||||
'name' => get_lang('Portfolio'), |
||||
'url' => $baseUrl, |
||||
]; |
||||
|
||||
$actions[] = Display::url( |
||||
Display::return_icon('back.png', get_lang('Back'), [], ICON_SIZE_MEDIUM), |
||||
$baseUrl |
||||
); |
||||
$content = $form->returnForm(); |
@ -0,0 +1,40 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
$form = new FormValidator('edit_category', 'post', $baseUrl."action=edit_category&id={$category->getId()}"); |
||||
$form->addText('title', get_lang('Title')); |
||||
$form->addHtmlEditor('description', get_lang('Description'), false, false, ['ToolbarSet' => 'Minimal']); |
||||
$form->addButtonUpdate(get_lang('Update')); |
||||
$form->setDefaults([ |
||||
'title' => $category->getTitle(), |
||||
'description' => $category->getDescription(), |
||||
]); |
||||
|
||||
if ($form->validate()) { |
||||
$values = $form->exportValues(); |
||||
|
||||
$category |
||||
->setTitle($values['title']) |
||||
->setDescription($values['description']); |
||||
|
||||
$em->persist($category); |
||||
$em->flush(); |
||||
|
||||
Display::addFlash( |
||||
Display::return_message(get_lang('Updated'), 'success') |
||||
); |
||||
|
||||
header("Location: $baseUrl"); |
||||
exit; |
||||
} |
||||
|
||||
$toolName = get_lang('EditCategory'); |
||||
$interbreadcrumb[] = [ |
||||
'name' => get_lang('Portfolio'), |
||||
'url' => $baseUrl, |
||||
]; |
||||
$actions[] = Display::url( |
||||
Display::return_icon('back.png', get_lang('Back'), [], ICON_SIZE_MEDIUM), |
||||
$baseUrl |
||||
); |
||||
$content = $form->returnForm(); |
@ -0,0 +1,53 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
$categories = $em |
||||
->getRepository('ChamiloCoreBundle:PortfolioCategory') |
||||
->findBy([ |
||||
'user' => $user, |
||||
]); |
||||
|
||||
$form = new FormValidator('edit_portfolio', 'post', $baseUrl."action=edit_item&id={$item->getId()}"); |
||||
$form->addText('title', get_lang('Title')); |
||||
$form->addHtmlEditor('content', get_lang('Content'), true, false, ['ToolbarSet' => 'NotebookStudent']); |
||||
$form->addSelectFromCollection('category', get_lang('Category'), $categories, [], true, '__toString'); |
||||
$form->addButtonUpdate(get_lang('Update')); |
||||
$form->setDefaults([ |
||||
'title' => $item->getTitle(), |
||||
'content' => $item->getContent(), |
||||
'category' => $item->getCategory() ? $item->getCategory()->getId() : '', |
||||
]); |
||||
|
||||
if ($form->validate()) { |
||||
$values = $form->exportValues(); |
||||
$currentTime = new DateTime(api_get_utc_datetime(), new DateTimeZone('UTC')); |
||||
|
||||
$item |
||||
->setTitle($values['title']) |
||||
->setContent($values['content']) |
||||
->setUpdateDate($currentTime) |
||||
->setCategory( |
||||
$em->find('ChamiloCoreBundle:PortfolioCategory', $values['category']) |
||||
); |
||||
|
||||
$em->persist($item); |
||||
$em->flush(); |
||||
|
||||
Display::addFlash( |
||||
Display::return_message(get_lang('Updated'), 'success') |
||||
); |
||||
|
||||
header("Location: $baseUrl"); |
||||
exit; |
||||
} |
||||
|
||||
$toolName = get_lang('EditPortfolioItem'); |
||||
$interbreadcrumb[] = [ |
||||
'name' => get_lang('Portfolio'), |
||||
'url' => $baseUrl, |
||||
]; |
||||
$actions[] = Display::url( |
||||
Display::return_icon('back.png', get_lang('Back'), [], ICON_SIZE_MEDIUM), |
||||
$baseUrl |
||||
); |
||||
$content = $form->returnForm(); |
@ -0,0 +1,59 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
if ($currentUserId == $user->getId()) { |
||||
if ($allowEdit) { |
||||
$actions[] = Display::url( |
||||
Display::return_icon('add.png', get_lang('Add'), [], ICON_SIZE_MEDIUM), |
||||
$baseUrl.'action=add_item' |
||||
); |
||||
$actions[] = Display::url( |
||||
Display::return_icon('folder.png', get_lang('AddCategory'), [], ICON_SIZE_MEDIUM), |
||||
$baseUrl.'action=add_category' |
||||
); |
||||
$actions[] = Display::url( |
||||
Display::return_icon('shared_setting.png', get_lang('Preview'), [], ICON_SIZE_MEDIUM), |
||||
$baseUrl.'preview=&user='.$user->getId() |
||||
); |
||||
} else { |
||||
$actions[] = Display::url( |
||||
Display::return_icon('shared_setting_na.png', get_lang('Preview'), [], ICON_SIZE_MEDIUM), |
||||
$baseUrl |
||||
); |
||||
} |
||||
} |
||||
|
||||
$form = new FormValidator('a'); |
||||
$form->addUserAvatar('user', get_lang('User'), 'medium'); |
||||
$form->setDefaults(['user' => $user]); |
||||
|
||||
$criteria = ['user' => $user]; |
||||
|
||||
if (!$allowEdit) { |
||||
$criteria['isVisible'] = true; |
||||
} |
||||
|
||||
$categories = $em |
||||
->getRepository('ChamiloCoreBundle:PortfolioCategory') |
||||
->findBy($criteria); |
||||
|
||||
if ($course) { |
||||
$criteria['course'] = $course; |
||||
$criteria['session'] = $session; |
||||
} |
||||
|
||||
$criteria['category'] = null; |
||||
|
||||
$items = $em |
||||
->getRepository('ChamiloCoreBundle:Portfolio') |
||||
->findBy($criteria); |
||||
|
||||
$template = new Template(null, false, false, false, false, false, false); |
||||
$template->assign('user', $user); |
||||
$template->assign('course', $course); |
||||
$template->assign('session', $session); |
||||
$template->assign('allow_edit', $allowEdit); |
||||
$template->assign('portfolio', $categories); |
||||
$template->assign('uncategorized_items', $items); |
||||
$layout = $template->get_template('portfolio/list.html.twig'); |
||||
$content = $template->fetch($layout); |
@ -0,0 +1,67 @@ |
||||
{% macro display(items, category_id, allow_edit, _c) %} |
||||
{% set edit_img = 'edit.png'|img(22, 'Edit'|get_lang) %} |
||||
{% set visible_img = 'visible.png'|img(22, 'Invisible'|get_lang) %} |
||||
{% set invisible_img = 'invisible.png'|img(22, 'Visible'|get_lang) %} |
||||
{% set delete_img = 'delete.png'|img(22, 'Delete'|get_lang) %} |
||||
{% set baseurl = _p.web_self ~ '?' ~ (_p.web_cid_query ? _p.web_cid_query ~ '&' : '') %} |
||||
|
||||
<div class="panel-group" id="accordion-list-{{ category_id }}" role="tablist" aria-multiselectable="true"> |
||||
{% for item in items %} |
||||
<div class="panel panel-default"> |
||||
<div class="panel-heading" role="tab" id="heading-item-{{ item.id }}"> |
||||
{% if allow_edit %} |
||||
<div class="pull-right"> |
||||
<a href="{{ baseurl ~ {'action':'edit_item', 'id':item.id}|url_encode }}"> |
||||
{{ edit_img }} |
||||
</a> |
||||
{% if item.isVisible %} |
||||
<a href="{{ baseurl ~ {'action':'hide_item', 'id':item.id}|url_encode }}"> |
||||
{{ visible_img }} |
||||
</a> |
||||
{% else %} |
||||
<a href="{{ baseurl ~ {'action':'show_item', 'id':item.id}|url_encode }}"> |
||||
{{ invisible_img }} |
||||
</a> |
||||
{% endif %} |
||||
<a href="{{ baseurl ~ {'action':'delete_item', 'id':item.id}|url_encode }}" |
||||
class="btn-delete"> |
||||
{{ delete_img }} |
||||
</a> |
||||
</div> |
||||
{% endif %} |
||||
<h5 class="panel-title"> |
||||
<a href="#collapse-{{ item.id }}" class="collapsed" role="button" |
||||
data-parent="#accordion-list-{{ category_id }}" |
||||
data-toggle="collapse" aria-expanded="false" aria-controls="collapse-{{ item.id }}"> |
||||
{{ item.title }} |
||||
</a> |
||||
</h5> |
||||
{% if _c is empty %} |
||||
{% if item.session %} |
||||
<div class="clearfix"> |
||||
{{ 'Course'|get_lang ~ ': ' ~ item.session.name ~ ' (' ~ item.course.title ~ ')' }} |
||||
</div> |
||||
{% elseif not item.session and item.course %} |
||||
<div class="clearfix"> |
||||
{{ 'Course'|get_lang ~ ': ' ~ item.course.title }}<br> |
||||
</div> |
||||
{% endif %} |
||||
{% endif %} |
||||
</div> |
||||
<div id="collapse-{{ item.id }}" class="panel-collapse collapse" role="tabpanel" |
||||
aria-labelledby="heading-item-{{ item.id }}"> |
||||
<div class="panel-body"> |
||||
{{ item.content }} |
||||
</div> |
||||
</div> |
||||
<div class="panel-footer"> |
||||
{{ 'CreationDate'|get_lang ~ ': ' ~ item.creationDate|api_convert_and_format_date(6) }} |
||||
{% if item.creationDate != item.updateDate %} |
||||
· |
||||
{{ 'UpdateDate'|get_lang ~ ': ' ~ item.updateDate|api_convert_and_format_date(6) }} |
||||
{% endif %} |
||||
</div> |
||||
</div> |
||||
{% endfor %} |
||||
</div> |
||||
{% endmacro %} |
@ -0,0 +1,65 @@ |
||||
{% set edit_img = 'edit.png'|img(22, 'Edit'|get_lang) %} |
||||
{% set visible_img = 'visible.png'|img(22, 'Invisible'|get_lang) %} |
||||
{% set invisible_img = 'invisible.png'|img(22, 'Visible'|get_lang) %} |
||||
{% set delete_img = 'delete.png'|img(22, 'Delete'|get_lang) %} |
||||
{% set baseurl = _p.web_self ~ '?' ~ (_p.web_cid_query ? _p.web_cid_query ~ '&' : '') %} |
||||
|
||||
{% import template ~ '/portfolio/items.html.twig' as items %} |
||||
|
||||
{% if not allow_edit %} |
||||
<h3>{{ user.completeName }} <small>{{ user.username }}</small></h3> |
||||
{% endif %} |
||||
|
||||
{{ items.display(uncategorized_items, 0, allow_edit, _c) }} |
||||
|
||||
{% for category in portfolio %} |
||||
<div class="panel panel-info"> |
||||
<div class="panel-body"> |
||||
<h4 class="page-header"> |
||||
<a href="#collapse-category-{{ category.id }}" role="button" data-toggle="collapse" |
||||
aria-expanded="false" aria-controls="collapse-category-{{ category.id }}"> |
||||
{{ category.title }} |
||||
</a> |
||||
|
||||
{% if allow_edit %} |
||||
<div class="pull-right"> |
||||
<a href="{{ baseurl ~ {'action':'edit_category', 'id':category.id}|url_encode }}"> |
||||
{{ edit_img }} |
||||
</a> |
||||
{% if category.isVisible %} |
||||
<a href="{{ baseurl ~ {'action':'hide_category', 'id':category.id}|url_encode }}"> |
||||
{{ visible_img }} |
||||
</a> |
||||
{% else %} |
||||
<a href="{{ baseurl ~ {'action':'show_category', 'id':category.id}|url_encode }}"> |
||||
{{ invisible_img }} |
||||
</a> |
||||
{% endif %} |
||||
<a href="{{ baseurl ~ {'action':'delete_category', 'id':category.id}|url_encode }}" |
||||
class="btn-delete"> |
||||
{{ delete_img }} |
||||
</a> |
||||
</div> |
||||
{% endif %} |
||||
</h4> |
||||
|
||||
<div> |
||||
{{ category.description }} |
||||
</div> |
||||
|
||||
<div class="collapse" id="collapse-category-{{ category.id }}"> |
||||
{{ items.display(category.items(course, session, not allow_edit), category.id, allow_edit, _c) }} |
||||
</div> |
||||
</div> |
||||
</div> |
||||
{% endfor %} |
||||
|
||||
<script> |
||||
$(document).on('ready', function () { |
||||
$('.btn-delete').on('click', function (e) { |
||||
if (!confirm('{{ 'NoteConfirmDelete'|get_lang }} ')) { |
||||
e.preventDefault(); |
||||
} |
||||
}); |
||||
}); |
||||
</script> |
@ -0,0 +1,336 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\Entity; |
||||
|
||||
use Chamilo\UserBundle\Entity\User; |
||||
use Doctrine\ORM\Mapping as ORM; |
||||
|
||||
/** |
||||
* Class Portfolio. |
||||
* |
||||
* @package Chamilo\CoreBundle\Entity |
||||
* |
||||
* @ORM\Table( |
||||
* name="portfolio", |
||||
* indexes={ |
||||
* @ORM\Index(name="user", columns={"user_id"}), |
||||
* @ORM\Index(name="course", columns={"c_id"}), |
||||
* @ORM\Index(name="session", columns={"session_id"}), |
||||
* @ORM\Index(name="category", columns={"category_id"}) |
||||
* } |
||||
* ) |
||||
* Add @ to the next line if api_get_configuration_value('allow_portfolio_tool') is true |
||||
* ORM\Entity() |
||||
*/ |
||||
class Portfolio |
||||
{ |
||||
/** |
||||
* @var int |
||||
* |
||||
* @ORM\Column(name="id", type="integer") |
||||
* @ORM\Id |
||||
* @ORM\GeneratedValue |
||||
*/ |
||||
private $id; |
||||
|
||||
/** |
||||
* @var string |
||||
* |
||||
* @ORM\Column(name="title", type="string", length=255) |
||||
*/ |
||||
private $title; |
||||
|
||||
/** |
||||
* @var string |
||||
* @ORM\Column(name="content", type="text") |
||||
*/ |
||||
private $content; |
||||
|
||||
/** |
||||
* @var User |
||||
* |
||||
* @ORM\ManyToOne(targetEntity="Chamilo\UserBundle\Entity\User") |
||||
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=false) |
||||
*/ |
||||
private $user; |
||||
|
||||
/** |
||||
* @var Course |
||||
* |
||||
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Course") |
||||
* @ORM\JoinColumn(name="c_id", referencedColumnName="id") |
||||
*/ |
||||
private $course = null; |
||||
|
||||
/** |
||||
* @var Session |
||||
* |
||||
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\Session") |
||||
* @ORM\JoinColumn(name="session_id", referencedColumnName="id") |
||||
*/ |
||||
private $session = null; |
||||
|
||||
/** |
||||
* @var \DateTime |
||||
* |
||||
* @ORM\Column(name="creation_date", type="datetime") |
||||
*/ |
||||
private $creationDate; |
||||
|
||||
/** |
||||
* @var \DateTime |
||||
* |
||||
* @ORM\Column(name="update_date", type="datetime") |
||||
*/ |
||||
private $updateDate; |
||||
|
||||
/** |
||||
* @var bool |
||||
* |
||||
* @ORM\Column(name="is_visible", type="boolean", options={"default": true}) |
||||
*/ |
||||
private $isVisible = true; |
||||
|
||||
/** |
||||
* @var \Chamilo\CoreBundle\Entity\PortfolioCategory |
||||
* |
||||
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\PortfolioCategory", inversedBy="items") |
||||
* @ORM\JoinColumn(name="category_id", referencedColumnName="id") |
||||
*/ |
||||
private $category; |
||||
|
||||
/** |
||||
* Portfolio constructor. |
||||
*/ |
||||
public function __construct() |
||||
{ |
||||
$this->category = new PortfolioCategory(); |
||||
} |
||||
|
||||
/** |
||||
* Set user. |
||||
* |
||||
* @param User $user |
||||
* |
||||
* @return Portfolio |
||||
*/ |
||||
public function setUser(User $user) |
||||
{ |
||||
$this->user = $user; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* Get user. |
||||
* |
||||
* @return User |
||||
*/ |
||||
public function getUser() |
||||
{ |
||||
return $this->user; |
||||
} |
||||
|
||||
/** |
||||
* Set course. |
||||
* |
||||
* @param Course|null $course |
||||
* |
||||
* @return Portfolio |
||||
*/ |
||||
public function setCourse(Course $course = null) |
||||
{ |
||||
$this->course = $course; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* Get course. |
||||
* |
||||
* @return Course |
||||
*/ |
||||
public function getCourse() |
||||
{ |
||||
return $this->course; |
||||
} |
||||
|
||||
/** |
||||
* Get session. |
||||
* |
||||
* @return Session |
||||
*/ |
||||
public function getSession() |
||||
{ |
||||
return $this->session; |
||||
} |
||||
|
||||
/** |
||||
* Set session. |
||||
* |
||||
* @param Session|null $session |
||||
* |
||||
* @return Portfolio |
||||
*/ |
||||
public function setSession(Session $session = null) |
||||
{ |
||||
$this->session = $session; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* Set title. |
||||
* |
||||
* @param string $title |
||||
* |
||||
* @return Portfolio |
||||
*/ |
||||
public function setTitle($title) |
||||
{ |
||||
$this->title = $title; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* Get title. |
||||
* |
||||
* @return string |
||||
*/ |
||||
public function getTitle() |
||||
{ |
||||
return $this->title; |
||||
} |
||||
|
||||
/** |
||||
* Set content. |
||||
* |
||||
* @param string $content |
||||
* |
||||
* @return Portfolio |
||||
*/ |
||||
public function setContent($content) |
||||
{ |
||||
$this->content = $content; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* Get content. |
||||
* |
||||
* @return string |
||||
*/ |
||||
public function getContent() |
||||
{ |
||||
return $this->content; |
||||
} |
||||
|
||||
/** |
||||
* Set creationDate. |
||||
* |
||||
* @param \DateTime $creationDate |
||||
* |
||||
* @return Portfolio |
||||
*/ |
||||
public function setCreationDate(\DateTime $creationDate) |
||||
{ |
||||
$this->creationDate = $creationDate; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* Get creationDate. |
||||
* |
||||
* @return \DateTime |
||||
*/ |
||||
public function getCreationDate() |
||||
{ |
||||
return $this->creationDate; |
||||
} |
||||
|
||||
/** |
||||
* Set updateDate. |
||||
* |
||||
* @param \DateTime $updateDate |
||||
* |
||||
* @return Portfolio |
||||
*/ |
||||
public function setUpdateDate(\DateTime $updateDate) |
||||
{ |
||||
$this->updateDate = $updateDate; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* Get updateDate. |
||||
* |
||||
* @return \DateTime |
||||
*/ |
||||
public function getUpdateDate() |
||||
{ |
||||
return $this->updateDate; |
||||
} |
||||
|
||||
/** |
||||
* Get id. |
||||
* |
||||
* @return int |
||||
*/ |
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
|
||||
/** |
||||
* Set isVisible. |
||||
* |
||||
* @param bool $isVisible |
||||
* |
||||
* @return Portfolio |
||||
*/ |
||||
public function setIsVisible($isVisible) |
||||
{ |
||||
$this->isVisible = $isVisible; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* Get isVisible. |
||||
* |
||||
* @return bool |
||||
*/ |
||||
public function isVisible() |
||||
{ |
||||
return $this->isVisible; |
||||
} |
||||
|
||||
/** |
||||
* Get category. |
||||
* |
||||
* @return PortfolioCategory |
||||
*/ |
||||
public function getCategory() |
||||
{ |
||||
return $this->category; |
||||
} |
||||
|
||||
/** |
||||
* Set category. |
||||
* |
||||
* @param PortfolioCategory|null $category |
||||
* |
||||
* @return Portfolio |
||||
*/ |
||||
public function setCategory(PortfolioCategory $category = null) |
||||
{ |
||||
$this->category = $category; |
||||
|
||||
return $this; |
||||
} |
||||
} |
@ -0,0 +1,251 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\Entity; |
||||
|
||||
use Chamilo\UserBundle\Entity\User; |
||||
use Doctrine\Common\Collections\ArrayCollection; |
||||
use Doctrine\Common\Collections\Criteria; |
||||
use Doctrine\ORM\Mapping as ORM; |
||||
|
||||
/** |
||||
* Class PortfolioCategory. |
||||
* |
||||
* @package Chamilo\CoreBundle\Entity |
||||
* |
||||
* @ORM\Table( |
||||
* name="portfolio_category", |
||||
* indexes={ |
||||
* @ORM\Index(name="user", columns={"user_id"}) |
||||
* } |
||||
* ) |
||||
* Add @ to the next line if api_get_configuration_value('allow_portfolio_tool') is true |
||||
* ORM\Entity() |
||||
*/ |
||||
class PortfolioCategory |
||||
{ |
||||
/** |
||||
* @var int |
||||
* |
||||
* @ORM\Column(name="id", type="integer") |
||||
* @ORM\Id |
||||
* @ORM\GeneratedValue |
||||
*/ |
||||
private $id; |
||||
|
||||
/** |
||||
* @var string |
||||
* |
||||
* @ORM\Column(name="title", type="string", length=255) |
||||
*/ |
||||
private $title; |
||||
|
||||
/** |
||||
* @var null |
||||
* |
||||
* @ORM\Column(name="description", type="text", nullable=true) |
||||
*/ |
||||
private $description = null; |
||||
|
||||
/** |
||||
* @var User |
||||
* |
||||
* @ORM\ManyToOne(targetEntity="Chamilo\UserBundle\Entity\User") |
||||
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=false) |
||||
*/ |
||||
private $user; |
||||
|
||||
/** |
||||
* @var bool |
||||
* |
||||
* @ORM\Column(name="is_visible", type="boolean", options={"default": true}) |
||||
*/ |
||||
private $isVisible = true; |
||||
|
||||
/** |
||||
* @var \Doctrine\Common\Collections\ArrayCollection |
||||
* |
||||
* @ORM\OneToMany(targetEntity="Chamilo\CoreBundle\Entity\Portfolio", mappedBy="category") |
||||
*/ |
||||
private $items; |
||||
|
||||
/** |
||||
* PortfolioCategory constructor. |
||||
*/ |
||||
public function __construct() |
||||
{ |
||||
$this->items = new ArrayCollection(); |
||||
} |
||||
|
||||
/** |
||||
* @return string |
||||
*/ |
||||
public function __toString() |
||||
{ |
||||
return $this->title; |
||||
} |
||||
|
||||
/** |
||||
* Get id. |
||||
* |
||||
* @return int |
||||
*/ |
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
|
||||
/** |
||||
* @param int $id |
||||
* |
||||
* @return PortfolioCategory |
||||
*/ |
||||
public function setId($id) |
||||
{ |
||||
$this->id = $id; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* Get title. |
||||
* |
||||
* @return string |
||||
*/ |
||||
public function getTitle() |
||||
{ |
||||
return $this->title; |
||||
} |
||||
|
||||
/** |
||||
* Set title. |
||||
* |
||||
* @param string $title |
||||
* |
||||
* @return PortfolioCategory |
||||
*/ |
||||
public function setTitle($title) |
||||
{ |
||||
$this->title = $title; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* Get description. |
||||
* |
||||
* @return string|null |
||||
*/ |
||||
public function getDescription() |
||||
{ |
||||
return $this->description; |
||||
} |
||||
|
||||
/** |
||||
* Set description. |
||||
* |
||||
* @param string|null $description |
||||
* |
||||
* @return PortfolioCategory |
||||
*/ |
||||
public function setDescription($description) |
||||
{ |
||||
$this->description = $description; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* Get user. |
||||
* |
||||
* @return User |
||||
*/ |
||||
public function getUser() |
||||
{ |
||||
return $this->user; |
||||
} |
||||
|
||||
/** |
||||
* Set user. |
||||
* |
||||
* @param User $user |
||||
* |
||||
* @return PortfolioCategory |
||||
*/ |
||||
public function setUser(User $user) |
||||
{ |
||||
$this->user = $user; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* Get isVisible. |
||||
* |
||||
* @return bool |
||||
*/ |
||||
public function isVisible() |
||||
{ |
||||
return $this->isVisible; |
||||
} |
||||
|
||||
/** |
||||
* Set isVisible. |
||||
* |
||||
* @param bool $isVisible |
||||
* |
||||
* @return PortfolioCategory |
||||
*/ |
||||
public function setIsVisible($isVisible) |
||||
{ |
||||
$this->isVisible = $isVisible; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* Get items. |
||||
* |
||||
* @param Course|null $course |
||||
* @param Session|null $session |
||||
* @param bool $onlyVisibles |
||||
* |
||||
* @return ArrayCollection |
||||
*/ |
||||
public function getItems(Course $course = null, Session $session = null, $onlyVisibles = false) |
||||
{ |
||||
$criteria = Criteria::create(); |
||||
|
||||
if ($onlyVisibles) { |
||||
$criteria->andWhere( |
||||
Criteria::expr()->eq('isVisible', true) |
||||
); |
||||
} |
||||
|
||||
if ($course) { |
||||
$criteria |
||||
->andWhere( |
||||
Criteria::expr()->eq('course', $course) |
||||
) |
||||
->andWhere( |
||||
Criteria::expr()->eq('session', $session) |
||||
); |
||||
} |
||||
|
||||
return $this->items->matching($criteria); |
||||
} |
||||
|
||||
/** |
||||
* Set items. |
||||
* |
||||
* @param ArrayCollection $items |
||||
* |
||||
* @return PortfolioCategory |
||||
*/ |
||||
public function setItems(ArrayCollection $items) |
||||
{ |
||||
$this->items = $items; |
||||
|
||||
return $this; |
||||
} |
||||
} |
Loading…
Reference in new issue