<?php
## Author christian.simon simon----|a-t|---swine.de
## Modified by Chris Hembrow
## March 2009
## Copy your Scheduleworld Addressbook to your roundcube webmail
## You need the PHP-Pear Module Contact_Vcard_Parse
define(SW_USER,"sw account"); #Your Scheduleworld account
define(SW_PASS,"sw password"); #Your password for Scheduleworld account
define(DB_USER,"roundcube"); #Your MySQL user for roundcube
define(DB_PASS,"password"); #Your MySQL password for roundcube
define(DB_BASE,"roundcube"); #Your MySQL database for roundcube
define(DB_HOST,"localhost"); #Your MySQL host for roundcube
define(CUBE_ID,"roundcube user id"); #The userid of your roundcube user
# FILTER by category, leave empty to select all. Ensure UPPERCASE for matches to work
$FILTER = array( "MISC", "FAMILY", "PERSONAL" );
function connectdb($db_host,$db_user,$db_pass,$datab=false)
{
iconv_set_encoding("input_encoding", "UTF-8");
iconv_set_encoding("internal_encoding", "UTF-8");
iconv_set_encoding("output_encoding", "UTF-8");
if (!$db = @mysql_connect($db_host,$db_user,$db_pass)){
return false;
}
else{
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET NAMES utf8");
setlocale(LC_ALL, 'de_DE.UTF-8');
if($datab AND !mysql_select_db($datab,$db)) return false;
else return true;
}
}
function getVcfSw($sw_user,$sw_pass){
$first_site = file("http://www.scheduleworld.com/tg/card/getContactsVCF.jsp");
foreach ($first_site as $first_line)
{
if(strstr($first_line,"action") and strstr($first_line,"login")){
$session = preg_replace("/.*action="(.*)" id=.*/","$1",$first_line);
}
}
$login_commands = "?continue=http%3A%2F%2Fwebview.ScheduleWorld.com%2Fmail%2F%3Fui%3Dhtml%26zy%3Dl&rm=false&j_username=".urlencode($sw_user)."&j_password=".urlencode($sw_pass)."&signin=Sign+in";
#echo "http://www.scheduleworld.com/tg/card/".trim($session).$login_commands;
$return = file_get_contents("http://www.scheduleworld.com/tg/card/".trim($session).$login_commands);
if(strstr($return,"VCARD"))
{
return $return;
}
else
{
return false;
}
}
if(!connectdb(DB_HOST,DB_USER,DB_PASS,DB_BASE))
{
die("MySQL connection failed");
}
else
{
$data_vcards = getVcfSw(SW_USER,SW_PASS);
if(!$data_vcards)
{
die("Failed getting VCARDS from Scheduleworld");
}
else
{
if(!require_once ("Contact_Vcard_Parse.php"))
{
die("Contact_Vcard_Parse.php not found. Please install the Pear Module");
}
else
{
$parse = new Contact_Vcard_Parse();
$cardinfo = $parse->fromText($data_vcards);
mysql_query("DELETE FROM `contacts` WHERE `user_id` = '".CUBE_ID."'");
$added = 0;
foreach($cardinfo as $card)
{
if ( array_key_exists("EMAIL", $card) ) {
$add = count( $FILTER ) == 0;
if ( !$add ) {
$cats = $card["CATEGORIES"]["0"]["value"]["0"];
foreach ( $cats as $cat ) {
if ( in_array( strtoupper( $cat ), $FILTER ) ) {
$add = true;
}
}
}
if ( $add ) {
# echo $card["N"]["0"]["value"]["0"]["0"].", ".$card["N"]["0"]["value"]["1"]["0"].": ".$card["EMAIL"]["0"]["value"]["0"]["0"] . "n";
$ret = false;
$ret = mysql_query("INSERT INTO contacts (contact_id, changed, del, name, email, firstname, surname, vcard, user_id) VALUES (NULL, '0000-00-00 00:00:00', '0', '".$card["N"]["0"]["value"]["0"]["0"].", ".$card["N"]["0"]["value"]["1"]["0"]."', '".$card["EMAIL"]["0"]["value"]["0"]["0"]."', '".$card["N"]["0"]["value"]["1"]["0"]."', '".$card["N"]["0"]["value"]["0"]["0"]."', '', '".CUBE_ID."')");
if ( $ret ) {
$added ++;
# echo "insertedn";
} else {
# echo "failed to insertn";
}
}
}
}
echo "finished! Added " . $added . " rows";
}
}
}
?>