Exemplo n.º 1
0
 /**
  * 'contact_photo' hook handler to inject an identicon image
  */
 function contact_photo($args)
 {
     // pre-conditions, exit if photo already exists or invalid input
     if (!empty($args['url']) || !empty($args['data']) || empty($args['record']) && empty($args['email'])) {
         return $args;
     }
     $rcmail = rcmail::get_instance();
     // supporting edit/add action may be tricky, let's not do this
     if ($rcmail->action == 'show' || $rcmail->action == 'photo') {
         $email = $args['email'];
         if (!$email && $args['record']) {
             $addresses = rcube_addressbook::get_col_values('email', $args['record'], true);
             if (!empty($addresses)) {
                 $email = $addresses[0];
             }
         }
         if ($email) {
             require_once __DIR__ . '/identicon_engine.php';
             $identicon = new identicon_engine($email);
             if ($rcmail->action == 'show') {
                 // set photo URL using data-uri
                 if (($icon = $identicon->getBinary()) && ($icon = base64_encode($icon))) {
                     $mimetype = $identicon->getMimetype();
                     $args['url'] = sprintf('data:%s;base64,%s', $mimetype, $icon);
                 }
             } else {
                 // send the icon to the browser
                 $identicon = new identicon_engine($email);
                 if ($identicon->sendOutput()) {
                     exit;
                 }
             }
         }
     }
     return $args;
 }
Exemplo n.º 2
0
 function contact_photo($p)
 {
     // if no contact photo was found
     if (!$p['data']) {
         // TODO: try for every email address of contact record?
         $emails = rcube_addressbook::get_col_values('email', $p['record'], true);
         $email = $p['email'] ? $p['email'] : $emails[0];
         if ($email) {
             $this->gravatar_id = md5(strtolower($email));
             $url = $this->gravatar_url();
             $headers = get_headers($url);
             if (is_array($headers) && preg_match("/200 OK/", $headers[0])) {
                 $p['url'] = $url;
             }
         }
     }
     return $p;
 }