dszymczuk/dsEventCalendar57

View on GitHub
controllers/single_page/dashboard/event_calendar/event.php

Summary

Maintainability
B
6 hrs
Test Coverage
<?php
namespace Concrete\Package\Dseventcalendar\Controller\SinglePage\Dashboard\EventCalendar;

use \Concrete\Core\Page\Controller\DashboardPageController;
use Loader;

defined('C5_EXECUTE') or die("Access Denied.");

class Event extends DashboardPageController
{
    public function view()
    {
        $this->addFooterItem(Loader::helper('html')->css('jquery.datetimepicker.min.css', 'dsEventCalendar'));
        $this->addFooterItem(Loader::helper('html')->css('dsStyle.css', 'dsEventCalendar'));
        $this->addFooterItem(Loader::helper('html')->javascript('moment.min.js', 'dsEventCalendar'));
        $this->addFooterItem(Loader::helper('html')->javascript('jquery.datetimepicker.min.js', 'dsEventCalendar'));
        $this->requireAsset('javascript', 'jquery');

        $this->set('pageTitle', t("Manage event"));

        $db = Loader::db();
        if (!empty($_POST)) {

            $isSomeValueEmpty = false;
            $isAllDay = 1;

            $validateArray = $_POST;
            unset($validateArray['event_url']);
            unset($validateArray['event_description']);
            unset($validateArray['event_start_time']);
            unset($validateArray['event_end_date']);
            unset($validateArray['event_end_time']);
            foreach ($validateArray as $vA) {
                if ($vA === "") {
                    $isSomeValueEmpty = true;
                    break;
                }
            }

            $this->set('event_title', $this->post('event_title'));
            $this->set('event_start_date', $this->post('event_start_date'));
            $this->set('event_start_time', $this->post('event_start_time'));
            $this->set('event_end_date', $this->post('event_end_date'));
            $this->set('event_end_time', $this->post('event_end_time'));
            $this->set('event_type', $this->post('event_type'));
            $this->set('event_description', $this->post('event_description'));
            $this->set('event_url', $this->post('event_url'));

            if (!$isSomeValueEmpty) {
                if (strtotime($this->post('event_start_date')) <= strtotime($this->post('event_end_date'))
                    or strtotime($this->post('event_start_time')) < strtotime($this->post('event_end_time'))
                ) {
                    $startDate = date_format(date_create($_POST['event_start_date']), "Y-m-d");
                    $startTime = $this->post('event_start_time');
                    $date = date_create($_POST['event_end_date']);
                    date_modify($date, '+1 day');
                    $date_end = date_format($date, 'Y-m-d');

                    if (!empty($startTime)) {
                        $isAllDay = 0;
                        $date_end = $startDate . " " . $_POST['event_end_time'];
                        $startDate = $startDate . " " . $_POST['event_start_time'];
                    }

                    $sql = "INSERT INTO dsEventCalendarEvents (calendarID,title,date,type,description,url,end,allDayEvent) VALUES (?,?,?,?,?,?,?,?)";

                    $args = array(
                        $this->post('event_calendarID'),
                        $this->post('event_title'),
                        $startDate,
                        $this->post('event_type'),
                        $this->post('event_description'),
                        $this->post('event_url'),
                        $date_end,
                        $isAllDay
                    );


                    $db->Execute($sql, $args);

                    $this->set('event_title', "");
                    $this->set('event_start_date', "");
                    $this->set('event_start_time', "");
                    $this->set('event_end_date', "");
                    $this->set('event_end_time', "");
                    $this->set('event_type', "");
                    $this->set('event_description', "");
                    $this->set('event_url', "");
                    $this->set('success', t('Event: ' . $this->post('event_title') . ' has been added'));
                    unset($_POST);
                } else {
                    $this->set('error', t('Error while adding. Enddate or endtime is not correct.'));
                }
            } else {
                $this->set('error', t('Error while adding. Maybe some values were empty?'));
            }
        }

        $calendars = $db->GetAll("SELECT * FROM dsEventCalendar");
        $this->set('calendars', $calendars);

        $types = $db->GetAll("SELECT * FROM dsEventCalendarTypes");

        $settings = $db->GetAll("SELECT * FROM dsEventCalendarSettings");
        // ADD DEFAULT VALUE
        foreach ($settings as $s) {
            $s['opt'] = $s['opt'] . "_dsECS";
            ${$s['opt']} = $s['value'];
        }

        $this->set('lang_datepicker', $lang_datepicker_dsECS);
        $this->set('scrollTime', $scrollTime_dsECS);
        $this->set('scrollMonth', $scrollMonth_dsECS);
        $this->set('scrollInput', $scrollInput_dsECS);

        array_unshift($types, array(
            'typeID' => 0,
            'type' => $default_name_dsECS,
            'color' => $default_color_dsECS,
        ));
        // END OF ADD DEFAULT VALUE

        $this->set('types', $types);


        $this->set('button', array(
            'class' => 'btn btn-success',
            'label' => t('Add event')
        ));
    }
}