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

GetContent() public static method

Given an array of content is's, this function will fetch the content objects from the data store.
public static GetContent ( string[] $ids, $orderby = null ) : Content[]
$ids string[]
return Swiftriver\Core\ObjectModel\Content[]
    public static function GetContent($ids, $orderby = null)
    {
        $logger = \Swiftriver\Core\Setup::GetLogger();
        $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetContent [Method Invoked]", \PEAR_LOG_DEBUG);
        $content = array();
        if (!\is_array($ids) || \count($ids) < 1) {
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetContent [No Ids supplied]", \PEAR_LOG_DEBUG);
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetContent [Method Finished]", \PEAR_LOG_DEBUG);
            return $content;
        }
        $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetContent [START: Building SQL Statment]", \PEAR_LOG_DEBUG);
        $getContentSql = "CALL SC_GetContent( :ids )";
        $idsArray = "(";
        foreach ($ids as $id) {
            $idsArray .= "'{$id}',";
        }
        $idsArray = \rtrim($idsArray, ",") . ")";
        $getTagsSql = "CALL SC_SelectTags ( :id )";
        $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetContent [END: Building SQL Statment]", \PEAR_LOG_DEBUG);
        try {
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetContent [START: Connecting via PDO]", \PEAR_LOG_DEBUG);
            $db = self::PDOConnection();
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetContent [END: Connecting via PDO]", \PEAR_LOG_DEBUG);
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetContent [START: Preparing PDO statements]", \PEAR_LOG_DEBUG);
            $getContentStatement = $db->prepare($getContentSql);
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetContent [END: Preparing PDO statements]", \PEAR_LOG_DEBUG);
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetContent [START: Executing PDO statement]", \PEAR_LOG_DEBUG);
            $result = $getContentStatement->execute(array(":ids" => $idsArray));
            if ($result === false) {
                $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetContent [An Exception was thrown by the PDO framwork]", \PEAR_LOG_ERR);
                $errorInfo = $getContentStatement->errorInfo();
                $errorMessage = $errorInfo[2];
                $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetContent [{$errorMessage}]", \PEAR_LOG_ERR);
            }
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetContent [END: Executing PDO statement]", \PEAR_LOG_DEBUG);
            if (isset($result) && $result != null && $result !== 0) {
                $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetContent [START: Looping over results]", \PEAR_LOG_DEBUG);
                foreach ($getContentStatement->fetchAll() as $row) {
                    $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetContent [START: Constructing content Object from json]", \PEAR_LOG_DEBUG);
                    $sourcejson = $row["sourcejson"];
                    $source = \Swiftriver\Core\ObjectModel\ObjectFactories\SourceFactory::CreateSourceFromJSON($sourcejson);
                    $contentjson = $row["contentjson"];
                    $item = \Swiftriver\Core\ObjectModel\ObjectFactories\ContentFactory::CreateContent($source, $contentjson);
                    $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetContent [END: Constructing content Object from json]", \PEAR_LOG_DEBUG);
                    $content[] = $item;
                }
                $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetContent [END: Looping over results]", \PEAR_LOG_DEBUG);
            }
            $db = null;
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetContent [START: Getting Content Tags]", \PEAR_LOG_DEBUG);
            foreach ($content as $item) {
                $db = self::PDOConnection();
                $getTagsStatement = $db->prepare($getTagsSql);
                $result = $getTagsStatement->execute(array("id" => $item->id));
                if ($result === false) {
                    $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetContent [An Exception was thrown by the PDO framwork]", \PEAR_LOG_ERR);
                    $errorInfo = $getTagsStatement->errorInfo();
                    $errorMessage = $errorInfo[2];
                    $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetContent [{$errorMessage}]", \PEAR_LOG_ERR);
                }
                if (isset($result) && $result != null && $result !== 0) {
                    $item->tags = array();
                    foreach ($getTagsStatement->fetchAll() as $row) {
                        $item->tags[] = new \Swiftriver\Core\ObjectModel\Tag($row["text"], $row["type"]);
                    }
                }
                $db = null;
            }
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetContent [START: Getting Content Tags]", \PEAR_LOG_DEBUG);
        } catch (\PDOException $e) {
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetContent [An Exception was thrown:]", \PEAR_LOG_ERR);
            $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetContent [{$e}]", \PEAR_LOG_ERR);
        }
        $logger->log("Core::Modules::DataContext::MySQL_V2::DataContext::GetContent [Method Finished]", \PEAR_LOG_DEBUG);
        return $content;
    }