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;
}
Example #2
0
/**
 * 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) . '. &nbsp;<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, '&#169; ' . $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;
    }
}
Example #4
0
/**
 * 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;
}