public function read()
 {
     global $ilDB;
     $this->news = array();
     $types = array();
     $data = array();
     $query = 'SELECT * FROM payment_news WHERE 1 = 1 ';
     if ($this->isPublicSection()) {
         $query .= "AND visibility = %s ";
         $types[] = 'text';
         $data[] = 'public';
     }
     if ($this->getArchiveDate() !== null && $this->getArchiveDate() > 0) {
         switch ($this->getMode()) {
             case self::TYPE_NEWS:
                 $query .= "AND creation_date >= %s ";
                 $types[] = 'timestamp';
                 $data[] = date('Y-m-d H:i:s', $this->getArchiveDate());
                 break;
             case self::TYPE_ARCHIVE:
                 $query .= "AND creation_date < %s ";
                 $types[] = 'timestamp';
                 $data[] = date('Y-m-d H:i:s', $this->getArchiveDate());
                 break;
         }
     }
     $query .= 'ORDER BY update_date DESC ';
     $result = $ilDB->queryF($query, $types, $data);
     while ($record = $ilDB->fetchAssoc($result)) {
         $oNewsItem = new ilShopNewsItem();
         $oNewsItem->setId($record['news_id']);
         $oNewsItem->setCreationDate($record['creation_date']);
         $oNewsItem->setUpdateDate($record['update_date']);
         $oNewsItem->setTitle($record['news_title']);
         $oNewsItem->setContent($record['news_content']);
         $oNewsItem->setVisibility($record['visibility']);
         $oNewsItem->setUserId($record['user_id']);
         $this->news[] = $oNewsItem;
     }
     return $this;
 }