<?php declare(strict_types=1);
namespace CioCustomerPermissionGroups;
use Shopware\Core\Framework\Plugin;
use Doctrine\DBAL\Connection;
use Shopware\Core\Framework\Plugin\Context\UninstallContext;
class CioCustomerPermissionGroups extends Plugin
{
public function uninstall(UninstallContext $context): void
{
parent::uninstall($context);
if ($context->keepUserData()) {
return;
}
$connection = $this->container->get(Connection::class);
//$connection->executeUpdate('DROP TABLE IF EXISTS `customer_aclgroups`');
//$connection->executeUpdate('ALTER TABLE `customer` DROP COLUMN `customer_aclgroup_ids`');
}
public static function arrayUnique(array $array, callable $comparator): array
{
$unique_array = [];
do {
$element = array_shift($array);
$unique_array[] = $element;
$array = array_udiff(
$array,
[$element],
$comparator
);
} while (count($array) > 0);
return $unique_array;
}
public static function getAclIds($array)
{
if (!is_array($array)) {
return [];
}
$array = self::uniqueACL($array);
$res = [];
foreach ($array as $item) {
$res[] = $item['id'];
}
return $res;
}
public static function uniqueACL(array $array): array
{
foreach ($array as $key => $customAclRole) {
if (!is_array($customAclRole)) {
unset($array[$key]);
}
}
if (count($array)) {
return self::arrayUnique($array, function ($a, $b) {
if ($a['id'] == $b['id']) {
$b['imported'] = $a['imported'] = true;
}
return $a['id'] <=> $b['id'];
});
}
return [];
}
}