* * -------------------------------------------- * * 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. * \**************************************************************************/ /* $Id$ */ // I don't think this is needed anymore // Perform acl check, set $rights if(!isset($owner)) { $owner = 0; } $grants = $phpgw->acl->get_grants('addressbook'); if(!isset($owner) || !$owner) { $owner = $phpgw_info['user']['account_id']; $rights = PHPGW_ACL_READ + PHPGW_ACL_ADD + PHPGW_ACL_EDIT + PHPGW_ACL_DELETE + 16; } else { if($grants[$owner]) { $rights = $grants[$owner]; if (!($rights & PHPGW_ACL_READ)) { $owner = $phpgw_info['user']['account_id']; $rights = PHPGW_ACL_READ + PHPGW_ACL_ADD + PHPGW_ACL_EDIT + PHPGW_ACL_DELETE + 16; } } } function read_custom_fields($start='',$limit='',$query='',$sort='ASC') { global $phpgw,$phpgw_info; $phpgw->preferences->read_repository($phpgw_info['user']['account_id']); $i=0;$j=0; while (list($col,$descr) = @each($phpgw_info["user"]["preferences"]["addressbook"])) { if ( substr($col,0,6) == 'extra_' ) { $fields[$j]['name'] = ereg_replace('extra_','',$col); $fields[$j]['name'] = ereg_replace(' ','_',$fields[$j]['name']); $fields[$j]['id'] = $i; if ($query && ($fields[$j]['name'] != $query)) { unset($fields[$j]['name']); unset($fields[$j]['id']); } else { //echo "
".$j.": '".$fields[$j]['name']."'"; $j++; } } $i++; } return $fields; } function save_custom_field($old='',$new='') { global $phpgw,$phpgw_info; $phpgw->preferences->read_repository($phpgw_info['user']['account_id']); if ($old) { $phpgw->preferences->delete("addressbook","extra_".$old); } if($new) { $phpgw->preferences->add("addressbook","extra_".$new); } $phpgw->preferences->save_repository(1); } // Return a select form element with the categories option dialog in it function cat_option($cat_id='',$notall=False,$java=True) { global $phpgw_info; if ($java) { $jselect = ' onChange="this.form.submit();"'; } // Setup all and none first $cats_link = "\n" .''."\n"; return $cats_link; } ### SET THE FONT TO DEFAULT IF IT DOESNT EXISTS ### function set_font() { if($phpgw_info["user"]["preferences"]["notes"]["notes_font"] == "") { $font = "Arial"; return $font; } else { $font = $phpgw_info["user"]["preferences"]["notes"]["notes_font"]; return $font; } } ### SET FONT SIZE #### function set_font_size() { if($phpgw_info["user"]["preferences"]["notes"]["notes_font_size"] == "") { $font_size = "3"; return $font_size; } else { $font_size = $phpgw_info["user"]["preferences"]["notes"]["notes_font_size"]; return $font_size; } } // this cleans up the fieldnames for display function display_name($column) { $abc = array( 'fn' => 'full name', 'sound' => 'Sound', 'org_name' => 'company name', 'org_unit' => 'department', 'title' => 'title', 'n_prefix' => 'prefix', 'n_given' => 'first name', 'n_middle' => 'middle name', 'n_family' => 'last name', 'n_suffix' => 'suffix', 'label' => 'label', 'adr_one_street' => 'business street', 'adr_one_locality' => 'business city', 'adr_one_region' => 'business state', 'adr_one_postalcode' => 'business zip code', 'adr_one_countryname' => 'business country', 'adr_one_type' => 'business address type', 'adr_two_street' => 'home street', 'adr_two_locality' => 'home city', 'adr_two_region' => 'home state', 'adr_two_postalcode' => 'home zip code', 'adr_two_countryname' => 'home country', 'adr_two_type' => 'home address type', 'tz' => 'time zone', 'geo' => 'geo', 'tel_work' => 'business phone', 'tel_home' => 'home phone', 'tel_voice' => 'voice phone', 'tel_msg' => 'message phone', 'tel_fax' => 'fax', 'tel_pager' => 'pager', 'tel_cell' => 'mobile phone', 'tel_bbs' => 'bbs phone', 'tel_modem' => 'modem phone', 'tel_isdn' => 'isdn phone', 'tel_car' => 'car phone', 'tel_video' => 'video phone', 'tel_prefer' => 'preferred phone', 'email' => 'business email', 'email_type' => 'business email type', 'email_home' => 'home email', 'email_home_type' => 'home email type', 'address2' => 'address line 2', 'address3' => 'address line 3', 'ophone' => 'Other Phone', 'bday' => 'birthday', 'url' => 'url', 'pubkey' => 'public key', 'note' => 'notes' ); if ($abc[$column]) { return lang($abc[$column]); } else { return; } } function addressbook_strip_html($dirty=array()) { global $phpgw; for($i=0;$istrip_html($dirty[$i][$name]); } } return $cleaned; } function addressbook_read_entries($start,$offset,$qcols,$query,$qfilter,$sort,$order,$userid="") { global $this,$rights; $readrights = $rights & PHPGW_ACL_READ; $entries = $this->read($start,$offset,$qcols,$query,$qfilter,$sort,$order,$readrights); $cleaned = addressbook_strip_html($entries); return $cleaned; } function addressbook_read_entry($id,$fields,$userid="") { global $this,$rights; if ($rights & PHPGW_ACL_READ) { $entry = $this->read_single_entry($id,$fields); $cleaned = addressbook_strip_html($entry); return $cleaned; } else { $rtrn = array("No access" => "No access"); return $rtrn; } } function addressbook_read_last_entry($fields) { global $this,$rights; if ($rights & PHPGW_ACL_READ) { $entry = $this->read_last_entry($fields); $cleaned = addressbook_strip_html($entry); return $cleaned; } else { $rtrn = array("No access" => "No access"); return $rtrn; } } function addressbook_add_entry($userid,$fields,$access='',$cat_id='',$tid='n') { global $this,$rights; if ($rights & PHPGW_ACL_ADD) { $this->add($userid,$fields,$access,$cat_id,$tid); } return; } function addressbook_get_lastid() { global $this; $entry = $this->read_last_entry(); $ab_id = $entry[0]["id"]; return $ab_id; } function addressbook_update_entry($id,$userid,$fields,$access,$cat_id) { global $this,$rights; if ($rights & PHPGW_ACL_EDIT) { $this->update($id,$userid,$fields,$access,$cat_id); } return; } // Folowing used for add/edit function addressbook_form($format,$action,$title="",$fields="",$customfields="",$cat_id="") { global $phpgw, $phpgw_info,$referer; $t = new Template($phpgw->common->get_tpl_dir("addressbook")); $t->set_file(array( "form" => "form.tpl")); $email = $fields["email"]; $emailtype = $fields["email_type"]; $hemail = $fields["email_home"]; $hemailtype = $fields["email_home_type"]; $firstname = $fields["n_given"]; $middle = $fields["n_middle"]; $prefix = $fields["n_prefix"]; $suffix = $fields["n_suffix"]; $lastname = $fields["n_family"]; $title = $fields["title"]; $wphone = $fields["tel_work"]; $hphone = $fields["tel_home"]; $fax = $fields["tel_fax"]; $pager = $fields["tel_pager"]; $mphone = $fields["tel_cell"]; $ophone = $fields["ophone"]; $msgphone = $fields["tel_msg"]; $isdnphone = $fields["tel_isdn"]; $carphone = $fields["tel_car"]; $vidphone = $fields["tel_video"]; $preferred = $fields["tel_prefer"]; $bstreet = $fields["adr_one_street"]; $address2 = $fields["address2"]; $address3 = $fields["address3"]; $bcity = $fields["adr_one_locality"]; $bstate = $fields["adr_one_region"]; $bzip = $fields["adr_one_postalcode"]; $bcountry = $fields["adr_one_countryname"]; $one_dom = $fields["one_dom"]; $one_intl = $fields["one_intl"]; $one_parcel = $fields["one_parcel"]; $one_postal = $fields["one_postal"]; $hstreet = $fields["adr_two_street"]; $hcity = $fields["adr_two_locality"]; $hstate = $fields["adr_two_region"]; $hzip = $fields["adr_two_postalcode"]; $hcountry = $fields["adr_two_countryname"]; $btype = $fields["adr_two_type"]; $two_dom = $fields["two_dom"]; $two_intl = $fields["two_intl"]; $two_parcel = $fields["two_parcel"]; $two_postal = $fields["two_postal"]; $timezone = $fields["tz"]; $bday = $fields["bday"]; $notes = stripslashes($fields["note"]); $label = stripslashes($fields["label"]); $company = $fields["org_name"]; $department = $fields["org_unit"]; $url = $fields["url"]; $pubkey = $fields["pubkey"]; $access = $fields["access"]; if(!$cat_id) { $cat_id = $fields["cat_id"]; } $cats_link = cat_option($cat_id,True); if ($access == 'private') { $access_check = ' checked'; } else { $access_check = ''; } if ($customfields) { while(list($name,$value) = each($customfields)) { $custom .= ' '.$value.': '; } } $this = CreateObject("phpgwapi.contacts"); if ($format != "view") { // Preferred phone number radio buttons $pref[0] = ""; $pref[1] = "(".lang('pref').")"; while (list($name,$val) = each($this->tel_types)) { $str[$name] = "\n".' set_var("pref_".$name,$str[$name]); } if (strlen($bday) > 2) { list( $month, $day, $year ) = split( '/', $bday ); $temp_month[$month] = "SELECTED"; $bday_month = ""; $bday_day = ''; $bday_year = ''; } else { $bday_month = ""; $bday_day = ''; $bday_year = ''; } $time_zone = ""; reset($this->email_types); $hemail_type = '"; reset($this->adr_types); while (list($type,$val) = each($this->adr_types)) { $badrtype .= "\n".'adr_types); while (list($type,$val) = each($this->adr_types)) { $hadrtype .= "\n".''; $label = ''; $pubkey = ''; } else { $notes = "
"; if ($bday == "//") { $bday = ""; } } if ($action) { echo '
'; } if (!ereg("^http://",$url)) { $url = "http://". $url; } $birthday = $phpgw->common->dateformatorder($bday_year,$bday_month,$bday_day) . '(e.g. 1969)'; if ($format == 'edit') { $create .= '' . lang("Created by") . ':' . '' . $phpgw->common->grab_owner_name($fields["owner"]); } else { $create .= ''; } $t->set_var("lang_home",lang("Home")); $t->set_var("lang_business",lang("Business")); $t->set_var("lang_personal",lang("Personal")); $t->set_var("lang_lastname",lang("Last Name")); $t->set_var("lastname",$lastname); $t->set_var("lang_firstname",lang("First Name")); $t->set_var("firstname",$firstname); $t->set_var("lang_middle",lang("Middle Name")); $t->set_var("middle",$middle); $t->set_var("lang_prefix",lang("Prefix")); $t->set_var("prefix",$prefix); $t->set_var("lang_suffix",lang("Suffix")); $t->set_var("suffix",$suffix); $t->set_var("lang_birthday",lang("Birthday")); $t->set_var("birthday",$birthday); $t->set_var("lang_company",lang("Company Name")); $t->set_var("company",$company); $t->set_var("lang_department",lang("Department")); $t->set_var("department",$department); $t->set_var("lang_title",lang("Title")); $t->set_var("title",$title); $t->set_var("lang_email",lang("Business Email")); $t->set_var("email",$email); $t->set_var("lang_email_type",lang("Business EMail Type")); $t->set_var("email_type",$email_type); $t->set_var("lang_url",lang("URL")); $t->set_var("url",$url); $t->set_var("lang_timezone",lang("time zone offset")); $t->set_var("timezone",$time_zone); $t->set_var("lang_fax",lang("Business Fax")); $t->set_var("fax",$fax); $t->set_var("lang_wphone",lang("Business Phone")); $t->set_var("wphone",$wphone); $t->set_var("lang_pager",lang("Pager")); $t->set_var("pager",$pager); $t->set_var("lang_mphone",lang("Cell Phone")); $t->set_var("mphone",$mphone); $t->set_var("lang_msgphone",lang("Message Phone")); $t->set_var("msgphone",$msgphone); $t->set_var("lang_isdnphone",lang("ISDN Phone")); $t->set_var("isdnphone",$isdnphone); $t->set_var("lang_carphone",lang("Car Phone")); $t->set_var("carphone",$carphone); $t->set_var("lang_vidphone",lang("Video Phone")); $t->set_var("vidphone",$vidphone); $t->set_var("lang_ophone",lang("Other Number")); $t->set_var("ophone",$ophone); $t->set_var("lang_bstreet",lang("Business Street")); $t->set_var("bstreet",$bstreet); $t->set_var("lang_address2",lang("Address Line 2")); $t->set_var("address2",$address2); $t->set_var("lang_address3",lang("Address Line 3")); $t->set_var("address3",$address3); $t->set_var("lang_bcity",lang("Business City")); $t->set_var("bcity",$bcity); $t->set_var("lang_bstate",lang("Business State")); $t->set_var("bstate",$bstate); $t->set_var("lang_bzip",lang("Business Zip Code")); $t->set_var("bzip",$bzip); $t->set_var("lang_bcountry",lang("Business Country")); $t->set_var("bcountry",$bcountry); $t->set_var("lang_badrtype",lang("Address Type")); $t->set_var("badrtype",$badrtype); $t->set_var("lang_hphone",lang("Home Phone")); $t->set_var("hphone",$hphone); $t->set_var("lang_hemail",lang("Home Email")); $t->set_var("hemail",$hemail); $t->set_var("lang_hemail_type",lang("Home EMail Type")); $t->set_var("hemail_type",$hemail_type); $t->set_var("lang_hstreet",lang("Home Street")); $t->set_var("hstreet",$hstreet); $t->set_var("lang_hcity",lang("Home City")); $t->set_var("hcity",$hcity); $t->set_var("lang_hstate",lang("Home State")); $t->set_var("hstate",$hstate); $t->set_var("lang_hzip",lang("Home Zip Code")); $t->set_var("hzip",$hzip); $t->set_var("lang_hcountry",lang("Home Country")); $t->set_var("hcountry",$hcountry); $t->set_var("lang_hadrtype",lang("Address Type")); $t->set_var("hadrtype",$hadrtype); $t->set_var("create",$create); $t->set_var("lang_notes",lang("notes")); $t->set_var("notes",$notes); $t->set_var("lang_label",lang("label")); $t->set_var("label",$label); $t->set_var("lang_pubkey",lang("Public Key")); $t->set_var("pubkey",$pubkey); $t->set_var("access_check",$access_check); $t->set_var('lang_private',lang('Private')); $t->set_var('lang_cats',lang('Category')); $t->set_var('cats_link',$cats_link); if ($customfields) { $t->set_var('lang_custom',lang('Custom Fields').':'); $t->set_var("custom",$custom); } else { $t->set_var("lang_custom",''); $t->set_var("custom",''); } $t->parse("out","form"); $t->pparse("out","form"); } //end form function function parsevcard($filename,$access='') { global $phpgw; global $phpgw_info; $vcard = fopen($filename, "r"); // Make sure we have a file to read. if (!$vcard) { fclose($vcard); return FALSE; } // Keep running through this to support vcards // with multiple entries. while (!feof($vcard)) { if(!empty($varray)) unset($varray); // Make sure our file is a vcard. // I should deal with empty line at the // begining of the file. Those will fail here. $vline = fgets($vcard,20); $vline = strtolower($vline); if(strcmp("begin:vcard", substr($vline, 0, strlen("begin:vcard")) ) != 0) { fclose($vcard); return FALSE; } // Write the vcard into an array. // You can have multiple vcards in one file. // I only deal with halve of that. :) // It will only return values from the 1st vcard. $varray[0] = "begin"; $varray[1] = "vcard"; $i=2; while(!feof($vcard) && strcmp("end:vcard", strtolower(substr($vline, 0, strlen("end:vcard"))) ) !=0 ) { $vline = fgets($vcard,4096); // Check for folded lines and escaped colons '\:' $la = explode(":", $vline); if (count($la) > 1) { $varray[$i] = strtolower($la[0]); $i++; for($j=1;$j<=count($la);$j++) { $varray[$i] .= $la[$j]; } $i++; } else { // This is the continuation of a folded line. $varray[$i-1] .= $la[0]; } } // Add this entry to the addressbook before moving on to the next one. fillab($varray); } // while(!feof($vcard)) fclose($vcard); return TRUE; } function fillab($varray,$access='') { global $phpgw; global $phpgw_info; $i=0; // while($i < count($varray)) { // echo '
'.$varray[$i].' %% '.$varray[$i+1]; // $i++;$i++; // } // exit; // incremented by 2 while($i < count($varray)) { $k = explode(";",$varray[$i]); // Key $v = explode(";",$varray[$i+1]); // Values for($h=0;$hkh="'.$k[$h].'",v0="'.$v[0].'",v1="'.$v[1].'",v2="'.$v[2].'",v3="'.$v[3].'",v4="'.$v[4].'",v5="'.$v[5].'",v6="'.$v[6].'",v7="'.$v[7].'"'; switch($k[$h]) { case "fn": $fn = $v[0]; break; case "n": $lastname = $v[0]; $firstname = $v[1]; break; case "bday": $bday = $v[0]; break; case "url": $url = $v[0]; // Fix the result of exploding on ':' above if (substr($url,0,5) == 'http/') { $url = ereg_replace('http//','http://',$url); } elseif (substr($url,0,6) == 'https/') { $url = ereg_replace('https//','https://',$url); } elseif (substr($url,0,7) != 'http://') { $url = 'http://' . $url; } break; case "label": $label = $v[0]; break; case "adr": // This one is real ugly. Still! :( if(!$street) { $street = $v[2]; $address2 = $v[1] . " " . $v[0]; $city = $v[3]; $state = $v[4]; $zip = $v[5]; $country = $v[6]; if (strstr($k[$h+1],"intl")) { $adronetype .= "INTL;"; } if (strstr($k[$h+1],"dom")) { $adronetype .= "DOM;"; } } else { $hstreet = $v[2]; $hcity = $v[3]; $hstate = $v[4]; $hzip = $v[5]; $hcountry = $v[6]; if (strstr($k[$h+1],"intl")) { $adrtwotype .= "INTL;"; } if (strstr($k[$h+1],"dom")) { $adrtwotype .= "DOM;"; } } break; case "tel": switch ($k[$h+1]) { case "work": $wphone = $v[0]; break; case "home": $hphone = $v[0]; break; case "cell": $mphone = $v[0]; break; case "pager": $pager = $v[0]; break; case "fax": $fax = $v[0]; break; case "msg": $msgphone = $v[0]; break; case "bbs": $bbsphone = $v[0]; break; case "modem": $modem = $v[0]; break; case "car": $carphone = $v[0]; break; case "isdn": $isdn = $v[0]; break; case "video": $vidphone = $v[0]; break; case "pref": switch ($k[$h+2]) { case "work": $tel_prefer .= "work;"; $wphone = $v[0]; break; case "home": $tel_prefer .= "home;"; $hphone = $v[0]; break; case "cell": $tel_prefer .= "cell;"; $mphone = $v[0]; break; case "pager": $tel_prefer .= "pager;"; $pager = $v[0]; break; case "fax": $tel_prefer .= "fax;"; $fax = $v[0]; break; case "msg": $tel_prefer .= "msg;"; $msgphone = $v[0]; break; case "bbs": $tel_prefer .= "bbs;"; $bbsphone = $v[0]; break; case "modem": $tel_prefer .= "modem;"; $modem = $v[0]; break; case "car": $tel_prefer .= "car;"; $carphone = $v[0]; break; case "isdn": $tel_prefer .= "isdn;"; $isdn = $v[0]; break; case "video": $tel_prefer .= "video;"; $vidphone = $v[0]; break; } default: $whphone = $v[0]; break; } break; case "email": if (empty($email)) { $email = $v[0]; } else { $hemail = $v[0]; } switch ($k[$h+1]) { case "compuserve": if (!$adronetype) { $emailtype="CompuServe"; } else { $hemailtype="CompuServe"; } break; case "aol": if (!$adronetype) { $emailtype="AOL"; } else { $hemailtype="AOL"; } break; case "prodigy": if (!$adronetype) { $emailtype="Prodigy"; } else { $hemailtype="Prodigy"; } break; case "eworld": if (!$adronetype) { $emailtype="eWorld"; } else { $hemailtype="eWorld"; } break; case "applelink": if (!$adronetype) { $emailtype="AppleLink"; } else { $hemailtype="AppleLink"; } break; case "appletalk": if (!$adronetype) { $emailtype="AppleTalk"; } else { $hemailtype="AppleTalk"; } break; case "powershare": if (!$adronetype) { $emailtype="PowerShare"; } else { $hemailtype="PowerShare"; } break; case "ibmmail": if (!$adronetype) { $emailtype="IBMMail"; } else { $hemailtype="IBMMail"; } break; case "attmail": if (!$adronetype) { $emailtype="ATTMail"; } else { $hemailtype="ATTMail"; } break; case "mcimail": if (!$adronetype) { $emailtype="MCIMail"; } else { $hemailtype="MCIMail"; } break; case "x.400": if (!$adronetype) { $emailtype="X.400"; } else { $hemailtype="X.400"; } break; case "tlx": if (!$adronetype) { $emailtype="TLX"; } else { $hemailtype="TLX"; } break; default: if (!$adronetype) { $emailtype="INTERNET"; } else { $hemailtype="INTERNET"; } break; } break; case "title": $title = $v[0]; break; case "org": $company = $v[0]; if(count($v) > 1) { $notes .= $v[0] . "\n"; for($j=1;$jtel_prefer: '.$fields["tel_prefer"]; echo '
owner: '.$fields["owner"]; echo '
firstname: '.$fields["n_given"]; echo '
lastname: '.$fields["n_family"]; echo '
full name: '.$fields["fn"]; echo '
title: '.$fields["title"]; echo '
email: '.$fields["email"]; echo '
work#: '.$fields["tel_work"]; echo '
home#: '.$fields["tel_home"]; echo '
fax#: '.$fields["tel_fax"]; echo '
pager#: '.$fields["tel_pager"]; echo '
cell#: '.$fields["tel_cell"]; echo '
msg#: '.$fields["tel_msg"]; echo '
car#: '.$fields["tel_car"]; echo '
modem# '.$fields["tel_modem"]; echo '
bbs#: '.$fields["tel_bbs"]; echo '
isdn#: '.$fields["tel_isdn"]; echo '
video#: '.$fields["tel_video"]; echo '
street: '.$fields["adr_one_street"]; echo '
addr2: '.$fields["address2"]; echo '
city: '.$fields["adr_one_locality"]; echo '
state: '.$fields["adr_one_region"]; echo '
zip: '.$fields["adr_one_postalcode"]; echo '
adronetype: '.$fields["adr_one_type"]; echo '
bday: '.$fields["bday"]; echo '
url: '.$fields["url"]; echo '
note: '.$fields["note"]; echo '
company: '.$fields["org_name"]; exit; */ $this = CreateObject("phpgwapi.contacts"); $this->add($phpgw_info["user"]["account_id"],$fields); } ?>