forked from udx/wp-stateless
-
Notifications
You must be signed in to change notification settings - Fork 0
/
wp-stateless-media.php
97 lines (90 loc) · 3.44 KB
/
wp-stateless-media.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php
/**
* Plugin Name: WP-Stateless
* Plugin URI: https://www.usabilitydynamics.com
* Description: Stores and serves WordPress media files directly from Google Cloud Storage.
* Author: Usability Dynamics, Inc.
* Version: 1.9.1
* Text Domain: stateless-media
* Author URI: https://www.usabilitydynamics.com
*
* Copyright 2012 - 2016 Usability Dynamics, Inc. ( email : [email protected] )
*
*/
if( !function_exists( 'ud_get_stateless_media' ) ) {
/**
* Returns Stateless Media Instance
*
* @author Usability Dynamics, Inc.
* @since 0.2.0
* @param bool $key
* @param null $default
* @return
*/
function ud_get_stateless_media( $key = false, $default = null ) {
$instance = \wpCloud\StatelessMedia\Bootstrap::get_instance();
return $key ? $instance->get( $key, $default ) : $instance;
}
}
if( !function_exists( 'ud_check_stateless_media' ) ) {
/**
* Determines if plugin can be initialized.
*
* @author Usability Dynamics, Inc.
* @since 0.2.0
*/
function ud_check_stateless_media() {
global $_ud_stateless_media_error;
try {
//** Be sure composer.json exists */
$file = dirname( __FILE__ ) . '/composer.json';
if( !file_exists( $file ) ) {
throw new Exception( __( 'Distributive is broken. composer.json is missed. Try to remove and upload plugin again.', 'stateless-media' ) );
}
$data = json_decode( file_get_contents( $file ), true );
//** Be sure PHP version is correct. */
if( !empty( $data[ 'require' ][ 'php' ] ) ) {
preg_match( '/^([><=]*)([0-9\.]*)$/', $data[ 'require' ][ 'php' ], $matches );
if( !empty( $matches[1] ) && !empty( $matches[2] ) ) {
if( !version_compare( PHP_VERSION, $matches[2], $matches[1] ) ) {
throw new Exception( sprintf( __( 'Plugin requires PHP %s or higher. Your current PHP version is %s', 'stateless-media' ), $matches[2], PHP_VERSION ) );
}
}
}
//** Be sure vendor autoloader exists */
if ( file_exists( dirname( __FILE__ ) . '/vendor/autoload.php' ) ) {
require_once ( dirname( __FILE__ ) . '/vendor/autoload.php' );
} else {
throw new Exception( sprintf( __( 'Distributive is broken. %s file is missed. Try to remove and upload plugin again.', 'stateless-media' ), dirname( __FILE__ ) . '/vendor/autoload.php' ) );
}
//** Be sure our Bootstrap class exists */
if( !class_exists( '\wpCloud\StatelessMedia\Bootstrap' ) ) {
throw new Exception( __( 'Distributive is broken. Plugin loader is not available. Try to remove and upload plugin again.', 'stateless-media' ) );
}
} catch( Exception $e ) {
$_ud_stateless_media_error = $e->getMessage();
return false;
}
return true;
}
}
if( !function_exists( 'ud_stateless_media_message' ) ) {
/**
* Renders admin notes in case there are errors on plugin init
*
* @author Usability Dynamics, Inc.
* @since 1.0.0
*/
function ud_stateless_media_message() {
global $_ud_stateless_media_error;
if( !empty( $_ud_stateless_media_error ) ) {
$message = sprintf( __( '<p><b>%s</b> can not be initialized. %s</p>', 'stateless-media' ), 'Stateless Media', $_ud_stateless_media_error );
echo '<div class="error fade" style="padding:11px;">' . $message . '</div>';
}
}
add_action( 'admin_notices', 'ud_stateless_media_message' );
}
if( ud_check_stateless_media() ) {
//** Initialize. */
ud_get_stateless_media();
}