diff --git a/wp-content/plugins/flattr/callback.php b/wp-content/plugins/flattr/callback.php
deleted file mode 100644
index 93856176b65f15d59540fb5a322848a2427539f9..0000000000000000000000000000000000000000
--- a/wp-content/plugins/flattr/callback.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-if ( isset ($_REQUEST['oauth_token']) && isset ($_REQUEST['oauth_verifier']) && isset($_REQUEST['page']) && ($_REQUEST['page']=="flattr/settings.php")) {
-
-    if (session_id() == '') { session_start(); }
-
-    include_once "oAuth/flattr_rest.php";
-
-    $api_key = get_option('flattrss_api_key');
-    $api_secret = get_option('flattrss_api_secret');
-
-    $flattr = new Flattr_Rest($api_key, $api_secret, $_SESSION['flattrss_current_token']['oauth_token'], $_SESSION['flattrss_current_token']['oauth_token_secret']);
-
-    $access_token = $flattr->getAccessToken($_REQUEST['oauth_verifier']);
-
-    if ($flattr->http_code == 200) {
-
-        add_option('flattrss_api_oauth_token', $access_token['oauth_token']);
-        update_option('flattrss_api_oauth_token', $access_token['oauth_token']);
-
-        add_option('flattrss_api_oauth_token_secret', $access_token['oauth_token_secret']);
-        update_option('flattrss_api_oauth_token_secret', $access_token['oauth_token_secret']);
-
-        require_once( ABSPATH . WPINC . '/registration.php');
-        $user_id = get_current_user_id( );
-
-        update_user_meta( $user_id, "user_flattrss_api_oauth_token", $access_token['oauth_token'] );
-        update_user_meta( $user_id, "user_flattrss_api_oauth_token_secret", $access_token['oauth_token_secret'] );
-
-    } else {
-        wp_die("<h1>Callback Error.</h1><p>Please clear browser cach and cookies, then try again. Sorry for the inconvenience.</p><p align='right'>Michael Henke</p>");
-    }
-
-    header("Status: 307");
-    header("Location: ". get_bloginfo('wpurl') .'/wp-admin/admin.php?page=flattr/settings.php');
-
-    exit(307);
- }
\ No newline at end of file
diff --git a/wp-content/plugins/flattr/flattr.css b/wp-content/plugins/flattr/flattr.css
new file mode 100644
index 0000000000000000000000000000000000000000..d8f7828a95e437fcfc3512d68e5687a645e54d78
--- /dev/null
+++ b/wp-content/plugins/flattr/flattr.css
@@ -0,0 +1,61 @@
+/* 
+    Document   : flattr
+    Created on : Dec 27, 2011, 2:28:15 AM
+    Author     : Michael
+*/
+
+#icon-options-general.icon32.flattr {
+    background-image: url('img/flattr_button.png');
+    background-position: center center;
+    background-repeat: no-repeat;
+}
+
+th {
+    text-align: right;
+    vertical-align: top;
+}
+
+td {
+    vertical-align: top;
+}
+
+td input {
+    margin-right: 8px;
+}
+
+.flattr-wrap table.form-table li iframe,
+.flattr-wrap table.form-table li img {
+    vertical-align: middle;
+}
+
+.flattr-wrap span.inactive {
+    color: gray;
+}
+
+.flattr-wrap span.active:before {
+    content : " ";
+}
+
+.flattr-wrap div#dialog {
+    display: none;
+}
+
+.flattr-server-check {
+    font-weight: bold;
+}
+
+.flattr-server-check.failed {
+    color: red;
+}
+
+.flattr-server-check.passed {
+    color: green;
+}
+
+.flattr-server-check.warn {
+    color: yellow;
+}
+
+#dialog ol li {
+    list-style-type :decimal-leading-zero;
+}
\ No newline at end of file
diff --git a/wp-content/plugins/flattr/flattr.php b/wp-content/plugins/flattr/flattr.php
index 2c466e50e5c638a5d51e36ca1a13d60c3188dadb..d6ab638f9e3ba800bebee4f04d0db309372e967a 100644
--- a/wp-content/plugins/flattr/flattr.php
+++ b/wp-content/plugins/flattr/flattr.php
@@ -2,58 +2,1040 @@
 /**
  * @package Flattr
  * @author Michael Henke
- * @version 0.9.25.4.1
+ * @version 1.2.0
 Plugin Name: Flattr
 Plugin URI: http://wordpress.org/extend/plugins/flattr/
 Description: Give your readers the opportunity to Flattr your effort
-Version: 0.9.25.4.1
+Version: 1.2.0
 Author: Michael Henke
-Author URI: http://allesblog.de/
+Author URI: http://www.codingmerc.com/tags/flattr/
 License: This code is (un)licensed under the kopimi (copyme) non-license; http://www.kopimi.com. In other words you are free to copy it, taunt it, share it, fork it or whatever. :)
 Comment: The author of this plugin is not affiliated with the flattr company in whatever meaning.
  */
 
-if (version_compare(PHP_VERSION, '5.0.0', '<'))
+class Flattr
 {
-	require_once( WP_PLUGIN_DIR . '/' . plugin_basename( dirname(__FILE__) ) . '/flattr4.php');
+    /**
+     * @deprecated
+     */
+    const API_SCRIPT = 'api.flattr.com/js/0.6/load.js?mode=auto';
+
+    const FLATTR_DOMAIN = 'flattr.com';
+
+    const VERSION = "1.2.0";
+
+    /**
+     * We should only create Flattr once - make it a singleton
+     */
+    protected static $instance;
+
+    /**
+     * Are we running on default or secure http?
+     * @var String http:// or https:// protocol
+     */
+    var $proto = "http://";
+
+    /**
+     * construct and initialize Flattr object
+     */
+    protected function __construct() {
+        if ( isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'])
+            $this->proto = 'https://';
+
+        self::default_options();
+
+        if (is_admin()) {
+            $this->backend();
+        } else {
+            $this->frontend();
+        }
+
+        if (empty($this->postMetaHandler)) {
+            require_once( plugin_dir_path( __FILE__ ) . 'postmeta.php');
+            $this->postMetaHandler = new Flattr_PostMeta();
+        }
+
+        add_action( 'widgets_init', array( $this, 'register_widget' ) );
+        add_shortcode( 'flattr', array( $this, 'register_shortcode' ) );
+    }
+
+    /**
+     * prepare Frontend
+     */
+    protected function frontend() {
+        if (!in_array(get_option('flattr_button_style'), array('text', 'image'))) {
+            add_action('wp_print_footer_scripts', array($this, 'insert_script'));
+        }
+
+        add_action('wp_head', array($this, 'injectIntoHead'));
+
+        if (get_option('flattr_aut') || get_option('flattr_aut_page')) {
+            add_action('the_content', array($this, 'injectIntoTheContent'), 32767);
+        }
+    }
+
+    /**
+     * prepare Dashboard
+     */
+    protected function backend() {
+        add_action('wp_print_footer_scripts', array($this, 'insert_script'));
+        add_action('admin_init', array($this, 'ajax'));
+        add_action('admin_init', array($this, 'insert_wizard'));
+        add_action('admin_init', array( $this, 'register_settings') );
+        add_action('admin_init', array( $this, 'update_user_meta') );
+        add_action('admin_menu', array( $this, 'settings') );
+    }
+
+    public static function getInstance()
+    {
+        if (!isset(self::$instance))
+        {
+            try
+            {
+                self::$instance = new self();
+            }
+            catch(Exception $e)
+            {
+                Flattr_Logger::log($e->getMessage(), 'Flattr_View::getInstance');
+                self::$instance = false;
+            }
+        }
+        return self::$instance;
+    }
+
+    public function ajax () {
+
+        if (isset ($_GET["q"], $_GET["flattrJAX"])) {
+            define('PASS', "passed");
+            define('FAIL', "failed");
+            define('WARN', "warn");
+
+            $feature = $_GET["q"];
+
+            $retval = array();
+            $retval["result"] = FAIL;
+            $retval["feature"] = $feature;
+            $retval["text"] = $retval["result"];
+
+            switch ($feature) {
+                case "cURL" :
+                    if (function_exists("curl_init")) {
+                        $retval["result"] = PASS;
+                        $retval["text"] = "curl_init";
+                    }
+                    break;
+                case "php" :
+                        $retval["text"] = PHP_VERSION;
+                    if (version_compare(PHP_VERSION, '5.0.0', '>')) {
+                        $retval["result"] = WARN;
+                    }
+                    if (version_compare(PHP_VERSION, '5.2.0', '>=')) {
+                        $retval["result"] = PASS;
+                    }
+                    break;
+                case "oAuth" :
+                    if (!class_exists('OAuth2Client')) {
+                        $retval["result"] = PASS;
+                        $retval["text"] = 'OAuth2Client';
+                    }
+                    break;
+                case "Wordpress" :
+                    require '../wp-includes/version.php';
+                    $retval["text"] = $wp_version;
+                    if (version_compare($wp_version, '3.0', '>=')) {
+                        $retval["result"] = WARN;
+                    }
+                    if (version_compare($wp_version, '3.3', '>=')) {
+                        $retval["result"] = PASS;
+                    }
+                    break;
+                case "Flattr" :
+                    $retval["text"] = "Flattr API v2";
+                    
+                    $ch = curl_init ('https://api.' . self::FLATTR_DOMAIN . '/rest/v2/users/der_michael');
+                    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true) ;
+                    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false) ;
+                    $res = curl_exec ($ch) ;
+                    $res = json_decode($res);
+                    if (isset($res->type)) {
+                        $retval["text"] = "connection established";
+                        $retval["result"] = PASS;
+                    } else {
+                        $retval["text"] = "curl connection error ".curl_error($ch);
+                    }
+                    curl_close ($ch) ;
+                    break;
+                default :
+                    break;
+            }
+
+            print json_encode($retval);
+            exit (0);
+        } elseif (isset ($_GET["flattrss_api_key"], $_GET["flattrss_api_secret"], $_GET["flattrJAX"])) {
+            $retval = array ( "result" => -1,
+                              "result_text" => "uninitialised" );
+            
+            $callback = urlencode(home_url()."/wp-admin/admin.php?page=flattr/flattr.php");
+            
+            $key = $_GET["flattrss_api_key"];
+            $sec = $_GET["flattrss_api_secret"];
+            
+            update_option('flattrss_api_key', $key);
+            update_option('flattrss_api_secret', $sec);
+            
+            include_once 'flattr_client.php';
+            
+            $client = new OAuth2Client(array_merge(array(
+                'client_id'         => $key,
+                'client_secret'     => $sec,
+                'base_url'          => 'https://api.' . self::FLATTR_DOMAIN . '/rest/v2',
+                'site_url'          => 'https://' . self::FLATTR_DOMAIN,
+                'authorize_url'     => 'https://' . self::FLATTR_DOMAIN . '/oauth/authorize',
+                'access_token_url'  => 'https://' . self::FLATTR_DOMAIN . '/oauth/token',
+
+                'redirect_uri'      => $callback,
+                'scopes'            => 'thing+flattr',
+                'token_param_name'  => 'Bearer',
+                'response_type'     => 'code',
+                'grant_type'        => 'authorization_code',
+                'access_token'      => null,
+                'refresh_token'     => null,
+                'code'              => null,
+                'developer_mode'    => false
+            ))); 
+            
+            $retval["result_text"] = $client->authorizeUrl();
+            $retval["result"] = 0;
+            print json_encode($retval);
+
+            exit (0);
+        } elseif (isset ($_GET["code"], $_GET["flattrJAX"])) {
+            $retval = array ( "result" => -1,
+                              "result_text" => "uninitialised" );
+            
+            $callback = urlencode(home_url()."/wp-admin/admin.php?page=flattr/flattr.php");
+            
+            $key = get_option('flattrss_api_key');
+            $sec = get_option('flattrss_api_secret');
+            
+            
+            include_once 'flattr_client.php';
+            
+            $access_token = get_option('flattr_access_token', true);
+            
+            try { 
+            
+                $client = new OAuth2Client( array_merge(array(
+                    'client_id'         => $key,
+                    'client_secret'     => $sec,
+                    'base_url'          => 'https://api.' . self::FLATTR_DOMAIN . '/rest/v2',
+                    'site_url'          => 'https://' . self::FLATTR_DOMAIN,
+                    'authorize_url'     => 'https://' . self::FLATTR_DOMAIN . '/oauth/authorize',
+                    'access_token_url'  => 'https://' . self::FLATTR_DOMAIN . '/oauth/token',
+
+                    'redirect_uri'      => $callback,
+                    'scopes'            => 'thing+flattr',
+                    'token_param_name'  => 'Bearer',
+                    'response_type'     => 'code',
+                    'grant_type'        => 'authorization_code',
+                    'refresh_token'     => null,
+                    'code'              => null,
+                    'developer_mode'    => false,
+
+                    'access_token'      => $access_token
+                )));
+                
+                $user = $client->getParsed('/user');
+                
+                $retval["result_text"] = '<img style="float:right;width:48px;height:48px;border:0;" src="'. $user['avatar'] .'"/>'.
+                                         '<h3>'.$user['username'].'</h3>'.
+                                         '<ul><li>If this is your name and avatar authentication was successfull.</li>'.
+                                         '<li>If the name displayed and avatar do not match <a href="/wp-admin/admin.php?page=flattr/flattr.php">start over</a>.</li>'.
+                                         '<li>You need to authorize your blog once only!</li></ul>';
+                
+            } catch (Exception $e) {
+                $retval["result_text"] = '<h3>Error</h3><p>'.$e->getMessage().'</p>';
+            }
+            
+            
+            $retval["result"] = 0;
+            print json_encode($retval);
+
+            exit (0);
+        }
+    }
+
+    /**
+     * initialize default options
+     */
+    protected static function default_options() {
+        // If this is a new install - then set the defaults to some non-disruptive
+        $new_install = (get_option('flattr_post_types', false) == false);
+
+        add_option('flattr_global_button', $new_install? true : false);
+
+        add_option('flattr_post_types', array('post','page'));
+        add_option('flattr_lng', 'en_GB');
+        add_option('flattr_aut', true);
+        add_option('flattr_aut_page', true);
+        add_option('flattr_atags', 'blog');
+        add_option('flattr_cat', 'text');
+        add_option('flattr_top', false);
+        add_option('flattr_compact', false);
+        add_option('flattr_popout_enabled', true);
+        add_option('flattr_button_style', "js");
+        add_option('flattrss_custom_image_url', get_bloginfo('wpurl') . '/wp-content/plugins/flattr/img/flattr-badge-large.png');
+        add_option('user_based_flattr_buttons', false);
+        add_option('user_based_flattr_buttons_since_time', time());
+        add_option('flattrss_button_enabled', true);
+        add_option('flattrss_relpayment_enabled', true);
+        add_option('flattr_relpayment_enabled', true);
+        add_option('flattrss_relpayment_escaping_disabled', false);
+    }
+
+    public function attsNormalize( $value ) {
+        return ($value == 'n' || $value == 'no' || $value == 'off' || empty($value)) ? false : $value;
+    }
+
+    public function register_shortcode( $atts ) {
+        $atts = array_map( array( $this, 'attsNormalize' ), $atts );
+
+        $atts = shortcode_atts( array(
+            'user'        => null,
+            'popout'      => get_option('flattr_popout_enabled'),
+            'url'         => null,
+            'compact'     => get_option('flattr_compact'),
+            'hidden'      => get_option('flattr_hide'),
+            'language'    => str_replace('-', '_', get_bloginfo('language')),
+            'category'    => get_option('flattr_cat', 'text'),
+            'title'       => null,
+            'description' => null,
+            'tags'        => null,
+            'type'        => get_option('flattr_button_style'),
+        ), $atts );
+
+        if ($atts['type'] == 'url') {
+            $atts['type'] = 'autosubmitUrl';
+        } else if ($atts['type'] == 'compact') {
+            $atts['type'] = 'js';
+            $atts['compact'] = true;
+        }
+
+        $button = $this->getNonPostButton(array(
+            'user_id'     => $atts['user'],
+            'popout'      => $atts['popout'] == true,
+            'url'         => $atts['url'],
+            'compact'     => $atts['compact'] == true,
+            'hidden'      => $atts['hidden'] == true,
+            'language'    => empty($atts['language']) ? 'en_GB' : $atts['language'],
+            'category'    => $atts['category'],
+            'title'       => $atts['title'],
+            'description' => $atts['description'],
+            'tags'        => $atts['tags'],
+        ), $atts['type']);
+
+        return empty($button) ? '' : $button;
+    }
+
+    public function register_widget() {
+        register_widget( 'Flattr_Global_Widget' );
+    }
+
+    public function admin_script() {
+        static $added = false;
+        if (!$added) {
+            $this->insert_script();
+            $added = true;
+        }
+    }
+
+    public function insert_script() {
+        ?><script type="text/javascript">
+          (function() {
+            var s = document.createElement('script'), t = document.getElementsByTagName('script')[0];
+            s.type = 'text/javascript';
+            s.async = true;
+            s.src = '<?php echo $this->proto . "api." . self::FLATTR_DOMAIN . "/js/0.6/load.js?mode=auto"; ?>';
+            t.parentNode.insertBefore(s, t);
+          })();
+        </script><?php
+    }
+
+    public function insert_wizard() {
+        wp_enqueue_script( 'jquery-ui-dialog' );
+        wp_enqueue_script( 'jquery-ui-datepicker' );
+
+        wp_deregister_script( 'flattrscriptwizard' );
+        wp_register_script( 'flattrscriptwizard', get_bloginfo('wpurl') . '/wp-content/plugins/flattr/wizard.js');
+        wp_enqueue_script( 'flattrscriptwizard' );
+    }
+
+    public function update_user_meta() {
+        if (isset($_POST['user_flattr_uid'], $_POST['user_flattr_cat'], $_POST['user_flattr_lng'])) {
+            $user_id = get_current_user_id( );
+
+            update_user_meta( $user_id, "user_flattr_uid", $_POST['user_flattr_uid'] );
+            update_user_meta( $user_id, "user_flattr_cat", $_POST['user_flattr_cat'] );
+            update_user_meta( $user_id, "user_flattr_lng", $_POST['user_flattr_lng'] );
+        }
+    }
+
+    public function register_settings() {
+        register_setting('flattr-settings-group', 'flattr_post_types');
+        register_setting('flattr-settings-group', 'flattr_uid');
+        register_setting('flattr-settings-group', 'flattr_lng');
+        register_setting('flattr-settings-group', 'flattr_atags');
+        register_setting('flattr-settings-group', 'flattr_cat');
+        register_setting('flattr-settings-group', 'flattr_compact');
+        register_setting('flattr-settings-group', 'flattr_top');
+        register_setting('flattr-settings-group', 'flattr_hide');
+        register_setting('flattr-settings-group', 'flattr_button_style');
+        register_setting('flattr-settings-group', 'flattrss_custom_image_url');
+        register_setting('flattr-settings-group', 'user_based_flattr_buttons');
+        register_setting('flattr-settings-group', 'user_based_flattr_buttons_since_time', 'strtotime');
+        register_setting('flattr-settings-group', 'flattr_global_button');
+        register_setting('flattr-settings-group', 'flattrss_button_enabled');
+        register_setting('flattr-settings-group', 'flattrss_relpayment_enabled');
+        register_setting('flattr-settings-group', 'flattr_relpayment_enabled');
+        register_setting('flattr-settings-group', 'flattrss_relpayment_escaping_disabled');
+        register_setting('flattr-settings-group', 'flattr_aut_page');
+        register_setting('flattr-settings-group', 'flattr_aut');
+        register_setting('flattr-settings-group', 'flattr_popout_enabled');
+    }
+
+    public function settings() {
+        $menutitle = __('Flattr', 'flattr');
+
+        /**
+         * Where to put the flattr settings menu
+         */
+        if (get_option('user_based_flattr_buttons')) {
+            $page = add_submenu_page( "users.php", __('Flattr User Settings'), __('Flattr'), "edit_posts", __FILE__."?user", array($this, 'render_user_settings'));
+            add_action( 'admin_print_styles-' . $page, array ($this, 'admin_styles'));
+        }
+
+        $cap = "manage_options";
+        add_menu_page('Flattr',  $menutitle, $cap, __FILE__, '', get_bloginfo('wpurl') . '/wp-content/plugins/flattr'.'/img/flattr-icon_new.png');
+        $page = add_submenu_page( __FILE__, __('Flattr'), __('Flattr'), $cap, __FILE__, array($this, 'render_settings'));
+
+        /**
+         * Using registered $page handle to hook stylesheet loading for admin pages
+         * @see http://codex.wordpress.org/Function_Reference/wp_enqueue_style
+         */
+        add_action( 'admin_print_styles-' . $page, array ($this, 'admin_styles'));
+    }
+
+    /**
+     * Include custom styles for admin pages
+     */
+    public function admin_styles() {
+        wp_register_style( 'flattr_admin_style', plugins_url('flattr.css', __FILE__) );
+        wp_enqueue_style( 'flattr_admin_style' );
+        wp_register_style( 'flattr-jquery-ui-style', plugins_url('jquery-ui/style.css', __FILE__) );
+        wp_enqueue_style( 'flattr-jquery-ui-style' );
+    }
+
+    public function render_user_settings() {
+        include('settings-templates/header.php');
+        include('settings-templates/user.php');
+        include('settings-templates/footer.php');
+    }
+
+    public function render_settings() {
+        include('settings-templates/header.php');
+        include('settings-templates/plugin.php');
+        include('settings-templates/footer.php');
+    }
+
+    public function injectIntoHead() {
+        if ( (!is_front_page() && !is_singular()) || is_attachment() || post_password_required() || !get_option('flattr_relpayment_enabled')) {
+            return;
+        }
+
+        if (is_front_page()) {
+            $url = get_option('flattr_global_button') ? $this->getGlobalButton('autosubmitUrl') : false;
+        } else if (in_array(get_post_type(), (array)get_option('flattr_post_types', array()))) {
+            $url = $this->getButton('autosubmitUrl');
+        }
+
+        if (!empty($url))
+        {
+            $link = '<link rel="payment" type="text/html" title="Flattr this!" href="' . esc_attr($url) . '" />' . "\n";
+            echo apply_filters( 'flattr_inject_into_head', $link );
+        }
+    }
+
+    /**
+     * Insert the flattr button into the post content
+     * @global type $post
+     * @param type $content
+     * @return string 
+     */
+    public function injectIntoTheContent($content) {
+        static $processingPosts = array();
+
+        global $post;
+
+        if ( post_password_required($post->ID) ) {
+            return $content;
+        }
+
+        if ( ( is_page($post) && !get_option('flattr_aut_page') ) || !get_option('flattr_aut') ) {
+            return $content;
+        }
+
+        if (in_array(get_post_type(), (array)get_option('flattr_post_types', array())) && !is_feed()) {
+            if (isset($processingPosts[$post->ID])) {
+                return $content;
+            } else {
+                $processingPosts[$post->ID] = true;
+            }
+            $button = $this->getButton();
+            $button = '<p class="wp-flattr-button">'.$button.'</p>';
+
+            if ( get_option('flattr_top', false) ) {
+                    $content = $button . $content;
+            }
+            else {
+                    $content = $content . $button;
+            }
+            unset($processingPosts[$post->ID]);
+        }
+        return $content;
+    }
+
+    public function getGlobalButton($type = null) {
+        $flattr_uid = get_option('flattr_uid');
+
+        if (empty($flattr_uid)) {
+            return false;
+        }
+
+        $buttonData = array(
+            'user_id'     => $flattr_uid,
+            'popout'      => (get_option('flattr_popout_enabled', true) ? 1 : 0 ),
+            'url'         => site_url('/'),
+            'compact'     => (get_option('flattr_compact', false) ? true : false ),
+            'hidden'      => get_option('flattr_hide'),
+            'language'    => str_replace('-', '_', get_bloginfo('language')),
+            'category'    => get_option('flattr_cat', 'text'),
+            'title'       => get_bloginfo('name'),
+            'description' => get_bloginfo('description'),
+            'tags'        => get_option('flattr_atags', 'blog'),
+        );
+
+        return $this->getNonPostButton($buttonData, $type);
+    }
+
+    public function getNonPostButton(array $buttonData, $type = null) {
+        switch (empty($type) ? get_option('flattr_button_style') : $type) {
+            case "text":
+                $retval = '<a href="'. esc_attr($this->getAutosubmitUrl($buttonData)) .'" title="Flattr" target="_blank">Flattr this!</a>';
+                break;
+            case "image":
+                $retval = '<a href="'. esc_attr($this->getAutosubmitUrl($buttonData)) .'" title="Flattr" target="_blank"><img src="'. get_bloginfo('wpurl') . '/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a>';
+                break;
+            case "autosubmitUrl":
+                $retval = $this->getAutosubmitUrl($buttonData);
+                break;
+            default:
+                $retval = $this->getButtonCode($buttonData);
+        }
+
+        return $retval;
+    }
+
+    /**
+     * https://flattr.com/submit/auto?user_id=USERNAME&url=URL&title=TITLE&description=DESCRIPTION&language=LANGUAGE&tags=TAGS&hidden=HIDDEN&category=CATEGORY
+     * @see http://blog.flattr.net/2011/11/url-auto-submit-documentation/
+     */
+    public function getButton($type = null, $post = null) {
+        if (!$post)
+        {
+            $post = $GLOBALS['post'];
+        }
+
+        if (get_post_meta($post->ID, '_flattr_btn_disabled', true))
+        {
+                return '';
+        }
+        if (get_option('user_based_flattr_buttons_since_time') == '' || intval(get_option('user_based_flattr_buttons_since_time')) < strtotime(get_the_time("c",$post))) {
+            $flattr_uid = (get_option('user_based_flattr_buttons')&& get_user_meta(get_the_author_meta('ID'), "user_flattr_uid", true)!="")? get_user_meta(get_the_author_meta('ID'), "user_flattr_uid", true): get_option('flattr_uid');
+        } else {
+            $flattr_uid = get_option('flattr_uid');
+        }
+
+        if (!$flattr_uid) {
+                return '';
+        }
+
+        $selectedLanguage = get_post_meta($post->ID, '_flattr_post_language', true);
+        if (empty($selectedLanguage)) {
+                $selectedLanguage = (get_user_meta(get_the_author_meta('ID'), "user_flattr_lng", true)!="")? get_user_meta(get_the_author_meta('ID'), "user_flattr_lng", true): get_option('flattr_lng');
+        }
+
+        $additionalTags = get_option('flattr_atags', 'blog');
+
+        $selectedCategory = get_post_meta($post->ID, '_flattr_post_category', true);
+        if (empty($selectedCategory)) {
+                $selectedCategory = (get_option('user_based_flattr_buttons')&& get_user_meta(get_the_author_meta('ID'), "user_flattr_cat", true)!="")? get_user_meta(get_the_author_meta('ID'), "user_flattr_cat", true): get_option('flattr_cat');
+        }
+
+        $hidden = get_post_meta($post->ID, '_flattr_post_hidden', true);
+        if ($hidden == '') {
+                $hidden = get_option('flattr_hide', false);
+        }
+
+        $description = get_the_content('');
+        $description = strip_shortcodes( $description );
+        $description = apply_filters('the_content', $description);
+        $description = str_replace(']]>', ']]&gt;', $description);
+        $description = wp_trim_words( $description, 30, '...' );
+
+        $customUrl = get_post_meta($post->ID, '_flattr_post_customurl', true);
+        $buttonUrl = (empty($customUrl) ? get_permalink() : $customUrl);
+
+        $buttonData = array(
+
+            'user_id'     => $flattr_uid,
+            'popout'      => (get_option('flattr_popout_enabled', true) ? 1 : 0 ),
+            'url'         => $buttonUrl,
+            'compact'     => (get_option('flattr_compact', false) ? true : false ),
+            'hidden'      => $hidden,
+            'language'    => $selectedLanguage,
+            'category'    => $selectedCategory,
+            'title'       => strip_tags(get_the_title()),
+            'description' => $description,
+            'tags'        => trim(strip_tags(get_the_tag_list('', ',', '')) . ',' . $additionalTags, ', ')
+
+        );
+
+        if (empty($buttonData['description']) && !in_array($buttonData['category'], array('images', 'video', 'audio')))
+        {
+                $buttonData['description'] = get_bloginfo('description');
+
+                if (empty($buttonData['description']) || strlen($buttonData['description']) < 5)
+                {
+                        $buttonData['description'] = $buttonData['title'];
+                }
+        }
+
+
+        if (isset($buttonData['user_id'], $buttonData['url'], $buttonData['language'], $buttonData['category']))
+        {
+                switch (empty($type) ? get_option('flattr_button_style') : $type) {
+                    case "text":
+                        $retval = '<a href="'. static_flattr_url($post).'" title="Flattr" target="_blank">Flattr this!</a>';
+                        break;
+                    case "image":
+                        $retval = '<a href="'. static_flattr_url($post).'" title="Flattr" target="_blank"><img src="'. get_bloginfo('wpurl') . '/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a>';
+                        break;
+                    case "autosubmitUrl":
+                        $retval = $this->getAutosubmitUrl($buttonData);
+                        break;
+                    default:
+                        $retval = $this->getButtonCode($buttonData);
+                }
+                return $retval;
+        }
+        return '';
+    }
+
+    protected function getButtonCode($params)
+    {
+        $rev = '';
+        if (!empty($params['user_id'])) {
+            $rev .= sprintf('uid:%s;language:%s;category:%s;',
+                $params['user_id'],
+                $params['language'],
+                $params['category']
+            );
+
+            if (!empty($params['tags']))
+            {
+                $rev .= 'tags:'. htmlspecialchars($params['tags']) .';';
+            }
+
+            if ($params['hidden'])
+            {
+                $rev .= 'hidden:1;';
+            }
+        }
+
+        if (empty($params['popout']))
+        {
+            $rev .= 'popout:' . ($params['popout'] ? 1 : 0) . ';';
+        }
+
+        if (!empty($params['compact']))
+        {
+            $rev .= 'button:compact;';
+        }
+
+        return '<a class="FlattrButton" style="display:none;" href="' . esc_attr($params['url']) . '"' .
+            (!empty($params['title']) ? ' title=" ' . esc_attr($params['title']) . '"' : '') .
+            (!empty($rev) ? ' rev="flattr;' . $rev . '"' : '') .
+            '>' .
+                esc_html(empty($params['description']) ? '' : $params['description']) .
+            '</a>';
+    }
+
+    function getAutosubmitUrl($params) {
+        if (isset($params['compact'])) {
+            unset($params['compact']);
+        }
+
+        $params = (empty($params['user_id']) ? array('url' => $params['url']) : array_filter($params));
+
+        return 'https://' . self::FLATTR_DOMAIN . '/submit/auto?' . http_build_query($params);
+    }
+
+    protected static $languages;
+    public static function getLanguages() {
+        if (empty(self::$languages)) {
+            self::$languages['sq_AL'] = 'Albanian';
+            self::$languages['ar_DZ'] = 'Arabic';
+            self::$languages['be_BY'] = 'Belarusian';
+            self::$languages['bg_BG'] = 'Bulgarian';
+            self::$languages['ca_ES'] = 'Catalan';
+            self::$languages['zh_CN'] = 'Chinese';
+            self::$languages['hr_HR'] = 'Croatian';
+            self::$languages['cs_CZ'] = 'Czech';
+            self::$languages['da_DK'] = 'Danish';
+            self::$languages['nl_NL'] = 'Dutch';
+            self::$languages['en_GB'] = 'English';
+            self::$languages['et_EE'] = 'Estonian';
+            self::$languages['fi_FI'] = 'Finnish';
+            self::$languages['fr_FR'] = 'French';
+            self::$languages['de_DE'] = 'German';
+            self::$languages['el_GR'] = 'Greek';
+            self::$languages['iw_IL'] = 'Hebrew';
+            self::$languages['hi_IN'] = 'Hindi';
+            self::$languages['hu_HU'] = 'Hungarian';
+            self::$languages['is_IS'] = 'Icelandic';
+            self::$languages['in_ID'] = 'Indonesian';
+            self::$languages['ga_IE'] = 'Irish';
+            self::$languages['it_IT'] = 'Italian';
+            self::$languages['ja_JP'] = 'Japanese';
+            self::$languages['ko_KR'] = 'Korean';
+            self::$languages['lv_LV'] = 'Latvian';
+            self::$languages['lt_LT'] = 'Lithuanian';
+            self::$languages['mk_MK'] = 'Macedonian';
+            self::$languages['ms_MY'] = 'Malay';
+            self::$languages['mt_MT'] = 'Maltese';
+            self::$languages['no_NO'] = 'Norwegian';
+            self::$languages['pl_PL'] = 'Polish';
+            self::$languages['pt_PT'] = 'Portuguese';
+            self::$languages['ro_RO'] = 'Romanian';
+            self::$languages['ru_RU'] = 'Russian';
+            self::$languages['sr_RS'] = 'Serbian';
+            self::$languages['sk_SK'] = 'Slovak';
+            self::$languages['sl_SI'] = 'Slovenian';
+            self::$languages['es_ES'] = 'Spanish';
+            self::$languages['sv_SE'] = 'Swedish';
+            self::$languages['th_TH'] = 'Thai';
+            self::$languages['tr_TR'] = 'Turkish';
+            self::$languages['uk_UA'] = 'Ukrainian';
+            self::$languages['vi_VN'] = 'Vietnamese';
+        }
+
+        return self::$languages;
+    }
+
+    protected static $categories;
+    public static function getCategories() {
+        if (empty(self::$categories)) {
+            self::$categories = array('text', 'images', 'audio', 'video', 'software', 'rest');
+        }
+        return self::$categories;
+    }
+}
+
+class Flattr_Global_Widget extends WP_Widget {
+
+    function __construct() {
+        $widget_ops = array( 'classname' => 'widget_flattrglobal', 'description' => 'Contains a Flattr button for flattring the site' );
+        parent::__construct( 'flattrglobalwidget', 'Flattr Site Button', $widget_ops );
+    }
+
+    function widget( $args, $instance ) {
+        extract($args);
+        $title = apply_filters('widget_title', empty($instance['title']) ? '' : $instance['title'], $instance, $this->id_base);
+
+        echo $before_widget;
+
+        if ($title) {
+            echo $before_title . $title . $after_title;
+        }
+
+        echo Flattr::getInstance()->getGlobalButton();
+
+        echo $after_widget;
+    }
+
+    function update( $new_instance, $old_instance ) {
+        $instance = $old_instance;
+        $instance['title'] = strip_tags($new_instance['title']);
+
+        return $instance;
+    }
+
+    function form( $instance ) {
+        $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) );
+        $title = strip_tags($instance['title']);
+        ?><p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></p>
+<?php
+    }
+}
+
+
+function static_flattr_url($post) {
+    $id = $post->ID;
+    $md5 = md5($post->post_title);
+
+    return (get_bloginfo('wpurl') .'/?flattrss_redirect&amp;id='.$id.'&amp;md5='.$md5);
+}
+
+function flattr_post2rss($content) {
+    global $post;
+
+    $flattr = "";
+    $flattr_post_types = (array)get_option('flattr_post_types', array());
+
+    $meta = get_post_meta($post->ID, '_flattr_btn_disable');
+
+    $postmeta = isset($meta['_flattr_btn_disable'])? $meta['_flattr_btn_disable'] : true;
+
+    if (($postmeta) && is_feed() && in_array(get_post_type(), $flattr_post_types)) {
+        $flattr.= ' <p><a href="'. static_flattr_url($post).'" title="Flattr" target="_blank"><img src="'. get_option('flattrss_custom_image_url') .'" alt="flattr this!"/></a></p>';
+    }
+    return ($content.$flattr);
+}
+
+add_action('init', 'new_flattrss_redirect');
+add_action('init', 'flattr_init');
+
+function flattr_init() {
+    include_once 'init.php';
+}
+
+function new_flattrss_redirect() {
+    include_once 'redirect.php';
+}
+
+if(get_option('flattrss_button_enabled')) {
+    add_filter('the_content_feed', 'flattr_post2rss',999999);
+}
+
+add_action('atom_head', 'flattr_feed_atom_head');
+add_action('rss2_head', 'flattr_feed_rss2_head');
+add_action('atom_entry', 'flattr_feed_atom_item');
+add_action('rss2_item', 'flattr_feed_rss2_item');
+
+function flattr_feed_escape($string) {
+    if (get_option('flattrss_relpayment_escaping_disabled')) {
+        return $string;
+    }
+    return esc_attr($string);
+}
+
+function flattr_feed_atom_head() {
+    if (get_option('flattrss_relpayment_enabled') && get_option('flattr_global_button')) {
+        echo '	<link rel="payment" title="Flattr this!" href="' . flattr_feed_escape(Flattr::getInstance()->getGlobalButton('autosubmitUrl')) . '" type="text/html" />'."\n";
+    }
+}
+
+function flattr_feed_rss2_head() {
+    if (get_option('flattrss_relpayment_enabled') && get_option('flattr_global_button')) {
+        echo '	<atom:link rel="payment" title="Flattr this!" href="' . flattr_feed_escape(Flattr::getInstance()->getGlobalButton('autosubmitUrl')) . '" type="text/html" />'."\n";
+    }
 }
-else
-{
-	require_once( WP_PLUGIN_DIR . '/' . plugin_basename( dirname(__FILE__) ) . '/flattr5.php');
 
-        $flattr_check = array();
+function flattr_feed_atom_item() {
+    global $post;
+    if (get_option('flattrss_relpayment_enabled') && in_array(get_post_type($post), (array)get_option('flattr_post_types', array()))) {
+        $url = Flattr::getInstance()->getButton("autosubmitUrl", $post);
+        if (!empty($url)) {
+            echo '		<link rel="payment" title="Flattr this!" href="' . flattr_feed_escape($url) . '" type="text/html" />'."\n";
+        }
+    }
+}
 
-        if (isset ($_POST['flattr_warn_ignore'])) {
-            update_option('flattr_warn_ignore_version', Flattr::VERSION);
+function flattr_feed_rss2_item() {
+    global $post;
+    if (get_option('flattrss_relpayment_enabled') && in_array(get_post_type($post), (array)get_option('flattr_post_types', array()))) {
+        $url = Flattr::getInstance()->getButton("autosubmitUrl", $post);
+        if (!empty($url)) {
+            echo '	<atom:link rel="payment" title="Flattr this!" href="' . flattr_feed_escape($url) . '" type="text/html" />'."\n";
         }
-        
-        if (version_compare(get_option('flattr_warn_ignore_version'), Flattr::VERSION, '!=')) {
-            $flattr_check['DOMDocument'] = class_exists('DOMDocument');
-            $flattr_check['cURL'] = function_exists('curl_init');
-            $flattr_check['libxml'] = defined('LIBXML_VERSION');
+    }
+}
+
+
+$call_n = 0; # Do not delete! It will break autosubmit.
+function new_flattrss_autosubmit_action () {
 
-            if (in_array(FALSE, $flattr_check)) {
-                add_action( 'admin_notices','flattrCheckAdminNotice' );
+    global $call_n;
+
+    $call_n += 1;
+    $post = $_POST;
+
+    if (($post['post_status'] == "publish") && (get_post_meta($post['ID'], "flattrss_autosubmited", true)=="") && ($call_n == 2) && (get_the_time('U') <= time())) {
+
+        $url = get_permalink($post['ID']);
+        $tagsA = get_the_tags($post['ID']);
+        $tags = "";
+
+        if (!empty($tagsA)) {
+            foreach ($tagsA as $tag) {
+                if (strlen($tags)!=0){
+                    $tags .=",";
+                }
+                $tags .= $tag->name;
             }
         }
 
-        function flattrCheckAdminNotice() {
+        $additionalTags = get_option('flattr_atags', 'blog');
+        if (!empty($additionalTags)) {
+            $tags .= ',' . $additionalTags;
+        }
+        $tags = trim($tags, ', ');
 
-                global $flattr_check;
-                echo '<div id="message" class="error">';
-                echo '<div style="float:right"><form method="post">'.
-                     '<input type="submit" class="button" name="flattr_warn_ignore" value="Ignore"/>'.
-                     '</form></div>';
-                if (!$flattr_check['DOMDocument']) {
-                    echo '<p><strong>Warning:</strong> You need <a href="http://php.net/manual/en/dom.installation.php" target="_blank">DOM support</a> enabled for Flattr Plugin to work properly.</p>';
+        $category = "text";
+        if (get_option('flattr_cat')!= "") {
+            $category = get_option('flattr_cat');
+        }
+
+        $language = "en_EN";
+        if (get_option('flattr_lng')!="") {
+            $language = get_option('flattr_lng');
+        }
+
+        if (!function_exists('getExcerpt')) {
+            function getExcerpt($post, $excerpt_max_length = 1024) {
+
+                $excerpt = $post['post_excerpt'];
+                if (trim($excerpt) == "") {
+                        $excerpt = $post['post_content'];
                 }
-                if (!$flattr_check['cURL']) {
-                    echo '<p><strong>Warning:</strong> You need <a href="http://php.net/manual/en/curl.installation.php" target="_blank">cURL support</a> enabled for Flattr Plugin to work properly.</p>';
+
+                $excerpt = strip_shortcodes($excerpt);
+                $excerpt = strip_tags($excerpt);
+                $excerpt = str_replace(']]>', ']]&gt;', $excerpt);
+
+                // Hacks for various plugins
+                $excerpt = preg_replace('/httpvh:\/\/[^ ]+/', '', $excerpt); // hack for smartyoutube plugin
+                $excerpt = preg_replace('%httpv%', 'http', $excerpt); // hack for youtube lyte plugin
+
+                // Try to shorten without breaking words
+                if ( strlen($excerpt) > $excerpt_max_length ) {
+                    $pos = strpos($excerpt, ' ', $excerpt_max_length);
+                    if ($pos !== false) {
+                            $excerpt = substr($excerpt, 0, $pos);
+                    }
                 }
-                if (!$flattr_check['libxml']) {
-                    echo '<p><strong>Warning:</strong> You need <a href="http://de.php.net/manual/en/libxml.installation.php" target="_blank">libXML support</a> enabled for Flattr Plugin to work properly.</p>';
+
+                // If excerpt still too long
+                if (strlen($excerpt) > $excerpt_max_length) {
+                    $excerpt = substr($excerpt, 0, $excerpt_max_length);
                 }
 
-                echo '</div>';
+                return $excerpt;
+            }
         }
-}
\ No newline at end of file
+
+        $content = preg_replace(array('/\<br\s*\/?\>/i',"/\n/","/\r/", "/ +/"), " ", getExcerpt($post));
+        $content = strip_tags($content);
+
+        if (strlen(trim($content)) == 0) {
+            $content = "(no content provided...)";
+        }
+
+        $title = strip_tags($post['post_title']);
+        $title = str_replace(array("\"","\'"), "", $title);
+
+        $oauth_token = get_option('flattrss_api_key');
+        $oauth_token_secret = get_option('flattrss_api_secret');
+
+        $flattr_access_token = get_option('flattr_access_token');
+
+        if (get_option('user_based_flattr_buttons')< strtotime(get_the_time("c",$post))) {
+            $user_id = get_current_user_id();
+            $flattr_access_token = (get_user_meta( $user_id, "user_flattrss_api_oauth_token",true)!="")?get_user_meta( $user_id, "user_flattrss_api_oauth_token",true):get_option('flattr_access_token');
+
+        }
+
+        include_once 'flattr_client.php';
+
+        $client = new OAuth2Client( array_merge(array(
+            'client_id'         => $oauth_token,
+            'client_secret'     => $oauth_token_secret,
+            'base_url'          => 'https://api.' . self::FLATTR_DOMAIN . '/rest/v2',
+            'site_url'          => 'https://' . self::FLATTR_DOMAIN,
+            'authorize_url'     => 'https://' . self::FLATTR_DOMAIN . '/oauth/authorize',
+            'access_token_url'  => 'https://' . self::FLATTR_DOMAIN . '/oauth/token',
+
+            'redirect_uri'      => urlencode(home_url()."/wp-admin/admin.php?page=flattr/flattr.php"),
+            'scopes'            => 'thing+flattr',
+            'token_param_name'  => 'Bearer',
+            'response_type'     => 'code',
+            'grant_type'        => 'authorization_code',
+            'refresh_token'     => null,
+            'code'              => null,
+            'developer_mode'    => false,
+
+            'access_token'      => $flattr_access_token,
+        )));
+
+        if(!function_exists("encode")) {
+            function encode($string) {
+                if (function_exists("mb_detect_encoding")) {
+                    $string = (mb_detect_encoding($string, "UTF-8") == "UTF-8" )? $string : utf8_encode($string);
+                } else {
+                    $string = utf8_encode($string);
+                }
+                return $string;
+            }
+        }
+
+        $server = $_SERVER["SERVER_NAME"];
+        $server = preg_split("/:/", $server);
+        $server = $server[0];
+
+        $hidden = (get_option('flattr_hide', true) || get_post_meta($post->ID, '_flattr_post_hidden', true) ||$server == "localhost")? true:false;
+
+        try {
+            $response = $client->post('/things', array (
+                    "url" => $url, 
+                    "title" => encode($title), 
+                    "category" => $category, 
+                    "description" => encode($content), 
+                    "tags"=> $tags, 
+                    "language" => $language, 
+                    "hidden" => $hidden)
+                );
+
+            if (strpos($response->responseCode,'20') === 0)
+                add_post_meta($post['ID'], "flattrss_autosubmited", "true");
+
+        } catch (Exception $e) {
+
+        }
+    }
+}
+
+if (get_option('flattrss_autosubmit') && get_option('flattr_access_token')) {
+    add_action('save_post','new_flattrss_autosubmit_action',9999);
+}
+
+/**
+ * prints the Flattr button
+ * Use this from your template
+ */
+function the_flattr_permalink()
+{
+    echo Flattr::getInstance()->getButton();
+}
+
+// Make sure that the flattr object is ran at least once
+$flattr = Flattr::getInstance();
diff --git a/wp-content/plugins/flattr/flattr4.php b/wp-content/plugins/flattr/flattr4.php
deleted file mode 100644
index 67ab6aa6fd9f19f0fce37a4b9f8cfff69ee86377..0000000000000000000000000000000000000000
--- a/wp-content/plugins/flattr/flattr4.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-add_action( 'admin_notices','flattrAdminNotice' );
-
-function flattrAdminNotice() {
-	echo '<div id="message" class="error">';
-		echo '<p><strong>Warning:</strong> The Flattr plugin requires PHP5. You are currently using '. PHP_VERSION .'</p>';
-	echo '</div>';
-}
-
-/**
- * returns the Flattr button
- * Use this from your template
- */
-function get_the_flattr_permalink()
-{
-	return '';
-}
-
-/**
- * prints the Flattr button
- * Use this from your template
- */
-function the_flattr_permalink()
-{
-}
diff --git a/wp-content/plugins/flattr/flattr5.php b/wp-content/plugins/flattr/flattr5.php
deleted file mode 100644
index f641f3b29acb20a5c02bfbb5ecfddb8dd1cd02f7..0000000000000000000000000000000000000000
--- a/wp-content/plugins/flattr/flattr5.php
+++ /dev/null
@@ -1,714 +0,0 @@
-<?php
-
-if (session_id() == '') { session_start(); }
-
-class Flattr
-{
-	const VERSION = '0.9.25.4';
-	const WP_MIN_VER = '3.0';
-	const API_SCRIPT  = 'api.flattr.com/js/0.6/load.js?mode=auto';
-
-	/** @var array */
-	protected static $categories = array('text', 'images', 'audio', 'video', 'software', 'rest');
-	/** @var array */
-	protected static $languages;
-	/** @var Flattr */
-	protected static $instance;
-
-	/** @var Flattr_Settings */
-	protected $settings;
-
-	/** @var String */
-	protected $basePath;
-
-	public function __construct()
-	{	
-		if (is_admin())
-		{
-			if (!$this->compatibilityCheck())
-			{
-				return;
-			}
-			
-			$this->init();
-		} else {
-
-                    if (( get_option('flattr_aut_page', 'off') == 'on' || get_option('flattr_aut', 'off') == 'on' ) && !in_array( 'live-blogging/live-blogging.php' , get_option('active_plugins') ))
-                    {
-                        if (get_option('flattr_handles_exerpt')==1) {
-                            remove_filter('get_the_excerpt', 'wp_trim_excerpt');
-                            add_filter('get_the_excerpt', array($this, 'filterGetExcerpt'), 1);
-                        }
-                        if ( get_option('flattr_override_sharethis', 'false') == 'true' ) {
-                                add_action('plugins_loaded', array($this, 'overrideShareThis'));
-                        }
-                        add_filter('the_content', array($this, 'injectIntoTheContent'), 32767);
-                    }
-                }
-
-		wp_enqueue_script('flattrscript', ( isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] ? 'https://' : 'http://' ) . self::API_SCRIPT, array(), '0.6', true);
-	}
-
-	function overrideShareThis() {
-		if ( remove_filter('the_content', 'st_add_widget') || remove_filter('the_excerpt', 'st_add_widget') ) {
-			add_filter('flattr_button', array($this, 'overrideShareThisFilter'));
-		}
-	}
-
-	protected function addAdminNoticeMessage($msg)
-	{
-		if (!isset($this->adminNoticeMessages))
-		{
-			$this->adminNoticeMessages = array();
-			add_action( 'admin_notices', array(&$this, 'adminNotice') );
-		}
-		
-		$this->adminNoticeMessages[] = $msg;
-	}
-	
-	public function adminNotice()
-	{
-		echo '<div id="message" class="error">';
-		
-		foreach($this->adminNoticeMessages as $msg)
-		{
-			echo "<p>{$msg}</p>";
-		}
-		
-		echo '</div>';
-	}
-
-	protected function compatibilityCheck()
-	{
-		global $wp_version;
-		
-		if (version_compare($wp_version, self::WP_MIN_VER, '<'))
-		{
-			$this->addAdminNoticeMessage('<strong>Warning:</strong> The Flattr plugin requires WordPress '. self::WP_MIN_VER .' or later. You are currently using '. $wp_version);
-			return false;
-		}
-		
-		return true;
-	}
-
-	public function getBasePath()
-	{
-		if (!isset($this->basePath))
-		{
-			$this->basePath = WP_PLUGIN_DIR . '/' . plugin_basename( dirname(__FILE__) ) . '/';
-		}
-		
-		return $this->basePath;
-	}
-
-	public function getButton($skipOptionCheck = false)
-	{
-		global $post;
-
-		if ( ! $skipOptionCheck && ( ($post->post_type == 'page' && get_option('flattr_aut_page', 'off') != 'on') || ($post->post_type != 'page' && get_option('flattr_aut', 'off') != 'on') || is_feed() ) )
-		{
-			return '';
-		}
-
-		if (get_post_meta($post->ID, '_flattr_btn_disabled', true))
-		{
-			return '';
-		}
-
-		if (get_option('user_based_flattr_buttons_since_time')< strtotime(get_the_time("c",$post)))
-                    $flattr_uid = (get_option('user_based_flattr_buttons')&& get_user_meta(get_the_author_meta('ID'), "user_flattr_uid", true)!="")? get_user_meta(get_the_author_meta('ID'), "user_flattr_uid", true): get_option('flattr_uid');
-                else
-                    $flattr_uid = get_option('flattr_uid');
-                if (!$flattr_uid) {
-			return '';
-		}
-
-		$selectedLanguage = get_post_meta($post->ID, '_flattr_post_language', true);
-		if (empty($selectedLanguage))
-		{
-			$selectedLanguage = (get_option('user_based_flattr_buttons')&& get_user_meta(get_the_author_meta('ID'), "user_flattr_lng", true)!="")? get_user_meta(get_the_author_meta('ID'), "user_flattr_lng", true): get_option('flattr_lng');
-		}
-
-		$selectedCategory = get_post_meta($post->ID, '_flattr_post_category', true);
-		if (empty($selectedCategory))
-		{
-			$selectedCategory = (get_option('user_based_flattr_buttons')&& get_user_meta(get_the_author_meta('ID'), "user_flattr_cat", true)!="")? get_user_meta(get_the_author_meta('ID'), "user_flattr_cat", true): get_option('flattr_cat');
-		}
-
-		$hidden = get_post_meta($post->ID, '_flattr_post_hidden', true);
-		if ($hidden == '')
-		{
-			$hidden = get_option('flattr_hide', false);
-		}
-
-		$buttonData = array(
-
-			'user_id'	=> $flattr_uid,
-			'url'		=> get_permalink(),
-			'compact'	=> ( get_option('flattr_compact', false) ? true : false ),
-			'hide'		=> $hidden,
-			'language'	=> $selectedLanguage,
-			'category'	=> $selectedCategory,
-			'title'		=> strip_tags(get_the_title()),
-			'body'		=> strip_tags(preg_replace('/\<br\s*\/?\>/i', "\n", $this->getExcerpt())),
-			'tag'		=> strip_tags(get_the_tag_list('', ',', ''))
-
-		);
-
-		if (isset($buttonData['user_id'], $buttonData['url'], $buttonData['language'], $buttonData['category']))
-		{
-                        $retval;
-			switch (get_option(flattr_button_style)) {
-                            case "text":
-                                $retval = '<a href="'. static_flattr_url($post).'" title="Flattr" target="_blank">Flattr this!</a>';
-                                break;
-                            case "image":
-                                $retval = '<a href="'. static_flattr_url($post).'" title="Flattr" target="_blank"><img src="'. FLATTRSS_PLUGIN_PATH .'/img/flattr-badge-large.png" alt="flattr this!"/></a>';
-                                break;
-                            default:
-                                $retval = $this->getButtonCode($buttonData);;
-                        }
-                        return $retval;
-		}
-	}
-
-	protected function getButtonCode($params)
-	{
-		$rev = sprintf('flattr;uid:%s;language:%s;category:%s;',
-			$params['user_id'],
-			$params['language'],
-			$params['category']
-		);
-
-		if (!empty($params['tag']))
-		{
-			$rev .= 'tags:'. addslashes($params['tag']) .';';
-		}
-
-		if ($params['hide'])
-		{
-			$rev .= 'hidden:1;';
-		}
-
-		if ($params['compact'])
-		{
-			$rev .= 'button:compact;';
-		}
-
-		if (empty($params['body']) && !in_array($params['category'], array('images', 'video', 'audio')))
-		{
-			$params['body'] = get_bloginfo('description');
-
-			if (empty($params['body']) || strlen($params['body']) < 5)
-			{
-				$params['body'] = $params['title'];
-			}
-		}
-
-		return sprintf('<a class="FlattrButton" style="display:none;" href="%s" title="%s" rev="%s">%s</a>',
-			$params['url'],
-			addslashes($params['title']),
-			$rev,
-			addslashes($params['body'])
-		);
-	}
-
-	public static function getCategories()
-	{
-		return self::$categories;
-	}
-
-	public static function filterGetExcerpt($content)
-	{
-            $excerpt_length = apply_filters('excerpt_length', 55);
-            $excerpt_more = apply_filters('excerpt_more', ' ' . '[...]');
-
-            return self::getExcerpt($excerpt_length, $excerpt_more);
-	}
-
-	public static function getExcerpt($excerpt_max_length = 55, $excerpt_more = ' [...]')
-	{
-		global $post;
-		
-		$excerpt = $post->post_excerpt;
-		if (! $excerpt)
-		{
-			$excerpt = $post->post_content;
-	    }
-
-		$excerpt = strip_shortcodes($excerpt);
-		$excerpt = strip_tags($excerpt);
-		$excerpt = str_replace(']]>', ']]&gt;', $excerpt);
-		
-		// Hacks for various plugins
-		$excerpt = preg_replace('/httpvh:\/\/[^ ]+/', '', $excerpt); // hack for smartyoutube plugin
-		$excerpt = preg_replace('%httpv%', 'http', $excerpt); // hack for youtube lyte plugin
-
-            $excerpt = explode(' ', $excerpt, $excerpt_max_length);
-              if ( count($excerpt) >= $excerpt_max_length) {
-                array_pop($excerpt);
-                $excerpt = implode(" ",$excerpt).' ...';
-              } else {
-                $excerpt = implode(" ",$excerpt);
-              }
-              $excerpt = preg_replace('`\[[^\]]*\]`','',$excerpt);
-
-	    // Try to shorten without breaking words
-	    if ( strlen($excerpt) > 1024 )
-	    {
-			$pos = strpos($excerpt, ' ', 1024);
-			if ($pos !== false)
-			{
-				$excerpt = substr($excerpt, 0, $pos);
-			}
-		}
-
-		// If excerpt still too long
-		if (strlen($excerpt) > 1024)
-		{
-			$excerpt = substr($excerpt, 0, 1024);
-		}
-
-		return $excerpt;
-	}
-
-	public static function getInstance()
-	{
-		if (!self::$instance)
-		{
-			self::$instance = new self();
-		}
-		
-		return self::$instance;
-	}
-	
-	public static function getLanguages()
-	{
-		if (!isset(self::$languages))
-		{
-			include(Flattr::getInstance()->getBasePath() . 'languages.php');
-			self::$languages = $languages;
-		}
-		
-		return self::$languages;
-	}
-	
-	protected function init()
-	{
-		if (!$this->settings)
-		{
-			require_once($this->getBasePath() . 'settings.php');
-			$this->settings = new Flattr_Settings();
-		}
-
-		if (!$this->postMetaHandler)
-		{
-			require_once($this->getBasePath() . 'postmeta.php');
-			$this->postMetaHandler = new Flattr_PostMeta();
-		}
-	}
-
-	public function setExcerpt($content)
-	{
-		global $post;
-		return $post->post_content;
-	}
-	
-	public function overrideShareThisFilter($button) {
-		$sharethis_buttons = '';
-		if ( (is_page() && get_option('st_add_to_page') != 'no') || (!is_page() && get_option('st_add_to_content') != 'no') ) {
-			if (!is_feed() && function_exists('st_makeEntries')) {
-				$sharethis_buttons = st_makeEntries();
-			}
-		}
-		return $sharethis_buttons . ' <style>.wp-flattr-button iframe{vertical-align:text-bottom}</style>' . $button;
-	}
-
-	public function injectIntoTheContent($content)
-	{
-            global $post;
-
-            if (in_array(get_post_type(), get_option('flattr_post_types'))) {
-		$button = $this->getButton();
-
-		$button = '<p class="wp-flattr-button">' . apply_filters('flattr_button', $button) . '</p>';
-
-		if ( get_option('flattr_top', false) ) {
-			$result = $button . $content;
-		}
-		else {
-			$result = $content . $button;
-		}
-		if ( ! post_password_required($post->ID) )
-		{
-			return $result;
-		}
-		
-            }
-            return $content;
-	}	
-}
-
-Flattr::getInstance();
-
-/**
- * returns the Flattr button
- * Use this from your template
- */
-function get_the_flattr_permalink()
-{
-
-    return Flattr::getInstance()->getButton(true);
-}
-
-/**
- * prints the Flattr button
- * Use this from your template
- */
-function the_flattr_permalink()
-{
-	echo(get_the_flattr_permalink());
-}
-
-if (file_exists(WP_PLUGIN_DIR . '/' . plugin_basename( dirname(__FILE__) ) . '/flattrwidget.php')) {
-    include WP_PLUGIN_DIR . '/' . plugin_basename( dirname(__FILE__) ) . '/flattrwidget.php';
-}
-
-add_action('admin_init', 'tabber_stylesheet');
-
-/*
- * Enqueue style-file, if it exists.
- */
-
-function tabber_stylesheet() {
-    $myStyleUrl = WP_PLUGIN_URL . '/flattr/tabber.css';
-    $myStyleFile = WP_PLUGIN_DIR . '/flattr/tabber.css';
-    if ( file_exists($myStyleFile) ) {
-        wp_register_style('myStyleSheets', $myStyleUrl);
-        wp_enqueue_style( 'myStyleSheets');
-    }
-}
-
-    if(!defined('FLATTRSS_PLUGIN_PATH')) { define(FLATTRSS_PLUGIN_PATH, get_bloginfo('wpurl') . '/wp-content/plugins/flattr'); }
-    add_option('flattrss_api_key', "");
-    add_option('flattrss_autodonate', false);
-    add_option('flattrss_api_secret', "");
-    add_option('flattrss_api_oauth_token',"");
-    add_option('flattrss_api_oauth_token_secret',"");
-    add_option('flattrss_custom_image_url', FLATTRSS_PLUGIN_PATH .'/img/flattr-badge-large.png');
-    add_option('flattrss_clicktrack_since_date', date("r"));
-    add_option('flattrss_clickthrough_n', 0);
-    add_option('flattrss_clicktrack_enabled', true);
-    add_option('flattrss_error_reporting', true);
-    add_option('flattrss_autosubmit', true);
-    add_option('flattrss_button_enabled', true);
-    add_option('flattr_post_types', array('post','page'));
-    add_option('flattr_handles_exerpt', true);
-    add_option('flattr_button_style','js');
-
-function static_flattr_url($post) {
-    $id = $post->ID;
-    $md5 = md5($post->post_title);
-
-    return (get_bloginfo('wpurl') .'/?flattrss_redirect&amp;id='.$id.'&amp;md5='.$md5);
-}
-
-function flattr_post2rss($content) {
-    global $post;
-
-    $flattr = "";
-
-    if (get_post_meta($post->ID, '_flattr_btn_disabled', false)) {
-        
-        $flattr_post_types = get_option('flattr_post_types');
-
-        if (is_feed() && in_array(get_post_type(), $flattr_post_types)) {
-            $flattr.= ' <p><a href="'. static_flattr_url($post).'" title="Flattr" target="_blank"><img src="'. FLATTRSS_PLUGIN_PATH .'/img/flattr-badge-large.png" alt="flattr this!"/></a></p>';
-        }
-        
-    }
-    return ($content.$flattr);
-}
-
-if(function_exists('curl_init') && get_option('flattrss_button_enabled')) {
-    add_filter('the_content_feed', 'flattr_post2rss',999999);
-}
-
-$call_n = 0; # Do not delete! It will break autosubmit.
-function new_flattrss_autosubmit_action () {
-
-    global $call_n;
-
-    $call_n += 1;
-
-    $post = $_POST;
-
-    if (($post['post_status'] == "publish") && (get_post_meta($post['ID'], "flattrss_autosubmited", true)=="") && ($call_n == 2) && (get_the_time('U') <= time())) {
-
-        $e = error_reporting();
-        error_reporting(E_ERROR);
-
-        $url = get_permalink($post['ID']);
-        $tagsA = get_the_tags($post['ID']);
-        $tags = "";
-
-        if (!empty($tagsA)) {
-            foreach ($tagsA as $tag) {
-                if (strlen($tags)!=0){
-                    $tags .=",";
-                }
-                $tags .= $tag->name;
-            }
-        }
-
-        if (trim($tags) == "") {
-            $tags = "blog";
-        }
-
-        $category = "text";
-        if (get_option('flattr_cat')!= "") {
-            $category = get_option('flattr_cat');
-        }
-
-        $language = "en_EN";
-        if (get_option('flattr_lng')!="") {
-            $language = get_option('flattr_lng');
-        }
-
-        if (!function_exists('getExcerpt')) {
-            function getExcerpt($post, $excerpt_max_length = 1024) {
-
-                $excerpt = $post['post_excerpt'];
-                if (trim($excerpt) == "") {
-                        $excerpt = $post['post_content'];
-                }
-
-                $excerpt = strip_shortcodes($excerpt);
-                $excerpt = strip_tags($excerpt);
-                $excerpt = str_replace(']]>', ']]&gt;', $excerpt);
-
-                // Hacks for various plugins
-                $excerpt = preg_replace('/httpvh:\/\/[^ ]+/', '', $excerpt); // hack for smartyoutube plugin
-                $excerpt = preg_replace('%httpv%', 'http', $excerpt); // hack for youtube lyte plugin
-
-                // Try to shorten without breaking words
-                if ( strlen($excerpt) > $excerpt_max_length ) {
-                    $pos = strpos($excerpt, ' ', $excerpt_max_length);
-                    if ($pos !== false) {
-                            $excerpt = substr($excerpt, 0, $pos);
-                    }
-                }
-
-                // If excerpt still too long
-                if (strlen($excerpt) > $excerpt_max_length) {
-                    $excerpt = substr($excerpt, 0, $excerpt_max_length);
-                }
-
-                return $excerpt;
-            }
-        }
-
-        $content = preg_replace(array('/\<br\s*\/?\>/i',"/\n/","/\r/", "/ +/"), " ", getExcerpt($post));
-        $content = strip_tags($content);
-
-        if (strlen(trim($content)) == 0) {
-            $content = "(no content provided...)";
-        }
-
-        $title = strip_tags($post['post_title']);
-        $title = str_replace(array("\"","\'"), "", $title);
-
-        $api_key = get_option('flattrss_api_key');
-        $api_secret = get_option('flattrss_api_secret');
-
-        $oauth_token = get_option('flattrss_api_oauth_token');
-        $oauth_token_secret = get_option('flattrss_api_oauth_token_secret');
-
-        if (get_option('user_based_flattr_buttons_since_time')< strtotime(get_the_time("c",$post))) {
-            $user_id = get_current_user_id();
-            $oauth_token = (get_user_meta( $user_id, "user_flattrss_api_oauth_token",true)!="")?get_user_meta( $user_id, "user_flattrss_api_oauth_token",true):get_option('flattrss_api_oauth_token');
-            $oauth_token_secret = (get_user_meta( $user_id, "user_flattrss_api_oauth_token_secret",true))?get_user_meta( $user_id, "user_flattrss_api_oauth_token_secret",true):get_option('flattrss_api_oauth_token_secret');
-        }
-
-        if (!class_exists('Flattr_Rest')) {
-            include 'oAuth/flattr_rest.php';
-        }
-        $flattr_user = new Flattr_Rest($api_key, $api_secret, $oauth_token, $oauth_token_secret);
-
-        if ($flattr_user->error()) {
-            return;
-        }
-
-        if(!function_exists("encode")) {
-            function encode($string) {
-                if (function_exists("mb_detect_encoding")) {
-                    $string = (mb_detect_encoding($string, "UTF-8") == "UTF-8" )? $string : utf8_encode($string);
-                } else {
-                    $string = utf8_encode($string);
-                }
-                return $string;
-            }
-        }
-
-        $server = $_SERVER["SERVER_NAME"];
-        $server = preg_split("/:/", $server);
-        $server = $server[0];
-
-        $hidden = (get_option('flattr_hide', true) || get_post_meta($post->ID, '_flattr_post_hidden', true) ||$server == "localhost")? true:false;
-        
-        $flattr_user->submitThing($url, encode($title), $category, encode($content), $tags, $language, $hidden);
-
-        if ($flattr_user->http_code == 200)
-                add_post_meta($post['ID'], "flattrss_autosubmited", "true");
-
-        error_reporting($e);
-    }
-}
-
-
-if (get_option('flattrss_autosubmit') && function_exists('curl_init')) {
-    add_action('save_post','new_flattrss_autosubmit_action',9999);
-}
-
-add_action('init', 'new_flattrss_redirect');
-add_action('init', 'new_flattrss_callback');
-
-function new_flattrss_redirect() {
-    include_once 'redirect.php';
-}
-
-function new_flattrss_callback() {
-    include_once 'callback.php';
-}
-
-if(is_admin()) {
-    $admin_notice = "";
-
-    $oauth_token = get_option('flattrss_api_oauth_token');
-    $oauth_token_secret = get_option('flattrss_api_oauth_token_secret');
-
-    $active_plugins = get_option('active_plugins');
-    if ( in_array( 'live-blogging/live-blogging.php' , $active_plugins ) && ( get_option('flattr_aut_page', 'off') == 'on' || get_option('flattr_aut', 'off') == 'on' ) ) {
-        $admin_notice .= 'echo \'<div id="message" class="updated"><p><strong>Warning:</strong> There is an <a href="http://wordpress.org/support/topic/plugin-live-blogging-how-to-avoid-the_content-of-live_blog_entries" target="_blank">incompatibility</a> with [Liveblog] plugin and automatic Flattr button injection! Automatic injection is disabled as long as [Liveblog] plugin is enabled. You need to use the manual method to add Flattr buttons to your posts.</p></div>\';';
-    }
-
-    if (defined('LIBXML_VERSION')) {
-        define('LIBXML_TARGET',20616);
-        if (version_compare(LIBXML_VERSION, LIBXML_TARGET, '<')) {
-            $admin_notice .= 'echo \'<div id="message" class="updated"><p><strong>Warning:</strong> There might be an <a href="http://forum.flattr.net/showthread.php?tid=681" target="_blank">incompatibility</a> with your web server running libxml '.LIBXML_VERSION.'. Flattr Plugin requieres at least '.LIBXML_TARGET.'. You can help improve the Flattr experience for everybody, <a href="mailto:flattr@allesblog.de?subject='.rawurlencode("My webserver is running LIBXML Version ".LIBXML_VERSION).'">please contact me</a> :). See Feedback-tab for details.</p></div>\';';
-        }
-    } else {
-        $admin_notice .= 'echo \'<div id="message" class="error"><p><strong>Error:</strong> Your PHP installation must support <strong>libxml</strong> for Flattr plugin to work!</p></div>\';';
-    }
-
-    if (in_array( 'flattrss/flattrss.php' , $active_plugins)) {
-        $admin_notice .= 'echo \'<div id="message" class="error"><p><strong>Error:</strong> It is mandatory for <strong>FlattRSS</strong> plugin to be at least deactivated. Functionality and Settings are merged into the Flattr plugin.</p></div>\';';
-    }
-
-    if (in_array( 'flattrwidget/flattrwidget.php' , $active_plugins)) {
-        $admin_notice .= 'echo \'<div id="message" class="error"><p><strong>Error:</strong> It is mandatory for <strong>Flattr Widget</strong> plugin to be at least deactivated. Functionality and Settings are merged into the Flattr plugin.</p></div>\';';
-    }
-    
-    if ($admin_notice != "") {
-        add_action( 'admin_notices',
-            create_function('', $admin_notice)
-        );
-    }
-
-}
-
-if (!empty($_POST) && $_POST['fsendmail']=="on") {
-
-    if ($_POST['fphpinfo']) {
-    ob_start();
-    phpinfo();
-    $mailtext = ob_get_clean();
-
-    }
-
-    $mailtext = $_POST['ftext'] ."\n<br/><br/>".$mailtext;
-
-    $header  = "MIME-Version: 1.0\r\n";
-    $header .= "Content-type: text/html; charset=iso-8859-1\r\n";
-
-    $name = ($_POST['fname'] != "")? $_POST['fname'] : "unknown";
-    $from = ($_POST['femail'] != "")? $_POST['femail'] : "support@allesblog.de";
-    $header .= "From: $name <$from>\r\n";
-    $header .= "X-Mailer: PHP ". phpversion();
-
-    $fmail = mail( 'flattr@allesblog.de',
-          "Wordpress Flattr Plugin Support Request",
-          $mailtext,
-          $header);
-
-    $admin_notice = "";
-    if ($fmail) {
-        $admin_notice = 'echo \'<div id="message" class="updated"><p>Mail send successfully!</p></div>\';';
-    } else {
-        $admin_notice = 'echo \'<div id="message" class="error"><p>There was an error sending the email.</p></div>\';';
-    }
-
-    add_action( 'admin_notices',
-        create_function('', $admin_notice)
-    );
-}
-
-if (is_admin() && (ini_get('allow_url_fopen') || function_exists('curl_init')))
-    add_action('in_plugin_update_message-flattr/flattr.php', 'flattr_in_plugin_update_message');
-
-function flattr_in_plugin_update_message() {
-
-    $url = 'http://plugins.trac.wordpress.org/browser/flattr/trunk/readme.txt?format=txt';
-    $data = "";
-    
-    if ( ini_get('allow_url_fopen') )
-        $data = file_get_contents($url);
-    else
-        if (function_exists('curl_init')) {
-            $ch = curl_init();
-            curl_setopt($ch,CURLOPT_URL,$url);
-            curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
-            $data = curl_exec($ch);
-            curl_close($ch);
-        }
-
-
-    if ($data) {
-        $matches = null;
-        $regexp = '~==\s*Changelog\s*==\s*=\s*[0-9.]+\s*=(.*)(=\s*' . preg_quote(Flattr::VERSION) . '\s*=|$)~Uis';
-
-        if (preg_match($regexp, $data, $matches)) {
-            $changelog = (array) preg_split('~[\r\n]+~', trim($matches[1]));
-
-            echo '</div><div class="update-message" style="font-weight: normal;"><strong>What\'s new:</strong>';
-            $ul = false;
-            $version = 99;
-
-            foreach ($changelog as $index => $line) {
-                if (version_compare($version, Flattr::VERSION,">"))
-                if (preg_match('~^\s*\*\s*~', $line)) {
-                    if (!$ul) {
-                        echo '<ul style="list-style: disc; margin-left: 20px;">';
-                        $ul = true;
-                    }
-                    $line = preg_replace('~^\s*\*\s*~', '', htmlspecialchars($line));
-                    echo '<li style="width: 50%; margin: 0;">' . $line . '</li>';
-                } else {
-                    if ($ul) {
-                        echo '</ul>';
-                        $ul = false;
-                    }
-
-                    $version = trim($line, " =");
-                    echo '<p style="margin: 5px 0;">' . htmlspecialchars($line) . '</p>';
-                }
-            }
-
-            if ($ul) {
-                echo '</ul><div style="clear: left;"></div>';
-            }
-
-            echo '</div>';
-        }
-    }
-}
diff --git a/wp-content/plugins/flattr/flattr_client.php b/wp-content/plugins/flattr/flattr_client.php
new file mode 100755
index 0000000000000000000000000000000000000000..7186537aeed1c07d868af6a0358135ed17eae9d2
--- /dev/null
+++ b/wp-content/plugins/flattr/flattr_client.php
@@ -0,0 +1,4 @@
+<?php
+require_once dirname(__FILE__) . '/lib/httpconnection.php';
+require_once dirname(__FILE__) . '/lib/httpresponse.php';
+require_once dirname(__FILE__) . '/lib/oauth2client.php';
\ No newline at end of file
diff --git a/wp-content/plugins/flattr/flattr_client.txt b/wp-content/plugins/flattr/flattr_client.txt
new file mode 100755
index 0000000000000000000000000000000000000000..05693a9373999801cada893347e8f79468ba1460
--- /dev/null
+++ b/wp-content/plugins/flattr/flattr_client.txt
@@ -0,0 +1,34 @@
+# Sample code to use the Flattr v2 web API
+
+to get up and running:
+
+the oauth2client uses httpconnection and httpresponse which wrapps the curl php bindings.
+
+if you are using a server with apt you can install it by
+
+    apt-get install php5-curl
+
+## public api call
+
+    $client = new OAuth2Client(array('base_url' => 'https://api.flattr.com/rest/v2'));
+    $thing = $client->getParsed('/things/423405/');
+    var_dump($thing); // array
+
+## minimal sample code
+
+create an API key at https://flattr.com/apps
+make sure you add a correct callback\_url it should be something like http://url-to-your-vhost/callback.php  
+Copy /config.template.php to /config.php and enter your api credentials.  
+Point a apache/lighttpd/nginx vhost to the minimal/ directory and restart.  
+Open http://url-to-your-vhost
+
+## connect with flattr sample
+
+sample app that implements a connect with flattr (based on sessions, no database, using coltrane framework)
+
+see connect\_with\_flattr/
+
+----
+Documentation at [http://developers.flattr.net/](http://developers.flattr.net/)  
+Questions: [StackOverflow](http://stackoverflow.com/questions/tagged/flattr)  
+Feedback: [twitter](https://twitter.com/#!/flattr)  
diff --git a/wp-content/plugins/flattr/flattrwidget.php b/wp-content/plugins/flattr/flattrwidget.php
deleted file mode 100644
index ee3e3b97f761f23457ea9aa5dbd28a95bbff5e55..0000000000000000000000000000000000000000
--- a/wp-content/plugins/flattr/flattrwidget.php
+++ /dev/null
@@ -1,150 +0,0 @@
-<?php
-
-if (!function_exists('flattrwidget_control')) {
-
-function new_flattrwidget_control() {
-
-    $options = get_option("flattrwidget");
-
-    if (!is_array( $options )) {
-        $options = array(
-            'title' => 'Flattr',
-            'text' => '',
-            'above' => true,
-            'compact' => false,
-            'html' => false
-        );
-    }
-
-    if ($_POST['flattrwidget-submit']) {
-        $options['title'] = htmlspecialchars($_POST['flattrwidget-title']);
-        if($options['html']) {
-            $options['text'] = $_POST['flattrwidget-text'];
-        } else {
-            $options['text'] = htmlspecialchars($_POST['flattrwidget-text']);
-        };
-        $options['above'] = $_POST['flattrwidget-above'];
-        $options['compact'] = $_POST['flattrwidget-compact'];
-        $options['html'] = $_POST['flattrwidget-html'];
-
-        update_option("flattrwidget", $options);
-    }
-?>
-<p>
-<label for="flattrwidget-title">Title: </label><br />
-<input class="widefat" type="text" id="flattrwidget-title" name="flattrwidget-title" value="<?php echo $options['title'];?>" />
-<label for="flattrwidget-text">Text: </label><br />
-<textarea class="widefat" rows="16" cols="10" type="text" id="flattrwidget-text" name="flattrwidget-text"><?php echo stripslashes($options['text']);?></textarea>
-<input type="checkbox" id="flattrwidget-above" name="flattrwidget-above"<?php if ($options['above']) { echo " checked"; } ?> />
-<label for="flattrwidget-above">Check to display the text above the Flattr button. (leave unchecked to display below)</label><br />
-<input type="checkbox" id="flattrwidget-html" name="flattrwidget-html"<?php if ($options['html']) { echo " checked"; } ?> />
-<label for="flattrwidget-html">Check to allow HTML in text.</label><br />
-<input type="checkbox" id="flattrwidget-compact" name="flattrwidget-compact"<?php if ($options['compact']) { echo " checked"; } ?> />
-<label for="flattrwidget-compact">Check to use compact style Flattr button.</label><br />
-
-<input type="hidden" id="flattrwidget-submit" name="flattrwidget-submit" value="1" />
-<?php
-
-    if (!get_option('flattr_uid')) {
-
-        $url = get_bloginfo('wpurl') .'/wp-admin/plugin-install.php?tab=plugin-information&plugin=flattr&TB_iframe=true&width=640&height=840';
-
-        echo "<p>You need the <a href=\"$url\">official Flattr plugin</a> installed, activated and configured for the widget to work!</p>";
-        echo "<p>Nothing will be displayed in your sidebar right now.</p>";
-    }
-
-}
-
-function new_flattrwidget_widget($args) {
-
-    if (!get_option('flattr_uid')) { return; }
-
-    extract($args);
-
-    $options = get_option("flattrwidget");
-
-    echo $before_widget;
-    echo $before_title;
-    echo $options['title'];
-    echo $after_title;
-    if ($options['above']) { echo "<p>". stripslashes($options['text']) ."</p>"; }
-    echo "<p align=\"center\">";
-
-    $uid = get_option('flattr_uid');
-    $cat = get_option('flattr_cat');
-    $lang = get_option('flattr_lng');
-
-    $category = $cat;
-    $title = get_bloginfo('name');
-    $description = get_bloginfo('description');
-    $tags = 'blog,wordpress,widget';
-    $url = get_bloginfo('url');
-    $language = $lang;
-    $userID = $uid;
-
-    $compact = compact;
-
-    if (!$options['compact']) { $compact = 'large'; }
-
-    $cleaner = create_function('$expression', "return trim(preg_replace('~\r\n|\r|\n~', ' ', addslashes(\$expression)));");
-
-    # button: 	compact | default
-    /*
-     * <a class="FlattrButton" style="display:none;"
-    title="Detta är min post titel"
-    data-flattr-uid="kjell"
-    data-flattr-tags="tag1, tag2"
-    data-flattr-category="text"
-    href="http://wp.local/?p=444">
-
-    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
-	Lorem ipsum dolor sit amet, consectetur adipiscing
-    Maecenas aliquet aliquam leo quis fringilla.
-</a>
-     */
-
-    $output = "<a class='FlattrButton' style='display:none;'".
-                ' href="'.$cleaner($url).'"'.
-                ' title="'.$cleaner($title).'"'.
-                ' data-flattr-uid="'.$cleaner($userID).'"'.
-                ' data-flattr-tags="'.$tags.'"'.
-                ' data-flattr-button="'.$compact.'"'.
-                ' data-flattr-category="'.$cleaner($category).'">'.
-                $cleaner($description).
-                '</a>';
-    /*
-    $output = "<script type=\"text/javascript\">\n";
-    if ( defined('Flattr::VERSION')) {
-        $output .= "var flattr_wp_ver = '" . Flattr::VERSION  . "';\n";
-    }
-    $output .= "var flattr_uid = '" . $cleaner($userID)      . "';\n";
-    $output .= "var flattr_url = '" . $cleaner($url)         . "';\n";
-    $output .= "var flattr_lng = '" . $cleaner($language)    . "';\n";
-    $output .= "var flattr_cat = '" . $cleaner($category)    . "';\n";
-    if($tags) { $output .= "var flattr_tag = '". $cleaner($tags) ."';\n"; }
-    if ($options['compact']) { $output .= "var flattr_btn = 'compact';\n"; } else {
-        $output .= "var flattr_btn = 'large';\n";
-    }
-    $output .= "var flattr_tle = '". $cleaner($title) ."';\n";
-    $output .= "var flattr_dsc = '". $cleaner($description) ."';\n";
-    $output .= "</script>\n";
-    if ( defined('Flattr::API_SCRIPT')) {
-        $output .= '<script src="' . Flattr::API_SCRIPT . '" type="text/javascript"></script>';
-    }
-     *
-     */
-    echo $output;
-
-    echo "</p>";
-    if (!$options['above']) { echo "<p>". stripslashes($options['text']) ."</p>"; }
-    echo $after_widget;
-}
-
-register_sidebar_widget ( "Flattr Widget", new_flattrwidget_widget );
-register_widget_control ( "Flattr Widget", new_flattrwidget_control );
-
-} else {
-
-}
-
-?>
diff --git a/wp-content/plugins/flattr/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/wp-content/plugins/flattr/images/ui-bg_diagonals-thick_18_b81900_40x40.png
new file mode 100755
index 0000000000000000000000000000000000000000..954e22dbd99e8c6dd7091335599abf2d10bf8003
Binary files /dev/null and b/wp-content/plugins/flattr/images/ui-bg_diagonals-thick_18_b81900_40x40.png differ
diff --git a/wp-content/plugins/flattr/images/ui-bg_diagonals-thick_20_666666_40x40.png b/wp-content/plugins/flattr/images/ui-bg_diagonals-thick_20_666666_40x40.png
new file mode 100755
index 0000000000000000000000000000000000000000..64ece5707d91a6edf9fad4bfcce0c4dbcafcf58d
Binary files /dev/null and b/wp-content/plugins/flattr/images/ui-bg_diagonals-thick_20_666666_40x40.png differ
diff --git a/wp-content/plugins/flattr/images/ui-bg_flat_10_000000_40x100.png b/wp-content/plugins/flattr/images/ui-bg_flat_10_000000_40x100.png
new file mode 100755
index 0000000000000000000000000000000000000000..abdc01082bf3534eafecc5819d28c9574d44ea89
Binary files /dev/null and b/wp-content/plugins/flattr/images/ui-bg_flat_10_000000_40x100.png differ
diff --git a/wp-content/plugins/flattr/images/ui-bg_glass_100_f6f6f6_1x400.png b/wp-content/plugins/flattr/images/ui-bg_glass_100_f6f6f6_1x400.png
new file mode 100755
index 0000000000000000000000000000000000000000..9b383f4d2eab09c0f2a739d6b232c32934bc620b
Binary files /dev/null and b/wp-content/plugins/flattr/images/ui-bg_glass_100_f6f6f6_1x400.png differ
diff --git a/wp-content/plugins/flattr/images/ui-bg_glass_100_fdf5ce_1x400.png b/wp-content/plugins/flattr/images/ui-bg_glass_100_fdf5ce_1x400.png
new file mode 100755
index 0000000000000000000000000000000000000000..a23baad25b1d1ff36e17361eab24271f2e9b7326
Binary files /dev/null and b/wp-content/plugins/flattr/images/ui-bg_glass_100_fdf5ce_1x400.png differ
diff --git a/wp-content/plugins/flattr/images/ui-bg_glass_65_ffffff_1x400.png b/wp-content/plugins/flattr/images/ui-bg_glass_65_ffffff_1x400.png
new file mode 100755
index 0000000000000000000000000000000000000000..42ccba269b6e91bef12ad0fa18be651b5ef0ee68
Binary files /dev/null and b/wp-content/plugins/flattr/images/ui-bg_glass_65_ffffff_1x400.png differ
diff --git a/wp-content/plugins/flattr/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/wp-content/plugins/flattr/images/ui-bg_gloss-wave_35_f6a828_500x100.png
new file mode 100755
index 0000000000000000000000000000000000000000..39d5824d6af5456f1e89fc7847ea3599ea5fd815
Binary files /dev/null and b/wp-content/plugins/flattr/images/ui-bg_gloss-wave_35_f6a828_500x100.png differ
diff --git a/wp-content/plugins/flattr/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/wp-content/plugins/flattr/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
new file mode 100755
index 0000000000000000000000000000000000000000..f1273672d253263b7564e9e21d69d7d9d0b337d9
Binary files /dev/null and b/wp-content/plugins/flattr/images/ui-bg_highlight-soft_100_eeeeee_1x100.png differ
diff --git a/wp-content/plugins/flattr/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/wp-content/plugins/flattr/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
new file mode 100755
index 0000000000000000000000000000000000000000..359397acffdd84bd102f0e8a951c9d744f278db5
Binary files /dev/null and b/wp-content/plugins/flattr/images/ui-bg_highlight-soft_75_ffe45c_1x100.png differ
diff --git a/wp-content/plugins/flattr/images/ui-icons_222222_256x240.png b/wp-content/plugins/flattr/images/ui-icons_222222_256x240.png
new file mode 100755
index 0000000000000000000000000000000000000000..b273ff111d219c9b9a8b96d57683d0075fb7871a
Binary files /dev/null and b/wp-content/plugins/flattr/images/ui-icons_222222_256x240.png differ
diff --git a/wp-content/plugins/flattr/images/ui-icons_228ef1_256x240.png b/wp-content/plugins/flattr/images/ui-icons_228ef1_256x240.png
new file mode 100755
index 0000000000000000000000000000000000000000..a641a371afa0fbb08ba599dc7ddf14b9bfc3c84f
Binary files /dev/null and b/wp-content/plugins/flattr/images/ui-icons_228ef1_256x240.png differ
diff --git a/wp-content/plugins/flattr/images/ui-icons_ef8c08_256x240.png b/wp-content/plugins/flattr/images/ui-icons_ef8c08_256x240.png
new file mode 100755
index 0000000000000000000000000000000000000000..85e63e9f604ce042d59eb06a8428eeb7cb7896c9
Binary files /dev/null and b/wp-content/plugins/flattr/images/ui-icons_ef8c08_256x240.png differ
diff --git a/wp-content/plugins/flattr/images/ui-icons_ffd27a_256x240.png b/wp-content/plugins/flattr/images/ui-icons_ffd27a_256x240.png
new file mode 100755
index 0000000000000000000000000000000000000000..e117effa3dca24e7978cfc5f8b967f661e81044f
Binary files /dev/null and b/wp-content/plugins/flattr/images/ui-icons_ffd27a_256x240.png differ
diff --git a/wp-content/plugins/flattr/images/ui-icons_ffffff_256x240.png b/wp-content/plugins/flattr/images/ui-icons_ffffff_256x240.png
new file mode 100755
index 0000000000000000000000000000000000000000..42f8f992c727ddaa617da224a522e463df690387
Binary files /dev/null and b/wp-content/plugins/flattr/images/ui-icons_ffffff_256x240.png differ
diff --git a/wp-content/plugins/flattr/img/flattr-badge-large.png b/wp-content/plugins/flattr/img/flattr-badge-large.png
index c03a4fa3084f3c7b4109a3c13e657ef0eaccdd53..1105305850621343d54022dd422415ddf1f659e1 100644
Binary files a/wp-content/plugins/flattr/img/flattr-badge-large.png and b/wp-content/plugins/flattr/img/flattr-badge-large.png differ
diff --git a/wp-content/plugins/flattr/img/flattr-icon_new.png b/wp-content/plugins/flattr/img/flattr-icon_new.png
index 9080abc3593cc527ce17cc66d6b97073f786c3f1..d9007c0c12cb48b0e4f77dc4e11e391a6cfefe9c 100644
Binary files a/wp-content/plugins/flattr/img/flattr-icon_new.png and b/wp-content/plugins/flattr/img/flattr-icon_new.png differ
diff --git a/wp-content/plugins/flattr/init.php b/wp-content/plugins/flattr/init.php
new file mode 100644
index 0000000000000000000000000000000000000000..62e85a6177f75f8f77dc40efdba83169f4fd1e53
--- /dev/null
+++ b/wp-content/plugins/flattr/init.php
@@ -0,0 +1,63 @@
+<?php
+
+if ( isset($_GET['page'], $_GET['code']) && !isset($_GET['flattrJAX']) ) {
+    if ($_GET['page'] == "flattr/flattr.php") {
+
+        $flattr_domain = 'flattr.com';
+
+        $key = get_option('flattrss_api_key');
+        $sec = get_option('flattrss_api_secret');
+        $callback = urlencode(home_url()."/wp-admin/admin.php?page=flattr/flattr.php");
+
+        include_once 'flattr_client.php';
+
+        $basic_options = array(
+            'client_id'         => $key,
+            'client_secret'     => $sec,
+            'base_url'          => 'https://api.' . $flattr_domain . '/rest/v2',
+            'site_url'          => 'https://' . $flattr_domain,
+            'authorize_url'     => 'https://' . $flattr_domain . '/oauth/authorize',
+            'access_token_url'  => 'https://' . $flattr_domain . '/oauth/token',
+
+            'redirect_uri'      => $callback,
+            'scopes'            => 'thing+flattr',
+            'token_param_name'  => 'Bearer',
+            'response_type'     => 'code',
+            'grant_type'        => 'authorization_code',
+            'refresh_token'     => null,
+            'access_token'      => null,
+            'code'              => null,
+            'developer_mode'    => false
+        );
+
+        $client = new OAuth2Client($basic_options); 
+
+        try { 
+
+            $access_token = $client->fetchAccessToken($_GET['code']);
+
+            $client = new OAuth2Client(array_merge($basic_options, array(
+                'access_token' => $access_token
+            )));
+
+            try {
+
+                $user = $client->getParsed('/user');
+
+                if (!isset($user['error'])) {
+                    update_user_meta( get_current_user_id(), "user_flattrss_api_oauth_token", $access_token );
+
+                    if (current_user_can('activate_plugins')) {
+                        update_option('flattr_access_token', $access_token);
+                    }
+                }
+                if (!current_user_can('activate_plugins')) {
+                    header("Status: 307");
+                    header("Location: ". home_url()."/wp-admin/users.php?page=flattr/flattr.php?user");
+                    flush();
+                    exit (0);
+                }
+            } catch (Exception $e) {}
+        } catch (Exception $e) {}
+    } 
+}
\ No newline at end of file
diff --git a/wp-content/plugins/flattr/jquery-ui/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/wp-content/plugins/flattr/jquery-ui/images/ui-bg_diagonals-thick_18_b81900_40x40.png
new file mode 100755
index 0000000000000000000000000000000000000000..954e22dbd99e8c6dd7091335599abf2d10bf8003
Binary files /dev/null and b/wp-content/plugins/flattr/jquery-ui/images/ui-bg_diagonals-thick_18_b81900_40x40.png differ
diff --git a/wp-content/plugins/flattr/jquery-ui/images/ui-bg_diagonals-thick_20_666666_40x40.png b/wp-content/plugins/flattr/jquery-ui/images/ui-bg_diagonals-thick_20_666666_40x40.png
new file mode 100755
index 0000000000000000000000000000000000000000..64ece5707d91a6edf9fad4bfcce0c4dbcafcf58d
Binary files /dev/null and b/wp-content/plugins/flattr/jquery-ui/images/ui-bg_diagonals-thick_20_666666_40x40.png differ
diff --git a/wp-content/plugins/flattr/jquery-ui/images/ui-bg_flat_10_000000_40x100.png b/wp-content/plugins/flattr/jquery-ui/images/ui-bg_flat_10_000000_40x100.png
new file mode 100755
index 0000000000000000000000000000000000000000..abdc01082bf3534eafecc5819d28c9574d44ea89
Binary files /dev/null and b/wp-content/plugins/flattr/jquery-ui/images/ui-bg_flat_10_000000_40x100.png differ
diff --git a/wp-content/plugins/flattr/jquery-ui/images/ui-bg_glass_100_f6f6f6_1x400.png b/wp-content/plugins/flattr/jquery-ui/images/ui-bg_glass_100_f6f6f6_1x400.png
new file mode 100755
index 0000000000000000000000000000000000000000..9b383f4d2eab09c0f2a739d6b232c32934bc620b
Binary files /dev/null and b/wp-content/plugins/flattr/jquery-ui/images/ui-bg_glass_100_f6f6f6_1x400.png differ
diff --git a/wp-content/plugins/flattr/jquery-ui/images/ui-bg_glass_100_fdf5ce_1x400.png b/wp-content/plugins/flattr/jquery-ui/images/ui-bg_glass_100_fdf5ce_1x400.png
new file mode 100755
index 0000000000000000000000000000000000000000..a23baad25b1d1ff36e17361eab24271f2e9b7326
Binary files /dev/null and b/wp-content/plugins/flattr/jquery-ui/images/ui-bg_glass_100_fdf5ce_1x400.png differ
diff --git a/wp-content/plugins/flattr/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png b/wp-content/plugins/flattr/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png
new file mode 100755
index 0000000000000000000000000000000000000000..42ccba269b6e91bef12ad0fa18be651b5ef0ee68
Binary files /dev/null and b/wp-content/plugins/flattr/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png differ
diff --git a/wp-content/plugins/flattr/jquery-ui/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/wp-content/plugins/flattr/jquery-ui/images/ui-bg_gloss-wave_35_f6a828_500x100.png
new file mode 100755
index 0000000000000000000000000000000000000000..39d5824d6af5456f1e89fc7847ea3599ea5fd815
Binary files /dev/null and b/wp-content/plugins/flattr/jquery-ui/images/ui-bg_gloss-wave_35_f6a828_500x100.png differ
diff --git a/wp-content/plugins/flattr/jquery-ui/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/wp-content/plugins/flattr/jquery-ui/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
new file mode 100755
index 0000000000000000000000000000000000000000..f1273672d253263b7564e9e21d69d7d9d0b337d9
Binary files /dev/null and b/wp-content/plugins/flattr/jquery-ui/images/ui-bg_highlight-soft_100_eeeeee_1x100.png differ
diff --git a/wp-content/plugins/flattr/jquery-ui/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/wp-content/plugins/flattr/jquery-ui/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
new file mode 100755
index 0000000000000000000000000000000000000000..359397acffdd84bd102f0e8a951c9d744f278db5
Binary files /dev/null and b/wp-content/plugins/flattr/jquery-ui/images/ui-bg_highlight-soft_75_ffe45c_1x100.png differ
diff --git a/wp-content/plugins/flattr/jquery-ui/images/ui-icons_222222_256x240.png b/wp-content/plugins/flattr/jquery-ui/images/ui-icons_222222_256x240.png
new file mode 100755
index 0000000000000000000000000000000000000000..b273ff111d219c9b9a8b96d57683d0075fb7871a
Binary files /dev/null and b/wp-content/plugins/flattr/jquery-ui/images/ui-icons_222222_256x240.png differ
diff --git a/wp-content/plugins/flattr/jquery-ui/images/ui-icons_228ef1_256x240.png b/wp-content/plugins/flattr/jquery-ui/images/ui-icons_228ef1_256x240.png
new file mode 100755
index 0000000000000000000000000000000000000000..a641a371afa0fbb08ba599dc7ddf14b9bfc3c84f
Binary files /dev/null and b/wp-content/plugins/flattr/jquery-ui/images/ui-icons_228ef1_256x240.png differ
diff --git a/wp-content/plugins/flattr/jquery-ui/images/ui-icons_ef8c08_256x240.png b/wp-content/plugins/flattr/jquery-ui/images/ui-icons_ef8c08_256x240.png
new file mode 100755
index 0000000000000000000000000000000000000000..85e63e9f604ce042d59eb06a8428eeb7cb7896c9
Binary files /dev/null and b/wp-content/plugins/flattr/jquery-ui/images/ui-icons_ef8c08_256x240.png differ
diff --git a/wp-content/plugins/flattr/jquery-ui/images/ui-icons_ffd27a_256x240.png b/wp-content/plugins/flattr/jquery-ui/images/ui-icons_ffd27a_256x240.png
new file mode 100755
index 0000000000000000000000000000000000000000..e117effa3dca24e7978cfc5f8b967f661e81044f
Binary files /dev/null and b/wp-content/plugins/flattr/jquery-ui/images/ui-icons_ffd27a_256x240.png differ
diff --git a/wp-content/plugins/flattr/jquery-ui/images/ui-icons_ffffff_256x240.png b/wp-content/plugins/flattr/jquery-ui/images/ui-icons_ffffff_256x240.png
new file mode 100755
index 0000000000000000000000000000000000000000..42f8f992c727ddaa617da224a522e463df690387
Binary files /dev/null and b/wp-content/plugins/flattr/jquery-ui/images/ui-icons_ffffff_256x240.png differ
diff --git a/wp-content/plugins/flattr/jquery-ui/style.css b/wp-content/plugins/flattr/jquery-ui/style.css
new file mode 100755
index 0000000000000000000000000000000000000000..10e8f7cc8b195698d2f69897353b69794fe0ca5f
--- /dev/null
+++ b/wp-content/plugins/flattr/jquery-ui/style.css
@@ -0,0 +1,375 @@
+/*!
+ * jQuery UI CSS Framework 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
+.ui-helper-clearfix:after { clear: both; }
+.ui-helper-clearfix { zoom: 1; }
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*!
+ * jQuery UI CSS Framework 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; }
+.ui-widget .ui-widget { font-size: 1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; }
+.ui-widget-content a { color: #333333; }
+.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
+.ui-widget-header a { color: #ffffff; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }
+.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); }
+.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/*!
+ * jQuery UI Dialog 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
+.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
+.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*!
+ * jQuery UI Datepicker 1.8.20
+ *
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.ui-datepicker .ui-datepicker-prev { left:2px; }
+.ui-datepicker .ui-datepicker-next { right:2px; }
+.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.ui-datepicker select.ui-datepicker-month, 
+.ui-datepicker select.ui-datepicker-year { width: 49%;}
+.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.ui-datepicker td { border: 0; padding: 1px; }
+.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.ui-datepicker.ui-datepicker-multi { width:auto; }
+.ui-datepicker-multi .ui-datepicker-group { float:left; }
+.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.ui-datepicker-rtl { direction: rtl; }
+.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
+}
\ No newline at end of file
diff --git a/wp-content/plugins/flattr/languages.php b/wp-content/plugins/flattr/languages.php
deleted file mode 100644
index 691bfb1f9810adabd5b5fe3b61fb5ea383e26a0b..0000000000000000000000000000000000000000
--- a/wp-content/plugins/flattr/languages.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-$languages['sq_AL'] = 'Albanian';
-$languages['ar_DZ'] = 'Arabic';
-$languages['be_BY'] = 'Belarusian';
-$languages['bg_BG'] = 'Bulgarian';
-$languages['ca_ES'] = 'Catalan';
-$languages['zh_CN'] = 'Chinese';
-$languages['hr_HR'] = 'Croatian';
-$languages['cs_CZ'] = 'Czech';
-$languages['da_DK'] = 'Danish';
-$languages['nl_NL'] = 'Dutch';
-$languages['en_GB'] = 'English';
-$languages['et_EE'] = 'Estonian';
-$languages['fi_FI'] = 'Finnish';
-$languages['fr_FR'] = 'French';
-$languages['de_DE'] = 'German';
-$languages['el_GR'] = 'Greek';
-$languages['iw_IL'] = 'Hebrew';
-$languages['hi_IN'] = 'Hindi';
-$languages['hu_HU'] = 'Hungarian';
-$languages['is_IS'] = 'Icelandic';
-$languages['in_ID'] = 'Indonesian';
-$languages['ga_IE'] = 'Irish';
-$languages['it_IT'] = 'Italian';
-$languages['ja_JP'] = 'Japanese';
-$languages['ko_KR'] = 'Korean';
-$languages['lv_LV'] = 'Latvian';
-$languages['lt_LT'] = 'Lithuanian';
-$languages['mk_MK'] = 'Macedonian';
-$languages['ms_MY'] = 'Malay';
-$languages['mt_MT'] = 'Maltese';
-$languages['no_NO'] = 'Norwegian';
-$languages['pl_PL'] = 'Polish';
-$languages['pt_PT'] = 'Portuguese';
-$languages['ro_RO'] = 'Romanian';
-$languages['ru_RU'] = 'Russian';
-$languages['sr_RS'] = 'Serbian';
-$languages['sk_SK'] = 'Slovak';
-$languages['sl_SI'] = 'Slovenian';
-$languages['es_ES'] = 'Spanish';
-$languages['sv_SE'] = 'Swedish';
-$languages['th_TH'] = 'Thai';
-$languages['tr_TR'] = 'Turkish';
-$languages['uk_UA'] = 'Ukrainian';
-$languages['vi_VN'] = 'Vietnamese';
\ No newline at end of file
diff --git a/wp-content/plugins/flattr/lib/httpconnection.php b/wp-content/plugins/flattr/lib/httpconnection.php
new file mode 100755
index 0000000000000000000000000000000000000000..8e33fd11491ea03ac93f6953cd8a35877d97d5c2
--- /dev/null
+++ b/wp-content/plugins/flattr/lib/httpconnection.php
@@ -0,0 +1,157 @@
+<?php
+
+class HttpConnection {
+
+    // @param string $base url to the service, i.e http://example.com:80
+    protected $baseUrl;
+
+    // @param array $defaultOptions variable to hold default cURL options.
+    protected $defaultOptions;
+
+    /**
+     * constructor with some defaults
+     * @param string $baseUrl
+     */
+    public function __construct($baseUrl = '', $params = array())
+    {
+        $this->baseUrl = $baseUrl;
+        $params = array_merge(array('headers' => array(),'basic_auth' => array()),$params);
+        if ( ! in_array('Expect:', $params['headers']))
+        {
+            $params['headers'][] = 'Expect:'; // lighty needs this
+        }
+        $this->defaultOptions = array(
+            CURLOPT_RETURNTRANSFER  => true,
+            CURLOPT_HTTPHEADER => $params['headers'],
+            CURLOPT_HEADER => 0,
+            CURLOPT_USERAGENT => 'curl',
+        );
+        if (!empty($params['verify_peer']) && $params['verify_peer'] === false) {
+            $this->verifyPeer($params['verify_peer']);
+        }
+        if ( !empty($params['basic_auth'])) {
+            $this->setBasicAuth($params['basic_auth']['user'],$params['basic_auth']['password']);
+        }
+
+    }
+
+    public function setBasicAuth($user,$password)
+    {
+        $this->defaultOptions[CURLOPT_USERPWD] = $user.':'.$password;
+    }
+
+    public function verifyPeer( $verify = true )
+    {
+        $this->defaultOptions[CURLOPT_SSL_VERIFYPEER] = $verify;
+        $this->defaultOptions[CURLOPT_SSL_VERIFYHOST] = $verify;
+    }
+
+    /**
+     * @param string $resourceUrl
+     * @param array $headers (optional)
+     * @return boolean
+     */
+    public function get($resourceUrl, $opts = array())
+    {
+        $opts = $this->parseOptions($opts);
+        if (!empty($opts['params']))
+        {
+            $resourceUrl .= (strpos($responseUrl,'?') === false) ? '?' .$opts['params'] : '&'.$opts['params'];
+        }
+
+        $response = new HttpResponse();
+        $ch = curl_init();
+        $h = $this->mergeHeaders($opts['headers']);
+
+
+        $merged_curlOptions = array(
+            CURLOPT_URL =>	$this->baseUrl.$resourceUrl,
+            CURLOPT_HTTPHEADER => $h,
+            CURLOPT_HEADERFUNCTION => array(&$response,'readHeader')
+        );
+
+        // can't use array_merge or the $array + $array since headers is nested array
+        $curlOptions = $this->defaultOptions;
+        foreach($merged_curlOptions as $k => $v) {
+            $curlOptions[$k] = $v;
+        }
+
+        curl_setopt_array($ch,$curlOptions);
+        $response->body = curl_exec($ch);
+        $response->errors = curl_error($ch);
+        $response->info = curl_getinfo($ch);
+        curl_close($ch);
+        return $response;
+    }
+
+    /**
+     * @param string $resourceUrl
+     * @param mixed $post_body array or string.
+     * @param array $headers (optional)
+     * @return boolean
+     */
+    public function post($resourceUrl, $opts= array())
+    {
+        $opts = $this->parseOptions($opts);
+
+        $response = new HttpResponse();
+        $ch = curl_init();
+        $h = $this->mergeHeaders($opts['headers']);
+        $merged_curlOptions = array(
+            CURLOPT_URL =>	$this->baseUrl.$resourceUrl,
+            CURLOPT_POST => true,
+            CURLOPT_POSTFIELDS => $opts['params'],
+            CURLOPT_HTTPHEADER => $h,
+            CURLOPT_HEADERFUNCTION => array(&$response,'readHeader')
+        );
+
+        // can't use array_merge or the $array + $array since headers is nested array
+        $curlOptions = $this->defaultOptions;
+        foreach($merged_curlOptions as $k => $v) {
+            $curlOptions[$k] = $v;
+        }
+
+        curl_setopt_array($ch,$curlOptions);
+        $response->body = curl_exec($ch);
+        $response->errors = curl_error($ch);
+        $response->info = curl_getinfo($ch);
+        curl_close($ch);
+        return $response;
+    }
+
+    /**
+     * merge headers with the defaults from curl
+     * @param array $headers
+     * @return array $currentHeaders
+     */
+    protected function mergeHeaders( $headers = array() )
+    {
+        $currentHeaders = $this->defaultOptions[CURLOPT_HTTPHEADER];
+        foreach ($headers as $k => $h) {
+            $header = $k . ': ' . $h;
+            if ($this->shouldAddRequestHeader($header, $currentHeaders)) {
+                $currentHeaders[] = $header;
+            }
+        }
+        return $currentHeaders;
+    }
+
+    public function shouldAddRequestHeader($header, &$currentHeaders)
+    {
+        if (!in_array($header, $currentHeaders)) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+
+    protected function parseOptions($options) {
+        $options = array_merge(array('params' => '', 'headers' => array()), $options);
+        if ( is_array($options['params']) )
+        {
+            $options['params'] = http_build_query($options['params']);
+        }
+        return $options;
+    }
+}
diff --git a/wp-content/plugins/flattr/lib/httpresponse.php b/wp-content/plugins/flattr/lib/httpresponse.php
new file mode 100755
index 0000000000000000000000000000000000000000..38e80b1e331e463a4258a2633f35d35f65c9988d
--- /dev/null
+++ b/wp-content/plugins/flattr/lib/httpresponse.php
@@ -0,0 +1,40 @@
+<?php
+class HttpResponse
+{
+    public $body, $responseCode = null;
+    public $errors = array();
+    public $info = array();
+    public $responseHeaders = array();
+
+    public function __construct()
+    {
+    }
+
+    public function readHeader($ch, $header)
+    {
+        list($key, $value) = self::parseHeader($header);
+        if(empty($value)) {
+            return strlen($header);
+        }
+        if ($key == 0 && strpos($value,'HTTP/1.1 ') === 0) {
+            $key = 'Status';
+            $value = str_replace('HTTP/1.1 ','',$value);
+            $this->responseCode = (int)substr($value,0,3); // cache the response code
+        }
+        $this->responseHeaders[$key] = $value;
+        // !important, return bytes read, curl will fail otherwise
+        return strlen($header);
+    }
+
+    public static function parseHeader( $header = '' )
+    {
+        $exploded = explode(':', $header);
+        $r = (count($exploded) > 1) ? array() : array(0);
+        foreach($exploded as $e) {
+            $r[] = trim($e);
+        }
+        return $r;
+    }
+
+
+}
diff --git a/wp-content/plugins/flattr/lib/oauth2client.php b/wp-content/plugins/flattr/lib/oauth2client.php
new file mode 100755
index 0000000000000000000000000000000000000000..eaecb392d6819b89812ccd1fec7d5e5cdde026e5
--- /dev/null
+++ b/wp-content/plugins/flattr/lib/oauth2client.php
@@ -0,0 +1,269 @@
+<?php
+
+class OAuth2Client
+{
+    protected $settings = array();
+    protected $http = null;
+
+    /**
+     * creates the oauth2client object with some defaults
+     *
+     * @param array $settings overrides default settings.
+     * @return OAuth2Client
+     */
+    public function __construct( $settings = array() )
+    {
+        $this->settings = array_merge(array(
+            'client_id'         => null,
+            'client_secret'     => null,
+            'base_url'          => null,
+            'site_url'          => null,
+            'authorize_url'     => null,
+            'access_token_url'  => null,
+            'scopes'            => null,
+            'token_param_name'  => 'Bearer',
+            'redirect_uri'      => null, 
+            'response_type'     => 'code',
+            'grant_type'        => 'authorization_code',
+            'access_token'      => null,
+            'refresh_token'     => null,
+            'developer_mode'    => false,
+            'format'            => 'application/json',
+        ), $settings);
+        $this->http = new HttpConnection();
+        if ($this->settings['developer_mode']) {
+            $this->http->verifyPeer( false );
+        }
+    }
+
+    /**
+     * assemble the authorize_url link
+     *
+     * @return string authorize url endpoint
+     */
+    public function authorizeUrl()
+    {
+        return $this->settings['authorize_url'].'?'.
+            'client_id='.$this->settings['client_id'].'&'.
+            'response_type='.$this->settings['response_type'].'&'.
+            'redirect_uri='.$this->settings['redirect_uri'].'&'.
+            'scope='.$this->settings['scopes'];
+    }
+
+    /**
+     * exchange $code for an access_token
+     *
+     * @param string $code
+     * @throws exception
+     * @return mixed string or false
+     */
+    public function fetchAccessToken($code, $authInParams = false)
+    {
+        $params = array(
+            'code' => $code,
+            'grant_type' => $this->settings['grant_type'],
+        );
+
+        // @todo if more params is needed, make a loop...
+        if (!empty($this->settings['redirect_uri'])) {
+            $params['redirect_uri'] = $this->settings['redirect_uri'];
+        }
+        $headers = $this->headers();
+        if ( $authInParams) {
+            $headers = $this->headers(false);
+            $params['client_id']     = $this->settings['client_id'];
+            $params['client_secret'] = $this->settings['client_secret'];
+        }
+        $this->logRequest('POST '.$this->settings['access_token_url'],array(
+            'params' => $params,
+            'headers' => $headers,
+        ));
+        $response = $this->http->post( $this->settings['access_token_url'],
+            array(
+                'params' => $params,
+                'headers' => $headers,
+            )
+        );
+        $this->logResponse($response);
+        if (!empty($response->body)) {
+            $prms = self::parseResponse($response);
+            if(!empty($prms["error"])) {
+                throw new Exception("Authentication error: " . $prms["error"]);
+            }
+            if ( strpos($response->info['http_code'], '20') !== 0 )
+            {
+                throw new Exception('failed to create access_token');
+            }
+            if ( !empty($prms['token_type']) ) {
+                $this->settings['token_type'] = $prms['token_type'];
+            }
+            $this->settings['access_token'] = $prms['access_token'];
+            return $prms['access_token'];
+        } else {
+            throw new Exception('No body received from POST access_token');
+        }
+        return false;
+    }
+
+    /**
+     * perform a GET api call
+     *
+     * @param string $path
+     * @return HttpResponse
+     */
+    public function get($path)
+    {
+        $this->logRequest(
+            'GET '.$this->uriFor($path),
+            array(
+                'headers' => $this->headers(),
+            )
+        );
+        $response = $this->http->get(
+            $this->uriFor($path),
+            array(
+                'headers' => $this->headers(),
+            )
+        );
+        $this->logResponse($response);
+        return $response;
+    }
+
+    /**
+     * perform a GET api call, wrapped in OAuth2Client::parseResponse
+     *
+     * @param string $path
+     * @return mixed array or string
+     */
+    public function getParsed($path)
+    {
+        $response = $this->get($path);
+        if (!empty($response->body) ) {
+            return self::parseResponse($response);
+        } else {
+            return array(
+                'error' => 'did not get a body from '.$uri
+            );
+        }
+    }
+
+    /**
+     * perform a POST api call
+     *
+     * @param string $path
+     * @param array $postarray
+     * @return HttpResponse
+     */
+    public function post($path, $postarray)
+    {
+        $this->logRequest(
+            'POST '.$this->uriFor($path),
+            array(
+                'params' => http_build_query($postarray),
+                'headers' => $this->headers(),
+            )
+        );
+
+        $response = $this->http->post(
+            $this->uriFor($path),
+            array(
+                'params' => http_build_query($postarray),
+                'headers' => $this->headers()
+            )
+        );
+
+        $this->logResponse($response);
+        return $response;
+    }
+
+    /**
+     * assemble headers for an API clall,
+     * adding Accept and potentially Authorization
+     *
+     * @param boolean $authorizationHeader
+     * @return array $headers
+     */
+    protected function headers($authorizationHeader = true)
+    {
+        $headers = array(
+            'Accept' => $this->settings['format'],
+        );
+        if ($authorizationHeader) {
+            if (! empty($this->settings['access_token'])) {
+                $headers['Authorization'] = $this->settings['token_param_name'] . ' '
+                                          . $this->settings['access_token'];
+            } else if (! empty($this->settings['client_id']) &&
+                       ! empty($this->settings['client_secret'])) {
+                $headers['Authorization'] = 'Basic ' . base64_encode(
+                    $this->settings['client_id'] . ':' . $this->settings['client_secret']
+                );
+            }
+        }
+
+        return $headers;
+
+    }
+    /**
+     * @todo something to parse yaml, xml, m.m ?
+     * parses a response and returns an array if successfull
+     *
+     * @param HttpResponse $response
+     * @return mixed array or string $response->body
+     */
+    public static function parseResponse($response)
+    {
+        $return = array();
+        if (strpos($response->info['content_type'],'json') !== false) {
+            $return = json_decode($response->body,true);
+        } else if (false) {
+        } else {
+        }
+        return $return;
+    }
+
+    /**
+     * adds the base_url before a resource $path
+     *
+     * @param string $path
+     * @return string
+     */
+    protected function uriFor($path)
+    {
+        return $this->settings['base_url'] . $path;
+    }
+
+
+    /**
+     * log a response
+     *
+     * @param HttpResponse
+     * @return void
+     */
+    protected function logResponse($response)
+    {
+        if ($this->settings['developer_mode'] && function_exists('slog')) {
+            slog("");
+            slog("** LOG RESPONSE **");
+            slog("HEADERS =>");
+            slog($response->responseHeaders);
+            slog("BODY =>");
+            slog($response->body);
+        }
+    }
+
+    /**
+     * log a request
+     *
+     * @param string $uri
+     * @param array $params
+     */
+    protected function logRequest( $uri, $params = array())
+    {
+        if ($this->settings['developer_mode'] && function_exists('slog')) {
+            slog("");
+            slog("** LOG REQUEST **");
+            slog($uri);
+            slog($params);
+        }
+    }
+}
diff --git a/wp-content/plugins/flattr/oAuth/flattr_rest.php b/wp-content/plugins/flattr/oAuth/flattr_rest.php
deleted file mode 100644
index 13dcae0a911f6d5e3070d230223474b86511be95..0000000000000000000000000000000000000000
--- a/wp-content/plugins/flattr/oAuth/flattr_rest.php
+++ /dev/null
@@ -1,518 +0,0 @@
-<?php
-
-require_once('oauth.php');
-require_once( 'flattr_xml.php' );
-
-class Flattr_Rest
-{
-	public $http_header;
-	public $url;
-	public $http_code;
-	public $http_info;
-	public $signature_method;
-	public $consumer;
-	public $token;
-
-	private $apiVersion = '0.5';
-	private $error;
-	private $baseUrl = 'https://api.flattr.com';
-
-	public function __construct($consumer_key, $consumer_secret, $oauth_token = null, $oauth_token_secret = null)
-	{
-
-		$this->signature_method = new OAuthSignatureMethod_HMAC_SHA1();
-		$this->consumer = new OAuthConsumer($consumer_key, $consumer_secret);
-		if ( !empty($oauth_token) && ! empty($oauth_token_secret) )
-		{
-			$this->token = new OAuthConsumer($oauth_token, $oauth_token_secret);
-		}
-		else
-		{
-			$this->token = null;
-		}
-	}
-
-	// Flattr API methods
-
-	public function browse($params)
-	{
-		$url = $this->actionUrl('/thing/browse');
-		if ( isset($params['query']) && $params['query'] != '' )
-		{
-			$url .= '/query/' . $params['query'];
-		}
-		if ( isset($params['tag']) && $params['tag'] != '' )
-		{
-			if ( ! is_array($params['tag']) )
-			{
-				$params['tag'] = array($params['tag']);
-			}
-			$url .= '/tag/' . implode(',', $params['tag']);
-		}
-		if ( isset($params['category']) && $params['category'] != '' )
-		{
-			if ( ! is_array($params['category']) )
-			{
-				$params['category'] = array($params['category']);
-			}
-			$url .= '/category/' . implode(',', $params['category']);
-		}
-		if ( isset($params['language']) && $params['language'] != '' )
-		{
-			if ( ! is_array($params['language']) )
-			{
-				$params['language'] = array($params['language']);
-			}
-			$url .= '/language/' . implode(',', $params['language']);
-		}
-		if ( isset($params['user']) && $params['user'] != '' )
-		{
-			if ( ! is_array($params['user']) )
-			{
-				$params['user'] = array($params['user']);
-			}
-			$url .= '/user/' . implode(',', $params['user']);
-		}
-
-		$result = $this->get($url);
-		$dom = new DOMDocument();
-		$dom->loadXml($result);
-		$thingXml = $dom->getElementsByTagName('thing');
-		$things = array();
-		foreach ($thingXml as $thing)
-		{
-			$thingdata = Flattr_Xml::toArray($thing);
-			if ( is_array($thingdata) )
-			{
-				$things[] = $thingdata;
-			}
-		}
-		return $things;
-	}
-
-	public function clickThing($id)
-	{
-		$result = $this->get($this->actionUrl('/thing/click/id/' . $id));
-		if ( $this->http_code == 200 )
-		{
-			return true;
-		}
-		else
-		{
-			$this->error = "Click error " . $this->http_code . ', ' . $this->http_info . "<br />";
-			return false;
-		}
-	}
-
-	public function error()
-	{
-		return $this->error;
-	}
-
-	/**
-	 * Returns an array of Flattr's categories...
-	 * 
-	 * @return array
-	 */
-	public function getCategories()
-	{
-		$result = $this->get($this->actionUrl('/feed/categories'));
-
-		$dom = new DOMDocument();
-		$dom->loadXml($result);
-		$catXml = $dom->getElementsByTagName('category');
-		
-		return Flattr_Xml::toArray( $catXml );
-	}
-
-	/**
-	 * Returns an array of clicks made by the authenticated user during the given period. 
-	 *
-	 * @param string $period in the format 'YYYYMM'
-	 */
-	public function getClicks( $period )
-	{
-		$response = $this->get( $this->actionUrl( "/user/clicks/period/{$period}" ) );
-
-		if ( $this->http_code == 200 )
-		{
-			$dom = new DOMDocument();
-			$dom->loadXml( $response );
-			$clicksXml = $dom->getElementsByTagName( 'click' );
-	
-			return Flattr_Xml::toArray( $clicksXml );			
-		}
-		
-		return false;
-	}
-
-	public function getSubscriptions()
-	{
-		$response = $this->get( $this->actionUrl( "/subscription/list" ) );
-		
-		if ( $this->http_code == 200 )
-		{
-			$dom = new DOMDocument();
-			$dom->loadXml( $response );
-			$subsXml = $dom->getElementsByTagName( 'subscription' );
-	
-			return Flattr_Xml::toArray( $subsXml );
-		}
-		
-		return false;
-	}
-	
-	/**
-	 * Returns a thing as an array.
-	 * If a thing could not be found false is returned
-	 * 
-	 * @param string $id
-	 * @return array|false
-	 */
-	public function getThing( $id )
-	{
-		$result = $this->get($this->actionUrl('/thing/get/id/' . $id));
-
-		if ( $this->http_code == 200 )
-		{
-			$dom = new DOMDocument();
-			$dom->loadXml($result);
-			$thingXml = $dom->getElementsByTagName('thing');
-			if ( ( $thingXml = $thingXml->item(0) ) !== null )
-			{
-			    return Flattr_Xml::toArray( $thingXml );
-			}
-		}
-
-		return false;
-	}
-
-	public function getThingByUrl($url)
-	{
-		$result = $this->get($this->actionUrl('/thing/get/'), array('url' => urlencode($url)));
-		if ( $this->http_code == 200 )
-		{
-			$dom = new DOMDocument();
-			$dom->loadXml($result);
-			$thingXml = $dom->getElementsByTagName('thing');
-			$thing = Flattr_Xml::toArray($thingXml->item(0));
-			return $thing;
-		}
-		else
-		{
-			return false;
-		}
-	}
-
-	public function getThingClicks($thingId)
-	{
-		$result = $this->get($this->actionUrl('/thing/clicks/'), array('thing' => $thingId));
-		$return = array();
-		if ( $this->http_code == 200 )
-		{   
-			$dom = new DOMDocument();
-			$dom->loadXml($result);
-
-			$clicks = $dom->getElementsByTagName('clicks')->item(0);
-			$anon = $clicks->getElementsByTagName('anonymous')->item(0);
-			$anonymousClicks = $anon->getElementsByTagName('count')->item(0)->nodeValue;
-
-			$public = $clicks->getElementsByTagName('public')->item(0);
-			$publicClicks = $public->getElementsByTagName('count')->item(0)->nodeValue;
-
-			$userArray = array();
-			$publicUsers = $public->getElementsByTagName('users')->item(0);
-			$nodes = $publicUsers->getElementsByTagName('user');
-			for ($i=0; $i<$nodes->length; $i++)
-			{
-				$userArray[] = Flattr_Xml::toArray($nodes->item($i));
-			}
-
-			return array('public' => $publicClicks, 'anonymous' => $anonymousClicks, 'publicUsers' => $userArray);
-		}
-		else
-		{
-			return false;
-		}
-	}
-
-	/**
-	 * Returns an array of things owned by specified user
-	 * if no userid is given the current authenticated user is used.
-	 *
-	 * @param int $userId
-	 */
-	public function getThingList($userId = null)
-	{
-		$result = $this->get($this->actionUrl('/thing/listbyuser/id/' . $userId));
-		
-		$dom = new DOMDocument();
-		$dom->loadXml($result);
-		$thingXml = $dom->getElementsByTagName('thing');
-		
-		return Flattr_Xml::toArray( $thingXml );
-	}
-
-	/**
-	 * Returns an array of Flattr's langauges
-	 * 
-	 * @return array
-	 */
-	public function getLanguages()
-	{
-		$result = $this->get($this->actionUrl('/feed/languages'));
-
-		$dom = new DOMDocument();
-		$dom->loadXml($result);
-		$langXml = $dom->getElementsByTagName('language');
-
-		return Flattr_Xml::toArray( $langXml );
-	}
-
-	/**
-	 * Returns info about the specified user.
-	 * If no user is given the currently authenticated user is used.
-	 * 
-	 * @param mixed $user string username | int userId | null 
-	 * @return array|false
-	 */
-	public function getUserInfo($user = null)
-	{
-		$result = null;
-
-		if ( !$user )
-		{
-			$result = $this->get($this->actionUrl('/user/me'));
-		}
-		else
-		{
-			if ( is_numeric($user) )
-			{
-				$result = $this->get($this->actionUrl('/user/get/id/' . $user));
-			}
-			else
-			{
-				$result = $this->get($this->actionUrl('/user/get/name/' . $user));
-			}
-		}
-
-                if (class_exists("DOMDocument")) {
-                    $dom = new DOMDocument();
-                    $dom->loadXml($result);
-                    $userXml = $dom->getElementsByTagName('user');
-                    if ( ( $userXml = $userXml->item(0) ) !== null )
-                    {
-                        return Flattr_Xml::toArray( $userXml );
-                    }
-                }
-
-		return false;
-	}
-	
-	/**
-	 * Will register a new thing on flattr.com
-	 * 
-	 * @param string $url
-	 * @param string $title
-	 * @param string $category
-	 * @param string $description
-	 * @param string $tags
-	 * @param string $language
-	 * @param bool $hidden
-	 * @param bool $temporary
-	 */
-	public function submitThing($url, $title, $category, $description, $tags, $language, $hidden = false, $temporary = false)
-	{
-		$dom = new DOMDocument('1.0', 'utf-8');
-		
-		$node = $dom->appendChild( $dom->createElement('thing') );
-		Flattr_Xml::addElement($node, 'url', $url);
-		Flattr_Xml::addElement($node, 'title', $title);
-		Flattr_Xml::addElement($node, 'category', $category);
-		Flattr_Xml::addElement($node, 'description', $description);
-		Flattr_Xml::addElement($node, 'language', $language);
-		Flattr_Xml::addElement($node, 'hidden', $hidden);
-		Flattr_Xml::addElement($node, 'temporary', $temporary);
-
-                if (trim($tags) != "") {
-                    $tagsNode = $node->appendChild( $dom->createElement('tags') );
-                    foreach ( explode(',', $tags) as $tag )
-                    {
-                        Flattr_Xml::addElement($tagsNode, 'tag', trim($tag));
-                    }
-                }
-
-                $result = $this->post($this->actionUrl('/thing/register'), array('data' => $dom->saveXml()));
-
-                if (!empty ($result)) {
-                    $dom = new DOMDocument();
-                    $dom->loadXml($result);
-                    $thingXml = $dom->getElementsByTagName('thing');
-
-                    return Flattr_Xml::toArray( $thingXml->item(0) );
-                } 
-                return false;
-
-	}
-
-	// Oauth specific
-
-	public function getAccessToken($verifier)
-	{
-		$parameters = array('oauth_verifier' => $verifier);
-
-		$request = $this->oAuthRequest($this->accessTokenUrl(), 'GET', $parameters);
-		$token = OAuthUtil::parse_parameters($request);
-		if ( isset($token['oauth_token']) && isset($token['oauth_token_secret']) )
-		{
-			$this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
-			return $token;
-		}
-	}
-
-	public function getAuthorizeUrl($token, $access = 'read')
-	{
-		return $this->authorizeUrl() . '?oauth_token=' . $token['oauth_token'] . '&access_scope=' . $access;
-	}
-
-	/**
-	 * Gets a request token from the API server and returns an oauth token.
-	 *
-	 * @param string $callback a callback url (fully qualified)
-	 * @return array oauth response parameters as array
-	 */
-	public function getRequestToken($callback = null)
-	{
-		$parameters = array();
-
-		if ( !empty($callback) )
-		{
-			$parameters['oauth_callback'] = $callback;
-		}
-
-		$response = $this->oAuthRequest($this->requestTokenUrl(), 'GET', $parameters);
-		$responseParameters = OAuthUtil::parse_parameters($response);
-		if ( isset($responseParameters['oauth_token']) && isset($responseParameters['oauth_token_secret']) )
-		{
-			$this->token = new OAuthConsumer($responseParameters['oauth_token'], $responseParameters['oauth_token_secret']);
-		}
-		else
-		{
-			$this->error = $responseParameters['oauth_problem'];
-		}
-
-		return $responseParameters;
-	}
-
-	// INTERNAL
-
-	private function accessTokenUrl()
-	{
-		return $this->baseUrl . '/oauth/access_token';
-	}
-	
-	private function actionUrl($uri)
-	{
-		return $this->baseUrl . '/rest/' . $this->apiVersion . $uri;
-	}
-		
-	private function authorizeUrl()
-	{
-		return $this->baseUrl . '/oauth/authorize';
-	}
-
-	private function get($url, $parameters = array())
-    {
-        $response = $this->oAuthRequest($url, 'GET', $parameters);
-        return $response;
-    }
-
-	private function requestTokenUrl()
-	{
-		return $this->baseUrl . '/oauth/request_token';
-	}
-	
-	private function getHeader($ch, $header)
-	{
-		$i = strpos($header, ':');
-		if (!empty($i))
-		{
-			$key = str_replace('-', '_', strtolower(substr($header, 0, $i)));
-  			$value = trim(substr($header, $i + 2));
-  			$this->http_header[$key] = $value;
-    	}
-    	
-    	return strlen($header);
-	}
-	
-	private function http($url, $method, $postfields = array(), $headers = array())
-	{
-		$this->http_info = array();
-		$ci = curl_init();
-
-		$headers[] = 'Expect:';
-
-		curl_setopt($ci, CURLOPT_USERAGENT, 'Flattrbot/0.1');
-		curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 10);
-		curl_setopt($ci, CURLOPT_TIMEOUT, 10);
-		curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);
-		curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
-		curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, false);
-		curl_setopt($ci, CURLOPT_HEADERFUNCTION, array($this, 'getHeader'));
-		curl_setopt($ci, CURLOPT_HEADER, FALSE);
-
-		switch ($method)
-		{
-  			case 'POST':
-    			curl_setopt($ci, CURLOPT_POST, TRUE);
-    			if (!empty($postfields))
-    			{
-      				curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
-    			}
-    			break;
-
-  			case 'DELETE':
-    			curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE');
-    			if (!empty($postfields))
-    			{
-      				$url = "{$url}?{$postfields}";
-    			}
-		}
-
-		curl_setopt($ci, CURLOPT_URL, $url);
-		$response = curl_exec($ci);
-		$this->http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
-		$this->http_info = array_merge($this->http_info, curl_getinfo($ci));
-		$this->url = $url;
-		curl_close ($ci);
-
-		return $response;
-	}
-
-	private function oAuthRequest($url, $method, $parameters, $headers = array())
-	{
-    	if (strrpos($url, 'https://') !== 0 && strrpos($url, 'http://') !== 0)
-    	{
-      		$url = "{$this->host}{$url}.{$this->format}";
-    	}
-    	
-    	$request = OAuthRequest::from_consumer_and_token($this->consumer, $this->token, $method, $url, $parameters);
-    	$request->sign_request($this->signature_method, $this->consumer, $this->token);
-		$headers['Authorization'] = $request->to_header();
-
-		switch ($method)
-		{
-			case 'GET':
-  				return $this->http($request->to_url(), 'GET', null, $headers);
-			default:
-  				return $this->http($request->get_normalized_http_url(), $method, $request->to_postdata(), $headers);
-    	}
-  	}
-
-	private function post($url, $parameters = array())
-    {
-        $response = $this->oAuthRequest($url, 'POST', $parameters);
-        return $response;
-	}
-
-}
diff --git a/wp-content/plugins/flattr/oAuth/flattr_xml.php b/wp-content/plugins/flattr/oAuth/flattr_xml.php
deleted file mode 100644
index 69631a7534f4220082ab6dbc5424dc14f7724f53..0000000000000000000000000000000000000000
--- a/wp-content/plugins/flattr/oAuth/flattr_xml.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
-class Flattr_Xml
-{
-    
-	public static function addElement(DOMNode $node, $name, $value)
-	{
-	    if ( is_bool( $value ) )
-	    {
-	        $value = (int)$value;
-	    }
-	    
-        if ( $value instanceOf DOMNode )
-        {
-            throw new Exception('Construction blocks your path!');
-        }
-        else if ( is_numeric( $value ) )
-        {
-            $node->appendChild( new DOMElement($name, $value) );
-        }
-        else
-        {
-            $elm = $node->appendChild( new DOMElement($name) );
-            $elm->appendChild( $node->ownerDocument->createCDATASection($value) );
-        }
-	}
-	
-	/**
-	 * Checks if node has any children other than just text
-	 *
-	 * @param DOMNode
-	 * @return boolean
-	 */
-	public static function nodeHasChild( $node )
-	{
-		if ( $node->hasChildNodes() )
-		{
-			foreach ( $node->childNodes as $child )
-			{
-				if ( $child->nodeType == XML_ELEMENT_NODE )
-				{
-	    			return true;
-				}
-			}
-		}
-
-		return false;
-	}
-
-	/**
-	 * Takes a DOMNode (or a DOMNodeList) and returns it as an array
-	 * 
-	 * @param DOMNode|DOMNodeList $item
-	 * @return array
-	 */
-	public static function toArray( $xml )
-	{
-		if ( $xml instanceOf DOMNodeList )
-		{
-			$items = array();
-			foreach ( $xml as $item )
-			{
-				$items[] = self::toArray( $item );
-			}
-	
-			return $items;
-		}
-	
-		$itemData = array();
-		foreach ( $xml->childNodes as $node )
-		{
-			if ( self::nodeHasChild( $node ) )
-			{
-				$itemData[$node->nodeName] = self::toArray( $node );
-			}
-			else
-			{
-				$itemData[$node->nodeName] = $node->nodeValue;
-			}
-		}
-
-		return $itemData;
-	}
-
-}
\ No newline at end of file
diff --git a/wp-content/plugins/flattr/oAuth/oauth.php b/wp-content/plugins/flattr/oAuth/oauth.php
deleted file mode 100644
index 27e44f4cf20635fdd92b87e2635be396ff361a83..0000000000000000000000000000000000000000
--- a/wp-content/plugins/flattr/oAuth/oauth.php
+++ /dev/null
@@ -1,884 +0,0 @@
-<?php
-
-/* Generic exception class
- */
-
-if(!class_exists('OAuthConsumer')) {
-    class OAuthConsumer {
-      public $key;
-      public $secret;
-
-      function __construct($key, $secret, $callback_url=NULL) {
-        $this->key = $key;
-        $this->secret = $secret;
-        $this->callback_url = $callback_url;
-      }
-
-      function __toString() {
-        return "OAuthConsumer[key=$this->key,secret=$this->secret]";
-      }
-    }
-}
-
-if(!class_exists('OAuthToken')) {
-    class OAuthToken {
-      // access tokens and request tokens
-      public $key;
-      public $secret;
-
-      /**
-       * key = the token
-       * secret = the token secret
-       */
-      function __construct($key, $secret) {
-        $this->key = $key;
-        $this->secret = $secret;
-      }
-
-      /**
-       * generates the basic string serialization of a token that a server
-       * would respond to request_token and access_token calls with
-       */
-      function to_string() {
-        return "oauth_token=" .
-               OAuthUtil::urlencode_rfc3986($this->key) .
-               "&oauth_token_secret=" .
-               OAuthUtil::urlencode_rfc3986($this->secret);
-      }
-
-      function __toString() {
-        return $this->to_string();
-      }
-    }
-}
-
-/**
- * A class for implementing a Signature Method
- * See section 9 ("Signing Requests") in the spec
- */
-if(!class_exists('OAuthSignatureMethod')) {
-    abstract class OAuthSignatureMethod {
-      /**
-       * Needs to return the name of the Signature Method (ie HMAC-SHA1)
-       * @return string
-       */
-      abstract public function get_name();
-
-      /**
-       * Build up the signature
-       * NOTE: The output of this function MUST NOT be urlencoded.
-       * the encoding is handled in OAuthRequest when the final
-       * request is serialized
-       * @param OAuthRequest $request
-       * @param OAuthConsumer $consumer
-       * @param OAuthToken $token
-       * @return string
-       */
-      abstract public function build_signature($request, $consumer, $token);
-
-      /**
-       * Verifies that a given signature is correct
-       * @param OAuthRequest $request
-       * @param OAuthConsumer $consumer
-       * @param OAuthToken $token
-       * @param string $signature
-       * @return bool
-       */
-      public function check_signature($request, $consumer, $token, $signature) {
-        $built = $this->build_signature($request, $consumer, $token);
-        return $built == $signature;
-      }
-    }
-}
-
-/**
- * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104] 
- * where the Signature Base String is the text and the key is the concatenated values (each first 
- * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&' 
- * character (ASCII code 38) even if empty.
- *   - Chapter 9.2 ("HMAC-SHA1")
- */
-
-if(!class_exists('OAuthSignatureMethod_HMAC_SHA1')) {
-    class OAuthSignatureMethod_HMAC_SHA1 extends OAuthSignatureMethod {
-      function get_name() {
-        return "HMAC-SHA1";
-      }
-
-      public function build_signature($request, $consumer, $token) {
-        $base_string = $request->get_signature_base_string();
-        $request->base_string = $base_string;
-
-        $key_parts = array(
-          $consumer->secret,
-          ($token) ? $token->secret : ""
-        );
-
-        $key_parts = OAuthUtil::urlencode_rfc3986($key_parts);
-        $key = implode('&', $key_parts);
-
-        return base64_encode(hash_hmac('sha1', $base_string, $key, true));
-      }
-    }
-}
-
-/**
- * The PLAINTEXT method does not provide any security protection and SHOULD only be used 
- * over a secure channel such as HTTPS. It does not use the Signature Base String.
- *   - Chapter 9.4 ("PLAINTEXT")
- */
-if(!class_exists('OAuthSignatureMethod_PLAINTEXT')) {
-    class OAuthSignatureMethod_PLAINTEXT extends OAuthSignatureMethod {
-      public function get_name() {
-        return "PLAINTEXT";
-      }
-
-      /**
-       * oauth_signature is set to the concatenated encoded values of the Consumer Secret and
-       * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
-       * empty. The result MUST be encoded again.
-       *   - Chapter 9.4.1 ("Generating Signatures")
-       *
-       * Please note that the second encoding MUST NOT happen in the SignatureMethod, as
-       * OAuthRequest handles this!
-       */
-      public function build_signature($request, $consumer, $token) {
-        $key_parts = array(
-          $consumer->secret,
-          ($token) ? $token->secret : ""
-        );
-
-        $key_parts = OAuthUtil::urlencode_rfc3986($key_parts);
-        $key = implode('&', $key_parts);
-        $request->base_string = $key;
-
-        return $key;
-      }
-    }
-}
-
-/**
- * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in 
- * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for 
- * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a 
- * verified way to the Service Provider, in a manner which is beyond the scope of this 
- * specification.
- *   - Chapter 9.3 ("RSA-SHA1")
- */
-if (!class_exists('OAuthSignatureMethod_RSA_SHA1')) {
-    abstract class OAuthSignatureMethod_RSA_SHA1 extends OAuthSignatureMethod {
-      public function get_name() {
-        return "RSA-SHA1";
-      }
-
-      // Up to the SP to implement this lookup of keys. Possible ideas are:
-      // (1) do a lookup in a table of trusted certs keyed off of consumer
-      // (2) fetch via http using a url provided by the requester
-      // (3) some sort of specific discovery code based on request
-      //
-      // Either way should return a string representation of the certificate
-      protected abstract function fetch_public_cert(&$request);
-
-      // Up to the SP to implement this lookup of keys. Possible ideas are:
-      // (1) do a lookup in a table of trusted certs keyed off of consumer
-      //
-      // Either way should return a string representation of the certificate
-      protected abstract function fetch_private_cert(&$request);
-
-      public function build_signature($request, $consumer, $token) {
-        $base_string = $request->get_signature_base_string();
-        $request->base_string = $base_string;
-
-        // Fetch the private key cert based on the request
-        $cert = $this->fetch_private_cert($request);
-
-        // Pull the private key ID from the certificate
-        $privatekeyid = openssl_get_privatekey($cert);
-
-        // Sign using the key
-        $ok = openssl_sign($base_string, $signature, $privatekeyid);
-
-        // Release the key resource
-        openssl_free_key($privatekeyid);
-
-        return base64_encode($signature);
-      }
-
-      public function check_signature($request, $consumer, $token, $signature) {
-        $decoded_sig = base64_decode($signature);
-
-        $base_string = $request->get_signature_base_string();
-
-        // Fetch the public key cert based on the request
-        $cert = $this->fetch_public_cert($request);
-
-        // Pull the public key ID from the certificate
-        $publickeyid = openssl_get_publickey($cert);
-
-        // Check the computed signature against the one passed in the query
-        $ok = openssl_verify($base_string, $decoded_sig, $publickeyid);
-
-        // Release the key resource
-        openssl_free_key($publickeyid);
-
-        return $ok == 1;
-      }
-    }
-}
-
-if(!class_exists(('OAuthRequest'))) {
-    class OAuthRequest {
-      private $parameters;
-      private $http_method;
-      private $http_url;
-      // for debug purposes
-      public $base_string;
-      public static $version = '1.0';
-      public static $POST_INPUT = 'php://input';
-
-      function __construct($http_method, $http_url, $parameters=NULL) {
-        @$parameters or $parameters = array();
-        $parameters = array_merge( OAuthUtil::parse_parameters(parse_url($http_url, PHP_URL_QUERY)), $parameters);
-        $this->parameters = $parameters;
-        $this->http_method = $http_method;
-        $this->http_url = $http_url;
-      }
-
-
-      /**
-       * attempt to build up a request from what was passed to the server
-       */
-      public static function from_request($http_method=NULL, $http_url=NULL, $parameters=NULL) {
-        $scheme = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on")
-                  ? 'http'
-                  : 'https';
-        @$http_url or $http_url = $scheme .
-                                  '://' . $_SERVER['HTTP_HOST'] .
-                                  ':' .
-                                  $_SERVER['SERVER_PORT'] .
-                                  $_SERVER['REQUEST_URI'];
-        @$http_method or $http_method = $_SERVER['REQUEST_METHOD'];
-
-        // We weren't handed any parameters, so let's find the ones relevant to
-        // this request.
-        // If you run XML-RPC or similar you should use this to provide your own
-        // parsed parameter-list
-        if (!$parameters) {
-          // Find request headers
-          $request_headers = OAuthUtil::get_headers();
-
-          // Parse the query-string to find GET parameters
-          $parameters = OAuthUtil::parse_parameters($_SERVER['QUERY_STRING']);
-
-          // It's a POST request of the proper content-type, so parse POST
-          // parameters and add those overriding any duplicates from GET
-          if ($http_method == "POST"
-              && @strstr($request_headers["Content-Type"],
-                         "application/x-www-form-urlencoded")
-              ) {
-            $post_data = OAuthUtil::parse_parameters(
-              file_get_contents(self::$POST_INPUT)
-            );
-            $parameters = array_merge($parameters, $post_data);
-          }
-
-          // We have a Authorization-header with OAuth data. Parse the header
-          // and add those overriding any duplicates from GET or POST
-          if (@substr($request_headers['Authorization'], 0, 6) == "OAuth ") {
-            $header_parameters = OAuthUtil::split_header(
-              $request_headers['Authorization']
-            );
-            $parameters = array_merge($parameters, $header_parameters);
-          }
-
-        }
-
-        return new OAuthRequest($http_method, $http_url, $parameters);
-      }
-
-      /**
-       * pretty much a helper function to set up the request
-       */
-      public static function from_consumer_and_token($consumer, $token, $http_method, $http_url, $parameters=NULL) {
-        @$parameters or $parameters = array();
-        $defaults = array("oauth_version" => OAuthRequest::$version,
-                          "oauth_nonce" => OAuthRequest::generate_nonce(),
-                          "oauth_timestamp" => OAuthRequest::generate_timestamp(),
-                          "oauth_consumer_key" => $consumer->key);
-        if ($token)
-          $defaults['oauth_token'] = $token->key;
-
-        $parameters = array_merge($defaults, $parameters);
-
-        return new OAuthRequest($http_method, $http_url, $parameters);
-      }
-
-      public function set_parameter($name, $value, $allow_duplicates = true) {
-        if ($allow_duplicates && isset($this->parameters[$name])) {
-          // We have already added parameter(s) with this name, so add to the list
-          if (is_scalar($this->parameters[$name])) {
-            // This is the first duplicate, so transform scalar (string)
-            // into an array so we can add the duplicates
-            $this->parameters[$name] = array($this->parameters[$name]);
-          }
-
-          $this->parameters[$name][] = $value;
-        } else {
-          $this->parameters[$name] = $value;
-        }
-      }
-
-      public function get_parameter($name) {
-        return isset($this->parameters[$name]) ? $this->parameters[$name] : null;
-      }
-
-      public function get_parameters() {
-        return $this->parameters;
-      }
-
-      public function unset_parameter($name) {
-        unset($this->parameters[$name]);
-      }
-
-      /**
-       * The request parameters, sorted and concatenated into a normalized string.
-       * @return string
-       */
-      public function get_signable_parameters() {
-        // Grab all parameters
-        $params = $this->parameters;
-
-        // Remove oauth_signature if present
-        // Ref: Spec: 9.1.1 ("The oauth_signature parameter MUST be excluded.")
-        if (isset($params['oauth_signature'])) {
-          unset($params['oauth_signature']);
-        }
-
-        return OAuthUtil::build_http_query($params);
-      }
-
-      /**
-       * Returns the base string of this request
-       *
-       * The base string defined as the method, the url
-       * and the parameters (normalized), each urlencoded
-       * and the concated with &.
-       */
-      public function get_signature_base_string() {
-        $parts = array(
-          $this->get_normalized_http_method(),
-          $this->get_normalized_http_url(),
-          $this->get_signable_parameters()
-        );
-
-        $parts = OAuthUtil::urlencode_rfc3986($parts);
-
-        return implode('&', $parts);
-      }
-
-      /**
-       * just uppercases the http method
-       */
-      public function get_normalized_http_method() {
-        return strtoupper($this->http_method);
-      }
-
-      /**
-       * parses the url and rebuilds it to be
-       * scheme://host/path
-       */
-      public function get_normalized_http_url() {
-        $parts = parse_url($this->http_url);
-
-        $port = @$parts['port'];
-        $scheme = $parts['scheme'];
-        $host = $parts['host'];
-        $path = @$parts['path'];
-
-        $port or $port = ($scheme == 'https') ? '443' : '80';
-
-        if (($scheme == 'https' && $port != '443')
-            || ($scheme == 'http' && $port != '80')) {
-          $host = "$host:$port";
-        }
-        return "$scheme://$host$path";
-      }
-
-      /**
-       * builds a url usable for a GET request
-       */
-      public function to_url() {
-        $post_data = $this->to_postdata();
-        $out = $this->get_normalized_http_url();
-        if ($post_data) {
-          $out .= '?'.$post_data;
-        }
-        return $out;
-      }
-
-      /**
-       * builds the data one would send in a POST request
-       */
-      public function to_postdata() {
-        return OAuthUtil::build_http_query($this->parameters);
-      }
-
-      /**
-       * builds the Authorization: header
-       */
-      public function to_header($realm=null) {
-        $first = true;
-            if($realm) {
-          $out = 'Authorization: OAuth realm="' . OAuthUtil::urlencode_rfc3986($realm) . '"';
-          $first = false;
-        } else
-          $out = 'Authorization: OAuth';
-
-        $total = array();
-        foreach ($this->parameters as $k => $v) {
-          if (substr($k, 0, 5) != "oauth") continue;
-          if (is_array($v)) {
-            throw new Exception('Arrays not supported in headers');
-          }
-          $out .= ($first) ? ' ' : ',';
-          $out .= OAuthUtil::urlencode_rfc3986($k) .
-                  '="' .
-                  OAuthUtil::urlencode_rfc3986($v) .
-                  '"';
-          $first = false;
-        }
-        return $out;
-      }
-
-      public function __toString() {
-        return $this->to_url();
-      }
-
-
-      public function sign_request($signature_method, $consumer, $token) {
-        $this->set_parameter(
-          "oauth_signature_method",
-          $signature_method->get_name(),
-          false
-        );
-        $signature = $this->build_signature($signature_method, $consumer, $token);
-        $this->set_parameter("oauth_signature", $signature, false);
-      }
-
-      public function build_signature($signature_method, $consumer, $token) {
-        $signature = $signature_method->build_signature($this, $consumer, $token);
-        return $signature;
-      }
-
-      /**
-       * util function: current timestamp
-       */
-      private static function generate_timestamp() {
-        return time();
-      }
-
-      /**
-       * util function: current nonce
-       */
-      private static function generate_nonce() {
-        $mt = microtime();
-        $rand = mt_rand();
-
-        return md5($mt . $rand); // md5s look nicer than numbers
-      }
-    }
-}
-
-if (!class_exists('OAuthServer')) {
-    class OAuthServer {
-      protected $timestamp_threshold = 300; // in seconds, five minutes
-      protected $version = '1.0';             // hi blaine
-      protected $signature_methods = array();
-
-      protected $data_store;
-
-      function __construct($data_store) {
-        $this->data_store = $data_store;
-      }
-
-      public function add_signature_method($signature_method) {
-        $this->signature_methods[$signature_method->get_name()] =
-          $signature_method;
-      }
-
-      // high level functions
-
-      /**
-       * process a request_token request
-       * returns the request token on success
-       */
-      public function fetch_request_token(&$request) {
-        $this->get_version($request);
-
-        $consumer = $this->get_consumer($request);
-
-        // no token required for the initial token request
-        $token = NULL;
-
-        $this->check_signature($request, $consumer, $token);
-
-        // Rev A change
-        $callback = $request->get_parameter('oauth_callback');
-        $new_token = $this->data_store->new_request_token($consumer, $callback);
-
-        return $new_token;
-      }
-
-      /**
-       * process an access_token request
-       * returns the access token on success
-       */
-      public function fetch_access_token(&$request) {
-        $this->get_version($request);
-
-        $consumer = $this->get_consumer($request);
-
-        // requires authorized request token
-        $token = $this->get_token($request, $consumer, "request");
-
-        $this->check_signature($request, $consumer, $token);
-
-        // Rev A change
-        $verifier = $request->get_parameter('oauth_verifier');
-        $new_token = $this->data_store->new_access_token($token, $consumer, $verifier);
-
-        return $new_token;
-      }
-
-      /**
-       * verify an api call, checks all the parameters
-       */
-      public function verify_request(&$request) {
-        $this->get_version($request);
-        $consumer = $this->get_consumer($request);
-        $token = $this->get_token($request, $consumer, "access");
-        $this->check_signature($request, $consumer, $token);
-        return array($consumer, $token);
-      }
-
-      // Internals from here
-      /**
-       * version 1
-       */
-      private function get_version(&$request) {
-        $version = $request->get_parameter("oauth_version");
-        if (!$version) {
-          // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
-          // Chapter 7.0 ("Accessing Protected Ressources")
-          $version = '1.0';
-        }
-        if ($version !== $this->version) {
-          throw new Exception("OAuth version '$version' not supported");
-        }
-        return $version;
-      }
-
-      /**
-       * figure out the signature with some defaults
-       */
-      private function get_signature_method(&$request) {
-        $signature_method =
-            @$request->get_parameter("oauth_signature_method");
-
-        if (!$signature_method) {
-          // According to chapter 7 ("Accessing Protected Ressources") the signature-method
-          // parameter is required, and we can't just fallback to PLAINTEXT
-          throw new Exception('No signature method parameter. This parameter is required');
-        }
-
-        if (!in_array($signature_method,
-                      array_keys($this->signature_methods))) {
-          throw new Exception(
-            "Signature method '$signature_method' not supported " .
-            "try one of the following: " .
-            implode(", ", array_keys($this->signature_methods))
-          );
-        }
-        return $this->signature_methods[$signature_method];
-      }
-
-      /**
-       * try to find the consumer for the provided request's consumer key
-       */
-      private function get_consumer(&$request) {
-        $consumer_key = @$request->get_parameter("oauth_consumer_key");
-        if (!$consumer_key) {
-          throw new Exception("Invalid consumer key");
-        }
-
-        $consumer = $this->data_store->lookup_consumer($consumer_key);
-        if (!$consumer) {
-          throw new Exception("Invalid consumer");
-        }
-
-        return $consumer;
-      }
-
-      /**
-       * try to find the token for the provided request's token key
-       */
-      private function get_token(&$request, $consumer, $token_type="access") {
-        $token_field = @$request->get_parameter('oauth_token');
-        $token = $this->data_store->lookup_token(
-          $consumer, $token_type, $token_field
-        );
-        if (!$token) {
-          throw new Exception("Invalid $token_type token: $token_field");
-        }
-        return $token;
-      }
-
-      /**
-       * all-in-one function to check the signature on a request
-       * should guess the signature method appropriately
-       */
-      private function check_signature(&$request, $consumer, $token) {
-        // this should probably be in a different method
-        $timestamp = @$request->get_parameter('oauth_timestamp');
-        $nonce = @$request->get_parameter('oauth_nonce');
-
-        $this->check_timestamp($timestamp);
-        $this->check_nonce($consumer, $token, $nonce, $timestamp);
-
-        $signature_method = $this->get_signature_method($request);
-
-        $signature = $request->get_parameter('oauth_signature');
-        $valid_sig = $signature_method->check_signature(
-          $request,
-          $consumer,
-          $token,
-          $signature
-        );
-
-        if (!$valid_sig) {
-          throw new Exception("Invalid signature");
-        }
-      }
-
-      /**
-       * check that the timestamp is new enough
-       */
-      private function check_timestamp($timestamp) {
-        if( ! $timestamp )
-          throw new Exception(
-            'Missing timestamp parameter. The parameter is required'
-          );
-
-        // verify that timestamp is recentish
-        $now = time();
-        if (abs($now - $timestamp) > $this->timestamp_threshold) {
-          throw new Exception(
-            "Expired timestamp, yours $timestamp, ours $now"
-          );
-        }
-      }
-
-      /**
-       * check that the nonce is not repeated
-       */
-      private function check_nonce($consumer, $token, $nonce, $timestamp) {
-        if( ! $nonce )
-          throw new Exception(
-            'Missing nonce parameter. The parameter is required'
-          );
-
-        // verify that the nonce is uniqueish
-        $found = $this->data_store->lookup_nonce(
-          $consumer,
-          $token,
-          $nonce,
-          $timestamp
-        );
-        if ($found) {
-          throw new Exception("Nonce already used: $nonce");
-        }
-      }
-
-    }
-}
-
-if (!class_exists('OAuthDataStore')) {
-    class OAuthDataStore {
-      function lookup_consumer($consumer_key) {
-        // implement me
-      }
-
-      function lookup_token($consumer, $token_type, $token) {
-        // implement me
-      }
-
-      function lookup_nonce($consumer, $token, $nonce, $timestamp) {
-        // implement me
-      }
-
-      function new_request_token($consumer, $callback = null) {
-        // return a new token attached to this consumer
-      }
-
-      function new_access_token($token, $consumer, $verifier = null) {
-        // return a new access token attached to this consumer
-        // for the user associated with this token if the request token
-        // is authorized
-        // should also invalidate the request token
-      }
-
-    }
-}
-
-if (!class_exists('OAuthUtil')) {
-    class OAuthUtil {
-      public static function urlencode_rfc3986($input) {
-          if (is_array($input)) {
-            return array_map(array('OAuthUtil', 'urlencode_rfc3986'), $input);
-          } else if (is_scalar($input)) {
-            return str_replace(
-              '+',
-              ' ',
-              str_replace('%7E', '~', rawurlencode($input))
-            );
-          } else {
-            return '';
-          }
-      }
-    
-
-      // This decode function isn't taking into consideration the above
-      // modifications to the encoding process. However, this method doesn't
-      // seem to be used anywhere so leaving it as is.
-
-      public static function urldecode_rfc3986($string) {
-        return urldecode($string);
-      }
-      // Utility function for turning the Authorization: header into
-      // parameters, has to do some unescaping
-      // Can filter out any non-oauth parameters if needed (default behaviour)
-      // May 28th, 2010 - method updated to tjerk.meesters for a speed improvement.
-      //                  see http://code.google.com/p/oauth/issues/detail?id=163
-      public static function split_header($header, $only_allow_oauth_parameters = true) {
-        $params = array();
-        if (preg_match_all('/('.($only_allow_oauth_parameters ? 'oauth_' : '').'[a-z_-]*)=(:?"([^"]*)"|([^,]*))/', $header, $matches)) {
-          foreach ($matches[1] as $i => $h) {
-            $params[$h] = OAuthUtil::urldecode_rfc3986(empty($matches[3][$i]) ? $matches[4][$i] : $matches[3][$i]);
-          }
-          if (isset($params['realm'])) {
-            unset($params['realm']);
-          }
-        }
-        return $params;
-      }
-
-      // helper to try to sort out headers for people who aren't running apache
-      public static function get_headers() {
-        if (function_exists('apache_request_headers')) {
-          // we need this to get the actual Authorization: header
-          // because apache tends to tell us it doesn't exist
-          $headers = apache_request_headers();
-
-          // sanitize the output of apache_request_headers because
-          // we always want the keys to be Cased-Like-This and arh()
-          // returns the headers in the same case as they are in the
-          // request
-          $out = array();
-          foreach ($headers AS $key => $value) {
-            $key = str_replace(
-                " ",
-                "-",
-                ucwords(strtolower(str_replace("-", " ", $key)))
-              );
-            $out[$key] = $value;
-          }
-        } else {
-          // otherwise we don't have apache and are just going to have to hope
-          // that $_SERVER actually contains what we need
-          $out = array();
-          if( isset($_SERVER['CONTENT_TYPE']) )
-            $out['Content-Type'] = $_SERVER['CONTENT_TYPE'];
-          if( isset($_ENV['CONTENT_TYPE']) )
-            $out['Content-Type'] = $_ENV['CONTENT_TYPE'];
-
-          foreach ($_SERVER as $key => $value) {
-            if (substr($key, 0, 5) == "HTTP_") {
-              // this is chaos, basically it is just there to capitalize the first
-              // letter of every word that is not an initial HTTP and strip HTTP
-              // code from przemek
-              $key = str_replace(
-                " ",
-                "-",
-                ucwords(strtolower(str_replace("_", " ", substr($key, 5))))
-              );
-              $out[$key] = $value;
-            }
-          }
-        }
-        return $out;
-      }
-
-      // This function takes a input like a=b&a=c&d=e and returns the parsed
-      // parameters like this
-      // array('a' => array('b','c'), 'd' => 'e')
-      public static function parse_parameters( $input ) {
-        if (!isset($input) || !$input) return array();
-
-        $pairs = explode('&', $input);
-
-        $parsed_parameters = array();
-        foreach ($pairs as $pair) {
-          $split = explode('=', $pair, 2);
-          $parameter = OAuthUtil::urldecode_rfc3986($split[0]);
-          $value = isset($split[1]) ? OAuthUtil::urldecode_rfc3986($split[1]) : '';
-
-          if (isset($parsed_parameters[$parameter])) {
-            // We have already recieved parameter(s) with this name, so add to the list
-            // of parameters with this name
-
-            if (is_scalar($parsed_parameters[$parameter])) {
-              // This is the first duplicate, so transform scalar (string) into an array
-              // so we can add the duplicates
-              $parsed_parameters[$parameter] = array($parsed_parameters[$parameter]);
-            }
-
-            $parsed_parameters[$parameter][] = $value;
-          } else {
-            $parsed_parameters[$parameter] = $value;
-          }
-        }
-        return $parsed_parameters;
-      }
-
-      public static function build_http_query($params) {
-        if (!$params) return '';
-
-        // Urlencode both keys and values
-        $keys = OAuthUtil::urlencode_rfc3986(array_keys($params));
-        $values = OAuthUtil::urlencode_rfc3986(array_values($params));
-        $params = array_combine($keys, $values);
-
-        // Parameters are sorted by name, using lexicographical byte value ordering.
-        // Ref: Spec: 9.1.1 (1)
-        uksort($params, 'strcmp');
-
-        $pairs = array();
-        foreach ($params as $parameter => $value) {
-          if (is_array($value)) {
-            // If two or more parameters share the same name, they are sorted by their value
-            // Ref: Spec: 9.1.1 (1)
-            natsort($value);
-            foreach ($value as $duplicate_value) {
-              $pairs[] = $parameter . '=' . $duplicate_value;
-            }
-          } else {
-            $pairs[] = $parameter . '=' . $value;
-          }
-        }
-        // For each parameter, the name is separated from the corresponding value by an '=' character (ASCII code 61)
-        // Each name-value pair is separated by an '&' character (ASCII code 38)
-        return implode('&', $pairs);
-      }
-
-    }
-}
\ No newline at end of file
diff --git a/wp-content/plugins/flattr/postmeta-template.php b/wp-content/plugins/flattr/postmeta-template.php
index 0ffd8fb2927f0c1bad3960c596fc2c56c076f516..1f90132f65eee8e049f01e326809e6097a9d3873 100644
--- a/wp-content/plugins/flattr/postmeta-template.php
+++ b/wp-content/plugins/flattr/postmeta-template.php
@@ -1,10 +1,13 @@
-	<input type="checkbox" value="1" name="flattr_btn_disabled" <?php if ((bool)$btnDisabled) { echo 'checked="checked"'; } ?>/>
-	Disable the Flattr button on this post?
+	<input type="checkbox" value="1" name="flattr_btn_disabled" id="flattr_btn_disabled" <?php if ((bool)$btnDisabled) { echo 'checked="checked"'; } ?>/>
+	<label for="flattr_btn_disabled">Disable the Flattr button on this post?</label>
 	<br />
 
 	<label for="flattr_post_language"><?php echo __('Language:') ?></label>
 	<select name="flattr_post_language" id="flattr_post_language">
 	<?php
+		if (!$selectedLanguage) {
+			echo '<option value="0" selected>Default</option>';
+		}
 		foreach (Flattr::getLanguages() as $languageCode => $language)
 		{
 			printf('<option value="%s" %s>%s</option>',
@@ -21,6 +24,9 @@
 	<label for="flattr_post_category"><?php echo __('Category:') ?></label>
 	<select name="flattr_post_category" id="flattr_post_category">
 	<?php
+		if (!$selectedLanguage) {
+			echo '<option value="0" selected>Default</option>';
+		}
 		foreach (Flattr::getCategories() as $category)
 		{
 			printf('<option value="%s" %s>%s</option>',
@@ -35,7 +41,9 @@
 	<br />
 	
 	<input type="hidden" value="0" name="flattr_post_hidden" />
-	<input type="checkbox" value="1" name="flattr_post_hidden" <?php if ((bool)$hidden) { echo 'checked="checked"'; } ?>/>
-	Hide post from listings on flattr.com
-	
+	<input type="checkbox" value="1" name="flattr_post_hidden" id="flattr_post_hidden" <?php if ((bool)$hidden) { echo 'checked="checked"'; } ?>/>
+	<label for="flattr_post_hidden">Hide post from listings on flattr.com</label>
 	<br />
+
+	<label for="flattr_post_customurl">Custom URL to be flattred</label>
+	<input type="text" name="flattr_post_customurl" id="flattr_post_customurl" value="<?php echo $customUrl; ?>" />
diff --git a/wp-content/plugins/flattr/postmeta.php b/wp-content/plugins/flattr/postmeta.php
index f27347065cbe2fb975e1da77bcf40aa93a9274cf..99ee0d6db53d3b0e85797605796e0af9149b2161 100644
--- a/wp-content/plugins/flattr/postmeta.php
+++ b/wp-content/plugins/flattr/postmeta.php
@@ -20,10 +20,21 @@ class Flattr_PostMeta
 			return $id;
 		}
 	
-		add_post_meta($id, '_flattr_post_language', $_POST['flattr_post_language'], true) or update_post_meta($id, '_flattr_post_language', $_POST['flattr_post_language']);
-		add_post_meta($id, '_flattr_post_category', $_POST['flattr_post_category'], true) or update_post_meta($id, '_flattr_post_category', $_POST['flattr_post_category']);
-		add_post_meta($id, '_flattr_post_hidden',	$_POST['flattr_post_hidden'],	true) or update_post_meta($id, '_flattr_post_hidden',	$_POST['flattr_post_hidden']);
-		add_post_meta($id, '_flattr_btn_disabled',  $_POST['flattr_btn_disabled'],  true) or update_post_meta($id, '_flattr_btn_disabled',  $_POST['flattr_btn_disabled']);
+		if ( isset($_POST['flattr_post_language']) && $_POST['flattr_post_language'] != '0' ) {
+			add_post_meta($id, '_flattr_post_language', $_POST['flattr_post_language'], true) or update_post_meta($id, '_flattr_post_language', $_POST['flattr_post_language']);
+		}
+		if ( isset($_POST['flattr_post_category']) && $_POST['flattr_post_category'] != '0' ) {
+			add_post_meta($id, '_flattr_post_category', $_POST['flattr_post_category'], true) or update_post_meta($id, '_flattr_post_category', $_POST['flattr_post_category']);
+		}
+		if ( isset($_POST['flattr_post_hidden']) ) {
+			add_post_meta($id, '_flattr_post_hidden',   $_POST['flattr_post_hidden'],   true) or update_post_meta($id, '_flattr_post_hidden',   $_POST['flattr_post_hidden']);
+		}
+		if ( isset($_POST['flattr_btn_disabled']) ) {
+			add_post_meta($id, '_flattr_btn_disabled',  $_POST['flattr_btn_disabled'],  true) or update_post_meta($id, '_flattr_btn_disabled',  $_POST['flattr_btn_disabled']);
+		}
+		if ( isset($_POST['flattr_post_customurl']) ) {
+			add_post_meta($id, '_flattr_post_customurl',  $_POST['flattr_post_customurl'],  true) or update_post_meta($id, '_flattr_post_customurl',  $_POST['flattr_post_customurl']);
+		}
 		
 		return true;
 	}
@@ -65,13 +76,13 @@ class Flattr_PostMeta
 		$selectedLanguage = get_post_meta($post->ID, '_flattr_post_language', true);
 		if (empty($selectedLanguage))
 		{
-			$selectedLanguage = get_option('flattr_lng');
+			$selectedLanguage = false;
 		}
 
 		$selectedCategory = get_post_meta($post->ID, '_flattr_post_category', true);
 		if (empty($selectedCategory))
 		{
-			$selectedCategory = get_option('flattr_cat');
+			$selectedCategory = false;
 		}
 
 		$hidden = get_post_meta($post->ID, '_flattr_post_hidden',	true);
@@ -85,6 +96,8 @@ class Flattr_PostMeta
 		{
 			$btnDisabled = get_option('flattr_disable', 0);
 		}
+
+		$customUrl = get_post_meta($post->ID, '_flattr_post_customurl', true);
 		
 		include('postmeta-template.php');
 	}
diff --git a/wp-content/plugins/flattr/readme.txt b/wp-content/plugins/flattr/readme.txt
index a4696b3f8e503e22f9900767596c522fc1fd5d02..a4e29568cd3882f7a5c45a013f69caff54b3cf25 100644
--- a/wp-content/plugins/flattr/readme.txt
+++ b/wp-content/plugins/flattr/readme.txt
@@ -1,12 +1,12 @@
 === Flattr ===
-Contributors: aphex3k
+Contributors: aphex3k, VoxPelli
 Donate link: https://flattr.com/donation/give/to/der_michael
 Tags: flattr, donate, micropayments
-Requires at least: 3.0
-Tested up to: 3.2
-Stable tag: trunk
+Requires at least: 3.3
+Tested up to: 3.4
+Stable tag: 1.2.0
 
-This plugin allows you to easily add a Flattr button to your wordpress blog.
+This plugin allows you to easily add a Flattr donation buttons to your blog and blog posts.
 
 == Description ==
 
@@ -18,25 +18,99 @@ Flattr solves this issue. When you're registered to flattr, you pay a small mont
 
 == Installation ==
 
-Note that we only support PHP 5 and WordPress 2.9 or above.
-To use advanced features like auto-submission or feed-buttons, your web server needs cURL extension installed.
-
 1. Upload the folder 'flattr' to your server in the folder '/wp-content/plugins/'
 2. Go to the WordPress control panel and find the 'Plugins' section
 3. Activate the plugin 'Flattr'
-4. Go to the 'Options' section and authrize your blog against flattr.com
-5. Select your default category (which usually would be 'text' if you have a normal blog), select your default language and type in your Flattr user ID (your user ID can be found on your dashboard on http://flattr.com/ )
-6. If you want the Flattr button to be automagically included at the end of your posts, leave the checkbox checked
-7. If you want to add the Flattr button manually in your theme, uncheck the checkbox and use the following code snippet:
-8. When writing or editing a blog post you have the ability to select category and language for this specific blog post.
+4. Select your default category (which usually would be 'text' if you have a normal blog), select your default language and type in your Flattr username
+5. When writing or editing a blog post you have the ability to select category and language for this specific blog post.
+6. Live long and prosper. :)
+
+== Frequently Asked Questions ==
+
+= How do I use the shortcode? =
+
+The shortcode is [flattr url="http://example.com/"]. It has many attributes but the url attribute is the only one required.
+
+Supported attributes are:
+
+* **url** - the URL that should be flattred. *Required*
+* **type** - overrides the default setting of the button style to use. Can be either "js", "compact", "text", "image" or "url".
+* **popout** - overrides the default setting on whether the popout should be shown. Should be either "yes" or "no".
+
+Additional autosubmit related attributes:
 
-`<?php the_flattr_permalink(); ?>`
+* **user** - the username of the user owning the thing - needed for autosubmits.
+* **hidden** - overrides the default setting on whether an autosubmit of the thing should be hidden. Should be either "yes" or "no".
+* **language** - overrides the blog language as the language of an autosubmit of the thing. Should be a language code like en_GB.
+* **category** - overrides the default category for an autosubmit of the thing. Should be one of the [supported ones](http://developers.flattr.net/api/resources/categories/).
+* **title** - the title used in an autosubmit of the thing.
+* **description** - the description used in an autosubmit of the thing.
+* **tags** - a comma separated list of tags that's used in an autosubmit of the thing.
 
-8. Live long and prosper. :)
+For options that use "yes" or "no" you can instead of "no" use "n" or "off" - any other value will be interpreted as "yes".
 
+== Upgrade Notice ==
+
+= 1.2.0 =
+Flattr buttons now detectable by browsers, site itself can now be flattred, a new shortcode and widgets is available etc.
 
 == Changelog ==
 
+= 1.2.0 =
+* New Feature: The payment links in RSS/Atom can now be added without adding the graphical buttons and are now on by default
+* New Feature: Payment links are now not only included in feed entries - they are now also by default included in the head-tag of entry pages which is usable for eg. browser extensions to detect the existence of a flattr button.
+* New Feature: The site itself can now be become flattrable - both feeds and the frontpage will by default in new installs have a payment links for the site itself. Existing pages needs to activate the "Make frontpage flattrable" option.
+* New Feature: Added a widget with a Flattr button for the entire site.
+* New Feature: Added a [flattr] shortcode for easy inclusion of Flattr buttons in posts and pages
+* New Feature: A post can now specify a custom URL for the Flattr button to flattr instead of the post itself. Thanks for the patch [Erik](http://tapiren.se/2012/02/18/wordpress-flattr-plugin-1-0-1-custom-urls/)!
+* New Feature: Made it possible to set a date from which the user specific button setting should be activated
+* Fix: User specific buttons can now be activated for all content
+* Fix: No longer prevents caching due to needless session initialization
+* Fix: Settings that can be overriden by a user setting is now by default not saved in a post but rather the site setting or user setting is instead picked when the button is viewed. This means that user settings for content type and language will now be respected.
+* Fix: Users with double encoding troubles of payment metadata in their feeds can now disable the encoding through the settings.
+* + more minor fixes and tweaks
+
+= 1.1.1 =
+* Added support for the new button popout. 
+* Replaced getBasePath() with plugin_dir_path()
+
+= 1.1.0 =
+* New Feature: Added support for WordPress uninstall feature. To use it you deactivate and delete the plugin from the plugin list.
+* Fix: Descriptions sent to Flattr are now assembled in a totaly new way as a custom kind of excerpts that are limited to maximum 30 words
+* Fix: The javascript loaded from Flattr.com is now loaded asynchronously
+* Fix: The javascript loaded from Flattr.com is now only loaded in the frontend when dynamic buttons are used
+
+= 1.0.2 =
+* Fix: "Include in RSS/Atom feeds" setting wouldn't save
+
+= 1.0.1 =
+* Fix: Button type wasn't respected
+
+= 1.0.0 =
+* New Feature: Add additional tags to Flattr buttons to make your things appear better in the Flattr catalog. Defaults to add the "blog" tag.
+* Fix: The payment links in RSS/Atom feeds will now point directly to Flattr.com to make it easier for clients to detect flattrable posts
+* Fix: Compatibility with WP_DEBUG - many PHP warnings and notices has been fixed
+* Fix: Some adjustments to better support PHP versions prior to 5.3 has been made
+* Fix: The plugin has been stable for a long time – it's time to have the version number reflect that - welcome to 1.0.0!
+
+= 0.99.3 =
+* Fix: Feeds should now validate
+
+= 0.99.2 =
+* Fix: Wizard should work with PHP 5.2 now
+
+= 0.99.1 =
+* Important: Please skip this update if the current installed version works for you
+* Important: Due to API changes all registered Flattr apps must be re-created and re-authorized (which should work like a charm now!)
+* New Feature: complete rewrite for new Flattr API v2
+* New Feature: new oAuth wizard
+* New Feature: Payment Link entities for Atom and RSS feeds
+* Fix: user based flattr buttons
+* Removed: Tabbing
+
+= 0.9.25.5 =
+* Fix: Erroneous escaping in advanced thing submit (by qnrq)
+
 = 0.9.25.4 =
 * New Feature: Initial test with WP 3.2 passed
 * Fix: saving option for user based flattr buttons
@@ -189,14 +263,3 @@ Fixed tags
 
 = 0.4 =
 * First public version
-
-== Frequently Asked Questions ==
-
-Q: I recieve an error message when trying to (re-)authorize my blog with flattr, what's wrong?
-A: Please clear session/cookie/browser cache and try again please.
-
-== Support ==
-
-For support requests regarding the wordpress plugin, please visit the plugin support forum: http://wordpress.org/tags/flattr?forum_id=10
-
-For every other Flattr support request head over to the Flattr forum: http://forum.flattr.net/
diff --git a/wp-content/plugins/flattr/redirect.php b/wp-content/plugins/flattr/redirect.php
index 8c6055c27f9c54122687668850925e21d7bbd033..a148e3ffe971f1b6a73e35e1af1dec47baab2522 100644
--- a/wp-content/plugins/flattr/redirect.php
+++ b/wp-content/plugins/flattr/redirect.php
@@ -2,11 +2,12 @@
 
 if (isset ($_GET['id'])&&
         isset ($_GET['md5'])&&
-        isset ($_GET['flattrss_redirect'])&&
-        function_exists('curl_init')) {
+        isset ($_GET['flattrss_redirect'])) {
 
     header('Status-Code: 307');
 
+    $flattr_domain = 'flattr.com';
+
     $old_charset = ini_get('default_charset');
     ini_set('default_charset',get_option('blog_charset'));
 
@@ -28,6 +29,12 @@ if (isset ($_GET['id'])&&
         }
     }
 
+    $additionalTags = get_option('flattr_atags', 'blog');
+    if (!empty($additionalTags)) {
+        $tags .= ',' . $additionalTags;
+    }
+    $tags = trim($tags, ', ');
+
     $category = get_post_meta($post['ID'], '_flattr_post_category', true);
     if (empty($category)) {
         $category = (get_option('user_based_flattr_buttons')&& get_user_meta(get_the_author_meta('ID'), "user_flattr_cat", true)!="")? get_user_meta(get_the_author_meta('ID'), "user_flattr_cat", true): get_option('flattr_cat');
@@ -84,7 +91,7 @@ if (isset ($_GET['id'])&&
     else
         $flattr_uid = get_option('flattr_uid');
 
-    $location = "https://flattr.com/submit/auto?user_id=".urlencode($flattr_uid).
+    $location = "https://" . $flattr_domain . "/submit/auto?user_id=".urlencode($flattr_uid).
                 "&url=".urlencode($url).
                 "&title=".urlencode($title).
                 "&description=".urlencode($content).
diff --git a/wp-content/plugins/flattr/settings-confirm-template.php b/wp-content/plugins/flattr/settings-confirm-template.php
deleted file mode 100644
index f1e5a9d96411116c2590e9b0dc2f2a2cf5d91ad3..0000000000000000000000000000000000000000
--- a/wp-content/plugins/flattr/settings-confirm-template.php
+++ /dev/null
@@ -1,45 +0,0 @@
-	<div class="wrap">
-		<h2><?php _e('Flattr Settings'); ?></h2>
-
-		<h3>Confirm new Flattr connection</h3>
-		<table class="form-table">
-			<tr valign="top">
-				<th scope="row"><?php _e('Your current Flattr connection'); ?></th>
-				<td>
-					<?php if (get_option('flattr_uid')) { ?>
-						<?php
-						if (preg_match('[A-Za-z-_.]', get_option('flattr_uid'))) {
-							?><a href="<?php echo esc_url( 'https://flattr.com/profile/' . get_option('flattr_uid') ); ?>"><?php
-							esc_html_e(get_option('flattr_uid'));
-							?></a> <?php
-						}
-						else {
-							esc_html_e(get_option('flattr_uid'));
-						}
-						?>
-					<?php } else { ?>
-						-
-					<?php } ?>
-				</td>
-			</tr>
-			<tr valign="top">
-				<th scope="row"><?php _e('Your new Flattr connection'); ?></th>
-				<td>
-					<a href="<?php echo esc_url( 'https://flattr.com/profile/' . $_GET['FlattrUsername'] ); ?>"><?php esc_html_e($_GET['FlattrUsername']); ?></a>
-				</td>
-			</tr>
-		</table>
-		<form method="post" action="options.php">
-			<p class="submit">
-				<?php
-				// Replicating settings_fields
-				echo "<input type='hidden' name='option_page' value='flattr-settings-uid-group' />";
-				echo '<input type="hidden" name="action" value="update" />';
-				wp_nonce_field("flattr-settings-uid-group-options", '_wpnonce', false);
-				?>
-				<input type="hidden" value="<?php esc_attr_e(remove_query_arg(array('FlattrId', 'FlattrUsername'))); ?>" name="_wp_http_referer">
-				<input type="hidden" name="flattr_uid" value="<?php esc_attr_e($_GET['FlattrUsername']); ?>" />
-				<input type="submit" class="button-primary" value="<?php _e('Accept') ?>" />
-			</p>
-		</form>
-	</div>
diff --git a/wp-content/plugins/flattr/settings-template.php b/wp-content/plugins/flattr/settings-template.php
deleted file mode 100644
index 467ce16adeaa524b1e903187534987818bc50e25..0000000000000000000000000000000000000000
--- a/wp-content/plugins/flattr/settings-template.php
+++ /dev/null
@@ -1,358 +0,0 @@
-<?php
-
-    define(FLATTRSS_PLUGIN_PATH, get_bloginfo('wpurl') . '/wp-content/plugins/flattr');
-
-    include_once 'oAuth/flattr_rest.php';
-    include_once 'oAuth/oauth.php';
-
-    $server = $_SERVER["SERVER_NAME"];
-    $server = preg_split("/:/", $server);
-    $server = $server[0];
-
-    $server2 = substr(home_url('','http'),7);
-    $server2 = preg_split("/\//", $server2);
-    $server2 = $server2[0];
-
-    ?>
-<div class="wrap flattr-wrap" style="width:90%">
-            <div>
-            <!-- <h2><?php _e('Flattr Settings'); ?> <img id="loaderanim" onload="javascript:{document.getElementById('loaderanim').style.display='none'};" src="<?php echo get_bloginfo('wpurl') . '/wp-content/plugins/flattr'.'/img/loader.gif' ?>"/></h2> -->
-<div class="tabber">
-    <div style="float:right; margin-top: -31px;margin-left: 10px;"><img src="../wp-content/plugins/flattr/img/flattr-logo-beta-small.png" alt="Flattr Beta Logo"/><br />
-        <ul style="margin-top: 10px;">
-            <li style="display: inline;">
-                <script type="text/javascript">
-                    var flattr_uid = "der_michael";
-                    var flattr_btn = "compact";
-                    var flattr_tle = "Wordpress Flattr plugin";
-                    var flattr_dsc = "Give your readers the opportunity to Flattr your effort. See http://wordpress.org/extend/plugins/flattr/ for details.";
-                    var flattr_cat = "software";
-                    var flattr_tag = "wordpress,plugin,flattr,rss";
-                    var flattr_url = "http://wordpress.org/extend/plugins/flattr/";
-                </script><script src="<?php echo (isset($_SERVER['HTTPS'])) ? 'https' : 'http'; ?>://api.flattr.com/button/load.js" type="text/javascript"></script>
-            </li>
-            <li style="display: inline-block;position:relative; top: -6px;"><a href="https://flattr.com/donation/give/to/der_michael" style="color:#ffffff;text-decoration:none;background-image: url('<?php echo get_bloginfo('wpurl');?>/wp-content/plugins/flattr/img/bg-boxlinks-green.png');border-radius:3px;text-shadow:#666666 0 1px 1px;width:53px;padding:1px;padding-top: 2px;padding-bottom: 2px;display:block;text-align:center;font-weight: bold;" target="_blank">Donate</a></li>
-        </ul>
-    </div>
-    <div class="tabbertab" title="Flattr Account" style="border-left:0;">
-        <form method="post" action="options.php">
-        <?php settings_fields( 'flattr-settings-group' ); ?>
-        <?php if (current_user_can( "activate_plugins" )): ;?>
-        <p><input type="checkbox" name="user_based_flattr_buttons"<?php echo get_option('user_based_flattr_buttons')?" checked":"";?> />&nbsp;If you tick this box, every user of the blog will have the chance to register it's own Flattr buttons. Buttons will then be linked to post authors and only display if the user completed plugin setup.</p>
-        <?php endif; ?>
-		<h2><?php _e('Basic Setup'); ?></h2>
-		<p>
-                    The basic account setup enables this plugin to work.
-                </p>
-                <table class="form-table">
-			<tr valign="top">
-				<th scope="row"><?php _e('The blogs/your Flattr account'); ?></th>
-				<td>
-					<input name="flattr_uid" type="text" value="<?php echo(get_option('flattr_uid')); ?>" />
-				</td>
-			</tr>
-		</table>
-<?php if (get_option('flattr_uid') && function_exists('curl_init')) { ?>
-                <h2>Advanced Setup</h2>
-                <p>
-                    The advanced account setup enables autosubmit feature.
-                </p>
-<?php
-    $oauth_token = get_option('flattrss_api_oauth_token');
-    $oauth_token_secret = get_option('flattrss_api_oauth_token_secret');
-    $flattrss_api_key = get_option('flattrss_api_key');
-    $flattrss_api_secret = get_option('flattrss_api_secret');
-
-    if ($oauth_token == $oauth_token_secret || $flattrss_api_key == $flattrss_api_secret) {
-?>
-      <ol>
-          <li>Login to your Flattr Account at <a href="https://flattr.com/" target="_blank">flattr.com</a></li>
-          <li>To get your personal Flattr APP Key and APP Secret you need to <a href="https://flattr.com/apps/new" target="_blank">register your blog</a> as Flattr app. <small><a href="http://developers.flattr.net/doku.php/register_your_application" target="_blank">(More Info)</a></small></li>
-          <li>Choose reasonable values for <em>Application name</em>, <em>Application website</em> and <em>Application description</em></li>
-          <li>It is mandatory to <strong>select BROWSER application type!</strong> This plugin will currently <strong>not work if CLIENT is selected</strong>.</li>
-          <li>You must use <code><?php echo ($server == $server2)? $server2 : "$server2</code> or <code>$server"; ?></code> as callback domain.</li>
-          <li>Copy 'n Paste your APP Key and APP Secret in the corresponding fields below. Save Changes.</li>
-          <li>As soon as you saved your APP information <a href="#Authorize">authorize</a> your Flattr account with your own application.</li>
-          <li>If everything is done correctly you'll see your <a href="#UserInfo">Flattr username and info</a> on this site.</li>
-      </ol>
-<?php } ?>
-   <table class="form-table">
-            <tr valign="top">
-                <th scope="row">Callback Domain</th>
-                <td><input size="30" value="<?php echo $server2; ?>" readonly/><?php if ($server!=$server2) : ?>&nbsp;or
-                    <br /><input size="30" value="<?php echo $server; ?>" readonly/><p>One of the above values should work. If not. Please contact me.</p>
-                <?php endif; ?></td>
-            </tr>
-            <tr valign="top">
-                <th scope="row">APP_KEY</th>
-                <td><input size="70" name="flattrss_api_key" value="<?php echo get_option('flattrss_api_key') ?>"/></td>
-            </tr>
-            <tr valign="top">
-                <th scope="row">APP_SECRET</th>
-                <td><input size="70" name="flattrss_api_secret" value="<?php echo get_option('flattrss_api_secret') ?>"/></td>
-            </tr>
-    </table>
-    <?php
-
-    $api_key = get_option('flattrss_api_key');
-    $api_secret = get_option('flattrss_api_secret');
-
-    if ($api_key != $api_secret) {
-
-    $flattr = new Flattr_Rest($api_key, $api_secret);
-
-    # Do not rawurlencode!
-    $callback_ = (isset($_SERVER['HTTPS']) ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ;
-
-    $token = $flattr->getRequestToken( $callback_ );
-    $_SESSION['flattrss_current_token'] = $token;
-
-    if ($token != "") {
-
-        $url = $flattr->getAuthorizeUrl($token, 'read,readextended,click,publish');
-
-        ?><a name="Authorize"><div id="icon-options-general" class="icon32"><br /></div><h2>Authorize App</h2></a>
-        <p>In order to automatically generate the correct "<em>Things</em>" link for your blog post from the feed, you need to authorize you Flattr app with your Flattr account.</p>
-          <p><a href="<?php echo $url;?>">(re-)Authorize with Flattr</a>.</p>
-        <?php
-    } else {
-        ?><a name="Authorize"><div id="icon-options-general" class="icon32"><br /></div><h2>Authorize App</h2></a>
-        <p>Unable to aquire oAuth token. What now?</p>
-        <ol>
-            <li>Check PHP cURL support</li>
-            <li>Check PHP libXML support</li>
-            <li>Check PHP DOM support</li>
-            <li>DoubleCheck APP_KEY & APP_SECERT</li>
-            <li>Flattr Service might be down?</li>
-            <li>There might be a communication/firewall issue between your webserver and flattr.com</li>
-            <li>Try again later...</li>
-        </ol>
-        <?php
-    }
-
-                #print_r($flattr);
-
-    $oauth_token = get_option('flattrss_api_oauth_token');
-    $oauth_token_secret = get_option('flattrss_api_oauth_token_secret');
-
-    if ($oauth_token != $oauth_token_secret) {
-        $flattr_user = new Flattr_Rest($api_key, $api_secret, $oauth_token, $oauth_token_secret);
-        if ( $flattr_user->error() ) {
-            echo( 'Error ' . $flattr_user->error() );
-        }
-        $user = $flattr_user->getUserInfo();
-?>
-    <div style="float:right"><img src="<?php echo $user['gravatar'];?>"></div><a name="UserInfo"><h2><img src="<?php echo FLATTRSS_PLUGIN_PATH .'/img/flattr_button.png' ?>" alt="flattr"/>&nbsp;Advanced Flattr User Info</h2></a>
-    <p><?php echo $user['firstname'];?>&nbsp;<?php echo $user['lastname'];?><br/>
-    <?php echo $user['username'];?>(<?php echo $user['id'];?>)</p>
-    <p>Flattr: <a href="https://flattr.com/profile/<?php echo $user['username'];?>" target="_blank">Profile</a>, <a href="https://flattr.com/dashboard" target="_blank">Dashboard</a>, <a href="https://flattr.com/settings" target="_blank">Settings</a></p>
-        <?php
-        #print_r($flattr_user);
-    }
-  }
-}
-?>
-    </div>
-    <div class="tabbertab" title="Post/Page Buttons">
- 		<h2>Button Style</h2>
-                <p>What do you want your Flattr button to look like?</p>
-                <table id="option">
-                <tr>
-                    <td><input type="radio" name="flattr_button_style" value="js"<?=(get_option('flattr_button_style')=="js")?" checked":"";?>/></td>
-                    <td><script type="text/javascript">
-                            var flattr_uid = "der_michael";
-                            var flattr_btn = "<?=get_option('flattr_compact')?"compact":"";?>";
-                            var flattr_tle = "Wordpress Flattr plugin";
-                            var flattr_dsc = "Give your readers the opportunity to Flattr your effort. See http://wordpress.org/extend/plugins/flattr/ for details.";
-                            var flattr_cat = "software";
-                            var flattr_tag = "wordpress,plugin,flattr,rss";
-                            var flattr_url = "http://wordpress.org/extend/plugins/flattr/";
-                        </script><script src="<?php echo (isset($_SERVER['HTTPS'])) ? 'https' : 'http'; ?>://api.flattr.com/button/load.js" type="text/javascript"></script></td>
-                    <td>JavaScript Version</td>
-                </tr><tr>
-                    <td><input type="radio" name="flattr_button_style" value="image"<?=(get_option('flattr_button_style')=="image")?" checked":"";?>/></td>
-                    <td>
-                        <img src="<?=get_option('flattrss_custom_image_url');?>"/>
-                    </td>
-                    <td>static Image</td>
-                </tr><tr>
-                    <td><input type="radio" name="flattr_button_style" value="text"<?=(get_option('flattr_button_style')=="text")?" checked":"";?>/></td>
-                    <td><a href="#">Flattr this!</a></td>
-                    <td>static Text</td>
-                </tr>
-                </table>
-		<h2>Post/Page Buttons</h2>
-                <p>These options are for the Flattr buttons automatically generated for posts and pages.</p>
-		
-			<table class="form-table">
-
-				<tr valign="top">
-					<th scope="row"><?php _e('Default category for your posts'); ?></th>
-					<td>
-						<select name="flattr_cat">
-							<?php
-								foreach (Flattr::getCategories() as $category)
-								{
-									printf('<option value="%1$s" %2$s>%1$s</option>',
-										$category,
-										($category == get_option('flattr_cat') ? 'selected' : '')
-									);
-								}
-							?>
-						</select>
-					</td>
-				</tr>
-
-				<tr valign="top">
-					<th scope="row"><?php _e('Default language for your posts'); ?></th>
-					<td>
-						<select name="flattr_lng">
-							<?php
-								foreach (Flattr::getLanguages() as $languageCode => $language)
-								{
-									printf('<option value="%s" %s>%s</option>',
-										$languageCode,
-										($languageCode == get_option('flattr_lng') ? 'selected' : ''),
-										$language
-									);
-								}
-							?>
-						</select>
-					</td>
-				</tr>
-
-				<tr valign="top">
-					<th scope="row"><?php _e('Insert button before the content'); ?></th>
-					<td><input <?php if (get_option('flattr_top', 'false') == 'true') { echo(' checked="checked"'); } ?> type="checkbox" name="flattr_top" value="true" /></td>
-				</tr>
-
-				<tr valign="top">
-					<th scope="row"><?php _e('Use the compact button'); ?></th>
-					<td><input <?php if (get_option('flattr_compact', 'false') == 'true') { echo(' checked="checked"'); } ?> type="checkbox" name="flattr_compact" value="true" /></td>
-				</tr>
-
-				<tr valign="top">
-					<th scope="row"><?php _e('Hide my posts from listings on flattr.com'); ?></th>
-					<td><input <?php if (get_option('flattr_hide', 'false') == 'true') { echo(' checked="checked"'); } ?> type="checkbox" name="flattr_hide" value="true" /></td>
-				</tr>
-
-				<tr valign="top">
-					<th scope="row"><?php _e('Insert Flattr button into posts automagically'); ?></th>
-					<td><input <?php if (get_option('flattr_aut', 'off') == 'on') { echo(' checked="checked"'); } ?> type="checkbox" name="flattr_aut" value="on" /></td>
-				</tr>
-
-				<tr valign="top">
-					<th scope="row"><?php _e('Insert Flattr button into pages automagically'); ?></th>
-					<td><input <?php if (get_option('flattr_aut_page', 'off') == 'on') { echo(' checked="checked"'); } ?> type="checkbox" name="flattr_aut_page" value="on" /></td>
-				</tr>
-                                <tr valign="top">
-                                    <th scope="row" colspan="2">You can use <code>&lt;?php the_flattr_permalink() ?&gt;</code> in your template/theme to insert a flattr button
-                                    </th>
-                                </tr>
-
-				<?php if ( function_exists('st_add_widget') ) { ?>
-					<tr valign="top">
-						<th scope="row"><?php _e('Override ShareThis widget'); ?></th>
-						<td><input <?php if (get_option('flattr_override_sharethis', 'false') == 'true') { echo(' checked="checked"'); } ?> type="checkbox" name="flattr_override_sharethis" value="true" /><br />(will add the Flattr button after the ShareThis buttons)</td>
-					</tr>
-				<?php } ?>
-			</table>
-    </div>
-    <div class="tabbertab">
-            <h2>Advanced Settings</h2>
-            <?php if (!function_exists('curl_init')) { ?>
-            <p id="message" class="updated" style="padding:10px;"><strong>Attention:</strong>&nbsp;Currently nothing can be autosubmitted. Enable cURL extension for your webserver to use this feature!</p>
-            
-            <?php }?>
-
-            <table>
-                <tr valign="top">
-                    <th scope="row">Automatic Submission</th>
-                    <td><p><input name="flattrss_autosubmit" type="checkbox"<?php echo get_option('flattrss_autosubmit')? " checked": ""; echo ($oauth_token != $oauth_token_secret)? "":" disabled"; ?> />&nbsp;Check this box to automatically submit your blog post when you publish. You need to complete the full advanced setup in order for autosubmission to work.</p>
-                    </td>
-                </tr>
-                <tr valign="top">
-                    <th scope="row">Excerpt Handling</th>
-                    <td><p>Let <select name="flattr_handles_exerpt">
-                                <option value="1" <?php echo (get_option('flattr_handles_exerpt')==1)? " selected": "";?>>Flattr Plugin</option>
-                                <option value="0" <?php echo (get_option('flattr_handles_exerpt')==0)? " selected": "";?>>Wordpress</option>
-                           </select> handle the excerpt. If you are new to the plugin select Wordpress here and see if it works out for you. If your upgrading from an earlier version this will likely default to Flattr plugin.
-                        </p>
-                    </td>
-                </tr>
-                <tr valign="top">
-                    <th scope="row">Suppress Warnings</th>
-                    <td><p><input name="flattrss_error_reporting" type="checkbox"<?php echo get_option('flattrss_error_reporting')? " checked": "" ?>/>&nbsp;This is an advanced option for supression of error messages upon redirect from feed to thing. Use with caution, as flattr things might be submitted incomplete. Incomplete things are subject to be hidden on the flattr homepage!<br>If in doubt, leave disabled.</p>
-                    </td>
-                </tr>
-            </table>
-            <h2>Feed Settings</h2>
-            <?php if (!function_exists('curl_init')) { ?>
-            <p id="message" class="updated" style="padding:10px;"><strong>Attention:</strong>&nbsp;Currently no button will be inserted in your RSS feed. Enable cURL extension for your webserver to use this feature.</p>
-            <?php }?>
-            <table>
-                <tr valign="top">
-                <th scope="row">RSS/Atom Feed Button</th>
-                <td><p><input name="flattrss_button_enabled" type="checkbox" <?php if(get_option('flattrss_button_enabled')) {echo "checked";}?> />&nbsp;A Flattr button will be included in the RSS/Atom Feed of your blog.</p>
-                </td>
-                </tr>
-                <tr valign="top">
-                <th scope="row">Custom Image URL</th>
-                <td><p>This image is served as static image to be included in the RSS/Atom Feed of your blog.</p><input name="flattrss_custom_image_url" size="70" value="<?php echo get_option('flattrss_custom_image_url');?>"/><br/>
-                    <?php if ( get_option('flattrss_custom_image_url') != FLATTRSS_PLUGIN_PATH .'/img/flattr-badge-large.png') { ?>
-                    Default Value:<br>
-                    <input size="70" value="<?php echo FLATTRSS_PLUGIN_PATH .'/img/flattr-badge-large.png';?>" readonly><br />
-                    <?php } ?>
-                    Preview:<br>
-                    <img src="<?php echo get_option('flattrss_custom_image_url');?>">
-                    <p></p>
-                </td>
-                </tr>
-            </table>
-    </div>
-    <div class="tabbertab">
-        <h2>Expert Settings</h2>
-        <p><strong>WARNING:</strong> Please do not change any value unless you are exactly sure of what you are doing! Settings made on this page will likely override every other behaviour.</p>
-        <table>
-            <tr valign="top">
-                <th scope="row">Post Type</th>
-                <td><p>Append Flattr Button only to selected post types.</p><ul>
-                    <?php $types = get_post_types();
-                          $flattr_post_types = get_option('flattr_post_types');
-                        foreach ($types as $type) {
-                            $selected = (is_array($flattr_post_types) && in_array($type, $flattr_post_types))? " checked" : "";
-                            echo "<li><input name=\"flattr_post_types[]\" value=\"$type\" type=\"checkbox\"$selected/>&nbsp;$type</li>";
-                        }
-                    ?></ul>
-                </td>
-            </tr>
-        </table>
-    </div>
-
-    <div class="tabbertab" title="Feedback">
-        <h2>Feedback</h2>
-        <p>Please post feedback regarding wordpress integration on <a href="http://wordpress.org/tags/flattr?forum_id=10" target="_blank">the plugins board at wordpress.org</a>. You can use <a href="http://forum.flattr.net/" target="_blank">the official flattr board</a> for every concern regarding flattr.</p>
-        <p>If you have a certain remark, request or simply something you want to let me know feel free to mail me at <a href="mailto:flattr@allesblog.de?subject=Flattr Wordpress Plugin" title="flattr@allesblog.de">flattr@allesblog.de</a>. Please note that I'm not an official part of the Flattr Dev-Team. So I can only answer questions regarding the flattr wordpress plugin alone.</p>
-        <p><strong>Spread the word!</strong></p>
-        <p>You can help getting Flattr out there!</p>
-        <h2>Debug</h2>
-        <p>
-            Please provide the following information with your support request. All fields are <em>optional</em>. However, If you expect a reply, provide at least a valid eMail address.
-        </p>
-        <table>
-            <tr><td>Your Name:</td><td><input type="text" name="fname" /></td></tr>
-            <tr><td>Your eMail:</td><td><input type="text" name="femail" /></td></tr>
-            <tr><td>Comment:</td><td><textarea cols="80" rows="10" name="ftext">What's your problem?</textarea></td></tr>
-            <tr><td>DEBUG:</td><td><input type="checkbox" checked name="fphpinfo">&nbsp;Include extended debug information in mail. <a href="http://php.net/manual/function.phpinfo.php" target="_blank">phpinfo()</a></td></tr>
-            <tr><td>Send Mail</td><td><input type="checkbox" name="fsendmail">&nbsp;&lArr;&nbsp;tick this box and click "Save Changes" to submit support request.</td></tr>
-        </table>
-    </div>
-    <p class="submit">
-        <input type="submit" class="button-primary" value="Save Changes" />
-        <input type="reset" class="button" value="Reset" />
-    </p>
-       		</form>
-</div>
-</div>
-
-        </div><script type="text/javascript" src="<?php echo FLATTRSS_PLUGIN_PATH . '/tabber.js'; ?>"></script>
\ No newline at end of file
diff --git a/wp-content/plugins/flattr/settings-templates/footer.php b/wp-content/plugins/flattr/settings-templates/footer.php
new file mode 100644
index 0000000000000000000000000000000000000000..af996620e609a7c9154287d545cfa2615089e690
--- /dev/null
+++ b/wp-content/plugins/flattr/settings-templates/footer.php
@@ -0,0 +1,10 @@
+</table>
+<p class="submit">
+    <input type="submit" class="button-primary" value="Save Changes" />
+</p>
+</form>
+</div>
+<div id="dialog" title="Wordpress Flattr Plugin <?=Flattr::VERSION;?>">
+    Before the autosubmit-feature can be activated we need to run some basic tests.
+</div>
+</div>
\ No newline at end of file
diff --git a/wp-content/plugins/flattr/settings-templates/header.php b/wp-content/plugins/flattr/settings-templates/header.php
new file mode 100644
index 0000000000000000000000000000000000000000..531cd7b46b20483756cc1385253cbcd1c75594c8
--- /dev/null
+++ b/wp-content/plugins/flattr/settings-templates/header.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * Description:
+ * 
+ * Description goes here...
+ * 
+ * @author Michael Henke (aphex3k@gmail.com)
+ */
+?>
+<div class="wrap flattr-wrap">
+    <div>
+        <div style="float:right;margin-left: 10px;"><img src="../wp-content/plugins/flattr/img/flattr-logo-beta-small.png" alt="Flattr Beta Logo"/><br />
+            <ul style="margin-top: 10px;">
+                <li style="display: inline;">
+                    <?php Flattr::getInstance()->admin_script(); ?>
+                    <a class="FlattrButton" href="http://wordpress.org/extend/plugins/flattr/" title="Wordpress Flattr plugin" lang="en_GB"
+                        rel="flattr;uid:der_michael;category:software;tags:wordpress,plugin,flattr,rss;button:compact;">
+                        Give your readers the opportunity to Flattr your effort. See http://wordpress.org/extend/plugins/flattr/ for details.
+                    </a>
+                </li>
+                <li style="display: inline-block;position:relative; top: -6px;"><a href="https://flattr.com/donation/give/to/der_michael" style="color:#ffffff;text-decoration:none;background-image: url('<?php echo get_bloginfo('wpurl');?>/wp-content/plugins/flattr/img/bg-boxlinks-green.png');border-radius:3px;text-shadow:#666666 0 1px 1px;width:53px;padding:1px;padding-top: 2px;padding-bottom: 2px;display:block;text-align:center;font-weight: bold;" target="_blank">Donate</a></li>
+            </ul>
+        </div>
+        <div id="icon-options-general" class="icon32 flattr"><br></div>
+        <h2><?php _e('Flattr Settings'); ?></h2>
\ No newline at end of file
diff --git a/wp-content/plugins/flattr/settings-templates/plugin.php b/wp-content/plugins/flattr/settings-templates/plugin.php
new file mode 100644
index 0000000000000000000000000000000000000000..7149695bb412fe90634bfba835feb2824e133f01
--- /dev/null
+++ b/wp-content/plugins/flattr/settings-templates/plugin.php
@@ -0,0 +1,241 @@
+<form method="post" action="options.php">
+<?php settings_fields( 'flattr-settings-group' ); ?>
+
+<h3><?php _e('Basic settings');?></h3>
+
+<table class="form-table">
+<tr>
+    <th scope="row"><label for="flattr_uid"><?php _e('Flattr Username'); ?></label></th>
+    <td>
+        <input id="flattr_uid" name="flattr_uid" type="text" value="<?php echo(esc_attr(get_option('flattr_uid'))); ?>" />
+        <span class="description"><?php _e('The Flattr account to which the buttons will be assigned.'); ?></span>
+    </td>
+</tr>
+<tr>
+    <th scope="row"><label for="flattr_atags"><?php _e('Additional Flattr tags for your posts'); ?></label></th>
+    <td>
+        <input id="flattr_atags" name="flattr_atags" type="text" value="<?php echo(esc_attr(get_option('flattr_atags', 'blog'))); ?>" />
+        <span class="description"><?php _e("Comma separated list of additional tags to use in Flattr buttons"); ?></span>
+    </td>
+</tr>
+<tr>
+    <th scope="row"><label for="flattr_cat"><?php _e('Default category for your posts'); ?></label></th>
+    <td>
+        <select id="flattr_cat" name="flattr_cat">
+            <?php
+                foreach (Flattr::getCategories() as $category)
+                {
+                    printf('<option value="%1$s" %2$s>%1$s</option>',
+                            $category,
+                            ($category == get_option('flattr_cat') ? 'selected' : '')
+                    );
+                }
+            ?>
+        </select>
+    </td>
+</tr>
+<tr>
+    <th scope="row"><label for="flattr_lng"><?php _e('Default language for your posts'); ?></label></th>
+    <td>
+        <select id="flattr_lng" name="flattr_lng">
+            <?php
+                foreach (Flattr::getLanguages() as $languageCode => $language)
+                {
+                    printf('<option value="%s" %s>%s</option>',
+                            $languageCode,
+                            ($languageCode == get_option('flattr_lng') ? 'selected' : ''),
+                            $language
+                    );
+                }
+            ?>
+        </select>
+    </td>
+</tr>
+<tr>
+    <th scope="row"><label for="flattr_hide"><?php _e('Hide my posts from listings on Flattr.com'); ?></label></th>
+    <td>
+        <input <?php if (get_option('flattr_hide', 'false') == 'true') { echo(' checked="checked"'); } ?> type="checkbox" id="flattr_hide" name="flattr_hide" value="true" />
+        <span class="description"><?php _e("If your content could be considered offensive then you're encouraged to hide it."); ?></span>
+    </td>
+</tr>
+</table>
+
+<h3><?php _e('Advanced settings');?></h3>
+
+<h4>Flattrable content</h4>
+
+<table class="form-table">
+<tr>
+    <th scope="row"><?php _e('Post Types'); ?></th>
+    <td>
+        <ul>
+        <?php
+            $types = get_post_types();
+            $flattr_post_types = (array)get_option('flattr_post_types', array());
+            foreach ($types as $type) {
+                $selected = (is_array($flattr_post_types) && in_array($type, $flattr_post_types))? " checked" : "";
+                $id = 'flattr_post_types_' . esc_attr($type);
+                echo "<li><label><input name=\"flattr_post_types[]\" value=\"$type\" type=\"checkbox\"$selected/>&nbsp;$type</label></li>";
+            }
+        ?></ul>
+        <span class="description"><?php _e('Only the selected post types are made flattrable.'); ?></span>
+    </td>
+</tr>
+<tr>
+    <th scope="row"><label for="flattr_global_button"><?php _e('Make frontpage flattrable'); ?></label></th>
+    <td>
+        <input id="flattr_global_button" name="flattr_global_button" type="checkbox" <?php if(get_option('flattr_global_button', false)) {echo "checked";}?> />
+    </td>
+</tr>
+</table>
+
+<h4>User specific buttons</h4>
+
+<table class="form-table">
+<tr>
+    <th scope="row"><label for="user_based_flattr_buttons"><?php _e('Enable user specific buttons'); ?></label></th>
+    <td>
+        <input type="checkbox" id="user_based_flattr_buttons" name="user_based_flattr_buttons"<?php echo get_option('user_based_flattr_buttons')?" checked":"";?> />
+        <span class="description"><?php _e("If you tick this box, every user of the blog will have the chance to register its own Flattr buttons. Buttons will then be linked to post authors and only display if the user completed plugin setup."); ?></span>
+    </td>
+</tr>
+<tr>
+    <th scope="row"><label for="user_based_flattr_buttons_since_time"><?php _e('Limit to posts after'); ?></label></th>
+    <td>
+        <input type="text" id="user_based_flattr_buttons_since_time" name="user_based_flattr_buttons_since_time" value="<?php echo (get_option('user_based_flattr_buttons_since_time') == '' ? '' : esc_attr(date('Y-m-d', get_option('user_based_flattr_buttons_since_time')))); ?>" />
+        <span class="description"><?php echo 'With this setting you can limit user specific buttons to posts newer than a certain date which helps preventing owner mismatching between the buttons on your sites and things on Flattr.com which disables affected buttons. Leave empty to disable the limit.'; ?></span>
+        <script type="text/javascript">
+            jQuery(function () {
+                jQuery('input[name="user_based_flattr_buttons_since_time"]').datepicker({
+                    autoSize: true,
+                    constrainInput: false,
+                    buttonText: 'Choose date...',
+                    dateFormat: jQuery.datepicker.ISO_8601,
+                    showOn: 'button'
+                });
+            });
+        </script>
+    </td>
+</tr>
+</table>
+
+<h4>Style</h4>
+
+<table class="form-table">
+<tr>
+    <th scope="row">Button type</th>
+    <td>
+        <ul>
+            <li>
+                <input type="radio" id="flattr_button_style_js"name="flattr_button_style" value="js"<?=(get_option('flattr_button_style')=="js")?" checked":"";?>/>
+                <?php Flattr::getInstance()->admin_script(); ?>
+                <a class="FlattrButton" href="http://wordpress.org/extend/plugins/flattr/" title="Wordpress Flattr plugin" lang="en_GB"
+                    rel="flattr;uid:der_michael;category:software;tags:wordpress,plugin,flattr,rss;<?=get_option('flattr_compact')?"button:compact;":"";?>">
+                    Give your readers the opportunity to Flattr your effort. See http://wordpress.org/extend/plugins/flattr/ for details.
+                </a>
+                <span class="description"><label for="flattr_button_style_js"><?php _e('Dynamic javascript version'); ?></label></span>
+            </li>
+            <li>
+                <input type="radio" id="flattr_button_style_image" name="flattr_button_style" value="image"<?=(get_option('flattr_button_style')=="image")?" checked":"";?>/>
+                <img src="<?=get_option('flattrss_custom_image_url');?>"/>
+                <span class="description"><label for="flattr_button_style_image"><?php _e('Static image version'); ?></label></span>
+            </li>
+            <li>
+                <input type="radio" id="flattr_button_style_text" name="flattr_button_style" value="text"<?=(get_option('flattr_button_style')=="text")?" checked":"";?>/>
+                <a href="#">Flattr this!</a>
+                <span class="description"><label for="flattr_button_style_text"><?php _e('Static text version'); ?></label></span>
+            </li>
+        </ul>
+    </td>
+</tr>
+<tr>
+    <th scope="row"><label for="flattr_compact"><?php _e('Use the compact button'); ?></label></th>
+    <td>
+        <input <?php if (get_option('flattr_compact', 'false') == 'true') { echo(' checked="checked"'); } ?> type="checkbox" id="flattr_compact" name="flattr_compact" value="true" />
+        <span class="description"><?php _e('Only applies to the javascript button type.'); ?></span>
+    </td>
+</tr>
+<tr>
+    <th scope="row"><label for="flattr_popout_enabled"><?php _e('Enable the button popout'); ?></label></th>
+    <td>
+        <input <?php if (get_option('flattr_popout_enabled', 'true')) { echo(' checked="checked"'); } ?> type="checkbox" id="flattr_popout_enabled" name="flattr_popout_enabled" value="true" />
+    </td>
+</tr>
+<tr>
+    <th scope="row"><label for="flattrss_custom_image_url">Custom Image URL</label></th>
+    <td>
+        <input type="text" id="flattrss_custom_image_url" name="flattrss_custom_image_url" size="70" value="<?php echo esc_attr(get_option('flattrss_custom_image_url'));?>"/><br/>
+        <?php if ( get_option('flattrss_custom_image_url') != get_bloginfo('wpurl') . '/wp-content/plugins/flattr/img/flattr-badge-large.png') { ?>
+        Default Value:<br>
+        <input type="text" size="70" value="<?php echo get_bloginfo('wpurl') . '/wp-content/plugins/flattr/img/flattr-badge-large.png';?>" readonly><br />
+        <?php } ?>
+        <span class="description"><?php _e('Only applies to the static image button type and the feed buttons.'); ?></span>
+    </td>
+</tr>
+<tr>
+    <th scope="row"><label for="flattrss_button_enabled"><?php _e('Insert static image buttons into RSS/Atom feed entries'); ?></label></th>
+    <td>
+        <input id="flattrss_button_enabled" name="flattrss_button_enabled" type="checkbox" <?php if(get_option('flattrss_button_enabled')) {echo "checked";}?> />
+    </td>
+</tr>
+<tr>
+    <th scope="row"><label for="flattr_aut"><?php _e('Insert Flattr button into posts automagically'); ?></label></th>
+    <td>
+        <input <?php if (get_option('flattr_aut')) { echo(' checked="checked"'); } ?> type="checkbox" id="flattr_aut" name="flattr_aut" value="on" />
+    </td>
+</tr>
+<tr>
+    <th scope="row"><label for="flattr_aut_page"><?php _e('Insert Flattr button into pages automagically'); ?></label></th>
+    <td>
+        <input <?php if (get_option('flattr_aut_page')) { echo(' checked="checked"'); } ?> type="checkbox" id="flattr_aut_page" name="flattr_aut_page" value="on" />
+    </td>
+</tr>
+<tr>
+    <th scope="row"><label for="flattr_top"><?php _e("Add button before post's content"); ?></label></th>
+    <td>
+        <input <?php if (get_option('flattr_top', 'false') == 'true') { echo(' checked="checked"'); } ?> type="checkbox" id="flattr_top" name="flattr_top" value="true" />
+    </td>
+</tr>
+<tr>
+    <td colspan="2">You can use <code>&lt;?php the_flattr_permalink() ?&gt;</code> in your template/theme to insert a flattr button</td>
+</tr>
+
+</table>
+
+<h4>Metadata</h4>
+
+<table class="form-table">
+<tr>
+    <th scope="row"><label for="flattrss_relpayment_enabled"><?php _e('Include payment metadata in RSS/Atom feeds'); ?></label></th>
+    <td>
+        <input id="flattrss_relpayment_enabled" name="flattrss_relpayment_enabled" type="checkbox" <?php if(get_option('flattrss_relpayment_enabled')) {echo "checked";}?> />
+        <span class="description"><a href="http://developers.flattr.net/feed/">Flattr feed links</a> will be included in the RSS/Atom feeds to allow feed readers to identify flattrable stuff and make it easy to flattr it.</span>
+    </td>
+</tr>
+<tr>
+    <th scope="row"><label for="flattr_relpayment_enabled"><?php _e('Include payment metadata in HTML'); ?></label></th>
+    <td>
+        <input id="flattr_relpayment_enabled" name="flattr_relpayment_enabled" type="checkbox" <?php if(get_option('flattr_relpayment_enabled')) {echo "checked";}?> />
+        <span class="description">Rel-payment metadata similar to the <a href="http://developers.flattr.net/feed/">Flattr feed links</a> will be included in HTML pages. This enables eg. browser extensions to identify the Flattr button of a page</span>
+    </td>
+</tr>
+<tr>
+    <th scope="row"><label for="flattrss_relpayment_escaping_disabled"><?php _e('Payment metadata in feed not working?'); ?></label></th>
+    <td>
+        <input id="flattrss_relpayment_escaping_disabled" name="flattrss_relpayment_escaping_disabled" type="checkbox" <?php if(get_option('flattrss_relpayment_escaping_disabled')) {echo "checked";}?> />
+        <span class="description">This is a fix for a very small collection of blogs that for some mysterious reason are getting the payment metadata double escaped in their feeds. Until we find out why these blogs has this problem we provide this solution instead to make the experience for these bloggers as good as possible.<br/> <strong>WARNING:</strong> Activating this when metadata isn't broken will break your feeds!</span>
+    </td>
+</tr>
+</table>
+
+<h4>Other</h4>
+
+<table class="form-table">
+<tr>
+    <th scope="row">Presubmit to Flattr Catalog</th>
+    <td>
+        <span id="autosubmit" class="inactive">DEACTIVATED</span>
+        <p class="description"><?php _e('Only use if you for some reason want to presubmit content to Flattr.com prior to them being flattred.'); ?></p>
+    </td>
+</tr>
+</table>
\ No newline at end of file
diff --git a/wp-content/plugins/flattr/settings-templates/user.php b/wp-content/plugins/flattr/settings-templates/user.php
new file mode 100644
index 0000000000000000000000000000000000000000..6f0b48ab0a90433d1197d687b6d50376fc07aa09
--- /dev/null
+++ b/wp-content/plugins/flattr/settings-templates/user.php
@@ -0,0 +1,141 @@
+<form method="post" action="<?=get_bloginfo('wpurl') . '/wp-admin/users.php?page=flattr/flattr.php?user';?>">
+<?php wp_nonce_field(); ?>
+    <table>
+<tr>
+    <th><?php _e('Your Flattr Username'); ?></th>
+    <td>
+        <input name="user_flattr_uid" type="text" value="<?php echo(get_user_meta(get_current_user_id( ), "user_flattr_uid", true)); ?>" />
+    </td>
+</tr>
+<tr>
+    <th><?php _e('Default category for your posts'); ?></th>
+    <td>
+        <select name="user_flattr_cat">
+            <?php
+                foreach (Flattr::getCategories() as $category)
+                {
+                    printf('<option value="%1$s" %2$s>%1$s</option>',
+                            $category,
+                            ($category == get_user_meta(get_current_user_id( ), "user_flattr_cat", true) ? 'selected' : '')
+                    );
+                }
+            ?>
+        </select>
+    </td>
+</tr>
+
+<tr>
+    <th><?php _e('Default language for your posts'); ?></th>
+    <td>
+    <select name="user_flattr_lng">
+        <?php
+            foreach (Flattr::getLanguages() as $languageCode => $language)
+            {
+                printf('<option value="%s" %s>%s</option>',
+                    $languageCode,
+                    ($languageCode == get_user_meta(get_current_user_id( ), "user_flattr_lng", true) ? 'selected' : ''),
+                    $language
+                );
+            }
+        ?>
+    </select>
+</td>
+</tr>
+
+<?php
+    $key = get_option('flattrss_api_key', null);
+    $sec = get_option('flattrss_api_secret', null);
+
+    $callback = urlencode(home_url()."/wp-admin/admin.php?page=flattr/flattr.php");
+
+    if (!empty($key) && !empty($sec)) {
+
+        include_once dirname(__FILE__).'/../flattr_client.php';
+
+        $client = new OAuth2Client(array_merge(array(
+            'client_id'         => $key,
+            'client_secret'     => $sec,
+            'base_url'          => 'https://api.' . Flattr::FLATTR_DOMAIN . '/rest/v2',
+            'site_url'          => 'https://' . Flattr::FLATTR_DOMAIN,
+            'authorize_url'     => 'https://' . Flattr::FLATTR_DOMAIN . '/oauth/authorize',
+            'access_token_url'  => 'https://' . Flattr::FLATTR_DOMAIN . '/oauth/token',
+
+            'redirect_uri'      => $callback,
+            'scopes'            => 'thing+flattr',
+            'token_param_name'  => 'Bearer',
+            'response_type'     => 'code',
+            'grant_type'        => 'authorization_code',
+            'access_token'      => null,
+            'refresh_token'     => null,
+            'code'              => null,
+            'developer_mode'    => false
+        ))); 
+
+        try {
+            $url = $client->authorizeUrl();
+            $text = "(re-)authorize";
+
+        } catch (Exception $e) {
+            $text = false;
+
+        }
+    } else {
+        $text = false;
+    }
+?>
+<?php if (!empty($text)): ?>
+    <tr>
+        <th><?php _e('Authorize for Autosubmit'); ?></th>
+        <td>
+            <?php if (!empty($url)): ?>
+                <a href="<?php echo $url; ?>"><?php echo $text; ?></a>
+            <?php else: ?>
+                <?php echo $text; ?>
+            <?php endif; ?>
+        </td>
+    </tr>
+<?php endif; ?>
+
+<?php
+    $token = get_user_meta( get_current_user_id() , "user_flattrss_api_oauth_token", true);
+
+    if (empty($token)) {
+        $client = false;
+    } else {
+        $client = new OAuth2Client( array_merge(array(
+            'client_id'         => $key,
+            'client_secret'     => $sec,
+            'base_url'          => 'https://api.' . Flattr::FLATTR_DOMAIN . '/rest/v2',
+            'site_url'          => 'https://' . Flattr::FLATTR_DOMAIN,
+            'authorize_url'     => 'https://' . Flattr::FLATTR_DOMAIN . '/oauth/authorize',
+            'access_token_url'  => 'https://' . Flattr::FLATTR_DOMAIN . '/oauth/token',
+
+            'redirect_uri'      => $callback,
+            'scopes'            => 'thing+flattr',
+            'token_param_name'  => 'Bearer',
+            'response_type'     => 'code',
+            'grant_type'        => 'authorization_code',
+            'refresh_token'     => null,
+            'code'              => null,
+            'developer_mode'    => false,
+
+            'access_token'      => $token,
+        )));
+    }
+    
+    try {
+        $user = ($client ? $client->getParsed('/user') : false);
+        
+        if ($user && !isset($user['error'])) {
+?>
+<tr>
+    <th><?php _e('Authorized User'); ?></th>
+    <td>
+    <?=  '<img style="float:right;width:48px;height:48px;border:0;" src="'. $user['avatar'] .'"/>'.
+         '<h3>'.$user['username'].'</h3>'.
+         '<ul><li>If this is your name (and avatar) authentication was successfull.</li></ul>';?>
+    </td>
+</tr>
+<?php
+        } 
+    } catch (Exception $e) {}
\ No newline at end of file
diff --git a/wp-content/plugins/flattr/settings.php b/wp-content/plugins/flattr/settings.php
deleted file mode 100644
index 27f7dc8e81ff5fc2a4d021b618179c7beef63e83..0000000000000000000000000000000000000000
--- a/wp-content/plugins/flattr/settings.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-
-class Flattr_Settings
-{
-    public function __construct()
-    {
-        add_action('admin_init',    array( $this, 'register_settings') );
-        add_action('admin_menu',    array( $this, 'init_ui') );
-    }
-
-    public function init_ui()
-    {
-        $menutitle = __('Flattr', 'flattr');
-
-        $cap = get_option('user_based_flattr_buttons')? "edit_posts":"manage_options";
-
-        add_menu_page('Flattr',  $menutitle, $cap, 'flattr/settings.php', '', get_bloginfo('wpurl') . '/wp-content/plugins/flattr'.'/img/flattr-icon_new.png');
-        add_submenu_page( 'flattr/settings.php', __('Flattr'), __('Flattr'), $cap, 'flattr/settings.php', array($this, 'render'));
-        }
-
-    public function register_settings()
-    {
-        register_setting('flattr-settings-group', 'flattr_uid',         array($this, 'sanitize_userid'));
-        register_setting('flattr-settings-group', 'flattr_aut',         array($this, 'sanitize_auto'));
-        register_setting('flattr-settings-group', 'flattr_aut_page',    array($this, 'sanitize_auto_page'));
-        register_setting('flattr-settings-group', 'flattr_cat',         array($this, 'sanitize_category'));
-        register_setting('flattr-settings-group', 'flattr_lng',         array($this, 'sanitize_language'));
-        register_setting('flattr-settings-group', 'flattr_compact',     array($this, 'sanitize_checkbox'));
-        register_setting('flattr-settings-group', 'flattr_hide',        array($this, 'sanitize_checkbox'));
-        register_setting('flattr-settings-group', 'flattr_top',         array($this, 'sanitize_checkbox'));
-        register_setting('flattr-settings-group', 'flattr_override_sharethis', array($this, 'sanitize_checkbox'));
-        register_setting('flattr-settings-group', 'flattrss_api_key');
-        register_setting('flattr-settings-group', 'flattrss_api_secret');
-        register_setting('flattr-settings-group', 'flattrss_autodonate');
-        register_setting('flattr-settings-group', 'flattrss_clicktrack_enabled');
-        register_setting('flattr-settings-group', 'flattrss_error_reporting');
-        register_setting('flattr-settings-group', 'flattrss_custom_image_url');
-        register_setting('flattr-settings-group', 'flattrss_autosubmit');
-        register_setting('flattr-settings-group', 'flattr_post_types');
-
-        register_setting('flattr-settings-group', 'flattrss_button_enabled');
-        register_setting('flattr-settings-group', 'flattr_handles_exerpt');
-        register_setting('flattr-settings-group', 'flattr_button_style');
-
-        register_setting('flattr-settings-group', 'flattr_warn_ignore_version');
-
-        register_setting('flattr-settings-group', 'user_based_flattr_buttons');
-
-        if (isset($_POST['user_flattr_uid']) && isset($_POST['user_flattr_cat']) && isset ($_POST['user_flattr_lng'])) {
-            require_once( ABSPATH . WPINC . '/registration.php');
-            $user_id = get_current_user_id( );
-
-            update_user_meta( $user_id, "user_flattr_uid", $_POST['user_flattr_uid'] );
-            update_user_meta( $user_id, "user_flattr_cat", $_POST['user_flattr_cat'] );
-            update_user_meta( $user_id, "user_flattr_lng", $_POST['user_flattr_lng'] );
-        }
-
-        if(get_option('user_based_flattr_buttons')) {
-            add_option('user_based_flattr_buttons_since_time', time());
-        }
-    }
-
-    public function render()
-    {
-        if (current_user_can("activate_plugins")) {
-            include('settings-template.php');
-        } elseif (current_user_can("edit_posts") && get_option('user_based_flattr_buttons')) {
-            include('user-settings-template.php');
-       }
-    }
-
-    public function sanitize_category($category)
-    {
-        return $category;
-    }
-
-    public function sanitize_language($language)
-    {
-        return $language;
-    }
-
-    public function sanitize_checkbox($input)
-    {
-        return ($input == 'true' ? 'true' : '');
-    }
-
-    public function sanitize_auto($input)
-    {
-        return ($input == 'on' ? 'on' : '');
-    }
-
-    public function sanitize_auto_page($input)
-    {
-        return ($input == 'on' ? 'on' : '');
-    }
-
-    public function sanitize_userid($userId)
-    {
-        if (preg_match('/[^A-Za-z0-9-_.]/', $userId)) {
-            $userId = false;
-        }
-        else if (is_numeric($userId)) {
-            $userId = intval($userId);
-        }
-        return $userId;
-    }
-}
diff --git a/wp-content/plugins/flattr/tabber.css b/wp-content/plugins/flattr/tabber.css
deleted file mode 100644
index b850fce8ea8f7b30ff07eae7d33864a178ed20d7..0000000000000000000000000000000000000000
--- a/wp-content/plugins/flattr/tabber.css
+++ /dev/null
@@ -1,120 +0,0 @@
-/* $Id: example.css,v 1.5 2006/03/27 02:44:36 pat Exp $ */
-
-/*--------------------------------------------------
-  REQUIRED to hide the non-active tab content.
-  But do not hide them in the print stylesheet!
-  --------------------------------------------------*/
-.tabberlive .tabbertabhide {
- display:none;
-}
-
-/*--------------------------------------------------
-  .tabber = before the tabber interface is set up
-  .tabberlive = after the tabber interface is set up
-  --------------------------------------------------*/
-.tabber {
-    display:none;
-}
-
-.tabbertab a, .tabbertab a:hover, .tabbertab a:visited {
-    color: #508010;
-}
-.tabberlive {
- margin-top:2em;
- 
-}
-
-/*--------------------------------------------------
-  ul.tabbernav = the tab navigation list
-  li.tabberactive = the active tab
-  --------------------------------------------------*/
-ul.tabbernav
-{
- padding: 3px 0;
- padding-bottom: 10px;
- border-bottom: 1px solid #000;
- font: bold 12px Verdana, sans-serif;
-}
-
-ul.tabbernav li
-{
- list-style: none;
- margin: 0px;
- display: inline;
- text-shadow:#666666 0 1px 1px;
- display: inline-block;
- padding: 0px;
-}
-
-ul.tabbernav li a
-{
- padding: 12px;
- margin-left: 0px;
- border-bottom: none;
- background-color: #78A931;
- background-image: url(../flattr/img/bg-boxlinks-green.png);
- color: #fff;
- border-left: 1px solid #7a3;
- text-decoration: none;
-}
-
-ul.tabbernav li a:link { color: #fff; }
-ul.tabbernav li a:visited { color: #fff; }
-
-ul.tabbernav li a:hover
-{
- color: #fff;
- background-color: #508010;
- background-image: none;
- border-color: #227;
-}
-
-ul.tabbernav li.tabberactive a
-{
- background-color: #F98E29;
- background-image: none;
- color: #fff;
-}
-
-ul.tabbernav li.tabberactive a:hover
-{
- color: #fff;
- background-color:#Fa4;
-}
-
-/*--------------------------------------------------
-  .tabbertab = the tab content
-  Add style only after the tabber interface is set up (.tabberlive)
-  --------------------------------------------------*/
-.tabberlive .tabbertab {
- padding:5px;
- border-top:1px solid #aaa;
- border-top:0;
-
- /* If you don't want the tab size changing whenever a tab is changed
-    you can set a fixed height */
-
- /* height:200px; */
-
- /* If you set a fix height set overflow to auto and you will get a
-    scrollbar when necessary */
-
- /* overflow:auto; */
-}
-
-/* Example of using an ID to set different styles for the tabs on the page */
-.tabberlive#tab1 {
-}
-.tabberlive#tab2 {
-}
-.tabberlive#tab2 .tabbertab {
- height:200px;
- overflow:auto;
-}
-
-.tabbertab #option {
-    width: 400px;
-}
-.tabbertab #option tr {
-    height: 28px;
-}
\ No newline at end of file
diff --git a/wp-content/plugins/flattr/tabber.js b/wp-content/plugins/flattr/tabber.js
deleted file mode 100644
index 34dd2e8daff071064123b012e5d07d13fa8f9152..0000000000000000000000000000000000000000
--- a/wp-content/plugins/flattr/tabber.js
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Copyright (c) 2006 Patrick Fitzgerald */
-
-function tabberObj(argsObj)
-{var arg;this.div=null;this.classMain="tabber";this.classMainLive="tabberlive";this.classTab="tabbertab";this.classTabDefault="tabbertabdefault";this.classNav="tabbernav";this.classTabHide="tabbertabhide";this.classNavActive="tabberactive";this.titleElements=['h2','h3','h4','h5','h6'];this.titleElementsStripHTML=true;this.removeTitle=true;this.addLinkId=false;this.linkIdFormat='<tabberid>nav<tabnumberone>';for(arg in argsObj){this[arg]=argsObj[arg];}
-this.REclassMain=new RegExp('\\b'+this.classMain+'\\b','gi');this.REclassMainLive=new RegExp('\\b'+this.classMainLive+'\\b','gi');this.REclassTab=new RegExp('\\b'+this.classTab+'\\b','gi');this.REclassTabDefault=new RegExp('\\b'+this.classTabDefault+'\\b','gi');this.REclassTabHide=new RegExp('\\b'+this.classTabHide+'\\b','gi');this.tabs=new Array();if(this.div){this.init(this.div);this.div=null;}}
-tabberObj.prototype.init=function(e)
-{var
-childNodes,i,i2,t,defaultTab=0,DOM_ul,DOM_li,DOM_a,aId,headingElement;if(!document.getElementsByTagName){return false;}
-if(e.id){this.id=e.id;}
-this.tabs.length=0;childNodes=e.childNodes;for(i=0;i<childNodes.length;i++){if(childNodes[i].className&&childNodes[i].className.match(this.REclassTab)){t=new Object();t.div=childNodes[i];this.tabs[this.tabs.length]=t;if(childNodes[i].className.match(this.REclassTabDefault)){defaultTab=this.tabs.length-1;}}}
-DOM_ul=document.createElement("ul");DOM_ul.className=this.classNav;for(i=0;i<this.tabs.length;i++){t=this.tabs[i];t.headingText=t.div.title;if(this.removeTitle){t.div.title='';}
-if(!t.headingText){for(i2=0;i2<this.titleElements.length;i2++){headingElement=t.div.getElementsByTagName(this.titleElements[i2])[0];if(headingElement){t.headingText=headingElement.innerHTML;if(this.titleElementsStripHTML){t.headingText.replace(/<br>/gi," ");t.headingText=t.headingText.replace(/<[^>]+>/g,"");}
-break;}}}
-if(!t.headingText){t.headingText=i+1;}
-DOM_li=document.createElement("li");t.li=DOM_li;DOM_a=document.createElement("a");DOM_a.appendChild(document.createTextNode(t.headingText));DOM_a.href="javascript:void(null);";DOM_a.title=t.headingText;DOM_a.onclick=this.navClick;DOM_a.tabber=this;DOM_a.tabberIndex=i;if(this.addLinkId&&this.linkIdFormat){aId=this.linkIdFormat;aId=aId.replace(/<tabberid>/gi,this.id);aId=aId.replace(/<tabnumberzero>/gi,i);aId=aId.replace(/<tabnumberone>/gi,i+1);aId=aId.replace(/<tabtitle>/gi,t.headingText.replace(/[^a-zA-Z0-9\-]/gi,''));DOM_a.id=aId;}
-DOM_li.appendChild(DOM_a);DOM_ul.appendChild(DOM_li);}
-e.insertBefore(DOM_ul,e.firstChild);e.className=e.className.replace(this.REclassMain,this.classMainLive);this.tabShow(defaultTab);if(typeof this.onLoad=='function'){this.onLoad({tabber:this});}
-return this;};tabberObj.prototype.navClick=function(event)
-{var
-rVal,a,self,tabberIndex,onClickArgs;a=this;if(!a.tabber){return false;}
-self=a.tabber;tabberIndex=a.tabberIndex;a.blur();if(typeof self.onClick=='function'){onClickArgs={'tabber':self,'index':tabberIndex,'event':event};if(!event){onClickArgs.event=window.event;}
-rVal=self.onClick(onClickArgs);if(rVal===false){return false;}}
-self.tabShow(tabberIndex);return false;};tabberObj.prototype.tabHideAll=function()
-{var i;for(i=0;i<this.tabs.length;i++){this.tabHide(i);}};tabberObj.prototype.tabHide=function(tabberIndex)
-{var div;if(!this.tabs[tabberIndex]){return false;}
-div=this.tabs[tabberIndex].div;if(!div.className.match(this.REclassTabHide)){div.className+=' '+this.classTabHide;}
-this.navClearActive(tabberIndex);return this;};tabberObj.prototype.tabShow=function(tabberIndex)
-{var div;if(!this.tabs[tabberIndex]){return false;}
-this.tabHideAll();div=this.tabs[tabberIndex].div;div.className=div.className.replace(this.REclassTabHide,'');this.navSetActive(tabberIndex);if(typeof this.onTabDisplay=='function'){this.onTabDisplay({'tabber':this,'index':tabberIndex});}
-return this;};tabberObj.prototype.navSetActive=function(tabberIndex)
-{this.tabs[tabberIndex].li.className=this.classNavActive;return this;};tabberObj.prototype.navClearActive=function(tabberIndex)
-{this.tabs[tabberIndex].li.className='';return this;};function tabberAutomatic(tabberArgs)
-{var
-tempObj,divs,i;if(!tabberArgs){tabberArgs={};}
-tempObj=new tabberObj(tabberArgs);divs=document.getElementsByTagName("div");for(i=0;i<divs.length;i++){if(divs[i].className&&divs[i].className.match(tempObj.REclassMain)){tabberArgs.div=divs[i];divs[i].tabber=new tabberObj(tabberArgs);}}
-return this;}
-function tabberAutomaticOnLoad(tabberArgs)
-{var oldOnLoad;if(!tabberArgs){tabberArgs={};}
-oldOnLoad=window.onload;if(typeof window.onload!='function'){window.onload=function(){tabberAutomatic(tabberArgs);};}else{window.onload=function(){oldOnLoad();tabberAutomatic(tabberArgs);};}}
-if(typeof tabberOptions=='undefined'){tabberAutomaticOnLoad();}else{if(!tabberOptions['manualStartup']){tabberAutomaticOnLoad(tabberOptions);}}
\ No newline at end of file
diff --git a/wp-content/plugins/flattr/uninstall.php b/wp-content/plugins/flattr/uninstall.php
new file mode 100644
index 0000000000000000000000000000000000000000..70f1b770bdaa680d44e5c093ccd8d9bf42cf1867
--- /dev/null
+++ b/wp-content/plugins/flattr/uninstall.php
@@ -0,0 +1,34 @@
+<?php
+
+if ( defined(WP_UNINSTALL_PLUGIN) )
+{
+	$flattr_options_to_remove = array(
+		// From Flattr::default_options()
+		'flattr_global_button',
+		'flattr_post_types',
+		'flattr_lng',
+		'flattr_aut',
+		'flattr_aut_page',
+		'flattr_atags',
+		'flattr_cat',
+		'flattr_top',
+		'flattr_compact',
+		'flattr_popout_enabled',
+		'flattr_button_style',
+		'flattrss_custom_image_url',
+		'user_based_flattr_buttons',
+		'user_based_flattr_buttons_since_time',
+		'flattrss_button_enabled',
+		'flattrss_relpayment_enabled',
+		'flattr_relpayment_enabled',
+		'flattrss_relpayment_escaping_disabled',
+		// From other places
+		'flattrss_api_key',
+		'flattrss_api_secret',
+		'flattr_access_token',
+	);
+
+	foreach ( $flattr_options_to_remove as $flattr_option ) {
+		delete_option( $flattr_option );
+	}
+}
diff --git a/wp-content/plugins/flattr/user-settings-template.php b/wp-content/plugins/flattr/user-settings-template.php
deleted file mode 100644
index 19a80f9f7ab0387e1163fa02f3656cde955ae495..0000000000000000000000000000000000000000
--- a/wp-content/plugins/flattr/user-settings-template.php
+++ /dev/null
@@ -1,152 +0,0 @@
-<?php
-
-    define(FLATTRSS_PLUGIN_PATH, get_bloginfo('wpurl') . '/wp-content/plugins/flattr');
-    include_once 'oAuth/flattr_rest.php';
-    include_once 'oAuth/oauth.php';
-    ?>
-<div class="wrap flattr-wrap" style="width:90%">
-            <div>
-<div class="tabber">
-    <div style="float:right; margin-top: -31px;margin-left: 10px;"><img src="../wp-content/plugins/flattr/img/flattr-logo-beta-small.png" alt="Flattr Beta Logo"/><br />
-        <ul style="margin-top: 10px;">
-            <li style="display: inline;">
-                <script type="text/javascript">
-                    var flattr_uid = "der_michael";
-                    var flattr_btn = "compact";
-                    var flattr_tle = "Wordpress Flattr plugin";
-                    var flattr_dsc = "Give your readers the opportunity to Flattr your effort. See http://wordpress.org/extend/plugins/flattr/ for details.";
-                    var flattr_cat = "software";
-                    var flattr_tag = "wordpress,plugin,flattr,rss";
-                    var flattr_url = "http://wordpress.org/extend/plugins/flattr/";
-                </script><script src="<?php echo (isset($_SERVER['HTTPS'])) ? 'https' : 'http'; ?>://api.flattr.com/button/load.js" type="text/javascript"></script>
-            </li>
-            <li style="display: inline-block;position:relative; top: -6px;"><a href="https://flattr.com/donation/give/to/der_michael" style="color:#ffffff;text-decoration:none;background-image: url('<?php echo get_bloginfo('wpurl');?>/wp-content/plugins/flattr/img/bg-boxlinks-green.png');border-radius:3px;text-shadow:#666666 0 1px 1px;width:53px;padding:1px;padding-top: 2px;padding-bottom: 2px;display:block;text-align:center;font-weight: bold;" target="_blank">Donate</a></li>
-        </ul>
-    </div>
-    <div class="tabbertab" title="Flattr Account" style="border-left:0;">
-        <form method="post" action="admin.php?page=flattr/settings.php">
-        	<h2><?php _e('User Setup'); ?></h2>
-		<p>
-                    Set up your own Flattr user for all your posts.
-                </p>
-                <table class="form-table">
-			<tr valign="top">
-				<th scope="row"><?php _e('Your Flattr account name'); ?></th>
-				<td>
-					<input name="user_flattr_uid" type="text" value="<?php echo(get_user_meta(get_current_user_id( ), "user_flattr_uid", true)); ?>" />
-				</td>
-			</tr>
-		</table>
-                <?php
-
-    $api_key = get_option('flattrss_api_key');
-    $api_secret = get_option('flattrss_api_secret');
-
-    if ($api_key != $api_secret) {
-
-    $flattr = new Flattr_Rest($api_key, $api_secret);
-
-    # Do not rawurlencode!
-    $callback_ = (isset($_SERVER['HTTPS']) ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ;
-
-    $token = $flattr->getRequestToken( $callback_ );
-    $_SESSION['flattrss_current_token'] = $token;
-
-    $url = $flattr->getAuthorizeUrl($token, 'read,readextended,click,publish');
-
-        ?><a name="Authorize"><div id="icon-options-general" class="icon32"><br /></div><h2>Authorize App</h2></a>
-        <p>In order to automatically generate the correct "<em>Things</em>" link for your blog post from the feed, you need to authorize you Flattr app with your Flattr account.</p>
-          <p><a href="<?php echo $url;?>">(re-)Authorize with Flattr</a>.
-<?php
-
-    $oauth_token = get_user_meta(get_current_user_id( ), "user_flattrss_api_oauth_token", true);
-    $oauth_token_secret = get_user_meta(get_current_user_id( ), "user_flattrss_api_oauth_token_secret", true);
-
-    if ($oauth_token != $oauth_token_secret) {
-        $flattr_user = new Flattr_Rest($api_key, $api_secret, $oauth_token, $oauth_token_secret);
-        if ( $flattr_user->error() ) {
-            echo( 'Error ' . $flattr_user->error() );
-        }
-        $user = $flattr_user->getUserInfo();
-?>
-    <div style="float:right"><img src="<?php echo $user['gravatar'];?>"></div><a name="UserInfo"><h2><img src="<?php echo FLATTRSS_PLUGIN_PATH .'/img/flattr_button.png' ?>" alt="flattr"/>&nbsp;Advanced Flattr User Info</h2></a>
-    <p><?php echo $user['firstname'];?>&nbsp;<?php echo $user['lastname'];?><br/>
-    <?php echo $user['username'];?>(<?php echo $user['id'];?>)</p>
-    <p>Flattr: <a href="https://flattr.com/profile/<?php echo $user['username'];?>" target="_blank">Profile</a>, <a href="https://flattr.com/dashboard" target="_blank">Dashboard</a>, <a href="https://flattr.com/settings" target="_blank">Settings</a></p>
-        <?php
-        #print_r($flattr_user);
-    }
-  }
-?>
-
-    </div>
-    <div class="tabbertab" title="Post/Page Buttons">
-		<h2>Post/Page Buttons</h2>
-                <p>These options are for the Flattr buttons automatically generated for posts and pages.</p>
-
-			<table class="form-table">
-
-				<tr valign="top">
-					<th scope="row"><?php _e('Default category for your posts'); ?></th>
-					<td>
-						<select name="user_flattr_cat">
-							<?php
-								foreach (Flattr::getCategories() as $category)
-								{
-									printf('<option value="%1$s" %2$s>%1$s</option>',
-										$category,
-										($category == get_user_meta(get_current_user_id( ), "user_flattr_cat", true) ? 'selected' : '')
-									);
-								}
-							?>
-						</select>
-					</td>
-				</tr>
-
-				<tr valign="top">
-					<th scope="row"><?php _e('Default language for your posts'); ?></th>
-					<td>
-						<select name="user_flattr_lng">
-							<?php
-								foreach (Flattr::getLanguages() as $languageCode => $language)
-								{
-									printf('<option value="%s" %s>%s</option>',
-										$languageCode,
-										($languageCode == get_user_meta(get_current_user_id( ), "user_flattr_lng", true) ? 'selected' : ''),
-										$language
-									);
-								}
-							?>
-						</select>
-					</td>
-				</tr>
-        </table>
-    </div>
-
-    <div class="tabbertab" title="Feedback">
-        <h2>Feedback</h2>
-        <p>Please post feedback regarding wordpress integration on <a href="http://wordpress.org/tags/flattr?forum_id=10" target="_blank">the plugins board at wordpress.org</a>. You can use <a href="http://forum.flattr.net/" target="_blank">the official flattr board</a> for every concern regarding flattr.</p>
-        <p>If you have a certain remark, request or simply something you want to let me know feel free to mail me at <a href="mailto:flattr@allesblog.de?subject=Flattr Wordpress Plugin" title="flattr@allesblog.de">flattr@allesblog.de</a>. Please note that I'm not an official part of the Flattr Dev-Team. So I can only answer questions regarding the flattr wordpress plugin alone.</p>
-        <p><strong>Spread the word!</strong></p>
-        <p>You can help getting Flattr out there!</p>
-        <h2>Debug</h2>
-        <p>
-            Please provide the following information with your support request. All fields are <em>optional</em>. However, If you expect a reply, provide at least a valid eMail address.
-        </p>
-        <table>
-            <tr><td>Your Name:</td><td><input type="text" name="fname" /></td></tr>
-            <tr><td>Your eMail:</td><td><input type="text" name="femail" /></td></tr>
-            <tr><td>Comment:</td><td><textarea cols="80" rows="10" name="ftext">What's your problem?</textarea></td></tr>
-            <tr><td>DEBUG:</td><td><input type="checkbox" checked name="fphpinfo">&nbsp;Include extended debug information in mail. <a href="http://php.net/manual/function.phpinfo.php" target="_blank">phpinfo()</a></td></tr>
-            <tr><td>Send Mail</td><td><input type="checkbox" name="fsendmail">&nbsp;&lArr;&nbsp;tick this box and click "Save Changes" to submit support request.</td></tr>
-        </table>
-    </div>
-    <p class="submit">
-        <input type="submit" class="button-primary" value="Save Changes" />
-        <input type="reset" class="button" value="Reset" />
-    </p>
-       		</form>
-</div>
-</div>
-
-        </div><script type="text/javascript" src="<?php echo FLATTRSS_PLUGIN_PATH . '/tabber.js'; ?>"></script>
\ No newline at end of file
diff --git a/wp-content/plugins/flattr/user-settings.php b/wp-content/plugins/flattr/user-settings.php
deleted file mode 100644
index a4abe2dafcb3fabac023b6d4630c24fed41379c0..0000000000000000000000000000000000000000
--- a/wp-content/plugins/flattr/user-settings.php
+++ /dev/null
@@ -1,2 +0,0 @@
-<?php
-
diff --git a/wp-content/plugins/flattr/wizard.js b/wp-content/plugins/flattr/wizard.js
new file mode 100644
index 0000000000000000000000000000000000000000..2359a2c6f8dd8a3219d927785939481c28c41450
--- /dev/null
+++ b/wp-content/plugins/flattr/wizard.js
@@ -0,0 +1,267 @@
+var wizard = {
+    
+    features : new Array("cURL", "oAuth", "php", "Wordpress", "Flattr"),
+    
+    ready : function () {
+        wizard.returncheck();
+    },
+    
+    toggleToActive : function () {
+        jQuery(".flattr-wrap span.inactive").toggleClass("inactive active");
+        jQuery(".flattr-wrap span.active").html('<a href="#" id="start-flattr-wizard">Start Wizard</a>');
+        jQuery("#start-flattr-wizard").live("click", function(e) {
+            e.preventDefault();
+            wizard.start();
+        });
+    },
+    
+    toggleToInctive : function () {
+        jQuery(".flattr-wrap span.active").toggleClass("active inactive");
+        jQuery(".flattr-wrap span.inactive").html('Start Wizard');
+    },
+    
+    start : function () {
+        jQuery(".flattr-wrap div#dialog").dialog({
+            modal: true,
+            height: 250,
+            resizable: false,
+            buttons: [
+                {
+                    text: "Check",
+                    click: function() {
+                                       wizard.runChecks();
+                                   },
+                    id : "check-button"
+                },
+                {
+                    text: "Cancel",
+                    click: function () {
+                        wizard.toggleToInctive();
+                        jQuery(this).dialog("close");
+                    }
+                }
+            ]
+        });
+        jQuery(".flattr-wrap div#dialog").dialog("open");
+    },
+    
+    runChecks : function () {
+        wizard.clearDialog();
+        var text = 'Running server capabilities check<ul id="checklist">';
+        for (x in wizard.features) {
+            var feature = wizard.features[x];
+            text += '<li>checking '+feature+' <span id="check-'+feature+'" class="flattr-server-check">...</span></li>';
+        }
+        text += '</ul>';
+        
+        wizard.write(text);
+        
+        for (x in wizard.features) {
+            feature = wizard.features[x];
+            wizard.check(feature);
+        }
+    },
+    
+    check : function (feature) {
+        wizard.disableButton();
+        
+        jQuery.get("admin.php", {q : feature, flattrJAX : true , page : "flattr/flattr.php"}, function(data) {
+            var testclass = data.result;
+            jQuery("#check-"+data.feature).addClass(testclass);
+            jQuery("#check-"+data.feature).html(data.text);
+            
+            var enable = true;
+            jQuery(".flattr-server-check").each(function () {
+                if (jQuery(this).hasClass("failed")) {
+                    enable = false;
+                }
+            });
+            if (enable) {
+                wizard.enableButton();
+                wizard.step2();
+            }
+        }, 'json');
+    },
+    
+    step2 : function () {
+        jQuery("#check-button").html("Continue");
+        jQuery("#check-button").unbind("click");
+        jQuery("#check-button").click(function(){
+            wizard.disableButton();
+            wizard.clearDialog();
+            jQuery(".ui-dialog").animate({
+                left: '-=125',
+                width: '+=250',
+                top: '-=25',
+                height: '+=85'
+            }, "fast", function() {
+                    jQuery("div#dialog").css("height", 240);
+                    wizard.enableButton();
+                }
+            );
+            wizard.write('<ol><li>Login to your Flattr Account at <a href="https://flattr.com/" target="_blank">flattr.com</a></li>'+
+                         '<li>To get your personal Flattr APP Key and APP Secret you need to <a href="https://flattr.com/apps/new" target="_blank">register your blog</a> as Flattr app.</li>'+
+                         "<li>Choose reasonable values for <em>Application name</em>, <em>Application website</em> and <em>Application description</em></li>"+
+                         "<li>It is mandatory to <strong>select BROWSER application type!</strong> This plugin will not work if CLIENT is selected.</li>"+
+                         '<li>Your callback domain must be the URL to this site.<br><input readonly="readonly" size="70" value="'+ window.location +'"></li>'+
+                         "<li>Click Continue.</li>"+
+                         "</ol>"
+            );
+            jQuery("input").each(function() {
+                if (jQuery(this).attr("readonly")=="readonly")
+                    jQuery(this).click(function(){
+                        jQuery(this).select();
+                    });
+            });
+            jQuery("#check-button").unbind("click");
+            jQuery("#check-button").click(function(){
+                wizard.disableButton();
+                jQuery("#check-button").unbind("click");
+                wizard.clearDialog();
+                wizard.write("<p>Copy 'n Paste your APP Key and APP Secret in the corresponding fields below.</p>"+
+                             '<table class="form-table">' +
+                             '<tbody><tr valign="top">' +
+                             '<th scope="row">APP_KEY</th>' + 
+                             '<td><input size="70" name="flattrss_api_key" id="flattrss_api_key" value="" autocomplete="off"></td>' +
+                             '</tr>' +
+                             '<tr valign="top">' +
+                             '<th scope="row">APP_SECRET</th>' +
+                             '<td><input size="70" name="flattrss_api_secret" id="flattrss_api_secret" value="" autocomplete="off"></td>' +
+                             '</tr>' +
+                             '</tbody></table>'
+                );
+                jQuery("div#dialog").find("input").change(function() {
+                    wizard.step2b();
+                });
+                jQuery("div#dialog").find("input").keyup(function() {
+                    wizard.step2b();
+                });
+                jQuery("div#dialog").find("input").select(function() {
+                    wizard.step2b();
+                });
+                jQuery("div#dialog").find("input").mouseup(function() {
+                    wizard.step2b();
+                });
+            });
+        });
+    },
+    
+    step2b : function () {
+        var step3 = true;
+        jQuery("div#dialog").find("input").each(function() {
+            if (jQuery(this).attr("value") == "") {
+                step3 = false;
+            }
+        })
+        
+        if (step3) {
+            jQuery("#check-button").unbind("click");
+            wizard.enableButton();
+            jQuery("#check-button").click(function() {
+                wizard.step3();
+            });
+        } else {
+            wizard.disableButton();
+        }
+    },
+    
+    step3 : function () {
+        wizard.disableButton();
+        jQuery("#check-button").html("validating...");
+        
+        jQuery.get("admin.php", {flattrss_api_key : jQuery("#flattrss_api_key").attr("value"),
+                                  flattrss_api_secret : jQuery("#flattrss_api_secret").attr("value"),
+                                  flattrJAX : true , page : "flattr/flattr.php"}, function(data) {
+            if (data.result == 0) {
+                window.location = data.result_text;
+            } else {
+                jQuery("#check-button").html("Continue");
+                wizard.enableButton();
+            }
+        }, 'json');
+    },
+    
+    clearDialog : function () {
+        wizard.write("");
+    },
+    
+    write : function (String) {
+        jQuery("div#dialog").html(String);
+    },
+    
+    append : function (String) {
+        wizard.write(jQuery("div#dialog").html()+String)
+    },
+    
+    disableButton : function () {
+        jQuery("#check-button").attr("disabled", "disabled");
+    },
+    
+    enableButton : function () {
+        jQuery("#check-button").removeAttr("disabled");
+    },
+    
+    returncheck : function (callback) {
+        var query = window.location.search.substring(1);
+        var nvPairs = query.split("&");
+        var param = new Array();
+        
+        for (i = 0; i < nvPairs.length; i++) {
+             var kv = nvPairs[i].split("=");
+             param[kv[0]] = kv[1];
+        }
+        if (typeof(param["error"])!="undefined" && typeof(param["error_description"])!="undefined") {
+            jQuery(".flattr-wrap div#dialog").dialog({
+                modal: true,
+                height: 250,
+                buttons: [
+                    {
+                        text: "Cancel",
+                        click: function () {
+                            jQuery(this).dialog("close");
+                            jQuery(this).unbind("dialog");
+                        }
+                    }
+                ]
+            });
+            jQuery(".flattr-wrap div#dialog").dialog("open");
+            wizard.write('<h3>'+wizard.ucwords(param["error"].replace(/\_/g, " "))+"</h3>"+
+                         '<p>'+param["error_description"].replace(/\+/g, " ")+'</p>'
+            );
+        } else if (typeof(param["code"])!="undefined") {
+            jQuery(".flattr-wrap div#dialog").dialog({
+                modal: true,
+                height: 320,
+                buttons: [
+                    {
+                        text: "Ok",
+                        click: function () {
+                            jQuery(this).dialog("close");
+                            jQuery(this).unbind("dialog");
+                        }
+                    }
+                ]
+            });
+            jQuery(".flattr-wrap div#dialog").dialog("open");
+            wizard.disableButton();
+            wizard.clearDialog();
+            jQuery.get("admin.php", {code : param["code"], flattrJAX : true , page : "flattr/flattr.php"}, function(data) {
+                wizard.enableButton();
+                wizard.write(data.result_text);
+            }, 'json');
+            wizard.toggleToActive();
+        } else {
+            wizard.toggleToActive();
+        }
+    },
+    
+    ucwords : function  (str) {
+        return (str + '').replace(/^([a-z])|\s+([a-z])/g, function ($1) {
+            return $1.toUpperCase();
+        });
+    }
+};
+
+jQuery(document).ready(function() {
+    wizard.ready();
+});
\ No newline at end of file