/**
  * 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());
     }
 }
Exemple #3
0
 /**
  * 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);
 }