class-campaign-handler.php 5.94 KB
<?php


class campaignHandlerClass
{   //define campaignHandlerClass to display one item group
    private $campaignItemArray;

    function __construct($campaignItemArray)
    {
        $this->campaignItemArray = $campaignItemArray;
    }

    function displayAllItem($number_posts, $is_pop_up_window)
    {
        $dateFilter = isset($_GET['date-filter']) ? $_GET['date-filter'] : false;
        $yearArray = $this->getCampaignYears();

        $output = '<div class="cm">';
        $output .= '<form method="get"><lable>Show: </lable>';
        $output .= '<select name="date-filter" class="date-filter">';
        $output .= '<option value="">-- Last 20 --</option>';
        foreach ($yearArray as $year) {
            if ($dateFilter) {
                if ($dateFilter == $year) {
                    $output .= '<option value="' . $year . '" selected="selected">' . $year . '</option>';
                } else {
                    $output .= '<option value="' . $year . '">' . $year . '</option>';
                }
            } else {
                $output .= '<option value="' . $year . '">' . $year . '</option>';
            }
        }
        $output .= '</select>';
        $output .= '</form>';
        $output .= '<table>';
        $count = 0;

        if ($dateFilter) {
            $this->campaignItemArray = array_filter(
                $this->campaignItemArray,
                function ($item) use ($dateFilter) {
                    /** @var campaignItemClass $item */
                    return (date("Y", strtotime($item->getItemDate())) == $dateFilter);
                }
            );
        } else {
            $this->campaignItemArray = $this->getCampaignLast20();
        }

        if ($number_posts > 0) {
            $output .= '<tr><th>Topic</th><th>Month</th><th>Year</th></tr>';
            foreach ($this->campaignItemArray as $campaignItemObject) {
                ++$count;
                if ($count > $number_posts) {
                    break;
                }
                /** @var campaignItemClass $campaignItemObject */
                $output .= ($is_pop_up_window == "true") ? $campaignItemObject->displayPerItem()
                    : $campaignItemObject->displayNoPop();
            }
        } else {
            $output .= '<tr><th>Topic</th><th>Month</th><th>Year</th></tr>';
            /** @var campaignItemClass $campaignItemObject */
            foreach ($this->campaignItemArray as $campaignItemObject) {
                $output .= ($is_pop_up_window == "true") ? $campaignItemObject->displayPerItem()
                    : $campaignItemObject->displayNoPop();
            }
        }

        $output .= '</table></div>';


        return $output;
    }

    function displayMatchItems($newsletter_name, $number_posts, $is_pop_up_window)
    {
        $dateFilter = isset($_GET['date-filter']) ? $_GET['date-filter'] : false;
        $yearArray = $this->getCampaignYears();

        $output = '<div class="cm">';
        $output .= '<form method="get"><lable>Show: </lable>';
        $output .= '<select name="date-filter" class="date-filter">';
        $output .= '<option value="">-- Last 20 --</option>';
        foreach ($yearArray as $year) {
            if ($dateFilter) {
                if ($dateFilter == $year) {
                    $output .= '<option value="' . $year . '" selected="selected">' . $year . '</option>';
                } else {
                    $output .= '<option value="' . $year . '">' . $year . '</option>';
                }
            } else {
                $output .= '<option value="' . $year . '">' . $year . '</option>';
            }
        }
        $output .= '</select>';
        $output .= '</form>';
        $output .= '<table>';
        $haveItems = false;
        $count     = 0;

        if ($number_posts > 0) {
            $output .= '<tr><th>Topic</th><th>Month</th><th>Year</th></tr>';
            /** @var campaignItemClass $campaignItemObject */
            foreach ($this->campaignItemArray as $campaignItemObject) {
                if ($this->judgeMatch($newsletter_name, $campaignItemObject->getItemName())) {
                    $haveItems = true;
                    ++$count;
                    if ($count > $number_posts) {
                        break;
                    }
                    $output .= ($is_pop_up_window == "true") ? $campaignItemObject->displayPerItem()
                        : $campaignItemObject->displayNoPop();

                }
            }
        } else {
            /** @var campaignItemClass $campaignItemObject */
            foreach ($this->campaignItemArray as $campaignItemObject) {
                if ($this->judgeMatch($newsletter_name, $campaignItemObject->getItemName())) {
                    $haveItems = true;
                    $output .= ($is_pop_up_window == "true") ? $campaignItemObject->displayPerItem()
                        : $campaignItemObject->displayNoPop();
                }
            }
        }

        if ($haveItems == false) {
            $output .= '<tr><td>No Newsletter found according to you search!</td></tr>';
        }
        $output .= '</table></div>';

        return $output;
    }

    function judgeMatch($newsletter_name, $itemContent)
    {
        $isMatch = false;
        foreach ($newsletter_name as $one_name) {
            if (stripos($itemContent, $one_name) !== false) {
                $isMatch = true;
            }
        }

        return $isMatch;
    }

    function getCampaignYears()
    {
        $yearArray = [];
        /** @var campaignItemClass $campaign */
        foreach ($this->campaignItemArray as $campaign) {
            $campaignYear = date("Y", strtotime($campaign->getItemDate()));
            if (!in_array($campaignYear, $yearArray)) {
                array_push($yearArray, $campaignYear);
                rsort($yearArray);
            }
        }

        return $yearArray;
    }

    function getCampaignLast20() {
        $campaigns = array_slice($this->campaignItemArray, 0, 20);
        return $campaigns;
    }


}