De collectezak van de staat

Robin Hood in de polder

Vandaag stond onderstaand bericht op Teletekst:

Den Haag, Minister De Geus van Sociale Zaken gaat een speciale rekening openen waarop weldoeners geld kunnen storten voor door de bezuinigingen getroffen mensen met een minimuminkomen."Waar de overheid niet meer kan helpen, is het goed dat mensen voor elkaar opkomen", verklaarde De Geus in de Tweede Kamer.

Met verbazing las ik dit bericht over deze nieuwe 'aanpak' van de bijzondere bijstand. Wederom kiest het kabinet niet voor een goede basisregeling met een zeer strakke controle op de instroom en een keiharde handhaving om misbruik te voorkomen. Vandaag kreeg ik ook het berichtje dat in Groningen honderden bijstandsgerechtigden meerdere auto's blijken te bezitten. Twaalf daarvan hebben er zelfs meer dan honderd op hun naam. Daar moet veel harder tegen worden opgetreden. De bijstand is er niet om 'Joops Autoparadijs' of andere criminele activiteiten te financieren.

Het kabinet weet echter wel dat die controle onvoldoende zal opleveren en kiest daarom voor de meest eenvoudige oplossing: simpelweg korten van alle mensen die gebruik maken van de regeling. Daarmee duperen ze met name de mensen die de regeling echt nodig hebben.

Dit knaagt blijkbaar toch aan het geweten van de ministers. Maar omdat de boekhouders zo verstrikt zitten in hun eigen cijfers, afpraken en procedures, zien ze geen andere uitweg dan een beroep te doen op de Mobergs van deze maatschappij om vrijwillig geld te doneren.

De naam van dit initiatief verwijst naar één van de sympathiekste schurken uit de geschiedenis: Robin Hood. Stelde GroenLinks nog voor om in lijn met Robin Hood een extra belasting te heffen over 100.000 Euro-plus inkomens ten behoeve van de bijstand en bijzondere bijstand; minister De Geus heeft een eigen poldervariant van de bekende mythe geïntroduceerd: achterover leunen en hopen dat de rijken het geld komen brengen.

Om dit in goede banen te leiden, richt het Ministerie van Sociale Zaken een telefoonteam op om aan de weldoeners het Robin Hood rekeningnummer door te geven. Ieder weldenkend mens weet dat er dan ook een peperdure campagne moet volgen om het telefoonnummer en het rekeningnummer te communiceren, want anders blijft het doodstil op de sprookjesafdeling van het departement.

Maar ook met een campagne denkt het kabinet toch niet serieus dat de Nederlandse burgers vrijwillig een staatscollectezak gaan vullen om daarmee een elementaire overheidstaak te financieren? Dat hoop ik toch niet, want dan zijn ze pas echt de band met de realiteit kwijtgeraakt...

En als je dan al iets wilt organiseren, pak het dan in ieder geval nog een beetje creatief aan. Kijk eens naar de Postcodeloterij. Organiseer in navolging daarvan: de sofinummerloterij. Ieder maand een spetterende televisieshow - bij voorkeur op een commerciële zender - met steeds een wisselende minister als presentator. Een ander lid van het kabinet mag op pad om glunderend 10 miljoen Euro te overhandigen aan de gelukkige winnaar.

En achter de schermen houden de ministers Zalm en De Geus uiteraard de regie zo strak in handen dat telkens een bijstandsmoeder of -vader als gelukkige winnaar uit de bus komt. Alleen dan snijdt het mes pas aan twee kanten: extra inkomsten én afname bijstandsgerechtigden. Maar deze kleine manipulatie 'voor het goede doel' vertellen ze natuurlijk niet tegen de deelnemers. Hoe dan ook... op zo'n manier zijn er tenminste nog enkele winnaars.

Maar nee... wij moeten het doen met het bij voorbaat mislukte Robin Hood initiatief. Het kabinet mag hopen dat de kosten van dit 'door het volk, voor het volk' initiatief opwegen tegen de baten. Ik vrees dat één zekerheid is waar de boekhouders binnen het kabinet zich op kunnen verheugen. Over pak hem beet een jaar kan Sociale Zaken weer met trots ten minste twee bezuinigingsmaatregelen doorvoeren: het opdoeken van het telefoonteam en het stoppen van de campagne.

Deze christen-liberale versie van het Robin Hood verhaal kan wel eens heel verkeerd aflopen. Bij de volgende verkiezingen moeten CDA, VVD en D66 niet vreemd staan te kijken als mooie maagd Marian niet voor hen kiest, maar zich in de armen van de echte linkse schurken stort. En dat is zuur, want om haar was het de echte Robin Hood in de eerste plaats te doen.

© Harold Makaske 4 december 2003 to allow skipping count when used in template (ie to not count on click in main page) V1.4 - Fixed ignoe same IP count problem V1.5 - Added views_log table and changed plugin performance to check for unique visits by IP address. [gRegor] - Added option to set the length of time before re-counting hits from the same IP address (default: 2 hours) [gRegor] V1.6 - Added plugin menu to display all view count, w/ counter reset function - Delete view counter and log for deleted item V1.7 - use sql_query V1.8 - Admin page enhancement to preserve order and sort info v1.9 - Added item title in admin menu v1.9.1 - ignore draft in admin menu */ class NP_Views extends NucleusPlugin { // Note: I never run this plugin on 2.0 and have no idea whether it // wil work on <2.5. A user can simply chnage it to return // '200' and see if it works (likely will). I will gladly // change the min version to 2.0 and add the sql_table fix // upon such report. 8) function getMinNucleusVersion() { return '250'; } function getName() { return 'Views'; } function getAuthor() { return 'Rodrigo Moraes | Edmond Hui (admun) | gRegor Morrill'; } function getURL() { return 'http://www.tipos.com.br'; } function getVersion() { return '1.9.1'; } function getDescription() { return 'This plugin counts how many times an entry has been displayed.'; } function getEventList() { return array('PostAddItem', 'QuickMenu', 'PostDeleteItem'); } function supportsFeature($what) { switch($what) { case 'SqlTablePrefix': return 1; default: return 0; } } function getTableList() { return array( sql_table('plugin_views'), sql_table('plugin_views_log') ); } function install() { sql_query('CREATE TABLE IF NOT EXISTS ' . sql_table('plugin_views') . ' (id int(11) NOT NULL default "0", views int(15) NOT NULL default "0")'); sql_query('CREATE TABLE IF NOT EXISTS ' . sql_table('plugin_views_log') . ' (id int(11) NOT NULL auto_increment, ip varchar(20) NOT NULL default "", itemid int(11) NOT NULL default "0", viewtime varchar(32) NOT NULL default "", PRIMARY KEY (id) )'); $this->createOption('silent','Silent mode - No #Display shown in Item (still need to add the skinVar, for use with MostViewed)','yesno','no'); $this->createOption('deletetables','Delete this plugin\'s table and data when uninstalling?','yesno','yes'); $this->createOption('timespan', 'Hours to wait before re-counting visitors', 'text', '2'); } function unInstall() { if ($this->getOption('deletetables') == 'yes') { sql_query('DROP TABLE ' . sql_table('plugin_views') ); sql_query('DROP TABLE ' . sql_table('plugin_views_log') ); } } function hasAdminArea() { return 1; } /** * Adds an entry to the 'Quick Menu' on the Nucleus administration pages. * The entry will link to the commentcontrol admin page */ function event_QuickMenu(&$data) { global $member; if (!($member->isLoggedIn() && $member->isAdmin())) return; array_push( $data['options'], array( 'title' => 'View Counts', 'url' => $this->getAdminURL(), 'tooltip' => 'See the view count of all items' ) ); } function doTemplateVar(&$item, $input) { $itemid = $item->itemid; $remote_ip = ServerVar('REMOTE_ADDR'); $timespan = $this->getOption('timespan') * 3600; $now = time(); // get the current Views count $query = "SELECT views FROM " . sql_table('plugin_views') . " WHERE id=" . $itemid; $result = sql_query($query); $row = mysql_fetch_object($result); $views = intval($row->views); // Only do count updates if "skipcount" is not set if ($input != 'skipcount') { // This takes care of previous items if (mysql_num_rows($result) == 0) { $query = "INSERT INTO " . sql_table('plugin_views') . " (id, views) VALUES('$itemid', '1')"; sql_query($query); //$views = 0; } // end if // Check the views_log table to see if this IP has a viewtime for this item $query = "SELECT viewtime FROM " . sql_table('plugin_views_log') . " WHERE ip='" . $remote_ip . "' AND itemid=" . $itemid; $result = sql_query($query); // No views from this IP in the past X hours, so update the Views count if (mysql_num_rows($result) == 0) { $views++; $this->_updateViewsCount($itemid, $views); $this->_addViewsLog($itemid, $remote_ip, $now); } // end if else { $viewtime = mysql_result($result, 0, 'viewtime'); // It's been longer than X hours, so recount if (($now - $timespan) > $viewtime) { $views++; $this->_updateViewsCount($itemid, $views); $this->_updateViewsLog($itemid, $remote_ip, $now); } } // end else } // end if // Clear logs that are more than X hours old $time = $now - $timespan; $query = "DELETE FROM " . sql_table('plugin_views_log') . " WHERE (viewtime < $time)"; sql_query($query); if ($this->getOption('silent') == 'no') { echo $views; } // end if } function event_PostAddItem($data) { $itemid = $data['itemid']; $query = "INSERT INTO " . sql_table('plugin_views') . " (id, views) VALUES('$itemid', '0')"; sql_query($query); } function event_PostDeleteItem($data) { $itemid = $data['itemid']; $query = "DELETE FROM " . sql_table('plugin_views') . " WHERE id=". $itemid; sql_query($query); $query = "DELETE FROM " . sql_table('plugin_views_log') . " WHERE itemid=". $itemid; sql_query($query); } function _updateViewsCount($itemid, $views) { // update the Views table with the new count $query = "UPDATE " . sql_table('plugin_views') . " SET views='$views' WHERE id=$itemid"; sql_query($query); } function _addViewsLog($itemid, $ip, $time) { // add IP and itemid to views_log table so it won't be recounted for X hours $query = "INSERT INTO " . sql_table('plugin_views_log') . " (ip, itemid, viewtime) VALUES ('$ip', '$itemid', '$time')"; sql_query($query); } function _updateViewsLog($itemid, $ip, $time) { // update the views_log viewtime so it won't be recounted for X hours $query = "UPDATE " . sql_table('plugin_views_log') . " SET viewtime='$time' WHERE ip='$ip'"; sql_query($query); } function doAction($actionType) { global $CONF, $member; if (!($member->isLoggedIn() && $member->isAdmin())) return 'Sorry. not allowed'; if ($actionType == 'resetview'){ $id = requestVar('id'); $query = "UPDATE " . sql_table('plugin_views') . " SET views=0 WHERE id=$id"; sql_query($query); } else if ($actionType == 'resetallview') { $query = "UPDATE " . sql_table('plugin_views') . " SET views=0"; sql_query($query); } $order = requestVar('order'); $sort = requestVar('sort'); header('Location: ' . $CONF['PluginURL'] . 'views/index.php?sort=' . $sort . '&order='.$order); } } ?> - Hoofdstuk: 5. Losse gedachten