roundcubemail/plugins/vcard_attachments/vcard_attachments.php
function save_vcard()
    {
        $this->add_texts('localization', true);

        $uid     = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_POST);
        $mbox    = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST);
        $mime_id = rcube_utils::get_input_value('_part', rcube_utils::INPUT_POST);

        $rcmail  = rcmail::get_instance();
        $message = new rcube_message($uid, $mbox);

        if ($uid && $mime_id) {
            list($mime_id, $index) = explode(':', $mime_id);
            $part = $message->get_part_content($mime_id, null, true);
        }

        $error_msg = $this->gettext('vcardsavefailed');

        if ($part && ($vcards = rcube_vcard::import($part))
            && ($vcard = $vcards[$index]) && $vcard->displayname && $vcard->email
        ) {
            $CONTACTS = $this->get_address_book();
            $email    = $vcard->email[0];
            $contact  = $vcard->get_assoc();
            $valid    = true;

            // skip entries without an e-mail address or invalid
            if (empty($email) || !$CONTACTS->validate($contact, true)) {
                $valid = false;
            }
            else {
                // We're using UTF8 internally
                $email = rcube_utils::idn_to_utf8($email);

                // compare e-mail address
                $existing = $CONTACTS->search('email', $email, 1, false);
                // compare display name
                if (!$existing->count && $vcard->displayname) {
                    $existing = $CONTACTS->search('name', $vcard->displayname, 1, false);
                }

                if ($existing->count) {
                    $rcmail->output->command('display_message', $this->gettext('contactexists'), 'warning');
                    $valid = false;
                }
            }

            if ($valid) {
                $plugin = $rcmail->plugins->exec_hook('contact_create', array('record' => $contact, 'source' => null));
                $contact = $plugin['record'];

                if (!$plugin['abort'] && $CONTACTS->insert($contact))
                    $rcmail->output->command('display_message', $this->gettext('addedsuccessfully'), 'confirmation');
                else
                    $rcmail->output->command('display_message', $error_msg, 'error');
            }
        }
        else {
            $rcmail->output->command('display_message', $error_msg, 'error');
        }

        $rcmail->output->send();
    }
function save_vcard()
    {
        $this->add_texts('localization', true);

        $uid     = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_POST);
        $mbox    = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST);
        $mime_id = rcube_utils::get_input_value('_part', rcube_utils::INPUT_POST);

        $rcmail  = rcmail::get_instance();
        $message = new rcube_message($uid, $mbox);

        if ($uid && $mime_id) {
            list($mime_id, $index) = explode(':', $mime_id);
            $part = $message->get_part_content($mime_id, null, true);
        }

        $error_msg = $this->gettext('vcardsavefailed');

        if ($part && ($vcards = rcube_vcard::import($part))
            && ($vcard = $vcards[$index]) && $vcard->displayname && $vcard->email
        ) {
            $CONTACTS = $this->get_address_book();
            $email    = $vcard->email[0];
            $contact  = $vcard->get_assoc();
            $valid    = true;

            // skip entries without an e-mail address or invalid
            if (empty($email) || !$CONTACTS->validate($contact, true)) {
                $valid = false;
            }
            else {
                // We're using UTF8 internally
                $email = rcube_utils::idn_to_utf8($email);

                // compare e-mail address
                $existing = $CONTACTS->search('email', $email, 1, false);
                // compare display name
                if (!$existing->count && $vcard->displayname) {
                    $existing = $CONTACTS->search('name', $vcard->displayname, 1, false);
                }

                if ($existing->count) {
                    $rcmail->output->command('display_message', $this->gettext('contactexists'), 'warning');
                    $valid = false;
                }
            }

            if ($valid) {
                $plugin = $rcmail->plugins->exec_hook('contact_create', array('record' => $contact, 'source' => null));
                $contact = $plugin['record'];

                if (!$plugin['abort'] && $CONTACTS->insert($contact))
                    $rcmail->output->command('display_message', $this->gettext('addedsuccessfully'), 'confirmation');
                else
                    $rcmail->output->command('display_message', $error_msg, 'error');
            }
        }
        else {
            $rcmail->output->command('display_message', $error_msg, 'error');
        }

        $rcmail->output->send();
    }
function save_vcard ( ) { $ this -> add_texts ( 'localization' , true ) ; $ uid = rcube_utils :: get_input_value ( '_uid' , rcube_utils :: INPUT_POST ) ; $ mbox = rcube_utils :: get_input_value ( '_mbox' , rcube_utils :: INPUT_POST ) ; $ mime_id = rcube_utils :: get_input_value ( '_part' , rcube_utils :: INPUT_POST ) ; $ rcmail = rcmail :: get_instance ( ) ; $ message = new rcube_message ( $ uid , $ mbox ) ; if ( $ uid && $ mime_id ) { list ( $ mime_id , $ index ) = explode ( ':' , $ mime_id ) ; $ part = $ message -> get_part_content ( $ mime_id , null , true ) ; } $ error_msg = $ this -> gettext ( 'vcardsavefailed' ) ; if ( $ part && ( $ vcards = rcube_vcard :: import ( $ part ) ) && ( $ vcard = $ vcards [ $ index ] ) && $ vcard -> displayname && $ vcard -> email ) { $ CONTACTS = $ this -> get_address_book ( ) ; $ email = $ vcard -> email [ 0 ] ; $ contact = $ vcard -> get_assoc ( ) ; $ valid = true ; // skip entries without an e-mail address or invalid if ( empty ( $ email ) || ! $ CONTACTS -> validate ( $ contact , true ) ) { $ valid = false ; } else { // We're using UTF8 internally $ email = rcube_utils :: idn_to_utf8 ( $ email ) ; // compare e-mail address $ existing = $ CONTACTS -> search ( 'email' , $ email , 1 , false ) ; // compare display name if ( ! $ existing -> count && $ vcard -> displayname ) { $ existing = $ CONTACTS -> search ( 'name' , $ vcard -> displayname , 1 , false ) ; } if ( $ existing -> count ) { $ rcmail -> output -> command ( 'display_message' , $ this -> gettext ( 'contactexists' ) , 'warning' ) ; $ valid = false ; } } if ( $ valid ) { $ plugin = $ rcmail -> plugins -> exec_hook ( 'contact_create' , array ( 'record' => $ contact , 'source' => null ) ) ; $ contact = $ plugin [ 'record' ] ; if ( ! $ plugin [ 'abort' ] && $ CONTACTS -> insert ( $ contact ) ) $ rcmail -> output -> command ( 'display_message' , $ this -> gettext ( 'addedsuccessfully' ) , 'confirmation' ) ; else $ rcmail -> output -> command ( 'display_message' , $ error_msg , 'error' ) ; } } else { $ rcmail -> output -> command ( 'display_message' , $ error_msg , 'error' ) ; } $ rcmail -> output -> send ( ) ; }
Handler for request action
Handler for request action