De campagne is begonnen

Verkeerde inspraak...

Epe wordt het toneel van een heftige strijd. De politieke partijen kruisen de degens. Koortsachtig overleg tussen allerlei betrokkenen. De politieke leiders overleggen over de ontstane situatie. Niet alleen in de gemeente heerst een opgejaagde stemming, zelfs in Den Haag wordt zonder twijfel druk achter de schermen overlegd. Zijn het de gemeenteraadsverkiezingen die zoveel stof doen opwaaien? Nee… Epe maakt zich op voor de benoeming van een nieuwe burgemeester.

Procedure
In Nederland wordt de burgemeester benoemd door de Kroon. De gemeenteraad stelt een profielschets op en een vertrouwenscommissie voert sollicitatiegesprekken met kandidaten. Daarop wordt een voordracht gemaakt, die via de Commissaris van de Koningin bij het kabinet terechtkomt. En dan volgt er na deze openlijke achterkamertjespolonaise een benoeming.

Inspraak
In aanloop naar de gekozen burgemeester heeft de gemeente Epe bedacht om de burgers inspraak te geven bij het opstellen van de profielschets. Iedereen mag zijn of haar voorkeuren kenbaar maken. Omdat de gemeente waarschijnlijk verwacht dat niet veel mensen van dat recht gebruik gaan maken, gaan ze ook een soort burgerpanel enquêteren om geluiden uit de samenleving te vernemen. Er wordt dus alles aan gedaan om de wensen en opvattingen van de burgers te horen.

Takenpakket
Maar is dat allemaal nou wel zo nodig? De rol van de burgemeester lijkt veel belangrijker dan het feitelijk op grond van de bevoegdheden is. De burgemeester heeft een taak in de handhaving van de openbare orde en zit de gemeenteraad en het college van Burgemeester en Wethouders voor. Volgens de website van de gemeente Epe houdt hij zich ook bezig met coördinatie en communicatie.

Het handhaven van de openbare orde lijkt mij in een dorp als Epe niet echt een dagtaak en communicatie zou een taak van het gehele college van B en W moeten zijn. Blijft over de coördinatie van het beleid.

Gekozen burgemeester
Natuurlijk is het mooi dat burgers inspraak krijgen in het benoemingsproces van de burgemeester. Die inspraak kan mij niet ver genoeg gaan. Zelf ben ik al jaren voorstander van een gekozen burgemeester met veel meer bevoegdheden. Dan kun je de man of vrouw afrekenen op zijn optreden. Een burgemeester moet zich dan laten zien en kan niet glansloos op zijn pensioen wachten. Helaas gaat het nog wel even duren voordat het zover is. Tot die tijd moeten we het doen met de mogelijkheid om aanbevelingen te doen voor de profielschets en moeten we maar afwachten wat daarvan wordt overgenomen én of de nieuw benoemde burgemeester die verwachtingen kan waarmaken.

Gelet op de bevoegdheden van de burgemeester – zeker in een kleine gemeente als Epe - is het hele inspraakgedoe echter veel drukte om niets. Er zijn belangrijkere functies waarvoor inspraak wenselijk is. De burgers mogen dan wel de gemeenteraadsleden kiezen… ze hebben geen enkele invloed op de samenstelling van het college na de verkiezingen. Het collegeprogramma is een compromis tussen de verkiezingsprogramma’s van de deelnemende partijen. Hoe de coalitie eruit gaat zien en op basis van welke collegeafspraken, is voor de verkiezingen voor de kiezers volstrekt gissen.

Wethouders
Inspraak over de profielschets van wethouders en duidelijkheid vooraf over de wethouderskandidaten is veel zinniger voor de burgers dan de inspraak bij de burgemeestersbenoeming. Het zijn feitelijk de wethouders die het beleid bepalen. Zij hebben de inhoudelijke beleidsterreinen in hun portefeuille die de burgers daadwerkelijk raken. Het zou dan ook wenselijk zijn als de burgers voor de verkiezingen weten wie de wethouderskandidaten zijn van de verschillende partijen. Als kiezer kun je eigenlijk alleen maar geïnformeerd stemmen als je duidelijkheid hebt over de richting die het beleid in de komende jaren opgaat én welk vlees er in de politieke kuip zit. Je kunt dan je stemgedrag mede laten afhangen van die kandidaten.

Naar goed Nederlands polderpolitiek gebruik zal die duidelijkheid echter ook begin 2006 niet worden verschaft. De wethouders worden na de verkiezingen wederom na schimmige coalitiebespreking door de leiders van de politieke partijen naar voren geschoven. De burgers hebben daar uiteindelijk dus weer geen invloed op.

Politieke leiders
De leiders van de politieke partijen zouden veel opener met de coalitievorming én de wethoudersbenoemingen om moeten gaan. Is het teveel gevraagd om de kiezers duidelijkheid te geven over de coalitievoorkeur van de politieke partijen én wie ze als kandidaat wethouders naar voren schuiven? Als je niets wilt veranderen, kun je het gevoerde beleid als inzet van de verkiezingen maken. Maar wellicht heb je als partij grote nieuwe ambities en wil je laten zien dat je wél serieuze verandering en vernieuwing wilt. Dat je de ramen op het gemeentehuis gaat openzetten in plaats van ze voor veel geld te laten dichtmetselen ten behoeve van een nieuw soort communicatie. De verkiezingen zijn hét moment om dat allemaal duidelijk te maken aan de Eper belastingbetalers.

Door veel meer openheid te betrachten, bied je de burger meer invloed dan via een inspraakronde over een profielschets voor de burgemeestersfunctie die eigenlijk weinig om het lijf heeft.

© Harold Makaske 9 oktober 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: 10. Epe