Add delete sequence resource see BT#9893

1.10.x
Julio Montoya 10 years ago
parent d26d3817f9
commit bcc8d75e9d
  1. 47
      main/inc/ajax/sequence.ajax.php
  2. 8
      main/inc/lib/SequenceManager.php
  3. 11
      main/inc/lib/sessionmanager.lib.php
  4. 39
      main/session/resume_session.php
  5. 4
      src/Chamilo/CoreBundle/Entity/Manager/SequenceResourceManager.php
  6. 55
      src/Chamilo/CoreBundle/Entity/Repository/SequenceRepository.php
  7. 34
      src/Chamilo/CoreBundle/Entity/SequenceResource.php

@ -55,16 +55,13 @@ switch ($action) {
exit;
}
$graph = $resource->getGraph();
if (!empty($graph)) {
/** @var Graph $graph */
$graph = unserialize($graph);
if ($resource->hasGraph()) {
$graph = $resource->getUnserializeGraph();
if ($graph->hasVertex($vertexId)) {
$vertex = $graph->getVertex($vertexId);
$vertex->destroy();
$resource->setGraph(serialize($graph));
$resource->setGraphAndSerialize($graph);
$manager->persist($resource);
$manager->flush();
@ -82,32 +79,32 @@ switch ($action) {
exit;
}
$graph = $resource->getGraph();
if (!empty($graph)) {
/** @var Graph $graph */
$graph = unserialize($graph);
if ($resource->hasGraph()) {
$graph = $resource->getUnserializeGraph();
$graphviz = new GraphViz();
//echo $graphviz->createImageHtml($graph);
/** @var Vertex $mainVertice */
if ($graph->hasVertex($id)) {
$mainVertice = $graph->getVertex($id);
$mainVertex = $graph->getVertex($id);
if (!empty($mainVertice)) {
$list = [];
if (!empty($mainVertex)) {
$vertexList = null;
switch ($loadResourceType) {
case 'parent':
$verticeList = $mainVertice->getVerticesEdgeFrom();
$vertexList = $mainVertex->getVerticesEdgeFrom();
break;
case 'children':
$verticeList = $mainVertice->getVerticesEdgeTo();
$vertexList = $mainVertex->getVerticesEdgeTo();
break;
}
foreach ($verticeList as $vertice) {
$list[] = $vertice->getId();
$list = [];
if (!empty($vertexList)) {
foreach ($vertexList as $vertex) {
$list[] = $vertex->getId();
}
}
if (!empty($list)) {
@ -141,16 +138,14 @@ switch ($action) {
/** @var SequenceResource $resource */
$resource = $repository->findOneByResourceId($parentId);
if ($resource) {
$parentGraph = $resource->getGraph();
if (!empty($parentGraph)) {
if ($resource->hasGraph()) {
/** @var Graph $parentGraph */
$parentGraph = unserialize($parentGraph);
$parentGraph = $resource->getUnserializeGraph();
try {
$vertex = $parentGraph->getVertex($parentId);
$parentMain = $parentGraph->createVertex($id);
$vertex->createEdgeTo($parentMain);
$resource->setGraph(serialize($parentGraph));
$resource->setGraphAndSerialize($parentGraph);
$manager->persist($resource);
$manager->flush();
@ -174,11 +169,11 @@ switch ($action) {
if (empty($sequence)) {
$sequence = new SequenceResource();
$sequence
->setGraph(serialize($graph))
->setGraphAndSerialize($graph)
->setType(SequenceResource::SESSION_TYPE)
->setResourceId($id);
} else {
$sequence->setGraph(serialize($graph));
$sequence->setGraphAndSerialize($graph);
}
$manager->persist($sequence);
$manager->flush();

@ -493,7 +493,7 @@ class SequenceManager
}
$user_id = intval($user_id);
$session_id = intval($session_id);
$row_entity_id = intval($row_entity_id));
$row_entity_id = intval($row_entity_id);
$seq_table = Database::get_main_table(TABLE_MAIN_SEQUENCE);
$val_table = Database::get_main_table(TABLE_SEQUENCE_VALUE);
$sql = "SELECT DISTINCT seq.sequence_row_entity_id, val.user_id
@ -589,7 +589,7 @@ class SequenceManager
}
$row_id = intval($row_id);
$entity_id = intval($entity_id);
$c_id = intval($c_id));
$c_id = intval($c_id);
$row_entity_id_prev = self::get_row_entity_id_by_row_id($entity_id, $row_id, $c_id);
@ -948,7 +948,7 @@ class SequenceManager
if (self::_debug) {
error_log('Entering '.__FUNCTION__.' in '.__FILE__);
}
$user_id = intval($user_id));
$user_id = intval($user_id);
$session_id = intval($session_id);
$total_items = intval($total_items);
$available = intval($available);
@ -1251,7 +1251,7 @@ class SequenceManager
}
$row_entity_id = intval($row_entity_id);
$user_id = intval($user_id);
$session_id = intval($session_id));
$session_id = intval($session_id);
$val_table = Database::get_main_table(TABLE_SEQUENCE_VALUE);

@ -1480,7 +1480,9 @@ class SessionManager
$userId = api_get_user_id();
if (is_array($id_checked)) {
$id_checked = Database::escape_string(implode(',', $id_checked));
foreach ($id_checked as $sessionId) {
self::delete($sessionId);
}
} else {
$id_checked = intval($id_checked);
}
@ -1503,6 +1505,13 @@ class SessionManager
$extraFieldValue = new ExtraFieldValue('session');
$extraFieldValue->deleteValuesByItem($id_checked);
/** @var \Chamilo\CoreBundle\Entity\Repository\SequenceRepository $repo */
$repo = Database::getManager()->getRepository('ChamiloCoreBundle:SequenceResource');
$repo->deleteResource(
$id_checked,
\Chamilo\CoreBundle\Entity\SequenceResource::SESSION_TYPE
);
// Add event to system log
Event::addEvent(
LOG_SESSION_DELETE,

@ -6,6 +6,9 @@
* @package chamilo.admin
*/
use Chamilo\CoreBundle\Entity\Repository\SequenceRepository;
use Chamilo\CoreBundle\Entity\SequenceResource;
$cidReset = true;
require_once '../inc/global.inc.php';
@ -491,4 +494,40 @@ if (!empty($userList)) {
$table->display();
}
// @todo put this in a function
/** @var SequenceRepository $repo */
$repo = Database::getManager()->getRepository('ChamiloCoreBundle:SequenceResource');
$sequence = $repo->findRequirementForResource($sessionId, SequenceResource::SESSION_TYPE);
if ($sequence->hasGraph()) {
$graph = $sequence->getUnserializeGraph();
$vertex = $graph->getVertex($sessionId);
$from = $vertex->getVerticesEdgeFrom();
$sessionNameList = [];
foreach ($from as $subVertex) {
$vertexId = $subVertex->getId();
$sessionInfo = api_get_session_info($vertexId);
$sessionNameList[] = $sessionInfo['name'];
}
if (!empty($sessionNameList)) {
echo Display::page_subheader(get_lang('Requirements'));
echo implode(',', $sessionNameList);
}
$to = $vertex->getVerticesEdgeTo();
$sessionNameList = [];
foreach ($to as $subVertex) {
$vertexId = $subVertex->getId();
$sessionInfo = api_get_session_info($vertexId);
$sessionNameList[] = $sessionInfo['name'];
}
if (!empty($sessionNameList)) {
echo Display::page_subheader(get_lang('Dependencies'));
echo implode(',', $sessionNameList);
}
}
Display :: display_footer();

@ -6,12 +6,12 @@ namespace Chamilo\CoreBundle\Entity\Manager;
use Sonata\CoreBundle\Model\BaseEntityManager;
/**
* Class SequenceManager
* Class SequenceResourceManager
* CRUD for the course
*
* @package Chamilo\CoreBundle\Entity\Repository
*/
class SequenceManager extends BaseEntityManager
class SequenceResourceManager extends BaseEntityManager
{
}

@ -3,16 +3,69 @@
namespace Chamilo\CoreBundle\Entity\Repository;
use Chamilo\CoreBundle\Entity\SequenceResource;
use Doctrine\ORM\EntityRepository;
use Fhaculty\Graph\Vertex;
/**
* Class SequenceRepository
* The functions inside this class must return an instance of QueryBuilder
* The functions inside this class should return an instance of QueryBuilder
*
* @package Chamilo\CoreBundle\Entity\Repository
*/
class SequenceRepository extends EntityRepository
{
/**
* Find the SequenceResource based in the resourceId and type
* @param int $resourceId
* @param int $type
*
* @return SequenceResource
*/
public function findRequirementForResource($resourceId, $type)
{
/* $criteria = Criteria::create()
->where(Criteria::expr()->eq("resourceId", $resourceId))
->andWhere(Criteria::expr()->eq("type", $type));
*/
return $this->findOneBy(['resourceId' => $resourceId, 'type' => $type]);
}
/**
* Deletes a node and check in all the dependencies if the node exists in
* order to deleted.
*
* @param int $resourceId
* @param int $type
*/
public function deleteResource($resourceId, $type)
{
$sequence = $this->findRequirementForResource($resourceId, $type);
if ($sequence && $sequence->hasGraph()) {
$em = $this->getEntityManager();
$graph = $sequence->getUnserializeGraph();
$mainVertex = $graph->getVertex($resourceId);
$vertices = $graph->getVertices();
/** @var Vertex $vertex */
foreach ($vertices as $vertex) {
$subResourceId = $vertex->getId();
$subSequence = $this->findRequirementForResource($subResourceId, $type);
if ($sequence && $subSequence->hasGraph()) {
$graph = $subSequence->getUnserializeGraph();
$subMainVertex = $graph->getVertex($resourceId);
$subMainVertex->destroy();
$subSequence->setGraphAndSerialize($graph);
$em->persist($subSequence);
}
}
$mainVertex->destroy();
$em->remove($sequence);
$em->flush();
}
}
}

@ -4,12 +4,13 @@
namespace Chamilo\CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Fhaculty\Graph\Graph;
/**
* Class SequenceResource
*
* @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Entity\Repository\SequenceRepository")
* @ORM\Table(name="sequence_resource")
* @ORM\Entity
*/
class SequenceResource
{
@ -84,6 +85,22 @@ class SequenceResource
return $this->graph;
}
/**
* @return Graph
*/
public function getUnserializeGraph()
{
return unserialize($this->graph);
}
/**
* @return bool
*/
public function hasGraph()
{
return !empty($this->graph) ? true : false;
}
/**
* @param string $graph
*
@ -96,6 +113,18 @@ class SequenceResource
return $this;
}
/**
* @param string $graph
*
* @return SequenceResource
*/
public function setGraphAndSerialize($graph)
{
$this->setGraph(serialize($graph));
return $this;
}
/**
* @return int
*/
@ -106,6 +135,8 @@ class SequenceResource
/**
* @param int $resourceId
*
* @return $this
*/
public function setResourceId($resourceId)
{
@ -113,5 +144,4 @@ class SequenceResource
return $this;
}
}

Loading…
Cancel
Save