remi / pubwich

(This project is non-longer maintained) Pubwich is an open-source PHP Web application that allows you to aggregate your published data from multiple Websites and services into a single HTML page.
http://pubwich.org
Other
64 stars 43 forks source link

Pubwich

Pubwich is an open-source PHP Web application that allows you to aggregate your published data from multiple Websites and services into a single HTML page.

Installation

Duplicate cfg/config.sample.php to cfg/config.php. (Optional: if you want to use a custom theme, duplicate themes/default to themes/your_theme_name and edit the PUBWICH_THEME constant in cfg/config.php to "your_theme_name".

Edit the newly created config.php to fill the blank spaces with your informations (API keys, usernames, site’s URL, etc.) and to modify the arguments passed to Pubwich::setServices(). See the Services configuration section of this file.

Modify your crontab file (by running crontab -e) and add the following line: */<N> * * * * <PHP> -f <ABSOLUTE_PATH>/cron/cron.php

Then replace the following elements: <N> → Cache expiration (in minutes) <PHP> → The path to PHP executable binary (usually /usr/bin/php or /usr/local/bin/php, use which php to find it) <ABSOLUTE_PATH> → Absolute path to Pubwich directory

Example: */10 * * * * /usr/bin/php -f /home/myusername/public_html/pubwich/cron/cron.php

Change the permissions on the cache directory to make it writeable for all (chmod -R 0777 cache).

Everything should be working now (when browsing to your server!).

Upgrading to Pubwich 1.4

There are a few things that you’ll need to consider when upgrading to Pubwich 1.4; Notably, Twitter OAuth support and a new templating language.

Twitter & OAuth

Before Pubwich 1.4, you needed to enter your Twitter username and password in order to make request to its API. This is called “Basic Authentication”. But since Twitter dropped support for this kind of authentication in june 2010, Pubwich doesn’t support it anymore. A small tutorial is available to show you how to create a Twitter application, get OAuth application keys and access tokens.

After you are done configuring Pubwich 1.4 to work with Twitter, you can remove your Twitter username and password parameters from your configuration file.

Custom item templates in your theme

Every theme has a functions.php file that contains at least the basic template for what Pubwich calls a “box”. Along with that boxTemplate function, you can define other templates, such as how an item is rendered for a specific service. Before Pubwich 1.4, you could use this template syntax:

function Atom_myblog_itemTemplate() {
  return '<li><a href="https://github.com/remi/pubwich/blob/master/{%url%}">{%title%}</a> - {%content%}</li>'."\n";
}

But now, with the new Mustache.php template engine, you have to use this syntax:

function Atom_myblog_itemTemplate() {
  return '<li><a href="https://github.com/remi/pubwich/blob/master/{{{url}}}">{{{title}}}</a> - {{{content}}}</li>'."\n";
}

So, basically, instead of {%variable%}, you have to use {{{variable}}}. The new template engine allows us to use conditionnals, loops and other kinds of cool stuff.

Service configuration

In Pubwich’s config.php file, a service looks like this:

array( 'Flickr', 'photos', array(
        'method' => 'FlickrUser',
        'title' => 'Flick<em>r</em>',
        'description' => 'latest photos',
        'total' => 16,
        'key' => '________',
        'userid' => '________',
        'username' => '__________',
        'row' => 4,
    )
),

Where Flickr is the service, photos is the variable and FlickrUser is the method.

These parameters can be used for all services:

Atom

Delicious

Dribbble

DribbbleShots

No specific parameters

Facebook

Flickr

FlickrUser

FlickrGroup

FlickrTags

GitHub

GithubRecentActivity

No specific parameters

GithubRepositories

No specific parameters

GithubGists

No specific parameters

Goodreads

Gowalla

GowallaUser

No specific parameters

GowallaUserStamps

No specific parameters

GowallaUserTopSpots

No specific parameters

Lastfm

LastFMRecentTracks

No specific parameters

LastFMWeeklyAlbums

LastFMTopAlbums

Pinboard

Readernaut

ReadernautBooks

ReadernautNotes

No specific parameters

Reddit

RedditLiked

No specific parameters

RSS

SlideShare

SlideShareUserSlideshows

StatusNet

StatusNetUser

No specific parameters

StatusNetSearch

Text

Twitter

TwitterUser

TwitterSearch

Vimeo

YouTube

Custom templates

When Pubwich is ready to display its data, it first looks into the theme’s functions.php file to see if custom template functions are defined. There are currently four kinds of template functions: box templates, item templates, column templates and layout templates.

Box templates

Box templates control the way whole boxes are displayed. There are a few different ways to define them:

Example:

function boxTemplate() {
    return '
        <div class="boite {{class}}" id="{{id}}">
            <h2><a rel="me" href="https://github.com/remi/pubwich/blob/master/{{{url}}}">{{{title}}}</a> <span>{{{description}}}</span></h2>
            <div class="boite-inner">
                <ul class="clearfix">
                    {{{items}}}
                </ul>
            </div>
        </div>';
}

Item templates

Item templates control the way each box item is displayed. Each service has its own default templates, but using the following function names, you can redefine them:

Example:

function Twitter_TwitterUser_itemTemplate() {
    return '<li class="clearfix {{#in_reply_to_screen_name}}reply{{/in_reply_to_screen_name}}"><span class="date"><a href="https://github.com/remi/pubwich/blob/master/{{{link}}}">{{{date}}}</a></span>{{{text}}}</li>'."\n";
}

There’s currently no documentation about which tag you can put between {{{}}} braces for which service. In the meantime, you can check a service file (located in lib/Services/<Service>.php) and look for the populateItemTemplate function.

Column templates

The column template defines how each column is rendered. You don’t have to define this template; the default used by Pubwich is this:

'<div class="col{{{number}}}">{{{content}}}</div>'

Where {{{number}}} is replaced by the column number and {{{content}}} is replaced by the column content (the boxes). For instance, you could put this in your functions.php file:

funtion columnTemplate() {
    '<div class="column column-{{{number}}}"><div class="column-inner">{{{content}}}</div></div>';
}

Layout templates

The layout template defines the columns layout. Again, you don’t have to define this template; the default layout used by Pubwich is this (eg. if you defined 3 columns in your config.php file):

'{{{col1}}} {{{col2}}} {{{col3}}}'

So each column is displayed one after the other. But if you’d like to change that layout, you can use this:

function layoutTemplate() {
    return '<div class="first-column">{{{col1}}}</div><div class="other-columns">{{{col2}}} {{{col3}}}</div>';
}