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

GetChannelsById() public static method

Given the IDs of Channels, this method gets them from the underlying data store
public static GetChannelsById ( string[] $ids ) : Channel[]
$ids string[]
return Swiftriver\Core\ObjectModel\Channel[]
    public static function GetChannelsById($ids)
    {
        $logger = \Swiftriver\Core\Setup::GetLogger();
        $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetChannelsById [Method Invoked]", \PEAR_LOG_DEBUG);
        $channels = array();
        if (!\is_array($ids) || count($ids) < 1) {
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetChannelsById [No ids supplied]", \PEAR_LOG_DEBUG);
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetChannelsById [Method finished]", \PEAR_LOG_DEBUG);
            return $channels;
        }
        $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetChannelsById [START: Building queries]", \PEAR_LOG_DEBUG);
        $sql = "CALL SC_GetChannelByChannelIds ( :ids )";
        $idsArray = "(";
        foreach ($ids as $id) {
            $idsArray .= "'{$id}',";
        }
        $idsArray = \rtrim($idsArray, ",") . ")";
        $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetChannelsById [END: Building queries]", \PEAR_LOG_DEBUG);
        try {
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetChannelsById [START: Connecting via PDO]", \PEAR_LOG_DEBUG);
            $db = self::PDOConnection();
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetChannelsById [END: Connecting via PDO]", \PEAR_LOG_DEBUG);
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetChannelsById [START: Preparing PDO statement]", \PEAR_LOG_DEBUG);
            $statement = $db->prepare($sql);
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetChannelsById [END: Preparing PDO statement]", \PEAR_LOG_DEBUG);
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetChannelsById [START: Executing PDO statement]", \PEAR_LOG_DEBUG);
            $result = $statement->execute(array(":ids" => $idsArray));
            if ($result === false) {
                $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetChannelsById [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::GetChannelsById [{$errorMessage}]", \PEAR_LOG_ERR);
            }
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetChannelsById [END: Executing PDO statement]", \PEAR_LOG_DEBUG);
            if (isset($result) && $result != null && $result !== 0) {
                $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetChannelsById [START: Looping over results]", \PEAR_LOG_DEBUG);
                foreach ($statement->fetchAll() as $row) {
                    $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetChannelsById [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::GetChannelsById [END: Constructing Channel Object from json]", \PEAR_LOG_DEBUG);
                    $channels[] = $channel;
                }
                $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetChannelsById [END: Looping over results]", \PEAR_LOG_DEBUG);
            }
            $db = null;
        } catch (\PDOException $e) {
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetChannelsById [An Exception was thrown:]", \PEAR_LOG_ERR);
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetChannelsById [{$e}]", \PEAR_LOG_ERR);
        }
        $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetChannelsById [Method Finished]", \PEAR_LOG_DEBUG);
        return $channels;
    }