From 7dfb1fba5001299300736e6b5d95d9400575e3e7 Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Thu, 18 Sep 2008 14:59:02 -0400 Subject: [PATCH] Set the right number of arguments for setcookie() --- program/steps/addressbook/func.inc | 234 +++++++++++++++++++++++++++++++-------------------------- 1 files changed, 127 insertions(+), 107 deletions(-) diff --git a/program/steps/addressbook/func.inc b/program/steps/addressbook/func.inc index 5362816..98cf29f 100644 --- a/program/steps/addressbook/func.inc +++ b/program/steps/addressbook/func.inc @@ -5,7 +5,7 @@ | program/steps/addressbook/func.inc | | | | This file is part of the RoundCube Webmail client | - | Copyright (C) 2005, RoundCube Dev. - Switzerland | + | Copyright (C) 2005-2007, RoundCube Dev. - Switzerland | | Licensed under the GNU GPL | | | | PURPOSE: | @@ -19,144 +19,159 @@ */ -$CONTACTS_LIST = array(); +// instantiate a contacts object according to the given source +$CONTACTS = $RCMAIL->get_address_book(($source = get_input_value('_source', RCUBE_INPUT_GPC))); + +$CONTACTS->set_pagesize($CONFIG['pagesize']); // set list properties and session vars -if (strlen($_GET['_page'])) - { - $CONTACTS_LIST['page'] = $_GET['_page']; - $_SESSION['page'] = $_GET['_page']; - } +if (!empty($_GET['_page'])) + $CONTACTS->set_page(($_SESSION['page'] = intval($_GET['_page']))); else - $CONTACTS_LIST['page'] = $_SESSION['page'] ? $_SESSION['page'] : 1; + $CONTACTS->set_page(isset($_SESSION['page']) ?$_SESSION['page'] : 1); +// set message set for search result +if (!empty($_REQUEST['_search']) && isset($_SESSION['search'][$_REQUEST['_search']])) + $CONTACTS->set_search_set($_SESSION['search'][$_REQUEST['_search']]); + +// set data source env +$OUTPUT->set_env('source', $source ? $source : '0'); +$OUTPUT->set_env('readonly', $CONTACTS->readonly, false); + +// add list of address sources to client env +$js_list = array(); +if (strtolower($CONFIG['address_book_type']) != 'ldap') { + // We are using the DB address book, add it. + $js_list = array("0" => array('id' => 0, 'readonly' => false)); +} +if (is_array($CONFIG['ldap_public'])) { + foreach ($CONFIG['ldap_public'] as $id => $prop) + $js_list[$id] = array('id' => $id, 'readonly' => !$prop['writable']); +} +$OUTPUT->set_env('address_sources', $js_list); + + +function rcmail_directory_list($attrib) +{ + global $CONFIG, $OUTPUT; + + if (!$attrib['id']) + $attrib['id'] = 'rcmdirectorylist'; + + $out = ''; + $local_id = '0'; + $current = get_input_value('_source', RCUBE_INPUT_GPC); + $line_templ = html::tag('li', array('id' => 'rcmli%s', 'class' => '%s'), + html::a(array('href' => '%s', 'onclick' => "return ".JS_OBJECT_NAME.".command('list','%s',this)"), '%s')); + + if (strtolower($CONFIG['address_book_type']) != 'ldap') { + $out .= sprintf($line_templ, $local_id, (!$current ? 'selected' : ''), + Q(rcmail_url(null, array('_source' => $local_id))), $local_id, rcube_label('personaladrbook')); + } // end if + else { + // DB address book not used, see if a source is set, if not use the + // first LDAP directory. + if (!$current) { + $current = key((array)$CONFIG['ldap_public']); + } // end if + } // end else + + foreach ((array)$CONFIG['ldap_public'] as $id => $prop) { + $js_id = JQ($id); + $dom_id = preg_replace('/[^a-z0-9\-_]/i', '', $id); + $out .= sprintf($line_templ, $dom_id, ($current == $id ? 'selected' : ''), + Q(rcmail_url(null, array('_source' => $id))), $js_id, (!empty($prop['name']) ? Q($prop['name']) : Q($id))); + } + + $OUTPUT->add_gui_object('folderlist', $attrib['id']); + + return html::tag('ul', $attrib, $out, html::$common_attrib); +} // 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" />'; + global $CONTACTS, $OUTPUT; // 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", - get_table_name('contacts'), - $_SESSION['user_id']), - $start_row, - $CONFIG['pagesize']); - } - else - $sql_result = NULL; - - + $result = $CONTACTS->list_records(); + // 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); + // define list of cols to be displayed + $a_show_cols = array('name'); + // create XHTML table + $out = rcube_table_output($attrib, $result->records, $a_show_cols, $CONTACTS->primary_key); + + // set client env + $OUTPUT->add_gui_object('contactslist', $attrib['id']); + $OUTPUT->set_env('current_page', (int)$CONTACTS->list_page); + $OUTPUT->set_env('pagecount', ceil($result->count/$CONTACTS->page_size)); + $OUTPUT->include_script('list.js'); + + // add some labels to client + rcube_add_label('deletecontactconfirm'); + return $out; } - -function rcmail_js_contacts_list($sql_result, $obj_name='this') +function rcmail_js_contacts_list($result, $prefix='') { - global $DB; + global $OUTPUT; - $commands = ''; - - if (!$sql_result) - return ''; + if (empty($result) || $result->count == 0) + return; // define list of cols to be displayed - $a_show_cols = array('name', 'email'); - - while ($sql_arr = $DB->fetch_assoc($sql_result)) + $a_show_cols = array('name'); + + while ($row = $result->next()) { $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)); - } + $a_row_cols[$col] = Q($row[$col]); - return $commands; + $OUTPUT->command($prefix.'add_contact_row', $row['ID'], $a_row_cols); + } } // similar function as /steps/settings/identities.inc::rcmail_identity_frame() function rcmail_contact_frame($attrib) { - global $OUTPUT, $JS_OBJECT_NAME; + global $OUTPUT; 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; + + $OUTPUT->set_env('contentframe', $attrib['name']); + $OUTPUT->set_env('blankpage', $attrib['src'] ? $OUTPUT->abs_url($attrib['src']) : 'program/blank.gif'); + return '<iframe'. $attrib_str . '></iframe>'; } function rcmail_rowcount_display($attrib) { - global $OUTPUT, $JS_OBJECT_NAME; + global $OUTPUT; if (!$attrib['id']) $attrib['id'] = 'rcmcountdisplay'; - $OUTPUT->add_script(sprintf("%s.gui_object('countdisplay', '%s');", $JS_OBJECT_NAME, $attrib['id'])); + $OUTPUT->add_gui_object('countdisplay', $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>'; @@ -165,33 +180,38 @@ -function rcmail_get_rowcount_text($max=NULL) +function rcmail_get_rowcount_text() { - global $CONTACTS_LIST, $CONFIG, $DB; + global $CONTACTS; - $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) + // read nr of contacts + $result = $CONTACTS->get_result(); + if (!$result) + $result = $CONTACTS->count(); + + if ($result->count == 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))); + $out = rcube_label(array( + 'name' => 'contactsfromto', + 'vars' => array( + 'from' => $result->first + 1, + 'to' => min($result->count, $result->first + $CONTACTS->page_size), + 'count' => $result->count) + )); return $out; } -?> \ No newline at end of file +$OUTPUT->set_pagetitle(rcube_label('addressbook')); + +// register UI objects +$OUTPUT->add_handlers(array( + 'directorylist' => 'rcmail_directory_list', + 'addresslist' => 'rcmail_contacts_list', + 'addressframe' => 'rcmail_contact_frame', + 'recordscountdisplay' => 'rcmail_rowcount_display', + 'searchform' => array($OUTPUT, 'search_form') +)); + +?> -- Gitblit v1.9.1