├── docs
├── dist
│ ├── envato-market.zip
│ ├── banner-1544x500.jpg
│ ├── banner-772x250.jpg
│ └── update-check.json
├── .gitignore
├── params.json
├── stylesheets
│ ├── github-light.css
│ ├── stylesheet.css
│ └── normalize.css
└── index.html
├── uploads.ini
├── .gitignore
├── inc
├── admin
│ ├── view
│ │ ├── notice
│ │ │ ├── success.php
│ │ │ ├── success-single-use.php
│ │ │ ├── error-single-use.php
│ │ │ ├── success-no-items.php
│ │ │ ├── error-details.php
│ │ │ ├── error.php
│ │ │ ├── error-missing-zip.php
│ │ │ ├── error-http.php
│ │ │ └── error-permissions.php
│ │ ├── callback
│ │ │ ├── setting
│ │ │ │ ├── token.php
│ │ │ │ └── items.php
│ │ │ ├── section
│ │ │ │ ├── items.php
│ │ │ │ └── oauth.php
│ │ │ └── admin.php
│ │ └── partials
│ │ │ ├── themes.php
│ │ │ ├── plugins.php
│ │ │ ├── intro.php
│ │ │ ├── settings.php
│ │ │ ├── tabs.php
│ │ │ └── help.php
│ ├── class-envato-market-theme-upgrader.php
│ └── class-envato-market-theme-installer-skin.php
├── class-envato-market-github.php
└── class-envato-market.php
├── .eslintrc.js
├── .github
└── dependabot.yml
├── readme.txt
├── composer.json
├── phpcs.ruleset.xml
├── phpcs.xml.dist
├── phpunit.xml.dist
├── package.json
├── code_of_conduct.md
├── DEVELOPERS.md
├── docker-compose.yml
├── tests
└── phpunit
│ ├── data
│ ├── plugin.json
│ ├── plugins.json
│ ├── theme.json
│ └── themes.json
│ ├── tests
│ └── inc
│ │ ├── class-envato-market.php
│ │ ├── class-envato-market-github.php
│ │ ├── class-envato-market-api.php
│ │ └── admin
│ │ └── functions.php
│ └── includes
│ └── bootstrap.php
├── readme.md
├── envato-market.php
├── js
├── envato-market.min.js
├── updates.min.js
└── envato-market.js
├── contributing.md
├── images
└── envato-market-logo.svg
├── Gruntfile.js
├── css
├── envato-market.css
└── envato-market-rtl.css
└── sass
└── envato-market.scss
/docs/dist/envato-market.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/envato/wp-envato-market/HEAD/docs/dist/envato-market.zip
--------------------------------------------------------------------------------
/docs/dist/banner-1544x500.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/envato/wp-envato-market/HEAD/docs/dist/banner-1544x500.jpg
--------------------------------------------------------------------------------
/docs/dist/banner-772x250.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/envato/wp-envato-market/HEAD/docs/dist/banner-772x250.jpg
--------------------------------------------------------------------------------
/uploads.ini:
--------------------------------------------------------------------------------
1 | file_uploads = On
2 | memory_limit = 500M
3 | upload_max_filesize = 500M
4 | post_max_size = 500M
5 | max_execution_time = 600
6 |
--------------------------------------------------------------------------------
/docs/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 |
3 | # Sass
4 | .sass-cache
5 |
6 | # Grunt
7 | /node_modules/
8 | npm-debug.log
9 |
10 | # API Token
11 | .token
12 |
13 | # Composer
14 | composer.lock
15 | /vendor/
16 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 |
3 | # Sass
4 | .sass-cache
5 |
6 | # Grunt
7 | /dist/
8 | /node_modules/
9 | npm-debug.log
10 |
11 | # API Token
12 | .token
13 |
14 | # Composer
15 | composer.lock
16 | /vendor/
17 |
18 | # local envs
19 | .env
20 | .envrc
21 |
--------------------------------------------------------------------------------
/inc/admin/view/notice/success.php:
--------------------------------------------------------------------------------
1 |
10 |
11 |
Additional Error Details:
%s.
%s
%s', esc_html( $title ), esc_html( $message ), esc_html( json_encode( $data ) ) ); ?>
12 |
13 |
--------------------------------------------------------------------------------
/inc/admin/view/notice/error.php:
--------------------------------------------------------------------------------
1 |
10 |
12 | ' . esc_html__( 'envato.com', 'envato-market' ) . '' ); ?>
13 |
14 |
21 | Welcome!
22 |
23 | The Envato Market plugin can install WordPress themes and plugins purchased from ThemeForest & CodeCanyon by connecting with the Envato Market API using a secure OAuth personal token. Once your themes & plugins are installed WordPress will periodically check for updates, so keeping your items up to date is as simple as a few clicks.
24 |
25 | You can add a global token to connect all your items from your account, and/or connect directly with a specific item using a singe-use token & item ID. When the global token and single-use token are set for the same item, the single-use token will be used to communicate with the API.
26 |
27 | Installation
28 |
29 | The latest version of the Envato Market plugin can be downloaded from the docs/ folder as a WordPress installable package. DO NOT click the Github "Download ZIP" button, this plugin is meant to be installed in the WordPress plugins directory as envato-market and Github will not package the plugin correctly.
30 |
31 | Installing the Envato Market plugin.
32 |
33 |
34 | - Download the
envato-market.zip and unpack the archive.
35 | - Upload
envato-market to the /wp-content/plugins/ directory.
36 | - Activate the plugin through the 'Plugins' menu in WordPress.
37 | - Click the 'Envato Market' menu in WordPress and connect to the API.
38 |
39 |
40 | Contributing
41 |
42 | Pull requests are welcome. Please review the guidelines for contributing and code of conduct before contributing to this repository.
43 |
44 |
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/tests/phpunit/data/theme.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": 548199,
3 | "name": "Salutation Responsive WordPress + BuddyPress Theme",
4 | "description": "TONS OF HTML",
5 | "site": "themeforest.net",
6 | "classification": "wordpress/buddypress",
7 | "classification_url": "http://themeforest.net/category/wordpress/buddypress",
8 | "price_cents": 6400,
9 | "number_of_sales": 5418,
10 | "author_username": "Parallelus",
11 | "author_url": "http://themeforest.net/user/parallelus",
12 | "author_image": "https://0.s3.envato.com/files/70040013/gradient-symbol-on-mute-80x80.png",
13 | "url": "http://themeforest.net/item/salutation-responsive-wordpress-buddypress-theme/548199",
14 | "thumbnail_url": "https://0.s3.envato.com/files/90296191/Thumbnail-Salutation-WP.png",
15 | "summary": "High Resolution: No, Widget Ready: Yes, Compatible Browsers: IE8, IE9, IE10, IE11, Firefox, Safari, Opera, Chrome, Compatible With: WPML, BuddyPress 2.3.x, BuddyPress 2.2.x, BuddyPress 2.1.x, BuddyPress 2.0.x, BuddyPress 1.9.x, BuddyPress 1.8.x, BuddyPress 1.7.x, BuddyPress 1.6.1, BuddyPress 1.6, BuddyPress 1.5.3, BuddyPress 1.5.2, Software Version: WordPress 4.3, WordPress 4.2, WordPress 4.1, WordPress 4.0, WordPress 3.9, WordPress 3.8, WordPress 3.7, WordPress 3.6, WordPress 3.5, WordPress 3.4, WordPress 3.3, WordPress 3.2, WordPress 3.1, WordPress 3.0, Columns: 4+",
16 | "rating": {
17 | "rating": 4.5,
18 | "count": 809
19 | },
20 | "updated_at": "2015-11-03T08:24:32+11:00",
21 | "published_at": "2011-09-17T08:45:24+10:00",
22 | "trending": false,
23 | "attributes": [
24 | {
25 | "name": "columns",
26 | "value": "4+"
27 | },
28 | {
29 | "name": "compatible-browsers",
30 | "value": [
31 | "IE8",
32 | "IE9",
33 | "IE10",
34 | "IE11",
35 | "Firefox",
36 | "Safari",
37 | "Opera",
38 | "Chrome"
39 | ]
40 | },
41 | {
42 | "name": "compatible-software",
43 | "value": [
44 | "WordPress 4.3",
45 | "WordPress 4.2",
46 | "WordPress 4.1",
47 | "WordPress 4.0",
48 | "WordPress 3.9",
49 | "WordPress 3.8",
50 | "WordPress 3.7",
51 | "WordPress 3.6",
52 | "WordPress 3.5",
53 | "WordPress 3.4",
54 | "WordPress 3.3",
55 | "WordPress 3.2",
56 | "WordPress 3.1",
57 | "WordPress 3.0"
58 | ]
59 | },
60 | {
61 | "name": "compatible-with",
62 | "value": [
63 | "WPML",
64 | "BuddyPress 2.3.x",
65 | "BuddyPress 2.2.x",
66 | "BuddyPress 2.1.x",
67 | "BuddyPress 2.0.x",
68 | "BuddyPress 1.9.x",
69 | "BuddyPress 1.8.x",
70 | "BuddyPress 1.7.x",
71 | "BuddyPress 1.6.1",
72 | "BuddyPress 1.6",
73 | "BuddyPress 1.5.3",
74 | "BuddyPress 1.5.2"
75 | ]
76 | },
77 | {
78 | "name": "demo-url",
79 | "value": "http://para.llel.us/themes/salutation-wp/"
80 | },
81 | {
82 | "name": "documentation",
83 | "value": "Well Documented"
84 | },
85 | {
86 | "name": "framework",
87 | "value": null
88 | },
89 | {
90 | "name": "high-resolution",
91 | "value": "No"
92 | },
93 | {
94 | "name": "layout",
95 | "value": "Fixed"
96 | },
97 | {
98 | "name": "themeforest-files-included",
99 | "value": [
100 | "Layered PSD",
101 | "PHP Files",
102 | "CSS Files",
103 | "JS Files"
104 | ]
105 | },
106 | {
107 | "name": "widget-ready",
108 | "value": "Yes"
109 | }
110 | ],
111 | "previews": {
112 | "landscape_preview": {
113 | "landscape_url": "https://image-tf.s3.envato.com/files/67187951/1_Banner-Salutation-WP.__large_preview.png"
114 | }
115 | },
116 | "wordpress_theme_metadata": {
117 | "theme_name": "Salutation",
118 | "author_name": "