Internal: Move display_order from ResourceNode to ResourceLink (#5143)
* Internal: Move display_order from ResourceNode to ResourceLink #5137 * Internal: Use ResourceLink $displayOrder instead of ResourceNode $displayOrder #5137 * Internal: Remove ResourceNode $displayOrder #5137 * Vendor: Bump stof/doctrine-extensions-bundle version to 1.10 #5137 * Forum: Fix query to get forums in category ordered by resourceLink.displayOrder * LP: Refactoring delete method to mark the resource link as deleted instead of remove the lp as resource * LP: Fix query to set a custom order in lp list * LP: Fix buttons to sort learn paths * Rename ResourceNode::getResourceLinkByTypeGroup to ResourceNode::getResourceLinkByContext and change order or its params * LP: Change display resource link display order when moving category position * LP: Fix layout for old list view * Forum: Fix sorting for forums and categories * Course Progress: Fix sorting for sections * Internal: Enable SoftDeleteable for ResourceLink entities * Remove ResourceLink::VISIBILITY_DELETED in favor of soft delete * Internal: Refactoring migration about display_order in course tools * LP: Refactoring the category delete method to make a soft delete of the resource link * LP: Refactoring the thematic delete method to make a soft delete of the resource link * LP: Refactoring the forum delete methods to make a soft delete of the resource link * Add shortcut method to remove resource link from its resource * CI: Fix ResourceNodeRepositoryTest by adding a link to the resource node * Internal: Migration: Drop display_order column from c_lp table * Internal: Migration: Drop position column from c_lp_category table * Internal: Migration: Drop cat_order column from c_forum_category table * Internal: Migration: Drop forum_order column from c_forum_forum table * Internal: Migration: Drop display_order column from c_thematic table * Minor: Format code * Announcement: Fix order of the course announcements * Internal: Refactoring migration * Internal: Migration: Drop display_order column from c_glossary table * Refactoring method to move display order of resource linkspull/5244/head
parent
eb59045868
commit
054905286b
@ -0,0 +1,42 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
/* For licensing terms, see /license.txt */ |
||||||
|
|
||||||
|
declare(strict_types=1); |
||||||
|
|
||||||
|
namespace Chamilo\CoreBundle\Migrations\Schema\V200; |
||||||
|
|
||||||
|
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo; |
||||||
|
use Doctrine\DBAL\Schema\Schema; |
||||||
|
|
||||||
|
class Version20240313111800 extends AbstractMigrationChamilo |
||||||
|
{ |
||||||
|
private array $changes = [ |
||||||
|
'c_lp' => 'display_order', |
||||||
|
'c_lp_category' => 'position', |
||||||
|
'c_forum_category' => 'cat_order', |
||||||
|
'c_forum_forum' => 'forum_order', |
||||||
|
'c_thematic' => 'display_order', |
||||||
|
'c_announcement' => 'display_order', |
||||||
|
'c_glossary' => 'display_order', |
||||||
|
]; |
||||||
|
|
||||||
|
public function getDescription(): string |
||||||
|
{ |
||||||
|
$tables = array_keys($this->changes); |
||||||
|
$columns = array_values($this->changes); |
||||||
|
|
||||||
|
return sprintf( |
||||||
|
'Removing %s columns from % tables', |
||||||
|
implode(', ', $columns), |
||||||
|
implode(', ', $tables) |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
public function up(Schema $schema): void |
||||||
|
{ |
||||||
|
foreach ($this->changes as $table => $column) { |
||||||
|
$this->addSql("ALTER TABLE $table DROP $column"); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,53 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
/* For licensing terms, see /license.txt */ |
||||||
|
|
||||||
|
declare(strict_types=1); |
||||||
|
|
||||||
|
namespace Chamilo\CoreBundle\Repository; |
||||||
|
|
||||||
|
use Chamilo\CoreBundle\Entity\AbstractResource; |
||||||
|
use Chamilo\CoreBundle\Entity\Course; |
||||||
|
use Chamilo\CoreBundle\Entity\ResourceLink; |
||||||
|
use Chamilo\CoreBundle\Entity\Session; |
||||||
|
use Chamilo\CoreBundle\Entity\User; |
||||||
|
use Chamilo\CoreBundle\Entity\Usergroup; |
||||||
|
use Chamilo\CourseBundle\Entity\CGroup; |
||||||
|
use Doctrine\ORM\EntityManagerInterface; |
||||||
|
use Gedmo\Sortable\Entity\Repository\SortableRepository; |
||||||
|
|
||||||
|
class ResourceLinkRepository extends SortableRepository |
||||||
|
{ |
||||||
|
public function __construct(EntityManagerInterface $em) |
||||||
|
{ |
||||||
|
parent::__construct($em, $em->getClassMetadata(ResourceLink::class)); |
||||||
|
} |
||||||
|
|
||||||
|
public function remove(ResourceLink $resourceLink): void |
||||||
|
{ |
||||||
|
$em = $this->getEntityManager(); |
||||||
|
|
||||||
|
// To move the resource link at the end to reorder the list |
||||||
|
$resourceLink->setDisplayOrder(-1); |
||||||
|
|
||||||
|
$em->flush(); |
||||||
|
// soft delete handled by Gedmo\SoftDeleteable |
||||||
|
$em->remove($resourceLink); |
||||||
|
$em->flush(); |
||||||
|
} |
||||||
|
|
||||||
|
public function removeByResourceInContext( |
||||||
|
AbstractResource $resource, |
||||||
|
Course $course, |
||||||
|
?Session $session = null, |
||||||
|
?CGroup $group = null, |
||||||
|
?Usergroup $usergroup = null, |
||||||
|
?User $user = null, |
||||||
|
): void { |
||||||
|
$link = $resource->getResourceNode()->getResourceLinkByContext($course, $session, $group, $usergroup, $user); |
||||||
|
|
||||||
|
if ($link) { |
||||||
|
$this->remove($link); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue