<?php $feedItem = new sfGeoFeedItem(); $i18n = $item['ArticleI18n'][0]; $feedItem->setTitle($i18n['name']); $id = $item['id']; $lang = $i18n['culture']; $feedItem->setLink("@document_by_id_lang_slug?module=articles&id={$id}&lang={$lang}&slug=" . make_slug($i18n['name'])); $feedItem->setUniqueId(sfRouting::getInstance()->getCurrentInternalUri() . '_' . $id); $feedItem->setAuthorName($item['creator']); $feedItem->setPubdate(strtotime($item['creation_date'])); $data = array(); $data[] = get_paginated_value_from_list($item['categories'], 'mod_articles_categories_list'); if (isset($item['activities']) && is_string($item['activities'])) { $data[] = get_paginated_activities($item['activities'], true); } $data[] = get_paginated_value($item['article_type'], 'mod_articles_article_types_list'); $feedItem->setDescription(implode(' - ', $data)); $feed->addItem($feedItem);
/** * Executes Feed action * NB: cannot be cached ... */ public function executeFeed() { $feed = new sfGeoRssFeed(); $lang = $this->getRequestParameter('lang'); $model = $this->model_class; $module = $this->getModuleName(); $id = $this->getRequestParameter('id'); $mode = $this->getRequestParameter('mode'); if ($lang) { $languages = sfConfig::get('app_languages_c2c'); } switch ($mode) { case 'editions': $description = $this->__($lang ? "Latest %1% editions in %2%" : "Latest %1% editions", array('%1%' => $this->__($module), '%2%' => $lang ? $this->__($languages[$lang]) : null)); $title = $description; // TODO Provide better description, different from title $link = "@module_whatsnew?module={$module}"; // TODO maybe we should propose lang filters for whatsnew url? $self_link = $lang ? "@feed_lang?module={$module}&lang={$lang}" : "@feed?module={$module}"; break; case 'creations': $description = $this->__($lang ? "Latest %1% creations in %2%" : "Latest %1% creations", array('%1%' => $this->__($module), '%2%' => $lang ? $this->__($languages[$lang]) : null)); $title = $description; // TODO Provide better description, different from title $link = "@default_index?module={$module}"; // TODO can we redirect to list with lang filter once it is done? $self_link = $lang ? "@creations_feed_lang?module={$module}&lang={$lang}" : "@creations_feed?module={$module}"; break; default: // editions of a specific document // check that document $id exists in lang $lang, and retrieve its name. if (!($document = DocumentI18n::findName($id, $lang, $this->model_class))) { $this->setNotFoundAndRedirect(); } $name = $document->get('name'); $description = $this->__("Latest editions for \"%1%\" - %2%", array('%1%' => $name, '%2%' => $this->__($languages[$lang]))); $title = $description; // TODO Provide better description, different from title $link = "@document_history?module={$module}&id={$id}&lang={$lang}"; $self_link = "@document_feed?module={$module}&id={$id}&lang={$lang}"; break; } $feed->setTitle($title); $feed->setLink($link); $feed->setFeedUrl($self_link); $feed->setDescription($description); $feed->setLanguage($lang); $feed->setAuthorName('Camptocamp.org'); $max_number = sfConfig::get('app_feeds_items_limit'); if ($module != 'documents' || !empty($id)) { //usage: listRecent($model, $limit, $user_id = null, $lang = null, $doc_id = null, $mode = 'editions') $items = Document::listRecent($this->model_class, $max_number, null, $lang, $id, $mode); sfLoader::loadHelpers(array('General', 'SmartFormat')); $model_i18n = $model . 'I18n'; // Add best summit name for routes foreach ($items as $key => $item) { $items[$key]['module'] = $item[$model]['module']; $items[$key]['id'] = $item['document_id']; $items[$key]['name'] = $item[$model_i18n]['name']; $items[$key]['search_name'] = $item[$model_i18n]['search_name']; } $routes = Route::addBestSummitName(array_filter($items, array('c2cTools', 'is_route')), $this->__(' :') . ' '); foreach ($routes as $key => $route) { $items[$key] = $route; } foreach ($items as $item) { $item_id = $item['document_id']; $new = $item['version']; $module_name = $item[$model]['module']; $name = $item['name']; $doc_lang = $item['culture']; $feedItemTitle = $name . ($mode != 'creations' ? " - r{$new}" . ($lang ? '' : "/{$doc_lang}") : ''); $feedItem = new sfGeoFeedItem(); $feedItem->setTitle($feedItemTitle); if ($mode == 'creations') { if ($module_name == 'users') { $feedItem->setLink("@document_by_id_lang?module={$module_name}&id={$item_id}&lang={$doc_lang}"); } else { $feedItem->setLink("@document_by_id_lang_slug?module={$module_name}&id={$item_id}&lang={$doc_lang}&slug=" . make_slug($item['name'])); } } else { $feedItem->setLink("@document_by_id_lang_version?module={$module_name}&id={$item_id}&lang={$doc_lang}&version={$new}"); } $feedItem->setAuthorName($item['history_metadata']['user_private_data']['topo_name']); //$feedItem->setAuthorEmail($item['history_metadata']['user_private_data']['email']); $feedItem->setPubdate(strtotime($item['created_at'])); $feedItem->setUniqueId("{$item_id}-{$doc_lang}-{$new}"); $feedItem->setLongitude($item[$model]['lon']); $feedItem->setLatitude($item[$model]['lat']); $comment = smart_format($item['history_metadata']['comment']); $feedItem->setDescription($comment); if ($mode != 'creations') { $link = $new > 1 ? ' - ' . link_to(__('View difference between version %1% and %2%', array('%1%' => $new - 1, '%2%' => $new)), "@document_diff?module={$module_name}&id={$item_id}&lang={$doc_lang}&new={$new}&old=" . ($new - 1), array('absolute' => true)) : ''; $feedItem->setContent($comment . $link); } $feed->addItem($feedItem); } } $this->feed = $feed; $this->setTemplate('../../documents/templates/feed'); }
<?php $feedItem = new sfGeoFeedItem(); $i18n = $item['UserI18n'][0]; $feedItem->setTitle($item['private_data']['topo_name']); $feedItem->setUniqueId($id); $id = $item['id']; $lang = $i18n['culture']; $feedItem->setLink("@document_by_id_lang?module=users&id={$id}&lang={$lang}"); $feedItem->setUniqueId(sfRouting::getInstance()->getCurrentInternalUri() . '_' . $id); $feedItem->setAuthorName($item['creator']); $feedItem->setPubdate(strtotime($item['creation_date'])); $data = array(); $data[] = get_paginated_areas($item['geoassociations']); $feedItem->setDescription(implode(' - ', $data)); $feedItem->setLongitude($item['lon']); $feedItem->setLatitude($item['lat']); $feed->addItem($feedItem);
<?php use_helper('General'); $feed = new sfGeoRssFeed(); $feed->setTitle('Camptocamp.org '); $feed->setLink('http://www.camptocamp.org'); $feed->setAuthorName('Camptocamp.org'); //$feed->setLanguage($lang); foreach ($documents as $doc) { $feedItem = new sfGeoFeedItem(); $feedItem->setTitle($doc['name']); $id = $doc['id']; $module = $doc['module']; $lang = $doc['culture']; $slug = make_slug($doc['name']); $feedItem->setLink("@document_by_id_lang_slug?module={$module}&id={$id}&lang={$lang}&slug={$slug}"); $feedItem->setDescription($module); $feed->addItem($feedItem); } echo $feed->asXml(ESC_RAW);
<?php use_helper('Field'); $feedItem = new sfGeoFeedItem(); $i18n = $item['RouteI18n'][0]; $summit_i18n = $item['associations'][0]['Summit'][0]['SummitI18n'][0]; $feedItem->setTitle($summit_i18n['name'] . __(' :') . ' ' . $i18n['name']); $id = $item['id']; $lang = $i18n['culture']; $feedItem->setLink("@document_by_id_lang_slug?module=routes&id={$id}&lang={$lang}&slug=" . make_slug($summit_i18n['name'] . '-' . $i18n['name'])); $feedItem->setUniqueId(sfRouting::getInstance()->getCurrentInternalUri() . '_' . $id); $feedItem->setAuthorName($item['creator']); $feedItem->setPubdate(strtotime($item['creation_date'])); $data = array(); $²data[] = get_paginated_activities($item['activities'], true); $data[] = get_paginated_value($item['facing'], 'app_routes_facings'); $data[] = $item['height_diff_up'] . __('meters'); $data[] = field_route_ratings_data($item, false); if (isset($item['geoassociations']) && count($item['geoassociations'])) { $data[] = get_paginated_areas($item['geoassociations']); } $feedItem->setDescription(implode(' - ', $data)); // FIXME: relevant? if yes, add lon/lat fields in model call //$feedItem->setLongitude($item['lon']); //$feedItem->setLatitude($item['lat']); $feed->addItem($feedItem);