addressbook.class.inc

来自「groupoffice」· INC 代码 · 共 1,110 行 · 第 1/3 页

INC
1,110
字号
<?php/** * @copyright Intermesh 2003 * @author Merijn Schering <mschering@intermesh.nl> * @version $Revision: 1.76 $ $Date: 2006/04/10 13:21:11 $ * * 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. */class addressbook extends db {	var $selector_is_enabled = false;	function addressbook() {		$this->db();	}	function parse_address($address) {		$address = trim($address);		$address_arr['housenumber'] = '';		$address_arr['street'] = $address;		if ($address != '') {			$last_space = strrpos($address, ' ');			if ($last_space !== false) {				$address_arr['housenumber'] = substr($address, $last_space +1);				$address_arr['street'] = substr($address, 0, $last_space);			}		}		return $address_arr;	}	function get_addressinfo($zip) {		$sql = "SELECT * FROM ab_zipcodes WHERE zip LIKE '$zip%'";		$this->query($sql);		if ($this->next_record()) {			return $this->Record;		}		return false;	}	function address_format($contact_id, $crlf='<br />') {		if ($contact = $this->get_contact($contact_id)) {						$name = format_name($contact['last_name'],$contact['first_name'],$contact['middle_name'], 'first_name');			$address = $name.$crlf;			if ($contact['address'] != '') {				$address .= $contact['address'].' '.$contact['address_no'].$crlf;			}			if ($contact['zip'] != '') {				$address .= $contact['zip'].' ';			}			if ($contact['city'] != '') {				$address .= $contact['city'].$crlf;			}			if ($contact['country'] != '') {				$address .= $contact['country'].$crlf;			}			return $address;		}		return false;	}		function company_post_address_format($company_id, $crlf='<br />') {		if ($company = $this->get_company($company_id)) {						$address = $company['name'].$crlf;			if ($company['post_address'] != '') {				$address .= $company['post_address'].' '.$company['post_address_no'].$crlf;			}			if ($company['post_zip'] != '') {				$address .= $company['post_zip'].' ';			}			if ($company['post_city'] != '') {				$address .= $company['post_city'].$crlf;			}			if ($company['post_country'] != '') {				$address .= $company['post_country'].$crlf;			}			return $address;		}		return false;	}			function update_settings($settings)	{		if(!isset($settings['user_id']))		{			global $GO_SECURITY;			$settings['user_id'] = $GO_SECURITY->user_id;		}		return $this->update_row('ab_settings', 'user_id', $settings);	}	function get_settings($user_id) {		$this->query("SELECT * FROM ab_settings WHERE user_id='$user_id'");		if ($this->next_record(MYSQL_ASSOC)) {			return $this->Record;		} else {			$this->query("INSERT INTO ab_settings ".				"(user_id, search_type, search_contacts_field, "."search_companies_field, search_users_field) VALUES ".				"('$user_id', 'contact','', '', '')");			return $this->get_settings($user_id);		}	}	function select_contacts($target_field, $handler_file, $multiselect = 'true', $require_email_address = 'true', $show_users = 'true', $show_contacts = 'true', $show_companies = 'true', $show_mailings='true', $pass_value = 'email') {		/*if (!$this->selector_is_enabled) {			die('FATAL ERROR: called select contacts while contact_selector is not'.'enabled. Call enable_contact_selector() first outside a form!');		} else {*/			$link = "javascript:open_addressbook('$target_field',";			if ($target_field != '') {				$link .= $target_field.'.value';			} else {				$link .= "''";			}			$link .= ", '$handler_file', '$multiselect', '$require_email_address', ".				"'$show_users', '$show_contacts', '$show_companies', '$show_mailings', ".				"'$pass_value');";			return $link;		//}	}	function enable_contact_selector() {		global $GO_CONFIG;		return '		      <form name="ab_form" action="'.$GO_CONFIG->control_url.'select/select.php" method="post" target="ab_select">		      <input type="hidden" name="address_string" />		      <input type="hidden" name="GO_HANDLER" />		      <input type="hidden" name="GO_FIELD" />		      <input type="hidden" name="multiselect" />		      <input type="hidden" name="require_email_address" />		      <input type="hidden" name="show_users" />		      <input type="hidden" name="show_contacts" />		      <input type="hidden" name="show_companies" />		      <input type="hidden" name="show_mailings" />		      <input type="hidden" name="pass_value" />		      </form>				      <script type="text/javascript">		      function open_addressbook(field, addresses, handler_file, multiselect, require_email_address, show_users, show_contacts, show_companies, show_mailings, pass_value)		      {			var width = 620;			var height = 400;			var centered;			x = (screen.availWidth - width) / 2;			y = (screen.availHeight - height) / 2;			centered = ",width=" + width + ",height=" + height + ",left=" + x + ",top=" + y + ",scrollbars=yes,resizable=yes,status=no";			var popup = window.open("about:blank", "ab_select", centered);					document.ab_form.address_string.value = addresses;			document.ab_form.GO_HANDLER.value = handler_file;			document.ab_form.GO_FIELD.value = field;			document.ab_form.multiselect.value = multiselect;			document.ab_form.require_email_address.value = require_email_address;			document.ab_form.show_users.value = show_users;			document.ab_form.show_contacts.value = show_contacts;			document.ab_form.show_companies.value = show_companies;			document.ab_form.show_mailings.value = show_mailings;			document.ab_form.pass_value.value = pass_value;			document.ab_form.submit();					if (!popup.opener) popup.opener = self;			popup.focus();		      }		    </script>		      ';		$this->selector_is_enabled = true;	}	function get_addressbooks() {		$sql = "SELECT * FROM ab_addressbooks ORDER BY name ASC";		$this->query($sql);		return $this->num_rows();	}	function get_user_addressbooks($user_id) {		$sql = "SELECT DISTINCT ab_addressbooks.* ".			"FROM ab_addressbooks ".			"	INNER JOIN acl ON (ab_addressbooks.acl_read = acl.acl_id ".			"OR ab_addressbooks.acl_write = acl.acl_id) ".			"LEFT JOIN users_groups ON acl.group_id = users_groups.group_id ".			"WHERE acl.user_id=$user_id ".			"OR users_groups.user_id=$user_id ".			"ORDER BY ab_addressbooks.name ASC";						$this->query($sql);		return $this->num_rows();	}	function add_addressbook($user_id, $name) {		global $GO_SECURITY;		$addressbook_id = $this->nextid('ab_addressbooks');		$acl_read = $GO_SECURITY->get_new_acl('acl_read addressbook_id: '.$addressbook_id);		$acl_write = $GO_SECURITY->get_new_acl('acl_write addressbook_id: '.$addressbook_id);		if ($addressbook_id > 0 && $acl_read > 0 && $acl_write > 0) {			$sql = "INSERT INTO ab_addressbooks (id, user_id, name, acl_read, acl_write) VALUES ('$addressbook_id', '$user_id', '$name', '$acl_read', '$acl_write')";			if ($this->query($sql)) {				$GO_SECURITY->add_user_to_acl($user_id, $acl_write);				return $addressbook_id;			}		} else {			$GO_SECURITY->delete_acl($acl_read);			$GO_SECURITY->delete_acl($acl_write);		}		return false;	}	function update_addressbook($addressbook_id, $user_id, $name) {		$sql = "UPDATE ab_addressbooks SET name='$name', user_id='$user_id' WHERE id='$addressbook_id'";		return $this->query($sql);	}	function get_addressbook_by_name($name) {		$sql = "SELECT * FROM ab_addressbooks WHERE name='$name'";		$this->query($sql);		if ($this->next_record()) {			return $this->Record;		} else {			return false;		}	}	function delete_addressbook($addressbook_id) {				if($addressbook = $this->get_addressbook($addressbook_id))		{			global $GO_SECURITY;						$GO_SECURITY->delete_acl($addressbook['acl_read']);			$GO_SECURITY->delete_acl($addressbook['acl_write']);						$ab = new addressbook();						$this->get_contacts($addressbook_id);					while($this->next_record())			{				$ab->delete_contact($this->f('id'));				}						$this->get_companies($addressbook_id);					while($this->next_record())			{				$ab->delete_company($this->f('id'));				}						$sql = "DELETE FROM ab_addressbooks WHERE id='$addressbook_id'";			return $this->query($sql);		}		return false;	}		function get_addressbook($addressbook_id=0) {		if($addressbook_id == 0)		{			global $GO_SECURITY, $GO_USERS;			$sql = "SELECT * FROM ab_addressbooks WHERE user_id=".$GO_SECURITY->user_id;			$this->query($sql);						if($this->next_record())			{				$addressbook_id = $this->f('id');			}else			{							$user = $GO_USERS->get_user($GO_SECURITY->user_id);						$new_ab_name = format_name($user['last_name'], $user['first_name'], $user['middle_name'], 'last_name');				$x = 1;				while ($this->get_addressbook_by_name(addslashes($new_ab_name))) {					$new_ab_name = $_SESSION['GO_SESSION']['name'].' ('.$x.')';					$x ++;				}				$addressbook_id = $this->add_addressbook($GO_SECURITY->user_id, addslashes($new_ab_name));			}		}		$sql = "SELECT * FROM ab_addressbooks WHERE id='$addressbook_id'";		$this->query($sql);		if ($this->next_record()) {			return $this->Record;		}else		{			return $this->get_addressbook();				}	}	function check_contact($user_id, $contact) {				$sql = "SELECT id FROM ab_contacts ";				$count = $this->get_user_addressbooks($user_id);					if($count > 1)		{			while($this->next_record())			{				$user_ab[] = $this->f('id');								}			$sql .= "WHERE addressbook_id IN (".implode(",",$user_ab).") AND ";		}elseif(	$this->next_record())		{			$sql .= "WHERE addressbook_id=".$this->f('id')." AND ";		}else		{			return false;		}		$sql .=	"((first_name='".$contact['first_name']."' AND middle_name='".$contact['middle_name']."' AND last_name='".$contact['last_name']."')";		if ($contact['email'] != '') {			$sql .= " OR email='".$contact['email']."' OR email2='".$contact['email']."' OR email3='".$contact['email']."'";		}		if ($contact['zip'] != '' && $contact['address_no'] != '') {			$sql .= " AND (zip='".$contact['zip']."' AND address_no='".$contact['address_no']."')";		}		$sql .= ");";		$this->query($sql);		if ($this->next_record()) {			return $this->f('id');		}		return false;	}	function check_company($user_id, $company) {		$sql = "SELECT id FROM ab_companies ";				$count = $this->get_user_addressbooks($user_id);					if($count > 1)		{			while($this->next_record())			{				$user_ab[] = $this->f('id');								}			$sql .= "WHERE addressbook_id IN (".implode(",",$user_ab).") AND ";		}elseif(	$this->next_record())		{			$sql .= "WHERE addressbook_id=".$this->f('id')." AND ";		}else		{			return false;		}				$sql .= "(name='".$company['name']."'";		if ($company['email'] != '') {			$sql .= " OR email='".$company['email']."' ";		}		if ($company['zip'] != '' && $company['address_no'] != '') {			$sql .= " OR (zip='".$company['zip']."' AND address_no='".$company['address_no']."')";		}		$sql .= ");";		$this->query($sql);		if ($this->next_record()) {

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?