Plugin: XAPI: Move code of statement attachments for portfolio items - refs BT#18201

pull/4368/head
Angel Fernando Quiroz Campos 4 years ago
parent 66a42bc6c4
commit 5eb254faac
  1. 57
      plugin/xapi/src/ToolExperience/Statement/BaseStatement.php
  2. 67
      plugin/xapi/src/ToolExperience/Statement/PortfolioAttachmentsTrait.php
  3. 2
      plugin/xapi/src/ToolExperience/Statement/PortfolioItemCommented.php
  4. 2
      plugin/xapi/src/ToolExperience/Statement/PortfolioItemShared.php
  5. 5
      plugin/xapi/src/ToolExperience/Statement/PortfolioItemViewed.php

@ -4,16 +4,10 @@
namespace Chamilo\PluginBundle\XApi\ToolExperience\Statement;
use Chamilo\CoreBundle\Entity\PortfolioAttachment;
use Chamilo\PluginBundle\XApi\ToolExperience\Activity\Course as CourseActivity;
use Chamilo\PluginBundle\XApi\ToolExperience\Activity\Site as SiteActivity;
use Chamilo\UserBundle\Entity\User;
use Xabbuh\XApi\Model\Attachment;
use Xabbuh\XApi\Model\Context;
use Xabbuh\XApi\Model\ContextActivities;
use Xabbuh\XApi\Model\IRI;
use Xabbuh\XApi\Model\IRL;
use Xabbuh\XApi\Model\LanguageMap;
use Xabbuh\XApi\Model\Statement;
use Xabbuh\XApi\Model\StatementId;
use Xabbuh\XApi\Model\Uuid;
@ -56,55 +50,4 @@ abstract class BaseStatement
new ContextActivities(null, $groupingActivities)
);
}
/**
* @param array|PortfolioAttachment[] $portfolioAttachments
*
* @return array|Attachment[]
*/
protected function generateAttachments(array $portfolioAttachments, User $user): array
{
if (empty($portfolioAttachments)) {
return [];
}
$attachments = [];
$userDirectory = \UserManager::getUserPathById($user->getId(), 'system');
$attachmentsDirectory = $userDirectory.'portfolio_attachments/';
$langIso = api_get_language_isocode();
$cidreq = api_get_cidreq();
$baseUrl = api_get_path(WEB_CODE_PATH).'portfolio/index.php?'.($cidreq ? $cidreq.'&' : '');
foreach ($portfolioAttachments as $portfolioAttachment) {
$attachmentFilename = $attachmentsDirectory.$portfolioAttachment->getPath();
$display = LanguageMap::create(
['und' => $portfolioAttachment->getFilename()]
);
$description = null;
if ($portfolioAttachment->getComment()) {
$description = LanguageMap::create(
[$langIso => $portfolioAttachment->getComment()]
);
}
$attachments[] = new Attachment(
IRI::fromString('http://id.tincanapi.com/attachment/supporting_media'),
mime_content_type($attachmentFilename),
$portfolioAttachment->getSize(),
hash_file('sha256', $attachmentFilename),
$display,
$description,
IRL::fromString(
$baseUrl.http_build_query(['action' => 'download', 'file' => $portfolioAttachment->getPath()])
)
);
}
return $attachments;
}
}

@ -0,0 +1,67 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\PluginBundle\XApi\ToolExperience\Statement;
use Chamilo\CoreBundle\Entity\PortfolioAttachment;
use Chamilo\UserBundle\Entity\User;
use UserManager;
use Xabbuh\XApi\Model\Attachment;
use Xabbuh\XApi\Model\IRI;
use Xabbuh\XApi\Model\IRL;
use Xabbuh\XApi\Model\LanguageMap;
trait PortfolioAttachmentsTrait
{
/**
* @param array<int, PortfolioAttachment> $portfolioAttachments
*
* @return array<int, Attachment>
*/
protected function generateAttachments(array $portfolioAttachments, User $user): array
{
if (empty($portfolioAttachments)) {
return [];
}
$attachments = [];
$userDirectory = UserManager::getUserPathById($user->getId(), 'system');
$attachmentsDirectory = $userDirectory.'portfolio_attachments/';
$langIso = api_get_language_isocode();
$cidreq = api_get_cidreq();
$baseUrl = api_get_path(WEB_CODE_PATH).'portfolio/index.php?'.($cidreq ? $cidreq.'&' : '');
foreach ($portfolioAttachments as $portfolioAttachment) {
$attachmentFilename = $attachmentsDirectory.$portfolioAttachment->getPath();
$display = LanguageMap::create(
['und' => $portfolioAttachment->getFilename()]
);
$description = null;
if ($portfolioAttachment->getComment()) {
$description = LanguageMap::create(
[$langIso => $portfolioAttachment->getComment()]
);
}
$attachments[] = new Attachment(
IRI::fromString('http://id.tincanapi.com/attachment/supporting_media'),
mime_content_type($attachmentFilename),
$portfolioAttachment->getSize(),
hash_file('sha256', $attachmentFilename),
$display,
$description,
IRL::fromString(
$baseUrl.http_build_query(['action' => 'download', 'file' => $portfolioAttachment->getPath()])
)
);
}
return $attachments;
}
}

@ -16,6 +16,8 @@ use Xabbuh\XApi\Model\Statement;
class PortfolioItemCommented extends BaseStatement
{
use PortfolioAttachmentsTrait;
/**
* @var \Chamilo\CoreBundle\Entity\PortfolioComment
*/

@ -19,6 +19,8 @@ use Xabbuh\XApi\Model\Statement;
*/
class PortfolioItemShared extends PortfolioItemStatement
{
use PortfolioAttachmentsTrait;
public function generate(): Statement
{
$itemAuthor = $this->item->getUser();

@ -14,8 +14,11 @@ use Xabbuh\XApi\Model\Statement;
class PortfolioItemViewed extends PortfolioItemStatement
{
use PortfolioAttachmentsTrait;
public function generate(): Statement
{
$user = api_get_user_entity(api_get_user_id());
$itemAuthor = $this->item->getUser();
$itemAttachments = Database::getManager()
@ -23,7 +26,7 @@ class PortfolioItemViewed extends PortfolioItemStatement
->findFromItem($this->item)
;
$actor = new User($itemAuthor);
$actor = new User($user);
$verb = new Viewed();
$object = new PortfolioItem($this->item);
$context = $this->generateContext();

Loading…
Cancel
Save