|
|
Epe gaat uitzenden
Column voor geo.nl...
Terwijl in veel plaatsen de lokale omroepen een kwijnend bestaan leiden vanwege een gebrek aan vrijwilligers en financiën, komt in Epe een lokale radio van de grond. Voor het initiatief is aansluiting gezocht bij Radio Heerde. Een heel goed idee! Maar helaas hangen dergelijk lokale programma’s vaak van kneuterigheid aan elkaar en zijn de luisteraars op enkelen handen te tellen. Het wordt dan ook een hele uitdaging om het in Epe beter te doen.
Volgens goed Nederlands gebruik is de zender nog niet in de lucht of er is alweer een nieuwe commissie met andere ideeën. De zogenaamde commissie ‘Kranra’ - origineel: kranra staat voor krant-radio – wil een radio-offensief voor de gehele Noordoost Veluwe. En dat is nog niet eens voldoende. Er moeten op termijn ook televisie-uitzendingen komen. En dat als tegenhanger voor Omroep Gelderland. Tja, je kunt de lat niet hoog genoeg leggen…
Om het allemaal van de grond te krijgen, wordt gedacht aan samenwerking met een grote lokale krant. Nou komt daar maar één krant voor in aanmerking en dat is De Stentor. Een woordvoerder van krantenboer Wegener is uitermate vriendelijk over dit initiatief, maar vraagt zich voorzichtig toch wel af hoe serieus het is. Laat die vraag nou toch ook direct bij mij zijn opgekomen…
Ik vraag mij af of de leden van de Kranra wel enig idee hebben wat er allemaal bij het maken van radio en televisieprogramma’s komt kijken. Neem bijvoorbeeld de kosten voor het maken van kwalitatief goede radio en televisieprogramma’s. Een clubje vrijwilligers, gedreven door de beste bedoelingen, maken geen kwalitatief goede en vooral interessante uitzendingen. Voor het maken van serieuze programma’s komt veel meer kijken. En daar hangt een fors prijskaartje aan. In de tijd waarin de subsidies in Epe lijken te imploderen, is dat op zijn zachtst gezegd nogal ambitieus. Bovendien lijkt het mij sterk dat een professionele uitgever met een omroep bestaande uit vrijwilligers in zee wil gaan.
Maar wat ik eigenlijk helemaal niet snap is, waarom wordt in deze tijd van moderne technologie nog gekeken naar techniek uit de jaren dertig van de vorige eeuw. Kanra wil ‘groot’. Ze willen het liefst uitzenden binnen de drie gemeenten Hattem, Heerde en Epe. Als je dan echt groot wilt, moet je niet inzetten op etherverspreiding. Zet je uitzendingen op het Internet. Dan bereik je de hele wereld. Eén van de vaste bezoekers van geo.nl en ook van mijn weblog is bijvoorbeeld een oud-Epenaar, die nu in Brazilië woont. Via Internet houdt hij zich bijna dagelijks op de hoogte van het laatste Nederlandse en Eper nieuws en houdt hij een band met zijn voormalige woonplaats. Ik kan mij voorstellen dat hij ook naar de stream of podcast van de Eper omroep wil luisteren.
Het grote voordeel van de moderne media is dat de apparatuur waar je programma’s mee kunt maken in veel gevallen veel goedkoper is. Je hoeft geen dure zenders te hebben, bent niet afhankelijk van zendmachtigingen en de hele wereld ligt aan je voeten. En wellicht het belangrijkste voordeel: de uitzendingen kunnen vierentwintig uur per dag, zeven dagen in de week door iedereen met een Internetaansluiting worden beluisterd. Je hoeft als luisteraar niet meer op vaste tijden aan je toestel te hangen.
In een tijd waarin alles snel gaat en waarin mensen van hot naar her rennen om hun leven te organiseren, missen omroepen veel kijkers en luisteraars. Dat heeft men in Hilversum ondertussen al vrij goed in de gaten. Steeds meer programma’s zijn ook via het Internet te downloaden en dus op ieder willekeurig ander moment te bekijken en te beluisteren. Uitzending van het Journaal, Netwerk of 2 Vandaag gemist? De volgende dag kun je de uitzending per item terugkijken. Ideaal!
En voor de – overigens snel slinkende groep – mensen zonder breedband Internet kan een lokale zender uitkomst bieden. Over enkele jaren zal echter blijken dat er steeds minder luisteraars dit soort lokale uitzendingen uit de ether halen. Voor landelijke zenders blijft er zeker nog lange tijd plaats, maar juist de uitzendingen van lokale zenders zullen in mijn optiek van het Internet worden geplukt. Misschien is het daarom wel een goed idee om aansluiting te zoeken bij Geo.nl. Dat is toch het centrum van Epe op Internet.
Ik vraag me af of de heren van de Kranra daarover hebben nagedacht. De wensen van deze commissie komen op mij over als een goed bedoeld, maar zeer stoffig initiatief uit de krochten van de vorige eeuw. Als je lokale omroep serieus wilt opzetten, zul je in deze tijd een enorme zak geld mee moeten nemen en kun je niet om de nieuwe media heen.
Andere artikelen over de lokale omroep
- Radio 794
- Gekibbel bij Radio 794
© Harold Makaske 30 oktober 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
|