forked from wp-invoice/wp-invoice
-
Notifications
You must be signed in to change notification settings - Fork 0
/
wp-invoice.php
110 lines (101 loc) · 3.98 KB
/
wp-invoice.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
98
99
100
101
102
103
104
105
106
107
108
109
110
<?php
/**
* Plugin Name: WP-Invoice
* Plugin URI: https://www.usabilitydynamics.com/product/wp-invoice
* Description: WP-Invoice lets WordPress blog owners send itemized invoices to their clients. Ideal for web developers, SEO consultants, general contractors, or anyone with a WordPress blog and clients to bill.
* Author: Usability Dynamics, Inc.
* Version: 4.0.0
* Requires at least: 4.0
* Tested up to: 4.2.3
* Text Domain: wp-invoice
* Author URI: http://www.usabilitydynamics.com
* GitHub Plugin URI: wp-invoice/wp-invoice
* GitHub Branch: v4.0
* Support: https://wordpress.org/support/plugin/wp-invoice
* UserVoice: http://feedback.usabilitydynamics.com/forums/9692-wp-invoice
*
* Copyright 2012 - 2015 Usability Dynamics, Inc. ( email : info@usabilitydynamics.com )
*
*/
//** Define WPI Version */
if ( !defined( 'WP_INVOICE_VERSION_NUM' ) ) {
define( 'WP_INVOICE_VERSION_NUM', '4.0.0' );
}
//** Define shorthand for transdomain */
if ( !defined( 'WPI' ) ) {
define( 'WPI', 'wp-invoice' );
}
if( !function_exists( 'ud_get_wp_invoice' ) ) {
/**
* Returns Instance
*
* @author Usability Dynamics, Inc.
* @since 4.0.0
*/
function ud_get_wp_invoice( $key = false, $default = null ) {
$instance = \UsabilityDynamics\WPI\WPI_Bootstrap::get_instance();
return $key ? $instance->get( $key, $default ) : $instance;
}
}
if( !function_exists( 'ud_check_wp_invoice' ) ) {
/**
* Determines if plugin can be initialized.
*
* @author Usability Dynamics, Inc.
* @since 4.0.0
*/
function ud_check_wp_invoice() {
global $_ud_wp_invoice_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.', 'wp-invoice' ) );
}
$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', 'wp-invoice' ), $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.', 'wp-invoice' ), dirname( __FILE__ ) . '/vendor/autoload.php' ) );
}
//** Be sure our Bootstrap class exists */
if( !class_exists( '\UsabilityDynamics\WPI\WPI_Bootstrap' ) ) {
throw new Exception( __( 'Distributive is broken. Plugin loader is not available. Try to remove and upload plugin again.', 'wp-invoice' ) );
}
} catch( Exception $e ) {
$_ud_wp_invoice_error = $e->getMessage();
return false;
}
return true;
}
}
if( !function_exists( 'ud_my_wp_plugin_message' ) ) {
/**
* Renders admin notes in case there are errors on plugin init
*
* @author Usability Dynamics, Inc.
* @since 1.0.0
*/
function ud_wp_invoice_message() {
global $_ud_wp_invoice_error;
if( !empty( $_ud_wp_invoice_error ) ) {
$message = sprintf( __( '<p><b>%s</b> can not be initialized. %s</p>', 'wp-invoice' ), 'WP-Invoice', $_ud_wp_invoice_error );
echo '<div class="error fade" style="padding:11px;">' . $message . '</div>';
}
}
add_action( 'admin_notices', 'ud_wp_invoice_message' );
}
if( ud_check_wp_invoice() ) {
//** Initialize. */
ud_get_wp_invoice();
}