diff options
author | thomascube <thomas@roundcube.net> | 2005-09-25 14:18:03 +0000 |
---|---|---|
committer | thomascube <thomas@roundcube.net> | 2005-09-25 14:18:03 +0000 |
commit | 4e17e6c9dbac8991ee8b302cb2581241247dc8bc (patch) | |
tree | d877546f6bd334b041734498e81f6299e005b01c /program/steps/addressbook/func.inc |
Initial revision
Diffstat (limited to 'program/steps/addressbook/func.inc')
-rw-r--r-- | program/steps/addressbook/func.inc | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/program/steps/addressbook/func.inc b/program/steps/addressbook/func.inc new file mode 100644 index 000000000..309c2a3a2 --- /dev/null +++ b/program/steps/addressbook/func.inc @@ -0,0 +1,198 @@ +<?php + +/* + +-----------------------------------------------------------------------+ + | program/steps/addressbook/func.inc | + | | + | This file is part of the RoundCube Webmail client | + | Copyright (C) 2005, RoundCube Dev. - Switzerland | + | All rights reserved. | + | | + | PURPOSE: | + | Provide addressbook functionality and GUI objects | + | | + +-----------------------------------------------------------------------+ + | Author: Thomas Bruederli <roundcube@gmail.com> | + +-----------------------------------------------------------------------+ + + $Id$ + +*/ + +$CONTACTS_LIST = array(); + +// set list properties and session vars +if (strlen($_GET['_page'])) + { + $CONTACTS_LIST['page'] = $_GET['_page']; + $_SESSION['page'] = $_GET['_page']; + } +else + $CONTACTS_LIST['page'] = $_SESSION['page'] ? $_SESSION['page'] : 1; + + + +// return the message list as HTML table +function rcmail_contacts_list($attrib) + { + global $DB, $CONFIG, $OUTPUT, $CONTACTS_LIST, $JS_OBJECT_NAME; + + //$skin_path = $CONFIG['skin_path']; + //$image_tag = '<img src="%s%s" alt="%s" border="0" />'; + + // count contacts for this user + $sql_result = $DB->query(sprintf("SELECT COUNT(contact_id) AS rows + FROM %s + WHERE del!='1' + AND user_id=%d", + get_table_name('contacts'), + $_SESSION['user_id'])); + + $sql_arr = $DB->fetch_assoc($sql_result); + $rowcount = $sql_arr['rows']; + + if ($rowcount) + { + $start_row = ($CONTACTS_LIST['page']-1) * $CONFIG['pagesize']; + + // get contacts from DB + $sql_result = $DB->query(sprintf("SELECT * FROM %s + WHERE del!='1' + AND user_id=%d + ORDER BY name + LIMIT %d, %d", + get_table_name('contacts'), + $_SESSION['user_id'], + $start_row, + $CONFIG['pagesize'])); + } + else + $sql_result = NULL; + + + // add id to message list table if not specified + if (!strlen($attrib['id'])) + $attrib['id'] = 'rcmAddressList'; + + // define list of cols to be displayed + $a_show_cols = array('name', 'email'); + + // create XHTML table + $out = rcube_table_output($attrib, $sql_result, $a_show_cols, 'contact_id'); + + // set client env + $javascript = sprintf("%s.gui_object('contactslist', '%s');\n", $JS_OBJECT_NAME, $attrib['id']); + $javascript .= sprintf("%s.set_env('current_page', %d);\n", $JS_OBJECT_NAME, $CONTACTS_LIST['page']); + $javascript .= sprintf("%s.set_env('pagecount', %d);\n", $JS_OBJECT_NAME, ceil($rowcount/$CONFIG['pagesize'])); + //$javascript .= sprintf("%s.set_env('contacts', %s);", $JS_OBJECT_NAME, array2js($a_js_message_arr)); + + $OUTPUT->add_script($javascript); + + return $out; + } + + + +function rcmail_js_contacts_list($sql_result, $obj_name='this') + { + global $DB; + + $commands = ''; + + if (!$sql_result) + return ''; + + // define list of cols to be displayed + $a_show_cols = array('name', 'email'); + + while ($sql_arr = $DB->fetch_assoc($sql_result)) + { + $a_row_cols = array(); + + // format each col + foreach ($a_show_cols as $col) + { + $cont = rep_specialchars_output($sql_arr[$col]); + $a_row_cols[$col] = $cont; + } + + $commands .= sprintf("%s.add_contact_row(%s, %s);\n", + $obj_name, + $sql_arr['contact_id'], + array2js($a_row_cols)); + } + + return $commands; + } + + +// similar function as /steps/settings/identities.inc::rcmail_identity_frame() +function rcmail_contact_frame($attrib) + { + global $OUTPUT, $JS_OBJECT_NAME; + + if (!$attrib['id']) + $attrib['id'] = 'rcmcontactframe'; + + $attrib['name'] = $attrib['id']; + + $OUTPUT->add_script(sprintf("%s.set_env('contentframe', '%s');", $JS_OBJECT_NAME, $attrib['name'])); + + $attrib_str = create_attrib_string($attrib, array('name', 'id', 'class', 'style', 'src', 'width', 'height', 'frameborder')); + $out = '<iframe'. $attrib_str . '></iframe>'; + + return $out; + } + + +function rcmail_rowcount_display($attrib) + { + global $OUTPUT, $JS_OBJECT_NAME; + + if (!$attrib['id']) + $attrib['id'] = 'rcmcountdisplay'; + + $OUTPUT->add_script(sprintf("%s.gui_object('countdisplay', '%s');", $JS_OBJECT_NAME, $attrib['id'])); + + // allow the following attributes to be added to the <span> tag + $attrib_str = create_attrib_string($attrib, array('style', 'class', 'id')); + + + $out = '<span' . $attrib_str . '>'; + $out .= rcmail_get_rowcount_text(); + $out .= '</span>'; + return $out; + } + + + +function rcmail_get_rowcount_text($max=NULL) + { + global $CONTACTS_LIST, $CONFIG, $DB; + + $start_row = ($CONTACTS_LIST['page']-1) * $CONFIG['pagesize'] + 1; + + // get nr of contacts + if ($max===NULL) + { + $sql_result = $DB->query(sprintf("SELECT 1 FROM %s + WHERE del!='1' + AND user_id=%d", + get_table_name('contacts'), + $_SESSION['user_id'])); + + $max = $DB->num_rows($sql_result); + } + + if ($max==0) + $out = rcube_label('nocontactsfound'); + else + $out = rcube_label(array('name' => 'contactsfromto', + 'vars' => array('from' => $start_row, + 'to' => min($max, $start_row + $CONFIG['pagesize'] - 1), + 'count' => $max))); + + return $out; + } + +?>
\ No newline at end of file |