CAPTCHA implementation to protecting comments from spam robots. Check plugin's settings under Options / SCaptcha menu. The handfont2.ttf was taken from Openfontlibrary.org. For more info, please read the readme.txt file from the installation package. Author: Silver Version: 0.2.1 Author URI: http://silver.balaton.to/ */ /* Copyright 2006 Silver (email : silver@balaton.to) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* ============================================================================= FUNCTIONS ============================================================================= */ /* ----------------------------------------------------------------------------- Adding admin menu ----------------------------------------------------------------------------- */ function s_captcha_adminmenu() { add_options_page("Silver's CAPTCHA", "SCaptcha", 10, __FILE__, 's_captcha_options'); } /* ----------------------------------------------------------------------------- Options page in admin menu ----------------------------------------------------------------------------- */ function s_captcha_options() { global $table_prefix, $wpdb; $s_table_data = $table_prefix . "s_captcha_data"; $s_table_conf = $table_prefix . "s_captcha_config"; if (isset($_POST["update"])) { $sql="UPDATE ".$s_table_conf." " . " SET cap_installed =1" . ", cap_use_grid =".$_POST['cap_use_grid'] . ", cap_use_background =0" . ", cap_use_random =1" . ", cap_ttf_path ='".$_POST['cap_ttf_path']."'" . ", cap_ttf_size =".$_POST['cap_ttf_size'] . ", cap_ttf_X =".$_POST['cap_ttf_X'] . ", cap_ttf_Y =".$_POST['cap_ttf_Y'] . ", cap_X_size =".$_POST['cap_X_size'] . ", cap_Y_size =".$_POST['cap_Y_size'] . ", cap_rotation =".$_POST['cap_rotation'] . ", cap_paper_color_R =".$_POST['cap_paper_color_R'] . ", cap_paper_color_G =".$_POST['cap_paper_color_G'] . ", cap_paper_color_B =".$_POST['cap_paper_color_B'] . ", cap_font_color_R =".$_POST['cap_font_color_R'] . ", cap_font_color_G =".$_POST['cap_font_color_G'] . ", cap_font_color_B =".$_POST['cap_font_color_B'] . ", cap_grid_color_R =".$_POST['cap_grid_color_R'] . ", cap_grid_color_G =".$_POST['cap_grid_color_G'] . ", cap_grid_color_B =".$_POST['cap_grid_color_B'] . ", cap_grid_spacing =".$_POST['cap_grid_spacing'] . ", cap_background_path =''".$_POST['cap_background_path'] . " limit 1"; $wpdb->query($sql); } $select = 'SELECT * FROM '.$s_table_conf.' LIMIT 1'; $row = $wpdb->get_row($select, ARRAY_A, 0); $cap_installed = $row['cap_installed']; $cap_use_grid = $row['cap_use_grid']; $cap_use_background = $row['cap_use_background']; $cap_use_random = $row['cap_use_random']; $cap_ttf_path = $row['cap_ttf_path']; $cap_ttf_size = $row['cap_ttf_size']; $cap_ttf_X = $row['cap_ttf_X']; $cap_ttf_Y = $row['cap_ttf_Y']; $cap_X_size = $row['cap_X_size']; $cap_Y_size = $row['cap_Y_size']; $cap_rotation = $row['cap_rotation']; $cap_paper_color_R = $row['cap_paper_color_R']; $cap_paper_color_G = $row['cap_paper_color_G']; $cap_paper_color_B = $row['cap_paper_color_B']; $cap_font_color_R = $row['cap_font_color_R']; $cap_font_color_G = $row['cap_font_color_G']; $cap_font_color_B = $row['cap_font_color_B']; $cap_grid_color_R = $row['cap_grid_color_R']; $cap_grid_color_G = $row['cap_grid_color_G']; $cap_grid_color_B = $row['cap_grid_color_B']; $cap_grid_spacing = $row['cap_grid_spacing']; $cap_background_path = $row['cap_background_path']; if ($cap_installed) $cap_installed_text = "YES"; else $cap_installed_text = "NO
(For first time installation, press the UPDATE OPTIONS button to show the captcha with plugin's defaults.)"; if ($cap_use_grid) $cap_use_grid_text = "YES"; else $cap_use_grid_text = "NO"; if ($cap_use_background) $cap_use_background_text = "YES"; else $cap_use_background_text = "NO"; if ($cap_use_random) $cap_use_random_text = "YES"; else $cap_use_random_text = "NO"; #$url = $wpdb->get_var("SELECT url FROM ".$blogringping_table." limit 1"); echo "
"; echo "
"; echo "

Silver's CAPTCHA:

"; echo "
"; echo ""; echo " "; echo ""; echo "
A random generated and a long example."; echo "
"; echo "
"; echo "Current settings"; echo "
    "; echo ""; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo "
    Installed:$cap_installed_text
    Image dimensions in pixels:".$cap_X_size."x".$cap_Y_size."
    Font path:$cap_ttf_path
    Font size in points:$cap_ttf_size
    Font's start position:X: $cap_ttf_X, Y: $cap_ttf_Y
    Text rotation:$cap_rotation degrees
    Show grid:$cap_use_grid_text
    Grid spacing in pixels:$cap_grid_spacing
    Image background color:Red: $cap_paper_color_R, Green: $cap_paper_color_G, Blue: $cap_paper_color_B      
    Text color:Red: $cap_font_color_R, Green: $cap_font_color_G, Blue: $cap_font_color_B      
    Grid color:Red: $cap_grid_color_R, Green: $cap_grid_color_G, Blue: $cap_grid_color_B      
    "; echo ""; echo "Edit CAPTCHA options"; echo "
      "; echo "
    "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo "
    Image dimensions in pixels:x
    Font path:
    Font size in points:
    Font's start position:X: , Y:
    Text rotation: degrees
    Show grid:
    Grid spacing in pixels:
    Image background color:Red:\n"; echo " "; echo ", Green: "; echo " "; echo ", Blue: \n"; echo " "; echo "
    Text color:Red:\n"; echo " "; echo ", Green: "; echo " "; echo ", Blue: \n"; echo " "; echo "
    Grid color:Red:\n"; echo " "; echo ", Green: "; echo " "; echo ", Blue: \n"; echo " "; echo "
    Update options:
    "; echo ""; echo ""; echo ""; echo ""; /* echo "
    "; echo "URL:

    "; echo ""; echo "

    "; $wpdb->flush(); */ } /* ----------------------------------------------------------------------------- Making random seed ----------------------------------------------------------------------------- */ function make_seed() { list($usec, $sec) = explode(' ', microtime()); return (float) $sec + ((float) $usec * 100000); } function s_get_fontpath() { global $_GET; $s_plugin_path = $_GET["plugin"]; $s_nix_path = str_replace("\\", "/", $s_plugin_path); $s_path = getcwd(); $s_path = str_replace("\\", "/", $s_path); $s_pos = strrpos($s_path, "wp-admin"); $s_path = substr($s_path, 0, $s_pos); $s_path.= "wp-content/plugins/"; $s_pos = strrpos($s_nix_path, "/"); $s_nix_path = substr($s_nix_path, 0, $s_pos); $s_path.= $s_nix_path; $s_lastfont=""; if ( $s_dirID = opendir($s_path) ) { while ( false !== ($s_file = readdir( $s_dirID )) ) { if ($s_file != "." && $s_file != "..") { #echo "$s_file\n"; if ( strtolower(substr($s_file, -4, 4)) == ".ttf" ) $s_lastfont=$s_file; } } closedir($s_dirID); } $s_path.="/".$s_lastfont; /* $h=fopen("c:/log.txt","w"); fwrite($h,"PATH: ".$s_path); fclose($h); */ return $s_path; } /* ----------------------------------------------------------------------------- This function will install the needed tables if they does not exists. If the data table exists, it will be empty. ----------------------------------------------------------------------------- */ function s_captcha_install() { global $table_prefix, $wpdb, $_GET; $s_table_data = $table_prefix . "s_captcha_data"; $s_table_conf = $table_prefix . "s_captcha_config"; $s_font_path = s_get_fontpath(); if($wpdb->get_var("show tables like '$s_table_data'") != $s_table_data) { require_once(ABSPATH . 'wp-admin/upgrade-functions.php'); $sql = 'CREATE TABLE '.$s_table_data.' (' . ' captcha_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, ' . ' captcha_str VARCHAR(32) NOT NULL,' . ' PRIMARY KEY (captcha_id),' . ' INDEX (captcha_str)' . ' )'; dbDelta($sql); } // if data table not exists else { $delete = 'DELETE FROM '.$s_table_data; $results = $wpdb->query( $delete ); } if($wpdb->get_var("show tables like '$s_table_conf'") != $s_table_conf) { require_once(ABSPATH . 'wp-admin/upgrade-functions.php'); $sql = 'CREATE TABLE '.$s_table_conf.' (' . ' cap_installed TINYINT(1) NOT NULL, ' . ' cap_use_grid TINYINT(1), ' . ' cap_use_background TINYINT(1), ' . ' cap_use_random TINYINT(1), ' . ' cap_ttf_path VARCHAR(250), ' . ' cap_ttf_size INT, ' . ' cap_ttf_X INT, ' . ' cap_ttf_Y INT, ' . ' cap_X_size INT, ' . ' cap_Y_size INT, ' . ' cap_rotation INT, ' . ' cap_paper_color_R INT, ' . ' cap_paper_color_G INT, ' . ' cap_paper_color_B INT, ' . ' cap_font_color_R INT, ' . ' cap_font_color_G INT, ' . ' cap_font_color_B INT, ' . ' cap_grid_color_R INT, ' . ' cap_grid_color_G INT, ' . ' cap_grid_color_B INT, ' . ' cap_grid_spacing INT, ' . ' cap_background_path VARCHAR(250), ' . ' PRIMARY KEY (cap_installed) ' . ' )'; dbDelta($sql); $insert = "insert into ".$s_table_conf." VALUES (0, 1, 0, 1, '".$s_font_path."', 15, 5, 35, 115, 40, 10, 200, 200, 200, 100, 100, 100, 150, 150, 150, 5, '')"; $results = $wpdb->query( $insert ); } // if config table not exists } /* ----------------------------------------------------------------------------- Cleaning data table when the plugin will be deactivated. ----------------------------------------------------------------------------- */ function s_captcha_deactivate() { global $table_prefix, $wpdb, $_GET; $s_table_data = $table_prefix . "s_captcha_data"; $delete = 'DELETE FROM '.$s_table_data; $results = $wpdb->query( $delete ); } /* ----------------------------------------------------------------------------- Error message in an image ----------------------------------------------------------------------------- */ function s_captcha_errimage($errtitle,$errmsg) { $IMG_X = 150; $IMG_Y = 30; $image = imagecreate($IMG_X,$IMG_Y); $paper = imagecolorallocate( $image, 222,0,0 ); $pen = imagecolorallocate( $image, 255, 255, 255 ); imagestring($image, 3, 5, 4, $errtitle, $pen); imagestring($image, 1, 5, 18, $errmsg, $pen); $corners[0]=2; $corners[1]=2; $corners[2]=$IMG_X-3; $corners[3]=2; $corners[4]=$IMG_X-3; $corners[5]=$IMG_Y-3; $corners[6]=2; $corners[7]=$IMG_Y-3; imagepolygon($image,$corners,4,$pen); header("Content-type: image/jpg"); imagejpeg($image); } /* ----------------------------------------------------------------------------- Creating the image ----------------------------------------------------------------------------- */ function s_captcha_showimage() { global $table_prefix, $wpdb, $_GET; $s_table_conf = $table_prefix . "s_captcha_config"; $s_table_data = $table_prefix . "s_captcha_data"; $is_installed = $wpdb->get_var("SELECT cap_installed FROM ".$s_table_conf." limit 1"); if ($is_installed) { $select = 'SELECT * FROM '.$s_table_conf.' LIMIT 1'; $row = $wpdb->get_row($select, ARRAY_A, 0); if (!file_exists($row['cap_ttf_path'])) { s_captcha_errimage("Font not foud","Set SCaptcha under Options!"); die(); } if ($row['cap_use_random']) { srand(make_seed()); $RandomWord=""; while ( strlen($RandomWord)!=6 ) { $ChrCode=0; $IsNumber = mt_rand(0,1); if ($IsNumber) $ChrCode = mt_rand(50,57); # All numbers without zero and one else $ChrCode = mt_rand(65,90); $RandomWord .= chr( $ChrCode ); } if (isset($_GET['demo'])) if ($_GET['demo']=="2") $RandomWord="WWWWWW"; $SecretWord=md5($RandomWord); } $image = imagecreate($row['cap_X_size'],$row['cap_Y_size']); $paper = imagecolorallocate( $image, $row['cap_paper_color_R'], $row['cap_paper_color_G'], $row['cap_paper_color_B'] ); $font = imagecolorallocate( $image, $row['cap_font_color_R'], $row['cap_font_color_G'], $row['cap_font_color_B'] ); $grid = imagecolorallocate( $image, $row['cap_grid_color_R'], $row['cap_grid_color_G'], $row['cap_grid_color_B'] ); if ($row['cap_use_grid']) { for($i=$row['cap_grid_spacing'];$i<$row['cap_Y_size'];$i+=$row['cap_grid_spacing']) { imageline ( $image, 0, $i, $row['cap_X_size']-1, $i, $grid ); } for($i=$row['cap_grid_spacing'];$i<$row['cap_X_size'];$i+=$row['cap_grid_spacing']) { imageline ( $image, $i, 0, $i, $row['cap_Y_size']-1, $grid ); } } imagettftext($image, $row['cap_ttf_size'], $row['cap_rotation'], $row['cap_ttf_X'], $row['cap_ttf_Y'], $font, $row['cap_ttf_path'], $RandomWord); if (!isset($_GET['demo'])) { $insert = 'insert into '.$s_table_data.' (captcha_str) values (\''.$SecretWord.'\')'; $results = $wpdb->query( $insert ); } header("Content-type: image/jpg"); imagejpeg($image); } else { s_captcha_errimage("Not installed","Set SCaptcha under Options!"); } } /* ----------------------------------------------------------------------------- Examinig user's answer ----------------------------------------------------------------------------- */ function s_captcha_comment_post($comment_ID) { global $table_prefix, $wpdb, $_GET, $_POST; $s_table_data = $table_prefix . "s_captcha_data"; $EnteredWord = strtoupper(trim($_POST["s_captcha"])); $EncodedWord = md5($EnteredWord); $post_ID=-1; $mytable=$table_prefix."silvers_captcha"; $select = "SELECT captcha_id FROM ".$s_table_data." WHERE captcha_str='".$EncodedWord."' LIMIT 1"; if (($captcha_id = $wpdb->get_var( $select )) == null ) { // reading comment's post_ID if the comment is approved and showing $select = "SELECT comment_approved FROM ".$table_prefix."comments WHERE comment_ID=".$comment_ID." LIMIT 1"; $comment_approved = $wpdb->get_var( $select ); $select = "SELECT comment_post_ID FROM ".$table_prefix."comments WHERE comment_ID=".$comment_ID." LIMIT 1"; $post_ID = $wpdb->get_var( $select ); if ( ( $post_ID == null ) || ( $comment_approved == null ) ) { $wpdb->bail("

    Error establishing a database connection

    ". "Comment ID: ".$comment_ID."
    ". "Comment approved: ".$comment_approved."
    ". "

    Silver's captcha plugin can not ". "read the approval of the comment.

    "); die(); } else { // updating post's count $select = "SELECT comment_count from ".$table_prefix."posts WHERE ID=".$post_ID; if (($comment_count = $wpdb->get_var( $select )) == null ) { $wpdb->bail("

    Error establishing a database connection

    ". "

    Silver's captcha plugin can not ". "update posts table. (Stage 1)

    "); die(); } else { $comment_count--; $update="UPDATE ".$table_prefix."posts SET comment_count=".$comment_count." WHERE ID=".$post_ID." LIMIT 1"; $result = $wpdb->query( $update ); if (!$result) { $wpdb->bail("

    Error establishing a database connection

    ". "

    Silver's captcha plugin can not ". "update posts table. (Stage 2)

    "); die(); } } } // deleting comment $delete="DELETE FROM ".$table_prefix."comments WHERE comment_ID=".$comment_ID; $result = $wpdb->query( $delete ); if (!$result) { $wpdb->bail("

    Error establishing a database connection

    ". "

    Silver's captcha plugin can not ". "delete from the database. (Stage 1)

    "); die(); } } else { $delete="DELETE FROM ".$s_table_data." where captcha_id=".$captcha_id; $result = $wpdb->query( $delete ); if (!$result) { $wpdb->bail("

    Error establishing a database connection

    ". "

    Silver's captcha plugin can not ". "delete from the database. (Stage 2)

    "); die(); } } } /* ============================================================================= Hanging our ACTIONS into hooks of WordPress ============================================================================= */ if (function_exists("add_action")) { // if this plugin was called from the WordPress add_action('activate_'.$_GET["plugin"],'s_captcha_install'); add_action('deactivate_'.$_GET["plugin"],'s_captcha_deactivate'); add_action('admin_menu', 's_captcha_adminmenu'); add_action('comment_post', 's_captcha_comment_post'); } else { // if this plugin was called as an image resource require_once("../../../wp-config.php"); require_once("../../../wp-includes/wp-db.php"); $wpdb=new wpdb(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST); s_captcha_showimage(); } ?> Brannstroms.se http://www.brannstroms.se The Brännström family website Sat, 28 Mar 2009 20:17:15 +0000 http://wordpress.org/?v=2.6.3 en WOW the months have flown by http://www.brannstroms.se/main/wow-the-months-have-flown-by/ http://www.brannstroms.se/main/wow-the-months-have-flown-by/#comments Sat, 28 Mar 2009 20:17:15 +0000 Kyllie http://www.brannstroms.se/?p=213 Ok so I have fallen off the wagon yet again and haven’t kept this blog updated… bad me!

    Where have the last few months gotten too, they have just flown by and I can’t believe that it’s almost April already.

    Well what’s been happening on this side of the world I hear you ask??? well maybe not… hehhheeh

    Maddie turned 6 in March and we had a great little party for her at the village hall, 7 girls plus Jonas the charmer running wild, eating cake and juice and singing karaoke for 2 hours. They had a ball. Stefan and I did a combined effort with her cake, he assembled it and we both decorated it… well I guess he did most of it then, when I put it like that.

    Here’s the end result a Hello Kitty cake.

    We also did a trip up to the Ice Hotel, it was around a 2 hour drive each way, it was an amazing place. I’ll upload the pics to the gallery, there’s a whole bunch of them.

    We’ve been taking the scooters out most weekends to a little spot about 3km from home, the kids get to slide down the hill on their bobs and we sit around and grill sausage and drink coffee and hot chocolate, spring in northern Sweden is an amazing time of the year. The weather is really warming up now and we have days of close to zero or just above or below but the nights can still be cold and just this week we had a couple of -20 nights with the coldest being -27 when we got up but by 10am it was only -7.

    Maddie and Jonas had a ski competition at daycare on Thursday so I have some great pics and video to load up of that as well.

    Well I almost have my Swedish drivers licence, what a pain in the ass it is to get. I actually passed the driving test on Thursday on my second attempt and I have the 3rd attempt at the theory in 2 weeks. Bloody nora, in Oz the kids save for their first car… in Sweden the kids save for their Swedish drivers licence and it’s certainly not cheap that’s for sure, upto right now it’s cost me close to 1000 Aussie bucks. You have to do risk training which is driving on ice and talking about driving risks that was done up in Gällivare a nice 100km from home. The theory is done in Luleå and I’ve done that twice and each trip is 200km each way… gee Louise, I hope I can be third time lucky for sure. I am going bonkers being stuck out here and relying on everyone else to drive me around… bonkers I tell ya!! So cross your fingers for me!!! pleaseeeeeeeee!!

    Well I’ll finish off her and get the new pics loaded. There’s certainly lots and lots to do.

    Hope you are all well and I’ll post again soon… or well… knowing my style I’ll post again in another 2 months.

    Ha det bra… See ya!

    ]]>
    http://www.brannstroms.se/main/wow-the-months-have-flown-by/feed/
    First post of the year! http://www.brannstroms.se/main/first-post-of-the-year/ http://www.brannstroms.se/main/first-post-of-the-year/#comments Fri, 30 Jan 2009 20:48:12 +0000 Kyllie http://www.brannstroms.se/?p=202 Oh my, where did January go, it’s almost the last of January and I this is our first entry… ooops!

    Yes Vanessa I am a slacko!!! hehehe

    Well I will do a months worth of updates in this post then.

    First up they found Peter’s body a few weeks ago, over 3 weeks after his scooter accident, finally the family can put him to rest. But sad reminders came running back last weekend with another scooter accident around 25 minutes drive from us, another tragic draining, it could have been worse and cost 3 men their lives but 2 of the men managed to get out of the water quickly, the 3rd wasn’t as lucky, they found his body the next morning. I pray that there are no more accidents this winter!!!

    We are all well and healthy right now… touch wood! Jonas and I had a cold a few weeks back but are feeling great again now.

    I had the theory for the Swedish drivers licence on the 20th, failed failed failed! I needed to get 52 questions right for a pass and I only managed 50! So then I had the drivers test last Monday… another big fat fail, at least I didn’t fail too badly and it was one thing that made me fail. I make left turns too far over in the lane, I should be pretty much hugging the centre line to make the turn but I am more in the middle of the lane, that’s what I get for 15 years of driving in Australia. Remember over here they drive on the other side of the road and you sit on the opposite side of the car too. Anyway perhaps if I’d have taken a lesson with a driving school they’d have picked it up and I could have done better, but there’s no driving school in Jokkmokk anymore and the closest one would mean a 100km trip each way for a 45 min lesson… oh well I’ll be taking the tests again in a month or two and I’ll try and squeeze a lesson in before it, otherwise I’ll try and wing it again!

    Well I wonder what happened to the cold weather! We’ve had a relatively warm winter it’s been lingering around -5 for a while now so it’s warm enough to spend a lot of time outside and we can go out for a ride on the scooter like we did last weekend.

    We headed out across the lake and had snacks beside a nice warm fire, the kids had a ball sliding down a little slopey hill.

    I have lots more pics but I’ll add them to the gallery over the weekend.

    The kids have been really loving skiing again this year and Jonas is pretty stoked that he’s getting the hang of it. He is even allowed to ski at daycare from Monday. He is just over the moon. He hated it when the older kids were allowed to take their skis but he couldn’t. He forgets that he’s only 3, usually the kids don’t ski at dagis till they are closer to 4! But there was no way he was going to wait.

    Well that’s about it for us for now. I’ll be back soon with another post and lots of new photos.

    Oh before I forget, this one is for you Mum… Maddie speaking to you on Skype earlier today!

    ]]>
    http://www.brannstroms.se/main/first-post-of-the-year/feed/
    Our Xmas http://www.brannstroms.se/main/our-xmas/ http://www.brannstroms.se/main/our-xmas/#comments Tue, 30 Dec 2008 23:25:37 +0000 Kyllie http://www.brannstroms.se/?p=191 Well the Swedish Santa paid us a visit on Xmas eve and along with help from the kids handed out all of our presents. The kids were really stoked to see him. Just like the previous 3 years, we watched from the window next door at Stefan’s parents place, as Santa wondered around outside in the snow trying to find us inside our house. He eventually realised we were next door and well… he came along and made the kids day.

    Stefan

    Farmor and Farfar (Grandma and Grandpa)

    The kids and Tomten

    The kids singing along to the fav songs on their new karaoke machine

    ]]>
    http://www.brannstroms.se/main/our-xmas/feed/
    An awful accident http://www.brannstroms.se/main/an-awful-accident/ http://www.brannstroms.se/main/an-awful-accident/#comments Tue, 23 Dec 2008 23:32:33 +0000 Kyllie http://www.brannstroms.se/?p=189 Stefan’s third cousin Peter has had an accident and is missing, presumed drowned. He was out on his snowmobile with some friends and ran into open water and ended up in the water, a friend also went in but appears to have made it out whereas Peter has yet to be found. The accident happened late on Saturday night and the SOS was sent out but there’s been no trace, the Police divers have now been diving for two days without luck. They aren’t able to dive for long due to the limited light we have up here during the day. It’s awful, right before Xmas, it’s so sad. The life of 39 year old man wiped out. There’s no chance of finding him alive, they are diving for his body now. It was -14 and snowing when the accident happened and the water temp would have been around 4 degrees. Please let us find him soon, this is truly heartbreaking right before Xmas.

    ]]>
    http://www.brannstroms.se/main/an-awful-accident/feed/
    Kevin Bloody Wilson Xmas cheer http://www.brannstroms.se/main/kevin-bloody-wilson-xmas-cheer/ http://www.brannstroms.se/main/kevin-bloody-wilson-xmas-cheer/#comments Tue, 23 Dec 2008 23:04:10 +0000 Kyllie http://www.brannstroms.se/?p=187 Well after singing the Aussie Jingle Bells song a few times, it got me thinking what real Aussie songs can I get Stefan to listen to tonight on Youtube (as if we aren’t homesick enough right now) so I gave a chuckle and said ‘hun have you heard Kevin Bloody Wilson?’ nope he said… ‘ok well pull him up on youtube and look for hey Santa Claus’… oh god how I love that song, it’s been around for so many years and I never cease to laugh at it when I hear it. Well Stef has just been initiated… I laughed so much more than him though… hmmm wonder if it’s anything to do with the little bit of Xmas merriment I have had to drink???!!! heheheheh

    Check out our pics after Xmas…

    Take care everyone and remember….
    IF YOU DRINK AND DRIVE… YOU’RE A BLOODY IDIOT!!!

    ]]>
    http://www.brannstroms.se/main/kevin-bloody-wilson-xmas-cheer/feed/
    Aussie Jingle Bells http://www.brannstroms.se/main/aussie-jingle-bells/ http://www.brannstroms.se/main/aussie-jingle-bells/#comments Tue, 23 Dec 2008 22:59:05 +0000 Kyllie http://www.brannstroms.se/?p=184 I just had to add this… I love it.
    Aussie Jingle Bells

    Dashing through the bush
    In a rusty Holden Ute
    Kicking up the dust
    Esky in the boot
    Kelpie by my side
    Singing Christmas songs
    It’s summer time and I am in
    My singlet, shorts & thongs
    CHORUS:
    OH, JINGLE BELLS, JINGLE BELLS
    JINGLE ALL THE WAY
    CHRISTMAS IN AUSTRALIA
    ON A SCORCHING SUMMER’S DAY
    JINGLE BELLS, JINGLE BELLS
    CHRISTMAS TIME IS BEAUT
    OH WHAT FUN IT IS TO RIDE
    IN A RUSTY HOLDEN UTE

    Engine’s getting hot
    Dodge the kangaroos
    Swaggy climbs aboard
    He is welcome too
    All the family is there
    Sitting by the pool
    Christmas day, the Aussie way
    By the barbecue!

    CHORUS

    Come the afternoon
    Grandpa has a doze
    The kids and uncle Bruce
    Are swimming in their clothes
    The time comes round to go
    We take a family snap
    Then pack the car and all shoot through
    Before the washing up

    CHORUS

    ]]>
    http://www.brannstroms.se/main/aussie-jingle-bells/feed/
    Well the fat man is on his way http://www.brannstroms.se/main/well-the-fat-man-is-on-his-way/ http://www.brannstroms.se/main/well-the-fat-man-is-on-his-way/#comments Tue, 23 Dec 2008 22:58:08 +0000 Kyllie http://www.brannstroms.se/?p=179 Santa is almost here. The Swedish tradition is that he arrives early evening on Xmas Eve and we all sit around and open our presents.

    We are super lucky as we get a special visit from Santa himself (Erik our brother in law has the honour again this year)… wooohooo. We head next door to the inlaws early arvo where we get ready to have the Tradtional Swedish Julbord which is a smorgasboard with fresh sliced salmon, smoked salmon, salmon marinated with dill, meatballs, salted ham, little Swedish sausages called Prinskorv, a few different dressed fish dishes, a traditional Xmas potato dish and salads, eggs, and all the trimmings. Followed by really evilly sweet desserts and cakes. Yeah we normally gain a few kg’s at Xmas time over here… hehehehe but I would kill for just a kg of decent kingies and some Thousand Island dressing… ahhhh prawns on Xmas day… ahhhhhh! Now where was I? Oh yeah now after we eat and head to the sitting room with dessert we look out the window and low and behold there’s Santa trudging through the snow looking in the windows at our house trying to find us… then… he realises that we must be next door with the kids grandparents, so he wades through the snow over to us and by this time the kids are going crazy calling out to him as we’ve been standing at the window watching him and trying to tell him where we are…the silly old fat man is a bit deaf though I think… hehehe. Anyway he comes in and the kids help him to hand out to pressies to everyone and then we have to say goodby to Tomten (Swedish for Santa) as he’s pretty busy, you know has to head down under to Australia to take Nanna and Poppy’s present to them… heheheh… now we just sit around and casually open our presents… hmmm nope… actually I’m like the kids and rip them open with great anticipation. The kids play with their presents for a while and then it’s an early night for them as they are usually absolutely tuckered out. So that’s how Xmas Eve works for us over here.

    There’s lots planned for tomorrow up until we have lunch. The kids have to help Erik build the pepparkakshus (gingerbread house) this thing is technical I tell you what. I’ll get some pics tomorrow. They baked the foundations tonight after dinner and they’ll construct and ice it tomorrow morning. The thing is built on a base with inner lights and all, Erik loves that sort of thing. Anyway once that’s all done they are off skiing in the forest for a while as long as it’s not too cold, right now it’s -21 so I’m not so sure a ski will happen tomorrow as it’s too cold, but for the kids sake I hope it warms up, it’s forecast to, but we’ll wait and see.

    The kids are super excited about Santa coming, I finished wrapping the last of the pressies tonight whilst the kids make the pepparkakshus. All done what a relief, I’ll take them and put them under the tree tomorrow when they are out.

    Speaking of tree, we put ours up tonight and the kids did the decorating themselves.
    Here it is.

    They did a great job.

    And we also put up their little stockings so that the Aussie Santa can leave them something (they don’t really do stockings in Sweden) and the Aussie Santa is also going to drop off the presents from Nanna and Poppy whilst he’s here.

    We came back inside after eating with the inlaws and Kerstin and Erik and Maddie was so disappointed to see that the stockings were still empty. I explained that they won’t be filled up until Santa arrives when they go to sleep tomorrow night… ‘ohhhhh1 she said….’I forgot that Mummy’… heheh… eager beaver she is… It’s really exciting at Xmas now the kids are getting a bit older and can understand what goes on, they are so thrilled about it all. I can’t wait till they see the presents they have been spoiled rotten with this year… yep… we … I mean I went overboard again this year… heheheeh but it’s worth it.

    I’m looking forward to hooking up the webcam when they get up on Xmas Day and they open the pressies from Nanna and Poppy so that they can watch them doing it. I know they kids will be so excited to do it.. and I think that Mum and Dallas will love it too, even if they can’t understand what the kids are saying… hahahhahaha.

    Well that’s all for now… I’d like to wish you all a very Merry Xmas and a fab New Year and for my Swedish friends that read our blogg, God Jul och Gott Nytt År..

    ]]>
    http://www.brannstroms.se/main/well-the-fat-man-is-on-his-way/feed/
    A pic of the house http://www.brannstroms.se/main/a-pic-of-the-house/ http://www.brannstroms.se/main/a-pic-of-the-house/#comments Tue, 23 Dec 2008 22:22:30 +0000 Kyllie http://www.brannstroms.se/?p=174 I took this pic a week ago, it shows the special Xmas lights the Swedes show off in their windows… I love taking pics of our house in winter, it makes it look like a little gingerbread house.

    ]]>
    http://www.brannstroms.se/main/a-pic-of-the-house/feed/
    Stefan’s new toy http://www.brannstroms.se/main/stefans-new-toy/ http://www.brannstroms.se/main/stefans-new-toy/#comments Sat, 13 Dec 2008 20:15:04 +0000 Kyllie http://www.brannstroms.se/?p=151 Well Stefan has finally got a new snow scooter, it’s like the arrival of his long lost son I swear. It’s a nice scooter, I did a lap through the yard in it and it certainly has a lot more oomph! He took the kids for a quick trip around here’s a few pics. Maddie giggled the whole way, she thought it was awesome. I think she’s going to be a rev head when she grows up… hehehehe

    ]]>
    http://www.brannstroms.se/main/stefans-new-toy/feed/
    Lucia http://www.brannstroms.se/main/lucia/ http://www.brannstroms.se/main/lucia/#comments Thu, 11 Dec 2008 20:26:52 +0000 Kyllie http://www.brannstroms.se/?p=159 The kids had their Lucia celebration at dagis. This is where they dress up in different clothes and sing songs. The girls are often dressed in a long white Lucia dress with a red band around the waist and with a crown of light candles worn on the head. There are other dresses for the girls being a brown pepparkaks dress which is a gingerbread dress, and then there’s the Tomte outfit which is a red dress. The boys are often dressed in a red and white Tomte outfit or a Pepparkaks - gingerbread outfit.

    Today they did a little concert at dagis, they walk out holding hands and then sing a few songs. Stefan and I were there along with Stefan’s parents. It’s a very tradtional time Lucia, and it’s an important lead up to Jul which is Xmas. Maddie actually sang a verse of a song, she stammered a little but it all worked out.

    Here’s a few pics.

    ]]>
    http://www.brannstroms.se/main/lucia/feed/