Exemplo n.º 1
0
    public function tintuconline($linkId)
    {
        ini_set("memory_limit", "256M");
        $conn = Gio_Db_Connection::getConnection();
        if ($linkId) {
            $ext = $linkId == -1 ? null : ' AND cron_id = ' . (int) $linkId;
            $sql = 'SELECT * FROM ' . $conn->_tablePrefix . 'news_cron WHERE website_name="tintuconline" 
						AND is_locked = 0 AND status = "active"' . $ext;
        } else {
            $numCategories = isset($this->_configs['auto_update_num_category']) ? $this->_configs['auto_update_num_category'] : 5;
            $sql = 'SELECT * FROM ' . $conn->_tablePrefix . 'news_cron
					WHERE status = "active" AND TIMESTAMPDIFF(SECOND, last_update, "' . date('Y-m-d H:i:s') . '") > frequency
						AND website_name = "tintuconline" AND is_locked = 0 
					ORDER BY priority
					LIMIT ' . (int) $numCategories;
        }
        $rsSql = $conn->query($sql);
        $addArticles = array();
        $addCategories = array();
        $articleDao = new Modules_News_Models_Mysql_Article();
        $articleDao->setConnection($conn);
        while ($row = $conn->fetchAll($rsSql)) {
            /**
             * Check time
             */
            $rssData = simplexml_load_file($row['source']);
            $articles = $rssData->channel->item;
            $categories = explode('-', $row['category_ids']);
            foreach ($articles as $index => $item) {
                $title = trim($item->title);
                $title = Gio_Core_String::stripCdata($title);
                $description = Gio_Core_String::stripCdata($item->description);
                $description = strip_tags($description);
                $link = Gio_Core_String::stripCdata($item->link);
                $link = trim($link);
                $date = Gio_Core_String::stripCdata($item->pubDate);
                $date = trim($date);
                /**
                 * Check article exists
                 */
                $existsArticle = $articleDao->getBySlug(Gio_Core_String::removeSign(trim($title), '-', true));
                if (null == $existsArticle) {
                    $article = array('title' => $title, 'slug' => Gio_Core_String::removeSign($title, '-', true), 'description' => $description, 'created_date' => date('Y-m-d H:i:s', strtotime($date)), 'link_source' => $link, 'image_url' => null, 'category_ids' => $row['category_ids'], 'website' => 'tintuconline', 'article_photo' => 0, 'article_video' => 0);
                    $addArticles[] = $article;
                    $addCategories[] = $categories;
                }
            }
            /**
             * Update time for cron
             */
            $sql = 'UPDATE ' . $conn->_tablePrefix . 'news_cron SET last_update = "' . date('Y-m-d H:i:s') . '"
						WHERE cron_id = ' . $conn->escape($row['cron_id']);
            $rsUpdate = $conn->query($sql);
            $conn->freeResult($rsUpdate);
        }
        $conn->freeResult($rsSql);
        /**
         * Add articles, Add Categories
         */
        if ($addArticles && $addCategories) {
            $this->addArticles[] = $addArticles;
            $this->addCategories[] = $addCategories;
        }
    }