Changeset 12047
- Timestamp:
- 09/06/07 14:56:09 (1 year ago)
- Files:
-
- trunk/midcom/net.nemein.calendar/config/config.inc (modified) (1 diff)
- trunk/midcom/net.nemein.calendar/config/schemadb_config.inc (modified) (1 diff)
- trunk/midcom/net.nemein.calendar/documentation/CHANGES (modified) (1 diff)
- trunk/midcom/net.nemein.calendar/viewer.php (modified) (2 diffs)
- trunk/midcom/net.nemein.rss/documentation/CHANGES (modified) (1 diff)
- trunk/midcom/net.nemein.rss/fetch.php (modified) (5 diffs)
- trunk/midcom/net.nemein.rss/manage.php (modified) (1 diff)
- trunk/midcom/net.nemein.rss/style/net-nemein-rss-feed-fetch.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/midcom/net.nemein.calendar/config/config.inc
r12045 r12047 20 20 21 21 'categories' => '', 22 23 'rss_subscription_enable' => false, trunk/midcom/net.nemein.calendar/config/schemadb_config.inc
r12045 r12047 127 127 ), 128 128 129 'rss_subscription_enable' => array 130 ( 131 'description' => 'rss_subscription_enable', 132 'datatype' => 'text', 133 'location' => 'config', 134 'config_domain' => 'net.nemein.calendar', 135 'config_key' => 'rss_subscription_enable', 136 'widget' => 'config_radiobox', 137 'widget_radiobox_choices' => array 138 ( 139 '' => 'default setting', 140 '1' => 'yes', 141 '0' => 'no', 142 ), 143 ), 144 129 145 /**** Schema settings ****/ 130 146 'schemadb' => array trunk/midcom/net.nemein.calendar/documentation/CHANGES
r12045 r12047 11 11 + Added categories to navigation 12 12 + Made categories configurable 13 + Added support for event importing via RSS 13 14 14 15 2007-09-04 bergie trunk/midcom/net.nemein.calendar/viewer.php
r12045 r12047 174 174 'variable_args' => 1, 175 175 ); 176 177 if ($this->_config->get('rss_subscription_enable')) 178 { 179 $_MIDCOM->load_library('net.nemein.rss'); 180 $rss_switches = net_nemein_rss_manage::get_plugin_handlers(); 181 $this->_request_switch = array_merge($this->_request_switch, $rss_switches); 182 } 176 183 177 184 // Make the hCalendar output GRDDL compatible … … 312 319 } 313 320 } 321 322 if ($this->_config->get('rss_subscription_enable')) 323 { 324 $this->_node_toolbar->add_item 325 ( 326 array 327 ( 328 MIDCOM_TOOLBAR_URL => 'feeds/subscribe/', 329 MIDCOM_TOOLBAR_LABEL => $_MIDCOM->i18n->get_string('subscribe feeds', 'net.nemein.rss'), 330 MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/stock_news.png', 331 MIDCOM_TOOLBAR_ENABLED => $this->_topic->can_do('midgard:create'), 332 ) 333 ); 334 $this->_node_toolbar->add_item 335 ( 336 array 337 ( 338 MIDCOM_TOOLBAR_URL => 'feeds/list/', 339 MIDCOM_TOOLBAR_LABEL => $_MIDCOM->i18n->get_string('manage feeds', 'net.nemein.rss'), 340 MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/properties.png', 341 MIDCOM_TOOLBAR_ENABLED => $this->_topic->can_do('midgard:create'), 342 ) 343 ); 344 } 314 345 315 346 if ( $this->_topic->can_do('midgard:update') trunk/midcom/net.nemein.rss/documentation/CHANGES
r11980 r12047 6 6 which might even break existing functionality. 7 7 - All items marked with "+" represent completly new features. 8 9 2007-09-06 bergie 10 + Added support for importing events via xCal RSS feeds to net.nemein.calendar 8 11 9 12 2007-09-04 bergie trunk/midcom/net.nemein.rss/fetch.php
r12000 r12047 10 10 /** 11 11 * RSS and Atom feed fetching class. Caches the fetched items as articles 12 * in net.nehmer.blog 12 * in net.nehmer.blog or events in net.nemein.calendar 13 13 * 14 14 * @package net.nemein.rss … … 36 36 */ 37 37 var $_node = null; 38 39 /** 40 * Configuration of node we're importing to 41 * @var midcom_helper_configuration 42 */ 43 var $_node_config = null; 44 45 /** 46 * Datamanager for handling saves 47 * @var midcom_helper_datamanager2 48 */ 49 var $_datamanager = null; 38 50 39 51 /** … … 47 59 48 60 $this->_component = 'net.nemein.rss'; 61 62 $this->_node_config = $GLOBALS['midcom_component_data'][$this->_node->component]['config']; 63 49 64 parent::midcom_baseclasses_components_purecode(); 50 65 } … … 162 177 case 'net.nehmer.blog': 163 178 return $this->import_article($item); 179 break; 180 181 case 'net.nemein.calendar': 182 return $this->import_event($item); 164 183 break; 165 184 … … 380 399 return false; 381 400 } 401 } 402 403 /** 404 * Imports an item as an event 405 */ 406 private function import_event($item) 407 { 408 // Check that we're trying to import item suitable to be an event 409 if (!isset($item['xcal'])) 410 { 411 // Not an event 412 return false; 413 } 414 415 // Load root event 416 if (!$this->_node_config->get('root_event')) 417 { 418 // This calendar is not really functional 419 return false; 420 } 421 static $root_event = null; 422 if (is_null($root_event)) 423 { 424 $root_event = new net_nemein_calendar_event($this->_node_config->get('root_event')); 425 } 426 if (!$root_event->guid) 427 { 428 return false; 429 } 430 431 // Get start and end times 432 $start = null; 433 $end = null; 434 if (isset($item['xcal']['dtstart'])) 435 { 436 $start = strtotime($item['xcal']['dtstart']); 437 } 438 elseif (isset($item['xCal']['start'])) 439 { 440 // The format used by Upcoming 441 $start = strtotime($item['xCal']['start']); 442 } 443 if (isset($item['xcal']['dtend'])) 444 { 445 $end = strtotime($item['xcal']['dtend']); 446 } 447 elseif (isset($item['xCal']['end'])) 448 { 449 // The format used by Upcoming 450 $end = strtotime($item['xCal']['end']); 451 } 452 453 if ( !$start 454 || !$end) 455 { 456 return false; 457 } 458 459 if (!$this->_datamanager) 460 { 461 $schemadb = midcom_helper_datamanager2_schema::load_database($this->_node_config->get('schemadb')); 462 $this->_datamanager = new midcom_helper_datamanager2_datamanager($schemadb); 463 } 464 465 $qb = net_nemein_calendar_event::new_query_builder(); 466 $qb->add_constraint('up', '=', $root_event->id); 467 $qb->add_constraint('extra', '=', md5($item['guid'])); 468 $events = $qb->execute(); 469 if (count($events) > 0) 470 { 471 // This item has been imported already earlier. Update 472 $event = $events[0]; 473 } 474 else 475 { 476 // This is a new item 477 $event = new net_nemein_calendar_event(); 478 $event->start = $start; 479 $event->end = $end; 480 $event->extra = md5($item['guid']); 481 $event->up = $root_event->id; 482 if (!$event->create()) 483 { 484 return false; 485 } 486 } 487 488 $this->_datamanager->autoset_storage($event); 489 $this->_datamanager->types['start']->value = new Date($start); 490 $this->_datamanager->types['end']->value = new Date($end); 491 foreach ($item as $key => $value) 492 { 493 if (isset($this->_datamanager->types[$key])) 494 { 495 $this->_datamanager->types[$key]->value = $value; 496 } 497 } 498 499 if (!$this->_datamanager->save()) 500 { 501 return false; 502 } 503 504 return $event->guid; 382 505 } 383 506 trunk/midcom/net.nemein.rss/manage.php
r11787 r12047 175 175 ); 176 176 } 177 178 $qb = midcom_db_article::new_query_builder();179 $qb->add_constraint('topic', '=', $this->_topic->id);180 181 177 $data['feed_category'] = 'feed:' . md5($feed->url); 182 $qb->add_constraint('extra1', 'LIKE', "%|{$data['feed_category']}|%"); 183 $data['feed_items'] = $qb->count_unchecked(); 184 178 179 $data['feed_items'] = 0; 180 181 switch ($this->_topic->component) 182 { 183 case 'net.nehmer.blog': 184 $qb = midcom_db_article::new_query_builder(); 185 $qb->add_constraint('topic', '=', $this->_topic->id); 186 $qb->add_constraint('extra1', 'LIKE', "%|{$data['feed_category']}|%"); 187 $data['feed_items'] = $qb->count_unchecked(); 188 break; 189 } 190 185 191 midcom_show_style('net-nemein-rss-feeds-list-item'); 186 192 } trunk/midcom/net.nemein.rss/style/net-nemein-rss-feed-fetch.php
r11760 r12047 59 59 else 60 60 { 61 $local_article = new midcom_db_article($item['local_guid']); 62 $local_link = $_MIDCOM->permalinks->create_permalink($item['local_guid']); 63 echo " <td><a href=\"{$local_link}\">{$local_article->title}</a></td>\n"; 61 switch ($_MIDCOM->get_context_data(MIDCOM_CONTEXT_COMPONENT)) 62 { 63 case 'net.nehmer.blog': 64 $local_article = new midcom_db_article($item['local_guid']); 65 $local_link = $_MIDCOM->permalinks->create_permalink($item['local_guid']); 66 echo " <td><a href=\"{$local_link}\">{$local_article->title}</a></td>\n"; 67 break; 68 69 case 'net.nemein.calendar': 70 $local_event = new net_nemein_calendar_event($item['local_guid']); 71 $local_link = $_MIDCOM->permalinks->create_permalink($item['local_guid']); 72 echo " <td><a href=\"{$local_link}\">{$local_event->title}</a></td>\n"; 73 break; 74 } 64 75 } 65 76
