Commit:    f46b45e9d5d8e4ee3ea07a3e45d057237af2a375
Author:    Hannes Magnusson <[email protected]>         Wed, 20 Nov 2013 
20:51:57 -0800
Parents:   ea1ec3575286453704133acd012976130635d16f
Branches:  master

Link:       
http://git.php.net/?p=web/php.git;a=commitdiff;h=f46b45e9d5d8e4ee3ea07a3e45d057237af2a375

Log:
Replace overengineering of 367 lines of code with 29 lines

Changed paths:
  D  Entity/NewsItem.php
  D  Gateway/NewsFileSystemGateway.php
  D  Gateway/NewsGateway.php
  D  View/HomepageNewsView.php
  M  index.php

diff --git a/Entity/NewsItem.php b/Entity/NewsItem.php
deleted file mode 100644
index 6f1db10..0000000
--- a/Entity/NewsItem.php
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php
-
-class NewsItem {
-
-    /**
-     * @var string
-     */
-    protected $permanentUrl;
-
-    /**
-     * @var string
-     */
-    protected $title;
-
-    /**
-     * @var string
-     */
-    protected $published;
-
-    /**
-     * @var DateTime
-     */
-    protected $updated;
-
-    /**
-     * @var array
-     */
-    protected $category = array();
-
-    /**
-     * @var array
-     */
-    protected $link = array();
-
-    /**
-     * @var string
-     */
-    protected $content = '';
-
-    /**
-     * @var string
-     */
-    protected $newsImage;
-
-    /**
-     * @var string
-     */
-    protected $intro  = '';
-
-
-    /**
-     * @param string $title
-     * @param string $permanentUrl
-     * @param string $published
-     * @param string $updated
-     * @param array $category
-     * @param array $link
-     * @param string $content
-     * @param string $newsImage
-     * @param string $intro
-     */
-    function __construct($title, $permanentUrl, $published, $updated, 
$category, $link, $content, $newsImage = NULL, $intro = '') {
-        $this->title = $title;
-        $this->permanentUrl = $permanentUrl;
-        $this->published = $published;
-        $this->updated = new DateTime($updated);
-        $this->category = $category;
-        $this->link = $link;
-        $this->content = $content;
-        $this->newsImage = $newsImage;
-        $this->intro = $intro;
-    }
-
-    /**
-     * @return array
-     */
-    public function getCategories() {
-        return $this->category;
-    }
-
-    /**
-     * @return string
-     */
-    public function getContent() {
-        return $this->content;
-    }
-
-    /**
-     * @return string
-     */
-    public function getId() {
-        return parse_url($this->getPermanentUrl(), PHP_URL_FRAGMENT);
-    }
-
-    /**
-     * @return string
-     */
-    public function getPermanentUrl() {
-        return $this->permanentUrl;
-    }
-
-    /**
-     * @return array
-     */
-    public function getLink() {
-        return $this->link;
-    }
-
-    public function getNewsImage() {
-        return $this->newsImage;
-    }
-
-    /**
-     * @return DateTime
-     */
-    public function getPublishedDate() {
-        return new DateTime($this->published);
-    }
-
-    /**
-     * @return string
-     */
-    public function getPublishedString() {
-        return $this->published;
-    }
-
-    /**
-     * @return mixed
-     */
-    public function getTitle() {
-        return $this->title;
-    }
-
-    /**
-     * @return DateTime
-     */
-    public function getUpdatedDate() {
-        return $this->updated;
-    }
-
-    /**
-     * @param $category
-     * @return bool
-     */
-    public function hasCategory($category) {
-        foreach ($this->category as $cat) {
-            if ($cat['term'] === $category) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    public function getIntroduction() {
-        return $this->intro;
-    }
-
-}
diff --git a/Gateway/NewsFileSystemGateway.php 
b/Gateway/NewsFileSystemGateway.php
deleted file mode 100644
index 6bc6bb2..0000000
--- a/Gateway/NewsFileSystemGateway.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-
-require_once dirname(__FILE__) . '/../Entity/NewsItem.php';
-require_once dirname(__FILE__) . '/NewsGateway.php';
-
-class NewsFileSystemGateway implements NewsGateway {
-
-    /**
-     * @var array
-     */
-    protected $articles;
-
-    public function __construct() {
-
-        $NEWS_ENTRIES = array();
-
-        //will overwrite $NEWS_ENTRIES.
-        require __DIR__ . '/../include/pregen-news.inc';
-
-        $this->articles = array();
-
-        foreach ($NEWS_ENTRIES as $article) {
-            $this->articles[] = new NewsItem(
-                $article['title'],
-                $article['id'],
-                $article['published'],
-                $article['updated'],
-                $article['category'],
-                $article['link'],
-                $article['content'],
-                isset($article['newsImage']) ? $article['newsImage'] : NULL,
-                isset($article['intro']) ? $article['intro'] : 
$article['content']
-            );
-        }
-
-    }
-
-    /**
-     * @param int $max [optional]
-     * @return array
-     */
-    public function getLatestArticles($max = 5) {
-        return array_slice($this->articles, 0, $max);
-    }
-
-    /**
-     * @param array $categories
-     * @param int $limit
-     * @return array
-     */
-    public function getArticlesForCategories(array $categories, $limit = 5) {
-        $result = array();
-
-        foreach ($this->articles as $item) {
-            /**
-             * @var NewsItem $item
-             */
-            $articleCategories = array();
-
-            foreach ($categories as $category) {
-                if ($item->hasCategory($category)) {
-                    $result[] = $item;
-                }
-            }
-
-        }
-
-        return array_slice($result, 0 , $limit);
-
-    }
-
-}
diff --git a/Gateway/NewsGateway.php b/Gateway/NewsGateway.php
deleted file mode 100644
index 9af903a..0000000
--- a/Gateway/NewsGateway.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-interface NewsGateway {
-
-    /**
-     * @abstract
-     * @param int $max [optional]
-     * @return array
-     */
-    function getLatestArticles($max = 5);
-
-    /**
-     * @abstract
-     * @param array $categories
-     * @param int $limit [optional]
-     * @return array
-     */
-    function getArticlesForCategories(array $categories, $limit = 5);
-
-}
diff --git a/View/HomepageNewsView.php b/View/HomepageNewsView.php
deleted file mode 100644
index 1390814..0000000
--- a/View/HomepageNewsView.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-
-class HomepageNewsView {
-
-    /**
-     * @var array
-     */
-    protected $articles;
-
-    /**
-     * @param array $articles
-     */
-    public function __construct(array $articles) {
-        $this->articles = $articles;
-    }
-
-    public function render() {
-
-        ob_start();
-        ?>
-        <div id='recentNewsEntries'>
-            <?php
-            foreach ($this->articles as $article) :
-                /**
-                 * @var NewsItem $article
-                 */
-
-                $id = $article->getId();
-                $title = $article->getTitle();
-
-                $publishedDate = $article->getPublishedString();
-                $newsDate = $article->getPublishedDate()->format('d-M-Y');
-
-                $permanentLink = "#" .$id;
-                foreach($article->getLink() as $link) {
-                    if ($link["rel"] === "via") {
-                        $permanentLink = $link["href"];
-                        break;
-                    }
-                }
-
-                $content = $article->getContent();
-
-                $image = "";
-                $newsImage = $article->getNewsImage();
-                if(isset($newsImage["link"]) && $newsImage["content"]) {
-                    $image = "<a href=\"{$newsImage["link"]}\">" . 
$this->renderImage($newsImage) . "</a>";
-                }
-
-                $event = '';
-                if ($article->hasCategory('conferences') || 
$article->hasCategory('cfp')) {
-                    $event = " vevent";
-                }
-                echo "<div class='newsItem hentry{$event}'>
-                    <div class='newsImage'>{$image}</div>
-                    <h2 class='summary entry-title' id='$id'><a 
href='{$permanentLink}' rel='bookmark' class='bookmark'>{$title}</a></h2>
-                    <div class='entry-content description'>
-                        <abbr class='published newsdate' 
title='{$publishedDate}'>{$newsDate}</abbr>
-                        {$content}
-                    </div>
-                </div>";
-            endforeach;
-            ?>
-
-            <p class='newsArchive'><a href='/archive/'>More news 
&raquo;</a></p>
-
-        </div>
-
-
-        <?php
-
-        return ob_get_clean();
-
-    }
-
-    /**
-     * @param array $image
-     * @return string
-     */
-    protected function renderImage(array $image) {
-        $imageHtml = "<img src='/images/news/{$image['content']}' 
alt='{$image['title']}' style='float:right'";
-
-        //getimagesize will give the HTML width and height attributes in 
offset 3 of the return value
-        $imageDetails = @getimagesize($_SERVER['DOCUMENT_ROOT'] . 
'/images/news/' . $image['content']);
-
-        if (count($imageDetails) >= 4) {
-            $imageHtml .= $imageDetails[3];
-        }
-
-        $imageHtml .= "/>";
-
-        return $imageHtml;
-    }
-
-}
diff --git a/index.php b/index.php
index 77731a5..f16d09d 100644
--- a/index.php
+++ b/index.php
@@ -50,28 +50,35 @@ include_once 'include/pregen-news.inc';
 include_once 'include/version.inc';
 
 
-require_once './Gateway/NewsFileSystemGateway.php';
-
-$NewsGateway = new NewsFileSystemGateway();
-$RecentNews = $NewsGateway->getArticlesForCategories(array(
-    "frontpage"
-), 4);
-
-ob_start();
-
-require_once './View/HomepageNewsView.php';
-$RecentNewsView = new HomepageNewsView($RecentNews);
-
-echo $RecentNewsView->render();
-
-$news = ob_get_clean();
-
-// Wrap announcements and features in a content element
-$content = "
-<div class='home-content'>
-    $news
-</div>
-";
+$content = "<div class='home-content'>";
+$releasenews = 0;
+$frontpage = array();
+foreach($NEWS_ENTRIES as $entry) {
+    $maybe = false;
+    foreach($entry["category"] as $category) {
+        if ($category["term"] == "releases") {
+            if ($releasenews++ > 5) {
+                continue 2;
+            }
+        }
+        if ($category["term"] == "frontpage") {
+            $maybe = $entry;
+        }
+    }
+    if ($maybe) {
+        $frontpage[] = $maybe;
+    }
+}
+foreach($frontpage as $entry) {
+    $link = substr($entry["id"], 15); // Strip http://php.net/
+    $content .= '<div class="newsentry">';
+    $content .= '<div class="newstitle"><a href="'. $MYSITE.$link .'">' . 
$entry["title"] . '</a></div>';
+    $content .= '<div class="newscontent">';
+    $content .= $entry["content"];
+    $content .= '</div>';
+    $content .= '</div>';
+}
+$content .= "</div>";
 
 $intro = <<<EOF
   <div class="row-fluid">
-- 
PHP Webmaster List Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to