function lightboxgallery_rss_feed($gallery) { global $CFG; $result = ""; $images = lightboxgallery_directory_images($CFG->dataroot . '/' . $gallery->course . '/' . $gallery->folder); $captions = array(); if ($cobjs = get_records_select('lightboxgallery_image_meta', "metatype = 'caption' AND gallery = {$gallery->id}")) { foreach ($cobjs as $cobj) { $captions[$cobj->image] = $cobj->description; } } if (!empty($images)) { $webroot = lightboxgallery_get_image_url($gallery->id); $dataroot = $CFG->dataroot . '/' . $gallery->course . '/' . $gallery->folder; $result .= "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n"; $result .= "<rss version=\"2.0\" xmlns:media=\"http://search.yahoo.com/mrss\" xmlns:atom=\"http://www.w3.org/2005/Atom\">"; $result .= rss_start_tag('channel', 1, true); $result .= rss_full_tag('title', 2, false, strip_tags(format_string($gallery->name, true))); $result .= rss_full_tag('link', 2, false, $CFG->wwwroot . '/mod/lightboxgallery/view.php?l=' . $gallery->id); $result .= rss_full_tag('description', 2, false, format_string($gallery->description, true)); $result .= rss_start_tag('image', 2, true); $result .= rss_full_tag('url', 3, false, $CFG->pixpath . '/i/rsssitelogo.gif'); $result .= rss_full_tag('title', 3, false, 'moodle'); $result .= rss_full_tag('link', 3, false, $CFG->wwwroot); $result .= rss_full_tag('width', 3, false, '140'); $result .= rss_full_tag('height', 3, false, '35'); $result .= rss_end_tag('image', 2, true); $counter = 1; foreach ($images as $image) { $description = isset($captions[$image]) ? $captions[$image] : $image; $result .= rss_start_tag('item', 2, true); $result .= rss_full_tag('title', 3, false, strip_tags($image)); $result .= rss_full_tag('link', 3, false, $webroot . '/' . $image); $result .= rss_full_tag('guid', 3, false, 'img' . $counter); $result .= rss_full_tag('media:description', 3, false, $description); $result .= rss_full_tag('media:thumbnail', 3, false, '', array('url' => lightboxgallery_get_image_url($gallery->id, $image, true))); $result .= rss_full_tag('media:content', 3, false, '', array('url' => $webroot . '/' . $image, 'type' => mime_content_type($dataroot . '/' . $image))); $result .= rss_end_tag('item', 2, true); $counter++; } $result .= rss_standard_footer(); } return $result; }
/** * Generates the rss XML code for every item passed in the array * * item->title: The title of the item * item->author: The author of the item. Optional !! * item->pubdate: The pubdate of the item * item->link: The link url of the item * item->description: The content of the item * * @param array $items an array of item objects * @return bool|string the rss XML code for every item passed in the array */ function rss_add_items($items) { global $CFG; $result = ''; if (!empty($items)) { foreach ($items as $item) { $result .= rss_start_tag('item', 2, true); //Include the category if exists (some rss readers will use it to group items) if (isset($item->category)) { $result .= rss_full_tag('category', 3, false, $item->category); } if (isset($item->tags)) { $attributes = array(); if (isset($item->tagscheme)) { $attributes['domain'] = s($item->tagscheme); } foreach ($item->tags as $tag) { $result .= rss_full_tag('category', 3, false, $tag, $attributes); } } $result .= rss_full_tag('title', 3, false, strip_tags($item->title)); $result .= rss_full_tag('link', 3, false, $item->link); $result .= rss_add_enclosures($item); $result .= rss_full_tag('pubDate', 3, false, gmdate('D, d M Y H:i:s', $item->pubdate) . ' GMT'); # MDL-12563 //Include the author if exists if (isset($item->author) && !empty($item->author)) { //$result .= rss_full_tag('author',3,false,$item->author); //We put it in the description instead because it's more important //for moodle than most other feeds, and most rss software seems to ignore //the author field ... $item->description = get_string('byname', '', $item->author) . '. <p>' . $item->description . '</p>'; } $result .= rss_full_tag('description', 3, false, $item->description); $result .= rss_full_tag('guid', 3, false, $item->link, array('isPermaLink' => 'true')); $result .= rss_end_tag('item', 2, true); } } else { $result = false; } return $result; }
function lightboxgallery_rss_header($title = null, $link = null, $description = null) { global $CFG, $USER, $OUTPUT; $status = true; $result = ""; $site = get_site(); if ($status) { // Calculate title, link and description. if (empty($title)) { $title = format_string($site->fullname); } if (empty($link)) { $link = $CFG->wwwroot; } if (empty($description)) { $description = $site->summary; } // XML headers. $result .= "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; $result .= "<rss version=\"2.0\" xmlns:media=\"http://search.yahoo.com/mrss\"" . "xmlns:atom=\"http://www.w3.org/2005/Atom\">\n"; // Open the channel. $result .= rss_start_tag('channel', 1, true); // Write channel info. $result .= rss_full_tag('title', 2, false, strip_tags($title)); $result .= rss_full_tag('link', 2, false, $link); $result .= rss_full_tag('description', 2, false, $description); $result .= rss_full_tag('generator', 2, false, 'Moodle'); if (!empty($USER->lang)) { $result .= rss_full_tag('language', 2, false, substr($USER->lang, 0, 2)); } $today = getdate(); $result .= rss_full_tag('copyright', 2, false, '© ' . $today['year'] . ' ' . format_string($site->fullname)); /* if (!empty($USER->email)) { $result .= rss_full_tag('managingEditor', 2, false, fullname($USER)); $result .= rss_full_tag('webMaster', 2, false, fullname($USER)); } */ // Write image info. $rsspix = $OUTPUT->pix_url('i/rsssitelogo'); // Write the info. $result .= rss_start_tag('image', 2, true); $result .= rss_full_tag('url', 3, false, $rsspix); $result .= rss_full_tag('title', 3, false, 'moodle'); $result .= rss_full_tag('link', 3, false, $CFG->wwwroot); $result .= rss_full_tag('width', 3, false, '140'); $result .= rss_full_tag('height', 3, false, '35'); $result .= rss_end_tag('image', 2, true); } if (!$status) { return false; } else { return $result; } }
/** * Builds the .pcast file with the users RSS token * @param object $pcast * @param string $url * @return string */ function pcast_build_pcast_file($pcast, $url) { //xml headers $result = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; $result .= "<!DOCTYPE pcast PUBLIC \"-//Apple Computer//DTD PCAST 1.0//EN\" \"http://www.itunes.com/DTDs/pcast-1.0.dtd\">\n"; $result .= rss_start_tag('pcast version="1.0"', 1, true); $result .= rss_start_tag('channel', 1, true); $result .= rss_start_tag('link rel="feed" type="application/rss+xml" href="' . $url . '" /', 2, true); $result .= rss_full_tag('title', 2, false, $pcast->name); $category = pcast_rss_category_lookup($pcast); if (isset($category->top->name) && !empty($category->top->name)) { $result .= rss_full_tag('category', 2, false, $category->top->name); } if (isset($category->nested->name) && !empty($category->nested->name)) { $result .= rss_full_tag('category', 2, false, $category->nested->name); } if (isset($pcast->subtitle) && !empty($category->subtitle)) { $result .= rss_full_tag('subtitle', 2, false, $pcast->subtitle); } $result .= rss_end_tag('channel', 1, true); $result .= rss_end_tag('pcast', 1, true); return $result; }