tao-test/app/ltiDeliveryProvider/model/execution/implementation/LtiDeliveryExecutionService.php

103 lines
4.0 KiB
PHP

<?php
/**
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; under version 2
* of the License (non-upgradable).
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* Copyright (c) 2017 (original work) Open Assessment Technologies SA;
*
*/
namespace oat\ltiDeliveryProvider\model\execution\implementation;
use oat\taoDelivery\model\execution\Delete\DeliveryExecutionDeleteRequest;
use oat\taoDelivery\model\execution\DeliveryExecution;
use oat\taoDelivery\model\execution\ServiceProxy;
/**
* Class LtiDeliveryExecutionService
* @author Aleh Hutnikau, <hutnikau@1pt.com>
* @package oat\ltiDeliveryProvider\model\execution
*/
class LtiDeliveryExecutionService extends AbstractLtiDeliveryExecutionService
{
/**
* Returns an array of DeliveryExecution
*
* @param \core_kernel_classes_Resource $delivery
* @param \core_kernel_classes_Resource $link
* @param string $userId
* @throws
* @return DeliveryExecution[]
*/
public function getLinkedDeliveryExecutions(\core_kernel_classes_Resource $delivery, \core_kernel_classes_Resource $link, $userId)
{
$class = new \core_kernel_classes_Class(OntologyLTIDeliveryExecutionLink::CLASS_LTI_DELIVERYEXECUTION_LINK);
$links = $class->searchInstances([
OntologyLTIDeliveryExecutionLink::PROPERTY_LTI_DEL_EXEC_LINK_USER => $userId,
OntologyLTIDeliveryExecutionLink::PROPERTY_LTI_DEL_EXEC_LINK_LINK => $link,
], [
'like' => false
]);
$result = [];
foreach ($links as $link) {
$execId = $link->getUniquePropertyValue(new \core_kernel_classes_Property(OntologyLTIDeliveryExecutionLink::PROPERTY_LTI_DEL_EXEC_LINK_EXEC_ID));
$deliveryExecution = ServiceProxy::singleton()->getDeliveryExecution($execId);
if ($delivery->equals($deliveryExecution->getDelivery())) {
$result[] = $deliveryExecution;
}
}
return $result;
}
/**
* @inheritdoc
*/
public function createDeliveryExecutionLink($userUri, $link, $deliveryExecutionUri)
{
$class = new \core_kernel_classes_Class(OntologyLTIDeliveryExecutionLink::CLASS_LTI_DELIVERYEXECUTION_LINK);
$link = $class->createInstanceWithProperties([
OntologyLTIDeliveryExecutionLink::PROPERTY_LTI_DEL_EXEC_LINK_USER => $userUri,
OntologyLTIDeliveryExecutionLink::PROPERTY_LTI_DEL_EXEC_LINK_LINK => $link,
OntologyLTIDeliveryExecutionLink::PROPERTY_LTI_DEL_EXEC_LINK_EXEC_ID => $deliveryExecutionUri
]);
return $link;
}
/**
* @inheritdoc
*/
public function deleteDeliveryExecutionData(DeliveryExecutionDeleteRequest $request)
{
$removed = [];
$deliveryExecutionUri = $request->getDeliveryExecution()->getIdentifier();
$userUri = $request->getDeliveryExecution()->getUserIdentifier();
$class = new \core_kernel_classes_Class(OntologyLTIDeliveryExecutionLink::CLASS_LTI_DELIVERYEXECUTION_LINK);
$resources = $class->searchInstances([
OntologyLTIDeliveryExecutionLink::PROPERTY_LTI_DEL_EXEC_LINK_USER => $userUri,
OntologyLTIDeliveryExecutionLink::PROPERTY_LTI_DEL_EXEC_LINK_EXEC_ID => $deliveryExecutionUri
]);
/** @var \core_kernel_classes_Resource $resource */
foreach ($resources as $resource) {
$removed[] = $resource->delete();
}
return !in_array(false, $removed);
}
}