/** * @param SegmentInterface $segment * @param array $attributes */ public function onTaskGroupBegin($segment, $attributes) { $payload_alias = 'parsley.payload'; if (!$this->container->isAlias($payload_alias) && !$this->container->bound($payload_alias)) { // if we have no payload it means that no group can be formed and grouped tasks should be scheduled as standalone return; } /** @var Payload $payload */ $payload = $this->container->make($payload_alias); // if we have group request from other than current grouped one, then switch context to it if ($this->hasGroup($payload) && $this->getGroupName($payload) == $segment->getName()) { $group_id = $this->getGroupId($payload); $group = $this->getGroupName($payload); $attributes = is_null($attributes) ? $payload->getAttributes() : $attributes; } else { $group_id = $payload->getId(); $group = $payload->getName(); $attributes = (array) $attributes; } $this->groups[] = [$group, $group_id, $attributes]; }
/** * @param \Parsley\Plugins\SegmentInterface $plugin */ public function registerPlugin($plugin) { if ($this->isPluginRegistered($plugin->getName())) { return; } // TODO: add plugins dependencies (check, conflicts, register and, maybe, deregister or replace) $this->fireSegmentEvent('plugin.register: ' . $plugin->getName(), [$plugin]); $plugin->subscribe($this->container['events']); $this->plugins[$plugin->getName()] = $plugin; $this->fireSegmentEvent('plugin.registered: ' . $plugin->getName(), [$plugin]); }