当前位置: 首页>>代码示例>>PHP>>正文


PHP rcube_utils::idn_to_utf8方法代码示例

本文整理汇总了PHP中rcube_utils::idn_to_utf8方法的典型用法代码示例。如果您正苦于以下问题:PHP rcube_utils::idn_to_utf8方法的具体用法?PHP rcube_utils::idn_to_utf8怎么用?PHP rcube_utils::idn_to_utf8使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在rcube_utils的用法示例。


在下文中一共展示了rcube_utils::idn_to_utf8方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: render_page

 /**
  * Callback function when HTML page is rendered
  * We'll add an overlay box here.
  */
 function render_page($p)
 {
     if ($_SESSION['plugin.newuserdialog'] && $p['template'] == 'mail') {
         $this->add_texts('localization');
         $rcmail = rcmail::get_instance();
         $identity = $rcmail->user->get_identity();
         $identities_level = intval($rcmail->config->get('identities_level', 0));
         // compose user-identity dialog
         $table = new html_table(array('cols' => 2));
         $table->add('title', $this->gettext('name'));
         $table->add(null, html::tag('input', array('type' => 'text', 'name' => '_name', 'value' => $identity['name'], 'disabled' => $identities_level == 4)));
         $table->add('title', $this->gettext('email'));
         $table->add(null, html::tag('input', array('type' => 'text', 'name' => '_email', 'value' => rcube_utils::idn_to_utf8($identity['email']), 'disabled' => in_array($identities_level, array(1, 3, 4)))));
         $table->add('title', $this->gettext('organization'));
         $table->add(null, html::tag('input', array('type' => 'text', 'name' => '_organization', 'value' => $identity['organization'], 'disabled' => $identities_level == 4)));
         $table->add('title', $this->gettext('signature'));
         $table->add(null, html::tag('textarea', array('name' => '_signature', 'rows' => '3'), $identity['signature']));
         // add overlay input box to html page
         $rcmail->output->add_footer(html::tag('form', array('id' => 'newuserdialog', 'action' => $rcmail->url('plugin.newusersave'), 'method' => 'post'), html::p('hint', rcube::Q($this->gettext('identitydialoghint'))) . $table->show() . html::p(array('class' => 'formbuttons'), html::tag('input', array('type' => 'submit', 'class' => 'button mainaction', 'value' => $this->gettext('save'))))));
         $title = rcube::JQ($this->gettext('identitydialogtitle'));
         $script = "\n\$('#newuserdialog').show()\n  .dialog({modal:true, resizable:false, closeOnEscape:false, width:450, title:'{$title}'})\n  .submit(function() {\n    var i, request = {}, form = \$(this).serializeArray();\n    for (i in form)\n      request[form[i].name] = form[i].value;\n\n      rcmail.http_post('plugin.newusersave', request, true);\n      return false;\n  });\n\n\$('input[name=_name]').focus();\nrcube_webmail.prototype.new_user_dialog_close = function() { \$('#newuserdialog').dialog('close'); }\n";
         // disable keyboard events for messages list (#1486726)
         $rcmail->output->add_script($script, 'docready');
         $this->include_stylesheet('newuserdialog.css');
     }
 }
开发者ID:JotapePinheiro,项目名称:roundcubemail,代码行数:30,代码来源:new_user_dialog.php

示例2: create_identity

 public function create_identity($p)
 {
     $rcmail = rcmail::get_instance();
     // prefs are set in create_user()
     if ($this->prefs) {
         if ($this->prefs['full_name']) {
             $p['record']['name'] = $this->prefs['full_name'];
         }
         if (($this->identities_level == 0 || $this->identities_level == 2) && $this->prefs['email_address']) {
             $p['record']['email'] = $this->prefs['email_address'];
         }
         if ($this->prefs['___signature___']) {
             $p['record']['signature'] = $this->prefs['___signature___'];
         }
         if ($this->prefs['reply_to']) {
             $p['record']['reply-to'] = $this->prefs['reply_to'];
         }
         if (($this->identities_level == 0 || $this->identities_level == 1) && isset($this->prefs['identities']) && $this->prefs['identities'] > 1) {
             for ($i = 1; $i < $this->prefs['identities']; $i++) {
                 unset($ident_data);
                 $ident_data = array('name' => '', 'email' => '');
                 // required data
                 if ($this->prefs['full_name' . $i]) {
                     $ident_data['name'] = $this->prefs['full_name' . $i];
                 }
                 if ($this->identities_level == 0 && $this->prefs['email_address' . $i]) {
                     $ident_data['email'] = $this->prefs['email_address' . $i];
                 } else {
                     $ident_data['email'] = $p['record']['email'];
                 }
                 if ($this->prefs['reply_to' . $i]) {
                     $ident_data['reply-to'] = $this->prefs['reply_to' . $i];
                 }
                 if ($this->prefs['___sig' . $i . '___']) {
                     $ident_data['signature'] = $this->prefs['___sig' . $i . '___'];
                 }
                 // insert identity
                 $rcmail->user->insert_identity($ident_data);
             }
         }
         // copy address book
         $contacts = $rcmail->get_address_book(null, true);
         if ($contacts && count($this->abook)) {
             foreach ($this->abook as $rec) {
                 // #1487096 handle multi-address and/or too long items
                 $rec['email'] = array_shift(explode(';', $rec['email']));
                 if (rcube_utils::check_email(rcube_utils::idn_to_ascii($rec['email']))) {
                     $rec['email'] = rcube_utils::idn_to_utf8($rec['email']);
                     $contacts->insert($rec, true);
                 }
             }
         }
         // mark identity as complete for following hooks
         $p['complete'] = true;
     }
     return $p;
 }
开发者ID:bbspike,项目名称:sentora-core,代码行数:57,代码来源:squirrelmail_usercopy.php

示例3: save


//.........这里部分代码省略.........
     }
     // dovecotpw
     if (strpos($sql, '%D') !== FALSE) {
         if (!($dovecotpw = $rcmail->config->get('password_dovecotpw'))) {
             $dovecotpw = 'dovecotpw';
         }
         if (!($method = $rcmail->config->get('password_dovecotpw_method'))) {
             $method = 'CRAM-MD5';
         }
         // use common temp dir
         $tmp_dir = $rcmail->config->get('temp_dir');
         $tmpfile = tempnam($tmp_dir, 'roundcube-');
         $pipe = popen("{$dovecotpw} -s '{$method}' > '{$tmpfile}'", "w");
         if (!$pipe) {
             unlink($tmpfile);
             return PASSWORD_CRYPT_ERROR;
         } else {
             fwrite($pipe, $passwd . "\n", 1 + strlen($passwd));
             usleep(1000);
             fwrite($pipe, $passwd . "\n", 1 + strlen($passwd));
             pclose($pipe);
             $newpass = trim(file_get_contents($tmpfile), "\n");
             if (!preg_match('/^\\{' . $method . '\\}/', $newpass)) {
                 return PASSWORD_CRYPT_ERROR;
             }
             if (!$rcmail->config->get('password_dovecotpw_with_method')) {
                 $newpass = trim(str_replace('{' . $method . '}', '', $newpass));
             }
             unlink($tmpfile);
         }
         $sql = str_replace('%D', $db->quote($newpass), $sql);
     }
     // hashed passwords
     if (preg_match('/%[n|q]/', $sql)) {
         if (!extension_loaded('hash')) {
             rcube::raise_error(array('code' => 600, 'type' => 'php', 'file' => __FILE__, 'line' => __LINE__, 'message' => "Password plugin: 'hash' extension not loaded!"), true, false);
             return PASSWORD_ERROR;
         }
         if (!($hash_algo = strtolower($rcmail->config->get('password_hash_algorithm')))) {
             $hash_algo = 'sha1';
         }
         $hash_passwd = hash($hash_algo, $passwd);
         $hash_curpass = hash($hash_algo, $curpass);
         if ($rcmail->config->get('password_hash_base64')) {
             $hash_passwd = base64_encode(pack('H*', $hash_passwd));
             $hash_curpass = base64_encode(pack('H*', $hash_curpass));
         }
         $sql = str_replace('%n', $db->quote($hash_passwd, 'text'), $sql);
         $sql = str_replace('%q', $db->quote($hash_curpass, 'text'), $sql);
     }
     // Handle clear text passwords securely (#1487034)
     $sql_vars = array();
     if (preg_match_all('/%[p|o]/', $sql, $m)) {
         foreach ($m[0] as $var) {
             if ($var == '%p') {
                 $sql = preg_replace('/%p/', '?', $sql, 1);
                 $sql_vars[] = (string) $passwd;
             } else {
                 // %o
                 $sql = preg_replace('/%o/', '?', $sql, 1);
                 $sql_vars[] = (string) $curpass;
             }
         }
     }
     $local_part = $rcmail->user->get_username('local');
     $domain_part = $rcmail->user->get_username('domain');
     $username = $_SESSION['username'];
     $host = $_SESSION['imap_host'];
     // convert domains to/from punnycode
     if ($rcmail->config->get('password_idn_ascii')) {
         $domain_part = rcube_utils::idn_to_ascii($domain_part);
         $username = rcube_utils::idn_to_ascii($username);
         $host = rcube_utils::idn_to_ascii($host);
     } else {
         $domain_part = rcube_utils::idn_to_utf8($domain_part);
         $username = rcube_utils::idn_to_utf8($username);
         $host = rcube_utils::idn_to_utf8($host);
     }
     // at least we should always have the local part
     $sql = str_replace('%l', $db->quote($local_part, 'text'), $sql);
     $sql = str_replace('%d', $db->quote($domain_part, 'text'), $sql);
     $sql = str_replace('%u', $db->quote($username, 'text'), $sql);
     $sql = str_replace('%h', $db->quote($host, 'text'), $sql);
     $res = $db->query($sql, $sql_vars);
     if (!$db->is_error()) {
         if (strtolower(substr(trim($sql), 0, 6)) == 'select') {
             if ($db->fetch_array($res)) {
                 return PASSWORD_SUCCESS;
             }
         } else {
             // This is the good case: 1 row updated
             if ($db->affected_rows($res) == 1) {
                 return PASSWORD_SUCCESS;
             }
             // @TODO: Some queries don't affect any rows
             // Should we assume a success if there was no error?
         }
     }
     return PASSWORD_ERROR;
 }
开发者ID:bbspike,项目名称:sentora-core,代码行数:101,代码来源:sql.php

示例4: identity_form

 public function identity_form($args)
 {
     $user = $this->get_user_email();
     $origin = array('type' => 'text', 'size' => 40, 'label' => rcube::Q($this->rcmail->gettext('email')), 'disabled' => 'disabled');
     $alias = array('name' => rcube::Q($this->gettext('Alias')), 'content' => array('email' => $args['form']['addressing']['content']['email']));
     unset($args['form']['addressing']['content']['email']);
     //unset($args['form']['addressing']['content']['standard']);
     $args['form'] = $this->array_insert_after('addressing', $args['form'], 'aliasing', $alias);
     $args['form']['addressing']['content'] = $this->array_insert_after('name', $args['form']['addressing']['content'], 'origin', $origin);
     $args['record']['origin'] = rcube_utils::idn_to_utf8($user['email']);
     $args['record']['email'] = !empty($args['record']['email']) ? $args['record']['email'] : rcube_utils::idn_to_utf8($user['email']);
     return $args;
 }
开发者ID:denpamusic,项目名称:rcube_identity_tweaks,代码行数:13,代码来源:swrn_identity_tweaks.php

示例5: current_username

 /**
  * GUI object 'username'
  * Showing IMAP username of the current session
  *
  * @param array Named tag parameters (currently not used)
  * @return string HTML code for the gui object
  */
 public function current_username($attrib)
 {
     static $username;
     // alread fetched
     if (!empty($username)) {
         return $username;
     }
     // Current username is an e-mail address
     if (strpos($_SESSION['username'], '@')) {
         $username = $_SESSION['username'];
     } else {
         if ($sql_arr = $this->app->user->get_identity()) {
             $username = $sql_arr['email'];
         } else {
             $username = $this->app->user->get_username();
         }
     }
     return rcube_utils::idn_to_utf8($username);
 }
开发者ID:Kuurusch,项目名称:enigmabox-openwrt,代码行数:26,代码来源:rcmail_output_html.php

示例6: mail_get_itip_object

 /**
  * Read the given mime message from IMAP and parse ical data
  *
  * @param string Mailbox name
  * @param string Message UID
  * @param string Message part ID and object index (e.g. '1.2:0')
  * @param string Object type filter (optional)
  *
  * @return array Hash array with the parsed iCal 
  */
 public function mail_get_itip_object($mbox, $uid, $mime_id, $type = null)
 {
     $charset = RCUBE_CHARSET;
     // establish imap connection
     $imap = $this->rc->get_storage();
     $imap->set_folder($mbox);
     if ($uid && $mime_id) {
         list($mime_id, $index) = explode(':', $mime_id);
         $part = $imap->get_message_part($uid, $mime_id);
         $headers = $imap->get_message_headers($uid);
         $parser = $this->get_ical();
         if ($part->ctype_parameters['charset']) {
             $charset = $part->ctype_parameters['charset'];
         }
         if ($part) {
             $objects = $parser->import($part, $charset);
         }
     }
     // successfully parsed events/tasks?
     if (!empty($objects) && ($object = $objects[$index]) && (!$type || $object['_type'] == $type)) {
         if ($parser->method) {
             $object['_method'] = $parser->method;
         }
         // store the message's sender address for comparisons
         $object['_sender'] = preg_match(self::$email_regex, $headers->from, $m) ? $m[1] : '';
         $object['_sender_utf'] = rcube_utils::idn_to_utf8($object['_sender']);
         // check if this is an instance of a recurring event/task
         self::identify_recurrence_instance($object);
         return $object;
     }
     return null;
 }
开发者ID:Fneufneu,项目名称:libcalendaring,代码行数:42,代码来源:libcalendaring.php

示例7: save_vcard

 /**
  * Handler for request action
  */
 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();
     $storage = $rcmail->get_storage();
     $storage->set_folder($mbox);
     if ($uid && $mime_id) {
         list($mime_id, $index) = explode(':', $mime_id);
         $part = $storage->get_message_part($uid, $mime_id, null, null, 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();
 }
开发者ID:bbspike,项目名称:sentora-core,代码行数:53,代码来源:vcard_attachments.php

示例8: list_identities

 /**
  * Return a list of all identities linked with this user
  *
  * @param string $sql_add   Optional WHERE clauses
  * @param bool   $formatted Format identity email and name
  *
  * @return array List of identities
  */
 function list_identities($sql_add = '', $formatted = false)
 {
     $result = array();
     $sql_result = $this->db->query("SELECT * FROM " . $this->db->table_name('identities') . " WHERE del <> 1 AND user_id = ?" . ($sql_add ? " " . $sql_add : "") . " ORDER BY " . $this->db->quote_identifier('standard') . " DESC, " . $this->db->quote_identifier('name') . " ASC, " . $this->db->quote_identifier('email') . " ASC, " . $this->db->quote_identifier('identity_id') . " ASC", $this->ID);
     while ($sql_arr = $this->db->fetch_assoc($sql_result)) {
         if ($formatted) {
             $ascii_email = format_email($sql_arr['email']);
             $utf8_email = format_email(rcube_utils::idn_to_utf8($ascii_email));
             $sql_arr['email_ascii'] = $ascii_email;
             $sql_arr['email'] = $utf8_email;
             $sql_arr['ident'] = format_email_recipient($ascii_email, $sql_arr['name']);
         }
         $result[] = $sql_arr;
     }
     return $result;
 }
开发者ID:alecchisi,项目名称:roundcubemail,代码行数:24,代码来源:rcube_user.php

示例9: rcube_idn_to_utf8

function rcube_idn_to_utf8($str)
{
    return rcube_utils::idn_to_utf8($str);
}
开发者ID:noikiy,项目名称:roundcubemail,代码行数:4,代码来源:bc.php

示例10: create_identity

 public function create_identity($p)
 {
     $rcmail = rcmail::get_instance();
     // prefs are set in create_user()
     if ($this->prefs) {
         if ($this->prefs['full_name']) {
             $p['record']['name'] = $this->prefs['full_name'];
         }
         if (($this->identities_level == 0 || $this->identities_level == 2) && $this->prefs['email_address']) {
             $p['record']['email'] = $this->prefs['email_address'];
         }
         if ($this->prefs['___signature___']) {
             $p['record']['signature'] = $this->prefs['___signature___'];
         }
         if ($this->prefs['reply_to']) {
             $p['record']['reply-to'] = $this->prefs['reply_to'];
         }
         if (($this->identities_level == 0 || $this->identities_level == 1) && isset($this->prefs['identities']) && $this->prefs['identities'] > 1) {
             for ($i = 1; $i < $this->prefs['identities']; $i++) {
                 unset($ident_data);
                 $ident_data = array('name' => '', 'email' => '');
                 // required data
                 if ($this->prefs['full_name' . $i]) {
                     $ident_data['name'] = $this->prefs['full_name' . $i];
                 }
                 if ($this->identities_level == 0 && $this->prefs['email_address' . $i]) {
                     $ident_data['email'] = $this->prefs['email_address' . $i];
                 } else {
                     $ident_data['email'] = $p['record']['email'];
                 }
                 if ($this->prefs['reply_to' . $i]) {
                     $ident_data['reply-to'] = $this->prefs['reply_to' . $i];
                 }
                 if ($this->prefs['___sig' . $i . '___']) {
                     $ident_data['signature'] = $this->prefs['___sig' . $i . '___'];
                 }
                 // insert identity
                 $rcmail->user->insert_identity($ident_data);
             }
         }
         // copy address book
         $contacts = $rcmail->get_address_book(null, true);
         $addresses = array();
         $groups = array();
         if ($contacts && !empty($this->abook)) {
             foreach ($this->abook as $rec) {
                 // #1487096: handle multi-address and/or too long items
                 // #1487858: convert multi-address contacts into groups
                 $emails = preg_split('/[;,]/', $rec['email'], -1, PREG_SPLIT_NO_EMPTY);
                 $group_id = null;
                 // create group for addresses
                 if (count($emails) > 1) {
                     if (!($group_id = $groups[$rec['name']])) {
                         if ($group = $contacts->create_group($rec['name'])) {
                             $group_id = $group['id'];
                             $groups[$rec['name']] = $group_id;
                         }
                     }
                 }
                 // create contacts
                 foreach ($emails as $email) {
                     if (!($contact_id = $addresses[$email]) && rcube_utils::check_email(rcube_utils::idn_to_ascii($email))) {
                         $rec['email'] = rcube_utils::idn_to_utf8($email);
                         if ($contact_id = $contacts->insert($rec, true)) {
                             $addresses[$email] = $contact_id;
                         }
                     }
                     if ($group_id && $contact_id) {
                         $contacts->add_to_group($group_id, array($contact_id));
                     }
                 }
             }
         }
         // mark identity as complete for following hooks
         $p['complete'] = true;
     }
     return $p;
 }
开发者ID:jimjag,项目名称:roundcubemail,代码行数:78,代码来源:squirrelmail_usercopy.php

示例11: compose_itip_message

 /**
  * Helper function to build a Mail_mime object to send an iTip message
  *
  * @param array   Event object to send
  * @param string  iTip method (REQUEST|REPLY|CANCEL)
  * @param boolean Request RSVP
  * @return object Mail_mime object with message data
  */
 public function compose_itip_message($event, $method, $rsvp = true)
 {
     $from = rcube_utils::idn_to_ascii($this->sender['email']);
     $from_utf = rcube_utils::idn_to_utf8($from);
     $sender = format_email_recipient($from, $this->sender['name']);
     // truncate list attendees down to the recipient of the iTip Reply.
     // constraints for a METHOD:REPLY according to RFC 5546
     if ($method == 'REPLY') {
         $replying_attendee = null;
         $reply_attendees = array();
         foreach ($event['attendees'] as $attendee) {
             if ($attendee['role'] == 'ORGANIZER') {
                 $reply_attendees[] = $attendee;
             } else {
                 if (strcasecmp($attendee['email'], $from) == 0 || strcasecmp($attendee['email'], $from_utf) == 0) {
                     $replying_attendee = $attendee;
                     if ($attendee['status'] != 'DELEGATED') {
                         unset($replying_attendee['rsvp']);
                         // unset the RSVP attribute
                     }
                 } else {
                     if (!empty($attendee['delegated-to']) && (strcasecmp($attendee['delegated-to'], $from) == 0 || strcasecmp($attendee['delegated-to'], $from_utf) == 0) || !empty($attendee['delegated-from']) && (strcasecmp($attendee['delegated-from'], $from) == 0 || strcasecmp($attendee['delegated-from'], $from_utf) == 0)) {
                         $reply_attendees[] = $attendee;
                     }
                 }
             }
         }
         if ($replying_attendee) {
             array_unshift($reply_attendees, $replying_attendee);
             $event['attendees'] = $reply_attendees;
         }
         if ($event['recurrence']) {
             unset($event['recurrence']['EXCEPTIONS']);
         }
     } else {
         if ($method == 'REQUEST') {
             foreach ($event['attendees'] as $i => $attendee) {
                 if (($rsvp || !isset($attendee['rsvp'])) && ($attendee['status'] != 'DELEGATED' && $attendee['role'] != 'NON-PARTICIPANT')) {
                     $event['attendees'][$i]['rsvp'] = (bool) $rsvp;
                 }
             }
         } else {
             if ($method == 'CANCEL') {
                 if ($event['recurrence']) {
                     unset($event['recurrence']['EXCEPTIONS']);
                 }
             }
         }
     }
     // compose multipart message using PEAR:Mail_Mime
     $message = new Mail_mime("\r\n");
     $message->setParam('text_encoding', 'quoted-printable');
     $message->setParam('head_encoding', 'quoted-printable');
     $message->setParam('head_charset', RCUBE_CHARSET);
     $message->setParam('text_charset', RCUBE_CHARSET . ";\r\n format=flowed");
     $message->setContentType('multipart/alternative');
     // compose common headers array
     $headers = array('From' => $sender, 'Date' => $this->rc->user_date(), 'Message-ID' => $this->rc->gen_message_id(), 'X-Sender' => $from);
     if ($agent = $this->rc->config->get('useragent')) {
         $headers['User-Agent'] = $agent;
     }
     $message->headers($headers);
     // attach ics file for this event
     $ical = libcalendaring::get_ical();
     $ics = $ical->export(array($event), $method, false, $method == 'REQUEST' && $this->plugin->driver ? array($this->plugin->driver, 'get_attachment_body') : false);
     $filename = $event['_type'] == 'task' ? 'todo.ics' : 'event.ics';
     $message->addAttachment($ics, 'text/calendar', $filename, false, '8bit', '', RCUBE_CHARSET . "; method=" . $method);
     return $message;
 }
开发者ID:claudineyqr,项目名称:Kolab-Roundcube-Libcalendaring,代码行数:77,代码来源:libcalendaring_itip.php

示例12: save

 function save($curpass, $passwd)
 {
     $rcmail = rcmail::get_instance();
     if (!($sql = $rcmail->config->get('password_query'))) {
         $sql = 'SELECT update_passwd(%c, %u)';
     }
     if ($dsn = $rcmail->config->get('password_db_dsn')) {
         $db = rcube_db::factory($dsn, '', false);
         $db->set_debug((bool) $rcmail->config->get('sql_debug'));
     } else {
         $db = $rcmail->get_dbh();
     }
     if ($db->is_error()) {
         return PASSWORD_ERROR;
     }
     // new password - default hash method
     if (strpos($sql, '%P') !== false) {
         $password = password::hash_password($passwd);
         if ($password === false) {
             return PASSWORD_CRYPT_ERROR;
         }
         $sql = str_replace('%P', $db->quote($password), $sql);
     }
     // old password - default hash method
     if (strpos($sql, '%O') !== false) {
         $password = password::hash_password($curpass);
         if ($password === false) {
             return PASSWORD_CRYPT_ERROR;
         }
         $sql = str_replace('%O', $db->quote($password), $sql);
     }
     // crypted password (deprecated, use %P)
     if (strpos($sql, '%c') !== false) {
         $password = password::hash_password($passwd, 'crypt', false);
         if ($password === false) {
             return PASSWORD_CRYPT_ERROR;
         }
         $sql = str_replace('%c', $db->quote($password), $sql);
     }
     // dovecotpw (deprecated, use %P)
     if (strpos($sql, '%D') !== false) {
         $password = password::hash_password($passwd, 'dovecot', false);
         if ($password === false) {
             return PASSWORD_CRYPT_ERROR;
         }
         $sql = str_replace('%D', $db->quote($password), $sql);
     }
     // hashed passwords (deprecated, use %P)
     if (strpos($sql, '%n') !== false) {
         $password = password::hash_password($passwd, 'hash', false);
         if ($password === false) {
             return PASSWORD_CRYPT_ERROR;
         }
         $sql = str_replace('%n', $db->quote($password, 'text'), $sql);
     }
     // hashed passwords (deprecated, use %P)
     if (strpos($sql, '%q') !== false) {
         $password = password::hash_password($curpass, 'hash', false);
         if ($password === false) {
             return PASSWORD_CRYPT_ERROR;
         }
         $sql = str_replace('%q', $db->quote($password, 'text'), $sql);
     }
     // Handle clear text passwords securely (#1487034)
     $sql_vars = array();
     if (preg_match_all('/%[p|o]/', $sql, $m)) {
         foreach ($m[0] as $var) {
             if ($var == '%p') {
                 $sql = preg_replace('/%p/', '?', $sql, 1);
                 $sql_vars[] = (string) $passwd;
             } else {
                 // %o
                 $sql = preg_replace('/%o/', '?', $sql, 1);
                 $sql_vars[] = (string) $curpass;
             }
         }
     }
     $local_part = $rcmail->user->get_username('local');
     $domain_part = $rcmail->user->get_username('domain');
     $username = $_SESSION['username'];
     $host = $_SESSION['imap_host'];
     // convert domains to/from punnycode
     if ($rcmail->config->get('password_idn_ascii')) {
         $domain_part = rcube_utils::idn_to_ascii($domain_part);
         $username = rcube_utils::idn_to_ascii($username);
         $host = rcube_utils::idn_to_ascii($host);
     } else {
         $domain_part = rcube_utils::idn_to_utf8($domain_part);
         $username = rcube_utils::idn_to_utf8($username);
         $host = rcube_utils::idn_to_utf8($host);
     }
     // at least we should always have the local part
     $sql = str_replace('%l', $db->quote($local_part, 'text'), $sql);
     $sql = str_replace('%d', $db->quote($domain_part, 'text'), $sql);
     $sql = str_replace('%u', $db->quote($username, 'text'), $sql);
     $sql = str_replace('%h', $db->quote($host, 'text'), $sql);
     $res = $db->query($sql, $sql_vars);
     if (!$db->is_error()) {
         if (strtolower(substr(trim($sql), 0, 6)) == 'select') {
             if ($db->fetch_array($res)) {
//.........这里部分代码省略.........
开发者ID:JotapePinheiro,项目名称:roundcubemail,代码行数:101,代码来源:sql.php

示例13: rcube_idn_to_utf8

function rcube_idn_to_utf8($str)
{
    _deprecation_warning(__FUNCTION__);
    return rcube_utils::idn_to_utf8($str);
}
开发者ID:JotapePinheiro,项目名称:roundcubemail,代码行数:5,代码来源:bc.php


注:本文中的rcube_utils::idn_to_utf8方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。