|
|
De revolutie staat voor de deur in Epe
De eerste bijeenkomst van de Liberale Burger Partij...
Gisteravond was het zover. In restaurant Stern vond de eerste 'wij-willen-van-u-horen-wat-wij-moeten-gaan-roepen-bijeenkomst" van de LBP plaats.
Klokslag acht uur konden de initiatiefnemers van de LBP de bijeenkomst openen. De opstelling met een tafel voor een zaal met stoelen werd verruild voor een 'rondetafel' gesprek met de zes aanwezigen.
Naast de eigenaar van Stern en de weblog redacteur nog vier andere mannen van bovengemiddelde leeftijd. Om je politiek-wetenschappelijke nieuwsgierigheid naar de sociale samenstelling van de LBP achterban te bevredigen, zal ik een korte beschrijving geven van de aanwezigen.
De eerste was een man op leeftijd. Zijn insteek: overal tegen... nou ja niet overal. Hij is tegen het feit dat de gemeente bepaalt of er wel niet mag worden gebouwd. Tegen de hoge telefoonkosten als je de NUON belt (of de gemeente daar wat aan kan doen, maakt niet uit). Tegen het feit dat er waarschijnlijk een drogisterij in het oude postkantoor van Vaassen komt ('Dat moet de gemeente tegenhouden!'). Tegen wetgeving ('Het wordt tijd dat de burger daar niets meer van aantrekt.. wij bepalen het zelf wel! Maar regels zijn natuurlijk wel nodig'). Tegen de welstandcommissie... (Afschaffen!!! Hoewel 'de gemeente natuurlijk wel moet bepalen wat voor huizen er gebouwd mogen worden'). Tegen de nieuwe Formido naast rijksmonument 't Hemeltjen. Tegen het ministerie van VROM (Afschaffen!) en tegen de uitbreidingsplannen van Gosschalk op het terrein van de voormalige LTS. Over de bestuurders heeft hij een duidelijke mening: Politici en ambtenaren zijn 'profeten die ook brood eten' (maar dat geldt dan weer niet voor wethouder Lagerweij want 'dat is beste man uit een hele goede familie... die ken ik allemaal'). Kortom een duidelijke gesprekspartner voor de LBP met kansen om hoog op de kandidatenlijst te komen.
De tweede was een man die permanent instemde met alles wat er werd gezegd. Of dat allemaal met elkaar in lijn lag of dat het volstrekt strijdig was met voorstellen waar hij eerder al van had laten blijken daar mee eens te zijn, deed daarbij niet ter zake. Ook dus een representant van de bloem der Eper samenleving en uitermate bruikbaar politicus in oprichting voor de LBP.
De derde was een boer uit Oene. Die in prachtig dialect fulmineerde tegen de 'westerlingen' die de boederijen in Oene opkopen en door de gemeente worden voorgetrokken... "kiek toch us wat'n hekk'n sie bie hun huuzen mog'n zett'n." En tegen de eerste aanwezige zei... "Lul noe us deur, dan kump wie nog us argens". Ook duidelijk een prototype van een burger waar de projectontwikkelaar en de interim manager zonder twijfel het oog op hadden bij de oprichting van hun partij.
De vierde zei helemaal niets: zat stil en roerloos aan de tafel. Toen de LBP-heren aan het eind vroegen om suggesties voor het verkiezingsprogramma op een papier te zetten, leverde hij het formulier blanco in... Garritsen vroeg waarom hij dat deed en daarop bleek dat deze man uit het voormalige Joegoslavië komt, amper Nederlands spreekt en het eigenlijk ook niet verstaat. Dus ook zonder twijfel een voorman binnen de primaire doelgroep van de LBP. Ik hoop niet de naam van de Liberale Burger Partij de man in verwarring heeft gebracht en dat hij daardoor dacht bij een inburgeringscursus te zijn. Wellicht dat hij interessant is om als excuus allochtoon op de lijst te figureren.
De eigenaar van Stern speelde een thuiswedstrijd. Met zijn kennis en capaciteiten zou de LBP zeker wel iets kunnen. Maar het is maar de vraag of deze ondernemer, met een realistisch gevoel voor verhoudingen en kennis van de Eper samenleving en het gemeentebestuur, betrokken wil zijn bij de LBP.
Hoewel de opzet was dat de aanwezigen hun ideeën voor het verkiezingsprogramma van de LBP kenbaar zouden maken, ontstond al vanaf de aanvang van de bijeenkomst een discussie naar aanleiding van enkele door mij geplaatste kanttekeningen over de populistische en makkelijke toonzetting van de heren.
De conclusie van de avond kan zijn dat de onvrede van de LBP zich toe spitst op het weinig dienstbare ambtenaren corps en college van B en W van de gemeente, de welstand commissie en het verspillen van geld door de gemeente (de drempel in Vaassen en de verbouwing van het gemeentehuis).
Uiteraard hebben ze een aantal terechte punten van kritiek op de gemeente en het beleid. Maar het probleem is dat ze volgens mij niet inzien dat een gemeente besturen meer vraagt dan simpele oplossingen. Zij willen een "u vraagt wij draaien" overheid en zo zit een overheid niet in elkaar. Het verkiezingsprogramma gaat bestaan uit een A-4tje en als er belangrijke zaken aan de orde komen dan organiseren ze een referendum of houden ze een poll op Internet.
Na anderhalf uur kreeg ik de indruk aan de non-verbale communicatie van de LBP-voormannen dat ze het eigenlijk wel welletjes en zonde van hun tijd vonden. Iets voor tien uur viel de hamer.
Het was weer een prachtig stukje politiek volkstheater. Dus als je een paar uur politiek plezier wilt hebben, ga naar één van de volgende bijeenkomsten van de LBP! Je hebt waarschijnlijk nog maar drie kansen... daarna vrees ik dat het politiek cabaret over en uit is omdat dat de initiatiefnemers van de LBP het boek wegens gebrek aan belangstelling zullen sluiten. Hoewel... ze claimen al ruim 450 reacties via hun site te hebben binnen gekregen. Hoe ze dat voor elkaar krijgen, is mij niet duidelijk want de teller van hun site staat nu op 457 en daarvan mogen ze toch zeker zo'n twintig tikken van mijn bezoeken aftrekken. Maar ach... in de wereld van de LBP is nou eenmaal niets wat het lijkt...
Eerdere berichten over de LBP:
Weer een mislukte partij vol goede bedoelingen...
Bronsttijd in bestuurlijk en politiek Epe. De Wonderbaarlijke vermenigvuldiging van herten: ...
De Liberale Burger Partij opnieuw in het nieuws...
Politiek cabaret in Epe. Het vervolg van de LBP...
De echte politici van de LBP...
© Harold Makaske 22 september 2005
/*
History:
v1.1
- add getTableList
v1.2
- use sql_table
- Added silent mode (configure via option) to support NP_MostViews
- Added Cleanup upon uninstall option
- Added "just number" minimalist mode
- Added supportsFeature
V1.2a
- Added min version support
V1.3
- Replaced doSkinVar with DoTemplateVar
V1.3a
- Added repeat views ignore function aka repeat F5s from those bored and lonely one
V1.3b
- Fixed counting off by 1 bug
V1.3c
- Added <%Views(skipCount)%> 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
|