|
|
Business Network International Epe ontbijt: ik blijf in mijn bed liggen
Onlangs ontving ik een uitnodiging om aanwezig te zijn bij de oprichtingsvergadering van het Chapter “Het Edelhert” BNI Epe. De bedoeling van deze club ondernemers is om iedere week met elkaar te ontbijten om zo hun zaken uit te breiden.
Tijdens het ontbijt mag je als lid in een minuut je bedrijf toelichten. Hoewel ik niet begrijp waarom je iedere week met een club ondernemers zou ontbijten om daar je eigen bedrijf voor steeds zo´n beetje dezelfde groep mensen te presenteren, was mijn interesse gewekt om verder te kijken.
In de uitnodiging van deze BNI-chapter (lees: afdeling) Epe in oprichting staat te lezen: “Wereldwijd ontbijten er wekelijks zo´n 115.000 leden in meer dan 5200 actieve chapters. Het primaire doel is het genereren van zakelijke aanbevelingen. De gedachte ‘Geven Loont’ en de vaste structuur van de ochtend maken BNI uniek. Vorig jaar wisselenden BNI-leden 5,1 miljoen aanbevelingen uit, wat voor de leden leidde tot een omzet van meer dan 2,2 miljard. In Nederland zijn er ca. 50 chapters met ruim 2000 leden.” Dat zijn indrukwekkende getallen. Reden genoeg om eens verder te kijken naar deze organisatie.
BNI staat voor Business Network International. Alles op hun website wijst in de richting van een strak geleide Amerikaanse marketing machine. Je kunt er bijvoorbeeld allerlei materialen bestellen. Zo is er een BNI toolkit en zijn er de ‘praktische naslagwerken om nog beter te leren netwerken’ van de BNI oprichter en goeroe Dr. Ivan Misner te koop. En wat te denken van een display voor maar liefst 44 visitekaartjes? “De stille aanbeveler! Vul dit display met de kaartjes van uw medeleden en zet het in uw ontvangstruimte om aanbevelingen te genereren.” En wat ben je als professionele BNI-netwerker zonder de BNI USB Kaartjesscanner? Zo zijn er nog tal van andere onmisbare netwerk en marketingartikelen te koop bij deze organisatie.
Als ik op een site kom waar ik een beetje jeuk van krijg – en dat krijg ik van de religieus aandoende taal op de BNI site – dan ga ik als eerste op zoek naar algemene voorwaarden en andere reglementen. Die zijn aanwezig. Onderaan de Nederlandse pagina staat een link naar de Terms & Conditions. Ondanks dat die teksten uitsluitend in het Engels beschikbaar zijn, zijn ze toch uitermate verhelderend. Lees even mee.
De leden moeten een ethisch code volgen. De zes genoemde punten lijken mij niet zo´n probleem; al vraag ik me af of er geen strijd is tussen punt twee en punt zes. Je moet op basis van punt twee als lid eerlijk zijn tegenover leden en hun aanbevelingen, terwijl je volgens punt zes moet beloven een positieve en ondersteunende houding aan te nemen ten aanzien van je collega BNI-leden. Dat kan elkaar fors bijten als je weet dat een eitje tikkende tafelgenoot er een potje van heeft gemaakt bij een klant. Tot zover kan ik er echter nog wel mee leven.
Ik ga snel door naar de Algemene Voorwaarden. En dan wordt het ineens eng, of beter nog: sektarisch.
Op basis van artikel vijf mag je drie keer per half jaar afwezig zijn bij een ontbijtsessies. Als het vaker gebeurt, word je voorgedragen voor ontslag uit de afdeling. Het wordt nog erger. Artikel negen bepaalt dat alle nieuwe leden verplicht zijn een ‘Member Oriëntation training’ (wat dat ook mag zijn) te volgen. Pas als je die training hebt gehad mag je als spreker optreden. Als je niet binnen zestig dagen na de introductie binnen de chapter begint met je training dan gaat de Lidmaatschaps Commissie het hele erge met je doen (in het Engels: will be subject to having their classification opened by the Membership Committee). En BNI zit ook niet te wachten op ziek, zwak en misselijke leden. Artikel tien bepaalt dat alleen exceptionele medische redenen een excuus kunnen zijn voor het niet bijwonen van de bijeenkomsten. Maar… dat mag niet langer duren dan acht weken en dan ook nog maar uitsluitend als je aan je (financiële) verplichtingen hebt voldoen en vooraf gegeven toestemming van het Lidmaatschap Comité hebt gekregen. Je moet bovendien ook nog voor een vervanger zorgen. En denk maar niet dat je te laat mag en komen of vroegtijdig mag vertrekken bij de bijeenkomsten. Dat kan je een waarschuwing of zelfs voordracht tot uitzetting opleveren. De leden moeten bovendien een bepaald aantal bonafide verwijzingen en bezoekers meebrengen naar de chapter om lid te mogen blijven. Breng je blijkbaar te weinig nieuwe leden aan dan kun je ook vertrekken.
Wie het idee heeft dat we hier te maken hebben met een gezellig en informeel geroosterd-brood-met-marmelade-clubje heeft het totaal mis. In mijn optiek is dit een strak geregisseerde marketingmachine die op mij overkomt als een geldbinnenroei circus voor met name de eigen organisatie. Het lidmaatschap kost 700 euro per jaar. Om de verplichte cursussen, vervolg workshops en andere al dan niet verplichte bezigheidstherapie te mogen volgen, zal uiteraard de beurs nog verder getrokken moeten worden. En dan heb ik het nog niet eens gehad over het cryptische artikel in de reglementen over de multi-marketingleden. Multi-marketing is toch piramideverkoop? Dat zijn toch de Bernard Madoffs van deze wereld?
Het mag voor zich spreken dat ik dit ontbijtende Edelhert dus aan mij voorbij laat gaan. Natuurlijk zullen de deelnemende ondernemers zeggen dat het allemaal niet zo´n vaart loopt en dat het helemaal niet zo strak is, maar dat zeggen sekteleden ook.
Ik loop met een boog om organisaties met dergelijke voorwaarden heen. BNI doet mij sterk denken aan de cursussen van Avatar, Landmark en zelfs de Scientology. Het kan er bij mij niet in dat ondernemers, die toch zelf het heft in handen willen houden, zich laten vastbinden in een met ijzeren hand geleidde geldmachine. En wat te denken van slogans als "je hoeft niet ziek te zijn om beter te worden" of "uw business is mijn zaak"? De aanschaf van een Succes agenda is veel goedkoper en dan kun je iedere dag dit soort tegeltjeswijsheden lezen.
Dames en heren ondernemers van BNI Epe. Ik wens jullie smakelijk eten! Als jullie 8 december tijdens de eerste bijeenkomst enthousiast de netwerkvorkjes prikken, draai ik me nog eens om in mijn bed. Dat geeft me zonder twijfel een beter gevoel. Dan maar geen aanbevelingen en 'business opportunities'. In Amerika kan ook Dr. Ivan Misner rustig doorslapen. Een nieuwe chapter betekent voor hem een rinkelende kassa. En zo kan iedereen toch nog tevreden zijn over dit initiatief.
© Harold Makaske 7 december 2009
/*
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: 5. Losse gedachten
|