Source for file addressbook.php
Documentation is available at addressbook.php
-  * Manage personal address book. 
-  * @copyright 1999-2020 The SquirrelMail Project Team 
-  * @license http://opensource.org/licenses/gpl-license.php GNU Public License 
-  * @version $Id: addressbook.php 14845 2020-01-07 08:09:34Z pdontthink $ 
-  * @subpackage addressbook 
- /** This is the addressbook page */ 
- define('PAGE_NAME', 'addressbook'); 
-  * Include the SquirrelMail initialization file. 
- include('../include/init.php'); 
- /** SquirrelMail required files. */ 
- /* address book functions */ 
- require_once(SM_PATH - .  'functions/addressbook.php');
 
- include_once(SM_PATH - .  'templates/util_addressbook.php');
 
- require_once(SM_PATH - .  'functions/forms.php');
 
- /** lets get the global vars we may need */ 
- /* From the address form */ 
- $page_size - =  $abook_show_num;
 
- if (!sqGetGlobalVar('page_number', $page_number, SQ_FORM)) 
-     if (!sqGetGlobalVar('current_page_number', $page_number, SQ_FORM)) 
- if (!sqGetGlobalVar('show_all', $show_all, SQ_FORM)) 
- // Create page header before addressbook_init in order to 
- // display error messages correctly, unless we might be 
- // redirecting the browser to the compose page. 
- if ((empty($compose_to)) - ||  sizeof($sel)- <  1)
 
- /* Open addressbook with error messages on. 
-  remote backends (LDAP) are enabled because they can be used. (list_addr function) 
- // FIXME: do we really have to stop use of address book when localbackend is not present? 
- if($abook->localbackend - ==  0) {
 
- $current_backend - =  $abook->localbackend;
 
-     $current_backend - = (int)  $new_backend;
 
- $abook_selection - =  ' ';
 
- $list_backends - =  array();
 
- if (count($abook->backends) - >  1) {
 
-     foreach($abook->get_backend_list() as $oBackend) { 
-         if ($oBackend->listing) { 
-             $list_backends[$oBackend->bnum]- = $oBackend->sname;
 
-     if (count($list_backends)- > 1) {
 
-         $abook_selection - =  addSelect('new_bnum',$list_backends,$current_backend,true)
 
- $form_url - =  'addressbook.php';
 
- /* Handle user's actions */ 
-     // first, validate security token 
-     /************************************************** 
-      **************************************************/ 
-             $r - =  $abook->add($addaddr, $backend);
 
-             $r - =  $abook->add($addaddr, $abook->localbackend);
 
-         /* Handle error messages */ 
-             /* Remove backend name from error string */ 
-         /************************************************ 
-          ************************************************/ 
-         if ((!empty($deladdr)) - &&  sizeof($sel)- >  0) {
 
-             /* The selected addresses are identified by "backend_nickname". * 
-              * Sort the list and process one backend at the time            */ 
-             for ($i - =  0 ; (($i- <  sizeof($sel))- &&  !$delfailed) ; $i- ++ ) {
 
-                 list ($sbackend, $snick)- =  explode('_', $sel[$i], 2);
-                 /* When we get to a new backend, process addresses in * 
-                 if ($prevback - !=  $sbackend- &&  $prevback- != - 1) {
 
-                     $r - =  $abook->remove($subsel, $prevback);
 
-                         $formerror - =  $abook->error;
 
-                 /* Queue for processing */ 
-                 $r - =  $abook->remove($subsel, $prevback);
 
-                 if (!$r) { /* Handle errors */ 
-                     $formerror - =  $abook->error;
 
-                 $defselected  - =  $orig_sel;
 
-         /************************************************ 
-          * Compose to selected address(es)              * 
-          ************************************************/ 
-         } else if ((!empty($compose_to)) - &&  sizeof($sel)- >  0) {
 
-             // The selected addresses are identified by "backend_nickname" 
-             for ($i - =  0 ; (($i- <  sizeof($sel))- &&  !$lookup_failed) ; $i- ++ ) {
 
-                 list ($sbackend, $snick)- =  explode('_', $sel[$i], 2);
-                 $data - =  $abook->lookup($snick, $sbackend);
 
-                     $formerror - =  $abook->error;
 
-                     $addr - =  $abook->full_address($data);
 
-                         $send_to - .=  $addr- .  ', ';
 
-             if ($lookup_failed - ||  empty($send_to)) {
 
-                 // we skipped the page header above for this functionality, so add it here 
-             // send off to compose screen 
-                 $send_to - =  trim($send_to, ', ');
 
-             /*********************************************** 
-              * Update/modify address                       * 
-              ***********************************************/ 
-                 /* Stage one: Copy data into form */ 
-                 if (- isset ($sel)- &&  sizeof($sel)- >  0) {
 
-                         $formerror - =  _("You can only edit one address at the time");
 
-                         $olddata - =  $abook->lookup($enick, $ebackend);
 
-                         // Test if $olddata really contains anything and return an error message if it doesn't 
-                             /* Display the "new address" form */ 
-                             echo  addHidden('oldnick', $olddata['nickname'])- . 
-                 } elseif ($doedit - ==  1) {
 
-                     /* Stage two: Write new data */ 
-                     $r - =  $abook->modify($oldnick, $newdata, $backend);
 
-                     /* Handle error messages */ 
-                         /* Display the "new address" form again */ 
-                      * $editaddr is set, but $sel (address selection in address listing) 
-                      * and $doedit (address edit form) are not set. 
-                      * Assume that user clicked on "Edit address" without selecting any address. 
-                     $formerror - =  _("Please select address that you want to edit");
 
-                 } /* end of edit stage detection */ 
-             } /* !empty($editaddr)                     - Update/modify address */ 
-         } /* (!empty($deladdr)) && sizeof($sel) > 0    - Delete address(es)  
-           or (!empty($compose_to)) && sizeof($sel) > 0 - Compose to address(es) */ 
-     } /* !empty($addaddr['nickname'])                  - Add new address */ 
-     // Some times we end output before forms are printed 
- //FIXME: use footer.tpl; remove HTML from core 
- /* =================================================================== * 
-  * The following is only executed on a GET request, or on a POST when  * 
-  * a user is added, or when "delete" or "modify" was successful.       * 
-  * =================================================================== */ 
- /* Display error messages */ 
- if (!empty($formerror)) { 
- /* Display the address management part */ 
- while (- list ($k, $backend)- =  each ($abook->backends)) {
 
-     $a['BackendID'] - =  $backend->bnum;
 
-     $a['BackendSource'] - =  $backend->sname;
 
-     $a['BackendWritable'] - =  $backend->writeable;
 
-     $a['Addresses'] - =  array();
 
-     // don't do address lookup if we are not viewing that backend 
-     if ($backend->bnum - ==  $current_backend) {
 
-         $alist - =  $abook->list_addr($backend->bnum);
 
-         /* check return (array with data or boolean false) */ 
-             usort($alist,'alistcmp'); 
-             $addresses[$backend->bnum] - =  $a;
 
-             // list_addr() returns boolean 
-         $addresses[$backend->bnum] - =  $a;
 
- $current_page_args - =  array(
 
-                            'abook_sort_order' - =>  $abook_sort_order,
 
-                            'new_bnum'         - =>  $current_backend,
 
-                            'page_number'      - =>  $page_number,
 
- // note that plugins can add to $current_page_args as well as 
- // filter the address list 
- $temp - =  array(&$addresses, &$current_backend, &$page_number, &$current_page_args);
 
- do_hook('abook_list_filter', $temp); 
- // NOTE to address book backend authors and plugin authors: if a backend does 
- //      pagination (which might be more efficient), it needs to place a key 
- //      in every address listing it returns called "paginated", whose value 
- //      should evaluate to boolean TRUE.  However, if a plugin will also be 
- //      used on the hook above to filter the addresses (perhaps by group), then 
- //      the backend should be made compatible with the filtering plugin and 
- //      should do the actual filtering too.  Otherwise, the backend will paginate 
- //      before filtering has taken place, the output of which is clearly wrong. 
- //      It is proposed that filtering be based on a GET/POST variable called 
- //      "abook_groups_X" where X is the current backend number.  The value of 
- //      this varaible would be an array of possible filter names, which the 
- //      plugin and the backend would both know about.  The plugin would only 
- //      filter based on that value if the backend didn't already do it.  The 
- //      backend can insert a "grouped" key into all address listings, whose 
- //      value evaluates to boolean TRUE, telling the plugin not to do any 
- //      filtering itself.  For an example of this implementation, see the 
- //      Address Book Grouping and Pagination plugin. 
- // if no pagination was done by a plugin or the abook 
- // backend (which is indicated by the presence of a 
- // "paginated" key within all of the address entries 
- // in the list of addresses for the backend currently 
- // being viewed), then we provide default pagination 
-  &&  is_array($addresses[$current_backend]['Addresses'])
-  &&  empty($addresses[$current_backend]['Addresses'][0]['paginated'])) {
-     // at this point, we assume the current list is 
-     $total_addresses - =  sizeof($addresses[$current_backend]['Addresses']);
 
-     // iterate through all the entries, building list of addresses 
-     // to keep based on current page 
-     $new_address_list - =  array();
 
-     $total_pages - =  ceil($total_addresses- /  $page_size);
 
-     if ($page_number - >  $total_pages) $page_number- =  $total_pages;
 
-     foreach ($addresses[$current_backend]['Addresses'] as $addr) { 
-         if ($page_item_count - >  $page_size) {
 
-         if ($page_count - ==  $page_number)
 
-             $new_address_list[] - =  $addr;
 
-     $addresses[$current_backend]['Addresses'] - =  $new_address_list;
 
-     $oTemplate->assign('show_all', $show_all); 
-     $oTemplate->assign('page_number', $page_number); 
-     $oTemplate->assign('page_size', $page_size); 
-     $oTemplate->assign('total_addresses', $total_addresses); 
-     $oTemplate->assign('abook_compact_paginator', $abook_compact_paginator); 
-     $oTemplate->assign('abook_page_selector', $abook_page_selector); 
-     $oTemplate->assign('current_page_args', $current_page_args); 
-     $oTemplate->assign('abook_page_selector_max', $abook_page_selector_max); 
-     $oTemplate->assign('addresses', $addresses); 
-     $oTemplate->assign('current_backend', $current_backend); 
-     $oTemplate->assign('backends', $list_backends); 
-     $oTemplate->assign('abook_has_extra_field', $abook->add_extra_field); 
-     $oTemplate->assign('compose_new_win', $compose_new_win); 
-     $oTemplate->assign('compose_height', $compose_height); 
-     $oTemplate->assign('compose_width', $compose_width); 
-     $oTemplate->assign('form_action', $form_url); 
-     $oTemplate->display('addressbook_list.tpl'); 
- /* Display the "new address" form */ 
- //FIXME: Remove HTML from here! (echo abook_create_form() is OK, since it is all template based output 
- echo  '<a name="AddAddress"></a>'- .  "\n";
-                        _("Add to address book"), 
- /* Hook for extra address book blocks */ 
- do_hook('addressbook_bottom', $null); 
- $oTemplate->display('footer.tpl'); 
 
	
		Documentation generated on Mon, 13 Jan 2020 04:22:00 +0100 by phpDocumentor 1.4.3