Swiftriver\Core\Modules\DataContext\MySql_V2\DataContext::SelectNextDueChannel PHP Method

SelectNextDueChannel() public static method

Given a date time, this function returns the next due Channel.
public static SelectNextDueChannel ( DateTime $time ) : Channel
$time DateTime
return Swiftriver\Core\ObjectModel\Channel
    public static function SelectNextDueChannel($time)
    {
        $logger = \Swiftriver\Core\Setup::GetLogger();
        $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::SelectNextDueChannel [Method Invoked]", \PEAR_LOG_DEBUG);
        $channel = null;
        if (!isset($time) || $time == null) {
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::SelectNextDueChannel [No time supplied, setting time to now]", \PEAR_LOG_DEBUG);
            $time = time();
        }
        $sql = "CALL SC_SelectNextDueChannel ( :time )";
        try {
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::SelectNextDueChannel [START: Connecting to db via PDO]", \PEAR_LOG_DEBUG);
            $db = self::PDOConnection();
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::SelectNextDueChannel [END: Connecting to db via PDO]", \PEAR_LOG_DEBUG);
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::SelectNextDueChannel [START: Preparing PDO statment]", \PEAR_LOG_DEBUG);
            $statement = $db->prepare($sql);
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::SelectNextDueChannel [END: Preparing PDO statment]", \PEAR_LOG_DEBUG);
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::SelectNextDueChannel [START: Executing PDO statment]", \PEAR_LOG_DEBUG);
            $result = $statement->execute(array("time" => $time));
            if ($result === false) {
                $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::SelectNextDueChannel [An Exception was thrown by the PDO framwork]", \PEAR_LOG_ERR);
                $errorInfo = $statement->errorInfo();
                $errorMessage = $errorInfo[2];
                $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::SelectNextDueChannel [{$errorMessage}]", \PEAR_LOG_ERR);
            }
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::SelectNextDueChannel [END: Executing PDO statment]", \PEAR_LOG_DEBUG);
            if (isset($result) && $result != null && $result !== 0) {
                $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::SelectNextDueChannel [START: Looping over results]", \PEAR_LOG_DEBUG);
                foreach ($statement->fetchAll() as $row) {
                    $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::SelectNextDueChannel [START: Constructing Channel Object from json]", \PEAR_LOG_DEBUG);
                    $json = $row['json'];
                    $channel = \Swiftriver\Core\ObjectModel\ObjectFactories\ChannelFactory::CreateChannelFromJSON($json);
                    $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::SelectNextDueChannel [END: Constructing Channel Object from json]", \PEAR_LOG_DEBUG);
                    $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::SelectNextDueChannel [START: Marking channel as in process]", \PEAR_LOG_DEBUG);
                    $channel->inprocess = true;
                    self::SaveChannels(array($channel));
                    $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::SelectNextDueChannel [END: Marking channel as in process]", \PEAR_LOG_DEBUG);
                }
                $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::SelectNextDueChannel [END: Looping over results]", \PEAR_LOG_DEBUG);
            }
            $db = null;
        } catch (\PDOException $e) {
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::SelectNextDueChannel [An exception was thrown]", \PEAR_LOG_ERR);
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::SelectNextDueChannel [{$e}]", \PEAR_LOG_ERR);
        }
        $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::SelectNextDueChannel [Method Finished]", \PEAR_LOG_DEBUG);
        return $channel;
    }