De achterkant van de toeristenindustrie

Mislukte zoektocht naar een verborgen wereld…

Ergens op het Binnenhof moet nog een stapeltje foto’s liggen van bergen afval en verwaarloosde straten in de Haagse Schilderswijk. Foto’s die ik maakte voor een Internetsite, maar die het web nooit haalden omdat beelden van Schiphol, de Rotterdamse haven en andere economische centra meer pasten bij het beeld dat mijn toenmalige werkgever logischerwijs wilde uitstralen.

Dagelijks leven
Op één of andere manier ben ik geïnteresseerd in de lelijke kant van het leven. Ook op reis – of beter: juist op reis – laat het harde gewone leven mij niet los. We vertoeven in één van de vele super de luxe hotels aan de rand van de Rode Zee. Vanuit onze kamer kunnen bijna letterlijk in het zwembad vallen. En we hoeven maar een hand op te steken om onze wensen te laten materialiseren door de talrijke Egyptenaren die voor ons klaarstaan. Een perfecte plek waar de sores van alledag ver weg lijkt. Na een dag vind ik het echter wel mooi geweest en ga op zoek naar het echte Egyptische leven.

Het resort lijkt ver buiten de bewoonde wereld te liggen. De – overwegend Russische – gasten worden met shuttlebusjes twee keer per dag vervoerd tussen de toeristenstraten in Naama bay. Het enige contact met de lokale bevolking bestaat uit het afdingen in de ontelbare souvenirwinkels. Bij aankomst viel mijn oog echter op de bouwplaatsen rondom ons hotel.

Naast ons hotel bouwt men nieuwe vakantieplannen voor buitenlandse toeristen. Waar in Egypte wordt gebouwd, wordt ook geleefd. Terwijl ik met mijn voeten in het zwembad zit te lezen, trekt die locatie als een magneet aan mij. De derde dag besluit ik daar te gaan fotograferen.

Hard werken
De hele dag lopen twee tegengestelde stromen met sjouwende bouwvakkers voor de poort van het hotel. Ze lopen tussen de bouwplaatsen en de leefblokken van de bouwvakkers.


De leefblokken van de bouwvakkers.

Het is mij volstrekt onduidelijk hoe de werktijden liggen. Vast staat wel dat er lang en hard wordt gewerkt vol in de bloedhete zon. Van ’s ochtends vroeg tot ’s avonds laat bouwt men om nieuwe onvergetelijke vakanties voor buitenlanders te realiseren.


Gesjouw met gereedschap.


Ik laat me eerst meevoeren met de stroom naar de bouwlocatie. Daar schiet ik buiten het hek een aantal foto’s van ladende en lossende werklieden.

Het lossen van bouwmaterialen.

Bij de poort word ik door de vriendelijke opzichter opgewacht en resoluut tegengehouden. Fotograferen op de bouwplaats is veel te gevaarlijk, want ‘er zitten nog hobbels in de weg.’ Ik besluit dat het weinig zin heeft om met hem te discussiëren over het gevaar van hobbels in de weg en volg zijn advies op om naar de bouwplaats bij de leefblokken aan de andere kant van het hotel te gaan. Ik sluit me aan in de stroom richting de leefblokken en probeer te socialiseren met de bouwvakkers om me heen. Dat gaat vanzelf; ze moeten erg lachen om die maffe toerist met zijn veel te grote camera.

In de leefgemeenschap
Zonder problemen loop ik met ze hun ‘dorp’ binnen. De bewoners vinden de aandacht prachtig. Enkelen leiden mij druk lachend en roepend rond. Voor mij reden om direct te beginnen met fotograferen, want mijn gevoel zegt dat het vroeg of laat over is met het feest. De bouwmaatschappij heeft zonder twijfel helemaal geen behoefte aan pottenkijkers die vastleggen hoe het personeel leeft. Dat kan mij echter niets schelen, want zolang de werknemers er zelf geen problemen mee hebben, wil ik hun leefomstandigheden in beeld brengen om de harde realiteit van hun bestaan te laten zien.


Een straatje tussen de woonblokken.


Waterhalen.

De leeflocatie bestaat uit negen woonblokken: in slagorde drie rijen met elk drie provisorisch gemetselde schuren met platte daken. Iedere schuur bevat drie deuren en drie kleine raampjes. Dat zijn de ‘woningen’ van de bouwvakkers. Achter iedere deur leven zes tot acht bouwvakkers. Hun eigendommen bestaan uit een matje om op te slapen en enkele persoonlijke zaken die in een klein kistje moeten passen. De sanitaire voorzieningen liggen collectief achter de barakken. Water staat in grote plastic containers buiten tussen de leefblokken. Binnen hangt alleen een lamp los uit het plafond. Zo leven zij ver weg van hun eigen gezin en familie. Ze werken zeven dagen in de week en mogen om de paar maanden een week tot tien dagen naar hun gezin.


Buiten de barakken hangen de mannen in groepjes op ‘straat’. Eten doen ze ‘buiten de deur’. Achter de bouwplaats lijkt een soort kantine te zijn waar – gelet op de rook - wordt gekookt. Ook zit een aantal mannen voor hun voordeur rond een pannetje, dat op een vuurtje staat te pruttelen.

Einde excursie
Ik loop wat rond en krijg helaas geen kans om ook nog binnen te fotograferen. Zodra ik een foto heb gemaakt van een groepje mannen voor een televisie met een schotel in de buitenlucht, is mijn excursie afgelopen.


Een strenge man in een bruine djalebba verbiedt mij verder te fotograferen en eist ‘the negatives’. Op een vriendelijke toon leg ik uit dat ik niet kom om problemen te veroorzaken en dat ik een vriend ben. Ondertussen neem ik het initiatief over door rustig pratend met de man richting de uitgang te wandelen. Mijn vriendelijke woorden maken weinig indruk: ze willen mijn fotorolletje. Ik kijk op het display welke van de twee kaart ik gebruik en laat ze enkele foto’s zien en formatteer demonstratief de achtergebleven kaart. Met een zeker ongeloof kijken ze naar mijn virtuele rituelen. Ik maak gebruik van de verbazing en discussie door de tweede kaart met de foto’s eruit te halen en in de zak op mijn broekspijp te laten glijden. Met een opzichtige klap sla ik het klepje dicht en formatteer nogmaals de flashcard.

De mannen hebben geen idee wat ik doe, waardoor ik ze niet kan overtuigen. Ondertussen zijn we aangekomen bij de uitgang van de gemeenschap, maar verder kom ik niet. Ik word op een bankje neergezet en moet daar wachten. Vele vingers ratelen over de toetsenborden van mobiele telefoons. Wie men wil bereiken blijft onduidelijk, want geen van de mensen krijgt contact. Onderling is men sterk verdeeld over de actie van de bruine jalebba-baas of wat zijn functie ook mag zijn. De bewoners wekken de indruk dat de man niet zo moeilijk moet doen. De bouwvakkers lijken hier geen schim te zijn van de mannen met de grote handen in Nederland. Ik weet dat ze mij met mijn buitenlandse paspoort, mijn accreditatie bij de buren, mijn voor Egyptische begrippen reusachtige één meter negenenzeventig en forse postuur uiteindelijk echt niet tegenhouden als ik besluit dat het mooi is geweest. Mijn gevoel zegt echter dat ik niets moet forceren en het circus beter kan meespelen, want ik wil niet de arrogante buitenlander uithangen. Na een minuut of tien keren mijn kansen.

Wel erin, maar niet eruit
Een bewaker van de bouwplaats van ons hotel naast de leefblokken heeft de heisa gezien en komt informeren wat er aan de hand is. Binnen enkele minuten komt de bruine jalebba-man zijn diepe verontschuldigen aanbieden en kan ik vertrekken. Lachend loopt de bewaker naast mij. Op mijn opmerking dat ik zonder problemen mee naar binnen kon lopen en dat de mannen zeer vriendelijke waren en het mooi vonden om op de foto te gaan, geeft hij een wijze les mee: ‘je kunt hier in Egypte vrij makkelijk overal binnenkomen, het grote probleem is echter om ook weer ongeschonden buiten te komen.’

Gemengde gevoelens
Met gemengde gevoelens loop ik terug naar mijn eigen wereld. Op deze planeet heeft blijkbaar iedereen zijn eigen plek. Er zijn belangen die er voor waken dat die niet gaan vermengen, dat leidt alleen maar tot misverstanden. Terwijl de arbeid bij de buren doorgaat, steek ik de kaart met foto’s terug in mijn toestel ter waarde van zo’n twintig jaarsalarissen van die bouwvakkers. Ik bekijk de ‘gewiste’ foto’s en realiseer me geld en welvaart corrumperen. Het is oneerlijk verdeeld in de wereld. Met de dubbele gevoelens kom ik terug in het resort.


Onze wereld.

Enerzijds weet ik heel goed dat ons geld de lokale bevolking aan het werk houdt en ook voor een zekere welvaart zorgt, hoewel dat vooral bij de top in deze landen terechtkomt. Anderzijds geneer ik mij dan ook voor het gemak waarmee wij de wereld over reizen en de lange dagen die het personeel in de toeristenindustrie moeten draaien om ons van de zoveelste verse mangojuice te voorzien. Maar ja… dat is all inclusive.

© Harold Makaske 9 november 2006 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: 3. Reportages