/** * Filter the query by a related \Jalle19\StatusManager\Database\Subscription object * * @param \Jalle19\StatusManager\Database\Subscription|ObjectCollection $subscription the related object to use as filter * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL * * @return ChildChannelQuery The current query, for fluid interface */ public function filterBySubscription($subscription, $comparison = null) { if ($subscription instanceof \Jalle19\StatusManager\Database\Subscription) { return $this->addUsingAlias(ChannelTableMap::COL_ID, $subscription->getChannelId(), $comparison); } elseif ($subscription instanceof ObjectCollection) { return $this->useSubscriptionQuery()->filterByPrimaryKeys($subscription->getPrimaryKeys())->endUse(); } else { throw new PropelException('filterBySubscription() only accepts arguments of type \\Jalle19\\StatusManager\\Database\\Subscription or Collection'); } }
/** * @param string $instanceName * @param SubscriptionStatus $status * * @return $this|\Propel\Runtime\ActiveQuery\Criteria */ public function filterBySubscriptionStatus($instanceName, SubscriptionStatus $status) { return $this->filterByInstanceName($instanceName)->filterByNetwork(Subscription::parseNetwork($status))->filterByMux(Subscription::parseMux($status))->addDescendingOrderByColumn('started'); }
/** * @param ChildSubscription $subscription The ChildSubscription object to add. */ protected function doAddSubscription(ChildSubscription $subscription) { $this->collSubscriptions[] = $subscription; $subscription->setChannel($this); }
/** * Exclude object from result * * @param ChildSubscription $subscription Object to remove from the list of results * * @return $this|ChildSubscriptionQuery The current query, for fluid interface */ public function prune($subscription = null) { if ($subscription) { $this->addUsingAlias(SubscriptionTableMap::COL_ID, $subscription->getId(), Criteria::NOT_EQUAL); } return $this; }
/** * @param ChildSubscription $subscription The ChildSubscription object to add. */ protected function doAddSubscription(ChildSubscription $subscription) { $this->collSubscriptions[] = $subscription; $subscription->setInstance($this); }
/** * @param SubscriptionSeenEvent $event * * @throws \Propel\Runtime\Exception\PropelException */ public function onSubscriptionSeen(SubscriptionSeenEvent $event) { $instanceName = $event->getInstance(); $status = $event->getSubscription(); // Ignore certain subscriptions if (in_array($status->getType(), [SubscriptionStatus::TYPE_EPGGRAB, SubscriptionStatus::TYPE_SERVICE_OR_MUX])) { return; } // Determine the username to store for the subscription $username = $status->username; switch ($status->getType()) { case SubscriptionStatus::TYPE_RECORDING: $username = User::NAME_DVR; break; } // Get the instance, user and channel $instance = InstanceQuery::create()->findPk($instanceName); $user = UserQuery::create()->filterByInstance($instance)->filterByName($username)->findOne(); // Ensure the channel exists $this->onChannelSeen($instanceName, $status->channel); $channel = ChannelQuery::create()->filterByInstance($instance)->filterByName($status->channel)->findOne(); if (SubscriptionQuery::create()->hasSubscription($instance, $user, $channel, $status)) { return; } // Try to determine which input is used by the subscription $input = InputQuery::create()->filterBySubscriptionStatus($instanceName, $status)->findOne(); if ($input === null) { $this->logger->warning('Got subscription that cannot be tied to an input ({instanceName}, user: {userName}, channel: {channelName})', ['instanceName' => $instanceName, 'userName' => $user !== null ? $user->getName() : 'N/A', 'channelName' => $channel->getName()]); } $subscription = new Subscription(); $subscription->setInstance($instance)->setInput($input)->setUser($user)->setChannel($channel)->setSubscriptionId($status->id)->setStarted($status->start)->setTitle($status->title)->setService($status->service); $subscription->save(); $this->logger->info('Stored new subscription (instance: {instanceName}, user: {userName}, channel: {channelName})', ['instanceName' => $instanceName, 'userName' => $user !== null ? $user->getName() : 'N/A', 'channelName' => $channel->getName()]); }