cloudinary-8.x-1.x-dev/modules/cloudinary_sdk/cloudinary_sdk.module
modules/cloudinary_sdk/cloudinary_sdk.module
<?php
/**
* @file
* File for the Cloudinary SDK module.
*/
use Cloudinary\Cloudinary;
use Cloudinary\Configuration\Configuration;
use Drupal\Core\Url;
use Drupal\Core\Link;
use Drupal\cloudinary_sdk\CloudinarySdkConstantsInterface;
/**
* Cloudinary configuration initialization.
*/
function cloudinary_sdk_init($config = []) {
$init = !empty($config);
if (empty($config)) {
$config = cloudinary_sdk_config_load();
}
if (!empty($config)) {
if ($init) {
Configuration::instance()->init($config);
}
else {
Configuration::instance($config);
}
return TRUE;
}
return FALSE;
}
/**
* Load the cloudinary api settings from variables.
*
* @return array
* API configuration of cloudinary.
*/
function cloudinary_sdk_config_load() {
$settings = \Drupal::config('cloudinary_sdk.settings');
$cloud_name = $settings->get('cloudinary_sdk_cloud_name');
if (!$cloud_name) {
return NULL;
}
$config = [
'cloud' => array_filter([
'cloud_name' => $cloud_name,
'api_key' => $settings->get('cloudinary_sdk_api_key'),
'api_secret' => $settings->get('cloudinary_sdk_api_secret'),
]),
'url' => array_filter([
'secure_distribution' => $settings->get('cloudinary_sdk_cname'),
'private_cdn' => !empty($settings->get('cloudinary_sdk_cname')),
]),
'api' => array_filter([
'upload_prefix' => $settings->get('cloudinary_sdk_upload_prefix'),
]),
];
return $config;
}
/**
* The status of "CLOUDINARY SDK for PHP".
*/
function cloudinary_sdk_check($ver = FALSE) {
$version = $error_message = '';
if (!class_exists('\Cloudinary\Cloudinary')) {
$status = CloudinarySdkConstantsInterface::CLOUDINARY_SDK_NOT_LOADED;
$error_message = 'Cloudinary SDK not found';
}
elseif (Cloudinary::VERSION && version_compare(Cloudinary::VERSION, CloudinarySdkConstantsInterface::CLOUDINARY_SDK_MINIMUM_VERSION) < 0) {
$status = CloudinarySdkConstantsInterface::CLOUDINARY_SDK_OLD_VERSION;
$version = Cloudinary::VERSION;
}
else {
$status = CloudinarySdkConstantsInterface::CLOUDINARY_SDK_LOADED;
$version = Cloudinary::VERSION;
}
return $ver ? [$status, $version, $error_message] : $status;
}
/**
* Implements hook_help().
*/
function cloudinary_sdk_help($route_name) {
$renderer = \Drupal::service('renderer');
$logo = [
'#theme' => 'image',
'#uri' => \Drupal::service('extension.list.module')->getPath('cloudinary_sdk') . '/images/logo.png',
'#alt' => 'Cloudinary Logo',
'#width' => '344',
'#height' => '76',
];
$logo_image = $renderer->render($logo);
$api = [
'#theme' => 'image',
'#uri' => \Drupal::service('extension.list.module')->getPath('cloudinary_sdk') . '/images/api.png',
'#alt' => 'Cloudinary Logo',
'#width' => '600',
'#height' => '249',
];
$api_image = $renderer->render($api);
$output = '';
$url = Url::fromUri('http://www.cloudinary.com/');
$url_console = Url::fromUri('http://www.cloudinary.com/console');
switch ($route_name) {
case 'help.page.cloudinary_sdk':
$output .= '<p>' . Link::fromTextAndUrl($logo_image, $url)->toString() . '</p>';
$output .= '<h3>' . t('Features') . '</h3>';
$output .= '<ul>';
$output .= '<li>' . t("Image upload - Securely upload images or any other file, at any scale from any source. API for fast upload directly from your user's browsers or mobile apps.") . '</li>';
$output .= '<li>' . t('Cloud storage - Store as many images as needed. Our image hosting service stores images privately and safely with automatic backup and historical revisions.') . '</li>';
$output .= '<li>' . t('Powerful administration - Manage your media library interactively with our Digital Asset Management solution or via APIs. Gain insights using advanced analytics.') . '</li>';
$output .= '<li>' . t('Image manipulation - Manipulate your images dynamically to fit any graphics design. Apply effects, resizing, cropping, face detection, watermarks and tons of image processing capabilities.') . '</li>';
$output .= '<li>' . t("Fast delivery - Get your images delivered lightning-fast, responsive and highly optimized for any device in any location. Images are served via Akamai's worldwide CDN.") . '</li>';
$output .= '</ul>';
break;
case 'cloudinary_sdk.settings':
$output .= '<p>' . Link::fromTextAndUrl($logo_image, $url)->toString() . '</p>';
$output .= '<h3>' . t('API account') . '</h3>';
$output .= '<p>' . t('You can get the correct cloud name, API key and API secret on your account page.') . '</p>';
$output .= '<p>' . Link::fromTextAndUrl($api_image, $url_console)->toString() . '</p>';
break;
}
return $output;
}
