add('name', PLUGIN_MYCALENDAR_TITLE); $propbag->add('description', PLUGIN_MYCALENDAR_DESC); $propbag->add('requirements', array( 'serendipity' => '2.0', 'smarty' => '2.6.7', 'php' => '4.1.0' )); $propbag->add('version', '0.17.1'); $propbag->add('author', 'Garvin Hicking, Markus Gerstel, Grischa Brockhaus'); $propbag->add('stackable', false); $propbag->add('event_hooks', array( 'backend_sidebar_entries' => true, 'backend_sidebar_entries_event_display_mycalendar' => true, 'frontend_calendar' => true, 'external_plugin' => true, 'css_backend' => true ) ); $this->dependencies = array('serendipity_plugin_mycalendar' => 'remove'); $propbag->add('groups', array('FRONTEND_FEATURES')); } function setupDB() { global $serendipity; if (serendipity_db_bool($this->get_config('db_built4', false))) { return true; } if (serendipity_db_bool($this->get_config('db_built3', false))) { $sql = "UPDATE {$serendipity['dbPrefix']}mycalendar SET eventdate2 = eventdate WHERE (eventdate2 = 0) OR eventdate2 IS NULL;"; serendipity_db_schema_import($sql); $this->set_config('db_built4', 'true'); return true; } if (serendipity_db_bool($this->get_config('db_built2', false))) { $sql = "ALTER TABLE {$serendipity['dbPrefix']}mycalendar ADD eventdate2 int(10) {UNSIGNED} default null;"; serendipity_db_schema_import($sql); $this->set_config('db_built3', 'true'); return true; } if (serendipity_db_bool($this->get_config('db_built', false))) { $sql = "ALTER TABLE {$serendipity['dbPrefix']}mycalendar ADD eventurltitle varchar(255) default null;"; serendipity_db_schema_import($sql); $this->set_config('db_built2', 'true'); return true; } $sql = "CREATE TABLE {$serendipity['dbPrefix']}mycalendar ( eventid {AUTOINCREMENT} {PRIMARY}, eventname varchar(255) NOT NULL default '', eventurl varchar(255) NOT NULL default '', eventurltitle varchar(255) NOT NULL default '', eventdate int(10) {UNSIGNED} default null, eventdate2 int(10) {UNSIGNED} default null, eventcategory varchar(255) NOT NULL default '', eventtype varchar(255) NOT NULL default '' );"; serendipity_db_schema_import($sql); $this->set_config('db_built4', 'true'); } function &getevents() { global $serendipity; $this->setupDB(); $sql = "SELECT * FROM {$serendipity['dbPrefix']}mycalendar ORDER BY eventdate"; $items = serendipity_db_query($sql); if (!is_array($items)) { $empty = array(); return $empty; } else { return $items; } } function get_month_events(&$eventData, $addData) { global $serendipity; if (!isset($addData['TS']) || !isset($addData['EndTS'])) return; $this->setupDB(); $sql = "SELECT * FROM {$serendipity['dbPrefix']}mycalendar WHERE (eventdate >= '" . serendipity_db_escape_string($addData['TS']) . "') AND (eventdate < '" . serendipity_db_escape_string($addData['EndTS']) . "') ORDER BY eventdate"; $items = serendipity_db_query($sql); if (is_array($items)) { foreach($items as $event) { $day = date('j', $event['eventdate']); $day2 = date('j', $event['eventdate2']); for ($theday=$day; $theday<=$day2; $theday++) { if (!isset($eventData[$theday])) { $eventData[$theday] = array( 'Class' => 's9y_mc_event', 'Title' => $event['eventname'], 'Extended' => array( 'Link' => $event['eventurl'], 'Active' => ($event['eventurl'] != '')) ); } else { $eventData[$theday]['Title'] .= "; " . $event['eventname']; } } } } } function createevents() { global $serendipity; $this->setupDB(); $events = $this->getevents(); foreach($serendipity['POST']['event'] AS $idx => $array) { $array['eventdate'] = mktime(0, 0, 0, $array['month'], $array['day'], $array['year']); $array['eventdate2'] = mktime(0, 0, 0, $array['month2'], $array['day2'], $array['year2']); if (empty($idx)) { if (empty($array['eventurl']) && empty($array['eventname'])) { continue; } elseif (empty($array['eventname'])) { echo '
' . PLUGIN_MYCALENDAR_DESC . '. ' . PLUGIN_MYCALENDAR_EVENTLIST . '
'; echo ' '; } function generate_content(&$title) { $title = PLUGIN_MYCALENDAR_TITLE; } function event_hook($event, &$bag, &$eventData, $addData = null) { global $serendipity; $hooks = &$bag->get('event_hooks'); if (isset($hooks[$event])) { switch($event) { case 'backend_sidebar_entries': ?>