diff --git a/changes.md b/changes.md
new file mode 100644
index 0000000000..bcc782c791
--- /dev/null
+++ b/changes.md
@@ -0,0 +1,8 @@
+#### 4.0.0
+* Changed plugin initialization functionality.
+* Added Composer ( dependency manager ) modules and moved some functionality to composer modules ( vendors ).
+* Moved premium features to separate plugins.
+* Cleaned up functionality of plugin.
+* Refactored file structure of plugin.
+* Refactored 'View All' page.
+* Fixed Warnings and Notices.
\ No newline at end of file
diff --git a/faqs.md b/faqs.md
new file mode 100644
index 0000000000..20bb2cbc67
--- /dev/null
+++ b/faqs.md
@@ -0,0 +1,17 @@
+#### [wp-invoice] shortcode
+http://feedback.usabilitydynamics.com/knowledgebase/articles/471938--wp-invoice-shortcode
+
+#### Empty Invoice page or just [wp-invoice] instead of invoice.
+http://feedback.usabilitydynamics.com/knowledgebase/articles/623133-empty-invoice-page-or-just-wp-invoice-instead-of
+
+#### Setting up WP-Invoice Recurring Billing
+http://feedback.usabilitydynamics.com/knowledgebase/articles/246292-setting-up-wp-invoice-recurring-billing
+
+#### Plugin throws 404/403/500 error after save settings or first time setup page. What to do?
+http://feedback.usabilitydynamics.com/knowledgebase/articles/291213-plugin-throws-404-403-500-error-after-save-setting
+
+#### PayPal Username and Sandbox error.
+http://feedback.usabilitydynamics.com/knowledgebase/articles/291214-paypal-username-and-sandbox-error
+
+#### Quotes Premium Feature – Response form
+http://feedback.usabilitydynamics.com/knowledgebase/articles/291216-quotes-premium-feature-response-form
\ No newline at end of file
diff --git a/readme.txt b/readme.txt
index 5d1ca90928..5492a57025 100644
--- a/readme.txt
+++ b/readme.txt
@@ -130,6 +130,15 @@ Please see the [wp-invoice plugin home page](https://www.usabilitydynamics.com/p
== Change Log ==
+= 4.0.0 =
+* Changed plugin initialization functionality.
+* Added Composer ( dependency manager ) modules and moved some functionality to composer modules ( vendors ).
+* Moved premium features to separate plugins.
+* Cleaned up functionality of plugin.
+* Refactored file structure of plugin.
+* Refactored 'View All' page.
+* Fixed Warnings and Notices.
+
= Version 3.09.5 =
* WordPress 4.0 compatible.
* General code improvements.
diff --git a/static/splashes/install.php b/static/splashes/install.php
index 905ed6d9cc..af9f181754 100644
--- a/static/splashes/install.php
+++ b/static/splashes/install.php
@@ -20,6 +20,12 @@
domain ); ?>
set of add-ons. They may help you manage your business more effectively.', ud_get_wp_invoice()->domain ), 'https://www.usabilitydynamics.com/products' ); ?>
+
+ uservoice_url ) ) : ?>
+
+ feedback from you!', ud_get_wp_invoice()->domain ), ud_get_wp_invoice()->name, $s->uservoice_url ); ?>
+
+
diff --git a/static/splashes/upgrade.php b/static/splashes/upgrade.php
index 905ed6d9cc..af9f181754 100644
--- a/static/splashes/upgrade.php
+++ b/static/splashes/upgrade.php
@@ -20,6 +20,12 @@
domain ); ?>
set of add-ons. They may help you manage your business more effectively.', ud_get_wp_invoice()->domain ), 'https://www.usabilitydynamics.com/products' ); ?>
+
+ uservoice_url ) ) : ?>
+
+ feedback from you!', ud_get_wp_invoice()->domain ), ud_get_wp_invoice()->name, $s->uservoice_url ); ?>
+
+
diff --git a/vendor/autoload.php b/vendor/autoload.php
index 4ae1d19d63..2dda7be268 100644
--- a/vendor/autoload.php
+++ b/vendor/autoload.php
@@ -4,4 +4,4 @@
require_once __DIR__ . '/composer' . '/autoload_real.php';
-return ComposerAutoloaderInitf5c06e74a9010765c43cb04f6f74ef65::getLoader();
+return ComposerAutoloaderInit78f5fe4787da366a893a00f787419eb8::getLoader();
diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php
index 6d6905b27a..a5d54c671e 100644
--- a/vendor/composer/autoload_real.php
+++ b/vendor/composer/autoload_real.php
@@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
-class ComposerAutoloaderInitf5c06e74a9010765c43cb04f6f74ef65
+class ComposerAutoloaderInit78f5fe4787da366a893a00f787419eb8
{
private static $loader;
@@ -19,9 +19,9 @@ public static function getLoader()
return self::$loader;
}
- spl_autoload_register(array('ComposerAutoloaderInitf5c06e74a9010765c43cb04f6f74ef65', 'loadClassLoader'), true, true);
+ spl_autoload_register(array('ComposerAutoloaderInit78f5fe4787da366a893a00f787419eb8', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
- spl_autoload_unregister(array('ComposerAutoloaderInitf5c06e74a9010765c43cb04f6f74ef65', 'loadClassLoader'));
+ spl_autoload_unregister(array('ComposerAutoloaderInit78f5fe4787da366a893a00f787419eb8', 'loadClassLoader'));
$map = require __DIR__ . '/autoload_namespaces.php';
foreach ($map as $namespace => $path) {
@@ -44,7 +44,7 @@ public static function getLoader()
}
}
-function composerRequiref5c06e74a9010765c43cb04f6f74ef65($file)
+function composerRequire78f5fe4787da366a893a00f787419eb8($file)
{
require $file;
}
diff --git a/vendor/usabilitydynamics/lib-wp-bootstrap/lib/classes/class-bootstrap-plugin.php b/vendor/usabilitydynamics/lib-wp-bootstrap/lib/classes/class-bootstrap-plugin.php
index d6e9193073..02d74d3645 100644
--- a/vendor/usabilitydynamics/lib-wp-bootstrap/lib/classes/class-bootstrap-plugin.php
+++ b/vendor/usabilitydynamics/lib-wp-bootstrap/lib/classes/class-bootstrap-plugin.php
@@ -128,6 +128,7 @@ public static function get_instance( $args = array() ) {
'name' => 'Plugin Name',
'version' => 'Version',
'domain' => 'Text Domain',
+ 'uservoice_url' => 'UserVoice',
), 'plugin' );
$args = array_merge( (array)$pd, (array)$args, array(
'root_path' => dirname( $dbt[0]['file'] ),
diff --git a/vendor/usabilitydynamics/lib-wp-bootstrap/lib/classes/class-bootstrap-theme.php b/vendor/usabilitydynamics/lib-wp-bootstrap/lib/classes/class-bootstrap-theme.php
index cb31bc2885..e7fd49b35f 100644
--- a/vendor/usabilitydynamics/lib-wp-bootstrap/lib/classes/class-bootstrap-theme.php
+++ b/vendor/usabilitydynamics/lib-wp-bootstrap/lib/classes/class-bootstrap-theme.php
@@ -115,8 +115,22 @@ public static function get_instance( $args = array() ) {
exit( "Property \$instance must be static for {$class}" );
}
if( null === $class::$instance ) {
+
+ //** Get custom ( undefined ) Headers from style.css */
+ global $wp_theme_directories;
+ $stylesheet = get_stylesheet();
+ $theme_root = get_raw_theme_root($stylesheet);
+ if (false === $theme_root) {
+ $theme_root = WP_CONTENT_DIR . '/themes';
+ } elseif (!in_array($theme_root, (array)$wp_theme_directories)) {
+ $theme_root = WP_CONTENT_DIR . $theme_root;
+ }
+ $data = get_file_data( $theme_root . '/' . get_stylesheet() . '/style.css', array(
+ 'uservoice_url' => 'UserVoice',
+ ) );
+
$t = wp_get_theme();
- $args = array_merge( (array)$args, array(
+ $args = array_merge( (array)$args, $data, array(
'name' => $t->get( 'Name' ),
'version' => $t->get( 'Version' ),
'template' => $t->get( 'Template' ),
diff --git a/vendor/usabilitydynamics/lib-wp-bootstrap/lib/classes/class-scaffold.php b/vendor/usabilitydynamics/lib-wp-bootstrap/lib/classes/class-scaffold.php
index c9cf35b575..989b132396 100644
--- a/vendor/usabilitydynamics/lib-wp-bootstrap/lib/classes/class-scaffold.php
+++ b/vendor/usabilitydynamics/lib-wp-bootstrap/lib/classes/class-scaffold.php
@@ -63,6 +63,15 @@ abstract class Scaffold {
* @var string
*/
public $root_url = false;
+
+ /**
+ * UserVoice URL
+ *
+ * @public
+ * @property uservoice_url
+ * @var string
+ */
+ public $uservoice_url = false;
/**
* Storage for dynamic properties
diff --git a/vendor/usabilitydynamics/lib-wp-bootstrap/static/views/install_notice.php b/vendor/usabilitydynamics/lib-wp-bootstrap/static/views/install_notice.php
index fa90db7a39..f11390b25d 100644
--- a/vendor/usabilitydynamics/lib-wp-bootstrap/static/views/install_notice.php
+++ b/vendor/usabilitydynamics/lib-wp-bootstrap/static/views/install_notice.php
@@ -84,6 +84,9 @@
| %s\'s Home page' ), $home_link, ucfirst( $type ) ); ?>
+ uservoice_url ) ) : ?>
+ |
+
diff --git a/wp-invoice.php b/wp-invoice.php
index 1f76cbf3ed..65ff7242e2 100644
--- a/wp-invoice.php
+++ b/wp-invoice.php
@@ -9,6 +9,7 @@
* Author URI: http://www.usabilitydynamics.com
* GitHub Plugin URI: wp-invoice/wp-invoice
* GitHub Branch: v4.0
+ * UserVoice: http://feedback.usabilitydynamics.com/forums/9692-wp-invoice
*
* Copyright 2012 - 2015 Usability Dynamics, Inc. ( email : info@usabilitydynamics.com )
*