1<?php 2 3/** 4 +-----------------------------------------------------------------------+ 5 | This file is part of the Roundcube Webmail client | 6 | | 7 | Copyright (C) The Roundcube Dev Team | 8 | | 9 | Licensed under the GNU General Public License version 3 or | 10 | any later version with exceptions for skins & plugins. | 11 | See the README file for a full license statement. | 12 | | 13 | PURPOSE: | 14 | A handler for contact groups rename action | 15 +-----------------------------------------------------------------------+ 16 | Author: Thomas Bruederli <roundcube@gmail.com> | 17 +-----------------------------------------------------------------------+ 18*/ 19 20class rcmail_action_contacts_group_rename extends rcmail_action_contacts_index 21{ 22 // only process ajax requests 23 protected static $mode = self::MODE_AJAX; 24 25 /** 26 * Request handler. 27 * 28 * @param array $args Arguments from the previous step(s) 29 */ 30 public function run($args = []) 31 { 32 $rcmail = rcmail::get_instance(); 33 $source = rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC); 34 $contacts = self::contact_source($source); 35 36 if ($contacts->readonly || !$contacts->groups) { 37 $rcmail->output->show_message('sourceisreadonly', 'warning'); 38 $rcmail->output->send(); 39 } 40 41 if ( 42 ($gid = rcube_utils::get_input_value('_gid', rcube_utils::INPUT_POST)) 43 && ($name = trim(rcube_utils::get_input_value('_name', rcube_utils::INPUT_POST, true))) 44 ) { 45 $newgid = null; 46 $plugin = $rcmail->plugins->exec_hook('group_rename', [ 47 'group_id' => $gid, 48 'name' => $name, 49 'source' => $source, 50 ]); 51 52 if (empty($plugin['abort'])) { 53 $newname = $contacts->rename_group($gid, $plugin['name'], $newgid); 54 } 55 else { 56 $newname = $plugin['result']; 57 } 58 } 59 60 if (!empty($newname)) { 61 $rcmail->output->show_message('grouprenamed', 'confirmation'); 62 $rcmail->output->command('update_contact_group', [ 63 'source' => $source, 64 'id' => $gid, 65 'name' => $newname, 66 'newid' => isset($newgid) ? $newgid : null 67 ]); 68 } 69 else { 70 $error = !empty($plugin['message']) ? $plugin['message'] : 'errorsaving'; 71 $rcmail->output->show_message($error, 'error'); 72 } 73 74 // send response 75 $rcmail->output->send(); 76 } 77} 78