egroupware_official/addressbook/view.php

322 lines
8.8 KiB
PHP
Raw Normal View History

2000-08-18 05:24:22 +02:00
<?php
/**************************************************************************\
* phpGroupWare - addressbook *
* http://www.phpgroupware.org *
* Written by Joseph Engo <jengo@phpgroupware.org> *
* -------------------------------------------- *
* 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. *
\**************************************************************************/
2000-08-18 05:24:22 +02:00
/* $Id$ */
2000-08-18 05:24:22 +02:00
2001-05-06 18:15:43 +02:00
$phpgw_info['flags'] = array(
'noheader' => True,
'nonavbar' => True,
'currentapp' => 'addressbook',
'enable_contacts_class' => True,
'enable_nextmatchs_class' => True
);
2001-05-06 18:15:43 +02:00
include('../header.inc.php');
$contacts = CreateObject("phpgwapi.contacts");
// First, make sure they have permission to this entry
$check = addressbook_read_entry($ab_id,array('owner' => 'owner'));
$perms = $contacts->check_perms($contacts->grants[$check[0]['owner']],PHPGW_ACL_READ);
2001-04-03 02:46:00 +02:00
if ( (!$perms) && ($check[0]['owner'] != $phpgw_info['user']['account_id']) )
{
2001-03-25 07:41:06 +02:00
Header("Location: "
. $phpgw->link('/addressbook/index.php',"cd=16&order=$order&sort=$sort&filter=$filter&start=$start&query=$query&cat_id=$cat_id"));
$phpgw->common->phpgw_exit();
}
2001-05-06 18:15:43 +02:00
if (!$ab_id)
{
Header("Location: " . $phpgw->link('/addressbook/index.php'));
}
elseif (!$submit && $ab_id)
{
$phpgw->common->phpgw_header();
echo parse_navbar();
}
2001-01-14 04:29:39 +01:00
2001-05-11 16:01:06 +02:00
$t = CreateObject('phpgwapi.Template',PHPGW_APP_TPL);
2001-05-10 14:45:40 +02:00
$t->set_file(array('view_t' => 'view.tpl'));
$t->set_block('view_t','view_header','view_header');
$t->set_block('view_t','view_row','view_row');
$t->set_block('view_t','view_footer','view_footer');
$t->set_block('view_t','view_buttons','view_buttons');
2001-04-28 06:08:49 +02:00
$customfields = array();
2001-05-06 18:15:43 +02:00
while (list($col,$descr) = @each($phpgw_info['user']['preferences']['addressbook']))
{
if ( substr($col,0,6) == 'extra_' )
{
2001-04-28 06:08:49 +02:00
$field = ereg_replace('extra_','',$col);
$field = ereg_replace(' ','_',$field);
$customfields[$field] = ucfirst($field);
}
}
while ($column = each($contacts->stock_contact_fields))
2001-05-06 18:15:43 +02:00
{
if (isset($phpgw_info['user']['preferences']['addressbook'][$column[0]]) &&
$phpgw_info['user']['preferences']['addressbook'][$column[0]])
{
$columns_to_display[$column[0]] = True;
2001-03-22 03:56:03 +01:00
$colname[$column[0]] = $column[0];
}
}
2001-03-13 17:19:05 +01:00
// No prefs?
2001-05-06 18:15:43 +02:00
if (!$columns_to_display )
{
2001-03-13 17:19:05 +01:00
$columns_to_display = array(
2001-05-06 18:15:43 +02:00
'n_given' => 'n_given',
'n_family' => 'n_family',
'org_name' => 'org_name',
'tel_work' => 'tel_work',
'tel_home' => 'tel_home',
'email' => 'email',
'email_home' => 'email_home'
2001-03-13 17:19:05 +01:00
);
2001-05-06 18:15:43 +02:00
while ($column = each($columns_to_display))
{
2001-03-13 17:19:05 +01:00
$colname[$column[0]] = $column[1];
}
2001-05-06 18:15:43 +02:00
$noprefs = " - " . lang('Please set your preferences for this app');
2001-03-13 17:19:05 +01:00
}
// merge in extra fields
$extrafields = array(
2001-05-06 18:15:43 +02:00
'ophone' => 'ophone',
'address2' => 'address2',
'address3' => 'address3'
);
$qfields = $contacts->stock_contact_fields + $extrafields + $customfields;
2001-05-06 18:15:43 +02:00
$fields = addressbook_read_entry($ab_id,$qfields);
2001-05-06 18:15:43 +02:00
$record_owner = $fields[0]['owner'];
if ($fields[0]["access"] == 'private')
{
$access_check = lang('private');
}
else
{
$access_check = lang('public');
}
2001-04-28 05:18:36 +02:00
$t->set_var('lang_viewpref',lang("Address book - view") . $noprefs);
2001-04-28 06:18:24 +02:00
@reset($qfields);
2001-05-06 18:15:43 +02:00
while (list($column,$null) = @each($qfields)) // each entry column
{
if(display_name($colname[$column]))
{
$t->set_var('display_col',display_name($colname[$column]));
}
2001-04-28 06:08:49 +02:00
elseif(display_name($column))
{
$t->set_var('display_col',display_name($column));
}
2001-04-28 06:08:49 +02:00
else
{
$t->set_var('display_col',ucfirst($column));
}
$ref = $data = "";
2001-04-28 06:36:35 +02:00
if ($fields[0][$column])
{
$tr_color = $phpgw->nextmatchs->alternate_row_color($tr_color);
$t->set_var('th_bg',$tr_color);
2001-04-28 06:36:35 +02:00
$coldata = $fields[0][$column];
2001-05-06 18:15:43 +02:00
// Some fields require special formatting.
if ( ($column == 'note' || $column == 'pubkey') && $coldata )
{
2001-04-28 06:36:35 +02:00
$datarray = explode ("\n",$coldata);
if ($datarray[1])
{
2001-04-28 06:36:35 +02:00
while (list($key,$info) = each ($datarray))
{
2001-04-28 06:36:35 +02:00
if ($key)
{
$data .= '</td></tr><tr bgcolor="'.$tr_color.'"><td width="30%">&nbsp;</td><td width="70%">' .$info;
2001-04-28 06:36:35 +02:00
}
else
{ // First row, don't close td/tr
$data .= $info;
}
}
2001-04-28 06:36:35 +02:00
$data .= "</tr>";
}
else
{
$data = $coldata;
}
}
elseif($column == 'label' && $coldata)
{
$data .= $contacts->formatted_address($fields[0]['id'],'',False);
}
2001-04-28 06:36:35 +02:00
elseif ($column == "url" && $coldata)
{
2001-04-28 06:36:35 +02:00
$ref = '<a href="' . $coldata . '" target="_new">';
$data = $coldata . '</a>';
}
2001-04-28 06:36:35 +02:00
elseif ( (($column == "email") || ($column == "email_home")) && $coldata)
{
2001-04-28 06:36:35 +02:00
if ($phpgw_info["user"]["apps"]["email"])
{
$ref='<a href="' . $phpgw->link("/email/compose.php","to="
. urlencode($coldata)) . '" target="_new">';
}
else
{
$ref = '<a href="mailto:'.$coldata.'">';
}
$data = $coldata."</a>";
}
else
2001-04-28 06:36:35 +02:00
{ // But these do not
$ref = ""; $data = $coldata;
}
2001-04-28 06:36:35 +02:00
if (!$data)
{
$t->set_var('ref_data',"&nbsp;");
}
else
{
$t->set_var('ref_data',$ref . $data);
}
2001-05-06 18:15:43 +02:00
$t->parse('cols','view_row',True);
}
}
2001-05-10 15:49:39 +02:00
// Following cleans up view_row, since we were only using it to fill {cols}
$t->set_var('view_row','');
2001-05-23 22:45:51 +02:00
$fields['cat_id'] = is_array($cat_id) ? implode(',',$cat_id) : $cat_id;
2001-03-25 07:41:06 +02:00
$cat = CreateObject('phpgwapi.categories');
2001-05-23 22:45:51 +02:00
$cats = explode(',',$fields[0]['cat_id']);
if ($cats[1])
{
while (list($key,$contactscat) = each($cats))
2001-05-23 22:45:51 +02:00
{
if ($contactscat)
{
$catinfo = $cat->return_single($contactscat);
$catname .= $catinfo[0]['name'] . '; ';
}
2001-05-23 22:45:51 +02:00
}
if (!$cat_id)
{
$cat_id = $cats[0];
}
}
else
{
2001-05-29 01:11:10 +02:00
$fields[0]['cat_id'] = ereg_replace(',','',$fields[0]['cat_id']);
2001-05-23 22:45:51 +02:00
$catinfo = $cat->return_single($fields[0]['cat_id']);
$catname = $catinfo[0]['name'];
if (!$cat_id)
{
$cat_id = $fields[0]['cat_id'];
}
}
if (!$catname) { $catname = lang('none'); }
2001-03-25 07:41:06 +02:00
// These are in the footer
2001-05-06 18:15:43 +02:00
$t->set_var('lang_owner',lang('Record owner'));
2001-04-28 05:18:36 +02:00
$t->set_var('owner',$phpgw->common->grab_owner_name($record_owner));
$t->set_var('lang_access',lang("Record access"));
$t->set_var('access',$access_check);
2001-05-06 18:15:43 +02:00
$t->set_var('lang_category',lang('Category'));
2001-04-28 05:18:36 +02:00
$t->set_var('catname',$catname);
$sfields = rawurlencode(serialize($fields[0]));
2001-05-30 01:55:02 +02:00
function html_input_hidden($vars)
{
if (!is_array($vars)) { return ''; }
while (list($name,$value) = each($vars))
{
if ($value != '') // dont need to send all the empty vars
2001-05-30 01:55:02 +02:00
{
$html .= "<input type=hidden name=\"$name\" value=\"$value\">\n";
2001-05-30 01:55:02 +02:00
}
}
return $html;
}
2001-05-30 01:55:02 +02:00
function html_submit_button($name,$lang)
{
return "<input type=\"submit\" name=\"$name\" value=\"".lang($lang)."\">\n";
2001-04-28 06:46:32 +02:00
}
2001-05-30 01:55:02 +02:00
function phpgw_link($url,$vars='')
{
global $phpgw;
2001-05-30 01:55:02 +02:00
if (is_array( $vars ))
{
while(list($name,$value) = each($vars))
{
if ($value != '') // dont need to send all the empty vars
2001-05-30 01:55:02 +02:00
{
$v[] = "$name=$value";
2001-05-30 01:55:02 +02:00
}
}
$vars = implode('&',$v);
}
return $phpgw->link($url,$vars);
}
2001-05-30 01:55:02 +02:00
function html_1button_form($name,$lang,$hidden_vars,$url,$url_vars='',$method='POST')
{
$html = "<form method=\"$method\" action=\"".phpgw_link($url,$url_vars)."\">\n";
$html .= html_input_hidden($hidden_vars);
$html .= html_submit_button($name,$lang);
$html .= "</form>\n";
return $html;
}
2001-05-30 01:55:02 +02:00
$common_vars = array('sort' => $sort,'order' => $order,'filter' => $filter,'start' => $start); // common vars for all buttons
2001-05-30 01:55:02 +02:00
if (($contacts->grants[$record_owner] & PHPGW_ACL_EDIT) || ($record_owner == $phpgw_info['user']['account_id']))
2001-04-28 06:46:32 +02:00
{
$extra_vars = array('cd' => 16,'query' => $query,'cat_id' => $cat_id);
2001-05-30 01:55:02 +02:00
if ($referer) $extra_vars += array( 'referer' => urlencode($referer));
2001-05-30 01:55:02 +02:00
$t->set_var('edit_button',html_1button_form('edit','Edit',array('ab_id' => $ab_id),'/addressbook/edit.php',
2001-05-30 01:55:02 +02:00
$common_vars + $extra_vars));
2001-04-28 06:46:32 +02:00
}
$t->set_var('copy_button',html_1button_form('submit','copy',$common_vars+array( 'fields' => rawurlencode(serialize($fields[0]))),
2001-05-30 01:55:02 +02:00
'/addressbook/add.php'));
if ($fields[0]['n_family'] && $fields[0]['n_given'])
{
$t->set_var('vcard_button',html_1button_form('VCardForm','VCard',$common_vars+array( 'ab_id' => $ab_id),'/addressbook/vcardout.php'));
}
else
{
$t->set_var('vcard_button',lang('no vcard'));
}
2001-05-30 01:55:02 +02:00
$t->set_var('done_button',html_1button_form('DoneForm','Done',$common_vars,
2001-05-30 01:55:02 +02:00
$referer ? ereg_replace('/phpgroupware','',$referer) : '/addressbook/index.php',
$common_vars + array('cd' => 16,'query' => $query)));
2001-05-06 18:15:43 +02:00
$t->set_var('access_link',$access_link);
2001-05-10 14:45:40 +02:00
$t->pfp('out','view_t');
$phpgw->common->phpgw_footer();
?>