VVD-leiderschap

Ruzie over de kilometerheffing...

Het gaat weer lekker in liberaal Nederland. De leider aanvoerder van de VVD nam gisteren tijdens de Algemene Beschouwingen afstand van de mobiliteitwoordvoerder Pieter Hofstra. Die vroeg vorig jaar nog in een motie aan het kabinet om zo snel mogelijk de kilometerheffing in te voeren.

Gisteren verwees Van Aartsen de kilometerheffing naar de prullenbak. De kilometerheffing zou voor wat hem betreft daar definitief moeten blijven. Zalm heeft gezegd niet meer terug te keren, dus grijpt Van Aartsen nu zijn kans om leiderschap te tonen.

Pieter Hofstra nuanceerde vanmorgen op Radio 1 die uitspraak. De soep zou niet ze heet worden gegeten als dat Van Aartsen ze opdient... Dus wel. Van Aartsen heeft de pan weer uit handen van Hofstra gepakt, op het vuur gezet en de vlam weer iets hoger gezet. "Het is aan mij als fractieleider om de lijnen uit te zetten", zei Van Aartsen.

Het gaat weer lekker in de VVD. Dit heeft niets met democratisch liberaal leiderschap te maken, maar alles met autoritair regentschap. De VVD zit op zo'n lijsttrekker te wachten. Ik ben benieuwd wanneer de volgende leden uit de fractie treden en een eigen groep in de Kamer beginnen.

En laat ik nog één ding voorspellen... die kilometerheffing komt er én die wordt dan zelfs gesteund door de VVD. Het is volstrekt niet uit te leggen dat het liberale instrument van de vervuiler betaalt en de gebruiker betaalt niet gesteund gaat worden door een zichzelf liberaal noemende partij.

[aanvulling]
Nou dat gaat snel... Aanvoerder Draaitol Van Aartsen heeft blijkbaar een beetje spijt van de 'kijk-mij-eens-flink-zijn-optreden' in de Kamer. Hij verklaarde in de tweede termijn van de Algemene Beschouwingen dat de kilometerheffing er wél mag komen. De voorwaarden zijn dat de opbrengst terug gaat naar de automobilist en dat de invoering en vaste kosten van het systeem niet te duur zijn.

Ik ben benieuwd wat er van die voorwaarden is overgebleven als de VVD logischerwijs over enkele jaren instemt met het plan. Laat ik maar voorspellen: niets, want de BPM en motorrijtuigenbelasting gaan ook naar de algemene middelen en niet terug naar de mobiliteitssector, dus waarom zou een kilometerheffing die daarvoor in de plaats komt dan wel geheel teruggesluisd worden? Dat klinkt wel mooi, maar vanuit het systeem van de Rijksbegroting heel onlogisch. Dan zouden de andere belastingen met miljarden omhoog moeten... en dat lijkt mij nou niet zo liberaal.

Deze driedubbele-rietberger-politiek van de VVD-aanvoerder heeft hem zonder twijfel flink beschadigd. Dat zal hem nog lang gaan achtervolgen. Het leerproces: eigen zwaarden kunnen behoorlijk scherp te zijn.

© Harold Makaske 22 september 2005 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