/** * Adds the group to the given user * * @param InputInterface $input Input object * @param OutputInterface $output Output object * @param \Aimeos\MShop\Context\Item\Iface $context Aimeos context object * @param \Aimeos\MShop\Customer\Item\Iface $user Aimeos customer object * @param string $group Unique customer group code */ protected function addGroup(InputInterface $input, OutputInterface $output, \Aimeos\MShop\Context\Item\Iface $context, \Aimeos\MShop\Customer\Item\Iface $user, $group) { $output->writeln(sprintf('Add "%1$s" group to user "%2$s" for sites', $group, $user->getCode())); $localeManager = \Aimeos\MShop\Locale\Manager\Factory::createManager($context); foreach ($this->getSiteItems($context, $input) as $siteItem) { $localeItem = $localeManager->bootstrap($siteItem->getCode(), '', '', false); $lcontext = clone $context; $lcontext->setLocale($localeItem); $output->writeln('- ' . $siteItem->getCode()); $groupItem = $this->getGroupItem($lcontext, $group); $this->addListItem($lcontext, $user->getId(), $groupItem->getId()); } }
/** * Adds the privilege to the given user * * @param \Aimeos\MShop\Context\Item\Iface $context Aimeos context object * @param \Aimeos\MShop\Customer\Item\Iface $user Aimeos customer object * @param string $privilege Unique customer group code */ protected function addPrivilege(\Aimeos\MShop\Context\Item\Iface $context, \Aimeos\MShop\Customer\Item\Iface $user, $privilege) { $this->info(sprintf('Add "%1$s" privilege to user "%2$s" for sites', $privilege, $user->getCode())); $localeManager = \Aimeos\MShop\Locale\Manager\Factory::createManager($context); foreach ($this->getSiteItems($context, $this->argument('site')) as $siteItem) { $localeItem = $localeManager->bootstrap($siteItem->getCode(), '', '', false); $lcontext = clone $context; $lcontext->setLocale($localeItem); $this->info('- ' . $siteItem->getCode()); $groupItem = $this->getGroupItem($lcontext, $privilege); $this->addListItem($lcontext, $user->getId(), $groupItem->getId()); } }
/** * Adds the customer to the groups listed in the customer item * * @param \Aimeos\MShop\Customer\Item\Iface $item Customer item */ protected function addGroups(\Aimeos\MShop\Customer\Item\Iface $item) { if (count($item->getGroups()) === 0) { return; } $listMap = array(); $manager = $this->getSubManager('lists'); $typeManager = $manager->getSubManager('type'); $typeId = $typeManager->findItem('default', array(), 'customer/group', 'default')->getId(); $listItem = $manager->createItem(); $listItem->setParentId($item->getId()); $listItem->setDomain('customer/group'); $listItem->setTypeId($typeId); $listItem->setStatus(1); $search = $manager->createSearch(); $expr = array($search->compare('==', 'customer.lists.parentid', $item->getId()), $search->compare('==', 'customer.lists.domain', 'customer/group'), $search->compare('==', 'customer.lists.type.domain', 'customer/group'), $search->compare('==', 'customer.lists.type.code', 'default')); $search->setConditions($search->combine('&&', $expr)); $search->setSlice(0, 0x7fffffff); foreach ($manager->searchItems($search) as $listid => $listItem) { $listMap[$listItem->getRefId()] = $listid; } $pos = count($listMap); foreach ($item->getGroups() as $gid) { if (isset($listMap[$gid])) { unset($listMap[$gid]); continue; } $listItem->setId(null); $listItem->setRefId($gid); $listItem->setPosition($pos++); $manager->saveItem($listItem, false); } $manager->deleteItems($listMap); }