public function onPreSave(GenericEvent $event) { /** @var WebCounter $counter */ $counter = $event->getSubject(); $provider = $this->counter_management_manager->getProvider($counter->getTypeKey()); /** Если указан флаг создания счетчика на сервере отправим необходимые запросы */ if ($counter->isNew() && !$counter->getNumber() && $provider->getRemoteRepository()) { $remoteCounter = $provider->getRemoteRepository()->push($counter->getName(), $counter->getSite()); $counter->setNumber($remoteCounter->getId()); $goals = WebCounterGoalQuery::create()->find(); /** @var WebCounterGoal $goal */ foreach ($goals as $key => $goal) { $provider->getRemoteRepository()->addGoal($remoteCounter, $goal->getName(), $goal->getAlias(), $goal->getAction(), $key + 1); } } }
public function installGoalsAction($id, Request $request) { $object = $this->admin->getObject($id); $provider = $this->get('counter_management.manager')->getProvider($object->getTypeKey()); if (!$object->isNew() && $object->getNumber() && $provider->getRemoteRepository()) { $goals = WebCounterGoalQuery::create()->find(); $counter = $provider->getRemoteRepository()->getCounter($object->getNumber()); if ($counter) { /** @var WebCounterGoal $goal */ foreach ($goals as $key => $goal) { if ($provider->getRemoteRepository()->hasGoal($counter, $goal) === false) { $provider->getRemoteRepository()->addGoal($counter, $goal->getName(), $goal->getAlias(), $goal->getAction(), $key + 1); } } } $request->getSession()->getFlashBag()->add("success", "Все цели установлены"); } else { $request->getSession()->getFlashBag()->add("error", "Не удалось установить цели"); } return $this->redirectTo($object); }