function cleanup()
 {
     serendipity_event_freetag::static_install();
 }
 function displayTagCloud($tag)
 {
     global $serendipity;
     $tags = $this->getTagCloudTags($tag);
     $serendipity['smarty']->assign('freetag_tagTitle', function_exists('serendipity_specialchars') ? serendipity_specialchars(is_array($this->displayTag) ? implode(' + ', $this->displayTag) : $this->displayTag) : htmlspecialchars(is_array($this->displayTag) ? implode(' + ', $this->displayTag) : $this->displayTag, ENT_COMPAT, LANG_CHARSET));
     if (!empty($tags)) {
         $serendipity['smarty']->assign('freetag_hasTags', true);
         $min = $this->get_config('min_percent', 100);
         $max = $this->get_config('max_percent', 300);
         ob_start();
         serendipity_event_freetag::displayTags($tags, false, false, true, $max, $min, serendipity_db_bool($this->get_config('use_flash')), serendipity_db_bool($this->get_config('flash_bg_trans', true)), $this->get_config('flash_tag_color', 'ff6600'), $this->get_config('flash_bg_color', 'ffffff'), $this->get_config('flash_width', 600), $this->get_config('flash_speed', 100), $this->get_config('taglink'), $this->get_config('template'), $this->get_config('xml_image', 'img/xml.gif'));
         $tagout = ob_get_contents();
         ob_end_clean();
         $serendipity['smarty']->assign('freetag_displayTags', $tagout);
     } else {
         $serendipity['smarty']->assign('freetag_hasTags', false);
     }
     $content = $this->parseTemplate('plugin_freetag.tpl');
     echo $content;
 }
function wp_getTags($message)
{
    global $serendipity;
    $val = $message->params[1];
    $username = $val->getval();
    $val = $message->params[2];
    $password = $val->getval();
    if (!serendipity_authenticate_author($username, $password)) {
        return new XML_RPC_Response('', XMLRPC_ERR_CODE_AUTHFAILED, XMLRPC_ERR_NAME_AUTHFAILED);
    }
    $xml_entries_vals = array();
    if (class_exists('serendipity_event_freetag')) {
        $tags = serendipity_event_freetag::getAllTags();
        $rsslink = $serendipity['baseURL'] . 'rss.php?serendipity%5Btag%5D=';
        // Find the plugins tag http path setting
        $q = "select value from {$serendipity['dbPrefix']}config WHERE name LIKE 'serendipity_plugin_freetag:%/taglink'";
        $row = serendipity_db_query($q, true);
        if (is_array($row)) {
            $http_url = $row['value'];
        } else {
            $http_url = $serendipity['baseURL'] . ($serendipity['rewrite'] == 'none' ? $serendipity['indexFile'] . '?/' : '') . 'plugin/tag/';
        }
        // copied default from plugin
        $tagid = 1;
        foreach ($tags as $tag => $count) {
            $values = array('tag_id' => new XML_RPC_Value(0, 'string'), 'name' => new XML_RPC_Value($tag, 'string'), 'count' => new XML_RPC_Value($count, 'string'), 'slug' => new XML_RPC_Value($tag, 'string'), 'html_url' => new XML_RPC_Value($http_url . $tag, 'string'), 'rss_url' => new XML_RPC_Value($rsslink . $tag, 'string'));
            $xml_entries_vals[] = new XML_RPC_Value($values, 'struct');
            $tagid++;
        }
    }
    $xml_entries = new XML_RPC_Value($xml_entries_vals, 'array');
    return new XML_RPC_Response($xml_entries);
}
    /**
     * @param string $event
     * @param serendipity_property_bag $bag
     * @param mixed $eventData
     * @param mixed $addData
     * @return bool
     */
    function event_hook($event, &$bag, &$eventData, $addData = null)
    {
        global $serendipity;
        switch ($event) {
            case 'backend_publish':
            case 'backend_save':
                serendipity_db_query("DELETE FROM {$serendipity['dbPrefix']}entryproperties WHERE entryid = '" . $eventData['id'] . "' AND property LIKE 'ep_flattr%'");
                foreach ($this->flattr_attrs as $attr => $attr_desc) {
                    serendipity_db_query("INSERT INTO {$serendipity['dbPrefix']}entryproperties (entryid, value, property) VALUES ('" . $eventData['id'] . "', '" . serendipity_db_escape_string($serendipity['POST']['properties']['ep_' . $attr]) . "', 'ep_" . $attr . "')");
                }
                return true;
                break;
            case 'backend_display':
                ?>
                    <fieldset style="margin: 5px">
                        <legend><?php 
                echo PLUGIN_FLATTR_NAME;
                ?>
</legend>
<?php 
                foreach ($this->flattr_attrs as $attr => $attr_desc) {
                    if (isset($serendipity['POST']['properties']['ep_' . $attr])) {
                        $val = $serendipity['POST']['properties']['ep_' . $attr];
                    } elseif (isset($eventData['id'])) {
                        $val = $eventData['properties']['ep_' . $attr];
                    } else {
                        $val = '';
                    }
                    echo '<label for="serendipity[properties][ep_' . $attr . ']" title="' . PLUGIN_FLATTR_NAME . '">
                            ' . $attr_desc . ':</label><br/>';
                    if ($attr == 'flattr_active' || $attr == 'flattr_lng' || $attr == 'flattr_cat') {
                        echo '<select name="serendipity[properties][ep_' . $attr . ']" id="properties_' . $attr . '" class="input_select">';
                        if ($attr == 'flattr_lng') {
                            $opt = $this->flattr_langs;
                            echo '<option value=""></option>' . "\n";
                        } elseif ($attr == 'flattr_cat') {
                            $opt = $this->flattr_cats;
                            echo '<option value=""></option>' . "\n";
                        } elseif ($attr == 'flattr_active') {
                            $opt = array('1' => YES, '-1' => NO);
                        }
                        foreach ($opt as $key => $kval) {
                            echo '<option value="' . $key . '" ' . ((string) $val == (string) $key ? 'selected="selected"' : '') . '>' . (function_exists('serendipity_specialchars') ? serendipity_specialchars($kval) : htmlspecialchars($kval, ENT_COMPAT, LANG_CHARSET)) . '</option>' . "\n";
                        }
                        echo '</select>';
                    } else {
                        echo '<input type="text" name="serendipity[properties][ep_' . $attr . ']" id="properties_' . $attr . '" class="input_textbox" value="' . (function_exists('serendipity_specialchars') ? serendipity_specialchars($val) : htmlspecialchars($val, ENT_COMPAT, LANG_CHARSET)) . '" style="width: 100%" />' . "\n";
                    }
                    echo '<br />';
                }
                ?>
                    </fieldset>
<?php 
                return true;
                break;
            case 'frontend_header':
                $flattr_uid = substr($this->_addslashes($this->get_config('userid')), 0, 500);
                $flattr_btn = $this->_addslashes($this->get_config('flattr_btn'));
                $flattr_lng = substr($this->get_config('flattr_lng'), 0, 255);
                $flattr_cat = substr($this->get_config('flattr_cat'), 0, 255);
                ?>
<script type="text/javascript">
/* <![CDATA[ */
(function() {
    var s = document.createElement('script');
    var t = document.getElementsByTagName('script')[0];
    s.type = 'text/javascript';
    s.async = true;
    s.src = 'https://api.flattr.com/js/0.6/load.js?mode=auto';
    s.src += '&popout=<?php 
                echo (int) $this->get_config('flattr_pop');
                ?>
';
    s.src += '&uid=<?php 
                echo $flattr_uid;
                ?>
';
    s.src += '&language=<?php 
                echo $flattr_lng;
                ?>
';
    s.src += '&category=<?php 
                echo $flattr_cat;
                ?>
';
    <?php 
                if (in_array($flattr_btn, array('default', 'compact'))) {
                    ?>
    s.src += '&button=<?php 
                    echo $flattr_btn;
                    ?>
';
    <?php 
                }
                ?>
    t.parentNode.insertBefore(s, t);
 })();
/* ]]> */
</script>
<?php 
                break;
            case 'frontend_display':
                if (empty($eventData['properties'])) {
                    $eventData['properties'] =& serendipity_fetchEntryProperties($eventData['id']);
                }
                if ($eventData['properties']['ep_flattr_active'] == '-1') {
                    return true;
                }
                if (empty($eventData['body']) && empty($eventData['extended'])) {
                    return true;
                }
                $flattr_uid = $this->_addslashes($this->get_config('userid'));
                $flattr_tle = $this->_addslashes($eventData['title']);
                $flattr_pop = (int) $this->get_config('flattr_pop');
                $flattr_dsc = $this->_addslashes($eventData['properties']['ep_flattr_dsc']);
                $flattr_cat = $this->_addslashes($eventData['properties']['ep_flattr_cat']);
                $flattr_lng = $this->_addslashes($eventData['properties']['ep_flattr_lng']);
                $flattr_tag = $this->_addslashes($eventData['properties']['ep_flattr_tag']);
                if (empty($flattr_dsc)) {
                    $flattr_dsc = $this->_addslashes($eventData['body']);
                }
                $flattr_dsc = strip_tags($flattr_dsc);
                if (empty($flattr_cat)) {
                    $flattr_cat = $this->get_config('flattr_cat');
                }
                if (empty($flattr_lng)) {
                    $flattr_lng = $this->get_config('flattr_lng');
                }
                if (empty($flattr_tag) && class_exists('serendipity_event_freetag')) {
                    $_tags = serendipity_event_freetag::getTagsForEntries(array($eventData['id']));
                    $tags = is_array($_tags) ? array_pop($_tags) : array();
                    $flattr_tag = implode(',', $tags);
                }
                $flattr_url = $this->_addslashes(serendipity_archiveURL($eventData['id'], $eventData['title'], 'baseURL', true, array('timestamp' => $eventData['timestamp'])));
                $flattr_btn = $this->_addslashes($this->get_config('flattr_btn'));
                $flattr_uid = substr($flattr_uid, 0, 500);
                $flattr_tle = substr($flattr_tle, 0, 500);
                $flattr_dsc = substr($flattr_dsc, 0, 1000);
                $flattr_cat = substr($flattr_cat, 0, 255);
                $flattr_lng = substr($flattr_lng, 0, 255);
                $flattr_tag = substr($flattr_tag, 0, 255);
                $flattr_url = substr($flattr_url, 0, 2048);
                $flattr_btn = substr($flattr_btn, 0, 255);
                if ($flattr_btn != 'default' && $flattr_btn != 'compact') {
                    $flattr = "<a href=\"https://flattr.com/submit/auto?" . "user_id=" . urlencode($flattr_uid) . "&" . "url=" . urlencode($flattr_url) . "&" . "title=" . urlencode($flattr_tle) . "&" . "description=" . urlencode($flattr_dsc) . "&" . "category=" . urlencode($flattr_cat) . "&" . "popout=" . urlencode($flattr_pop) . "&" . "language=" . urlencode($flattr_lng) . "\">" . $flattr_btn . "</a>";
                } else {
                    $flattr_tle2 = stripslashes($flattr_tle2);
                    $flattr_tle2 = function_exists('serendipity_specialchars') ? serendipity_specialchars($flattr_tle2) : htmlspecialchars($flattr_tle2, ENT_COMPAT, LANG_CHARSET);
                    $flattr = "\r\n<a class='FlattrButton' style='display:none;'\r\n    title=\"" . $flattr_tle2 . "\"\r\n    data-flattr-uid='" . $flattr_uid . "'\r\n    data-flattr-tags='" . $flattr_tag . "'\r\n    data-flattr-category='" . $flattr_cat . "'\r\n    data-flattr-language='" . $flattr_lng . "'\r\n    href='" . $flattr_url . "'>\r\n\r\n    " . stripslashes($flattr_dsc) . "\r\n</a>\r\n    ";
                }
                $field = $this->get_config('placement');
                if ($addData['from'] == 'functions_entries:updertEntry') {
                } elseif ($addData['from'] == 'functions_entries:printEntries_rss') {
                    $entryText =& $this->getFieldReference($field, $eventData);
                    $entryText .= function_exists('serendipity_specialchars') ? serendipity_specialchars($flattr) : htmlspecialchars($flattr, ENT_COMPAT, LANG_CHARSET);
                } else {
                    $entryText =& $this->getFieldReference($field, $eventData);
                    $entryText .= $flattr;
                }
                if ($field == 'extended') {
                    $eventData['is_extended'] = true;
                }
                break;
            case 'frontend_display:rss-1.0:namespace':
            case 'frontend_display:rss-2.0:namespace':
                if ($this->get_config('add_to_feed')) {
                    $eventData['display_dat'] .= '
   xmlns:atom="http://www.w3.org/2005/Atom"';
                }
                return true;
                break;
            case 'frontend_display:rss-1.0:per_entry':
            case 'frontend_display:rss-2.0:per_entry':
                if ($this->get_config('add_to_feed')) {
                    $flattr_uid = $this->_addslashes($this->get_config('userid'));
                    $flattr_uid = substr($flattr_uid, 0, 500);
                    $flattr_url = $this->_addslashes(serendipity_archiveURL($eventData['id'], $eventData['title'], 'baseURL', true, array('timestamp' => $eventData['timestamp'])));
                    $flattr_url = substr($flattr_url, 0, 2048);
                    $eventData['display_dat'] .= '
    <atom:link rel="payment" href="https://flattr.com/submit/auto?url=' . urlencode($flattr_url) . '&amp;user_id=' . $flattr_uid . '" type="text/html" />';
                }
                return true;
                break;
            case 'frontend_display:atom-1.0:per_entry':
                if ($this->get_config('add_to_feed')) {
                    $flattr_uid = $this->_addslashes($this->get_config('userid'));
                    $flattr_uid = substr($flattr_uid, 0, 500);
                    $flattr_url = $this->_addslashes(serendipity_archiveURL($eventData['id'], $eventData['title'], 'baseURL', true, array('timestamp' => $eventData['timestamp'])));
                    $flattr_url = substr($flattr_url, 0, 2048);
                    $eventData['display_dat'] .= '
    <link rel="payment" href="https://flattr.com/submit/auto?url=' . $flattr_url . '&amp;user_id=' . $flattr_uid . '" type="text/html" />';
                }
                return true;
                break;
        }
    }