Dag van dit, week van dat

maand van zus en jaar van zo...

Vorige week was de week van de democratie. Kreeg je ook ineens zo'n ongebreidelde zin in een wandeling naar de stembus? Gewoon fijn weer eens een keuze mogen maken in een ongezellig achterafzaaltje in een of ander grauw en grijs (semi)publiek gebouw. Ik niet in ieder geval. De democratische week is nog niet voorbij of de week van de geschiedenis staat alweer voor de deur. En dat terwijl ik nog moet bijkomen van de kinderboekenweek en de week van de klassieke muziek. Ondertussen blinkt teletekst van omroep Gelderland mij een schuldcomplex aan dat ik zondag weer iets heb gemist: de dag van de witte stok. Ik geef het eerlijk toe: tot mijn schande ben ik helemaal vergeten om blinden en doven te knuffelen. Gek word ik ervan.

Maar ja, het is ook allemaal niet meer bij te houden. Je bent wel een enorme loser als er niet tenminste een dag, week, maand of jaar naar je werk (b.v. secretaressedag), je hobby (willekeurig voorbeeld: modelbouwerdag), je huidskleur (internationale dag tegen racisme en discriminatie), je psychische of lichamelijke afwijking (vul-willekeurige-ziekte-of-gebrek-in-dag), je huisgenoot (moeder-, vader-, vrouwen-, homodag), je huisdier (dierendag) of het hout van je kozijnen (Dag van de Duurzaamheid) is vernoemd. Voor alles en iedereen bestaat momenteel wel een gedenkwaardig moment.

Een snelle zoektocht met google toont een lange lijst dagen die helaas en tot mijn schande geheel en al langs mij heen zijn gegaan. Laat ik er een paar noemen (ik heb ze niet verzonnen; ze bestaan echt)... de (wereld) dag van de/het:
Nederlandse Jazz
Belegger
Bouw
Arbeid
Eigen Vermogen
Groninger geschiedenis
Openbare Ruimte
Levenslied
Palliatieve zorg
Dialoog
Leraar
Architectuur
Stage
Aarde
Literatuure
Chemiee
Nederlandse Film
Amateurfilm
Park
Cateringmedewerker
Cultuureducatie
Doden
Romantische Muziek
Stratenmaker
Schaap
Duidelijkheid
Kenniseconomie
GGZ
Verslaving
West-Friese Ondernemer
Kunstuitleen
Mens en Dier
Jeugdhelden
Baanatletiek
Muziek
Jodendom
Mantelzorg
Magazijn
Leerplicht
Rechten van het Kind
Respect
Europa
Hoogbegaafdheid
Supermarkt
Platteland
Vrijheid
Veen
Madelief
Vrede
Arrestatie
Bouwkunde
Accountant
Media
Luisteraar
Veilige Dak
Koningin
Jonge Jury
MKB
God
Individu
Eindexamenkandidaat
Jeugdaanbod Muziek
Weer
Toekomst
Internationale Student
Lege lucht
Literatuureducatie
Haagse geschiedenis
Bedrijvigheid
Geweldloosheid
Voedingsassistenten
Linkshandigen
Kamermuziek
Filosofie
Communicatie
Familiegeschiedenis
Gehandicaptenzorg
Kleine Zaal
Brandmelder
Student
EHvA
Lokale Rekenkamer
Haagse ontmoeting
Ouderen
Kip
Verstand
Jongerenraden Zeeland
Milieu
Enz, enz, enz...

Wil je al die dagen op gepaste wijze vieren dan heb je er letterlijk een dagtaak aan en ben je binnen no time onderwerp van gesprek tijdens de dag van de levertransplantatie. Maar er is meer... er zijn ook nog de weken en maanden van ... Je vindt het vast niet erg dat ik geen moeite heb genomen om die verder uit te zoeken. Zoals met alles draait de mens volkomen door. Neem de dag van de psychiatrie. Ooit op 10 oktober 2001 in het leven geroepen om publieke aandacht te vragen voor (het werken in) de psychiatrie. Een paar jaar later bleek een dag al niet meer voldoende en nu is er al een heuse week van de psychiatrie. Gelet op de mentale staat van de mensheid lijkt me een week ook nog redelijk aan de korte kant.

Mijn advies: houd toch op met deze klinkklare gedevalueerde onzin. Laten we vanaf heden van iedere dag gaan beschouwen als een mooie gewone dag. Doodgewoon door aardig voor elkaar te zijn. Je zou vanavond bijvoorbeeld gezellig met familie of vrienden kunnen gaan eten. Is dat geen super idee?

Oh jee... nu doe ik het toch: het is vandaag Wereldvoedseldag!

© Harold Makaske 16 oktober 2007 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