function opanda_avatar() { $leadId = isset($_GET['opanda_lead_id']) ? intval($_GET['opanda_lead_id']) : 0; if (empty($leadId)) { exit; } $size = isset($_GET['opanda_size']) ? intval($_GET['opanda_size']) : 40; if ($size > 500) { $size = 500; } if ($size <= 0) { $size = 40; } require_once OPANDA_BIZPANDA_DIR . '/admin/includes/leads.php'; $imageSource = OPanda_Leads::getLeadField($leadId, 'externalImage'); if (empty($imageSource) || !function_exists('wp_get_image_editor')) { exit; } $upload_dir = wp_upload_dir(); $basePath = $upload_dir['path'] . '/bizpanda/avatars/'; if (!file_exists($basePath) && !is_dir($basePath)) { mkdir($basePath, 0777, true); } $pathAvatar = $basePath . $leadId . 'x' . $size . '.jpeg'; $pathOriginal = $basePath . $leadId . 'x' . $size . '_org.jpeg'; $response = wp_remote_get($imageSource); if (is_wp_error($response) || !isset($response['headers']['content-type']) || !isset($response['body']) || empty($response['body']) || !preg_match("/image/i", $response['headers']['content-type'])) { OPanda_Leads::removeLeadField($leadId, 'externalImage'); exit; } file_put_contents($pathOriginal, $response['body']); $image = wp_get_image_editor($pathOriginal); if (is_wp_error($image)) { OPanda_Leads::removeLeadField($leadId, 'externalImage'); exit; } $image->resize($size, $size, true); $image->set_quality(90); $image->save($pathAvatar); $imageSource = OPanda_Leads::updateLeadField($leadId, '_image' . $size, $leadId . 'x' . $size . '.jpeg'); $image->stream(); exit; }
/** * Return an URL of the image to use as an avatar. * * @since 1.0.7 * @param int $leadId A lead ID for which we need to return the URL of the avatar. * @param int $size A size of the avatar (px). * @return string */ public static function getAvatarUrl($leadId, $email = null, $size = 40) { $imageSource = OPanda_Leads::getLeadField($leadId, 'externalImage', null); $image = OPanda_Leads::getLeadField($leadId, '_image' . $size, null); // getting an avatar from cache if (!empty($image)) { $upload_dir = wp_upload_dir(); $path = $upload_dir['path'] . '/bizpanda/avatars/' . $image; $url = $upload_dir['url'] . '/bizpanda/avatars/' . $image; if (file_exists($path)) { return $url; } self::removeLeadField($leadId, '_image' . $size); } // trying to process an external image if (!empty($imageSource) && function_exists('wp_get_image_editor')) { return admin_url('admin-ajax.php?action=opanda_avatar&opanda_lead_id=' . $leadId) . '&opanda_size=' . $size; } // else return a gravatar $gravatar = get_avatar($email, $size); if (preg_match('/https?\\:\\/\\/[^\'"]+/i', $gravatar, $match)) { return $match[0]; } return null; }