PluginProbe
WP Directory Kit / 1.1.8
WP Directory Kit v1.1.8
1.5.9 1.5.7 1.5.6 1.5.5 1.5.4 1.5.3 trunk 1.1.0 1.1.6 1.1.8 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.8 All 37 releases
wpdirectorykit / tgm-pa / CHANGELOG.md

CHANGELOG.md in WP Directory Kit 1.1.8, at tgm-pa/CHANGELOG.md

497 lines 35.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 # Changelog for TGM Plugin Activation library
2
3 ## 2.6.1 (2016-05-19)
4
5 * Fix a string replacement issue in the plugin action links. Thanks [Nilambar Sharma] for reporting. [#587], [#588]
6
7 ## 2.6.0 (2016-05-14)
8
9 Since mid-February we offer a _"Custom TGMPA Generator"_. From now on, that is the preferred way for downloading your copy of TGMPA for use in a theme or plugin.
10 If you download TGMPA using the _Custom TGMPA Generator_ and indicate that it is for a theme which will be published on wordpress.org, you will receive a copy which will pass the Theme Check review.
11
12 You can find the _Custom TGMPA Generator_ on the [download] page of the website. For more information, read the [related blog post].
13
14 * **Bug fixes**:
15 - Fixed minor/low-impact security vulnerability. Thanks [Mohamed A. Baset] for reporting. If *you* find a security vulnerability, please disclose responsibly! [#487], [#505]
16 - Fixed a bug where action links on the WP native plugins page would not be properly filtered. [#458], [#459]
17 - Fixed a bug where TGMPA when included within a plugin would be recognized as the plugin instead of the *real* plugin. Thanks [weavertheme] and [Mika Epstein] for reporting. [#499], [#500], [#558]
18 - Fixed an install error when trying to bulk-install an already installed plugin. Thanks [Ahmad Awais] for reporting. [#496], [#504]
19 - Fixed an update error when trying to bulk-update a plugin which is not installed. Thanks [Gary Jones] for reporting. [#442], [#508]
20 - Fixed admin notices display class. Props [Ninos Ego] and [Primoz Cigler]. [#478], [#495], [#509]
21 - Fixed an issue resulting in notices about installed/updated plugins on the bulk install/update pages being displayed at the top of the page instead of inline. [#510], [#511]
22
23 * **Enhancements**:
24 - The full admin notice is now only displayed to users who can install/update/activate plugins. A limited _"Contact the site admin."_ notice is shown to select users if it pertains to _required_ plugins. The selection of which users get to see this last message is based on the `publish_posts` (=Author) capability. This capability is however filterable using the new `tgmpa_show_admin_notice_capability` filter. Thanks [Stanislav Khromov], [Gary Jones], [Mickey Kay], [Ollie Treend] for suggesting. [#190], [#414], [#489], [#507]
25 - The example file now shows examples of different ways for including TGMPA based on the context in which you are using it. Props [Emil Uzelac] for the suggestion. [#469], [#503]
26 - Force deactivated plugins will now show in the 'recently active' plugins list. [#577]
27
28 * **I18N improvements**:
29 - Improved some text strings and translator messages. Props [Rami]. [#516]
30 - Added translator messages for all strings with variable replacement.[#563]
31 - Added `load_textdomain()` calls. [#521]
32 - Added translations for Brazilian Portuguese, Croatian, Czech, Dutch, French, German, Russian and Swedish [#450], [#574], [#570], [#465], [#524], [#528], [#543], [#561] with grateful thanks to [Elvis Henrique Pereira], [Denis Žoljom], [Karolína Vyskočilová], [geoclaps], [Hedi Chaibi], [Marciel Bartzik], [Vladislav Burlak] and [Lewis Porter].
33 Additionally translations for Australian English, Canadian English, British English, Esperanto, Spanish, Hebrew, Italian, Romanian and Serbian were added based on existing translations available in GlotPress. [#564]
34
35 Altogether, this means that for the first version of TGMPA which ships with translation files, we're covering 17 locales, which is awesome!
36 More translations are of course welcome, so please send the .po file(s) in as a pull request.
37
38 _Please note: If you download TGMPA using the custom generator and indicate it's for a theme to be hosted on wordpress.org, you will receive a version without the `load_textdomain()` calls or the translation files.
39 Theme check rules dictate that you should only use one textdomain in your theme and the localization calls will be adjusted to use your theme's textdomain.
40 As most TGMPA strings have a lot of translations available in GlotPress already, this should not cause any real issues._
41
42 * **Housekeeping**:
43 - Various other minor improvements and keeping things in line with WP core. [#512], [#513], [#514], [#532] - thanks [Utkarsh Patel], [#562], [#571]
44 - Updated the included example plugin to comply to the latest standards. [#557]
45 - Regenerated .pot file.
46
47
48 ## 2.5.2 (2015-07-15)
49 * Hot Fix: fixes potential `Fatal error: Call to protected TGM_Plugin_Activation::__construct()` error and other compatibility issues when both TGMPA 2.5+ as well as TGMPA 2.3.6- would be loaded by different themes and plugins. [#449]
50
51 Take note: We do **NOT** support 2.3.6 anymore and **_highly_** discourage its use. Any themes and plugins still using TGMPA 2.3.6 or less should upgrade as soon as possible. All the same, the end-user should not be confronted with white screens because of it, so this hot fix should prevent just that.
52
53 ## 2.5.1 (2015-07-13)
54
55 * Hot Fix: fixes potential `Fatal error: Call to undefined method TGM_Utils::validate_bool()` errors caused by a conflict with the Soliloquy plugin. [#446]
56
57 ## 2.5.0 (2015-07-03)
58
59 This is a major update which brings some interesting new features and fixes tons of bugs. This version of TGMPA is brought to you by [Thomas Griffin] with graceful thanks to [Gary Jones] and our new core-team member [Juliette Reinders Folmer] for the majority of the changes.
60
61 With this release the TGMPA library has moved to its own organisation on GitHub. From now on you can find it at [TGMPA/TGM-Plugin-Activation].
62
63 The website has also been given some love. You can now find detailed information about the configuration options, FAQs and more at: http://tgmpluginactivation.com/
64
65 TGMPA will start providing localized text strings soon. If you already have translations of our standard strings available, please help us make TGMPA even better by giving us access to these translations or by sending in a pull-request with .po file(s) with the translations. A [.pot file] to get you started is now available in the GitHub repository.
66
67 * Enhancement: **Full support for update work-flow**.
68 - Updating of the registered plugins can now be done from the TGMPA screen, both on individual plugins as well as in bulk - this will take into account WP repo updates as well as updates for plugins which are bundled or come from external sources where a minimum version is set which is higher than the current version.
69 - Users will be notified of available updates via the admin notice.
70 - The TGMPA admin page now has four views: _all_, _to install_, _update available_ and _to activate_.
71 - The TGMPA admin page now has - on selected views - an extra column showing relevant plugin version information.
72 - The TGMPA admin page _status_ column will show both install/activate as well as update status (cumulative).
73 - If a plugin requires a certain minimum version of a plugin and the currently installed version does not comply, activation will be blocked until the user has upgraded the plugin. If the plugin is already active, it will not be deactivated however.
74 * If the required plugin version itself requires a higher WP version than the currently installed WP, upgrade to that version of the plugin will be blocked - this is of course provided TGMPA has access to that information -.
75 - The plugin action links on the WP native plugins page will reflect this too - including disabling deactivation if _force_activation_ is `true` for a plugin.
76
77 [#381], [#192], [#197] Props [Zauan/Hogash Studio], [Christian], [Franklin Gitonga], [Jason Xie], [swiderski] for their preliminary work on this which inspired this full-fledged implementation.
78
79 * Enhancement: **Better support for GitHub hosted plugins**.
80
81 Previously using standard GitHub packaged zips as download source would not work as, even though the plugin would be installed, it would not be recognized as such by TGMPA because of the non-standard directory name which would be created for the plugin, i.e. `my-plugin-master` instead of `my-plugin`. A work-around for this has been implemented and you can now use GitHub-packaged `master` branch or release zips to install plugins. Have a look at the `example.php` file for a working example.
82
83 One caveat: this presumes that the plugin is based in the root of the GitHub repo and not in a `/src` or other subdirectory.
84
85 [#327], [#280], [#283] Thanks [Dan Fisher] and [Luis Martins] for reporting/requesting this enhancement.
86
87 * Enhancement: **New optional plugin parameter `is_callable`**.
88
89 Some plugins may have a free and a premium version using different slugs. Using the `is_callable` plugin parameter allows for the premium version to be recognized, even though the slug is set to the free version slug. Have a look at the `example.php` file for a working example.
90
91 For more information on what is considered a `callable`, please refer to the [Codex on callbacks].
92
93 [#205] Props [Zack Katz].
94
95 * **Admin Page improvements**:
96 - Plugins downloaded from an arbitrary external source are now labelled _"External Source"_. Previously they were labelled _"Private Repository"_ which could be confusing as the download URL did not have to point to a repository, let alone be private. [#372]
97 - Leverage the CSS styling of the Core standard `WP_List_Table` [#227]. Props [Shiva Poudel].
98 - Allow for moving the Admin Page to a different place in the menu. This is mainly to accommodate plugins using TGMPA as it is terribly illogical for the TGMPA page to be under the _"Appearance"_ menu in that case. This has been now been implemented in a way that Theme Check will not choke on it. [#310]
99
100 * **Admin notices improvements**:
101 - For installs with both plugin(s) as well as theme(s) using TGMPA, notices will now be dismissable for each separately. This prevents a situation where a theme would have TGMPA included, the user has dismissed the notice about it, a plugin with TGMPA gets installed and the notice about it requiring certain other plugins is never shown. [#174] Thanks [Chris Howard] for reporting.
102 - Fixed: The reset of dismissed notices on `switch_theme` was only applied for the current user, not for all users. [#246]
103 - Fixed: Admin notices would show twice under certain circumstances. [#249], [#237] Thanks [manake] for reporting.
104
105 * **Bulk Installer**:
106 - Fixed: If a bulk install was initiated using the bottom _"Bulk Actions"_ dropdown, the install page would display an outdated TGMPA plugin table at the bottom of the page after the bulk installation was finished. [#319]
107
108 * **Theme Check compatibility**:
109 - Prevent _"The theme appears to use include or require"_ warning. [#262], [#258] Thanks [Tim Nicholson] for reporting.
110 - Preempt the disallowing of the use of the `add_theme_page()` function. See [](https://make.wordpress.org/themes/2015/04/21/this-weeks-meeting-important-information-regarding-theme-options/the theme review meeting notes](https://make.wordpress.org/themes/2015/04/21/this-weeks-meeting-important-information-regarding-theme-options/](https://make.wordpress.org/themes/2015/04/21/this-weeks-meeting-important-information-regarding-theme-options/) for further information on this decision. [#315]
111
112 * **Miscellaneous fixes**:
113 - Leaner loading: TGMPA actions will now only be hooked in and run on the back-end (`is_admin() returns true`). [#357] Also most TGMPA actions will now only be hooked in if there's actually something to do for TGMPA. [#381]
114 - Fixed: _"Undefined index: skin_update_failed_error"_ [#260], [#240] Thanks [Parhum Khoshbakht] and [Sandeep] for reporting.
115 - Fixed: Installation of bundled plugins with uppercase letters in the plugin slug would fail. [#401], [#403] Thanks [steveboj] for reporting.
116 - Made admin URLs environment aware by using `self_admin_url()` instead of `admin_url()` or `network_admin_url()`. [#255], [#171]
117 - Fixed: the Adminbar would be loaded twice causing conflicts (with other plugins). [#208] Props [John Blackbourn].
118 - All TGMPA generated pages will now show the version number on the page to assist in debugging. [#399], [#402]
119
120 * **I18N improvements**:
121 - Make configurable message texts singular/plural context aware. [#173] Props [Yakir Sitbon].
122 - Language strings which are being overridden should use the including plugin/theme language domain. [#217] Props [Christian Foellmann].
123 - Language strings are loaded a bit later now to ensure that the translations are loaded beforehand. [#176], [#177] Props [Yakir Sitbon].
124
125 * **New action and filter hooks for TGMPA**:
126 - `tgmpa_load` - _filter_ can be used to overrule whether TGMPA should load. Defaults to loading only when on the WP back-end when not `DOING_AJAX`. Typical use: `add_filter( 'tgmpa_load', '__return_true' );`.
127 - `tgmpa_admin_menu_args` - _filter_ can be used to filter the arguments passed to the function call adding the TGMPA (sub) menu page.
128 - `tgmpa_notice_rendered_action_links` - _filter_ can be used to filter the complete html output for the admin notice action links. This is in addition to the `tgmpa_notice_action_links` filter which already existed and allows for filtering of the individual action links.
129 - `tgmpa_table_data_item` - _filter_ can be used to modify plugin data for a single plugin which is ready for the TGMPA table output.
130 - `tgmpa_table_data_items` - _filter_ can be used to modify plugin data for all plugins which is ready for the TGMPA table output. Example use: changing the sort order of the plugins.
131 - `tgmpa_table_columns` - _filter_ can be used to add/remove table columns from the TGMPA table view.
132 - `tgmpa_{$prefix}plugin_action_links` - _filter_ mirrors the WP core [{$prefix}plugin_action_links] filter but for the TGMPA page.
133 - `tgmpa_update_bulk_plugins_complete_actions` - _filter_ mirrors the WP core [update_bulk_plugins_complete_actions] filter but for TGMPA bulk actions.
134 - `tgmpa_after_plugin_row_{$item['slug']}` - _action_ similar (but not the same) as the WP core [after_plugin_row_{$plugin_file}] action. Can be used to add information to a plugin row in the TGMPA table.
135
136 [#188], [#226], [#300], [#357], [#362], [#381], [#388], [#389], [#390] Props [Zack Katz] and the TGMPA team.
137
138 * **Housekeeping**:
139 - Applied a number of best practices and code simplifications.
140 * [#284], [#281] - props [Ninos Ego],
141 * [#286] - props [krishna19],
142 * [#178], [#180], [#182], [#183] - thanks [Gregory Karpinsky] for reporting,
143 * [#324], [#325], [#331], [#346], [#356], [#357], [#358], [#359], [#360], [#361], [#362], [#363], [#368], [#371], [#373], [#374], [#375], [#376], [#381], [#385], [#387], [#395], [#397], [#425], [#426], [#427], [#435]
144 - Allow for extending of the TGMPA class and fixed issues with PHP 5.2 [#303] which were originally caused by this.
145 - Tighten the file permissions on our files. [#322]
146 - Cleaned up some of the documentation. [#179], [#384] Props [Gregory Karpinsky] and the TGMPA team.
147 - Comply with the [](https://make.wordpress.org/core/handbook/coding-standards/WordPress Coding Standards](https://make.wordpress.org/core/handbook/coding-standards/](https://make.wordpress.org/core/handbook/coding-standards/)
148 - Added Travis CI integration for coding standards and php-linting. [#304], [#329]
149 - Added Scrutinizer CI integration for code quality. [#330]
150 - Added editor config. [#339] Props [Shiva Poudel].
151 - Improved integration with Packagist.
152 - Added [](CONTRIBUTING.mdContributing guidelines](CONTRIBUTING.md](CONTRIBUTING.md).
153 - While the library has always been licensed under GPL 2.0+, we now include the [](LICENSE.mdLicense](LICENSE.md](LICENSE.md).
154
155
156 ## 2.4.2 (2015-04-27)
157 * Fixed: Bundled/pre-packaged plugins would no longer install when using the Bulk installer. This was a regression introduced in v2.4.1. [#321], [#316] Props [Juliette Reinders Folmer]. Thanks [tanshcreative] for reporting.
158 * Fixed: Bulk installer did not honour a potentially set `default_path` for local prep-packaged plugins. [#203], [#332] Props [Juliette Reinders Folmer]. Thanks [pavot] and [djcowan] for reporting.
159 * Removed call to `screen_icon()` function which was deprecated in WP 3.8. [#244], [#224], [#234]. Props [Nate Wright]. Thanks [hamdan-mahran] and [Sandeep] for reporting.
160 * Fixed: _"PHP Fatal error: Class 'TGM_Bulk_Installer' not found"_ [#185] Thanks [Chris Talkington] for reporting.
161
162 ## 2.4.1 (2015-04-22)
163
164 * Improve escaping for URLs and attributes.
165
166 ## 2.4.0 (2014-03-17)
167
168 * All textdomain strings now made to `tgmpa` and remove all notices dealing with textdomain and translation issues.
169 * The `_get_plugin_basename_from_slug()` method now checks for exact slug matches to prevent issues with plugins that start with the same slug.
170 * Commenting style now adjusted so it is easier to comment large chunks of code if necessary.
171 * Plugins from an external source now properly say _"Private Repository"_ in the list table output.
172 * `add_submenu_page()` has been changed to `add_theme_page()` for better theme check compatibility.
173 * Removed the use for `parent_menu_slug` and `parent_menu_url` for `$config` options (see above).
174 * Nag messages can now be forced on via a new `dismissable` config property. When set to `false`, nag cannot be dismissed.
175 * New config `dismiss_msg` used in conjunction with `dismissable`. If `dismissable` is false, then if `dismiss_msg` is not empty, it will be output at the top of the nag message.
176 * Better contextual message for activating plugins - changed _"Activate installed plugin(s)"_ to _"Begin activating plugin(s)"_.
177 * Added cache flushing on theme switch to prevent stale entries from remaining in the list table if coming back to a theme with TGMPA.
178 * TGMPA is now a singleton to prevent extra settings overrides.
179 * Fixed bug with duplicating plugins if multiple themes/plugins that used TGMPA were active at the same time.
180 * Added contextual message updates depending on WordPress version.
181 * Better nag message handling. If the nag has been dismissed, don't even attempt to build message (performance enhancement).
182 * Ensure class can only be instantiated once (instantiation moved inside the `class_exists()` check for TGMPA).
183 * Change instances of `admin_url()` to `network_admin_url()` to add better support for MultiSite (falls back gracefully for non-MultiSite installs).
184 * Updated much of the code to match WP Coding Standards (braces, yoda conditionals, etc.).
185 * Myriads of other bug fixes and enhancements
186
187 ## 2.3.6 (2012-04-23)
188
189 * Fixed API error when clicking on the plugin install row action link for an externally hosted plugin
190
191 ## 2.3.5 (2012-04-16)
192
193 * Fixed nag message not working when `nag_type` string was not set (props [Jeff Sebring])
194
195 ## 2.3.4 (2012-03-30)
196
197 * Fixed _"undefined index"_ notice when checking for required plugins (props [Jeff Sebring])
198 * Fixed bug where, during a bulk install, if the plugin was defined in the source as pre-packaged but also existed in the repo, it would erroneously pull the plugin from the repo instead (props [Travis Smith])
199 * Added ability to set nag type for the admin notice via `nag_type` string (props [Travis Smith])
200
201 ## 2.3.3 (2012-02-03)
202
203 * Changed license to reflect GPL v2 or later (to be compatible with the WordPress repo)
204
205 ## 2.3.2 (2012-02-03)
206
207 * Fixed bug (100%) with not loading class properly
208
209 ## 2.3.1 (2012-02-03)
210
211 * Fixed bug with not finding class (reverted back to `Plugin_Upgrader`)
212
213 ## 2.3.0 (2012-01-25)
214
215 * Improved sorting of plugins by sorting them by required/recommended (while still maintaining alphabetical order within each group)
216 * Improved output of strings in nag messages
217 * Added 2 new strings: `install_link` and `activate_link` to customize the text for the nag action links
218 * Added new class: `TGM_Plugin_Installer` to prepare for must-use plugin support
219
220 ## 2.2.2 (2012-01-08)
221
222 * Fixed bug that allowed users to click on the Install Plugins page when all the plugin installations and activations were already complete
223
224 ## 2.2.1 (2012-01-05)
225
226 * Fixed bug that caused WordPress core upgrades to fail (WordPress doesn't check for including `WP_Upgrader` on core upgrades)
227
228 ## 2.2.0 (2012-01-02)
229
230 * Fixed erroneous links for plugins linked to the WordPress Repo
231 * Improved UI of plugins by listing them in WordPress' default table layout
232 * Improved support for installing plugins if security credentials require FTP information
233 * Improved support for MultiSite
234 * Added 3 new classes (all extensions of existing WordPress classes): `TGMPA_List_Table` for outputting required/recommended plugins in a familiar table format, `TGM_Bulk_Installer` for bulk installing plugins and `TGM_Bulk_Installer_Skin` for skinning the bulk install process
235 * Added extra defensive measures to prevent duplication of classes
236 * Added ability to bulk install and bulk activate plugins
237 * Added new config options: `parent_menu_slug`, `parent_menu_url`, `is_automatic`, and `message`
238 * Added new string: `complete` (displayed when all plugins have been successfully installed and activated)
239 * Added support for singular/plural strings throughout the library
240 * Added permission checks to action links
241 * Added new filter `tgmpa_default_screen_icon` to set the default icon for the plugin table page
242 * Added new optional plugin parameters: `version`, `force_activation`, `force_deactivation` and `external_url`
243 * Removed `button` string (deprecated with use of plugins table)
244
245 ## 2.1.1 (2011-10-19)
246
247 * Fixed nag not re-appearing if user switched themes and then re-activated the previous theme (UX improvement)
248
249 ## 2.1.0 (2011-10-18)
250
251 * Fixed duplicate nag message on admin options pages
252 * Fixed FTP nonce error when FTP credentials aren't defined in `wp-config.php`
253 * Improved handling of failed FTP connections with `WP_Filesystem`
254 * Improved string labeling for semantics
255 * Improved nag messages so that they are now consolidated into one message
256 * Improved plugin sorting by listing them alphabetically
257 * Improved plugin messages after installation and activation
258 * Added automatic activation of plugins after installation (users no longer need to click the _"Activate this plugin"_ link)
259 * Added links to repo plugins for their plugin details and information (done via thickbox)
260 * Added option to dismiss nag message
261 * Added `tgmpa_notice_action_links` filter hook to filter nag message action links
262 * Added new methods: `admin_init()`, `thickbox()`, `dismiss()`, `populate_file_path()`, `_get_plugin_data_from_name()` and `is_tgmpa_page()`
263
264 ## 2.0.0 (2011-10-03)
265
266 * Improved nag messages by adding a strings argument to filter default messages
267 * Improved nag message output by using the Settings API
268 * Improved internals by adding API for developers to use (code in class no longer has to be touched)
269 * Improved API function name (now tgmpa) for semantics
270 * Improved `example.php` with instructions for setup
271 * Added internal style sheet for styling
272 * Added ability to define custom text domain for localization
273 * Added new properties `$default_path` and `$strings`
274 * Added new methods `register()`, `config()`, `_get_plugin_basename_from_slug()` and `actions()`
275 * Removed unnecessary `is_wp_error()` check
276
277 ## 1.1.0 (2011-10-01)
278
279 * Improved property `$args` to accept arrays of arguments for each plugin needed
280 * Improved `add_submenu_page()` to `add_theme_page()`
281 * Improved admin notices to display different messages based on status of plugin (not installed, installed but not activated)
282 * Improved block-level documentation
283 * Improved handling of plugin installation and activation with `plugins_api`, `Plugin_Upgrader` and `Plugin_Skin_Installer`
284 * Added support for multiple plugins of each instance (pre-packaged and repo)
285 * Added new property `$domain` to hold textdomain for internationalization
286 * Added CSS for slight UI enhancements
287 * Added extra conditional checks `current_user_can( 'install_plugins' )` and `current_user_can( 'activate_plugins' )` for security
288 * Removed menu display if all included plugins were successfully installed and activated
289 * Removed unnecessary conditional check before class is defined
290
291 ## 1.0.0 (2011-09-29)
292
293 * Initial release into the wild
294
295
296
297 [download]: http://tgmpluginactivation.com/download/
298 [related blog post]: http://tgmpluginactivation.com/2016/01/15/custom-tgmpa-generator/
299 [TGMPA/TGM-Plugin-Activation]: https://github.com/TGMPA/TGM-Plugin-Activation
300 [.pot file]: https://github.com/TGMPA/TGM-Plugin-Activation/blob/develop/languages/
301
302
303 [Ahmad Awais]: https://github.com/ahmadawais
304 [Chris Howard]: https://github.com/qwertydude
305 [Chris Talkington]: https://github.com/ctalkington
306 [Christian Foellmann]: https://github.com/cfoellmann
307 [Dan Fisher]: https://github.com/danfisher85
308 [Denis Žoljom]: https://github.com/dingo-d
309 [djcowan]: https://github.com/djcowan
310 [Elvis Henrique Pereira]: https://github.com/elvishp2006
311 [Emil Uzelac]: https://github.com/emiluzelac
312 [Franklin Gitonga]: https://github.com/FrankM1
313 [Gary Jones]: https://github.com/GaryJones
314 [geoclaps]: https://github.com/geoclaps
315 [Gregory Karpinsky]: https://github.com/tivnet
316 [hamdan-mahran]: https://github.com/hamdan-mahran
317 [Hedi Chaibi]: https://github.com/hedii
318 [Jason Xie]: https://github.com/duckzland
319 [Jeff Sebring]: https://github.com/jeffsebring
320 [John Blackbourn]: https://github.com/johnbillion
321 [Juliette Reinders Folmer]: https://github.com/jrfnl
322 [Karolína Vyskočilová]: https://github.com/vyskoczilova
323 [krishna19]: https://github.com/krishna19
324 [Lewis Porter]: https://github.com/lewisporter
325 [Luis Martins]: https://github.com/lmartins
326 [manake]: https://github.com/manake
327 [Mickey Kay]: https://github.com/MickeyKay
328 [Mika Epstein]: https://github.com/Ipstenu
329 [Mohamed A. Baset]: https://github.com/SymbianSyMoh
330 [Nate Wright]: https://github.com/NateWr
331 [Nilambar Sharma]: https://github.com/ernilambar
332 [Ninos Ego]: https://github.com/Ninos
333 [Ollie Treend]: https://github.com/ollietreend
334 [Parhum Khoshbakht]: https://github.com/parhumm
335 [pavot]: https://github.com/pavot
336 [Primoz Cigler]: https://github.com/primozcigler
337 [Rami]: https://github.com/ramiy
338 [Sandeep]: https://github.com/InsertCart
339 [Shiva Poudel]: https://github.com/shivapoudel
340 [Stanislav Khromov]: https://github.com/khromov
341 [steveboj]: https://github.com/steveboj
342 [swiderski]: https://github.com/swiderski
343 [tanshcreative]: https://github.com/tanshcreative
344 [Tim Nicholson]: https://github.com/timnicholson
345 [Travis Smith]: https://github.com/wpsmith
346 [Thomas Griffin]: https://github.com/thomasgriffin
347 [Utkarsh Patel]: https://github.com/PatelUtkarsh
348 [Vladislav Burlak]: https://github.com/vburlak
349 [weavertheme]: https://github.com/weavertheme
350 [Yakir Sitbon]: https://github.com/KingYes
351 [Zack Katz]: https://github.com/zackkatz
352
353 [Marciel Bartzik]: http://www.bartzik.net/
354 [Zauan/Hogash Studio]: http://pastebin.com/u/Zauan
355
356 [#588]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/588
357 [#587]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/587
358 [#577]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/577
359 [#574]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/574
360 [#571]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/571
361 [#570]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/570
362 [#564]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/564
363 [#563]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/563
364 [#562]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/562
365 [#561]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/561
366 [#558]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/558
367 [#557]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/557
368 [#543]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/543
369 [#532]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/532
370 [#528]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/528
371 [#524]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/524
372 [#521]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/521
373 [#516]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/516
374 [#514]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/514
375 [#513]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/513
376 [#512]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/512
377 [#511]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/511
378 [#510]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/510
379 [#509]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/509
380 [#508]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/508
381 [#507]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/507
382 [#505]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/505
383 [#504]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/504
384 [#503]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/503
385 [#500]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/500
386 [#499]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/499
387 [#496]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/496
388 [#495]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/495
389 [#489]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/489
390 [#487]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/487
391 [#478]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/478
392 [#469]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/469
393 [#465]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/465
394 [#460]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/460
395 [#459]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/459
396 [#458]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/458
397 [#450]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/450
398 [#449]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/449
399 [#446]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/446
400 [#442]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/442
401 [#435]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/435
402 [#427]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/427
403 [#426]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/426
404 [#425]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/425
405 [#414]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/414
406 [#403]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/403
407 [#402]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/402
408 [#401]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/401
409 [#399]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/399
410 [#397]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/397
411 [#395]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/395
412 [#390]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/390
413 [#389]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/389
414 [#388]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/388
415 [#387]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/387
416 [#386]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/386
417 [#385]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/385
418 [#384]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/384
419 [#381]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/381
420 [#376]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/376
421 [#375]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/375
422 [#374]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/374
423 [#373]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/373
424 [#372]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/372
425 [#371]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/371
426 [#368]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/368
427 [#363]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/363
428 [#362]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/362
429 [#361]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/361
430 [#360]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/360
431 [#359]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/359
432 [#358]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/358
433 [#357]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/357
434 [#356]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/356
435 [#346]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/346
436 [#339]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/339
437 [#332]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/332
438 [#331]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/331
439 [#330]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/330
440 [#329]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/329
441 [#327]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/327
442 [#326]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/326
443 [#325]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/325
444 [#324]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/324
445 [#322]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/322
446 [#321]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/321
447 [#319]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/319
448 [#316]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/316
449 [#315]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/315
450 [#310]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/310
451 [#304]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/304
452 [#303]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/303
453 [#300]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/300
454 [#286]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/286
455 [#284]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/284
456 [#283]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/283
457 [#281]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/281
458 [#280]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/280
459 [#262]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/262
460 [#260]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/260
461 [#258]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/258
462 [#255]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/255
463 [#249]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/249
464 [#246]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/246
465 [#244]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/244
466 [#240]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/240
467 [#237]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/237
468 [#234]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/234
469 [#227]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/227
470 [#226]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/226
471 [#224]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/224
472 [#217]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/217
473 [#208]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/208
474 [#205]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/205
475 [#203]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/203
476 [#197]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/197
477 [#192]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/192
478 [#190]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/190
479 [#188]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/188
480 [#185]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/185
481 [#183]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/183
482 [#182]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/182
483 [#180]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/180
484 [#179]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/179
485 [#178]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/178
486 [#177]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/177
487 [#176]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/176
488 [#174]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/174
489 [#173]: https://github.com/TGMPA/TGM-Plugin-Activation/pull/173
490 [#171]: https://github.com/TGMPA/TGM-Plugin-Activation/issues/171
491
492 [Codex on callbacks]: https://codex.wordpress.org/How_to_Pass_Tag_Parameters#Callable
493
494 [{$prefix}plugin_action_links]: https://developer.wordpress.org/reference/hooks/prefixplugin_action_links/
495 [after_plugin_row_{$plugin_file}]: https://developer.wordpress.org/reference/hooks/after_plugin_row_plugin_file/
496 [update_bulk_plugins_complete_actions]: https://developer.wordpress.org/reference/hooks/update_bulk_plugins_complete_actions/
497