aboutsummaryrefslogtreecommitdiffstats
path: root/doc/example_plugin.c
blob: a33907a8be2de19b44d2903fa7aff0eb2037cfe0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* 
 * This is the most simple possible BitlBee plugin. To use, compile it as 
 * a shared library and place it in the plugin directory: 
 *
 * gcc -o example.so -shared example.c `pkg-config --cflags bitlbee`
 * cp example.so /usr/local/lib/bitlbee
 */
#include <stdio.h>
#include <bitlbee.h>

void init_plugin(void)
{
	printf("I am a BitlBee plugin!\n");
}
und-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
#!/usr/bin/perl -w

# import-categories:
# Initial choice of categories for councils. Most likely wrong.
#
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: matthew@mysociety.org. WWW: http://www.mysociety.org
#
# $Id: import-categories,v 1.3 2007-08-02 11:44:59 matthew Exp $

use strict;
require 5.8.0;

# Horrible boilerplate to set up appropriate library paths.
use FindBin;
use lib "$FindBin::Bin/../perllib";
use lib "$FindBin::Bin/../commonlib/perllib";

use mySociety::Config;
use mySociety::DBHandle qw(dbh select_all);
use mySociety::MaPit;
use mySociety::VotingArea;

BEGIN {
    mySociety::Config::set_file("$FindBin::Bin/../conf/general");
    mySociety::DBHandle::configure(
        Name => mySociety::Config::get('FMS_DB_NAME'),
        User => mySociety::Config::get('FMS_DB_USER'),
        Password => mySociety::Config::get('FMS_DB_PASS'),
        Host => mySociety::Config::get('FMS_DB_HOST', undef),
        Port => mySociety::Config::get('FMS_DB_PORT', undef)
    );
}

my @district_cats = (
    'Abandoned vehicles', 'Car parking', 'Dog fouling', 'Flyposting', 'Flytipping',
    'Graffiti', 'Parks/landscapes', 'Public toilets', 'Rubbish (refuse and recycling)',
    'Street nameplates', 'Street cleaning', 'Trees'
);
my @county_cats = (
    'Bus stops', 'Pavements/footpaths', 'Potholes', 'Roads/highways',
    'Road traffic signs', 'Street lighting', 'Traffic lights'
);

my @councils;
foreach my $type (@$mySociety::VotingArea::council_parent_types) {
    my $areas = mySociety::MaPit::get_areas_by_type($type);
    push @councils, @$areas;
}
my $councils = mySociety::MaPit::get_voting_areas_info(\@councils);
foreach my $id (keys %$councils) {
    my $type = $councils->{$id}->{type};
    my ($email,$confirmed) = dbh()->selectrow_array(
        "SELECT email,confirmed FROM contacts WHERE deleted='f'
            and area_id=? AND category='Other'", {}, $id);
    next unless $email;
    if ($type eq 'DIS') {
        add_categories($id, $email, $confirmed, @district_cats);
    } elsif ($type eq 'CTY') {
        add_categories($id, $email, $confirmed, @county_cats);
    } else {
        add_categories($id, $email, $confirmed, @district_cats, @county_cats);
    }
}
dbh()->commit();

sub add_categories {
    my ($id, $email, $confirmed, @cats) = @_;
    foreach (@cats) {
        dbh()->do("insert into contacts
            (area_id, category, email, editor, whenedited, note, confirmed, deleted)
            values
            (?, ?, ?, 'import', ms_current_timestamp(), 'Initial copy', ?, 'f')", {},
            $id, $_, $email, ($confirmed ? 1 : 0)
        );
    }
}