* * -------------------------------------------- * * 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$ */ // 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; } } } // this cleans up the fieldnames for display function display_name($column) { $abc = array( "fn" => "full name", //'firstname lastname' "sound" => "", "org_name" => "company name", //company "org_unit" => "department", //division "title" => "title", "n_prefix" => "prefix", "n_given" => "first name", //firstname "n_middle" => "middle name", "n_family" => "last name", //lastname "n_suffix" => "suffix", "label" => "label", "adr_street" => "street", "adr_locality" => "city", //city "adr_region" => "state", //state "adr_postalcode" => "zip code", //zip "adr_countryname" => "country", "adr_work" => "", //yn "adr_home" => "", //yn "adr_parcel" => "", //yn "adr_postal" => "", //yn "tz" => "time zone", "geo" => "geo", "a_tel" => "home phone", "a_tel_work" => "", //yn "a_tel_home" => "", //yn "a_tel_voice" => "", //yn "a_tel_msg" => "", //yn "a_tel_fax" => "", //yn "a_tel_prefer" => "", //yn "b_tel" => "work phone", "b_tel_work" => "", //yn "b_tel_home" => "", //yn "b_tel_voice" => "", //yn "b_tel_msg" => "", //yn "b_tel_fax" => "", //yn "b_tel_prefer" => "", //yn "c_tel" => "fax", "c_tel_work" => "", //yn "c_tel_home" => "", //yn "c_tel_voice" => "", //yn "c_tel_msg" => "", //yn "c_tel_fax" => "", //yn "c_tel_prefer" => "", //yn "d_email" => "email", "d_emailtype" => "email type", //'INTERNET','CompuServe',etc... "d_email_work" => "", //yn "d_email_home" => "", //yn "bday" => "birthday", "url" => "URL", //"access" => "access" ); while($name = each($abc) ) { if ($column == $name[0]) { return lang($name[1]); } } } 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); return $entries; } function addressbook_read_entry($id,$fields,$userid="") { global $this,$rights; if ($rights & PHPGW_ACL_READ) { $entry = $this->read_single_entry($id,$fields); return $entry; } else { $rtrn = array("No access" => "No access"); return $rtrn; } } function addressbook_add_entry($userid,$fields) { global $this,$rights; if ($rights & PHPGW_ACL_ADD) { $this->add($userid,$fields); } 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) { global $this,$rights; if ($rights & PHPGW_ACL_EDIT) { $this->update($id,$userid,$fields); } return; } function addressbook_form($format,$action,$title="",$fields="") { // used for add/edit global $phpgw, $phpgw_info; #$t = new Template($phpgw_info["server"]["app_tpl"]); $t = new Template($phpgw->common->get_tpl_dir("addressbook")); $t->set_file(array( "form" => "form.tpl")); $email = $fields["d_email"]; $emailtype = $fields["d_emailtype"]; $firstname = $fields["n_given"]; $middle = $fields["n_middle"]; $prefix = $fields["n_prefix"]; $suffix = $fields["n_suffix"]; $lastname = $fields["n_family"]; $title = $fields["title"]; $hphone = $fields["a_tel"]; $wphone = $fields["b_tel"]; $fax = $fields["c_tel"]; $pager = $fields["pager"]; $mphone = $fields["mphone"]; $ophone = $fields["ophone"]; $street = $fields["adr_street"]; $address2 = $fields["address2"]; $city = $fields["adr_locality"]; $state = $fields["adr_region"]; $zip = $fields["adr_postalcode"]; $country = $fields["adr_countryname"]; $timezone = $fields["tz"]; $bday = $fields["bday"]; $notes = stripslashes($fields["notes"]); $company = $fields["org_name"]; $department = $fields["org_unit"]; $url = $fields["url"]; //$access = $fields["access"]; if ($format != "view") { $email = ""; $firstname = ""; $lastname = ""; $middle = ""; $prefix = ""; $suffix = ""; $title = ""; $hphone = ""; $wphone = ""; $fax = ""; $pager = ""; $mphone = ""; $ophone = ""; $street = ""; $address2 = ""; $city = ""; $state = ""; $zip = ""; $country = ""; /* if($phpgw_info["apps"]["timetrack"]["enabled"]) { $company = '"; } else { */ $company = ""; $department = ""; /* } */ 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 = ""; $notes = ''; } else { $notes = "
"; if ($bday == "//") $bday = ""; /* if($phpgw_info["apps"]["timetrack"]["enabled"]) { $company = $company_name; } else { */ $company = $company; /* } */ } if ($action) { echo "
link($action)."\" method=\"post\">\n"; } // test: //echo "Time track app status = " . $phpgw_info["apps"]["timetrack"]["enabled"]; if (! ereg("^http://",$url)) { $url = "http://". $url; } $birthday = $phpgw->common->dateformatorder($bday_year,$bday_month,$bday_day) . '(e.g. 1969)'; /* // This is now handled by acl code, and should go away if ($format == "Edit") { if ($access != "private" && $access != "public") { $access_link .= ''.lang("Group access").':' . '' . $phpgw->accounts->convert_string_to_names($access); } else { $access_link .= ''.lang("Access").':' . '' . $access; } } else { $access_link .= ''.lang("Access").': '; else $access_link .= '>'.lang("Group Public").''; $access_link .= ' '; } if ($format != "view") { $access_link .= '' . lang("Which groups") . ':'; $t->set_var("lang_access",lang("access")); } else { $access_link = ''; $t->set_var("lang_access",''); } */ if ($format == "view") $create .= ''.lang("Created by").':' . '' . grab_owner_name($fields["owner"]); else $create = ''; $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_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("Email")); $t->set_var("email",$email); $t->set_var("lang_email_type",lang("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_hphone",lang("Home Phone")); $t->set_var("hphone",$hphone); $t->set_var("lang_fax",lang("fax")); $t->set_var("fax",$fax); $t->set_var("lang_wphone",lang("Work Phone")); $t->set_var("wphone",$wphone); $t->set_var("lang_pager",lang("Pager")); $t->set_var("pager",$pager); $t->set_var("lang_mphone",lang("Mobile")); $t->set_var("mphone",$mphone); $t->set_var("lang_ophone",lang("Other Number")); $t->set_var("ophone",$ophone); $t->set_var("lang_street",lang("Street")); $t->set_var("street",$street); $t->set_var("lang_birthday",lang("Birthday")); $t->set_var("birthday",$birthday); $t->set_var("lang_address2",lang("Line 2")); $t->set_var("address2",$address2); $t->set_var("lang_city",lang("city")); $t->set_var("city",$city); $t->set_var("lang_state",lang("state")); $t->set_var("state",$state); $t->set_var("lang_zip",lang("Zip Code")); $t->set_var("zip",$zip); $t->set_var("lang_country",lang("Country")); $t->set_var("country",$country); $t->set_var("access_link",$access_link); $t->set_var("create",$create); $t->set_var("lang_notes",lang("notes")); $t->set_var("notes",$notes); $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]; } } fillab($varray,$access); // Add this entry to the addressbook before // moving on to the next one. } // while(!feof($vcard)) fclose($vcard); return TRUE; } function fillab($varray,$access) { global $phpgw; global $phpgw_info; $i=0; // incremented by 2 while($i < count($varray)) { $k = explode(";",$varray[$i]); // Key $v = explode(";",$varray[$i+1]); // Values for($h=0;$h 1) { $notes .= $v[0] . "\n"; for($j=1;$jadd($phpgw_info["user"]["account_id"],$fields); } ?>