summaryrefslogtreecommitdiff
path: root/program/steps/addressbook/print.inc
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2015-02-17 11:54:04 +0100
committerAleksander Machniak <alec@alec.pl>2015-02-17 11:54:04 +0100
commitf7af22c7801afcc248b004c84d0f1fb45e1a1632 (patch)
tree54daab5a589f7f462aa82a608acd7b30a6178e85 /program/steps/addressbook/print.inc
parentae73c26f29aa230ba5ae3d86ef6d0c7886b7e657 (diff)
Add possibility to print contact information (of a single contact)
Diffstat (limited to 'program/steps/addressbook/print.inc')
-rw-r--r--program/steps/addressbook/print.inc138
1 files changed, 138 insertions, 0 deletions
diff --git a/program/steps/addressbook/print.inc b/program/steps/addressbook/print.inc
new file mode 100644
index 000000000..c9460d44f
--- /dev/null
+++ b/program/steps/addressbook/print.inc
@@ -0,0 +1,138 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | program/steps/addressbook/print.inc |
+ | |
+ | This file is part of the Roundcube Webmail client |
+ | Copyright (C) 2005-2015, The Roundcube Dev Team |
+ | Copyright (C) 2011-2015, Kolab Systems AG |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ | PURPOSE: |
+ | Print contact details |
+ | |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas Bruederli <roundcube@gmail.com> |
+ | Author: Aleksander Machniak <machniak@kolabsys.com> |
+ +-----------------------------------------------------------------------+
+*/
+
+// Get contact ID and source ID from request
+$cids = rcmail_get_cids();
+$source = key($cids);
+$cid = $cids ? array_shift($cids[$source]) : null;
+
+// Initialize addressbook source
+$CONTACTS = rcmail_contact_source($source, true);
+$SOURCE_ID = $source;
+
+// read contact record
+if ($cid && $CONTACTS) {
+ $record = $CONTACTS->get_record($cid, true);
+}
+
+$OUTPUT->add_handlers(array(
+ 'contacthead' => 'rcmail_contact_head',
+ 'contactdetails' => 'rcmail_contact_details',
+ 'contactphoto' => 'rcmail_contact_photo',
+));
+
+$OUTPUT->send('contactprint');
+
+
+
+function rcmail_contact_head($attrib)
+{
+ global $CONTACTS, $RCMAIL;
+
+ // check if we have a valid result
+ if (!(($result = $CONTACTS->get_result()) && ($record = $result->first()))) {
+ $RCMAIL->output->show_message('contactnotfound', 'error');
+ return false;
+ }
+
+ $form = array(
+ 'head' => array( // section 'head' is magic!
+ 'name' => $RCMAIL->gettext('contactnameandorg'),
+ 'content' => array(
+ 'prefix' => array(),
+ 'name' => array(),
+ 'firstname' => array(),
+ 'middlename' => array(),
+ 'surname' => array(),
+ 'suffix' => array(),
+ ),
+ ),
+ );
+
+ unset($attrib['name']);
+ return rcmail_contact_form($form, $record, $attrib);
+}
+
+
+function rcmail_contact_details($attrib)
+{
+ global $CONTACTS, $RCMAIL, $CONTACT_COLTYPES;
+
+ // check if we have a valid result
+ if (!(($result = $CONTACTS->get_result()) && ($record = $result->first()))) {
+ return false;
+ }
+
+ $i_size = !empty($attrib['size']) ? $attrib['size'] : 40;
+
+ $form = array(
+ 'contact' => array(
+ 'name' => $RCMAIL->gettext('properties'),
+ 'content' => array(
+ 'organization' => array(),
+ 'department' => array(),
+ 'jobtitle' => array(),
+ 'email' => array(),
+ 'phone' => array(),
+ 'address' => array(),
+ 'website' => array(),
+ 'im' => array(),
+ 'groups' => array('value' => 'sdfsdfs', 'label' => $RCMAIL->gettext('groups')),
+ ),
+ ),
+ 'personal' => array(
+ 'name' => $RCMAIL->gettext('personalinfo'),
+ 'content' => array(
+ 'nickname' => array(),
+ 'gender' => array(),
+ 'maidenname' => array(),
+ 'birthday' => array(),
+ 'anniversary' => array(),
+ 'manager' => array(),
+ 'assistant' => array(),
+ 'spouse' => array(),
+ ),
+ ),
+ );
+
+ if (isset($CONTACT_COLTYPES['notes'])) {
+ $form['notes'] = array(
+ 'name' => $RCMAIL->gettext('notes'),
+ 'content' => array(
+ 'notes' => array('type' => 'textarea', 'label' => false),
+ ),
+ );
+ }
+
+ if ($CONTACTS->groups) {
+ $groups = $CONTACTS->get_record_groups($record['ID']);
+ if (!empty($groups)) {
+ $form['contact']['content']['groups'] = array(
+ 'value' => rcube::Q(implode(', ', $groups)),
+ 'label' => $RCMAIL->gettext('groups')
+ );
+ }
+ }
+
+ return rcmail_contact_form($form, $record);
+}