Media Library Assistant - Version 2.10

Version Description

  • New: For the [mla_gallery] shortcode, the Google File Viewer (mla_viewer) has been replaced by two new featues. First, a "Featured Image" can be assigned to Media Library items; it will replace the MIME type icon as the thumbnail for the item. Second, PDF documents can generate a thumbnail image for the item if Imagemagick, Imagick and Ghostscript are available on the server. See the Other Notes section section or the Settings/Media Library Assistant Documentation tab for more information.
  • New: XMP metadata can be extracted from JPEG and TIFF images and used in [mla_gallery] shortcodes and IPTC/EXIF or Custom Field mapping rules.
  • New: Several simple MLA Gallery examples have been added to the Documentation tab.
  • New: A Media/Assistant submenu table custom view example plugin, mla-custom-view-example.php.txt has been added to the /media-library-assistant/examples/ directory. The example adds two custom views for "Attached" items and "Unpublished" items that are attached to a parent whose post_status is 'draft', 'future', 'pending' or 'trash' .
  • New: Two new filters for the "Media/Assistant Submenu Hooks" allow you to record or modify the new values for Bulk Edit fields. The /media-library-assistant/examples/mla-list-table-hooks-example.php.txt example plugin has been updated with the new filters.
  • New: A Terms Search "exact" option has been added to eliminate false matches such as "man" within "woman".
  • New: A new field-level data source, "alt_text" is available for use in shortcodes and mapping rules.
  • New: A new field-level option value, "substr(s,l)" is available for use in shortcodes and mapping rules. It uses the PHP substr() function to extract a portion of a field-level value.
  • New: If you add define( 'MLA_DEBUG_LEVEL', 1 ); to your wp-config.php file a new Settings/Media Library Assistant Debug tab is available. The new tab lets you view, download and reset (empty) the PHP error log file.
  • New: The Development Version date and MLA debug level, if applicable, are now added to the title of the Settings/Media library Assistant submenu.
  • Fix: Text and Textarea option settings containing backslashes are now cleaned up with stripslashes.
  • Fix: In the Media Manager Modal Window, CSS styles have been updated to improve the layout of the toolbar.
  • Fix: If 'Enable "bulk edit" area' is checked, bulk edit on Add New uploads will be run even if all four "enable mapping" options are disabled.
  • Fix: Terms Search performance has been improved by eliminating redundant table joins.
  • Fix: For the Media/Assistant submenu table, sorting on custom fields now works correctly.
  • Fix: For the Media/Assistant submenu table, Search Media with the terms option now works correctly.
  • Fix: The /media-library-assistant/examples/mla-acf-checkbox-example.php.txt example plugin has been re-written to use the new filters and to confrom to changes made in MLA version 2.01.
  • Fix: The /media-library-assistant/examples/mla-image-source-control-example.php.txt example plugin has been re-written to use the new filters and to confrom to changes made in MLA version 2.01.
  • Fix: Where-used reporting now identifies posts and pages in the Trash.
  • Fix: For IPTC/EXIF mapping, single/double quotes in the EXIF/Template Value field are now handled correctly, without adding backslash characters to the new values.
  • Fix: Field-level option values containing multiple arguments are now parsed correctly.
  • Fix: Several changes to the Translation/Localization strings to reduce translation effort.
Download this release

Release Info

Developer dglingren
Plugin Icon 128x128 Media Library Assistant
Version 2.10
Comparing to
See all releases

Code changes from version 2.02 to 2.10

Files changed (71) hide show
  1. css/mla-media-modal-style.css +8 -2
  2. css/mla-style-terms-search.css +5 -3
  3. examples/buddypress-hooks-example.php.txt +1 -1
  4. examples/mla-acf-checkbox-example.php.txt +107 -37
  5. examples/mla-advanced-custom-fields-example.php.txt +550 -0
  6. examples/mla-audio-shortcode-example.php.txt +1 -1
  7. examples/mla-child-term-hooks-example.php.txt +1 -1
  8. examples/mla-cloud-hooks-example.php.txt +1 -1
  9. examples/mla-custom-nolink-example.php.txt +110 -0
  10. examples/mla-custom-view-example.php.txt +364 -0
  11. examples/mla-image-source-control-example.php.txt +138 -100
  12. examples/mla-jhdean-mapping-hooks-example.php.txt +138 -0
  13. examples/mla-list-table-hooks-example.php.txt +81 -28
  14. examples/mla-mapping-hooks-example.php.txt +1 -1
  15. examples/mla-media-modal-hooks-example.php.txt +1 -1
  16. examples/mla-media-tagger-example.php.txt +1 -1
  17. examples/mla-metabox-hooks-example.php.txt +1 -1
  18. examples/mla-metadata-mapping-hooks-example.php.txt +1 -1
  19. examples/mla-simple-mapping-hooks-example.php.txt +1 -1
  20. examples/mla-tax-query-example.php.txt +1 -1
  21. examples/mqtranslate-example.php.txt +1 -1
  22. includes/class-mla-data-pdf.php +796 -0
  23. includes/class-mla-data.php +508 -1041
  24. includes/class-mla-edit-media.php +40 -21
  25. includes/class-mla-image-editor.php +309 -0
  26. includes/class-mla-list-table.php +37 -34
  27. includes/class-mla-main.php +64 -47
  28. includes/class-mla-media-modal.php +11 -9
  29. includes/class-mla-mime-types.php +15 -15
  30. includes/class-mla-options.php +152 -94
  31. includes/class-mla-settings.php +193 -29
  32. includes/class-mla-shortcodes.php +262 -52
  33. includes/class-mla-stream-image.php +363 -0
  34. includes/mla-plugin-loader.php +97 -81
  35. includes/mla-stream-image.php +584 -0
  36. index.php +4 -2
  37. languages/MLA Internationalization Guide.pdf +0 -0
  38. languages/media-library-assistant-en_US.pot +1023 -947
  39. phpDocs/classes.svg +129 -91
  40. phpDocs/classes/MLA.html +14 -1
  41. phpDocs/classes/MLAData.html +182 -365
  42. phpDocs/classes/MLAEdit.html +4 -2
  43. phpDocs/classes/MLAMime.html +1 -1
  44. phpDocs/classes/MLAModal.html +1 -1
  45. phpDocs/classes/MLAMutex.html +450 -0
  46. phpDocs/classes/MLAObjects.html +1 -1
  47. phpDocs/classes/MLAOptions.html +2 -2
  48. phpDocs/classes/MLAPDF.html +384 -0
  49. phpDocs/classes/MLASettings.html +45 -1
  50. phpDocs/classes/MLAShortcodes.html +22 -1
  51. phpDocs/classes/MLAStreamImage.html +359 -0
  52. phpDocs/classes/MLATest.html +1 -1
  53. phpDocs/classes/MLATextWidget.html +1 -1
  54. phpDocs/classes/MLA_Checklist_Walker.html +1 -1
  55. phpDocs/classes/MLA_Image_Editor.html +248 -0
  56. phpDocs/classes/MLA_List_Table.html +27 -26
  57. phpDocs/classes/MLA_Upload_List_Table.html +1 -1
  58. phpDocs/classes/MLA_Upload_Optional_List_Table.html +1 -1
  59. phpDocs/classes/MLA_View_List_Table.html +1 -1
  60. phpDocs/classes/MNA_Pad_Counts_Walker.html +1 -1
  61. phpDocs/deprecated.html +1 -1
  62. phpDocs/errors.html +5 -1
  63. phpDocs/graph_class.html +1 -1
  64. phpDocs/index.html +1 -1
  65. phpDocs/markers.html +5 -5
  66. phpDocs/namespaces/global.html +52 -1
  67. phpDocs/packages/Media Library Assistant.MLA.Child.Theme.html +1 -1
  68. phpDocs/packages/Media Library Assistant.MLA.Child.html +1 -1
  69. phpDocs/packages/Media Library Assistant.MLA.html +1 -1
  70. phpDocs/packages/Media Library Assistant.html +62 -1
  71. phpDocs/structure.xml +1605 -1280
css/mla-media-modal-style.css CHANGED
@@ -7,12 +7,18 @@
7
  * Adapted from /wp-admin/css/edit.css and given unique names to avoid conflicts.
8
  */
9
 
10
- .media-toolbar {
11
  overflow: visible;
12
  }
13
 
14
- .media-toolbar-secondary {
15
  width: 50%;
 
 
 
 
 
 
16
  }
17
 
18
  /** === Search Options */
7
  * Adapted from /wp-admin/css/edit.css and given unique names to avoid conflicts.
8
  */
9
 
10
+ .attachments-browser .media-toolbar {
11
  overflow: visible;
12
  }
13
 
14
+ .attachments-browser .media-toolbar .media-toolbar-secondary {
15
  width: 50%;
16
+ max-width: 50%;
17
+ }
18
+
19
+ .attachments-browser .media-toolbar .media-toolbar-primary {
20
+ width: 50%;
21
+ max-width: 50%;
22
  }
23
 
24
  /** === Search Options */
css/mla-style-terms-search.css CHANGED
@@ -105,19 +105,21 @@
105
 
106
  #mla-terms-search-radio-div {
107
  border: 1px solid #dfdfdf;
108
- width: 220px;
109
  }
110
 
111
- #mla-terms-search-radio-phrases-div {
 
112
  display:inline-block;
113
  margin-right: 10px;
114
  padding: 0px 10px;
115
  border-right: 1px solid #dfdfdf;
116
  }
117
 
118
- #mla-terms-search-radio-terms-div {
119
  display:inline-block;
120
  padding-right: 10px;
 
121
  }
122
 
123
  #mla-terms-search-buttons-div {
105
 
106
  #mla-terms-search-radio-div {
107
  border: 1px solid #dfdfdf;
108
+ width: 100%; /*360px;*/
109
  }
110
 
111
+ #mla-terms-search-radio-phrases-div,
112
+ #mla-terms-search-radio-terms-div {
113
  display:inline-block;
114
  margin-right: 10px;
115
  padding: 0px 10px;
116
  border-right: 1px solid #dfdfdf;
117
  }
118
 
119
+ #mla-terms-search-exact-div {
120
  display:inline-block;
121
  padding-right: 10px;
122
+ vertical-align:top
123
  }
124
 
125
  #mla-terms-search-buttons-div {
examples/buddypress-hooks-example.php.txt CHANGED
@@ -37,7 +37,7 @@ Copyright 2013, 2014 David Lingren
37
  /**
38
  * Class MLA BuddyPress Hooks Example hooks all of the filters provided by the [mla_gallery] shortcode
39
  *
40
- * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding enerything
41
  * else inside a class means this is the only name you have to worry about.
42
  *
43
  * @package MLA Gallery Hooks for BuddyPress & rtMedia Example
37
  /**
38
  * Class MLA BuddyPress Hooks Example hooks all of the filters provided by the [mla_gallery] shortcode
39
  *
40
+ * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding everything
41
  * else inside a class means this is the only name you have to worry about.
42
  *
43
  * @package MLA Gallery Hooks for BuddyPress & rtMedia Example
examples/mla-acf-checkbox-example.php.txt CHANGED
@@ -15,7 +15,7 @@
15
  *
16
  *
17
  * @package MLA ACF Checkbox Example
18
- * @version 1.00
19
  */
20
 
21
  /*
@@ -23,10 +23,10 @@ Plugin Name: MLA ACF Checkbox Example
23
  Plugin URI: http://fairtradejudaica.org/media-library-assistant-a-wordpress-plugin/
24
  Description: Provides an example of hooking the filters provided by the MLA_List_Table class
25
  Author: David Lingren
26
- Version: 1.00
27
  Author URI: http://fairtradejudaica.org/our-story/staff/
28
 
29
- Copyright 2014 David Lingren
30
 
31
  This program is free software; you can redistribute it and/or modify
32
  it under the terms of the GNU General Public License as published by
@@ -78,6 +78,7 @@ class MLAACFCheckboxExample {
78
  * Defined in /media-library-assistant/includes/class-mla-main.php
79
  */
80
  add_filter( 'mla_list_table_inline_action', 'MLAACFCheckboxExample::mla_list_table_inline_action', 10, 2 ); //
 
81
  add_filter( 'mla_list_table_bulk_action', 'MLAACFCheckboxExample::mla_list_table_bulk_action', 10, 3 ); //
82
  add_filter( 'mla_list_table_inline_values', 'MLAACFCheckboxExample::mla_list_table_inline_values', 10, 1 ); //
83
 
@@ -129,6 +130,44 @@ class MLAACFCheckboxExample {
129
  return $item_content;
130
  } // mla_list_table_inline_action
131
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
132
  /**
133
  * Process an MLA_List_Table bulk action
134
  *
@@ -147,32 +186,17 @@ class MLAACFCheckboxExample {
147
  * 'prevent_default' => true to bypass the MLA handler )
148
  */
149
  public static function mla_list_table_bulk_action( $item_content, $bulk_action, $post_id ) {
150
- static $acf_checkbox_value = NULL;
151
-
152
  /*
153
- * If the field is present and this is the first time we've been called,
154
- * save the field value for our own update process and remove it from the
155
- * $_REQUEST array to prevent MLA's default update processing.
156
- */
157
- if ( ! empty( $_REQUEST['c_acf_checkbox'] ) ) {
158
- if ( is_null( $acf_checkbox_value ) ) {
159
- $acf_checkbox_value = trim( $_REQUEST['c_acf_checkbox'] );
160
- }
161
-
162
- $_REQUEST['c_acf_checkbox'] = '';
163
- }
164
-
165
- /*
166
- * If the field is present,apply our own update process. Note the
167
  * special 'empty' value to bulk-delete the custom field entirely.
168
  */
169
- if ( ! empty( $acf_checkbox_value ) ) {
170
- if ( 'empty' == $acf_checkbox_value ) {
171
  delete_post_meta( $post_id, 'acf_checkbox' );
172
  $item_content = array( 'message' => sprintf( __( 'Deleting %1$s', 'media-library-assistant' ) . '<br>', 'acf_checkbox' ) );
173
  } else {
174
- update_post_meta( $post_id, 'acf_checkbox', explode( ',', $acf_checkbox_value ) );
175
- $item_content = array( 'message' => sprintf( __( 'Adding %1$s = %2$s', 'media-library-assistant' ) . '<br>', 'acf_checkbox', $acf_checkbox_value ) );
176
  }
177
  }
178
 
@@ -201,6 +225,15 @@ class MLAACFCheckboxExample {
201
  return $item_values;
202
  } // mla_list_table_inline_values
203
 
 
 
 
 
 
 
 
 
 
204
  /**
205
  * Filter the MLA_List_Table columns
206
  *
@@ -215,11 +248,27 @@ class MLAACFCheckboxExample {
215
  */
216
  public static function mla_list_table_get_columns( $columns ) {
217
  /*
218
- * Replace the MLA custom field slug with our own slug value
 
219
  */
220
- if ( isset( $columns['c_acf_checkbox'] ) ) {
221
- unset( $columns['c_acf_checkbox'] );
222
- $columns['my_acf_checkbox'] = 'ACF Checkbox';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
223
  }
224
 
225
  return $columns;
@@ -241,9 +290,11 @@ class MLAACFCheckboxExample {
241
  /*
242
  * Replace the MLA custom field slug with our own slug value
243
  */
244
- $index = array_search( 'c_acf_checkbox', $hidden_columns );
245
- if ( false !== $index ) {
246
- $hidden_columns[ $index ] = 'my_acf_checkbox';
 
 
247
  }
248
 
249
  return $hidden_columns;
@@ -267,12 +318,24 @@ class MLAACFCheckboxExample {
267
  */
268
  public static function mla_list_table_get_sortable_columns( $sortable_columns ) {
269
  /*
270
- * Replace the MLA custom field slug with our own slug value
271
  */
272
- if ( isset( $sortable_columns['c_acf_checkbox'] ) ) {
273
- $sortable_columns['my_acf_checkbox'] = $sortable_columns['c_acf_checkbox'];
274
- unset( $sortable_columns['c_acf_checkbox'] );
275
- }
 
 
 
 
 
 
 
 
 
 
 
 
276
 
277
  return $sortable_columns;
278
  } // mla_list_table_get_sortable_columns_filter
@@ -294,7 +357,7 @@ class MLAACFCheckboxExample {
294
  * Convert the ACF-compatible array to a comma-delimited list of
295
  * "checked" checkbox values.
296
  */
297
- if ( 'my_acf_checkbox' == $column_name ) {
298
  $values = isset( $item->mla_item_acf_checkbox ) ? $item->mla_item_acf_checkbox : '';
299
  if ( empty( $values ) ) {
300
  return '';
@@ -322,11 +385,18 @@ class MLAACFCheckboxExample {
322
  * @return string updated HTML markup for inline data.
323
  */
324
  public static function mla_list_table_build_inline_data( $inline_data, $item ) {
 
 
 
 
 
 
 
325
  /*
326
  * Convert the ACF-compatible array to a comma-delimited list of
327
  * "checked" checkbox values.
328
  */
329
- $match_count = preg_match_all( '/\<div class="c_acf_checkbox"\>(.*)\<\/div\>/', $inline_data, $matches, PREG_OFFSET_CAPTURE );
330
  if ( ( $match_count == false ) || ( $match_count == 0 ) ) {
331
  return $inline_data;
332
  }
15
  *
16
  *
17
  * @package MLA ACF Checkbox Example
18
+ * @version 1.01
19
  */
20
 
21
  /*
23
  Plugin URI: http://fairtradejudaica.org/media-library-assistant-a-wordpress-plugin/
24
  Description: Provides an example of hooking the filters provided by the MLA_List_Table class
25
  Author: David Lingren
26
+ Version: 1.01
27
  Author URI: http://fairtradejudaica.org/our-story/staff/
28
 
29
+ Copyright 2014 - 2015 David Lingren
30
 
31
  This program is free software; you can redistribute it and/or modify
32
  it under the terms of the GNU General Public License as published by
78
  * Defined in /media-library-assistant/includes/class-mla-main.php
79
  */
80
  add_filter( 'mla_list_table_inline_action', 'MLAACFCheckboxExample::mla_list_table_inline_action', 10, 2 ); //
81
+ add_filter( 'mla_list_table_bulk_action_initial_request', 'MLAACFCheckboxExample::mla_list_table_bulk_action_initial_request', 10, 3 );
82
  add_filter( 'mla_list_table_bulk_action', 'MLAACFCheckboxExample::mla_list_table_bulk_action', 10, 3 ); //
83
  add_filter( 'mla_list_table_inline_values', 'MLAACFCheckboxExample::mla_list_table_inline_values', 10, 1 ); //
84
 
130
  return $item_content;
131
  } // mla_list_table_inline_action
132
 
133
+ /**
134
+ * Pre-filter MLA_List_Table bulk action request parameters
135
+ *
136
+ * This filter gives you an opportunity to pre-process the request parameters for a bulk action
137
+ * before the action begins. DO NOT assume parameters come from the $_REQUEST super array!
138
+ *
139
+ * @since 1.01
140
+ *
141
+ * @param array $request bulk action request parameters, including ['mla_bulk_action_do_cleanup'].
142
+ * @param string $bulk_action the requested action.
143
+ * @param array $custom_field_map [ slug => field_name ]
144
+ *
145
+ * @return array updated bulk action request parameters
146
+ */
147
+ public static function mla_list_table_bulk_action_initial_request( $request, $bulk_action, $custom_field_map ) {
148
+ /*
149
+ * If the field is present, save the field value for our own update process and remove it
150
+ * from the $request array to prevent MLA's default update processing.
151
+ */
152
+ if ( false !== $slug = array_search( 'acf_checkbox', $custom_field_map ) ) {
153
+ if ( ! empty( $request[ $slug ] ) ) {
154
+ self::$acf_checkbox_value = trim( $request[ $slug ] );
155
+ $request[ $slug ] = '';
156
+ }
157
+ }
158
+
159
+ return $request;
160
+ } // mla_list_table_bulk_action_initial_request
161
+
162
+ /**
163
+ * Holds the new ACF checkbox value for the duration of a Bulk Edit action
164
+ *
165
+ * @since 1.01
166
+ *
167
+ * @var string
168
+ */
169
+ private static $acf_checkbox_value = NULL;
170
+
171
  /**
172
  * Process an MLA_List_Table bulk action
173
  *
186
  * 'prevent_default' => true to bypass the MLA handler )
187
  */
188
  public static function mla_list_table_bulk_action( $item_content, $bulk_action, $post_id ) {
 
 
189
  /*
190
+ * If the field is present, apply our own update process. Note the
 
 
 
 
 
 
 
 
 
 
 
 
 
191
  * special 'empty' value to bulk-delete the custom field entirely.
192
  */
193
+ if ( ! empty( self::$acf_checkbox_value ) ) {
194
+ if ( 'empty' == self::$acf_checkbox_value ) {
195
  delete_post_meta( $post_id, 'acf_checkbox' );
196
  $item_content = array( 'message' => sprintf( __( 'Deleting %1$s', 'media-library-assistant' ) . '<br>', 'acf_checkbox' ) );
197
  } else {
198
+ update_post_meta( $post_id, 'acf_checkbox', explode( ',', self::$acf_checkbox_value ) );
199
+ $item_content = array( 'message' => sprintf( __( 'Adding %1$s = %2$s', 'media-library-assistant' ) . '<br>', 'acf_checkbox', self::$acf_checkbox_value ) );
200
  }
201
  }
202
 
225
  return $item_values;
226
  } // mla_list_table_inline_values
227
 
228
+ /**
229
+ * Holds the ISC custom field name to column "slug" mapping values
230
+ *
231
+ * @since 1.01
232
+ *
233
+ * @var array
234
+ */
235
+ private static $field_slugs = array();
236
+
237
  /**
238
  * Filter the MLA_List_Table columns
239
  *
248
  */
249
  public static function mla_list_table_get_columns( $columns ) {
250
  /*
251
+ * The Quick and Bulk Edit forms substitute arbitrary "slugs" for the
252
+ * custom field names. Remember them for table column and bulk update processing.
253
  */
254
+ if ( false !== $slug = array_search( 'acf_checkbox', $columns ) ) {
255
+ self::$field_slugs['acf_checkbox'] = $slug;
256
+
257
+ /*
258
+ * Change the column slug so we can provide our own friendly content.
259
+ * Replace the entry for the column we're capturing, preserving its place in the list
260
+ */
261
+ $new_columns = array();
262
+
263
+ foreach ( $columns as $key => $value ) {
264
+ if ( $key == $slug ) {
265
+ $new_columns['acf_checkbox'] = 'acf_checkbox';
266
+ } else {
267
+ $new_columns[ $key ] = $value;
268
+ }
269
+ } // foreach column
270
+
271
+ $columns = $new_columns;
272
  }
273
 
274
  return $columns;
290
  /*
291
  * Replace the MLA custom field slug with our own slug value
292
  */
293
+ if ( isset( self::$field_slugs['acf_checkbox'] ) ) {
294
+ $index = array_search( self::$field_slugs['acf_checkbox'], $hidden_columns );
295
+ if ( false !== $index ) {
296
+ $hidden_columns[ $index ] = 'acf_checkbox';
297
+ }
298
  }
299
 
300
  return $hidden_columns;
318
  */
319
  public static function mla_list_table_get_sortable_columns( $sortable_columns ) {
320
  /*
321
+ * Replace the slug for the column we've captured, preserving its place in the list
322
  */
323
+ if ( isset( self::$field_slugs['acf_checkbox'] ) ) {
324
+ $slug = self::$field_slugs['acf_checkbox'];
325
+ if ( isset( $sortable_columns[ $slug ] ) ) {
326
+ $new_columns = array();
327
+
328
+ foreach ( $sortable_columns as $key => $value ) {
329
+ if ( $key == $slug ) {
330
+ $new_columns['acf_checkbox'] = $value;
331
+ } else {
332
+ $new_columns[ $key ] = $value;
333
+ }
334
+ } // foreach column
335
+
336
+ $sortable_columns = $new_columns;
337
+ } // slug found
338
+ } // slug exists
339
 
340
  return $sortable_columns;
341
  } // mla_list_table_get_sortable_columns_filter
357
  * Convert the ACF-compatible array to a comma-delimited list of
358
  * "checked" checkbox values.
359
  */
360
+ if ( 'acf_checkbox' == $column_name ) {
361
  $values = isset( $item->mla_item_acf_checkbox ) ? $item->mla_item_acf_checkbox : '';
362
  if ( empty( $values ) ) {
363
  return '';
385
  * @return string updated HTML markup for inline data.
386
  */
387
  public static function mla_list_table_build_inline_data( $inline_data, $item ) {
388
+ /*
389
+ * See if the field is present
390
+ */
391
+ if ( ! isset( self::$field_slugs['acf_checkbox'] ) ) {
392
+ return $inline_data;
393
+ }
394
+
395
  /*
396
  * Convert the ACF-compatible array to a comma-delimited list of
397
  * "checked" checkbox values.
398
  */
399
+ $match_count = preg_match_all( '/\<div class="' . self::$field_slugs['acf_checkbox'] . '"\>(.*)\<\/div\>/', $inline_data, $matches, PREG_OFFSET_CAPTURE );
400
  if ( ( $match_count == false ) || ( $match_count == 0 ) ) {
401
  return $inline_data;
402
  }
examples/mla-advanced-custom-fields-example.php.txt ADDED
@@ -0,0 +1,550 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Provides an example of hooking the filters provided by the MLA_List_Table class
4
+ *
5
+ * In this example:
6
+ *
7
+ * 1. an Advanced Custom Fields "checkbox" custom field is added to the
8
+ * Media/Assistant submenu table, Quick Edit and Bulk Edit areas.
9
+ *
10
+ * 2. an Advanced Custom Fields "repeater" custom field is analyzed to display
11
+ * "where used" information in the Media/Assistant submenu table.
12
+ *
13
+ * The ACF checkbox custom field name is "acf_checkbox"; this is the ACF "Field Name",
14
+ * not the "Field Label". You can support another field by changing all occurances of
15
+ * the name to match the field you want.
16
+ *
17
+ * You must also define an MLA Custom Field mapping rule for the field. You can leave
18
+ * the Data Source as "-- None (select a value) --" and the other defaults. Check the
19
+ * three boxes for MLA Column, Quick Edit and Bulk Edit support.
20
+ *
21
+ *
22
+ * @package MLA ACF Checkbox Example
23
+ * @version 1.02
24
+ */
25
+
26
+ /*
27
+ Plugin Name: MLA Advanced Custom Fields Example
28
+ Plugin URI: http://fairtradejudaica.org/media-library-assistant-a-wordpress-plugin/
29
+ Description: Supports an ACF checkbox and "where-used" in an ACF repeater
30
+ Author: David Lingren
31
+ Version: 1.02
32
+ Author URI: http://fairtradejudaica.org/our-story/staff/
33
+
34
+ Copyright 2014 - 2015 David Lingren
35
+
36
+ This program is free software; you can redistribute it and/or modify
37
+ it under the terms of the GNU General Public License as published by
38
+ the Free Software Foundation; either version 2 of the License, or
39
+ (at your option) any later version.
40
+
41
+ This program is distributed in the hope that it will be useful,
42
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
43
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
44
+ GNU General Public License for more details.
45
+
46
+ You can get a copy of the GNU General Public License by writing to the
47
+ Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
48
+ */
49
+
50
+ /**
51
+ * Class MLA Advanced Custom Fields Example hooks some of the filters provided by the MLA_List_Table class
52
+ *
53
+ * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding everything
54
+ * else inside a class means this is the only name you have to worry about.
55
+ *
56
+ * @package MLA ACF Checkbox Example
57
+ * @since 1.00
58
+ */
59
+ class MLAACFExample {
60
+ /**
61
+ * Initialization function, similar to __construct()
62
+ *
63
+ * @since 1.00
64
+ *
65
+ * @return void
66
+ */
67
+ public static function initialize() {
68
+ /*
69
+ * The filters are only useful for the admin section; exit in the front-end posts/pages
70
+ */
71
+ if ( ! is_admin() )
72
+ return;
73
+
74
+ /*
75
+ * add_filter parameters:
76
+ * $tag - name of the hook you're filtering; defined by [mla_gallery]
77
+ * $function_to_add - function to be called when [mla_gallery] applies the filter
78
+ * $priority - default 10; lower runs earlier, higher runs later
79
+ * $accepted_args - number of arguments your function accepts
80
+ */
81
+
82
+ /*
83
+ * Defined in /media-library-assistant/includes/class-mla-main.php
84
+ */
85
+ add_filter( 'mla_list_table_inline_action', 'MLAACFExample::mla_list_table_inline_action', 10, 2 ); //
86
+ add_filter( 'mla_list_table_bulk_action_initial_request', 'MLAACFExample::mla_list_table_bulk_action_initial_request', 10, 3 );
87
+ add_filter( 'mla_list_table_bulk_action', 'MLAACFExample::mla_list_table_bulk_action', 10, 3 ); //
88
+ add_filter( 'mla_list_table_inline_values', 'MLAACFExample::mla_list_table_inline_values', 10, 1 ); //
89
+
90
+ /*
91
+ * Defined in /media-library-assistant/includes/class-mla-list-table.php
92
+ */
93
+ add_filter( 'mla_list_table_get_columns', 'MLAACFExample::mla_list_table_get_columns', 10, 1 ); //
94
+ add_filter( 'mla_list_table_get_hidden_columns', 'MLAACFExample::mla_list_table_get_hidden_columns', 10, 1 ); //
95
+ add_filter( 'mla_list_table_get_sortable_columns', 'MLAACFExample::mla_list_table_get_sortable_columns', 10, 1 ); //
96
+ add_filter( 'mla_list_table_column_default', 'MLAACFExample::mla_list_table_column_default', 10, 3 ); //
97
+ add_filter( 'mla_list_table_build_inline_data', 'MLAACFExample::mla_list_table_build_inline_data', 10, 2 );
98
+ }
99
+
100
+ /**
101
+ * Field name of the checkbox field
102
+ *
103
+ * @since 1.02
104
+ *
105
+ * @var string
106
+ */
107
+ const ACF_CHECKBOX_FIELD = 'acf_checkbox';
108
+
109
+ /**
110
+ * Field Label of the checkbox field
111
+ *
112
+ * @since 1.02
113
+ *
114
+ * @var string
115
+ */
116
+ const ACF_CHECKBOX_TITLE = 'ACF Checkbox';
117
+
118
+ /**
119
+ * Field name of the "parent" repeater field
120
+ *
121
+ * @since 1.02
122
+ *
123
+ * @var string
124
+ */
125
+ const ACF_REPEATER_FIELD = 'photos_alt';
126
+
127
+ /**
128
+ * Field Label of the "parent" repeater field
129
+ *
130
+ * @since 1.02
131
+ *
132
+ * @var string
133
+ */
134
+ const ACF_REPEATER_TITLE = 'Photos Alt';
135
+
136
+ /**
137
+ * Field name of the "child" image sub field
138
+ *
139
+ * @since 1.02
140
+ *
141
+ * @var string
142
+ */
143
+ const ACF_SUB_FIELD = 'photo';
144
+
145
+ /**
146
+ * Process an MLA_List_Table inline action, i.e., Quick Edit
147
+ *
148
+ * This filter gives you an opportunity to pre-process an MLA_List_Table "Quick Edit"
149
+ * action before the MLA handler.
150
+ *
151
+ * @since 1.00
152
+ *
153
+ * @param array $item_content NULL, to indicate no handler.
154
+ * @param integer $post_id the affected attachment.
155
+ *
156
+ * @return object updated $item_content. NULL if no handler, otherwise
157
+ * ( 'message' => error or status message(s), 'body' => '',
158
+ * 'prevent_default' => true to bypass the MLA handler )
159
+ */
160
+ public static function mla_list_table_inline_action( $item_content, $post_id ) {
161
+ /*
162
+ * Convert the comma-delimited string of "checked" checkbox values back to
163
+ * an ACF-compatible array
164
+ */
165
+ if ( isset( $_REQUEST['custom_updates'] ) && isset( $_REQUEST['custom_updates'][ self::ACF_CHECKBOX_FIELD ] ) ) {
166
+ if ( ! empty( $_REQUEST['custom_updates'][ self::ACF_CHECKBOX_FIELD ] ) ) {
167
+ $_REQUEST['custom_updates'][ self::ACF_CHECKBOX_FIELD ] = explode( ',', $_REQUEST['custom_updates'][ self::ACF_CHECKBOX_FIELD ] );
168
+ }
169
+ }
170
+
171
+ return $item_content;
172
+ } // mla_list_table_inline_action
173
+
174
+ /**
175
+ * Pre-filter MLA_List_Table bulk action request parameters
176
+ *
177
+ * This filter gives you an opportunity to pre-process the request parameters for a bulk action
178
+ * before the action begins. DO NOT assume parameters come from the $_REQUEST super array!
179
+ *
180
+ * @since 1.01
181
+ *
182
+ * @param array $request bulk action request parameters, including ['mla_bulk_action_do_cleanup'].
183
+ * @param string $bulk_action the requested action.
184
+ * @param array $custom_field_map [ slug => field_name ]
185
+ *
186
+ * @return array updated bulk action request parameters
187
+ */
188
+ public static function mla_list_table_bulk_action_initial_request( $request, $bulk_action, $custom_field_map ) {
189
+ /*
190
+ * If the field is present, save the field value for our own update process and remove it
191
+ * from the $request array to prevent MLA's default update processing.
192
+ */
193
+ if ( false !== $slug = array_search( self::ACF_CHECKBOX_FIELD, $custom_field_map ) ) {
194
+ if ( ! empty( $request[ $slug ] ) ) {
195
+ self::$acf_checkbox_value = trim( $request[ $slug ] );
196
+ $request[ $slug ] = '';
197
+ }
198
+ }
199
+
200
+ return $request;
201
+ } // mla_list_table_bulk_action_initial_request
202
+
203
+ /**
204
+ * Holds the new ACF checkbox value for the duration of a Bulk Edit action
205
+ *
206
+ * @since 1.01
207
+ *
208
+ * @var string
209
+ */
210
+ private static $acf_checkbox_value = NULL;
211
+
212
+ /**
213
+ * Process an MLA_List_Table bulk action
214
+ *
215
+ * This filter gives you an opportunity to pre-process an MLA_List_Table page-level
216
+ * or single-item action, standard or custom, before the MLA handler.
217
+ * The filter is called once for each of the items in $_REQUEST['cb_attachment'].
218
+ *
219
+ * @since 1.00
220
+ *
221
+ * @param array $item_content NULL, to indicate no handler.
222
+ * @param string $bulk_action the requested action.
223
+ * @param integer $post_id the affected attachment.
224
+ *
225
+ * @return object updated $item_content. NULL if no handler, otherwise
226
+ * ( 'message' => error or status message(s), 'body' => '',
227
+ * 'prevent_default' => true to bypass the MLA handler )
228
+ */
229
+ public static function mla_list_table_bulk_action( $item_content, $bulk_action, $post_id ) {
230
+ /*
231
+ * If the field is present, apply our own update process. Note the
232
+ * special 'empty' value to bulk-delete the custom field entirely.
233
+ */
234
+ if ( ! empty( self::$acf_checkbox_value ) ) {
235
+ if ( 'empty' == self::$acf_checkbox_value ) {
236
+ delete_post_meta( $post_id, self::ACF_CHECKBOX_FIELD );
237
+ $item_content = array( 'message' => sprintf( __( 'Deleting %1$s', 'media-library-assistant' ) . '<br>', self::ACF_CHECKBOX_FIELD ) );
238
+ } else {
239
+ update_post_meta( $post_id, self::ACF_CHECKBOX_FIELD, explode( ',', self::$acf_checkbox_value ) );
240
+ $item_content = array( 'message' => sprintf( __( 'Adding %1$s = %2$s', 'media-library-assistant' ) . '<br>', self::ACF_CHECKBOX_FIELD, self::$acf_checkbox_value ) );
241
+ }
242
+ }
243
+
244
+ return $item_content;
245
+ } // mla_list_table_bulk_action
246
+
247
+ /**
248
+ * MLA_List_Table inline edit item values
249
+ *
250
+ * This filter gives you a chance to modify and extend the substitution values
251
+ * for the Quick and Bulk Edit forms.
252
+ *
253
+ * @since 1.00
254
+ *
255
+ * @param array $item_values parameter_name => parameter_value pairs
256
+ *
257
+ * @return array updated substitution parameter name => value pairs
258
+ */
259
+ public static function mla_list_table_inline_values( $item_values ) {
260
+ /*
261
+ * Replace the ACF Field Name with a more friendly Field Label
262
+ */
263
+ $item_values['custom_fields'] = str_replace( '>acf_checkbox<', '>' . self::ACF_CHECKBOX_TITLE . '<', $item_values['custom_fields'] );
264
+ $item_values['bulk_custom_fields'] = str_replace( '>acf_checkbox<', '>' . self::ACF_CHECKBOX_TITLE . '<', $item_values['bulk_custom_fields'] );
265
+
266
+ return $item_values;
267
+ } // mla_list_table_inline_values
268
+
269
+ /**
270
+ * Holds the ISC custom field name to column "slug" mapping values
271
+ *
272
+ * @since 1.01
273
+ *
274
+ * @var array
275
+ */
276
+ private static $field_slugs = array();
277
+
278
+ /**
279
+ * Filter the MLA_List_Table columns
280
+ *
281
+ * This MLA-specific filter gives you an opportunity to filter the list table columns.
282
+ *
283
+ * @since 1.00
284
+ *
285
+ * @param array $columns An array of columns.
286
+ * format: column_slug => Column Label
287
+ *
288
+ * @return array updated array of columns.
289
+ */
290
+ public static function mla_list_table_get_columns( $columns ) {
291
+ /*
292
+ * The Quick and Bulk Edit forms substitute arbitrary "slugs" for the
293
+ * custom field names. Remember them for table column and bulk update processing.
294
+ */
295
+ if ( false !== $slug = array_search( self::ACF_CHECKBOX_FIELD, $columns ) ) {
296
+ self::$field_slugs[ self::ACF_CHECKBOX_FIELD ] = $slug;
297
+
298
+ /*
299
+ * Change the column slug so we can provide our own friendly content.
300
+ * Replace the entry for the column we're capturing, preserving its place in the list
301
+ */
302
+ $new_columns = array();
303
+
304
+ foreach ( $columns as $key => $value ) {
305
+ if ( $key == $slug ) {
306
+ $new_columns[ self::ACF_CHECKBOX_FIELD ] = self::ACF_CHECKBOX_TITLE;
307
+ } else {
308
+ $new_columns[ $key ] = $value;
309
+ }
310
+ } // foreach column
311
+
312
+ $columns = $new_columns;
313
+ }
314
+
315
+ /*
316
+ * Add a column of our own for the repeater "where-used" information
317
+ */
318
+ $columns[ 'acf_' . self::ACF_REPEATER_FIELD ] = self::ACF_REPEATER_TITLE;
319
+ return $columns;
320
+ } // mla_list_table_get_columns
321
+
322
+ /**
323
+ * Filter the MLA_List_Table hidden columns
324
+ *
325
+ * This MLA-specific filter gives you an opportunity to filter the hidden list table columns.
326
+ *
327
+ * @since 1.00
328
+ *
329
+ * @param array $hidden_columns An array of columns.
330
+ * format: index => column_slug
331
+ *
332
+ * @return array updated array of columns.
333
+ */
334
+ public static function mla_list_table_get_hidden_columns( $hidden_columns ) {
335
+ /*
336
+ * Replace the MLA custom field slug with our own slug value
337
+ */
338
+ if ( isset( self::$field_slugs[ self::ACF_CHECKBOX_FIELD ] ) ) {
339
+ $index = array_search( self::$field_slugs[ self::ACF_CHECKBOX_FIELD ], $hidden_columns );
340
+ if ( false !== $index ) {
341
+ $hidden_columns[ $index ] = self::ACF_CHECKBOX_FIELD;
342
+ }
343
+ }
344
+
345
+ return $hidden_columns;
346
+ } // mla_list_table_get_hidden_columns
347
+
348
+ /**
349
+ * Filter the MLA_List_Table sortable columns
350
+ *
351
+ * This MLA-specific filter gives you an opportunity to filter the sortable list table
352
+ * columns; a good alternative to the 'manage_media_page_mla_menu_sortable_columns' filter.
353
+ *
354
+ * @since 1.00
355
+ *
356
+ * @param array $sortable_columns An array of columns.
357
+ * Format: 'column_slug' => 'orderby'
358
+ * or 'column_slug' => array( 'orderby', true )
359
+ *
360
+ * The second format will make the initial sorting order be descending.
361
+ *
362
+ * @return array updated array of columns.
363
+ */
364
+ public static function mla_list_table_get_sortable_columns( $sortable_columns ) {
365
+ /*
366
+ * Replace the slug for the column we've captured, preserving its place in the list
367
+ */
368
+ if ( isset( self::$field_slugs[ self::ACF_CHECKBOX_FIELD ] ) ) {
369
+ $slug = self::$field_slugs[ self::ACF_CHECKBOX_FIELD ];
370
+ if ( isset( $sortable_columns[ $slug ] ) ) {
371
+ $new_columns = array();
372
+
373
+ foreach ( $sortable_columns as $key => $value ) {
374
+ if ( $key == $slug ) {
375
+ $new_columns[ self::ACF_CHECKBOX_FIELD ] = $value;
376
+ } else {
377
+ $new_columns[ $key ] = $value;
378
+ }
379
+ } // foreach column
380
+
381
+ $sortable_columns = $new_columns;
382
+ } // slug found
383
+ } // slug exists
384
+
385
+ return $sortable_columns;
386
+ } // mla_list_table_get_sortable_columns
387
+
388
+ /**
389
+ * Translate post_status 'future', 'pending', 'draft' and 'trash' to label
390
+ *
391
+ * @since 1.02
392
+ *
393
+ * @param string post_status
394
+ *
395
+ * @return string Status label or empty string
396
+ */
397
+ protected static function _format_post_status( $post_status ) {
398
+ $flag = ',<br>';
399
+ switch ( $post_status ) {
400
+ case 'draft' :
401
+ $flag .= __('Draft');
402
+ break;
403
+ case 'future' :
404
+ $flag .= __('Scheduled');
405
+ break;
406
+ case 'pending' :
407
+ $flag .= _x('Pending', 'post state');
408
+ break;
409
+ case 'trash' :
410
+ $flag .= __('Trash');
411
+ break;
412
+ default:
413
+ $flag = '';
414
+ }
415
+
416
+ return $flag;
417
+ }
418
+
419
+ /**
420
+ * Supply a column value if no column-specific function has been defined
421
+ *
422
+ * Called when the MLA_List_Table can't find a value for a given column.
423
+ *
424
+ * @since 1.00
425
+ *
426
+ * @param string NULL, indicating no default content
427
+ * @param array A singular item (one full row's worth of data)
428
+ * @param array The name/slug of the column to be processed
429
+ * @return string Text or HTML to be placed inside the column
430
+ */
431
+ public static function mla_list_table_column_default( $content, $item, $column_name ) {
432
+ /*
433
+ * Convert the ACF-compatible array to a comma-delimited list of
434
+ * "checked" checkbox values.
435
+ */
436
+ if ( self::ACF_CHECKBOX_FIELD == $column_name ) {
437
+ $values = isset( $item->mla_item_acf_checkbox ) ? $item->mla_item_acf_checkbox : '';
438
+ if ( empty( $values ) ) {
439
+ return '';
440
+ } elseif ( is_array( $values ) ) {
441
+ return '[' . implode( '],[', $values ) . ']';
442
+ } else {
443
+ return $values;
444
+ }
445
+ }
446
+
447
+ /*
448
+ * Retrieve and format the repeater field "where-used" information
449
+ */
450
+ if ( ( 'acf_' . self::ACF_REPEATER_FIELD ) == $column_name ) {
451
+ global $wpdb;
452
+
453
+ $where_clause = self::ACF_REPEATER_FIELD . '_%_' . self::ACF_SUB_FIELD;
454
+ $references = $wpdb->get_results(
455
+ "
456
+ SELECT *
457
+ FROM {$wpdb->postmeta}
458
+ WHERE meta_key LIKE '{$where_clause}' AND meta_value = {$item->ID}
459
+ "
460
+ );
461
+
462
+ $content = '';
463
+ if ( ! empty( $references ) ) {
464
+ $parents = array();
465
+ foreach ( $references as $reference ) {
466
+ // key on post_id to remove duplicates
467
+ $parents[ $reference->post_id ] = $reference->post_id;
468
+ }
469
+
470
+ $parents = implode( ',', $parents );
471
+ $references = $wpdb->get_results(
472
+ "
473
+ SELECT ID, post_type, post_status, post_title
474
+ FROM {$wpdb->posts}
475
+ WHERE ( post_type <> 'revision' ) AND ( ID IN ({$parents}) )
476
+ "
477
+ );
478
+
479
+ foreach ( $references as $reference ) {
480
+ $status = self::_format_post_status( $reference->post_status );
481
+
482
+ if ( $reference->ID == $item->post_parent ) {
483
+ $parent = ',<br>' . __( 'PARENT', 'media-library-assistant' );
484
+ } else {
485
+ $parent = '';
486
+ }
487
+
488
+ $content .= sprintf( '<a href="%1$s" title="' . __( 'Edit', 'media-library-assistant' ) . ' &#8220;%2$s&#8221;">%2$s</a> (%3$s %4$s%5$s%6$s), ',
489
+ /*%1$s*/ esc_url( add_query_arg( array('post' => $reference->ID, 'action' => 'edit'), 'post.php' ) ),
490
+ /*%2$s*/ esc_attr( $reference->post_title ),
491
+ /*%3$s*/ esc_attr( $reference->post_type ),
492
+ /*%4$s*/ $reference->ID,
493
+ /*%5$s*/ $status,
494
+ /*%6$s*/ $parent ) . "<br>\r\n";
495
+ } // foreach $reference
496
+ } // found $references
497
+ } // found repeater column
498
+
499
+ return $content;
500
+ } // mla_list_table_column_default
501
+
502
+ /**
503
+ * Filter the data for inline (Quick and Bulk) editing
504
+ *
505
+ * This filter gives you an opportunity to filter the data passed to the
506
+ * JavaScript functions for Quick and Bulk editing.
507
+ *
508
+ * @since 1.00
509
+ *
510
+ * @param string $inline_data The HTML markup for inline data.
511
+ * @param object $item The current Media Library item.
512
+ *
513
+ * @return string updated HTML markup for inline data.
514
+ */
515
+ public static function mla_list_table_build_inline_data( $inline_data, $item ) {
516
+ /*
517
+ * See if the field is present
518
+ */
519
+ if ( ! isset( self::$field_slugs[ self::ACF_CHECKBOX_FIELD ] ) ) {
520
+ return $inline_data;
521
+ }
522
+
523
+ /*
524
+ * Convert the ACF-compatible array to a comma-delimited list of
525
+ * "checked" checkbox values.
526
+ */
527
+ $match_count = preg_match_all( '/\<div class="' . self::$field_slugs[ self::ACF_CHECKBOX_FIELD ] . '"\>(.*)\<\/div\>/', $inline_data, $matches, PREG_OFFSET_CAPTURE );
528
+ if ( ( $match_count == false ) || ( $match_count == 0 ) ) {
529
+ return $inline_data;
530
+ }
531
+
532
+ if ( isset( $item->mla_item_acf_checkbox ) ) {
533
+ $value = $item->mla_item_acf_checkbox;
534
+ if ( is_array( $value ) ) {
535
+ $head = substr( $inline_data, 0, $matches[1][0][1] );
536
+ $value = esc_html( implode( ',', $value ) );
537
+ $tail = substr( $inline_data, ( $matches[1][0][1] + strlen( $matches[1][0][0] ) ) );
538
+ $inline_data = $head . $value . $tail;
539
+ }
540
+ }
541
+
542
+ return $inline_data;
543
+ } // mla_list_table_build_inline_data
544
+ } // Class MLAACFExample
545
+
546
+ /*
547
+ * Install the filters at an early opportunity
548
+ */
549
+ add_action('init', 'MLAACFExample::initialize');
550
+ ?>
examples/mla-audio-shortcode-example.php.txt CHANGED
@@ -36,7 +36,7 @@ Copyright 2013, 2014 David Lingren
36
  /**
37
  * Class MLA Audio Shortcode Example hooks two of the filters provided by the [mla_gallery] shortcode
38
  *
39
- * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding enerything
40
  * else inside a class means this is the only name you have to worry about.
41
  *
42
  * @package MLA Audio Shortcode Example
36
  /**
37
  * Class MLA Audio Shortcode Example hooks two of the filters provided by the [mla_gallery] shortcode
38
  *
39
+ * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding everything
40
  * else inside a class means this is the only name you have to worry about.
41
  *
42
  * @package MLA Audio Shortcode Example
examples/mla-child-term-hooks-example.php.txt CHANGED
@@ -42,7 +42,7 @@ Copyright 2014 David Lingren
42
  /**
43
  * Class MLA Child Term Hooks Example hooks three of the filters provided by the [mla_gallery] shortcode
44
  *
45
- * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding enerything
46
  * else inside a class means this is the only name you have to worry about.
47
  *
48
  * @package MLA Child Term Hooks Example
42
  /**
43
  * Class MLA Child Term Hooks Example hooks three of the filters provided by the [mla_gallery] shortcode
44
  *
45
+ * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding everything
46
  * else inside a class means this is the only name you have to worry about.
47
  *
48
  * @package MLA Child Term Hooks Example
examples/mla-cloud-hooks-example.php.txt CHANGED
@@ -37,7 +37,7 @@ Copyright 2013 David Lingren
37
  /**
38
  * Class MLA Tag Cloud Hooks Example hooks all of the filters provided by the [mla_tag_cloud] shortcode
39
  *
40
- * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding enerything
41
  * else inside a class means this is the only name you have to worry about.
42
  *
43
  * @package MLA Tag Cloud Hooks Example
37
  /**
38
  * Class MLA Tag Cloud Hooks Example hooks all of the filters provided by the [mla_tag_cloud] shortcode
39
  *
40
+ * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding everything
41
  * else inside a class means this is the only name you have to worry about.
42
  *
43
  * @package MLA Tag Cloud Hooks Example
examples/mla-custom-nolink-example.php.txt ADDED
@@ -0,0 +1,110 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Replaces gallery item hyperlinks with simple <img> tags when nolink=true
4
+ *
5
+ * @package MLA Custom Nolink Example
6
+ * @version 1.01
7
+ */
8
+
9
+ /*
10
+ Plugin Name: MLA Custom Nolink Example
11
+ Plugin URI: http://fairtradejudaica.org/media-library-assistant-a-wordpress-plugin/
12
+ Description: Replaces gallery item hyperlinks with simple <img> tags when nolink=true
13
+ Author: David Lingren
14
+ Version: 1.01
15
+ Author URI: http://fairtradejudaica.org/our-story/staff/
16
+
17
+ Copyright 2014 - 2015 David Lingren
18
+
19
+ This program is free software; you can redistribute it and/or modify
20
+ it under the terms of the GNU General Public License as published by
21
+ the Free Software Foundation; either version 2 of the License, or
22
+ (at your option) any later version.
23
+
24
+ This program is distributed in the hope that it will be useful,
25
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
26
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27
+ GNU General Public License for more details.
28
+
29
+ You can get a copy of the GNU General Public License by writing to the
30
+ Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
31
+ */
32
+
33
+ /**
34
+ * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding everything
35
+ * else inside a class means this is the only name you have to worry about.
36
+ *
37
+ * @package MLA Custom Nolink Example
38
+ * @since 1.00
39
+ */
40
+ class MLACustomNolinkExample {
41
+ /**
42
+ * Initialization function, similar to __construct()
43
+ *
44
+ * @since 1.00
45
+ *
46
+ * @return void
47
+ */
48
+ public static function initialize() {
49
+ /*
50
+ * The filter is only needed in the front-end posts/pages
51
+ */
52
+ if ( is_admin() ) {
53
+ return;
54
+ }
55
+
56
+
57
+ /*
58
+ * Defined in /wp-includes/media.php - in gallery_shortcode()
59
+ * Use a "low" priority so this filter runs after the "tiled_gallery" filter
60
+ */
61
+ add_filter( 'post_gallery', 'MLACustomNolinkExample::post_gallery', 2002, 2 );
62
+ }
63
+
64
+ /**
65
+ * Filter the [gallery] output to remove hyperlinks
66
+ *
67
+ * @since 1.00
68
+ *
69
+ * @param string The gallery output HTML
70
+ * @param array The shortcode parameters
71
+ *
72
+ * @return string Filtered gallery output HTML
73
+ */
74
+ public static function post_gallery( $html, $atts ) {
75
+ //error_log( 'post_gallery $html = ' . var_export( $html, true ), 0 );
76
+ //error_log( 'post_gallery $atts = ' . var_export( $atts, true ), 0 );
77
+
78
+ // Look for our custom parameter, nolink=true
79
+ if ( isset( $atts['nolink'] ) && 'true' == strtolower( trim( $atts['nolink'] ) ) ) {
80
+
81
+ // Disable Jetpack Carousel, which always runs with Jetpack installed even if not activated
82
+ $start = strpos( $html, 'data-carousel-extra' );
83
+ if ( false !== $start ) {
84
+ $length = strlen( 'data-carousel-extra' );
85
+ $html = substr_replace( $html, 'data-carousel-disabled', $start, $length );
86
+ }
87
+
88
+ // Find all the hyperlinks in the gallery
89
+ $match_count = preg_match_all( '!(<a [^>]*?>)(<img [^>]*?>)(</a>)!', $html, $matches, PREG_OFFSET_CAPTURE );
90
+ if ( $match_count ) {
91
+
92
+ // Replace the links with just the <img> tags
93
+ for ( $index = $match_count - 1; $index >= 0; $index-- ) {
94
+ $replacement = $matches[2][ $index ][0];
95
+ $start = $matches[0][ $index ][1];
96
+ $length = strlen( $matches[0][ $index ][0] );
97
+ $html = substr_replace( $html, $replacement, $start, $length );
98
+ }
99
+ }
100
+ }
101
+
102
+ return $html;
103
+ }
104
+ } // Class MLACustomNolinkExample
105
+
106
+ /*
107
+ * Install the filter at an early opportunity
108
+ */
109
+ add_action('init', 'MLACustomNolinkExample::initialize');
110
+ ?>
examples/mla-custom-view-example.php.txt ADDED
@@ -0,0 +1,364 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Provides an example of hooking the filters provided by the MLA_List_Table class
4
+ *
5
+ * This example adds a Media/Assistant submenu table view for items attached to
6
+ * non-published parent posts/pages.
7
+ *
8
+ * @packageMLA Custom View Example
9
+ * @version 1.00
10
+ */
11
+
12
+ /*
13
+ Plugin Name:MLA Custom View Example
14
+ Plugin URI: http://fairtradejudaica.org/media-library-assistant-a-wordpress-plugin/
15
+ Description: Adds a Media/Assistant submenu table view for items attached to non-published parent posts/pages.
16
+ Author: David Lingren
17
+ Version: 1.00
18
+ Author URI: http://fairtradejudaica.org/our-story/staff/
19
+
20
+ Copyright 2014 - 2015 David Lingren
21
+
22
+ This program is free software; you can redistribute it and/or modify
23
+ it under the terms of the GNU General Public License as published by
24
+ the Free Software Foundation; either version 2 of the License, or
25
+ (at your option) any later version.
26
+
27
+ This program is distributed in the hope that it will be useful,
28
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
29
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30
+ GNU General Public License for more details.
31
+
32
+ You can get a copy of the GNU General Public License by writing to the
33
+ Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
34
+ */
35
+
36
+ /**
37
+ * Class MLA Custom View Example hooks some of the filters provided by the MLA_List_Table class
38
+ *
39
+ * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding everything
40
+ * else inside a class means this is the only name you have to worry about.
41
+ *
42
+ * @packageMLA CustomView Example
43
+ * @since 1.00
44
+ */
45
+ class MLACustomViewExample {
46
+ /**
47
+ * Initialization function, similar to __construct()
48
+ *
49
+ * @since 1.00
50
+ *
51
+ * @return void
52
+ */
53
+ public static function initialize() {
54
+ /*
55
+ * The remaining filters are only useful for the admin section; exit in the front-end posts/pages
56
+ */
57
+ if ( ! is_admin() ) {
58
+ return;
59
+ }
60
+
61
+ /*
62
+ * add_action and add_filter parameters:
63
+ * $tag - name of the hook you're filtering; defined by [mla_gallery]
64
+ * $function_to_add - function to be called when [mla_gallery] applies the filter
65
+ * $priority - default 10; lower runs earlier, higher runs later
66
+ * $accepted_args - number of arguments your function accepts
67
+ */
68
+
69
+ /*
70
+ * Defined in /wp-admin/includes/class-wp-list-table.php
71
+ */
72
+ add_filter( 'views_media_page_mla-menu', 'MLACustomViewExample::views_media_page_mla_menu', 10, 1 );
73
+
74
+ /*
75
+ * Defined in /media-library-assistant/includes/class-mla-list-table.php
76
+ */
77
+ add_filter( 'mla_list_table_submenu_arguments', 'MLACustomViewExample::mla_list_table_submenu_arguments', 10, 2 );
78
+
79
+ add_filter( 'mla_list_table_prepare_items_pagination', 'MLACustomViewExample::mla_list_table_prepare_items_pagination', 10, 2 );
80
+ add_filter( 'mla_list_table_prepare_items_total_items', 'MLACustomViewExample::mla_list_table_prepare_items_total_items', 10, 2 );
81
+ add_filter( 'mla_list_table_prepare_items_the_items', 'MLACustomViewExample::mla_list_table_prepare_items_the_items', 10, 2 );
82
+ }
83
+
84
+ /**
85
+ * Add custom views for the Media/Assistant submenu
86
+ *
87
+ * @since 1.00
88
+ *
89
+ * @param string The slug for the custom view to evaluate
90
+ * @param string The slug for the current custom view, or ''
91
+ *
92
+ * @return mixed HTML for link to display the view, false if count = zero
93
+ */
94
+ private static function _get_view( $view_slug, $current_view ) {
95
+ global $wpdb;
96
+ static $posts_per_view = NULL,
97
+ $view_singular = array (),
98
+ $view_plural = array ();
99
+
100
+ /*
101
+ * Calculate the common values once per page load
102
+ */
103
+ if ( is_null( $posts_per_view ) ) {
104
+ $items = (integer) $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_parent > 0 AND post_type = 'attachment' AND post_status = 'inherit'" );
105
+ $posts_per_view = array( 'attached' => $items );
106
+
107
+ $items = (integer) $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->posts} AS item INNER JOIN {$wpdb->posts} AS parent ON item.post_parent = parent.ID WHERE item.post_parent > 0 AND item.post_type = 'attachment' AND item.post_status = 'inherit' AND parent.post_status IN ( 'draft', 'future', 'pending', 'trash' )" );
108
+ $posts_per_view['unpublished'] = $items;
109
+
110
+ $view_singular = array (
111
+ 'attached' => __( 'Attached', 'mla-custom-table-example' ),
112
+ 'unpublished' => __( 'Unpublished', 'mla-custom-table-example' ),
113
+ );
114
+ $view_plural = array (
115
+ 'attached' => __( 'Attached', 'mla-custom-table-example' ),
116
+ 'unpublished' => __( 'Unpublished', 'mla-custom-table-example' ),
117
+ );
118
+ }
119
+
120
+ /*
121
+ * Make sure the slug is in our list and has posts
122
+ */
123
+ if ( array_key_exists( $view_slug, $posts_per_view ) ) {
124
+ $post_count = $posts_per_view[ $view_slug ];
125
+ $singular = sprintf('%s <span class="count">(%%s)</span>', $view_singular[ $view_slug ] );
126
+ $plural = sprintf('%s <span class="count">(%%s)</span>', $view_plural[ $view_slug ] );
127
+ $nooped_plural = _n_noop( $singular, $plural, 'mla-custom-table-example' );
128
+ } else {
129
+ return false;
130
+ }
131
+
132
+ if ( $post_count ) {
133
+ $query = array( 'cve_view' => $view_slug );
134
+ $base_url = 'upload.php?page=mla-menu';
135
+ $class = ( $view_slug == $current_view ) ? ' class="current"' : '';
136
+
137
+ return "<a href='" . add_query_arg( $query, $base_url ) . "'$class>" . sprintf( translate_nooped_plural( $nooped_plural, $post_count, 'mla-custom-table-example' ), number_format_i18n( $post_count ) ) . '</a>';
138
+ }
139
+
140
+ return false;
141
+ }
142
+
143
+ /**
144
+ * Views for media page MLA Menu
145
+ *
146
+ * This filter gives you an opportunity to filter the list of available list table views.
147
+ *
148
+ * @since 1.00
149
+ *
150
+ * @param array $views An array of available list table views.
151
+ * format: view_slug => link to the view, with count
152
+ *
153
+ * @return array updated list table views.
154
+ */
155
+ public static function views_media_page_mla_menu( $views ) {
156
+ // See if the current view is a custom view
157
+ if ( isset( $_REQUEST['cve_view'] ) ) {
158
+ switch( $_REQUEST['cve_view'] ) {
159
+ case 'attached':
160
+ $current_view = 'attached';
161
+ break;
162
+ case 'unpublished':
163
+ $current_view = 'unpublished';
164
+ break;
165
+ default:
166
+ $current_view = '';
167
+ } // cve_view
168
+ } else {
169
+ $current_view = '';
170
+ }
171
+
172
+ foreach ( $views as $slug => $view ) {
173
+ // Find/update the current view
174
+ if ( strpos( $view, ' class="current"' ) ) {
175
+ if ( ! empty( $current_view ) ) {
176
+ $views[ $slug ] = str_replace( ' class="current"', '', $view );
177
+ } else {
178
+ $current_view = $slug;
179
+ }
180
+ }
181
+ } // each view
182
+
183
+ $value = self::_get_view( 'attached', $current_view );
184
+ if ( $value ) {
185
+ $views['attached'] = $value;
186
+ }
187
+
188
+ $value = self::_get_view( 'unpublished', $current_view );
189
+ if ( $value ) {
190
+ $views['unpublished'] = $value;
191
+ }
192
+
193
+ return $views;
194
+ } // views_media_page_mla_menu
195
+
196
+ /**
197
+ * Filter the "sticky" submenu URL parameters
198
+ *
199
+ * This filter gives you an opportunity to filter the URL parameters that will be
200
+ * retained when the submenu page refreshes.
201
+ *
202
+ * @since 1.00
203
+ *
204
+ * @param array $submenu_arguments Current view, pagination and sort parameters.
205
+ * @param object $include_filters True to include "filter-by" parameters, e.g., year/month dropdown.
206
+ *
207
+ * @return array updated submenu_arguments.
208
+ */
209
+ public static function mla_list_table_submenu_arguments( $submenu_arguments, $include_filters ) {
210
+ // If the current view is a custom view, retain it
211
+ if ( isset( $_REQUEST['cve_view'] ) ) {
212
+ $submenu_arguments['cve_view'] = $_REQUEST['cve_view'];
213
+ }
214
+
215
+ return $submenu_arguments;
216
+ } // mla_list_table_submenu_arguments
217
+
218
+ /**
219
+ * Pagination parameters for custom views
220
+ *
221
+ * @since 1.00
222
+ *
223
+ * @var array
224
+ */
225
+ private static $pagination_parameters = array(
226
+ 'per_page' => NULL,
227
+ 'current_page' => NULL,
228
+ );
229
+
230
+ /**
231
+ * Filter the pagination parameters for prepare_items()
232
+ *
233
+ * This filter gives you an opportunity to filter the per_page and current_page
234
+ * parameters used for the prepare_items database query.
235
+ *
236
+ * @since 1.00
237
+ *
238
+ * @param array $pagination Contains 'per_page', 'current_page'.
239
+ * @param object $mla_list_table The MLA_List_Table object, passed by reference.
240
+ *
241
+ * @return array updated pagination array.
242
+ */
243
+ public static function mla_list_table_prepare_items_pagination( $pagination, $mla_list_table ) {
244
+ global $wpdb;
245
+
246
+ /*
247
+ * Save the parameters for the count and items filters
248
+ */
249
+ self::$pagination_parameters = $pagination;
250
+ return $pagination;
251
+ } // mla_list_table_prepare_items_pagination
252
+
253
+ /**
254
+ * Filters all clauses for shortcode queries, pre caching plugins
255
+ *
256
+ * Modifying the query by editing the clauses in this filter ensures that all the other
257
+ * "List Table" parameters are retained, e.g., orderby, month, taxonomy and Search Media.
258
+ *
259
+ * @since 1.00
260
+ *
261
+ * @param array query clauses before modification
262
+ *
263
+ * @return array query clauses after modification (none)
264
+ */
265
+ public static function posts_clauses( $pieces ) {
266
+ global $wpdb;
267
+
268
+ if ( isset( $_REQUEST['cve_view'] ) ) {
269
+ switch( $_REQUEST['cve_view'] ) {
270
+ case 'attached':
271
+ // Already handled in the total items filter
272
+ break;
273
+ case 'unpublished':
274
+ $pieces['join'] = " INNER JOIN {$wpdb->posts} AS parent ON {$wpdb->posts}.post_parent = parent.ID" . $pieces['join'];
275
+ $pieces['where'] = " AND parent.post_status IN ( 'draft', 'future', 'pending', 'trash' )" . $pieces['where'];
276
+ break;
277
+ default:
278
+ } // cve_view
279
+ }
280
+
281
+ return $pieces;
282
+ } // posts_clauses
283
+
284
+ /**
285
+ * Filter the total items count for prepare_items()
286
+ *
287
+ * This filter gives you an opportunity to substitute your own $total_items
288
+ * parameter used for the prepare_items database query.
289
+ *
290
+ * @since 1.00
291
+ *
292
+ * @param integer $total_items NULL, indicating no substitution.
293
+ * @param object $mla_list_table The MLA_List_Table object, passed by reference.
294
+ *
295
+ * @return integer updated total_items.
296
+ */
297
+ public static function mla_list_table_prepare_items_total_items( $total_items, $mla_list_table ) {
298
+ global $wpdb;
299
+
300
+ if ( isset( $_REQUEST['cve_view'] ) ) {
301
+ switch( $_REQUEST['cve_view'] ) {
302
+ case 'attached':
303
+ /*
304
+ * This case is simple; we add a parameter to the request and let
305
+ * the default query do the job.
306
+ */
307
+ $_REQUEST['detached'] = '0';
308
+ break;
309
+ case 'unpublished':
310
+ // Defined in /wp-includes/query.php, function get_posts()
311
+ add_filter( 'posts_clauses', 'MLACustomViewExample::posts_clauses', 10, 1 );
312
+ $current_page = self::$pagination_parameters['current_page'];
313
+ $per_page = self::$pagination_parameters['per_page'];
314
+ $total_items = MLAData::mla_count_list_table_items( $_REQUEST, ( ( $current_page - 1 ) * $per_page ), $per_page );
315
+ remove_filter( 'posts_clauses', 'MLACustomViewExample::posts_clauses', 10 );
316
+ break;
317
+ default:
318
+ } // cve_view
319
+ }
320
+
321
+ return $total_items;
322
+ } // mla_list_table_prepare_items_total_items
323
+
324
+ /**
325
+ * Filter the items returned by prepare_items()
326
+ *
327
+ * This filter gives you an opportunity to substitute your own items array
328
+ * in place of the default prepare_items database query.
329
+ *
330
+ * @since 1.00
331
+ *
332
+ * @param array $items NULL, indicating no substitution.
333
+ * @param object $mla_list_table The MLA_List_Table object, passed by reference.
334
+ *
335
+ * @return array updated $items array.
336
+ */
337
+ public static function mla_list_table_prepare_items_the_items( $items, $mla_list_table ) {
338
+ global $wpdb;
339
+
340
+ if ( isset( $_REQUEST['cve_view'] ) ) {
341
+ switch( $_REQUEST['cve_view'] ) {
342
+ case 'attached':
343
+ // Already handled in the total items filter
344
+ break;
345
+ case 'unpublished':
346
+ add_filter( 'posts_clauses', 'MLACustomViewExample::posts_clauses', 10, 1 );
347
+ $current_page = self::$pagination_parameters['current_page'];
348
+ $per_page = self::$pagination_parameters['per_page'];
349
+ $items = MLAData::mla_query_list_table_items( $_REQUEST, ( ( $current_page - 1 ) * $per_page ), $per_page );
350
+ remove_filter( 'posts_clauses', 'MLACustomViewExample::posts_clauses', 10 );
351
+ break;
352
+ default:
353
+ } // cve_view
354
+ }
355
+
356
+ return $items;
357
+ } // mla_list_table_prepare_items_the_items
358
+ } // Class MLACustomViewExample
359
+
360
+ /*
361
+ * Install the filters at an early opportunity
362
+ */
363
+ add_action('init', 'MLACustomViewExample::initialize');
364
+ ?>
examples/mla-image-source-control-example.php.txt CHANGED
@@ -6,7 +6,7 @@
6
  * It is a good example of tailoring custom field handling in the Media/Assistant submenu table.
7
  *
8
  * @package MLA Image Source Control Example
9
- * @version 1.00
10
  */
11
 
12
  /*
@@ -14,7 +14,7 @@ Plugin Name: MLA Image Source Control Example
14
  Plugin URI: http://fairtradejudaica.org/media-library-assistant-a-wordpress-plugin/
15
  Description: Provides an example of hooking the filters provided by the MLA_List_Table class
16
  Author: David Lingren
17
- Version: 1.00
18
  Author URI: http://fairtradejudaica.org/our-story/staff/
19
 
20
  Copyright 2014 David Lingren
@@ -69,6 +69,7 @@ class MLAImageSourceControlExample {
69
  * Defined in /media-library-assistant/includes/class-mla-main.php
70
  */
71
  add_filter( 'mla_list_table_inline_action', 'MLAImageSourceControlExample::mla_list_table_inline_action', 10, 2 );
 
72
  add_filter( 'mla_list_table_bulk_action', 'MLAImageSourceControlExample::mla_list_table_bulk_action', 10, 3 );
73
  add_filter( 'mla_list_table_inline_values', 'MLAImageSourceControlExample::mla_list_table_inline_values', 10, 1 );
74
 
@@ -82,15 +83,6 @@ class MLAImageSourceControlExample {
82
  add_filter( 'mla_list_table_build_inline_data', 'MLAImageSourceControlExample::mla_list_table_build_inline_data', 10, 2 );
83
  }
84
 
85
- /**
86
- * Records the list of active search fields
87
- *
88
- * @since 1.00
89
- *
90
- * @var array
91
- */
92
- private static $search_fields = array();
93
-
94
  /**
95
  * Process an MLA_List_Table inline action, i.e., Quick Edit
96
  *
@@ -107,10 +99,9 @@ class MLAImageSourceControlExample {
107
  * 'prevent_default' => true to bypass the MLA handler )
108
  */
109
  public static function mla_list_table_inline_action( $item_content, $post_id ) {
110
- //error_log( 'MLAImageSourceControlExample::mla_list_table_inline_action $item_content = ' . var_export( $item_content, true ), 0 );
111
- //error_log( 'MLAImageSourceControlExample::mla_list_table_inline_action $post_id = ' . var_export( $post_id, true ), 0 );
112
- //error_log( 'MLAImageSourceControlExample::mla_list_table_inline_action $_REQUEST = ' . var_export( $_REQUEST, true ), 0 );
113
-
114
  if ( isset( $_REQUEST['custom_updates'] ) && isset( $_REQUEST['custom_updates']['isc_image_source_own'] ) ) {
115
  if ( 'yes' == trim( strtolower( $_REQUEST['custom_updates']['isc_image_source_own'] ) ) ) {
116
  $_REQUEST['custom_updates']['isc_image_source_own'] = 1;
@@ -122,6 +113,44 @@ class MLAImageSourceControlExample {
122
  return $item_content;
123
  } // mla_list_table_inline_action
124
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
125
  /**
126
  * Process an MLA_List_Table bulk action
127
  *
@@ -131,41 +160,29 @@ class MLAImageSourceControlExample {
131
  *
132
  * @since 1.00
133
  *
134
- * @param array $item_content NULL, to indicate no handler.
135
- * @param string $bulk_action the requested action.
136
- * @param integer $post_id the affected attachment.
 
137
  *
138
  * @return object updated $item_content. NULL if no handler, otherwise
139
  * ( 'message' => error or status message(s), 'body' => '',
140
  * 'prevent_default' => true to bypass the MLA handler )
141
  */
142
  public static function mla_list_table_bulk_action( $item_content, $bulk_action, $post_id ) {
143
- static $isc_image_source_own_value = NULL;
144
-
145
- //error_log( 'MLAImageSourceControlExample::mla_list_table_bulk_action $item_content = ' . var_export( $item_content, true ), 0 );
146
- //error_log( 'MLAImageSourceControlExample::mla_list_table_bulk_action $bulk_action = ' . var_export( $bulk_action, true ), 0 );
147
- //error_log( 'MLAImageSourceControlExample::mla_list_table_bulk_action $post_id = ' . var_export( $post_id, true ), 0 );
148
- //error_log( 'MLAImageSourceControlExample::mla_list_table_inline_action $_REQUEST = ' . var_export( $_REQUEST, true ), 0 );
149
-
150
- if ( ! empty( $_REQUEST['c_isc_image_source_own'] ) ) {
151
- if ( is_null( $isc_image_source_own_value ) ) {
152
- $isc_image_source_own_value = trim( strtolower( $_REQUEST['c_isc_image_source_own'] ) );
153
- }
154
-
155
- $_REQUEST['c_isc_image_source_own'] = '';
156
- }
157
-
158
- if ( ! empty( $isc_image_source_own_value ) ) {
159
- if ( 'yes' == $isc_image_source_own_value ) {
160
  update_post_meta( $post_id, 'isc_image_source_own', 1 );
161
- $item_content = array( 'message' => sprintf( __( 'Adding %1$s = %2$s', 'media-library-assistant' ) . '<br>', 'isc_image_source_own', $isc_image_source_own_value ) );
162
  } else {
163
  delete_post_meta( $post_id, 'isc_image_source_own' );
164
  $item_content = array( 'message' => sprintf( __( 'Deleting %1$s', 'media-library-assistant' ) . '<br>', 'isc_image_source_own' ) );
165
  }
166
  }
167
-
168
- //error_log( 'MLAImageSourceControlExample::mla_list_table_inline_action final $_REQUEST = ' . var_export( $_REQUEST, true ), 0 );
169
  return $item_content;
170
  } // mla_list_table_bulk_action
171
 
@@ -182,8 +199,9 @@ class MLAImageSourceControlExample {
182
  * @return array updated substitution parameter name => value pairs
183
  */
184
  public static function mla_list_table_inline_values( $item_values ) {
185
- //error_log( 'MLAImageSourceControlExample::mla_list_table_inline_values $item_values = ' . var_export( $item_values, true ), 0 );
186
-
 
187
  $item_values['custom_fields'] = str_replace( '>isc_image_source<', '>Source<', $item_values['custom_fields'] );
188
  $item_values['bulk_custom_fields'] = str_replace( '>isc_image_source<', '>Source<', $item_values['bulk_custom_fields'] );
189
 
@@ -196,6 +214,15 @@ class MLAImageSourceControlExample {
196
  return $item_values;
197
  } // mla_list_table_inline_values
198
 
 
 
 
 
 
 
 
 
 
199
  /**
200
  * Filter the MLA_List_Table columns
201
  *
@@ -209,23 +236,40 @@ class MLAImageSourceControlExample {
209
  * @return array updated array of columns.
210
  */
211
  public static function mla_list_table_get_columns( $columns ) {
212
- //error_log( 'MLAImageSourceControlExample::mla_list_table_get_columns $columns = ' . var_export( $columns, true ), 0 );
213
- if ( isset( $columns['c_isc_image_source'] ) ) {
214
- unset( $columns['c_isc_image_source'] );
215
- $columns['my_isc_image_source'] = 'Source';
 
 
 
216
  }
217
 
218
- if ( isset( $columns['c_isc_image_source_own'] ) ) {
219
- unset( $columns['c_isc_image_source_own'] );
220
- $columns['my_isc_image_source_own'] = 'Own';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
221
  }
222
 
223
- if ( isset( $columns['c_isc_image_source_url'] ) ) {
224
- unset( $columns['c_isc_image_source_url'] );
225
- $columns['my_isc_image_source_url'] = 'Source URL';
226
  }
227
-
228
- //error_log( 'MLAImageSourceControlExample::mla_list_table_get_columns final $columns = ' . var_export( $columns, true ), 0 );
229
  return $columns;
230
  } // mla_list_table_get_columns_filter
231
 
@@ -242,24 +286,16 @@ class MLAImageSourceControlExample {
242
  * @return array updated array of columns.
243
  */
244
  public static function mla_list_table_get_hidden_columns( $hidden_columns ) {
245
- //error_log( 'MLAImageSourceControlExample::mla_list_table_get_hidden_columns $hidden_columns = ' . var_export( $hidden_columns, true ), 0 );
246
-
247
- $index = array_search( 'c_isc_image_source', $hidden_columns );
248
- if ( false !== $index ) {
249
- $hidden_columns[ $index ] = 'my_isc_image_source';
250
- }
251
-
252
- $index = array_search( 'c_isc_image_source_own', $hidden_columns );
253
- if ( false !== $index ) {
254
- $hidden_columns[ $index ] = 'my_isc_image_source_own';
255
- }
256
-
257
- $index = array_search( 'c_isc_image_source_url', $hidden_columns );
258
- if ( false !== $index ) {
259
- $hidden_columns[ $index ] = 'my_isc_image_source_url';
260
  }
261
 
262
- //error_log( 'MLAImageSourceControlExample::mla_list_table_get_hidden_columns final $hidden_columns = ' . var_export( $hidden_columns, true ), 0 );
263
  return $hidden_columns;
264
  } // mla_list_table_get_hidden_columns_filter
265
 
@@ -280,24 +316,26 @@ class MLAImageSourceControlExample {
280
  * @return array updated array of columns.
281
  */
282
  public static function mla_list_table_get_sortable_columns( $sortable_columns ) {
283
- //error_log( 'MLAImageSourceControlExample::mla_list_table_get_sortable_columns $sortable_columns = ' . var_export( $sortable_columns, true ), 0 );
284
-
285
- if ( isset( $sortable_columns['c_isc_image_source'] ) ) {
286
- $sortable_columns['my_isc_image_source'] = $sortable_columns['c_isc_image_source'];
287
- unset( $sortable_columns['c_isc_image_source'] );
288
- }
289
-
290
- if ( isset( $sortable_columns['c_isc_image_source_own'] ) ) {
291
- $sortable_columns['my_isc_image_source_own'] = $sortable_columns['c_isc_image_source_own'];
292
- unset( $sortable_columns['c_isc_image_source_own'] );
293
- }
294
-
295
- if ( isset( $sortable_columns['c_isc_image_source_url'] ) ) {
296
- $sortable_columns['my_isc_image_source_url'] = $sortable_columns['c_isc_image_source_url'];
297
- unset( $sortable_columns['c_isc_image_source_url'] );
298
- }
 
 
 
299
 
300
- //error_log( 'MLAImageSourceControlExample::mla_list_table_get_sortable_columns final $sortable_columns = ' . var_export( $sortable_columns, true ), 0 );
301
  return $sortable_columns;
302
  } // mla_list_table_get_sortable_columns_filter
303
 
@@ -314,13 +352,10 @@ class MLAImageSourceControlExample {
314
  * @return string Text or HTML to be placed inside the column
315
  */
316
  public static function mla_list_table_column_default( $content, $item, $column_name ) {
317
- //error_log( "MLAImageSourceControlExample::mla_list_table_column_default ({$column_name}) \$item = " . var_export( $item, true ), 0 );
318
-
319
- if ( 'my_isc_image_source' == $column_name ) {
320
- return isset( $item->mla_item_isc_image_source ) ? $item->mla_item_isc_image_source : '';
321
- }
322
-
323
- if ( 'my_isc_image_source_own' == $column_name ) {
324
  $values = isset( $item->mla_item_isc_image_source_own ) ? $item->mla_item_isc_image_source_own : '';
325
  if ( empty( $values ) ) {
326
  return 'no';
@@ -329,10 +364,6 @@ class MLAImageSourceControlExample {
329
  }
330
  }
331
 
332
- if ( 'my_isc_image_source_url' == $column_name ) {
333
- return isset( $item->mla_item_isc_image_source_url ) ? $item->mla_item_isc_image_source_url : '';
334
- }
335
-
336
  return $content;
337
  } // mla_list_table_column_default_filter
338
 
@@ -350,10 +381,17 @@ class MLAImageSourceControlExample {
350
  * @return string updated HTML markup for inline data.
351
  */
352
  public static function mla_list_table_build_inline_data( $inline_data, $item ) {
353
- //error_log( 'MLAImageSourceControlExample::mla_list_table_build_inline_data $inline_data = ' . var_export( $inline_data, true ), 0 );
354
- //error_log( 'MLAImageSourceControlExample::mla_list_table_build_inline_data $item = ' . var_export( $item, true ), 0 );
355
-
356
- $match_count = preg_match_all( '/\<div class="c_isc_image_source_own"\>(.*)\<\/div\>/', $inline_data, $matches, PREG_OFFSET_CAPTURE );
 
 
 
 
 
 
 
357
  if ( ( $match_count == false ) || ( $match_count == 0 ) ) {
358
  return $inline_data;
359
  }
6
  * It is a good example of tailoring custom field handling in the Media/Assistant submenu table.
7
  *
8
  * @package MLA Image Source Control Example
9
+ * @version 1.01
10
  */
11
 
12
  /*
14
  Plugin URI: http://fairtradejudaica.org/media-library-assistant-a-wordpress-plugin/
15
  Description: Provides an example of hooking the filters provided by the MLA_List_Table class
16
  Author: David Lingren
17
+ Version: 1.01
18
  Author URI: http://fairtradejudaica.org/our-story/staff/
19
 
20
  Copyright 2014 David Lingren
69
  * Defined in /media-library-assistant/includes/class-mla-main.php
70
  */
71
  add_filter( 'mla_list_table_inline_action', 'MLAImageSourceControlExample::mla_list_table_inline_action', 10, 2 );
72
+ add_filter( 'mla_list_table_bulk_action_initial_request', 'MLAImageSourceControlExample::mla_list_table_bulk_action_initial_request', 10, 3 );
73
  add_filter( 'mla_list_table_bulk_action', 'MLAImageSourceControlExample::mla_list_table_bulk_action', 10, 3 );
74
  add_filter( 'mla_list_table_inline_values', 'MLAImageSourceControlExample::mla_list_table_inline_values', 10, 1 );
75
 
83
  add_filter( 'mla_list_table_build_inline_data', 'MLAImageSourceControlExample::mla_list_table_build_inline_data', 10, 2 );
84
  }
85
 
 
 
 
 
 
 
 
 
 
86
  /**
87
  * Process an MLA_List_Table inline action, i.e., Quick Edit
88
  *
99
  * 'prevent_default' => true to bypass the MLA handler )
100
  */
101
  public static function mla_list_table_inline_action( $item_content, $post_id ) {
102
+ /*
103
+ * Translate the "friendly" yes/no value back to the internal ISC value
104
+ */
 
105
  if ( isset( $_REQUEST['custom_updates'] ) && isset( $_REQUEST['custom_updates']['isc_image_source_own'] ) ) {
106
  if ( 'yes' == trim( strtolower( $_REQUEST['custom_updates']['isc_image_source_own'] ) ) ) {
107
  $_REQUEST['custom_updates']['isc_image_source_own'] = 1;
113
  return $item_content;
114
  } // mla_list_table_inline_action
115
 
116
+ /**
117
+ * Pre-filter MLA_List_Table bulk action request parameters
118
+ *
119
+ * This filter gives you an opportunity to pre-process the request parameters for a bulk action
120
+ * before the action begins. DO NOT assume parameters come from the $_REQUEST super array!
121
+ *
122
+ * @since 1.01
123
+ *
124
+ * @param array $request bulk action request parameters, including ['mla_bulk_action_do_cleanup'].
125
+ * @param string $bulk_action the requested action.
126
+ * @param array $custom_field_map [ slug => field_name ]
127
+ *
128
+ * @return array updated bulk action request parameters
129
+ */
130
+ public static function mla_list_table_bulk_action_initial_request( $request, $bulk_action, $custom_field_map ) {
131
+ /*
132
+ * If the field is present, save the field value for our own update process and remove it
133
+ * from the $request array to prevent MLA's default update processing.
134
+ */
135
+ if ( false !== $slug = array_search( 'isc_image_source_own', $custom_field_map ) ) {
136
+ if ( ! empty( $request[ $slug ] ) ) {
137
+ self::$isc_image_source_own_value = trim( $request[ $slug ] );
138
+ $request[ $slug ] = '';
139
+ }
140
+ }
141
+
142
+ return $request;
143
+ } // mla_list_table_bulk_action_initial_request
144
+
145
+ /**
146
+ * Holds the new ISC checkbox value for the duration of a Bulk Edit action
147
+ *
148
+ * @since 1.01
149
+ *
150
+ * @var string
151
+ */
152
+ private static $isc_image_source_own_value = NULL;
153
+
154
  /**
155
  * Process an MLA_List_Table bulk action
156
  *
160
  *
161
  * @since 1.00
162
  *
163
+ * @param array $item_content NULL, to indicate no handler.
164
+ * @param string $bulk_action the requested action.
165
+ * @param integer $post_id the affected attachment.
166
+ * @param array $custom_field_map [ slug => field_name ]
167
  *
168
  * @return object updated $item_content. NULL if no handler, otherwise
169
  * ( 'message' => error or status message(s), 'body' => '',
170
  * 'prevent_default' => true to bypass the MLA handler )
171
  */
172
  public static function mla_list_table_bulk_action( $item_content, $bulk_action, $post_id ) {
173
+ /*
174
+ * If the field is present, apply our own update process.
175
+ */
176
+ if ( ! empty( self::$isc_image_source_own_value ) ) {
177
+ if ( 'yes' == self::$isc_image_source_own_value ) {
 
 
 
 
 
 
 
 
 
 
 
 
178
  update_post_meta( $post_id, 'isc_image_source_own', 1 );
179
+ $item_content = array( 'message' => sprintf( __( 'Adding %1$s = %2$s', 'media-library-assistant' ) . '<br>', 'isc_image_source_own', self::$isc_image_source_own_value ) );
180
  } else {
181
  delete_post_meta( $post_id, 'isc_image_source_own' );
182
  $item_content = array( 'message' => sprintf( __( 'Deleting %1$s', 'media-library-assistant' ) . '<br>', 'isc_image_source_own' ) );
183
  }
184
  }
185
+
 
186
  return $item_content;
187
  } // mla_list_table_bulk_action
188
 
199
  * @return array updated substitution parameter name => value pairs
200
  */
201
  public static function mla_list_table_inline_values( $item_values ) {
202
+ /*
203
+ * Replace the custom field names with more friendly labels
204
+ */
205
  $item_values['custom_fields'] = str_replace( '>isc_image_source<', '>Source<', $item_values['custom_fields'] );
206
  $item_values['bulk_custom_fields'] = str_replace( '>isc_image_source<', '>Source<', $item_values['bulk_custom_fields'] );
207
 
214
  return $item_values;
215
  } // mla_list_table_inline_values
216
 
217
+ /**
218
+ * Holds the ISC custom field name to column "slug" mapping values
219
+ *
220
+ * @since 1.01
221
+ *
222
+ * @var array
223
+ */
224
+ private static $field_slugs = array();
225
+
226
  /**
227
  * Filter the MLA_List_Table columns
228
  *
236
  * @return array updated array of columns.
237
  */
238
  public static function mla_list_table_get_columns( $columns ) {
239
+ /*
240
+ * The Quick and Bulk Edit forms substitute arbitrary "slugs" for the
241
+ * custom field names. Remember them for table column and bulk update processing.
242
+ */
243
+ if ( false !== $slug = array_search( 'isc_image_source', $columns ) ) {
244
+ self::$field_slugs['isc_image_source'] = $slug;
245
+ $columns[ $slug ] = 'Source';
246
  }
247
 
248
+ if ( false !== $slug = array_search( 'isc_image_source_own', $columns ) ) {
249
+ self::$field_slugs['isc_image_source_own'] = $slug;
250
+
251
+ /*
252
+ * Change the column slug so we can provide our own friendly content.
253
+ * Replace the entry for the column we're capturing, preserving its place in the list
254
+ */
255
+ $new_columns = array();
256
+
257
+ foreach ( $columns as $key => $value ) {
258
+ if ( $key == $slug ) {
259
+ $new_columns['isc_image_source_own'] = 'Own';
260
+ } else {
261
+ $new_columns[ $key ] = $value;
262
+ }
263
+ } // foreach column
264
+
265
+ $columns = $new_columns;
266
  }
267
 
268
+ if ( false !== $slug = array_search( 'isc_image_source_url', $columns ) ) {
269
+ self::$field_slugs['isc_image_source_url'] = $slug;
270
+ $columns[ $slug ] = 'Source URL';
271
  }
272
+
 
273
  return $columns;
274
  } // mla_list_table_get_columns_filter
275
 
286
  * @return array updated array of columns.
287
  */
288
  public static function mla_list_table_get_hidden_columns( $hidden_columns ) {
289
+ /*
290
+ * Replace the slug for the column we've captured
291
+ */
292
+ if ( isset( self::$field_slugs['isc_image_source_own'] ) ) {
293
+ $index = array_search( self::$field_slugs['isc_image_source_own'], $hidden_columns );
294
+ if ( false !== $index ) {
295
+ $hidden_columns[ $index ] = 'isc_image_source_own';
296
+ }
 
 
 
 
 
 
 
297
  }
298
 
 
299
  return $hidden_columns;
300
  } // mla_list_table_get_hidden_columns_filter
301
 
316
  * @return array updated array of columns.
317
  */
318
  public static function mla_list_table_get_sortable_columns( $sortable_columns ) {
319
+ /*
320
+ * Replace the slug for the column we've captured, preserving its place in the list
321
+ */
322
+ if ( isset( self::$field_slugs['isc_image_source_own'] ) ) {
323
+ $slug = self::$field_slugs['isc_image_source_own'];
324
+ if ( isset( $sortable_columns[ $slug ] ) ) {
325
+ $new_columns = array();
326
+
327
+ foreach ( $sortable_columns as $key => $value ) {
328
+ if ( $key == $slug ) {
329
+ $new_columns['isc_image_source_own'] = $value;
330
+ } else {
331
+ $new_columns[ $key ] = $value;
332
+ }
333
+ } // foreach column
334
+
335
+ $sortable_columns = $new_columns;
336
+ } // slug found
337
+ } // slug exists
338
 
 
339
  return $sortable_columns;
340
  } // mla_list_table_get_sortable_columns_filter
341
 
352
  * @return string Text or HTML to be placed inside the column
353
  */
354
  public static function mla_list_table_column_default( $content, $item, $column_name ) {
355
+ /*
356
+ * Replace the ISC internal value with a "friendly" value
357
+ */
358
+ if ( 'isc_image_source_own' == $column_name ) {
 
 
 
359
  $values = isset( $item->mla_item_isc_image_source_own ) ? $item->mla_item_isc_image_source_own : '';
360
  if ( empty( $values ) ) {
361
  return 'no';
364
  }
365
  }
366
 
 
 
 
 
367
  return $content;
368
  } // mla_list_table_column_default_filter
369
 
381
  * @return string updated HTML markup for inline data.
382
  */
383
  public static function mla_list_table_build_inline_data( $inline_data, $item ) {
384
+ /*
385
+ * See if the field is present
386
+ */
387
+ if ( ! isset( self::$field_slugs['isc_image_source_own'] ) ) {
388
+ return $inline_data;
389
+ }
390
+
391
+ /*
392
+ * Replace the ISC internal value with a "friendly" value
393
+ */
394
+ $match_count = preg_match_all( '/\<div class="' . self::$field_slugs['isc_image_source_own'] . '"\>(.*)\<\/div\>/', $inline_data, $matches, PREG_OFFSET_CAPTURE );
395
  if ( ( $match_count == false ) || ( $match_count == 0 ) ) {
396
  return $inline_data;
397
  }
examples/mla-jhdean-mapping-hooks-example.php.txt ADDED
@@ -0,0 +1,138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Provides an example of the filters provided by the IPTC/EXIF and Custom Field mapping features
4
+ *
5
+ * In this example the Title is replaced by a hyperlink using the IPTC 2#005 Object Name value.
6
+ *
7
+ * @package MLA jhdean Mapping Hooks Example
8
+ * @version 1.00
9
+ */
10
+
11
+ /*
12
+ Plugin Name: MLA jhdean Mapping Hooks Example
13
+ Plugin URI: http://fairtradejudaica.org/media-library-assistant-a-wordpress-plugin/
14
+ Description: Replace Title with hyperlink, for Jeff Dean.
15
+ Author: David Lingren
16
+ Version: 1.00
17
+ Author URI: http://fairtradejudaica.org/our-story/staff/
18
+
19
+ Copyright 2014 - 2015 David Lingren
20
+
21
+ This program is free software; you can redistribute it and/or modify
22
+ it under the terms of the GNU General Public License as published by
23
+ the Free Software Foundation; either version 2 of the License, or
24
+ (at your option) any later version.
25
+
26
+ This program is distributed in the hope that it will be useful,
27
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
28
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
29
+ GNU General Public License for more details.
30
+
31
+ You can get a copy of the GNU General Public License by writing to the
32
+ Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
33
+ */
34
+
35
+ /**
36
+ * Class MLA jhdean Mapping Hooks Example hooks one of the filters provided by the IPTC/EXIF and Custom Field mapping features
37
+ *
38
+ * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding enerything
39
+ * else inside a class means this is the only name you have to worry about.
40
+ *
41
+ * @package MLA jhdean Mapping Hooks Example
42
+ * @since 1.00
43
+ */
44
+ class MLAjhdeanMappingHooksExample {
45
+ /**
46
+ * Initialization function, similar to __construct()
47
+ *
48
+ * Installs filters and actions that handle the MLA hooks for uploading and mapping.
49
+ *
50
+ * @since 1.00
51
+ *
52
+ * @return void
53
+ */
54
+ public static function initialize() {
55
+ /*
56
+ * The filters are only useful in the admin section; exit if in the "front-end" posts/pages.
57
+ */
58
+ if ( ! is_admin() )
59
+ return;
60
+
61
+ /*
62
+ * add_filter parameters:
63
+ * $tag - name of the hook you're filtering; defined by [mla_gallery]
64
+ * $function_to_add - function to be called when [mla_gallery] applies the filter
65
+ * $priority - default 10; lower runs earlier, higher runs later
66
+ * $accepted_args - number of arguments your function accepts
67
+ * Comment out the filters you don't need; save them for future use
68
+ */
69
+ add_filter( 'mla_mapping_updates', 'MLAjhdeanMappingHooksExample::mla_mapping_updates_filter', 10, 5 );
70
+ }
71
+
72
+ /**
73
+ * MLA Mapping Updates Filter
74
+ *
75
+ * This filter is called AFTER all mapping rules are applied.
76
+ * You can add, change or remove updates for the attachment's
77
+ * standard fields, taxonomies and/or custom fields.
78
+ *
79
+ * @since 1.00
80
+ *
81
+ * @param array updates for the attachment's standard fields, taxonomies and/or custom fields
82
+ * @param integer post ID to be evaluated
83
+ * @param string category/scope to evaluate against: custom_field_mapping or single_attachment_mapping
84
+ * @param array mapping rules
85
+ * @param array attachment_metadata, default NULL
86
+ *
87
+ * @return array updated attachment's updates
88
+ */
89
+ public static function mla_mapping_updates_filter( $updates, $post_id, $category, $settings, $attachment_metadata ) {
90
+ /*
91
+ * We are only concerned with Standard Field mapping
92
+ */
93
+ if ( ! in_array( $category, array( 'iptc_exif_mapping', 'iptc_exif_standard_mapping' ) ) ) {
94
+ return $updates;
95
+ }
96
+
97
+ /*
98
+ * If $updates[ 'post_title' ] is set, some mapping rule
99
+ * has been set up, so we respect the result. If not,
100
+ * use whatever the current Title value is.
101
+ */
102
+ if ( isset( $updates[ 'post_title' ] ) ) {
103
+ $old_value = $updates[ 'post_title' ];
104
+ } else {
105
+ $post = get_post( $post_id );
106
+ $old_value = $post->post_title;
107
+ }
108
+
109
+ /*
110
+ * Derive the new Title from the IPTC Object Name, if present.
111
+ * You can use MLAOptions::mla_get_data_source() to get anything available.
112
+ */
113
+ $my_setting = array(
114
+ 'data_source' => 'template',
115
+ 'meta_name' => '([+iptc:2#005+])',
116
+ 'option' => 'raw'
117
+ );
118
+ $object_name = trim( MLAOptions::mla_get_data_source( $post_id, 'single_attachment_mapping', $my_setting, NULL ) );
119
+
120
+ if ( ! empty( $object_name ) ) {
121
+ $object_link = strtolower( str_replace( array( ' ', '-', '_', '.' ), '-', $object_name ) );
122
+
123
+ $new_title = sprintf( '<a id="detail-title" target="blank" href="http://www.jhdstaging.jeffreyhdean.com/portfolio/%1$s/"> %2$s </a>', $object_link, $object_name );
124
+
125
+ if ( $old_value != $new_title ) {
126
+ $updates[ 'post_title' ] = $new_title;
127
+ }
128
+ }
129
+
130
+ return $updates;
131
+ } // mla_mapping_updates_filter
132
+ } //MLAjhdeanMappingHooksExample
133
+
134
+ /*
135
+ * Install the filters at an early opportunity
136
+ */
137
+ add_action('init', 'MLAjhdeanMappingHooksExample::initialize');
138
+ ?>
examples/mla-list-table-hooks-example.php.txt CHANGED
@@ -3,7 +3,7 @@
3
  * Provides an example of hooking the filters provided by the MLA_List_Table class
4
  *
5
  * @package MLA List Table Hooks Example
6
- * @version 1.01
7
  */
8
 
9
  /*
@@ -11,10 +11,10 @@ Plugin Name: MLA List Table Hooks Example
11
  Plugin URI: http://fairtradejudaica.org/media-library-assistant-a-wordpress-plugin/
12
  Description: Provides an example of hooking the filters provided by the MLA_List_Table class
13
  Author: David Lingren
14
- Version: 1.01
15
  Author URI: http://fairtradejudaica.org/our-story/staff/
16
 
17
- Copyright 2014 David Lingren
18
 
19
  This program is free software; you can redistribute it and/or modify
20
  it under the terms of the GNU General Public License as published by
@@ -84,7 +84,10 @@ class MLAListTableHooksExample {
84
  add_filter( 'mla_list_table_inline_fields', 'MLAListTableHooksExample::mla_list_table_inline_fields', 10, 1 );
85
  add_filter( 'mla_list_table_inline_action', 'MLAListTableHooksExample::mla_list_table_inline_action', 10, 2 );
86
 
 
87
  add_filter( 'mla_list_table_begin_bulk_action', 'MLAListTableHooksExample::mla_list_table_begin_bulk_action', 10, 2 );
 
 
88
  add_filter( 'mla_list_table_bulk_action', 'MLAListTableHooksExample::mla_list_table_bulk_action', 10, 3 );
89
  add_filter( 'mla_list_table_custom_bulk_action', 'MLAListTableHooksExample::mla_list_table_custom_bulk_action', 10, 3 );
90
  add_filter( 'mla_list_table_end_bulk_action', 'MLAListTableHooksExample::mla_list_table_end_bulk_action', 10, 2 );
@@ -135,7 +138,7 @@ class MLAListTableHooksExample {
135
  public static function views_media_page_mla_menu( $views ) {
136
  //error_log( 'MLAListTableHooksExample::views_media_page_mla_menu $views = ' . var_export( $views, true ), 0 );
137
  return $views;
138
- } // views_media_page_mla_menu_filter
139
 
140
  /**
141
  * Filter the list table Bulk Actions drop-down
@@ -152,7 +155,7 @@ class MLAListTableHooksExample {
152
  public static function bulk_actions_media_page_mla_menu( $actions ) {
153
  //error_log( 'MLAListTableHooksExample::bulk_actions_media_page_mla_menu $actions = ' . var_export( $actions, true ), 0 );
154
  return $actions;
155
- } // bulk_actions_media_page_mla_menu_filter
156
 
157
  /**
158
  * Filter the 'Months' drop-down results
@@ -170,7 +173,7 @@ class MLAListTableHooksExample {
170
  public static function months_dropdown_results( $months, $post_type ) {
171
  //error_log( "MLAListTableHooksExample::months_dropdown_results ({$post_type}) \$months = " . var_export( $months[0], true ), 0 );
172
  return $months;
173
- } // months_dropdown_results_filter
174
 
175
  /**
176
  * Filter the number of items to be displayed on each page of the list table
@@ -187,7 +190,7 @@ class MLAListTableHooksExample {
187
  public static function mla_entries_per_page( $per_page ) {
188
  //error_log( 'MLAListTableHooksExample::mla_entries_per_page $per_page = ' . var_export( $per_page, true ), 0 );
189
  return $per_page;
190
- } // mla_entries_per_page_filter
191
 
192
  /**
193
  * Filter the list table sortable columns for a specific screen
@@ -272,7 +275,7 @@ class MLAListTableHooksExample {
272
  }
273
 
274
  return $inner_clause;
275
- } // mla_list_table_search_filter_fields
276
 
277
  /**
278
  * Process the "where-used" reference reporting results
@@ -342,12 +345,37 @@ class MLAListTableHooksExample {
342
  return $item_content;
343
  } // mla_list_table_inline_action
344
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
345
  /**
346
  * Begin an MLA_List_Table bulk action
347
  *
348
- * This filter gives you an opportunity to pre-process an MLA_List_Table page-level
349
- * or single-item action, standard or custom, before the MLA handler.
350
- * The filter is called once before any of the items in $_REQUEST['cb_attachment'] are processed.
351
  *
352
  * @since 1.01
353
  *
@@ -364,11 +392,36 @@ class MLAListTableHooksExample {
364
  return $item_content;
365
  } // mla_list_table_begin_bulk_action
366
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
367
  /**
368
  * Process an MLA_List_Table bulk action
369
  *
370
- * This filter gives you an opportunity to pre-process an MLA_List_Table page-level
371
- * or single-item action, standard or custom, before the MLA handler.
372
  * The filter is called once for each of the items in $_REQUEST['cb_attachment'].
373
  *
374
  * @since 1.00
@@ -415,9 +468,9 @@ class MLAListTableHooksExample {
415
  /**
416
  * End an MLA_List_Table bulk action
417
  *
418
- * This filter gives you an opportunity to post-process an MLA_List_Table page-level
419
- * or single-item action, standard or custom.
420
- * The filter is called once after all of the items in $_REQUEST['cb_attachment'] are processed.
421
  *
422
  * @since 1.01
423
  *
@@ -432,7 +485,7 @@ class MLAListTableHooksExample {
432
  //error_log( 'MLAListTableHooksExample::mla_list_table_end_bulk_action $item_content = ' . var_export( $item_content, true ), 0 );
433
  //error_log( 'MLAListTableHooksExample::mla_list_table_end_bulk_action $bulk_action = ' . var_export( $bulk_action, true ), 0 );
434
  return $item_content;
435
- } // mla_list_table_begin_bulk_action
436
 
437
  /**
438
  * Process an MLA_List_Table single action
@@ -563,7 +616,7 @@ class MLAListTableHooksExample {
563
  //error_log( 'MLAListTableHooksExample::mla_list_table_inline_parse $item_template = ' . var_export( $item_template, true ), 0 );
564
  //error_log( 'MLAListTableHooksExample::mla_list_table_inline_parse $item_values = ' . var_export( $item_values, true ), 0 );
565
  return $html_markup;
566
- } // mla_gallery_item_parse_filter
567
 
568
  /**
569
  * Filter the MLA_List_Table columns
@@ -580,7 +633,7 @@ class MLAListTableHooksExample {
580
  public static function mla_list_table_get_columns( $columns ) {
581
  //error_log( 'MLAListTableHooksExample::mla_list_table_get_columns $columns = ' . var_export( $columns, true ), 0 );
582
  return $columns;
583
- } // mla_list_table_get_columns_filter
584
 
585
  /**
586
  * Filter the MLA_List_Table hidden columns
@@ -597,7 +650,7 @@ class MLAListTableHooksExample {
597
  public static function mla_list_table_get_hidden_columns( $hidden_columns ) {
598
  //error_log( 'MLAListTableHooksExample::mla_list_table_get_hidden_columns $hidden_columns = ' . var_export( $hidden_columns, true ), 0 );
599
  return $hidden_columns;
600
- } // mla_list_table_get_hidden_columns_filter
601
 
602
  /**
603
  * Filter the MLA_List_Table sortable columns
@@ -618,7 +671,7 @@ class MLAListTableHooksExample {
618
  public static function mla_list_table_get_sortable_columns( $sortable_columns ) {
619
  //error_log( 'MLAListTableHooksExample::mla_list_table_get_sortable_columns $sortable_columns = ' . var_export( $sortable_columns, true ), 0 );
620
  return $sortable_columns;
621
- } // mla_list_table_get_sortable_columns_filter
622
 
623
  /**
624
  * Filter the MLA_List_Table bulk actions
@@ -653,7 +706,7 @@ class MLAListTableHooksExample {
653
  public static function mla_list_table_column_default( $content, $item, $column_name ) {
654
  //error_log( "MLAListTableHooksExample::mla_list_table_column_default ({$column_name}) \$item = " . var_export( $item, true ), 0 );
655
  return $content;
656
- } // mla_list_table_column_default_filter
657
 
658
  /**
659
  * Filter the "sticky" submenu URL parameters
@@ -691,7 +744,7 @@ class MLAListTableHooksExample {
691
  //error_log( 'MLAListTableHooksExample::mla_list_table_prepare_items_pagination $pagination = ' . var_export( $pagination, true ), 0 );
692
  //error_log( 'MLAListTableHooksExample::mla_list_table_prepare_items_pagination $mla_list_table->get_pagenum() = ' . var_export( $mla_list_table->get_pagenum(), true ), 0 );
693
  return $pagination;
694
- } // mla_list_table_prepare_items_pagination_filter
695
 
696
  /**
697
  * Filter the total items count for prepare_items()
@@ -710,7 +763,7 @@ class MLAListTableHooksExample {
710
  //error_log( 'MLAListTableHooksExample::mla_list_table_prepare_items_total_items $total_items = ' . var_export( $total_items, true ), 0 );
711
  //error_log( 'MLAListTableHooksExample::mla_list_table_prepare_items_total_items $mla_list_table->get_pagenum() = ' . var_export( $mla_list_table->get_pagenum(), true ), 0 );
712
  return $total_items;
713
- } // mla_list_table_prepare_items_total_items_filter
714
 
715
  /**
716
  * Filter the items returned by prepare_items()
@@ -729,7 +782,7 @@ class MLAListTableHooksExample {
729
  //error_log( 'MLAListTableHooksExample::mla_list_table_prepare_items_the_items $items = ' . var_export( $items, true ), 0 );
730
  //error_log( 'MLAListTableHooksExample::mla_list_table_prepare_items_the_items $mla_list_table->get_pagenum() = ' . var_export( $mla_list_table->get_pagenum(), true ), 0 );
731
  return $items;
732
- } // mla_list_table_prepare_items_the_items_filter
733
 
734
  /**
735
  * Inspect or modify the results of prepare_items()
@@ -766,7 +819,7 @@ class MLAListTableHooksExample {
766
  //error_log( "MLAListTableHooksExample::mla_list_table_build_rollover_actions ({$column}) \$actions = " . var_export( $actions, true ), 0 );
767
  //error_log( "MLAListTableHooksExample::mla_list_table_build_rollover_actions ({$column}) \$item = " . var_export( $item, true ), 0 );
768
  return $actions;
769
- } // mla_list_table_build_rollover_actions_filter
770
 
771
  /**
772
  * Define the fields for inline (Quick) editing
@@ -802,7 +855,7 @@ class MLAListTableHooksExample {
802
  //error_log( 'MLAListTableHooksExample::mla_list_table_build_inline_data $inline_data = ' . var_export( $inline_data, true ), 0 );
803
  //error_log( 'MLAListTableHooksExample::mla_list_table_build_inline_data $item = ' . var_export( $item, true ), 0 );
804
  return $inline_data;
805
- } // mla_list_table_build_inline_data_filter
806
 
807
  /**
808
  * Views for the "upload" page when WPML is active
@@ -819,7 +872,7 @@ class MLAListTableHooksExample {
819
  public static function views_upload( $views ) {
820
  //error_log( 'MLAListTableHooksExample::views_upload $views = ' . var_export( $views, true ), 0 );
821
  return $views;
822
- } // views_upload_filter
823
  } // Class MLAListTableHooksExample
824
 
825
  /*
3
  * Provides an example of hooking the filters provided by the MLA_List_Table class
4
  *
5
  * @package MLA List Table Hooks Example
6
+ * @version 1.02
7
  */
8
 
9
  /*
11
  Plugin URI: http://fairtradejudaica.org/media-library-assistant-a-wordpress-plugin/
12
  Description: Provides an example of hooking the filters provided by the MLA_List_Table class
13
  Author: David Lingren
14
+ Version: 1.02
15
  Author URI: http://fairtradejudaica.org/our-story/staff/
16
 
17
+ Copyright 2014 - 2015 David Lingren
18
 
19
  This program is free software; you can redistribute it and/or modify
20
  it under the terms of the GNU General Public License as published by
84
  add_filter( 'mla_list_table_inline_fields', 'MLAListTableHooksExample::mla_list_table_inline_fields', 10, 1 );
85
  add_filter( 'mla_list_table_inline_action', 'MLAListTableHooksExample::mla_list_table_inline_action', 10, 2 );
86
 
87
+ add_filter( 'mla_list_table_bulk_action_initial_request', 'MLAListTableHooksExample::mla_list_table_bulk_action_initial_request', 10, 2 );
88
  add_filter( 'mla_list_table_begin_bulk_action', 'MLAListTableHooksExample::mla_list_table_begin_bulk_action', 10, 2 );
89
+
90
+ add_filter( 'mla_list_table_bulk_action_item_request', 'MLAListTableHooksExample::mla_list_table_bulk_action_item_request', 10, 3 );
91
  add_filter( 'mla_list_table_bulk_action', 'MLAListTableHooksExample::mla_list_table_bulk_action', 10, 3 );
92
  add_filter( 'mla_list_table_custom_bulk_action', 'MLAListTableHooksExample::mla_list_table_custom_bulk_action', 10, 3 );
93
  add_filter( 'mla_list_table_end_bulk_action', 'MLAListTableHooksExample::mla_list_table_end_bulk_action', 10, 2 );
138
  public static function views_media_page_mla_menu( $views ) {
139
  //error_log( 'MLAListTableHooksExample::views_media_page_mla_menu $views = ' . var_export( $views, true ), 0 );
140
  return $views;
141
+ } // views_media_page_mla_menu
142
 
143
  /**
144
  * Filter the list table Bulk Actions drop-down
155
  public static function bulk_actions_media_page_mla_menu( $actions ) {
156
  //error_log( 'MLAListTableHooksExample::bulk_actions_media_page_mla_menu $actions = ' . var_export( $actions, true ), 0 );
157
  return $actions;
158
+ } // bulk_actions_media_page_mla_menu
159
 
160
  /**
161
  * Filter the 'Months' drop-down results
173
  public static function months_dropdown_results( $months, $post_type ) {
174
  //error_log( "MLAListTableHooksExample::months_dropdown_results ({$post_type}) \$months = " . var_export( $months[0], true ), 0 );
175
  return $months;
176
+ } // months_dropdown_results
177
 
178
  /**
179
  * Filter the number of items to be displayed on each page of the list table
190
  public static function mla_entries_per_page( $per_page ) {
191
  //error_log( 'MLAListTableHooksExample::mla_entries_per_page $per_page = ' . var_export( $per_page, true ), 0 );
192
  return $per_page;
193
+ } // mla_entries_per_page
194
 
195
  /**
196
  * Filter the list table sortable columns for a specific screen
275
  }
276
 
277
  return $inner_clause;
278
+ } // mla_list_table_search_filter_inner_clause
279
 
280
  /**
281
  * Process the "where-used" reference reporting results
345
  return $item_content;
346
  } // mla_list_table_inline_action
347
 
348
+ /**
349
+ * Pre-filter MLA_List_Table bulk action request parameters
350
+ *
351
+ * This filter gives you an opportunity to pre-process the request parameters for a bulk action
352
+ * before the action begins. DO NOT assume parameters come from the $_REQUEST super array!
353
+ *
354
+ * @since 1.02
355
+ *
356
+ * @param array $request bulk action request parameters, including ['mla_bulk_action_do_cleanup'].
357
+ * @param string $bulk_action the requested action.
358
+ * @param array $custom_field_map [ slug => field_name ]
359
+ *
360
+ * @return array updated bulk action request parameters
361
+ */
362
+ public static function mla_list_table_bulk_action_initial_request( $request, $bulk_action, $custom_field_map ) {
363
+ //error_log( 'MLAListTableHooksExample::mla_list_table_bulk_action_initial_request $request = ' . var_export( $request, true ), 0 );
364
+ //error_log( 'MLAListTableHooksExample::mla_list_table_bulk_action_initial_request $bulk_action = ' . var_export( $bulk_action, true ), 0 );
365
+ //error_log( 'MLAListTableHooksExample::mla_list_table_bulk_action_initial_request $custom_field_map = ' . var_export( $custom_field_map, true ), 0 );
366
+ /*
367
+ * $request['mla_bulk_action_do_cleanup'] is true on input if the parameters come from $_REQUEST.
368
+ * If it is true on output the bulk action request parameters will be removed from $_REQUEST.
369
+ */
370
+ return $request;
371
+ } // mla_list_table_bulk_action_initial_request
372
+
373
  /**
374
  * Begin an MLA_List_Table bulk action
375
  *
376
+ * This filter gives you an opportunity to pre-process an MLA_List_Table bulk action,
377
+ * standard or custom, before the MLA handler. The filter is called once before any
378
+ * of the items in $_REQUEST['cb_attachment'] are processed.
379
  *
380
  * @since 1.01
381
  *
392
  return $item_content;
393
  } // mla_list_table_begin_bulk_action
394
 
395
+ /**
396
+ * Filter MLA_List_Table bulk action request parameters for each item
397
+ *
398
+ * This filter gives you an opportunity to pre-process the request parameters for each item
399
+ * During a bulk action. DO NOT assume parameters come from the $_REQUEST super array!
400
+ *
401
+ * @since 1.02
402
+ *
403
+ * @param array $request bulk action request parameters, including ['mla_bulk_action_do_cleanup'].
404
+ * @param string $bulk_action the requested action.
405
+ * @param integer $post_id the affected attachment.
406
+ * @param array $custom_field_map [ slug => field_name ]
407
+ *
408
+ * @return object updated $item_content. NULL if no handler, otherwise
409
+ * ( 'message' => error or status message(s), 'body' => '',
410
+ * 'prevent_default' => true to bypass the MLA handler )
411
+ */
412
+ public static function mla_list_table_bulk_action_item_request( $request, $bulk_action, $post_id, $custom_field_map ) {
413
+ //error_log( 'MLAListTableHooksExample::mla_list_table_bulk_action_item_request $request = ' . var_export( $request, true ), 0 );
414
+ //error_log( 'MLAListTableHooksExample::mla_list_table_bulk_action_item_request $bulk_action = ' . var_export( $bulk_action, true ), 0 );
415
+ //error_log( 'MLAListTableHooksExample::mla_list_table_bulk_action_item_request $post_id = ' . var_export( $post_id, true ), 0 );
416
+ //error_log( 'MLAListTableHooksExample::mla_list_table_bulk_action_item_request $custom_field_map = ' . var_export( $custom_field_map, true ), 0 );
417
+ return $request;
418
+ } // mla_list_table_bulk_action_item_request
419
+
420
  /**
421
  * Process an MLA_List_Table bulk action
422
  *
423
+ * This filter gives you an opportunity to pre-process an MLA_List_Table bulk action,
424
+ * standard or custom, before the MLA handler.
425
  * The filter is called once for each of the items in $_REQUEST['cb_attachment'].
426
  *
427
  * @since 1.00
468
  /**
469
  * End an MLA_List_Table bulk action
470
  *
471
+ * This filter gives you an opportunity to post-process an MLA_List_Table bulk action,
472
+ * standard or custom. The filter is called once after all of the items in
473
+ * $_REQUEST['cb_attachment'] are processed.
474
  *
475
  * @since 1.01
476
  *
485
  //error_log( 'MLAListTableHooksExample::mla_list_table_end_bulk_action $item_content = ' . var_export( $item_content, true ), 0 );
486
  //error_log( 'MLAListTableHooksExample::mla_list_table_end_bulk_action $bulk_action = ' . var_export( $bulk_action, true ), 0 );
487
  return $item_content;
488
+ } // mla_list_table_end_bulk_action
489
 
490
  /**
491
  * Process an MLA_List_Table single action
616
  //error_log( 'MLAListTableHooksExample::mla_list_table_inline_parse $item_template = ' . var_export( $item_template, true ), 0 );
617
  //error_log( 'MLAListTableHooksExample::mla_list_table_inline_parse $item_values = ' . var_export( $item_values, true ), 0 );
618
  return $html_markup;
619
+ } // mla_list_table_inline_parse
620
 
621
  /**
622
  * Filter the MLA_List_Table columns
633
  public static function mla_list_table_get_columns( $columns ) {
634
  //error_log( 'MLAListTableHooksExample::mla_list_table_get_columns $columns = ' . var_export( $columns, true ), 0 );
635
  return $columns;
636
+ } // mla_list_table_get_columns
637
 
638
  /**
639
  * Filter the MLA_List_Table hidden columns
650
  public static function mla_list_table_get_hidden_columns( $hidden_columns ) {
651
  //error_log( 'MLAListTableHooksExample::mla_list_table_get_hidden_columns $hidden_columns = ' . var_export( $hidden_columns, true ), 0 );
652
  return $hidden_columns;
653
+ } // mla_list_table_get_hidden_columns
654
 
655
  /**
656
  * Filter the MLA_List_Table sortable columns
671
  public static function mla_list_table_get_sortable_columns( $sortable_columns ) {
672
  //error_log( 'MLAListTableHooksExample::mla_list_table_get_sortable_columns $sortable_columns = ' . var_export( $sortable_columns, true ), 0 );
673
  return $sortable_columns;
674
+ } // mla_list_table_get_sortable_columns
675
 
676
  /**
677
  * Filter the MLA_List_Table bulk actions
706
  public static function mla_list_table_column_default( $content, $item, $column_name ) {
707
  //error_log( "MLAListTableHooksExample::mla_list_table_column_default ({$column_name}) \$item = " . var_export( $item, true ), 0 );
708
  return $content;
709
+ } // mla_list_table_column_default
710
 
711
  /**
712
  * Filter the "sticky" submenu URL parameters
744
  //error_log( 'MLAListTableHooksExample::mla_list_table_prepare_items_pagination $pagination = ' . var_export( $pagination, true ), 0 );
745
  //error_log( 'MLAListTableHooksExample::mla_list_table_prepare_items_pagination $mla_list_table->get_pagenum() = ' . var_export( $mla_list_table->get_pagenum(), true ), 0 );
746
  return $pagination;
747
+ } // mla_list_table_prepare_items_pagination
748
 
749
  /**
750
  * Filter the total items count for prepare_items()
763
  //error_log( 'MLAListTableHooksExample::mla_list_table_prepare_items_total_items $total_items = ' . var_export( $total_items, true ), 0 );
764
  //error_log( 'MLAListTableHooksExample::mla_list_table_prepare_items_total_items $mla_list_table->get_pagenum() = ' . var_export( $mla_list_table->get_pagenum(), true ), 0 );
765
  return $total_items;
766
+ } // mla_list_table_prepare_items_total_items
767
 
768
  /**
769
  * Filter the items returned by prepare_items()
782
  //error_log( 'MLAListTableHooksExample::mla_list_table_prepare_items_the_items $items = ' . var_export( $items, true ), 0 );
783
  //error_log( 'MLAListTableHooksExample::mla_list_table_prepare_items_the_items $mla_list_table->get_pagenum() = ' . var_export( $mla_list_table->get_pagenum(), true ), 0 );
784
  return $items;
785
+ } // mla_list_table_prepare_items_the_items
786
 
787
  /**
788
  * Inspect or modify the results of prepare_items()
819
  //error_log( "MLAListTableHooksExample::mla_list_table_build_rollover_actions ({$column}) \$actions = " . var_export( $actions, true ), 0 );
820
  //error_log( "MLAListTableHooksExample::mla_list_table_build_rollover_actions ({$column}) \$item = " . var_export( $item, true ), 0 );
821
  return $actions;
822
+ } // mla_list_table_build_rollover_actions
823
 
824
  /**
825
  * Define the fields for inline (Quick) editing
855
  //error_log( 'MLAListTableHooksExample::mla_list_table_build_inline_data $inline_data = ' . var_export( $inline_data, true ), 0 );
856
  //error_log( 'MLAListTableHooksExample::mla_list_table_build_inline_data $item = ' . var_export( $item, true ), 0 );
857
  return $inline_data;
858
+ } // mla_list_table_build_inline_data
859
 
860
  /**
861
  * Views for the "upload" page when WPML is active
872
  public static function views_upload( $views ) {
873
  //error_log( 'MLAListTableHooksExample::views_upload $views = ' . var_export( $views, true ), 0 );
874
  return $views;
875
+ } // views_upload
876
  } // Class MLAListTableHooksExample
877
 
878
  /*
examples/mla-mapping-hooks-example.php.txt CHANGED
@@ -39,7 +39,7 @@ Copyright 2014 David Lingren
39
  /**
40
  * Class MLA Mapping Hooks Example hooks all of the filters provided by the IPTC/EXIF and Custom Field mapping features
41
  *
42
- * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding enerything
43
  * else inside a class means this is the only name you have to worry about.
44
  *
45
  * @package MLA Mapping Hooks Example
39
  /**
40
  * Class MLA Mapping Hooks Example hooks all of the filters provided by the IPTC/EXIF and Custom Field mapping features
41
  *
42
+ * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding everything
43
  * else inside a class means this is the only name you have to worry about.
44
  *
45
  * @package MLA Mapping Hooks Example
examples/mla-media-modal-hooks-example.php.txt CHANGED
@@ -35,7 +35,7 @@ Copyright 2014 David Lingren
35
  /**
36
  * Class MLA Media Modal Hooks Example hooks all of the filters provided by the "Media Manager Enhancements" feature
37
  *
38
- * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding enerything
39
  * else inside a class means this is the only name you have to worry about.
40
  *
41
  * @package MLA Media Modal Hooks Example
35
  /**
36
  * Class MLA Media Modal Hooks Example hooks all of the filters provided by the "Media Manager Enhancements" feature
37
  *
38
+ * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding everything
39
  * else inside a class means this is the only name you have to worry about.
40
  *
41
  * @package MLA Media Modal Hooks Example
examples/mla-media-tagger-example.php.txt CHANGED
@@ -43,7 +43,7 @@ Copyright 2014 David Lingren
43
  /**
44
  * Class MLA Mapping Hooks Example hooks one of the filters provided by the IPTC/EXIF and Custom Field mapping features
45
  *
46
- * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding enerything
47
  * else inside a class means this is the only name you have to worry about.
48
  *
49
  * @package MLA Media Tagger Example
43
  /**
44
  * Class MLA Mapping Hooks Example hooks one of the filters provided by the IPTC/EXIF and Custom Field mapping features
45
  *
46
+ * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding everything
47
  * else inside a class means this is the only name you have to worry about.
48
  *
49
  * @package MLA Media Tagger Example
examples/mla-metabox-hooks-example.php.txt CHANGED
@@ -36,7 +36,7 @@ Copyright 2014 David Lingren
36
  /**
37
  * Class MLA Meta Box Hooks Example hooks all of the filters provided by the "Edit Media additional meta boxes" feature
38
  *
39
- * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding enerything
40
  * else inside a class means this is the only name you have to worry about.
41
  *
42
  * @package MLA Meta Box Hooks Example
36
  /**
37
  * Class MLA Meta Box Hooks Example hooks all of the filters provided by the "Edit Media additional meta boxes" feature
38
  *
39
+ * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding everything
40
  * else inside a class means this is the only name you have to worry about.
41
  *
42
  * @package MLA Meta Box Hooks Example
examples/mla-metadata-mapping-hooks-example.php.txt CHANGED
@@ -38,7 +38,7 @@ Copyright 2014 David Lingren
38
  /**
39
  * Class MLA Metadata Hooks Example hooks all of the filters provided by the IPTC/EXIF and Custom Field mapping features
40
  *
41
- * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding enerything
42
  * else inside a class means this is the only name you have to worry about.
43
  *
44
  * @package MLA Metadata Mapping Hooks Example
38
  /**
39
  * Class MLA Metadata Hooks Example hooks all of the filters provided by the IPTC/EXIF and Custom Field mapping features
40
  *
41
+ * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding everything
42
  * else inside a class means this is the only name you have to worry about.
43
  *
44
  * @package MLA Metadata Mapping Hooks Example
examples/mla-simple-mapping-hooks-example.php.txt CHANGED
@@ -35,7 +35,7 @@ Copyright 2014 David Lingren
35
  /**
36
  * Class MLA Simple Mapping Hooks Example hooks all of the filters provided by the IPTC/EXIF and Custom Field mapping features
37
  *
38
- * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding enerything
39
  * else inside a class means this is the only name you have to worry about.
40
  *
41
  * @package MLA Simple Mapping Hooks Example
35
  /**
36
  * Class MLA Simple Mapping Hooks Example hooks all of the filters provided by the IPTC/EXIF and Custom Field mapping features
37
  *
38
+ * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding everything
39
  * else inside a class means this is the only name you have to worry about.
40
  *
41
  * @package MLA Simple Mapping Hooks Example
examples/mla-tax-query-example.php.txt CHANGED
@@ -42,7 +42,7 @@ Copyright 2013, 2014 David Lingren
42
  /**
43
  * Class MLA tax query Example hooks three of the filters provided by the [mla_gallery] shortcode
44
  *
45
- * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding enerything
46
  * else inside a class means this is the only name you have to worry about.
47
  *
48
  * @package MLA tax query Example
42
  /**
43
  * Class MLA tax query Example hooks three of the filters provided by the [mla_gallery] shortcode
44
  *
45
+ * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding everything
46
  * else inside a class means this is the only name you have to worry about.
47
  *
48
  * @package MLA tax query Example
examples/mqtranslate-example.php.txt CHANGED
@@ -36,7 +36,7 @@ Copyright 2014 David Lingren
36
  /**
37
  * Class MLA mqTranslate Example hooks one of the filters provided by the [mla_tag_cloud] shortcode
38
  *
39
- * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding enerything
40
  * else inside a class means this is the only name you have to worry about.
41
  *
42
  * @package MLA mqTranslate Example
36
  /**
37
  * Class MLA mqTranslate Example hooks one of the filters provided by the [mla_tag_cloud] shortcode
38
  *
39
+ * Call it anything you want, but give it an unlikely and hopefully unique name. Hiding everything
40
  * else inside a class means this is the only name you have to worry about.
41
  *
42
  * @package MLA mqTranslate Example
includes/class-mla-data-pdf.php ADDED
@@ -0,0 +1,796 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Meta data parsing functions for PDF documents
4
+ *
5
+ * @package Media Library Assistant
6
+ * @since 2.10
7
+ */
8
+
9
+ /**
10
+ * Class MLA (Media Library Assistant) PDF extracts legacy and XMP meta data from PDF files
11
+ *
12
+ * @package Media Library Assistant
13
+ * @since 2.10
14
+ */
15
+ class MLAPDF {
16
+ /**
17
+ * Array of PDF indirect objects
18
+ *
19
+ * This array contains all of the indirect object offsets and lengths.
20
+ * The array key is ( object ID * 1000 ) + object generation.
21
+ * The array value is array( number, generation, start, optional /length )
22
+ *
23
+ * @since 2.10
24
+ *
25
+ * @var array
26
+ */
27
+ private static $pdf_indirect_objects = NULL;
28
+
29
+ /**
30
+ * Parse a cross-reference table subsection into the array of indirect object definitions
31
+ *
32
+ * A cross-reference subsection is a sequence of 20-byte entries, each with offset and generation values.
33
+ * @since 2.10
34
+ *
35
+ * @param string buffer containing the subsection
36
+ * @param integer offset within the buffer of the first entry
37
+ * @param integer number of the first object in the subsection
38
+ * @param integer number of entries in the subsection
39
+ *
40
+ * @return void
41
+ */
42
+ private static function _parse_pdf_xref_subsection( &$xref_section, $offset, $object_id, $count ) {
43
+
44
+ while ( $count-- ) {
45
+ $match_count = preg_match( '/(\d+) (\d+) (.)/', $xref_section, $matches, 0, $offset);
46
+
47
+ if ( $match_count ) {
48
+ if ( 'n' == $matches[3] ) {
49
+ $key = ( $object_id * 1000 ) + $matches[2];
50
+ if ( ! isset( self::$pdf_indirect_objects[ $key ] ) ) {
51
+ self::$pdf_indirect_objects[ $key ] = array( 'number' => $object_id, 'generation' => (integer) $matches[2], 'start' => (integer) $matches[1] );
52
+ }
53
+ }
54
+
55
+ $object_id++;
56
+ $offset += 20;
57
+ } else {
58
+ break;
59
+ }
60
+ }
61
+ }
62
+
63
+ /**
64
+ * Parse a cross-reference table section into the array of indirect object definitions
65
+ *
66
+ * Creates the array of indirect object offsets and lengths
67
+ * @since 2.10
68
+ *
69
+ * @param string full path and file name
70
+ * @param integer offset within the file of the xref id and count entry
71
+ *
72
+ * @return integer length of the section
73
+ */
74
+ private static function _parse_pdf_xref_section( $file_name, $file_offset ) {
75
+ $xref_max = $chunksize = 16384;
76
+ $xref_section = file_get_contents( $file_name, true, NULL, $file_offset, $chunksize );
77
+ $xref_length = 0;
78
+
79
+ while ( preg_match( '/^[\x00-\x20]*(\d+) (\d+)[\x00-\x20]*/', substr($xref_section, $xref_length), $matches, 0 ) ) {
80
+ $object_id = $matches[1];
81
+ $count = $matches[2];
82
+ $offset = $xref_length + strlen( $matches[0] );
83
+ $xref_length = $offset + ( 20 * $count );
84
+
85
+ if ( $xref_max < $xref_length ) {
86
+ $xref_max += $chunksize;
87
+ $xref_section = file_get_contents( $file_name, true, NULL, $file_offset, $xref_max );
88
+ }
89
+
90
+ self::_parse_pdf_xref_subsection( $xref_section, $offset, $object_id, $count );
91
+ } // while preg_match subsection header
92
+
93
+ return $xref_length;
94
+ }
95
+
96
+ /**
97
+ * Parse a cross-reference steam into the array of indirect object definitions
98
+ *
99
+ * Creates the array of indirect object offsets and lengths
100
+ * @since 2.10
101
+ *
102
+ * @param string full path and file name
103
+ * @param integer offset within the file of the xref id and count entry
104
+ * @param string "/W" entry, representing the size of the fields in a single entry
105
+ *
106
+ * @return integer length of the stream
107
+ */
108
+ private static function _parse_pdf_xref_stream( $file_name, $file_offset, $entry_parms_string ) {
109
+ $chunksize = 16384;
110
+ $xref_section = file_get_contents( $file_name, true, NULL, $file_offset, $chunksize );
111
+
112
+ if ( 'stream' == substr( $xref_section, 0, 6 ) ) {
113
+ $tag_length = 7;
114
+ if ( chr(0x0D) == $xref_section[6] ) {
115
+ $tag_length++;
116
+ }
117
+ } else {
118
+ return 0;
119
+ }
120
+
121
+ /*
122
+ * If necessary and possible, expand the $xref_section until it contains the end tag
123
+ */
124
+ $new_chunksize = $chunksize;
125
+ if ( false === ( $end_tag = strpos( $xref_section, 'endstream', $tag_length ) ) && ( $chunksize == strlen( $xref_section ) ) ) {
126
+ $new_chunksize = $chunksize + $chunksize;
127
+ $xref_section = file_get_contents( $file_name, true, NULL, $file_offset, $new_chunksize );
128
+ while ( false === ( $end_tag = strpos( $xref_section, 'endstream' ) ) && ( $new_chunksize == strlen( $xref_section ) ) ) {
129
+ $new_chunksize = $new_chunksize + $chunksize;
130
+ $xref_section = file_get_contents( $file_name, true, NULL, $file_offset, $new_chunksize );
131
+ } // while not found
132
+ } // if not found
133
+
134
+ if ( false == $end_tag ) {
135
+ $length = 0;
136
+ } else {
137
+ $length = $end_tag - $tag_length;
138
+ }
139
+
140
+ if ( false == $end_tag ) {
141
+ return 0;
142
+ }
143
+
144
+ return $length;
145
+
146
+ $entry_parms = explode( ' ', $entry_parms_string );
147
+ $object_id = $matches[1];
148
+ $count = $matches[2];
149
+ $offset = strlen( $matches[0] );
150
+ $length = $offset + ( 20 * $count );
151
+
152
+ if ( $chunksize < $length ) {
153
+ $xref_section = file_get_contents( $file_name, true, NULL, $file_offset, $length );
154
+ $offset = 0;
155
+ }
156
+
157
+ while ( $count-- ) {
158
+ $match_count = preg_match( '/(\d+) (\d+) (.)/', $xref_section, $matches, 0, $offset);
159
+ if ( $match_count ) {
160
+ if ( 'n' == $matches[3] ) {
161
+ $key = ( $object_id * 1000 ) + $matches[2];
162
+ if ( ! isset( self::$pdf_indirect_objects[ $key ] ) ) {
163
+ self::$pdf_indirect_objects[ $key ] = array( 'number' => $object_id, 'generation' => (integer) $matches[2], 'start' => (integer) $matches[1] );
164
+ }
165
+ }
166
+
167
+ $object_id++;
168
+ $offset += 20;
169
+ } else {
170
+ break;
171
+ }
172
+ }
173
+
174
+ return $length;
175
+ }
176
+
177
+ /**
178
+ * Build an array of indirect object definitions
179
+ *
180
+ * Creates the array of indirect object offsets and lengths
181
+ * @since 2.10
182
+ *
183
+ * @param string The entire PDF document, passsed by reference
184
+ *
185
+ * @return void
186
+ */
187
+ private static function _build_pdf_indirect_objects( &$string ) {
188
+ if ( ! is_null( self::$pdf_indirect_objects ) ) {
189
+ return;
190
+ }
191
+
192
+ $match_count = preg_match_all( '!(\d+)\\h+(\d+)\\h+obj|endobj|stream(\x0D\x0A|\x0A)|endstream!', $string, $matches, PREG_OFFSET_CAPTURE );
193
+ self::$pdf_indirect_objects = array();
194
+ $object_level = 0;
195
+ $is_stream = false;
196
+ for ( $index = 0; $index < $match_count; $index++ ) {
197
+ if ( $is_stream ) {
198
+ if ( 'endstream' == substr( $matches[0][ $index ][0], 0, 9 ) ) {
199
+ $is_stream = false;
200
+ }
201
+ } elseif ( 'endobj' == substr( $matches[0][ $index ][0], 0, 6 ) ) {
202
+ $object_level--;
203
+ $object_entry['/length'] = $matches[0][ $index ][1] - $object_entry['start'];
204
+ self::$pdf_indirect_objects[ ($object_entry['number'] * 1000) + $object_entry['generation'] ] = $object_entry;
205
+ } elseif ( 'obj' == substr( $matches[0][ $index ][0], -3 ) ) {
206
+ $object_level++;
207
+ $object_entry = array(
208
+ 'number' => $matches[1][ $index ][0],
209
+ 'generation' => $matches[2][ $index ][0],
210
+ 'start' => $matches[0][ $index ][1] + strlen( $matches[0][ $index ][0] )
211
+ );
212
+ } elseif ( 'stream' == substr( $matches[0][ $index ][0], 0, 6 ) ) {
213
+ $is_stream = true;
214
+ } else {
215
+ /* translators: 1: ERROR tag 2: index */
216
+ error_log( sprintf( _x( '%1$s: _build_pdf_indirect_objects bad value at $index = "%2$d".', 'error_log', 'media-library-assistant' ), __( 'ERROR', 'media-library-assistant' ), $index ), 0 );
217
+ }
218
+ } // for each match
219
+ }
220
+
221
+ /**
222
+ * Find the offset, length and contents of an indirect object containing a dictionary
223
+ *
224
+ * The function searches the entire file, if necessary, to find the last/most recent copy of the object.
225
+ * This is required because Adobe Acrobat does NOT increment the generation number when it reuses an object.
226
+ *
227
+ * @since 2.10
228
+ *
229
+ * @param string full path and file name
230
+ * @param integer The object number
231
+ * @param integer The object generation number; default zero (0)
232
+ *
233
+ * @return mixed NULL on failure else array( 'start' => offset in the file, 'length' => object length, 'content' => dictionary contents )
234
+ */
235
+ private static function _find_pdf_indirect_dictionary( $file_name, $object, $generation = 0 ) {
236
+ $chunksize = 16384;
237
+ $key = ( $object * 1000 ) + $generation;
238
+ if ( isset( self::$pdf_indirect_objects ) && isset( self::$pdf_indirect_objects[ $key ] ) ) {
239
+ $file_offset = self::$pdf_indirect_objects[ $key ]['start'];
240
+ } else { // found object location
241
+ $file_offset = 0;
242
+ }
243
+
244
+ $object_starts = array();
245
+ $object_content = file_get_contents( $file_name, true, NULL, $file_offset, $chunksize );
246
+
247
+ /*
248
+ * Match the object header
249
+ */
250
+ $pattern = sprintf( '!%1$d\\h+%2$d\\h+obj[\\x00-\\x20]*(<<)!', $object, $generation );
251
+ $match_count = preg_match( $pattern, $object_content, $matches, PREG_OFFSET_CAPTURE );
252
+ if ( $match_count ) {
253
+ $object_starts[] = array( 'offset' => $file_offset, 'start' => $matches[1][1]);
254
+ $match_count = 0;
255
+ }
256
+
257
+ /*
258
+ * If necessary and possible, advance the $object_content through the file until it contains the start tag
259
+ */
260
+ if ( 0 == $match_count && ( $chunksize == strlen( $object_content ) ) ) {
261
+ $file_offset += ( $chunksize - 16 );
262
+ $object_content = file_get_contents( $file_name, true, NULL, $file_offset, $chunksize );
263
+ $match_count = preg_match( $pattern, $object_content, $matches, PREG_OFFSET_CAPTURE );
264
+
265
+ if ( $match_count ) {
266
+ $object_starts[] = array( 'offset' => $file_offset, 'start' => $matches[1][1]);
267
+ $match_count = 0;
268
+ }
269
+
270
+ while ( 0 == $match_count && ( $chunksize == strlen( $object_content ) ) ) {
271
+ $file_offset += ( $chunksize - 16 );
272
+ $object_content = file_get_contents( $file_name, true, NULL, $file_offset, $chunksize );
273
+ $match_count = preg_match( $pattern, $object_content, $matches, PREG_OFFSET_CAPTURE );
274
+
275
+ if ( $match_count ) {
276
+ $object_starts[] = array( 'offset' => $file_offset, 'start' => $matches[1][1]);
277
+ $match_count = 0;
278
+ }
279
+ } // while not found
280
+ } // if not found
281
+
282
+ $object_start = array_pop( $object_starts );
283
+ if ( is_null( $object_start ) ) {
284
+ return NULL;
285
+ } else {
286
+ $file_offset = $object_start['offset'];
287
+ $object_content = file_get_contents( $file_name, true, NULL, $file_offset, $chunksize );
288
+ $start = $object_start['start'];
289
+ }
290
+
291
+ /*
292
+ * If necessary and possible, expand the $object_content until it contains the end tag
293
+ */
294
+ $pattern = '!>>[\\x00-\\x20]*[endobj|stream]!';
295
+ $match_count = preg_match( $pattern, $object_content, $matches, PREG_OFFSET_CAPTURE, $start );
296
+ if ( 0 == $match_count && ( $chunksize == strlen( $object_content ) ) ) {
297
+ $file_offset = $file_offset + $start;
298
+ $start = 0;
299
+ $new_chunksize = $chunksize + $chunksize;
300
+ $object_content = file_get_contents( $file_name, true, NULL, $file_offset, $new_chunksize );
301
+ $match_count = preg_match( $pattern, $object_content, $matches, PREG_OFFSET_CAPTURE, $start );
302
+
303
+ while ( 0 == $match_count && ( $new_chunksize == strlen( $object_content ) ) ) {
304
+ $new_chunksize = $new_chunksize + $chunksize;
305
+ $object_content = file_get_contents( $file_name, true, NULL, $file_offset, $new_chunksize );
306
+ $match_count = preg_match( $pattern, $object_content, $matches, PREG_OFFSET_CAPTURE, $start );
307
+ } // while not found
308
+ } // if not found
309
+
310
+ if ( 0 == $match_count ) {
311
+ return NULL;
312
+ }
313
+
314
+ if ($match_count) {
315
+ $results = array( 'start' => $file_offset + $start, 'length' => ($matches[0][1] + 2) - $start );
316
+ $results['content'] = substr( $object_content, $start, $results['length'] );
317
+ return $results;
318
+ } // found trailer
319
+
320
+ return NULL;
321
+ }
322
+
323
+ /**
324
+ * Parse a PDF Unicode (16-bit Big Endian) object
325
+ *
326
+ * @since 2.10
327
+ *
328
+ * @param string PDF string of 16-bit characters
329
+ *
330
+ * @return string UTF-8 encoded string
331
+ */
332
+ private static function _parse_pdf_UTF16BE( &$source_string ) {
333
+ $output = '';
334
+ for ($index = 2; $index < strlen( $source_string ); ) {
335
+ $value = ( ord( $source_string[ $index++ ] ) << 8 ) + ord( $source_string[ $index++ ] );
336
+ if ( $value < 0x80 ) {
337
+ $output .= chr( $value );
338
+ } elseif ( $value < 0x100 ) {
339
+ $output .= MLAData::$utf8_chars[ $value - 0x80 ];
340
+ } else {
341
+ $output .= '.'; // TODO encode the rest
342
+ }
343
+ }
344
+
345
+ return $output;
346
+ }
347
+
348
+ /**
349
+ * Parse a PDF string object
350
+ *
351
+ * Returns an array with one dictionary entry. The array also has a '/length' element containing
352
+ * the number of bytes occupied by the string in the source string, including the enclosing parentheses.
353
+ *
354
+ * @since 2.10
355
+ *
356
+ * @param string data within which the string occurs
357
+ * @param integer offset within the source string of the opening '(' character.
358
+ *
359
+ * @return array ( key => array( 'type' => type, 'value' => value, '/length' => length ) ) for the string
360
+ */
361
+ private static function _parse_pdf_string( &$source_string, $offset ) {
362
+ if ( '(' != $source_string[ $offset ] ) {
363
+ return array( 'type' => 'unknown', 'value' => '', '/length' => 0 );
364
+ }
365
+
366
+ /*
367
+ * Brute force, here we come...
368
+ */
369
+ $output = '';
370
+ $level = 0;
371
+ $in_string = true;
372
+ $index = $offset + 1;
373
+ while ( $in_string ) {
374
+ $byte = $source_string[ $index++ ];
375
+ if ( '\\' == $byte ) {
376
+ switch ( $source_string[ $index ] ) {
377
+ case chr( 0x0A ):
378
+ if ( chr( 0x0D ) == $source_string[ $index + 1 ] ) {
379
+ $index++;
380
+ }
381
+
382
+ break;
383
+ case chr( 0x0D ):
384
+ if ( chr( 0x0A ) == $source_string[ $index + 1 ] ) {
385
+ $index++;
386
+ }
387
+
388
+ break;
389
+ case 'n':
390
+ $output .= chr( 0x0A );
391
+ break;
392
+ case 'r':
393
+ $output .= chr( 0x0D );
394
+ break;
395
+ case 't':
396
+ $output .= chr( 0x09 );
397
+ break;
398
+ case 'b':
399
+ $output .= chr( 0x08 );
400
+ break;
401
+ case 'f':
402
+ $output .= chr( 0x0C );
403
+ break;
404
+ default: // could be a 1- to 3-digit octal value
405
+ $digit_limit = $index + 3;
406
+ $digit_index = $index;
407
+ while ( $digit_index < $digit_limit ) {
408
+ if ( ! ctype_digit( $source_string[ $digit_index ] ) ) {
409
+ break;
410
+ } else {
411
+ $digit_index++;
412
+ }
413
+ }
414
+
415
+ if ( $digit_count = $digit_index - $index ) {
416
+ $output .= chr( octdec( substr( $source_string, $index, $digit_count ) ) );
417
+ $index += $digit_count - 1;
418
+ } else { // accept the character following the backslash
419
+ $output .= $source_string[ $index ];
420
+ }
421
+ } // switch
422
+
423
+ $index++;
424
+ } else { // REVERSE SOLIDUS
425
+ if ( '(' == $byte ) {
426
+ $level++;
427
+ } elseif ( ')' == $byte ) {
428
+ if ( 0 == $level-- ) {
429
+ $in_string = false;
430
+ continue;
431
+ }
432
+ }
433
+
434
+ $output .= $byte;
435
+ } // just another 8-bit value, but check for balanced parentheses
436
+ } // $in_string
437
+
438
+ return array( 'type' => 'string', 'value' => $output, '/length' => $index - $offset );
439
+ }
440
+
441
+ /**
442
+ * Parse a PDF Linearization Parameter Dictionary object
443
+ *
444
+ * Returns an array of dictionary contents, classified by object type: boolean, numeric, string, hex (string),
445
+ * indirect (object), name, array, dictionary, stream, and null.
446
+ * The array also has a '/length' element containing the number of bytes occupied by the
447
+ * dictionary in the source string, excluding the enclosing delimiters, if passed in.
448
+ * @since 2.10
449
+ *
450
+ * @param string data within which the object occurs, typically the start of a PDF document
451
+ * @param integer filesize of the PDF document, for validation purposes, or zero (0) to ignore filesize
452
+ *
453
+ * @return mixed array of dictionary objects on success, false on failure
454
+ */
455
+ private static function _parse_pdf_LPD_dictionary( &$source_string, $filesize ) {
456
+ $header = substr( $source_string, 0, 1024 );
457
+ $match_count = preg_match( '!obj[\x00-\x20]*<<(/Linearized).*(>>)[\x00-\x20]*endobj!', $header, $matches, PREG_OFFSET_CAPTURE );
458
+
459
+ if ( $match_count ) {
460
+ $LPD = self::_parse_pdf_dictionary( $header, $matches[1][1] );
461
+ }
462
+
463
+ return false;
464
+ }
465
+
466
+ /**
467
+ * Parse a PDF dictionary object
468
+ *
469
+ * Returns an array of dictionary contents, classified by object type: boolean, numeric, string, hex (string),
470
+ * indirect (object), name, array, dictionary, stream, and null.
471
+ * The array also has a '/length' element containing the number of bytes occupied by the
472
+ * dictionary in the source string, excluding the enclosing delimiters.
473
+ *
474
+ * @since 2.10
475
+ *
476
+ * @param string data within which the string occurs
477
+ * @param integer offset within the source string of the opening '<<' characters or the first content character.
478
+ *
479
+ * @return array ( '/length' => length, key => array( 'type' => type, 'value' => value ) ) for each dictionary field
480
+ */
481
+ private static function _parse_pdf_dictionary( &$source_string, $offset ) {
482
+ /*
483
+ * Find the end of the dictionary
484
+ */
485
+ if ( '<<' == substr( $source_string, $offset, 2 ) ) {
486
+ $nest = $offset + 2;
487
+ } else {
488
+ $nest = $offset;
489
+ }
490
+
491
+ $level = 1;
492
+ do {
493
+ $dictionary_end = strpos( $source_string, '>>', $nest );
494
+ if ( false === $dictionary_end ) {
495
+ /* translators: 1: ERROR tag 2: source offset 3: nest level */
496
+ error_log( sprintf( _x( '%1$s: _parse_pdf_dictionary offset = %2$d, nest = %3$d.', 'error_log', 'media-library-assistant' ), __( 'ERROR', 'media-library-assistant' ), $offset, $nest ), 0 );
497
+ /* translators: 1: ERROR tag 2: dictionary excerpt */
498
+ error_log( sprintf( _x( '%1$s: _parse_pdf_dictionary no end delimiter dump = %2$s.', 'error_log', 'media-library-assistant' ), __( 'ERROR', 'media-library-assistant' ), MLAData::mla_hex_dump( substr( $source_string, $offset, 128 ), 128, 16 ) ), 0 );
499
+ return array( '/length' => 0 );
500
+ }
501
+
502
+ $nest = strpos( $source_string, '<<', $nest );
503
+ if ( false === $nest ) {
504
+ $nest = $dictionary_end + 2;
505
+ $level--;
506
+ } elseif ( $nest < $dictionary_end ) {
507
+ $nest += 2;
508
+ $level++;
509
+ } else {
510
+ $nest = $dictionary_end + 2;
511
+ $level--;
512
+ }
513
+ } while ( $level );
514
+
515
+ $dictionary_length = $dictionary_end + 2 - $offset;
516
+ $dictionary = array();
517
+
518
+ // \x00-\x20 for whitespace
519
+ // \(|\)|\<|\>|\[|\]|\{|\}|\/|\% for delimiters
520
+ $match_count = preg_match_all( '!/([^\x00-\x20|\(|\)|\<|\>|\[|\]|\{|\}|\/|\%]*)([\x00-\x20]*)!', substr( $source_string, $offset, $dictionary_length ), $matches, PREG_OFFSET_CAPTURE );
521
+ $end_data = -1;
522
+ for ( $match_index = 0; $match_index < $match_count; $match_index++ ) {
523
+ $name = $matches[1][ $match_index ][0];
524
+ $value_start = $offset + $matches[2][ $match_index ][1] + strlen( $matches[2][ $match_index ][0] );
525
+
526
+ /*
527
+ * Skip over false matches within a string or nested dictionary
528
+ */
529
+ if ( $value_start < $end_data ) {
530
+ continue;
531
+ }
532
+
533
+ $end_data = -1;
534
+ $value_count = preg_match(
535
+ '!(\/?[^\/\x0D\x0A]*)!',
536
+ substr( $source_string, $value_start, ($dictionary_end - $value_start ) ), $value_matches, PREG_OFFSET_CAPTURE );
537
+
538
+ if ( 1 == $value_count ) {
539
+ $value = trim( $value_matches[0][0] );
540
+ $length = strlen( $value );
541
+ $dictionary[ $name ]['value'] = $value;
542
+ if ( ! isset( $value[0] ) ) {
543
+ /* translators: 1: ERROR tag 2: entry name 3: value excerpt */
544
+ error_log( sprintf( _x( '%1$s: _parse_pdf_dictionary bad value [ %2$s ] dump = %3$s', 'error_log', 'media-library-assistant' ), __( 'ERROR', 'media-library-assistant' ), $name, MLAData::mla_hex_dump( $value, 32, 16 ) ), 0 );
545
+ continue;
546
+ }
547
+
548
+ if ( in_array( $value, array( 'true', 'false' ) ) ) {
549
+ $dictionary[ $name ]['type'] = 'boolean';
550
+ } elseif ( is_numeric( $value ) ) {
551
+ $dictionary[ $name ]['type'] = 'numeric';
552
+ } elseif ( '(' == $value[0] ) {
553
+ $dictionary[ $name ] = self::_parse_pdf_string( $source_string, $value_start );
554
+ $end_data = $value_start + $dictionary[ $name ]['/length'];
555
+ unset( $dictionary[ $name ]['/length'] );
556
+ } elseif ( '<' == $value[0] ) {
557
+ if ( '<' == $value[1] ) {
558
+ $dictionary[ $name ]['value'] = self::_parse_pdf_dictionary( $source_string, $value_start );
559
+ $dictionary[ $name ]['type'] = 'dictionary';
560
+ $end_data = $value_start + 4 + $dictionary[ $name ]['value']['/length'];
561
+ unset( $dictionary[ $name ]['value']['/length'] );
562
+ } else {
563
+ $dictionary[ $name ]['type'] = 'hex';
564
+ }
565
+ } elseif ( '/' == $value[0] ) {
566
+ $dictionary[ $name ]['value'] = substr( $value, 1 );
567
+ $dictionary[ $name ]['type'] = 'name';
568
+ $match_index++; // Skip to the next key
569
+ } elseif ( '[' == $value[0] ) {
570
+ $dictionary[ $name ]['type'] = 'array';
571
+ $array_length = strpos( $source_string, ']', $value_start ) - ($value_start + 1);
572
+ $dictionary[ $name ]['value'] = substr( $source_string, $value_start + 1, $array_length );
573
+ $end_data = 2 + $value_start + $array_length;
574
+ } elseif ( 'null' == $value ) {
575
+ $dictionary[ $name ]['type'] = 'null';
576
+ } elseif ( 'stream' == substr( $value, 0, 6 ) ) {
577
+ $dictionary[ $name ]['type'] = 'stream';
578
+ } else {
579
+ $object_count = preg_match( '!(\d+)\h+(\d+)\h+R!', $value, $object_matches );
580
+
581
+ if ( 1 == $object_count ) {
582
+ $dictionary[ $name ]['type'] = 'indirect';
583
+ $dictionary[ $name ]['object'] = $object_matches[1];
584
+ $dictionary[ $name ]['generation'] = $object_matches[2];
585
+ } else {
586
+ $dictionary[ $name ]['type'] = 'unknown';
587
+ }
588
+ }
589
+ } else {
590
+ $dictionary[ $matches[1][ $match_index ][0] ] = array( 'value' => '' );
591
+ $dictionary[ $matches[1][ $match_index ][0] ]['type'] = 'nomatch';
592
+ }
593
+ } // foreach match
594
+
595
+ $dictionary['/length'] = $dictionary_length;
596
+ return $dictionary;
597
+ }
598
+
599
+ /**
600
+ * Extract dictionary from traditional cross-reference + trailer documents
601
+ *
602
+ * @since 2.10
603
+ *
604
+ * @param string full path to the desired file
605
+ * @param integer offset within file of the cross-reference table
606
+ *
607
+ * @return mixed array of "PDF dictionary arrays", newest first, or NULL on failure
608
+ */
609
+ private static function _extract_pdf_trailer( $file_name, $file_offset ) {
610
+ $chunksize = 16384;
611
+ $tail = file_get_contents( $file_name, true, NULL, $file_offset, $chunksize );
612
+ $chunk_offset = 0;
613
+
614
+ /*
615
+ * look for traditional xref and trailer
616
+ */
617
+ if ( 'xref' == substr( $tail, $chunk_offset, 4 ) ) {
618
+ $xref_length = self::_parse_pdf_xref_section( $file_name, $file_offset + $chunk_offset + 4 );
619
+ $chunk_offset += 4 + $xref_length;
620
+
621
+ if ( $chunk_offset > ( $chunksize - 1024 ) ) {
622
+ $file_offset += $chunk_offset;
623
+ $tail = file_get_contents( $file_name, true, NULL, $file_offset, $chunksize );
624
+ $chunk_offset = 0;
625
+ }
626
+
627
+ $match_count = preg_match( '/[\x00-\x20]*trailer[\x00-\x20]+/', $tail, $matches, PREG_OFFSET_CAPTURE, $chunk_offset );
628
+ if ( $match_count ) {
629
+ $chunk_offset = $matches[0][1] + strlen( $matches[0][0] );
630
+ $match_count = preg_match( '/<<(.*)>>/', $tail, $matches, 0, $chunk_offset );
631
+
632
+ if ( 0 < $match_count ) {
633
+ $dictionary = self::_parse_pdf_dictionary( $matches[0], 0 );
634
+
635
+ if ( isset( $dictionary['Prev'] ) ) {
636
+ $other_trailers = self::_extract_pdf_trailer( $file_name, $dictionary['Prev']['value'] );
637
+ } else {
638
+ $other_trailers = NULL;
639
+ }
640
+
641
+ if ( is_array( $other_trailers ) ) {
642
+ $other_trailers = array_merge( $other_trailers, array( $dictionary ) );
643
+ return $other_trailers;
644
+ } else {
645
+ return array( $dictionary );
646
+ }
647
+ } // found trailer dictionary
648
+ } // found 'trailer'
649
+ } else { // found 'xref'
650
+ /*
651
+ * Look for a cross-reference stream
652
+ */
653
+ $match_count = preg_match( '!(\d+)\\h+(\d+)\\h+obj[\x00-\x20]*!', $tail, $matches, PREG_OFFSET_CAPTURE );
654
+ if ( $match_count ) {
655
+ $chunk_offset = $matches[0][1] + strlen( $matches[0][0] );
656
+
657
+ if ( '<<' == substr( $tail, $chunk_offset, 2) ) {
658
+ $dictionary = self::_parse_pdf_dictionary( $tail, $chunk_offset );
659
+
660
+ /*
661
+ * Parse the cross-reference stream following the dictionary, if present
662
+ */
663
+ if ( isset( $dictionary['Type'] ) && 'XRef' == $dictionary['Type']['value'] ) {
664
+ $xref_length = self::_parse_pdf_xref_stream( $file_name, $file_offset + $chunk_offset + (integer) $dictionary['/length'], $dictionary['W']['value'] );
665
+ }
666
+
667
+ if ( isset( $dictionary['Prev'] ) ) {
668
+ $other_trailers = self::_extract_pdf_trailer( $file_name, $dictionary['Prev']['value'] );
669
+ } else {
670
+ $other_trailers = NULL;
671
+ }
672
+
673
+ if ( is_array( $other_trailers ) ) {
674
+ $other_trailers = array_merge( array( $dictionary ), $other_trailers );
675
+ return $other_trailers;
676
+ } else {
677
+ return array( $dictionary );
678
+ }
679
+ } // found cross-reference stream dictionary
680
+ } // found cross-reference stream object
681
+ }
682
+
683
+ return NULL;
684
+ }
685
+
686
+ /**
687
+ * Extract Metadata from a PDF file
688
+ *
689
+ * @since 2.10
690
+ *
691
+ * @param string full path to the desired file
692
+ *
693
+ * @return array ( 'xmp' => array( key => value ), 'pdf' => array( key => value ) ) for each metadata field, in string format
694
+ */
695
+ public static function mla_extract_pdf_metadata( $file_name ) {
696
+ $metadata = array();
697
+ self::$pdf_indirect_objects = NULL;
698
+ $chunksize = 16384;
699
+
700
+ if ( ! file_exists( $file_name ) ) {
701
+ return $metadata;
702
+ }
703
+
704
+ $filesize = filesize( $file_name );
705
+ $file_offset = ( $chunksize < $filesize ) ? ( $filesize - $chunksize ) : 0;
706
+ $tail = file_get_contents( $file_name, false, NULL, $file_offset );
707
+
708
+ if ( 0 == $file_offset ) {
709
+ $header = substr( $tail, 0, 128 );
710
+ } else {
711
+ $header = file_get_contents( $file_name, false, NULL, 0, 128 );
712
+ }
713
+
714
+ if ( '%PDF-' == substr( $header, 0, 5 ) ) {
715
+ $metadata['PDF_Version'] = substr( $header, 1, 7 );
716
+ $metadata['PDF_VersionNumber'] = substr( $header, 5, 3 );
717
+ }
718
+
719
+ /*
720
+ * Find the xref and (optional) trailer
721
+ */
722
+ $match_count = preg_match_all( '/startxref[\x00-\x20]+(\d+)[\x00-\x20]+\%\%EOF/', $tail, $matches, PREG_OFFSET_CAPTURE );
723
+ if ( 0 == $match_count ) {
724
+ /* translators: 1: ERROR tag 2: path and file */
725
+ error_log( sprintf( _x( '%1$s: File "%2$s", startxref not found.', 'error_log', 'media-library-assistant' ), __( 'ERROR', 'media-library-assistant' ), $path ), 0 );
726
+ return $metadata;
727
+ }
728
+
729
+ $startxref = (integer) $matches[1][ $match_count - 1 ][0];
730
+ $trailer_dictionaries = self::_extract_pdf_trailer( $file_name, $startxref );
731
+ if ( is_array( $trailer_dictionaries ) ) {
732
+ $info_reference = NULL;
733
+ foreach ( $trailer_dictionaries as $trailer_dictionary )
734
+ if ( isset( $trailer_dictionary['Info'] ) ) {
735
+ $info_reference = $trailer_dictionary['Info'];
736
+ break;
737
+ }
738
+
739
+ if ( isset( $info_reference ) ) {
740
+ $info_object = self::_find_pdf_indirect_dictionary( $file_name, $info_reference['object'], $info_reference['generation'] );
741
+ if ( $info_object ) {
742
+ $info_dictionary = self::_parse_pdf_dictionary( $info_object['content'], 0 );
743
+ unset( $info_dictionary['/length'] );
744
+
745
+ foreach ( $info_dictionary as $name => $value ) {
746
+ if ( 'string' == $value['type'] ) {
747
+ $prefix = substr( $value['value'], 0, 2 );
748
+ if ( 'D:' == $prefix ) {
749
+ $metadata[ $name ] = MLAData::mla_parse_pdf_date( $value['value'] );
750
+ } elseif ( ( chr(0xFE) . chr(0xFF) ) == $prefix ) {
751
+ $metadata[ $name ] = self::_parse_pdf_UTF16BE( $value['value'] );
752
+ } else {
753
+ $metadata[ $name ] = $value['value'];
754
+ }
755
+ } else {
756
+ $metadata[ $name ] = $value['value'];
757
+ }
758
+ } // each info entry
759
+ } // found Info object
760
+ } // found Info reference
761
+
762
+ /*
763
+ * Look for XMP Metadata
764
+ */
765
+ $xmp = array();
766
+ $root_reference = NULL;
767
+ foreach ( $trailer_dictionaries as $trailer_dictionary )
768
+ if ( isset( $trailer_dictionary['Root'] ) ) {
769
+ $root_reference = $trailer_dictionary['Root'];
770
+ break;
771
+ }
772
+
773
+ if ( isset( $root_reference ) ) {
774
+ $root_object = self::_find_pdf_indirect_dictionary( $file_name, $root_reference['object'], $root_reference['generation'] );
775
+ if ( $root_object ) {
776
+ $root_dictionary = self::_parse_pdf_dictionary( $root_object['content'], 0 );
777
+ unset( $root_dictionary['/length'] );
778
+
779
+ if ( isset( $root_dictionary['Metadata'] ) ) {
780
+ $xmp_object = self::_find_pdf_indirect_dictionary( $file_name, $root_dictionary['Metadata']['object'], $root_dictionary['Metadata']['generation'] );
781
+ $xmp = MLAData::mla_parse_xmp_metadata( $file_name, $xmp_object['start'] + $xmp_object['length'] );
782
+
783
+ if ( is_array( $xmp ) ) {
784
+ $metadata = array_merge( $metadata, $xmp );
785
+ } else {
786
+ $xmp = array();
787
+ }
788
+ } // found Metadata reference
789
+ } // found Root object
790
+ } // found Root reference
791
+ } // found trailer_dictionaries
792
+
793
+ return array( 'xmp' => $xmp, 'pdf' => $metadata );
794
+ }
795
+ } // class MLAData
796
+ ?>
includes/class-mla-data.php CHANGED
@@ -808,11 +808,11 @@ class MLAData {
808
  private static function _parse_arguments( $argument_string ) {
809
  $argument_string = trim( $argument_string, " \n\t\r\0\x0B," );
810
  $arguments = array();
811
-
812
  while ( strlen( $argument_string ) ) {
813
  $argument = '';
814
  $index = 0;
815
-
816
  // Check for enclosing quotes
817
  $delimiter = $argument_string[0];
818
  if ( '\'' == $delimiter || '"' == $delimiter ) {
@@ -820,7 +820,7 @@ class MLAData {
820
  } else {
821
  $delimiter = '';
822
  }
823
-
824
  while ( $index < strlen( $argument_string ) ) {
825
  $byte = $argument_string[ $index++ ];
826
  if ( '\\' == $byte ) {
@@ -850,7 +850,7 @@ class MLAData {
850
  $digit_index++;
851
  }
852
  }
853
-
854
  if ( $digit_count = $digit_index - $index ) {
855
  $argument .= chr( octdec( substr( $argument_string, $index, $digit_count ) ) );
856
  $index += $digit_count - 1;
@@ -858,13 +858,13 @@ class MLAData {
858
  $argument .= $argument_string[ $index ];
859
  }
860
  } // switch
861
-
862
  $index++;
863
  } else { // backslash
864
- if ( $delimiter == $byte ) {
865
  break;
866
  }
867
-
868
  $argument .= $byte;
869
  } // just another 8-bit value, but check for closing delimiter
870
  } // index < strlen
@@ -872,15 +872,114 @@ class MLAData {
872
  $arguments[] = $argument;
873
  $argument_string = trim( substr( $argument_string, $index ), " \n\t\r\0\x0B," );
874
  } // strlen( $argument_string )
875
-
876
  return $arguments;
877
  }
878
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
879
  /**
880
  * Analyze a template, expanding Field-level Markup Substitution Parameters
881
  *
882
  * Field-level parameters must have one of the following prefix values:
883
- * template, request, query, custom, terms, meta, iptc, exif, pdf.
884
  * All but request and query require an attachment ID.
885
  *
886
  * @since 1.50
@@ -1075,6 +1174,17 @@ class MLAData {
1075
  $markup_values[ $key ] = $record;
1076
  }
1077
 
 
 
 
 
 
 
 
 
 
 
 
1078
  break;
1079
  case 'pdf':
1080
  if ( is_null( $attachment_metadata ) ) {
@@ -1101,7 +1211,7 @@ class MLAData {
1101
  'data_source' => $candidate,
1102
  'keep_existing' => false,
1103
  'format' => 'raw',
1104
- 'option' => 'text' );
1105
 
1106
  $markup_values[ $key ] = MLAOptions::mla_get_data_source( $post_id, 'single_attachment_mapping', $data_value );
1107
  } elseif ( isset( $markup_values[ $value['value'] ] ) ) {
@@ -1110,78 +1220,14 @@ class MLAData {
1110
  */
1111
  $markup_values[ $key ] = $markup_values[ $value['value'] ];
1112
  }
1113
-
1114
  break;
1115
  default:
1116
  // ignore anything else
1117
  } // switch
1118
-
1119
  if ( isset( $markup_values[ $key ] ) ) {
1120
- if ( 'attr' == $value['format'] ) {
1121
- $markup_values[ $key ] = esc_attr( $markup_values[ $key ] );
1122
- } elseif ( 'url' == $value['format'] ) {
1123
- $markup_values[ $key ] = urlencode( $markup_values[ $key ] );
1124
- } elseif ( ( 'commas' == $value['format'] ) && is_numeric( $markup_values[ $key ] ) ) {
1125
- $markup_values[ $key ] = number_format( (float)$markup_values[ $key ] );
1126
- } elseif ( 'timestamp' == $value['format'] && is_numeric( $markup_values[ $key ] ) ) {
1127
- /*
1128
- * date "Returns a string formatted according to the given format string using the given integer"
1129
- */
1130
- $format = empty( $value['args'] ) ? 'd/m/Y H:i:s' : $value['args'];
1131
- $markup_values[ $key ] = date( $format , (integer) $markup_values[ $key ] );
1132
- } elseif ( 'date' == $value['format'] ) {
1133
- /*
1134
- * strtotime will "Parse about any English textual datetime description into a Unix timestamp"
1135
- * If it succeeds we can format the timestamp for display
1136
- */
1137
- $format = empty( $value['args'] ) ? 'd/m/Y H:i:s' : $value['args'];
1138
- $timestamp = strtotime( $markup_values[ $key ] );
1139
- if( false !== $timestamp ) {
1140
- $markup_values[ $key ] = date( $format, $timestamp );
1141
- }
1142
- } elseif ( 'fraction' == $value['format'] ) {
1143
- $show_fractions = true;
1144
- if ( ! empty( $value['args'] ) ) {
1145
- if ( is_array( $value['args'] ) ) {
1146
- if ( is_numeric( $value['args'][0] ) ) {
1147
- $format = '%1$+.' . absint( $value['args'][0] ) . 'f';
1148
- } else {
1149
- $format = $value['args'][0];
1150
- }
1151
-
1152
- $show_fractions = ( 'false' !== strtolower( trim( $value['args'][1] ) ) );
1153
- } else {
1154
- if ( is_numeric( $value['args'] ) ) {
1155
- $format = '%1$+.' . absint( $value['args'] ) . 'f';
1156
- } else {
1157
- $format = $value['args'];
1158
- }
1159
- }
1160
- } else {
1161
- $format = '%1$+.2f';
1162
- }
1163
-
1164
- $fragments = array_map( 'intval', explode( '/', $markup_values[ $key ] ) );
1165
- if ( 1 == count( $fragments ) ) {
1166
- $value = trim( $markup_values[ $key ] );
1167
- if ( ! empty( $value ) ) {
1168
- $markup_values[ $key ] = $value;
1169
- }
1170
- } else {
1171
- if ( $fragments[0] ) {
1172
- if ( 1 == $fragments[1] ) {
1173
- $markup_values[ $key ] = sprintf( '%1$+d', $fragments[0] );
1174
- } elseif ( 0 != $fragments[1] ) {
1175
- $value = $fragments[0] / $fragments[1];
1176
- if ( $show_fractions && ( -1 <= $value ) && ( 1 >= $value ) ) {
1177
- $markup_values[ $key ] = sprintf( '%1$+d/%2$d', $fragments[0], $fragments[1] );
1178
- } else {
1179
- $markup_values[ $key ] = sprintf( $format, $value );
1180
- }
1181
- } // fractional value
1182
- } // non-zero numerator
1183
- } // valid denominator
1184
- }
1185
  } // isset( $markup_values[ $key ] )
1186
  } // foreach placeholder
1187
 
@@ -1217,7 +1263,7 @@ class MLAData {
1217
  $template_end = strpos( $tpl, '+]', $nest );
1218
  if ( false === $template_end ) {
1219
  /* translators: 1: ERROR tag 2: template excerpt */
1220
- error_log( sprintf( _x( '%1$s: mla_get_template_placeholders no template-end delimiter dump = "%2$s".', 'error_log', 'media-library-assistant' ), __( 'ERROR', 'media-library-assistant' ), self::_hex_dump( substr( $tpl, $template_offset, 128 ), 128, 16 ) ), 0 );
1221
  return array();
1222
  }
1223
 
@@ -1259,24 +1305,12 @@ class MLAData {
1259
  $tail = substr( $match, 2);
1260
  }
1261
 
1262
- $match_count = preg_match( '/([^,]+)(,(text|single|export|array|multi|commas|raw|attr|url|timestamp|date|fraction))(\(([^)]+)\))*\+\]/', $tail, $matches );
1263
  if ( 1 == $match_count ) {
1264
  $result['value'] = $matches[1];
1265
  if ( ! empty( $matches[5] ) ) {
1266
- /* $args = array_map( 'trim', explode( ',', trim( $matches[5], " \n\t\r\0\x0B," ) ) );
1267
- foreach ( $args as $index => $arg ) {
1268
- // trim exactly one pair of balanced quotes, if present
1269
- $length = strlen( $arg );
1270
- if ( $length > 1 ) {
1271
- $first = $arg[0];
1272
- $last = $arg[ $length - 1 ];
1273
- if ( $first === $last && in_array( $first, array ( '\'', '"' ) ) ) {
1274
- $args[ $index ] = ( 2 < $length ) ? substr( $arg, 1, $length - 2 ) : '';;
1275
- }
1276
- }
1277
- } */
1278
  $args = self::_parse_arguments( $matches[5] );
1279
-
1280
  if ( 1 == count( $args ) ) {
1281
  $args = $args[0];
1282
  }
@@ -1308,6 +1342,10 @@ class MLAData {
1308
  $result['option'] = 'text';
1309
  $result['format'] = 'fraction';
1310
  $result['args'] = $args;
 
 
 
 
1311
  } else {
1312
  $result['option'] = $matches[3];
1313
  }
@@ -1542,8 +1580,8 @@ class MLAData {
1542
  */
1543
  $sortable_columns = MLAOptions::mla_custom_field_support( 'custom_sortable_columns' );
1544
  foreach ($sortable_columns as $sort_key => $sort_value ) {
1545
- if ( $value == $sort_value[0] ) {
1546
- $orderby = 'c_' . $value;
1547
  break;
1548
  }
1549
  } // foreach
@@ -1557,11 +1595,12 @@ class MLAData {
1557
  }
1558
  } // foreach
1559
  }
1560
-
1561
  if ( NULL !== $orderby ) {
1562
  $clean_request[ $key ] = $orderby;
1563
  }
1564
  }
 
1565
  break;
1566
  /*
1567
  * ids allows hooks to supply a persistent list of items
@@ -1683,7 +1722,7 @@ class MLAData {
1683
  self::$query_parameters = array( 'use_postmeta_view' => false, 'orderby' => $clean_request['orderby'], 'order' => $clean_request['order'] );
1684
  self::$query_parameters['detached'] = isset( $clean_request['detached'] ) ? $clean_request['detached'] : NULL;
1685
  self::$search_parameters = array( 'debug' => 'none' );
1686
-
1687
  /*
1688
  * Matching a meta_value to NULL requires a LEFT JOIN to a view and a special WHERE clause
1689
  * Matching a wildcard pattern requires mainpulating the WHERE clause, too
@@ -1744,6 +1783,10 @@ class MLAData {
1744
  self::$query_parameters['postmeta_key'] = '_wp_attachment_image_alt';
1745
  }
1746
 
 
 
 
 
1747
  unset( $clean_request['s'] );
1748
  unset( $clean_request['mla_search_connector'] );
1749
  unset( $clean_request['mla_search_fields'] );
@@ -1984,6 +2027,37 @@ class MLAData {
1984
  return trim( $term, "\"'\n\r " );
1985
  }
1986
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1987
  /**
1988
  * Adds a keyword search to the WHERE clause, if required
1989
  *
@@ -2009,7 +2083,8 @@ class MLAData {
2009
  * Process the Terms Search arguments, if present.
2010
  */
2011
  if ( isset( self::$search_parameters['mla_terms_search']['phrases'] ) ) {
2012
- $terms = array_map( 'trim', explode( ',', self::$search_parameters['mla_terms_search']['phrases'] ) );
 
2013
  if ( 1 < count( $terms ) ) {
2014
  $terms_connector = '(';
2015
  } else {
@@ -2017,13 +2092,39 @@ class MLAData {
2017
  }
2018
 
2019
  foreach ( $terms as $term ) {
2020
- preg_match_all('/".*?("|$)|((?<=[\t ",+])|^)[^\t ",+]+/', $term, $matches);
2021
  $phrases = array_map('MLAData::mla_search_terms_tidy', $matches[0]);
2022
 
 
 
 
 
 
 
 
 
2023
  $tax_terms = array();
2024
  $tax_counts = array();
2025
- foreach ( $phrases as $phrase ) {
2026
- $the_terms = get_terms( self::$search_parameters['mla_terms_search']['taxonomies'], array( 'name__like' => $phrase, 'fields' => 'all', 'hide_empty' => false ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2027
  foreach( $the_terms as $the_term ) {
2028
  $tax_terms[ $the_term->taxonomy ][ $the_term->term_id ] = (integer) $the_term->term_taxonomy_id;
2029
 
@@ -2038,7 +2139,7 @@ class MLAData {
2038
  /*
2039
  * For the AND connector, a taxonomy term must have all of the search terms within it
2040
  */
2041
- if ( 'AND' == self::$search_parameters['mla_terms_search']['radio_phrases'] ) {
2042
  $search_term_count = count( $phrases );
2043
  foreach ($tax_terms as $taxonomy => $term_ids ) {
2044
  foreach ( $term_ids as $term_id => $term_taxonomy_id ) {
@@ -2060,12 +2161,18 @@ class MLAData {
2060
 
2061
  $tax_clause .= $terms_connector;
2062
  foreach( $tax_terms as $tax_term ) {
2063
- $prefix = 'mlatt' . $tax_index++;
 
 
 
 
 
 
2064
  $tax_clause .= sprintf( '%1$s %2$s.term_taxonomy_id IN (%3$s)', $inner_connector, $prefix, implode( ',', $tax_term ) );
2065
  $inner_connector = ' OR';
2066
  } // foreach tax_term
2067
 
2068
- $terms_connector = ' ) ' . self::$search_parameters['mla_terms_search']['radio_terms'] . ' (';
2069
  } // tax_terms present
2070
  } // foreach term
2071
 
@@ -2151,7 +2258,7 @@ class MLAData {
2151
  if ( in_array( 'name', $fields ) ) {
2152
  $inner_clause .= "{$inner_connector}({$wpdb->posts}.post_name LIKE {$sql_term})";
2153
  }
2154
-
2155
  $inner_clause = apply_filters( 'mla_list_table_search_filter_inner_clause', $inner_clause, $inner_connector, $wpdb->posts, $sql_term );
2156
 
2157
  if ( ! empty($inner_clause) ) {
@@ -2380,7 +2487,7 @@ class MLAData {
2380
  /**
2381
  * Adds a GROUPBY clause, if required
2382
  *
2383
- * Taxonomy text queries require a GROUPBY clause.
2384
  * Defined as public because it's a filter.
2385
  *
2386
  * @since 1.90
@@ -2392,7 +2499,7 @@ class MLAData {
2392
  public static function mla_query_posts_groupby_filter( $groupby_clause ) {
2393
  global $wpdb;
2394
 
2395
- if ( isset( self::$search_parameters['tax_terms_count'] ) ) {
2396
  $groupby_clause = "{$wpdb->posts}.ID";
2397
  }
2398
 
@@ -2734,15 +2841,45 @@ class MLAData {
2734
  $key_array = explode( '.', $needle );
2735
  if ( is_array( $key_array ) ) {
2736
  foreach ( $key_array as $key ) {
2737
- if ( is_array( $haystack ) ) {
2738
- if ( isset( $haystack[ $key ] ) ) {
2739
- $haystack = $haystack[ $key ];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2740
  } else {
2741
- $haystack = '';
2742
  }
2743
- } else {
2744
- $haystack = '';
2745
- }
2746
  } // foreach $key
2747
  } else {
2748
  $haystack = '';
@@ -2764,7 +2901,7 @@ class MLAData {
2764
  return $haystack;
2765
  break;
2766
  default:
2767
- $haystack = implode( ', ', $haystack );
2768
  } // $option
2769
  }
2770
 
@@ -2879,7 +3016,7 @@ class MLAData {
2879
  $save_id = -1;
2880
  return NULL;
2881
  }
2882
-
2883
  /*
2884
  * inserted_option 'enabled', 'base' or 'disabled'
2885
  * tested_reference true if any of the four where-used types was processed
@@ -2929,7 +3066,7 @@ class MLAData {
2929
  if ( ! $add_references ) {
2930
  return $references;
2931
  }
2932
-
2933
  /*
2934
  * Fill in Parent data
2935
  */
@@ -2964,7 +3101,7 @@ class MLAData {
2964
  $references['files'][ $references['path'] . $size_info['file'] ] = $size_info;
2965
  }
2966
  }
2967
-
2968
  $base_type = wp_check_filetype( $references['file'] );
2969
  $base_reference = array(
2970
  'file' => $references['file'],
@@ -2973,7 +3110,7 @@ class MLAData {
2973
  'mime_type' => isset( $base_type['type'] ) ? $base_type['type'] : 'unknown',
2974
  'size' => 'full',
2975
  );
2976
-
2977
  $references['files'][ $references['base_file'] ] = $base_reference;
2978
 
2979
  /*
@@ -3036,7 +3173,7 @@ class MLAData {
3036
  $inserted_in_option = MLAOptions::mla_get_option( MLAOptions::MLA_INSERTED_IN_TUNING );
3037
  $references['inserted_option'] = $inserted_in_option;
3038
  }
3039
-
3040
  $wp_4dot0_plus = version_compare( get_bloginfo('version'), '4.0', '>=' );
3041
  if ( 'base' == $inserted_in_option ) {
3042
  $query_parameters = array();
@@ -3049,9 +3186,9 @@ class MLAData {
3049
  if ( empty( $file ) ) {
3050
  continue;
3051
  }
3052
-
3053
  $query[] = 'OR ( POST_CONTENT LIKE %s)';
3054
-
3055
  if ( $wp_4dot0_plus ) {
3056
  $query_parameters[] = '%' . $wpdb->esc_like( $file ) . '%';
3057
  } else {
@@ -3082,13 +3219,13 @@ class MLAData {
3082
  if ( empty( $file ) ) {
3083
  continue;
3084
  }
3085
-
3086
  if ( $wp_4dot0_plus ) {
3087
  $like = $wpdb->esc_like( $file );
3088
  } else {
3089
  $like = like_escape( $file );
3090
  }
3091
-
3092
  $inserts = $wpdb->get_results(
3093
  $wpdb->prepare(
3094
  "SELECT ID, post_type, post_status, post_title FROM {$wpdb->posts}
@@ -3238,7 +3375,7 @@ class MLAData {
3238
 
3239
  return;
3240
  }
3241
-
3242
  /*
3243
  * Collect the raw data for where-used analysis
3244
  */
@@ -3252,7 +3389,7 @@ class MLAData {
3252
  } else {
3253
  $references['base_file'] = '';
3254
  }
3255
-
3256
  $pathinfo = pathinfo($references['base_file']);
3257
  if ( ( ! isset( $pathinfo['dirname'] ) ) || '.' == $pathinfo['dirname'] ) {
3258
  $references['path'] = '/';
@@ -3261,13 +3398,13 @@ class MLAData {
3261
  }
3262
 
3263
  $references['file'] = $pathinfo['basename'];
3264
-
3265
  if ( isset( $attachment->mla_wp_attachment_metadata ) ) {
3266
  $attachment_metadata = $attachment->mla_wp_attachment_metadata;
3267
  } else {
3268
  $attachment_metadata = '';
3269
  }
3270
-
3271
  $sizes = isset( $attachment_metadata['sizes'] ) ? $attachment_metadata['sizes'] : NULL;
3272
  if ( ! empty( $sizes ) && is_array( $sizes ) ) {
3273
  /* Using the path and name as the array key ensures each name is added only once */
@@ -3276,7 +3413,7 @@ class MLAData {
3276
  $references['files'][ $references['path'] . $size_info['file'] ] = $size_info;
3277
  }
3278
  }
3279
-
3280
  if ( ! empty( $references['base_file'] ) ) {
3281
  $base_type = wp_check_filetype( $references['file'] );
3282
  $base_reference = array(
@@ -3286,10 +3423,10 @@ class MLAData {
3286
  'mime_type' => ( isset( $base_type['type'] ) && false !== $base_type['type'] ) ? $base_type['type'] : 'unknown',
3287
  'size' => 'full',
3288
  );
3289
-
3290
  $references['files'][ $references['base_file'] ] = $base_reference;
3291
  }
3292
-
3293
  $files[ $index ] = $references;
3294
  }
3295
 
@@ -3298,7 +3435,7 @@ class MLAData {
3298
  } else {
3299
  $exclude_revisions = '';
3300
  }
3301
-
3302
  $features = array();
3303
  if ( MLAOptions::$process_featured_in && ! empty( $attachment_ids ) ) {
3304
  $attachment_ids = implode( ',', $attachment_ids );
@@ -3310,7 +3447,7 @@ class MLAData {
3310
  AND ( m.meta_value IN ( {$attachment_ids} ) ){$exclude_revisions}
3311
  "
3312
  );
3313
-
3314
  foreach ( $results as $result ) {
3315
  $features[ $result->meta_value ][ $result->ID ] = (object) array( 'ID' => $result->ID, 'post_title' => $result->post_title, 'post_type' => $result->post_type, 'post_status' => $result->post_status );
3316
  }
@@ -3382,7 +3519,7 @@ class MLAData {
3382
 
3383
  foreach ( $attachments as $attachment_index => $attachment ) {
3384
  $references = array_merge( $initial_references, $files[ $attachment_index ] );
3385
-
3386
  /*
3387
  * Fill in Parent data
3388
  */
@@ -3390,15 +3527,15 @@ class MLAData {
3390
  $references['is_unattached'] = true;
3391
  } else {
3392
  $references['is_unattached'] = false;
3393
-
3394
  if ( isset( $attachment->parent_type ) ) {
3395
  $references['parent_type'] = $attachment->parent_type;
3396
  }
3397
-
3398
  if ( isset( $attachment->parent_status ) ) {
3399
  $references['parent_status'] = $attachment->parent_status;
3400
  }
3401
-
3402
  if ( isset( $attachment->parent_title ) ) {
3403
  $references['parent_title'] = $attachment->parent_title;
3404
  }
@@ -3408,7 +3545,7 @@ class MLAData {
3408
  * Accumulate reference test types, e.g., 0 = no tests, 4 = all tests
3409
  */
3410
  $reference_tests = 0;
3411
-
3412
  /*
3413
  * Look for the "Featured Image(s)", if enabled
3414
  */
@@ -3418,14 +3555,14 @@ class MLAData {
3418
  foreach ( $features[ $attachment->ID ] as $id => $feature ) {
3419
  $references['found_reference'] = true;
3420
  $references['features'][ $id ] = $feature;
3421
-
3422
  if ( $id == $attachment->post_parent ) {
3423
  $references['found_parent'] = true;
3424
  }
3425
  } // foreach $feature
3426
  }
3427
  } // $process_featured_in
3428
-
3429
  /*
3430
  * Look for item(s) inserted in post_content
3431
  */
@@ -3437,13 +3574,13 @@ class MLAData {
3437
  foreach( $inserts[ $attachment_index ] as $insert ) {
3438
  $ref_insert = clone $insert;
3439
  unset( $ref_insert->file_name );
3440
-
3441
  if ( 'base' == $inserted_in_option ) {
3442
  $ref_key = pathinfo( $references['base_file'], PATHINFO_FILENAME );
3443
  } else {
3444
  $ref_key = $insert->file_name;
3445
  }
3446
-
3447
  $references['inserts'][ $ref_key ][ $insert->ID ] = $ref_insert;
3448
  if ( $insert->ID == $attachment->post_parent ) {
3449
  $references['found_parent'] = true;
@@ -3453,7 +3590,7 @@ class MLAData {
3453
  $references['inserts'] = array();
3454
  }
3455
  } // $process_inserted_in
3456
-
3457
  /*
3458
  * Look for [mla_gallery] references
3459
  */
@@ -3464,7 +3601,7 @@ class MLAData {
3464
  if ( ! empty( $galleries ) ) {
3465
  $references['found_reference'] = true;
3466
  $references['mla_galleries'] = $galleries;
3467
-
3468
  foreach ( $galleries as $post_id => $gallery ) {
3469
  if ( $post_id == $attachment->post_parent ) {
3470
  $references['found_parent'] = true;
@@ -3475,7 +3612,7 @@ class MLAData {
3475
  }
3476
  }
3477
  } // $process_mla_gallery_in
3478
-
3479
  /*
3480
  * Look for [gallery] references
3481
  */
@@ -3486,7 +3623,7 @@ class MLAData {
3486
  if ( ! empty( $galleries ) ) {
3487
  $references['found_reference'] = true;
3488
  $references['galleries'] = $galleries;
3489
-
3490
  foreach ( $galleries as $post_id => $gallery ) {
3491
  if ( $post_id == $attachment->post_parent ) {
3492
  $references['found_parent'] = true;
@@ -3497,7 +3634,7 @@ class MLAData {
3497
  }
3498
  }
3499
  } // $process_gallery_in
3500
-
3501
  /*
3502
  * Evaluate and summarize reference tests
3503
  */
@@ -3508,22 +3645,22 @@ class MLAData {
3508
  } else {
3509
  $references['tested_reference'] = true;
3510
  $suffix = ( 4 == $reference_tests ) ? '' : '?';
3511
-
3512
  if ( !$references['found_reference'] ) {
3513
  $errors .= '(' . sprintf( __( 'ORPHAN', 'media-library-assistant' ) . '%1$s) ', $suffix );
3514
  }
3515
-
3516
  if ( !$references['found_parent'] && ! empty( $references['parent_title'] ) ) {
3517
  $errors .= '(' . sprintf( __( 'UNUSED', 'media-library-assistant' ) . '%1$s) ', $suffix );
3518
  }
3519
  }
3520
-
3521
  if ( $references['is_unattached'] ) {
3522
  $errors .= '(' . __( 'UNATTACHED', 'media-library-assistant' ) . ')';
3523
  } elseif ( empty( $references['parent_title'] ) ) {
3524
  $errors .= '(' . __( 'INVALID PARENT', 'media-library-assistant' ) . ')';
3525
  }
3526
-
3527
  $references['parent_errors'] = trim( $errors );
3528
  $attachments[ $attachment_index ]->mla_references = apply_filters( 'mla_fetch_attachment_references', $references, $attachment->ID, (int) $attachment->post_parent );
3529
  } // foreach $attachment
@@ -3658,7 +3795,7 @@ class MLAData {
3658
  } else {
3659
  $like = like_escape( $shortcode );
3660
  }
3661
-
3662
  $results = $wpdb->get_results(
3663
  $wpdb->prepare(
3664
  "
@@ -3749,648 +3886,106 @@ class MLAData {
3749
  }
3750
 
3751
  /**
3752
- * Array of PDF indirect objects
3753
- *
3754
- * This array contains all of the indirect object offsets and lengths.
3755
- * The array key is ( object ID * 1000 ) + object generation.
3756
- * The array value is array( number, generation, start, optional /length )
3757
- *
3758
- * @since 1.50
3759
- *
3760
- * @var array
3761
- */
3762
- private static $pdf_indirect_objects = NULL;
3763
-
3764
- /**
3765
- * Parse a cross-reference table subsection into the array of indirect object definitions
3766
  *
3767
- * A cross-reference subsection is a sequence of 20-byte entries, each with offset and generation values.
3768
  * @since 1.50
3769
  *
3770
- * @param string buffer containing the subsection
3771
- * @param integer offset within the buffer of the first entry
3772
- * @param integer number of the first object in the subsection
3773
- * @param integer number of entries in the subsection
3774
- *
3775
- * @return void
3776
  */
3777
- private static function _parse_pdf_xref_subsection( &$xref_section, $offset, $object_id, $count ) {
3778
-
3779
- while ( $count-- ) {
3780
- $match_count = preg_match( '/(\d+) (\d+) (.)/', $xref_section, $matches, 0, $offset);
3781
-
3782
- if ( $match_count ) {
3783
- if ( 'n' == $matches[3] ) {
3784
- $key = ( $object_id * 1000 ) + $matches[2];
3785
- if ( ! isset( self::$pdf_indirect_objects[ $key ] ) ) {
3786
- self::$pdf_indirect_objects[ $key ] = array( 'number' => $object_id, 'generation' => (integer) $matches[2], 'start' => (integer) $matches[1] );
3787
- }
3788
- }
3789
-
3790
- $object_id++;
3791
- $offset += 20;
3792
- } else {
3793
- break;
3794
- }
3795
  }
 
 
3796
  }
3797
 
3798
  /**
3799
- * Parse a cross-reference table section into the array of indirect object definitions
3800
  *
3801
- * Creates the array of indirect object offsets and lengths
3802
  * @since 1.50
3803
  *
3804
- * @param string full path and file name
3805
- * @param integer offset within the file of the xref id and count entry
3806
- *
3807
- * @return integer length of the section
3808
  */
3809
- private static function _parse_pdf_xref_section( $file_name, $file_offset ) {
3810
- $xref_max = $chunksize = 16384;
3811
- $xref_section = file_get_contents( $file_name, true, NULL, $file_offset, $chunksize );
3812
- $xref_length = 0;
3813
-
3814
- while ( preg_match( '/^[\x00-\x20]*(\d+) (\d+)[\x00-\x20]*/', substr($xref_section, $xref_length), $matches, 0 ) ) {
3815
- $object_id = $matches[1];
3816
- $count = $matches[2];
3817
- $offset = $xref_length + strlen( $matches[0] );
3818
- $xref_length = $offset + ( 20 * $count );
3819
-
3820
- if ( $xref_max < $xref_length ) {
3821
- $xref_max += $chunksize;
3822
- $xref_section = file_get_contents( $file_name, true, NULL, $file_offset, $xref_max );
3823
- }
3824
-
3825
- self::_parse_pdf_xref_subsection( $xref_section, $offset, $object_id, $count );
3826
- } // while preg_match subsection header
3827
 
3828
- return $xref_length;
3829
  }
3830
 
3831
  /**
3832
- * Parse a cross-reference steam into the array of indirect object definitions
3833
  *
3834
- * Creates the array of indirect object offsets and lengths
3835
- * @since 1.50
3836
  *
3837
- * @param string full path and file name
3838
- * @param integer offset within the file of the xref id and count entry
3839
- * @param string "/W" entry, representing the size of the fields in a single entry
3840
- *
3841
- * @return integer length of the stream
3842
  */
3843
- private static function _parse_pdf_xref_stream( $file_name, $file_offset, $entry_parms_string ) {
3844
- $chunksize = 16384;
3845
- $xref_section = file_get_contents( $file_name, true, NULL, $file_offset, $chunksize );
3846
-
3847
- if ( 'stream' == substr( $xref_section, 0, 6 ) ) {
3848
- $tag_length = 7;
3849
- if ( chr(0x0D) == $xref_section[6] ) {
3850
- $tag_length++;
3851
- }
3852
- } else {
3853
- return 0;
3854
  }
3855
-
3856
- /*
3857
- * If necessary and possible, expand the $xmp_chunk until it contains the end tag
3858
- */
3859
- $new_chunksize = $chunksize;
3860
- if ( false === ( $end_tag = strpos( $xref_section, 'endstream', $tag_length ) ) && ( $chunksize == strlen( $xref_section ) ) ) {
3861
- $new_chunksize = $chunksize + $chunksize;
3862
- $xref_section = file_get_contents( $file_name, true, NULL, $file_offset, $new_chunksize );
3863
- while ( false === ( $end_tag = strpos( $xref_section, 'endstream' ) ) && ( $new_chunksize == strlen( $xref_section ) ) ) {
3864
- $new_chunksize = $new_chunksize + $chunksize;
3865
- $xref_section = file_get_contents( $file_name, true, NULL, $file_offset, $new_chunksize );
3866
- } // while not found
3867
- } // if not found
3868
-
3869
- if ( false == $end_tag ) {
3870
- $length = 0;
3871
- } else {
3872
- $length = $end_tag - $tag_length;
3873
  }
3874
 
3875
- if ( false == $end_tag ) {
3876
- return 0;
3877
  }
3878
 
3879
- return $length;
3880
-
3881
- $entry_parms = explode( ' ', $entry_parms_string );
3882
- $object_id = $matches[1];
3883
- $count = $matches[2];
3884
- $offset = strlen( $matches[0] );
3885
- $length = $offset + ( 20 * $count );
3886
-
3887
- if ( $chunksize < $length ) {
3888
- $xref_section = file_get_contents( $file_name, true, NULL, $file_offset, $length );
3889
- $offset = 0;
3890
  }
3891
 
3892
- while ( $count-- ) {
3893
- $match_count = preg_match( '/(\d+) (\d+) (.)/', $xref_section, $matches, 0, $offset);
3894
- if ( $match_count ) {
3895
- if ( 'n' == $matches[3] ) {
3896
- $key = ( $object_id * 1000 ) + $matches[2];
3897
- if ( ! isset( self::$pdf_indirect_objects[ $key ] ) ) {
3898
- self::$pdf_indirect_objects[ $key ] = array( 'number' => $object_id, 'generation' => (integer) $matches[2], 'start' => (integer) $matches[1] );
3899
- }
3900
- }
3901
 
3902
- $object_id++;
3903
- $offset += 20;
3904
  } else {
3905
- break;
3906
  }
3907
  }
3908
 
3909
- return $length;
3910
  }
3911
 
3912
  /**
3913
- * Build an array of indirect object definitions
3914
  *
3915
- * Creates the array of indirect object offsets and lengths
3916
- * @since 1.50
3917
  *
3918
- * @param string The entire PDF document, passsed by reference
 
3919
  *
3920
- * @return void
3921
  */
3922
- private static function _build_pdf_indirect_objects( &$string ) {
3923
- if ( ! is_null( self::$pdf_indirect_objects ) ) {
3924
- return;
3925
- }
3926
-
3927
- $match_count = preg_match_all( '!(\d+)\\h+(\d+)\\h+obj|endobj|stream(\x0D\x0A|\x0A)|endstream!', $string, $matches, PREG_OFFSET_CAPTURE );
3928
- self::$pdf_indirect_objects = array();
3929
- $object_level = 0;
3930
- $is_stream = false;
3931
- for ( $index = 0; $index < $match_count; $index++ ) {
3932
- if ( $is_stream ) {
3933
- if ( 'endstream' == substr( $matches[0][ $index ][0], 0, 9 ) ) {
3934
- $is_stream = false;
3935
- }
3936
- } elseif ( 'endobj' == substr( $matches[0][ $index ][0], 0, 6 ) ) {
3937
- $object_level--;
3938
- $object_entry['/length'] = $matches[0][ $index ][1] - $object_entry['start'];
3939
- self::$pdf_indirect_objects[ ($object_entry['number'] * 1000) + $object_entry['generation'] ] = $object_entry;
3940
- } elseif ( 'obj' == substr( $matches[0][ $index ][0], -3 ) ) {
3941
- $object_level++;
3942
- $object_entry = array(
3943
- 'number' => $matches[1][ $index ][0],
3944
- 'generation' => $matches[2][ $index ][0],
3945
- 'start' => $matches[0][ $index ][1] + strlen( $matches[0][ $index ][0] )
3946
- );
3947
- } elseif ( 'stream' == substr( $matches[0][ $index ][0], 0, 6 ) ) {
3948
- $is_stream = true;
3949
- } else {
3950
- /* translators: 1: ERROR tag 2: index */
3951
- error_log( sprintf( _x( '%1$s: _build_pdf_indirect_objects bad value at $index = "%2$d".', 'error_log', 'media-library-assistant' ), __( 'ERROR', 'media-library-assistant' ), $index ), 0 );
3952
- }
3953
- } // for each match
3954
- }
3955
-
3956
- /**
3957
- * Find the offset, length and contents of an indirect object containing a dictionary
3958
- *
3959
- * The function searches the entire file, if necessary, to find the last/most recent copy of the object.
3960
- * This is required because Adobe Acrobat does NOT increment the generation number when it reuses an object.
3961
- *
3962
- * @since 1.50
3963
- *
3964
- * @param string full path and file name
3965
- * @param integer The object number
3966
- * @param integer The object generation number; default zero (0)
3967
- *
3968
- * @return mixed NULL on failure else array( 'start' => offset in the file, 'length' => object length, 'content' => dictionary contents )
3969
- */
3970
- private static function _find_pdf_indirect_dictionary( $file_name, $object, $generation = 0 ) {
3971
- $chunksize = 16384;
3972
- $key = ( $object * 1000 ) + $generation;
3973
- if ( isset( self::$pdf_indirect_objects ) && isset( self::$pdf_indirect_objects[ $key ] ) ) {
3974
- $file_offset = self::$pdf_indirect_objects[ $key ]['start'];
3975
- } else { // found object location
3976
- $file_offset = 0;
3977
- }
3978
-
3979
- $object_starts = array();
3980
- $object_content = file_get_contents( $file_name, true, NULL, $file_offset, $chunksize );
3981
-
3982
- /*
3983
- * Match the object header
3984
- */
3985
- $pattern = sprintf( '!%1$d\\h+%2$d\\h+obj[\\x00-\\x20]*(<<)!', $object, $generation );
3986
- $match_count = preg_match( $pattern, $object_content, $matches, PREG_OFFSET_CAPTURE );
3987
- if ( $match_count ) {
3988
- $object_starts[] = array( 'offset' => $file_offset, 'start' => $matches[1][1]);
3989
- $match_count = 0;
3990
- }
3991
-
3992
- /*
3993
- * If necessary and possible, advance the $object_content through the file until it contains the start tag
3994
- */
3995
- if ( 0 == $match_count && ( $chunksize == strlen( $object_content ) ) ) {
3996
- $file_offset += ( $chunksize - 16 );
3997
- $object_content = file_get_contents( $file_name, true, NULL, $file_offset, $chunksize );
3998
- $match_count = preg_match( $pattern, $object_content, $matches, PREG_OFFSET_CAPTURE );
3999
-
4000
- if ( $match_count ) {
4001
- $object_starts[] = array( 'offset' => $file_offset, 'start' => $matches[1][1]);
4002
- $match_count = 0;
4003
- }
4004
-
4005
- while ( 0 == $match_count && ( $chunksize == strlen( $object_content ) ) ) {
4006
- $file_offset += ( $chunksize - 16 );
4007
- $object_content = file_get_contents( $file_name, true, NULL, $file_offset, $chunksize );
4008
- $match_count = preg_match( $pattern, $object_content, $matches, PREG_OFFSET_CAPTURE );
4009
-
4010
- if ( $match_count ) {
4011
- $object_starts[] = array( 'offset' => $file_offset, 'start' => $matches[1][1]);
4012
- $match_count = 0;
4013
- }
4014
- } // while not found
4015
- } // if not found
4016
-
4017
- $object_start = array_pop( $object_starts );
4018
- if ( is_null( $object_start ) ) {
4019
- return NULL;
4020
- } else {
4021
- $file_offset = $object_start['offset'];
4022
- $object_content = file_get_contents( $file_name, true, NULL, $file_offset, $chunksize );
4023
- $start = $object_start['start'];
4024
- }
4025
-
4026
- /*
4027
- * If necessary and possible, expand the $object_content until it contains the end tag
4028
- */
4029
- $pattern = '!>>[\\x00-\\x20]*[endobj|stream]!';
4030
- $match_count = preg_match( $pattern, $object_content, $matches, PREG_OFFSET_CAPTURE, $start );
4031
- if ( 0 == $match_count && ( $chunksize == strlen( $object_content ) ) ) {
4032
- $file_offset = $file_offset + $start;
4033
- $start = 0;
4034
- $new_chunksize = $chunksize + $chunksize;
4035
- $object_content = file_get_contents( $file_name, true, NULL, $file_offset, $new_chunksize );
4036
- $match_count = preg_match( $pattern, $object_content, $matches, PREG_OFFSET_CAPTURE, $start );
4037
-
4038
- while ( 0 == $match_count && ( $new_chunksize == strlen( $object_content ) ) ) {
4039
- $new_chunksize = $new_chunksize + $chunksize;
4040
- $object_content = file_get_contents( $file_name, true, NULL, $file_offset, $new_chunksize );
4041
- $match_count = preg_match( $pattern, $object_content, $matches, PREG_OFFSET_CAPTURE, $start );
4042
- } // while not found
4043
- } // if not found
4044
-
4045
- if ( 0 == $match_count ) {
4046
- return NULL;
4047
- }
4048
-
4049
- if ($match_count) {
4050
- $results = array( 'start' => $file_offset + $start, 'length' => ($matches[0][1] + 2) - $start );
4051
- $results['content'] = substr( $object_content, $start, $results['length'] );
4052
- return $results;
4053
- } // found trailer
4054
-
4055
- return NULL;
4056
- }
4057
-
4058
- /**
4059
- * Parse a ISO 8601 Timestamp
4060
- *
4061
- * @since 1.50
4062
- *
4063
- * @param string ISO string of the form YYYY-MM-DDTHH:MM:SS-HH:MM (inc time zone)
4064
- *
4065
- * @return string formatted date string YYYY-MM-DD HH:mm:SS
4066
- */
4067
- private static function _parse_iso8601_date( $source_string ) {
4068
- if ( 1 == preg_match( '/^\\d\\d\\d\\d-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d-\\d\\d:\\d\\d/', $source_string ) ) {
4069
- return sprintf( '%1$s-%2$s-%3$s %4$s:%5$s:%6$s',
4070
- substr( $source_string, 0, 4),
4071
- substr( $source_string, 5, 2),
4072
- substr( $source_string, 8, 2),
4073
- substr( $source_string, 11, 2),
4074
- substr( $source_string, 14, 2),
4075
- substr( $source_string, 17, 2) );
4076
- }
4077
-
4078
- return $source_string;
4079
- }
4080
-
4081
- /**
4082
- * Parse a PDF date string
4083
- *
4084
- * @since 1.50
4085
- *
4086
- * @param string PDF date string of the form D:YYYYMMDDHHmmSSOHH'mm
4087
- *
4088
- * @return string formatted date string YYYY-MM-DD HH:mm:SS
4089
- */
4090
- private static function _parse_pdf_date( $source_string ) {
4091
- if ( 'D:' == substr( $source_string, 0, 2) && ctype_digit( substr( $source_string, 2, 12 ) ) ) {
4092
- return sprintf( '%1$s-%2$s-%3$s %4$s:%5$s:%6$s',
4093
- substr( $source_string, 2, 4),
4094
- substr( $source_string, 6, 2),
4095
- substr( $source_string, 8, 2),
4096
- substr( $source_string, 10, 2),
4097
- substr( $source_string, 12, 2),
4098
- substr( $source_string, 14, 2) );
4099
- }
4100
-
4101
- return $source_string;
4102
- }
4103
-
4104
- /**
4105
- * Parse a PDF Unicode (16-bit Big Endian) object
4106
- *
4107
- * @since 1.50
4108
- *
4109
- * @param string PDF string of 16-bit characters
4110
- *
4111
- * @return string UTF-8 encoded string
4112
- */
4113
- private static function _parse_pdf_UTF16BE( &$source_string ) {
4114
- $output = '';
4115
- for ($index = 2; $index < strlen( $source_string ); ) {
4116
- $value = ( ord( $source_string[ $index++ ] ) << 8 ) + ord( $source_string[ $index++ ] );
4117
- if ( $value < 0x80 ) {
4118
- $output .= chr( $value );
4119
- } elseif ( $value < 0x100 ) {
4120
- $output .= self::$utf8_chars[ $value - 0x80 ];
4121
- } else {
4122
- $output .= '.'; // TODO encode the rest
4123
- }
4124
- }
4125
-
4126
- return $output;
4127
- }
4128
-
4129
- /**
4130
- * Parse a PDF string object
4131
- *
4132
- * Returns an array with one dictionary entry. The array also has a '/length' element containing
4133
- * the number of bytes occupied by the string in the source string, including the enclosing parentheses.
4134
- *
4135
- * @since 1.50
4136
- *
4137
- * @param string data within which the string occurs
4138
- * @param integer offset within the source string of the opening '(' character.
4139
- *
4140
- * @return array ( key => array( 'type' => type, 'value' => value, '/length' => length ) ) for the string
4141
- */
4142
- private static function _parse_pdf_string( &$source_string, $offset ) {
4143
- if ( '(' != $source_string[ $offset ] ) {
4144
- return array( 'type' => 'unknown', 'value' => '', '/length' => 0 );
4145
- }
4146
-
4147
- /*
4148
- * Brute force, here we come...
4149
- */
4150
- $output = '';
4151
- $level = 0;
4152
- $in_string = true;
4153
- $index = $offset + 1;
4154
- while ( $in_string ) {
4155
- $byte = $source_string[ $index++ ];
4156
- if ( '\\' == $byte ) {
4157
- switch ( $source_string[ $index ] ) {
4158
- case chr( 0x0A ):
4159
- if ( chr( 0x0D ) == $source_string[ $index + 1 ] ) {
4160
- $index++;
4161
- }
4162
-
4163
- break;
4164
- case chr( 0x0D ):
4165
- if ( chr( 0x0A ) == $source_string[ $index + 1 ] ) {
4166
- $index++;
4167
- }
4168
-
4169
- break;
4170
- case 'n':
4171
- $output .= chr( 0x0A );
4172
- break;
4173
- case 'r':
4174
- $output .= chr( 0x0D );
4175
- break;
4176
- case 't':
4177
- $output .= chr( 0x09 );
4178
- break;
4179
- case 'b':
4180
- $output .= chr( 0x08 );
4181
- break;
4182
- case 'f':
4183
- $output .= chr( 0x0C );
4184
- break;
4185
- default: // could be a 1- to 3-digit octal value
4186
- $digit_limit = $index + 3;
4187
- $digit_index = $index;
4188
- while ( $digit_index < $digit_limit ) {
4189
- if ( ! ctype_digit( $source_string[ $digit_index ] ) ) {
4190
- break;
4191
- } else {
4192
- $digit_index++;
4193
- }
4194
- }
4195
-
4196
- if ( $digit_count = $digit_index - $index ) {
4197
- $output .= chr( octdec( substr( $source_string, $index, $digit_count ) ) );
4198
- $index += $digit_count - 1;
4199
- } else { // accept the character following the backslash
4200
- $output .= $source_string[ $index ];
4201
- }
4202
- } // switch
4203
-
4204
- $index++;
4205
- } else { // REVERSE SOLIDUS
4206
- if ( '(' == $byte ) {
4207
- $level++;
4208
- } elseif ( ')' == $byte ) {
4209
- if ( 0 == $level-- ) {
4210
- $in_string = false;
4211
- continue;
4212
- }
4213
- }
4214
-
4215
- $output .= $byte;
4216
- } // just another 8-bit value, but check for balanced parentheses
4217
- } // $in_string
4218
-
4219
- return array( 'type' => 'string', 'value' => $output, '/length' => $index - $offset );
4220
- }
4221
-
4222
- /**
4223
- * Parse a PDF Linearization Parameter Dictionary object
4224
- *
4225
- * Returns an array of dictionary contents, classified by object type: boolean, numeric, string, hex (string),
4226
- * indirect (object), name, array, dictionary, stream, and null.
4227
- * The array also has a '/length' element containing the number of bytes occupied by the
4228
- * dictionary in the source string, excluding the enclosing delimiters, if passed in.
4229
- * @since 1.50
4230
- *
4231
- * @param string data within which the object occurs, typically the start of a PDF document
4232
- * @param integer filesize of the PDF document, for validation purposes, or zero (0) to ignore filesize
4233
- *
4234
- * @return mixed array of dictionary objects on success, false on failure
4235
- */
4236
- private static function _parse_pdf_LPD_dictionary( &$source_string, $filesize ) {
4237
- $header = substr( $source_string, 0, 1024 );
4238
- $match_count = preg_match( '!obj[\x00-\x20]*<<(/Linearized).*(>>)[\x00-\x20]*endobj!', $header, $matches, PREG_OFFSET_CAPTURE );
4239
-
4240
- if ( $match_count ) {
4241
- $LPD = self::_parse_pdf_dictionary( $header, $matches[1][1] );
4242
- }
4243
-
4244
- return false;
4245
- }
4246
-
4247
- /**
4248
- * Parse a PDF dictionary object
4249
- *
4250
- * Returns an array of dictionary contents, classified by object type: boolean, numeric, string, hex (string),
4251
- * indirect (object), name, array, dictionary, stream, and null.
4252
- * The array also has a '/length' element containing the number of bytes occupied by the
4253
- * dictionary in the source string, excluding the enclosing delimiters.
4254
- * @since 1.50
4255
- *
4256
- * @param string data within which the string occurs
4257
- * @param integer offset within the source string of the opening '<<' characters or the first content character.
4258
- *
4259
- * @return array ( '/length' => length, key => array( 'type' => type, 'value' => value ) ) for each dictionary field
4260
- */
4261
- private static function _parse_pdf_dictionary( &$source_string, $offset ) {
4262
- /*
4263
- * Find the end of the dictionary
4264
- */
4265
- if ( '<<' == substr( $source_string, $offset, 2 ) ) {
4266
- $nest = $offset + 2;
4267
- } else {
4268
- $nest = $offset;
4269
- }
4270
-
4271
- $level = 1;
4272
- do {
4273
- $dictionary_end = strpos( $source_string, '>>', $nest );
4274
- if ( false === $dictionary_end ) {
4275
- /* translators: 1: ERROR tag 2: source offset 3: nest level */
4276
- error_log( sprintf( _x( '%1$s: _parse_pdf_dictionary offset = %2$d, nest = %3$d.', 'error_log', 'media-library-assistant' ), __( 'ERROR', 'media-library-assistant' ), $offset, $nest ), 0 );
4277
- /* translators: 1: ERROR tag 2: dictionary excerpt */
4278
- error_log( sprintf( _x( '%1$s: _parse_pdf_dictionary no end delimiter dump = %2$s.', 'error_log', 'media-library-assistant' ), __( 'ERROR', 'media-library-assistant' ), self::_hex_dump( substr( $source_string, $offset, 128 ), 128, 16 ) ), 0 );
4279
- return array( '/length' => 0 );
4280
- }
4281
-
4282
- $nest = strpos( $source_string, '<<', $nest );
4283
- if ( false === $nest ) {
4284
- $nest = $dictionary_end + 2;
4285
- $level--;
4286
- } elseif ( $nest < $dictionary_end ) {
4287
- $nest += 2;
4288
- $level++;
4289
- } else {
4290
- $nest = $dictionary_end + 2;
4291
- $level--;
4292
- }
4293
- } while ( $level );
4294
-
4295
- $dictionary_length = $dictionary_end + 2 - $offset;
4296
- $dictionary = array();
4297
-
4298
- // \x00-\x20 for whitespace
4299
- // \(|\)|\<|\>|\[|\]|\{|\}|\/|\% for delimiters
4300
- $match_count = preg_match_all( '!/([^\x00-\x20|\(|\)|\<|\>|\[|\]|\{|\}|\/|\%]*)([\x00-\x20]*)!', substr( $source_string, $offset, $dictionary_length ), $matches, PREG_OFFSET_CAPTURE );
4301
- $end_data = -1;
4302
- for ( $match_index = 0; $match_index < $match_count; $match_index++ ) {
4303
- $name = $matches[1][ $match_index ][0];
4304
- $value_start = $offset + $matches[2][ $match_index ][1] + strlen( $matches[2][ $match_index ][0] );
4305
-
4306
- /*
4307
- * Skip over false matches within a string or nested dictionary
4308
- */
4309
- if ( $value_start < $end_data ) {
4310
- continue;
4311
- }
4312
-
4313
- $end_data = -1;
4314
- $value_count = preg_match(
4315
- '!(\/?[^\/\x0D\x0A]*)!',
4316
- substr( $source_string, $value_start, ($dictionary_end - $value_start ) ), $value_matches, PREG_OFFSET_CAPTURE );
4317
-
4318
- if ( 1 == $value_count ) {
4319
- $value = trim( $value_matches[0][0] );
4320
- $length = strlen( $value );
4321
- $dictionary[ $name ]['value'] = $value;
4322
- if ( ! isset( $value[0] ) ) {
4323
- /* translators: 1: ERROR tag 2: entry name 3: value excerpt */
4324
- error_log( sprintf( _x( '%1$s: _parse_pdf_dictionary bad value [ %2$s ] dump = %3$s', 'error_log', 'media-library-assistant' ), __( 'ERROR', 'media-library-assistant' ), $name, self::_hex_dump( $value, 32, 16 ) ), 0 );
4325
- continue;
4326
- }
4327
-
4328
- if ( in_array( $value, array( 'true', 'false' ) ) ) {
4329
- $dictionary[ $name ]['type'] = 'boolean';
4330
- } elseif ( is_numeric( $value ) ) {
4331
- $dictionary[ $name ]['type'] = 'numeric';
4332
- } elseif ( '(' == $value[0] ) {
4333
- $dictionary[ $name ] = self::_parse_pdf_string( $source_string, $value_start );
4334
- $end_data = $value_start + $dictionary[ $name ]['/length'];
4335
- unset( $dictionary[ $name ]['/length'] );
4336
- } elseif ( '<' == $value[0] ) {
4337
- if ( '<' == $value[1] ) {
4338
- $dictionary[ $name ]['value'] = self::_parse_pdf_dictionary( $source_string, $value_start );
4339
- $dictionary[ $name ]['type'] = 'dictionary';
4340
- $end_data = $value_start + 4 + $dictionary[ $name ]['value']['/length'];
4341
- unset( $dictionary[ $name ]['value']['/length'] );
4342
- } else {
4343
- $dictionary[ $name ]['type'] = 'hex';
4344
- }
4345
- } elseif ( '/' == $value[0] ) {
4346
- $dictionary[ $name ]['value'] = substr( $value, 1 );
4347
- $dictionary[ $name ]['type'] = 'name';
4348
- $match_index++; // Skip to the next key
4349
- } elseif ( '[' == $value[0] ) {
4350
- $dictionary[ $name ]['type'] = 'array';
4351
- $array_length = strpos( $source_string, ']', $value_start ) - ($value_start + 1);
4352
- $dictionary[ $name ]['value'] = substr( $source_string, $value_start + 1, $array_length );
4353
- $end_data = 2 + $value_start + $array_length;
4354
- } elseif ( 'null' == $value ) {
4355
- $dictionary[ $name ]['type'] = 'null';
4356
- } elseif ( 'stream' == substr( $value, 0, 6 ) ) {
4357
- $dictionary[ $name ]['type'] = 'stream';
4358
- } else {
4359
- $object_count = preg_match( '!(\d+)\h+(\d+)\h+R!', $value, $object_matches );
4360
-
4361
- if ( 1 == $object_count ) {
4362
- $dictionary[ $name ]['type'] = 'indirect';
4363
- $dictionary[ $name ]['object'] = $object_matches[1];
4364
- $dictionary[ $name ]['generation'] = $object_matches[2];
4365
- } else {
4366
- $dictionary[ $name ]['type'] = 'unknown';
4367
- }
4368
- }
4369
- } else {
4370
- $dictionary[ $matches[1][ $match_index ][0] ] = array( 'value' => '' );
4371
- $dictionary[ $matches[1][ $match_index ][0] ]['type'] = 'nomatch';
4372
- }
4373
- } // foreach match
4374
-
4375
- $dictionary['/length'] = $dictionary_length;
4376
- return $dictionary;
4377
- }
4378
-
4379
- /**
4380
- * Parse an XMP object
4381
- *
4382
- * Returns an array of dictionary contents, classified by object type: boolean, numeric, string, hex (string),
4383
- * indirect (object), name, array, dictionary, stream, and null.
4384
- * The array also has a '/length' element containing the number of bytes occupied by the
4385
- * dictionary in the source string, excluding the enclosing delimiters, if passed in.
4386
- * @since 1.50
4387
- *
4388
- * @param string full path and file name
4389
- * @param integer offset within the file of the search start point
4390
- *
4391
- * @return mixed array of metadata values or NULL on failure
4392
- */
4393
- private static function _parse_xmp_metadata( $file_name, $file_offset ) {
4394
  $chunksize = 16384;
4395
  $xmp_chunk = file_get_contents( $file_name, true, NULL, $file_offset, $chunksize );
4396
 
@@ -4435,10 +4030,10 @@ class MLAData {
4435
  $xml_parser = xml_parser_create('UTF-8');
4436
  if ( xml_parser_set_option( $xml_parser, XML_OPTION_SKIP_WHITE, 0 ) && xml_parser_set_option( $xml_parser, XML_OPTION_CASE_FOLDING, 0 ) ) {
4437
  if (xml_parse_into_struct( $xml_parser, $xmp_string, $xmp_values ) == 0) {
4438
- error_log( __( 'ERROR', 'media-library-assistant' ) . ': ' . _x( '_parse_xmp_metadata xml_parse_into_struct failed.', 'error_log', 'media-library-assistant' ), 0 );
4439
  }
4440
  } else {
4441
- error_log( __( 'ERROR', 'media-library-assistant' ) . ': ' . _x( '_parse_xmp_metadata set option failed.', 'error_log', 'media-library-assistant' ), 0 );
4442
  }
4443
 
4444
  xml_parser_free($xml_parser);
@@ -4447,77 +4042,92 @@ class MLAData {
4447
  return NULL;
4448
  }
4449
 
 
 
4450
  $results = array();
4451
  $xmlns = array();
4452
- $array_name = '';
4453
- $array_index = -1;
4454
  foreach ( $xmp_values as $value ) {
4455
  $language = 'x-default';
 
4456
  if ( isset( $value['attributes'] ) ) {
4457
  foreach ( $value['attributes'] as $att_tag => $att_value ) {
 
 
4458
  if ( 'xmlns:' == substr( $att_tag, 0, 6 ) ) {
4459
  $xmlns[ substr( $att_tag, 6 ) ] = $att_value;
4460
  } elseif ( 'x:xmptk' == $att_tag ) {
4461
  $results['xmptk'] = $att_value;
4462
  } elseif ( 'xml:lang' == $att_tag ) {
4463
  $language = $att_value;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4464
  }
4465
  }
4466
  } // attributes
4467
 
4468
- switch ( $value['tag'] ) {
4469
- case 'x:xmpmeta':
4470
- case 'rdf:RDF':
4471
- case 'rdf:Description':
4472
- case 'rdf:ID':
4473
- case 'rdf:nodeID':
4474
  break;
4475
- case 'rdf:li':
4476
- if ( $value['type'] == 'complete' ) {
4477
- if ( 'x-default' != $language ) {
4478
- break;
 
 
 
4479
  }
 
 
 
 
 
 
4480
 
4481
- if ( ! empty ( $array_name ) ) {
4482
- if ( isset( $value['value'] ) ) {
4483
- $results[ $array_name ][ $array_index++ ] = $value['value'];
4484
- } else {
4485
- $results[ $array_name ][ $array_index++ ] = '';
 
 
 
4486
  }
4487
  }
4488
- } // complete
4489
 
4490
- break;
4491
- case 'rdf:Seq':
4492
- case 'rdf:Bag':
4493
- case 'rdf:Alt':
4494
- switch ( $value['type'] ) {
4495
- case 'open':
4496
- $array_index = 0;
4497
- break;
4498
- case 'close':
4499
- $array_index = -1;
4500
  }
4501
 
4502
- break;
4503
- default:
4504
- switch ( $value['type'] ) {
4505
- case 'open':
4506
- $array_name = $value['tag'];
4507
- break;
4508
- case 'close':
4509
- $array_name = '';
4510
- break;
4511
- case 'complete':
4512
- if ( isset( $value['attributes'] ) ) {
4513
- $results[ $value['tag'] ] = $value['attributes'];
4514
- } elseif ( isset( $value['value'] ) ) {
4515
- $results[ $value['tag'] ] = $value['value'];
4516
- } else {
4517
- $results[ $value['tag'] ] = '';
4518
- }
4519
- } // type
4520
- } // switch tag
4521
  } // foreach value
4522
 
4523
  /*
@@ -4527,9 +4137,11 @@ class MLAData {
4527
  * code name for XMP; the names have been preserved for compatibility purposes.
4528
  */
4529
  $namespace_arrays = array();
4530
- foreach ( $results as $key => $value ) {
4531
  if ( is_string( $value ) ) {
4532
- $value = self::_parse_iso8601_date( self::_parse_pdf_date( $value ) );
 
 
4533
  }
4534
 
4535
  if ( false !== ($colon = strpos( $key, ':' ) ) ) {
@@ -4537,16 +4149,14 @@ class MLAData {
4537
  $array_index = substr( $key, $colon + 1 );
4538
  $namespace_arrays[ $array_name ][ $array_index ] = $value;
4539
 
4540
- if ( ! isset( $results[ $array_index ] ) && in_array( $array_name, array( 'xmp', 'xmpMM', 'xmpRights', 'xap', 'xapMM', 'dc', 'pdf', 'pdfx' ) ) ) {
4541
  if ( is_array( $value ) && 1 == count( $value ) && isset( $value[0] ) ) {
4542
  $results[ $array_index ] = $value[0];
4543
  } else {
4544
  $results[ $array_index ] = $value;
4545
  }
4546
  }
4547
-
4548
- unset( $results[ $key ] );
4549
- }
4550
  }
4551
 
4552
  /*
@@ -4669,200 +4279,6 @@ class MLAData {
4669
  return $results;
4670
  }
4671
 
4672
- /**
4673
- * Extract dictionary from traditional cross-reference + trailer documents
4674
- *
4675
- * @since 1.50
4676
- *
4677
- * @param string full path to the desired file
4678
- * @param integer offset within file of the cross-reference table
4679
- *
4680
- * @return mixed array of "PDF dictionary arrays", newest first, or NULL on failure
4681
- */
4682
- private static function _extract_pdf_trailer( $file_name, $file_offset ) {
4683
- $chunksize = 16384;
4684
- $tail = file_get_contents( $file_name, true, NULL, $file_offset, $chunksize );
4685
- $chunk_offset = 0;
4686
-
4687
- /*
4688
- * look for traditional xref and trailer
4689
- */
4690
- if ( 'xref' == substr( $tail, $chunk_offset, 4 ) ) {
4691
- $xref_length = self::_parse_pdf_xref_section( $file_name, $file_offset + $chunk_offset + 4 );
4692
- $chunk_offset += 4 + $xref_length;
4693
-
4694
- if ( $chunk_offset > ( $chunksize - 1024 ) ) {
4695
- $file_offset += $chunk_offset;
4696
- $tail = file_get_contents( $file_name, true, NULL, $file_offset, $chunksize );
4697
- $chunk_offset = 0;
4698
- }
4699
-
4700
- $match_count = preg_match( '/[\x00-\x20]*trailer[\x00-\x20]+/', $tail, $matches, PREG_OFFSET_CAPTURE, $chunk_offset );
4701
- if ( $match_count ) {
4702
- $chunk_offset = $matches[0][1] + strlen( $matches[0][0] );
4703
- $match_count = preg_match( '/<<(.*)>>/', $tail, $matches, 0, $chunk_offset );
4704
-
4705
- if ( 0 < $match_count ) {
4706
- $dictionary = self::_parse_pdf_dictionary( $matches[0], 0 );
4707
-
4708
- if ( isset( $dictionary['Prev'] ) ) {
4709
- $other_trailers = self::_extract_pdf_trailer( $file_name, $dictionary['Prev']['value'] );
4710
- } else {
4711
- $other_trailers = NULL;
4712
- }
4713
-
4714
- if ( is_array( $other_trailers ) ) {
4715
- $other_trailers = array_merge( $other_trailers, array( $dictionary ) );
4716
- return $other_trailers;
4717
- } else {
4718
- return array( $dictionary );
4719
- }
4720
- } // found trailer dictionary
4721
- } // found 'trailer'
4722
- } else { // found 'xref'
4723
- /*
4724
- * Look for a cross-reference stream
4725
- */
4726
- $match_count = preg_match( '!(\d+)\\h+(\d+)\\h+obj[\x00-\x20]*!', $tail, $matches, PREG_OFFSET_CAPTURE );
4727
- if ( $match_count ) {
4728
- $chunk_offset = $matches[0][1] + strlen( $matches[0][0] );
4729
-
4730
- if ( '<<' == substr( $tail, $chunk_offset, 2) ) {
4731
- $dictionary = self::_parse_pdf_dictionary( $tail, $chunk_offset );
4732
-
4733
- /*
4734
- * Parse the cross-reference stream following the dictionary, if present
4735
- */
4736
- if ( isset( $dictionary['Type'] ) && 'XRef' == $dictionary['Type']['value'] ) {
4737
- $xref_length = self::_parse_pdf_xref_stream( $file_name, $file_offset + $chunk_offset + (integer) $dictionary['/length'], $dictionary['W']['value'] );
4738
- }
4739
-
4740
- if ( isset( $dictionary['Prev'] ) ) {
4741
- $other_trailers = self::_extract_pdf_trailer( $file_name, $dictionary['Prev']['value'] );
4742
- } else {
4743
- $other_trailers = NULL;
4744
- }
4745
-
4746
- if ( is_array( $other_trailers ) ) {
4747
- $other_trailers = array_merge( array( $dictionary ), $other_trailers );
4748
- return $other_trailers;
4749
- } else {
4750
- return array( $dictionary );
4751
- }
4752
- } // found cross-reference stream dictionary
4753
- } // found cross-reference stream object
4754
- }
4755
-
4756
- return NULL;
4757
- }
4758
-
4759
- /**
4760
- * Extract Metadata from a PDF file
4761
- *
4762
- * @since 1.50
4763
- *
4764
- * @param string full path to the desired file
4765
- *
4766
- * @return array ( key => value ) for each metadata field, in string format
4767
- */
4768
- private static function _extract_pdf_metadata( $file_name ) {
4769
- $metadata = array();
4770
- self::$pdf_indirect_objects = NULL;
4771
- $chunksize = 16384;
4772
-
4773
- if ( ! file_exists( $file_name ) ) {
4774
- return $metadata;
4775
- }
4776
-
4777
- $filesize = filesize( $file_name );
4778
- $file_offset = ( $chunksize < $filesize ) ? ( $filesize - $chunksize ) : 0;
4779
- $tail = file_get_contents( $file_name, false, NULL, $file_offset );
4780
-
4781
- if ( 0 == $file_offset ) {
4782
- $header = substr( $tail, 0, 128 );
4783
- } else {
4784
- $header = file_get_contents( $file_name, false, NULL, 0, 128 );
4785
- }
4786
-
4787
- if ( '%PDF-' == substr( $header, 0, 5 ) ) {
4788
- $metadata['PDF_Version'] = substr( $header, 1, 7 );
4789
- $metadata['PDF_VersionNumber'] = substr( $header, 5, 3 );
4790
- }
4791
-
4792
- /*
4793
- * Find the xref and (optional) trailer
4794
- */
4795
- $match_count = preg_match_all( '/startxref[\x00-\x20]+(\d+)[\x00-\x20]+\%\%EOF/', $tail, $matches, PREG_OFFSET_CAPTURE );
4796
- if ( 0 == $match_count ) {
4797
- /* translators: 1: ERROR tag 2: path and file */
4798
- error_log( sprintf( _x( '%1$s: File "%2$s", startxref not found.', 'error_log', 'media-library-assistant' ), __( 'ERROR', 'media-library-assistant' ), $path ), 0 );
4799
- return $metadata;
4800
- }
4801
-
4802
- $startxref = (integer) $matches[1][ $match_count - 1 ][0];
4803
- $trailer_dictionaries = self::_extract_pdf_trailer( $file_name, $startxref );
4804
- if ( is_array( $trailer_dictionaries ) ) {
4805
- $info_reference = NULL;
4806
- foreach ( $trailer_dictionaries as $trailer_dictionary )
4807
- if ( isset( $trailer_dictionary['Info'] ) ) {
4808
- $info_reference = $trailer_dictionary['Info'];
4809
- break;
4810
- }
4811
-
4812
- if ( isset( $info_reference ) ) {
4813
- $info_object = self::_find_pdf_indirect_dictionary( $file_name, $info_reference['object'], $info_reference['generation'] );
4814
- if ( $info_object ) {
4815
- $info_dictionary = self::_parse_pdf_dictionary( $info_object['content'], 0 );
4816
- unset( $info_dictionary['/length'] );
4817
-
4818
- foreach ( $info_dictionary as $name => $value ) {
4819
- if ( 'string' == $value['type'] ) {
4820
- $prefix = substr( $value['value'], 0, 2 );
4821
- if ( 'D:' == $prefix ) {
4822
- $metadata[ $name ] = self::_parse_pdf_date( $value['value'] );
4823
- } elseif ( ( chr(0xFE) . chr(0xFF) ) == $prefix ) {
4824
- $metadata[ $name ] = self::_parse_pdf_UTF16BE( $value['value'] );
4825
- } else {
4826
- $metadata[ $name ] = $value['value'];
4827
- }
4828
- } else {
4829
- $metadata[ $name ] = $value['value'];
4830
- }
4831
- } // each info entry
4832
- } // found Info object
4833
- } // found Info reference
4834
-
4835
- /*
4836
- * Look for XMP Metadata
4837
- */
4838
- $root_reference = NULL;
4839
- foreach ( $trailer_dictionaries as $trailer_dictionary )
4840
- if ( isset( $trailer_dictionary['Root'] ) ) {
4841
- $root_reference = $trailer_dictionary['Root'];
4842
- break;
4843
- }
4844
-
4845
- if ( isset( $root_reference ) ) {
4846
- $root_object = self::_find_pdf_indirect_dictionary( $file_name, $root_reference['object'], $root_reference['generation'] );
4847
- if ( $root_object ) {
4848
- $root_dictionary = self::_parse_pdf_dictionary( $root_object['content'], 0 );
4849
- unset( $root_dictionary['/length'] );
4850
-
4851
- if ( isset( $root_dictionary['Metadata'] ) ) {
4852
- $xmp_object = self::_find_pdf_indirect_dictionary( $file_name, $root_dictionary['Metadata']['object'], $root_dictionary['Metadata']['generation'] );
4853
- $xmp = self::_parse_xmp_metadata( $file_name, $xmp_object['start'] + $xmp_object['length'] );
4854
-
4855
- if ( is_array( $xmp ) ) {
4856
- $metadata = array_merge( $metadata, $xmp );
4857
- }
4858
- } // found Metadata reference
4859
- } // found Root object
4860
- } // found Root reference
4861
- } // found trailer_dictionaries
4862
-
4863
- return $metadata;
4864
- }
4865
-
4866
  /**
4867
  * UTF-8 replacements for invalid SQL characters
4868
  *
@@ -4870,7 +4286,7 @@ class MLAData {
4870
  *
4871
  * @var array
4872
  */
4873
- private static $utf8_chars = array(
4874
  "\xC2\x80", "\xC2\x81", "\xC2\x82", "\xC2\x83", "\xC2\x84", "\xC2\x85", "\xC2\x86", "\xC2\x87",
4875
  "\xC2\x88", "\xC2\x89", "\xC2\x8A", "\xC2\x8B", "\xC2\x8C", "\xC2\x8D", "\xC2\x8E", "\xC2\x8F",
4876
  "\xC2\x90", "\xC2\x91", "\xC2\x92", "\xC2\x93", "\xC2\x94", "\xC2\x95", "\xC2\x96", "\xC2\x97",
@@ -5292,7 +4708,7 @@ class MLAData {
5292
  * @since 1.41
5293
  *
5294
  * @param string field name - IPTC Identifier or friendly name/slug
5295
- * @param string metadata array containing iptc, exif, and pdf metadata arrays
5296
  *
5297
  * @return mixed string/array representation of metadata value or an empty string
5298
  */
@@ -5340,7 +4756,7 @@ class MLAData {
5340
  * @since 1.13
5341
  *
5342
  * @param string field name
5343
- * @param string metadata array containing iptc, exif, and pdf metadata arrays
5344
  *
5345
  * @return mixed string/array representation of metadata value or an empty string
5346
  */
@@ -5393,6 +4809,41 @@ class MLAData {
5393
  return $text;
5394
  }
5395
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5396
  /**
5397
  * Parse one PDF metadata field
5398
  *
@@ -5401,7 +4852,7 @@ class MLAData {
5401
  * @since 1.50
5402
  *
5403
  * @param string field name
5404
- * @param string metadata array containing iptc, exif, and pdf metadata arrays
5405
  *
5406
  * @return mixed string/array representation of metadata value or an empty string
5407
  */
@@ -5489,7 +4940,7 @@ class MLAData {
5489
  } // fractional or mixed value
5490
  } // non-zero numerator
5491
  } // valid denominator
5492
-
5493
  return false;
5494
  }
5495
 
@@ -5544,7 +4995,7 @@ class MLAData {
5544
  }
5545
 
5546
  /**
5547
- * Fetch and filter IPTC and EXIF or PDF metadata for an image attachment
5548
  *
5549
  * @since 0.90
5550
  *
@@ -5558,6 +5009,7 @@ class MLAData {
5558
  'post_id' => $post_id,
5559
  'mla_iptc_metadata' => array(),
5560
  'mla_exif_metadata' => array(),
 
5561
  'mla_pdf_metadata' => array()
5562
  );
5563
 
@@ -5567,7 +5019,9 @@ class MLAData {
5567
 
5568
  if ( ! empty( $path ) ) {
5569
  if ( 'pdf' == strtolower( pathinfo( $path, PATHINFO_EXTENSION ) ) ) {
5570
- $results['mla_pdf_metadata'] = self::_extract_pdf_metadata( $path );
 
 
5571
  return $results;
5572
  }
5573
 
@@ -5600,7 +5054,7 @@ class MLAData {
5600
  }
5601
  } // foreach $value
5602
  } // ! empty
5603
- }
5604
 
5605
  if ( is_callable( 'exif_read_data' ) && in_array( $size[2], array( IMAGETYPE_JPEG, IMAGETYPE_TIFF_II, IMAGETYPE_TIFF_MM ) ) ) {
5606
  //set_error_handler( 'MLAData::mla_IPTC_EXIF_error_handler' );
@@ -5611,6 +5065,11 @@ class MLAData {
5611
  MLAData::$mla_IPTC_EXIF_errors = array();
5612
  error_log( __( 'ERROR', 'media-library-assistant' ) . ': ' . '$results[mla_exif_errors] = ' . var_export( $results['mla_exif_errors'], true ), 0 );
5613
  }
 
 
 
 
 
5614
  }
5615
  }
5616
 
@@ -5630,19 +5089,19 @@ class MLAData {
5630
  $new_data['FNumber'] = $value;
5631
  }
5632
  } // FNumber
5633
-
5634
  if ( isset( $exif_data['ExposureBiasValue'] ) ) {
5635
  $fragments = array_map( 'intval', explode( '/', $exif_data['ExposureBiasValue'] ) );
5636
  if ( ! is_null( $fragments[1] ) ) {
5637
  $numerator = $fragments[0];
5638
  $denominator = $fragments[1];
5639
-
5640
  // Clean up some common format issues, e.g. 4/6, 2/4
5641
  while ( ( 0 == ( $numerator & 0x1 ) ) && ( 0 == ( $denominator & 0x1 ) ) ) {
5642
  $numerator = ( $numerator >> 1 );
5643
  $denominator = ( $denominator >> 1 );
5644
  }
5645
-
5646
  // Remove excess precision
5647
  if ( ( $denominator > $numerator) && ( 1000 < $numerator ) && ( 1000 < $denominator ) ) {
5648
  $exif_data['ExposureBiasValue'] = sprintf( '%1$+.3f', ( $numerator/$denominator ) );
@@ -5652,12 +5111,12 @@ class MLAData {
5652
  $exif_data['ExposureBiasValue'] = $numerator . '/' . $denominator;
5653
  }
5654
  }
5655
-
5656
  if ( false !== ( $value = self::_rational_to_string( $exif_data['ExposureBiasValue'], '%1$+d', '%1$+d/%2$d', '%1$+.2f' ) ) ) {
5657
  $new_data['ExposureBiasValue'] = $value;
5658
  }
5659
  } // ExposureBiasValue
5660
-
5661
  if ( isset( $exif_data['Flash'] ) ) {
5662
  $value = ( absint( $exif_data['Flash'] ) );
5663
  if ( $value & 0x1 ) {
@@ -5666,19 +5125,19 @@ class MLAData {
5666
  $new_data['Flash'] = __( 'No', 'media-library-assistant' );
5667
  }
5668
  } // Flash
5669
-
5670
  if ( isset( $exif_data['FocalLength'] ) ) {
5671
  if ( false !== ( $value = self::_rational_to_string( $exif_data['FocalLength'], '%1$d', '%1$d/%2$d', '%1$.2f' ) ) ) {
5672
  $new_data['FocalLength'] = $value;
5673
  }
5674
  } // FocalLength
5675
-
5676
  if ( isset( $exif_data['ExposureTime'] ) ) {
5677
  if ( false !== ( $value = self::_rational_to_string( $exif_data['ExposureTime'], '%1$d', '%1$d/%2$d', '%1$.2f' ) ) ) {
5678
  $new_data['ExposureTime'] = $value;
5679
  }
5680
  } // ExposureTime
5681
-
5682
  /*
5683
  * ShutterSpeed in "1/" format, from ExposureTime
5684
  * Special logic for "fractional shutter speed" values 1.3, 1.5, 1.6, 2.5
@@ -5690,7 +5149,7 @@ class MLAData {
5690
  $new_data['ShutterSpeed'] = $new_data['ExposureTime'] = sprintf( '%1$d', $fragments[0] );
5691
  } elseif ( 0 != $fragments[1] ) {
5692
  $value = $fragments[0] / $fragments[1];
5693
- if ( 1 > $value ) {
5694
  // Convert to "1/" value for shutter speed
5695
  if ( 1 == $fragments[0] ) {
5696
  $new_data['ShutterSpeed'] = $new_data['ExposureTime'];
@@ -5712,15 +5171,15 @@ class MLAData {
5712
  if ( isset( $exif_data['UndefinedTag:0xA420'] ) ) {
5713
  $new_data['ImageUniqueID'] = $exif_data['UndefinedTag:0xA420'];
5714
  }
5715
-
5716
  if ( isset( $exif_data['UndefinedTag:0xA430'] ) ) {
5717
  $new_data['CameraOwnerName'] = $exif_data['UndefinedTag:0xA430'];
5718
  }
5719
-
5720
  if ( isset( $exif_data['UndefinedTag:0xA431'] ) ) {
5721
  $new_data['BodySerialNumber'] = $exif_data['UndefinedTag:0xA431'];
5722
  }
5723
-
5724
  if ( isset( $exif_data['UndefinedTag:0xA432'] ) && is_array( $exif_data['UndefinedTag:0xA432'] ) ) {
5725
  $array = $new_data['LensSpecification'] = $exif_data['UndefinedTag:0xA432'];
5726
 
@@ -5729,39 +5188,39 @@ class MLAData {
5729
  $new_data['LensMinFocalLength'] = $value;
5730
  }
5731
  }
5732
-
5733
  if ( isset ( $array[1] ) ) {
5734
  if ( false !== ( $value = self::_rational_to_string( $array[1], '%1$d', '%1$d/%2$d', '%1$.2f' ) ) ) {
5735
  $new_data['LensMaxFocalLength'] = $value;
5736
  }
5737
  }
5738
-
5739
  if ( isset ( $array[2] ) ) {
5740
  if ( false !== ( $value = self::_rational_to_string( $array[2], '%1$d', '%1$d/%2$d', '%1$.1f' ) ) ) {
5741
  $new_data['LensMinFocalLengthFN'] = $value;
5742
  }
5743
  }
5744
-
5745
  if ( isset ( $array[3] ) ) {
5746
  if ( false !== ( $value = self::_rational_to_string( $array[3], '%1$d', '%1$d/%2$d', '%1$.1f' ) ) ) {
5747
  $new_data['LensMaxFocalLengthFN'] = $value;
5748
  }
5749
  }
5750
-
5751
  }
5752
-
5753
  if ( isset( $exif_data['UndefinedTag:0xA433'] ) ) {
5754
  $new_data['LensMake'] = $exif_data['UndefinedTag:0xA433'];
5755
  }
5756
-
5757
  if ( isset( $exif_data['UndefinedTag:0xA434'] ) ) {
5758
  $new_data['LensModel'] = $exif_data['UndefinedTag:0xA434'];
5759
  }
5760
-
5761
  if ( isset( $exif_data['UndefinedTag:0xA435'] ) ) {
5762
  $new_data['LensSerialNumber'] = $exif_data['UndefinedTag:0xA435'];
5763
  }
5764
-
5765
  if ( ! empty( $new_data ) ) {
5766
  $results['mla_exif_metadata']['CAMERA'] = $new_data;
5767
  }
@@ -6224,6 +5683,14 @@ class MLAData {
6224
  $message .= sprintf( __( '%1$s: Could not delete ALT Text, remains "%2$s"', 'media-library-assistant' ) . '<br>', __( 'ERROR', 'media-library-assistant' ), esc_attr( $post_data[ $key ] ) );
6225
  }
6226
  } else {
 
 
 
 
 
 
 
 
6227
  if ( update_post_meta( $post_id, '_wp_attachment_image_alt', $value ) ) {
6228
  /* translators: 1: element name 2: old_value 3: new_value */
6229
  $message .= sprintf( __( 'Changing %1$s from "%2$s" to "%3$s"', 'media-library-assistant' ) . '<br>', __( 'ALT Text', 'media-library-assistant' ), esc_attr( $post_data[ $key ] ), esc_attr( $value ) );
@@ -6339,7 +5806,7 @@ class MLAData {
6339
  $action_name = __( 'Removing', 'media-library-assistant' );
6340
  $tags = self::_remove_terms( $post_id, $tags, $taxonomy_obj );
6341
  $result = wp_set_post_terms( $post_id, $tags, $taxonomy );
6342
-
6343
  if ( empty( $tags ) ) {
6344
  $result = true;
6345
  }
@@ -6347,7 +5814,7 @@ class MLAData {
6347
  case 'replace':
6348
  $action_name = __( 'Replacing', 'media-library-assistant' );
6349
  $result = wp_set_post_terms( $post_id, $tags, $taxonomy );
6350
-
6351
  if ( empty( $tags ) ) {
6352
  $result = true;
6353
  }
@@ -6357,7 +5824,7 @@ class MLAData {
6357
  $result = NULL;
6358
  // ignore anything else
6359
  }
6360
-
6361
  /*
6362
  * Definitive results check would use:
6363
  * do_action( 'set_object_terms', $object_id, $terms, $tt_ids, $taxonomy, $append, $old_tt_ids );
@@ -6429,7 +5896,7 @@ class MLAData {
6429
  private static function _remove_terms( $post_id, $terms, $taxonomy_obj ) {
6430
  $taxonomy = $taxonomy_obj->name;
6431
  $hierarchical = $taxonomy_obj->hierarchical;
6432
-
6433
  /*
6434
  * Get the current terms for the terms_after check
6435
  */
@@ -6438,17 +5905,17 @@ class MLAData {
6438
  $current_terms = wp_get_object_terms( $post_id, $taxonomy );
6439
  wp_cache_add( $post_id, $current_terms, $taxonomy . '_relationships' );
6440
  }
6441
-
6442
  $terms_before = array();
6443
  foreach( $current_terms as $term ) {
6444
  $terms_before[ $term->term_id ] = $term->name;
6445
  }
6446
-
6447
  $terms_after = array();
6448
  if ( $hierarchical ) {
6449
  $terms = array_map( 'intval', $terms );
6450
  $terms = array_unique( $terms );
6451
-
6452
  foreach( $terms_before as $index => $term ) {
6453
  if ( ! in_array( $index, $terms ) ) {
6454
  $terms_after[] = $index;
@@ -6461,7 +5928,7 @@ class MLAData {
6461
  }
6462
  }
6463
  }
6464
-
6465
  return $terms_after;
6466
  }
6467
 
@@ -6477,7 +5944,7 @@ class MLAData {
6477
  *
6478
  * @return string Printable representation of $data
6479
  */
6480
- public static function _hex_dump( $data, $limit = 0, $bytes_per_row = 16, $offset = -1 ) {
6481
  if ( 0 == $limit ) {
6482
  $limit = strlen( $data );
6483
  }
808
  private static function _parse_arguments( $argument_string ) {
809
  $argument_string = trim( $argument_string, " \n\t\r\0\x0B," );
810
  $arguments = array();
811
+
812
  while ( strlen( $argument_string ) ) {
813
  $argument = '';
814
  $index = 0;
815
+
816
  // Check for enclosing quotes
817
  $delimiter = $argument_string[0];
818
  if ( '\'' == $delimiter || '"' == $delimiter ) {
820
  } else {
821
  $delimiter = '';
822
  }
823
+
824
  while ( $index < strlen( $argument_string ) ) {
825
  $byte = $argument_string[ $index++ ];
826
  if ( '\\' == $byte ) {
850
  $digit_index++;
851
  }
852
  }
853
+
854
  if ( $digit_count = $digit_index - $index ) {
855
  $argument .= chr( octdec( substr( $argument_string, $index, $digit_count ) ) );
856
  $index += $digit_count - 1;
858
  $argument .= $argument_string[ $index ];
859
  }
860
  } // switch
861
+
862
  $index++;
863
  } else { // backslash
864
+ if ( $delimiter == $byte || ',' == $byte ) {
865
  break;
866
  }
867
+
868
  $argument .= $byte;
869
  } // just another 8-bit value, but check for closing delimiter
870
  } // index < strlen
872
  $arguments[] = $argument;
873
  $argument_string = trim( substr( $argument_string, $index ), " \n\t\r\0\x0B," );
874
  } // strlen( $argument_string )
875
+
876
  return $arguments;
877
  }
878
 
879
+ /**
880
+ * Apply field-level format options to field-level content
881
+ *
882
+ * @since 2.10
883
+ *
884
+ * @param string field-level content
885
+ * @param array format code and aguments
886
+ *
887
+ * @return string formatted field-level content
888
+ */
889
+ public static function mla_apply_field_level_format( $value, $args ) {
890
+ if ( 'attr' == $args['format'] ) {
891
+ $value = esc_attr( $value );
892
+ } elseif ( 'url' == $args['format'] ) {
893
+ $value = urlencode( $value );
894
+ } elseif ( ( 'commas' == $args['format'] ) && is_numeric( $value ) ) {
895
+ $value = number_format( (float)$value );
896
+ } elseif ( 'timestamp' == $args['format'] && is_numeric( $value ) ) {
897
+ /*
898
+ * date "Returns a string formatted according to the given format string using the given integer"
899
+ */
900
+ $format = empty( $args['args'] ) ? 'd/m/Y H:i:s' : $args['args'];
901
+ $value = date( $format , (integer) $value );
902
+ } elseif ( 'date' == $args['format'] ) {
903
+ /*
904
+ * strtotime will "Parse about any English textual datetime description into a Unix timestamp"
905
+ * If it succeeds we can format the timestamp for display
906
+ */
907
+ $format = empty( $args['args'] ) ? 'd/m/Y H:i:s' : $args['args'];
908
+ $timestamp = strtotime( $value );
909
+ if( false !== $timestamp ) {
910
+ $value = date( $format, $timestamp );
911
+ }
912
+ } elseif ( 'fraction' == $args['format'] ) {
913
+ $show_fractions = true;
914
+ if ( ! empty( $args['args'] ) ) {
915
+ if ( is_array( $args['args'] ) ) {
916
+ if ( is_numeric( $args['args'][0] ) ) {
917
+ $format = '%1$+.' . absint( $args['args'][0] ) . 'f';
918
+ } else {
919
+ $format = $args['args'][0];
920
+ }
921
+
922
+ $show_fractions = ( 'false' !== strtolower( trim( $args['args'][1] ) ) );
923
+ } else {
924
+ if ( is_numeric( $args['args'] ) ) {
925
+ $format = '%1$+.' . absint( $args['args'] ) . 'f';
926
+ } else {
927
+ $format = $args['args'];
928
+ }
929
+ }
930
+ } else {
931
+ $format = '%1$+.2f';
932
+ }
933
+
934
+ $fragments = array_map( 'intval', explode( '/', $value ) );
935
+ if ( 1 == count( $fragments ) ) {
936
+ $value = trim( $value );
937
+ if ( ! empty( $value ) ) {
938
+ $value = $value;
939
+ }
940
+ } else {
941
+ if ( $fragments[0] ) {
942
+ if ( 1 == $fragments[1] ) {
943
+ $value = sprintf( '%1$+d', $fragments[0] );
944
+ } elseif ( 0 != $fragments[1] ) {
945
+ $value = $fragments[0] / $fragments[1];
946
+ if ( $show_fractions && ( -1 <= $value ) && ( 1 >= $value ) ) {
947
+ $value = sprintf( '%1$+d/%2$d', $fragments[0], $fragments[1] );
948
+ } else {
949
+ $value = sprintf( $format, $value );
950
+ }
951
+ } // fractional value
952
+ } // non-zero numerator
953
+ } // valid denominator
954
+ } elseif ( 'substr' == $args['format'] ) {
955
+ $start = 0;
956
+ $length = strlen( $value );
957
+
958
+ if ( ! empty( $args['args'] ) ) {
959
+ if ( is_array( $args['args'] ) ) {
960
+ $start = intval( $args['args'][0] );
961
+
962
+ if ( 1 < count( $args['args'] ) ) {
963
+ $length = intval( $args['args'][1] );
964
+ }
965
+ } else {
966
+ $start = intval( $args['args'] );
967
+ }
968
+ }
969
+
970
+ if ( false === $value = substr( $value, $start, $length ) ) {
971
+ $value = '';
972
+ }
973
+ }
974
+
975
+ return $value;
976
+ }
977
+
978
  /**
979
  * Analyze a template, expanding Field-level Markup Substitution Parameters
980
  *
981
  * Field-level parameters must have one of the following prefix values:
982
+ * template, request, query, custom, terms, meta, iptc, exif, xmp, pdf.
983
  * All but request and query require an attachment ID.
984
  *
985
  * @since 1.50
1174
  $markup_values[ $key ] = $record;
1175
  }
1176
 
1177
+ break;
1178
+ case 'xmp':
1179
+ if ( is_null( $attachment_metadata ) ) {
1180
+ if ( 0 < $post_id ) {
1181
+ $attachment_metadata = self::mla_fetch_attachment_image_metadata( $post_id );
1182
+ } else {
1183
+ break;
1184
+ }
1185
+ }
1186
+
1187
+ $markup_values[ $key ] = self::mla_xmp_metadata_value( $value['value'], $value['option'], $keep_existing, $attachment_metadata['mla_xmp_metadata'] );
1188
  break;
1189
  case 'pdf':
1190
  if ( is_null( $attachment_metadata ) ) {
1211
  'data_source' => $candidate,
1212
  'keep_existing' => false,
1213
  'format' => 'raw',
1214
+ 'option' => $value['option'] ); // single, export, text for array values, e.g., alt_text
1215
 
1216
  $markup_values[ $key ] = MLAOptions::mla_get_data_source( $post_id, 'single_attachment_mapping', $data_value );
1217
  } elseif ( isset( $markup_values[ $value['value'] ] ) ) {
1220
  */
1221
  $markup_values[ $key ] = $markup_values[ $value['value'] ];
1222
  }
1223
+
1224
  break;
1225
  default:
1226
  // ignore anything else
1227
  } // switch
1228
+
1229
  if ( isset( $markup_values[ $key ] ) ) {
1230
+ $markup_values[ $key ] = self::mla_apply_field_level_format( $markup_values[ $key ], $value );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1231
  } // isset( $markup_values[ $key ] )
1232
  } // foreach placeholder
1233
 
1263
  $template_end = strpos( $tpl, '+]', $nest );
1264
  if ( false === $template_end ) {
1265
  /* translators: 1: ERROR tag 2: template excerpt */
1266
+ error_log( sprintf( _x( '%1$s: mla_get_template_placeholders no template-end delimiter dump = "%2$s".', 'error_log', 'media-library-assistant' ), __( 'ERROR', 'media-library-assistant' ), self::mla_hex_dump( substr( $tpl, $template_offset, 128 ), 128, 16 ) ), 0 );
1267
  return array();
1268
  }
1269
 
1305
  $tail = substr( $match, 2);
1306
  }
1307
 
1308
+ $match_count = preg_match( '/([^,]+)(,(text|single|export|array|multi|commas|raw|attr|url|timestamp|date|fraction|substr))(\(([^)]+)\))*\+\]/', $tail, $matches );
1309
  if ( 1 == $match_count ) {
1310
  $result['value'] = $matches[1];
1311
  if ( ! empty( $matches[5] ) ) {
 
 
 
 
 
 
 
 
 
 
 
 
1312
  $args = self::_parse_arguments( $matches[5] );
1313
+
1314
  if ( 1 == count( $args ) ) {
1315
  $args = $args[0];
1316
  }
1342
  $result['option'] = 'text';
1343
  $result['format'] = 'fraction';
1344
  $result['args'] = $args;
1345
+ } elseif ( 'substr' == $matches[3] ) {
1346
+ $result['option'] = 'text';
1347
+ $result['format'] = 'substr';
1348
+ $result['args'] = $args;
1349
  } else {
1350
  $result['option'] = $matches[3];
1351
  }
1580
  */
1581
  $sortable_columns = MLAOptions::mla_custom_field_support( 'custom_sortable_columns' );
1582
  foreach ($sortable_columns as $sort_key => $sort_value ) {
1583
+ if ( $value == $sort_key ) {
1584
+ $orderby = 'c_' . $sort_value[0];
1585
  break;
1586
  }
1587
  } // foreach
1595
  }
1596
  } // foreach
1597
  }
1598
+
1599
  if ( NULL !== $orderby ) {
1600
  $clean_request[ $key ] = $orderby;
1601
  }
1602
  }
1603
+
1604
  break;
1605
  /*
1606
  * ids allows hooks to supply a persistent list of items
1722
  self::$query_parameters = array( 'use_postmeta_view' => false, 'orderby' => $clean_request['orderby'], 'order' => $clean_request['order'] );
1723
  self::$query_parameters['detached'] = isset( $clean_request['detached'] ) ? $clean_request['detached'] : NULL;
1724
  self::$search_parameters = array( 'debug' => 'none' );
1725
+
1726
  /*
1727
  * Matching a meta_value to NULL requires a LEFT JOIN to a view and a special WHERE clause
1728
  * Matching a wildcard pattern requires mainpulating the WHERE clause, too
1783
  self::$query_parameters['postmeta_key'] = '_wp_attachment_image_alt';
1784
  }
1785
 
1786
+ if ( in_array( 'terms', self::$search_parameters['mla_search_fields'] ) ) {
1787
+ self::$search_parameters['mla_search_taxonomies'] = MLAOptions::mla_supported_taxonomies( 'term-search' );
1788
+ }
1789
+
1790
  unset( $clean_request['s'] );
1791
  unset( $clean_request['mla_search_connector'] );
1792
  unset( $clean_request['mla_search_fields'] );
2027
  return trim( $term, "\"'\n\r " );
2028
  }
2029
 
2030
+ /**
2031
+ * Isolates keyword match results to word boundaries
2032
+ *
2033
+ * Eliminates matches such as "man" in "woman".
2034
+ *
2035
+ * @since 2.11
2036
+ *
2037
+ * @param string the quoted phrase (without enclosing quotes)
2038
+ * @param string the entire term
2039
+ *
2040
+ * @return boolean $needle is a word match within $haystack
2041
+ */
2042
+ private static function _match_quoted_phrase( $needle, $haystack ) {
2043
+ $haystack = strtolower( html_entity_decode( $haystack ) );
2044
+ $needle = strtolower( html_entity_decode( $needle ) );
2045
+
2046
+ // Escape the PCRE meta-characters
2047
+ $safe_needle = '';
2048
+ for ( $index = 0; $index < strlen( $needle ); $index++ ) {
2049
+ $chr = $needle[ $index ];
2050
+ if ( false !== strpos( '\\^$.[]()?*+{}/', $chr ) ) {
2051
+ $safe_needle .= '\\';
2052
+ }
2053
+ $safe_needle .= $chr;
2054
+ }
2055
+
2056
+ $pattern = '/^' . $safe_needle . '$|^' . $safe_needle . '\s+|\s+' . $safe_needle . '\s+|\s+' . $safe_needle . '$/';
2057
+ $match_count = preg_match_all($pattern, $haystack, $matches);
2058
+ return 0 < $match_count;
2059
+ }
2060
+
2061
  /**
2062
  * Adds a keyword search to the WHERE clause, if required
2063
  *
2083
  * Process the Terms Search arguments, if present.
2084
  */
2085
  if ( isset( self::$search_parameters['mla_terms_search']['phrases'] ) ) {
2086
+ $terms_search_parameters = self::$search_parameters['mla_terms_search'];
2087
+ $terms = array_map( 'trim', explode( ',', $terms_search_parameters['phrases'] ) );
2088
  if ( 1 < count( $terms ) ) {
2089
  $terms_connector = '(';
2090
  } else {
2092
  }
2093
 
2094
  foreach ( $terms as $term ) {
2095
+ preg_match_all('/".*?("|$)|\'.*?(\'|$)|((?<=[\t ",+])|^)[^\t ",+]+/', $term, $matches);
2096
  $phrases = array_map('MLAData::mla_search_terms_tidy', $matches[0]);
2097
 
2098
+ /*
2099
+ * Find the quoted phrases for a word-boundary check
2100
+ */
2101
+ $quoted = array();
2102
+ foreach ( $phrases as $index => $phrase ) {
2103
+ $quoted[ $index ] = ( '"' == $matches[1][$index] ) || ( "'" == $matches[2][$index] );
2104
+ }
2105
+
2106
  $tax_terms = array();
2107
  $tax_counts = array();
2108
+ foreach ( $phrases as $index => $phrase ) {
2109
+ if ( isset( $terms_search_parameters['exact'] ) ) {
2110
+ $the_terms = array();
2111
+ foreach( $terms_search_parameters['taxonomies'] as $taxonomy ) {
2112
+ $the_term = get_term_by( 'name', $phrase, $taxonomy );
2113
+ if ( false !== $the_term ) {
2114
+ $the_terms[] = $the_term;
2115
+ }
2116
+ }
2117
+ } else {
2118
+ $the_terms = get_terms( $terms_search_parameters['taxonomies'], array( 'name__like' => $phrase, 'fields' => 'all', 'hide_empty' => false ) );
2119
+ if ( $quoted[ $index ] ) {
2120
+ foreach ( $the_terms as $term_index => $the_term ) {
2121
+ if ( ! self::_match_quoted_phrase( $phrase, $the_term->name ) ) {
2122
+ unset( $the_terms[ $term_index ]);
2123
+ }
2124
+ }
2125
+ } // quoted phrase
2126
+ } // not exact
2127
+
2128
  foreach( $the_terms as $the_term ) {
2129
  $tax_terms[ $the_term->taxonomy ][ $the_term->term_id ] = (integer) $the_term->term_taxonomy_id;
2130
 
2139
  /*
2140
  * For the AND connector, a taxonomy term must have all of the search terms within it
2141
  */
2142
+ if ( 'AND' == $terms_search_parameters['radio_phrases'] ) {
2143
  $search_term_count = count( $phrases );
2144
  foreach ($tax_terms as $taxonomy => $term_ids ) {
2145
  foreach ( $term_ids as $term_id => $term_taxonomy_id ) {
2161
 
2162
  $tax_clause .= $terms_connector;
2163
  foreach( $tax_terms as $tax_term ) {
2164
+ if ( 'AND' == $terms_search_parameters['radio_terms'] ) {
2165
+ $prefix = 'mlatt' . $tax_index++;
2166
+ } else {
2167
+ $prefix = 'mlatt0';
2168
+ $tax_index = 1; // only one JOIN needed for the "Any Term" case
2169
+ }
2170
+
2171
  $tax_clause .= sprintf( '%1$s %2$s.term_taxonomy_id IN (%3$s)', $inner_connector, $prefix, implode( ',', $tax_term ) );
2172
  $inner_connector = ' OR';
2173
  } // foreach tax_term
2174
 
2175
+ $terms_connector = ' ) ' . $terms_search_parameters['radio_terms'] . ' (';
2176
  } // tax_terms present
2177
  } // foreach term
2178
 
2258
  if ( in_array( 'name', $fields ) ) {
2259
  $inner_clause .= "{$inner_connector}({$wpdb->posts}.post_name LIKE {$sql_term})";
2260
  }
2261
+
2262
  $inner_clause = apply_filters( 'mla_list_table_search_filter_inner_clause', $inner_clause, $inner_connector, $wpdb->posts, $sql_term );
2263
 
2264
  if ( ! empty($inner_clause) ) {
2487
  /**
2488
  * Adds a GROUPBY clause, if required
2489
  *
2490
+ * Taxonomy text queries and postmeta queries can return multiple results for the same ID.
2491
  * Defined as public because it's a filter.
2492
  *
2493
  * @since 1.90
2499
  public static function mla_query_posts_groupby_filter( $groupby_clause ) {
2500
  global $wpdb;
2501
 
2502
+ if ( ( isset( self::$query_parameters['use_postmeta_view'] ) && self::$query_parameters['use_postmeta_view'] ) || isset( self::$search_parameters['tax_terms_count'] ) ) {
2503
  $groupby_clause = "{$wpdb->posts}.ID";
2504
  }
2505
 
2841
  $key_array = explode( '.', $needle );
2842
  if ( is_array( $key_array ) ) {
2843
  foreach ( $key_array as $key ) {
2844
+ /*
2845
+ * The '*' key means:
2846
+ * 1) needle.* => accept any value, or
2847
+ * 2) needle.*.tail => search each sub-array using "tail"
2848
+ * and build an array of results.
2849
+ */
2850
+ if ( '*' == $key ) {
2851
+ if ( false !== ( $tail = strpos( $needle, '*.' ) ) ) {
2852
+ $tail = substr( $needle, $tail + 2 );
2853
+ if ( ! empty( $tail ) ) {
2854
+ if ( is_array( $haystack ) ) {
2855
+ $results = array();
2856
+ foreach ( $haystack as $substack ) {
2857
+ $results[] = self::mla_find_array_element( $tail, $substack, $option, $keep_existing );
2858
+ }
2859
+
2860
+ if ( 1 == count( $results ) ) {
2861
+ $haystack = $results[0];
2862
+ } else {
2863
+ $haystack = $results;
2864
+ }
2865
+ } else {
2866
+ $haystack = '';
2867
+ }
2868
+ } // found tail
2869
+ } // found .*.
2870
+
2871
+ break;
2872
+ } else {
2873
+ if ( is_array( $haystack ) ) {
2874
+ if ( isset( $haystack[ $key ] ) ) {
2875
+ $haystack = $haystack[ $key ];
2876
+ } else {
2877
+ $haystack = '';
2878
+ }
2879
  } else {
2880
+ $haystack = '';
2881
  }
2882
+ } // * != key
 
 
2883
  } // foreach $key
2884
  } else {
2885
  $haystack = '';
2901
  return $haystack;
2902
  break;
2903
  default:
2904
+ $haystack = @implode( ', ', $haystack );
2905
  } // $option
2906
  }
2907
 
3016
  $save_id = -1;
3017
  return NULL;
3018
  }
3019
+
3020
  /*
3021
  * inserted_option 'enabled', 'base' or 'disabled'
3022
  * tested_reference true if any of the four where-used types was processed
3066
  if ( ! $add_references ) {
3067
  return $references;
3068
  }
3069
+
3070
  /*
3071
  * Fill in Parent data
3072
  */
3101
  $references['files'][ $references['path'] . $size_info['file'] ] = $size_info;
3102
  }
3103
  }
3104
+
3105
  $base_type = wp_check_filetype( $references['file'] );
3106
  $base_reference = array(
3107
  'file' => $references['file'],
3110
  'mime_type' => isset( $base_type['type'] ) ? $base_type['type'] : 'unknown',
3111
  'size' => 'full',
3112
  );
3113
+
3114
  $references['files'][ $references['base_file'] ] = $base_reference;
3115
 
3116
  /*
3173
  $inserted_in_option = MLAOptions::mla_get_option( MLAOptions::MLA_INSERTED_IN_TUNING );
3174
  $references['inserted_option'] = $inserted_in_option;
3175
  }
3176
+
3177
  $wp_4dot0_plus = version_compare( get_bloginfo('version'), '4.0', '>=' );
3178
  if ( 'base' == $inserted_in_option ) {
3179
  $query_parameters = array();
3186
  if ( empty( $file ) ) {
3187
  continue;
3188
  }
3189
+
3190
  $query[] = 'OR ( POST_CONTENT LIKE %s)';
3191
+
3192
  if ( $wp_4dot0_plus ) {
3193
  $query_parameters[] = '%' . $wpdb->esc_like( $file ) . '%';
3194
  } else {
3219
  if ( empty( $file ) ) {
3220
  continue;
3221
  }
3222
+
3223
  if ( $wp_4dot0_plus ) {
3224
  $like = $wpdb->esc_like( $file );
3225
  } else {
3226
  $like = like_escape( $file );
3227
  }
3228
+
3229
  $inserts = $wpdb->get_results(
3230
  $wpdb->prepare(
3231
  "SELECT ID, post_type, post_status, post_title FROM {$wpdb->posts}
3375
 
3376
  return;
3377
  }
3378
+
3379
  /*
3380
  * Collect the raw data for where-used analysis
3381
  */
3389
  } else {
3390
  $references['base_file'] = '';
3391
  }
3392
+
3393
  $pathinfo = pathinfo($references['base_file']);
3394
  if ( ( ! isset( $pathinfo['dirname'] ) ) || '.' == $pathinfo['dirname'] ) {
3395
  $references['path'] = '/';
3398
  }
3399
 
3400
  $references['file'] = $pathinfo['basename'];
3401
+
3402
  if ( isset( $attachment->mla_wp_attachment_metadata ) ) {
3403
  $attachment_metadata = $attachment->mla_wp_attachment_metadata;
3404
  } else {
3405
  $attachment_metadata = '';
3406
  }
3407
+
3408
  $sizes = isset( $attachment_metadata['sizes'] ) ? $attachment_metadata['sizes'] : NULL;
3409
  if ( ! empty( $sizes ) && is_array( $sizes ) ) {
3410
  /* Using the path and name as the array key ensures each name is added only once */
3413
  $references['files'][ $references['path'] . $size_info['file'] ] = $size_info;
3414
  }
3415
  }
3416
+
3417
  if ( ! empty( $references['base_file'] ) ) {
3418
  $base_type = wp_check_filetype( $references['file'] );
3419
  $base_reference = array(
3423
  'mime_type' => ( isset( $base_type['type'] ) && false !== $base_type['type'] ) ? $base_type['type'] : 'unknown',
3424
  'size' => 'full',
3425
  );
3426
+
3427
  $references['files'][ $references['base_file'] ] = $base_reference;
3428
  }
3429
+
3430
  $files[ $index ] = $references;
3431
  }
3432
 
3435
  } else {
3436
  $exclude_revisions = '';
3437
  }
3438
+
3439
  $features = array();
3440
  if ( MLAOptions::$process_featured_in && ! empty( $attachment_ids ) ) {
3441
  $attachment_ids = implode( ',', $attachment_ids );
3447
  AND ( m.meta_value IN ( {$attachment_ids} ) ){$exclude_revisions}
3448
  "
3449
  );
3450
+
3451
  foreach ( $results as $result ) {
3452
  $features[ $result->meta_value ][ $result->ID ] = (object) array( 'ID' => $result->ID, 'post_title' => $result->post_title, 'post_type' => $result->post_type, 'post_status' => $result->post_status );
3453
  }
3519
 
3520
  foreach ( $attachments as $attachment_index => $attachment ) {
3521
  $references = array_merge( $initial_references, $files[ $attachment_index ] );
3522
+
3523
  /*
3524
  * Fill in Parent data
3525
  */
3527
  $references['is_unattached'] = true;
3528
  } else {
3529
  $references['is_unattached'] = false;
3530
+
3531
  if ( isset( $attachment->parent_type ) ) {
3532
  $references['parent_type'] = $attachment->parent_type;
3533
  }
3534
+
3535
  if ( isset( $attachment->parent_status ) ) {
3536
  $references['parent_status'] = $attachment->parent_status;
3537
  }
3538
+
3539
  if ( isset( $attachment->parent_title ) ) {
3540
  $references['parent_title'] = $attachment->parent_title;
3541
  }
3545
  * Accumulate reference test types, e.g., 0 = no tests, 4 = all tests
3546
  */
3547
  $reference_tests = 0;
3548
+
3549
  /*
3550
  * Look for the "Featured Image(s)", if enabled
3551
  */
3555
  foreach ( $features[ $attachment->ID ] as $id => $feature ) {
3556
  $references['found_reference'] = true;
3557
  $references['features'][ $id ] = $feature;
3558
+
3559
  if ( $id == $attachment->post_parent ) {
3560
  $references['found_parent'] = true;
3561
  }
3562
  } // foreach $feature
3563
  }
3564
  } // $process_featured_in
3565
+
3566
  /*
3567
  * Look for item(s) inserted in post_content
3568
  */
3574
  foreach( $inserts[ $attachment_index ] as $insert ) {
3575
  $ref_insert = clone $insert;
3576
  unset( $ref_insert->file_name );
3577
+
3578
  if ( 'base' == $inserted_in_option ) {
3579
  $ref_key = pathinfo( $references['base_file'], PATHINFO_FILENAME );
3580
  } else {
3581
  $ref_key = $insert->file_name;
3582
  }
3583
+
3584
  $references['inserts'][ $ref_key ][ $insert->ID ] = $ref_insert;
3585
  if ( $insert->ID == $attachment->post_parent ) {
3586
  $references['found_parent'] = true;
3590
  $references['inserts'] = array();
3591
  }
3592
  } // $process_inserted_in
3593
+
3594
  /*
3595
  * Look for [mla_gallery] references
3596
  */
3601
  if ( ! empty( $galleries ) ) {
3602
  $references['found_reference'] = true;
3603
  $references['mla_galleries'] = $galleries;
3604
+
3605
  foreach ( $galleries as $post_id => $gallery ) {
3606
  if ( $post_id == $attachment->post_parent ) {
3607
  $references['found_parent'] = true;
3612
  }
3613
  }
3614
  } // $process_mla_gallery_in
3615
+
3616
  /*
3617
  * Look for [gallery] references
3618
  */
3623
  if ( ! empty( $galleries ) ) {
3624
  $references['found_reference'] = true;
3625
  $references['galleries'] = $galleries;
3626
+
3627
  foreach ( $galleries as $post_id => $gallery ) {
3628
  if ( $post_id == $attachment->post_parent ) {
3629
  $references['found_parent'] = true;
3634
  }
3635
  }
3636
  } // $process_gallery_in
3637
+
3638
  /*
3639
  * Evaluate and summarize reference tests
3640
  */
3645
  } else {
3646
  $references['tested_reference'] = true;
3647
  $suffix = ( 4 == $reference_tests ) ? '' : '?';
3648
+
3649
  if ( !$references['found_reference'] ) {
3650
  $errors .= '(' . sprintf( __( 'ORPHAN', 'media-library-assistant' ) . '%1$s) ', $suffix );
3651
  }
3652
+
3653
  if ( !$references['found_parent'] && ! empty( $references['parent_title'] ) ) {
3654
  $errors .= '(' . sprintf( __( 'UNUSED', 'media-library-assistant' ) . '%1$s) ', $suffix );
3655
  }
3656
  }
3657
+
3658
  if ( $references['is_unattached'] ) {
3659
  $errors .= '(' . __( 'UNATTACHED', 'media-library-assistant' ) . ')';
3660
  } elseif ( empty( $references['parent_title'] ) ) {
3661
  $errors .= '(' . __( 'INVALID PARENT', 'media-library-assistant' ) . ')';
3662
  }
3663
+
3664
  $references['parent_errors'] = trim( $errors );
3665
  $attachments[ $attachment_index ]->mla_references = apply_filters( 'mla_fetch_attachment_references', $references, $attachment->ID, (int) $attachment->post_parent );
3666
  } // foreach $attachment
3795
  } else {
3796
  $like = like_escape( $shortcode );
3797
  }
3798
+
3799
  $results = $wpdb->get_results(
3800
  $wpdb->prepare(
3801
  "
3886
  }
3887
 
3888
  /**
3889
+ * Parse a PDF date string
 
 
 
 
 
 
 
 
 
 
 
 
 
3890
  *
 
3891
  * @since 1.50
3892
  *
3893
+ * @param string PDF date string of the form D:YYYYMMDDHHmmSSOHH'mm
3894
+ *
3895
+ * @return string formatted date string YYYY-MM-DD HH:mm:SS
 
 
 
3896
  */
3897
+ public static function mla_parse_pdf_date( $source_string ) {
3898
+ if ( 'D:' == substr( $source_string, 0, 2) && ctype_digit( substr( $source_string, 2, 12 ) ) ) {
3899
+ return sprintf( '%1$s-%2$s-%3$s %4$s:%5$s:%6$s',
3900
+ substr( $source_string, 2, 4),
3901
+ substr( $source_string, 6, 2),
3902
+ substr( $source_string, 8, 2),
3903
+ substr( $source_string, 10, 2),
3904
+ substr( $source_string, 12, 2),
3905
+ substr( $source_string, 14, 2) );
 
 
 
 
 
 
 
 
 
3906
  }
3907
+
3908
+ return $source_string;
3909
  }
3910
 
3911
  /**
3912
+ * Parse a ISO 8601 Timestamp
3913
  *
 
3914
  * @since 1.50
3915
  *
3916
+ * @param string ISO string of the form YYYY-MM-DDTHH:MM:SS-HH:MM (inc time zone)
3917
+ *
3918
+ * @return string formatted date string YYYY-MM-DD HH:mm:SS
 
3919
  */
3920
+ private static function _parse_iso8601_date( $source_string ) {
3921
+ if ( 1 == preg_match( '/^\\d\\d\\d\\d-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(Z|[+-]\\d\\d:\\d\\d)/', $source_string ) ) {
3922
+ return sprintf( '%1$s-%2$s-%3$s %4$s:%5$s:%6$s',
3923
+ substr( $source_string, 0, 4),
3924
+ substr( $source_string, 5, 2),
3925
+ substr( $source_string, 8, 2),
3926
+ substr( $source_string, 11, 2),
3927
+ substr( $source_string, 14, 2),
3928
+ substr( $source_string, 17, 2) );
3929
+ }
 
 
 
 
 
 
 
 
3930
 
3931
+ return $source_string;
3932
  }
3933
 
3934
  /**
3935
+ * Parse an XMP array value, stripping namespace prefixes and Seq/Alt/Bag arrays
3936
  *
3937
+ * @since 2.10
 
3938
  *
3939
+ * @param array XMP multi-valued element
3940
+ *
3941
+ * @return mixed Simplified array or string value
 
 
3942
  */
3943
+ private static function _parse_xmp_array( $values ) {
3944
+ if ( is_scalar( $values ) ) {
3945
+ return $values;
 
 
 
 
 
 
 
 
3946
  }
3947
+
3948
+ if ( isset( $values['rdf:Alt'] ) ) {
3949
+ return self::_parse_xmp_array( $values['rdf:Alt'] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3950
  }
3951
 
3952
+ if ( isset( $values['rdf:Bag'] ) ) {
3953
+ return self::_parse_xmp_array( $values['rdf:Bag'] );
3954
  }
3955
 
3956
+ if ( isset( $values['rdf:Seq'] ) ) {
3957
+ return self::_parse_xmp_array( $values['rdf:Seq'] );
 
 
 
 
 
 
 
 
 
3958
  }
3959
 
3960
+ $results = array();
3961
+ foreach( $values as $key => $value ) {
3962
+ if ( false !== ($colon = strpos( $key, ':' ) ) ) {
3963
+ $new_key = substr( $key, $colon + 1 );
3964
+ } else {
3965
+ $new_key = $key;
3966
+ }
 
 
3967
 
3968
+ if ( is_array( $value ) ) {
3969
+ $results[ $new_key ] = self::_parse_xmp_array( $value );
3970
  } else {
3971
+ $results[ $new_key ] = self::_parse_iso8601_date( $value );
3972
  }
3973
  }
3974
 
3975
+ return $results;
3976
  }
3977
 
3978
  /**
3979
+ * Extract XMP meta data from a file
3980
  *
3981
+ * @since 2.10
 
3982
  *
3983
+ * @param string full path and file name
3984
+ * @param integer offset within the file of the search start point
3985
  *
3986
+ * @return mixed array of metadata values or NULL on failure
3987
  */
3988
+ public static function mla_parse_xmp_metadata( $file_name, $file_offset ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3989
  $chunksize = 16384;
3990
  $xmp_chunk = file_get_contents( $file_name, true, NULL, $file_offset, $chunksize );
3991
 
4030
  $xml_parser = xml_parser_create('UTF-8');
4031
  if ( xml_parser_set_option( $xml_parser, XML_OPTION_SKIP_WHITE, 0 ) && xml_parser_set_option( $xml_parser, XML_OPTION_CASE_FOLDING, 0 ) ) {
4032
  if (xml_parse_into_struct( $xml_parser, $xmp_string, $xmp_values ) == 0) {
4033
+ error_log( __( 'ERROR', 'media-library-assistant' ) . ': ' . _x( 'mla_parse_xmp_metadata xml_parse_into_struct failed.', 'error_log', 'media-library-assistant' ), 0 );
4034
  }
4035
  } else {
4036
+ error_log( __( 'ERROR', 'media-library-assistant' ) . ': ' . _x( 'mla_parse_xmp_metadata set option failed.', 'error_log', 'media-library-assistant' ), 0 );
4037
  }
4038
 
4039
  xml_parser_free($xml_parser);
4042
  return NULL;
4043
  }
4044
 
4045
+ $levels = array();
4046
+ $current_level = 0;
4047
  $results = array();
4048
  $xmlns = array();
 
 
4049
  foreach ( $xmp_values as $value ) {
4050
  $language = 'x-default';
4051
+ $node_attributes = array();
4052
  if ( isset( $value['attributes'] ) ) {
4053
  foreach ( $value['attributes'] as $att_tag => $att_value ) {
4054
+ $att_value = self::_bin_to_utf8( $att_value );
4055
+
4056
  if ( 'xmlns:' == substr( $att_tag, 0, 6 ) ) {
4057
  $xmlns[ substr( $att_tag, 6 ) ] = $att_value;
4058
  } elseif ( 'x:xmptk' == $att_tag ) {
4059
  $results['xmptk'] = $att_value;
4060
  } elseif ( 'xml:lang' == $att_tag ) {
4061
  $language = $att_value;
4062
+ } else {
4063
+ $key = explode( ':', $att_tag );
4064
+ switch ( count( $key ) ) {
4065
+ case 1:
4066
+ $att_ns = 'unknown';
4067
+ $att_name = $key[0];
4068
+ break;
4069
+ case 2:
4070
+ $att_ns = $key[0];
4071
+ $att_name = $key[1];
4072
+ break;
4073
+ default:
4074
+ $att_ns = array_shift( $key );
4075
+ $att_name = implode( ':', $key );
4076
+ break;
4077
+ } // count
4078
+
4079
+ if ( ! in_array( $att_tag, array( 'rdf:about', 'rdf:parseType' ) ) ) {
4080
+ $node_attributes[ $att_tag ] = $att_value;
4081
+ }
4082
  }
4083
  }
4084
  } // attributes
4085
 
4086
+ switch ( $value['type'] ) {
4087
+ case 'open':
4088
+ $levels[ ++$current_level ] = array( 'key' => $value['tag'], 'values' => $node_attributes );
 
 
 
4089
  break;
4090
+ case 'close':
4091
+ if ( 0 < --$current_level ) {
4092
+ $top_level = array_pop( $levels );
4093
+ if ( 'rdf:li' == $top_level['key'] ) {
4094
+ $levels[ $current_level ]['values'][] = $top_level['values'];
4095
+ } else {
4096
+ $levels[ $current_level ]['values'][ $top_level['key'] ] = $top_level['values'];
4097
  }
4098
+ }
4099
+ break;
4100
+ case 'complete':
4101
+ if ( 'x-default' != $language ) {
4102
+ break;
4103
+ }
4104
 
4105
+ $complete_value = NULL;
4106
+ if ( isset( $value['attributes'] ) ) {
4107
+ unset( $value['attributes']['xml:lang'] );
4108
+
4109
+ if ( ! empty( $value['attributes'] ) ) {
4110
+ $complete_value = array();
4111
+ foreach ( $value['attributes'] as $attr_key => $attr_value ) {
4112
+ $complete_value[ $attr_key ] = self::_bin_to_utf8( $attr_value );
4113
  }
4114
  }
4115
+ }
4116
 
4117
+ if ( empty( $complete_value ) ) {
4118
+ if ( isset( $value['value'] ) ) {
4119
+ $complete_value = self::_bin_to_utf8( $value['value'] );
4120
+ } else {
4121
+ $complete_value = '';
4122
+ }
 
 
 
 
4123
  }
4124
 
4125
+ if ( 'rdf:li' == $value['tag'] ) {
4126
+ $levels[ $current_level ]['values'][] = $complete_value;
4127
+ } else {
4128
+ $levels[ $current_level ]['values'][ $value['tag'] ] = $complete_value;
4129
+ }
4130
+ } // switch on type
 
 
 
 
 
 
 
 
 
 
 
 
 
4131
  } // foreach value
4132
 
4133
  /*
4137
  * code name for XMP; the names have been preserved for compatibility purposes.
4138
  */
4139
  $namespace_arrays = array();
4140
+ foreach ( $levels[1]['values']['rdf:RDF']['rdf:Description'] as $key => $value ) {
4141
  if ( is_string( $value ) ) {
4142
+ $value = self::_parse_iso8601_date( self::mla_parse_pdf_date( $value ) );
4143
+ } elseif ( is_array( $value ) ) {
4144
+ $value = self::_parse_xmp_array( $value );
4145
  }
4146
 
4147
  if ( false !== ($colon = strpos( $key, ':' ) ) ) {
4149
  $array_index = substr( $key, $colon + 1 );
4150
  $namespace_arrays[ $array_name ][ $array_index ] = $value;
4151
 
4152
+ if ( ! isset( $results[ $array_index ] ) && in_array( $array_name, array( 'xmp', 'xmpMM', 'xmpRights', 'xap', 'xapMM', 'dc', 'pdf', 'pdfx', 'mwg-rs' ) ) ) {
4153
  if ( is_array( $value ) && 1 == count( $value ) && isset( $value[0] ) ) {
4154
  $results[ $array_index ] = $value[0];
4155
  } else {
4156
  $results[ $array_index ] = $value;
4157
  }
4158
  }
4159
+ } // found namespace
 
 
4160
  }
4161
 
4162
  /*
4279
  return $results;
4280
  }
4281
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4282
  /**
4283
  * UTF-8 replacements for invalid SQL characters
4284
  *
4286
  *
4287
  * @var array
4288
  */
4289
+ public static $utf8_chars = array(
4290
  "\xC2\x80", "\xC2\x81", "\xC2\x82", "\xC2\x83", "\xC2\x84", "\xC2\x85", "\xC2\x86", "\xC2\x87",
4291
  "\xC2\x88", "\xC2\x89", "\xC2\x8A", "\xC2\x8B", "\xC2\x8C", "\xC2\x8D", "\xC2\x8E", "\xC2\x8F",
4292
  "\xC2\x90", "\xC2\x91", "\xC2\x92", "\xC2\x93", "\xC2\x94", "\xC2\x95", "\xC2\x96", "\xC2\x97",
4708
  * @since 1.41
4709
  *
4710
  * @param string field name - IPTC Identifier or friendly name/slug
4711
+ * @param string metadata array containing iptc, exif, xmp and pdf metadata arrays
4712
  *
4713
  * @return mixed string/array representation of metadata value or an empty string
4714
  */
4756
  * @since 1.13
4757
  *
4758
  * @param string field name
4759
+ * @param string metadata array containing iptc, exif, xmp and pdf metadata arrays
4760
  *
4761
  * @return mixed string/array representation of metadata value or an empty string
4762
  */
4809
  return $text;
4810
  }
4811
 
4812
+ /**
4813
+ * Parse one XMP metadata field
4814
+ *
4815
+ * Also handles the special pseudo-value 'ALL_XMP'.
4816
+ *
4817
+ * @since 2.10
4818
+ *
4819
+ * @param string field name
4820
+ * @param string data option 'text'|'single'|'export'|'array'|'multi'
4821
+ * @param boolean Optional: for option 'multi', retain existing values
4822
+ * @param string XMP metadata array
4823
+ *
4824
+ * @return mixed string/array representation of metadata value or an empty string
4825
+ */
4826
+ public static function mla_xmp_metadata_value( $xmp_key, $option, $keep_existing, $xmp_metadata ) {
4827
+ if ( 'ALL_XMP' == $xmp_key ) {
4828
+ $clean_data = array();
4829
+ foreach ( $xmp_metadata as $key => $value ) {
4830
+ if ( is_array( $value ) ) {
4831
+ $clean_data[ $key ] = '(ARRAY)';
4832
+ } elseif ( is_string( $value ) ) {
4833
+ $clean_data[ $key ] = self::_bin_to_utf8( substr( $value, 0, 256 ) );
4834
+ } else {
4835
+ $clean_data[ $key ] = $value;
4836
+ }
4837
+ }
4838
+
4839
+ $text = var_export( $clean_data, true);
4840
+ } else {
4841
+ $text = self::mla_find_array_element($xmp_key, $xmp_metadata, $option, $keep_existing );
4842
+ }
4843
+
4844
+ return $text;
4845
+ }
4846
+
4847
  /**
4848
  * Parse one PDF metadata field
4849
  *
4852
  * @since 1.50
4853
  *
4854
  * @param string field name
4855
+ * @param string metadata array containing iptc, exif, xmp and pdf metadata arrays
4856
  *
4857
  * @return mixed string/array representation of metadata value or an empty string
4858
  */
4940
  } // fractional or mixed value
4941
  } // non-zero numerator
4942
  } // valid denominator
4943
+
4944
  return false;
4945
  }
4946
 
4995
  }
4996
 
4997
  /**
4998
+ * Fetch and filter IPTC and EXIF, XMP or PDF metadata for an image attachment
4999
  *
5000
  * @since 0.90
5001
  *
5009
  'post_id' => $post_id,
5010
  'mla_iptc_metadata' => array(),
5011
  'mla_exif_metadata' => array(),
5012
+ 'mla_xmp_metadata' => array(),
5013
  'mla_pdf_metadata' => array()
5014
  );
5015
 
5019
 
5020
  if ( ! empty( $path ) ) {
5021
  if ( 'pdf' == strtolower( pathinfo( $path, PATHINFO_EXTENSION ) ) ) {
5022
+ $pdf_metadata = MLAPDF::mla_extract_pdf_metadata( $path );
5023
+ $results['mla_xmp_metadata'] = $pdf_metadata['xmp'];
5024
+ $results['mla_pdf_metadata'] = $pdf_metadata['pdf'];
5025
  return $results;
5026
  }
5027
 
5054
  }
5055
  } // foreach $value
5056
  } // ! empty
5057
+ } // iptcparse
5058
 
5059
  if ( is_callable( 'exif_read_data' ) && in_array( $size[2], array( IMAGETYPE_JPEG, IMAGETYPE_TIFF_II, IMAGETYPE_TIFF_MM ) ) ) {
5060
  //set_error_handler( 'MLAData::mla_IPTC_EXIF_error_handler' );
5065
  MLAData::$mla_IPTC_EXIF_errors = array();
5066
  error_log( __( 'ERROR', 'media-library-assistant' ) . ': ' . '$results[mla_exif_errors] = ' . var_export( $results['mla_exif_errors'], true ), 0 );
5067
  }
5068
+ } // exif_read_data
5069
+
5070
+ $results['mla_xmp_metadata'] = self::mla_parse_xmp_metadata( $path, 0 );
5071
+ if ( NULL == $results['mla_xmp_metadata'] ) {
5072
+ $results['mla_xmp_metadata'] = array();
5073
  }
5074
  }
5075
 
5089
  $new_data['FNumber'] = $value;
5090
  }
5091
  } // FNumber
5092
+
5093
  if ( isset( $exif_data['ExposureBiasValue'] ) ) {
5094
  $fragments = array_map( 'intval', explode( '/', $exif_data['ExposureBiasValue'] ) );
5095
  if ( ! is_null( $fragments[1] ) ) {
5096
  $numerator = $fragments[0];
5097
  $denominator = $fragments[1];
5098
+
5099
  // Clean up some common format issues, e.g. 4/6, 2/4
5100
  while ( ( 0 == ( $numerator & 0x1 ) ) && ( 0 == ( $denominator & 0x1 ) ) ) {
5101
  $numerator = ( $numerator >> 1 );
5102
  $denominator = ( $denominator >> 1 );
5103
  }
5104
+
5105
  // Remove excess precision
5106
  if ( ( $denominator > $numerator) && ( 1000 < $numerator ) && ( 1000 < $denominator ) ) {
5107
  $exif_data['ExposureBiasValue'] = sprintf( '%1$+.3f', ( $numerator/$denominator ) );
5111
  $exif_data['ExposureBiasValue'] = $numerator . '/' . $denominator;
5112
  }
5113
  }
5114
+
5115
  if ( false !== ( $value = self::_rational_to_string( $exif_data['ExposureBiasValue'], '%1$+d', '%1$+d/%2$d', '%1$+.2f' ) ) ) {
5116
  $new_data['ExposureBiasValue'] = $value;
5117
  }
5118
  } // ExposureBiasValue
5119
+
5120
  if ( isset( $exif_data['Flash'] ) ) {
5121
  $value = ( absint( $exif_data['Flash'] ) );
5122
  if ( $value & 0x1 ) {
5125
  $new_data['Flash'] = __( 'No', 'media-library-assistant' );
5126
  }
5127
  } // Flash
5128
+
5129
  if ( isset( $exif_data['FocalLength'] ) ) {
5130
  if ( false !== ( $value = self::_rational_to_string( $exif_data['FocalLength'], '%1$d', '%1$d/%2$d', '%1$.2f' ) ) ) {
5131
  $new_data['FocalLength'] = $value;
5132
  }
5133
  } // FocalLength
5134
+
5135
  if ( isset( $exif_data['ExposureTime'] ) ) {
5136
  if ( false !== ( $value = self::_rational_to_string( $exif_data['ExposureTime'], '%1$d', '%1$d/%2$d', '%1$.2f' ) ) ) {
5137
  $new_data['ExposureTime'] = $value;
5138
  }
5139
  } // ExposureTime
5140
+
5141
  /*
5142
  * ShutterSpeed in "1/" format, from ExposureTime
5143
  * Special logic for "fractional shutter speed" values 1.3, 1.5, 1.6, 2.5
5149
  $new_data['ShutterSpeed'] = $new_data['ExposureTime'] = sprintf( '%1$d', $fragments[0] );
5150
  } elseif ( 0 != $fragments[1] ) {
5151
  $value = $fragments[0] / $fragments[1];
5152
+ if ( ( 0 < $value ) && ( 1 > $value ) ) {
5153
  // Convert to "1/" value for shutter speed
5154
  if ( 1 == $fragments[0] ) {
5155
  $new_data['ShutterSpeed'] = $new_data['ExposureTime'];
5171
  if ( isset( $exif_data['UndefinedTag:0xA420'] ) ) {
5172
  $new_data['ImageUniqueID'] = $exif_data['UndefinedTag:0xA420'];
5173
  }
5174
+
5175
  if ( isset( $exif_data['UndefinedTag:0xA430'] ) ) {
5176
  $new_data['CameraOwnerName'] = $exif_data['UndefinedTag:0xA430'];
5177
  }
5178
+
5179
  if ( isset( $exif_data['UndefinedTag:0xA431'] ) ) {
5180
  $new_data['BodySerialNumber'] = $exif_data['UndefinedTag:0xA431'];
5181
  }
5182
+
5183
  if ( isset( $exif_data['UndefinedTag:0xA432'] ) && is_array( $exif_data['UndefinedTag:0xA432'] ) ) {
5184
  $array = $new_data['LensSpecification'] = $exif_data['UndefinedTag:0xA432'];
5185
 
5188
  $new_data['LensMinFocalLength'] = $value;
5189
  }
5190
  }
5191
+
5192
  if ( isset ( $array[1] ) ) {
5193
  if ( false !== ( $value = self::_rational_to_string( $array[1], '%1$d', '%1$d/%2$d', '%1$.2f' ) ) ) {
5194
  $new_data['LensMaxFocalLength'] = $value;
5195
  }
5196
  }
5197
+
5198
  if ( isset ( $array[2] ) ) {
5199
  if ( false !== ( $value = self::_rational_to_string( $array[2], '%1$d', '%1$d/%2$d', '%1$.1f' ) ) ) {
5200
  $new_data['LensMinFocalLengthFN'] = $value;
5201
  }
5202
  }
5203
+
5204
  if ( isset ( $array[3] ) ) {
5205
  if ( false !== ( $value = self::_rational_to_string( $array[3], '%1$d', '%1$d/%2$d', '%1$.1f' ) ) ) {
5206
  $new_data['LensMaxFocalLengthFN'] = $value;
5207
  }
5208
  }
5209
+
5210
  }
5211
+
5212
  if ( isset( $exif_data['UndefinedTag:0xA433'] ) ) {
5213
  $new_data['LensMake'] = $exif_data['UndefinedTag:0xA433'];
5214
  }
5215
+
5216
  if ( isset( $exif_data['UndefinedTag:0xA434'] ) ) {
5217
  $new_data['LensModel'] = $exif_data['UndefinedTag:0xA434'];
5218
  }
5219
+
5220
  if ( isset( $exif_data['UndefinedTag:0xA435'] ) ) {
5221
  $new_data['LensSerialNumber'] = $exif_data['UndefinedTag:0xA435'];
5222
  }
5223
+
5224
  if ( ! empty( $new_data ) ) {
5225
  $results['mla_exif_metadata']['CAMERA'] = $new_data;
5226
  }
5683
  $message .= sprintf( __( '%1$s: Could not delete ALT Text, remains "%2$s"', 'media-library-assistant' ) . '<br>', __( 'ERROR', 'media-library-assistant' ), esc_attr( $post_data[ $key ] ) );
5684
  }
5685
  } else {
5686
+ /*
5687
+ * ALT Text isn't supposed to have multiple values, but it happens.
5688
+ * Delete multiple values and start over.
5689
+ */
5690
+ if ( is_array( $post_data[ $key ] ) ) {
5691
+ delete_post_meta( $post_id, '_wp_attachment_image_alt' );
5692
+ }
5693
+
5694
  if ( update_post_meta( $post_id, '_wp_attachment_image_alt', $value ) ) {
5695
  /* translators: 1: element name 2: old_value 3: new_value */
5696
  $message .= sprintf( __( 'Changing %1$s from "%2$s" to "%3$s"', 'media-library-assistant' ) . '<br>', __( 'ALT Text', 'media-library-assistant' ), esc_attr( $post_data[ $key ] ), esc_attr( $value ) );
5806
  $action_name = __( 'Removing', 'media-library-assistant' );
5807
  $tags = self::_remove_terms( $post_id, $tags, $taxonomy_obj );
5808
  $result = wp_set_post_terms( $post_id, $tags, $taxonomy );
5809
+
5810
  if ( empty( $tags ) ) {
5811
  $result = true;
5812
  }
5814
  case 'replace':
5815
  $action_name = __( 'Replacing', 'media-library-assistant' );
5816
  $result = wp_set_post_terms( $post_id, $tags, $taxonomy );
5817
+
5818
  if ( empty( $tags ) ) {
5819
  $result = true;
5820
  }
5824
  $result = NULL;
5825
  // ignore anything else
5826
  }
5827
+
5828
  /*
5829
  * Definitive results check would use:
5830
  * do_action( 'set_object_terms', $object_id, $terms, $tt_ids, $taxonomy, $append, $old_tt_ids );
5896
  private static function _remove_terms( $post_id, $terms, $taxonomy_obj ) {
5897
  $taxonomy = $taxonomy_obj->name;
5898
  $hierarchical = $taxonomy_obj->hierarchical;
5899
+
5900
  /*
5901
  * Get the current terms for the terms_after check
5902
  */
5905
  $current_terms = wp_get_object_terms( $post_id, $taxonomy );
5906
  wp_cache_add( $post_id, $current_terms, $taxonomy . '_relationships' );
5907
  }
5908
+
5909
  $terms_before = array();
5910
  foreach( $current_terms as $term ) {
5911
  $terms_before[ $term->term_id ] = $term->name;
5912
  }
5913
+
5914
  $terms_after = array();
5915
  if ( $hierarchical ) {
5916
  $terms = array_map( 'intval', $terms );
5917
  $terms = array_unique( $terms );
5918
+
5919
  foreach( $terms_before as $index => $term ) {
5920
  if ( ! in_array( $index, $terms ) ) {
5921
  $terms_after[] = $index;
5928
  }
5929
  }
5930
  }
5931
+
5932
  return $terms_after;
5933
  }
5934
 
5944
  *
5945
  * @return string Printable representation of $data
5946
  */
5947
+ public static function mla_hex_dump( $data, $limit = 0, $bytes_per_row = 16, $offset = -1 ) {
5948
  if ( 0 == $limit ) {
5949
  $limit = strlen( $data );
5950
  }
includes/class-mla-edit-media.php CHANGED
@@ -84,14 +84,31 @@ class MLAEdit {
84
  public static function mla_admin_init_action( ) {
85
  //error_log( 'DEBUG: MLAEdit::mla_admin_init_action() $_REQUEST = ' . var_export( $_REQUEST, true ), 0 );
86
 
87
- add_post_type_support( 'attachment', apply_filters( 'mla_edit_media_support', array( 'custom-fields' ) ) );
 
 
 
 
 
88
 
89
  /*
90
  * Check for Media/Add New bulk edit area updates
91
  */
92
  if ( ! empty( $_REQUEST['mlaAddNewBulkEdit']['formString'] ) && ( 'checked' == MLAOptions::mla_get_option( MLAOptions::MLA_ADD_NEW_BULK_EDIT ) ) ) {
93
- // Fires after MLA mapping in wp_update_attachment_metadata() processing.
94
- add_filter( 'mla_update_attachment_metadata_postfilter', 'MLAEdit::mla_update_attachment_metadata_postfilter', 10, 3 );
 
 
 
 
 
 
 
 
 
 
 
 
95
  }
96
 
97
  /*
@@ -153,17 +170,17 @@ class MLAEdit {
153
  if ( 'media-new.php' == $page_hook && ( 'checked' == MLAOptions::mla_get_option( MLAOptions::MLA_ADD_NEW_BULK_EDIT ) ) ) {
154
  wp_register_style( 'mla-add-new-bulk-edit', MLA_PLUGIN_URL . 'css/mla-add-new-bulk-edit.css', false, MLA::CURRENT_MLA_VERSION );
155
  wp_enqueue_style( 'mla-add-new-bulk-edit' );
156
-
157
  wp_register_style( 'mla-add-new-bulk-edit' . '-set-parent', MLA_PLUGIN_URL . 'css/mla-style-set-parent.css', false, MLA::CURRENT_MLA_VERSION );
158
  wp_enqueue_style( 'mla-add-new-bulk-edit' . '-set-parent' );
159
-
160
  // 'suggest' loads the script for flat taxonomy auto-complete/suggested matches
161
  wp_enqueue_script( 'mla-add-new-bulk-edit-scripts', MLA_PLUGIN_URL . "js/mla-add-new-bulk-edit-scripts{$suffix}.js",
162
  array( 'suggest', 'jquery' ), MLA::CURRENT_MLA_VERSION, false );
163
-
164
  wp_enqueue_script( 'mla-add-new-bulk-edit-scripts' . '-set-parent', MLA_PLUGIN_URL . "js/mla-set-parent-scripts{$suffix}.js",
165
  array( 'mla-add-new-bulk-edit-scripts', 'jquery' ), MLA::CURRENT_MLA_VERSION, false );
166
-
167
  $script_variables = array(
168
  'uploadTitle' => __( 'Upload New Media items', 'media-library-assistant' ),
169
  'comma' => _x( ',', 'tag_delimiter', 'media-library-assistant' ),
@@ -173,20 +190,20 @@ class MLAEdit {
173
  'toggleOpen' => __( 'Open Bulk Edit area', 'media-library-assistant' ),
174
  'toggleClose' => __( 'Close Bulk Edit area', 'media-library-assistant' ),
175
  );
176
-
177
  if ( version_compare( get_bloginfo( 'version' ), '3.8', '>=' ) ) {
178
  $script_variables['useDashicons'] = true;
179
  }
180
-
181
  wp_localize_script( 'mla-add-new-bulk-edit-scripts', 'mla_add_new_bulk_edit_vars', $script_variables );
182
 
183
  // Filter the media upload post parameters.
184
  // @param array $post_params An array of media upload parameters used by Plupload.
185
  add_filter( 'upload_post_params', 'MLAEdit::mla_upload_post_params', 10, 1 );
186
-
187
  // Fires on the post upload UI screen; legacy (pre-3.5.0) upload interface.
188
  add_action( 'post-upload-ui', 'MLAEdit::mla_post_upload_ui' );
189
-
190
  return;
191
  } // media-new.php
192
 
@@ -407,7 +424,7 @@ class MLAEdit {
407
  'Select' => __( 'Select', 'media-library-assistant' ),
408
  'set_parent_form' => $set_parent_form,
409
  );
410
-
411
  echo MLAData::mla_parse_template( $page_template_array['page'], $page_values );
412
  }
413
 
@@ -415,7 +432,9 @@ class MLAEdit {
415
  * Apply Media/Add New bulk edit area updates, if any
416
  *
417
  * This filter is called AFTER MLA mapping rules are applied during
418
- * wp_update_attachment_metadata() processing.
 
 
419
  *
420
  * @since 2.02
421
  *
@@ -425,7 +444,7 @@ class MLAEdit {
425
  *
426
  * @return array updated attachment metadata
427
  */
428
- public static function mla_update_attachment_metadata_postfilter( $data, $post_id, $options ) {
429
  if ( ( true == $options['is_upload'] ) && ! empty( $_REQUEST['mlaAddNewBulkEdit']['formString'] ) ) {
430
  /*
431
  * Clean up the inputs, which have everythng from the enclosing <form>
@@ -450,7 +469,7 @@ class MLAEdit {
450
  if ( !isset( $args['tax_input'] ) ) {
451
  $args['tax_input'] = array();
452
  }
453
-
454
  if ( isset( $args['post_category'] ) ) {
455
  $args['tax_input']['category'] = $args['post_category'];
456
  unset ( $args['post_category'] );
@@ -460,13 +479,13 @@ class MLAEdit {
460
  * Pass the ID
461
  */
462
  $args['cb_attachment'] = array( $post_id );
463
-
464
  $item_content = MLA::mla_process_bulk_action( 'edit', $args );
465
  }
466
 
467
  return $data;
468
  } // mla_update_attachment_metadata_postfilter
469
-
470
  /**
471
  * Adds mapping update messages for display at the top of the Edit Media screen.
472
  * Declared public because it is a filter.
@@ -511,9 +530,9 @@ class MLAEdit {
511
 
512
  echo '<span id="mla_metadata_links" style="font-weight: bold; line-height: 2em">';
513
 
514
- echo '<a href="' . add_query_arg( $view_args, wp_nonce_url( 'upload.php?mla_admin_action=' . MLA::MLA_ADMIN_SINGLE_CUSTOM_FIELD_MAP, MLA::MLA_ADMIN_NONCE ) ) . '" title="' . __( 'Map Custom Field metadata for this item', 'media-library-assistant' ) . '">' . __( 'Map Custom Field Metadata', 'media-library-assistant' ) . '</a><br>';
515
 
516
- echo '<a href="' . add_query_arg( $view_args, wp_nonce_url( 'upload.php?mla_admin_action=' . MLA::MLA_ADMIN_SINGLE_MAP, MLA::MLA_ADMIN_NONCE ) ) . '" title="' . __( 'Map IPTC/EXIF metadata for this item', 'media-library-assistant' ) . '">' . __( 'Map IPTC/EXIF Metadata', 'media-library-assistant' ) . '</a>';
517
 
518
  echo "</span>\n";
519
  echo "</div><!-- .misc-pub-section -->\n";
@@ -587,7 +606,7 @@ class MLAEdit {
587
  if ( isset( $active_boxes['mla-parent-info'] ) ) {
588
  add_meta_box( 'mla-parent-info', __( 'Parent Info', 'media-library-assistant' ), 'MLAEdit::mla_parent_info_handler', 'attachment', 'normal', 'core' );
589
  }
590
-
591
  if ( isset( $active_boxes['mla-menu-order'] ) ) {
592
  add_meta_box( 'mla-menu-order', __( 'Menu Order', 'media-library-assistant' ), 'MLAEdit::mla_menu_order_handler', 'attachment', 'normal', 'core' );
593
  }
@@ -1127,7 +1146,7 @@ class MLAEdit {
1127
  &nbsp;&nbsp;
1128
  <a id="<?php echo $link_search_id; ?>" href="#<?php echo $link_search_p_id; ?>" class="hide-if-no-js">
1129
  <?php
1130
- echo __( '?&nbsp;Search', 'media-library-assistant' );
1131
  ?>
1132
  </a>
1133
  </h4>
84
  public static function mla_admin_init_action( ) {
85
  //error_log( 'DEBUG: MLAEdit::mla_admin_init_action() $_REQUEST = ' . var_export( $_REQUEST, true ), 0 );
86
 
87
+ $edit_media_support = array( 'custom-fields' );
88
+ if ( ( 'checked' == MLAOptions::mla_get_option( 'enable_featured_image' ) ) && current_theme_supports( 'post-thumbnails', 'attachment' ) ) {
89
+ $edit_media_support[] = 'thumbnail';
90
+ }
91
+
92
+ add_post_type_support( 'attachment', apply_filters( 'mla_edit_media_support', $edit_media_support ) );
93
 
94
  /*
95
  * Check for Media/Add New bulk edit area updates
96
  */
97
  if ( ! empty( $_REQUEST['mlaAddNewBulkEdit']['formString'] ) && ( 'checked' == MLAOptions::mla_get_option( MLAOptions::MLA_ADD_NEW_BULK_EDIT ) ) ) {
98
+ /*
99
+ * If any of the mapping rule options is enabled, use the MLA filter so this
100
+ * filter is called after mapping rules have run. If none are enabled,
101
+ * use the WordPress filter directly.
102
+ */
103
+ if ( ( 'checked' == MLAOptions::mla_get_option( 'enable_iptc_exif_mapping' ) ) ||
104
+ ( 'checked' == MLAOptions::mla_get_option( 'enable_custom_field_mapping' ) ) ||
105
+ ( 'checked' == MLAOptions::mla_get_option( 'enable_iptc_exif_update' ) ) ||
106
+ ( 'checked' == MLAOptions::mla_get_option( 'enable_custom_field_update' ) ) ) {
107
+ // Fires after MLA mapping in wp_update_attachment_metadata() processing.
108
+ add_filter( 'mla_update_attachment_metadata_postfilter', 'MLAEdit::mla_update_attachment_metadata_postfilter', 10, 3 );
109
+ } else {
110
+ add_filter( 'wp_update_attachment_metadata', 'MLAEdit::mla_update_attachment_metadata_postfilter', 0x7FFFFFFF, 2 );
111
+ }
112
  }
113
 
114
  /*
170
  if ( 'media-new.php' == $page_hook && ( 'checked' == MLAOptions::mla_get_option( MLAOptions::MLA_ADD_NEW_BULK_EDIT ) ) ) {
171
  wp_register_style( 'mla-add-new-bulk-edit', MLA_PLUGIN_URL . 'css/mla-add-new-bulk-edit.css', false, MLA::CURRENT_MLA_VERSION );
172
  wp_enqueue_style( 'mla-add-new-bulk-edit' );
173
+
174
  wp_register_style( 'mla-add-new-bulk-edit' . '-set-parent', MLA_PLUGIN_URL . 'css/mla-style-set-parent.css', false, MLA::CURRENT_MLA_VERSION );
175
  wp_enqueue_style( 'mla-add-new-bulk-edit' . '-set-parent' );
176
+
177
  // 'suggest' loads the script for flat taxonomy auto-complete/suggested matches
178
  wp_enqueue_script( 'mla-add-new-bulk-edit-scripts', MLA_PLUGIN_URL . "js/mla-add-new-bulk-edit-scripts{$suffix}.js",
179
  array( 'suggest', 'jquery' ), MLA::CURRENT_MLA_VERSION, false );
180
+
181
  wp_enqueue_script( 'mla-add-new-bulk-edit-scripts' . '-set-parent', MLA_PLUGIN_URL . "js/mla-set-parent-scripts{$suffix}.js",
182
  array( 'mla-add-new-bulk-edit-scripts', 'jquery' ), MLA::CURRENT_MLA_VERSION, false );
183
+
184
  $script_variables = array(
185
  'uploadTitle' => __( 'Upload New Media items', 'media-library-assistant' ),
186
  'comma' => _x( ',', 'tag_delimiter', 'media-library-assistant' ),
190
  'toggleOpen' => __( 'Open Bulk Edit area', 'media-library-assistant' ),
191
  'toggleClose' => __( 'Close Bulk Edit area', 'media-library-assistant' ),
192
  );
193
+
194
  if ( version_compare( get_bloginfo( 'version' ), '3.8', '>=' ) ) {
195
  $script_variables['useDashicons'] = true;
196
  }
197
+
198
  wp_localize_script( 'mla-add-new-bulk-edit-scripts', 'mla_add_new_bulk_edit_vars', $script_variables );
199
 
200
  // Filter the media upload post parameters.
201
  // @param array $post_params An array of media upload parameters used by Plupload.
202
  add_filter( 'upload_post_params', 'MLAEdit::mla_upload_post_params', 10, 1 );
203
+
204
  // Fires on the post upload UI screen; legacy (pre-3.5.0) upload interface.
205
  add_action( 'post-upload-ui', 'MLAEdit::mla_post_upload_ui' );
206
+
207
  return;
208
  } // media-new.php
209
 
424
  'Select' => __( 'Select', 'media-library-assistant' ),
425
  'set_parent_form' => $set_parent_form,
426
  );
427
+
428
  echo MLAData::mla_parse_template( $page_template_array['page'], $page_values );
429
  }
430
 
432
  * Apply Media/Add New bulk edit area updates, if any
433
  *
434
  * This filter is called AFTER MLA mapping rules are applied during
435
+ * wp_update_attachment_metadata() processing. If none of the mapping rules
436
+ * is enabled it is called from the 'wp_update_attachment_metadata' filter
437
+ * with just two arguments.
438
  *
439
  * @since 2.02
440
  *
444
  *
445
  * @return array updated attachment metadata
446
  */
447
+ public static function mla_update_attachment_metadata_postfilter( $data, $post_id, $options = array( 'is_upload' => true ) ) {
448
  if ( ( true == $options['is_upload'] ) && ! empty( $_REQUEST['mlaAddNewBulkEdit']['formString'] ) ) {
449
  /*
450
  * Clean up the inputs, which have everythng from the enclosing <form>
469
  if ( !isset( $args['tax_input'] ) ) {
470
  $args['tax_input'] = array();
471
  }
472
+
473
  if ( isset( $args['post_category'] ) ) {
474
  $args['tax_input']['category'] = $args['post_category'];
475
  unset ( $args['post_category'] );
479
  * Pass the ID
480
  */
481
  $args['cb_attachment'] = array( $post_id );
482
+
483
  $item_content = MLA::mla_process_bulk_action( 'edit', $args );
484
  }
485
 
486
  return $data;
487
  } // mla_update_attachment_metadata_postfilter
488
+
489
  /**
490
  * Adds mapping update messages for display at the top of the Edit Media screen.
491
  * Declared public because it is a filter.
530
 
531
  echo '<span id="mla_metadata_links" style="font-weight: bold; line-height: 2em">';
532
 
533
+ echo '<a href="' . add_query_arg( $view_args, wp_nonce_url( 'upload.php?mla_admin_action=' . MLA::MLA_ADMIN_SINGLE_CUSTOM_FIELD_MAP, MLA::MLA_ADMIN_NONCE ) ) . '" title="' . __( 'Map Custom Field metadata for this item', 'media-library-assistant' ) . '">' . __( 'Map Custom Field metadata', 'media-library-assistant' ) . '</a><br>';
534
 
535
+ echo '<a href="' . add_query_arg( $view_args, wp_nonce_url( 'upload.php?mla_admin_action=' . MLA::MLA_ADMIN_SINGLE_MAP, MLA::MLA_ADMIN_NONCE ) ) . '" title="' . __( 'Map IPTC/EXIF metadata for this item', 'media-library-assistant' ) . '">' . __( 'Map IPTC/EXIF metadata', 'media-library-assistant' ) . '</a>';
536
 
537
  echo "</span>\n";
538
  echo "</div><!-- .misc-pub-section -->\n";
606
  if ( isset( $active_boxes['mla-parent-info'] ) ) {
607
  add_meta_box( 'mla-parent-info', __( 'Parent Info', 'media-library-assistant' ), 'MLAEdit::mla_parent_info_handler', 'attachment', 'normal', 'core' );
608
  }
609
+
610
  if ( isset( $active_boxes['mla-menu-order'] ) ) {
611
  add_meta_box( 'mla-menu-order', __( 'Menu Order', 'media-library-assistant' ), 'MLAEdit::mla_menu_order_handler', 'attachment', 'normal', 'core' );
612
  }
1146
  &nbsp;&nbsp;
1147
  <a id="<?php echo $link_search_id; ?>" href="#<?php echo $link_search_p_id; ?>" class="hide-if-no-js">
1148
  <?php
1149
+ echo '?&nbsp;' . __( 'Search', 'media-library-assistant' );
1150
  ?>
1151
  </a>
1152
  </h4>
includes/class-mla-image-editor.php ADDED
@@ -0,0 +1,309 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * MLA Imagick Image Editor
4
+ *
5
+ * @package Media Library Assistant
6
+ * @since 2.10
7
+ */
8
+
9
+ /**
10
+ * MLA Image Editor Class for Image Manipulation through Imagick PHP Module
11
+ *
12
+ * @since 2.10
13
+ * @package Media Library Assistant
14
+ * @uses WP_Image_Editor_Imagick Extends class
15
+ */
16
+ class MLA_Image_Editor extends WP_Image_Editor_Imagick {
17
+ /**
18
+ * Direct Ghostscript file conversion
19
+ *
20
+ * @since 2.10
21
+ *
22
+ * @param string $file Input file, e.g., a PDF document
23
+ * @param string $frame Page/frame within the file, zero-based
24
+ * @param string $resolution Output file DPI. Default 72.
25
+ * @param string $output_type Output MIME type; 'image/jpeg' or 'image/png'.
26
+ *
27
+ * @return boolean true if conversion succeeds else false
28
+ */
29
+ private function _ghostscript_convert( $file, $frame, $resolution, $output_type ) {
30
+ /*
31
+ * Look for exec() - from http://stackoverflow.com/a/12980534/866618
32
+ */
33
+ if ( ini_get('safe_mode') ) {
34
+ return false;
35
+ }
36
+
37
+ $blacklist = preg_split( '/,\s*/', ini_get('disable_functions') . ',' . ini_get('suhosin.executor.func.blacklist') );
38
+ if ( in_array('exec', $blacklist) ) {
39
+ return false;
40
+ }
41
+
42
+ /*
43
+ * Look for the Ghostscript executable
44
+ */
45
+ $ghostscript_path = NULL;
46
+ do {
47
+
48
+ if ( 'WIN' === strtoupper( substr( PHP_OS, 0, 3) ) ) {
49
+ if ( $ghostscript_path = getenv('GSC') ) {
50
+ break;
51
+ }
52
+
53
+ $ghostscript_path = exec('where gswin*c.exe');
54
+ if ( ! empty( $ghostscript_path ) ) {
55
+ break;
56
+ }
57
+
58
+ $ghostscript_path = exec('dir /o:n/s/b "C:\Program Files\gs\*gswin*c.exe"');
59
+ if ( ! empty( $ghostscript_path ) ) {
60
+ break;
61
+ }
62
+
63
+ $ghostscript_path = exec('dir /o:n/s/b "C:\Program Files (x86)\gs\*gswin32c.exe"');
64
+ if ( ! empty( $ghostscript_path ) ) {
65
+ break;
66
+ }
67
+
68
+ $ghostscript_path = NULL;
69
+ break;
70
+ } // Windows platform
71
+
72
+ $ghostscript_path = exec('which gs');
73
+ if ( ! empty( $ghostscript_path ) ) {
74
+ break;
75
+ }
76
+
77
+ $test_path = '/usr/bin/gs';
78
+ exec('test -e ' . $test_path, $dummy, $ghostscript_path);
79
+
80
+ if ( $test_path !== $ghostscript_path ) {
81
+ $ghostscript_path = NULL;
82
+ }
83
+ } while ( false );
84
+
85
+ if ( isset( $ghostscript_path ) ) {
86
+ if ( 'image/jpeg' == $output_type ) {
87
+ $device = 'jpeg';
88
+ $extension = '.jpg';
89
+ } else {
90
+ $device = 'png16m';
91
+ $extension = '.png';
92
+ }
93
+
94
+ /*
95
+ * Generate a unique temporary file name
96
+ */
97
+ $output_path = get_temp_dir();
98
+ $output_file = $output_path . wp_unique_filename( $output_path, 'mla-ghostscript' . $extension);
99
+
100
+ $cmd = escapeshellarg( $ghostscript_path ) . ' -sDEVICE=%1$s -r%2$dx%2$d -dFirstPage=%3$d -dLastPage=%3$d -dPDFFitPage -o %4$s %5$s 2>&1';
101
+ $cmd = sprintf( $cmd, $device, $resolution, ( $frame + 1 ), escapeshellarg( $output_file ), escapeshellarg( $file ) );
102
+ exec( $cmd, $stdout, $return );
103
+ if ( 0 != $return ) {
104
+ error_log( "ERROR: _ghostscript_convert exec returned '{$return}, cmd = " . var_export( $cmd, true ), 0 );
105
+ error_log( "ERROR: _ghostscript_convert exec returned '{$return}, details = " . var_export( $stdout, true ), 0 );
106
+ return false;
107
+ }
108
+
109
+ try {
110
+ $this->image->readImage( $output_file );
111
+ }
112
+ catch ( Exception $e ) {
113
+ error_log( "ERROR: _ghostscript_convert readImage Exception = " . var_export( $e->getMessage(), true ), 0 );
114
+ return false;
115
+ }
116
+
117
+ $this->file = $output_file;
118
+ @unlink( $output_file );
119
+ return true;
120
+ } // found Ghostscript
121
+
122
+ return false;
123
+ }
124
+
125
+
126
+ /**
127
+ * Loads image from $this->file into new Imagick Object.
128
+ *
129
+ * Sets image resolution and frame from $imagick_args before loading the file.
130
+ *
131
+ * @since 2.10
132
+ * @access protected
133
+ *
134
+ * @return boolean|WP_Error True if loaded; WP_Error on failure.
135
+ */
136
+ public function load() {
137
+ if ( $this->image instanceof Imagick )
138
+ return true;
139
+
140
+ if ( ! is_file( $this->file ) && ! preg_match( '|^https?://|', $this->file ) )
141
+ return new WP_Error( 'error_loading_image', __('File doesn&#8217;t exist?'), $this->file );
142
+
143
+ /** This filter is documented in wp-includes/class-wp-image-editor-imagick.php */
144
+ // Even though Imagick uses less PHP memory than GD, set higher limit for users that have low PHP.ini limits
145
+ @ini_set( 'memory_limit', apply_filters( 'image_memory_limit', WP_MAX_MEMORY_LIMIT ) );
146
+
147
+ try {
148
+ $this->image = new imagick();
149
+
150
+ if ( class_exists( 'MLAStreamImage' ) ) {
151
+ $mla_imagick_args = MLAStreamImage::$mla_imagick_args;
152
+ } else {
153
+ $mla_imagick_args = array();
154
+ }
155
+
156
+ /*
157
+ * this must be called before reading the image, otherwise has no effect -
158
+ * "-density {$x_resolution}x{$y_resolution}"
159
+ * this is important to give good quality output, otherwise text might be unclear
160
+ * default resolution is 72,72
161
+ */
162
+ if ( isset( $mla_imagick_args['resolution'] ) ) {
163
+ $resolution = absint( $mla_imagick_args['resolution'] );
164
+ if ( $resolution ) {
165
+ $this->image->setResolution( $resolution, $resolution );
166
+ }
167
+ } else {
168
+ $resolution = 72;
169
+ }
170
+
171
+ if ( isset( $mla_imagick_args['frame'] ) ) {
172
+ $frame = $mla_imagick_args['frame'];
173
+ } else {
174
+ $frame = 0;
175
+ }
176
+
177
+ if ( isset( $mla_imagick_args['type'] ) ) {
178
+ $type = $mla_imagick_args['type'];
179
+ } else {
180
+ $type = 'image/jpeg';
181
+ }
182
+
183
+ //$result = false;
184
+ $result = $this->_ghostscript_convert( $this->file, $frame, $resolution, $type );
185
+
186
+ if ( false === $result ) {
187
+ try {
188
+ $this->image->readImage( $this->file . '[' . $frame . ']' );
189
+ }
190
+ catch ( Exception $e ) {
191
+ $this->image->readImage( $this->file . '[0]' );
192
+ }
193
+
194
+ $this->image->setImageFormat( strtoupper( $this->get_extension( $type ) ) );
195
+ }
196
+
197
+ if( ! $this->image->valid() )
198
+ return new WP_Error( 'invalid_image', __('File is not an image.'), $this->file);
199
+
200
+ // Select the first frame to handle animated images properly
201
+ if ( is_callable( array( $this->image, 'setIteratorIndex' ) ) )
202
+ $this->image->setIteratorIndex(0);
203
+
204
+ $this->mime_type = $this->get_mime_type( $this->image->getImageFormat() );
205
+ }
206
+ catch ( Exception $e ) {
207
+ return new WP_Error( 'invalid_image', $e->getMessage(), $this->file );
208
+ }
209
+
210
+ $result = $this->update_size();
211
+ if ( is_wp_error( $result ) ) {
212
+ return $result;
213
+ }
214
+
215
+ return $this->set_quality();
216
+ }
217
+
218
+ /**
219
+ * Set the iterator position
220
+ *
221
+ * @since 2.10
222
+ * @access public
223
+ *
224
+ * @param integer frame/page number
225
+ *
226
+ * @return boolean success/failure
227
+ */
228
+ public function mla_setIteratorIndex( $index ) {
229
+ if ( is_callable( array( $this->image, 'setIteratorIndex' ) ) ) {
230
+ return $this->image->setIteratorIndex( absint( $index ) );
231
+ }
232
+
233
+ return false;
234
+ }
235
+
236
+ /**
237
+ * Prepare the image for output, scaling and flattening as required
238
+ *
239
+ * @since 2.10
240
+ * @access public
241
+ *
242
+ * @param integer zero or new width
243
+ * @param integer zero or new height
244
+ * @param boolean proportional fit (true) or exact fit (false)
245
+ * @param string output MIME type
246
+ * @param integer compression quality; 1 - 100
247
+ *
248
+ * @return void
249
+ */
250
+ public function mla_prepare_image( $width, $height, $best_fit, $type, $quality ) {
251
+ if ( is_callable( array( $this->image, 'scaleImage' ) ) ) {
252
+ if ( 0 < $width && 0 < $height ) {
253
+ // Both are set; use them as-is
254
+ $this->image->scaleImage( $width, $height, $best_fit );
255
+ } elseif ( 0 < $width || 0 < $height ) {
256
+ // One is set; scale the other one proportionally if reducing
257
+ $image_size = $this->get_size();
258
+ if ( $width && isset( $image_size['width'] ) && $width < $image_size['width'] ) {
259
+ $this->image->scaleImage( $width, 0 );
260
+ } elseif ( isset( $image_size['height'] ) && $height < $image_size['height'] ) {
261
+ $this->image->scaleImage( 0, $height );
262
+ }
263
+ } else {
264
+ // Neither is specified, apply defaults
265
+ $this->image->scaleImage( 150, 0 );
266
+ }
267
+
268
+ $this->update_size();
269
+ }
270
+
271
+ if ( 0 < $quality && 101 > $quality ) {
272
+ $this->set_quality( $quality );
273
+ }
274
+
275
+ if ( 'image/jpeg' == $type ) {
276
+ if ( is_callable( array( $this->image, 'setImageBackgroundColor' ) ) ) {
277
+ $this->image->setImageBackgroundColor('white');
278
+ }
279
+
280
+ if ( is_callable( array( $this->image, 'mergeImageLayers' ) ) ) {
281
+ $this->image = $this->image->mergeImageLayers( imagick::LAYERMETHOD_FLATTEN );
282
+ } elseif ( is_callable( array( $this->image, 'flattenImages' ) ) ) {
283
+ $this->image = $this->image->flattenImages();
284
+ }
285
+ }
286
+ }
287
+
288
+ /**
289
+ * Streams current image to browser.
290
+ *
291
+ * @since 2.10
292
+ * @access public
293
+ *
294
+ * @param string $mime_type
295
+ * @return boolean|WP_Error
296
+ */
297
+ public function stream( $mime_type = null ) {
298
+ try {
299
+ // Output stream of image content
300
+ header( "Content-Type: $mime_type" );
301
+ print $this->image->getImageBlob();
302
+ }
303
+ catch ( Exception $e ) {
304
+ return new WP_Error( 'image_stream_error', $e->getMessage() );
305
+ }
306
+
307
+ return true;
308
+ }
309
+ }
includes/class-mla-list-table.php CHANGED
@@ -305,7 +305,7 @@ class MLA_List_Table extends WP_List_Table {
305
 
306
  $submenu_arguments = array();
307
  $has_filters = $include_filters;
308
-
309
  /*
310
  * WPML arguments
311
  */
@@ -404,7 +404,7 @@ class MLA_List_Table extends WP_List_Table {
404
  }
405
  }
406
 
407
- return apply_filters( 'mla_list_table_submenu_arguments', $submenu_arguments, $include_filters );
408
  }
409
 
410
  /**
@@ -611,7 +611,7 @@ class MLA_List_Table extends WP_List_Table {
611
  */
612
  function column_default( $item, $column_name ) {
613
  static $custom_columns = NULL;
614
-
615
  if ( 't_' == substr( $column_name, 0, 2 ) ) {
616
  $taxonomy = substr( $column_name, 2 );
617
  $tax_object = get_taxonomy( $taxonomy );
@@ -640,14 +640,14 @@ class MLA_List_Table extends WP_List_Table {
640
 
641
  return join( ', ', $list );
642
  } else { // if !is_wp_error
643
- return __( 'not supported', 'media-library-assistant' );
644
  }
645
  } // 't_'
646
  elseif ( 'c_' == substr( $column_name, 0, 2 ) ) {
647
  if ( NULL === $custom_columns ) {
648
  $custom_columns = MLAOptions::mla_custom_field_support( 'custom_columns' );
649
  }
650
-
651
  $values = get_post_meta( $item->ID, $custom_columns[ $column_name ], false );
652
  if ( empty( $values ) ) {
653
  return '';
@@ -677,7 +677,7 @@ class MLA_List_Table extends WP_List_Table {
677
  return $list[0];
678
  }
679
  } else { // 'c_'
680
-
681
  $content = apply_filters( 'mla_list_table_column_default', NULL, $item, $column_name );
682
  if ( is_null( $content ) ) {
683
  //Show the whole array for troubleshooting purposes
@@ -747,15 +747,15 @@ class MLA_List_Table extends WP_List_Table {
747
  } else {
748
  $view_args = array();
749
  }
750
-
751
  $edit_url = '<a href="' . add_query_arg( $view_args, wp_nonce_url( '?mla_admin_action=' . MLA::MLA_ADMIN_SINGLE_EDIT_DISPLAY, MLA::MLA_ADMIN_NONCE ) ) . '" title="' . __( 'Edit this item', 'media-library-assistant' ) . '">' . __( 'Edit', 'media-library-assistant' ) . '</a>';
752
  }
753
-
754
  return sprintf( '<a href="%1$s" title="' . __( 'Edit', 'media-library-assistant' ) . ' &#8220;%2$s&#8221;">%3$s</a>', admin_url( $edit_url ), esc_attr( $item->post_title ), $thumb );
755
  }
756
 
757
  /**
758
- * Translate post_status 'future', 'pending' and 'draft' to label
759
  *
760
  * @since 2.01
761
  *
@@ -766,19 +766,22 @@ class MLA_List_Table extends WP_List_Table {
766
  protected function _format_post_status( $post_status ) {
767
  $flag = ',<br>';
768
  switch ( $post_status ) {
 
 
 
769
  case 'future' :
770
  $flag .= __('Scheduled');
771
  break;
772
  case 'pending' :
773
  $flag .= _x('Pending', 'post state');
774
  break;
775
- case 'draft' :
776
- $flag .= __('Draft');
777
  break;
778
  default:
779
  $flag = '';
780
  }
781
-
782
  return $flag;
783
  }
784
 
@@ -802,7 +805,7 @@ class MLA_List_Table extends WP_List_Table {
802
  */
803
  $view_args = array_merge( array( 'page' => MLA::ADMIN_PAGE_SLUG, 'mla_item_ID' => $item->ID ),
804
  self::mla_submenu_arguments() );
805
-
806
  if ( isset( $_REQUEST['paged'] ) ) {
807
  $view_args['paged'] = $_REQUEST['paged'];
808
  }
@@ -825,7 +828,7 @@ class MLA_List_Table extends WP_List_Table {
825
  } else {
826
  $actions['edit'] = '<a href="' . add_query_arg( $view_args, wp_nonce_url( '?mla_admin_action=' . MLA::MLA_ADMIN_SINGLE_EDIT_DISPLAY, MLA::MLA_ADMIN_NONCE ) ) . '" title="' . __( 'Edit this item', 'media-library-assistant' ) . '">' . __( 'Edit', 'media-library-assistant' ) . '</a>';
827
  }
828
-
829
  $actions['inline hide-if-no-js'] = '<a class="editinline" href="#" title="' . __( 'Edit this item inline', 'media-library-assistant' ) . '">' . __( 'Quick Edit', 'media-library-assistant' ) . '</a>';
830
  }
831
  } // edit_post
@@ -851,7 +854,7 @@ class MLA_List_Table extends WP_List_Table {
851
  $actions['view'] = '<a href="' . site_url( ) . '?attachment_id=' . $item->ID . '" rel="permalink" title="' . __( 'View', 'media-library-assistant' ) . ' &#8220;' . esc_attr( $item->post_title ) . '&#8221;">' . __( 'View', 'media-library-assistant' ) . '</a>';
852
 
853
  $actions = apply_filters( 'mla_list_table_build_rollover_actions', $actions, $item, $column );
854
-
855
  $this->rollover_id = $item->ID;
856
  } // $this->rollover_id != $item->ID
857
 
@@ -876,7 +879,7 @@ class MLA_List_Table extends WP_List_Table {
876
 
877
  if ( !empty( $item->mla_wp_attachment_metadata ) ) {
878
  $inline_data .= ' <div class="image_alt">';
879
-
880
  if ( isset( $item->mla_wp_attachment_image_alt ) ) {
881
  if ( is_array( $item->mla_wp_attachment_image_alt ) ) {
882
  $inline_data .= esc_attr( $item->mla_wp_attachment_image_alt[0] );
@@ -884,7 +887,7 @@ class MLA_List_Table extends WP_List_Table {
884
  $inline_data .= esc_attr( $item->mla_wp_attachment_image_alt );
885
  }
886
  }
887
-
888
  $inline_data .= "</div>\r\n";
889
  }
890
 
@@ -946,7 +949,7 @@ class MLA_List_Table extends WP_List_Table {
946
  }
947
 
948
  $inline_data = apply_filters( 'mla_list_table_build_inline_data', $inline_data, $item );
949
-
950
  $inline_data .= "</div>\r\n";
951
 
952
  return $inline_data;
@@ -969,7 +972,7 @@ class MLA_List_Table extends WP_List_Table {
969
  $parent_title = sprintf( '%1$d %2$s', $item->post_parent, __( '(no title)', 'media-library-assistant' ) );
970
  }
971
 
972
- $parent = sprintf( '<a href="%1$s" title="' . __( 'Filter by Parent ID', 'media-library-assistant' ) . '">(parent:%2$s)</a>', esc_url( add_query_arg( array_merge( self::mla_submenu_arguments( false ), array(
973
  'page' => MLA::ADMIN_PAGE_SLUG,
974
  'parent' => $item->post_parent,
975
  'heading_suffix' => urlencode( __( 'Parent', 'media-library-assistant' ) . ': ' . $parent_title )
@@ -1061,7 +1064,7 @@ class MLA_List_Table extends WP_List_Table {
1061
  $parent_title = __( '(no title: bad ID)', 'media-library-assistant' );
1062
  }
1063
 
1064
- return sprintf( '<a href="%1$s" title="' . __( 'Filter by Parent ID', 'media-library-assistant' ) . '">%2$s</a>', esc_url( add_query_arg( array_merge( self::mla_submenu_arguments( false ), array(
1065
  'page' => MLA::ADMIN_PAGE_SLUG,
1066
  'parent' => $item->post_parent,
1067
  'heading_suffix' => urlencode( __( 'Parent', 'media-library-assistant' ) . ': ' . $parent_title )
@@ -1095,7 +1098,7 @@ class MLA_List_Table extends WP_List_Table {
1095
  if ( !MLAOptions::$process_featured_in ) {
1096
  return __( 'Disabled', 'media-library-assistant' );
1097
  }
1098
-
1099
  /*
1100
  * Move parent to the top of the list
1101
  */
@@ -1109,7 +1112,7 @@ class MLA_List_Table extends WP_List_Table {
1109
  $value = '';
1110
  foreach ( $features as $feature ) {
1111
  $status = self::_format_post_status( $feature->post_status );
1112
-
1113
  if ( $feature->ID == $item->post_parent ) {
1114
  $parent = ',<br>' . __( 'PARENT', 'media-library-assistant' );
1115
  } else {
@@ -1155,7 +1158,7 @@ class MLA_List_Table extends WP_List_Table {
1155
  unset( $inserts[ $item->post_parent ] );
1156
  array_unshift( $inserts, $parent );
1157
  }
1158
-
1159
  foreach ( $inserts as $insert ) {
1160
  $status = self::_format_post_status( $insert->post_status );
1161
 
@@ -1200,11 +1203,11 @@ class MLA_List_Table extends WP_List_Table {
1200
  unset( $galleries[ $item->post_parent ] );
1201
  array_unshift( $galleries, $parent );
1202
  }
1203
-
1204
  $value = '';
1205
  foreach ( $galleries as $ID => $gallery ) {
1206
  $status = self::_format_post_status( $gallery['post_status'] );
1207
-
1208
  if ( $gallery['ID'] == $item->post_parent ) {
1209
  $parent = ',<br>' . __( 'PARENT', 'media-library-assistant' );
1210
  } else {
@@ -1245,11 +1248,11 @@ class MLA_List_Table extends WP_List_Table {
1245
  unset( $mla_galleries[ $item->post_parent ] );
1246
  array_unshift( $mla_galleries, $parent );
1247
  }
1248
-
1249
  $value = '';
1250
  foreach ( $mla_galleries as $gallery ) {
1251
  $status = self::_format_post_status( $gallery['post_status'] );
1252
-
1253
  if ( $gallery['ID'] == $item->post_parent ) {
1254
  $parent = ',<br>' . __( 'PARENT', 'media-library-assistant' );
1255
  } else {
@@ -1283,7 +1286,7 @@ class MLA_List_Table extends WP_List_Table {
1283
  } else {
1284
  $alt_text = $item->mla_wp_attachment_image_alt;
1285
  }
1286
-
1287
  return sprintf( '<a href="%1$s" title="' . __( 'Filter by', 'media-library-assistant' ) . ' &#8220;%2$s&#8221;">%3$s</a>', esc_url( add_query_arg( array_merge( self::mla_submenu_arguments( false ), array(
1288
  'page' => MLA::ADMIN_PAGE_SLUG,
1289
  'mla-metakey' => '_wp_attachment_image_alt',
@@ -1378,7 +1381,7 @@ class MLA_List_Table extends WP_List_Table {
1378
  */
1379
  function column_date( $item ) {
1380
  global $post;
1381
-
1382
  if ( '0000-00-00 00:00:00' == $item->post_date ) {
1383
  $h_time = __( 'Unpublished', 'media-library-assistant' );
1384
  } else {
@@ -1444,7 +1447,7 @@ class MLA_List_Table extends WP_List_Table {
1444
  $user = get_user_by( 'id', $item->post_author );
1445
 
1446
  if ( isset( $user->data->display_name ) ) {
1447
- return sprintf( '<a href="%s" title="' . __( 'Filter by Author ID', 'media-library-assistant' ) . '">%s</a>', esc_url( add_query_arg( array_merge( self::mla_submenu_arguments( false ), array(
1448
  'page' => MLA::ADMIN_PAGE_SLUG,
1449
  'author' => $item->post_author,
1450
  'heading_suffix' => urlencode( __( 'Author', 'media-library-assistant' ) . ': ' . $user->data->display_name )
@@ -1483,7 +1486,7 @@ class MLA_List_Table extends WP_List_Table {
1483
 
1484
  $parent = sprintf( '%1$s<br>%2$s<br>%3$s', /*%1$s*/ $parent_title, /*%2$s*/ mysql2date( __( 'Y/m/d', 'media-library-assistant' ), $parent_date ), /*%3$s*/ $parent_type ); // . "<br>\r\n";
1485
  } else {
1486
- $parent = '(' . _x( 'Unattached', 'post_mime_types_singular', 'media-library-assistant' ) . ')';
1487
  }
1488
 
1489
  $set_parent = sprintf( '<a class="hide-if-no-js" id="mla-child-%2$s" onclick="mla.inlineEditAttachment.tableParentOpen( \'%1$s\',\'%2$s\',\'%3$s\' ); return false;" href="#the-list">%4$s</a><br>', /*%1$s*/ $item->post_parent, /*%2$s*/ $item->ID, /*%3$s*/ esc_attr( $item->post_title ), /*%4$s*/ __( 'Set Parent', 'media-library-assistant' ) );
@@ -1537,7 +1540,7 @@ class MLA_List_Table extends WP_List_Table {
1537
  } else {
1538
  $columns = self::$default_hidden_columns;
1539
  }
1540
-
1541
  return apply_filters( 'mla_list_table_get_hidden_columns', $columns );
1542
  }
1543
 
@@ -1578,7 +1581,7 @@ class MLA_List_Table extends WP_List_Table {
1578
  *
1579
  * @return string | false HTML for link to display the view, false if count = zero
1580
  */
1581
- function _get_view( $view_slug, $current_view ) {
1582
  global $wpdb;
1583
  static $mla_types = NULL, $posts_per_type, $post_mime_types, $avail_post_mime_types, $matches, $num_posts;
1584
 
@@ -1859,7 +1862,7 @@ class MLA_List_Table extends WP_List_Table {
1859
  if ( is_null( $total_items ) ) {
1860
  $total_items = MLAData::mla_count_list_table_items( $_REQUEST, ( ( $current_page - 1 ) * $per_page ), $per_page );
1861
  }
1862
-
1863
  /*
1864
  * Register the pagination options & calculations.
1865
  */
305
 
306
  $submenu_arguments = array();
307
  $has_filters = $include_filters;
308
+
309
  /*
310
  * WPML arguments
311
  */
404
  }
405
  }
406
 
407
+ return $submenu_arguments = apply_filters( 'mla_list_table_submenu_arguments', $submenu_arguments, $include_filters );
408
  }
409
 
410
  /**
611
  */
612
  function column_default( $item, $column_name ) {
613
  static $custom_columns = NULL;
614
+
615
  if ( 't_' == substr( $column_name, 0, 2 ) ) {
616
  $taxonomy = substr( $column_name, 2 );
617
  $tax_object = get_taxonomy( $taxonomy );
640
 
641
  return join( ', ', $list );
642
  } else { // if !is_wp_error
643
+ return __( 'Not Supported', 'media-library-assistant' );
644
  }
645
  } // 't_'
646
  elseif ( 'c_' == substr( $column_name, 0, 2 ) ) {
647
  if ( NULL === $custom_columns ) {
648
  $custom_columns = MLAOptions::mla_custom_field_support( 'custom_columns' );
649
  }
650
+
651
  $values = get_post_meta( $item->ID, $custom_columns[ $column_name ], false );
652
  if ( empty( $values ) ) {
653
  return '';
677
  return $list[0];
678
  }
679
  } else { // 'c_'
680
+
681
  $content = apply_filters( 'mla_list_table_column_default', NULL, $item, $column_name );
682
  if ( is_null( $content ) ) {
683
  //Show the whole array for troubleshooting purposes
747
  } else {
748
  $view_args = array();
749
  }
750
+
751
  $edit_url = '<a href="' . add_query_arg( $view_args, wp_nonce_url( '?mla_admin_action=' . MLA::MLA_ADMIN_SINGLE_EDIT_DISPLAY, MLA::MLA_ADMIN_NONCE ) ) . '" title="' . __( 'Edit this item', 'media-library-assistant' ) . '">' . __( 'Edit', 'media-library-assistant' ) . '</a>';
752
  }
753
+
754
  return sprintf( '<a href="%1$s" title="' . __( 'Edit', 'media-library-assistant' ) . ' &#8220;%2$s&#8221;">%3$s</a>', admin_url( $edit_url ), esc_attr( $item->post_title ), $thumb );
755
  }
756
 
757
  /**
758
+ * Translate post_status 'future', 'pending', 'draft' and 'trash' to label
759
  *
760
  * @since 2.01
761
  *
766
  protected function _format_post_status( $post_status ) {
767
  $flag = ',<br>';
768
  switch ( $post_status ) {
769
+ case 'draft' :
770
+ $flag .= __('Draft');
771
+ break;
772
  case 'future' :
773
  $flag .= __('Scheduled');
774
  break;
775
  case 'pending' :
776
  $flag .= _x('Pending', 'post state');
777
  break;
778
+ case 'trash' :
779
+ $flag .= __('Trash');
780
  break;
781
  default:
782
  $flag = '';
783
  }
784
+
785
  return $flag;
786
  }
787
 
805
  */
806
  $view_args = array_merge( array( 'page' => MLA::ADMIN_PAGE_SLUG, 'mla_item_ID' => $item->ID ),
807
  self::mla_submenu_arguments() );
808
+
809
  if ( isset( $_REQUEST['paged'] ) ) {
810
  $view_args['paged'] = $_REQUEST['paged'];
811
  }
828
  } else {
829
  $actions['edit'] = '<a href="' . add_query_arg( $view_args, wp_nonce_url( '?mla_admin_action=' . MLA::MLA_ADMIN_SINGLE_EDIT_DISPLAY, MLA::MLA_ADMIN_NONCE ) ) . '" title="' . __( 'Edit this item', 'media-library-assistant' ) . '">' . __( 'Edit', 'media-library-assistant' ) . '</a>';
830
  }
831
+
832
  $actions['inline hide-if-no-js'] = '<a class="editinline" href="#" title="' . __( 'Edit this item inline', 'media-library-assistant' ) . '">' . __( 'Quick Edit', 'media-library-assistant' ) . '</a>';
833
  }
834
  } // edit_post
854
  $actions['view'] = '<a href="' . site_url( ) . '?attachment_id=' . $item->ID . '" rel="permalink" title="' . __( 'View', 'media-library-assistant' ) . ' &#8220;' . esc_attr( $item->post_title ) . '&#8221;">' . __( 'View', 'media-library-assistant' ) . '</a>';
855
 
856
  $actions = apply_filters( 'mla_list_table_build_rollover_actions', $actions, $item, $column );
857
+
858
  $this->rollover_id = $item->ID;
859
  } // $this->rollover_id != $item->ID
860
 
879
 
880
  if ( !empty( $item->mla_wp_attachment_metadata ) ) {
881
  $inline_data .= ' <div class="image_alt">';
882
+
883
  if ( isset( $item->mla_wp_attachment_image_alt ) ) {
884
  if ( is_array( $item->mla_wp_attachment_image_alt ) ) {
885
  $inline_data .= esc_attr( $item->mla_wp_attachment_image_alt[0] );
887
  $inline_data .= esc_attr( $item->mla_wp_attachment_image_alt );
888
  }
889
  }
890
+
891
  $inline_data .= "</div>\r\n";
892
  }
893
 
949
  }
950
 
951
  $inline_data = apply_filters( 'mla_list_table_build_inline_data', $inline_data, $item );
952
+
953
  $inline_data .= "</div>\r\n";
954
 
955
  return $inline_data;
972
  $parent_title = sprintf( '%1$d %2$s', $item->post_parent, __( '(no title)', 'media-library-assistant' ) );
973
  }
974
 
975
+ $parent = sprintf( '<a href="%1$s" title="' . __( 'Filter by', 'media-library-assistant' ) . ' ' . __( 'Parent ID', 'media-library-assistant' ) . '">(parent:%2$s)</a>', esc_url( add_query_arg( array_merge( self::mla_submenu_arguments( false ), array(
976
  'page' => MLA::ADMIN_PAGE_SLUG,
977
  'parent' => $item->post_parent,
978
  'heading_suffix' => urlencode( __( 'Parent', 'media-library-assistant' ) . ': ' . $parent_title )
1064
  $parent_title = __( '(no title: bad ID)', 'media-library-assistant' );
1065
  }
1066
 
1067
+ return sprintf( '<a href="%1$s" title="' . __( 'Filter by', 'media-library-assistant' ) . ' ' . __( 'Parent ID', 'media-library-assistant' ) . '">%2$s</a>', esc_url( add_query_arg( array_merge( self::mla_submenu_arguments( false ), array(
1068
  'page' => MLA::ADMIN_PAGE_SLUG,
1069
  'parent' => $item->post_parent,
1070
  'heading_suffix' => urlencode( __( 'Parent', 'media-library-assistant' ) . ': ' . $parent_title )
1098
  if ( !MLAOptions::$process_featured_in ) {
1099
  return __( 'Disabled', 'media-library-assistant' );
1100
  }
1101
+
1102
  /*
1103
  * Move parent to the top of the list
1104
  */
1112
  $value = '';
1113
  foreach ( $features as $feature ) {
1114
  $status = self::_format_post_status( $feature->post_status );
1115
+
1116
  if ( $feature->ID == $item->post_parent ) {
1117
  $parent = ',<br>' . __( 'PARENT', 'media-library-assistant' );
1118
  } else {
1158
  unset( $inserts[ $item->post_parent ] );
1159
  array_unshift( $inserts, $parent );
1160
  }
1161
+
1162
  foreach ( $inserts as $insert ) {
1163
  $status = self::_format_post_status( $insert->post_status );
1164
 
1203
  unset( $galleries[ $item->post_parent ] );
1204
  array_unshift( $galleries, $parent );
1205
  }
1206
+
1207
  $value = '';
1208
  foreach ( $galleries as $ID => $gallery ) {
1209
  $status = self::_format_post_status( $gallery['post_status'] );
1210
+
1211
  if ( $gallery['ID'] == $item->post_parent ) {
1212
  $parent = ',<br>' . __( 'PARENT', 'media-library-assistant' );
1213
  } else {
1248
  unset( $mla_galleries[ $item->post_parent ] );
1249
  array_unshift( $mla_galleries, $parent );
1250
  }
1251
+
1252
  $value = '';
1253
  foreach ( $mla_galleries as $gallery ) {
1254
  $status = self::_format_post_status( $gallery['post_status'] );
1255
+
1256
  if ( $gallery['ID'] == $item->post_parent ) {
1257
  $parent = ',<br>' . __( 'PARENT', 'media-library-assistant' );
1258
  } else {
1286
  } else {
1287
  $alt_text = $item->mla_wp_attachment_image_alt;
1288
  }
1289
+
1290
  return sprintf( '<a href="%1$s" title="' . __( 'Filter by', 'media-library-assistant' ) . ' &#8220;%2$s&#8221;">%3$s</a>', esc_url( add_query_arg( array_merge( self::mla_submenu_arguments( false ), array(
1291
  'page' => MLA::ADMIN_PAGE_SLUG,
1292
  'mla-metakey' => '_wp_attachment_image_alt',
1381
  */
1382
  function column_date( $item ) {
1383
  global $post;
1384
+
1385
  if ( '0000-00-00 00:00:00' == $item->post_date ) {
1386
  $h_time = __( 'Unpublished', 'media-library-assistant' );
1387
  } else {
1447
  $user = get_user_by( 'id', $item->post_author );
1448
 
1449
  if ( isset( $user->data->display_name ) ) {
1450
+ return sprintf( '<a href="%s" title="' . __( 'Filter by', 'media-library-assistant' ) . ' ' . __( 'Author', 'media-library-assistant' ) . '">%s</a>', esc_url( add_query_arg( array_merge( self::mla_submenu_arguments( false ), array(
1451
  'page' => MLA::ADMIN_PAGE_SLUG,
1452
  'author' => $item->post_author,
1453
  'heading_suffix' => urlencode( __( 'Author', 'media-library-assistant' ) . ': ' . $user->data->display_name )
1486
 
1487
  $parent = sprintf( '%1$s<br>%2$s<br>%3$s', /*%1$s*/ $parent_title, /*%2$s*/ mysql2date( __( 'Y/m/d', 'media-library-assistant' ), $parent_date ), /*%3$s*/ $parent_type ); // . "<br>\r\n";
1488
  } else {
1489
+ $parent = '(' . _x( 'Unattached', 'table_view_singular', 'media-library-assistant' ) . ')';
1490
  }
1491
 
1492
  $set_parent = sprintf( '<a class="hide-if-no-js" id="mla-child-%2$s" onclick="mla.inlineEditAttachment.tableParentOpen( \'%1$s\',\'%2$s\',\'%3$s\' ); return false;" href="#the-list">%4$s</a><br>', /*%1$s*/ $item->post_parent, /*%2$s*/ $item->ID, /*%3$s*/ esc_attr( $item->post_title ), /*%4$s*/ __( 'Set Parent', 'media-library-assistant' ) );
1540
  } else {
1541
  $columns = self::$default_hidden_columns;
1542
  }
1543
+
1544
  return apply_filters( 'mla_list_table_get_hidden_columns', $columns );
1545
  }
1546
 
1581
  *
1582
  * @return string | false HTML for link to display the view, false if count = zero
1583
  */
1584
+ private static function _get_view( $view_slug, $current_view ) {
1585
  global $wpdb;
1586
  static $mla_types = NULL, $posts_per_type, $post_mime_types, $avail_post_mime_types, $matches, $num_posts;
1587
 
1862
  if ( is_null( $total_items ) ) {
1863
  $total_items = MLAData::mla_count_list_table_items( $_REQUEST, ( ( $current_page - 1 ) * $per_page ), $per_page );
1864
  }
1865
+
1866
  /*
1867
  * Register the pagination options & calculations.
1868
  */
includes/class-mla-main.php CHANGED
@@ -29,7 +29,16 @@ class MLA {
29
  *
30
  * @var string
31
  */
32
- const CURRENT_MLA_VERSION = '2.02';
 
 
 
 
 
 
 
 
 
33
 
34
  /**
35
  * Slug for registering and enqueueing plugin style sheet
@@ -245,7 +254,7 @@ class MLA {
245
  * @return void
246
  */
247
  public static function mla_admin_init_action() {
248
- //error_log( 'DEBUG: mla_admin_init_action $_REQUEST = ' . var_export( $_REQUEST, true ), 0 );
249
  /*
250
  * Process secure file download requests
251
  */
@@ -770,9 +779,9 @@ class MLA {
770
  if( ini_get( 'zlib.output_compression' ) ) {
771
  ini_set( 'zlib.output_compression', 'Off' );
772
  }
773
-
774
  $file_name = stripslashes( $_REQUEST['mla_download_file'] );
775
-
776
  header('Pragma: public'); // required
777
  header('Expires: 0'); // no cache
778
  header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
@@ -783,18 +792,18 @@ class MLA {
783
  header('Content-Transfer-Encoding: binary');
784
  header('Content-Length: '.filesize( $file_name )); // provide file size
785
  header('Connection: close');
786
-
787
  readfile( $file_name );
788
-
789
  if ( isset( $_REQUEST['mla_download_disposition'] ) && 'delete' == $_REQUEST['mla_download_disposition'] ) {
790
  @unlink( $file_name );
791
  }
792
-
793
  exit();
794
  } else {
795
  $message = __( 'ERROR', 'media-library-assistant' ) . ': ' . 'download argument(s) not set.';
796
  }
797
-
798
  echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';
799
  echo '<html xmlns="http://www.w3.org/1999/xhtml">';
800
  echo '<head>';
@@ -856,14 +865,21 @@ class MLA {
856
  */
857
  public static function mla_process_bulk_action( $bulk_action, $request = NULL ) {
858
  $page_content = array( 'message' => '', 'body' => '', 'unchanged' => 0, 'success' => 0, 'failure' => 0, 'item_results' => array() );
859
-
 
 
 
 
 
860
  if ( NULL == $request ) {
861
  $request = $_REQUEST;
862
- $do_cleanup = true;
863
  } else {
864
- $do_cleanup = false;
865
  }
866
-
 
 
867
  if ( isset( $request['cb_attachment'] ) ) {
868
  $item_content = apply_filters( 'mla_list_table_begin_bulk_action', NULL, $bulk_action );
869
  if ( is_null( $item_content ) ) {
@@ -880,10 +896,10 @@ class MLA {
880
  if ( isset( $item_content['body'] ) ) {
881
  $page_content['body'] = $item_content['body'];
882
  }
883
-
884
  return $page_content;
885
  }
886
-
887
  if ( !empty( $request['bulk_custom_field_map'] ) ) {
888
  do_action( 'mla_begin_mapping', 'bulk_custom', NULL );
889
  } elseif ( !empty( $request['bulk_map'] ) ) {
@@ -896,6 +912,8 @@ class MLA {
896
  continue;
897
  }
898
 
 
 
899
  $item_content = apply_filters( 'mla_list_table_bulk_action', NULL, $bulk_action, $post_id );
900
  if ( is_null( $item_content ) ) {
901
  $prevent_default = false;
@@ -904,7 +922,7 @@ class MLA {
904
  $prevent_default = isset( $item_content['prevent_default'] ) ? $item_content['prevent_default'] : false;
905
  $custom_message = isset( $item_content['message'] ) ? $item_content['message'] : '';
906
  }
907
-
908
  if ( ! $prevent_default ) {
909
  switch ( $bulk_action ) {
910
  case 'delete':
@@ -997,7 +1015,7 @@ class MLA {
997
  * Custom field support
998
  */
999
  $custom_fields = array();
1000
- foreach (MLAOptions::mla_custom_field_support( 'bulk_edit' ) as $slug => $label ) {
1001
  if ( isset( $request[ $slug ] ) ) {
1002
  $test_value = self::_process_bulk_value( $post_id, $request[ $slug ] );
1003
  if ( ! empty( $test_value ) ) {
@@ -1038,7 +1056,7 @@ class MLA {
1038
  if ( ',' !== $comma ) {
1039
  $tags = str_replace( $comma, ',', $terms );
1040
  }
1041
-
1042
  $fragments = explode( ',', trim( $terms, " \n\t\r\0\x0B," ) );
1043
  $terms = array();
1044
  foreach( $fragments as $fragment ) {
@@ -1069,7 +1087,7 @@ class MLA {
1069
  $current_terms[ $new_term->name ] = $new_term->name;
1070
  }
1071
  }
1072
-
1073
  if ( 'add' == $tax_action ) {
1074
  /*
1075
  * Add new terms; remove existing terms
@@ -1079,7 +1097,7 @@ class MLA {
1079
  unset( $terms[ $index ] );
1080
  }
1081
  }
1082
-
1083
  $do_update = ! empty( $terms );
1084
  } elseif ( 'remove' == $tax_action ) {
1085
  /*
@@ -1090,7 +1108,7 @@ class MLA {
1090
  unset( $terms[ $index ] );
1091
  }
1092
  }
1093
-
1094
  $do_update = ! empty( $terms );
1095
  } else {
1096
  /*
@@ -1105,7 +1123,7 @@ class MLA {
1105
  break; // not a match; stop checking
1106
  }
1107
  }
1108
-
1109
  $do_update = ! empty( $current_terms );
1110
  }
1111
 
@@ -1124,7 +1142,7 @@ class MLA {
1124
  break;
1125
  default:
1126
  $item_content = apply_filters( 'mla_list_table_custom_bulk_action', NULL, $bulk_action, $post_id );
1127
-
1128
  if ( is_null( $item_content ) ) {
1129
  $prevent_default = false;
1130
  /* translators: 1: ERROR tag 2: bulk action */
@@ -1134,7 +1152,7 @@ class MLA {
1134
  }
1135
  } // switch $bulk_action
1136
  } // ! $prevent_default
1137
-
1138
  // Custom action can set $prevent_default, so test again.
1139
  if ( ! $prevent_default ) {
1140
  if ( ! empty( $custom_message ) ) {
@@ -1145,11 +1163,11 @@ class MLA {
1145
  $item_content['message'] = $custom_message . '<br>' . $item_content['message'];
1146
  }
1147
  }
1148
-
1149
  $page_content['item_results'][ $post_id ] = array( 'result' => 'unknown', 'message' => $item_content['message'] );
1150
  if ( ! empty( $item_content['message'] ) ) {
1151
  $page_content['message'] .= $item_content['message'] . '<br>';
1152
-
1153
  if ( false !== strpos( $item_content['message'], __( 'no changes detected', 'media-library-assistant' ) ) ) {
1154
  $page_content['unchanged'] += 1;
1155
  $page_content['item_results'][ $post_id ]['result'] = 'unchanged';
@@ -1177,7 +1195,7 @@ class MLA {
1177
  $page_content['body'] = $item_content['body'];
1178
  }
1179
 
1180
- if ( $do_cleanup ) {
1181
  unset( $_REQUEST['post_title'] );
1182
  unset( $_REQUEST['post_excerpt'] );
1183
  unset( $_REQUEST['post_content'] );
@@ -1188,10 +1206,10 @@ class MLA {
1188
  unset( $_REQUEST['post_author'] );
1189
  unset( $_REQUEST['tax_input'] );
1190
  unset( $_REQUEST['tax_action'] );
1191
-
1192
  foreach (MLAOptions::mla_custom_field_support( 'bulk_edit' ) as $slug => $label )
1193
  unset( $_REQUEST[ $slug ] );
1194
-
1195
  unset( $_REQUEST['cb_attachment'] );
1196
  }
1197
  } else { // isset cb_attachment
@@ -1199,14 +1217,14 @@ class MLA {
1199
  $page_content['message'] = sprintf( __( 'Bulk Action %1$s - no items selected.', 'media-library-assistant' ), $bulk_action );
1200
  }
1201
 
1202
- if ( $do_cleanup ) {
1203
  unset( $_REQUEST['action'] );
1204
  unset( $_REQUEST['bulk_custom_field_map'] );
1205
  unset( $_REQUEST['bulk_map'] );
1206
  unset( $_REQUEST['bulk_edit'] );
1207
  unset( $_REQUEST['action2'] );
1208
  }
1209
-
1210
  return $page_content;
1211
  }
1212
 
@@ -1246,7 +1264,7 @@ class MLA {
1246
  echo "<h2>{$page_title}"; // trailing </h2> is action-specific
1247
 
1248
  if ( !current_user_can( 'upload_files' ) ) {
1249
- echo " - Error</h2>\n";
1250
  wp_die( __( 'You do not have permission to manage attachments.', 'media-library-assistant' ) );
1251
  }
1252
 
@@ -1369,12 +1387,12 @@ class MLA {
1369
  break;
1370
  case self::MLA_ADMIN_SET_PARENT:
1371
  $new_data = array( 'post_parent' => $_REQUEST['found_post_id'] );
1372
-
1373
  foreach( $_REQUEST['children'] as $child ) {
1374
  $item_content = MLAData::mla_update_single_item( $child, $new_data );
1375
  $page_content['message'] .= $item_content['message'] . '<br>';
1376
  }
1377
-
1378
  unset( $_REQUEST['parent'] );
1379
  unset( $_REQUEST['children'] );
1380
  unset( $_REQUEST['mla-set-parent-ajax-nonce'] );
@@ -1409,7 +1427,7 @@ class MLA {
1409
  } // Unknown mla_admin_action
1410
  } // switch ($_REQUEST['mla_admin_action'])
1411
  } // ! $prevent_default
1412
-
1413
  if ( ! empty( $custom_message ) ) {
1414
  $page_content['message'] = $custom_message . $page_content['message'];
1415
  }
@@ -1516,7 +1534,7 @@ class MLA {
1516
  // Fetch, prepare, sort, and filter our data...
1517
  $MLAListTable->prepare_items();
1518
  $MLAListTable->views();
1519
-
1520
  $view_arguments = MLA_List_Table::mla_submenu_arguments();
1521
  if ( isset( $view_arguments['lang'] ) ) {
1522
  $form_url = 'upload.php?page=' . self::ADMIN_PAGE_SLUG . '&lang=' . $view_arguments['lang'];
@@ -1724,7 +1742,7 @@ class MLA {
1724
  */
1725
  switch ( $_REQUEST['bulk_action'] ) {
1726
  case 'bulk_custom_field_map':
1727
- $_REQUEST['bulk_custom_field_map'] = __( 'Map Custom Field Metadata', 'media-library-assistant' );
1728
  break;
1729
  case 'bulk_map':
1730
  $_REQUEST['bulk_map'] = __( 'Map IPTC/EXIF metadata', 'media-library-assistant' );
@@ -1732,7 +1750,7 @@ class MLA {
1732
  case 'bulk_edit':
1733
  $_REQUEST['bulk_edit'] = __( 'Update', 'media-library-assistant' );
1734
  }
1735
-
1736
  $item_content = (object) self::mla_process_bulk_action( 'edit' );
1737
  wp_send_json_success( $item_content );
1738
  }
@@ -1798,8 +1816,7 @@ class MLA {
1798
  * Flat taxonomy strings must be cleaned up and duplicates removed
1799
  */
1800
  $tax_output = array();
1801
- $tax_input = $_REQUEST['tax_input'];
1802
- foreach ( $tax_input as $tax_name => $tax_value ) {
1803
  if ( ! is_array( $tax_value ) ) {
1804
  $comma = _x( ',', 'tag_delimiter', 'media-library-assistant' );
1805
  if ( ',' != $comma ) {
@@ -1824,10 +1841,10 @@ class MLA {
1824
  } // ! array( $tax_value )
1825
 
1826
  $tax_output[$tax_name] = $tax_value;
1827
- } // foreach $tax_input
1828
- } else { // ! empty( $_REQUEST['tax_input'] )
1829
- $tax_output = NULL;
1830
- }
1831
 
1832
  $item_content = apply_filters( 'mla_list_table_inline_action', NULL, $post_id );
1833
  if ( is_null( $item_content ) ) {
@@ -1839,9 +1856,9 @@ class MLA {
1839
  }
1840
 
1841
  if ( ! $prevent_default ) {
1842
- $results = MLAData::mla_update_single_item( $post_id, $_REQUEST, $tax_output );
1843
  }
1844
-
1845
  $new_item = (object) MLAData::mla_get_attachment_by_id( $post_id );
1846
 
1847
  // Create an instance of our package class and echo the new HTML
@@ -2133,14 +2150,14 @@ class MLA {
2133
  'Do not allow' => __( 'Do not allow', 'media-library-assistant' ),
2134
  'bulk_custom_fields' => $bulk_custom_fields,
2135
  'Map IPTC/EXIF metadata' => __( 'Map IPTC/EXIF metadata', 'media-library-assistant' ),
2136
- 'Map Custom Field metadata' => __( 'Map Custom Field Metadata', 'media-library-assistant' ),
2137
  'Bulk Waiting' => __( 'Waiting', 'media-library-assistant' ),
2138
  'Bulk Running' => __( 'In-process', 'media-library-assistant' ),
2139
  'Bulk Complete' => __( 'Complete', 'media-library-assistant' ),
2140
  'Refresh' => __( 'Refresh', 'media-library-assistant' ),
2141
  'set_parent_form' => $set_parent_form,
2142
  );
2143
-
2144
  $page_values = apply_filters( 'mla_list_table_inline_values', $page_values );
2145
  $page_template = apply_filters( 'mla_list_table_inline_template', $page_template_array['page'] );
2146
  $parse_value = MLAData::mla_parse_template( $page_template, $page_values );
29
  *
30
  * @var string
31
  */
32
+ const CURRENT_MLA_VERSION = '2.10';
33
+
34
+ /**
35
+ * Current date for Development Version, empty for production versions
36
+ *
37
+ * @since 2.10
38
+ *
39
+ * @var string
40
+ */
41
+ const MLA_DEVELOPMENT_VERSION = '';
42
 
43
  /**
44
  * Slug for registering and enqueueing plugin style sheet
254
  * @return void
255
  */
256
  public static function mla_admin_init_action() {
257
+ //error_log( 'DEBUG: MLA::mla_admin_init_action $_REQUEST = ' . var_export( $_REQUEST, true ), 0 );
258
  /*
259
  * Process secure file download requests
260
  */
779
  if( ini_get( 'zlib.output_compression' ) ) {
780
  ini_set( 'zlib.output_compression', 'Off' );
781
  }
782
+
783
  $file_name = stripslashes( $_REQUEST['mla_download_file'] );
784
+
785
  header('Pragma: public'); // required
786
  header('Expires: 0'); // no cache
787
  header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
792
  header('Content-Transfer-Encoding: binary');
793
  header('Content-Length: '.filesize( $file_name )); // provide file size
794
  header('Connection: close');
795
+
796
  readfile( $file_name );
797
+
798
  if ( isset( $_REQUEST['mla_download_disposition'] ) && 'delete' == $_REQUEST['mla_download_disposition'] ) {
799
  @unlink( $file_name );
800
  }
801
+
802
  exit();
803
  } else {
804
  $message = __( 'ERROR', 'media-library-assistant' ) . ': ' . 'download argument(s) not set.';
805
  }
806
+
807
  echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';
808
  echo '<html xmlns="http://www.w3.org/1999/xhtml">';
809
  echo '<head>';
865
  */
866
  public static function mla_process_bulk_action( $bulk_action, $request = NULL ) {
867
  $page_content = array( 'message' => '', 'body' => '', 'unchanged' => 0, 'success' => 0, 'failure' => 0, 'item_results' => array() );
868
+ $custom_field_map = MLAOptions::mla_custom_field_support( 'bulk_edit' );
869
+
870
+ /*
871
+ * do_cleanup will remove the bulk edit elements from the $_REQUEST super array.
872
+ * It is passed in the $request so it can be filtered.
873
+ */
874
  if ( NULL == $request ) {
875
  $request = $_REQUEST;
876
+ $request['mla_bulk_action_do_cleanup'] = true;
877
  } else {
878
+ $request['mla_bulk_action_do_cleanup'] = false;
879
  }
880
+
881
+ $request = apply_filters( 'mla_list_table_bulk_action_initial_request', $request, $bulk_action, $custom_field_map );
882
+
883
  if ( isset( $request['cb_attachment'] ) ) {
884
  $item_content = apply_filters( 'mla_list_table_begin_bulk_action', NULL, $bulk_action );
885
  if ( is_null( $item_content ) ) {
896
  if ( isset( $item_content['body'] ) ) {
897
  $page_content['body'] = $item_content['body'];
898
  }
899
+
900
  return $page_content;
901
  }
902
+
903
  if ( !empty( $request['bulk_custom_field_map'] ) ) {
904
  do_action( 'mla_begin_mapping', 'bulk_custom', NULL );
905
  } elseif ( !empty( $request['bulk_map'] ) ) {
912
  continue;
913
  }
914
 
915
+ $request = apply_filters( 'mla_list_table_bulk_action_item_request', $request, $bulk_action, $post_id, $custom_field_map );
916
+
917
  $item_content = apply_filters( 'mla_list_table_bulk_action', NULL, $bulk_action, $post_id );
918
  if ( is_null( $item_content ) ) {
919
  $prevent_default = false;
922
  $prevent_default = isset( $item_content['prevent_default'] ) ? $item_content['prevent_default'] : false;
923
  $custom_message = isset( $item_content['message'] ) ? $item_content['message'] : '';
924
  }
925
+
926
  if ( ! $prevent_default ) {
927
  switch ( $bulk_action ) {
928
  case 'delete':
1015
  * Custom field support
1016
  */
1017
  $custom_fields = array();
1018
+ foreach ( $custom_field_map as $slug => $label ) {
1019
  if ( isset( $request[ $slug ] ) ) {
1020
  $test_value = self::_process_bulk_value( $post_id, $request[ $slug ] );
1021
  if ( ! empty( $test_value ) ) {
1056
  if ( ',' !== $comma ) {
1057
  $tags = str_replace( $comma, ',', $terms );
1058
  }
1059
+
1060
  $fragments = explode( ',', trim( $terms, " \n\t\r\0\x0B," ) );
1061
  $terms = array();
1062
  foreach( $fragments as $fragment ) {
1087
  $current_terms[ $new_term->name ] = $new_term->name;
1088
  }
1089
  }
1090
+
1091
  if ( 'add' == $tax_action ) {
1092
  /*
1093
  * Add new terms; remove existing terms
1097
  unset( $terms[ $index ] );
1098
  }
1099
  }
1100
+
1101
  $do_update = ! empty( $terms );
1102
  } elseif ( 'remove' == $tax_action ) {
1103
  /*
1108
  unset( $terms[ $index ] );
1109
  }
1110
  }
1111
+
1112
  $do_update = ! empty( $terms );
1113
  } else {
1114
  /*
1123
  break; // not a match; stop checking
1124
  }
1125
  }
1126
+
1127
  $do_update = ! empty( $current_terms );
1128
  }
1129
 
1142
  break;
1143
  default:
1144
  $item_content = apply_filters( 'mla_list_table_custom_bulk_action', NULL, $bulk_action, $post_id );
1145
+
1146
  if ( is_null( $item_content ) ) {
1147
  $prevent_default = false;
1148
  /* translators: 1: ERROR tag 2: bulk action */
1152
  }
1153
  } // switch $bulk_action
1154
  } // ! $prevent_default
1155
+
1156
  // Custom action can set $prevent_default, so test again.
1157
  if ( ! $prevent_default ) {
1158
  if ( ! empty( $custom_message ) ) {
1163
  $item_content['message'] = $custom_message . '<br>' . $item_content['message'];
1164
  }
1165
  }
1166
+
1167
  $page_content['item_results'][ $post_id ] = array( 'result' => 'unknown', 'message' => $item_content['message'] );
1168
  if ( ! empty( $item_content['message'] ) ) {
1169
  $page_content['message'] .= $item_content['message'] . '<br>';
1170
+
1171
  if ( false !== strpos( $item_content['message'], __( 'no changes detected', 'media-library-assistant' ) ) ) {
1172
  $page_content['unchanged'] += 1;
1173
  $page_content['item_results'][ $post_id ]['result'] = 'unchanged';
1195
  $page_content['body'] = $item_content['body'];
1196
  }
1197
 
1198
+ if ( $request['mla_bulk_action_do_cleanup'] ) {
1199
  unset( $_REQUEST['post_title'] );
1200
  unset( $_REQUEST['post_excerpt'] );
1201
  unset( $_REQUEST['post_content'] );
1206
  unset( $_REQUEST['post_author'] );
1207
  unset( $_REQUEST['tax_input'] );
1208
  unset( $_REQUEST['tax_action'] );
1209
+
1210
  foreach (MLAOptions::mla_custom_field_support( 'bulk_edit' ) as $slug => $label )
1211
  unset( $_REQUEST[ $slug ] );
1212
+
1213
  unset( $_REQUEST['cb_attachment'] );
1214
  }
1215
  } else { // isset cb_attachment
1217
  $page_content['message'] = sprintf( __( 'Bulk Action %1$s - no items selected.', 'media-library-assistant' ), $bulk_action );
1218
  }
1219
 
1220
+ if ( $request['mla_bulk_action_do_cleanup'] ) {
1221
  unset( $_REQUEST['action'] );
1222
  unset( $_REQUEST['bulk_custom_field_map'] );
1223
  unset( $_REQUEST['bulk_map'] );
1224
  unset( $_REQUEST['bulk_edit'] );
1225
  unset( $_REQUEST['action2'] );
1226
  }
1227
+
1228
  return $page_content;
1229
  }
1230
 
1264
  echo "<h2>{$page_title}"; // trailing </h2> is action-specific
1265
 
1266
  if ( !current_user_can( 'upload_files' ) ) {
1267
+ echo ' - ' . __( 'ERROR', 'media-library-assistant' ) . "</h2>\n";
1268
  wp_die( __( 'You do not have permission to manage attachments.', 'media-library-assistant' ) );
1269
  }
1270
 
1387
  break;
1388
  case self::MLA_ADMIN_SET_PARENT:
1389
  $new_data = array( 'post_parent' => $_REQUEST['found_post_id'] );
1390
+
1391
  foreach( $_REQUEST['children'] as $child ) {
1392
  $item_content = MLAData::mla_update_single_item( $child, $new_data );
1393
  $page_content['message'] .= $item_content['message'] . '<br>';
1394
  }
1395
+
1396
  unset( $_REQUEST['parent'] );
1397
  unset( $_REQUEST['children'] );
1398
  unset( $_REQUEST['mla-set-parent-ajax-nonce'] );
1427
  } // Unknown mla_admin_action
1428
  } // switch ($_REQUEST['mla_admin_action'])
1429
  } // ! $prevent_default
1430
+
1431
  if ( ! empty( $custom_message ) ) {
1432
  $page_content['message'] = $custom_message . $page_content['message'];
1433
  }
1534
  // Fetch, prepare, sort, and filter our data...
1535
  $MLAListTable->prepare_items();
1536
  $MLAListTable->views();
1537
+
1538
  $view_arguments = MLA_List_Table::mla_submenu_arguments();
1539
  if ( isset( $view_arguments['lang'] ) ) {
1540
  $form_url = 'upload.php?page=' . self::ADMIN_PAGE_SLUG . '&lang=' . $view_arguments['lang'];
1742
  */
1743
  switch ( $_REQUEST['bulk_action'] ) {
1744
  case 'bulk_custom_field_map':
1745
+ $_REQUEST['bulk_custom_field_map'] = __( 'Map Custom Field metadata', 'media-library-assistant' );
1746
  break;
1747
  case 'bulk_map':
1748
  $_REQUEST['bulk_map'] = __( 'Map IPTC/EXIF metadata', 'media-library-assistant' );
1750
  case 'bulk_edit':
1751
  $_REQUEST['bulk_edit'] = __( 'Update', 'media-library-assistant' );
1752
  }
1753
+
1754
  $item_content = (object) self::mla_process_bulk_action( 'edit' );
1755
  wp_send_json_success( $item_content );
1756
  }
1816
  * Flat taxonomy strings must be cleaned up and duplicates removed
1817
  */
1818
  $tax_output = array();
1819
+ foreach ( $_REQUEST['tax_input'] as $tax_name => $tax_value ) {
 
1820
  if ( ! is_array( $tax_value ) ) {
1821
  $comma = _x( ',', 'tag_delimiter', 'media-library-assistant' );
1822
  if ( ',' != $comma ) {
1841
  } // ! array( $tax_value )
1842
 
1843
  $tax_output[$tax_name] = $tax_value;
1844
+ } // foreach tax_input
1845
+
1846
+ $_REQUEST['tax_input'] = $tax_output;
1847
+ } // ! empty( $_REQUEST['tax_input'] )
1848
 
1849
  $item_content = apply_filters( 'mla_list_table_inline_action', NULL, $post_id );
1850
  if ( is_null( $item_content ) ) {
1856
  }
1857
 
1858
  if ( ! $prevent_default ) {
1859
+ $results = MLAData::mla_update_single_item( $post_id, $_REQUEST, $_REQUEST['tax_input'] );
1860
  }
1861
+
1862
  $new_item = (object) MLAData::mla_get_attachment_by_id( $post_id );
1863
 
1864
  // Create an instance of our package class and echo the new HTML
2150
  'Do not allow' => __( 'Do not allow', 'media-library-assistant' ),
2151
  'bulk_custom_fields' => $bulk_custom_fields,
2152
  'Map IPTC/EXIF metadata' => __( 'Map IPTC/EXIF metadata', 'media-library-assistant' ),
2153
+ 'Map Custom Field metadata' => __( 'Map Custom Field metadata', 'media-library-assistant' ),
2154
  'Bulk Waiting' => __( 'Waiting', 'media-library-assistant' ),
2155
  'Bulk Running' => __( 'In-process', 'media-library-assistant' ),
2156
  'Bulk Complete' => __( 'Complete', 'media-library-assistant' ),
2157
  'Refresh' => __( 'Refresh', 'media-library-assistant' ),
2158
  'set_parent_form' => $set_parent_form,
2159
  );
2160
+
2161
  $page_values = apply_filters( 'mla_list_table_inline_values', $page_values );
2162
  $page_template = apply_filters( 'mla_list_table_inline_template', $page_template_array['page'] );
2163
  $parse_value = MLAData::mla_parse_template( $page_template, $page_values );
includes/class-mla-media-modal.php CHANGED
@@ -404,13 +404,13 @@ class MLAModal {
404
  self::$mla_media_modal_settings['screen'] = 'modal';
405
  if ( function_exists( 'get_current_screen' ) ) {
406
  $screen = get_current_screen();
407
-
408
  if ( is_object( $screen) && 'upload' == $screen->base ) {
409
  self::$mla_media_modal_settings['screen'] = 'grid';
410
  }
411
  }
412
 
413
- self::$mla_media_modal_settings['comma'] = _x( ',', 'tag delimiter' );
414
  self::$mla_media_modal_settings['ajaxNonce'] = wp_create_nonce( MLA::MLA_ADMIN_NONCE );
415
  self::$mla_media_modal_settings['mimeTypes'] = MLAMime::mla_pluck_table_views();
416
  self::$mla_media_modal_settings['mimeTypes']['detached'] = MLAOptions::$mla_option_definitions[ MLAOptions::MLA_POST_MIME_TYPES ]['std']['unattached']['plural'];
@@ -418,7 +418,7 @@ class MLAModal {
418
  if ( EMPTY_TRASH_DAYS && MEDIA_TRASH ) {
419
  self::$mla_media_modal_settings['mimeTypes']['trash'] = MLAOptions::$mla_option_definitions[ MLAOptions::MLA_POST_MIME_TYPES ]['std']['trash']['plural'];
420
  }
421
-
422
  self::$mla_media_modal_settings['months'] = self::_months_dropdown('attachment');
423
 
424
  self::$mla_media_modal_settings['termsTaxonomy'] = MLAOptions::mla_taxonomy_support('', 'filter');
@@ -484,7 +484,7 @@ class MLAModal {
484
  );
485
 
486
  $initial_values = apply_filters( 'mla_media_modal_initial_filters', $initial_values );
487
-
488
  /*
489
  * Except for filterMime/post_mime_type, these will be passed
490
  * back to the server in the query['s'] field.
@@ -538,7 +538,7 @@ class MLAModal {
538
  */
539
  if ( function_exists( 'get_current_screen' ) ) {
540
  $screen = get_current_screen();
541
-
542
  if ( is_object( $screen ) ) {
543
  if ( 'upload' == $screen->base ) {
544
  if ( 'checked' != MLAOptions::mla_get_option( MLAOptions::MLA_MEDIA_GRID_TOOLBAR ) ) {
@@ -576,7 +576,7 @@ class MLAModal {
576
  */
577
  if ( function_exists( 'get_current_screen' ) ) {
578
  $screen = get_current_screen();
579
-
580
  if ( 'upload' == $screen->base ) {
581
  if ( 'checked' != MLAOptions::mla_get_option( MLAOptions::MLA_MEDIA_GRID_TOOLBAR ) ) {
582
  return;
@@ -635,7 +635,7 @@ class MLAModal {
635
  //$cause_notice = $screen->bad_property;
636
  //trigger_error( 'mla_print_media_templates_action', E_USER_WARNING );
637
  //error_log( 'DEBUG: xdebug_get_function_stack = ' . var_export( xdebug_get_function_stack(), true), 0 );
638
-
639
  /*
640
  * If there's no action variable, we have nothing to do
641
  */
@@ -1089,14 +1089,14 @@ class MLAModal {
1089
  }
1090
 
1091
  $query['post_type'] = 'attachment';
1092
-
1093
  if ( empty( $query['status'] ) ) {
1094
  $query['post_status'] = 'inherit';
1095
  if ( current_user_can( get_post_type_object( 'attachment' )->cap->read_private_posts ) ) {
1096
  $query['post_status'] .= ',private';
1097
  }
1098
  }
1099
-
1100
  $query = MLAData::mla_query_media_modal_items( $query, $offset, $count );
1101
  $posts = array_map( 'wp_prepare_attachment_for_js', $query->posts );
1102
  $posts = array_filter( $posts );
@@ -1222,6 +1222,8 @@ class MLAModal {
1222
  'All terms' => __( 'All terms', 'media-library-assistant' ),
1223
  'terms_or_checked' => 'checked="checked"',
1224
  'Any term' => __( 'Any term', 'media-library-assistant' ),
 
 
1225
  'mla_terms_search_taxonomies' => $taxonomy_list,
1226
  );
1227
  $terms_search_tpl = MLAData::mla_parse_template( $page_template_array['mla-terms-search-div'], $page_values );
404
  self::$mla_media_modal_settings['screen'] = 'modal';
405
  if ( function_exists( 'get_current_screen' ) ) {
406
  $screen = get_current_screen();
407
+
408
  if ( is_object( $screen) && 'upload' == $screen->base ) {
409
  self::$mla_media_modal_settings['screen'] = 'grid';
410
  }
411
  }
412
 
413
+ self::$mla_media_modal_settings['comma'] = _x( ',', 'tag_delimiter', 'media-library-assistant' );
414
  self::$mla_media_modal_settings['ajaxNonce'] = wp_create_nonce( MLA::MLA_ADMIN_NONCE );
415
  self::$mla_media_modal_settings['mimeTypes'] = MLAMime::mla_pluck_table_views();
416
  self::$mla_media_modal_settings['mimeTypes']['detached'] = MLAOptions::$mla_option_definitions[ MLAOptions::MLA_POST_MIME_TYPES ]['std']['unattached']['plural'];
418
  if ( EMPTY_TRASH_DAYS && MEDIA_TRASH ) {
419
  self::$mla_media_modal_settings['mimeTypes']['trash'] = MLAOptions::$mla_option_definitions[ MLAOptions::MLA_POST_MIME_TYPES ]['std']['trash']['plural'];
420
  }
421
+
422
  self::$mla_media_modal_settings['months'] = self::_months_dropdown('attachment');
423
 
424
  self::$mla_media_modal_settings['termsTaxonomy'] = MLAOptions::mla_taxonomy_support('', 'filter');
484
  );
485
 
486
  $initial_values = apply_filters( 'mla_media_modal_initial_filters', $initial_values );
487
+
488
  /*
489
  * Except for filterMime/post_mime_type, these will be passed
490
  * back to the server in the query['s'] field.
538
  */
539
  if ( function_exists( 'get_current_screen' ) ) {
540
  $screen = get_current_screen();
541
+
542
  if ( is_object( $screen ) ) {
543
  if ( 'upload' == $screen->base ) {
544
  if ( 'checked' != MLAOptions::mla_get_option( MLAOptions::MLA_MEDIA_GRID_TOOLBAR ) ) {
576
  */
577
  if ( function_exists( 'get_current_screen' ) ) {
578
  $screen = get_current_screen();
579
+
580
  if ( 'upload' == $screen->base ) {
581
  if ( 'checked' != MLAOptions::mla_get_option( MLAOptions::MLA_MEDIA_GRID_TOOLBAR ) ) {
582
  return;
635
  //$cause_notice = $screen->bad_property;
636
  //trigger_error( 'mla_print_media_templates_action', E_USER_WARNING );
637
  //error_log( 'DEBUG: xdebug_get_function_stack = ' . var_export( xdebug_get_function_stack(), true), 0 );
638
+
639
  /*
640
  * If there's no action variable, we have nothing to do
641
  */
1089
  }
1090
 
1091
  $query['post_type'] = 'attachment';
1092
+
1093
  if ( empty( $query['status'] ) ) {
1094
  $query['post_status'] = 'inherit';
1095
  if ( current_user_can( get_post_type_object( 'attachment' )->cap->read_private_posts ) ) {
1096
  $query['post_status'] .= ',private';
1097
  }
1098
  }
1099
+
1100
  $query = MLAData::mla_query_media_modal_items( $query, $offset, $count );
1101
  $posts = array_map( 'wp_prepare_attachment_for_js', $query->posts );
1102
  $posts = array_filter( $posts );
1222
  'All terms' => __( 'All terms', 'media-library-assistant' ),
1223
  'terms_or_checked' => 'checked="checked"',
1224
  'Any term' => __( 'Any term', 'media-library-assistant' ),
1225
+ 'exact_checked' => '',
1226
+ 'Exact' => __( 'Exact', 'media-library-assistant' ),
1227
  'mla_terms_search_taxonomies' => $taxonomy_list,
1228
  );
1229
  $terms_search_tpl = MLAData::mla_parse_template( $page_template_array['mla-terms-search-div'], $page_values );
includes/class-mla-mime-types.php CHANGED
@@ -1451,28 +1451,28 @@ class MLAMime {
1451
 
1452
  $upload_items = array(
1453
  'all' => array(
1454
- 'singular' => _x( 'All', 'upload_list_table_view_singular', 'media_library-assistant' ),
1455
- 'plural' => _x( 'All', 'upload_list_table_view_plural', 'media_library-assistant' ),
1456
  'count' => 0 ),
1457
  'active' => array(
1458
- 'singular' => _x( 'Active', 'upload_list_table_view_singular', 'media_library-assistant' ),
1459
- 'plural' => _x( 'Active', 'upload_list_table_view_plural', 'media_library-assistant' ),
1460
  'count' => 0 ),
1461
  'inactive' => array(
1462
- 'singular' => _x( 'Inactive', 'upload_list_table_view_singular', 'media_library-assistant' ),
1463
- 'plural' => _x( 'Inactive', 'upload_list_table_view_plural', 'media_library-assistant' ),
1464
  'count' => 0 ),
1465
  'core' => array(
1466
- 'singular' => _x( 'WordPress', 'upload_list_table_view_singular', 'media_library-assistant' ),
1467
- 'plural' => _x( 'WordPress', 'upload_list_table_view_plural', 'media_library-assistant' ),
1468
  'count' => 0 ),
1469
  'mla' => array(
1470
- 'singular' => _x( 'MLA', 'upload_list_table_view_singular', 'media_library-assistant' ),
1471
- 'plural' => _x( 'MLA', 'upload_list_table_view_plural', 'media_library-assistant' ),
1472
  'count' => 0 ),
1473
  'custom' => array(
1474
- 'singular' => _x( 'Custom', 'upload_list_table_view_singular', 'media_library-assistant' ),
1475
- 'plural' => _x( 'Custom', 'upload_list_table_view_plural', 'media_library-assistant' ),
1476
  'count' => 0 ),
1477
  );
1478
 
@@ -1985,7 +1985,7 @@ class MLAMime {
1985
  $slug = pathinfo( 'X.' . strtolower( trim( $request['slug'] ) ), PATHINFO_EXTENSION );
1986
  if ( $slug != $request['slug'] ) {
1987
  /* translators: 1: element name 2: bad_value 3: good_value */
1988
- $messages .= sprintf( __( '<br>' . 'Changing %1$s "%2$s" to valid value "%3$s"', 'media-library-assistant' ), __( 'extension', 'media-library-assistant' ), $request['slug'], $slug );
1989
  }
1990
 
1991
  /*
@@ -2111,7 +2111,7 @@ class MLAMime {
2111
  if ( $slug != $original_slug ) {
2112
  if ( $slug != $request['slug'] ) {
2113
  /* translators: 1: element name 2: bad_value 3: good_value */
2114
- $messages .= sprintf( __( '<br>' . 'Changing new %1$s "%2$s" to valid value "%3$s"', 'media-library-assistant' ), __( 'extension', 'media-library-assistant' ), $request['slug'], $slug );
2115
  }
2116
 
2117
  /*
@@ -2122,7 +2122,7 @@ class MLAMime {
2122
  $errors .= '<br>' . sprintf( __( '%1$s: Could not add new extension "%2$s"; value already exists', 'media-library-assistant' ), __( 'ERROR', 'media-library-assistant' ), $slug );
2123
  } else {
2124
  /* translators: 1: element name 2: old_value 3: new_value */
2125
- $messages .= sprintf( '<br>' . __( 'Changing %1$s from "%2$s" to "%3$s"', 'media-library-assistant' ), __( 'extension', 'media-library-assistant' ), $original_slug, $slug );
2126
  }
2127
 
2128
  /*
1451
 
1452
  $upload_items = array(
1453
  'all' => array(
1454
+ 'singular' => _x( 'All', 'table_view_singular', 'media_library-assistant' ),
1455
+ 'plural' => _x( 'All', 'table_view_plural', 'media_library-assistant' ),
1456
  'count' => 0 ),
1457
  'active' => array(
1458
+ 'singular' => _x( 'Active', 'table_view_singular', 'media_library-assistant' ),
1459
+ 'plural' => _x( 'Active', 'table_view_plural', 'media_library-assistant' ),
1460
  'count' => 0 ),
1461
  'inactive' => array(
1462
+ 'singular' => _x( 'Inactive', 'table_view_singular', 'media_library-assistant' ),
1463
+ 'plural' => _x( 'Inactive', 'table_view_plural', 'media_library-assistant' ),
1464
  'count' => 0 ),
1465
  'core' => array(
1466
+ 'singular' => _x( 'WordPress', 'table_view_singular', 'media_library-assistant' ),
1467
+ 'plural' => _x( 'WordPress', 'table_view_plural', 'media_library-assistant' ),
1468
  'count' => 0 ),
1469
  'mla' => array(
1470
+ 'singular' => _x( 'MLA', 'table_view_singular', 'media_library-assistant' ),
1471
+ 'plural' => _x( 'MLA', 'table_view_plural', 'media_library-assistant' ),
1472
  'count' => 0 ),
1473
  'custom' => array(
1474
+ 'singular' => _x( 'Custom', 'table_view_singular', 'media_library-assistant' ),
1475
+ 'plural' => _x( 'Custom', 'table_view_plural', 'media_library-assistant' ),
1476
  'count' => 0 ),
1477
  );
1478
 
1985
  $slug = pathinfo( 'X.' . strtolower( trim( $request['slug'] ) ), PATHINFO_EXTENSION );
1986
  if ( $slug != $request['slug'] ) {
1987
  /* translators: 1: element name 2: bad_value 3: good_value */
1988
+ $messages .= sprintf( __( '<br>' . 'Changing %1$s "%2$s" to valid value "%3$s"', 'media-library-assistant' ), __( 'Extension', 'media-library-assistant' ), $request['slug'], $slug );
1989
  }
1990
 
1991
  /*
2111
  if ( $slug != $original_slug ) {
2112
  if ( $slug != $request['slug'] ) {
2113
  /* translators: 1: element name 2: bad_value 3: good_value */
2114
+ $messages .= sprintf( __( '<br>' . 'Changing new %1$s "%2$s" to valid value "%3$s"', 'media-library-assistant' ), __( 'Extension', 'media-library-assistant' ), $request['slug'], $slug );
2115
  }
2116
 
2117
  /*
2122
  $errors .= '<br>' . sprintf( __( '%1$s: Could not add new extension "%2$s"; value already exists', 'media-library-assistant' ), __( 'ERROR', 'media-library-assistant' ), $slug );
2123
  } else {
2124
  /* translators: 1: element name 2: old_value 3: new_value */
2125
+ $messages .= sprintf( '<br>' . __( 'Changing %1$s from "%2$s" to "%3$s"', 'media-library-assistant' ), __( 'Extension', 'media-library-assistant' ), $original_slug, $slug );
2126
  }
2127
 
2128
  /*
includes/class-mla-options.php CHANGED
@@ -824,7 +824,7 @@ class MLAOptions {
824
  array('tab' => 'general',
825
  'name' => __( 'Alignment', 'media-library-assistant' ),
826
  /* translators: 1: option name, e.g., Alignment, Link To or Size */
827
- 'help' => __( sprintf( 'Select a value for the default %1$s option in the Attachment Display Settings.', __( 'Alignment', 'media-library-assistant' ) ), 'media-library-assistant' ),
828
  'std' => 'default',
829
  'options' => array('default', 'left', 'center', 'right', 'none'),
830
  'texts' => array('&mdash; ' . __( 'Media Manager Default', 'media-library-assistant' ) . ' &mdash;', __( 'Left', 'media-library-assistant' ), __( 'Center', 'media-library-assistant' ), __( 'Right', 'media-library-assistant' ), __( 'None', 'media-library-assistant' )),
@@ -838,7 +838,7 @@ class MLAOptions {
838
  array('tab' => 'general',
839
  'name' => __( 'Link To', 'media-library-assistant' ),
840
  /* translators: 1: option name, e.g., Alignment, Link To or Size */
841
- 'help' => __( sprintf( 'Select a value for the default %1$s option in the Attachment Display Settings.', __( 'Link To', 'media-library-assistant' ) ), 'media-library-assistant' ),
842
  'std' => 'default',
843
  'options' => array('default', 'file', 'post', 'custom', 'none'),
844
  'texts' => array('&mdash; ' . __( 'Media Manager Default', 'media-library-assistant' ) . ' &mdash;', __( 'Media File', 'media-library-assistant' ), __( 'Attachment Page', 'media-library-assistant' ), __( 'Custom URL', 'media-library-assistant' ), __( 'None', 'media-library-assistant' )),
@@ -852,7 +852,7 @@ class MLAOptions {
852
  array('tab' => 'general',
853
  'name' => __( 'Size', 'media-library-assistant' ),
854
  /* translators: 1: option name, e.g., Alignment, Link To or Size */
855
- 'help' => __( sprintf( 'Select a value for the default %1$s option in the Attachment Display Settings.', __( 'Size', 'media-library-assistant' ) ), 'media-library-assistant' ),
856
  'std' => 'default',
857
  'options' => array('default', 'thumbnail', 'medium', 'large', 'full'),
858
  'texts' => array('&mdash; ' . __( 'Media Manager Default', 'media-library-assistant' ) . ' &mdash;', __( 'Thumbnail', 'media-library-assistant' ), __( 'Medium', 'media-library-assistant' ), __( 'Large', 'media-library-assistant' ), __( 'Full Size', 'media-library-assistant' )),
@@ -875,7 +875,7 @@ class MLAOptions {
875
  'options' => array(),
876
  'texts' => array(),
877
  /* translators: 1: template type 2: shortcode */
878
- 'help' => sprintf( __( 'Select the default %1$s for your %2$s shortcodes.', 'media-library-assistant' ), __( 'style template', 'media-library-assistant' ), '[mla_tag_cloud]' ) ),
879
 
880
  'default_tag_cloud_markup' =>
881
  array('tab' => '',
@@ -919,7 +919,7 @@ class MLAOptions {
919
  'options' => array(),
920
  'texts' => array(),
921
  /* translators: 1: template type 2: shortcode */
922
- 'help' => sprintf( __( 'Select the default %1$s for your %2$s shortcodes.', 'media-library-assistant' ), __( 'style template', 'media-library-assistant' ), '[mla_gallery]' ) ),
923
 
924
  'default_markup' =>
925
  array('tab' => 'mla_gallery',
@@ -955,6 +955,35 @@ class MLAOptions {
955
  'size' => 10,
956
  'help' => __( 'Enter the CSS "width" property value, in length (px, em, pt, etc.), percent (%), "auto" or "inherit".<br>&nbsp;&nbsp;Enter "calculate" (the default) to calculate the value taking the "margin" value into account.<br>&nbsp;&nbsp;Enter "exact" to calculate the value without considering the "margin" value.<br>&nbsp;&nbsp;Enter "none" to remove the property entirely.', 'media-library-assistant' )),
957
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
958
  /*
959
  * Managed by mla_get_style_templates and mla_put_style_templates
960
  */
@@ -1108,8 +1137,8 @@ class MLAOptions {
1108
  'help' => __( 'Post MIME Types help.', 'media-library-assistant' ),
1109
  'std' => array(
1110
  'all' => array(
1111
- 'singular' => _x( 'All', 'post_mime_types_singular', 'media-library-assistant' ),
1112
- 'plural' => _x( 'All', 'post_mime_types_plural', 'media-library-assistant' ),
1113
  'specification' => '',
1114
  'post_mime_type' => false,
1115
  'table_view' => true,
@@ -1117,8 +1146,8 @@ class MLAOptions {
1117
  'description' => _x( 'Built-in view', 'post_mime_types_description', 'media-library-assistant' )
1118
  ),
1119
  'image' => array(
1120
- 'singular' => _x( 'Image', 'post_mime_types_singular', 'media-library-assistant' ),
1121
- 'plural' => _x( 'Images', 'post_mime_types_plural', 'media-library-assistant' ),
1122
  'specification' => '',
1123
  'post_mime_type' => true,
1124
  'table_view' => true,
@@ -1126,8 +1155,8 @@ class MLAOptions {
1126
  'description' => _x( 'All image subtypes', 'post_mime_types_description', 'media-library-assistant' )
1127
  ),
1128
  'audio' => array(
1129
- 'singular' => _x( 'Audio', 'post_mime_types_singular', 'media-library-assistant' ),
1130
- 'plural' => _x( 'Audio', 'post_mime_types_plural', 'media-library-assistant' ),
1131
  'specification' => '',
1132
  'post_mime_type' => true,
1133
  'table_view' => true,
@@ -1135,8 +1164,8 @@ class MLAOptions {
1135
  'description' => _x( 'All audio subtypes', 'post_mime_types_description', 'media-library-assistant' )
1136
  ),
1137
  'video' => array(
1138
- 'singular' => _x( 'Video', 'post_mime_types_singular', 'media-library-assistant' ),
1139
- 'plural' => _x( 'Video', 'post_mime_types_plural', 'media-library-assistant' ),
1140
  'specification' => '',
1141
  'post_mime_type' => true,
1142
  'table_view' => true,
@@ -1144,8 +1173,8 @@ class MLAOptions {
1144
  'description' => _x( 'All video subtypes', 'post_mime_types_description', 'media-library-assistant' )
1145
  ),
1146
  'text' => array(
1147
- 'singular' => _x( 'Text', 'post_mime_types_singular', 'media-library-assistant' ),
1148
- 'plural' => _x( 'Text', 'post_mime_types_plural', 'media-library-assistant' ),
1149
  'specification' => '',
1150
  'post_mime_type' => true,
1151
  'table_view' => true,
@@ -1153,8 +1182,8 @@ class MLAOptions {
1153
  'description' => _x( 'All text subtypes', 'post_mime_types_description', 'media-library-assistant' )
1154
  ),
1155
  'application' => array(
1156
- 'singular' => _x( 'Application', 'post_mime_types_singular', 'media-library-assistant' ),
1157
- 'plural' => _x( 'Applications', 'post_mime_types_plural', 'media-library-assistant' ),
1158
  'specification' => '',
1159
  'post_mime_type' => true,
1160
  'table_view' => true,
@@ -1162,8 +1191,8 @@ class MLAOptions {
1162
  'description' => _x( 'All application subtypes', 'post_mime_types_description', 'media-library-assistant' )
1163
  ),
1164
  'unattached' => array(
1165
- 'singular' => _x( 'Unattached', 'post_mime_types_singular', 'media-library-assistant' ),
1166
- 'plural' => _x( 'Unattached', 'post_mime_types_plural', 'media-library-assistant' ),
1167
  'specification' => '',
1168
  'post_mime_type' => false,
1169
  'table_view' => true,
@@ -1171,8 +1200,8 @@ class MLAOptions {
1171
  'description' => _x( 'Built-in view', 'post_mime_types_description', 'media-library-assistant' )
1172
  ),
1173
  'trash' => array(
1174
- 'singular' => _x( 'Trash', 'post_mime_types_singular', 'media-library-assistant' ),
1175
- 'plural' => _x( 'Trash', 'post_mime_types_plural', 'media-library-assistant' ),
1176
  'specification' => '',
1177
  'post_mime_type' => false,
1178
  'table_view' => true,
@@ -1238,7 +1267,7 @@ class MLAOptions {
1238
  foreach ( $taxonomies as $new_key ) {
1239
  $checked_on_top[ $new_key ] = 'checked';
1240
  }
1241
-
1242
  self::$mla_option_definitions[ self::MLA_TAXONOMY_SUPPORT ]['std']['tax_checked_on_top'] = $checked_on_top;
1243
  }
1244
  }
@@ -1930,13 +1959,13 @@ class MLAOptions {
1930
  if ( !function_exists( 'wp_read_image_metadata' ) ) {
1931
  require_once( ABSPATH . 'wp-admin/includes/image.php' );
1932
  }
1933
-
1934
  $image_metadata = MLAData::mla_fetch_attachment_image_metadata( 0, $file['tmp_name'] );
1935
  $image_metadata['mla_exif_metadata']['FileName'] = $file['name'];
1936
  $image_metadata['wp_image_metadata'] = wp_read_image_metadata( $file['tmp_name'] );
1937
  $file = apply_filters( 'mla_upload_prefilter', $file, $image_metadata );
1938
  }
1939
-
1940
  return $file;
1941
  } // mla_wp_handle_upload_prefilter_filter
1942
 
@@ -1961,12 +1990,12 @@ class MLAOptions {
1961
  if ( ! class_exists( 'getID3' ) ) {
1962
  require( ABSPATH . WPINC . '/ID3/getid3.php' );
1963
  }
1964
-
1965
  $id3 = new getID3();
1966
  $id3_data = $id3->analyze( $file['file'] );
1967
  $file = apply_filters( 'mla_upload_filter', $file, $id3_data );
1968
  }
1969
-
1970
  return $file;
1971
  } // mla_wp_handle_upload_filter
1972
 
@@ -2061,7 +2090,7 @@ class MLAOptions {
2061
  if ( $options['enable_iptc_exif_mapping'] || $options['enable_custom_field_mapping'] ) {
2062
  do_action( 'mla_begin_mapping', 'create_metadata', $post_id );
2063
  }
2064
-
2065
  if ( $options['enable_iptc_exif_mapping'] ) {
2066
  $item = get_post( $post_id );
2067
  $updates = MLAOptions::mla_evaluate_iptc_exif_mapping( $item, 'iptc_exif_mapping', NULL, $data, true );
@@ -2088,7 +2117,7 @@ class MLAOptions {
2088
  if ( $options['enable_iptc_exif_update'] || $options['enable_custom_field_update'] ) {
2089
  do_action( 'mla_begin_mapping', 'update_metadata', $post_id );
2090
  }
2091
-
2092
  if ( $options['enable_iptc_exif_update'] ) {
2093
  $item = get_post( $post_id );
2094
  $updates = MLAOptions::mla_evaluate_iptc_exif_mapping( $item, 'iptc_exif_mapping', NULL, $data );
@@ -2151,7 +2180,7 @@ class MLAOptions {
2151
  $option_values = self::mla_get_option( 'custom_field_mapping' );
2152
  $results = array();
2153
  $index = 0;
2154
-
2155
  foreach ( $option_values as $key => $value ) {
2156
  $slug = 'c_' . $index++; // sanitize_title( $key ); Didn't handle HTML in name, e.g., "R><B"
2157
 
@@ -2180,7 +2209,7 @@ class MLAOptions {
2180
  case 'default_sortable_columns':
2181
  if ( $value['mla_column'] ) {
2182
  // columns without NULL values should sort descending
2183
- $results[ $slug ] = array( esc_html( $value['name'] ), $value['no_null'] );
2184
  }
2185
  break;
2186
  case 'quick_edit':
@@ -2295,40 +2324,40 @@ class MLAOptions {
2295
  * @param string category/scope to evaluate against: custom_field_mapping or single_attachment_mapping
2296
  * @param string data source name ( post_date or post_parent )
2297
  *
2298
- * @return mixed 'post_date' => (string) upload date, 'post_parent' => (integer) ID of parent or zero )
2299
  */
2300
  private static function _evaluate_post_information( $post_id, $category, $data_source ) {
2301
  global $wpdb;
2302
  static $post_info = NULL;
2303
-
2304
  if ( 0 == $post_id ) {
2305
- return false;
2306
- }
2307
-
2308
- /*
2309
- * Check for $post_id match
2310
- */
2311
- if ( 'single_attachment_mapping' == $category && ! isset( $post_info[$post_id] ) ) {
2312
- $post_info = NULL;
2313
- }
2314
-
2315
- if ( NULL == $post_info ) {
2316
- if ( 'custom_field_mapping' == $category ) {
2317
- $post_info = $wpdb->get_results( "SELECT * FROM {$wpdb->posts} WHERE post_type = 'attachment'", OBJECT_K );
2318
- } else {
2319
- $post_info = $wpdb->get_results( "SELECT * FROM {$wpdb->posts} WHERE ID = '{$post_id}'", OBJECT_K );
2320
  }
2321
- }
2322
 
2323
- if ( 'post_id' == $data_source ) {
2324
- $data_source = 'ID';
2325
- }
2326
-
2327
- if ( isset( $post_info[$post_id] ) && property_exists( $post_info[$post_id], $data_source ) ) {
2328
- $post_array = (array) $post_info[$post_id];
2329
- $value = $post_array[ $data_source ];
2330
- } else {
2331
- return false;
 
 
 
 
 
 
 
 
 
2332
  }
2333
 
2334
  switch ( $data_source ) {
@@ -2460,7 +2489,7 @@ class MLAOptions {
2460
  private static function _evaluate_data_source( $post_id, $category, $data_value, $attachment_metadata = NULL ) {
2461
  global $wpdb;
2462
  static $upload_dir, $intermediate_sizes = NULL, $wp_attached_files = NULL, $wp_attachment_metadata = NULL;
2463
- static $current_id = 0, $file_info = NULL, $parent_info = NULL, $references = NULL;
2464
 
2465
  if ( 'none' == $data_value['data_source'] ) {
2466
  return '';
@@ -2494,10 +2523,15 @@ class MLAOptions {
2494
  $current_id = $post_id;
2495
  $parent_info = NULL;
2496
  $references = NULL;
 
2497
 
2498
  if ( 'single_attachment_mapping' == $category ) {
2499
- $meta_value = get_metadata( 'post', $post_id, '_wp_attached_file' );
2500
- $wp_attached_files = array( $post_id => (object) array( 'post_id' => $post_id, 'meta_value' => $meta_value[0] ) );
 
 
 
 
2501
 
2502
  if ( NULL == $attachment_metadata ) {
2503
  $metadata = get_metadata( 'post', $post_id, '_wp_attachment_metadata' );
@@ -2549,8 +2583,10 @@ class MLAOptions {
2549
  if ( empty( $placeholder['prefix'] ) ) {
2550
  $field_value = $data_value;
2551
  $field_value['data_source'] = $placeholder['value'];
 
2552
  $field_value['option'] = $placeholder['option'];
2553
- $item_values[ $key ] = self::_evaluate_data_source( $post_id, $category, $field_value, $attachment_metadata );
 
2554
  } // Data Source
2555
  } // foreach placeholder
2556
 
@@ -2578,6 +2614,25 @@ class MLAOptions {
2578
  case 'comment_count':
2579
  $result = absint( self::_evaluate_post_information( $post_id, $category, $data_source ) );
2580
  break;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2581
  case 'mime_type':
2582
  $data_source = 'post_mime_type';
2583
  /* fallthru */
@@ -3006,7 +3061,7 @@ class MLAOptions {
3006
  foreach ( $blacklist as $value ) {
3007
  $blacklist_names[] = $value['name'];
3008
  }
3009
-
3010
  $custom_field_names = self::_get_custom_field_names();
3011
  foreach ( $custom_field_names as $value ) {
3012
  if ( in_array( $value, $blacklist_names ) ) {
@@ -3054,6 +3109,7 @@ class MLAOptions {
3054
  'mime_type',
3055
  'post_mime_type',
3056
  'comment_count',
 
3057
 
3058
  'absolute_path',
3059
  'absolute_file_name',
@@ -3186,13 +3242,14 @@ class MLAOptions {
3186
  $message_list = '';
3187
  $settings_changed = false;
3188
  $custom_field_names = self::_get_custom_field_names();
 
3189
 
3190
  foreach ( $new_values as $the_key => $new_value ) {
3191
  $any_setting_changed = false;
3192
  /*
3193
  * Replace index with field name
3194
  */
3195
- $new_key = trim( stripslashes( $new_value['name'] ) );
3196
 
3197
  /*
3198
  * Check for the addition of a new rule or field
@@ -3221,8 +3278,6 @@ class MLAOptions {
3221
  $any_setting_changed = true;
3222
  }
3223
 
3224
- $new_value = stripslashes_deep( $new_value );
3225
-
3226
  if ( isset( $current_values[ $new_key ] ) ) {
3227
  $old_values = $current_values[ $new_key ];
3228
  $any_setting_changed = false;
@@ -3415,7 +3470,7 @@ class MLAOptions {
3415
  $sorted_keys[ $current_value['name'] ] = $current_value['name'];
3416
  }
3417
  natcasesort( $sorted_keys );
3418
-
3419
  $sorted_names = array();
3420
  foreach ( $sorted_keys as $row_name ) {
3421
  $sorted_names[ $row_name ] = array();
@@ -3472,13 +3527,13 @@ class MLAOptions {
3472
  'Update Rule' => __( 'Update Rule', 'media-library-assistant' ),
3473
  'Map All Attachments' => __( 'Map All Attachments', 'media-library-assistant' ),
3474
  );
3475
-
3476
  if ( $current_value['keep_existing'] ) {
3477
  $row_values['keep_selected'] = 'selected="selected"';
3478
  } else {
3479
  $row_values['replace_selected'] = 'selected="selected"';
3480
  }
3481
-
3482
  switch( $current_value['format'] ) {
3483
  case 'native':
3484
  $row_values['native_format'] = 'selected="selected"';
@@ -3492,19 +3547,19 @@ class MLAOptions {
3492
  default:
3493
  $row_values['native_format'] = 'selected="selected"';
3494
  } // format
3495
-
3496
  if ( $current_value['mla_column'] ) {
3497
  $row_values['mla_column_checked'] = 'checked="checked"';
3498
  }
3499
-
3500
  if ( $current_value['quick_edit'] ) {
3501
  $row_values['quick_edit_checked'] = 'checked="checked"';
3502
  }
3503
-
3504
  if ( $current_value['bulk_edit'] ) {
3505
  $row_values['bulk_edit_checked'] = 'checked="checked"';
3506
  }
3507
-
3508
  switch( $current_value['option'] ) {
3509
  case 'single':
3510
  $row_values['single_option'] = 'selected="selected"';
@@ -3521,11 +3576,11 @@ class MLAOptions {
3521
  default:
3522
  $row_values['text_option'] = 'selected="selected"';
3523
  } // option
3524
-
3525
  if ( $current_value['no_null'] ) {
3526
  $row_values['no_null_checked'] = 'checked="checked"';
3527
  }
3528
-
3529
  $table_rows .= MLAData::mla_parse_template( $row_template, $row_values );
3530
  } // foreach current_value
3531
  } // foreach sorted_name
@@ -3681,11 +3736,11 @@ class MLAOptions {
3681
  */
3682
  private static function _get_term_id( $term_name, $term_parent, $taxonomy, &$post_terms ) {
3683
  static $term_cache = array();
3684
-
3685
  if ( isset( $term_cache[ $taxonomy ] ) && isset( $term_cache[ $taxonomy ][ $term_parent ] ) && isset( $term_cache[ $taxonomy ][ $term_parent ][ $term_name ] ) ) {
3686
  return $term_cache[ $taxonomy ][ $term_parent ][ $term_name ];
3687
  }
3688
-
3689
  if ( is_array( $post_terms ) ) {
3690
  $term_id = 0;
3691
  foreach( $post_terms as $post_term ) {
@@ -3694,24 +3749,24 @@ class MLAOptions {
3694
  $term_id = $post_term->term_id;
3695
  }
3696
  }
3697
-
3698
  if ( 0 < $term_id ) {
3699
  return $term_id;
3700
  }
3701
  }
3702
-
3703
  $post_term = term_exists( $term_name, $taxonomy, $term_parent );
3704
  if ( $post_term !== 0 && $post_term !== NULL ) {
3705
  $term_cache[ $taxonomy ][ $term_parent ][ $term_name ] = $post_term['term_id'];
3706
  return $post_term['term_id'];
3707
  }
3708
-
3709
  $post_term = wp_insert_term( $term_name, $taxonomy, array( 'parent' => $term_parent ) );
3710
  if ( ( ! is_wp_error( $post_term ) ) && isset( $post_term['term_id'] ) ) {
3711
  $term_cache[ $taxonomy ][ $term_parent ][ $term_name ] = $post_term['term_id'];
3712
  return $post_term['term_id'];
3713
  }
3714
-
3715
  return 0;
3716
  } // _get_term_id
3717
 
@@ -3796,7 +3851,7 @@ class MLAOptions {
3796
  $updates[ $setting_key ] = '';
3797
  continue;
3798
  }
3799
-
3800
  /*
3801
  * See /wp-includes/formatting.php, function convert_chars()
3802
  *
@@ -3928,7 +3983,7 @@ class MLAOptions {
3928
  if ( empty( $new_text ) ) {
3929
  continue;
3930
  }
3931
-
3932
  $current_terms = array();
3933
  if ( ! $is_upload ) {
3934
  $post_terms = get_object_term_cache( $post->ID, $setting_key );
@@ -3936,7 +3991,7 @@ class MLAOptions {
3936
  $post_terms = wp_get_object_terms( $post->ID, $setting_key );
3937
  wp_cache_add( $post->ID, $post_terms, $setting_key . '_relationships' );
3938
  }
3939
-
3940
  foreach( $post_terms as $new_term ) {
3941
  if ( $hierarchical ) {
3942
  $current_terms[ $new_term->term_id ] = $new_term->term_id;
@@ -3975,7 +4030,7 @@ class MLAOptions {
3975
  break; // not a match; stop checking
3976
  }
3977
  }
3978
-
3979
  $do_update = ! empty( $current_terms );
3980
  } else {
3981
  /*
@@ -3986,10 +4041,10 @@ class MLAOptions {
3986
  unset( $new_terms[ $index ] );
3987
  }
3988
  }
3989
-
3990
  $do_update = ! empty( $new_terms );
3991
  }
3992
-
3993
  if ( $do_update ) {
3994
  $tax_inputs[ $setting_key ] = $new_terms;
3995
  $tax_actions[ $setting_key ] = $tax_action;
@@ -4182,6 +4237,7 @@ class MLAOptions {
4182
  $error_list = '';
4183
  $message_list = '';
4184
  $settings_changed = false;
 
4185
 
4186
  foreach ( $new_values['standard'] as $new_key => $new_value ) {
4187
  if ( isset( $current_values['standard'][ $new_key ] ) ) {
@@ -4275,6 +4331,7 @@ class MLAOptions {
4275
  $error_list = '';
4276
  $message_list = '';
4277
  $settings_changed = false;
 
4278
 
4279
  /*
4280
  * Remove rules for taxonomies that no longer exist
@@ -4294,7 +4351,7 @@ class MLAOptions {
4294
  $old_values = $current_values['taxonomy'][ $new_key ];
4295
  } else {
4296
  $old_values = array(
4297
- 'name' => stripslashes( $new_value['name'] ),
4298
  'hierarchical' => $new_value['hierarchical'],
4299
  'iptc_value' => 'none',
4300
  'exif_value' => '',
@@ -4391,13 +4448,14 @@ class MLAOptions {
4391
  $message_list = '';
4392
  $settings_changed = false;
4393
  $custom_field_names = self::_get_custom_field_names();
 
4394
 
4395
  foreach ( $new_values['custom'] as $the_key => $new_value ) {
4396
  $any_setting_changed = false;
4397
  /*
4398
  * Replace index with field name
4399
  */
4400
- $new_key = trim( stripslashes( $new_value['name'] ) );
4401
 
4402
  /*
4403
  * Check for the addition of a new field or new rule
@@ -4426,7 +4484,7 @@ class MLAOptions {
4426
  $any_setting_changed = true;
4427
  }
4428
 
4429
- $new_value = stripslashes_deep( $new_value );
4430
 
4431
  if ( isset( $current_values['custom'][ $new_key ] ) ) {
4432
  $old_values = $current_values['custom'][ $new_key ];
@@ -4652,7 +4710,7 @@ class MLAOptions {
4652
  if ( array_key_exists( $row_name, $current_values['taxonomy'] ) ) {
4653
  $current_value = $current_values['taxonomy'][ $row_name ];
4654
  $row_values['iptc_field_options'] = self::_compose_iptc_option_list( $current_value['iptc_value'] );
4655
- $row_values['exif_text'] = $current_value['exif_value'];
4656
 
4657
  if ( $current_value['iptc_first'] ) {
4658
  $row_values['iptc_selected'] = 'selected="selected"';
@@ -4730,7 +4788,7 @@ class MLAOptions {
4730
  $sorted_keys[ $current_value['name'] ] = $current_value['name'];
4731
  }
4732
  natcasesort( $sorted_keys );
4733
-
4734
  $sorted_names = array();
4735
  foreach ( $sorted_keys as $row_name ) {
4736
  $sorted_names[ $row_name ] = array();
@@ -4768,19 +4826,19 @@ class MLAOptions {
4768
  'Update Rule' => __( 'Update Rule', 'media-library-assistant' ),
4769
  'Map All Attachments' => __( 'Map All Attachments', 'media-library-assistant' ),
4770
  );
4771
-
4772
  if ( $current_value['iptc_first'] ) {
4773
  $row_values['iptc_selected'] = 'selected="selected"';
4774
  } else {
4775
  $row_values['exif_selected'] = 'selected="selected"';
4776
  }
4777
-
4778
  if ( $current_value['keep_existing'] ) {
4779
  $row_values['keep_selected'] = 'selected="selected"';
4780
  } else {
4781
  $row_values['replace_selected'] = 'selected="selected"';
4782
  }
4783
-
4784
  $table_rows .= MLAData::mla_parse_template( $row_template, $row_values );
4785
  } // foreach current_values key
4786
  } // foreach sorted_name
824
  array('tab' => 'general',
825
  'name' => __( 'Alignment', 'media-library-assistant' ),
826
  /* translators: 1: option name, e.g., Alignment, Link To or Size */
827
+ 'help' => sprintf( __( 'Select a value for the default %1$s option in the Attachment Display Settings.', 'media-library-assistant' ), __( 'Alignment', 'media-library-assistant' ) ),
828
  'std' => 'default',
829
  'options' => array('default', 'left', 'center', 'right', 'none'),
830
  'texts' => array('&mdash; ' . __( 'Media Manager Default', 'media-library-assistant' ) . ' &mdash;', __( 'Left', 'media-library-assistant' ), __( 'Center', 'media-library-assistant' ), __( 'Right', 'media-library-assistant' ), __( 'None', 'media-library-assistant' )),
838
  array('tab' => 'general',
839
  'name' => __( 'Link To', 'media-library-assistant' ),
840
  /* translators: 1: option name, e.g., Alignment, Link To or Size */
841
+ 'help' => sprintf( __( 'Select a value for the default %1$s option in the Attachment Display Settings.', 'media-library-assistant' ), __( 'Link To', 'media-library-assistant' ) ),
842
  'std' => 'default',
843
  'options' => array('default', 'file', 'post', 'custom', 'none'),
844
  'texts' => array('&mdash; ' . __( 'Media Manager Default', 'media-library-assistant' ) . ' &mdash;', __( 'Media File', 'media-library-assistant' ), __( 'Attachment Page', 'media-library-assistant' ), __( 'Custom URL', 'media-library-assistant' ), __( 'None', 'media-library-assistant' )),
852
  array('tab' => 'general',
853
  'name' => __( 'Size', 'media-library-assistant' ),
854
  /* translators: 1: option name, e.g., Alignment, Link To or Size */
855
+ 'help' => sprintf( __( 'Select a value for the default %1$s option in the Attachment Display Settings.', 'media-library-assistant' ), __( 'Size', 'media-library-assistant' ) ),
856
  'std' => 'default',
857
  'options' => array('default', 'thumbnail', 'medium', 'large', 'full'),
858
  'texts' => array('&mdash; ' . __( 'Media Manager Default', 'media-library-assistant' ) . ' &mdash;', __( 'Thumbnail', 'media-library-assistant' ), __( 'Medium', 'media-library-assistant' ), __( 'Large', 'media-library-assistant' ), __( 'Full Size', 'media-library-assistant' )),
875
  'options' => array(),
876
  'texts' => array(),
877
  /* translators: 1: template type 2: shortcode */
878
+ 'help' => sprintf( __( 'Select the default %1$s for your %2$s shortcodes.', 'media-library-assistant' ), __( 'Style Template', 'media-library-assistant' ), '[mla_tag_cloud]' ) ),
879
 
880
  'default_tag_cloud_markup' =>
881
  array('tab' => '',
919
  'options' => array(),
920
  'texts' => array(),
921
  /* translators: 1: template type 2: shortcode */
922
+ 'help' => sprintf( __( 'Select the default %1$s for your %2$s shortcodes.', 'media-library-assistant' ), __( 'Style Template', 'media-library-assistant' ), '[mla_gallery]' ) ),
923
 
924
  'default_markup' =>
925
  array('tab' => 'mla_gallery',
955
  'size' => 10,
956
  'help' => __( 'Enter the CSS "width" property value, in length (px, em, pt, etc.), percent (%), "auto" or "inherit".<br>&nbsp;&nbsp;Enter "calculate" (the default) to calculate the value taking the "margin" value into account.<br>&nbsp;&nbsp;Enter "exact" to calculate the value without considering the "margin" value.<br>&nbsp;&nbsp;Enter "none" to remove the property entirely.', 'media-library-assistant' )),
957
 
958
+ 'enable_mla_viewer' =>
959
+ array('tab' => 'mla_gallery',
960
+ 'name' => __( 'Enable thumbnail substitution', 'media-library-assistant' ),
961
+ 'type' => 'checkbox',
962
+ 'std' => 'checked',
963
+ 'help' => __( 'Check this option to allow the "mla_viewer" to generate thumbnail images for PDF documents. Thumbnails are generated dynamically, each time the item appears in an [mla_gallery] display.<br>&nbsp;&nbsp;<strong>IMPORTANT: both Ghostscript and Imagick/Imagemagick must be installed for this feature.</strong>', 'media-library-assistant' )),
964
+
965
+ 'enable_featured_image' =>
966
+ array('tab' => 'mla_gallery',
967
+ 'name' => __( 'Enable Featured Images', 'media-library-assistant' ),
968
+ 'type' => 'checkbox',
969
+ 'std' => 'checked',
970
+ 'help' => __( 'Check this option to extend Featured Image support to all Media Library items. The Featured Image can be used as a thumbnail image for the item in an [mla_gallery] display.', 'media-library-assistant' )),
971
+
972
+ 'enable_ghostscript_check' =>
973
+ array('tab' => 'mla_gallery',
974
+ 'name' => __( 'Enable explicit Ghostscript check', 'media-library-assistant' ),
975
+ 'type' => 'checkbox',
976
+ 'std' => 'checked',
977
+ 'help' => __( 'Check this option to enable the explicit check for Ghostscript support required for thumbnail generation. If your Ghostscript software is in a non-standard location, unchecking this option bypasses the check. Bad things can happen if Ghostscript is missing but Imagick/Imagemagick is present, so leave this option checked unless you know it is safe to turn it off.', 'media-library-assistant' )),
978
+
979
+ 'ghostscript_path' =>
980
+ array('tab' => 'mla_gallery',
981
+ 'name' => __( 'Ghostscript path', 'media-library-assistant' ),
982
+ 'type' => 'text',
983
+ 'std' => '',
984
+ 'size' => 20,
985
+ 'help' => __( 'If your &ldquo;gs&rdquo; executable is in a non-standard location, enter the full path and filename here, e.g., &ldquo;/usr/bin/gs&rdquo;. It will override the search for Ghostscript in other places.', 'media-library-assistant' )),
986
+
987
  /*
988
  * Managed by mla_get_style_templates and mla_put_style_templates
989
  */
1137
  'help' => __( 'Post MIME Types help.', 'media-library-assistant' ),
1138
  'std' => array(
1139
  'all' => array(
1140
+ 'singular' => _x( 'All', 'table_view_singular', 'media-library-assistant' ),
1141
+ 'plural' => _x( 'All', 'table_view_plural', 'media-library-assistant' ),
1142
  'specification' => '',
1143
  'post_mime_type' => false,
1144
  'table_view' => true,
1146
  'description' => _x( 'Built-in view', 'post_mime_types_description', 'media-library-assistant' )
1147
  ),
1148
  'image' => array(
1149
+ 'singular' => _x( 'Image', 'table_view_singular', 'media-library-assistant' ),
1150
+ 'plural' => _x( 'Images', 'table_view_plural', 'media-library-assistant' ),
1151
  'specification' => '',
1152
  'post_mime_type' => true,
1153
  'table_view' => true,
1155
  'description' => _x( 'All image subtypes', 'post_mime_types_description', 'media-library-assistant' )
1156
  ),
1157
  'audio' => array(
1158
+ 'singular' => _x( 'Audio', 'table_view_singular', 'media-library-assistant' ),
1159
+ 'plural' => _x( 'Audio', 'table_view_plural', 'media-library-assistant' ),
1160
  'specification' => '',
1161
  'post_mime_type' => true,
1162
  'table_view' => true,
1164
  'description' => _x( 'All audio subtypes', 'post_mime_types_description', 'media-library-assistant' )
1165
  ),
1166
  'video' => array(
1167
+ 'singular' => _x( 'Video', 'table_view_singular', 'media-library-assistant' ),
1168
+ 'plural' => _x( 'Video', 'table_view_plural', 'media-library-assistant' ),
1169
  'specification' => '',
1170
  'post_mime_type' => true,
1171
  'table_view' => true,
1173
  'description' => _x( 'All video subtypes', 'post_mime_types_description', 'media-library-assistant' )
1174
  ),
1175
  'text' => array(
1176
+ 'singular' => _x( 'Text', 'table_view_singular', 'media-library-assistant' ),
1177
+ 'plural' => _x( 'Text', 'table_view_plural', 'media-library-assistant' ),
1178
  'specification' => '',
1179
  'post_mime_type' => true,
1180
  'table_view' => true,
1182
  'description' => _x( 'All text subtypes', 'post_mime_types_description', 'media-library-assistant' )
1183
  ),
1184
  'application' => array(
1185
+ 'singular' => _x( 'Application', 'table_view_singular', 'media-library-assistant' ),
1186
+ 'plural' => _x( 'Applications', 'table_view_plural', 'media-library-assistant' ),
1187
  'specification' => '',
1188
  'post_mime_type' => true,
1189
  'table_view' => true,
1191
  'description' => _x( 'All application subtypes', 'post_mime_types_description', 'media-library-assistant' )
1192
  ),
1193
  'unattached' => array(
1194
+ 'singular' => _x( 'Unattached', 'table_view_singular', 'media-library-assistant' ),
1195
+ 'plural' => _x( 'Unattached', 'table_view_plural', 'media-library-assistant' ),
1196
  'specification' => '',
1197
  'post_mime_type' => false,
1198
  'table_view' => true,
1200
  'description' => _x( 'Built-in view', 'post_mime_types_description', 'media-library-assistant' )
1201
  ),
1202
  'trash' => array(
1203
+ 'singular' => _x( 'Trash', 'table_view_singular', 'media-library-assistant' ),
1204
+ 'plural' => _x( 'Trash', 'table_view_plural', 'media-library-assistant' ),
1205
  'specification' => '',
1206
  'post_mime_type' => false,
1207
  'table_view' => true,
1267
  foreach ( $taxonomies as $new_key ) {
1268
  $checked_on_top[ $new_key ] = 'checked';
1269
  }
1270
+
1271
  self::$mla_option_definitions[ self::MLA_TAXONOMY_SUPPORT ]['std']['tax_checked_on_top'] = $checked_on_top;
1272
  }
1273
  }
1959
  if ( !function_exists( 'wp_read_image_metadata' ) ) {
1960
  require_once( ABSPATH . 'wp-admin/includes/image.php' );
1961
  }
1962
+
1963
  $image_metadata = MLAData::mla_fetch_attachment_image_metadata( 0, $file['tmp_name'] );
1964
  $image_metadata['mla_exif_metadata']['FileName'] = $file['name'];
1965
  $image_metadata['wp_image_metadata'] = wp_read_image_metadata( $file['tmp_name'] );
1966
  $file = apply_filters( 'mla_upload_prefilter', $file, $image_metadata );
1967
  }
1968
+
1969
  return $file;
1970
  } // mla_wp_handle_upload_prefilter_filter
1971
 
1990
  if ( ! class_exists( 'getID3' ) ) {
1991
  require( ABSPATH . WPINC . '/ID3/getid3.php' );
1992
  }
1993
+
1994
  $id3 = new getID3();
1995
  $id3_data = $id3->analyze( $file['file'] );
1996
  $file = apply_filters( 'mla_upload_filter', $file, $id3_data );
1997
  }
1998
+
1999
  return $file;
2000
  } // mla_wp_handle_upload_filter
2001
 
2090
  if ( $options['enable_iptc_exif_mapping'] || $options['enable_custom_field_mapping'] ) {
2091
  do_action( 'mla_begin_mapping', 'create_metadata', $post_id );
2092
  }
2093
+
2094
  if ( $options['enable_iptc_exif_mapping'] ) {
2095
  $item = get_post( $post_id );
2096
  $updates = MLAOptions::mla_evaluate_iptc_exif_mapping( $item, 'iptc_exif_mapping', NULL, $data, true );
2117
  if ( $options['enable_iptc_exif_update'] || $options['enable_custom_field_update'] ) {
2118
  do_action( 'mla_begin_mapping', 'update_metadata', $post_id );
2119
  }
2120
+
2121
  if ( $options['enable_iptc_exif_update'] ) {
2122
  $item = get_post( $post_id );
2123
  $updates = MLAOptions::mla_evaluate_iptc_exif_mapping( $item, 'iptc_exif_mapping', NULL, $data );
2180
  $option_values = self::mla_get_option( 'custom_field_mapping' );
2181
  $results = array();
2182
  $index = 0;
2183
+
2184
  foreach ( $option_values as $key => $value ) {
2185
  $slug = 'c_' . $index++; // sanitize_title( $key ); Didn't handle HTML in name, e.g., "R><B"
2186
 
2209
  case 'default_sortable_columns':
2210
  if ( $value['mla_column'] ) {
2211
  // columns without NULL values should sort descending
2212
+ $results[ $slug ] = array( $slug, $value['no_null'] );
2213
  }
2214
  break;
2215
  case 'quick_edit':
2324
  * @param string category/scope to evaluate against: custom_field_mapping or single_attachment_mapping
2325
  * @param string data source name ( post_date or post_parent )
2326
  *
2327
+ * @return mixed (string)/'' or (integer)/0 depending on $data_source type
2328
  */
2329
  private static function _evaluate_post_information( $post_id, $category, $data_source ) {
2330
  global $wpdb;
2331
  static $post_info = NULL;
2332
+
2333
  if ( 0 == $post_id ) {
2334
+ $value = NULL;
2335
+ } else {
2336
+ /*
2337
+ * Check for $post_id match
2338
+ */
2339
+ if ( 'single_attachment_mapping' == $category && ! isset( $post_info[$post_id] ) ) {
2340
+ $post_info = NULL;
 
 
 
 
 
 
 
 
2341
  }
 
2342
 
2343
+ if ( NULL == $post_info ) {
2344
+ if ( 'custom_field_mapping' == $category ) {
2345
+ $post_info = $wpdb->get_results( "SELECT * FROM {$wpdb->posts} WHERE post_type = 'attachment'", OBJECT_K );
2346
+ } else {
2347
+ $post_info = $wpdb->get_results( "SELECT * FROM {$wpdb->posts} WHERE ID = '{$post_id}'", OBJECT_K );
2348
+ }
2349
+ }
2350
+
2351
+ if ( 'post_id' == $data_source ) {
2352
+ $data_source = 'ID';
2353
+ }
2354
+
2355
+ if ( isset( $post_info[$post_id] ) && property_exists( $post_info[$post_id], $data_source ) ) {
2356
+ $post_array = (array) $post_info[$post_id];
2357
+ $value = $post_array[ $data_source ];
2358
+ } else {
2359
+ $value = NULL;
2360
+ }
2361
  }
2362
 
2363
  switch ( $data_source ) {
2489
  private static function _evaluate_data_source( $post_id, $category, $data_value, $attachment_metadata = NULL ) {
2490
  global $wpdb;
2491
  static $upload_dir, $intermediate_sizes = NULL, $wp_attached_files = NULL, $wp_attachment_metadata = NULL;
2492
+ static $current_id = 0, $file_info = NULL, $parent_info = NULL, $references = NULL, $alt_text = NULL;
2493
 
2494
  if ( 'none' == $data_value['data_source'] ) {
2495
  return '';
2523
  $current_id = $post_id;
2524
  $parent_info = NULL;
2525
  $references = NULL;
2526
+ $alt_text = NULL;
2527
 
2528
  if ( 'single_attachment_mapping' == $category ) {
2529
+ $metadata = get_metadata( 'post', $post_id, '_wp_attached_file' );
2530
+ if ( isset( $metadata[0] ) ) {
2531
+ $wp_attached_files = array( $post_id => (object) array( 'post_id' => $post_id, 'meta_value' => $metadata[0] ) );
2532
+ } else {
2533
+ $wp_attached_files = array();
2534
+ }
2535
 
2536
  if ( NULL == $attachment_metadata ) {
2537
  $metadata = get_metadata( 'post', $post_id, '_wp_attachment_metadata' );
2583
  if ( empty( $placeholder['prefix'] ) ) {
2584
  $field_value = $data_value;
2585
  $field_value['data_source'] = $placeholder['value'];
2586
+ $field_value['meta_name'] = '';
2587
  $field_value['option'] = $placeholder['option'];
2588
+ $field_value = self::_evaluate_data_source( $post_id, $category, $field_value, $attachment_metadata );
2589
+ $item_values[ $key ] = MLAData::mla_apply_field_level_format( $field_value, $placeholder );
2590
  } // Data Source
2591
  } // foreach placeholder
2592
 
2614
  case 'comment_count':
2615
  $result = absint( self::_evaluate_post_information( $post_id, $category, $data_source ) );
2616
  break;
2617
+ case 'alt_text':
2618
+ if ( NULL == $alt_text ) {
2619
+ $metadata = get_metadata( 'post', $post_id, '_wp_attachment_image_alt' );
2620
+ if ( is_array( $metadata ) ) {
2621
+ if ( count( $metadata ) == 1 ) {
2622
+ $alt_text = maybe_unserialize( $metadata[0] );
2623
+ } else {
2624
+ $alt_text = array();
2625
+ foreach ( $metadata as $single_key => $single_value ) {
2626
+ $alt_text[ $single_key ] = maybe_unserialize( $single_value );
2627
+ }
2628
+ }
2629
+ }
2630
+ }
2631
+
2632
+ if ( ! empty( $alt_text ) ) {
2633
+ $result = self::_evaluate_array_result( $alt_text, $data_value['option'], $data_value['keep_existing'] );
2634
+ }
2635
+ break;
2636
  case 'mime_type':
2637
  $data_source = 'post_mime_type';
2638
  /* fallthru */
3061
  foreach ( $blacklist as $value ) {
3062
  $blacklist_names[] = $value['name'];
3063
  }
3064
+
3065
  $custom_field_names = self::_get_custom_field_names();
3066
  foreach ( $custom_field_names as $value ) {
3067
  if ( in_array( $value, $blacklist_names ) ) {
3109
  'mime_type',
3110
  'post_mime_type',
3111
  'comment_count',
3112
+ 'alt_text',
3113
 
3114
  'absolute_path',
3115
  'absolute_file_name',
3242
  $message_list = '';
3243
  $settings_changed = false;
3244
  $custom_field_names = self::_get_custom_field_names();
3245
+ $new_values = stripslashes_deep( $new_values );
3246
 
3247
  foreach ( $new_values as $the_key => $new_value ) {
3248
  $any_setting_changed = false;
3249
  /*
3250
  * Replace index with field name
3251
  */
3252
+ $new_key = trim( $new_value['name'] );
3253
 
3254
  /*
3255
  * Check for the addition of a new rule or field
3278
  $any_setting_changed = true;
3279
  }
3280
 
 
 
3281
  if ( isset( $current_values[ $new_key ] ) ) {
3282
  $old_values = $current_values[ $new_key ];
3283
  $any_setting_changed = false;
3470
  $sorted_keys[ $current_value['name'] ] = $current_value['name'];
3471
  }
3472
  natcasesort( $sorted_keys );
3473
+
3474
  $sorted_names = array();
3475
  foreach ( $sorted_keys as $row_name ) {
3476
  $sorted_names[ $row_name ] = array();
3527
  'Update Rule' => __( 'Update Rule', 'media-library-assistant' ),
3528
  'Map All Attachments' => __( 'Map All Attachments', 'media-library-assistant' ),
3529
  );
3530
+
3531
  if ( $current_value['keep_existing'] ) {
3532
  $row_values['keep_selected'] = 'selected="selected"';
3533
  } else {
3534
  $row_values['replace_selected'] = 'selected="selected"';
3535
  }
3536
+
3537
  switch( $current_value['format'] ) {
3538
  case 'native':
3539
  $row_values['native_format'] = 'selected="selected"';
3547
  default:
3548
  $row_values['native_format'] = 'selected="selected"';
3549
  } // format
3550
+
3551
  if ( $current_value['mla_column'] ) {
3552
  $row_values['mla_column_checked'] = 'checked="checked"';
3553
  }
3554
+
3555
  if ( $current_value['quick_edit'] ) {
3556
  $row_values['quick_edit_checked'] = 'checked="checked"';
3557
  }
3558
+
3559
  if ( $current_value['bulk_edit'] ) {
3560
  $row_values['bulk_edit_checked'] = 'checked="checked"';
3561
  }
3562
+
3563
  switch( $current_value['option'] ) {
3564
  case 'single':
3565
  $row_values['single_option'] = 'selected="selected"';
3576
  default:
3577
  $row_values['text_option'] = 'selected="selected"';
3578
  } // option
3579
+
3580
  if ( $current_value['no_null'] ) {
3581
  $row_values['no_null_checked'] = 'checked="checked"';
3582
  }
3583
+
3584
  $table_rows .= MLAData::mla_parse_template( $row_template, $row_values );
3585
  } // foreach current_value
3586
  } // foreach sorted_name
3736
  */
3737
  private static function _get_term_id( $term_name, $term_parent, $taxonomy, &$post_terms ) {
3738
  static $term_cache = array();
3739
+
3740
  if ( isset( $term_cache[ $taxonomy ] ) && isset( $term_cache[ $taxonomy ][ $term_parent ] ) && isset( $term_cache[ $taxonomy ][ $term_parent ][ $term_name ] ) ) {
3741
  return $term_cache[ $taxonomy ][ $term_parent ][ $term_name ];
3742
  }
3743
+
3744
  if ( is_array( $post_terms ) ) {
3745
  $term_id = 0;
3746
  foreach( $post_terms as $post_term ) {
3749
  $term_id = $post_term->term_id;
3750
  }
3751
  }
3752
+
3753
  if ( 0 < $term_id ) {
3754
  return $term_id;
3755
  }
3756
  }
3757
+
3758
  $post_term = term_exists( $term_name, $taxonomy, $term_parent );
3759
  if ( $post_term !== 0 && $post_term !== NULL ) {
3760
  $term_cache[ $taxonomy ][ $term_parent ][ $term_name ] = $post_term['term_id'];
3761
  return $post_term['term_id'];
3762
  }
3763
+
3764
  $post_term = wp_insert_term( $term_name, $taxonomy, array( 'parent' => $term_parent ) );
3765
  if ( ( ! is_wp_error( $post_term ) ) && isset( $post_term['term_id'] ) ) {
3766
  $term_cache[ $taxonomy ][ $term_parent ][ $term_name ] = $post_term['term_id'];
3767
  return $post_term['term_id'];
3768
  }
3769
+
3770
  return 0;
3771
  } // _get_term_id
3772
 
3851
  $updates[ $setting_key ] = '';
3852
  continue;
3853
  }
3854
+
3855
  /*
3856
  * See /wp-includes/formatting.php, function convert_chars()
3857
  *
3983
  if ( empty( $new_text ) ) {
3984
  continue;
3985
  }
3986
+
3987
  $current_terms = array();
3988
  if ( ! $is_upload ) {
3989
  $post_terms = get_object_term_cache( $post->ID, $setting_key );
3991
  $post_terms = wp_get_object_terms( $post->ID, $setting_key );
3992
  wp_cache_add( $post->ID, $post_terms, $setting_key . '_relationships' );
3993
  }
3994
+
3995
  foreach( $post_terms as $new_term ) {
3996
  if ( $hierarchical ) {
3997
  $current_terms[ $new_term->term_id ] = $new_term->term_id;
4030
  break; // not a match; stop checking
4031
  }
4032
  }
4033
+
4034
  $do_update = ! empty( $current_terms );
4035
  } else {
4036
  /*
4041
  unset( $new_terms[ $index ] );
4042
  }
4043
  }
4044
+
4045
  $do_update = ! empty( $new_terms );
4046
  }
4047
+
4048
  if ( $do_update ) {
4049
  $tax_inputs[ $setting_key ] = $new_terms;
4050
  $tax_actions[ $setting_key ] = $tax_action;
4237
  $error_list = '';
4238
  $message_list = '';
4239
  $settings_changed = false;
4240
+ $new_values = stripslashes_deep( $new_values );
4241
 
4242
  foreach ( $new_values['standard'] as $new_key => $new_value ) {
4243
  if ( isset( $current_values['standard'][ $new_key ] ) ) {
4331
  $error_list = '';
4332
  $message_list = '';
4333
  $settings_changed = false;
4334
+ $new_values = stripslashes_deep( $new_values );
4335
 
4336
  /*
4337
  * Remove rules for taxonomies that no longer exist
4351
  $old_values = $current_values['taxonomy'][ $new_key ];
4352
  } else {
4353
  $old_values = array(
4354
+ 'name' => $new_value['name'],
4355
  'hierarchical' => $new_value['hierarchical'],
4356
  'iptc_value' => 'none',
4357
  'exif_value' => '',
4448
  $message_list = '';
4449
  $settings_changed = false;
4450
  $custom_field_names = self::_get_custom_field_names();
4451
+ $new_values = stripslashes_deep( $new_values );
4452
 
4453
  foreach ( $new_values['custom'] as $the_key => $new_value ) {
4454
  $any_setting_changed = false;
4455
  /*
4456
  * Replace index with field name
4457
  */
4458
+ $new_key = trim( $new_value['name'] );
4459
 
4460
  /*
4461
  * Check for the addition of a new field or new rule
4484
  $any_setting_changed = true;
4485
  }
4486
 
4487
+ $new_value = $new_value;
4488
 
4489
  if ( isset( $current_values['custom'][ $new_key ] ) ) {
4490
  $old_values = $current_values['custom'][ $new_key ];
4710
  if ( array_key_exists( $row_name, $current_values['taxonomy'] ) ) {
4711
  $current_value = $current_values['taxonomy'][ $row_name ];
4712
  $row_values['iptc_field_options'] = self::_compose_iptc_option_list( $current_value['iptc_value'] );
4713
+ $row_values['exif_text'] = esc_attr( $current_value['exif_value'] );
4714
 
4715
  if ( $current_value['iptc_first'] ) {
4716
  $row_values['iptc_selected'] = 'selected="selected"';
4788
  $sorted_keys[ $current_value['name'] ] = $current_value['name'];
4789
  }
4790
  natcasesort( $sorted_keys );
4791
+
4792
  $sorted_names = array();
4793
  foreach ( $sorted_keys as $row_name ) {
4794
  $sorted_names[ $row_name ] = array();
4826
  'Update Rule' => __( 'Update Rule', 'media-library-assistant' ),
4827
  'Map All Attachments' => __( 'Map All Attachments', 'media-library-assistant' ),
4828
  );
4829
+
4830
  if ( $current_value['iptc_first'] ) {
4831
  $row_values['iptc_selected'] = 'selected="selected"';
4832
  } else {
4833
  $row_values['exif_selected'] = 'selected="selected"';
4834
  }
4835
+
4836
  if ( $current_value['keep_existing'] ) {
4837
  $row_values['keep_selected'] = 'selected="selected"';
4838
  } else {
4839
  $row_values['replace_selected'] = 'selected="selected"';
4840
  }
4841
+
4842
  $table_rows .= MLAData::mla_parse_template( $row_template, $row_values );
4843
  } // foreach current_values key
4844
  } // foreach sorted_name
includes/class-mla-settings.php CHANGED
@@ -319,7 +319,7 @@ class MLASettings {
319
  */
320
  public static function mla_admin_enqueue_scripts_action( $page_hook ) {
321
  global $wpdb;
322
-
323
  /*
324
  * Without a tab value, there's nothing to do
325
  */
@@ -340,7 +340,7 @@ class MLASettings {
340
  'comma' => _x( ',', 'tag_delimiter', 'media-library-assistant' ),
341
  'ajax_nonce' => wp_create_nonce( MLA::MLA_ADMIN_NONCE )
342
  );
343
-
344
  $mapping_variables = array(
345
  'page' => 'mla-settings-menu-custom_field',
346
  'mla_tab' => 'custom_field',
@@ -439,7 +439,7 @@ class MLASettings {
439
  }
440
 
441
  $tab = self::mla_get_options_tablist( $tab ) ? '-' . $tab : '-general';
442
- self::$current_page_hook = add_submenu_page( 'options-general.php', __( 'Media Library Assistant Settings', 'media-library-assistant' ), __( 'Media Library Assistant', 'media-library-assistant' ), 'manage_options', self::MLA_SETTINGS_SLUG . $tab, 'MLASettings::mla_render_settings_page' );
443
  add_action( 'load-' . self::$current_page_hook, 'MLASettings::mla_add_menu_options_action' );
444
  add_action( 'load-' . self::$current_page_hook, 'MLASettings::mla_add_help_tab_action' );
445
  add_filter( 'plugin_action_links', 'MLASettings::mla_add_plugin_settings_link_filter', 10, 2 );
@@ -711,14 +711,14 @@ class MLASettings {
711
  /*
712
  * Check for action or submit buttons.
713
  */
714
-
715
  if ( isset( $_REQUEST['custom_field_mapping'] ) && is_array( $_REQUEST['custom_field_mapping'] ) ) {
716
  /*
717
  * Find the current chunk
718
  */
719
  $offset = isset( $_REQUEST['offset'] ) ? $_REQUEST['offset'] : 0;
720
  $length = isset( $_REQUEST['length'] ) ? $_REQUEST['length'] : 0;
721
-
722
  /*
723
  * Check for page-level submit button to map attachments.
724
  */
@@ -738,7 +738,7 @@ class MLASettings {
738
  */
739
  foreach ( $_REQUEST['custom_field_mapping'] as $key => $value ) {
740
  $value = stripslashes_deep( $value );
741
-
742
  if ( isset( $value['action'] ) ) {
743
  $settings = array( $key => $value );
744
  foreach ( $value['action'] as $action => $label ) {
@@ -757,7 +757,7 @@ class MLASettings {
757
  $page_content['message'] = __( 'Custom field no mapping rule changes detected.', 'media-library-assistant' );
758
  break;
759
  }
760
-
761
  if ( 0 == $offset ) {
762
  $page_content = self::_save_custom_field_settings( $settings );
763
  if ( false !== strpos( $page_content['message'], __( 'ERROR', 'media-library-assistant' ) ) ) {
@@ -767,7 +767,7 @@ class MLASettings {
767
  break;
768
  }
769
  }
770
-
771
  $current_values = MLAOptions::mla_get_option( 'custom_field_mapping' );
772
  $settings = array( $value['name'] => $current_values[$value['name']] );
773
  $map_content = self::_process_custom_field_mapping( $settings, $offset, $length );
@@ -838,7 +838,7 @@ class MLASettings {
838
  }
839
  }
840
  }
841
-
842
  /*
843
  * Check for action or submit buttons.
844
  */
@@ -848,7 +848,7 @@ class MLASettings {
848
  */
849
  $offset = isset( $_REQUEST['offset'] ) ? $_REQUEST['offset'] : 0;
850
  $length = isset( $_REQUEST['length'] ) ? $_REQUEST['length'] : 0;
851
-
852
  /*
853
  * Check for page-level submit button to map attachments.
854
  */
@@ -872,7 +872,7 @@ class MLASettings {
872
  */
873
  foreach ( $_REQUEST['iptc_exif_mapping']['custom'] as $key => $value ) {
874
  $value = stripslashes_deep( $value );
875
-
876
  if ( isset( $value['action'] ) ) {
877
  $settings = array( 'custom' => array( $key => $value ) );
878
  foreach ( $value['action'] as $action => $label ) {
@@ -891,7 +891,7 @@ class MLASettings {
891
  $page_content['message'] = __( 'IPTC/EXIF no mapping changes detected.', 'media-library-assistant' );
892
  break;
893
  }
894
-
895
  if ( 0 == $offset ) {
896
  $page_content = self::_save_iptc_exif_custom_settings( $settings );
897
  if ( false !== strpos( $page_content['message'], __( 'ERROR', 'media-library-assistant' ) ) ) {
@@ -988,10 +988,10 @@ class MLASettings {
988
  MLAOptions::mla_update_option( $key, $_REQUEST[ MLA_OPTION_PREFIX . $key ] );
989
  break;
990
  case 'text':
991
- MLAOptions::mla_update_option( $key, trim( $_REQUEST[ MLA_OPTION_PREFIX . $key ] ) );
992
  break;
993
  case 'textarea':
994
- MLAOptions::mla_update_option( $key, trim( $_REQUEST[ MLA_OPTION_PREFIX . $key ] ) );
995
  break;
996
  case 'custom':
997
  $message = MLAOptions::$value['update']( 'update', $key, $value, $_REQUEST );
@@ -1225,7 +1225,8 @@ class MLASettings {
1225
  'mla_gallery' => array( 'title' => __ ( 'MLA Gallery', 'media-library-assistant' ), 'render' => '_compose_mla_gallery_tab' ),
1226
  'custom_field' => array( 'title' => __ ( 'Custom Fields', 'media-library-assistant' ), 'render' => '_compose_custom_field_tab' ),
1227
  'iptc_exif' => array( 'title' => 'IPTC/EXIF', 'render' => '_compose_iptc_exif_tab' ),
1228
- 'documentation' => array( 'title' => __ ( 'Documentation', 'media-library-assistant' ), 'render' => '_compose_documentation_tab' )
 
1229
  );
1230
  }
1231
 
@@ -1252,6 +1253,10 @@ class MLASettings {
1252
  $results = self::$mla_tablist;
1253
  }
1254
 
 
 
 
 
1255
  return apply_filters( 'mla_get_options_tablist', $results, self::$mla_tablist, $tab );
1256
  }
1257
 
@@ -2278,10 +2283,12 @@ class MLASettings {
2278
 
2279
  $page_values = array(
2280
  'MLA Gallery Options' => __( 'MLA Gallery Options', 'media-library-assistant' ),
 
2281
  'Go to Markup Templates' => __( 'Go to Markup Templates', 'media-library-assistant' ),
2282
  'In this tab' => __( 'In this tab you can view the default style and markup templates. You can also define additional templates and use the <code>mla_style</code> and <code>mla_markup</code> parameters to apply them in your <code>[mla_gallery]</code> shortcodes. <strong>NOTE:</strong> template additions and changes will not be made permanent until you click "Save Changes" at the bottom of this page.', 'media-library-assistant' ),
2283
  'form_url' => admin_url( 'options-general.php' ) . '?page=mla-settings-menu-mla_gallery&mla_tab=mla_gallery',
2284
  'options_list' => '',
 
2285
  'Style Templates' => __( 'Style Templates', 'media-library-assistant' ),
2286
  'style_options_list' => '',
2287
  'Markup Templates' => __( 'Markup Templates', 'media-library-assistant' ),
@@ -2633,7 +2640,7 @@ class MLASettings {
2633
  */
2634
  foreach ( $_REQUEST['custom_field_mapping'] as $key => $value ) {
2635
  $value = stripslashes_deep( $value );
2636
-
2637
  if ( isset( $value['action'] ) ) {
2638
  $settings = array( $key => $value );
2639
  foreach ( $value['action'] as $action => $label ) {
@@ -2775,7 +2782,7 @@ class MLASettings {
2775
  */
2776
  foreach ( $_REQUEST['iptc_exif_mapping']['custom'] as $key => $value ) {
2777
  $value = stripslashes_deep( $value );
2778
-
2779
  if ( isset( $value['action'] ) ) {
2780
  $settings = array( 'custom' => array( $key => $value ) );
2781
  foreach ( $value['action'] as $action => $label ) {
@@ -2905,6 +2912,146 @@ class MLASettings {
2905
  );
2906
  }
2907
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2908
  /**
2909
  * Render (echo) the "Media Library Assistant" subpage in the Settings section
2910
  *
@@ -2914,19 +3061,25 @@ class MLASettings {
2914
  */
2915
  public static function mla_render_settings_page( ) {
2916
  if ( !current_user_can( 'manage_options' ) ) {
2917
- echo __( 'Media Library Assistant - Error', 'media-library-assistant' ) . "</h2>\r\n";
2918
  wp_die( __( 'You do not have permission to manage plugin settings.', 'media-library-assistant' ) );
2919
  }
2920
 
2921
  /*
2922
  * Load template array and initialize page-level values.
2923
  */
 
 
 
2924
  self::$page_template_array = MLAData::mla_load_template( 'admin-display-settings-page.tpl' );
2925
  $current_tab_slug = isset( $_REQUEST['mla_tab'] ) ? $_REQUEST['mla_tab']: 'general';
2926
  $current_tab = self::mla_get_options_tablist( $current_tab_slug );
2927
  $page_values = array(
2928
  'donateURL' => MLA_PLUGIN_URL . 'images/DonateButton.jpg',
 
2929
  'version' => 'v' . MLA::CURRENT_MLA_VERSION,
 
 
2930
  'messages' => '',
2931
  'tablist' => self::_compose_settings_tabs( $current_tab_slug ),
2932
  'tab_content' => '',
@@ -3000,8 +3153,20 @@ class MLASettings {
3000
  $settings_changed = true;
3001
  $message_list .= self::_update_option_row( $key, $value );
3002
  }
3003
- } // text
3004
- } // mla_gallery
 
 
 
 
 
 
 
 
 
 
 
 
3005
  } // foreach mla_options
3006
 
3007
  /*
@@ -3025,7 +3190,7 @@ class MLASettings {
3025
 
3026
  if ( array_key_exists( $name, $new_deletes ) ) {
3027
  /* translators: 1: template type 2: template name */
3028
- $message_list .= '<br>' . sprintf( _x( 'Deleting %1$s "%2$s".', 'message_list', 'media-library-assistant' ), __( 'style template', 'media-library-assistant' ), $name );
3029
  $templates_changed = true;
3030
  continue;
3031
  }
@@ -3036,17 +3201,17 @@ class MLASettings {
3036
  continue;
3037
  } elseif ( 'blank' == $new_slug ) {
3038
  /* translators: 1: ERROR tag 2: template name 3: template type */
3039
- $error_list .= '<br>' . sprintf( __( '%1$s: Reserved name "%2$s", new %3$s discarded.', 'media-library-assistant' ), __( 'ERROR', 'media-library-assistant' ), $new_slug, __( 'style template', 'media-library-assistant' ) );
3040
  continue;
3041
  }
3042
 
3043
  if ( array_key_exists( $new_slug, $old_templates ) ) {
3044
  /* translators: 1: ERROR tag 2: template name 3: template type */
3045
- $error_list .= '<br>' . sprintf( __( '%1$s: Duplicate name "%2$s", new %3$s discarded.', 'media-library-assistant' ), __( 'ERROR', 'media-library-assistant' ), $new_slug, __( 'style template', 'media-library-assistant' ) );
3046
  continue;
3047
  } else {
3048
  /* translators: 1: template type 2: template name */
3049
- $message_list .= '<br>' . sprintf( _x( 'Adding new %1$s "%2$s".', 'message_list', 'media-library-assistant' ), __( 'style template', 'media-library-assistant' ), $new_slug );
3050
  $templates_changed = true;
3051
  }
3052
  } // 'blank' - reserved name
@@ -3074,7 +3239,7 @@ class MLASettings {
3074
 
3075
  if ( ( 'blank' != $name ) && ( $new_values[ $name ] != $old_templates[ $name ] ) ) {
3076
  /* translators: 1: template type 2: template name */
3077
- $message_list .= '<br>' . sprintf( _x( 'Updating contents of %1$s "%2$s".', 'message_list', 'media-library-assistant' ), __( 'style template', 'media-library-assistant' ), $new_slug );
3078
  $templates_changed = true;
3079
  }
3080
 
@@ -3085,7 +3250,7 @@ class MLASettings {
3085
  $settings_changed = true;
3086
  if ( false == MLAOptions::mla_put_style_templates( $new_templates ) ) {
3087
  /* translators: 1: ERROR tag 2: template type */
3088
- $error_list .= '<br>' . sprintf( __( '%1$s: Update of %2$s failed.', 'media-library-assistant' ), __( 'ERROR', 'media-library-assistant' ), __( 'style template', 'media-library-assistant' ) );
3089
  }
3090
  }
3091
 
@@ -3345,9 +3510,8 @@ class MLASettings {
3345
  do_action( 'mla_begin_mapping', $source, NULL );
3346
  foreach ( $post_ids as $key => $post_id ) {
3347
  $updates = MLAOptions::mla_evaluate_custom_field_mapping( (integer) $post_id, 'custom_field_mapping', $settings );
3348
-
3349
  $examine_count += 1;
3350
- if ( ! empty( $updates ) ) {
3351
  $results = MLAData::mla_update_item_postmeta( (integer) $post_id, $updates['custom_updates'] );
3352
  if ( ! empty( $results ) ) {
3353
  $update_count += 1;
@@ -3611,7 +3775,7 @@ class MLASettings {
3611
  $source = 'iptc_exif_custom_rule';
3612
  $settings = stripslashes_deep( $settings );
3613
  }
3614
-
3615
  if ( empty( $settings['custom'] ) ) {
3616
  return array(
3617
  /* translators: 1: ERROR tag 2: field type */
319
  */
320
  public static function mla_admin_enqueue_scripts_action( $page_hook ) {
321
  global $wpdb;
322
+
323
  /*
324
  * Without a tab value, there's nothing to do
325
  */
340
  'comma' => _x( ',', 'tag_delimiter', 'media-library-assistant' ),
341
  'ajax_nonce' => wp_create_nonce( MLA::MLA_ADMIN_NONCE )
342
  );
343
+
344
  $mapping_variables = array(
345
  'page' => 'mla-settings-menu-custom_field',
346
  'mla_tab' => 'custom_field',
439
  }
440
 
441
  $tab = self::mla_get_options_tablist( $tab ) ? '-' . $tab : '-general';
442
+ self::$current_page_hook = add_submenu_page( 'options-general.php', __( 'Media Library Assistant', 'media-library-assistant' ) . ' ' . __( 'Settings', 'media-library-assistant' ), __( 'Media Library Assistant', 'media-library-assistant' ), 'manage_options', self::MLA_SETTINGS_SLUG . $tab, 'MLASettings::mla_render_settings_page' );
443
  add_action( 'load-' . self::$current_page_hook, 'MLASettings::mla_add_menu_options_action' );
444
  add_action( 'load-' . self::$current_page_hook, 'MLASettings::mla_add_help_tab_action' );
445
  add_filter( 'plugin_action_links', 'MLASettings::mla_add_plugin_settings_link_filter', 10, 2 );
711
  /*
712
  * Check for action or submit buttons.
713
  */
714
+
715
  if ( isset( $_REQUEST['custom_field_mapping'] ) && is_array( $_REQUEST['custom_field_mapping'] ) ) {
716
  /*
717
  * Find the current chunk
718
  */
719
  $offset = isset( $_REQUEST['offset'] ) ? $_REQUEST['offset'] : 0;
720
  $length = isset( $_REQUEST['length'] ) ? $_REQUEST['length'] : 0;
721
+
722
  /*
723
  * Check for page-level submit button to map attachments.
724
  */
738
  */
739
  foreach ( $_REQUEST['custom_field_mapping'] as $key => $value ) {
740
  $value = stripslashes_deep( $value );
741
+
742
  if ( isset( $value['action'] ) ) {
743
  $settings = array( $key => $value );
744
  foreach ( $value['action'] as $action => $label ) {
757
  $page_content['message'] = __( 'Custom field no mapping rule changes detected.', 'media-library-assistant' );
758
  break;
759
  }
760
+
761
  if ( 0 == $offset ) {
762
  $page_content = self::_save_custom_field_settings( $settings );
763
  if ( false !== strpos( $page_content['message'], __( 'ERROR', 'media-library-assistant' ) ) ) {
767
  break;
768
  }
769
  }
770
+
771
  $current_values = MLAOptions::mla_get_option( 'custom_field_mapping' );
772
  $settings = array( $value['name'] => $current_values[$value['name']] );
773
  $map_content = self::_process_custom_field_mapping( $settings, $offset, $length );
838
  }
839
  }
840
  }
841
+
842
  /*
843
  * Check for action or submit buttons.
844
  */
848
  */
849
  $offset = isset( $_REQUEST['offset'] ) ? $_REQUEST['offset'] : 0;
850
  $length = isset( $_REQUEST['length'] ) ? $_REQUEST['length'] : 0;
851
+
852
  /*
853
  * Check for page-level submit button to map attachments.
854
  */
872
  */
873
  foreach ( $_REQUEST['iptc_exif_mapping']['custom'] as $key => $value ) {
874
  $value = stripslashes_deep( $value );
875
+
876
  if ( isset( $value['action'] ) ) {
877
  $settings = array( 'custom' => array( $key => $value ) );
878
  foreach ( $value['action'] as $action => $label ) {
891
  $page_content['message'] = __( 'IPTC/EXIF no mapping changes detected.', 'media-library-assistant' );
892
  break;
893
  }
894
+
895
  if ( 0 == $offset ) {
896
  $page_content = self::_save_iptc_exif_custom_settings( $settings );
897
  if ( false !== strpos( $page_content['message'], __( 'ERROR', 'media-library-assistant' ) ) ) {
988
  MLAOptions::mla_update_option( $key, $_REQUEST[ MLA_OPTION_PREFIX . $key ] );
989
  break;
990
  case 'text':
991
+ MLAOptions::mla_update_option( $key, stripslashes( trim( $_REQUEST[ MLA_OPTION_PREFIX . $key ] ) ) );
992
  break;
993
  case 'textarea':
994
+ MLAOptions::mla_update_option( $key, stripslashes( trim( $_REQUEST[ MLA_OPTION_PREFIX . $key ] ) ) );
995
  break;
996
  case 'custom':
997
  $message = MLAOptions::$value['update']( 'update', $key, $value, $_REQUEST );
1225
  'mla_gallery' => array( 'title' => __ ( 'MLA Gallery', 'media-library-assistant' ), 'render' => '_compose_mla_gallery_tab' ),
1226
  'custom_field' => array( 'title' => __ ( 'Custom Fields', 'media-library-assistant' ), 'render' => '_compose_custom_field_tab' ),
1227
  'iptc_exif' => array( 'title' => 'IPTC/EXIF', 'render' => '_compose_iptc_exif_tab' ),
1228
+ 'documentation' => array( 'title' => __ ( 'Documentation', 'media-library-assistant' ), 'render' => '_compose_documentation_tab' ),
1229
+ 'debug' => array( 'title' => __ ( 'Debug', 'media-library-assistant' ), 'render' => '_compose_debug_tab' ),
1230
  );
1231
  }
1232
 
1253
  $results = self::$mla_tablist;
1254
  }
1255
 
1256
+ if ( 0 == ( MLA_DEBUG_LEVEL & 1 ) ) {
1257
+ unset ( $results['debug'] );
1258
+ }
1259
+
1260
  return apply_filters( 'mla_get_options_tablist', $results, self::$mla_tablist, $tab );
1261
  }
1262
 
2283
 
2284
  $page_values = array(
2285
  'MLA Gallery Options' => __( 'MLA Gallery Options', 'media-library-assistant' ),
2286
+ 'Go to Style Templates' => __( 'Go to Style Templates', 'media-library-assistant' ),
2287
  'Go to Markup Templates' => __( 'Go to Markup Templates', 'media-library-assistant' ),
2288
  'In this tab' => __( 'In this tab you can view the default style and markup templates. You can also define additional templates and use the <code>mla_style</code> and <code>mla_markup</code> parameters to apply them in your <code>[mla_gallery]</code> shortcodes. <strong>NOTE:</strong> template additions and changes will not be made permanent until you click "Save Changes" at the bottom of this page.', 'media-library-assistant' ),
2289
  'form_url' => admin_url( 'options-general.php' ) . '?page=mla-settings-menu-mla_gallery&mla_tab=mla_gallery',
2290
  'options_list' => '',
2291
+ 'Go to Top' => __( 'Go to Top', 'media-library-assistant' ),
2292
  'Style Templates' => __( 'Style Templates', 'media-library-assistant' ),
2293
  'style_options_list' => '',
2294
  'Markup Templates' => __( 'Markup Templates', 'media-library-assistant' ),
2640
  */
2641
  foreach ( $_REQUEST['custom_field_mapping'] as $key => $value ) {
2642
  $value = stripslashes_deep( $value );
2643
+
2644
  if ( isset( $value['action'] ) ) {
2645
  $settings = array( $key => $value );
2646
  foreach ( $value['action'] as $action => $label ) {
2782
  */
2783
  foreach ( $_REQUEST['iptc_exif_mapping']['custom'] as $key => $value ) {
2784
  $value = stripslashes_deep( $value );
2785
+
2786
  if ( isset( $value['action'] ) ) {
2787
  $settings = array( 'custom' => array( $key => $value ) );
2788
  foreach ( $value['action'] as $action => $label ) {
2912
  );
2913
  }
2914
 
2915
+ /**
2916
+ * Save Debug settings to the options table
2917
+ *
2918
+ * @since 2.10
2919
+ *
2920
+ * @uses $_REQUEST
2921
+ *
2922
+ * @return array Message(s) reflecting the results of the operation
2923
+ */
2924
+ private static function _save_debug_settings( ) {
2925
+ $message_list = '';
2926
+
2927
+ foreach ( MLAOptions::$mla_option_definitions as $key => $value ) {
2928
+ if ( 'debug' == $value['tab'] ) {
2929
+ $message_list .= self::_update_option_row( $key, $value );
2930
+ } // view option
2931
+ } // foreach mla_options
2932
+
2933
+ $page_content = array(
2934
+ 'message' => __( 'Debug settings saved.', 'media-library-assistant' ) . "\r\n",
2935
+ 'body' => ''
2936
+ );
2937
+
2938
+ /*
2939
+ * Uncomment this for debugging.
2940
+ */
2941
+ // $page_content['message'] .= $message_list;
2942
+
2943
+ return $page_content;
2944
+ } // _save_debug_settings
2945
+
2946
+ /**
2947
+ * Compose the Debug tab content for the Settings subpage
2948
+ *
2949
+ * @since 2.10
2950
+ * @uses $page_template_array contains tab content template(s)
2951
+ *
2952
+ * @return array 'message' => status/error messages, 'body' => tab content
2953
+ */
2954
+ private static function _compose_debug_tab( ) {
2955
+ $page_content = array(
2956
+ 'message' => '',
2957
+ 'body' => ''
2958
+ );
2959
+
2960
+ $page_values = array();
2961
+ $error_log_name = ini_get( 'error_log' );
2962
+
2963
+ /*
2964
+ * Check for page-level actions
2965
+ */
2966
+ if ( isset( $_REQUEST['mla_reset_log'] ) && 'true' == $_REQUEST['mla_reset_log'] ) {
2967
+ $file_error = false;
2968
+ $file_handle = @fopen( $error_log_name, 'w' );
2969
+
2970
+ if ( $file_handle ) {
2971
+ $file_error = ( false === @ftruncate( $file_handle, 0 ) );
2972
+ @fclose( $file_handle );
2973
+ } else {
2974
+ $file_error = true;
2975
+ }
2976
+
2977
+ if ( $file_error ) {
2978
+ /* translators: 1: ERROR tag 2: file type 3: file name */
2979
+ $page_content['message'] = sprintf( __( '%1$s: The %2$s file ( %3$s ) could not be reset.', 'media-library-assistant' ), __( 'ERROR', 'media-library-assistant' ), __( 'Error Log', 'media-library-assistant' ), $error_log_name );
2980
+ }
2981
+ } elseif ( !empty( $_REQUEST['mla-debug-options-save'] ) ) {
2982
+ check_admin_referer( MLA::MLA_ADMIN_NONCE, '_wpnonce' );
2983
+ $page_content = self::_save_debug_settings();
2984
+ }
2985
+
2986
+ /*
2987
+ * Start with any page-level options
2988
+ */
2989
+ $options_list = '';
2990
+ foreach ( MLAOptions::$mla_option_definitions as $key => $value ) {
2991
+ if ( 'debug' == $value['tab'] ) {
2992
+ $options_list .= self::_compose_option_row( $key, $value );
2993
+ }
2994
+ }
2995
+
2996
+ /*
2997
+ * Add debug content
2998
+ */
2999
+ $error_log_contents = @file_get_contents( $error_log_name, false );
3000
+ if ( false === $error_log_contents ) {
3001
+ $error_info = error_get_last();
3002
+ if ( false !== ( $tail = strpos( $error_info['message'], '</a>]: ' ) ) ) {
3003
+ $php_errormsg = ':<br>' . substr( $error_info['message'], $tail + 7 );
3004
+ } else {
3005
+ $php_errormsg = '.';
3006
+ }
3007
+
3008
+ /* translators: 1: ERROR tag 2: file type 3: file name 4: error message*/
3009
+ $page_content['message'] = sprintf( __( '%1$s: Reading the %2$s file ( %3$s ) "%4$s".', 'media-library-assistant' ), __( 'ERROR', 'media-library-assistant' ), __( 'Error Log', 'media-library-assistant' ), $error_log_name, $php_errormsg );
3010
+ $error_log_contents = '';
3011
+ } else {
3012
+ //$error_log_contents = esc_html( $error_log_contents );
3013
+ }
3014
+
3015
+ if ( current_user_can( 'upload_files' ) ) {
3016
+ $args = array(
3017
+ 'page' => MLA::ADMIN_PAGE_SLUG,
3018
+ 'mla_download_file' => urlencode( $error_log_name ),
3019
+ 'mla_download_type' => 'text/plain'
3020
+ );
3021
+ $download_link = '<a class="button-secondary" href="' . add_query_arg( $args, wp_nonce_url( 'upload.php', MLA::MLA_ADMIN_NONCE ) ) . '" title="' . __( 'Download', 'media-library-assistant' ) . ' &#8220;' . __( 'Error Log', 'media-library-assistant' ) . '&#8221;">' . __( 'Download', 'media-library-assistant' ) . '</a>';
3022
+
3023
+ $args = array(
3024
+ 'page' => 'mla-settings-menu-debug',
3025
+ 'mla_tab' => 'debug',
3026
+ 'mla_reset_log' => 'true'
3027
+ );
3028
+ $reset_link = '<a class="button-secondary" href="' . add_query_arg( $args, wp_nonce_url( 'options-general.php', MLA::MLA_ADMIN_NONCE ) ) . '" title="' . __( 'Reset', 'media-library-assistant' ) . ' &#8220;' . __( 'Error Log', 'media-library-assistant' ) . '&#8221;">' . __( 'Reset', 'media-library-assistant' ) . '</a>';
3029
+ }
3030
+
3031
+ $error_level = ini_get( 'error_reporting' );
3032
+ $error_log_title = __( 'Error Log', 'media-library-assistant' ) . ' (' . sprintf( '0x%1$04X', $error_level ) . ')';
3033
+ /*
3034
+ * Compose tab content
3035
+ */
3036
+ $page_values = array (
3037
+ 'Debug Options' => __( 'Debug Options', 'media-library-assistant' ),
3038
+ 'form_url' => admin_url( 'options-general.php' ) . '?page=mla-settings-menu-debug&mla_tab=debug',
3039
+ 'options_list' => $options_list,
3040
+ 'Error Log' => $error_log_title,
3041
+ 'error_log_text' => $error_log_contents,
3042
+ 'download_link' => $download_link,
3043
+ 'reset_link' => $reset_link,
3044
+ 'Save Changes' => __( 'Save Changes', 'media-library-assistant' ),
3045
+ /* translators: 1: "Save Changes" */
3046
+ 'Click Save Changes' => sprintf( __( 'Click %1$s to update the %2$s.', 'media-library-assistant' ), '<strong>' . __( 'Save Changes', 'media-library-assistant' ) . '</strong>', __( 'Debug Options', 'media-library-assistant' ) ),
3047
+ '_wpnonce' => wp_nonce_field( MLA::MLA_ADMIN_NONCE, '_wpnonce', true, false ),
3048
+ '_wp_http_referer' => wp_referer_field( false )
3049
+ );
3050
+
3051
+ $page_content['body'] = MLAData::mla_parse_template( self::$page_template_array['debug-tab'], $page_values );
3052
+ return $page_content;
3053
+ }
3054
+
3055
  /**
3056
  * Render (echo) the "Media Library Assistant" subpage in the Settings section
3057
  *
3061
  */
3062
  public static function mla_render_settings_page( ) {
3063
  if ( !current_user_can( 'manage_options' ) ) {
3064
+ echo __( 'Media Library Assistant', 'media-library-assistant' ) . ' - ' . __( 'ERROR', 'media-library-assistant' ) . "</h2>\r\n";
3065
  wp_die( __( 'You do not have permission to manage plugin settings.', 'media-library-assistant' ) );
3066
  }
3067
 
3068
  /*
3069
  * Load template array and initialize page-level values.
3070
  */
3071
+ $development_version = MLA::MLA_DEVELOPMENT_VERSION;
3072
+ $development_version = ( ! empty( $development_version ) ) ? ' (' . $development_version . ')' : '';
3073
+ $debug_level = MLA_DEBUG_LEVEL ? ' (' . sprintf( '0x%1$04X', MLA_DEBUG_LEVEL ) . ')' : '';
3074
  self::$page_template_array = MLAData::mla_load_template( 'admin-display-settings-page.tpl' );
3075
  $current_tab_slug = isset( $_REQUEST['mla_tab'] ) ? $_REQUEST['mla_tab']: 'general';
3076
  $current_tab = self::mla_get_options_tablist( $current_tab_slug );
3077
  $page_values = array(
3078
  'donateURL' => MLA_PLUGIN_URL . 'images/DonateButton.jpg',
3079
+ 'Donate' => __( 'Donate', 'media-library-assistant' ),
3080
  'version' => 'v' . MLA::CURRENT_MLA_VERSION,
3081
+ 'development' => $development_version,
3082
+ 'debug' => $debug_level,
3083
  'messages' => '',
3084
  'tablist' => self::_compose_settings_tabs( $current_tab_slug ),
3085
  'tab_content' => '',
3153
  $settings_changed = true;
3154
  $message_list .= self::_update_option_row( $key, $value );
3155
  }
3156
+ } elseif ( 'checkbox' == $value['type'] ) {
3157
+ $old_value = MLAOptions::mla_get_option( $key );
3158
+ if ( isset( $_REQUEST[ MLA_OPTION_PREFIX . $key ] ) ) {
3159
+ $checkbox_changed = "checked" != $old_value;
3160
+ } else {
3161
+ $checkbox_changed = "unchecked" != $old_value;
3162
+ }
3163
+
3164
+ if ( $checkbox_changed ) {
3165
+ $settings_changed = true;
3166
+ $message_list .= self::_update_option_row( $key, $value );
3167
+ }
3168
+ }
3169
+ } // mla_gallery option
3170
  } // foreach mla_options
3171
 
3172
  /*
3190
 
3191
  if ( array_key_exists( $name, $new_deletes ) ) {
3192
  /* translators: 1: template type 2: template name */
3193
+ $message_list .= '<br>' . sprintf( _x( 'Deleting %1$s "%2$s".', 'message_list', 'media-library-assistant' ), __( 'Style Template', 'media-library-assistant' ), $name );
3194
  $templates_changed = true;
3195
  continue;
3196
  }
3201
  continue;
3202
  } elseif ( 'blank' == $new_slug ) {
3203
  /* translators: 1: ERROR tag 2: template name 3: template type */
3204
+ $error_list .= '<br>' . sprintf( __( '%1$s: Reserved name "%2$s", new %3$s discarded.', 'media-library-assistant' ), __( 'ERROR', 'media-library-assistant' ), $new_slug, __( 'Style Template', 'media-library-assistant' ) );
3205
  continue;
3206
  }
3207
 
3208
  if ( array_key_exists( $new_slug, $old_templates ) ) {
3209
  /* translators: 1: ERROR tag 2: template name 3: template type */
3210
+ $error_list .= '<br>' . sprintf( __( '%1$s: Duplicate name "%2$s", new %3$s discarded.', 'media-library-assistant' ), __( 'ERROR', 'media-library-assistant' ), $new_slug, __( 'Style Template', 'media-library-assistant' ) );
3211
  continue;
3212
  } else {
3213
  /* translators: 1: template type 2: template name */
3214
+ $message_list .= '<br>' . sprintf( _x( 'Adding new %1$s "%2$s".', 'message_list', 'media-library-assistant' ), __( 'Style Template', 'media-library-assistant' ), $new_slug );
3215
  $templates_changed = true;
3216
  }
3217
  } // 'blank' - reserved name
3239
 
3240
  if ( ( 'blank' != $name ) && ( $new_values[ $name ] != $old_templates[ $name ] ) ) {
3241
  /* translators: 1: template type 2: template name */
3242
+ $message_list .= '<br>' . sprintf( _x( 'Updating contents of %1$s "%2$s".', 'message_list', 'media-library-assistant' ), __( 'Style Template', 'media-library-assistant' ), $new_slug );
3243
  $templates_changed = true;
3244
  }
3245
 
3250
  $settings_changed = true;
3251
  if ( false == MLAOptions::mla_put_style_templates( $new_templates ) ) {
3252
  /* translators: 1: ERROR tag 2: template type */
3253
+ $error_list .= '<br>' . sprintf( __( '%1$s: Update of %2$s failed.', 'media-library-assistant' ), __( 'ERROR', 'media-library-assistant' ), __( 'Style Template', 'media-library-assistant' ) );
3254
  }
3255
  }
3256
 
3510
  do_action( 'mla_begin_mapping', $source, NULL );
3511
  foreach ( $post_ids as $key => $post_id ) {
3512
  $updates = MLAOptions::mla_evaluate_custom_field_mapping( (integer) $post_id, 'custom_field_mapping', $settings );
 
3513
  $examine_count += 1;
3514
+ if ( ! empty( $updates ) && isset( $updates['custom_updates'] ) ) {
3515
  $results = MLAData::mla_update_item_postmeta( (integer) $post_id, $updates['custom_updates'] );
3516
  if ( ! empty( $results ) ) {
3517
  $update_count += 1;
3775
  $source = 'iptc_exif_custom_rule';
3776
  $settings = stripslashes_deep( $settings );
3777
  }
3778
+
3779
  if ( empty( $settings['custom'] ) ) {
3780
  return array(
3781
  /* translators: 1: ERROR tag 2: field type */
includes/class-mla-shortcodes.php CHANGED
@@ -49,7 +49,7 @@ class MLAShortcodes {
49
  $no_texturize_shortcodes[] = 'mla_gallery';
50
  $no_texturize_shortcodes[] = 'mla_tag_cloud';
51
  }
52
-
53
  return $no_texturize_shortcodes;
54
  }
55
 
@@ -68,6 +68,94 @@ class MLAShortcodes {
68
  return;
69
  }
70
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
  /**
72
  * Make sure $attr is an array and repair line-break damage
73
  *
@@ -92,11 +180,11 @@ class MLAShortcodes {
92
  break;
93
  }
94
  }
95
-
96
  if ( $is_valid ) {
97
  return $attr;
98
  }
99
-
100
  /*
101
  * Found an error, e.g., line break(s) among the atttributes.
102
  * Try to reconstruct the input string without them.
@@ -107,7 +195,7 @@ class MLAShortcodes {
107
  if ( ( false !== $break_tag ) && ( ($break_tag + 3) == strlen( $value ) ) ) {
108
  $value = substr( $value, 0, ( strlen( $value ) - 3) );
109
  }
110
-
111
  if ( is_numeric( $key ) ) {
112
  if ( '/>' !== $value ) {
113
  $new_attr .= $value . ' ';
@@ -219,10 +307,19 @@ class MLAShortcodes {
219
  'mla_margin' => MLAOptions::mla_get_option('mla_gallery_margin'),
220
  'mla_target' => '',
221
  'mla_debug' => false,
 
222
  'mla_viewer' => false,
223
- 'mla_viewer_extensions' => 'doc,xls,ppt,pdf,txt',
 
 
 
 
 
224
  'mla_viewer_page' => '1',
225
- 'mla_viewer_width' => '150',
 
 
 
226
  'mla_alt_shortcode' => NULL,
227
  'mla_alt_ids_name' => 'ids',
228
 
@@ -446,13 +543,34 @@ class MLAShortcodes {
446
  }
447
 
448
  /*
449
- * Check for Google File Viewer arguments
450
  */
451
- $arguments['mla_viewer'] = !empty( $arguments['mla_viewer'] ) && ( 'true' == strtolower( $arguments['mla_viewer'] ) );
 
 
 
 
 
 
 
 
 
 
452
  if ( $arguments['mla_viewer'] ) {
453
  $arguments['mla_viewer_extensions'] = array_filter( array_map( 'trim', explode( ',', $arguments['mla_viewer_extensions'] ) ) );
454
- $arguments['mla_viewer_page'] = absint( $arguments['mla_viewer_page'] );
 
 
455
  $arguments['mla_viewer_width'] = absint( $arguments['mla_viewer_width'] );
 
 
 
 
 
 
 
 
 
456
  }
457
 
458
  /*
@@ -791,15 +909,15 @@ class MLAShortcodes {
791
  if ( isset( $parent_info['parent_name'] ) ) {
792
  $item_values['parent_name'] = $parent_info['parent_name'];
793
  }
794
-
795
  if ( isset( $parent_info['parent_type'] ) ) {
796
  $item_values['parent_type'] = wptexturize( $parent_info['parent_type'] );
797
  }
798
-
799
  if ( isset( $parent_info['parent_title'] ) ) {
800
  $item_values['parent_title'] = wptexturize( $parent_info['parent_title'] );
801
  }
802
-
803
  if ( isset( $parent_info['parent_date'] ) ) {
804
  $item_values['parent_date'] = wptexturize( $parent_info['parent_date'] );
805
  }
@@ -1041,9 +1159,10 @@ class MLAShortcodes {
1041
  $link_href = '';
1042
  }
1043
 
1044
- $match_count = preg_match_all( '#\<a [^\>]+\>(.*)\</a\>#', $item_values['link'], $matches, PREG_OFFSET_CAPTURE );
1045
  if ( ! ( ( $match_count == false ) || ( $match_count == 0 ) ) ) {
1046
- $item_values['thumbnail_content'] = $matches[1][0][0];
 
1047
  } else {
1048
  $item_values['thumbnail_content'] = '';
1049
  }
@@ -1057,6 +1176,23 @@ class MLAShortcodes {
1057
  $item_values['thumbnail_width'] = '';
1058
  $item_values['thumbnail_height'] = '';
1059
  $item_values['thumbnail_url'] = '';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1060
  }
1061
 
1062
  /*
@@ -1069,18 +1205,93 @@ class MLAShortcodes {
1069
  }
1070
 
1071
  /*
1072
- * Check for "Google file viewer" substitution, uses above-defined
1073
  * $link_attributes (includes target), $rollover_text, $link_href (link only),
1074
  * $image_attributes, $image_class, $image_alt
1075
- *
1076
- * Since Google File Viewer has been discontinued, uses the MIME type icon for a thumbnail.
1077
  */
1078
  if ( $arguments['mla_viewer'] && empty( $item_values['thumbnail_url'] ) ) {
 
 
 
1079
  $last_dot = strrpos( $item_values['file'], '.' );
1080
  if ( !( false === $last_dot) ) {
1081
  $extension = substr( $item_values['file'], $last_dot + 1 );
1082
  if ( in_array( $extension, $arguments['mla_viewer_extensions'] ) ) {
 
 
 
1083
  $icon_url = wp_mime_type_icon( $attachment->ID );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1084
 
1085
  /*
1086
  * <img> tag (thumbnail_text)
@@ -1095,8 +1306,7 @@ class MLAShortcodes {
1095
  $image_alt = ' alt="' . $item_values['caption'] . '"';
1096
  }
1097
 
1098
- $item_values['thumbnail_content'] = sprintf(
1099
- '<img %1$swidth="%2$s" height="%2$s" src="%3$s"%4$s%5$s>', $image_attributes, $arguments['mla_viewer_width'], $icon_url, $image_class, $image_alt );
1100
 
1101
  /*
1102
  * Filelink, pagelink and link.
@@ -1349,7 +1559,7 @@ class MLAShortcodes {
1349
  if ( isset( $arguments[ $mla_page_parameter ] ) ) {
1350
  $arguments['offset'] = $arguments['limit'] * ( $arguments[ $mla_page_parameter ] - 1);
1351
  }
1352
-
1353
  /*
1354
  * Clean up the current_item to separate term_id from slug
1355
  */
@@ -1831,7 +2041,7 @@ class MLAShortcodes {
1831
  }
1832
  }
1833
  }
1834
-
1835
  /*
1836
  * Add item_specific field-level substitution parameters
1837
  */
@@ -2352,14 +2562,14 @@ class MLAShortcodes {
2352
  }
2353
 
2354
  $markup_values['http_host'] = $_SERVER['HTTP_HOST'];
2355
-
2356
  if ( 0 < $new_page ) {
2357
  $new_uri = remove_query_arg( $mla_page_parameter, $_SERVER['REQUEST_URI'] );
2358
  $markup_values['request_uri'] = add_query_arg( array( $mla_page_parameter => $new_page ), $new_uri );
2359
  } else {
2360
  $markup_values['request_uri'] = $_SERVER['REQUEST_URI'];
2361
  }
2362
-
2363
  $markup_values['new_url'] = set_url_scheme( $markup_values['scheme'] . $markup_values['http_host'] . $markup_values['request_uri'] );
2364
 
2365
  /*
@@ -2367,7 +2577,7 @@ class MLAShortcodes {
2367
  * which can contain request: and query: arguments.
2368
  */
2369
  $pagination_arguments = array( 'mla_nolink_text', 'mla_link_class', 'mla_rollover_text', 'mla_link_attributes', 'mla_link_href', 'mla_link_text', 'mla_prev_text', 'mla_next_text' );
2370
-
2371
  $new_text = '';
2372
  foreach( $pagination_arguments as $value ) {
2373
  $new_text .= str_replace( '{+', '[+', str_replace( '+}', '+]', $arguments[ $value ] ) );
@@ -2489,7 +2699,7 @@ class MLAShortcodes {
2489
  $order = isset( $query_parameters['order'] ) ? ' ' . $query_parameters['order'] : '';
2490
  $orderby = isset( $query_parameters['orderby'] ) ? $query_parameters['orderby'] : '';
2491
  $meta_key = isset( $query_parameters['meta_key'] ) ? $query_parameters['meta_key'] : '';
2492
-
2493
  if ( is_null( $table_prefix ) ) {
2494
  $table_prefix = $wpdb->posts . '.';
2495
  }
@@ -2541,7 +2751,7 @@ class MLAShortcodes {
2541
  }
2542
  }
2543
  }
2544
-
2545
  if ( ! empty( $meta_key ) ) {
2546
  $allowed_keys[ $meta_key ] = "$wpdb->postmeta.meta_value";
2547
  $allowed_keys['meta_value'] = "$wpdb->postmeta.meta_value";
@@ -2677,7 +2887,7 @@ class MLAShortcodes {
2677
  * @var object
2678
  */
2679
  public static $mla_gallery_wp_query_object = NULL;
2680
-
2681
  /**
2682
  * Parses shortcode parameters and returns the gallery objects
2683
  *
@@ -2698,7 +2908,7 @@ class MLAShortcodes {
2698
  self::$query_parameters = array();
2699
 
2700
  /*
2701
- * Parameters passed to the posts_search filter function
2702
  */
2703
  MLAData::$search_parameters = array( 'debug' => 'none' );
2704
 
@@ -2810,7 +3020,7 @@ class MLAShortcodes {
2810
  $simple_tax_queries[ $key ] = implode(',', array_filter( array_map( 'trim', explode( ',', $value ) ) ) );
2811
  } // array_key_exists
2812
  } //foreach $attr
2813
-
2814
  /*
2815
  * One of five outcomes:
2816
  * 1) An explicit tax_query was found; use it and ignore all other taxonomy parameters
@@ -2834,7 +3044,7 @@ class MLAShortcodes {
2834
  } else {
2835
  $tax_query = array ();
2836
  }
2837
-
2838
  // Validate other tax_query parameters or set defaults
2839
  $tax_operator = 'IN';
2840
  if ( isset( $attr['tax_operator'] ) ) {
@@ -2843,18 +3053,18 @@ class MLAShortcodes {
2843
  $tax_operator = $attr_value;
2844
  }
2845
  }
2846
-
2847
  $tax_include_children = true;
2848
  if ( isset( $attr['tax_include_children'] ) ) {
2849
  if ( 'FALSE' == strtoupper( $attr['tax_include_children'] ) ) {
2850
  $tax_include_children = false;
2851
  }
2852
  }
2853
-
2854
  foreach( $simple_tax_queries as $key => $value ) {
2855
  $tax_query[] = array( 'taxonomy' => $key, 'field' => 'slug', 'terms' => explode( ',', $value ), 'operator' => $tax_operator, 'include_children' => $tax_include_children );
2856
  }
2857
-
2858
  $query_arguments['tax_query'] = $tax_query;
2859
  } else {
2860
  // exactly one simple query is present
@@ -2996,10 +3206,10 @@ class MLAShortcodes {
2996
  } else {
2997
  $value = array_filter( array_map( 'intval', explode( ",", $value ) ) );
2998
  }
2999
-
3000
  if ( ! empty( $value ) ) {
3001
  $query_arguments[ $key ] = $value;
3002
-
3003
  if ( ! $children_ok ) {
3004
  $use_children = false;
3005
  }
@@ -3283,7 +3493,7 @@ class MLAShortcodes {
3283
 
3284
  if ( ! empty( MLAData::$search_parameters['mla_terms_phrases'] ) ) {
3285
  MLAData::$search_parameters['mla_terms_search']['phrases'] = MLAData::$search_parameters['mla_terms_phrases'];
3286
-
3287
  if ( empty( MLAData::$search_parameters['mla_phrase_connector'] ) ) {
3288
  MLAData::$search_parameters['mla_terms_search']['radio_phrases'] = 'AND';
3289
  } else {
@@ -3296,12 +3506,12 @@ class MLAShortcodes {
3296
  MLAData::$search_parameters['mla_terms_search']['radio_terms'] = MLAData::$search_parameters['mla_phrase_connector'];
3297
  }
3298
  }
3299
-
3300
  unset( MLAData::$search_parameters['mla_terms_phrases'] );
3301
  unset( MLAData::$search_parameters['mla_terms_taxonomies'] );
3302
  unset( MLAData::$search_parameters['mla_phrase_connector'] );
3303
  unset( MLAData::$search_parameters['mla_term_connector'] );
3304
-
3305
  if ( empty( MLAData::$search_parameters['mla_search_fields'] ) ) {
3306
  MLAData::$search_parameters['mla_search_fields'] = array( 'title', 'content' );
3307
  } else {
@@ -3325,19 +3535,19 @@ class MLAShortcodes {
3325
  } // terms in search fields
3326
  }
3327
  } // mla_search_fields present
3328
-
3329
  if ( empty( MLAData::$search_parameters['mla_search_connector'] ) ) {
3330
  MLAData::$search_parameters['mla_search_connector'] = 'AND';
3331
  }
3332
-
3333
  if ( empty( MLAData::$search_parameters['sentence'] ) ) {
3334
  MLAData::$search_parameters['sentence'] = false;
3335
  }
3336
-
3337
  if ( empty( MLAData::$search_parameters['exact'] ) ) {
3338
  MLAData::$search_parameters['exact'] = false;
3339
  }
3340
-
3341
  MLAData::$search_parameters['debug'] = self::$mla_debug ? 'shortcode' : 'none';
3342
 
3343
  add_filter( 'posts_search', 'MLAData::mla_query_posts_search_filter', 10, 2 );
@@ -3696,9 +3906,9 @@ class MLAShortcodes {
3696
  $arguments['orderby'] = 'none';
3697
  }
3698
  }
3699
-
3700
  $clauses['fields'] = $arguments['fields'];
3701
-
3702
  $clause = array ( 'INNER JOIN `' . $wpdb->term_taxonomy . '` AS tt ON t.term_id = tt.term_id' );
3703
  $clause_parameters = array();
3704
 
@@ -3739,7 +3949,7 @@ class MLAShortcodes {
3739
 
3740
  $clause[] = 'AND p.post_status IN (' . join( ',', $placeholders ) . ')';
3741
  }
3742
-
3743
  $clause = join(' ', $clause);
3744
  $clauses['join'] = $wpdb->prepare( $clause, $clause_parameters );
3745
 
@@ -3845,7 +4055,7 @@ class MLAShortcodes {
3845
  if ( 'DESC' != $order ) {
3846
  $order = 'ASC';
3847
  }
3848
-
3849
  $clauses['order'] = $order;
3850
  $clauses['orderby'] = "ORDER BY {$orderby}";
3851
 
@@ -3859,7 +4069,7 @@ class MLAShortcodes {
3859
  } else {
3860
  $binary_keys = array();
3861
  }
3862
-
3863
  $allowed_keys = array(
3864
  'empty_orderby_default' => 'name',
3865
  'count' => 'count',
@@ -3889,7 +4099,7 @@ class MLAShortcodes {
3889
  }
3890
 
3891
  $clauses = apply_filters( 'mla_get_terms_clauses', $clauses );
3892
-
3893
  /*
3894
  * Build the final query
3895
  */
@@ -3900,7 +4110,7 @@ class MLAShortcodes {
3900
  $query[] = 'WHERE (';
3901
  $query[] = $clauses['where'];
3902
  $query[] = ') GROUP BY tt.term_taxonomy_id';
3903
-
3904
  $clause_parameters = absint( $arguments['minimum'] );
3905
  if ( 0 < $clause_parameters ) {
3906
  $query[] = "HAVING count >= {$clause_parameters}";
@@ -3913,7 +4123,7 @@ class MLAShortcodes {
3913
  if ( ! ( $arguments['no_orderby'] || $no_count ) ) {
3914
  $query[] = 'ORDER BY count DESC, t.term_id ASC';
3915
  }
3916
-
3917
  /*
3918
  * Limit the total number of terms returned
3919
  */
@@ -3921,7 +4131,7 @@ class MLAShortcodes {
3921
  if ( 0 < $terms_limit ) {
3922
  $query[] = "LIMIT {$terms_limit}";
3923
  }
3924
-
3925
  /*
3926
  * $final_clauses, if present, require an SQL subquery
3927
  */
@@ -3930,7 +4140,7 @@ class MLAShortcodes {
3930
  $final_clauses[] = $clauses['orderby'];
3931
  $final_clauses[] = $clauses['order'];
3932
  }
3933
-
3934
  if ( '' !== $clauses['limits'] ) {
3935
  $final_clauses[] = $clauses['limits'];
3936
  }
49
  $no_texturize_shortcodes[] = 'mla_gallery';
50
  $no_texturize_shortcodes[] = 'mla_tag_cloud';
51
  }
52
+
53
  return $no_texturize_shortcodes;
54
  }
55
 
68
  return;
69
  }
70
 
71
+ /**
72
+ * Verify the presence of Ghostscript for mla_viewer
73
+ *
74
+ * @since 2.10
75
+ *
76
+ * @param string Non-standard location to override default search, e.g.,
77
+ * 'C:\Program Files (x86)\gs\gs9.15\bin\gswin32c.exe'
78
+ *
79
+ * @return boolean true if Ghostscript available else false
80
+ */
81
+ private static function _ghostscript_present( $explicit_path = '' ) {
82
+ static $ghostscript_present = NULL;
83
+
84
+ if ( isset( $ghostscript_present ) ) {
85
+ return $ghostscript_present;
86
+ }
87
+
88
+ if ( 'checked' != MLAOptions::mla_get_option( 'enable_ghostscript_check' ) ) {
89
+ return $ghostscript_present = true;
90
+ }
91
+
92
+ /*
93
+ * Imagick must be installed as well
94
+ */
95
+ if ( ! class_exists( 'Imagick' ) ) {
96
+ return $ghostscript_present = false;
97
+ }
98
+
99
+ /*
100
+ * Look for exec() - from http://stackoverflow.com/a/12980534/866618
101
+ */
102
+ if ( ini_get('safe_mode') ) {
103
+ return $ghostscript_present = false;
104
+ }
105
+
106
+ $blacklist = preg_split( '/,\s*/', ini_get('disable_functions') . ',' . ini_get('suhosin.executor.func.blacklist') );
107
+ if ( in_array('exec', $blacklist) ) {
108
+ return $ghostscript_present = false;
109
+ }
110
+
111
+ if ( 'WIN' === strtoupper( substr( PHP_OS, 0, 3) ) ) {
112
+ if ( ! empty( $explicit_path ) ) {
113
+ $return = exec( 'dir /o:n/s/b "' . $explicit_path . '"' );
114
+ if ( ! empty( $return ) ) {
115
+ return $ghostscript_present = true;
116
+ } else {
117
+ return $ghostscript_present = false;
118
+ }
119
+ }
120
+
121
+ $return = getenv('GSC');
122
+ if ( ! empty( $return ) ) {
123
+ return $ghostscript_present = true;
124
+ }
125
+
126
+ $return = exec('where gswin*c.exe');
127
+ if ( ! empty( $return ) ) {
128
+ return $ghostscript_present = true;
129
+ }
130
+
131
+ $return = exec('dir /o:n/s/b "C:\Program Files\gs\*gswin*c.exe"');
132
+ if ( ! empty( $return ) ) {
133
+ return $ghostscript_present = true;
134
+ }
135
+
136
+ $return = exec('dir /o:n/s/b "C:\Program Files (x86)\gs\*gswin32c.exe"');
137
+ if ( ! empty( $return ) ) {
138
+ return $ghostscript_present = true;
139
+ }
140
+
141
+ return $ghostscript_present = false;
142
+ } // Windows platform
143
+
144
+ if ( ! empty( $explicit_path ) ) {
145
+ exec( 'test -e ' . $explicit_path, $dummy, $ghostscript_path );
146
+ return ( $explicit_path === $ghostscript_path );
147
+ }
148
+
149
+ $return = exec('which gs');
150
+ if ( ! empty( $return ) ) {
151
+ return $ghostscript_present = true;
152
+ }
153
+
154
+ $test_path = '/usr/bin/gs';
155
+ exec('test -e ' . $test_path, $dummy, $ghostscript_path);
156
+ return $ghostscript_present = ( $test_path === $ghostscript_path );
157
+ }
158
+
159
  /**
160
  * Make sure $attr is an array and repair line-break damage
161
  *
180
  break;
181
  }
182
  }
183
+
184
  if ( $is_valid ) {
185
  return $attr;
186
  }
187
+
188
  /*
189
  * Found an error, e.g., line break(s) among the atttributes.
190
  * Try to reconstruct the input string without them.
195
  if ( ( false !== $break_tag ) && ( ($break_tag + 3) == strlen( $value ) ) ) {
196
  $value = substr( $value, 0, ( strlen( $value ) - 3) );
197
  }
198
+
199
  if ( is_numeric( $key ) ) {
200
  if ( '/>' !== $value ) {
201
  $new_attr .= $value . ' ';
307
  'mla_margin' => MLAOptions::mla_get_option('mla_gallery_margin'),
308
  'mla_target' => '',
309
  'mla_debug' => false,
310
+
311
  'mla_viewer' => false,
312
+ 'mla_single_thread' => false,
313
+ 'mla_viewer_extensions' => 'ai,eps,pdf,ps',
314
+ 'mla_viewer_limit' => '0',
315
+ 'mla_viewer_width' => '0',
316
+ 'mla_viewer_height' => '0',
317
+ 'mla_viewer_best_fit' => NULL,
318
  'mla_viewer_page' => '1',
319
+ 'mla_viewer_resolution' => '0',
320
+ 'mla_viewer_quality' => '0',
321
+ 'mla_viewer_type' => '',
322
+
323
  'mla_alt_shortcode' => NULL,
324
  'mla_alt_ids_name' => 'ids',
325
 
543
  }
544
 
545
  /*
546
+ * Check for Imagick thumbnail generation arguments
547
  */
548
+ if ( 'checked' == MLAOptions::mla_get_option( 'enable_mla_viewer' ) ) {
549
+ if ( ! empty( $arguments['mla_viewer'] ) && ( 'single' == strtolower( $arguments['mla_viewer'] ) ) ) {
550
+ $arguments['mla_single_thread'] = true;
551
+ $arguments['mla_viewer'] = 'true';
552
+ }
553
+
554
+ $arguments['mla_viewer'] = !empty( $arguments['mla_viewer'] ) && ( 'true' == strtolower( $arguments['mla_viewer'] ) );
555
+ } else {
556
+ $arguments['mla_viewer'] = false;
557
+ }
558
+
559
  if ( $arguments['mla_viewer'] ) {
560
  $arguments['mla_viewer_extensions'] = array_filter( array_map( 'trim', explode( ',', $arguments['mla_viewer_extensions'] ) ) );
561
+ // convert limit (in MB) to float
562
+ $arguments['mla_viewer_limit'] = abs( 0.0 + $arguments['mla_viewer_limit'] );
563
+
564
  $arguments['mla_viewer_width'] = absint( $arguments['mla_viewer_width'] );
565
+ $arguments['mla_viewer_height'] = absint( $arguments['mla_viewer_height'] );
566
+ $arguments['mla_viewer_page'] = absint( $arguments['mla_viewer_page'] );
567
+
568
+ if ( isset( $arguments['mla_viewer_best_fit'] ) ) {
569
+ $arguments['mla_viewer_best_fit'] = 'true' == strtolower( $arguments['mla_viewer_best_fit'] );
570
+ }
571
+
572
+ $arguments['mla_viewer_resolution'] = absint( $arguments['mla_viewer_resolution'] );
573
+ $arguments['mla_viewer_quality'] = absint( $arguments['mla_viewer_quality'] );
574
  }
575
 
576
  /*
909
  if ( isset( $parent_info['parent_name'] ) ) {
910
  $item_values['parent_name'] = $parent_info['parent_name'];
911
  }
912
+
913
  if ( isset( $parent_info['parent_type'] ) ) {
914
  $item_values['parent_type'] = wptexturize( $parent_info['parent_type'] );
915
  }
916
+
917
  if ( isset( $parent_info['parent_title'] ) ) {
918
  $item_values['parent_title'] = wptexturize( $parent_info['parent_title'] );
919
  }
920
+
921
  if ( isset( $parent_info['parent_date'] ) ) {
922
  $item_values['parent_date'] = wptexturize( $parent_info['parent_date'] );
923
  }
1159
  $link_href = '';
1160
  }
1161
 
1162
+ $match_count = preg_match_all( '#(\<a [^\>]+\>)(.*)\</a\>#', $item_values['link'], $matches, PREG_OFFSET_CAPTURE );
1163
  if ( ! ( ( $match_count == false ) || ( $match_count == 0 ) ) ) {
1164
+ $link_tag = $matches[1][0][0];
1165
+ $item_values['thumbnail_content'] = $matches[2][0][0];
1166
  } else {
1167
  $item_values['thumbnail_content'] = '';
1168
  }
1176
  $item_values['thumbnail_width'] = '';
1177
  $item_values['thumbnail_height'] = '';
1178
  $item_values['thumbnail_url'] = '';
1179
+
1180
+ if ( 'checked' == MLAOptions::mla_get_option( 'enable_featured_image' ) ) {
1181
+ /*
1182
+ * Look for the "Featured Image" as an alternate thumbnail for PDFs, etc.
1183
+ */
1184
+ $feature = get_the_post_thumbnail( $attachment->ID, $size, array( 'class' => 'attachment-thumbnail' ) );
1185
+ if ( ! empty( $feature ) ) {
1186
+ $match_count = preg_match_all( '# width=\"([^\"]+)\" height=\"([^\"]+)\" src=\"([^\"]+)\" #', $feature, $matches, PREG_OFFSET_CAPTURE );
1187
+ if ( ! ( ( $match_count == false ) || ( $match_count == 0 ) ) ) {
1188
+ $item_values['link'] = $link_tag . $feature . '</a>';
1189
+ $item_values['thumbnail_content'] = $feature;
1190
+ $item_values['thumbnail_width'] = $matches[1][0][0];
1191
+ $item_values['thumbnail_height'] = $matches[2][0][0];
1192
+ $item_values['thumbnail_url'] = $matches[3][0][0];
1193
+ }
1194
+ }
1195
+ } // enable_featured_image
1196
  }
1197
 
1198
  /*
1205
  }
1206
 
1207
  /*
1208
+ * Check for Imagick thumbnail generation, uses above-defined
1209
  * $link_attributes (includes target), $rollover_text, $link_href (link only),
1210
  * $image_attributes, $image_class, $image_alt
 
 
1211
  */
1212
  if ( $arguments['mla_viewer'] && empty( $item_values['thumbnail_url'] ) ) {
1213
+ /*
1214
+ * Check for a match on file extension
1215
+ */
1216
  $last_dot = strrpos( $item_values['file'], '.' );
1217
  if ( !( false === $last_dot) ) {
1218
  $extension = substr( $item_values['file'], $last_dot + 1 );
1219
  if ( in_array( $extension, $arguments['mla_viewer_extensions'] ) ) {
1220
+ /*
1221
+ * Default to an icon if thumbnail generation is not available
1222
+ */
1223
  $icon_url = wp_mime_type_icon( $attachment->ID );
1224
+ $upload_dir = wp_upload_dir();
1225
+ $args = array(
1226
+ 'page' => MLA::ADMIN_PAGE_SLUG,
1227
+ 'mla_stream_file' => urlencode( $upload_dir['basedir'] . '/' . $item_values['base_file'] ),
1228
+ );
1229
+
1230
+ if ( $arguments['mla_single_thread'] ) {
1231
+ $args['mla_single_thread'] = 'true';
1232
+ }
1233
+
1234
+ if ( $arguments['mla_viewer_width'] ) {
1235
+ $args['mla_stream_width'] = $arguments['mla_viewer_width'];
1236
+ }
1237
+
1238
+ if ( $arguments['mla_viewer_height'] ) {
1239
+ $args['mla_stream_height'] = $arguments['mla_viewer_height'];
1240
+ }
1241
+
1242
+ if ( isset( $arguments['mla_viewer_best_fit'] ) ) {
1243
+ $args['mla_stream_fit'] = $arguments['mla_viewer_best_fit'] ? '1' : '0';
1244
+ }
1245
+
1246
+ /*
1247
+ * Non-standard location, if not empty. Write the value to a file that can be
1248
+ * found by the stand-alone (no WordPress) image stream processor.
1249
+ */
1250
+ $ghostscript_path = MLAOptions::mla_get_option( 'ghostscript_path' );
1251
+ if ( ! empty( $ghostscript_path ) ) {
1252
+ if ( false !== @file_put_contents( dirname( __FILE__ ) . '/' . 'mla-ghostscript-path.txt', $ghostscript_path ) ) {
1253
+ $args['mla_ghostscript_path'] = 'custom';
1254
+ }
1255
+ }
1256
+
1257
+ if ( self::_ghostscript_present( $ghostscript_path ) ) {
1258
+ /*
1259
+ * Optional upper limit (in MB) on file size
1260
+ */
1261
+ if ( $limit = ( 1024 * 1024 ) * $arguments['mla_viewer_limit'] ) {
1262
+ $file_size = 0 + @filesize( $item_values['base_dir'] . '/' . $item_values['base_file'] );
1263
+ if ( ( 0 < $file_size ) && ( $file_size > $limit ) ) {
1264
+ $file_size = 0;
1265
+ }
1266
+ } else {
1267
+ $file_size = 1;
1268
+ }
1269
+
1270
+ /*
1271
+ * Generate "real" thumbnail
1272
+ */
1273
+ if ( $file_size ) {
1274
+ $frame = ( 0 < $arguments['mla_viewer_page'] ) ? $arguments['mla_viewer_page'] - 1 : 0;
1275
+ if ( $frame ) {
1276
+ $args['mla_stream_frame'] = $frame;
1277
+ }
1278
+
1279
+ if ( $arguments['mla_viewer_resolution'] ) {
1280
+ $args['mla_stream_resolution'] = $arguments['mla_viewer_resolution'];
1281
+ }
1282
+
1283
+ if ( $arguments['mla_viewer_quality'] ) {
1284
+ $args['mla_stream_quality'] = $arguments['mla_viewer_quality'];
1285
+ }
1286
+
1287
+ if ( ! empty( $arguments['mla_viewer_type'] ) ) {
1288
+ $args['mla_stream_type'] = $arguments['mla_viewer_type'];
1289
+ }
1290
+
1291
+ //$icon_url = add_query_arg( $args, wp_nonce_url( admin_url( 'upload.php' ), MLA::MLA_ADMIN_NONCE ) );
1292
+ $icon_url = add_query_arg( $args, wp_nonce_url( MLA_PLUGIN_URL . 'includes/mla-stream-image.php', MLA::MLA_ADMIN_NONCE ) );
1293
+ }
1294
+ }
1295
 
1296
  /*
1297
  * <img> tag (thumbnail_text)
1306
  $image_alt = ' alt="' . $item_values['caption'] . '"';
1307
  }
1308
 
1309
+ $item_values['thumbnail_content'] = sprintf( '<img %1$ssrc="%2$s"%3$s%4$s>', $image_attributes, $icon_url, $image_class, $image_alt );
 
1310
 
1311
  /*
1312
  * Filelink, pagelink and link.
1559
  if ( isset( $arguments[ $mla_page_parameter ] ) ) {
1560
  $arguments['offset'] = $arguments['limit'] * ( $arguments[ $mla_page_parameter ] - 1);
1561
  }
1562
+
1563
  /*
1564
  * Clean up the current_item to separate term_id from slug
1565
  */
2041
  }
2042
  }
2043
  }
2044
+
2045
  /*
2046
  * Add item_specific field-level substitution parameters
2047
  */
2562
  }
2563
 
2564
  $markup_values['http_host'] = $_SERVER['HTTP_HOST'];
2565
+
2566
  if ( 0 < $new_page ) {
2567
  $new_uri = remove_query_arg( $mla_page_parameter, $_SERVER['REQUEST_URI'] );
2568
  $markup_values['request_uri'] = add_query_arg( array( $mla_page_parameter => $new_page ), $new_uri );
2569
  } else {
2570
  $markup_values['request_uri'] = $_SERVER['REQUEST_URI'];
2571
  }
2572
+
2573
  $markup_values['new_url'] = set_url_scheme( $markup_values['scheme'] . $markup_values['http_host'] . $markup_values['request_uri'] );
2574
 
2575
  /*
2577
  * which can contain request: and query: arguments.
2578
  */
2579
  $pagination_arguments = array( 'mla_nolink_text', 'mla_link_class', 'mla_rollover_text', 'mla_link_attributes', 'mla_link_href', 'mla_link_text', 'mla_prev_text', 'mla_next_text' );
2580
+
2581
  $new_text = '';
2582
  foreach( $pagination_arguments as $value ) {
2583
  $new_text .= str_replace( '{+', '[+', str_replace( '+}', '+]', $arguments[ $value ] ) );
2699
  $order = isset( $query_parameters['order'] ) ? ' ' . $query_parameters['order'] : '';
2700
  $orderby = isset( $query_parameters['orderby'] ) ? $query_parameters['orderby'] : '';
2701
  $meta_key = isset( $query_parameters['meta_key'] ) ? $query_parameters['meta_key'] : '';
2702
+
2703
  if ( is_null( $table_prefix ) ) {
2704
  $table_prefix = $wpdb->posts . '.';
2705
  }
2751
  }
2752
  }
2753
  }
2754
+
2755
  if ( ! empty( $meta_key ) ) {
2756
  $allowed_keys[ $meta_key ] = "$wpdb->postmeta.meta_value";
2757
  $allowed_keys['meta_value'] = "$wpdb->postmeta.meta_value";
2887
  * @var object
2888
  */
2889
  public static $mla_gallery_wp_query_object = NULL;
2890
+
2891
  /**
2892
  * Parses shortcode parameters and returns the gallery objects
2893
  *
2908
  self::$query_parameters = array();
2909
 
2910
  /*
2911
+ * Parameters passed to the posts_search filter function in MLAData
2912
  */
2913
  MLAData::$search_parameters = array( 'debug' => 'none' );
2914
 
3020
  $simple_tax_queries[ $key ] = implode(',', array_filter( array_map( 'trim', explode( ',', $value ) ) ) );
3021
  } // array_key_exists
3022
  } //foreach $attr
3023
+
3024
  /*
3025
  * One of five outcomes:
3026
  * 1) An explicit tax_query was found; use it and ignore all other taxonomy parameters
3044
  } else {
3045
  $tax_query = array ();
3046
  }
3047
+
3048
  // Validate other tax_query parameters or set defaults
3049
  $tax_operator = 'IN';
3050
  if ( isset( $attr['tax_operator'] ) ) {
3053
  $tax_operator = $attr_value;
3054
  }
3055
  }
3056
+
3057
  $tax_include_children = true;
3058
  if ( isset( $attr['tax_include_children'] ) ) {
3059
  if ( 'FALSE' == strtoupper( $attr['tax_include_children'] ) ) {
3060
  $tax_include_children = false;
3061
  }
3062
  }
3063
+
3064
  foreach( $simple_tax_queries as $key => $value ) {
3065
  $tax_query[] = array( 'taxonomy' => $key, 'field' => 'slug', 'terms' => explode( ',', $value ), 'operator' => $tax_operator, 'include_children' => $tax_include_children );
3066
  }
3067
+
3068
  $query_arguments['tax_query'] = $tax_query;
3069
  } else {
3070
  // exactly one simple query is present
3206
  } else {
3207
  $value = array_filter( array_map( 'intval', explode( ",", $value ) ) );
3208
  }
3209
+
3210
  if ( ! empty( $value ) ) {
3211
  $query_arguments[ $key ] = $value;
3212
+
3213
  if ( ! $children_ok ) {
3214
  $use_children = false;
3215
  }
3493
 
3494
  if ( ! empty( MLAData::$search_parameters['mla_terms_phrases'] ) ) {
3495
  MLAData::$search_parameters['mla_terms_search']['phrases'] = MLAData::$search_parameters['mla_terms_phrases'];
3496
+
3497
  if ( empty( MLAData::$search_parameters['mla_phrase_connector'] ) ) {
3498
  MLAData::$search_parameters['mla_terms_search']['radio_phrases'] = 'AND';
3499
  } else {
3506
  MLAData::$search_parameters['mla_terms_search']['radio_terms'] = MLAData::$search_parameters['mla_phrase_connector'];
3507
  }
3508
  }
3509
+
3510
  unset( MLAData::$search_parameters['mla_terms_phrases'] );
3511
  unset( MLAData::$search_parameters['mla_terms_taxonomies'] );
3512
  unset( MLAData::$search_parameters['mla_phrase_connector'] );
3513
  unset( MLAData::$search_parameters['mla_term_connector'] );
3514
+
3515
  if ( empty( MLAData::$search_parameters['mla_search_fields'] ) ) {
3516
  MLAData::$search_parameters['mla_search_fields'] = array( 'title', 'content' );
3517
  } else {
3535
  } // terms in search fields
3536
  }
3537
  } // mla_search_fields present
3538
+
3539
  if ( empty( MLAData::$search_parameters['mla_search_connector'] ) ) {
3540
  MLAData::$search_parameters['mla_search_connector'] = 'AND';
3541
  }
3542
+
3543
  if ( empty( MLAData::$search_parameters['sentence'] ) ) {
3544
  MLAData::$search_parameters['sentence'] = false;
3545
  }
3546
+
3547
  if ( empty( MLAData::$search_parameters['exact'] ) ) {
3548
  MLAData::$search_parameters['exact'] = false;
3549
  }
3550
+
3551
  MLAData::$search_parameters['debug'] = self::$mla_debug ? 'shortcode' : 'none';
3552
 
3553
  add_filter( 'posts_search', 'MLAData::mla_query_posts_search_filter', 10, 2 );
3906
  $arguments['orderby'] = 'none';
3907
  }
3908
  }
3909
+
3910
  $clauses['fields'] = $arguments['fields'];
3911
+
3912
  $clause = array ( 'INNER JOIN `' . $wpdb->term_taxonomy . '` AS tt ON t.term_id = tt.term_id' );
3913
  $clause_parameters = array();
3914
 
3949
 
3950
  $clause[] = 'AND p.post_status IN (' . join( ',', $placeholders ) . ')';
3951
  }
3952
+
3953
  $clause = join(' ', $clause);
3954
  $clauses['join'] = $wpdb->prepare( $clause, $clause_parameters );
3955
 
4055
  if ( 'DESC' != $order ) {
4056
  $order = 'ASC';
4057
  }
4058
+
4059
  $clauses['order'] = $order;
4060
  $clauses['orderby'] = "ORDER BY {$orderby}";
4061
 
4069
  } else {
4070
  $binary_keys = array();
4071
  }
4072
+
4073
  $allowed_keys = array(
4074
  'empty_orderby_default' => 'name',
4075
  'count' => 'count',
4099
  }
4100
 
4101
  $clauses = apply_filters( 'mla_get_terms_clauses', $clauses );
4102
+
4103
  /*
4104
  * Build the final query
4105
  */
4110
  $query[] = 'WHERE (';
4111
  $query[] = $clauses['where'];
4112
  $query[] = ') GROUP BY tt.term_taxonomy_id';
4113
+
4114
  $clause_parameters = absint( $arguments['minimum'] );
4115
  if ( 0 < $clause_parameters ) {
4116
  $query[] = "HAVING count >= {$clause_parameters}";
4123
  if ( ! ( $arguments['no_orderby'] || $no_count ) ) {
4124
  $query[] = 'ORDER BY count DESC, t.term_id ASC';
4125
  }
4126
+
4127
  /*
4128
  * Limit the total number of terms returned
4129
  */
4131
  if ( 0 < $terms_limit ) {
4132
  $query[] = "LIMIT {$terms_limit}";
4133
  }
4134
+
4135
  /*
4136
  * $final_clauses, if present, require an SQL subquery
4137
  */
4140
  $final_clauses[] = $clauses['orderby'];
4141
  $final_clauses[] = $clauses['order'];
4142
  }
4143
+
4144
  if ( '' !== $clauses['limits'] ) {
4145
  $final_clauses[] = $clauses['limits'];
4146
  }
includes/class-mla-stream-image.php ADDED
@@ -0,0 +1,363 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Ajax handler for the mla_viewer
4
+ *
5
+ * @package Media Library Assistant
6
+ * @since 2.10
7
+ */
8
+
9
+ /**
10
+ * Class MLA (Media Library Assistant) Stream Image provides PDF thumbnails.
11
+ *
12
+ * @package Media Library Assistant
13
+ * @since 2.10
14
+ */
15
+ class MLAStreamImage {
16
+ /**
17
+ * Action name; uniquely identifies the nonce
18
+ *
19
+ * @since 2.10
20
+ *
21
+ * @var string
22
+ */
23
+ const MLA_ADMIN_NONCE = 'mla_admin';
24
+
25
+ /**
26
+ * Load the plugin's Ajax handler
27
+ *
28
+ * @since 2.10
29
+ *
30
+ * @return void
31
+ */
32
+ public static function initialize() {
33
+ /*
34
+ * Process mla_viewer image stream requests
35
+ */
36
+ if ( isset( $_REQUEST['mla_stream_file'] ) ) {
37
+ check_admin_referer( self::MLA_ADMIN_NONCE );
38
+ self::_process_mla_stream_image();
39
+ exit();
40
+ }
41
+ }
42
+
43
+ /**
44
+ * Process Imagick image stream request, e.g., for a PDF thumbnail
45
+ *
46
+ * Requires _wpnonce and mla_stream_file (relative to wp_upload_dir ) in $_REQUEST; optional parameters are:
47
+ * mla_stream_width, mla_stream_height, mla_stream_frame, mla_stream_type
48
+ *
49
+ * @since 2.10
50
+ *
51
+ * @param array $editors List of the implemented image editor classes
52
+ *
53
+ * @return void echos image content and calls exit();
54
+ */
55
+ public static function _wp_image_editors_filter( $editors ) {
56
+ array_unshift( $editors, "MLA_Image_Editor" );
57
+
58
+ return $editors;
59
+ }
60
+
61
+ /**
62
+ * Holds Imagick image resolution for class MLA_Image_Editor
63
+ *
64
+ * @since 2.10
65
+ *
66
+ * @var array
67
+ */
68
+ public static $mla_imagick_args = array();
69
+
70
+ /**
71
+ * Process Imagick image stream request, e.g., for a PDF thumbnail
72
+ *
73
+ * Requires _wpnonce and mla_stream_file (relative to wp_upload_dir ) in $_REQUEST;
74
+ * optional $_REQUEST parameters are:
75
+ * mla_stream_width, mla_stream_height, mla_stream_frame,
76
+ * mla_stream_resolution, mla_stream_quality, mla_stream_type
77
+ *
78
+ * @since 2.10
79
+ *
80
+ * @return void echos image content and calls exit();
81
+ */
82
+ private static function _process_mla_stream_image() {
83
+ //error_log( __LINE__ . " _process_mla_stream_image \$_REQUEST = " . var_export( $_REQUEST, true ), 0 );
84
+ //error_log( __LINE__ . " _process_mla_stream_image memory_get_usage = " . var_export( memory_get_usage ( true ), true ), 0 );
85
+ if ( isset( $_REQUEST['mla_stream_file'] ) ) {
86
+ //$microtime = microtime( true );
87
+ //error_log( __LINE__ . " _process_mla_stream_image {$_REQUEST['mla_stream_file']}", 0 );
88
+ if( ini_get( 'zlib.output_compression' ) ) {
89
+ ini_set( 'zlib.output_compression', 'Off' );
90
+ }
91
+
92
+ $file = stripslashes( $_REQUEST['mla_stream_file'] );
93
+ $width = isset( $_REQUEST['mla_stream_width'] ) ? absint( $_REQUEST['mla_stream_width'] ) : 0;
94
+ $height = isset( $_REQUEST['mla_stream_height'] ) ? absint( $_REQUEST['mla_stream_height'] ) : 0;
95
+ $type = isset( $_REQUEST['mla_stream_type'] ) ? stripslashes( $_REQUEST['mla_stream_type'] ) : 'image/jpeg';
96
+ $quality = isset( $_REQUEST['mla_stream_quality'] ) ? absint( $_REQUEST['mla_stream_quality'] ) : 0;
97
+
98
+ /*
99
+ * Frame, resolution and type are required in the load() function, which we
100
+ * can't explicitly pass parameters to.
101
+ */
102
+ if ( isset( $_REQUEST['mla_stream_frame'] ) ) {
103
+ self::$mla_imagick_args['frame'] = absint( $_REQUEST['mla_stream_frame'] );
104
+ }
105
+
106
+ if ( isset( $_REQUEST['mla_stream_resolution'] ) ) {
107
+ self::$mla_imagick_args['resolution'] = absint( $_REQUEST['mla_stream_resolution'] );
108
+ }
109
+
110
+ self::$mla_imagick_args['type'] = $type;
111
+
112
+ $upload_dir = wp_upload_dir();
113
+ $file = $upload_dir['basedir'] . '/' . $file;
114
+
115
+ if ( ! file_exists( $file ) ) {
116
+ wp_die( 'File not found', '', array( 'response' => 404 ) );
117
+ }
118
+
119
+ /*
120
+ * Supplementary Imagick functions for the image editor
121
+ */
122
+ require_once ABSPATH . WPINC . '/class-wp-image-editor.php';
123
+ require_once ABSPATH . WPINC . '/class-wp-image-editor-gd.php';
124
+ require_once ABSPATH . WPINC . '/class-wp-image-editor-imagick.php';
125
+
126
+ require_once( MLA_PLUGIN_PATH . 'includes/class-mla-image-editor.php' );
127
+
128
+ try {
129
+ /* * * * * * * * *
130
+ $upload_dir = wp_upload_dir();
131
+ $upload_dir = $upload_dir['basedir'] . '/';
132
+
133
+ $mutex = new MLAMutex();
134
+ $mutex->init( 1, $upload_dir . 'mla-mutex.txt' );
135
+ $mutex->acquire();
136
+ * * * * * * * * */
137
+ //$acquired = microtime( true ) - $microtime;
138
+ //error_log( __LINE__ . " _process_mla_stream_image {$_REQUEST['mla_stream_file']} acquired at {$acquired}", 0 );
139
+
140
+ add_filter( 'wp_image_editors', 'MLAStreamImage::_wp_image_editors_filter', 10, 1 );
141
+ $image_editor = wp_get_image_editor( $file );
142
+ remove_filter( 'wp_image_editors', 'MLAStreamImage::_wp_image_editors_filter', 10 );
143
+
144
+ //$mutex->release();
145
+ //$elapsed = ( $released = microtime( true ) - $microtime ) - $acquired;
146
+ //error_log( __LINE__ . " _process_mla_stream_image {$_REQUEST['mla_stream_file']} released at {$released} after {$elapsed}", 0 );
147
+
148
+ if ( is_wp_error( $image_editor ) ) {
149
+ error_log( 'Image load failure = ' . var_export( $image_editor->get_error_messages(), true ), 0 );
150
+ wp_die( 'File not loaded', '', array( 'response' => 404 ) );
151
+ }
152
+
153
+ /*
154
+ * Prepare the output image; resize and flatten, if necessary
155
+ */
156
+ if ( isset( $_REQUEST['mla_stream_fit'] ) ) {
157
+ $best_fit = ( '1' == $_REQUEST['mla_stream_fit'] );
158
+ } else {
159
+ $best_fit = false;
160
+ }
161
+
162
+ $image_editor->mla_prepare_image( $width, $height, $best_fit, $type, $quality );
163
+ }
164
+ catch ( Exception $e ) {
165
+ error_log( 'Image load Exception = ' . var_export( $e->getMessage(), true ), 0 );
166
+ wp_die( 'Image load exception', '', array( 'response' => 404 ) );
167
+ }
168
+
169
+ try {
170
+ $image_editor->stream( $type );
171
+ }
172
+ catch ( Exception $e ) {
173
+ error_log( 'stream Exception = ' . var_export( $e->getMessage(), true ), 0 );
174
+ wp_die( 'Image stream exception', '', array( 'response' => 404 ) );
175
+ }
176
+
177
+ unset( $image_editor );
178
+ //$elapsed = ( $unset = microtime( true ) - $microtime ) - $released;
179
+ //error_log( __LINE__ . " _process_mla_stream_image {$_REQUEST['mla_stream_file']} unset at {$unset} after {$elapsed}", 0 );
180
+ exit();
181
+ } else {
182
+ wp_die( 'mla_stream_file not set', '', array( 'response' => 404 ) );
183
+ }
184
+
185
+ // Should not be possible
186
+ wp_die( '_process_mla_stream_image error', '', array( 'response' => 500 ) );
187
+ }
188
+ } // Class MLAStreamImage
189
+
190
+ /**
191
+ * Class MLA (Media Library Assistant) Mutex provides a simple "mutual exclusion" semaphore
192
+ * for the [mla_gallery] mla_viewer=single option
193
+ *
194
+ * Adapted from the example by mr.smaon@gmail.com in the PHP Manual "Semaphore Functions" page.
195
+ *
196
+ * @package Media Library Assistant
197
+ * @since 2.10
198
+ */
199
+ class MLAMutex {
200
+ /**
201
+ * Semaphore identifier returned by sem_get()
202
+ *
203
+ * @since 2.10
204
+ *
205
+ * @var resource
206
+ */
207
+ private $sem_id;
208
+
209
+ /**
210
+ * True if the semaphore has been acquired
211
+ *
212
+ * @since 2.10
213
+ *
214
+ * @var boolean
215
+ */
216
+ private $is_acquired = false;
217
+
218
+ /**
219
+ * True if using a file lock instead of a semaphore
220
+ *
221
+ * @since 2.10
222
+ *
223
+ * @var boolean
224
+ */
225
+ private $use_file_lock = false;
226
+
227
+ /**
228
+ * Name of the (locked) file used as a semaphore
229
+ *
230
+ * @since 2.10
231
+ *
232
+ * @var string
233
+ */
234
+ private $filename = '';
235
+
236
+ /**
237
+ * File system pointer resource of the (locked) file used as a semaphore
238
+ *
239
+ * @since 2.10
240
+ *
241
+ * @var resource
242
+ */
243
+ private $filepointer;
244
+
245
+ /**
246
+ * Initializes the choice of semaphore Vs file lock
247
+ *
248
+ * @since 2.10
249
+ *
250
+ * @param boolean $use_lock True to force use of file locking
251
+ *
252
+ * @return void
253
+ */
254
+ function __construct( $use_lock = false ) {
255
+ /*
256
+ * If sem_ functions are not available require file locking
257
+ */
258
+ if ( ! is_callable( 'sem_get' ) ) {
259
+ $use_lock = true;
260
+ }
261
+
262
+ if ( $use_lock || 'WIN' == substr( PHP_OS, 0, 3 ) ) {
263
+ $this->use_file_lock = true;
264
+ }
265
+ }
266
+
267
+ /**
268
+ * Creates the semaphore or sets the (lock) file name
269
+ *
270
+ * @since 2.10
271
+ *
272
+ * @param integer $id Key to identify the semaphore
273
+ * @param string $filename Absolute path and name of the file for locking
274
+ *
275
+ * @return boolean True if the initialization succeeded
276
+ */
277
+ public function init( $id, $filename = '' ) {
278
+
279
+ if( $this->use_file_lock ) {
280
+ if( empty( $filename ) ) {
281
+ return false;
282
+ } else {
283
+ $this->filename = $filename;
284
+ }
285
+ } else {
286
+ if( ! ( $this->sem_id = sem_get( $id, 1) ) ) {
287
+ return false;
288
+ }
289
+ }
290
+
291
+ return true;
292
+ }
293
+
294
+ /**
295
+ * Acquires the semaphore or opens and locks the file
296
+ *
297
+ * @since 2.10
298
+ *
299
+ * @return boolean True if the acquisition succeeded
300
+ */
301
+ public function acquire() {
302
+ if( $this->use_file_lock ) {
303
+ if ( empty( $this->filename ) ) {
304
+ return true;
305
+ }
306
+
307
+ if( false == ( $this->filepointer = @fopen( $this->filename, "w+" ) ) ) {
308
+ return false;
309
+ }
310
+
311
+ if( false == flock( $this->filepointer, LOCK_EX ) ) {
312
+ return false;
313
+ }
314
+ } else {
315
+ if ( ! sem_acquire( $this->sem_id ) ) {
316
+ return false;
317
+ }
318
+ }
319
+
320
+ $this->is_acquired = true;
321
+ return true;
322
+ }
323
+
324
+ /**
325
+ * Releases the semaphore or unlocks and closes (but does not unlink) the file
326
+ *
327
+ * @since 2.10
328
+ *
329
+ * @return boolean True if the release succeeded
330
+ */
331
+ public function release() {
332
+ if( ! $this->is_acquired ) {
333
+ return true;
334
+ }
335
+
336
+ if( $this->use_file_lock ) {
337
+ if( false == flock( $this->filepointer, LOCK_UN ) ) {
338
+ return false;
339
+ }
340
+
341
+ fclose( $this->filepointer );
342
+ } else {
343
+ if ( ! sem_release( $this->sem_id ) ) {
344
+ return false;
345
+ }
346
+ }
347
+
348
+ $this->is_acquired = false;
349
+ return true;
350
+ }
351
+
352
+ /**
353
+ * Returns the semaphore identifier, if it exists, else NULL
354
+ *
355
+ * @since 2.10
356
+ *
357
+ * @return resource Semaphore identifier or NULL
358
+ */
359
+ public function getId() {
360
+ return $this->sem_id;
361
+ }
362
+ } // MLAMutex
363
+ ?>
includes/mla-plugin-loader.php CHANGED
@@ -11,13 +11,20 @@
11
 
12
  defined( 'ABSPATH' ) or die();
13
 
14
- if (!defined('MLA_OPTION_PREFIX')) {
15
  /**
16
  * Gives a unique prefix for plugin options; can be set in wp-config.php
17
  */
18
  define('MLA_OPTION_PREFIX', 'mla_');
19
  }
20
 
 
 
 
 
 
 
 
21
  /**
22
  * Accumulates error messages from name conflict tests
23
  *
@@ -52,86 +59,95 @@ if ( ! empty( $mla_plugin_loader_error_messages ) ) {
52
  add_action( 'init', 'MLATest::initialize', 0x7FFFFFFF );
53
 
54
  /*
55
- * Template file and database access functions.
56
- */
57
- require_once( MLA_PLUGIN_PATH . 'includes/class-mla-data.php' );
58
- add_action( 'init', 'MLAData::initialize', 0x7FFFFFFF );
59
-
60
- /*
61
- * Custom Taxonomies and WordPress objects.
62
- */
63
- require_once( MLA_PLUGIN_PATH . 'includes/class-mla-objects.php' );
64
- add_action( 'init', 'MLAObjects::initialize', 0x7FFFFFFF );
65
-
66
- /*
67
- * MIME Type functions.
68
- */
69
- require_once( MLA_PLUGIN_PATH . 'includes/class-mla-mime-types.php' );
70
- add_action( 'init', 'MLAMime::initialize', 0x7FFFFFFF );
71
-
72
- /*
73
- * Shortcodes
74
- */
75
- require_once( MLA_PLUGIN_PATH . 'includes/class-mla-shortcodes.php' );
76
- add_action( 'init', 'MLAShortcodes::initialize', 0x7FFFFFFF );
77
-
78
- /*
79
- * WordPress 3.5 and later Edit Media screen additions, e.g., meta boxes
80
- */
81
- if ( version_compare( get_bloginfo( 'version' ), '3.5', '>=' ) ) {
82
- require_once( MLA_PLUGIN_PATH . 'includes/class-mla-edit-media.php' );
83
- add_action( 'init', 'MLAEdit::initialize', 0x7FFFFFFF );
84
- }
85
-
86
- /*
87
- * WordPress 3.5 and later Media Manager (Modal window) additions
88
- */
89
- if ( version_compare( get_bloginfo( 'version' ), '3.5', '>=' ) ) {
90
- require_once( MLA_PLUGIN_PATH . 'includes/class-mla-media-modal.php' );
91
- add_action( 'init', 'MLAModal::initialize', 0x7FFFFFFF );
92
- }
93
-
94
- /*
95
- * Plugin settings management
96
- */
97
- require_once( MLA_PLUGIN_PATH . 'includes/class-mla-options.php' );
98
- add_action( 'init', 'MLAOptions::initialize', 0x7FFFFFFF );
99
-
100
- /*
101
- * Plugin settings management page
102
- */
103
- require_once( MLA_PLUGIN_PATH . 'includes/class-mla-settings.php' );
104
- add_action( 'init', 'MLASettings::initialize', 0x7FFFFFFF );
105
-
106
- /*
107
- * Main program
108
- */
109
- require_once( MLA_PLUGIN_PATH . 'includes/class-mla-main.php' );
110
- add_action( 'init', 'MLA::initialize', 0x7FFFFFFF );
111
- add_action( 'plugins_loaded', 'MLA::mla_plugins_loaded_action', 0x7FFFFFFF );
112
-
113
- /*
114
- * Custom list table package that extends the core WP_List_Table class.
115
- * Doesn't need an initialize function; has a constructor.
116
- */
117
- require_once( MLA_PLUGIN_PATH . 'includes/class-mla-list-table.php' );
118
-
119
- /*
120
- * Custom list table package for the Post MIME Type Views.
121
- * Doesn't need an initialize function; has a constructor.
122
- */
123
- require_once( MLA_PLUGIN_PATH . 'includes/class-mla-view-list-table.php' );
124
-
125
- /*
126
- * Custom list table package for the Optional Upload MIME Type Views.
127
- * Doesn't need an initialize function; has a constructor.
128
- */
129
- require_once( MLA_PLUGIN_PATH . 'includes/class-mla-upload-optional-list-table.php' );
130
-
131
- /*
132
- * Custom list table package for the Upoload MIME Type Views.
133
- * Doesn't need an initialize function; has a constructor.
134
  */
135
- require_once( MLA_PLUGIN_PATH . 'includes/class-mla-upload-list-table.php' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
136
  }
137
  ?>
11
 
12
  defined( 'ABSPATH' ) or die();
13
 
14
+ if ( ! defined('MLA_OPTION_PREFIX') ) {
15
  /**
16
  * Gives a unique prefix for plugin options; can be set in wp-config.php
17
  */
18
  define('MLA_OPTION_PREFIX', 'mla_');
19
  }
20
 
21
+ if ( ! defined('MLA_DEBUG_LEVEL') ) {
22
+ /**
23
+ * Activates debug options; can be set in wp-config.php
24
+ */
25
+ define('MLA_DEBUG_LEVEL', 0);
26
+ }
27
+
28
  /**
29
  * Accumulates error messages from name conflict tests
30
  *
59
  add_action( 'init', 'MLATest::initialize', 0x7FFFFFFF );
60
 
61
  /*
62
+ * If we're responding to an mla_viewer request, shortcut the process
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  */
64
+ if ( isset( $_REQUEST['mla_stream_file'] ) ) {
65
+ require_once( MLA_PLUGIN_PATH . 'includes/class-mla-stream-image.php' );
66
+ add_action( 'init', 'MLAStreamImage::initialize', 0x7FFFFFFF );
67
+ } else {
68
+ /*
69
+ * Template file and database access functions.
70
+ */
71
+ require_once( MLA_PLUGIN_PATH . 'includes/class-mla-data.php' );
72
+ add_action( 'init', 'MLAData::initialize', 0x7FFFFFFF );
73
+ require_once( MLA_PLUGIN_PATH . 'includes/class-mla-data-pdf.php' );
74
+
75
+ /*
76
+ * Custom Taxonomies and WordPress objects.
77
+ */
78
+ require_once( MLA_PLUGIN_PATH . 'includes/class-mla-objects.php' );
79
+ add_action( 'init', 'MLAObjects::initialize', 0x7FFFFFFF );
80
+
81
+ /*
82
+ * MIME Type functions.
83
+ */
84
+ require_once( MLA_PLUGIN_PATH . 'includes/class-mla-mime-types.php' );
85
+ add_action( 'init', 'MLAMime::initialize', 0x7FFFFFFF );
86
+
87
+ /*
88
+ * Shortcodes
89
+ */
90
+ require_once( MLA_PLUGIN_PATH . 'includes/class-mla-shortcodes.php' );
91
+ add_action( 'init', 'MLAShortcodes::initialize', 0x7FFFFFFF );
92
+
93
+ /*
94
+ * WordPress 3.5 and later Edit Media screen additions, e.g., meta boxes
95
+ */
96
+ if ( version_compare( get_bloginfo( 'version' ), '3.5', '>=' ) ) {
97
+ require_once( MLA_PLUGIN_PATH . 'includes/class-mla-edit-media.php' );
98
+ add_action( 'init', 'MLAEdit::initialize', 0x7FFFFFFF );
99
+ }
100
+
101
+ /*
102
+ * WordPress 3.5 and later Media Manager (Modal window) additions
103
+ */
104
+ if ( version_compare( get_bloginfo( 'version' ), '3.5', '>=' ) ) {
105
+ require_once( MLA_PLUGIN_PATH . 'includes/class-mla-media-modal.php' );
106
+ add_action( 'init', 'MLAModal::initialize', 0x7FFFFFFF );
107
+ }
108
+
109
+ /*
110
+ * Plugin settings management
111
+ */
112
+ require_once( MLA_PLUGIN_PATH . 'includes/class-mla-options.php' );
113
+ add_action( 'init', 'MLAOptions::initialize', 0x7FFFFFFF );
114
+
115
+ /*
116
+ * Plugin settings management page
117
+ */
118
+ require_once( MLA_PLUGIN_PATH . 'includes/class-mla-settings.php' );
119
+ add_action( 'init', 'MLASettings::initialize', 0x7FFFFFFF );
120
+
121
+ /*
122
+ * Main program
123
+ */
124
+ require_once( MLA_PLUGIN_PATH . 'includes/class-mla-main.php' );
125
+ add_action( 'init', 'MLA::initialize', 0x7FFFFFFF );
126
+ add_action( 'plugins_loaded', 'MLA::mla_plugins_loaded_action', 0x7FFFFFFF );
127
+
128
+ /*
129
+ * Custom list table package that extends the core WP_List_Table class.
130
+ * Doesn't need an initialize function; has a constructor.
131
+ */
132
+ require_once( MLA_PLUGIN_PATH . 'includes/class-mla-list-table.php' );
133
+
134
+ /*
135
+ * Custom list table package for the Post MIME Type Views.
136
+ * Doesn't need an initialize function; has a constructor.
137
+ */
138
+ require_once( MLA_PLUGIN_PATH . 'includes/class-mla-view-list-table.php' );
139
+
140
+ /*
141
+ * Custom list table package for the Optional Upload MIME Type Views.
142
+ * Doesn't need an initialize function; has a constructor.
143
+ */
144
+ require_once( MLA_PLUGIN_PATH . 'includes/class-mla-upload-optional-list-table.php' );
145
+
146
+ /*
147
+ * Custom list table package for the Upoload MIME Type Views.
148
+ * Doesn't need an initialize function; has a constructor.
149
+ */
150
+ require_once( MLA_PLUGIN_PATH . 'includes/class-mla-upload-list-table.php' );
151
+ } // Not mla_stream_image
152
  }
153
  ?>
includes/mla-stream-image.php ADDED
@@ -0,0 +1,584 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Stream image handler for the mla_viewer
4
+ *
5
+ * @package Media Library Assistant
6
+ * @since 2.10
7
+ */
8
+
9
+ /*
10
+ * Process mla_viewer image stream requests
11
+ */
12
+ @ini_set('error_log','C:\Program Files (x86)\Apache Software Foundation\Apache2.2\logs\php-errors.log');
13
+
14
+ if ( isset( $_REQUEST['mla_stream_file'] ) ) {
15
+ MLAStreamImage::mla_process_stream_image();
16
+ }
17
+
18
+ MLAStreamImage::_mla_die( 'mla_stream_file not set', __LINE__, 500 );
19
+
20
+ /**
21
+ * Class MLA (Media Library Assistant) Stream Image provides PDF thumbnails
22
+ * for the [mla_gallery] mla_viewer.
23
+ *
24
+ * @package Media Library Assistant
25
+ * @since 2.10
26
+ */
27
+ class MLAStreamImage {
28
+ /**
29
+ * Generate a unique, writable file in the temporary directory
30
+ *
31
+ * @since 2.10
32
+ *
33
+ * @param string $extension File extension for the temporary file
34
+ *
35
+ * @return string Writable path and file name.
36
+ */
37
+ private static function _get_temp_file( $extension = '.tmp' ) {
38
+ static $temp = NULL;
39
+
40
+ /*
41
+ * Find a temp directory
42
+ */
43
+ if ( NULL == $temp ) {
44
+ if ( function_exists('sys_get_temp_dir') ) {
45
+ $temp = sys_get_temp_dir();
46
+ if ( @is_dir( $temp ) ) {
47
+ $temp = rtrim( $temp, '/\\' ) . '/';
48
+ }
49
+ } else {
50
+ $temp = ini_get('upload_tmp_dir');
51
+ if ( @is_dir( $temp ) ) {
52
+ $temp = rtrim( $temp, '/\\' ) . '/';
53
+ } else {
54
+ $temp = '/tmp/';
55
+ if ( false == @is_dir( $temp ) ) {
56
+ return false;
57
+ }
58
+ }
59
+ }
60
+ }
61
+
62
+ /*
63
+ * Create a unique file
64
+ */
65
+ $path = $temp . uniqid( mt_rand() ) . $extension;
66
+ $f = @fopen( $path, 'a' );
67
+ if ( $f === false ) {
68
+ return false;
69
+ }
70
+
71
+ fclose( $f );
72
+ return $path;
73
+ }
74
+
75
+ /**
76
+ * Imagick object for the image to be streamed
77
+ *
78
+ * @since 2.10
79
+ *
80
+ * @var Imagick
81
+ */
82
+ protected static $image;
83
+
84
+ /**
85
+ * Direct Ghostscript file conversion
86
+ *
87
+ * @since 2.10
88
+ *
89
+ * @param string $file Input file, e.g., a PDF document
90
+ * @param string $frame Page/frame within the file, zero-based
91
+ * @param string $resolution Output file DPI. Default 72.
92
+ * @param string $output_type Output MIME type; 'image/jpeg' or 'image/png'.
93
+ * @param string $explicit_path Non-standard location to override default search, e.g., 'C:\Program Files (x86)\gs\gs9.15\bin\gswin32c.exe'
94
+ *
95
+ * @return boolean true if conversion succeeds else false
96
+ */
97
+ private static function _ghostscript_convert( $file, $frame, $resolution, $output_type, $explicit_path = '' ) {
98
+ /*
99
+ * Look for exec() - from http://stackoverflow.com/a/12980534/866618
100
+ */
101
+ if ( ini_get('safe_mode') ) {
102
+ return false;
103
+ }
104
+
105
+ $blacklist = preg_split( '/,\s*/', ini_get('disable_functions') . ',' . ini_get('suhosin.executor.func.blacklist') );
106
+ if ( in_array('exec', $blacklist) ) {
107
+ return false;
108
+ }
109
+
110
+ /*
111
+ * Look for the Ghostscript executable
112
+ */
113
+ $ghostscript_path = NULL;
114
+ do {
115
+
116
+ if ( 'WIN' === strtoupper( substr( PHP_OS, 0, 3) ) ) {
117
+ if ( ! empty( $explicit_path ) ) {
118
+ $ghostscript_path = exec( 'dir /o:n/s/b "' . $explicit_path . '"' );
119
+ if ( ! empty( $ghostscript_path ) ) {
120
+ break;
121
+ } else {
122
+ $ghostscript_path = NULL;
123
+ break;
124
+ }
125
+ }
126
+
127
+ if ( $ghostscript_path = getenv('GSC') ) {
128
+ break;
129
+ }
130
+
131
+ $ghostscript_path = exec('where gswin*c.exe');
132
+ if ( ! empty( $ghostscript_path ) ) {
133
+ break;
134
+ }
135
+
136
+ $ghostscript_path = exec('dir /o:n/s/b "C:\Program Files\gs\*gswin*c.exe"');
137
+ if ( ! empty( $ghostscript_path ) ) {
138
+ break;
139
+ }
140
+
141
+ $ghostscript_path = exec('dir /o:n/s/b "C:\Program Files (x86)\gs\*gswin32c.exe"');
142
+ if ( ! empty( $ghostscript_path ) ) {
143
+ break;
144
+ }
145
+
146
+ $ghostscript_path = NULL;
147
+ break;
148
+ } // Windows platform
149
+
150
+ if ( ! empty( $explicit_path ) ) {
151
+ exec( 'test -e ' . $explicit_path, $dummy, $ghostscript_path );
152
+ if ( $explicit_path !== $ghostscript_path ) {
153
+ $ghostscript_path = NULL;
154
+ }
155
+
156
+ break;
157
+ }
158
+
159
+ $ghostscript_path = exec('which gs');
160
+ if ( ! empty( $ghostscript_path ) ) {
161
+ break;
162
+ }
163
+
164
+ $test_path = '/usr/bin/gs';
165
+ exec('test -e ' . $test_path, $dummy, $ghostscript_path);
166
+
167
+ if ( $test_path !== $ghostscript_path ) {
168
+ $ghostscript_path = NULL;
169
+ }
170
+ } while ( false );
171
+
172
+ if ( isset( $ghostscript_path ) ) {
173
+ if ( 'image/jpeg' == $output_type ) {
174
+ $device = 'jpeg';
175
+ $extension = '.jpg';
176
+ } else {
177
+ $device = 'png16m';
178
+ $extension = '.png';
179
+ }
180
+
181
+ /*
182
+ * Generate a unique temporary file name
183
+ */
184
+ $output_file = self::_get_temp_file( $extension );
185
+
186
+ $cmd = escapeshellarg( $ghostscript_path ) . ' -sDEVICE=%1$s -r%2$dx%2$d -dFirstPage=%3$d -dLastPage=%3$d -dFitPage -o %4$s %5$s 2>&1';
187
+ $cmd = sprintf( $cmd, $device, $resolution, ( $frame + 1 ), escapeshellarg( $output_file ), escapeshellarg( $file ) );
188
+ exec( $cmd, $stdout, $return );
189
+ if ( 0 != $return ) {
190
+ error_log( "ERROR: _ghostscript_convert exec returned '{$return}, cmd = " . var_export( $cmd, true ), 0 );
191
+ error_log( "ERROR: _ghostscript_convert exec returned '{$return}, details = " . var_export( $stdout, true ), 0 );
192
+ return false;
193
+ }
194
+
195
+ try {
196
+ self::$image->readImage( $output_file );
197
+ }
198
+ catch ( Exception $e ) {
199
+ error_log( "ERROR: _ghostscript_convert readImage Exception = " . var_export( $e->getMessage(), true ), 0 );
200
+ return false;
201
+ }
202
+
203
+ @unlink( $output_file );
204
+ return true;
205
+ } // found Ghostscript
206
+
207
+ return false;
208
+ }
209
+
210
+ /**
211
+ * Prepare the image for output, scaling and flattening as required
212
+ *
213
+ * @since 2.10
214
+ *
215
+ * @param integer zero or new width
216
+ * @param integer zero or new height
217
+ * @param boolean proportional fit (true) or exact fit (false)
218
+ * @param string output MIME type
219
+ * @param integer compression quality; 1 - 100
220
+ *
221
+ * @return void
222
+ */
223
+ private static function _prepare_image( $width, $height, $best_fit, $type, $quality ) {
224
+ if ( is_callable( array( self::$image, 'scaleImage' ) ) ) {
225
+ if ( 0 < $width && 0 < $height ) {
226
+ // Both are set; use them as-is
227
+ self::$image->scaleImage( $width, $height, $best_fit );
228
+ } elseif ( 0 < $width || 0 < $height ) {
229
+ // One is set; scale the other one proportionally if reducing
230
+ $image_size = self::$image->getImageGeometry();
231
+
232
+ if ( $width && isset( $image_size['width'] ) && $width < $image_size['width'] ) {
233
+ self::$image->scaleImage( $width, 0 );
234
+ } elseif ( $height && isset( $image_size['height'] ) && $height < $image_size['height'] ) {
235
+ self::$image->scaleImage( 0, $height );
236
+ }
237
+ } else {
238
+ // Neither is specified, apply defaults
239
+ self::$image->scaleImage( 150, 0 );
240
+ }
241
+ }
242
+
243
+ if ( 0 < $quality && 101 > $quality ) {
244
+ if ( 'image/jpeg' == $type ) {
245
+ self::$image->setImageCompressionQuality( $quality );
246
+ self::$image->setImageCompression( imagick::COMPRESSION_JPEG );
247
+ }
248
+ else {
249
+ self::$image->setImageCompressionQuality( $quality );
250
+ }
251
+ }
252
+
253
+ if ( 'image/jpeg' == $type ) {
254
+ if ( is_callable( array( self::$image, 'setImageBackgroundColor' ) ) ) {
255
+ self::$image->setImageBackgroundColor('white');
256
+ }
257
+
258
+ if ( is_callable( array( self::$image, 'mergeImageLayers' ) ) ) {
259
+ self::$image = self::$image->mergeImageLayers( imagick::LAYERMETHOD_FLATTEN );
260
+ } elseif ( is_callable( array( self::$image, 'flattenImages' ) ) ) {
261
+ self::$image = self::$image->flattenImages();
262
+ }
263
+ }
264
+ }
265
+
266
+ /**
267
+ * Process Imagick image stream request, e.g., for a PDF thumbnail
268
+ *
269
+ * Requires mla_stream_file (relative to wp_upload_dir ) in $_REQUEST;
270
+ * optional $_REQUEST parameters are:
271
+ * mla_stream_width, mla_stream_height, mla_stream_frame, mla_stream_resolution,
272
+ * mla_stream_quality, mla_stream_type, mla_stream_fit, mla_ghostscript_path
273
+ *
274
+ * @since 2.10
275
+ *
276
+ * @return void echos image content and calls exit();
277
+ */
278
+ public static function mla_process_stream_image() {
279
+ if ( ! class_exists( 'Imagick' ) ) {
280
+ self::_mla_die( 'Imagick not installed', __LINE__, 500 );
281
+ }
282
+
283
+ if( ini_get( 'zlib.output_compression' ) ) {
284
+ ini_set( 'zlib.output_compression', 'Off' );
285
+ }
286
+
287
+ $file = $_REQUEST['mla_stream_file'];
288
+ if ( ! is_file( $file ) ) {
289
+ self::_mla_die( 'File not found', __LINE__, 404 );
290
+ }
291
+
292
+ $use_mutex = isset( $_REQUEST['mla_single_thread'] );
293
+ $width = isset( $_REQUEST['mla_stream_width'] ) ? abs( intval( $_REQUEST['mla_stream_width'] ) ) : 0;
294
+ $height = isset( $_REQUEST['mla_stream_height'] ) ? abs( intval( $_REQUEST['mla_stream_height'] ) ) : 0;
295
+ $type = isset( $_REQUEST['mla_stream_type'] ) ? $_REQUEST['mla_stream_type'] : 'image/jpeg';
296
+ $quality = isset( $_REQUEST['mla_stream_quality'] ) ? abs( intval( $_REQUEST['mla_stream_quality'] ) ) : 0;
297
+ $frame = isset( $_REQUEST['mla_stream_frame'] ) ? abs( intval( $_REQUEST['mla_stream_frame'] ) ) : 0;
298
+ $resolution = isset( $_REQUEST['mla_stream_resolution'] ) ? abs( intval( $_REQUEST['mla_stream_resolution'] ) ) : 72;
299
+ /*
300
+ * If mla_ghostscript_path is present, a non-standard GS location can be found in a file written by
301
+ * the [mla_gallery] shortcode processor.
302
+ */
303
+ $ghostscript_path = isset( $_REQUEST['mla_ghostscript_path'] ) ? $_REQUEST['mla_ghostscript_path'] : '';
304
+ if ( ! empty( $ghostscript_path ) ) {
305
+ $ghostscript_path = @file_get_contents( dirname( __FILE__ ) . '/' . 'mla-ghostscript-path.txt' );
306
+ }
307
+
308
+ if ( $use_mutex ) {
309
+ $temp_file = self::_get_temp_file();
310
+ @unlink( $temp_file );
311
+ $temp_file = pathinfo( $temp_file, PATHINFO_DIRNAME ) . '/mla-mutex.txt';
312
+
313
+ $mutex = new MLAMutex();
314
+ $mutex->init( 1, $temp_file );
315
+ $mutex->acquire();
316
+ }
317
+
318
+ /*
319
+ * Convert the file to an image format and load it
320
+ */
321
+ try {
322
+ self::$image = new Imagick();
323
+
324
+ /*
325
+ * this must be called before reading the image, otherwise has no effect -
326
+ * "-density {$x_resolution}x{$y_resolution}"
327
+ * this is important to give good quality output, otherwise text might be unclear
328
+ * default resolution is 72,72
329
+ */
330
+ self::$image->setResolution( $resolution, $resolution );
331
+
332
+ //$result = false;
333
+ $result = self::_ghostscript_convert( $file, $frame, $resolution, $type, $ghostscript_path );
334
+
335
+ if ( false === $result ) {
336
+ try {
337
+ self::$image->readImage( $file . '[' . $frame . ']' );
338
+ }
339
+ catch ( Exception $e ) {
340
+ self::$image->readImage( $file . '[0]' );
341
+ }
342
+
343
+ if ( 'image/jpeg' == $type ) {
344
+ $extension = 'JPG';
345
+ } else {
346
+ $extension = 'PNG';
347
+ }
348
+
349
+ self::$image->setImageFormat( $extension );
350
+ }
351
+
352
+ if ( ! self::$image->valid() ) {
353
+ self::_mla_die( 'File not loaded', __LINE__, 404 );
354
+ }
355
+ }
356
+ catch ( Exception $e ) {
357
+ self::_mla_die( 'Image load exception: ' . $e->getMessage(), __LINE__, 404 );
358
+ }
359
+
360
+ /*
361
+ * Prepare the output image; resize and flatten, if necessary
362
+ */
363
+ try {
364
+ if ( isset( $_REQUEST['mla_stream_fit'] ) ) {
365
+ $best_fit = ( '1' == $_REQUEST['mla_stream_fit'] );
366
+ } else {
367
+ $best_fit = false;
368
+ }
369
+
370
+ self::_prepare_image( $width, $height, $best_fit, $type, $quality );
371
+ }
372
+ catch ( Exception $e ) {
373
+ self::_mla_die( '_prepare_image exception: ' . $e->getMessage(), __LINE__, 500 );
374
+ }
375
+
376
+ /*
377
+ * Stream the image back to the requestor
378
+ */
379
+ try {
380
+ header( "Content-Type: $type" );
381
+ echo self::$image->getImageBlob();
382
+ }
383
+ catch ( Exception $e ) {
384
+ self::_mla_die( 'Image stream exception: ' . $e->getMessage(), __LINE__, 500 );
385
+ }
386
+
387
+ if ( $use_mutex ) {
388
+ $mutex->release();
389
+ }
390
+
391
+ exit();
392
+ }
393
+
394
+ /**
395
+ * Abort the operation and exit
396
+ *
397
+ * @since 2.10
398
+ *
399
+ * @param string $message Error message.
400
+ * @param string $title Optional. Error title. Default empty.
401
+ * @param integer $response Optional. HTML response code. Default 500.
402
+
403
+ * @return void echos page content and calls exit();
404
+ */
405
+ private static function _mla_die( $message, $title = '', $response = 500 ) {
406
+ error_log( __LINE__ . " _mla_die( '{$message}', '{$title}', '{$response}' )", 0 );
407
+ exit();
408
+ }
409
+ } // Class MLAStreamImage
410
+
411
+ /**
412
+ * Class MLA (Media Library Assistant) Mutex provides a simple "mutual exclusion" semaphore
413
+ * for the [mla_gallery] mla_viewer=single option
414
+ *
415
+ * Adapted from the example by mr.smaon@gmail.com in the PHP Manual "Semaphore Functions" page.
416
+ *
417
+ * @package Media Library Assistant
418
+ * @since 2.10
419
+ */
420
+ class MLAMutex {
421
+ /**
422
+ * Semaphore identifier returned by sem_get()
423
+ *
424
+ * @since 2.10
425
+ *
426
+ * @var resource
427
+ */
428
+ private $sem_id;
429
+
430
+ /**
431
+ * True if the semaphore has been acquired
432
+ *
433
+ * @since 2.10
434
+ *
435
+ * @var boolean
436
+ */
437
+ private $is_acquired = false;
438
+
439
+ /**
440
+ * True if using a file lock instead of a semaphore
441
+ *
442
+ * @since 2.10
443
+ *
444
+ * @var boolean
445
+ */
446
+ private $use_file_lock = false;
447
+
448
+ /**
449
+ * Name of the (locked) file used as a semaphore
450
+ *
451
+ * @since 2.10
452
+ *
453
+ * @var string
454
+ */
455
+ private $filename = '';
456
+
457
+ /**
458
+ * File system pointer resource of the (locked) file used as a semaphore
459
+ *
460
+ * @since 2.10
461
+ *
462
+ * @var resource
463
+ */
464
+ private $filepointer;
465
+
466
+ /**
467
+ * Initializes the choice of semaphore Vs file lock
468
+ *
469
+ * @since 2.10
470
+ *
471
+ * @param boolean $use_lock True to force use of file locking
472
+ *
473
+ * @return void
474
+ */
475
+ function __construct( $use_lock = false ) {
476
+ /*
477
+ * If sem_ functions are not available require file locking
478
+ */
479
+ if ( ! is_callable( 'sem_get' ) ) {
480
+ $use_lock = true;
481
+ }
482
+
483
+ if ( $use_lock || 'WIN' == substr( PHP_OS, 0, 3 ) ) {
484
+ $this->use_file_lock = true;
485
+ }
486
+ }
487
+
488
+ /**
489
+ * Creates the semaphore or sets the (lock) file name
490
+ *
491
+ * @since 2.10
492
+ *
493
+ * @param integer $id Key to identify the semaphore
494
+ * @param string $filename Absolute path and name of the file for locking
495
+ *
496
+ * @return boolean True if the initialization succeeded
497
+ */
498
+ public function init( $id, $filename = '' ) {
499
+
500
+ if( $this->use_file_lock ) {
501
+ if( empty( $filename ) ) {
502
+ return false;
503
+ } else {
504
+ $this->filename = $filename;
505
+ }
506
+ } else {
507
+ if( ! ( $this->sem_id = sem_get( $id, 1) ) ) {
508
+ return false;
509
+ }
510
+ }
511
+
512
+ return true;
513
+ }
514
+
515
+ /**
516
+ * Acquires the semaphore or opens and locks the file
517
+ *
518
+ * @since 2.10
519
+ *
520
+ * @return boolean True if the acquisition succeeded
521
+ */
522
+ public function acquire() {
523
+ if( $this->use_file_lock ) {
524
+ if ( empty( $this->filename ) ) {
525
+ return true;
526
+ }
527
+
528
+ if( false == ( $this->filepointer = @fopen( $this->filename, "w+" ) ) ) {
529
+ return false;
530
+ }
531
+
532
+ if( false == flock( $this->filepointer, LOCK_EX ) ) {
533
+ return false;
534
+ }
535
+ } else {
536
+ if ( ! sem_acquire( $this->sem_id ) ) {
537
+ return false;
538
+ }
539
+ }
540
+
541
+ $this->is_acquired = true;
542
+ return true;
543
+ }
544
+
545
+ /**
546
+ * Releases the semaphore or unlocks and closes (but does not unlink) the file
547
+ *
548
+ * @since 2.10
549
+ *
550
+ * @return boolean True if the release succeeded
551
+ */
552
+ public function release() {
553
+ if( ! $this->is_acquired ) {
554
+ return true;
555
+ }
556
+
557
+ if( $this->use_file_lock ) {
558
+ if( false == flock( $this->filepointer, LOCK_UN ) ) {
559
+ return false;
560
+ }
561
+
562
+ fclose( $this->filepointer );
563
+ } else {
564
+ if ( ! sem_release( $this->sem_id ) ) {
565
+ return false;
566
+ }
567
+ }
568
+
569
+ $this->is_acquired = false;
570
+ return true;
571
+ }
572
+
573
+ /**
574
+ * Returns the semaphore identifier, if it exists, else NULL
575
+ *
576
+ * @since 2.10
577
+ *
578
+ * @return resource Semaphore identifier or NULL
579
+ */
580
+ public function getId() {
581
+ return $this->sem_id;
582
+ }
583
+ } // MLAMutex
584
+ ?>
index.php CHANGED
@@ -6,7 +6,7 @@
6
  * will the rest of the plugin be loaded and run.
7
  *
8
  * @package Media Library Assistant
9
- * @version 2.02
10
  */
11
 
12
  /*
@@ -16,7 +16,7 @@ Description: Enhances the Media Library; powerful [mla_gallery], taxonomy suppor
16
  Author: David Lingren, Fair Trade Judaica
17
  Text Domain: media-library-assistant
18
  Domain Path: /languages
19
- Version: 2.02
20
  Author URI: http://fairtradejudaica.org/our-story/staff/
21
 
22
  Copyright 2011-2014 David Lingren
@@ -93,6 +93,8 @@ if ( ! defined( 'MLA_BACKUP_DIR' ) ) {
93
  $mla_name_conflict_candidates =
94
  array (
95
  'MLA' => 'class',
 
 
96
  'MLAData' => 'class',
97
  'MLAEdit' => 'class',
98
  'MLA_Checklist_Walker' => 'class',
6
  * will the rest of the plugin be loaded and run.
7
  *
8
  * @package Media Library Assistant
9
+ * @version 2.10
10
  */
11
 
12
  /*
16
  Author: David Lingren, Fair Trade Judaica
17
  Text Domain: media-library-assistant
18
  Domain Path: /languages
19
+ Version: 2.10
20
  Author URI: http://fairtradejudaica.org/our-story/staff/
21
 
22
  Copyright 2011-2014 David Lingren
93
  $mla_name_conflict_candidates =
94
  array (
95
  'MLA' => 'class',
96
+ 'MLAStreamImage' => 'class',
97
+ 'MLA_Image_Editor' => 'class',
98
  'MLAData' => 'class',
99
  'MLAEdit' => 'class',
100
  'MLA_Checklist_Walker' => 'class',
languages/MLA Internationalization Guide.pdf CHANGED
Binary file
languages/media-library-assistant-en_US.pot CHANGED
@@ -1,8 +1,8 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Media Library Assistant\n"
4
- "POT-Creation-Date: 2015-02-20 16:02-0800\n"
5
- "PO-Revision-Date: 2015-02-20 16:03-0800\n"
6
  "Last-Translator: David Lingren <david@fairtradejudaica.org>\n"
7
  "Language-Team: David Lingren <david@fairtradejudaica.org>\n"
8
  "Language: en_US\n"
@@ -18,41 +18,42 @@ msgstr ""
18
  "X-Poedit-SearchPath-0: includes\n"
19
  "X-Poedit-SearchPath-1: tests\n"
20
 
21
- #. translators: 1: ERROR tag 2: path and file name
22
- #: includes/class-mla-data.php:101
23
  #, php-format
24
  msgctxt "error_log"
25
- msgid "%1$s: mla_load_template file \"%2$s\" not found."
26
  msgstr ""
27
 
28
- #: includes/class-mla-data.php:101 includes/class-mla-data.php:119
29
- #: includes/class-mla-data.php:198 includes/class-mla-data.php:257
30
- #: includes/class-mla-data.php:345 includes/class-mla-data.php:389
31
- #: includes/class-mla-data.php:492 includes/class-mla-data.php:648
32
- #: includes/class-mla-data.php:711 includes/class-mla-data.php:1220
33
- #: includes/class-mla-data.php:1490 includes/class-mla-data.php:2572
34
- #: includes/class-mla-data.php:2578 includes/class-mla-data.php:3951
35
- #: includes/class-mla-data.php:4276 includes/class-mla-data.php:4278
36
- #: includes/class-mla-data.php:4324 includes/class-mla-data.php:4438
37
- #: includes/class-mla-data.php:4441 includes/class-mla-data.php:4798
38
- #: includes/class-mla-data.php:5585 includes/class-mla-data.php:5612
39
- #: includes/class-mla-data.php:5927 includes/class-mla-data.php:5940
40
- #: includes/class-mla-data.php:5962 includes/class-mla-data.php:6151
41
- #: includes/class-mla-data.php:6192 includes/class-mla-data.php:6224
42
- #: includes/class-mla-data.php:6232 includes/class-mla-data.php:6411
43
- #: includes/class-mla-edit-media.php:293 includes/class-mla-edit-media.php:658
44
- #: includes/class-mla-main.php:604 includes/class-mla-main.php:795
45
- #: includes/class-mla-main.php:895 includes/class-mla-main.php:1131
46
- #: includes/class-mla-main.php:1156 includes/class-mla-main.php:1308
47
- #: includes/class-mla-main.php:1420 includes/class-mla-main.php:1451
48
- #: includes/class-mla-main.php:1678 includes/class-mla-main.php:1685
49
- #: includes/class-mla-main.php:1689 includes/class-mla-main.php:1759
50
- #: includes/class-mla-main.php:1766 includes/class-mla-main.php:1907
51
- #: includes/class-mla-main.php:1982 includes/class-mla-main.php:2229
52
- #: includes/class-mla-main.php:2237 includes/class-mla-main.php:2270
53
- #: includes/class-mla-main.php:2304 includes/class-mla-main.php:2545
54
- #: includes/class-mla-main.php:2553 includes/class-mla-main.php:2585
55
- #: includes/class-mla-main.php:2593 includes/class-mla-media-modal.php:1186
 
56
  #: includes/class-mla-mime-types.php:483 includes/class-mla-mime-types.php:906
57
  #: includes/class-mla-mime-types.php:912 includes/class-mla-mime-types.php:916
58
  #: includes/class-mla-mime-types.php:961
@@ -72,44 +73,80 @@ msgstr ""
72
  #: includes/class-mla-mime-types.php:2320
73
  #: includes/class-mla-mime-types.php:2329
74
  #: includes/class-mla-mime-types.php:2361 includes/class-mla-objects.php:201
75
- #: includes/class-mla-options.php:1656 includes/class-mla-options.php:1833
76
- #: includes/class-mla-options.php:1909 includes/class-mla-options.php:3207
77
- #: includes/class-mla-options.php:3649 includes/class-mla-options.php:3662
78
- #: includes/class-mla-options.php:3666 includes/class-mla-options.php:4192
79
- #: includes/class-mla-options.php:4412 includes/class-mla-options.php:4851
80
- #: includes/class-mla-options.php:4895 includes/class-mla-options.php:4903
81
- #: includes/class-mla-options.php:4920 includes/class-mla-options.php:4930
82
- #: includes/class-mla-options.php:4940 includes/class-mla-options.php:4948
83
- #: includes/class-mla-options.php:4952 includes/class-mla-settings.php:555
84
  #: includes/class-mla-settings.php:619 includes/class-mla-settings.php:633
85
  #: includes/class-mla-settings.php:662 includes/class-mla-settings.php:673
86
  #: includes/class-mla-settings.php:763 includes/class-mla-settings.php:897
87
  #: includes/class-mla-settings.php:1003 includes/class-mla-settings.php:1035
88
- #: includes/class-mla-settings.php:1173 includes/class-mla-settings.php:1530
89
- #: includes/class-mla-settings.php:1562 includes/class-mla-settings.php:1639
90
- #: includes/class-mla-settings.php:1976 includes/class-mla-settings.php:2027
91
- #: includes/class-mla-settings.php:2106 includes/class-mla-settings.php:2658
92
- #: includes/class-mla-settings.php:2800 includes/class-mla-settings.php:2945
93
- #: includes/class-mla-settings.php:2948 includes/class-mla-settings.php:2952
94
- #: includes/class-mla-settings.php:3039 includes/class-mla-settings.php:3045
95
- #: includes/class-mla-settings.php:3059 includes/class-mla-settings.php:3066
96
- #: includes/class-mla-settings.php:3088 includes/class-mla-settings.php:3130
97
- #: includes/class-mla-settings.php:3136 includes/class-mla-settings.php:3150
98
- #: includes/class-mla-settings.php:3157 includes/class-mla-settings.php:3209
99
- #: includes/class-mla-settings.php:3330 includes/class-mla-settings.php:3461
100
- #: includes/class-mla-settings.php:3532 includes/class-mla-settings.php:3618
101
- #: includes/class-mla-settings.php:3952 includes/class-mla-settings.php:3956
102
- #: includes/class-mla-settings.php:3967 includes/class-mla-settings.php:3974
103
- #: includes/class-mla-settings.php:3983 includes/class-mla-settings.php:4020
104
- #: includes/class-mla-settings.php:4028 includes/class-mla-settings.php:4037
105
- #: includes/class-mla-shortcodes.php:1437
106
- #: includes/class-mla-shortcodes.php:1511
107
- #: includes/class-mla-shortcodes.php:2802
108
- #: includes/class-mla-shortcodes.php:3130
109
- #: includes/class-mla-shortcodes.php:3161
 
110
  msgid "ERROR"
111
  msgstr ""
112
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  #. translators: 1: ERROR tag 2: path and file name 3: source type, e.g., file, option, string
114
  #: includes/class-mla-data.php:119
115
  #, php-format
@@ -166,7 +203,7 @@ msgid "%1$s: _evaluate_template_node unknown type \"%2$s\"."
166
  msgstr ""
167
 
168
  #. translators: 1: ERROR tag 2: template excerpt
169
- #: includes/class-mla-data.php:1220
170
  #, php-format
171
  msgctxt "error_log"
172
  msgid ""
@@ -175,255 +212,220 @@ msgid ""
175
  msgstr ""
176
 
177
  #. translators: 1: ERROR tag 2: function name 3: non-array value
178
- #: includes/class-mla-data.php:1490 includes/class-mla-edit-media.php:293
179
- #: includes/class-mla-main.php:1907 includes/class-mla-main.php:1982
180
  #: includes/class-mla-media-modal.php:1186
181
  #: includes/class-mla-mime-types.php:483
182
  #: includes/class-mla-mime-types.php:1218
183
- #: includes/class-mla-mime-types.php:2361 includes/class-mla-settings.php:1530
184
- #: includes/class-mla-settings.php:1976
185
  #, php-format
186
  msgctxt "error_log"
187
  msgid "%1$s: %2$s non-array \"%3$s\""
188
  msgstr ""
189
 
190
  #. translators: 1: DEBUG tag 2: query filter details
191
- #: includes/class-mla-data.php:1924
192
  #, php-format
193
  msgid "%1$s: _execute_list_table_query $wp_filter = \"%2$s\"."
194
  msgstr ""
195
 
196
- #: includes/class-mla-data.php:1924 includes/class-mla-data.php:1927
197
- #: includes/class-mla-data.php:1944 includes/class-mla-data.php:1946
198
- #: includes/class-mla-data.php:1949 includes/class-mla-data.php:1951
199
- #: includes/class-mla-data.php:2247 includes/class-mla-data.php:2250
200
- #: includes/class-mla-data.php:2316 includes/class-mla-data.php:2319
201
- #: includes/class-mla-data.php:2370 includes/class-mla-data.php:2373
202
- #: includes/class-mla-data.php:2472 includes/class-mla-data.php:2475
203
- #: includes/class-mla-data.php:2511 includes/class-mla-data.php:2514
204
- #: includes/class-mla-data.php:2535 includes/class-mla-data.php:2538
205
  msgid "DEBUG"
206
  msgstr ""
207
 
208
  #. translators: 1: DEBUG tag 2: query filter details
209
- #: includes/class-mla-data.php:1927
210
  #, php-format
211
  msgctxt "error_log"
212
  msgid "%1$s: _execute_list_table_query $wp_filter = \"%2$s\"."
213
  msgstr ""
214
 
215
  #. translators: 1: DEBUG tag 2: query details
216
- #: includes/class-mla-data.php:1944
217
  #, php-format
218
  msgid "%1$s: _execute_list_table_query WP_Query = \"%2$s\"."
219
  msgstr ""
220
 
221
  #. translators: 1: DEBUG tag 2: SQL statement
222
- #: includes/class-mla-data.php:1946
223
  #, php-format
224
  msgid "%1$s: _execute_list_table_query SQL_request = \"%2$s\"."
225
  msgstr ""
226
 
227
  #. translators: 1: DEBUG tag 2: query details
228
- #: includes/class-mla-data.php:1949
229
  #, php-format
230
  msgctxt "error_log"
231
  msgid "%1$s: _execute_list_table_query WP_Query = \"%2$s\"."
232
  msgstr ""
233
 
234
  #. translators: 1: DEBUG tag 2: SQL statement
235
- #: includes/class-mla-data.php:1951
236
  #, php-format
237
  msgctxt "error_log"
238
  msgid "%1$s: _execute_list_table_query SQL_request = \"%2$s\"."
239
  msgstr ""
240
 
241
  #. translators: 1: DEBUG tag 2: search filter details
242
- #: includes/class-mla-data.php:2247
243
  #, php-format
244
  msgid "%1$s: mla_query_posts_search_filter = \"%2$s\"."
245
  msgstr ""
246
 
247
  #. translators: 1: DEBUG tag 2: search filter details
248
- #: includes/class-mla-data.php:2250
249
  #, php-format
250
  msgctxt "error_log"
251
  msgid "%1$s: mla_query_posts_search_filter = \"%2$s\"."
252
  msgstr ""
253
 
254
  #. translators: 1: DEBUG tag 2: where filter details
255
- #: includes/class-mla-data.php:2316
256
  #, php-format
257
  msgid "%1$s: mla_query_posts_where_filter = \"%2$s\"."
258
  msgstr ""
259
 
260
  #. translators: 1: DEBUG tag 2: where filter details
261
- #: includes/class-mla-data.php:2319
262
  #, php-format
263
  msgctxt "error_log"
264
  msgid "%1$s: mla_query_posts_where_filter = \"%2$s\"."
265
  msgstr ""
266
 
267
  #. translators: 1: DEBUG tag 2: join filter details
268
- #: includes/class-mla-data.php:2370
269
  #, php-format
270
  msgid "%1$s: mla_query_posts_join_filter = \"%2$s\"."
271
  msgstr ""
272
 
273
  #. translators: 1: DEBUG tag 2: join filter details
274
- #: includes/class-mla-data.php:2373
275
  #, php-format
276
  msgctxt "error_log"
277
  msgid "%1$s: mla_query_posts_join_filter = \"%2$s\"."
278
  msgstr ""
279
 
280
  #. translators: 1: DEBUG tag 2: orderby details details
281
- #: includes/class-mla-data.php:2472
282
  #, php-format
283
  msgid "%1$s: mla_query_posts_orderby_filter = \"%2$s\"."
284
  msgstr ""
285
 
286
  #. translators: 1: DEBUG tag 2: orderby details details
287
- #: includes/class-mla-data.php:2475
288
  #, php-format
289
  msgctxt "error_log"
290
  msgid "%1$s: mla_query_posts_orderby_filter = \"%2$s\"."
291
  msgstr ""
292
 
293
  #. translators: 1: DEBUG tag 2: SQL clauses
294
- #: includes/class-mla-data.php:2511
295
  #, php-format
296
  msgid "%1$s: mla_query_posts_clauses_filter = \"%2$s\"."
297
  msgstr ""
298
 
299
  #. translators: 1: DEBUG tag 2: SQL clauses
300
- #: includes/class-mla-data.php:2514
301
  #, php-format
302
  msgctxt "error_log"
303
  msgid "%1$s: mla_query_posts_clauses_filter = \"%2$s\"."
304
  msgstr ""
305
 
306
  #. translators: 1: DEBUG tag 2: SQL clauses
307
- #: includes/class-mla-data.php:2535
308
  #, php-format
309
  msgid "%1$s: mla_query_posts_clauses_request_filter = \"%2$s\"."
310
  msgstr ""
311
 
312
  #. translators: 1: DEBUG tag 2: SQL clauses
313
- #: includes/class-mla-data.php:2538
314
  #, php-format
315
  msgctxt "error_log"
316
  msgid "%1$s: mla_query_posts_clauses_request_filter = \"%2$s\"."
317
  msgstr ""
318
 
319
  #. translators: 1: ERROR tag 2: post ID
320
- #: includes/class-mla-data.php:2572
321
  #, php-format
322
  msgctxt "error_log"
323
  msgid "%1$s: mla_get_attachment_by_id(%2$d) not found."
324
  msgstr ""
325
 
326
  #. translators: 1: ERROR tag 2: post ID 3: post_type
327
- #: includes/class-mla-data.php:2578
328
  #, php-format
329
  msgctxt "error_log"
330
  msgid "%1$s: mla_get_attachment_by_id(%2$d) wrong post_type \"%3$s\"."
331
  msgstr ""
332
 
333
- #: includes/class-mla-data.php:3163 includes/class-mla-data.php:3507
334
- #: includes/class-mla-list-table.php:995
335
  msgid "NO REFERENCE TESTS"
336
  msgstr ""
337
 
338
- #: includes/class-mla-data.php:3169 includes/class-mla-data.php:3513
339
- #: includes/class-mla-options.php:2750 includes/class-mla-options.php:2751
340
  msgid "ORPHAN"
341
  msgstr ""
342
 
343
- #: includes/class-mla-data.php:3173 includes/class-mla-data.php:3517
344
  msgid "UNUSED"
345
  msgstr ""
346
 
347
- #: includes/class-mla-data.php:3178 includes/class-mla-data.php:3522
348
  msgid "UNATTACHED"
349
  msgstr ""
350
 
351
- #: includes/class-mla-data.php:3180 includes/class-mla-data.php:3524
352
  msgid "INVALID PARENT"
353
  msgstr ""
354
 
355
  #. translators: 1: post_type, 2: post_title, 3: post ID, 4: query string, 5: error message
356
- #: includes/class-mla-data.php:3705
357
  #, php-format
358
  msgid "(%1$s) %2$s (ID %3$d) query \"%4$s\" failed, returning \"%5$s\""
359
  msgstr ""
360
 
361
- #. translators: 1: ERROR tag 2: index
362
- #: includes/class-mla-data.php:3951
363
- #, php-format
364
- msgctxt "error_log"
365
- msgid "%1$s: _build_pdf_indirect_objects bad value at $index = \"%2$d\"."
366
- msgstr ""
367
-
368
- #. translators: 1: ERROR tag 2: source offset 3: nest level
369
- #: includes/class-mla-data.php:4276
370
- #, php-format
371
- msgctxt "error_log"
372
- msgid "%1$s: _parse_pdf_dictionary offset = %2$d, nest = %3$d."
373
- msgstr ""
374
-
375
- #. translators: 1: ERROR tag 2: dictionary excerpt
376
- #: includes/class-mla-data.php:4278
377
- #, php-format
378
- msgctxt "error_log"
379
- msgid "%1$s: _parse_pdf_dictionary no end delimiter dump = %2$s."
380
- msgstr ""
381
-
382
- #. translators: 1: ERROR tag 2: entry name 3: value excerpt
383
- #: includes/class-mla-data.php:4324
384
- #, php-format
385
- msgctxt "error_log"
386
- msgid "%1$s: _parse_pdf_dictionary bad value [ %2$s ] dump = %3$s"
387
- msgstr ""
388
-
389
- #: includes/class-mla-data.php:4438
390
  msgctxt "error_log"
391
- msgid "_parse_xmp_metadata xml_parse_into_struct failed."
392
  msgstr ""
393
 
394
- #: includes/class-mla-data.php:4441
395
  msgctxt "error_log"
396
- msgid "_parse_xmp_metadata set option failed."
397
  msgstr ""
398
 
399
- #. translators: 1: ERROR tag 2: path and file
400
- #: includes/class-mla-data.php:4798
401
- #, php-format
402
- msgctxt "error_log"
403
- msgid "%1$s: File \"%2$s\", startxref not found."
404
- msgstr ""
405
-
406
- #: includes/class-mla-data.php:5664 includes/class-mla-settings.php:1763
407
  #: includes/class-mla-view-list-table.php:377
408
  #: includes/class-mla-view-list-table.php:393
409
  msgid "Yes"
410
  msgstr ""
411
 
412
- #: includes/class-mla-data.php:5666 includes/class-mla-list-table.php:241
413
- #: includes/class-mla-settings.php:1762
414
  #: includes/class-mla-view-list-table.php:379
415
  #: includes/class-mla-view-list-table.php:395
416
  msgid "No"
417
  msgstr ""
418
 
419
  #. translators: 1: meta_key
420
- #: includes/class-mla-data.php:5924 includes/class-mla-data.php:6022
421
  #, php-format
422
  msgid "Deleting %1$s"
423
  msgstr ""
424
 
425
  #. translators: 1: ERROR tag 2: meta_key
426
- #: includes/class-mla-data.php:5927
427
  #, php-format
428
  msgid "%1$s: meta:%2$s not found"
429
  msgstr ""
@@ -431,31 +433,31 @@ msgstr ""
431
  #. translators: 1: meta_key 2: meta_value
432
  #. translators: 1: meta_key 2: new_value
433
  #. translators: 1: meta_key 2: meta_value
434
- #: includes/class-mla-data.php:5936 includes/class-mla-data.php:6033
435
- #: includes/class-mla-data.php:6039
436
  #, php-format
437
  msgid "Adding %1$s = %2$s"
438
  msgstr ""
439
 
440
  #. translators: 1: ERROR tag 2: meta_key
441
- #: includes/class-mla-data.php:5940
442
  #, php-format
443
  msgid "%1$s: Adding meta:%2$s; not found"
444
  msgstr ""
445
 
446
  #. translators: 1: meta_key
447
- #: includes/class-mla-data.php:5947
448
  #, php-format
449
  msgid "Deleting Null meta:%1$s"
450
  msgstr ""
451
 
452
  #. translators: 1: element name 2: old_value 3: new_value
453
- #: includes/class-mla-data.php:5957 includes/class-mla-data.php:6108
454
- #: includes/class-mla-data.php:6169 includes/class-mla-data.php:6195
455
- #: includes/class-mla-data.php:6229 includes/class-mla-data.php:6242
456
- #: includes/class-mla-data.php:6251 includes/class-mla-data.php:6262
457
- #: includes/class-mla-data.php:6273 includes/class-mla-data.php:6286
458
- #: includes/class-mla-data.php:6295 includes/class-mla-data.php:6304
459
  #: includes/class-mla-mime-types.php:1052
460
  #: includes/class-mla-mime-types.php:2125
461
  #, php-format
@@ -463,370 +465,384 @@ msgid "Changing %1$s from \"%2$s\" to \"%3$s\""
463
  msgstr ""
464
 
465
  #. translators: 1: ERROR tag 2: meta_key
466
- #: includes/class-mla-data.php:5962
467
  #, php-format
468
  msgid "%1$s: Changing meta:%2$s; not found"
469
  msgstr ""
470
 
471
  #. translators: 1: meta_key
472
- #: includes/class-mla-data.php:6063
473
  #, php-format
474
  msgid "Deleting old %1$s values"
475
  msgstr ""
476
 
477
  #. translators: 1: meta_key 2: old_value 3: new_value 4: update count
478
- #: includes/class-mla-data.php:6093
479
  #, php-format
480
  msgid "Changing %1$s from \"%2$s\" to \"%3$s\"; %4$d updates"
481
  msgstr ""
482
 
483
- #: includes/class-mla-data.php:6151 includes/class-mla-main.php:2270
484
  msgid "Could not retrieve Attachment."
485
  msgstr ""
486
 
487
- #: includes/class-mla-data.php:6169 includes/class-mla-edit-media.php:401
488
- #: includes/class-mla-main.php:1620 includes/class-mla-main.php:1921
489
- #: includes/class-mla-main.php:2111 includes/class-mla-main.php:2488
490
- #: includes/class-mla-objects.php:278 includes/class-mla-options.php:1048
491
- #: includes/class-mla-options.php:1863
492
  #: includes/mla-main-search-box-template.php:42
493
  #: includes/mla-media-modal-js-template.php:32
494
  msgid "Title"
495
  msgstr ""
496
 
497
  #. translators: 1: ERROR tag 2: old_value
498
- #: includes/class-mla-data.php:6192
499
  #, php-format
500
  msgid "%1$s: Could not change Name/Slug \"%2$s\"; name already exists"
501
  msgstr ""
502
 
503
- #: includes/class-mla-data.php:6195 includes/class-mla-edit-media.php:402
504
- #: includes/class-mla-main.php:2112 includes/class-mla-main.php:2491
505
- #: includes/class-mla-options.php:1055
506
  msgid "Name/Slug"
507
  msgstr ""
508
 
509
  #. translators: 1: old_value
510
- #: includes/class-mla-data.php:6221
511
  #, php-format
512
  msgid "Deleting ALT Text, was \"%1$s\""
513
  msgstr ""
514
 
515
  #. translators: 1: ERROR tag 2: old_value
516
- #: includes/class-mla-data.php:6224
517
  #, php-format
518
  msgid "%1$s: Could not delete ALT Text, remains \"%2$s\""
519
  msgstr ""
520
 
521
- #: includes/class-mla-data.php:6229 includes/class-mla-edit-media.php:405
522
- #: includes/class-mla-list-table.php:1285 includes/class-mla-main.php:2115
523
- #: includes/class-mla-main.php:2494 includes/class-mla-options.php:1062
524
- #: includes/class-mla-options.php:1869
525
  #: includes/mla-main-search-box-template.php:44
526
  #: includes/mla-media-modal-js-template.php:40
527
  msgid "ALT Text"
528
  msgstr ""
529
 
530
  #. translators: 1: ERROR tag 2: old_value 3: new_value
531
- #: includes/class-mla-data.php:6232
532
  #, php-format
533
  msgid "%1$s: Could not change ALT Text from \"%2$s\" to \"%3$s\""
534
  msgstr ""
535
 
536
- #: includes/class-mla-data.php:6242 includes/class-mla-edit-media.php:403
537
- #: includes/class-mla-main.php:2113 includes/class-mla-main.php:2497
538
- #: includes/class-mla-options.php:1069 includes/class-mla-options.php:1872
539
  #: includes/mla-main-search-box-template.php:45
540
  #: includes/mla-media-modal-js-template.php:45
541
  msgid "Caption"
542
  msgstr ""
543
 
544
- #: includes/class-mla-data.php:6251 includes/class-mla-edit-media.php:404
545
- #: includes/class-mla-main.php:2114 includes/class-mla-main.php:2499
546
- #: includes/class-mla-options.php:1076 includes/class-mla-options.php:1875
547
- #: includes/class-mla-settings.php:1496 includes/class-mla-settings.php:1753
548
- #: includes/class-mla-settings.php:1851 includes/class-mla-settings.php:2215
549
  #: includes/mla-main-search-box-template.php:46
550
  #: includes/mla-media-modal-js-template.php:49
551
  msgid "Description"
552
  msgstr ""
553
 
554
- #: includes/class-mla-data.php:6262 includes/class-mla-list-table.php:969
555
- #: includes/class-mla-list-table.php:1061 includes/class-mla-options.php:4361
556
- #: includes/class-mla-options.php:4707
557
  msgid "Parent"
558
  msgstr ""
559
 
560
- #: includes/class-mla-data.php:6273 includes/class-mla-edit-media.php:592
561
- #: includes/class-mla-edit-media.php:745 includes/class-mla-main.php:2118
562
- #: includes/class-mla-main.php:2505 includes/class-mla-settings.php:1494
563
- #: includes/class-mla-settings.php:1751
564
  msgid "Menu Order"
565
  msgstr ""
566
 
567
- #: includes/class-mla-data.php:6286 includes/class-mla-edit-media.php:372
568
- #: includes/class-mla-list-table.php:1444 includes/class-mla-main.php:1988
569
- #: includes/class-mla-main.php:2090 includes/class-mla-main.php:2319
 
570
  msgid "Author"
571
  msgstr ""
572
 
573
- #: includes/class-mla-data.php:6295 includes/class-mla-edit-media.php:395
574
- #: includes/class-mla-main.php:2129
575
  msgid "Comments"
576
  msgstr ""
577
 
578
- #: includes/class-mla-data.php:6304 includes/class-mla-edit-media.php:396
579
- #: includes/class-mla-main.php:2130
580
  msgid "Pings"
581
  msgstr ""
582
 
583
- #: includes/class-mla-data.php:6335
584
  msgid "Adding"
585
  msgstr ""
586
 
587
- #: includes/class-mla-data.php:6339
588
  msgid "Removing"
589
  msgstr ""
590
 
591
- #: includes/class-mla-data.php:6348
592
  msgid "Replacing"
593
  msgstr ""
594
 
595
- #: includes/class-mla-data.php:6356
596
  msgid "Ignoring"
597
  msgstr ""
598
 
599
  #. translators: 1: action_name, 2: taxonomy
600
- #: includes/class-mla-data.php:6369
601
  #, php-format
602
  msgid "%1$s \"%2$s\" terms"
603
  msgstr ""
604
 
605
  #. translators: 1: taxonomy
606
- #: includes/class-mla-data.php:6373
607
  #, php-format
608
  msgid "You cannot assign \"%1$s\" terms"
609
  msgstr ""
610
 
611
  #. translators: 1: post ID
612
- #: includes/class-mla-data.php:6385 includes/class-mla-main.php:1141
613
  #, php-format
614
  msgid "Item %1$d, no changes detected."
615
  msgstr ""
616
 
617
  #. translators: 1: post ID
618
- #: includes/class-mla-data.php:6397
619
  #, php-format
620
  msgid "Item %1$d updated."
621
  msgstr ""
622
 
623
  #. translators: 1: ERROR tag 2: post ID
624
- #: includes/class-mla-data.php:6411
625
  #, php-format
626
  msgid "%1$s: Item %2$d update failed."
627
  msgstr ""
628
 
629
- #: includes/class-mla-edit-media.php:133 includes/class-mla-edit-media.php:169
630
- #: includes/class-mla-edit-media.php:218 includes/class-mla-main.php:340
631
- #: includes/class-mla-main.php:377 includes/class-mla-main.php:1037
632
- #: includes/class-mla-main.php:1804 includes/class-mla-options.php:3907
633
- #: includes/class-mla-settings.php:340
634
  msgctxt "tag_delimiter"
635
  msgid ","
636
  msgstr ""
637
 
638
- #: includes/class-mla-edit-media.php:168
639
  msgid "Upload New Media items"
640
  msgstr ""
641
 
642
- #: includes/class-mla-edit-media.php:170 includes/class-mla-edit-media.php:220
643
- #: includes/class-mla-main.php:364
644
  msgid "An ajax.fail error has occurred. Please reload the page and try again."
645
  msgstr ""
646
 
647
- #: includes/class-mla-edit-media.php:171 includes/class-mla-edit-media.php:221
648
- #: includes/class-mla-main.php:365
649
  msgid "An ajax.done error has occurred. Please reload the page and try again."
650
  msgstr ""
651
 
652
- #: includes/class-mla-edit-media.php:173 includes/class-mla-edit-media.php:391
653
  msgid "Open Bulk Edit area"
654
  msgstr ""
655
 
656
- #: includes/class-mla-edit-media.php:174
657
  msgid "Close Bulk Edit area"
658
  msgstr ""
659
 
660
- #: includes/class-mla-edit-media.php:315 includes/class-mla-main.php:2023
661
  msgid "more"
662
  msgstr ""
663
 
664
- #: includes/class-mla-edit-media.php:316 includes/class-mla-main.php:2024
665
  msgid "less"
666
  msgstr ""
667
 
668
- #: includes/class-mla-edit-media.php:319 includes/class-mla-edit-media.php:350
669
- #: includes/class-mla-main.php:2027 includes/class-mla-main.php:2065
670
  msgid "Add"
671
  msgstr ""
672
 
673
- #: includes/class-mla-edit-media.php:320 includes/class-mla-edit-media.php:351
674
- #: includes/class-mla-main.php:2028 includes/class-mla-main.php:2066
675
  msgid "Remove"
676
  msgstr ""
677
 
678
- #: includes/class-mla-edit-media.php:321 includes/class-mla-edit-media.php:352
679
- #: includes/class-mla-main.php:2029 includes/class-mla-main.php:2067
680
- #: includes/class-mla-options.php:3443 includes/class-mla-options.php:3546
681
- #: includes/class-mla-options.php:3590 includes/class-mla-options.php:4596
682
- #: includes/class-mla-options.php:4646 includes/class-mla-options.php:4765
683
- #: includes/class-mla-options.php:4807 includes/class-mla-options.php:4832
684
  msgid "Replace"
685
  msgstr ""
686
 
687
- #: includes/class-mla-edit-media.php:397 includes/class-mla-main.php:2131
688
- #: includes/class-mla-main.php:2177 includes/class-mla-settings.php:1761
689
- #: includes/class-mla-settings.php:1799 includes/class-mla-settings.php:2226
690
  msgid "No Change"
691
  msgstr ""
692
 
693
- #: includes/class-mla-edit-media.php:398 includes/class-mla-main.php:2132
694
  msgid "Allow"
695
  msgstr ""
696
 
697
- #: includes/class-mla-edit-media.php:399 includes/class-mla-main.php:2133
698
  msgid "Do not allow"
699
  msgstr ""
700
 
701
- #: includes/class-mla-edit-media.php:406 includes/class-mla-main.php:2116
 
702
  msgid "Parent ID"
703
  msgstr ""
704
 
705
- #: includes/class-mla-edit-media.php:407 includes/class-mla-edit-media.php:725
706
- #: includes/class-mla-main.php:2117
707
  #: includes/class-mla-upload-optional-list-table.php:281
708
  msgid "Select"
709
  msgstr ""
710
 
711
- #: includes/class-mla-edit-media.php:482
712
  msgid "Custom field mapping updated."
713
  msgstr ""
714
 
715
- #: includes/class-mla-edit-media.php:483
716
  msgid "IPTC/EXIF mapping updated."
717
  msgstr ""
718
 
719
  #. translators: date_i18n format for last modified date and time
720
- #: includes/class-mla-edit-media.php:501
721
  msgid "M j, Y @ G:i"
722
  msgstr ""
723
 
724
- #: includes/class-mla-edit-media.php:503 includes/class-mla-main.php:2483
725
  msgid "Last modified"
726
  msgstr ""
727
 
728
- #: includes/class-mla-edit-media.php:514
729
  msgid "Map Custom Field metadata for this item"
730
  msgstr ""
731
 
732
- #: includes/class-mla-edit-media.php:514 includes/class-mla-main.php:1727
733
- #: includes/class-mla-main.php:2136
734
- msgid "Map Custom Field Metadata"
735
  msgstr ""
736
 
737
- #: includes/class-mla-edit-media.php:516
738
  msgid "Map IPTC/EXIF metadata for this item"
739
  msgstr ""
740
 
741
- #: includes/class-mla-edit-media.php:516
742
- msgid "Map IPTC/EXIF Metadata"
 
743
  msgstr ""
744
 
745
- #: includes/class-mla-edit-media.php:588 includes/class-mla-edit-media.php:726
746
- #: includes/class-mla-main.php:2501
747
  msgid "Parent Info"
748
  msgstr ""
749
 
750
- #: includes/class-mla-edit-media.php:598 includes/class-mla-edit-media.php:769
751
  msgid "Attachment Metadata"
752
  msgstr ""
753
 
754
- #: includes/class-mla-edit-media.php:603 includes/class-mla-edit-media.php:803
755
- #: includes/class-mla-main.php:2512 includes/class-mla-options.php:472
756
  msgid "Featured in"
757
  msgstr ""
758
 
759
- #: includes/class-mla-edit-media.php:607 includes/class-mla-edit-media.php:842
760
- #: includes/class-mla-main.php:2514 includes/class-mla-options.php:481
761
  msgid "Inserted in"
762
  msgstr ""
763
 
764
- #: includes/class-mla-edit-media.php:611 includes/class-mla-edit-media.php:877
765
- #: includes/class-mla-main.php:2516 includes/class-mla-options.php:490
766
- #: includes/class-mla-settings.php:3753
767
  msgid "Gallery in"
768
  msgstr ""
769
 
770
- #: includes/class-mla-edit-media.php:615 includes/class-mla-edit-media.php:912
771
- #: includes/class-mla-main.php:2518 includes/class-mla-options.php:499
772
- #: includes/class-mla-settings.php:3763
773
  msgid "MLA Gallery in"
774
  msgstr ""
775
 
776
  #. translators: 1: ERROR tag 2: function name 3: template key
777
- #: includes/class-mla-edit-media.php:658 includes/class-mla-main.php:604
778
  #: includes/class-mla-settings.php:555
779
  #, php-format
780
  msgctxt "error_log"
781
  msgid "%1$s: %2$s discarding \"%3$s\"; no title/order"
782
  msgstr ""
783
 
784
- #: includes/class-mla-edit-media.php:704 includes/class-mla-list-table.php:770
785
- #: includes/class-mla-main.php:1633
786
  msgid "Scheduled"
787
  msgstr ""
788
 
789
- #: includes/class-mla-edit-media.php:707 includes/class-mla-list-table.php:773
790
  msgctxt "post state"
791
  msgid "Pending"
792
  msgstr ""
793
 
794
- #: includes/class-mla-edit-media.php:710 includes/class-mla-list-table.php:776
795
- #: includes/class-mla-main.php:1639
796
  msgid "Draft"
797
  msgstr ""
798
 
799
- #: includes/class-mla-edit-media.php:724
800
  msgid "Post Parent"
801
  msgstr ""
802
 
803
- #: includes/class-mla-edit-media.php:725 includes/class-mla-main.php:1912
804
  msgid "Select Parent"
805
  msgstr ""
806
 
807
- #: includes/class-mla-edit-media.php:792 includes/class-mla-edit-media.php:830
808
- #: includes/class-mla-edit-media.php:866 includes/class-mla-edit-media.php:901
809
- #: includes/class-mla-list-table.php:1108
810
- #: includes/class-mla-list-table.php:1157
811
- #: includes/class-mla-list-table.php:1203
812
- #: includes/class-mla-list-table.php:1248 includes/class-mla-main.php:2332
813
- #: includes/class-mla-main.php:2351 includes/class-mla-main.php:2368
814
- #: includes/class-mla-main.php:2384
815
  msgid "PARENT"
816
  msgstr ""
817
 
818
- #: includes/class-mla-edit-media.php:1095
819
  msgid "Most Used"
820
  msgstr ""
821
 
822
  #. translators: %s: add new taxonomy label
823
- #: includes/class-mla-edit-media.php:1124
824
  #, php-format
825
  msgid "+ %s"
826
  msgstr ""
827
 
828
- #: includes/class-mla-edit-media.php:1130
829
- msgid "?&nbsp;Search"
 
 
 
 
 
 
 
 
 
 
 
830
  msgstr ""
831
 
832
  #: includes/class-mla-list-table.php:200
@@ -939,21 +955,25 @@ msgid "All"
939
  msgstr ""
940
 
941
  #: includes/class-mla-list-table.php:627
942
- #: includes/class-mla-list-table.php:1343 includes/class-mla-options.php:604
943
  #: includes/class-mla-options.php:806 includes/class-mla-options.php:830
944
- #: includes/class-mla-options.php:844 includes/class-mla-settings.php:2298
945
  msgid "None"
946
  msgstr ""
947
 
948
  #: includes/class-mla-list-table.php:633 includes/class-mla-list-table.php:665
949
- #: includes/class-mla-list-table.php:1281
950
- #: includes/class-mla-list-table.php:1325
951
- #: includes/class-mla-list-table.php:1357
 
 
 
952
  msgid "Filter by"
953
  msgstr ""
954
 
955
  #: includes/class-mla-list-table.php:643
956
- msgid "not supported"
 
957
  msgstr ""
958
 
959
  #. translators: 1: column_name 2: column_values
@@ -965,21 +985,21 @@ msgstr ""
965
  msgid "column_default: %1$s, %2$s"
966
  msgstr ""
967
 
968
- #: includes/class-mla-list-table.php:751 includes/class-mla-list-table.php:824
969
- #: includes/class-mla-list-table.php:826
970
  #: includes/class-mla-upload-list-table.php:312
971
  #: includes/class-mla-view-list-table.php:302
972
  msgid "Edit this item"
973
  msgstr ""
974
 
975
  #: includes/class-mla-list-table.php:751 includes/class-mla-list-table.php:754
976
- #: includes/class-mla-list-table.php:824 includes/class-mla-list-table.php:826
977
- #: includes/class-mla-list-table.php:1113
978
- #: includes/class-mla-list-table.php:1162
979
- #: includes/class-mla-list-table.php:1208
980
- #: includes/class-mla-list-table.php:1253
981
- #: includes/class-mla-list-table.php:1461
982
- #: includes/class-mla-list-table.php:1765
983
  #: includes/class-mla-upload-list-table.php:312
984
  #: includes/class-mla-upload-list-table.php:610
985
  #: includes/class-mla-view-list-table.php:302
@@ -987,197 +1007,192 @@ msgstr ""
987
  msgid "Edit"
988
  msgstr ""
989
 
990
- #: includes/class-mla-list-table.php:812
 
 
 
 
991
  msgid "Restore this item from the Trash"
992
  msgstr ""
993
 
994
- #: includes/class-mla-list-table.php:812
995
- #: includes/class-mla-list-table.php:1762
996
  msgid "Restore"
997
  msgstr ""
998
 
999
- #: includes/class-mla-list-table.php:829
1000
  #: includes/class-mla-upload-list-table.php:314
1001
  #: includes/class-mla-view-list-table.php:304
1002
  msgid "Edit this item inline"
1003
  msgstr ""
1004
 
1005
- #: includes/class-mla-list-table.php:829 includes/class-mla-main.php:2110
1006
- #: includes/class-mla-options.php:3320 includes/class-mla-options.php:3627
1007
  #: includes/class-mla-upload-list-table.php:314
1008
  #: includes/class-mla-view-list-table.php:304
1009
  msgid "Quick Edit"
1010
  msgstr ""
1011
 
1012
- #: includes/class-mla-list-table.php:835
1013
  msgid "Move this item to the Trash"
1014
  msgstr ""
1015
 
1016
- #: includes/class-mla-list-table.php:835
1017
- #: includes/class-mla-list-table.php:1768
1018
  msgid "Move to Trash"
1019
  msgstr ""
1020
 
1021
- #: includes/class-mla-list-table.php:840
1022
  #: includes/class-mla-upload-list-table.php:318
1023
  #: includes/class-mla-view-list-table.php:310
1024
  msgid "Delete this item Permanently"
1025
  msgstr ""
1026
 
1027
- #: includes/class-mla-list-table.php:840
1028
- #: includes/class-mla-list-table.php:1763
1029
- #: includes/class-mla-list-table.php:1770
1030
  #: includes/class-mla-upload-list-table.php:318
1031
  #: includes/class-mla-view-list-table.php:310
1032
  #: includes/class-mla-view-list-table.php:514
1033
  msgid "Delete Permanently"
1034
  msgstr ""
1035
 
1036
- #: includes/class-mla-list-table.php:848
1037
  msgid "Download"
1038
  msgstr ""
1039
 
1040
- #: includes/class-mla-list-table.php:851 includes/class-mla-settings.php:1739
1041
  msgid "View"
1042
  msgstr ""
1043
 
1044
- #: includes/class-mla-list-table.php:891 includes/class-mla-list-table.php:963
1045
- #: includes/class-mla-main.php:368 includes/class-mla-main.php:1624
1046
  msgid "(no title)"
1047
  msgstr ""
1048
 
1049
- #: includes/class-mla-list-table.php:966
1050
- #: includes/class-mla-list-table.php:1058
1051
- msgid "Filter by Parent ID"
1052
- msgstr ""
1053
-
1054
- #: includes/class-mla-list-table.php:1055
1055
  msgid "(no title: bad ID)"
1056
  msgstr ""
1057
 
1058
- #: includes/class-mla-list-table.php:1090
1059
- #: includes/class-mla-list-table.php:1135
1060
- #: includes/class-mla-list-table.php:1185
1061
- #: includes/class-mla-list-table.php:1230 includes/class-mla-main.php:2340
1062
- #: includes/class-mla-main.php:2360 includes/class-mla-main.php:2376
1063
- #: includes/class-mla-main.php:2392 includes/class-mla-options.php:476
1064
  #: includes/class-mla-options.php:485 includes/class-mla-options.php:494
1065
  #: includes/class-mla-options.php:503
1066
  msgid "Disabled"
1067
  msgstr ""
1068
 
1069
- #: includes/class-mla-list-table.php:1328 includes/class-mla-settings.php:1844
1070
- #: includes/class-mla-settings.php:2209
1071
  msgid "MIME Type"
1072
  msgstr ""
1073
 
1074
- #: includes/class-mla-list-table.php:1361
1075
  msgid "Base File"
1076
  msgstr ""
1077
 
1078
- #: includes/class-mla-list-table.php:1377
1079
- #: includes/class-mla-list-table.php:1410
1080
  msgid "Unpublished"
1081
  msgstr ""
1082
 
1083
  #. translators: 1: upload/last modified date and time
1084
- #: includes/class-mla-list-table.php:1386
1085
- #: includes/class-mla-list-table.php:1417
1086
  #, php-format
1087
  msgid "%1$s from now"
1088
  msgstr ""
1089
 
1090
  #. translators: 1: upload/last modified date and time
1091
- #: includes/class-mla-list-table.php:1389
1092
- #: includes/class-mla-list-table.php:1419
1093
  #, php-format
1094
  msgid "%1$s ago"
1095
  msgstr ""
1096
 
1097
  #. translators: format for upload/last modified date
1098
  #. translators: date format in table columns, see http://php.net/date
1099
- #: includes/class-mla-list-table.php:1393
1100
- #: includes/class-mla-list-table.php:1422
1101
- #: includes/class-mla-list-table.php:1478 includes/class-mla-main.php:1649
1102
  msgid "Y/m/d"
1103
  msgstr ""
1104
 
1105
- #: includes/class-mla-list-table.php:1441
1106
- msgid "Filter by Author ID"
1107
- msgstr ""
1108
-
1109
- #: includes/class-mla-list-table.php:1480 includes/class-mla-options.php:1165
1110
- msgctxt "post_mime_types_singular"
1111
  msgid "Unattached"
1112
  msgstr ""
1113
 
1114
- #: includes/class-mla-list-table.php:1483
1115
  msgid "Set Parent"
1116
  msgstr ""
1117
 
1118
- #: includes/class-mla-list-table.php:1614
1119
  msgctxt "uploaded files"
1120
  msgid "All"
1121
  msgid_plural "All"
1122
  msgstr[0] ""
1123
  msgstr[1] ""
1124
 
1125
- #: includes/class-mla-list-table.php:1796
1126
  msgid "Filter"
1127
  msgstr ""
1128
 
1129
- #: includes/class-mla-list-table.php:1800
1130
  #: includes/mla-media-modal-js-template.php:58
1131
  msgid "Terms Search"
1132
  msgstr ""
1133
 
1134
- #: includes/class-mla-list-table.php:1806
1135
  msgid "Clear Filter-by"
1136
  msgstr ""
1137
 
1138
- #: includes/class-mla-list-table.php:1810
1139
  msgid "Empty Trash"
1140
  msgstr ""
1141
 
1142
- #: includes/class-mla-main.php:366 includes/class-mla-settings.php:337
1143
  msgid "Error while saving the changes."
1144
  msgstr ""
1145
 
1146
- #: includes/class-mla-main.php:367 includes/class-mla-settings.php:338
1147
  msgid "Remove From Bulk Edit"
1148
  msgstr ""
1149
 
1150
- #: includes/class-mla-main.php:369
1151
  msgid "Bulk Edit items"
1152
  msgstr ""
1153
 
1154
- #: includes/class-mla-main.php:370 includes/class-mla-main.php:2137
1155
  #: includes/class-mla-settings.php:349
1156
  msgid "Waiting"
1157
  msgstr ""
1158
 
1159
- #: includes/class-mla-main.php:371 includes/class-mla-main.php:2139
1160
  #: includes/class-mla-settings.php:351
1161
  msgid "Complete"
1162
  msgstr ""
1163
 
1164
- #: includes/class-mla-main.php:372 includes/class-mla-settings.php:352
1165
  msgid "Unchanged"
1166
  msgstr ""
1167
 
1168
- #: includes/class-mla-main.php:373 includes/class-mla-settings.php:353
1169
  msgid "Succeeded"
1170
  msgstr ""
1171
 
1172
- #: includes/class-mla-main.php:374 includes/class-mla-settings.php:354
1173
  msgid "Failed"
1174
  msgstr ""
1175
 
1176
- #: includes/class-mla-main.php:375 includes/class-mla-settings.php:357
1177
  msgid "CANCELED"
1178
  msgstr ""
1179
 
1180
- #: includes/class-mla-main.php:486
1181
  #, php-format
1182
  msgid "Item permanently deleted."
1183
  msgid_plural "%d items permanently deleted."
@@ -1185,42 +1200,42 @@ msgstr[0] ""
1185
  msgstr[1] ""
1186
 
1187
  #. translators: 1: post ID
1188
- #: includes/class-mla-main.php:491 includes/class-mla-main.php:2600
1189
  #, php-format
1190
  msgid "Item %1$d moved to Trash."
1191
  msgstr ""
1192
 
1193
- #: includes/class-mla-main.php:510
1194
  msgid "Entries per page"
1195
  msgstr ""
1196
 
1197
- #: includes/class-mla-main.php:895
1198
  msgid "You are not allowed to edit Attachment: "
1199
  msgstr ""
1200
 
1201
  #. translators: 1: ERROR tag 2: bulk action
1202
- #: includes/class-mla-main.php:1131
1203
  #, php-format
1204
  msgid "%1$s: Unknown bulk action %2$s"
1205
  msgstr ""
1206
 
1207
- #: includes/class-mla-main.php:1153
1208
  msgid "no changes detected"
1209
  msgstr ""
1210
 
1211
  #. translators: 1: action name, e.g., edit
1212
- #: includes/class-mla-main.php:1199 includes/class-mla-settings.php:1618
1213
- #: includes/class-mla-settings.php:2085
1214
  #, php-format
1215
  msgid "Bulk Action %1$s - no items selected."
1216
  msgstr ""
1217
 
1218
- #: includes/class-mla-main.php:1250
1219
  msgid "You do not have permission to manage attachments."
1220
  msgstr ""
1221
 
1222
  #. translators: 1: number of items
1223
- #: includes/class-mla-main.php:1317
1224
  #, php-format
1225
  msgctxt "deleted items"
1226
  msgid "%s item deleted."
@@ -1228,217 +1243,206 @@ msgid_plural "%s items deleted."
1228
  msgstr[0] ""
1229
  msgstr[1] ""
1230
 
1231
- #: includes/class-mla-main.php:1319
1232
  msgid "No items deleted."
1233
  msgstr ""
1234
 
1235
- #: includes/class-mla-main.php:1344
1236
  msgid "Edit single item"
1237
  msgstr ""
1238
 
1239
  #. translators: 1: post ID
1240
- #: includes/class-mla-main.php:1359
1241
  #, php-format
1242
  msgid "Item %1$d cancelled."
1243
  msgstr ""
1244
 
1245
- #: includes/class-mla-main.php:1394
1246
  msgid "Empty Terms Search; ignored"
1247
  msgstr ""
1248
 
1249
  #. translators: 1: row-level action, e.g., single_item_delete, single_item_edit
1250
  #. translators: 1: bulk_action, e.g., single_item_delete, single_item_edit
1251
- #: includes/class-mla-main.php:1406 includes/class-mla-settings.php:1655
1252
- #: includes/class-mla-settings.php:2124
1253
  #, php-format
1254
  msgid "Unknown mla_admin_action - \"%1$s\""
1255
  msgstr ""
1256
 
1257
- #: includes/class-mla-main.php:1439
1258
  msgid "term search results for"
1259
  msgstr ""
1260
 
1261
- #: includes/class-mla-main.php:1442
1262
  msgid "post/parent results for"
1263
  msgstr ""
1264
 
1265
- #: includes/class-mla-main.php:1444
1266
  msgid "search results for"
1267
  msgstr ""
1268
 
1269
- #: includes/class-mla-main.php:1620 includes/class-mla-main.php:1922
1270
  msgid "Type"
1271
  msgstr ""
1272
 
1273
- #: includes/class-mla-main.php:1620 includes/class-mla-main.php:1923
1274
  msgid "Date"
1275
  msgstr ""
1276
 
1277
- #: includes/class-mla-main.php:1620 includes/class-mla-main.php:1924
1278
- #: includes/class-mla-settings.php:2225
1279
  msgid "Status"
1280
  msgstr ""
1281
 
1282
- #: includes/class-mla-main.php:1630
1283
  msgid "Published"
1284
  msgstr ""
1285
 
1286
- #: includes/class-mla-main.php:1636
1287
  msgid "Pending Review"
1288
  msgstr ""
1289
 
1290
- #: includes/class-mla-main.php:1678 includes/class-mla-main.php:1759
1291
  msgid "No post ID found"
1292
  msgstr ""
1293
 
1294
- #: includes/class-mla-main.php:1685 includes/class-mla-main.php:1766
1295
- #: includes/class-mla-main.php:2277
1296
  msgid "You are not allowed to edit this Attachment."
1297
  msgstr ""
1298
 
1299
- #: includes/class-mla-main.php:1730 includes/class-mla-main.php:2135
1300
- #: includes/class-mla-main.php:2476
1301
- msgid "Map IPTC/EXIF metadata"
1302
- msgstr ""
1303
-
1304
- #: includes/class-mla-main.php:1733 includes/class-mla-main.php:1934
1305
- #: includes/class-mla-main.php:2124 includes/class-mla-main.php:2475
1306
- #: includes/class-mla-settings.php:1498 includes/class-mla-settings.php:1759
1307
- #: includes/class-mla-settings.php:1853 includes/class-mla-settings.php:2223
1308
  msgid "Update"
1309
  msgstr ""
1310
 
1311
- #: includes/class-mla-main.php:1869
1312
  msgid "All Post Types"
1313
  msgstr ""
1314
 
1315
- #: includes/class-mla-main.php:1913 includes/class-mla-media-modal.php:1216
1316
- #: includes/mla-media-modal-js-template.php:20
1317
- #: includes/mla-media-modal-js-template.php:61
1318
- msgid "Search"
1319
- msgstr ""
1320
-
1321
- #: includes/class-mla-main.php:1915
1322
  msgid "For"
1323
  msgstr ""
1324
 
1325
- #: includes/class-mla-main.php:1925 includes/class-mla-shortcodes.php:715
1326
  msgid "Unattached"
1327
  msgstr ""
1328
 
1329
- #: includes/class-mla-main.php:1930 includes/class-mla-main.php:2123
1330
- #: includes/class-mla-main.php:2474 includes/class-mla-settings.php:1499
1331
- #: includes/class-mla-settings.php:1758 includes/class-mla-settings.php:1854
1332
- #: includes/class-mla-settings.php:1926 includes/class-mla-settings.php:2222
1333
- #: includes/class-mla-settings.php:2691 includes/class-mla-settings.php:2827
1334
  msgid "Cancel"
1335
  msgstr ""
1336
 
1337
- #: includes/class-mla-main.php:2125 includes/class-mla-options.php:3334
1338
- #: includes/class-mla-options.php:3628 includes/class-mla-settings.php:1760
1339
- #: includes/class-mla-settings.php:2224
1340
  msgid "Bulk Edit"
1341
  msgstr ""
1342
 
1343
- #: includes/class-mla-main.php:2138
1344
  msgid "In-process"
1345
  msgstr ""
1346
 
1347
- #: includes/class-mla-main.php:2140 includes/class-mla-options.php:494
1348
- #: includes/class-mla-options.php:503 includes/class-mla-settings.php:2694
1349
- #: includes/class-mla-settings.php:2830
1350
  msgid "Refresh"
1351
  msgstr ""
1352
 
1353
- #: includes/class-mla-main.php:2229
1354
  msgid "You are not allowed to delete this item."
1355
  msgstr ""
1356
 
1357
  #. translators: 1: ERROR tag 2: post ID
1358
- #: includes/class-mla-main.php:2237
1359
  #, php-format
1360
  msgid "%1$s: Item %2$d could NOT be deleted."
1361
  msgstr ""
1362
 
1363
  #. translators: 1: post ID
1364
- #: includes/class-mla-main.php:2244
1365
  #, php-format
1366
  msgid "Item %1$d permanently deleted."
1367
  msgstr ""
1368
 
1369
  #. translators: 1: ERROR tag 2: page_template_array
1370
- #: includes/class-mla-main.php:2304
1371
  #, php-format
1372
  msgctxt "error_log"
1373
  msgid "%1$s: MLA::_display_single_item \\$page_template_array = \"%2$s\""
1374
  msgstr ""
1375
 
1376
- #: includes/class-mla-main.php:2478
1377
  msgid "File name"
1378
  msgstr ""
1379
 
1380
- #: includes/class-mla-main.php:2480
1381
  msgid "File type"
1382
  msgstr ""
1383
 
1384
- #: includes/class-mla-main.php:2481
1385
  msgid "Upload date"
1386
  msgstr ""
1387
 
1388
- #: includes/class-mla-main.php:2485
1389
  msgid "Dimensions"
1390
  msgstr ""
1391
 
1392
- #: includes/class-mla-main.php:2489
1393
  msgid "required"
1394
  msgstr ""
1395
 
1396
- #: includes/class-mla-main.php:2493
1397
  msgid "Must be unique; will be validated."
1398
  msgstr ""
1399
 
1400
- #: includes/class-mla-main.php:2496
1401
  msgid "Alternate text for the image, e.g. &#8220;The Mona Lisa&#8221;"
1402
  msgstr ""
1403
 
1404
- #: includes/class-mla-main.php:2504
1405
  msgid "ID, type and title of parent, if any."
1406
  msgstr ""
1407
 
1408
- #: includes/class-mla-main.php:2507
1409
  msgid "File URL"
1410
  msgstr ""
1411
 
1412
- #: includes/class-mla-main.php:2509
1413
  msgid "Location of the uploaded file."
1414
  msgstr ""
1415
 
1416
- #: includes/class-mla-main.php:2510
1417
  msgid "Image Metadata"
1418
  msgstr ""
1419
 
1420
- #: includes/class-mla-main.php:2545
1421
  msgid "You are not allowed to move this item out of the Trash."
1422
  msgstr ""
1423
 
1424
  #. translators: 1: ERROR tag 2: post ID
1425
- #: includes/class-mla-main.php:2553
1426
  #, php-format
1427
  msgid "%1$s: Item %2$d could NOT be restored from Trash."
1428
  msgstr ""
1429
 
1430
  #. translators: 1: post ID
1431
- #: includes/class-mla-main.php:2568
1432
  #, php-format
1433
  msgid "Item %1$d restored from Trash."
1434
  msgstr ""
1435
 
1436
- #: includes/class-mla-main.php:2585
1437
  msgid "You are not allowed to move this item to the Trash."
1438
  msgstr ""
1439
 
1440
  #. translators: 1: ERROR tag 2: post ID
1441
- #: includes/class-mla-main.php:2593
1442
  #, php-format
1443
  msgid "%1$s: Item %2$d could NOT be moved to Trash."
1444
  msgstr ""
@@ -1461,11 +1465,6 @@ msgstr ""
1461
  msgid "%1$s %2$d"
1462
  msgstr ""
1463
 
1464
- #: includes/class-mla-media-modal.php:413
1465
- msgctxt "tag delimiter"
1466
- msgid ","
1467
- msgstr ""
1468
-
1469
  #: includes/class-mla-media-modal.php:518
1470
  msgid "Search Box"
1471
  msgstr ""
@@ -1482,8 +1481,8 @@ msgstr ""
1482
  #. translators: %s: add new View
1483
  #. translators: %s: add new Upload MIME Type
1484
  #: includes/class-mla-media-modal.php:860 includes/class-mla-objects.php:46
1485
- #: includes/class-mla-objects.php:76 includes/class-mla-settings.php:1739
1486
- #: includes/class-mla-settings.php:2205
1487
  #, php-format
1488
  msgid "Add New %1$s"
1489
  msgstr ""
@@ -1492,10 +1491,6 @@ msgstr ""
1492
  msgid "Choose from the most used tags"
1493
  msgstr ""
1494
 
1495
- #: includes/class-mla-media-modal.php:898
1496
- msgid "Not Supported"
1497
- msgstr ""
1498
-
1499
  #: includes/class-mla-media-modal.php:1199
1500
  #: includes/class-mla-media-modal.php:1215
1501
  msgid "Search Terms"
@@ -1521,6 +1516,10 @@ msgstr ""
1521
  msgid "Any term"
1522
  msgstr ""
1523
 
 
 
 
 
1524
  #: includes/class-mla-mime-types.php:364
1525
  msgctxt "post_mime_types"
1526
  msgid "Manage"
@@ -1563,8 +1562,8 @@ msgstr ""
1563
 
1564
  #: includes/class-mla-mime-types.php:953
1565
  #: includes/class-mla-mime-types.php:1041
1566
- #: includes/class-mla-mime-types.php:1052 includes/class-mla-settings.php:1483
1567
- #: includes/class-mla-settings.php:1740
1568
  msgid "Slug"
1569
  msgstr ""
1570
 
@@ -1618,63 +1617,63 @@ msgstr ""
1618
  msgid "%1$s: Did not find view \"%2$s\""
1619
  msgstr ""
1620
 
1621
- #: includes/class-mla-mime-types.php:1454
1622
- msgctxt "upload_list_table_view_singular"
1623
  msgid "All"
1624
  msgstr ""
1625
 
1626
- #: includes/class-mla-mime-types.php:1455
1627
- msgctxt "upload_list_table_view_plural"
1628
  msgid "All"
1629
  msgstr ""
1630
 
1631
  #: includes/class-mla-mime-types.php:1458
1632
- msgctxt "upload_list_table_view_singular"
1633
  msgid "Active"
1634
  msgstr ""
1635
 
1636
  #: includes/class-mla-mime-types.php:1459
1637
- msgctxt "upload_list_table_view_plural"
1638
  msgid "Active"
1639
  msgstr ""
1640
 
1641
  #: includes/class-mla-mime-types.php:1462
1642
- msgctxt "upload_list_table_view_singular"
1643
  msgid "Inactive"
1644
  msgstr ""
1645
 
1646
  #: includes/class-mla-mime-types.php:1463
1647
- msgctxt "upload_list_table_view_plural"
1648
  msgid "Inactive"
1649
  msgstr ""
1650
 
1651
  #: includes/class-mla-mime-types.php:1466
1652
- msgctxt "upload_list_table_view_singular"
1653
  msgid "WordPress"
1654
  msgstr ""
1655
 
1656
  #: includes/class-mla-mime-types.php:1467
1657
- msgctxt "upload_list_table_view_plural"
1658
  msgid "WordPress"
1659
  msgstr ""
1660
 
1661
  #: includes/class-mla-mime-types.php:1470
1662
- msgctxt "upload_list_table_view_singular"
1663
  msgid "MLA"
1664
  msgstr ""
1665
 
1666
  #: includes/class-mla-mime-types.php:1471
1667
- msgctxt "upload_list_table_view_plural"
1668
  msgid "MLA"
1669
  msgstr ""
1670
 
1671
  #: includes/class-mla-mime-types.php:1474
1672
- msgctxt "upload_list_table_view_singular"
1673
  msgid "Custom"
1674
  msgstr ""
1675
 
1676
  #: includes/class-mla-mime-types.php:1475
1677
- msgctxt "upload_list_table_view_plural"
1678
  msgid "Custom"
1679
  msgstr ""
1680
 
@@ -1693,8 +1692,9 @@ msgstr ""
1693
 
1694
  #: includes/class-mla-mime-types.php:1988
1695
  #: includes/class-mla-mime-types.php:2114
1696
- #: includes/class-mla-mime-types.php:2125
1697
- msgid "extension"
 
1698
  msgstr ""
1699
 
1700
  #. translators: 1: ERROR tag 2: slug
@@ -1874,7 +1874,7 @@ msgstr ""
1874
  msgid "tpls/mla-option-templates.tpl not found"
1875
  msgstr ""
1876
 
1877
- #: includes/class-mla-options.php:441 includes/class-mla-options.php:1690
1878
  msgid "Attachment Categories"
1879
  msgstr ""
1880
 
@@ -1882,7 +1882,7 @@ msgstr ""
1882
  msgid "Check this option to add support for Attachment Categories."
1883
  msgstr ""
1884
 
1885
- #: includes/class-mla-options.php:448 includes/class-mla-options.php:1705
1886
  msgid "Attachment Tags"
1887
  msgstr ""
1888
 
@@ -1890,7 +1890,7 @@ msgstr ""
1890
  msgid "Check this option to add support for Attachment Tags."
1891
  msgstr ""
1892
 
1893
- #: includes/class-mla-options.php:455 includes/class-mla-settings.php:1325
1894
  msgid "Where-used Reporting"
1895
  msgstr ""
1896
 
@@ -1948,7 +1948,7 @@ msgid ""
1948
  "Cached."
1949
  msgstr ""
1950
 
1951
- #: includes/class-mla-options.php:508 includes/class-mla-settings.php:1325
1952
  msgid "Taxonomy Support"
1953
  msgstr ""
1954
 
@@ -1981,12 +1981,12 @@ msgid ""
1981
  msgstr ""
1982
 
1983
  #: includes/class-mla-options.php:523 includes/class-mla-options.php:704
1984
- #: includes/class-mla-settings.php:1357 includes/class-mla-settings.php:1358
1985
  msgid "For complete documentation"
1986
  msgstr ""
1987
 
1988
  #: includes/class-mla-options.php:523 includes/class-mla-options.php:704
1989
- #: includes/class-mla-settings.php:1357 includes/class-mla-settings.php:1358
1990
  msgid "click here"
1991
  msgstr ""
1992
 
@@ -2027,7 +2027,7 @@ msgid "Page Title"
2027
  msgstr ""
2028
 
2029
  #: includes/class-mla-options.php:566 includes/class-mla-settings.php:442
2030
- #: includes/class-mla-settings.php:2933
2031
  msgid "Media Library Assistant"
2032
  msgstr ""
2033
 
@@ -2321,7 +2321,7 @@ msgstr ""
2321
 
2322
  #: includes/class-mla-options.php:806 includes/class-mla-options.php:815
2323
  #: includes/class-mla-options.php:830 includes/class-mla-options.php:844
2324
- #: includes/class-mla-options.php:858 includes/class-mla-settings.php:1407
2325
  msgid "Media Manager Default"
2326
  msgstr ""
2327
 
@@ -2339,11 +2339,19 @@ msgstr ""
2339
  msgid "Attachment Display Settings"
2340
  msgstr ""
2341
 
2342
- #. translators: 1: option name, e.g., Alignment, Link To or Size
2343
  #: includes/class-mla-options.php:825 includes/class-mla-options.php:827
2344
  msgid "Alignment"
2345
  msgstr ""
2346
 
 
 
 
 
 
 
 
 
 
2347
  #: includes/class-mla-options.php:830
2348
  msgid "Left"
2349
  msgstr ""
@@ -2356,7 +2364,6 @@ msgstr ""
2356
  msgid "Right"
2357
  msgstr ""
2358
 
2359
- #. translators: 1: option name, e.g., Alignment, Link To or Size
2360
  #: includes/class-mla-options.php:839 includes/class-mla-options.php:841
2361
  msgid "Link To"
2362
  msgstr ""
@@ -2373,7 +2380,6 @@ msgstr ""
2373
  msgid "Custom URL"
2374
  msgstr ""
2375
 
2376
- #. translators: 1: option name, e.g., Alignment, Link To or Size
2377
  #: includes/class-mla-options.php:853 includes/class-mla-options.php:855
2378
  msgid "Size"
2379
  msgstr ""
@@ -2398,7 +2404,11 @@ msgstr ""
2398
  msgid "Default [mla_gallery] Templates and Settings"
2399
  msgstr ""
2400
 
2401
- #: includes/class-mla-options.php:872 includes/class-mla-options.php:916
 
 
 
 
2402
  msgid "Style Template"
2403
  msgstr ""
2404
 
@@ -2409,21 +2419,14 @@ msgstr ""
2409
  msgid "Select the default %1$s for your %2$s shortcodes."
2410
  msgstr ""
2411
 
2412
- #: includes/class-mla-options.php:878 includes/class-mla-options.php:922
2413
- #: includes/class-mla-settings.php:3028 includes/class-mla-settings.php:3039
2414
- #: includes/class-mla-settings.php:3045 includes/class-mla-settings.php:3049
2415
- #: includes/class-mla-settings.php:3077 includes/class-mla-settings.php:3088
2416
- msgid "style template"
2417
- msgstr ""
2418
-
2419
  #: includes/class-mla-options.php:882 includes/class-mla-options.php:926
2420
  msgid "Markup Template"
2421
  msgstr ""
2422
 
2423
  #: includes/class-mla-options.php:888 includes/class-mla-options.php:932
2424
- #: includes/class-mla-settings.php:3117 includes/class-mla-settings.php:3130
2425
- #: includes/class-mla-settings.php:3136 includes/class-mla-settings.php:3140
2426
- #: includes/class-mla-settings.php:3209
2427
  msgid "markup template"
2428
  msgstr ""
2429
 
@@ -2465,11 +2468,59 @@ msgstr ""
2465
  msgid "Enter the number of [mla_gallery] columns; must be a positive integer."
2466
  msgstr ""
2467
 
2468
- #: includes/class-mla-options.php:976
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2469
  msgid "Enable custom field mapping when adding new media"
2470
  msgstr ""
2471
 
2472
- #: includes/class-mla-options.php:979
2473
  msgid ""
2474
  "Check this option to enable mapping when uploading new media (attachments)."
2475
  "<br>&nbsp;&nbsp;Click Save Changes at the bottom of the screen if you change "
@@ -2477,18 +2528,18 @@ msgid ""
2477
  "buttons on the bulk edit, single edit and settings screens."
2478
  msgstr ""
2479
 
2480
- #: includes/class-mla-options.php:983
2481
  msgid "Enable custom field mapping when updating media metadata"
2482
  msgstr ""
2483
 
2484
- #: includes/class-mla-options.php:986 includes/class-mla-options.php:1010
2485
  msgid ""
2486
  "Check this option to enable mapping when media (attachments) metadata is "
2487
  "regenerated,<br>&nbsp;&nbsp;e.g., when the Media/Edit Media \"Edit Image\" "
2488
  "functions are used."
2489
  msgstr ""
2490
 
2491
- #: includes/class-mla-options.php:990
2492
  msgid ""
2493
  "Update the custom field mapping values above, then click Save Changes to "
2494
  "make the updates permanent.<br>You can also make temporary updates and click "
@@ -2496,22 +2547,22 @@ msgid ""
2496
  "saving any rule changes."
2497
  msgstr ""
2498
 
2499
- #: includes/class-mla-options.php:1000
2500
  msgid "Enable IPTC/EXIF Mapping when adding new media"
2501
  msgstr ""
2502
 
2503
- #: includes/class-mla-options.php:1003
2504
  msgid ""
2505
  "Check this option to enable mapping when uploading new media (attachments)."
2506
  "<br>&nbsp;&nbsp;Does NOT affect the operation of the \"Map\" buttons on the "
2507
  "bulk edit, single edit and settings screens."
2508
  msgstr ""
2509
 
2510
- #: includes/class-mla-options.php:1007
2511
  msgid "Enable IPTC/EXIF Mapping when updating media metadata"
2512
  msgstr ""
2513
 
2514
- #: includes/class-mla-options.php:1014
2515
  msgid ""
2516
  "Update the standard field mapping values above, then click <strong>Save "
2517
  "Changes</strong> to make the updates permanent.<br>You can also make "
@@ -2520,13 +2571,13 @@ msgid ""
2520
  "changes."
2521
  msgstr ""
2522
 
2523
- #: includes/class-mla-options.php:1024
2524
  msgid ""
2525
  "Update the taxonomy term mapping values above, then click <strong>Save "
2526
  "Changes</strong> or <strong>Map All Attachments, Taxonomy Terms Now</strong>."
2527
  msgstr ""
2528
 
2529
- #: includes/class-mla-options.php:1034
2530
  msgid ""
2531
  "<strong>Update</strong> individual custom field mapping values above, or "
2532
  "make several updates and click <strong>Save Changes</strong> below to apply "
@@ -2537,617 +2588,607 @@ msgid ""
2537
  "changes."
2538
  msgstr ""
2539
 
2540
- #: includes/class-mla-options.php:1044
2541
  msgid "IPTC/EXIF Mapping help"
2542
  msgstr ""
2543
 
2544
- #: includes/class-mla-options.php:1096
2545
  msgid "Enable View and Post MIME Type Support"
2546
  msgstr ""
2547
 
2548
- #: includes/class-mla-options.php:1099
2549
  msgid ""
2550
  "Check/uncheck this option to enable/disable Post MIME Type Support, then "
2551
  "click <strong>Save Changes</strong> to record the new setting."
2552
  msgstr ""
2553
 
2554
- #: includes/class-mla-options.php:1108
2555
  msgid "Post MIME Types help."
2556
  msgstr ""
2557
 
2558
- #: includes/class-mla-options.php:1111
2559
- msgctxt "post_mime_types_singular"
2560
- msgid "All"
2561
- msgstr ""
2562
-
2563
- #: includes/class-mla-options.php:1112
2564
- msgctxt "post_mime_types_plural"
2565
- msgid "All"
2566
- msgstr ""
2567
-
2568
- #: includes/class-mla-options.php:1117 includes/class-mla-options.php:1171
2569
- #: includes/class-mla-options.php:1180
2570
  msgctxt "post_mime_types_description"
2571
  msgid "Built-in view"
2572
  msgstr ""
2573
 
2574
- #: includes/class-mla-options.php:1120
2575
- msgctxt "post_mime_types_singular"
2576
  msgid "Image"
2577
  msgstr ""
2578
 
2579
- #: includes/class-mla-options.php:1121
2580
- msgctxt "post_mime_types_plural"
2581
  msgid "Images"
2582
  msgstr ""
2583
 
2584
- #: includes/class-mla-options.php:1126
2585
  msgctxt "post_mime_types_description"
2586
  msgid "All image subtypes"
2587
  msgstr ""
2588
 
2589
- #: includes/class-mla-options.php:1129
2590
- msgctxt "post_mime_types_singular"
2591
  msgid "Audio"
2592
  msgstr ""
2593
 
2594
- #: includes/class-mla-options.php:1130
2595
- msgctxt "post_mime_types_plural"
2596
  msgid "Audio"
2597
  msgstr ""
2598
 
2599
- #: includes/class-mla-options.php:1135
2600
  msgctxt "post_mime_types_description"
2601
  msgid "All audio subtypes"
2602
  msgstr ""
2603
 
2604
- #: includes/class-mla-options.php:1138
2605
- msgctxt "post_mime_types_singular"
2606
  msgid "Video"
2607
  msgstr ""
2608
 
2609
- #: includes/class-mla-options.php:1139
2610
- msgctxt "post_mime_types_plural"
2611
  msgid "Video"
2612
  msgstr ""
2613
 
2614
- #: includes/class-mla-options.php:1144
2615
  msgctxt "post_mime_types_description"
2616
  msgid "All video subtypes"
2617
  msgstr ""
2618
 
2619
- #: includes/class-mla-options.php:1147
2620
- msgctxt "post_mime_types_singular"
2621
  msgid "Text"
2622
  msgstr ""
2623
 
2624
- #: includes/class-mla-options.php:1148
2625
- msgctxt "post_mime_types_plural"
2626
  msgid "Text"
2627
  msgstr ""
2628
 
2629
- #: includes/class-mla-options.php:1153
2630
  msgctxt "post_mime_types_description"
2631
  msgid "All text subtypes"
2632
  msgstr ""
2633
 
2634
- #: includes/class-mla-options.php:1156
2635
- msgctxt "post_mime_types_singular"
2636
  msgid "Application"
2637
  msgstr ""
2638
 
2639
- #: includes/class-mla-options.php:1157
2640
- msgctxt "post_mime_types_plural"
2641
  msgid "Applications"
2642
  msgstr ""
2643
 
2644
- #: includes/class-mla-options.php:1162
2645
  msgctxt "post_mime_types_description"
2646
  msgid "All application subtypes"
2647
  msgstr ""
2648
 
2649
- #: includes/class-mla-options.php:1166
2650
- msgctxt "post_mime_types_plural"
2651
  msgid "Unattached"
2652
  msgstr ""
2653
 
2654
- #: includes/class-mla-options.php:1174
2655
- msgctxt "post_mime_types_singular"
2656
  msgid "Trash"
2657
  msgstr ""
2658
 
2659
- #: includes/class-mla-options.php:1175
2660
- msgctxt "post_mime_types_plural"
2661
  msgid "Trash"
2662
  msgstr ""
2663
 
2664
- #: includes/class-mla-options.php:1186
2665
  msgid "Enable Upload MIME Type Support"
2666
  msgstr ""
2667
 
2668
- #: includes/class-mla-options.php:1189
2669
  msgid ""
2670
  "Check/uncheck this option to enable/disable Upload MIME Type Support, then "
2671
  "click <strong>Save Changes</strong> to record the new setting."
2672
  msgstr ""
2673
 
2674
- #: includes/class-mla-options.php:1198
2675
  msgid "Upload MIME Types help."
2676
  msgstr ""
2677
 
2678
- #: includes/class-mla-options.php:1203
2679
  msgid "Enable MLA File Type Icons Support"
2680
  msgstr ""
2681
 
2682
- #: includes/class-mla-options.php:1206
2683
  msgid ""
2684
  "Check/uncheck this option to enable/disable MLA File Type Icons Support, "
2685
  "then click <strong>Save Changes</strong> to record the new setting."
2686
  msgstr ""
2687
 
2688
- #: includes/class-mla-options.php:1258 includes/class-mla-options.php:1280
2689
- #: includes/class-mla-options.php:1322
2690
  msgid "no templates exist"
2691
  msgstr ""
2692
 
2693
- #: includes/class-mla-options.php:1266
2694
  msgid "not found"
2695
  msgstr ""
2696
 
2697
  #. translators: 1: ERROR tag 2: option name 3: action, e.g., update, delete, reset
2698
- #: includes/class-mla-options.php:1656 includes/class-mla-options.php:1833
2699
- #: includes/class-mla-options.php:1909 includes/class-mla-options.php:3666
2700
- #: includes/class-mla-options.php:4952
2701
  #, php-format
2702
  msgid "%1$s: Custom %2$s unknown action \"%3$s\""
2703
  msgstr ""
2704
 
2705
- #: includes/class-mla-options.php:1747
2706
  msgid "Support"
2707
  msgstr ""
2708
 
2709
- #: includes/class-mla-options.php:1748
2710
  msgid "Inline Edit"
2711
  msgstr ""
2712
 
2713
- #: includes/class-mla-options.php:1749
2714
  msgid "Term Search"
2715
  msgstr ""
2716
 
2717
- #: includes/class-mla-options.php:1750
2718
  msgid "Checklist"
2719
  msgstr ""
2720
 
2721
- #: includes/class-mla-options.php:1751
2722
  msgid "Checked On Top"
2723
  msgstr ""
2724
 
2725
- #: includes/class-mla-options.php:1752
2726
  msgid "List Filter"
2727
  msgstr ""
2728
 
2729
- #: includes/class-mla-options.php:1753
2730
  msgid "Taxonomy"
2731
  msgstr ""
2732
 
2733
  #. translators: 1: taxonomy name
2734
- #: includes/class-mla-options.php:1772
2735
  #, php-format
2736
  msgid "List Filter ignored; %1$s not supported."
2737
  msgstr ""
2738
 
2739
  #. translators: 1: taxonomy name
2740
- #: includes/class-mla-options.php:1779
2741
  #, php-format
2742
  msgid "Inline Edit ignored; %1$s not supported."
2743
  msgstr ""
2744
 
2745
  #. translators: 1: taxonomy name
2746
- #: includes/class-mla-options.php:1787
2747
  #, php-format
2748
  msgid "Term Search ignored; %1$s not supported."
2749
  msgstr ""
2750
 
2751
  #. translators: 1: taxonomy name
2752
- #: includes/class-mla-options.php:1797
2753
  #, php-format
2754
  msgid "Checklist ignored; %1$s not supported."
2755
  msgstr ""
2756
 
2757
  #. translators: 1: taxonomy name
2758
- #: includes/class-mla-options.php:1805
2759
  #, php-format
2760
  msgid "Checked On Top ignored; %1$s not supported."
2761
  msgstr ""
2762
 
2763
  #. translators: 1: option name, e.g., taxonomy_support
2764
- #: includes/class-mla-options.php:1823 includes/class-mla-options.php:1899
2765
  #, php-format
2766
  msgid "Update custom %1$s"
2767
  msgstr ""
2768
 
2769
  #. translators: 1: option name, e.g., taxonomy_support
2770
- #: includes/class-mla-options.php:1830 includes/class-mla-options.php:1906
2771
- #: includes/class-mla-options.php:4945
2772
  #, php-format
2773
  msgid "Reset custom %1$s"
2774
  msgstr ""
2775
 
2776
- #: includes/class-mla-options.php:1859
2777
  #: includes/mla-main-search-box-template.php:38
2778
  #: includes/mla-media-modal-js-template.php:24
2779
  msgid "and"
2780
  msgstr ""
2781
 
2782
- #: includes/class-mla-options.php:1861
2783
  #: includes/mla-main-search-box-template.php:40
2784
  #: includes/mla-media-modal-js-template.php:28
2785
  msgid "or"
2786
  msgstr ""
2787
 
2788
- #: includes/class-mla-options.php:1866 includes/class-mla-settings.php:2353
2789
- #: includes/class-mla-settings.php:2386 includes/class-mla-settings.php:2412
2790
- #: includes/class-mla-settings.php:2447 includes/class-mla-settings.php:2504
2791
- #: includes/class-mla-settings.php:2554
2792
  #: includes/mla-main-search-box-template.php:43
2793
  #: includes/mla-media-modal-js-template.php:36
2794
  msgid "Name"
2795
  msgstr ""
2796
 
2797
- #: includes/class-mla-options.php:1878
2798
  #: includes/mla-main-search-box-template.php:47
2799
  #: includes/mla-media-modal-js-template.php:53
2800
  msgid "Terms"
2801
  msgstr ""
2802
 
2803
- #: includes/class-mla-options.php:2998 includes/class-mla-options.php:3126
2804
- #: includes/class-mla-options.php:4107 includes/class-mla-options.php:4138
2805
- #: includes/class-mla-settings.php:1805
2806
  msgid "None (select a value)"
2807
  msgstr ""
2808
 
2809
- #: includes/class-mla-options.php:3133
2810
  msgid "Metadata (see below)"
2811
  msgstr ""
2812
 
2813
- #: includes/class-mla-options.php:3140
2814
  msgid "Template (see below)"
2815
  msgstr ""
2816
 
2817
  #. translators: 1: ERROR tag 2: custom field name
2818
- #: includes/class-mla-options.php:3207 includes/class-mla-options.php:4412
2819
  #, php-format
2820
  msgid "%1$s: New field %2$s already exists."
2821
  msgstr ""
2822
 
2823
  #. translators: 1: custom field name
2824
- #: includes/class-mla-options.php:3212 includes/class-mla-options.php:4417
2825
  #, php-format
2826
  msgid "Adding new field %1$s."
2827
  msgstr ""
2828
 
2829
  #. translators: 1: custom field name
2830
- #: includes/class-mla-options.php:3220 includes/class-mla-options.php:4425
2831
  #, php-format
2832
  msgid "Adding new rule for %1$s."
2833
  msgstr ""
2834
 
2835
  #. translators: 1: custom field name
2836
- #: includes/class-mla-options.php:3248 includes/class-mla-options.php:4287
2837
- #: includes/class-mla-options.php:4448
2838
  #, php-format
2839
  msgid "Deleting rule for %1$s."
2840
  msgstr ""
2841
 
2842
  #. translators: 1: custom field name 2: attribute 3: old value 4: new value
2843
- #: includes/class-mla-options.php:3271 includes/class-mla-options.php:3292
2844
- #: includes/class-mla-options.php:3342 includes/class-mla-options.php:3349
2845
- #: includes/class-mla-options.php:4204 includes/class-mla-options.php:4211
2846
- #: includes/class-mla-options.php:4218 includes/class-mla-options.php:4312
2847
- #: includes/class-mla-options.php:4319 includes/class-mla-options.php:4354
2848
- #: includes/class-mla-options.php:4361 includes/class-mla-options.php:4458
2849
- #: includes/class-mla-options.php:4465
2850
  #, php-format
2851
  msgid "%1$s changing %2$s from %3$s to %4$s."
2852
  msgstr ""
2853
 
2854
- #: includes/class-mla-options.php:3271 includes/class-mla-options.php:3623
2855
  msgid "Data Source"
2856
  msgstr ""
2857
 
2858
- #: includes/class-mla-options.php:3277 includes/class-mla-options.php:4238
2859
- #: includes/class-mla-options.php:4339 includes/class-mla-options.php:4485
2860
  msgid "Replace to Keep"
2861
  msgstr ""
2862
 
2863
- #: includes/class-mla-options.php:3280 includes/class-mla-options.php:4241
2864
- #: includes/class-mla-options.php:4342 includes/class-mla-options.php:4488
2865
  msgid "Keep to Replace"
2866
  msgstr ""
2867
 
2868
  #. translators: 1: custom field name 2: attribute 3: old value 'to' new value
2869
- #: includes/class-mla-options.php:3285 includes/class-mla-options.php:3306
2870
- #: includes/class-mla-options.php:3320 includes/class-mla-options.php:3334
2871
- #: includes/class-mla-options.php:3363 includes/class-mla-options.php:4232
2872
- #: includes/class-mla-options.php:4246 includes/class-mla-options.php:4333
2873
- #: includes/class-mla-options.php:4347 includes/class-mla-options.php:4479
2874
- #: includes/class-mla-options.php:4493
2875
  #, php-format
2876
  msgid "%1$s changing %2$s value from %3$s."
2877
  msgstr ""
2878
 
2879
- #: includes/class-mla-options.php:3285 includes/class-mla-options.php:3624
2880
- #: includes/class-mla-options.php:4246 includes/class-mla-options.php:4347
2881
- #: includes/class-mla-options.php:4493 includes/class-mla-options.php:4619
2882
- #: includes/class-mla-options.php:4705 includes/class-mla-options.php:4843
2883
  msgid "Existing Text"
2884
  msgstr ""
2885
 
2886
- #: includes/class-mla-options.php:3292 includes/class-mla-options.php:3625
2887
  msgid "Format"
2888
  msgstr ""
2889
 
2890
- #: includes/class-mla-options.php:3298 includes/class-mla-options.php:3312
2891
- #: includes/class-mla-options.php:3326 includes/class-mla-options.php:3355
2892
  msgid "unchecked to checked"
2893
  msgstr ""
2894
 
2895
- #: includes/class-mla-options.php:3301 includes/class-mla-options.php:3315
2896
- #: includes/class-mla-options.php:3329 includes/class-mla-options.php:3358
2897
  msgid "checked to unchecked"
2898
  msgstr ""
2899
 
2900
- #: includes/class-mla-options.php:3306 includes/class-mla-options.php:3626
2901
  msgid "MLA Column"
2902
  msgstr ""
2903
 
2904
- #: includes/class-mla-options.php:3342
2905
  msgid "Metavalue name"
2906
  msgstr ""
2907
 
2908
- #: includes/class-mla-options.php:3349 includes/class-mla-options.php:3457
2909
- #: includes/class-mla-options.php:3559 includes/class-mla-options.php:3603
2910
  msgid "Option"
2911
  msgstr ""
2912
 
2913
- #: includes/class-mla-options.php:3363 includes/class-mla-options.php:3469
2914
- #: includes/class-mla-options.php:3571 includes/class-mla-options.php:3615
2915
  msgid "Delete NULL values"
2916
  msgstr ""
2917
 
2918
- #: includes/class-mla-options.php:3402 includes/class-mla-options.php:4717
2919
  msgid "No Custom Field Mapping Rules Defined"
2920
  msgstr ""
2921
 
2922
- #: includes/class-mla-options.php:3441 includes/class-mla-options.php:3544
2923
- #: includes/class-mla-options.php:3588 includes/class-mla-options.php:4594
2924
- #: includes/class-mla-options.php:4644 includes/class-mla-options.php:4763
2925
- #: includes/class-mla-options.php:4805 includes/class-mla-options.php:4830
2926
  msgid "Keep"
2927
  msgstr ""
2928
 
2929
- #: includes/class-mla-options.php:3445 includes/class-mla-options.php:3548
2930
- #: includes/class-mla-options.php:3592
2931
  msgid "Native"
2932
  msgstr ""
2933
 
2934
- #: includes/class-mla-options.php:3447 includes/class-mla-options.php:3550
2935
- #: includes/class-mla-options.php:3594
2936
  msgid "Commas"
2937
  msgstr ""
2938
 
2939
- #: includes/class-mla-options.php:3449 includes/class-mla-options.php:3552
2940
- #: includes/class-mla-options.php:3596
2941
  msgid "Raw"
2942
  msgstr ""
2943
 
2944
- #: includes/class-mla-options.php:3459 includes/class-mla-options.php:3561
2945
- #: includes/class-mla-options.php:3605
2946
  msgid "Text"
2947
  msgstr ""
2948
 
2949
- #: includes/class-mla-options.php:3461 includes/class-mla-options.php:3563
2950
- #: includes/class-mla-options.php:3607
2951
  msgid "Single"
2952
  msgstr ""
2953
 
2954
- #: includes/class-mla-options.php:3463 includes/class-mla-options.php:3565
2955
- #: includes/class-mla-options.php:3609
2956
  msgid "Export"
2957
  msgstr ""
2958
 
2959
- #: includes/class-mla-options.php:3465 includes/class-mla-options.php:3567
2960
- #: includes/class-mla-options.php:3611
2961
  msgid "Array"
2962
  msgstr ""
2963
 
2964
- #: includes/class-mla-options.php:3467 includes/class-mla-options.php:3569
2965
- #: includes/class-mla-options.php:3613
2966
  msgid "Multi"
2967
  msgstr ""
2968
 
2969
- #: includes/class-mla-options.php:3470 includes/class-mla-options.php:4766
2970
  msgid "Delete Rule"
2971
  msgstr ""
2972
 
2973
- #: includes/class-mla-options.php:3471 includes/class-mla-options.php:4767
2974
  msgid "Delete Rule AND Field"
2975
  msgstr ""
2976
 
2977
- #: includes/class-mla-options.php:3472 includes/class-mla-options.php:4768
2978
  msgid "Update Rule"
2979
  msgstr ""
2980
 
2981
- #: includes/class-mla-options.php:3473 includes/class-mla-options.php:4769
2982
  #: includes/class-mla-settings.php:706 includes/class-mla-settings.php:837
2983
  msgid "Map All Attachments"
2984
  msgstr ""
2985
 
2986
- #: includes/class-mla-options.php:3539 includes/class-mla-options.php:4794
2987
  msgid "Add a new Mapping Rule"
2988
  msgstr ""
2989
 
2990
- #: includes/class-mla-options.php:3572 includes/class-mla-options.php:4808
2991
  msgid "Add Rule"
2992
  msgstr ""
2993
 
2994
- #: includes/class-mla-options.php:3573 includes/class-mla-options.php:4809
2995
  msgid "Add Rule and Map All Attachments"
2996
  msgstr ""
2997
 
2998
- #: includes/class-mla-options.php:3583 includes/class-mla-options.php:4819
2999
  msgid "Add a new Field and Mapping Rule"
3000
  msgstr ""
3001
 
3002
- #: includes/class-mla-options.php:3616 includes/class-mla-options.php:4833
3003
  msgid "Add Field"
3004
  msgstr ""
3005
 
3006
- #: includes/class-mla-options.php:3617 includes/class-mla-options.php:4834
3007
  msgid "Add Field and Map All Attachments"
3008
  msgstr ""
3009
 
3010
- #: includes/class-mla-options.php:3622 includes/class-mla-options.php:4204
3011
- #: includes/class-mla-options.php:4615 includes/class-mla-options.php:4701
3012
- #: includes/class-mla-options.php:4839
3013
  msgid "Field Title"
3014
  msgstr ""
3015
 
3016
- #: includes/class-mla-options.php:3647
3017
  msgid "Custom field mapping rules updated."
3018
  msgstr ""
3019
 
3020
- #: includes/class-mla-options.php:3649
3021
  msgid "Custom field mapping rules update failed."
3022
  msgstr ""
3023
 
3024
- #: includes/class-mla-options.php:3652 includes/class-mla-settings.php:751
3025
  #: includes/class-mla-settings.php:757
3026
  msgid "Custom field no mapping rule changes detected."
3027
  msgstr ""
3028
 
3029
- #: includes/class-mla-options.php:3660
3030
  msgid "Custom field mapping settings saved."
3031
  msgstr ""
3032
 
3033
- #: includes/class-mla-options.php:3662
3034
  msgid "Custom field mapping settings reset failed."
3035
  msgstr ""
3036
 
3037
  #. translators: 1: ERROR tag 2: custom field name
3038
- #: includes/class-mla-options.php:4192
3039
  #, php-format
3040
  msgid "%1$s: No old values for %2$s."
3041
  msgstr ""
3042
 
3043
- #: includes/class-mla-options.php:4211 includes/class-mla-options.php:4312
3044
- #: includes/class-mla-options.php:4458 includes/class-mla-options.php:4616
3045
- #: includes/class-mla-options.php:4702 includes/class-mla-options.php:4840
3046
  msgid "IPTC Value"
3047
  msgstr ""
3048
 
3049
- #: includes/class-mla-options.php:4218 includes/class-mla-options.php:4319
3050
- #: includes/class-mla-options.php:4465
3051
  msgid "EXIF Value"
3052
  msgstr ""
3053
 
3054
- #: includes/class-mla-options.php:4224 includes/class-mla-options.php:4325
3055
- #: includes/class-mla-options.php:4471
3056
  msgid "EXIF to IPTC"
3057
  msgstr ""
3058
 
3059
- #: includes/class-mla-options.php:4227 includes/class-mla-options.php:4328
3060
- #: includes/class-mla-options.php:4474
3061
  msgid "IPTC to EXIF"
3062
  msgstr ""
3063
 
3064
- #: includes/class-mla-options.php:4232 includes/class-mla-options.php:4333
3065
- #: includes/class-mla-options.php:4479 includes/class-mla-options.php:4618
3066
- #: includes/class-mla-options.php:4704 includes/class-mla-options.php:4842
3067
  msgid "Priority"
3068
  msgstr ""
3069
 
3070
- #: includes/class-mla-options.php:4354 includes/class-mla-options.php:4706
3071
  msgid "Delimiter(s)"
3072
  msgstr ""
3073
 
3074
- #: includes/class-mla-options.php:4590 includes/class-mla-options.php:4640
3075
- #: includes/class-mla-options.php:4759 includes/class-mla-options.php:4801
3076
- #: includes/class-mla-options.php:4826
3077
  msgid "IPTC"
3078
  msgstr ""
3079
 
3080
- #: includes/class-mla-options.php:4592 includes/class-mla-options.php:4642
3081
- #: includes/class-mla-options.php:4761 includes/class-mla-options.php:4803
3082
- #: includes/class-mla-options.php:4828
3083
  msgid "EXIF"
3084
  msgstr ""
3085
 
3086
- #: includes/class-mla-options.php:4617 includes/class-mla-options.php:4703
3087
- #: includes/class-mla-options.php:4841
3088
  msgid "EXIF/Template Value"
3089
  msgstr ""
3090
 
3091
  #. translators: 1: ERROR tag 2: option name
3092
- #: includes/class-mla-options.php:4851
3093
  #, php-format
3094
  msgid "%1$s: Render unknown custom %2$s."
3095
  msgstr ""
3096
 
3097
  #. translators: 1: ERROR tag 2: option name
3098
- #: includes/class-mla-options.php:4895
3099
  #, php-format
3100
  msgid "%1$s: Update/delete unknown custom %2$s."
3101
  msgstr ""
3102
 
3103
- #: includes/class-mla-options.php:4901
3104
  msgid "IPTC/EXIF mapping settings updated."
3105
  msgstr ""
3106
 
3107
- #: includes/class-mla-options.php:4903
3108
  msgid "IPTC/EXIF settings update failed."
3109
  msgstr ""
3110
 
3111
- #: includes/class-mla-options.php:4906 includes/class-mla-settings.php:885
3112
  #: includes/class-mla-settings.php:891
3113
  msgid "IPTC/EXIF no mapping changes detected."
3114
  msgstr ""
3115
 
3116
  #. translators: 1: field type
3117
- #: includes/class-mla-options.php:4917 includes/class-mla-options.php:4927
3118
- #: includes/class-mla-options.php:4937 includes/class-mla-settings.php:3215
3119
  #, php-format
3120
  msgid "%1$s settings saved."
3121
  msgstr ""
3122
 
3123
- #: includes/class-mla-options.php:4917 includes/class-mla-options.php:4920
3124
- #: includes/class-mla-settings.php:3461 includes/class-mla-settings.php:3500
3125
- #: includes/class-mla-settings.php:3503
3126
  msgid "Standard field"
3127
  msgstr ""
3128
 
3129
  #. translators: 1: ERROR tag 2: field type
3130
- #: includes/class-mla-options.php:4920 includes/class-mla-options.php:4930
3131
- #: includes/class-mla-options.php:4940
3132
  #, php-format
3133
  msgid "%1$s: IPTC/EXIF %2$s settings update failed."
3134
  msgstr ""
3135
 
3136
- #: includes/class-mla-options.php:4927 includes/class-mla-options.php:4930
3137
- #: includes/class-mla-settings.php:3532 includes/class-mla-settings.php:3571
3138
- #: includes/class-mla-settings.php:3574
3139
  msgid "Taxonomy term"
3140
  msgstr ""
3141
 
3142
- #: includes/class-mla-options.php:4937 includes/class-mla-options.php:4940
3143
- #: includes/class-mla-settings.php:3361 includes/class-mla-settings.php:3364
3144
- #: includes/class-mla-settings.php:3618 includes/class-mla-settings.php:3657
3145
- #: includes/class-mla-settings.php:3660
3146
  msgid "Custom field"
3147
  msgstr ""
3148
 
3149
  #. translators: 1: ERROR tag 2: option name, e.g., taxonomy_support
3150
- #: includes/class-mla-options.php:4948
3151
  #, php-format
3152
  msgid "%1$s: Reset unknown custom %2$s"
3153
  msgstr ""
@@ -3168,8 +3209,9 @@ msgstr ""
3168
  msgid "Reprocessed"
3169
  msgstr ""
3170
 
3171
- #: includes/class-mla-settings.php:442
3172
- msgid "Media Library Assistant Settings"
 
3173
  msgstr ""
3174
 
3175
  #: includes/class-mla-settings.php:461
@@ -3192,27 +3234,23 @@ msgstr ""
3192
  msgid "No upload slug found"
3193
  msgstr ""
3194
 
3195
- #: includes/class-mla-settings.php:702 includes/class-mla-settings.php:2713
3196
- #: includes/class-mla-settings.php:2717
3197
  msgid "Map All Rules, All Attachments Now"
3198
  msgstr ""
3199
 
3200
- #: includes/class-mla-settings.php:826 includes/class-mla-settings.php:2846
3201
  msgid "Map All Attachments, Standard Fields Now"
3202
  msgstr ""
3203
 
3204
- #: includes/class-mla-settings.php:829 includes/class-mla-settings.php:2849
3205
  msgid "Map All Attachments, Taxonomy Terms Now"
3206
  msgstr ""
3207
 
3208
- #: includes/class-mla-settings.php:832 includes/class-mla-settings.php:2852
3209
  msgid "Map All Attachments, Custom Fields Now"
3210
  msgstr ""
3211
 
3212
- #: includes/class-mla-settings.php:955 includes/class-mla-settings.php:2934
3213
- msgid "Settings"
3214
- msgstr ""
3215
-
3216
  #. translators: 1: ERROR tag 2: function name 3: option type, e.g., radio, select, text
3217
  #: includes/class-mla-settings.php:1003 includes/class-mla-settings.php:1035
3218
  #: includes/class-mla-settings.php:1173
@@ -3221,7 +3259,8 @@ msgctxt "error_log"
3221
  msgid "%1$s: %2$s unknown type = \"%3$s\""
3222
  msgstr ""
3223
 
3224
- #: includes/class-mla-settings.php:1071 includes/class-mla-settings.php:1331
 
3225
  msgid "Go to Top"
3226
  msgstr ""
3227
 
@@ -3237,8 +3276,8 @@ msgstr ""
3237
  msgid "Uploads"
3238
  msgstr ""
3239
 
3240
- #: includes/class-mla-settings.php:1225 includes/class-mla-settings.php:3215
3241
- #: includes/class-mla-settings.php:3218
3242
  msgid "MLA Gallery"
3243
  msgstr ""
3244
 
@@ -3250,12 +3289,16 @@ msgstr ""
3250
  msgid "Documentation"
3251
  msgstr ""
3252
 
3253
- #: includes/class-mla-settings.php:1323
 
 
 
 
3254
  msgid "General Processing Options"
3255
  msgstr ""
3256
 
3257
  #. translators: 1: - 4: page subheader values
3258
- #: includes/class-mla-settings.php:1325
3259
  #, php-format
3260
  msgid ""
3261
  "In this tab you can find a number of options for controlling the "
@@ -3264,44 +3307,45 @@ msgid ""
3264
  "any changes you make."
3265
  msgstr ""
3266
 
3267
- #: includes/class-mla-settings.php:1325
3268
  msgid "Media/Assistant Table Defaults"
3269
  msgstr ""
3270
 
3271
- #: includes/class-mla-settings.php:1325
3272
  msgid "Media Manager Enhancements"
3273
  msgstr ""
3274
 
3275
- #: includes/class-mla-settings.php:1326 includes/class-mla-settings.php:1684
3276
- #: includes/class-mla-settings.php:1737 includes/class-mla-settings.php:2153
3277
- #: includes/class-mla-settings.php:2203 includes/class-mla-settings.php:2289
3278
- #: includes/class-mla-settings.php:2712 includes/class-mla-settings.php:2715
3279
- #: includes/class-mla-settings.php:2854 includes/class-mla-settings.php:2856
 
3280
  msgid "Save Changes"
3281
  msgstr ""
3282
 
3283
- #: includes/class-mla-settings.php:1327
3284
  msgid "Export ALL Settings"
3285
  msgstr ""
3286
 
3287
- #: includes/class-mla-settings.php:1328
3288
  msgid "Delete General options and restore default settings"
3289
  msgstr ""
3290
 
3291
- #: includes/class-mla-settings.php:1332
3292
  msgid "Support Our Work"
3293
  msgstr ""
3294
 
3295
- #: includes/class-mla-settings.php:1333 includes/class-mla-settings.php:1336
3296
  msgid "Donate to FTJ"
3297
  msgstr ""
3298
 
3299
- #: includes/class-mla-settings.php:1334
3300
  msgid "Donate"
3301
  msgstr ""
3302
 
3303
  #. translators: 1: donation hyperlink
3304
- #: includes/class-mla-settings.php:1336
3305
  #, php-format
3306
  msgid ""
3307
  "This plugin was inspired by my work on the WordPress web site for our "
@@ -3310,27 +3354,27 @@ msgid ""
3310
  "our work. Thank you!"
3311
  msgstr ""
3312
 
3313
- #: includes/class-mla-settings.php:1336
3314
  msgid "tax-deductible donation"
3315
  msgstr ""
3316
 
3317
- #: includes/class-mla-settings.php:1357
3318
  msgid "enhanced version of the WordPress [gallery] shortcode."
3319
  msgstr ""
3320
 
3321
- #: includes/class-mla-settings.php:1358
3322
  msgid "enhanced version of the WordPress Tag Cloud."
3323
  msgstr ""
3324
 
3325
- #: includes/class-mla-settings.php:1370
3326
  msgid "Shortcodes made available by this plugin"
3327
  msgstr ""
3328
 
3329
- #: includes/class-mla-settings.php:1478
3330
  msgid "Edit View"
3331
  msgstr ""
3332
 
3333
- #: includes/class-mla-settings.php:1484 includes/class-mla-settings.php:1741
3334
  msgid ""
3335
  "The &#8220;slug&#8221; is the URL-friendly, unique key for the view. It must "
3336
  "be all lowercase and contain only letters, numbers, periods (.), slashes (/) "
@@ -3339,25 +3383,25 @@ msgid ""
3339
  "MIME</strong> type, e.g., &#8220;image&#8221; or &#8220;image/jpeg&#8221;."
3340
  msgstr ""
3341
 
3342
- #: includes/class-mla-settings.php:1485 includes/class-mla-settings.php:1742
3343
  msgid "Singular Label"
3344
  msgstr ""
3345
 
3346
- #: includes/class-mla-settings.php:1486 includes/class-mla-settings.php:1743
3347
  msgid "Plural Label"
3348
  msgstr ""
3349
 
3350
- #: includes/class-mla-settings.php:1487 includes/class-mla-settings.php:1744
3351
  msgid ""
3352
  "The labels, e.g., &#8220;Image&#8221; and &#8220;Images&#8221; are used for "
3353
  "column headers and other display purposes."
3354
  msgstr ""
3355
 
3356
- #: includes/class-mla-settings.php:1488 includes/class-mla-settings.php:1745
3357
  msgid "Specification"
3358
  msgstr ""
3359
 
3360
- #: includes/class-mla-settings.php:1489 includes/class-mla-settings.php:1746
3361
  msgid ""
3362
  "If the MIME type specification differs from the slug, enter it here. You may "
3363
  "include multiple MIME types, e.g., &#8220;audio,video&#8221; and/or wildcard "
@@ -3365,60 +3409,60 @@ msgid ""
3365
  "MIME Type box is checked."
3366
  msgstr ""
3367
 
3368
- #: includes/class-mla-settings.php:1490 includes/class-mla-settings.php:1747
3369
  msgid "Post MIME Type"
3370
  msgstr ""
3371
 
3372
- #: includes/class-mla-settings.php:1491 includes/class-mla-settings.php:1748
3373
  msgid ""
3374
  "Check this box if you want to add this entry to the list of MIME types "
3375
  "returned by wp_get_mime_types()."
3376
  msgstr ""
3377
 
3378
- #: includes/class-mla-settings.php:1492 includes/class-mla-settings.php:1749
3379
  msgid "Table View"
3380
  msgstr ""
3381
 
3382
- #: includes/class-mla-settings.php:1493 includes/class-mla-settings.php:1750
3383
  msgid ""
3384
  "Check this box if you want to add this entry to the list of Media/Assistant "
3385
  "table views."
3386
  msgstr ""
3387
 
3388
- #: includes/class-mla-settings.php:1495 includes/class-mla-settings.php:1752
3389
  msgid ""
3390
  "You can choose your own table view order by entering a number (1 for first, "
3391
  "etc.) in this field."
3392
  msgstr ""
3393
 
3394
- #: includes/class-mla-settings.php:1497 includes/class-mla-settings.php:1754
3395
- #: includes/class-mla-settings.php:1852 includes/class-mla-settings.php:2216
3396
  msgid ""
3397
  "The description can contain any documentation or notes you need to "
3398
  "understand or use the item."
3399
  msgstr ""
3400
 
3401
  #. translators: 1: bulk_action, e.g., delete, edit, restore, trash
3402
- #: includes/class-mla-settings.php:1608 includes/class-mla-settings.php:2074
3403
  #, php-format
3404
  msgid "Unknown bulk action %1$s"
3405
  msgstr ""
3406
 
3407
  #. translators: 1: view name/slug
3408
- #: includes/class-mla-settings.php:1647 includes/class-mla-settings.php:2116
3409
  #, php-format
3410
  msgid "Edit view \"%1$s\" cancelled."
3411
  msgstr ""
3412
 
3413
- #: includes/class-mla-settings.php:1681
3414
  msgid "View and Post MIME Type Support is disabled"
3415
  msgstr ""
3416
 
3417
- #: includes/class-mla-settings.php:1726 includes/class-mla-settings.php:1729
3418
  msgid "Library Views/Post MIME Type Processing"
3419
  msgstr ""
3420
 
3421
- #: includes/class-mla-settings.php:1727
3422
  msgid ""
3423
  "In this tab you can manage the list of \"Post MIME Types\", which are used "
3424
  "by WordPress to define the views for the <em><strong>Media/Library</strong></"
@@ -3430,7 +3474,7 @@ msgid ""
3430
  msgstr ""
3431
 
3432
  #. translators: 1: Documentation hyperlink
3433
- #: includes/class-mla-settings.php:1729
3434
  #, php-format
3435
  msgid ""
3436
  "You can find more information about library views, Post MIME types and how "
@@ -3439,91 +3483,87 @@ msgid ""
3439
  "screen."
3440
  msgstr ""
3441
 
3442
- #: includes/class-mla-settings.php:1729
3443
  msgid "Library View Processing documentation"
3444
  msgstr ""
3445
 
3446
- #: includes/class-mla-settings.php:1733 includes/class-mla-settings.php:1922
3447
- #: includes/class-mla-settings.php:2228
3448
  msgid "Displaying search results for"
3449
  msgstr ""
3450
 
3451
- #: includes/class-mla-settings.php:1734
3452
  msgid "Search Views"
3453
  msgstr ""
3454
 
3455
- #: includes/class-mla-settings.php:1755
3456
  msgid "Add View"
3457
  msgstr ""
3458
 
3459
- #: includes/class-mla-settings.php:1757 includes/class-mla-settings.php:2221
3460
  msgid "<strong>Quick Edit</strong>"
3461
  msgstr ""
3462
 
3463
- #: includes/class-mla-settings.php:1837
3464
  msgid "Edit Upload MIME Type"
3465
  msgstr ""
3466
 
3467
- #: includes/class-mla-settings.php:1842 includes/class-mla-settings.php:2207
3468
- msgid "Extension"
3469
- msgstr ""
3470
-
3471
- #: includes/class-mla-settings.php:1843
3472
  msgid ""
3473
  "The &#8220;extension&#8221; is the file extension for this type, and a "
3474
  "unique key for the item. It must be all lowercase and contain only letters "
3475
  "and numbers."
3476
  msgstr ""
3477
 
3478
- #: includes/class-mla-settings.php:1845 includes/class-mla-settings.php:2210
3479
  msgid ""
3480
  "The MIME Type must be all lowercase and contain only letters, numbers, "
3481
  "periods (.), slashes (/) and hyphens (-). It <strong>must be a valid MIME</"
3482
  "strong> type, e.g., &#8220;image&#8221; or &#8220;image/jpeg&#8221;."
3483
  msgstr ""
3484
 
3485
- #: includes/class-mla-settings.php:1846 includes/class-mla-settings.php:2211
3486
  msgid "Icon Type"
3487
  msgstr ""
3488
 
3489
- #: includes/class-mla-settings.php:1848 includes/class-mla-settings.php:2212
3490
  msgid ""
3491
  "The Icon Type selects a thumbnail image displayed for non-image file types, "
3492
  "such as PDF documents."
3493
  msgstr ""
3494
 
3495
- #: includes/class-mla-settings.php:1849 includes/class-mla-settings.php:2213
3496
  #: includes/class-mla-upload-list-table.php:415
3497
  msgid "Inactive"
3498
  msgstr ""
3499
 
3500
- #: includes/class-mla-settings.php:1850 includes/class-mla-settings.php:2214
3501
  msgid ""
3502
  "Check this box if you want to remove this entry from the list of Upload MIME "
3503
  "Types returned by get_allowed_mime_types()."
3504
  msgstr ""
3505
 
3506
- #: includes/class-mla-settings.php:1921
3507
  msgid "Known File Extension/MIME Type Associations"
3508
  msgstr ""
3509
 
3510
- #: includes/class-mla-settings.php:1923
3511
  msgid "Search Known MIME Types"
3512
  msgstr ""
3513
 
3514
- #: includes/class-mla-settings.php:1925 includes/class-mla-settings.php:2199
3515
  msgid "To search by extension, use \".\", e.g., \".doc\""
3516
  msgstr ""
3517
 
3518
- #: includes/class-mla-settings.php:2150
3519
  msgid "Upload MIME Type Support is disabled"
3520
  msgstr ""
3521
 
3522
- #: includes/class-mla-settings.php:2193 includes/class-mla-settings.php:2196
3523
  msgid "File Extension and MIME Type Processing"
3524
  msgstr ""
3525
 
3526
- #: includes/class-mla-settings.php:2194
3527
  msgid ""
3528
  "In this tab you can manage the list of file extension/MIME Type "
3529
  "associations, which are used by WordPress to decide what kind of files can "
@@ -3533,7 +3573,7 @@ msgid ""
3533
  msgstr ""
3534
 
3535
  #. translators: 1: Documentation hyperlink
3536
- #: includes/class-mla-settings.php:2196
3537
  #, php-format
3538
  msgid ""
3539
  "You can find more information about file extensions, MIME types and how "
@@ -3541,53 +3581,57 @@ msgid ""
3541
  "the <strong>\"Help\"</strong> tab in the upper-right corner of this screen."
3542
  msgstr ""
3543
 
3544
- #: includes/class-mla-settings.php:2196
3545
  msgid "File Extension Processing documentation"
3546
  msgstr ""
3547
 
3548
- #: includes/class-mla-settings.php:2198
3549
  msgid "Search Uploads"
3550
  msgstr ""
3551
 
3552
- #: includes/class-mla-settings.php:2205
3553
  msgid "Upload MIME Type"
3554
  msgstr ""
3555
 
3556
- #: includes/class-mla-settings.php:2206
3557
  msgid ""
3558
  "To search the database of over 1,500 known extension/type associations, "
3559
  "click \"Search Known Types\" below the form."
3560
  msgstr ""
3561
 
3562
- #: includes/class-mla-settings.php:2208
3563
  msgid ""
3564
  "The &#8220;extension&#8221; is the file extension for this type, and unique "
3565
  "key for the item. It must be all lowercase and contain only letters and "
3566
  "numbers."
3567
  msgstr ""
3568
 
3569
- #: includes/class-mla-settings.php:2217
3570
  msgid "Add Upload MIME Type"
3571
  msgstr ""
3572
 
3573
- #: includes/class-mla-settings.php:2219
3574
  msgid "Search Known Types"
3575
  msgstr ""
3576
 
3577
- #: includes/class-mla-settings.php:2227
3578
  #: includes/class-mla-upload-list-table.php:417
3579
  msgid "Active"
3580
  msgstr ""
3581
 
3582
- #: includes/class-mla-settings.php:2280
3583
  msgid "MLA Gallery Options"
3584
  msgstr ""
3585
 
3586
- #: includes/class-mla-settings.php:2281
 
 
 
 
3587
  msgid "Go to Markup Templates"
3588
  msgstr ""
3589
 
3590
- #: includes/class-mla-settings.php:2282
3591
  msgid ""
3592
  "In this tab you can view the default style and markup templates. You can "
3593
  "also define additional templates and use the <code>mla_style</code> and "
@@ -3597,150 +3641,150 @@ msgid ""
3597
  "Changes\" at the bottom of this page."
3598
  msgstr ""
3599
 
3600
- #: includes/class-mla-settings.php:2285
3601
  msgid "Style Templates"
3602
  msgstr ""
3603
 
3604
- #: includes/class-mla-settings.php:2287
3605
  msgid "Markup Templates"
3606
  msgstr ""
3607
 
3608
- #: includes/class-mla-settings.php:2300
3609
  msgid "Theme"
3610
  msgstr ""
3611
 
3612
- #: includes/class-mla-settings.php:2348
3613
  msgid ""
3614
  "This default template cannot be altered or deleted, but you can copy the "
3615
  "styles."
3616
  msgstr ""
3617
 
3618
- #: includes/class-mla-settings.php:2359 includes/class-mla-settings.php:2392
3619
- #: includes/class-mla-settings.php:2418
3620
  msgid "Styles"
3621
  msgstr ""
3622
 
3623
- #: includes/class-mla-settings.php:2363 includes/class-mla-settings.php:2396
3624
- #: includes/class-mla-settings.php:2422
3625
  msgid ""
3626
  "List of substitution parameters, e.g., [+selector+], on Documentation tab."
3627
  msgstr ""
3628
 
3629
- #: includes/class-mla-settings.php:2380 includes/class-mla-settings.php:2498
3630
  msgid "Delete this template"
3631
  msgstr ""
3632
 
3633
- #: includes/class-mla-settings.php:2381 includes/class-mla-settings.php:2499
3634
  msgid ""
3635
  "Check the box to delete this template when you press Update at the bottom of "
3636
  "the page."
3637
  msgstr ""
3638
 
3639
- #: includes/class-mla-settings.php:2407
3640
  msgid "Fill in a name and styles to add a new template."
3641
  msgstr ""
3642
 
3643
- #: includes/class-mla-settings.php:2442
3644
  msgid ""
3645
  "This default template cannot be altered or deleted, but you can copy the "
3646
  "markup."
3647
  msgstr ""
3648
 
3649
- #: includes/class-mla-settings.php:2454 includes/class-mla-settings.php:2511
3650
- #: includes/class-mla-settings.php:2561
3651
  msgid "Open"
3652
  msgstr ""
3653
 
3654
- #: includes/class-mla-settings.php:2458 includes/class-mla-settings.php:2515
3655
- #: includes/class-mla-settings.php:2565
3656
  msgid ""
3657
  "Markup for the beginning of the gallery. List of parameters, e.g., [+selector"
3658
  "+], on Documentation tab."
3659
  msgstr ""
3660
 
3661
- #: includes/class-mla-settings.php:2460 includes/class-mla-settings.php:2517
3662
- #: includes/class-mla-settings.php:2567
3663
  msgid "Row"
3664
  msgstr ""
3665
 
3666
- #: includes/class-mla-settings.php:2464 includes/class-mla-settings.php:2571
3667
  msgid "Markup for the beginning of each row in the gallery."
3668
  msgstr ""
3669
 
3670
- #: includes/class-mla-settings.php:2466 includes/class-mla-settings.php:2523
3671
- #: includes/class-mla-settings.php:2573
3672
  msgid "Item"
3673
  msgstr ""
3674
 
3675
- #: includes/class-mla-settings.php:2470 includes/class-mla-settings.php:2577
3676
  msgid "Markup for each item/cell of the gallery."
3677
  msgstr ""
3678
 
3679
- #: includes/class-mla-settings.php:2472 includes/class-mla-settings.php:2529
3680
- #: includes/class-mla-settings.php:2579 includes/class-mla-settings.php:2693
3681
- #: includes/class-mla-settings.php:2829
3682
  msgid "Close"
3683
  msgstr ""
3684
 
3685
- #: includes/class-mla-settings.php:2476 includes/class-mla-settings.php:2583
3686
  msgid "Markup for the end of each row in the gallery."
3687
  msgstr ""
3688
 
3689
- #: includes/class-mla-settings.php:2481 includes/class-mla-settings.php:2538
3690
- #: includes/class-mla-settings.php:2588
3691
  msgid "Markup for the end of the gallery."
3692
  msgstr ""
3693
 
3694
- #: includes/class-mla-settings.php:2521
3695
  msgid "Markup for the beginning of each row."
3696
  msgstr ""
3697
 
3698
- #: includes/class-mla-settings.php:2527
3699
  msgid "Markup for each item/cell."
3700
  msgstr ""
3701
 
3702
- #: includes/class-mla-settings.php:2533
3703
  msgid "Markup for the end of each row."
3704
  msgstr ""
3705
 
3706
- #: includes/class-mla-settings.php:2549
3707
  msgid "Fill in a name and markup to add a new template."
3708
  msgstr ""
3709
 
3710
- #: includes/class-mla-settings.php:2685
3711
  msgid "Custom Field Mapping Progress"
3712
  msgstr ""
3713
 
3714
- #: includes/class-mla-settings.php:2686 includes/class-mla-settings.php:2822
3715
  msgid "DO NOT DO THE FOLLOWING (they will cause mapping to fail)"
3716
  msgstr ""
3717
 
3718
- #: includes/class-mla-settings.php:2687 includes/class-mla-settings.php:2823
3719
  msgid "Close the window"
3720
  msgstr ""
3721
 
3722
- #: includes/class-mla-settings.php:2688 includes/class-mla-settings.php:2824
3723
  msgid "Reload the page"
3724
  msgstr ""
3725
 
3726
- #: includes/class-mla-settings.php:2689 includes/class-mla-settings.php:2825
3727
  msgid "Click the browser&rsquo;s Stop, Back or forward buttons"
3728
  msgstr ""
3729
 
3730
- #: includes/class-mla-settings.php:2690 includes/class-mla-settings.php:2826
3731
  msgid "Progress"
3732
  msgstr ""
3733
 
3734
- #: includes/class-mla-settings.php:2692 includes/class-mla-settings.php:2828
3735
  msgid "Resume"
3736
  msgstr ""
3737
 
3738
- #: includes/class-mla-settings.php:2702 includes/class-mla-settings.php:2706
3739
  msgid "Custom Field and Attachment Metadata Processing Options"
3740
  msgstr ""
3741
 
3742
  #. translators: 1: Documentation hyperlink
3743
- #: includes/class-mla-settings.php:2704
3744
  #, php-format
3745
  msgid ""
3746
  "In this tab you can define the rules for mapping several types of image "
@@ -3750,32 +3794,32 @@ msgid ""
3750
  "field. See the %1$s section of the Documentation for details."
3751
  msgstr ""
3752
 
3753
- #: includes/class-mla-settings.php:2704
3754
  msgid "Updating Attachment Metadata Documentation"
3755
  msgstr ""
3756
 
3757
- #: includes/class-mla-settings.php:2704
3758
  msgid "Adding or changing Attachment Metadata"
3759
  msgstr ""
3760
 
3761
  #. translators: 1: Documentation hyperlink
3762
- #: includes/class-mla-settings.php:2706 includes/class-mla-settings.php:2841
3763
  #, php-format
3764
  msgid ""
3765
  "You can find more information about using the controls in this tab to define "
3766
  "mapping rules and apply them in the %1$s section of the Documentation."
3767
  msgstr ""
3768
 
3769
- #: includes/class-mla-settings.php:2706
3770
  msgid "Custom Field Options documentation"
3771
  msgstr ""
3772
 
3773
- #: includes/class-mla-settings.php:2710 includes/class-mla-settings.php:2851
3774
  msgid "Custom field mapping"
3775
  msgstr ""
3776
 
3777
  #. translators: 1: "Save Changes"
3778
- #: includes/class-mla-settings.php:2715
3779
  #, php-format
3780
  msgid ""
3781
  "Click %1$s to update the \"Enable custom field mapping...\" checkbox and/or "
@@ -3784,22 +3828,22 @@ msgid ""
3784
  msgstr ""
3785
 
3786
  #. translators: 1: "Map All Rules..."
3787
- #: includes/class-mla-settings.php:2717
3788
  #, php-format
3789
  msgid ""
3790
  "Click %1$s to apply all the rules at once (rule changes will be applied but "
3791
  "not saved)."
3792
  msgstr ""
3793
 
3794
- #: includes/class-mla-settings.php:2821
3795
  msgid "IPTC &amp; EXIF Mapping Progress"
3796
  msgstr ""
3797
 
3798
- #: includes/class-mla-settings.php:2838 includes/class-mla-settings.php:2841
3799
  msgid "IPTC &amp; EXIF Processing Options"
3800
  msgstr ""
3801
 
3802
- #: includes/class-mla-settings.php:2839
3803
  msgid ""
3804
  "In this tab you can define the rules for mapping IPTC (International Press "
3805
  "Telecommunications Council) and EXIF (EXchangeable Image File) metadata to "
@@ -3808,20 +3852,20 @@ msgid ""
3808
  "click \"Save Changes\" at the bottom of this page."
3809
  msgstr ""
3810
 
3811
- #: includes/class-mla-settings.php:2841
3812
  msgid "IPTC/EXIF Options documentation"
3813
  msgstr ""
3814
 
3815
- #: includes/class-mla-settings.php:2845
3816
  msgid "Standard field mapping"
3817
  msgstr ""
3818
 
3819
- #: includes/class-mla-settings.php:2848
3820
  msgid "Taxonomy term mapping"
3821
  msgstr ""
3822
 
3823
  #. translators: 1: "Save Changes"
3824
- #: includes/class-mla-settings.php:2856
3825
  #, php-format
3826
  msgid ""
3827
  "Click %1$s to update the \"Enable IPTC/EXIF mapping...\" checkbox and/or all "
@@ -3829,160 +3873,192 @@ msgid ""
3829
  "performed.</strong>"
3830
  msgstr ""
3831
 
3832
- #: includes/class-mla-settings.php:2917
3833
- msgid "Media Library Assistant - Error"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3834
  msgstr ""
3835
 
3836
- #: includes/class-mla-settings.php:2918
3837
  msgid "You do not have permission to manage plugin settings."
3838
  msgstr ""
3839
 
3840
- #: includes/class-mla-settings.php:2945
3841
  msgid "Cannot render content tab"
3842
  msgstr ""
3843
 
3844
- #: includes/class-mla-settings.php:2948
3845
  msgid "Unknown content tab"
3846
  msgstr ""
3847
 
3848
  #. translators: 1: template type 2: template name
3849
- #: includes/class-mla-settings.php:3028 includes/class-mla-settings.php:3117
3850
  #, php-format
3851
  msgctxt "message_list"
3852
  msgid "Deleting %1$s \"%2$s\"."
3853
  msgstr ""
3854
 
3855
  #. translators: 1: ERROR tag 2: template name 3: template type
3856
- #: includes/class-mla-settings.php:3039 includes/class-mla-settings.php:3130
3857
  #, php-format
3858
  msgid "%1$s: Reserved name \"%2$s\", new %3$s discarded."
3859
  msgstr ""
3860
 
3861
  #. translators: 1: ERROR tag 2: template name 3: template type
3862
- #: includes/class-mla-settings.php:3045 includes/class-mla-settings.php:3136
3863
  #, php-format
3864
  msgid "%1$s: Duplicate name \"%2$s\", new %3$s discarded."
3865
  msgstr ""
3866
 
3867
  #. translators: 1: template type 2: template name
3868
- #: includes/class-mla-settings.php:3049 includes/class-mla-settings.php:3140
3869
  #, php-format
3870
  msgctxt "message_list"
3871
  msgid "Adding new %1$s \"%2$s\"."
3872
  msgstr ""
3873
 
3874
  #. translators: 1: ERROR tag 2: element name 3: old value
3875
- #: includes/class-mla-settings.php:3059 includes/class-mla-settings.php:3150
3876
  #, php-format
3877
  msgid "%1$s: Blank %2$s, reverting to \"%3$s\"."
3878
  msgstr ""
3879
 
3880
- #: includes/class-mla-settings.php:3059 includes/class-mla-settings.php:3066
3881
- #: includes/class-mla-settings.php:3070
3882
  msgid "style template name"
3883
  msgstr ""
3884
 
3885
  #. translators: 1: ERROR tag 2: element name 3: new value 4: old value
3886
- #: includes/class-mla-settings.php:3066 includes/class-mla-settings.php:3157
3887
  #, php-format
3888
  msgid "%1$s: Duplicate new %2$s \"%3$s\", reverting to \"%4$s\"."
3889
  msgstr ""
3890
 
3891
  #. translators: 1: element name 2: old_value 3: new_value
3892
- #: includes/class-mla-settings.php:3070 includes/class-mla-settings.php:3161
3893
  #, php-format
3894
  msgctxt "message_list"
3895
  msgid "Changing %1$s from \"%2$s\" to \"%3$s\""
3896
  msgstr ""
3897
 
3898
  #. translators: 1: template type 2: template name
3899
- #: includes/class-mla-settings.php:3077
3900
  #, php-format
3901
  msgctxt "message_list"
3902
  msgid "Updating contents of %1$s \"%2$s\"."
3903
  msgstr ""
3904
 
3905
  #. translators: 1: ERROR tag 2: template type
3906
- #: includes/class-mla-settings.php:3088 includes/class-mla-settings.php:3209
3907
  #, php-format
3908
  msgid "%1$s: Update of %2$s failed."
3909
  msgstr ""
3910
 
3911
- #: includes/class-mla-settings.php:3150 includes/class-mla-settings.php:3157
3912
- #: includes/class-mla-settings.php:3161
3913
  msgid "markup template name"
3914
  msgstr ""
3915
 
3916
  #. translators: 1: template name
3917
- #: includes/class-mla-settings.php:3169
3918
  #, php-format
3919
  msgctxt "message_list"
3920
  msgid "Updating open markup for \"%1$s\"."
3921
  msgstr ""
3922
 
3923
  #. translators: 1: template name
3924
- #: includes/class-mla-settings.php:3175
3925
  #, php-format
3926
  msgctxt "message_list"
3927
  msgid "Updating row open markup for \"%1$s\"."
3928
  msgstr ""
3929
 
3930
  #. translators: 1: template name
3931
- #: includes/class-mla-settings.php:3181
3932
  #, php-format
3933
  msgctxt "message_list"
3934
  msgid "Updating item markup for \"%1$s\"."
3935
  msgstr ""
3936
 
3937
  #. translators: 1: template name
3938
- #: includes/class-mla-settings.php:3187
3939
  #, php-format
3940
  msgctxt "message_list"
3941
  msgid "Updating row close markup for \"%1$s\"."
3942
  msgstr ""
3943
 
3944
  #. translators: 1: template name
3945
- #: includes/class-mla-settings.php:3193
3946
  #, php-format
3947
  msgctxt "message_list"
3948
  msgid "Updating close markup for \"%1$s\"."
3949
  msgstr ""
3950
 
3951
  #. translators: 1: field type
3952
- #: includes/class-mla-settings.php:3218
3953
  #, php-format
3954
  msgid "%1$s no changes detected."
3955
  msgstr ""
3956
 
3957
- #: includes/class-mla-settings.php:3253
3958
  msgid "View settings saved."
3959
  msgstr ""
3960
 
3961
- #: includes/class-mla-settings.php:3287
3962
  msgid "Upload MIME Type settings saved."
3963
  msgstr ""
3964
 
3965
- #: includes/class-mla-settings.php:3330
3966
  msgid "No custom field mapping rules to process."
3967
  msgstr ""
3968
 
3969
  #. translators: 1: field type 2: examined count 3: updated count
3970
- #: includes/class-mla-settings.php:3361 includes/class-mla-settings.php:3500
3971
- #: includes/class-mla-settings.php:3571 includes/class-mla-settings.php:3657
3972
  #, php-format
3973
  msgid "%1$s mapping completed; %2$d attachment(s) examined, %3$d updated."
3974
  msgstr ""
3975
 
3976
  #. translators: 1: field type 2: examined count
3977
- #: includes/class-mla-settings.php:3364 includes/class-mla-settings.php:3503
3978
- #: includes/class-mla-settings.php:3574 includes/class-mla-settings.php:3660
3979
  #, php-format
3980
  msgid ""
3981
  "%1$s mapping completed; %2$d attachment(s) examined, no changes detected."
3982
  msgstr ""
3983
 
3984
  #. translators: 1: number of attachments
3985
- #: includes/class-mla-settings.php:3395
3986
  #, php-format
3987
  msgid "%s attachment"
3988
  msgid_plural "%s attachments"
@@ -3990,256 +4066,256 @@ msgstr[0] ""
3990
  msgstr[1] ""
3991
 
3992
  #. translators: 1: singular/plural number of attachments
3993
- #: includes/class-mla-settings.php:3397
3994
  #, php-format
3995
  msgid "Deleted custom field value from %1$s."
3996
  msgstr ""
3997
 
3998
- #: includes/class-mla-settings.php:3400
3999
  msgid "No attachments contained this custom field."
4000
  msgstr ""
4001
 
4002
  #. translators: 1: ERROR tag 2: field type
4003
- #: includes/class-mla-settings.php:3461 includes/class-mla-settings.php:3532
4004
- #: includes/class-mla-settings.php:3618
4005
  #, php-format
4006
  msgid "%1$s: No %2$s settings to process."
4007
  msgstr ""
4008
 
4009
- #: includes/class-mla-settings.php:3491 includes/class-mla-settings.php:3562
4010
- #: includes/class-mla-settings.php:3648
4011
  msgid "updated."
4012
  msgstr ""
4013
 
4014
  #. translators: 1: reference type, e.g., Gallery in
4015
- #: includes/class-mla-settings.php:3753 includes/class-mla-settings.php:3763
4016
  #, php-format
4017
  msgctxt "message_list"
4018
  msgid "%1$s - references updated."
4019
  msgstr ""
4020
 
4021
- #: includes/class-mla-settings.php:3806
4022
  msgid "General settings saved."
4023
  msgstr ""
4024
 
4025
  #. translators: 1: option name
4026
- #: includes/class-mla-settings.php:3837
4027
  #, php-format
4028
  msgctxt "message_list"
4029
  msgid "delete_option \"%1$s\""
4030
  msgstr ""
4031
 
4032
- #: includes/class-mla-settings.php:3845
4033
  msgid "General settings reset to default values."
4034
  msgstr ""
4035
 
4036
- #: includes/class-mla-settings.php:3887
4037
  msgid "select settings"
4038
  msgstr ""
4039
 
4040
- #: includes/class-mla-settings.php:3907
4041
  msgid "Import ALL Settings"
4042
  msgstr ""
4043
 
4044
- #: includes/class-mla-settings.php:3932
4045
  msgctxt "message_list"
4046
  msgid "exported"
4047
  msgstr ""
4048
 
4049
- #: includes/class-mla-settings.php:3934
4050
  msgctxt "message_list"
4051
  msgid "skipped"
4052
  msgstr ""
4053
 
4054
- #: includes/class-mla-settings.php:3941
4055
  msgid "ALL settings exported."
4056
  msgstr ""
4057
 
4058
  #. translators: 1: ERROR tag 2: backup directory name
4059
- #: includes/class-mla-settings.php:3952
4060
  #, php-format
4061
  msgid "%1$s: The settings directory ( %2$s ) cannot be created."
4062
  msgstr ""
4063
 
4064
  #. translators: 1: ERROR tag 2: backup directory name
4065
- #: includes/class-mla-settings.php:3956
4066
  #, php-format
4067
  msgid "%1$s: The settings directory ( %2$s ) is not writable."
4068
  msgstr ""
4069
 
4070
  #. translators: 1: ERROR tag 2: backup file name
4071
- #: includes/class-mla-settings.php:3967
4072
  #, php-format
4073
  msgid "%1$s: The settings file ( %2$s ) could not be opened."
4074
  msgstr ""
4075
 
4076
  #. translators: 1: ERROR tag 2: PHP error information
4077
- #: includes/class-mla-settings.php:3974
4078
  #, php-format
4079
  msgctxt "error_log"
4080
  msgid "%1$s: _export_settings $error_info = \"%2$s\"."
4081
  msgstr ""
4082
 
4083
  #. translators: 1: ERROR tag 2: backup file name 3: error message
4084
- #: includes/class-mla-settings.php:3983
4085
  #, php-format
4086
  msgid "%1$s: Writing the settings file ( %2$s ) \"%3$s\"."
4087
  msgstr ""
4088
 
4089
  #. translators: 1: number of option settings
4090
- #: includes/class-mla-settings.php:3989
4091
  #, php-format
4092
  msgid "Settings exported; %1$s settings recorded."
4093
  msgstr ""
4094
 
4095
- #: includes/class-mla-settings.php:4007
4096
  msgid "No settings imported."
4097
  msgstr ""
4098
 
4099
- #: includes/class-mla-settings.php:4016
4100
  msgid "Please select an import settings file from the dropdown list."
4101
  msgstr ""
4102
 
4103
- #: includes/class-mla-settings.php:4020
4104
  msgid "The import settings dropdown selection is missing."
4105
  msgstr ""
4106
 
4107
  #. translators: 1: ERROR tag 2: PHP error information
4108
- #: includes/class-mla-settings.php:4028
4109
  #, php-format
4110
  msgctxt "error_log"
4111
  msgid "%1$s: _import_settings $error_info = \"%2$s\"."
4112
  msgstr ""
4113
 
4114
  #. translators: 1: ERROR tag 2: backup file name 3: error message
4115
- #: includes/class-mla-settings.php:4037
4116
  #, php-format
4117
  msgid "%1$s: Reading the settings file ( %2$s ) \"%3$s\"."
4118
  msgstr ""
4119
 
4120
- #: includes/class-mla-settings.php:4047
4121
  msgctxt "message_list"
4122
  msgid "updated"
4123
  msgstr ""
4124
 
4125
- #: includes/class-mla-settings.php:4050
4126
  msgctxt "message_list"
4127
  msgid "unchanged"
4128
  msgstr ""
4129
 
4130
  #. translators: 1: number of option settings updated 2: number of option settings unchanged
4131
- #: includes/class-mla-settings.php:4055
4132
  #, php-format
4133
  msgid "Settings imported; %1$s updated, %2$s unchanged."
4134
  msgstr ""
4135
 
4136
- #: includes/class-mla-shortcodes.php:237
4137
- #: includes/class-mla-shortcodes.php:1227
4138
- #: includes/class-mla-shortcodes.php:2134
4139
- #: includes/class-mla-shortcodes.php:2421
4140
  msgid "Previous"
4141
  msgstr ""
4142
 
4143
- #: includes/class-mla-shortcodes.php:238
4144
- #: includes/class-mla-shortcodes.php:1228
4145
- #: includes/class-mla-shortcodes.php:2183
4146
- #: includes/class-mla-shortcodes.php:2427
4147
  msgid "Next"
4148
  msgstr ""
4149
 
4150
- #: includes/class-mla-shortcodes.php:345
4151
  msgid "mla_debug empty gallery"
4152
  msgstr ""
4153
 
4154
- #: includes/class-mla-shortcodes.php:409
4155
  msgid ""
4156
  "<strong>Photonic-enhanced [mla_gallery]</strong> type must be "
4157
  "<strong>default</strong>, query = "
4158
  msgstr ""
4159
 
4160
- #: includes/class-mla-shortcodes.php:736
4161
  msgid "unknown"
4162
  msgstr ""
4163
 
4164
- #: includes/class-mla-shortcodes.php:1360
4165
  msgid "mla_debug attributes"
4166
  msgstr ""
4167
 
4168
- #: includes/class-mla-shortcodes.php:1361
4169
  msgid "mla_debug arguments"
4170
  msgstr ""
4171
 
4172
- #: includes/class-mla-shortcodes.php:1453
4173
  msgid "mla_debug empty cloud"
4174
  msgstr ""
4175
 
4176
- #: includes/class-mla-shortcodes.php:2802
4177
- #: includes/class-mla-shortcodes.php:3130
4178
- #: includes/class-mla-shortcodes.php:3161
4179
  msgid "Invalid mla_gallery"
4180
  msgstr ""
4181
 
4182
- #: includes/class-mla-shortcodes.php:3409
4183
  msgid "mla_debug query"
4184
  msgstr ""
4185
 
4186
- #: includes/class-mla-shortcodes.php:3410
4187
  msgid "mla_debug request"
4188
  msgstr ""
4189
 
4190
- #: includes/class-mla-shortcodes.php:3411
4191
  msgid "mla_debug query_vars"
4192
  msgstr ""
4193
 
4194
- #: includes/class-mla-shortcodes.php:3412
4195
  msgid "mla_debug post_count"
4196
  msgstr ""
4197
 
4198
- #: includes/class-mla-shortcodes.php:3480
4199
  msgid "mla_debug WHERE filter"
4200
  msgstr ""
4201
 
4202
- #: includes/class-mla-shortcodes.php:3499
4203
  msgid "mla_debug modified WHERE filter"
4204
  msgstr ""
4205
 
4206
- #: includes/class-mla-shortcodes.php:3522
4207
  msgid "mla_debug ORDER BY filter, incoming"
4208
  msgstr ""
4209
 
4210
- #: includes/class-mla-shortcodes.php:3522
4211
  msgid "Replacement ORDER BY clause"
4212
  msgstr ""
4213
 
4214
- #: includes/class-mla-shortcodes.php:3545
4215
  msgid "mla_debug posts_clauses filter"
4216
  msgstr ""
4217
 
4218
- #: includes/class-mla-shortcodes.php:3563
4219
  msgid "mla_debug posts_clauses_request filter"
4220
  msgstr ""
4221
 
4222
- #: includes/class-mla-shortcodes.php:3753
4223
  msgid "Invalid taxonomy"
4224
  msgstr ""
4225
 
4226
- #: includes/class-mla-shortcodes.php:3959
4227
  msgid "mla_debug query arguments"
4228
  msgstr ""
4229
 
4230
- #: includes/class-mla-shortcodes.php:3960
4231
  msgid "mla_debug last_query"
4232
  msgstr ""
4233
 
4234
- #: includes/class-mla-shortcodes.php:3961
4235
  msgid "mla_debug last_error"
4236
  msgstr ""
4237
 
4238
- #: includes/class-mla-shortcodes.php:3962
4239
  msgid "mla_debug num_rows"
4240
  msgstr ""
4241
 
4242
- #: includes/class-mla-shortcodes.php:3963
4243
  msgid "mla_debug found_rows"
4244
  msgstr ""
4245
 
@@ -4344,10 +4420,10 @@ msgstr ""
4344
  msgid "Search Media"
4345
  msgstr ""
4346
 
4347
- #: includes/mla-plugin-loader.php:36
4348
  msgid "The Media Library Assistant cannot load."
4349
  msgstr ""
4350
 
4351
- #: includes/mla-plugin-loader.php:38
4352
  msgid "You must resolve these conflicts before this plugin can safely load."
4353
  msgstr ""
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Media Library Assistant\n"
4
+ "POT-Creation-Date: 2015-04-19 11:54-0800\n"
5
+ "PO-Revision-Date: 2015-04-19 11:55-0800\n"
6
  "Last-Translator: David Lingren <david@fairtradejudaica.org>\n"
7
  "Language-Team: David Lingren <david@fairtradejudaica.org>\n"
8
  "Language: en_US\n"
18
  "X-Poedit-SearchPath-0: includes\n"
19
  "X-Poedit-SearchPath-1: tests\n"
20
 
21
+ #. translators: 1: ERROR tag 2: index
22
+ #: includes/class-mla-data-pdf.php:216
23
  #, php-format
24
  msgctxt "error_log"
25
+ msgid "%1$s: _build_pdf_indirect_objects bad value at $index = \"%2$d\"."
26
  msgstr ""
27
 
28
+ #: includes/class-mla-data-pdf.php:216 includes/class-mla-data-pdf.php:496
29
+ #: includes/class-mla-data-pdf.php:498 includes/class-mla-data-pdf.php:544
30
+ #: includes/class-mla-data-pdf.php:725 includes/class-mla-data.php:101
31
+ #: includes/class-mla-data.php:119 includes/class-mla-data.php:198
32
+ #: includes/class-mla-data.php:257 includes/class-mla-data.php:345
33
+ #: includes/class-mla-data.php:389 includes/class-mla-data.php:492
34
+ #: includes/class-mla-data.php:648 includes/class-mla-data.php:711
35
+ #: includes/class-mla-data.php:1266 includes/class-mla-data.php:1528
36
+ #: includes/class-mla-data.php:2679 includes/class-mla-data.php:2685
37
+ #: includes/class-mla-data.php:4033 includes/class-mla-data.php:4036
38
+ #: includes/class-mla-data.php:5039 includes/class-mla-data.php:5066
39
+ #: includes/class-mla-data.php:5386 includes/class-mla-data.php:5399
40
+ #: includes/class-mla-data.php:5421 includes/class-mla-data.php:5610
41
+ #: includes/class-mla-data.php:5651 includes/class-mla-data.php:5683
42
+ #: includes/class-mla-data.php:5699 includes/class-mla-data.php:5878
43
+ #: includes/class-mla-edit-media.php:310 includes/class-mla-edit-media.php:677
44
+ #: includes/class-mla-main.php:613 includes/class-mla-main.php:804
45
+ #: includes/class-mla-main.php:911 includes/class-mla-main.php:1149
46
+ #: includes/class-mla-main.php:1174 includes/class-mla-main.php:1267
47
+ #: includes/class-mla-main.php:1326 includes/class-mla-main.php:1438
48
+ #: includes/class-mla-main.php:1469 includes/class-mla-main.php:1696
49
+ #: includes/class-mla-main.php:1703 includes/class-mla-main.php:1707
50
+ #: includes/class-mla-main.php:1777 includes/class-mla-main.php:1784
51
+ #: includes/class-mla-main.php:1924 includes/class-mla-main.php:1999
52
+ #: includes/class-mla-main.php:2246 includes/class-mla-main.php:2254
53
+ #: includes/class-mla-main.php:2287 includes/class-mla-main.php:2321
54
+ #: includes/class-mla-main.php:2562 includes/class-mla-main.php:2570
55
+ #: includes/class-mla-main.php:2602 includes/class-mla-main.php:2610
56
+ #: includes/class-mla-media-modal.php:1186
57
  #: includes/class-mla-mime-types.php:483 includes/class-mla-mime-types.php:906
58
  #: includes/class-mla-mime-types.php:912 includes/class-mla-mime-types.php:916
59
  #: includes/class-mla-mime-types.php:961
73
  #: includes/class-mla-mime-types.php:2320
74
  #: includes/class-mla-mime-types.php:2329
75
  #: includes/class-mla-mime-types.php:2361 includes/class-mla-objects.php:201
76
+ #: includes/class-mla-options.php:1685 includes/class-mla-options.php:1862
77
+ #: includes/class-mla-options.php:1938 includes/class-mla-options.php:3264
78
+ #: includes/class-mla-options.php:3704 includes/class-mla-options.php:3717
79
+ #: includes/class-mla-options.php:3721 includes/class-mla-options.php:4248
80
+ #: includes/class-mla-options.php:4470 includes/class-mla-options.php:4909
81
+ #: includes/class-mla-options.php:4953 includes/class-mla-options.php:4961
82
+ #: includes/class-mla-options.php:4978 includes/class-mla-options.php:4988
83
+ #: includes/class-mla-options.php:4998 includes/class-mla-options.php:5006
84
+ #: includes/class-mla-options.php:5010 includes/class-mla-settings.php:555
85
  #: includes/class-mla-settings.php:619 includes/class-mla-settings.php:633
86
  #: includes/class-mla-settings.php:662 includes/class-mla-settings.php:673
87
  #: includes/class-mla-settings.php:763 includes/class-mla-settings.php:897
88
  #: includes/class-mla-settings.php:1003 includes/class-mla-settings.php:1035
89
+ #: includes/class-mla-settings.php:1173 includes/class-mla-settings.php:1535
90
+ #: includes/class-mla-settings.php:1567 includes/class-mla-settings.php:1644
91
+ #: includes/class-mla-settings.php:1981 includes/class-mla-settings.php:2032
92
+ #: includes/class-mla-settings.php:2111 includes/class-mla-settings.php:2665
93
+ #: includes/class-mla-settings.php:2807 includes/class-mla-settings.php:2979
94
+ #: includes/class-mla-settings.php:3009 includes/class-mla-settings.php:3064
95
+ #: includes/class-mla-settings.php:3098 includes/class-mla-settings.php:3101
96
+ #: includes/class-mla-settings.php:3105 includes/class-mla-settings.php:3204
97
+ #: includes/class-mla-settings.php:3210 includes/class-mla-settings.php:3224
98
+ #: includes/class-mla-settings.php:3231 includes/class-mla-settings.php:3253
99
+ #: includes/class-mla-settings.php:3295 includes/class-mla-settings.php:3301
100
+ #: includes/class-mla-settings.php:3315 includes/class-mla-settings.php:3322
101
+ #: includes/class-mla-settings.php:3374 includes/class-mla-settings.php:3495
102
+ #: includes/class-mla-settings.php:3625 includes/class-mla-settings.php:3696
103
+ #: includes/class-mla-settings.php:3782 includes/class-mla-settings.php:4116
104
+ #: includes/class-mla-settings.php:4120 includes/class-mla-settings.php:4131
105
+ #: includes/class-mla-settings.php:4138 includes/class-mla-settings.php:4147
106
+ #: includes/class-mla-settings.php:4184 includes/class-mla-settings.php:4192
107
+ #: includes/class-mla-settings.php:4201 includes/class-mla-shortcodes.php:1651
108
+ #: includes/class-mla-shortcodes.php:1725
109
+ #: includes/class-mla-shortcodes.php:3016
110
+ #: includes/class-mla-shortcodes.php:3344
111
+ #: includes/class-mla-shortcodes.php:3375
112
  msgid "ERROR"
113
  msgstr ""
114
 
115
+ #. translators: 1: ERROR tag 2: source offset 3: nest level
116
+ #: includes/class-mla-data-pdf.php:496
117
+ #, php-format
118
+ msgctxt "error_log"
119
+ msgid "%1$s: _parse_pdf_dictionary offset = %2$d, nest = %3$d."
120
+ msgstr ""
121
+
122
+ #. translators: 1: ERROR tag 2: dictionary excerpt
123
+ #: includes/class-mla-data-pdf.php:498
124
+ #, php-format
125
+ msgctxt "error_log"
126
+ msgid "%1$s: _parse_pdf_dictionary no end delimiter dump = %2$s."
127
+ msgstr ""
128
+
129
+ #. translators: 1: ERROR tag 2: entry name 3: value excerpt
130
+ #: includes/class-mla-data-pdf.php:544
131
+ #, php-format
132
+ msgctxt "error_log"
133
+ msgid "%1$s: _parse_pdf_dictionary bad value [ %2$s ] dump = %3$s"
134
+ msgstr ""
135
+
136
+ #. translators: 1: ERROR tag 2: path and file
137
+ #: includes/class-mla-data-pdf.php:725
138
+ #, php-format
139
+ msgctxt "error_log"
140
+ msgid "%1$s: File \"%2$s\", startxref not found."
141
+ msgstr ""
142
+
143
+ #. translators: 1: ERROR tag 2: path and file name
144
+ #: includes/class-mla-data.php:101
145
+ #, php-format
146
+ msgctxt "error_log"
147
+ msgid "%1$s: mla_load_template file \"%2$s\" not found."
148
+ msgstr ""
149
+
150
  #. translators: 1: ERROR tag 2: path and file name 3: source type, e.g., file, option, string
151
  #: includes/class-mla-data.php:119
152
  #, php-format
203
  msgstr ""
204
 
205
  #. translators: 1: ERROR tag 2: template excerpt
206
+ #: includes/class-mla-data.php:1266
207
  #, php-format
208
  msgctxt "error_log"
209
  msgid ""
212
  msgstr ""
213
 
214
  #. translators: 1: ERROR tag 2: function name 3: non-array value
215
+ #: includes/class-mla-data.php:1528 includes/class-mla-edit-media.php:310
216
+ #: includes/class-mla-main.php:1924 includes/class-mla-main.php:1999
217
  #: includes/class-mla-media-modal.php:1186
218
  #: includes/class-mla-mime-types.php:483
219
  #: includes/class-mla-mime-types.php:1218
220
+ #: includes/class-mla-mime-types.php:2361 includes/class-mla-settings.php:1535
221
+ #: includes/class-mla-settings.php:1981
222
  #, php-format
223
  msgctxt "error_log"
224
  msgid "%1$s: %2$s non-array \"%3$s\""
225
  msgstr ""
226
 
227
  #. translators: 1: DEBUG tag 2: query filter details
228
+ #: includes/class-mla-data.php:1967
229
  #, php-format
230
  msgid "%1$s: _execute_list_table_query $wp_filter = \"%2$s\"."
231
  msgstr ""
232
 
233
+ #: includes/class-mla-data.php:1967 includes/class-mla-data.php:1970
234
+ #: includes/class-mla-data.php:1987 includes/class-mla-data.php:1989
235
+ #: includes/class-mla-data.php:1992 includes/class-mla-data.php:1994
236
+ #: includes/class-mla-data.php:2354 includes/class-mla-data.php:2357
237
+ #: includes/class-mla-data.php:2423 includes/class-mla-data.php:2426
238
+ #: includes/class-mla-data.php:2477 includes/class-mla-data.php:2480
239
+ #: includes/class-mla-data.php:2579 includes/class-mla-data.php:2582
240
+ #: includes/class-mla-data.php:2618 includes/class-mla-data.php:2621
241
+ #: includes/class-mla-data.php:2642 includes/class-mla-data.php:2645
242
  msgid "DEBUG"
243
  msgstr ""
244
 
245
  #. translators: 1: DEBUG tag 2: query filter details
246
+ #: includes/class-mla-data.php:1970
247
  #, php-format
248
  msgctxt "error_log"
249
  msgid "%1$s: _execute_list_table_query $wp_filter = \"%2$s\"."
250
  msgstr ""
251
 
252
  #. translators: 1: DEBUG tag 2: query details
253
+ #: includes/class-mla-data.php:1987
254
  #, php-format
255
  msgid "%1$s: _execute_list_table_query WP_Query = \"%2$s\"."
256
  msgstr ""
257
 
258
  #. translators: 1: DEBUG tag 2: SQL statement
259
+ #: includes/class-mla-data.php:1989
260
  #, php-format
261
  msgid "%1$s: _execute_list_table_query SQL_request = \"%2$s\"."
262
  msgstr ""
263
 
264
  #. translators: 1: DEBUG tag 2: query details
265
+ #: includes/class-mla-data.php:1992
266
  #, php-format
267
  msgctxt "error_log"
268
  msgid "%1$s: _execute_list_table_query WP_Query = \"%2$s\"."
269
  msgstr ""
270
 
271
  #. translators: 1: DEBUG tag 2: SQL statement
272
+ #: includes/class-mla-data.php:1994
273
  #, php-format
274
  msgctxt "error_log"
275
  msgid "%1$s: _execute_list_table_query SQL_request = \"%2$s\"."
276
  msgstr ""
277
 
278
  #. translators: 1: DEBUG tag 2: search filter details
279
+ #: includes/class-mla-data.php:2354
280
  #, php-format
281
  msgid "%1$s: mla_query_posts_search_filter = \"%2$s\"."
282
  msgstr ""
283
 
284
  #. translators: 1: DEBUG tag 2: search filter details
285
+ #: includes/class-mla-data.php:2357
286
  #, php-format
287
  msgctxt "error_log"
288
  msgid "%1$s: mla_query_posts_search_filter = \"%2$s\"."
289
  msgstr ""
290
 
291
  #. translators: 1: DEBUG tag 2: where filter details
292
+ #: includes/class-mla-data.php:2423
293
  #, php-format
294
  msgid "%1$s: mla_query_posts_where_filter = \"%2$s\"."
295
  msgstr ""
296
 
297
  #. translators: 1: DEBUG tag 2: where filter details
298
+ #: includes/class-mla-data.php:2426
299
  #, php-format
300
  msgctxt "error_log"
301
  msgid "%1$s: mla_query_posts_where_filter = \"%2$s\"."
302
  msgstr ""
303
 
304
  #. translators: 1: DEBUG tag 2: join filter details
305
+ #: includes/class-mla-data.php:2477
306
  #, php-format
307
  msgid "%1$s: mla_query_posts_join_filter = \"%2$s\"."
308
  msgstr ""
309
 
310
  #. translators: 1: DEBUG tag 2: join filter details
311
+ #: includes/class-mla-data.php:2480
312
  #, php-format
313
  msgctxt "error_log"
314
  msgid "%1$s: mla_query_posts_join_filter = \"%2$s\"."
315
  msgstr ""
316
 
317
  #. translators: 1: DEBUG tag 2: orderby details details
318
+ #: includes/class-mla-data.php:2579
319
  #, php-format
320
  msgid "%1$s: mla_query_posts_orderby_filter = \"%2$s\"."
321
  msgstr ""
322
 
323
  #. translators: 1: DEBUG tag 2: orderby details details
324
+ #: includes/class-mla-data.php:2582
325
  #, php-format
326
  msgctxt "error_log"
327
  msgid "%1$s: mla_query_posts_orderby_filter = \"%2$s\"."
328
  msgstr ""
329
 
330
  #. translators: 1: DEBUG tag 2: SQL clauses
331
+ #: includes/class-mla-data.php:2618
332
  #, php-format
333
  msgid "%1$s: mla_query_posts_clauses_filter = \"%2$s\"."
334
  msgstr ""
335
 
336
  #. translators: 1: DEBUG tag 2: SQL clauses
337
+ #: includes/class-mla-data.php:2621
338
  #, php-format
339
  msgctxt "error_log"
340
  msgid "%1$s: mla_query_posts_clauses_filter = \"%2$s\"."
341
  msgstr ""
342
 
343
  #. translators: 1: DEBUG tag 2: SQL clauses
344
+ #: includes/class-mla-data.php:2642
345
  #, php-format
346
  msgid "%1$s: mla_query_posts_clauses_request_filter = \"%2$s\"."
347
  msgstr ""
348
 
349
  #. translators: 1: DEBUG tag 2: SQL clauses
350
+ #: includes/class-mla-data.php:2645
351
  #, php-format
352
  msgctxt "error_log"
353
  msgid "%1$s: mla_query_posts_clauses_request_filter = \"%2$s\"."
354
  msgstr ""
355
 
356
  #. translators: 1: ERROR tag 2: post ID
357
+ #: includes/class-mla-data.php:2679
358
  #, php-format
359
  msgctxt "error_log"
360
  msgid "%1$s: mla_get_attachment_by_id(%2$d) not found."
361
  msgstr ""
362
 
363
  #. translators: 1: ERROR tag 2: post ID 3: post_type
364
+ #: includes/class-mla-data.php:2685
365
  #, php-format
366
  msgctxt "error_log"
367
  msgid "%1$s: mla_get_attachment_by_id(%2$d) wrong post_type \"%3$s\"."
368
  msgstr ""
369
 
370
+ #: includes/class-mla-data.php:3300 includes/class-mla-data.php:3644
371
+ #: includes/class-mla-list-table.php:1004
372
  msgid "NO REFERENCE TESTS"
373
  msgstr ""
374
 
375
+ #: includes/class-mla-data.php:3306 includes/class-mla-data.php:3650
376
+ #: includes/class-mla-options.php:2805 includes/class-mla-options.php:2806
377
  msgid "ORPHAN"
378
  msgstr ""
379
 
380
+ #: includes/class-mla-data.php:3310 includes/class-mla-data.php:3654
381
  msgid "UNUSED"
382
  msgstr ""
383
 
384
+ #: includes/class-mla-data.php:3315 includes/class-mla-data.php:3659
385
  msgid "UNATTACHED"
386
  msgstr ""
387
 
388
+ #: includes/class-mla-data.php:3317 includes/class-mla-data.php:3661
389
  msgid "INVALID PARENT"
390
  msgstr ""
391
 
392
  #. translators: 1: post_type, 2: post_title, 3: post ID, 4: query string, 5: error message
393
+ #: includes/class-mla-data.php:3842
394
  #, php-format
395
  msgid "(%1$s) %2$s (ID %3$d) query \"%4$s\" failed, returning \"%5$s\""
396
  msgstr ""
397
 
398
+ #: includes/class-mla-data.php:4033
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
399
  msgctxt "error_log"
400
+ msgid "mla_parse_xmp_metadata xml_parse_into_struct failed."
401
  msgstr ""
402
 
403
+ #: includes/class-mla-data.php:4036
404
  msgctxt "error_log"
405
+ msgid "mla_parse_xmp_metadata set option failed."
406
  msgstr ""
407
 
408
+ #: includes/class-mla-data.php:5123 includes/class-mla-settings.php:1768
 
 
 
 
 
 
 
409
  #: includes/class-mla-view-list-table.php:377
410
  #: includes/class-mla-view-list-table.php:393
411
  msgid "Yes"
412
  msgstr ""
413
 
414
+ #: includes/class-mla-data.php:5125 includes/class-mla-list-table.php:241
415
+ #: includes/class-mla-settings.php:1767
416
  #: includes/class-mla-view-list-table.php:379
417
  #: includes/class-mla-view-list-table.php:395
418
  msgid "No"
419
  msgstr ""
420
 
421
  #. translators: 1: meta_key
422
+ #: includes/class-mla-data.php:5383 includes/class-mla-data.php:5481
423
  #, php-format
424
  msgid "Deleting %1$s"
425
  msgstr ""
426
 
427
  #. translators: 1: ERROR tag 2: meta_key
428
+ #: includes/class-mla-data.php:5386
429
  #, php-format
430
  msgid "%1$s: meta:%2$s not found"
431
  msgstr ""
433
  #. translators: 1: meta_key 2: meta_value
434
  #. translators: 1: meta_key 2: new_value
435
  #. translators: 1: meta_key 2: meta_value
436
+ #: includes/class-mla-data.php:5395 includes/class-mla-data.php:5492
437
+ #: includes/class-mla-data.php:5498
438
  #, php-format
439
  msgid "Adding %1$s = %2$s"
440
  msgstr ""
441
 
442
  #. translators: 1: ERROR tag 2: meta_key
443
+ #: includes/class-mla-data.php:5399
444
  #, php-format
445
  msgid "%1$s: Adding meta:%2$s; not found"
446
  msgstr ""
447
 
448
  #. translators: 1: meta_key
449
+ #: includes/class-mla-data.php:5406
450
  #, php-format
451
  msgid "Deleting Null meta:%1$s"
452
  msgstr ""
453
 
454
  #. translators: 1: element name 2: old_value 3: new_value
455
+ #: includes/class-mla-data.php:5416 includes/class-mla-data.php:5567
456
+ #: includes/class-mla-data.php:5628 includes/class-mla-data.php:5654
457
+ #: includes/class-mla-data.php:5696 includes/class-mla-data.php:5709
458
+ #: includes/class-mla-data.php:5718 includes/class-mla-data.php:5729
459
+ #: includes/class-mla-data.php:5740 includes/class-mla-data.php:5753
460
+ #: includes/class-mla-data.php:5762 includes/class-mla-data.php:5771
461
  #: includes/class-mla-mime-types.php:1052
462
  #: includes/class-mla-mime-types.php:2125
463
  #, php-format
465
  msgstr ""
466
 
467
  #. translators: 1: ERROR tag 2: meta_key
468
+ #: includes/class-mla-data.php:5421
469
  #, php-format
470
  msgid "%1$s: Changing meta:%2$s; not found"
471
  msgstr ""
472
 
473
  #. translators: 1: meta_key
474
+ #: includes/class-mla-data.php:5522
475
  #, php-format
476
  msgid "Deleting old %1$s values"
477
  msgstr ""
478
 
479
  #. translators: 1: meta_key 2: old_value 3: new_value 4: update count
480
+ #: includes/class-mla-data.php:5552
481
  #, php-format
482
  msgid "Changing %1$s from \"%2$s\" to \"%3$s\"; %4$d updates"
483
  msgstr ""
484
 
485
+ #: includes/class-mla-data.php:5610 includes/class-mla-main.php:2287
486
  msgid "Could not retrieve Attachment."
487
  msgstr ""
488
 
489
+ #: includes/class-mla-data.php:5628 includes/class-mla-edit-media.php:418
490
+ #: includes/class-mla-main.php:1638 includes/class-mla-main.php:1938
491
+ #: includes/class-mla-main.php:2128 includes/class-mla-main.php:2505
492
+ #: includes/class-mla-objects.php:278 includes/class-mla-options.php:1077
493
+ #: includes/class-mla-options.php:1892
494
  #: includes/mla-main-search-box-template.php:42
495
  #: includes/mla-media-modal-js-template.php:32
496
  msgid "Title"
497
  msgstr ""
498
 
499
  #. translators: 1: ERROR tag 2: old_value
500
+ #: includes/class-mla-data.php:5651
501
  #, php-format
502
  msgid "%1$s: Could not change Name/Slug \"%2$s\"; name already exists"
503
  msgstr ""
504
 
505
+ #: includes/class-mla-data.php:5654 includes/class-mla-edit-media.php:419
506
+ #: includes/class-mla-main.php:2129 includes/class-mla-main.php:2508
507
+ #: includes/class-mla-options.php:1084
508
  msgid "Name/Slug"
509
  msgstr ""
510
 
511
  #. translators: 1: old_value
512
+ #: includes/class-mla-data.php:5680
513
  #, php-format
514
  msgid "Deleting ALT Text, was \"%1$s\""
515
  msgstr ""
516
 
517
  #. translators: 1: ERROR tag 2: old_value
518
+ #: includes/class-mla-data.php:5683
519
  #, php-format
520
  msgid "%1$s: Could not delete ALT Text, remains \"%2$s\""
521
  msgstr ""
522
 
523
+ #: includes/class-mla-data.php:5696 includes/class-mla-edit-media.php:422
524
+ #: includes/class-mla-list-table.php:1294 includes/class-mla-main.php:2132
525
+ #: includes/class-mla-main.php:2511 includes/class-mla-options.php:1091
526
+ #: includes/class-mla-options.php:1898
527
  #: includes/mla-main-search-box-template.php:44
528
  #: includes/mla-media-modal-js-template.php:40
529
  msgid "ALT Text"
530
  msgstr ""
531
 
532
  #. translators: 1: ERROR tag 2: old_value 3: new_value
533
+ #: includes/class-mla-data.php:5699
534
  #, php-format
535
  msgid "%1$s: Could not change ALT Text from \"%2$s\" to \"%3$s\""
536
  msgstr ""
537
 
538
+ #: includes/class-mla-data.php:5709 includes/class-mla-edit-media.php:420
539
+ #: includes/class-mla-main.php:2130 includes/class-mla-main.php:2514
540
+ #: includes/class-mla-options.php:1098 includes/class-mla-options.php:1901
541
  #: includes/mla-main-search-box-template.php:45
542
  #: includes/mla-media-modal-js-template.php:45
543
  msgid "Caption"
544
  msgstr ""
545
 
546
+ #: includes/class-mla-data.php:5718 includes/class-mla-edit-media.php:421
547
+ #: includes/class-mla-main.php:2131 includes/class-mla-main.php:2516
548
+ #: includes/class-mla-options.php:1105 includes/class-mla-options.php:1904
549
+ #: includes/class-mla-settings.php:1501 includes/class-mla-settings.php:1758
550
+ #: includes/class-mla-settings.php:1856 includes/class-mla-settings.php:2220
551
  #: includes/mla-main-search-box-template.php:46
552
  #: includes/mla-media-modal-js-template.php:49
553
  msgid "Description"
554
  msgstr ""
555
 
556
+ #: includes/class-mla-data.php:5729 includes/class-mla-list-table.php:978
557
+ #: includes/class-mla-list-table.php:1070 includes/class-mla-options.php:4418
558
+ #: includes/class-mla-options.php:4765
559
  msgid "Parent"
560
  msgstr ""
561
 
562
+ #: includes/class-mla-data.php:5740 includes/class-mla-edit-media.php:611
563
+ #: includes/class-mla-edit-media.php:764 includes/class-mla-main.php:2135
564
+ #: includes/class-mla-main.php:2522 includes/class-mla-settings.php:1499
565
+ #: includes/class-mla-settings.php:1756
566
  msgid "Menu Order"
567
  msgstr ""
568
 
569
+ #: includes/class-mla-data.php:5753 includes/class-mla-edit-media.php:389
570
+ #: includes/class-mla-list-table.php:1450
571
+ #: includes/class-mla-list-table.php:1453 includes/class-mla-main.php:2005
572
+ #: includes/class-mla-main.php:2107 includes/class-mla-main.php:2336
573
  msgid "Author"
574
  msgstr ""
575
 
576
+ #: includes/class-mla-data.php:5762 includes/class-mla-edit-media.php:412
577
+ #: includes/class-mla-main.php:2146
578
  msgid "Comments"
579
  msgstr ""
580
 
581
+ #: includes/class-mla-data.php:5771 includes/class-mla-edit-media.php:413
582
+ #: includes/class-mla-main.php:2147
583
  msgid "Pings"
584
  msgstr ""
585
 
586
+ #: includes/class-mla-data.php:5802
587
  msgid "Adding"
588
  msgstr ""
589
 
590
+ #: includes/class-mla-data.php:5806
591
  msgid "Removing"
592
  msgstr ""
593
 
594
+ #: includes/class-mla-data.php:5815
595
  msgid "Replacing"
596
  msgstr ""
597
 
598
+ #: includes/class-mla-data.php:5823
599
  msgid "Ignoring"
600
  msgstr ""
601
 
602
  #. translators: 1: action_name, 2: taxonomy
603
+ #: includes/class-mla-data.php:5836
604
  #, php-format
605
  msgid "%1$s \"%2$s\" terms"
606
  msgstr ""
607
 
608
  #. translators: 1: taxonomy
609
+ #: includes/class-mla-data.php:5840
610
  #, php-format
611
  msgid "You cannot assign \"%1$s\" terms"
612
  msgstr ""
613
 
614
  #. translators: 1: post ID
615
+ #: includes/class-mla-data.php:5852 includes/class-mla-main.php:1159
616
  #, php-format
617
  msgid "Item %1$d, no changes detected."
618
  msgstr ""
619
 
620
  #. translators: 1: post ID
621
+ #: includes/class-mla-data.php:5864
622
  #, php-format
623
  msgid "Item %1$d updated."
624
  msgstr ""
625
 
626
  #. translators: 1: ERROR tag 2: post ID
627
+ #: includes/class-mla-data.php:5878
628
  #, php-format
629
  msgid "%1$s: Item %2$d update failed."
630
  msgstr ""
631
 
632
+ #: includes/class-mla-edit-media.php:150 includes/class-mla-edit-media.php:186
633
+ #: includes/class-mla-edit-media.php:235 includes/class-mla-main.php:349
634
+ #: includes/class-mla-main.php:386 includes/class-mla-main.php:1055
635
+ #: includes/class-mla-main.php:1821 includes/class-mla-media-modal.php:413
636
+ #: includes/class-mla-options.php:3962 includes/class-mla-settings.php:340
637
  msgctxt "tag_delimiter"
638
  msgid ","
639
  msgstr ""
640
 
641
+ #: includes/class-mla-edit-media.php:185
642
  msgid "Upload New Media items"
643
  msgstr ""
644
 
645
+ #: includes/class-mla-edit-media.php:187 includes/class-mla-edit-media.php:237
646
+ #: includes/class-mla-main.php:373
647
  msgid "An ajax.fail error has occurred. Please reload the page and try again."
648
  msgstr ""
649
 
650
+ #: includes/class-mla-edit-media.php:188 includes/class-mla-edit-media.php:238
651
+ #: includes/class-mla-main.php:374
652
  msgid "An ajax.done error has occurred. Please reload the page and try again."
653
  msgstr ""
654
 
655
+ #: includes/class-mla-edit-media.php:190 includes/class-mla-edit-media.php:408
656
  msgid "Open Bulk Edit area"
657
  msgstr ""
658
 
659
+ #: includes/class-mla-edit-media.php:191
660
  msgid "Close Bulk Edit area"
661
  msgstr ""
662
 
663
+ #: includes/class-mla-edit-media.php:332 includes/class-mla-main.php:2040
664
  msgid "more"
665
  msgstr ""
666
 
667
+ #: includes/class-mla-edit-media.php:333 includes/class-mla-main.php:2041
668
  msgid "less"
669
  msgstr ""
670
 
671
+ #: includes/class-mla-edit-media.php:336 includes/class-mla-edit-media.php:367
672
+ #: includes/class-mla-main.php:2044 includes/class-mla-main.php:2082
673
  msgid "Add"
674
  msgstr ""
675
 
676
+ #: includes/class-mla-edit-media.php:337 includes/class-mla-edit-media.php:368
677
+ #: includes/class-mla-main.php:2045 includes/class-mla-main.php:2083
678
  msgid "Remove"
679
  msgstr ""
680
 
681
+ #: includes/class-mla-edit-media.php:338 includes/class-mla-edit-media.php:369
682
+ #: includes/class-mla-main.php:2046 includes/class-mla-main.php:2084
683
+ #: includes/class-mla-options.php:3498 includes/class-mla-options.php:3601
684
+ #: includes/class-mla-options.php:3645 includes/class-mla-options.php:4654
685
+ #: includes/class-mla-options.php:4704 includes/class-mla-options.php:4823
686
+ #: includes/class-mla-options.php:4865 includes/class-mla-options.php:4890
687
  msgid "Replace"
688
  msgstr ""
689
 
690
+ #: includes/class-mla-edit-media.php:414 includes/class-mla-main.php:2148
691
+ #: includes/class-mla-main.php:2194 includes/class-mla-settings.php:1766
692
+ #: includes/class-mla-settings.php:1804 includes/class-mla-settings.php:2231
693
  msgid "No Change"
694
  msgstr ""
695
 
696
+ #: includes/class-mla-edit-media.php:415 includes/class-mla-main.php:2149
697
  msgid "Allow"
698
  msgstr ""
699
 
700
+ #: includes/class-mla-edit-media.php:416 includes/class-mla-main.php:2150
701
  msgid "Do not allow"
702
  msgstr ""
703
 
704
+ #: includes/class-mla-edit-media.php:423 includes/class-mla-list-table.php:975
705
+ #: includes/class-mla-list-table.php:1067 includes/class-mla-main.php:2133
706
  msgid "Parent ID"
707
  msgstr ""
708
 
709
+ #: includes/class-mla-edit-media.php:424 includes/class-mla-edit-media.php:744
710
+ #: includes/class-mla-main.php:2134
711
  #: includes/class-mla-upload-optional-list-table.php:281
712
  msgid "Select"
713
  msgstr ""
714
 
715
+ #: includes/class-mla-edit-media.php:501
716
  msgid "Custom field mapping updated."
717
  msgstr ""
718
 
719
+ #: includes/class-mla-edit-media.php:502
720
  msgid "IPTC/EXIF mapping updated."
721
  msgstr ""
722
 
723
  #. translators: date_i18n format for last modified date and time
724
+ #: includes/class-mla-edit-media.php:520
725
  msgid "M j, Y @ G:i"
726
  msgstr ""
727
 
728
+ #: includes/class-mla-edit-media.php:522 includes/class-mla-main.php:2500
729
  msgid "Last modified"
730
  msgstr ""
731
 
732
+ #: includes/class-mla-edit-media.php:533
733
  msgid "Map Custom Field metadata for this item"
734
  msgstr ""
735
 
736
+ #: includes/class-mla-edit-media.php:533 includes/class-mla-main.php:1745
737
+ #: includes/class-mla-main.php:2153
738
+ msgid "Map Custom Field metadata"
739
  msgstr ""
740
 
741
+ #: includes/class-mla-edit-media.php:535
742
  msgid "Map IPTC/EXIF metadata for this item"
743
  msgstr ""
744
 
745
+ #: includes/class-mla-edit-media.php:535 includes/class-mla-main.php:1748
746
+ #: includes/class-mla-main.php:2152 includes/class-mla-main.php:2493
747
+ msgid "Map IPTC/EXIF metadata"
748
  msgstr ""
749
 
750
+ #: includes/class-mla-edit-media.php:607 includes/class-mla-edit-media.php:745
751
+ #: includes/class-mla-main.php:2518
752
  msgid "Parent Info"
753
  msgstr ""
754
 
755
+ #: includes/class-mla-edit-media.php:617 includes/class-mla-edit-media.php:788
756
  msgid "Attachment Metadata"
757
  msgstr ""
758
 
759
+ #: includes/class-mla-edit-media.php:622 includes/class-mla-edit-media.php:822
760
+ #: includes/class-mla-main.php:2529 includes/class-mla-options.php:472
761
  msgid "Featured in"
762
  msgstr ""
763
 
764
+ #: includes/class-mla-edit-media.php:626 includes/class-mla-edit-media.php:861
765
+ #: includes/class-mla-main.php:2531 includes/class-mla-options.php:481
766
  msgid "Inserted in"
767
  msgstr ""
768
 
769
+ #: includes/class-mla-edit-media.php:630 includes/class-mla-edit-media.php:896
770
+ #: includes/class-mla-main.php:2533 includes/class-mla-options.php:490
771
+ #: includes/class-mla-settings.php:3917
772
  msgid "Gallery in"
773
  msgstr ""
774
 
775
+ #: includes/class-mla-edit-media.php:634 includes/class-mla-edit-media.php:931
776
+ #: includes/class-mla-main.php:2535 includes/class-mla-options.php:499
777
+ #: includes/class-mla-settings.php:3927
778
  msgid "MLA Gallery in"
779
  msgstr ""
780
 
781
  #. translators: 1: ERROR tag 2: function name 3: template key
782
+ #: includes/class-mla-edit-media.php:677 includes/class-mla-main.php:613
783
  #: includes/class-mla-settings.php:555
784
  #, php-format
785
  msgctxt "error_log"
786
  msgid "%1$s: %2$s discarding \"%3$s\"; no title/order"
787
  msgstr ""
788
 
789
+ #: includes/class-mla-edit-media.php:723 includes/class-mla-list-table.php:773
790
+ #: includes/class-mla-main.php:1651
791
  msgid "Scheduled"
792
  msgstr ""
793
 
794
+ #: includes/class-mla-edit-media.php:726 includes/class-mla-list-table.php:776
795
  msgctxt "post state"
796
  msgid "Pending"
797
  msgstr ""
798
 
799
+ #: includes/class-mla-edit-media.php:729 includes/class-mla-list-table.php:770
800
+ #: includes/class-mla-main.php:1657
801
  msgid "Draft"
802
  msgstr ""
803
 
804
+ #: includes/class-mla-edit-media.php:743
805
  msgid "Post Parent"
806
  msgstr ""
807
 
808
+ #: includes/class-mla-edit-media.php:744 includes/class-mla-main.php:1929
809
  msgid "Select Parent"
810
  msgstr ""
811
 
812
+ #: includes/class-mla-edit-media.php:811 includes/class-mla-edit-media.php:849
813
+ #: includes/class-mla-edit-media.php:885 includes/class-mla-edit-media.php:920
814
+ #: includes/class-mla-list-table.php:1117
815
+ #: includes/class-mla-list-table.php:1166
816
+ #: includes/class-mla-list-table.php:1212
817
+ #: includes/class-mla-list-table.php:1257 includes/class-mla-main.php:2349
818
+ #: includes/class-mla-main.php:2368 includes/class-mla-main.php:2385
819
+ #: includes/class-mla-main.php:2401
820
  msgid "PARENT"
821
  msgstr ""
822
 
823
+ #: includes/class-mla-edit-media.php:1114
824
  msgid "Most Used"
825
  msgstr ""
826
 
827
  #. translators: %s: add new taxonomy label
828
+ #: includes/class-mla-edit-media.php:1143
829
  #, php-format
830
  msgid "+ %s"
831
  msgstr ""
832
 
833
+ #: includes/class-mla-edit-media.php:1149 includes/class-mla-main.php:1930
834
+ #: includes/class-mla-media-modal.php:1216
835
+ #: includes/mla-media-modal-js-template.php:20
836
+ #: includes/mla-media-modal-js-template.php:61
837
+ msgid "Search"
838
+ msgstr ""
839
+
840
+ #: includes/class-mla-image-editor.php:141
841
+ msgid "File doesn&#8217;t exist?"
842
+ msgstr ""
843
+
844
+ #: includes/class-mla-image-editor.php:198
845
+ msgid "File is not an image."
846
  msgstr ""
847
 
848
  #: includes/class-mla-list-table.php:200
955
  msgstr ""
956
 
957
  #: includes/class-mla-list-table.php:627
958
+ #: includes/class-mla-list-table.php:1352 includes/class-mla-options.php:604
959
  #: includes/class-mla-options.php:806 includes/class-mla-options.php:830
960
+ #: includes/class-mla-options.php:844 includes/class-mla-settings.php:2305
961
  msgid "None"
962
  msgstr ""
963
 
964
  #: includes/class-mla-list-table.php:633 includes/class-mla-list-table.php:665
965
+ #: includes/class-mla-list-table.php:975
966
+ #: includes/class-mla-list-table.php:1067
967
+ #: includes/class-mla-list-table.php:1290
968
+ #: includes/class-mla-list-table.php:1334
969
+ #: includes/class-mla-list-table.php:1366
970
+ #: includes/class-mla-list-table.php:1450
971
  msgid "Filter by"
972
  msgstr ""
973
 
974
  #: includes/class-mla-list-table.php:643
975
+ #: includes/class-mla-media-modal.php:898
976
+ msgid "Not Supported"
977
  msgstr ""
978
 
979
  #. translators: 1: column_name 2: column_values
985
  msgid "column_default: %1$s, %2$s"
986
  msgstr ""
987
 
988
+ #: includes/class-mla-list-table.php:751 includes/class-mla-list-table.php:827
989
+ #: includes/class-mla-list-table.php:829
990
  #: includes/class-mla-upload-list-table.php:312
991
  #: includes/class-mla-view-list-table.php:302
992
  msgid "Edit this item"
993
  msgstr ""
994
 
995
  #: includes/class-mla-list-table.php:751 includes/class-mla-list-table.php:754
996
+ #: includes/class-mla-list-table.php:827 includes/class-mla-list-table.php:829
997
+ #: includes/class-mla-list-table.php:1122
998
+ #: includes/class-mla-list-table.php:1171
999
+ #: includes/class-mla-list-table.php:1217
1000
+ #: includes/class-mla-list-table.php:1262
1001
+ #: includes/class-mla-list-table.php:1470
1002
+ #: includes/class-mla-list-table.php:1774
1003
  #: includes/class-mla-upload-list-table.php:312
1004
  #: includes/class-mla-upload-list-table.php:610
1005
  #: includes/class-mla-view-list-table.php:302
1007
  msgid "Edit"
1008
  msgstr ""
1009
 
1010
+ #: includes/class-mla-list-table.php:779
1011
+ msgid "Trash"
1012
+ msgstr ""
1013
+
1014
+ #: includes/class-mla-list-table.php:815
1015
  msgid "Restore this item from the Trash"
1016
  msgstr ""
1017
 
1018
+ #: includes/class-mla-list-table.php:815
1019
+ #: includes/class-mla-list-table.php:1771
1020
  msgid "Restore"
1021
  msgstr ""
1022
 
1023
+ #: includes/class-mla-list-table.php:832
1024
  #: includes/class-mla-upload-list-table.php:314
1025
  #: includes/class-mla-view-list-table.php:304
1026
  msgid "Edit this item inline"
1027
  msgstr ""
1028
 
1029
+ #: includes/class-mla-list-table.php:832 includes/class-mla-main.php:2127
1030
+ #: includes/class-mla-options.php:3375 includes/class-mla-options.php:3682
1031
  #: includes/class-mla-upload-list-table.php:314
1032
  #: includes/class-mla-view-list-table.php:304
1033
  msgid "Quick Edit"
1034
  msgstr ""
1035
 
1036
+ #: includes/class-mla-list-table.php:838
1037
  msgid "Move this item to the Trash"
1038
  msgstr ""
1039
 
1040
+ #: includes/class-mla-list-table.php:838
1041
+ #: includes/class-mla-list-table.php:1777
1042
  msgid "Move to Trash"
1043
  msgstr ""
1044
 
1045
+ #: includes/class-mla-list-table.php:843
1046
  #: includes/class-mla-upload-list-table.php:318
1047
  #: includes/class-mla-view-list-table.php:310
1048
  msgid "Delete this item Permanently"
1049
  msgstr ""
1050
 
1051
+ #: includes/class-mla-list-table.php:843
1052
+ #: includes/class-mla-list-table.php:1772
1053
+ #: includes/class-mla-list-table.php:1779
1054
  #: includes/class-mla-upload-list-table.php:318
1055
  #: includes/class-mla-view-list-table.php:310
1056
  #: includes/class-mla-view-list-table.php:514
1057
  msgid "Delete Permanently"
1058
  msgstr ""
1059
 
1060
+ #: includes/class-mla-list-table.php:851 includes/class-mla-settings.php:3021
1061
  msgid "Download"
1062
  msgstr ""
1063
 
1064
+ #: includes/class-mla-list-table.php:854 includes/class-mla-settings.php:1744
1065
  msgid "View"
1066
  msgstr ""
1067
 
1068
+ #: includes/class-mla-list-table.php:900 includes/class-mla-list-table.php:972
1069
+ #: includes/class-mla-main.php:377 includes/class-mla-main.php:1642
1070
  msgid "(no title)"
1071
  msgstr ""
1072
 
1073
+ #: includes/class-mla-list-table.php:1064
 
 
 
 
 
1074
  msgid "(no title: bad ID)"
1075
  msgstr ""
1076
 
1077
+ #: includes/class-mla-list-table.php:1099
1078
+ #: includes/class-mla-list-table.php:1144
1079
+ #: includes/class-mla-list-table.php:1194
1080
+ #: includes/class-mla-list-table.php:1239 includes/class-mla-main.php:2357
1081
+ #: includes/class-mla-main.php:2377 includes/class-mla-main.php:2393
1082
+ #: includes/class-mla-main.php:2409 includes/class-mla-options.php:476
1083
  #: includes/class-mla-options.php:485 includes/class-mla-options.php:494
1084
  #: includes/class-mla-options.php:503
1085
  msgid "Disabled"
1086
  msgstr ""
1087
 
1088
+ #: includes/class-mla-list-table.php:1337 includes/class-mla-settings.php:1849
1089
+ #: includes/class-mla-settings.php:2214
1090
  msgid "MIME Type"
1091
  msgstr ""
1092
 
1093
+ #: includes/class-mla-list-table.php:1370
1094
  msgid "Base File"
1095
  msgstr ""
1096
 
1097
+ #: includes/class-mla-list-table.php:1386
1098
+ #: includes/class-mla-list-table.php:1419
1099
  msgid "Unpublished"
1100
  msgstr ""
1101
 
1102
  #. translators: 1: upload/last modified date and time
1103
+ #: includes/class-mla-list-table.php:1395
1104
+ #: includes/class-mla-list-table.php:1426
1105
  #, php-format
1106
  msgid "%1$s from now"
1107
  msgstr ""
1108
 
1109
  #. translators: 1: upload/last modified date and time
1110
+ #: includes/class-mla-list-table.php:1398
1111
+ #: includes/class-mla-list-table.php:1428
1112
  #, php-format
1113
  msgid "%1$s ago"
1114
  msgstr ""
1115
 
1116
  #. translators: format for upload/last modified date
1117
  #. translators: date format in table columns, see http://php.net/date
1118
+ #: includes/class-mla-list-table.php:1402
1119
+ #: includes/class-mla-list-table.php:1431
1120
+ #: includes/class-mla-list-table.php:1487 includes/class-mla-main.php:1667
1121
  msgid "Y/m/d"
1122
  msgstr ""
1123
 
1124
+ #: includes/class-mla-list-table.php:1489 includes/class-mla-options.php:1194
1125
+ msgctxt "table_view_singular"
 
 
 
 
1126
  msgid "Unattached"
1127
  msgstr ""
1128
 
1129
+ #: includes/class-mla-list-table.php:1492
1130
  msgid "Set Parent"
1131
  msgstr ""
1132
 
1133
+ #: includes/class-mla-list-table.php:1623
1134
  msgctxt "uploaded files"
1135
  msgid "All"
1136
  msgid_plural "All"
1137
  msgstr[0] ""
1138
  msgstr[1] ""
1139
 
1140
+ #: includes/class-mla-list-table.php:1805
1141
  msgid "Filter"
1142
  msgstr ""
1143
 
1144
+ #: includes/class-mla-list-table.php:1809
1145
  #: includes/mla-media-modal-js-template.php:58
1146
  msgid "Terms Search"
1147
  msgstr ""
1148
 
1149
+ #: includes/class-mla-list-table.php:1815
1150
  msgid "Clear Filter-by"
1151
  msgstr ""
1152
 
1153
+ #: includes/class-mla-list-table.php:1819
1154
  msgid "Empty Trash"
1155
  msgstr ""
1156
 
1157
+ #: includes/class-mla-main.php:375 includes/class-mla-settings.php:337
1158
  msgid "Error while saving the changes."
1159
  msgstr ""
1160
 
1161
+ #: includes/class-mla-main.php:376 includes/class-mla-settings.php:338
1162
  msgid "Remove From Bulk Edit"
1163
  msgstr ""
1164
 
1165
+ #: includes/class-mla-main.php:378
1166
  msgid "Bulk Edit items"
1167
  msgstr ""
1168
 
1169
+ #: includes/class-mla-main.php:379 includes/class-mla-main.php:2154
1170
  #: includes/class-mla-settings.php:349
1171
  msgid "Waiting"
1172
  msgstr ""
1173
 
1174
+ #: includes/class-mla-main.php:380 includes/class-mla-main.php:2156
1175
  #: includes/class-mla-settings.php:351
1176
  msgid "Complete"
1177
  msgstr ""
1178
 
1179
+ #: includes/class-mla-main.php:381 includes/class-mla-settings.php:352
1180
  msgid "Unchanged"
1181
  msgstr ""
1182
 
1183
+ #: includes/class-mla-main.php:382 includes/class-mla-settings.php:353
1184
  msgid "Succeeded"
1185
  msgstr ""
1186
 
1187
+ #: includes/class-mla-main.php:383 includes/class-mla-settings.php:354
1188
  msgid "Failed"
1189
  msgstr ""
1190
 
1191
+ #: includes/class-mla-main.php:384 includes/class-mla-settings.php:357
1192
  msgid "CANCELED"
1193
  msgstr ""
1194
 
1195
+ #: includes/class-mla-main.php:495
1196
  #, php-format
1197
  msgid "Item permanently deleted."
1198
  msgid_plural "%d items permanently deleted."
1200
  msgstr[1] ""
1201
 
1202
  #. translators: 1: post ID
1203
+ #: includes/class-mla-main.php:500 includes/class-mla-main.php:2617
1204
  #, php-format
1205
  msgid "Item %1$d moved to Trash."
1206
  msgstr ""
1207
 
1208
+ #: includes/class-mla-main.php:519
1209
  msgid "Entries per page"
1210
  msgstr ""
1211
 
1212
+ #: includes/class-mla-main.php:911
1213
  msgid "You are not allowed to edit Attachment: "
1214
  msgstr ""
1215
 
1216
  #. translators: 1: ERROR tag 2: bulk action
1217
+ #: includes/class-mla-main.php:1149
1218
  #, php-format
1219
  msgid "%1$s: Unknown bulk action %2$s"
1220
  msgstr ""
1221
 
1222
+ #: includes/class-mla-main.php:1171
1223
  msgid "no changes detected"
1224
  msgstr ""
1225
 
1226
  #. translators: 1: action name, e.g., edit
1227
+ #: includes/class-mla-main.php:1217 includes/class-mla-settings.php:1623
1228
+ #: includes/class-mla-settings.php:2090
1229
  #, php-format
1230
  msgid "Bulk Action %1$s - no items selected."
1231
  msgstr ""
1232
 
1233
+ #: includes/class-mla-main.php:1268
1234
  msgid "You do not have permission to manage attachments."
1235
  msgstr ""
1236
 
1237
  #. translators: 1: number of items
1238
+ #: includes/class-mla-main.php:1335
1239
  #, php-format
1240
  msgctxt "deleted items"
1241
  msgid "%s item deleted."
1243
  msgstr[0] ""
1244
  msgstr[1] ""
1245
 
1246
+ #: includes/class-mla-main.php:1337
1247
  msgid "No items deleted."
1248
  msgstr ""
1249
 
1250
+ #: includes/class-mla-main.php:1362
1251
  msgid "Edit single item"
1252
  msgstr ""
1253
 
1254
  #. translators: 1: post ID
1255
+ #: includes/class-mla-main.php:1377
1256
  #, php-format
1257
  msgid "Item %1$d cancelled."
1258
  msgstr ""
1259
 
1260
+ #: includes/class-mla-main.php:1412
1261
  msgid "Empty Terms Search; ignored"
1262
  msgstr ""
1263
 
1264
  #. translators: 1: row-level action, e.g., single_item_delete, single_item_edit
1265
  #. translators: 1: bulk_action, e.g., single_item_delete, single_item_edit
1266
+ #: includes/class-mla-main.php:1424 includes/class-mla-settings.php:1660
1267
+ #: includes/class-mla-settings.php:2129
1268
  #, php-format
1269
  msgid "Unknown mla_admin_action - \"%1$s\""
1270
  msgstr ""
1271
 
1272
+ #: includes/class-mla-main.php:1457
1273
  msgid "term search results for"
1274
  msgstr ""
1275
 
1276
+ #: includes/class-mla-main.php:1460
1277
  msgid "post/parent results for"
1278
  msgstr ""
1279
 
1280
+ #: includes/class-mla-main.php:1462
1281
  msgid "search results for"
1282
  msgstr ""
1283
 
1284
+ #: includes/class-mla-main.php:1638 includes/class-mla-main.php:1939
1285
  msgid "Type"
1286
  msgstr ""
1287
 
1288
+ #: includes/class-mla-main.php:1638 includes/class-mla-main.php:1940
1289
  msgid "Date"
1290
  msgstr ""
1291
 
1292
+ #: includes/class-mla-main.php:1638 includes/class-mla-main.php:1941
1293
+ #: includes/class-mla-settings.php:2230
1294
  msgid "Status"
1295
  msgstr ""
1296
 
1297
+ #: includes/class-mla-main.php:1648
1298
  msgid "Published"
1299
  msgstr ""
1300
 
1301
+ #: includes/class-mla-main.php:1654
1302
  msgid "Pending Review"
1303
  msgstr ""
1304
 
1305
+ #: includes/class-mla-main.php:1696 includes/class-mla-main.php:1777
1306
  msgid "No post ID found"
1307
  msgstr ""
1308
 
1309
+ #: includes/class-mla-main.php:1703 includes/class-mla-main.php:1784
1310
+ #: includes/class-mla-main.php:2294
1311
  msgid "You are not allowed to edit this Attachment."
1312
  msgstr ""
1313
 
1314
+ #: includes/class-mla-main.php:1751 includes/class-mla-main.php:1951
1315
+ #: includes/class-mla-main.php:2141 includes/class-mla-main.php:2492
1316
+ #: includes/class-mla-settings.php:1503 includes/class-mla-settings.php:1764
1317
+ #: includes/class-mla-settings.php:1858 includes/class-mla-settings.php:2228
 
 
 
 
 
1318
  msgid "Update"
1319
  msgstr ""
1320
 
1321
+ #: includes/class-mla-main.php:1886
1322
  msgid "All Post Types"
1323
  msgstr ""
1324
 
1325
+ #: includes/class-mla-main.php:1932
 
 
 
 
 
 
1326
  msgid "For"
1327
  msgstr ""
1328
 
1329
+ #: includes/class-mla-main.php:1942 includes/class-mla-shortcodes.php:833
1330
  msgid "Unattached"
1331
  msgstr ""
1332
 
1333
+ #: includes/class-mla-main.php:1947 includes/class-mla-main.php:2140
1334
+ #: includes/class-mla-main.php:2491 includes/class-mla-settings.php:1504
1335
+ #: includes/class-mla-settings.php:1763 includes/class-mla-settings.php:1859
1336
+ #: includes/class-mla-settings.php:1931 includes/class-mla-settings.php:2227
1337
+ #: includes/class-mla-settings.php:2698 includes/class-mla-settings.php:2834
1338
  msgid "Cancel"
1339
  msgstr ""
1340
 
1341
+ #: includes/class-mla-main.php:2142 includes/class-mla-options.php:3389
1342
+ #: includes/class-mla-options.php:3683 includes/class-mla-settings.php:1765
1343
+ #: includes/class-mla-settings.php:2229
1344
  msgid "Bulk Edit"
1345
  msgstr ""
1346
 
1347
+ #: includes/class-mla-main.php:2155
1348
  msgid "In-process"
1349
  msgstr ""
1350
 
1351
+ #: includes/class-mla-main.php:2157 includes/class-mla-options.php:494
1352
+ #: includes/class-mla-options.php:503 includes/class-mla-settings.php:2701
1353
+ #: includes/class-mla-settings.php:2837
1354
  msgid "Refresh"
1355
  msgstr ""
1356
 
1357
+ #: includes/class-mla-main.php:2246
1358
  msgid "You are not allowed to delete this item."
1359
  msgstr ""
1360
 
1361
  #. translators: 1: ERROR tag 2: post ID
1362
+ #: includes/class-mla-main.php:2254
1363
  #, php-format
1364
  msgid "%1$s: Item %2$d could NOT be deleted."
1365
  msgstr ""
1366
 
1367
  #. translators: 1: post ID
1368
+ #: includes/class-mla-main.php:2261
1369
  #, php-format
1370
  msgid "Item %1$d permanently deleted."
1371
  msgstr ""
1372
 
1373
  #. translators: 1: ERROR tag 2: page_template_array
1374
+ #: includes/class-mla-main.php:2321
1375
  #, php-format
1376
  msgctxt "error_log"
1377
  msgid "%1$s: MLA::_display_single_item \\$page_template_array = \"%2$s\""
1378
  msgstr ""
1379
 
1380
+ #: includes/class-mla-main.php:2495
1381
  msgid "File name"
1382
  msgstr ""
1383
 
1384
+ #: includes/class-mla-main.php:2497
1385
  msgid "File type"
1386
  msgstr ""
1387
 
1388
+ #: includes/class-mla-main.php:2498
1389
  msgid "Upload date"
1390
  msgstr ""
1391
 
1392
+ #: includes/class-mla-main.php:2502
1393
  msgid "Dimensions"
1394
  msgstr ""
1395
 
1396
+ #: includes/class-mla-main.php:2506
1397
  msgid "required"
1398
  msgstr ""
1399
 
1400
+ #: includes/class-mla-main.php:2510
1401
  msgid "Must be unique; will be validated."
1402
  msgstr ""
1403
 
1404
+ #: includes/class-mla-main.php:2513
1405
  msgid "Alternate text for the image, e.g. &#8220;The Mona Lisa&#8221;"
1406
  msgstr ""
1407
 
1408
+ #: includes/class-mla-main.php:2521
1409
  msgid "ID, type and title of parent, if any."
1410
  msgstr ""
1411
 
1412
+ #: includes/class-mla-main.php:2524
1413
  msgid "File URL"
1414
  msgstr ""
1415
 
1416
+ #: includes/class-mla-main.php:2526
1417
  msgid "Location of the uploaded file."
1418
  msgstr ""
1419
 
1420
+ #: includes/class-mla-main.php:2527
1421
  msgid "Image Metadata"
1422
  msgstr ""
1423
 
1424
+ #: includes/class-mla-main.php:2562
1425
  msgid "You are not allowed to move this item out of the Trash."
1426
  msgstr ""
1427
 
1428
  #. translators: 1: ERROR tag 2: post ID
1429
+ #: includes/class-mla-main.php:2570
1430
  #, php-format
1431
  msgid "%1$s: Item %2$d could NOT be restored from Trash."
1432
  msgstr ""
1433
 
1434
  #. translators: 1: post ID
1435
+ #: includes/class-mla-main.php:2585
1436
  #, php-format
1437
  msgid "Item %1$d restored from Trash."
1438
  msgstr ""
1439
 
1440
+ #: includes/class-mla-main.php:2602
1441
  msgid "You are not allowed to move this item to the Trash."
1442
  msgstr ""
1443
 
1444
  #. translators: 1: ERROR tag 2: post ID
1445
+ #: includes/class-mla-main.php:2610
1446
  #, php-format
1447
  msgid "%1$s: Item %2$d could NOT be moved to Trash."
1448
  msgstr ""
1465
  msgid "%1$s %2$d"
1466
  msgstr ""
1467
 
 
 
 
 
 
1468
  #: includes/class-mla-media-modal.php:518
1469
  msgid "Search Box"
1470
  msgstr ""
1481
  #. translators: %s: add new View
1482
  #. translators: %s: add new Upload MIME Type
1483
  #: includes/class-mla-media-modal.php:860 includes/class-mla-objects.php:46
1484
+ #: includes/class-mla-objects.php:76 includes/class-mla-settings.php:1744
1485
+ #: includes/class-mla-settings.php:2210
1486
  #, php-format
1487
  msgid "Add New %1$s"
1488
  msgstr ""
1491
  msgid "Choose from the most used tags"
1492
  msgstr ""
1493
 
 
 
 
 
1494
  #: includes/class-mla-media-modal.php:1199
1495
  #: includes/class-mla-media-modal.php:1215
1496
  msgid "Search Terms"
1516
  msgid "Any term"
1517
  msgstr ""
1518
 
1519
+ #: includes/class-mla-media-modal.php:1226
1520
+ msgid "Exact"
1521
+ msgstr ""
1522
+
1523
  #: includes/class-mla-mime-types.php:364
1524
  msgctxt "post_mime_types"
1525
  msgid "Manage"
1562
 
1563
  #: includes/class-mla-mime-types.php:953
1564
  #: includes/class-mla-mime-types.php:1041
1565
+ #: includes/class-mla-mime-types.php:1052 includes/class-mla-settings.php:1488
1566
+ #: includes/class-mla-settings.php:1745
1567
  msgid "Slug"
1568
  msgstr ""
1569
 
1617
  msgid "%1$s: Did not find view \"%2$s\""
1618
  msgstr ""
1619
 
1620
+ #: includes/class-mla-mime-types.php:1454 includes/class-mla-options.php:1140
1621
+ msgctxt "table_view_singular"
1622
  msgid "All"
1623
  msgstr ""
1624
 
1625
+ #: includes/class-mla-mime-types.php:1455 includes/class-mla-options.php:1141
1626
+ msgctxt "table_view_plural"
1627
  msgid "All"
1628
  msgstr ""
1629
 
1630
  #: includes/class-mla-mime-types.php:1458
1631
+ msgctxt "table_view_singular"
1632
  msgid "Active"
1633
  msgstr ""
1634
 
1635
  #: includes/class-mla-mime-types.php:1459
1636
+ msgctxt "table_view_plural"
1637
  msgid "Active"
1638
  msgstr ""
1639
 
1640
  #: includes/class-mla-mime-types.php:1462
1641
+ msgctxt "table_view_singular"
1642
  msgid "Inactive"
1643
  msgstr ""
1644
 
1645
  #: includes/class-mla-mime-types.php:1463
1646
+ msgctxt "table_view_plural"
1647
  msgid "Inactive"
1648
  msgstr ""
1649
 
1650
  #: includes/class-mla-mime-types.php:1466
1651
+ msgctxt "table_view_singular"
1652
  msgid "WordPress"
1653
  msgstr ""
1654
 
1655
  #: includes/class-mla-mime-types.php:1467
1656
+ msgctxt "table_view_plural"
1657
  msgid "WordPress"
1658
  msgstr ""
1659
 
1660
  #: includes/class-mla-mime-types.php:1470
1661
+ msgctxt "table_view_singular"
1662
  msgid "MLA"
1663
  msgstr ""
1664
 
1665
  #: includes/class-mla-mime-types.php:1471
1666
+ msgctxt "table_view_plural"
1667
  msgid "MLA"
1668
  msgstr ""
1669
 
1670
  #: includes/class-mla-mime-types.php:1474
1671
+ msgctxt "table_view_singular"
1672
  msgid "Custom"
1673
  msgstr ""
1674
 
1675
  #: includes/class-mla-mime-types.php:1475
1676
+ msgctxt "table_view_plural"
1677
  msgid "Custom"
1678
  msgstr ""
1679
 
1692
 
1693
  #: includes/class-mla-mime-types.php:1988
1694
  #: includes/class-mla-mime-types.php:2114
1695
+ #: includes/class-mla-mime-types.php:2125 includes/class-mla-settings.php:1847
1696
+ #: includes/class-mla-settings.php:2212
1697
+ msgid "Extension"
1698
  msgstr ""
1699
 
1700
  #. translators: 1: ERROR tag 2: slug
1874
  msgid "tpls/mla-option-templates.tpl not found"
1875
  msgstr ""
1876
 
1877
+ #: includes/class-mla-options.php:441 includes/class-mla-options.php:1719
1878
  msgid "Attachment Categories"
1879
  msgstr ""
1880
 
1882
  msgid "Check this option to add support for Attachment Categories."
1883
  msgstr ""
1884
 
1885
+ #: includes/class-mla-options.php:448 includes/class-mla-options.php:1734
1886
  msgid "Attachment Tags"
1887
  msgstr ""
1888
 
1890
  msgid "Check this option to add support for Attachment Tags."
1891
  msgstr ""
1892
 
1893
+ #: includes/class-mla-options.php:455 includes/class-mla-settings.php:1330
1894
  msgid "Where-used Reporting"
1895
  msgstr ""
1896
 
1948
  "Cached."
1949
  msgstr ""
1950
 
1951
+ #: includes/class-mla-options.php:508 includes/class-mla-settings.php:1330
1952
  msgid "Taxonomy Support"
1953
  msgstr ""
1954
 
1981
  msgstr ""
1982
 
1983
  #: includes/class-mla-options.php:523 includes/class-mla-options.php:704
1984
+ #: includes/class-mla-settings.php:1362 includes/class-mla-settings.php:1363
1985
  msgid "For complete documentation"
1986
  msgstr ""
1987
 
1988
  #: includes/class-mla-options.php:523 includes/class-mla-options.php:704
1989
+ #: includes/class-mla-settings.php:1362 includes/class-mla-settings.php:1363
1990
  msgid "click here"
1991
  msgstr ""
1992
 
2027
  msgstr ""
2028
 
2029
  #: includes/class-mla-options.php:566 includes/class-mla-settings.php:442
2030
+ #: includes/class-mla-settings.php:3064 includes/class-mla-settings.php:3086
2031
  msgid "Media Library Assistant"
2032
  msgstr ""
2033
 
2321
 
2322
  #: includes/class-mla-options.php:806 includes/class-mla-options.php:815
2323
  #: includes/class-mla-options.php:830 includes/class-mla-options.php:844
2324
+ #: includes/class-mla-options.php:858 includes/class-mla-settings.php:1412
2325
  msgid "Media Manager Default"
2326
  msgstr ""
2327
 
2339
  msgid "Attachment Display Settings"
2340
  msgstr ""
2341
 
 
2342
  #: includes/class-mla-options.php:825 includes/class-mla-options.php:827
2343
  msgid "Alignment"
2344
  msgstr ""
2345
 
2346
+ #. translators: 1: option name, e.g., Alignment, Link To or Size
2347
+ #: includes/class-mla-options.php:827 includes/class-mla-options.php:841
2348
+ #: includes/class-mla-options.php:855
2349
+ #, php-format
2350
+ msgid ""
2351
+ "Select a value for the default %1$s option in the Attachment Display "
2352
+ "Settings."
2353
+ msgstr ""
2354
+
2355
  #: includes/class-mla-options.php:830
2356
  msgid "Left"
2357
  msgstr ""
2364
  msgid "Right"
2365
  msgstr ""
2366
 
 
2367
  #: includes/class-mla-options.php:839 includes/class-mla-options.php:841
2368
  msgid "Link To"
2369
  msgstr ""
2380
  msgid "Custom URL"
2381
  msgstr ""
2382
 
 
2383
  #: includes/class-mla-options.php:853 includes/class-mla-options.php:855
2384
  msgid "Size"
2385
  msgstr ""
2404
  msgid "Default [mla_gallery] Templates and Settings"
2405
  msgstr ""
2406
 
2407
+ #: includes/class-mla-options.php:872 includes/class-mla-options.php:878
2408
+ #: includes/class-mla-options.php:916 includes/class-mla-options.php:922
2409
+ #: includes/class-mla-settings.php:3193 includes/class-mla-settings.php:3204
2410
+ #: includes/class-mla-settings.php:3210 includes/class-mla-settings.php:3214
2411
+ #: includes/class-mla-settings.php:3242 includes/class-mla-settings.php:3253
2412
  msgid "Style Template"
2413
  msgstr ""
2414
 
2419
  msgid "Select the default %1$s for your %2$s shortcodes."
2420
  msgstr ""
2421
 
 
 
 
 
 
 
 
2422
  #: includes/class-mla-options.php:882 includes/class-mla-options.php:926
2423
  msgid "Markup Template"
2424
  msgstr ""
2425
 
2426
  #: includes/class-mla-options.php:888 includes/class-mla-options.php:932
2427
+ #: includes/class-mla-settings.php:3282 includes/class-mla-settings.php:3295
2428
+ #: includes/class-mla-settings.php:3301 includes/class-mla-settings.php:3305
2429
+ #: includes/class-mla-settings.php:3374
2430
  msgid "markup template"
2431
  msgstr ""
2432
 
2468
  msgid "Enter the number of [mla_gallery] columns; must be a positive integer."
2469
  msgstr ""
2470
 
2471
+ #: includes/class-mla-options.php:960
2472
+ msgid "Enable thumbnail substitution"
2473
+ msgstr ""
2474
+
2475
+ #: includes/class-mla-options.php:963
2476
+ msgid ""
2477
+ "Check this option to allow the \"mla_viewer\" to generate thumbnail images "
2478
+ "for PDF documents. Thumbnails are generated dynamically, each time the item "
2479
+ "appears in an [mla_gallery] display.<br>&nbsp;&nbsp;<strong>IMPORTANT: both "
2480
+ "Ghostscript and Imagick/Imagemagick must be installed for this feature.</"
2481
+ "strong>"
2482
+ msgstr ""
2483
+
2484
+ #: includes/class-mla-options.php:967
2485
+ msgid "Enable Featured Images"
2486
+ msgstr ""
2487
+
2488
+ #: includes/class-mla-options.php:970
2489
+ msgid ""
2490
+ "Check this option to extend Featured Image support to all Media Library "
2491
+ "items. The Featured Image can be used as a thumbnail image for the item in "
2492
+ "an [mla_gallery] display."
2493
+ msgstr ""
2494
+
2495
+ #: includes/class-mla-options.php:974
2496
+ msgid "Enable explicit Ghostscript check"
2497
+ msgstr ""
2498
+
2499
+ #: includes/class-mla-options.php:977
2500
+ msgid ""
2501
+ "Check this option to enable the explicit check for Ghostscript support "
2502
+ "required for thumbnail generation. If your Ghostscript software is in a non-"
2503
+ "standard location, unchecking this option bypasses the check. Bad things can "
2504
+ "happen if Ghostscript is missing but Imagick/Imagemagick is present, so "
2505
+ "leave this option checked unless you know it is safe to turn it off."
2506
+ msgstr ""
2507
+
2508
+ #: includes/class-mla-options.php:981
2509
+ msgid "Ghostscript path"
2510
+ msgstr ""
2511
+
2512
+ #: includes/class-mla-options.php:985
2513
+ msgid ""
2514
+ "If your &ldquo;gs&rdquo; executable is in a non-standard location, enter the "
2515
+ "full path and filename here, e.g., &ldquo;/usr/bin/gs&rdquo;. It will "
2516
+ "override the search for Ghostscript in other places."
2517
+ msgstr ""
2518
+
2519
+ #: includes/class-mla-options.php:1005
2520
  msgid "Enable custom field mapping when adding new media"
2521
  msgstr ""
2522
 
2523
+ #: includes/class-mla-options.php:1008
2524
  msgid ""
2525
  "Check this option to enable mapping when uploading new media (attachments)."
2526
  "<br>&nbsp;&nbsp;Click Save Changes at the bottom of the screen if you change "
2528
  "buttons on the bulk edit, single edit and settings screens."
2529
  msgstr ""
2530
 
2531
+ #: includes/class-mla-options.php:1012
2532
  msgid "Enable custom field mapping when updating media metadata"
2533
  msgstr ""
2534
 
2535
+ #: includes/class-mla-options.php:1015 includes/class-mla-options.php:1039
2536
  msgid ""
2537
  "Check this option to enable mapping when media (attachments) metadata is "
2538
  "regenerated,<br>&nbsp;&nbsp;e.g., when the Media/Edit Media \"Edit Image\" "
2539
  "functions are used."
2540
  msgstr ""
2541
 
2542
+ #: includes/class-mla-options.php:1019
2543
  msgid ""
2544
  "Update the custom field mapping values above, then click Save Changes to "
2545
  "make the updates permanent.<br>You can also make temporary updates and click "
2547
  "saving any rule changes."
2548
  msgstr ""
2549
 
2550
+ #: includes/class-mla-options.php:1029
2551
  msgid "Enable IPTC/EXIF Mapping when adding new media"
2552
  msgstr ""
2553
 
2554
+ #: includes/class-mla-options.php:1032
2555
  msgid ""
2556
  "Check this option to enable mapping when uploading new media (attachments)."
2557
  "<br>&nbsp;&nbsp;Does NOT affect the operation of the \"Map\" buttons on the "
2558
  "bulk edit, single edit and settings screens."
2559
  msgstr ""
2560
 
2561
+ #: includes/class-mla-options.php:1036
2562
  msgid "Enable IPTC/EXIF Mapping when updating media metadata"
2563
  msgstr ""
2564
 
2565
+ #: includes/class-mla-options.php:1043
2566
  msgid ""
2567
  "Update the standard field mapping values above, then click <strong>Save "
2568
  "Changes</strong> to make the updates permanent.<br>You can also make "
2571
  "changes."
2572
  msgstr ""
2573
 
2574
+ #: includes/class-mla-options.php:1053
2575
  msgid ""
2576
  "Update the taxonomy term mapping values above, then click <strong>Save "
2577
  "Changes</strong> or <strong>Map All Attachments, Taxonomy Terms Now</strong>."
2578
  msgstr ""
2579
 
2580
+ #: includes/class-mla-options.php:1063
2581
  msgid ""
2582
  "<strong>Update</strong> individual custom field mapping values above, or "
2583
  "make several updates and click <strong>Save Changes</strong> below to apply "
2588
  "changes."
2589
  msgstr ""
2590
 
2591
+ #: includes/class-mla-options.php:1073
2592
  msgid "IPTC/EXIF Mapping help"
2593
  msgstr ""
2594
 
2595
+ #: includes/class-mla-options.php:1125
2596
  msgid "Enable View and Post MIME Type Support"
2597
  msgstr ""
2598
 
2599
+ #: includes/class-mla-options.php:1128
2600
  msgid ""
2601
  "Check/uncheck this option to enable/disable Post MIME Type Support, then "
2602
  "click <strong>Save Changes</strong> to record the new setting."
2603
  msgstr ""
2604
 
2605
+ #: includes/class-mla-options.php:1137
2606
  msgid "Post MIME Types help."
2607
  msgstr ""
2608
 
2609
+ #: includes/class-mla-options.php:1146 includes/class-mla-options.php:1200
2610
+ #: includes/class-mla-options.php:1209
 
 
 
 
 
 
 
 
 
 
2611
  msgctxt "post_mime_types_description"
2612
  msgid "Built-in view"
2613
  msgstr ""
2614
 
2615
+ #: includes/class-mla-options.php:1149
2616
+ msgctxt "table_view_singular"
2617
  msgid "Image"
2618
  msgstr ""
2619
 
2620
+ #: includes/class-mla-options.php:1150
2621
+ msgctxt "table_view_plural"
2622
  msgid "Images"
2623
  msgstr ""
2624
 
2625
+ #: includes/class-mla-options.php:1155
2626
  msgctxt "post_mime_types_description"
2627
  msgid "All image subtypes"
2628
  msgstr ""
2629
 
2630
+ #: includes/class-mla-options.php:1158
2631
+ msgctxt "table_view_singular"
2632
  msgid "Audio"
2633
  msgstr ""
2634
 
2635
+ #: includes/class-mla-options.php:1159
2636
+ msgctxt "table_view_plural"
2637
  msgid "Audio"
2638
  msgstr ""
2639
 
2640
+ #: includes/class-mla-options.php:1164
2641
  msgctxt "post_mime_types_description"
2642
  msgid "All audio subtypes"
2643
  msgstr ""
2644
 
2645
+ #: includes/class-mla-options.php:1167
2646
+ msgctxt "table_view_singular"
2647
  msgid "Video"
2648
  msgstr ""
2649
 
2650
+ #: includes/class-mla-options.php:1168
2651
+ msgctxt "table_view_plural"
2652
  msgid "Video"
2653
  msgstr ""
2654
 
2655
+ #: includes/class-mla-options.php:1173
2656
  msgctxt "post_mime_types_description"
2657
  msgid "All video subtypes"
2658
  msgstr ""
2659
 
2660
+ #: includes/class-mla-options.php:1176
2661
+ msgctxt "table_view_singular"
2662
  msgid "Text"
2663
  msgstr ""
2664
 
2665
+ #: includes/class-mla-options.php:1177
2666
+ msgctxt "table_view_plural"
2667
  msgid "Text"
2668
  msgstr ""
2669
 
2670
+ #: includes/class-mla-options.php:1182
2671
  msgctxt "post_mime_types_description"
2672
  msgid "All text subtypes"
2673
  msgstr ""
2674
 
2675
+ #: includes/class-mla-options.php:1185
2676
+ msgctxt "table_view_singular"
2677
  msgid "Application"
2678
  msgstr ""
2679
 
2680
+ #: includes/class-mla-options.php:1186
2681
+ msgctxt "table_view_plural"
2682
  msgid "Applications"
2683
  msgstr ""
2684
 
2685
+ #: includes/class-mla-options.php:1191
2686
  msgctxt "post_mime_types_description"
2687
  msgid "All application subtypes"
2688
  msgstr ""
2689
 
2690
+ #: includes/class-mla-options.php:1195
2691
+ msgctxt "table_view_plural"
2692
  msgid "Unattached"
2693
  msgstr ""
2694
 
2695
+ #: includes/class-mla-options.php:1203
2696
+ msgctxt "table_view_singular"
2697
  msgid "Trash"
2698
  msgstr ""
2699
 
2700
+ #: includes/class-mla-options.php:1204
2701
+ msgctxt "table_view_plural"
2702
  msgid "Trash"
2703
  msgstr ""
2704
 
2705
+ #: includes/class-mla-options.php:1215
2706
  msgid "Enable Upload MIME Type Support"
2707
  msgstr ""
2708
 
2709
+ #: includes/class-mla-options.php:1218
2710
  msgid ""
2711
  "Check/uncheck this option to enable/disable Upload MIME Type Support, then "
2712
  "click <strong>Save Changes</strong> to record the new setting."
2713
  msgstr ""
2714
 
2715
+ #: includes/class-mla-options.php:1227
2716
  msgid "Upload MIME Types help."
2717
  msgstr ""
2718
 
2719
+ #: includes/class-mla-options.php:1232
2720
  msgid "Enable MLA File Type Icons Support"
2721
  msgstr ""
2722
 
2723
+ #: includes/class-mla-options.php:1235
2724
  msgid ""
2725
  "Check/uncheck this option to enable/disable MLA File Type Icons Support, "
2726
  "then click <strong>Save Changes</strong> to record the new setting."
2727
  msgstr ""
2728
 
2729
+ #: includes/class-mla-options.php:1287 includes/class-mla-options.php:1309
2730
+ #: includes/class-mla-options.php:1351
2731
  msgid "no templates exist"
2732
  msgstr ""
2733
 
2734
+ #: includes/class-mla-options.php:1295
2735
  msgid "not found"
2736
  msgstr ""
2737
 
2738
  #. translators: 1: ERROR tag 2: option name 3: action, e.g., update, delete, reset
2739
+ #: includes/class-mla-options.php:1685 includes/class-mla-options.php:1862
2740
+ #: includes/class-mla-options.php:1938 includes/class-mla-options.php:3721
2741
+ #: includes/class-mla-options.php:5010
2742
  #, php-format
2743
  msgid "%1$s: Custom %2$s unknown action \"%3$s\""
2744
  msgstr ""
2745
 
2746
+ #: includes/class-mla-options.php:1776
2747
  msgid "Support"
2748
  msgstr ""
2749
 
2750
+ #: includes/class-mla-options.php:1777
2751
  msgid "Inline Edit"
2752
  msgstr ""
2753
 
2754
+ #: includes/class-mla-options.php:1778
2755
  msgid "Term Search"
2756
  msgstr ""
2757
 
2758
+ #: includes/class-mla-options.php:1779
2759
  msgid "Checklist"
2760
  msgstr ""
2761
 
2762
+ #: includes/class-mla-options.php:1780
2763
  msgid "Checked On Top"
2764
  msgstr ""
2765
 
2766
+ #: includes/class-mla-options.php:1781
2767
  msgid "List Filter"
2768
  msgstr ""
2769
 
2770
+ #: includes/class-mla-options.php:1782
2771
  msgid "Taxonomy"
2772
  msgstr ""
2773
 
2774
  #. translators: 1: taxonomy name
2775
+ #: includes/class-mla-options.php:1801
2776
  #, php-format
2777
  msgid "List Filter ignored; %1$s not supported."
2778
  msgstr ""
2779
 
2780
  #. translators: 1: taxonomy name
2781
+ #: includes/class-mla-options.php:1808
2782
  #, php-format
2783
  msgid "Inline Edit ignored; %1$s not supported."
2784
  msgstr ""
2785
 
2786
  #. translators: 1: taxonomy name
2787
+ #: includes/class-mla-options.php:1816
2788
  #, php-format
2789
  msgid "Term Search ignored; %1$s not supported."
2790
  msgstr ""
2791
 
2792
  #. translators: 1: taxonomy name
2793
+ #: includes/class-mla-options.php:1826
2794
  #, php-format
2795
  msgid "Checklist ignored; %1$s not supported."
2796
  msgstr ""
2797
 
2798
  #. translators: 1: taxonomy name
2799
+ #: includes/class-mla-options.php:1834
2800
  #, php-format
2801
  msgid "Checked On Top ignored; %1$s not supported."
2802
  msgstr ""
2803
 
2804
  #. translators: 1: option name, e.g., taxonomy_support
2805
+ #: includes/class-mla-options.php:1852 includes/class-mla-options.php:1928
2806
  #, php-format
2807
  msgid "Update custom %1$s"
2808
  msgstr ""
2809
 
2810
  #. translators: 1: option name, e.g., taxonomy_support
2811
+ #: includes/class-mla-options.php:1859 includes/class-mla-options.php:1935
2812
+ #: includes/class-mla-options.php:5003
2813
  #, php-format
2814
  msgid "Reset custom %1$s"
2815
  msgstr ""
2816
 
2817
+ #: includes/class-mla-options.php:1888
2818
  #: includes/mla-main-search-box-template.php:38
2819
  #: includes/mla-media-modal-js-template.php:24
2820
  msgid "and"
2821
  msgstr ""
2822
 
2823
+ #: includes/class-mla-options.php:1890
2824
  #: includes/mla-main-search-box-template.php:40
2825
  #: includes/mla-media-modal-js-template.php:28
2826
  msgid "or"
2827
  msgstr ""
2828
 
2829
+ #: includes/class-mla-options.php:1895 includes/class-mla-settings.php:2360
2830
+ #: includes/class-mla-settings.php:2393 includes/class-mla-settings.php:2419
2831
+ #: includes/class-mla-settings.php:2454 includes/class-mla-settings.php:2511
2832
+ #: includes/class-mla-settings.php:2561
2833
  #: includes/mla-main-search-box-template.php:43
2834
  #: includes/mla-media-modal-js-template.php:36
2835
  msgid "Name"
2836
  msgstr ""
2837
 
2838
+ #: includes/class-mla-options.php:1907
2839
  #: includes/mla-main-search-box-template.php:47
2840
  #: includes/mla-media-modal-js-template.php:53
2841
  msgid "Terms"
2842
  msgstr ""
2843
 
2844
+ #: includes/class-mla-options.php:3053 includes/class-mla-options.php:3182
2845
+ #: includes/class-mla-options.php:4162 includes/class-mla-options.php:4193
2846
+ #: includes/class-mla-settings.php:1810
2847
  msgid "None (select a value)"
2848
  msgstr ""
2849
 
2850
+ #: includes/class-mla-options.php:3189
2851
  msgid "Metadata (see below)"
2852
  msgstr ""
2853
 
2854
+ #: includes/class-mla-options.php:3196
2855
  msgid "Template (see below)"
2856
  msgstr ""
2857
 
2858
  #. translators: 1: ERROR tag 2: custom field name
2859
+ #: includes/class-mla-options.php:3264 includes/class-mla-options.php:4470
2860
  #, php-format
2861
  msgid "%1$s: New field %2$s already exists."
2862
  msgstr ""
2863
 
2864
  #. translators: 1: custom field name
2865
+ #: includes/class-mla-options.php:3269 includes/class-mla-options.php:4475
2866
  #, php-format
2867
  msgid "Adding new field %1$s."
2868
  msgstr ""
2869
 
2870
  #. translators: 1: custom field name
2871
+ #: includes/class-mla-options.php:3277 includes/class-mla-options.php:4483
2872
  #, php-format
2873
  msgid "Adding new rule for %1$s."
2874
  msgstr ""
2875
 
2876
  #. translators: 1: custom field name
2877
+ #: includes/class-mla-options.php:3303 includes/class-mla-options.php:4344
2878
+ #: includes/class-mla-options.php:4506
2879
  #, php-format
2880
  msgid "Deleting rule for %1$s."
2881
  msgstr ""
2882
 
2883
  #. translators: 1: custom field name 2: attribute 3: old value 4: new value
2884
+ #: includes/class-mla-options.php:3326 includes/class-mla-options.php:3347
2885
+ #: includes/class-mla-options.php:3397 includes/class-mla-options.php:3404
2886
+ #: includes/class-mla-options.php:4260 includes/class-mla-options.php:4267
2887
+ #: includes/class-mla-options.php:4274 includes/class-mla-options.php:4369
2888
+ #: includes/class-mla-options.php:4376 includes/class-mla-options.php:4411
2889
+ #: includes/class-mla-options.php:4418 includes/class-mla-options.php:4516
2890
+ #: includes/class-mla-options.php:4523
2891
  #, php-format
2892
  msgid "%1$s changing %2$s from %3$s to %4$s."
2893
  msgstr ""
2894
 
2895
+ #: includes/class-mla-options.php:3326 includes/class-mla-options.php:3678
2896
  msgid "Data Source"
2897
  msgstr ""
2898
 
2899
+ #: includes/class-mla-options.php:3332 includes/class-mla-options.php:4294
2900
+ #: includes/class-mla-options.php:4396 includes/class-mla-options.php:4543
2901
  msgid "Replace to Keep"
2902
  msgstr ""
2903
 
2904
+ #: includes/class-mla-options.php:3335 includes/class-mla-options.php:4297
2905
+ #: includes/class-mla-options.php:4399 includes/class-mla-options.php:4546
2906
  msgid "Keep to Replace"
2907
  msgstr ""
2908
 
2909
  #. translators: 1: custom field name 2: attribute 3: old value 'to' new value
2910
+ #: includes/class-mla-options.php:3340 includes/class-mla-options.php:3361
2911
+ #: includes/class-mla-options.php:3375 includes/class-mla-options.php:3389
2912
+ #: includes/class-mla-options.php:3418 includes/class-mla-options.php:4288
2913
+ #: includes/class-mla-options.php:4302 includes/class-mla-options.php:4390
2914
+ #: includes/class-mla-options.php:4404 includes/class-mla-options.php:4537
2915
+ #: includes/class-mla-options.php:4551
2916
  #, php-format
2917
  msgid "%1$s changing %2$s value from %3$s."
2918
  msgstr ""
2919
 
2920
+ #: includes/class-mla-options.php:3340 includes/class-mla-options.php:3679
2921
+ #: includes/class-mla-options.php:4302 includes/class-mla-options.php:4404
2922
+ #: includes/class-mla-options.php:4551 includes/class-mla-options.php:4677
2923
+ #: includes/class-mla-options.php:4763 includes/class-mla-options.php:4901
2924
  msgid "Existing Text"
2925
  msgstr ""
2926
 
2927
+ #: includes/class-mla-options.php:3347 includes/class-mla-options.php:3680
2928
  msgid "Format"
2929
  msgstr ""
2930
 
2931
+ #: includes/class-mla-options.php:3353 includes/class-mla-options.php:3367
2932
+ #: includes/class-mla-options.php:3381 includes/class-mla-options.php:3410
2933
  msgid "unchecked to checked"
2934
  msgstr ""
2935
 
2936
+ #: includes/class-mla-options.php:3356 includes/class-mla-options.php:3370
2937
+ #: includes/class-mla-options.php:3384 includes/class-mla-options.php:3413
2938
  msgid "checked to unchecked"
2939
  msgstr ""
2940
 
2941
+ #: includes/class-mla-options.php:3361 includes/class-mla-options.php:3681
2942
  msgid "MLA Column"
2943
  msgstr ""
2944
 
2945
+ #: includes/class-mla-options.php:3397
2946
  msgid "Metavalue name"
2947
  msgstr ""
2948
 
2949
+ #: includes/class-mla-options.php:3404 includes/class-mla-options.php:3512
2950
+ #: includes/class-mla-options.php:3614 includes/class-mla-options.php:3658
2951
  msgid "Option"
2952
  msgstr ""
2953
 
2954
+ #: includes/class-mla-options.php:3418 includes/class-mla-options.php:3524
2955
+ #: includes/class-mla-options.php:3626 includes/class-mla-options.php:3670
2956
  msgid "Delete NULL values"
2957
  msgstr ""
2958
 
2959
+ #: includes/class-mla-options.php:3457 includes/class-mla-options.php:4775
2960
  msgid "No Custom Field Mapping Rules Defined"
2961
  msgstr ""
2962
 
2963
+ #: includes/class-mla-options.php:3496 includes/class-mla-options.php:3599
2964
+ #: includes/class-mla-options.php:3643 includes/class-mla-options.php:4652
2965
+ #: includes/class-mla-options.php:4702 includes/class-mla-options.php:4821
2966
+ #: includes/class-mla-options.php:4863 includes/class-mla-options.php:4888
2967
  msgid "Keep"
2968
  msgstr ""
2969
 
2970
+ #: includes/class-mla-options.php:3500 includes/class-mla-options.php:3603
2971
+ #: includes/class-mla-options.php:3647
2972
  msgid "Native"
2973
  msgstr ""
2974
 
2975
+ #: includes/class-mla-options.php:3502 includes/class-mla-options.php:3605
2976
+ #: includes/class-mla-options.php:3649
2977
  msgid "Commas"
2978
  msgstr ""
2979
 
2980
+ #: includes/class-mla-options.php:3504 includes/class-mla-options.php:3607
2981
+ #: includes/class-mla-options.php:3651
2982
  msgid "Raw"
2983
  msgstr ""
2984
 
2985
+ #: includes/class-mla-options.php:3514 includes/class-mla-options.php:3616
2986
+ #: includes/class-mla-options.php:3660
2987
  msgid "Text"
2988
  msgstr ""
2989
 
2990
+ #: includes/class-mla-options.php:3516 includes/class-mla-options.php:3618
2991
+ #: includes/class-mla-options.php:3662
2992
  msgid "Single"
2993
  msgstr ""
2994
 
2995
+ #: includes/class-mla-options.php:3518 includes/class-mla-options.php:3620
2996
+ #: includes/class-mla-options.php:3664
2997
  msgid "Export"
2998
  msgstr ""
2999
 
3000
+ #: includes/class-mla-options.php:3520 includes/class-mla-options.php:3622
3001
+ #: includes/class-mla-options.php:3666
3002
  msgid "Array"
3003
  msgstr ""
3004
 
3005
+ #: includes/class-mla-options.php:3522 includes/class-mla-options.php:3624
3006
+ #: includes/class-mla-options.php:3668
3007
  msgid "Multi"
3008
  msgstr ""
3009
 
3010
+ #: includes/class-mla-options.php:3525 includes/class-mla-options.php:4824
3011
  msgid "Delete Rule"
3012
  msgstr ""
3013
 
3014
+ #: includes/class-mla-options.php:3526 includes/class-mla-options.php:4825
3015
  msgid "Delete Rule AND Field"
3016
  msgstr ""
3017
 
3018
+ #: includes/class-mla-options.php:3527 includes/class-mla-options.php:4826
3019
  msgid "Update Rule"
3020
  msgstr ""
3021
 
3022
+ #: includes/class-mla-options.php:3528 includes/class-mla-options.php:4827
3023
  #: includes/class-mla-settings.php:706 includes/class-mla-settings.php:837
3024
  msgid "Map All Attachments"
3025
  msgstr ""
3026
 
3027
+ #: includes/class-mla-options.php:3594 includes/class-mla-options.php:4852
3028
  msgid "Add a new Mapping Rule"
3029
  msgstr ""
3030
 
3031
+ #: includes/class-mla-options.php:3627 includes/class-mla-options.php:4866
3032
  msgid "Add Rule"
3033
  msgstr ""
3034
 
3035
+ #: includes/class-mla-options.php:3628 includes/class-mla-options.php:4867
3036
  msgid "Add Rule and Map All Attachments"
3037
  msgstr ""
3038
 
3039
+ #: includes/class-mla-options.php:3638 includes/class-mla-options.php:4877
3040
  msgid "Add a new Field and Mapping Rule"
3041
  msgstr ""
3042
 
3043
+ #: includes/class-mla-options.php:3671 includes/class-mla-options.php:4891
3044
  msgid "Add Field"
3045
  msgstr ""
3046
 
3047
+ #: includes/class-mla-options.php:3672 includes/class-mla-options.php:4892
3048
  msgid "Add Field and Map All Attachments"
3049
  msgstr ""
3050
 
3051
+ #: includes/class-mla-options.php:3677 includes/class-mla-options.php:4260
3052
+ #: includes/class-mla-options.php:4673 includes/class-mla-options.php:4759
3053
+ #: includes/class-mla-options.php:4897
3054
  msgid "Field Title"
3055
  msgstr ""
3056
 
3057
+ #: includes/class-mla-options.php:3702
3058
  msgid "Custom field mapping rules updated."
3059
  msgstr ""
3060
 
3061
+ #: includes/class-mla-options.php:3704
3062
  msgid "Custom field mapping rules update failed."
3063
  msgstr ""
3064
 
3065
+ #: includes/class-mla-options.php:3707 includes/class-mla-settings.php:751
3066
  #: includes/class-mla-settings.php:757
3067
  msgid "Custom field no mapping rule changes detected."
3068
  msgstr ""
3069
 
3070
+ #: includes/class-mla-options.php:3715
3071
  msgid "Custom field mapping settings saved."
3072
  msgstr ""
3073
 
3074
+ #: includes/class-mla-options.php:3717
3075
  msgid "Custom field mapping settings reset failed."
3076
  msgstr ""
3077
 
3078
  #. translators: 1: ERROR tag 2: custom field name
3079
+ #: includes/class-mla-options.php:4248
3080
  #, php-format
3081
  msgid "%1$s: No old values for %2$s."
3082
  msgstr ""
3083
 
3084
+ #: includes/class-mla-options.php:4267 includes/class-mla-options.php:4369
3085
+ #: includes/class-mla-options.php:4516 includes/class-mla-options.php:4674
3086
+ #: includes/class-mla-options.php:4760 includes/class-mla-options.php:4898
3087
  msgid "IPTC Value"
3088
  msgstr ""
3089
 
3090
+ #: includes/class-mla-options.php:4274 includes/class-mla-options.php:4376
3091
+ #: includes/class-mla-options.php:4523
3092
  msgid "EXIF Value"
3093
  msgstr ""
3094
 
3095
+ #: includes/class-mla-options.php:4280 includes/class-mla-options.php:4382
3096
+ #: includes/class-mla-options.php:4529
3097
  msgid "EXIF to IPTC"
3098
  msgstr ""
3099
 
3100
+ #: includes/class-mla-options.php:4283 includes/class-mla-options.php:4385
3101
+ #: includes/class-mla-options.php:4532
3102
  msgid "IPTC to EXIF"
3103
  msgstr ""
3104
 
3105
+ #: includes/class-mla-options.php:4288 includes/class-mla-options.php:4390
3106
+ #: includes/class-mla-options.php:4537 includes/class-mla-options.php:4676
3107
+ #: includes/class-mla-options.php:4762 includes/class-mla-options.php:4900
3108
  msgid "Priority"
3109
  msgstr ""
3110
 
3111
+ #: includes/class-mla-options.php:4411 includes/class-mla-options.php:4764
3112
  msgid "Delimiter(s)"
3113
  msgstr ""
3114
 
3115
+ #: includes/class-mla-options.php:4648 includes/class-mla-options.php:4698
3116
+ #: includes/class-mla-options.php:4817 includes/class-mla-options.php:4859
3117
+ #: includes/class-mla-options.php:4884
3118
  msgid "IPTC"
3119
  msgstr ""
3120
 
3121
+ #: includes/class-mla-options.php:4650 includes/class-mla-options.php:4700
3122
+ #: includes/class-mla-options.php:4819 includes/class-mla-options.php:4861
3123
+ #: includes/class-mla-options.php:4886
3124
  msgid "EXIF"
3125
  msgstr ""
3126
 
3127
+ #: includes/class-mla-options.php:4675 includes/class-mla-options.php:4761
3128
+ #: includes/class-mla-options.php:4899
3129
  msgid "EXIF/Template Value"
3130
  msgstr ""
3131
 
3132
  #. translators: 1: ERROR tag 2: option name
3133
+ #: includes/class-mla-options.php:4909
3134
  #, php-format
3135
  msgid "%1$s: Render unknown custom %2$s."
3136
  msgstr ""
3137
 
3138
  #. translators: 1: ERROR tag 2: option name
3139
+ #: includes/class-mla-options.php:4953
3140
  #, php-format
3141
  msgid "%1$s: Update/delete unknown custom %2$s."
3142
  msgstr ""
3143
 
3144
+ #: includes/class-mla-options.php:4959
3145
  msgid "IPTC/EXIF mapping settings updated."
3146
  msgstr ""
3147
 
3148
+ #: includes/class-mla-options.php:4961
3149
  msgid "IPTC/EXIF settings update failed."
3150
  msgstr ""
3151
 
3152
+ #: includes/class-mla-options.php:4964 includes/class-mla-settings.php:885
3153
  #: includes/class-mla-settings.php:891
3154
  msgid "IPTC/EXIF no mapping changes detected."
3155
  msgstr ""
3156
 
3157
  #. translators: 1: field type
3158
+ #: includes/class-mla-options.php:4975 includes/class-mla-options.php:4985
3159
+ #: includes/class-mla-options.php:4995 includes/class-mla-settings.php:3380
3160
  #, php-format
3161
  msgid "%1$s settings saved."
3162
  msgstr ""
3163
 
3164
+ #: includes/class-mla-options.php:4975 includes/class-mla-options.php:4978
3165
+ #: includes/class-mla-settings.php:3625 includes/class-mla-settings.php:3664
3166
+ #: includes/class-mla-settings.php:3667
3167
  msgid "Standard field"
3168
  msgstr ""
3169
 
3170
  #. translators: 1: ERROR tag 2: field type
3171
+ #: includes/class-mla-options.php:4978 includes/class-mla-options.php:4988
3172
+ #: includes/class-mla-options.php:4998
3173
  #, php-format
3174
  msgid "%1$s: IPTC/EXIF %2$s settings update failed."
3175
  msgstr ""
3176
 
3177
+ #: includes/class-mla-options.php:4985 includes/class-mla-options.php:4988
3178
+ #: includes/class-mla-settings.php:3696 includes/class-mla-settings.php:3735
3179
+ #: includes/class-mla-settings.php:3738
3180
  msgid "Taxonomy term"
3181
  msgstr ""
3182
 
3183
+ #: includes/class-mla-options.php:4995 includes/class-mla-options.php:4998
3184
+ #: includes/class-mla-settings.php:3525 includes/class-mla-settings.php:3528
3185
+ #: includes/class-mla-settings.php:3782 includes/class-mla-settings.php:3821
3186
+ #: includes/class-mla-settings.php:3824
3187
  msgid "Custom field"
3188
  msgstr ""
3189
 
3190
  #. translators: 1: ERROR tag 2: option name, e.g., taxonomy_support
3191
+ #: includes/class-mla-options.php:5006
3192
  #, php-format
3193
  msgid "%1$s: Reset unknown custom %2$s"
3194
  msgstr ""
3209
  msgid "Reprocessed"
3210
  msgstr ""
3211
 
3212
+ #: includes/class-mla-settings.php:442 includes/class-mla-settings.php:955
3213
+ #: includes/class-mla-settings.php:3087
3214
+ msgid "Settings"
3215
  msgstr ""
3216
 
3217
  #: includes/class-mla-settings.php:461
3234
  msgid "No upload slug found"
3235
  msgstr ""
3236
 
3237
+ #: includes/class-mla-settings.php:702 includes/class-mla-settings.php:2720
3238
+ #: includes/class-mla-settings.php:2724
3239
  msgid "Map All Rules, All Attachments Now"
3240
  msgstr ""
3241
 
3242
+ #: includes/class-mla-settings.php:826 includes/class-mla-settings.php:2853
3243
  msgid "Map All Attachments, Standard Fields Now"
3244
  msgstr ""
3245
 
3246
+ #: includes/class-mla-settings.php:829 includes/class-mla-settings.php:2856
3247
  msgid "Map All Attachments, Taxonomy Terms Now"
3248
  msgstr ""
3249
 
3250
+ #: includes/class-mla-settings.php:832 includes/class-mla-settings.php:2859
3251
  msgid "Map All Attachments, Custom Fields Now"
3252
  msgstr ""
3253
 
 
 
 
 
3254
  #. translators: 1: ERROR tag 2: function name 3: option type, e.g., radio, select, text
3255
  #: includes/class-mla-settings.php:1003 includes/class-mla-settings.php:1035
3256
  #: includes/class-mla-settings.php:1173
3259
  msgid "%1$s: %2$s unknown type = \"%3$s\""
3260
  msgstr ""
3261
 
3262
+ #: includes/class-mla-settings.php:1071 includes/class-mla-settings.php:1336
3263
+ #: includes/class-mla-settings.php:2291
3264
  msgid "Go to Top"
3265
  msgstr ""
3266
 
3276
  msgid "Uploads"
3277
  msgstr ""
3278
 
3279
+ #: includes/class-mla-settings.php:1225 includes/class-mla-settings.php:3380
3280
+ #: includes/class-mla-settings.php:3383
3281
  msgid "MLA Gallery"
3282
  msgstr ""
3283
 
3289
  msgid "Documentation"
3290
  msgstr ""
3291
 
3292
+ #: includes/class-mla-settings.php:1229
3293
+ msgid "Debug"
3294
+ msgstr ""
3295
+
3296
+ #: includes/class-mla-settings.php:1328
3297
  msgid "General Processing Options"
3298
  msgstr ""
3299
 
3300
  #. translators: 1: - 4: page subheader values
3301
+ #: includes/class-mla-settings.php:1330
3302
  #, php-format
3303
  msgid ""
3304
  "In this tab you can find a number of options for controlling the "
3307
  "any changes you make."
3308
  msgstr ""
3309
 
3310
+ #: includes/class-mla-settings.php:1330
3311
  msgid "Media/Assistant Table Defaults"
3312
  msgstr ""
3313
 
3314
+ #: includes/class-mla-settings.php:1330
3315
  msgid "Media Manager Enhancements"
3316
  msgstr ""
3317
 
3318
+ #: includes/class-mla-settings.php:1331 includes/class-mla-settings.php:1689
3319
+ #: includes/class-mla-settings.php:1742 includes/class-mla-settings.php:2158
3320
+ #: includes/class-mla-settings.php:2208 includes/class-mla-settings.php:2296
3321
+ #: includes/class-mla-settings.php:2719 includes/class-mla-settings.php:2722
3322
+ #: includes/class-mla-settings.php:2861 includes/class-mla-settings.php:2863
3323
+ #: includes/class-mla-settings.php:3044 includes/class-mla-settings.php:3046
3324
  msgid "Save Changes"
3325
  msgstr ""
3326
 
3327
+ #: includes/class-mla-settings.php:1332
3328
  msgid "Export ALL Settings"
3329
  msgstr ""
3330
 
3331
+ #: includes/class-mla-settings.php:1333
3332
  msgid "Delete General options and restore default settings"
3333
  msgstr ""
3334
 
3335
+ #: includes/class-mla-settings.php:1337
3336
  msgid "Support Our Work"
3337
  msgstr ""
3338
 
3339
+ #: includes/class-mla-settings.php:1338 includes/class-mla-settings.php:1341
3340
  msgid "Donate to FTJ"
3341
  msgstr ""
3342
 
3343
+ #: includes/class-mla-settings.php:1339 includes/class-mla-settings.php:3079
3344
  msgid "Donate"
3345
  msgstr ""
3346
 
3347
  #. translators: 1: donation hyperlink
3348
+ #: includes/class-mla-settings.php:1341
3349
  #, php-format
3350
  msgid ""
3351
  "This plugin was inspired by my work on the WordPress web site for our "
3354
  "our work. Thank you!"
3355
  msgstr ""
3356
 
3357
+ #: includes/class-mla-settings.php:1341
3358
  msgid "tax-deductible donation"
3359
  msgstr ""
3360
 
3361
+ #: includes/class-mla-settings.php:1362
3362
  msgid "enhanced version of the WordPress [gallery] shortcode."
3363
  msgstr ""
3364
 
3365
+ #: includes/class-mla-settings.php:1363
3366
  msgid "enhanced version of the WordPress Tag Cloud."
3367
  msgstr ""
3368
 
3369
+ #: includes/class-mla-settings.php:1375
3370
  msgid "Shortcodes made available by this plugin"
3371
  msgstr ""
3372
 
3373
+ #: includes/class-mla-settings.php:1483
3374
  msgid "Edit View"
3375
  msgstr ""
3376
 
3377
+ #: includes/class-mla-settings.php:1489 includes/class-mla-settings.php:1746
3378
  msgid ""
3379
  "The &#8220;slug&#8221; is the URL-friendly, unique key for the view. It must "
3380
  "be all lowercase and contain only letters, numbers, periods (.), slashes (/) "
3383
  "MIME</strong> type, e.g., &#8220;image&#8221; or &#8220;image/jpeg&#8221;."
3384
  msgstr ""
3385
 
3386
+ #: includes/class-mla-settings.php:1490 includes/class-mla-settings.php:1747
3387
  msgid "Singular Label"
3388
  msgstr ""
3389
 
3390
+ #: includes/class-mla-settings.php:1491 includes/class-mla-settings.php:1748
3391
  msgid "Plural Label"
3392
  msgstr ""
3393
 
3394
+ #: includes/class-mla-settings.php:1492 includes/class-mla-settings.php:1749
3395
  msgid ""
3396
  "The labels, e.g., &#8220;Image&#8221; and &#8220;Images&#8221; are used for "
3397
  "column headers and other display purposes."
3398
  msgstr ""
3399
 
3400
+ #: includes/class-mla-settings.php:1493 includes/class-mla-settings.php:1750
3401
  msgid "Specification"
3402
  msgstr ""
3403
 
3404
+ #: includes/class-mla-settings.php:1494 includes/class-mla-settings.php:1751
3405
  msgid ""
3406
  "If the MIME type specification differs from the slug, enter it here. You may "
3407
  "include multiple MIME types, e.g., &#8220;audio,video&#8221; and/or wildcard "
3409
  "MIME Type box is checked."
3410
  msgstr ""
3411
 
3412
+ #: includes/class-mla-settings.php:1495 includes/class-mla-settings.php:1752
3413
  msgid "Post MIME Type"
3414
  msgstr ""
3415
 
3416
+ #: includes/class-mla-settings.php:1496 includes/class-mla-settings.php:1753
3417
  msgid ""
3418
  "Check this box if you want to add this entry to the list of MIME types "
3419
  "returned by wp_get_mime_types()."
3420
  msgstr ""
3421
 
3422
+ #: includes/class-mla-settings.php:1497 includes/class-mla-settings.php:1754
3423
  msgid "Table View"
3424
  msgstr ""
3425
 
3426
+ #: includes/class-mla-settings.php:1498 includes/class-mla-settings.php:1755
3427
  msgid ""
3428
  "Check this box if you want to add this entry to the list of Media/Assistant "
3429
  "table views."
3430
  msgstr ""
3431
 
3432
+ #: includes/class-mla-settings.php:1500 includes/class-mla-settings.php:1757
3433
  msgid ""
3434
  "You can choose your own table view order by entering a number (1 for first, "
3435
  "etc.) in this field."
3436
  msgstr ""
3437
 
3438
+ #: includes/class-mla-settings.php:1502 includes/class-mla-settings.php:1759
3439
+ #: includes/class-mla-settings.php:1857 includes/class-mla-settings.php:2221
3440
  msgid ""
3441
  "The description can contain any documentation or notes you need to "
3442
  "understand or use the item."
3443
  msgstr ""
3444
 
3445
  #. translators: 1: bulk_action, e.g., delete, edit, restore, trash
3446
+ #: includes/class-mla-settings.php:1613 includes/class-mla-settings.php:2079
3447
  #, php-format
3448
  msgid "Unknown bulk action %1$s"
3449
  msgstr ""
3450
 
3451
  #. translators: 1: view name/slug
3452
+ #: includes/class-mla-settings.php:1652 includes/class-mla-settings.php:2121
3453
  #, php-format
3454
  msgid "Edit view \"%1$s\" cancelled."
3455
  msgstr ""
3456
 
3457
+ #: includes/class-mla-settings.php:1686
3458
  msgid "View and Post MIME Type Support is disabled"
3459
  msgstr ""
3460
 
3461
+ #: includes/class-mla-settings.php:1731 includes/class-mla-settings.php:1734
3462
  msgid "Library Views/Post MIME Type Processing"
3463
  msgstr ""
3464
 
3465
+ #: includes/class-mla-settings.php:1732
3466
  msgid ""
3467
  "In this tab you can manage the list of \"Post MIME Types\", which are used "
3468
  "by WordPress to define the views for the <em><strong>Media/Library</strong></"
3474
  msgstr ""
3475
 
3476
  #. translators: 1: Documentation hyperlink
3477
+ #: includes/class-mla-settings.php:1734
3478
  #, php-format
3479
  msgid ""
3480
  "You can find more information about library views, Post MIME types and how "
3483
  "screen."
3484
  msgstr ""
3485
 
3486
+ #: includes/class-mla-settings.php:1734
3487
  msgid "Library View Processing documentation"
3488
  msgstr ""
3489
 
3490
+ #: includes/class-mla-settings.php:1738 includes/class-mla-settings.php:1927
3491
+ #: includes/class-mla-settings.php:2233
3492
  msgid "Displaying search results for"
3493
  msgstr ""
3494
 
3495
+ #: includes/class-mla-settings.php:1739
3496
  msgid "Search Views"
3497
  msgstr ""
3498
 
3499
+ #: includes/class-mla-settings.php:1760
3500
  msgid "Add View"
3501
  msgstr ""
3502
 
3503
+ #: includes/class-mla-settings.php:1762 includes/class-mla-settings.php:2226
3504
  msgid "<strong>Quick Edit</strong>"
3505
  msgstr ""
3506
 
3507
+ #: includes/class-mla-settings.php:1842
3508
  msgid "Edit Upload MIME Type"
3509
  msgstr ""
3510
 
3511
+ #: includes/class-mla-settings.php:1848
 
 
 
 
3512
  msgid ""
3513
  "The &#8220;extension&#8221; is the file extension for this type, and a "
3514
  "unique key for the item. It must be all lowercase and contain only letters "
3515
  "and numbers."
3516
  msgstr ""
3517
 
3518
+ #: includes/class-mla-settings.php:1850 includes/class-mla-settings.php:2215
3519
  msgid ""
3520
  "The MIME Type must be all lowercase and contain only letters, numbers, "
3521
  "periods (.), slashes (/) and hyphens (-). It <strong>must be a valid MIME</"
3522
  "strong> type, e.g., &#8220;image&#8221; or &#8220;image/jpeg&#8221;."
3523
  msgstr ""
3524
 
3525
+ #: includes/class-mla-settings.php:1851 includes/class-mla-settings.php:2216
3526
  msgid "Icon Type"
3527
  msgstr ""
3528
 
3529
+ #: includes/class-mla-settings.php:1853 includes/class-mla-settings.php:2217
3530
  msgid ""
3531
  "The Icon Type selects a thumbnail image displayed for non-image file types, "
3532
  "such as PDF documents."
3533
  msgstr ""
3534
 
3535
+ #: includes/class-mla-settings.php:1854 includes/class-mla-settings.php:2218
3536
  #: includes/class-mla-upload-list-table.php:415
3537
  msgid "Inactive"
3538
  msgstr ""
3539
 
3540
+ #: includes/class-mla-settings.php:1855 includes/class-mla-settings.php:2219
3541
  msgid ""
3542
  "Check this box if you want to remove this entry from the list of Upload MIME "
3543
  "Types returned by get_allowed_mime_types()."
3544
  msgstr ""
3545
 
3546
+ #: includes/class-mla-settings.php:1926
3547
  msgid "Known File Extension/MIME Type Associations"
3548
  msgstr ""
3549
 
3550
+ #: includes/class-mla-settings.php:1928
3551
  msgid "Search Known MIME Types"
3552
  msgstr ""
3553
 
3554
+ #: includes/class-mla-settings.php:1930 includes/class-mla-settings.php:2204
3555
  msgid "To search by extension, use \".\", e.g., \".doc\""
3556
  msgstr ""
3557
 
3558
+ #: includes/class-mla-settings.php:2155
3559
  msgid "Upload MIME Type Support is disabled"
3560
  msgstr ""
3561
 
3562
+ #: includes/class-mla-settings.php:2198 includes/class-mla-settings.php:2201
3563
  msgid "File Extension and MIME Type Processing"
3564
  msgstr ""
3565
 
3566
+ #: includes/class-mla-settings.php:2199
3567
  msgid ""
3568
  "In this tab you can manage the list of file extension/MIME Type "
3569
  "associations, which are used by WordPress to decide what kind of files can "
3573
  msgstr ""
3574
 
3575
  #. translators: 1: Documentation hyperlink
3576
+ #: includes/class-mla-settings.php:2201
3577
  #, php-format
3578
  msgid ""
3579
  "You can find more information about file extensions, MIME types and how "
3581
  "the <strong>\"Help\"</strong> tab in the upper-right corner of this screen."
3582
  msgstr ""
3583
 
3584
+ #: includes/class-mla-settings.php:2201
3585
  msgid "File Extension Processing documentation"
3586
  msgstr ""
3587
 
3588
+ #: includes/class-mla-settings.php:2203
3589
  msgid "Search Uploads"
3590
  msgstr ""
3591
 
3592
+ #: includes/class-mla-settings.php:2210
3593
  msgid "Upload MIME Type"
3594
  msgstr ""
3595
 
3596
+ #: includes/class-mla-settings.php:2211
3597
  msgid ""
3598
  "To search the database of over 1,500 known extension/type associations, "
3599
  "click \"Search Known Types\" below the form."
3600
  msgstr ""
3601
 
3602
+ #: includes/class-mla-settings.php:2213
3603
  msgid ""
3604
  "The &#8220;extension&#8221; is the file extension for this type, and unique "
3605
  "key for the item. It must be all lowercase and contain only letters and "
3606
  "numbers."
3607
  msgstr ""
3608
 
3609
+ #: includes/class-mla-settings.php:2222
3610
  msgid "Add Upload MIME Type"
3611
  msgstr ""
3612
 
3613
+ #: includes/class-mla-settings.php:2224
3614
  msgid "Search Known Types"
3615
  msgstr ""
3616
 
3617
+ #: includes/class-mla-settings.php:2232
3618
  #: includes/class-mla-upload-list-table.php:417
3619
  msgid "Active"
3620
  msgstr ""
3621
 
3622
+ #: includes/class-mla-settings.php:2285
3623
  msgid "MLA Gallery Options"
3624
  msgstr ""
3625
 
3626
+ #: includes/class-mla-settings.php:2286
3627
+ msgid "Go to Style Templates"
3628
+ msgstr ""
3629
+
3630
+ #: includes/class-mla-settings.php:2287
3631
  msgid "Go to Markup Templates"
3632
  msgstr ""
3633
 
3634
+ #: includes/class-mla-settings.php:2288
3635
  msgid ""
3636
  "In this tab you can view the default style and markup templates. You can "
3637
  "also define additional templates and use the <code>mla_style</code> and "
3641
  "Changes\" at the bottom of this page."
3642
  msgstr ""
3643
 
3644
+ #: includes/class-mla-settings.php:2292
3645
  msgid "Style Templates"
3646
  msgstr ""
3647
 
3648
+ #: includes/class-mla-settings.php:2294
3649
  msgid "Markup Templates"
3650
  msgstr ""
3651
 
3652
+ #: includes/class-mla-settings.php:2307
3653
  msgid "Theme"
3654
  msgstr ""
3655
 
3656
+ #: includes/class-mla-settings.php:2355
3657
  msgid ""
3658
  "This default template cannot be altered or deleted, but you can copy the "
3659
  "styles."
3660
  msgstr ""
3661
 
3662
+ #: includes/class-mla-settings.php:2366 includes/class-mla-settings.php:2399
3663
+ #: includes/class-mla-settings.php:2425
3664
  msgid "Styles"
3665
  msgstr ""
3666
 
3667
+ #: includes/class-mla-settings.php:2370 includes/class-mla-settings.php:2403
3668
+ #: includes/class-mla-settings.php:2429
3669
  msgid ""
3670
  "List of substitution parameters, e.g., [+selector+], on Documentation tab."
3671
  msgstr ""
3672
 
3673
+ #: includes/class-mla-settings.php:2387 includes/class-mla-settings.php:2505
3674
  msgid "Delete this template"
3675
  msgstr ""
3676
 
3677
+ #: includes/class-mla-settings.php:2388 includes/class-mla-settings.php:2506
3678
  msgid ""
3679
  "Check the box to delete this template when you press Update at the bottom of "
3680
  "the page."
3681
  msgstr ""
3682
 
3683
+ #: includes/class-mla-settings.php:2414
3684
  msgid "Fill in a name and styles to add a new template."
3685
  msgstr ""
3686
 
3687
+ #: includes/class-mla-settings.php:2449
3688
  msgid ""
3689
  "This default template cannot be altered or deleted, but you can copy the "
3690
  "markup."
3691
  msgstr ""
3692
 
3693
+ #: includes/class-mla-settings.php:2461 includes/class-mla-settings.php:2518
3694
+ #: includes/class-mla-settings.php:2568
3695
  msgid "Open"
3696
  msgstr ""
3697
 
3698
+ #: includes/class-mla-settings.php:2465 includes/class-mla-settings.php:2522
3699
+ #: includes/class-mla-settings.php:2572
3700
  msgid ""
3701
  "Markup for the beginning of the gallery. List of parameters, e.g., [+selector"
3702
  "+], on Documentation tab."
3703
  msgstr ""
3704
 
3705
+ #: includes/class-mla-settings.php:2467 includes/class-mla-settings.php:2524
3706
+ #: includes/class-mla-settings.php:2574
3707
  msgid "Row"
3708
  msgstr ""
3709
 
3710
+ #: includes/class-mla-settings.php:2471 includes/class-mla-settings.php:2578
3711
  msgid "Markup for the beginning of each row in the gallery."
3712
  msgstr ""
3713
 
3714
+ #: includes/class-mla-settings.php:2473 includes/class-mla-settings.php:2530
3715
+ #: includes/class-mla-settings.php:2580
3716
  msgid "Item"
3717
  msgstr ""
3718
 
3719
+ #: includes/class-mla-settings.php:2477 includes/class-mla-settings.php:2584
3720
  msgid "Markup for each item/cell of the gallery."
3721
  msgstr ""
3722
 
3723
+ #: includes/class-mla-settings.php:2479 includes/class-mla-settings.php:2536
3724
+ #: includes/class-mla-settings.php:2586 includes/class-mla-settings.php:2700
3725
+ #: includes/class-mla-settings.php:2836
3726
  msgid "Close"
3727
  msgstr ""
3728
 
3729
+ #: includes/class-mla-settings.php:2483 includes/class-mla-settings.php:2590
3730
  msgid "Markup for the end of each row in the gallery."
3731
  msgstr ""
3732
 
3733
+ #: includes/class-mla-settings.php:2488 includes/class-mla-settings.php:2545
3734
+ #: includes/class-mla-settings.php:2595
3735
  msgid "Markup for the end of the gallery."
3736
  msgstr ""
3737
 
3738
+ #: includes/class-mla-settings.php:2528
3739
  msgid "Markup for the beginning of each row."
3740
  msgstr ""
3741
 
3742
+ #: includes/class-mla-settings.php:2534
3743
  msgid "Markup for each item/cell."
3744
  msgstr ""
3745
 
3746
+ #: includes/class-mla-settings.php:2540
3747
  msgid "Markup for the end of each row."
3748
  msgstr ""
3749
 
3750
+ #: includes/class-mla-settings.php:2556
3751
  msgid "Fill in a name and markup to add a new template."
3752
  msgstr ""
3753
 
3754
+ #: includes/class-mla-settings.php:2692
3755
  msgid "Custom Field Mapping Progress"
3756
  msgstr ""
3757
 
3758
+ #: includes/class-mla-settings.php:2693 includes/class-mla-settings.php:2829
3759
  msgid "DO NOT DO THE FOLLOWING (they will cause mapping to fail)"
3760
  msgstr ""
3761
 
3762
+ #: includes/class-mla-settings.php:2694 includes/class-mla-settings.php:2830
3763
  msgid "Close the window"
3764
  msgstr ""
3765
 
3766
+ #: includes/class-mla-settings.php:2695 includes/class-mla-settings.php:2831
3767
  msgid "Reload the page"
3768
  msgstr ""
3769
 
3770
+ #: includes/class-mla-settings.php:2696 includes/class-mla-settings.php:2832
3771
  msgid "Click the browser&rsquo;s Stop, Back or forward buttons"
3772
  msgstr ""
3773
 
3774
+ #: includes/class-mla-settings.php:2697 includes/class-mla-settings.php:2833
3775
  msgid "Progress"
3776
  msgstr ""
3777
 
3778
+ #: includes/class-mla-settings.php:2699 includes/class-mla-settings.php:2835
3779
  msgid "Resume"
3780
  msgstr ""
3781
 
3782
+ #: includes/class-mla-settings.php:2709 includes/class-mla-settings.php:2713
3783
  msgid "Custom Field and Attachment Metadata Processing Options"
3784
  msgstr ""
3785
 
3786
  #. translators: 1: Documentation hyperlink
3787
+ #: includes/class-mla-settings.php:2711
3788
  #, php-format
3789
  msgid ""
3790
  "In this tab you can define the rules for mapping several types of image "
3794
  "field. See the %1$s section of the Documentation for details."
3795
  msgstr ""
3796
 
3797
+ #: includes/class-mla-settings.php:2711
3798
  msgid "Updating Attachment Metadata Documentation"
3799
  msgstr ""
3800
 
3801
+ #: includes/class-mla-settings.php:2711
3802
  msgid "Adding or changing Attachment Metadata"
3803
  msgstr ""
3804
 
3805
  #. translators: 1: Documentation hyperlink
3806
+ #: includes/class-mla-settings.php:2713 includes/class-mla-settings.php:2848
3807
  #, php-format
3808
  msgid ""
3809
  "You can find more information about using the controls in this tab to define "
3810
  "mapping rules and apply them in the %1$s section of the Documentation."
3811
  msgstr ""
3812
 
3813
+ #: includes/class-mla-settings.php:2713
3814
  msgid "Custom Field Options documentation"
3815
  msgstr ""
3816
 
3817
+ #: includes/class-mla-settings.php:2717 includes/class-mla-settings.php:2858
3818
  msgid "Custom field mapping"
3819
  msgstr ""
3820
 
3821
  #. translators: 1: "Save Changes"
3822
+ #: includes/class-mla-settings.php:2722
3823
  #, php-format
3824
  msgid ""
3825
  "Click %1$s to update the \"Enable custom field mapping...\" checkbox and/or "
3828
  msgstr ""
3829
 
3830
  #. translators: 1: "Map All Rules..."
3831
+ #: includes/class-mla-settings.php:2724
3832
  #, php-format
3833
  msgid ""
3834
  "Click %1$s to apply all the rules at once (rule changes will be applied but "
3835
  "not saved)."
3836
  msgstr ""
3837
 
3838
+ #: includes/class-mla-settings.php:2828
3839
  msgid "IPTC &amp; EXIF Mapping Progress"
3840
  msgstr ""
3841
 
3842
+ #: includes/class-mla-settings.php:2845 includes/class-mla-settings.php:2848
3843
  msgid "IPTC &amp; EXIF Processing Options"
3844
  msgstr ""
3845
 
3846
+ #: includes/class-mla-settings.php:2846
3847
  msgid ""
3848
  "In this tab you can define the rules for mapping IPTC (International Press "
3849
  "Telecommunications Council) and EXIF (EXchangeable Image File) metadata to "
3852
  "click \"Save Changes\" at the bottom of this page."
3853
  msgstr ""
3854
 
3855
+ #: includes/class-mla-settings.php:2848
3856
  msgid "IPTC/EXIF Options documentation"
3857
  msgstr ""
3858
 
3859
+ #: includes/class-mla-settings.php:2852
3860
  msgid "Standard field mapping"
3861
  msgstr ""
3862
 
3863
+ #: includes/class-mla-settings.php:2855
3864
  msgid "Taxonomy term mapping"
3865
  msgstr ""
3866
 
3867
  #. translators: 1: "Save Changes"
3868
+ #: includes/class-mla-settings.php:2863
3869
  #, php-format
3870
  msgid ""
3871
  "Click %1$s to update the \"Enable IPTC/EXIF mapping...\" checkbox and/or all "
3873
  "performed.</strong>"
3874
  msgstr ""
3875
 
3876
+ #: includes/class-mla-settings.php:2934
3877
+ msgid "Debug settings saved."
3878
+ msgstr ""
3879
+
3880
+ #. translators: 1: ERROR tag 2: file type 3: file name
3881
+ #: includes/class-mla-settings.php:2979
3882
+ #, php-format
3883
+ msgid "%1$s: The %2$s file ( %3$s ) could not be reset."
3884
+ msgstr ""
3885
+
3886
+ #: includes/class-mla-settings.php:2979 includes/class-mla-settings.php:3009
3887
+ #: includes/class-mla-settings.php:3021 includes/class-mla-settings.php:3028
3888
+ #: includes/class-mla-settings.php:3032
3889
+ msgid "Error Log"
3890
+ msgstr ""
3891
+
3892
+ #. translators: 1: ERROR tag 2: file type 3: file name 4: error message
3893
+ #: includes/class-mla-settings.php:3009
3894
+ #, php-format
3895
+ msgid "%1$s: Reading the %2$s file ( %3$s ) \"%4$s\"."
3896
+ msgstr ""
3897
+
3898
+ #: includes/class-mla-settings.php:3028
3899
+ msgid "Reset"
3900
+ msgstr ""
3901
+
3902
+ #: includes/class-mla-settings.php:3037 includes/class-mla-settings.php:3046
3903
+ msgid "Debug Options"
3904
+ msgstr ""
3905
+
3906
+ #. translators: 1: "Save Changes"
3907
+ #: includes/class-mla-settings.php:3046
3908
+ #, php-format
3909
+ msgid "Click %1$s to update the %2$s."
3910
  msgstr ""
3911
 
3912
+ #: includes/class-mla-settings.php:3065
3913
  msgid "You do not have permission to manage plugin settings."
3914
  msgstr ""
3915
 
3916
+ #: includes/class-mla-settings.php:3098
3917
  msgid "Cannot render content tab"
3918
  msgstr ""
3919
 
3920
+ #: includes/class-mla-settings.php:3101
3921
  msgid "Unknown content tab"
3922
  msgstr ""
3923
 
3924
  #. translators: 1: template type 2: template name
3925
+ #: includes/class-mla-settings.php:3193 includes/class-mla-settings.php:3282
3926
  #, php-format
3927
  msgctxt "message_list"
3928
  msgid "Deleting %1$s \"%2$s\"."
3929
  msgstr ""
3930
 
3931
  #. translators: 1: ERROR tag 2: template name 3: template type
3932
+ #: includes/class-mla-settings.php:3204 includes/class-mla-settings.php:3295
3933
  #, php-format
3934
  msgid "%1$s: Reserved name \"%2$s\", new %3$s discarded."
3935
  msgstr ""
3936
 
3937
  #. translators: 1: ERROR tag 2: template name 3: template type
3938
+ #: includes/class-mla-settings.php:3210 includes/class-mla-settings.php:3301
3939
  #, php-format
3940
  msgid "%1$s: Duplicate name \"%2$s\", new %3$s discarded."
3941
  msgstr ""
3942
 
3943
  #. translators: 1: template type 2: template name
3944
+ #: includes/class-mla-settings.php:3214 includes/class-mla-settings.php:3305
3945
  #, php-format
3946
  msgctxt "message_list"
3947
  msgid "Adding new %1$s \"%2$s\"."
3948
  msgstr ""
3949
 
3950
  #. translators: 1: ERROR tag 2: element name 3: old value
3951
+ #: includes/class-mla-settings.php:3224 includes/class-mla-settings.php:3315
3952
  #, php-format
3953
  msgid "%1$s: Blank %2$s, reverting to \"%3$s\"."
3954
  msgstr ""
3955
 
3956
+ #: includes/class-mla-settings.php:3224 includes/class-mla-settings.php:3231
3957
+ #: includes/class-mla-settings.php:3235
3958
  msgid "style template name"
3959
  msgstr ""
3960
 
3961
  #. translators: 1: ERROR tag 2: element name 3: new value 4: old value
3962
+ #: includes/class-mla-settings.php:3231 includes/class-mla-settings.php:3322
3963
  #, php-format
3964
  msgid "%1$s: Duplicate new %2$s \"%3$s\", reverting to \"%4$s\"."
3965
  msgstr ""
3966
 
3967
  #. translators: 1: element name 2: old_value 3: new_value
3968
+ #: includes/class-mla-settings.php:3235 includes/class-mla-settings.php:3326
3969
  #, php-format
3970
  msgctxt "message_list"
3971
  msgid "Changing %1$s from \"%2$s\" to \"%3$s\""
3972
  msgstr ""
3973
 
3974
  #. translators: 1: template type 2: template name
3975
+ #: includes/class-mla-settings.php:3242
3976
  #, php-format
3977
  msgctxt "message_list"
3978
  msgid "Updating contents of %1$s \"%2$s\"."
3979
  msgstr ""
3980
 
3981
  #. translators: 1: ERROR tag 2: template type
3982
+ #: includes/class-mla-settings.php:3253 includes/class-mla-settings.php:3374
3983
  #, php-format
3984
  msgid "%1$s: Update of %2$s failed."
3985
  msgstr ""
3986
 
3987
+ #: includes/class-mla-settings.php:3315 includes/class-mla-settings.php:3322
3988
+ #: includes/class-mla-settings.php:3326
3989
  msgid "markup template name"
3990
  msgstr ""
3991
 
3992
  #. translators: 1: template name
3993
+ #: includes/class-mla-settings.php:3334
3994
  #, php-format
3995
  msgctxt "message_list"
3996
  msgid "Updating open markup for \"%1$s\"."
3997
  msgstr ""
3998
 
3999
  #. translators: 1: template name
4000
+ #: includes/class-mla-settings.php:3340
4001
  #, php-format
4002
  msgctxt "message_list"
4003
  msgid "Updating row open markup for \"%1$s\"."
4004
  msgstr ""
4005
 
4006
  #. translators: 1: template name
4007
+ #: includes/class-mla-settings.php:3346
4008
  #, php-format
4009
  msgctxt "message_list"
4010
  msgid "Updating item markup for \"%1$s\"."
4011
  msgstr ""
4012
 
4013
  #. translators: 1: template name
4014
+ #: includes/class-mla-settings.php:3352
4015
  #, php-format
4016
  msgctxt "message_list"
4017
  msgid "Updating row close markup for \"%1$s\"."
4018
  msgstr ""
4019
 
4020
  #. translators: 1: template name
4021
+ #: includes/class-mla-settings.php:3358
4022
  #, php-format
4023
  msgctxt "message_list"
4024
  msgid "Updating close markup for \"%1$s\"."
4025
  msgstr ""
4026
 
4027
  #. translators: 1: field type
4028
+ #: includes/class-mla-settings.php:3383
4029
  #, php-format
4030
  msgid "%1$s no changes detected."
4031
  msgstr ""
4032
 
4033
+ #: includes/class-mla-settings.php:3418
4034
  msgid "View settings saved."
4035
  msgstr ""
4036
 
4037
+ #: includes/class-mla-settings.php:3452
4038
  msgid "Upload MIME Type settings saved."
4039
  msgstr ""
4040
 
4041
+ #: includes/class-mla-settings.php:3495
4042
  msgid "No custom field mapping rules to process."
4043
  msgstr ""
4044
 
4045
  #. translators: 1: field type 2: examined count 3: updated count
4046
+ #: includes/class-mla-settings.php:3525 includes/class-mla-settings.php:3664
4047
+ #: includes/class-mla-settings.php:3735 includes/class-mla-settings.php:3821
4048
  #, php-format
4049
  msgid "%1$s mapping completed; %2$d attachment(s) examined, %3$d updated."
4050
  msgstr ""
4051
 
4052
  #. translators: 1: field type 2: examined count
4053
+ #: includes/class-mla-settings.php:3528 includes/class-mla-settings.php:3667
4054
+ #: includes/class-mla-settings.php:3738 includes/class-mla-settings.php:3824
4055
  #, php-format
4056
  msgid ""
4057
  "%1$s mapping completed; %2$d attachment(s) examined, no changes detected."
4058
  msgstr ""
4059
 
4060
  #. translators: 1: number of attachments
4061
+ #: includes/class-mla-settings.php:3559
4062
  #, php-format
4063
  msgid "%s attachment"
4064
  msgid_plural "%s attachments"
4066
  msgstr[1] ""
4067
 
4068
  #. translators: 1: singular/plural number of attachments
4069
+ #: includes/class-mla-settings.php:3561
4070
  #, php-format
4071
  msgid "Deleted custom field value from %1$s."
4072
  msgstr ""
4073
 
4074
+ #: includes/class-mla-settings.php:3564
4075
  msgid "No attachments contained this custom field."
4076
  msgstr ""
4077
 
4078
  #. translators: 1: ERROR tag 2: field type
4079
+ #: includes/class-mla-settings.php:3625 includes/class-mla-settings.php:3696
4080
+ #: includes/class-mla-settings.php:3782
4081
  #, php-format
4082
  msgid "%1$s: No %2$s settings to process."
4083
  msgstr ""
4084
 
4085
+ #: includes/class-mla-settings.php:3655 includes/class-mla-settings.php:3726
4086
+ #: includes/class-mla-settings.php:3812
4087
  msgid "updated."
4088
  msgstr ""
4089
 
4090
  #. translators: 1: reference type, e.g., Gallery in
4091
+ #: includes/class-mla-settings.php:3917 includes/class-mla-settings.php:3927
4092
  #, php-format
4093
  msgctxt "message_list"
4094
  msgid "%1$s - references updated."
4095
  msgstr ""
4096
 
4097
+ #: includes/class-mla-settings.php:3970
4098
  msgid "General settings saved."
4099
  msgstr ""
4100
 
4101
  #. translators: 1: option name
4102
+ #: includes/class-mla-settings.php:4001
4103
  #, php-format
4104
  msgctxt "message_list"
4105
  msgid "delete_option \"%1$s\""
4106
  msgstr ""
4107
 
4108
+ #: includes/class-mla-settings.php:4009
4109
  msgid "General settings reset to default values."
4110
  msgstr ""
4111
 
4112
+ #: includes/class-mla-settings.php:4051
4113
  msgid "select settings"
4114
  msgstr ""
4115
 
4116
+ #: includes/class-mla-settings.php:4071
4117
  msgid "Import ALL Settings"
4118
  msgstr ""
4119
 
4120
+ #: includes/class-mla-settings.php:4096
4121
  msgctxt "message_list"
4122
  msgid "exported"
4123
  msgstr ""
4124
 
4125
+ #: includes/class-mla-settings.php:4098
4126
  msgctxt "message_list"
4127
  msgid "skipped"
4128
  msgstr ""
4129
 
4130
+ #: includes/class-mla-settings.php:4105
4131
  msgid "ALL settings exported."
4132
  msgstr ""
4133
 
4134
  #. translators: 1: ERROR tag 2: backup directory name
4135
+ #: includes/class-mla-settings.php:4116
4136
  #, php-format
4137
  msgid "%1$s: The settings directory ( %2$s ) cannot be created."
4138
  msgstr ""
4139
 
4140
  #. translators: 1: ERROR tag 2: backup directory name
4141
+ #: includes/class-mla-settings.php:4120
4142
  #, php-format
4143
  msgid "%1$s: The settings directory ( %2$s ) is not writable."
4144
  msgstr ""
4145
 
4146
  #. translators: 1: ERROR tag 2: backup file name
4147
+ #: includes/class-mla-settings.php:4131
4148
  #, php-format
4149
  msgid "%1$s: The settings file ( %2$s ) could not be opened."
4150
  msgstr ""
4151
 
4152
  #. translators: 1: ERROR tag 2: PHP error information
4153
+ #: includes/class-mla-settings.php:4138
4154
  #, php-format
4155
  msgctxt "error_log"
4156
  msgid "%1$s: _export_settings $error_info = \"%2$s\"."
4157
  msgstr ""
4158
 
4159
  #. translators: 1: ERROR tag 2: backup file name 3: error message
4160
+ #: includes/class-mla-settings.php:4147
4161
  #, php-format
4162
  msgid "%1$s: Writing the settings file ( %2$s ) \"%3$s\"."
4163
  msgstr ""
4164
 
4165
  #. translators: 1: number of option settings
4166
+ #: includes/class-mla-settings.php:4153
4167
  #, php-format
4168
  msgid "Settings exported; %1$s settings recorded."
4169
  msgstr ""
4170
 
4171
+ #: includes/class-mla-settings.php:4171
4172
  msgid "No settings imported."
4173
  msgstr ""
4174
 
4175
+ #: includes/class-mla-settings.php:4180
4176
  msgid "Please select an import settings file from the dropdown list."
4177
  msgstr ""
4178
 
4179
+ #: includes/class-mla-settings.php:4184
4180
  msgid "The import settings dropdown selection is missing."
4181
  msgstr ""
4182
 
4183
  #. translators: 1: ERROR tag 2: PHP error information
4184
+ #: includes/class-mla-settings.php:4192
4185
  #, php-format
4186
  msgctxt "error_log"
4187
  msgid "%1$s: _import_settings $error_info = \"%2$s\"."
4188
  msgstr ""
4189
 
4190
  #. translators: 1: ERROR tag 2: backup file name 3: error message
4191
+ #: includes/class-mla-settings.php:4201
4192
  #, php-format
4193
  msgid "%1$s: Reading the settings file ( %2$s ) \"%3$s\"."
4194
  msgstr ""
4195
 
4196
+ #: includes/class-mla-settings.php:4211
4197
  msgctxt "message_list"
4198
  msgid "updated"
4199
  msgstr ""
4200
 
4201
+ #: includes/class-mla-settings.php:4214
4202
  msgctxt "message_list"
4203
  msgid "unchanged"
4204
  msgstr ""
4205
 
4206
  #. translators: 1: number of option settings updated 2: number of option settings unchanged
4207
+ #: includes/class-mla-settings.php:4219
4208
  #, php-format
4209
  msgid "Settings imported; %1$s updated, %2$s unchanged."
4210
  msgstr ""
4211
 
4212
+ #: includes/class-mla-shortcodes.php:334
4213
+ #: includes/class-mla-shortcodes.php:1441
4214
+ #: includes/class-mla-shortcodes.php:2348
4215
+ #: includes/class-mla-shortcodes.php:2635
4216
  msgid "Previous"
4217
  msgstr ""
4218
 
4219
+ #: includes/class-mla-shortcodes.php:335
4220
+ #: includes/class-mla-shortcodes.php:1442
4221
+ #: includes/class-mla-shortcodes.php:2397
4222
+ #: includes/class-mla-shortcodes.php:2641
4223
  msgid "Next"
4224
  msgstr ""
4225
 
4226
+ #: includes/class-mla-shortcodes.php:442
4227
  msgid "mla_debug empty gallery"
4228
  msgstr ""
4229
 
4230
+ #: includes/class-mla-shortcodes.php:506
4231
  msgid ""
4232
  "<strong>Photonic-enhanced [mla_gallery]</strong> type must be "
4233
  "<strong>default</strong>, query = "
4234
  msgstr ""
4235
 
4236
+ #: includes/class-mla-shortcodes.php:854
4237
  msgid "unknown"
4238
  msgstr ""
4239
 
4240
+ #: includes/class-mla-shortcodes.php:1574
4241
  msgid "mla_debug attributes"
4242
  msgstr ""
4243
 
4244
+ #: includes/class-mla-shortcodes.php:1575
4245
  msgid "mla_debug arguments"
4246
  msgstr ""
4247
 
4248
+ #: includes/class-mla-shortcodes.php:1667
4249
  msgid "mla_debug empty cloud"
4250
  msgstr ""
4251
 
4252
+ #: includes/class-mla-shortcodes.php:3016
4253
+ #: includes/class-mla-shortcodes.php:3344
4254
+ #: includes/class-mla-shortcodes.php:3375
4255
  msgid "Invalid mla_gallery"
4256
  msgstr ""
4257
 
4258
+ #: includes/class-mla-shortcodes.php:3623
4259
  msgid "mla_debug query"
4260
  msgstr ""
4261
 
4262
+ #: includes/class-mla-shortcodes.php:3624
4263
  msgid "mla_debug request"
4264
  msgstr ""
4265
 
4266
+ #: includes/class-mla-shortcodes.php:3625
4267
  msgid "mla_debug query_vars"
4268
  msgstr ""
4269
 
4270
+ #: includes/class-mla-shortcodes.php:3626
4271
  msgid "mla_debug post_count"
4272
  msgstr ""
4273
 
4274
+ #: includes/class-mla-shortcodes.php:3694
4275
  msgid "mla_debug WHERE filter"
4276
  msgstr ""
4277
 
4278
+ #: includes/class-mla-shortcodes.php:3713
4279
  msgid "mla_debug modified WHERE filter"
4280
  msgstr ""
4281
 
4282
+ #: includes/class-mla-shortcodes.php:3736
4283
  msgid "mla_debug ORDER BY filter, incoming"
4284
  msgstr ""
4285
 
4286
+ #: includes/class-mla-shortcodes.php:3736
4287
  msgid "Replacement ORDER BY clause"
4288
  msgstr ""
4289
 
4290
+ #: includes/class-mla-shortcodes.php:3759
4291
  msgid "mla_debug posts_clauses filter"
4292
  msgstr ""
4293
 
4294
+ #: includes/class-mla-shortcodes.php:3777
4295
  msgid "mla_debug posts_clauses_request filter"
4296
  msgstr ""
4297
 
4298
+ #: includes/class-mla-shortcodes.php:3967
4299
  msgid "Invalid taxonomy"
4300
  msgstr ""
4301
 
4302
+ #: includes/class-mla-shortcodes.php:4173
4303
  msgid "mla_debug query arguments"
4304
  msgstr ""
4305
 
4306
+ #: includes/class-mla-shortcodes.php:4174
4307
  msgid "mla_debug last_query"
4308
  msgstr ""
4309
 
4310
+ #: includes/class-mla-shortcodes.php:4175
4311
  msgid "mla_debug last_error"
4312
  msgstr ""
4313
 
4314
+ #: includes/class-mla-shortcodes.php:4176
4315
  msgid "mla_debug num_rows"
4316
  msgstr ""
4317
 
4318
+ #: includes/class-mla-shortcodes.php:4177
4319
  msgid "mla_debug found_rows"
4320
  msgstr ""
4321
 
4420
  msgid "Search Media"
4421
  msgstr ""
4422
 
4423
+ #: includes/mla-plugin-loader.php:43
4424
  msgid "The Media Library Assistant cannot load."
4425
  msgstr ""
4426
 
4427
+ #: includes/mla-plugin-loader.php:45
4428
  msgid "You must resolve these conflicts before this plugin can safely load."
4429
  msgstr ""
phpDocs/classes.svg CHANGED
@@ -4,189 +4,227 @@
4
  <!-- Generated by graphviz version 2.28.0 (20110507.0327)
5
  -->
6
  <!-- Title: G Pages: 1 -->
7
- <svg width="472pt" height="960pt"
8
- viewBox="0.00 0.00 472.00 960.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9
- <g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 956)">
10
  <title>G</title>
11
- <polygon fill="white" stroke="white" points="-4,5 -4,-956 469,-956 469,5 -4,5"/>
12
  <g id="graph2" class="cluster"><title>cluster_global</title>
13
- <polyline fill="none" stroke="gray" points="232,-8 444,-8 "/>
14
- <path fill="none" stroke="gray" d="M444,-8C450,-8 456,-14 456,-20"/>
15
- <polyline fill="none" stroke="gray" points="456,-20 456,-932 "/>
16
- <path fill="none" stroke="gray" d="M456,-932C456,-938 450,-944 444,-944"/>
17
- <polyline fill="none" stroke="gray" points="444,-944 232,-944 "/>
18
- <path fill="none" stroke="gray" d="M232,-944C226,-944 220,-938 220,-932"/>
19
- <polyline fill="none" stroke="gray" points="220,-932 220,-20 "/>
20
- <path fill="none" stroke="gray" d="M220,-20C220,-14 226,-8 232,-8"/>
21
- <text text-anchor="middle" x="338" y="-931.2" font-family="Times New Roman,serif" font-size="11.00" fill="gray">global</text>
22
  </g>
23
  <!-- \\MNA_Pad_Counts_Walker -->
24
  <g id="node2" class="node"><title>\\MNA_Pad_Counts_Walker</title>
25
  <a xlink:href="examples.twentytwelve-mla.content-tosca30-dropdown.html" xlink:title="MNA_Pad_Counts_Walker" target="_parent">
26
- <polygon fill="none" stroke="black" points="417,-754 259,-754 259,-718 417,-718 417,-754"/>
27
- <text text-anchor="middle" x="338" y="-733.2" font-family="Courier,monospace" font-size="11.00">MNA_Pad_Counts_Walker</text>
28
  </a>
29
  </g>
30
  <!-- \\Walker_Category -->
31
- <g id="node20" class="node"><title>\\Walker_Category</title>
32
- <ellipse fill="none" stroke="black" cx="78" cy="-817" rx="77.1866" ry="18"/>
33
- <text text-anchor="middle" x="78" y="-813.3" font-family="Times New Roman,serif" font-size="14.00" fill="gray">\Walker_Category</text>
34
  </g>
35
  <!-- \\MNA_Pad_Counts_Walker&#45;&gt;\\Walker_Category -->
36
  <g id="edge3" class="edge"><title>\\MNA_Pad_Counts_Walker&#45;&gt;\\Walker_Category</title>
37
- <path fill="none" stroke="black" d="M258.874,-752.438C245.812,-755.64 232.461,-759.196 220,-763 187.818,-772.824 152.458,-786.373 125.199,-797.441"/>
38
- <polygon fill="none" stroke="black" points="123.842,-794.215 115.914,-801.243 126.494,-800.693 123.842,-794.215"/>
 
 
 
 
 
 
 
39
  </g>
40
  <!-- \\MLAData -->
41
- <g id="node3" class="node"><title>\\MLAData</title>
42
  <a xlink:href="includes.class-mla-data.html" xlink:title="MLAData" target="_parent">
43
- <polygon fill="none" stroke="black" points="370,-862 306,-862 306,-826 370,-826 370,-862"/>
44
- <text text-anchor="middle" x="338" y="-841.2" font-family="Courier,monospace" font-size="11.00">MLAData</text>
45
  </a>
46
  </g>
47
  <!-- \\MLAEdit -->
48
- <g id="node4" class="node"><title>\\MLAEdit</title>
49
  <a xlink:href="includes.class-mla-edit-media.html" xlink:title="MLAEdit" target="_parent">
50
- <polygon fill="none" stroke="black" points="370,-808 306,-808 306,-772 370,-772 370,-808"/>
51
- <text text-anchor="middle" x="338" y="-787.2" font-family="Courier,monospace" font-size="11.00">MLAEdit</text>
52
  </a>
53
  </g>
54
  <!-- \\MLA_Checklist_Walker -->
55
- <g id="node5" class="node"><title>\\MLA_Checklist_Walker</title>
56
  <a xlink:href="includes.class-mla-edit-media.html" xlink:title="MLA_Checklist_Walker" target="_parent">
57
- <polygon fill="none" stroke="black" points="414,-916 262,-916 262,-880 414,-880 414,-916"/>
58
- <text text-anchor="middle" x="338" y="-895.2" font-family="Courier,monospace" font-size="11.00">MLA_Checklist_Walker</text>
59
  </a>
60
  </g>
61
  <!-- \\MLA_Checklist_Walker&#45;&gt;\\Walker_Category -->
62
  <g id="edge5" class="edge"><title>\\MLA_Checklist_Walker&#45;&gt;\\Walker_Category</title>
63
- <path fill="none" stroke="black" d="M261.691,-882.248C247.739,-878.871 233.359,-875.078 220,-871 187.818,-861.176 152.458,-847.627 125.199,-836.559"/>
64
- <polygon fill="none" stroke="black" points="126.494,-833.307 115.914,-832.757 123.842,-839.785 126.494,-833.307"/>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  </g>
66
  <!-- \\MLA_List_Table -->
67
- <g id="node6" class="node"><title>\\MLA_List_Table</title>
68
  <a xlink:href="includes.class-mla-list-table.html" xlink:title="MLA_List_Table" target="_parent">
69
- <polygon fill="none" stroke="black" points="393.5,-430 282.5,-430 282.5,-394 393.5,-394 393.5,-430"/>
70
- <text text-anchor="middle" x="338" y="-409.2" font-family="Courier,monospace" font-size="11.00">MLA_List_Table</text>
71
  </a>
72
  </g>
73
  <!-- \\WP_List_Table -->
74
- <g id="node23" class="node"><title>\\WP_List_Table</title>
75
- <ellipse fill="none" stroke="black" cx="78" cy="-304" rx="71.4873" ry="18"/>
76
- <text text-anchor="middle" x="78" y="-300.3" font-family="Times New Roman,serif" font-size="14.00" fill="gray">\WP_List_Table</text>
77
  </g>
78
  <!-- \\MLA_List_Table&#45;&gt;\\WP_List_Table -->
79
- <g id="edge7" class="edge"><title>\\MLA_List_Table&#45;&gt;\\WP_List_Table</title>
80
- <path fill="none" stroke="black" d="M282.408,-402.879C262.387,-398.635 239.793,-392.771 220,-385 180.875,-369.639 139.567,-344.748 111.849,-326.607"/>
81
- <polygon fill="none" stroke="black" points="113.616,-323.58 103.347,-320.976 109.751,-329.416 113.616,-323.58"/>
82
  </g>
83
  <!-- \\MLA -->
84
- <g id="node7" class="node"><title>\\MLA</title>
85
  <a xlink:href="includes.class-mla-main.html" xlink:title="MLA" target="_parent">
86
- <polygon fill="none" stroke="black" points="365,-646 311,-646 311,-610 365,-610 365,-646"/>
87
- <text text-anchor="middle" x="338" y="-625.2" font-family="Courier,monospace" font-size="11.00">MLA</text>
88
  </a>
89
  </g>
90
  <!-- \\MLAModal -->
91
- <g id="node8" class="node"><title>\\MLAModal</title>
92
  <a xlink:href="includes.class-mla-media-modal.html" xlink:title="MLAModal" target="_parent">
93
- <polygon fill="none" stroke="black" points="373.5,-592 302.5,-592 302.5,-556 373.5,-556 373.5,-592"/>
94
- <text text-anchor="middle" x="338" y="-571.2" font-family="Courier,monospace" font-size="11.00">MLAModal</text>
95
  </a>
96
  </g>
97
  <!-- \\MLAMime -->
98
- <g id="node9" class="node"><title>\\MLAMime</title>
99
  <a xlink:href="includes.class-mla-mime-types.html" xlink:title="MLAMime" target="_parent">
100
- <polygon fill="none" stroke="black" points="370,-538 306,-538 306,-502 370,-502 370,-538"/>
101
- <text text-anchor="middle" x="338" y="-517.2" font-family="Courier,monospace" font-size="11.00">MLAMime</text>
102
  </a>
103
  </g>
104
  <!-- \\MLAObjects -->
105
- <g id="node10" class="node"><title>\\MLAObjects</title>
106
  <a xlink:href="includes.class-mla-objects.html" xlink:title="MLAObjects" target="_parent">
107
- <polygon fill="none" stroke="black" points="380,-484 296,-484 296,-448 380,-448 380,-484"/>
108
- <text text-anchor="middle" x="338" y="-463.2" font-family="Courier,monospace" font-size="11.00">MLAObjects</text>
109
  </a>
110
  </g>
111
  <!-- \\MLATextWidget -->
112
- <g id="node11" class="node"><title>\\MLATextWidget</title>
113
  <a xlink:href="includes.class-mla-objects.html" xlink:title="MLATextWidget" target="_parent">
114
- <polygon fill="none" stroke="black" points="390,-106 286,-106 286,-70 390,-70 390,-106"/>
115
- <text text-anchor="middle" x="338" y="-85.2" font-family="Courier,monospace" font-size="11.00">MLATextWidget</text>
116
  </a>
117
  </g>
118
  <!-- \\WP_Widget -->
119
- <g id="node25" class="node"><title>\\WP_Widget</title>
120
- <ellipse fill="none" stroke="black" cx="78" cy="-88" rx="58.4896" ry="18"/>
121
- <text text-anchor="middle" x="78" y="-84.3" font-family="Times New Roman,serif" font-size="14.00" fill="gray">\WP_Widget</text>
122
  </g>
123
  <!-- \\MLATextWidget&#45;&gt;\\WP_Widget -->
124
- <g id="edge9" class="edge"><title>\\MLATextWidget&#45;&gt;\\WP_Widget</title>
125
- <path fill="none" stroke="black" d="M285.719,-88C245.993,-88 190.59,-88 147.139,-88"/>
126
- <polygon fill="none" stroke="black" points="146.933,-84.5001 136.933,-88 146.933,-91.5001 146.933,-84.5001"/>
127
  </g>
128
  <!-- \\MLAOptions -->
129
- <g id="node12" class="node"><title>\\MLAOptions</title>
130
  <a xlink:href="includes.class-mla-options.html" xlink:title="MLAOptions" target="_parent">
131
- <polygon fill="none" stroke="black" points="380,-376 296,-376 296,-340 380,-340 380,-376"/>
132
- <text text-anchor="middle" x="338" y="-355.2" font-family="Courier,monospace" font-size="11.00">MLAOptions</text>
133
  </a>
134
  </g>
135
  <!-- \\MLASettings -->
136
- <g id="node13" class="node"><title>\\MLASettings</title>
137
  <a xlink:href="includes.class-mla-settings.html" xlink:title="MLASettings" target="_parent">
138
- <polygon fill="none" stroke="black" points="383.5,-322 292.5,-322 292.5,-286 383.5,-286 383.5,-322"/>
139
- <text text-anchor="middle" x="338" y="-301.2" font-family="Courier,monospace" font-size="11.00">MLASettings</text>
140
  </a>
141
  </g>
142
  <!-- \\MLAShortcodes -->
143
- <g id="node14" class="node"><title>\\MLAShortcodes</title>
144
  <a xlink:href="includes.class-mla-shortcodes.html" xlink:title="MLAShortcodes" target="_parent">
145
- <polygon fill="none" stroke="black" points="390,-268 286,-268 286,-232 390,-232 390,-268"/>
146
- <text text-anchor="middle" x="338" y="-247.2" font-family="Courier,monospace" font-size="11.00">MLAShortcodes</text>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
147
  </a>
148
  </g>
149
  <!-- \\MLA_Upload_List_Table -->
150
- <g id="node15" class="node"><title>\\MLA_Upload_List_Table</title>
151
  <a xlink:href="includes.class-mla-upload-list-table.html" xlink:title="MLA_Upload_List_Table" target="_parent">
152
- <polygon fill="none" stroke="black" points="417,-214 259,-214 259,-178 417,-178 417,-214"/>
153
- <text text-anchor="middle" x="338" y="-193.2" font-family="Courier,monospace" font-size="11.00">MLA_Upload_List_Table</text>
154
  </a>
155
  </g>
156
  <!-- \\MLA_Upload_List_Table&#45;&gt;\\WP_List_Table -->
157
- <g id="edge11" class="edge"><title>\\MLA_Upload_List_Table&#45;&gt;\\WP_List_Table</title>
158
- <path fill="none" stroke="black" d="M258.926,-210.634C245.73,-214.063 232.322,-218.162 220,-223 180.875,-238.361 139.567,-263.252 111.849,-281.393"/>
159
- <polygon fill="none" stroke="black" points="109.751,-278.584 103.347,-287.024 113.616,-284.42 109.751,-278.584"/>
160
  </g>
161
  <!-- \\MLA_Upload_Optional_List_Table -->
162
- <g id="node16" class="node"><title>\\MLA_Upload_Optional_List_Table</title>
163
  <a xlink:href="includes.class-mla-upload-optional-list-table.html" xlink:title="MLA_Upload_Optional_List_Table" target="_parent">
164
- <polygon fill="none" stroke="black" points="447.5,-160 228.5,-160 228.5,-124 447.5,-124 447.5,-160"/>
165
- <text text-anchor="middle" x="338" y="-139.2" font-family="Courier,monospace" font-size="11.00">MLA_Upload_Optional_List_Table</text>
166
  </a>
167
  </g>
168
  <!-- \\MLA_Upload_Optional_List_Table&#45;&gt;\\WP_List_Table -->
169
- <g id="edge13" class="edge"><title>\\MLA_Upload_Optional_List_Table&#45;&gt;\\WP_List_Table</title>
170
- <path fill="none" stroke="black" d="M239.712,-160.099C232.88,-162.682 226.236,-165.632 220,-169 169.304,-196.382 123.755,-246.937 98.877,-277.809"/>
171
- <polygon fill="none" stroke="black" points="95.887,-275.946 92.4211,-285.958 101.374,-280.293 95.887,-275.946"/>
172
  </g>
173
  <!-- \\MLA_View_List_Table -->
174
- <g id="node17" class="node"><title>\\MLA_View_List_Table</title>
175
  <a xlink:href="includes.class-mla-view-list-table.html" xlink:title="MLA_View_List_Table" target="_parent">
176
- <polygon fill="none" stroke="black" points="410.5,-700 265.5,-700 265.5,-664 410.5,-664 410.5,-700"/>
177
- <text text-anchor="middle" x="338" y="-679.2" font-family="Courier,monospace" font-size="11.00">MLA_View_List_Table</text>
178
  </a>
179
  </g>
180
  <!-- \\MLA_View_List_Table&#45;&gt;\\WP_List_Table -->
181
- <g id="edge15" class="edge"><title>\\MLA_View_List_Table&#45;&gt;\\WP_List_Table</title>
182
- <path fill="none" stroke="black" d="M265.408,-676.714C249.051,-672.629 232.75,-665.911 220,-655 119.09,-568.649 89.6198,-399.672 81.6923,-332.511"/>
183
- <polygon fill="none" stroke="black" points="85.1381,-331.827 80.56,-322.273 78.1806,-332.597 85.1381,-331.827"/>
184
  </g>
185
  <!-- \\MLATest -->
186
- <g id="node18" class="node"><title>\\MLATest</title>
187
  <a xlink:href="tests.class-mla-tests.html" xlink:title="MLATest" target="_parent">
188
- <polygon fill="none" stroke="black" points="370,-52 306,-52 306,-16 370,-16 370,-52"/>
189
- <text text-anchor="middle" x="338" y="-31.2" font-family="Courier,monospace" font-size="11.00">MLATest</text>
190
  </a>
191
  </g>
192
  </g>
4
  <!-- Generated by graphviz version 2.28.0 (20110507.0327)
5
  -->
6
  <!-- Title: G Pages: 1 -->
7
+ <svg width="546pt" height="1176pt"
8
+ viewBox="0.00 0.00 546.00 1176.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9
+ <g id="graph1" class="graph" transform="scale(1 1) rotate(0) translate(4 1172)">
10
  <title>G</title>
11
+ <polygon fill="white" stroke="white" points="-4,5 -4,-1172 543,-1172 543,5 -4,5"/>
12
  <g id="graph2" class="cluster"><title>cluster_global</title>
13
+ <polyline fill="none" stroke="gray" points="306,-8 518,-8 "/>
14
+ <path fill="none" stroke="gray" d="M518,-8C524,-8 530,-14 530,-20"/>
15
+ <polyline fill="none" stroke="gray" points="530,-20 530,-1148 "/>
16
+ <path fill="none" stroke="gray" d="M530,-1148C530,-1154 524,-1160 518,-1160"/>
17
+ <polyline fill="none" stroke="gray" points="518,-1160 306,-1160 "/>
18
+ <path fill="none" stroke="gray" d="M306,-1160C300,-1160 294,-1154 294,-1148"/>
19
+ <polyline fill="none" stroke="gray" points="294,-1148 294,-20 "/>
20
+ <path fill="none" stroke="gray" d="M294,-20C294,-14 300,-8 306,-8"/>
21
+ <text text-anchor="middle" x="412" y="-1147.2" font-family="Times New Roman,serif" font-size="11.00" fill="gray">global</text>
22
  </g>
23
  <!-- \\MNA_Pad_Counts_Walker -->
24
  <g id="node2" class="node"><title>\\MNA_Pad_Counts_Walker</title>
25
  <a xlink:href="examples.twentytwelve-mla.content-tosca30-dropdown.html" xlink:title="MNA_Pad_Counts_Walker" target="_parent">
26
+ <polygon fill="none" stroke="black" points="491,-916 333,-916 333,-880 491,-880 491,-916"/>
27
+ <text text-anchor="middle" x="412" y="-895.2" font-family="Courier,monospace" font-size="11.00">MNA_Pad_Counts_Walker</text>
28
  </a>
29
  </g>
30
  <!-- \\Walker_Category -->
31
+ <g id="node24" class="node"><title>\\Walker_Category</title>
32
+ <ellipse fill="none" stroke="black" cx="115" cy="-1006" rx="77.1866" ry="18"/>
33
+ <text text-anchor="middle" x="115" y="-1002.3" font-family="Times New Roman,serif" font-size="14.00" fill="gray">\Walker_Category</text>
34
  </g>
35
  <!-- \\MNA_Pad_Counts_Walker&#45;&gt;\\Walker_Category -->
36
  <g id="edge3" class="edge"><title>\\MNA_Pad_Counts_Walker&#45;&gt;\\Walker_Category</title>
37
+ <path fill="none" stroke="black" d="M332.977,-913.708C319.839,-917.006 306.438,-920.783 294,-925 245.151,-941.564 191.592,-966.995 156.117,-984.936"/>
38
+ <polygon fill="none" stroke="black" points="154.377,-981.894 147.057,-989.554 157.555,-988.131 154.377,-981.894"/>
39
+ </g>
40
+ <!-- \\MLAPDF -->
41
+ <g id="node3" class="node"><title>\\MLAPDF</title>
42
+ <a xlink:href="includes.class-mla-data-pdf.html" xlink:title="MLAPDF" target="_parent">
43
+ <polygon fill="none" stroke="black" points="440.5,-1078 383.5,-1078 383.5,-1042 440.5,-1042 440.5,-1078"/>
44
+ <text text-anchor="middle" x="412" y="-1057.2" font-family="Courier,monospace" font-size="11.00">MLAPDF</text>
45
+ </a>
46
  </g>
47
  <!-- \\MLAData -->
48
+ <g id="node4" class="node"><title>\\MLAData</title>
49
  <a xlink:href="includes.class-mla-data.html" xlink:title="MLAData" target="_parent">
50
+ <polygon fill="none" stroke="black" points="444,-1024 380,-1024 380,-988 444,-988 444,-1024"/>
51
+ <text text-anchor="middle" x="412" y="-1003.2" font-family="Courier,monospace" font-size="11.00">MLAData</text>
52
  </a>
53
  </g>
54
  <!-- \\MLAEdit -->
55
+ <g id="node5" class="node"><title>\\MLAEdit</title>
56
  <a xlink:href="includes.class-mla-edit-media.html" xlink:title="MLAEdit" target="_parent">
57
+ <polygon fill="none" stroke="black" points="444,-970 380,-970 380,-934 444,-934 444,-970"/>
58
+ <text text-anchor="middle" x="412" y="-949.2" font-family="Courier,monospace" font-size="11.00">MLAEdit</text>
59
  </a>
60
  </g>
61
  <!-- \\MLA_Checklist_Walker -->
62
+ <g id="node6" class="node"><title>\\MLA_Checklist_Walker</title>
63
  <a xlink:href="includes.class-mla-edit-media.html" xlink:title="MLA_Checklist_Walker" target="_parent">
64
+ <polygon fill="none" stroke="black" points="488,-1132 336,-1132 336,-1096 488,-1096 488,-1132"/>
65
+ <text text-anchor="middle" x="412" y="-1111.2" font-family="Courier,monospace" font-size="11.00">MLA_Checklist_Walker</text>
66
  </a>
67
  </g>
68
  <!-- \\MLA_Checklist_Walker&#45;&gt;\\Walker_Category -->
69
  <g id="edge5" class="edge"><title>\\MLA_Checklist_Walker&#45;&gt;\\Walker_Category</title>
70
+ <path fill="none" stroke="black" d="M335.788,-1098.99C321.759,-1095.53 307.326,-1091.52 294,-1087 245.151,-1070.44 191.592,-1045 156.117,-1027.06"/>
71
+ <polygon fill="none" stroke="black" points="157.555,-1023.87 147.057,-1022.45 154.377,-1030.11 157.555,-1023.87"/>
72
+ </g>
73
+ <!-- \\MLA_Image_Editor -->
74
+ <g id="node7" class="node"><title>\\MLA_Image_Editor</title>
75
+ <a xlink:href="includes.class-mla-image-editor.html" xlink:title="MLA_Image_Editor" target="_parent">
76
+ <polygon fill="none" stroke="black" points="474.5,-862 349.5,-862 349.5,-826 474.5,-826 474.5,-862"/>
77
+ <text text-anchor="middle" x="412" y="-841.2" font-family="Courier,monospace" font-size="11.00">MLA_Image_Editor</text>
78
+ </a>
79
+ </g>
80
+ <!-- \\WP_Image_Editor_Imagick -->
81
+ <g id="node27" class="node"><title>\\WP_Image_Editor_Imagick</title>
82
+ <ellipse fill="none" stroke="black" cx="115" cy="-844" rx="115.08" ry="18"/>
83
+ <text text-anchor="middle" x="115" y="-840.3" font-family="Times New Roman,serif" font-size="14.00" fill="gray">\WP_Image_Editor_Imagick</text>
84
+ </g>
85
+ <!-- \\MLA_Image_Editor&#45;&gt;\\WP_Image_Editor_Imagick -->
86
+ <g id="edge7" class="edge"><title>\\MLA_Image_Editor&#45;&gt;\\WP_Image_Editor_Imagick</title>
87
+ <path fill="none" stroke="black" d="M349.158,-844C317.519,-844 277.834,-844 240.22,-844"/>
88
+ <polygon fill="none" stroke="black" points="240.193,-840.5 230.193,-844 240.193,-847.5 240.193,-840.5"/>
89
  </g>
90
  <!-- \\MLA_List_Table -->
91
+ <g id="node8" class="node"><title>\\MLA_List_Table</title>
92
  <a xlink:href="includes.class-mla-list-table.html" xlink:title="MLA_List_Table" target="_parent">
93
+ <polygon fill="none" stroke="black" points="467.5,-538 356.5,-538 356.5,-502 467.5,-502 467.5,-538"/>
94
+ <text text-anchor="middle" x="412" y="-517.2" font-family="Courier,monospace" font-size="11.00">MLA_List_Table</text>
95
  </a>
96
  </g>
97
  <!-- \\WP_List_Table -->
98
+ <g id="node29" class="node"><title>\\WP_List_Table</title>
99
+ <ellipse fill="none" stroke="black" cx="115" cy="-358" rx="71.4873" ry="18"/>
100
+ <text text-anchor="middle" x="115" y="-354.3" font-family="Times New Roman,serif" font-size="14.00" fill="gray">\WP_List_Table</text>
101
  </g>
102
  <!-- \\MLA_List_Table&#45;&gt;\\WP_List_Table -->
103
+ <g id="edge9" class="edge"><title>\\MLA_List_Table&#45;&gt;\\WP_List_Table</title>
104
+ <path fill="none" stroke="black" d="M356.418,-512.35C336.184,-508.252 313.446,-502.104 294,-493 233.188,-464.532 173.222,-412.829 140.768,-382.335"/>
105
+ <polygon fill="none" stroke="black" points="143.166,-379.786 133.507,-375.433 138.344,-384.86 143.166,-379.786"/>
106
  </g>
107
  <!-- \\MLA -->
108
+ <g id="node9" class="node"><title>\\MLA</title>
109
  <a xlink:href="includes.class-mla-main.html" xlink:title="MLA" target="_parent">
110
+ <polygon fill="none" stroke="black" points="439,-754 385,-754 385,-718 439,-718 439,-754"/>
111
+ <text text-anchor="middle" x="412" y="-733.2" font-family="Courier,monospace" font-size="11.00">MLA</text>
112
  </a>
113
  </g>
114
  <!-- \\MLAModal -->
115
+ <g id="node10" class="node"><title>\\MLAModal</title>
116
  <a xlink:href="includes.class-mla-media-modal.html" xlink:title="MLAModal" target="_parent">
117
+ <polygon fill="none" stroke="black" points="447.5,-700 376.5,-700 376.5,-664 447.5,-664 447.5,-700"/>
118
+ <text text-anchor="middle" x="412" y="-679.2" font-family="Courier,monospace" font-size="11.00">MLAModal</text>
119
  </a>
120
  </g>
121
  <!-- \\MLAMime -->
122
+ <g id="node11" class="node"><title>\\MLAMime</title>
123
  <a xlink:href="includes.class-mla-mime-types.html" xlink:title="MLAMime" target="_parent">
124
+ <polygon fill="none" stroke="black" points="444,-646 380,-646 380,-610 444,-610 444,-646"/>
125
+ <text text-anchor="middle" x="412" y="-625.2" font-family="Courier,monospace" font-size="11.00">MLAMime</text>
126
  </a>
127
  </g>
128
  <!-- \\MLAObjects -->
129
+ <g id="node12" class="node"><title>\\MLAObjects</title>
130
  <a xlink:href="includes.class-mla-objects.html" xlink:title="MLAObjects" target="_parent">
131
+ <polygon fill="none" stroke="black" points="454,-592 370,-592 370,-556 454,-556 454,-592"/>
132
+ <text text-anchor="middle" x="412" y="-571.2" font-family="Courier,monospace" font-size="11.00">MLAObjects</text>
133
  </a>
134
  </g>
135
  <!-- \\MLATextWidget -->
136
+ <g id="node13" class="node"><title>\\MLATextWidget</title>
137
  <a xlink:href="includes.class-mla-objects.html" xlink:title="MLATextWidget" target="_parent">
138
+ <polygon fill="none" stroke="black" points="464,-106 360,-106 360,-70 464,-70 464,-106"/>
139
+ <text text-anchor="middle" x="412" y="-85.2" font-family="Courier,monospace" font-size="11.00">MLATextWidget</text>
140
  </a>
141
  </g>
142
  <!-- \\WP_Widget -->
143
+ <g id="node31" class="node"><title>\\WP_Widget</title>
144
+ <ellipse fill="none" stroke="black" cx="115" cy="-88" rx="58.4896" ry="18"/>
145
+ <text text-anchor="middle" x="115" y="-84.3" font-family="Times New Roman,serif" font-size="14.00" fill="gray">\WP_Widget</text>
146
  </g>
147
  <!-- \\MLATextWidget&#45;&gt;\\WP_Widget -->
148
+ <g id="edge11" class="edge"><title>\\MLATextWidget&#45;&gt;\\WP_Widget</title>
149
+ <path fill="none" stroke="black" d="M359.952,-88C311.228,-88 237.501,-88 183.853,-88"/>
150
+ <polygon fill="none" stroke="black" points="183.742,-84.5001 173.742,-88 183.742,-91.5001 183.742,-84.5001"/>
151
  </g>
152
  <!-- \\MLAOptions -->
153
+ <g id="node14" class="node"><title>\\MLAOptions</title>
154
  <a xlink:href="includes.class-mla-options.html" xlink:title="MLAOptions" target="_parent">
155
+ <polygon fill="none" stroke="black" points="454,-484 370,-484 370,-448 454,-448 454,-484"/>
156
+ <text text-anchor="middle" x="412" y="-463.2" font-family="Courier,monospace" font-size="11.00">MLAOptions</text>
157
  </a>
158
  </g>
159
  <!-- \\MLASettings -->
160
+ <g id="node15" class="node"><title>\\MLASettings</title>
161
  <a xlink:href="includes.class-mla-settings.html" xlink:title="MLASettings" target="_parent">
162
+ <polygon fill="none" stroke="black" points="457.5,-430 366.5,-430 366.5,-394 457.5,-394 457.5,-430"/>
163
+ <text text-anchor="middle" x="412" y="-409.2" font-family="Courier,monospace" font-size="11.00">MLASettings</text>
164
  </a>
165
  </g>
166
  <!-- \\MLAShortcodes -->
167
+ <g id="node16" class="node"><title>\\MLAShortcodes</title>
168
  <a xlink:href="includes.class-mla-shortcodes.html" xlink:title="MLAShortcodes" target="_parent">
169
+ <polygon fill="none" stroke="black" points="464,-376 360,-376 360,-340 464,-340 464,-376"/>
170
+ <text text-anchor="middle" x="412" y="-355.2" font-family="Courier,monospace" font-size="11.00">MLAShortcodes</text>
171
+ </a>
172
+ </g>
173
+ <!-- \\MLAStreamImage -->
174
+ <g id="node17" class="node"><title>\\MLAStreamImage</title>
175
+ <a xlink:href="includes.mla-stream-image.html" xlink:title="MLAStreamImage" target="_parent">
176
+ <polygon fill="none" stroke="black" points="467.5,-322 356.5,-322 356.5,-286 467.5,-286 467.5,-322"/>
177
+ <text text-anchor="middle" x="412" y="-301.2" font-family="Courier,monospace" font-size="11.00">MLAStreamImage</text>
178
+ </a>
179
+ </g>
180
+ <!-- \\MLAMutex -->
181
+ <g id="node18" class="node"><title>\\MLAMutex</title>
182
+ <a xlink:href="includes.mla-stream-image.html" xlink:title="MLAMutex" target="_parent">
183
+ <polygon fill="none" stroke="black" points="447.5,-268 376.5,-268 376.5,-232 447.5,-232 447.5,-268"/>
184
+ <text text-anchor="middle" x="412" y="-247.2" font-family="Courier,monospace" font-size="11.00">MLAMutex</text>
185
  </a>
186
  </g>
187
  <!-- \\MLA_Upload_List_Table -->
188
+ <g id="node19" class="node"><title>\\MLA_Upload_List_Table</title>
189
  <a xlink:href="includes.class-mla-upload-list-table.html" xlink:title="MLA_Upload_List_Table" target="_parent">
190
+ <polygon fill="none" stroke="black" points="491,-214 333,-214 333,-178 491,-178 491,-214"/>
191
+ <text text-anchor="middle" x="412" y="-193.2" font-family="Courier,monospace" font-size="11.00">MLA_Upload_List_Table</text>
192
  </a>
193
  </g>
194
  <!-- \\MLA_Upload_List_Table&#45;&gt;\\WP_List_Table -->
195
+ <g id="edge13" class="edge"><title>\\MLA_Upload_List_Table&#45;&gt;\\WP_List_Table</title>
196
+ <path fill="none" stroke="black" d="M332.982,-209.152C319.646,-212.757 306.178,-217.299 294,-223 233.188,-251.468 173.222,-303.171 140.768,-333.665"/>
197
+ <polygon fill="none" stroke="black" points="138.344,-331.14 133.507,-340.567 143.166,-336.214 138.344,-331.14"/>
198
  </g>
199
  <!-- \\MLA_Upload_Optional_List_Table -->
200
+ <g id="node20" class="node"><title>\\MLA_Upload_Optional_List_Table</title>
201
  <a xlink:href="includes.class-mla-upload-optional-list-table.html" xlink:title="MLA_Upload_Optional_List_Table" target="_parent">
202
+ <polygon fill="none" stroke="black" points="521.5,-160 302.5,-160 302.5,-124 521.5,-124 521.5,-160"/>
203
+ <text text-anchor="middle" x="412" y="-139.2" font-family="Courier,monospace" font-size="11.00">MLA_Upload_Optional_List_Table</text>
204
  </a>
205
  </g>
206
  <!-- \\MLA_Upload_Optional_List_Table&#45;&gt;\\WP_List_Table -->
207
+ <g id="edge15" class="edge"><title>\\MLA_Upload_Optional_List_Table&#45;&gt;\\WP_List_Table</title>
208
+ <path fill="none" stroke="black" d="M312.614,-160.093C306.146,-162.676 299.876,-165.627 294,-169 221.89,-210.391 161.28,-290.264 133.037,-331.67"/>
209
+ <polygon fill="none" stroke="black" points="130.023,-329.881 127.351,-340.133 135.833,-333.784 130.023,-329.881"/>
210
  </g>
211
  <!-- \\MLA_View_List_Table -->
212
+ <g id="node21" class="node"><title>\\MLA_View_List_Table</title>
213
  <a xlink:href="includes.class-mla-view-list-table.html" xlink:title="MLA_View_List_Table" target="_parent">
214
+ <polygon fill="none" stroke="black" points="484.5,-808 339.5,-808 339.5,-772 484.5,-772 484.5,-808"/>
215
+ <text text-anchor="middle" x="412" y="-787.2" font-family="Courier,monospace" font-size="11.00">MLA_View_List_Table</text>
216
  </a>
217
  </g>
218
  <!-- \\MLA_View_List_Table&#45;&gt;\\WP_List_Table -->
219
+ <g id="edge17" class="edge"><title>\\MLA_View_List_Table&#45;&gt;\\WP_List_Table</title>
220
+ <path fill="none" stroke="black" d="M339.348,-784.347C323.086,-780.264 306.844,-773.638 294,-763 171.945,-661.904 131.005,-460.645 119.716,-386.383"/>
221
+ <polygon fill="none" stroke="black" points="123.163,-385.767 118.259,-376.375 116.236,-386.775 123.163,-385.767"/>
222
  </g>
223
  <!-- \\MLATest -->
224
+ <g id="node22" class="node"><title>\\MLATest</title>
225
  <a xlink:href="tests.class-mla-tests.html" xlink:title="MLATest" target="_parent">
226
+ <polygon fill="none" stroke="black" points="444,-52 380,-52 380,-16 444,-16 444,-52"/>
227
+ <text text-anchor="middle" x="412" y="-31.2" font-family="Courier,monospace" font-size="11.00">MLATest</text>
228
  </a>
229
  </g>
230
  </g>
phpDocs/classes/MLA.html CHANGED
@@ -111,6 +111,7 @@ change the meta data for a single attachment.</span><pre>_display_single_item()<
111
  <li class="constant "><a href="#MLA_ADMIN_SINGLE_RESTORE" title="MLA_ADMIN_SINGLE_RESTORE :: mla_admin_action value for restoring a single item from the trash"><span class="description">mla_admin_action value for restoring a single item from the trash</span><pre>MLA_ADMIN_SINGLE_RESTORE</pre></a></li>
112
  <li class="constant "><a href="#MLA_ADMIN_SINGLE_TRASH" title="MLA_ADMIN_SINGLE_TRASH :: mla_admin_action value for moving a single item to the trash"><span class="description">mla_admin_action value for moving a single item to the trash</span><pre>MLA_ADMIN_SINGLE_TRASH</pre></a></li>
113
  <li class="constant "><a href="#MLA_ADMIN_TERMS_SEARCH" title="MLA_ADMIN_TERMS_SEARCH :: mla_admin_action value for searching taxonomy terms"><span class="description">mla_admin_action value for searching taxonomy terms</span><pre>MLA_ADMIN_TERMS_SEARCH</pre></a></li>
 
114
  <li class="constant "><a href="#STYLESHEET_SLUG" title="STYLESHEET_SLUG :: Slug for registering and enqueueing plugin style sheet"><span class="description">Slug for registering and enqueueing plugin style sheet</span><pre>STYLESHEET_SLUG</pre></a></li>
115
  </ul>
116
  </div>
@@ -851,6 +852,18 @@ change the meta data for a single attachment.</h2>
851
  </tr></table>
852
  </div></div>
853
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
854
  <a name="STYLESHEET_SLUG" id="STYLESHEET_SLUG"> </a><div class="element clickable constant STYLESHEET_SLUG" data-toggle="collapse" data-target=".STYLESHEET_SLUG .collapse">
855
  <h2>Slug for registering and enqueueing plugin style sheet</h2>
856
  <pre>STYLESHEET_SLUG : string</pre>
@@ -870,7 +883,7 @@ change the meta data for a single attachment.</h2>
870
  <div class="row"><footer class="span12">
871
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
872
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
873
- generated on 2015-02-17T16:36:12-08:00.<br></footer></div>
874
  </div>
875
  </body>
876
  </html>
111
  <li class="constant "><a href="#MLA_ADMIN_SINGLE_RESTORE" title="MLA_ADMIN_SINGLE_RESTORE :: mla_admin_action value for restoring a single item from the trash"><span class="description">mla_admin_action value for restoring a single item from the trash</span><pre>MLA_ADMIN_SINGLE_RESTORE</pre></a></li>
112
  <li class="constant "><a href="#MLA_ADMIN_SINGLE_TRASH" title="MLA_ADMIN_SINGLE_TRASH :: mla_admin_action value for moving a single item to the trash"><span class="description">mla_admin_action value for moving a single item to the trash</span><pre>MLA_ADMIN_SINGLE_TRASH</pre></a></li>
113
  <li class="constant "><a href="#MLA_ADMIN_TERMS_SEARCH" title="MLA_ADMIN_TERMS_SEARCH :: mla_admin_action value for searching taxonomy terms"><span class="description">mla_admin_action value for searching taxonomy terms</span><pre>MLA_ADMIN_TERMS_SEARCH</pre></a></li>
114
+ <li class="constant "><a href="#MLA_DEVELOPMENT_VERSION" title="MLA_DEVELOPMENT_VERSION :: Current date for Development Version, empty for production versions"><span class="description">Current date for Development Version, empty for production versions</span><pre>MLA_DEVELOPMENT_VERSION</pre></a></li>
115
  <li class="constant "><a href="#STYLESHEET_SLUG" title="STYLESHEET_SLUG :: Slug for registering and enqueueing plugin style sheet"><span class="description">Slug for registering and enqueueing plugin style sheet</span><pre>STYLESHEET_SLUG</pre></a></li>
116
  </ul>
117
  </div>
852
  </tr></table>
853
  </div></div>
854
  </div>
855
+ <a name="MLA_DEVELOPMENT_VERSION" id="MLA_DEVELOPMENT_VERSION"> </a><div class="element clickable constant MLA_DEVELOPMENT_VERSION" data-toggle="collapse" data-target=".MLA_DEVELOPMENT_VERSION .collapse">
856
+ <h2>Current date for Development Version, empty for production versions</h2>
857
+ <pre>MLA_DEVELOPMENT_VERSION : string</pre>
858
+ <div class="labels"></div>
859
+ <div class="row collapse"><div class="detail-description">
860
+ <p class="long_description"></p>
861
+ <table class="table table-bordered"><tr>
862
+ <th>since</th>
863
+ <td>2.10</td>
864
+ </tr></table>
865
+ </div></div>
866
+ </div>
867
  <a name="STYLESHEET_SLUG" id="STYLESHEET_SLUG"> </a><div class="element clickable constant STYLESHEET_SLUG" data-toggle="collapse" data-target=".STYLESHEET_SLUG .collapse">
868
  <h2>Slug for registering and enqueueing plugin style sheet</h2>
869
  <pre>STYLESHEET_SLUG : string</pre>
883
  <div class="row"><footer class="span12">
884
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
885
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
886
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
887
  </div>
888
  </body>
889
  </html>
phpDocs/classes/MLAData.html CHANGED
@@ -57,14 +57,14 @@
57
  <ul class="side-nav nav nav-list">
58
  <li class="nav-header">
59
  <i class="icon-custom icon-method"></i> Methods</li>
60
- <li class="method public "><a href="#_hex_dump" title="_hex_dump :: Format printable version of binary data"><span class="description">Format printable version of binary data</span><pre>_hex_dump()</pre></a></li>
61
  <li class="method public "><a href="#initialize" title="initialize :: Initialization function, similar to __construct()"><span class="description">Initialization function, similar to __construct()</span><pre>initialize()</pre></a></li>
62
  <li class="method public "><a href="#mla_IPTC_EXIF_error_handler" title="mla_IPTC_EXIF_error_handler :: Intercept IPTC and EXIF parse errors"><span class="description">Intercept IPTC and EXIF parse errors</span><pre>mla_IPTC_EXIF_error_handler()</pre></a></li>
 
63
  <li class="method public "><a href="#mla_attachment_array_fetch_references" title="mla_attachment_array_fetch_references :: Add Featured Image and inserted image/link references to an array of attachments"><span class="description">Add Featured Image and inserted image/link references to an array of attachments</span><pre>mla_attachment_array_fetch_references()</pre></a></li>
64
  <li class="method public "><a href="#mla_count_list_table_items" title="mla_count_list_table_items :: Get the total number of attachment posts"><span class="description">Get the total number of attachment posts</span><pre>mla_count_list_table_items()</pre></a></li>
65
  <li class="method public "><a href="#mla_exif_metadata_value" title="mla_exif_metadata_value :: Parse one EXIF metadata field"><span class="description">Parse one EXIF metadata field</span><pre>mla_exif_metadata_value()</pre></a></li>
66
  <li class="method public "><a href="#mla_expand_field_level_parameters" title="mla_expand_field_level_parameters :: Analyze a template, expanding Field-level Markup Substitution Parameters"><span class="description">Analyze a template, expanding Field-level Markup Substitution Parameters</span><pre>mla_expand_field_level_parameters()</pre></a></li>
67
- <li class="method public "><a href="#mla_fetch_attachment_image_metadata" title="mla_fetch_attachment_image_metadata :: Fetch and filter IPTC and EXIF or PDF metadata for an image attachment"><span class="description">Fetch and filter IPTC and EXIF or PDF metadata for an image attachment</span><pre>mla_fetch_attachment_image_metadata()</pre></a></li>
68
  <li class="method public "><a href="#mla_fetch_attachment_metadata" title="mla_fetch_attachment_metadata :: Fetch and filter meta data for an attachment"><span class="description">Fetch and filter meta data for an attachment</span><pre>mla_fetch_attachment_metadata()</pre></a></li>
69
  <li class="method public "><a href="#mla_fetch_attachment_parent_data" title="mla_fetch_attachment_parent_data :: Returns information about an attachment's parent, if found"><span class="description">Returns information about an attachment's parent, if found</span><pre>mla_fetch_attachment_parent_data()</pre></a></li>
70
  <li class="method public "><a href="#mla_fetch_attachment_references" title="mla_fetch_attachment_references :: Find Featured Image and inserted image/link references to an attachment"><span class="description">Find Featured Image and inserted image/link references to an attachment</span><pre>mla_fetch_attachment_references()</pre></a></li>
@@ -72,10 +72,13 @@
72
  <li class="method public "><a href="#mla_flush_mla_galleries" title="mla_flush_mla_galleries :: Invalidates the $mla_galleries or $galleries array and cached values"><span class="description">Invalidates the $mla_galleries or $galleries array and cached values</span><pre>mla_flush_mla_galleries()</pre></a></li>
73
  <li class="method public "><a href="#mla_get_attachment_by_id" title="mla_get_attachment_by_id :: Retrieve an Attachment array given a $post_id"><span class="description">Retrieve an Attachment array given a $post_id</span><pre>mla_get_attachment_by_id()</pre></a></li>
74
  <li class="method public "><a href="#mla_get_template_placeholders" title="mla_get_template_placeholders :: Analyze a template, returning an array of the placeholders it contains"><span class="description">Analyze a template, returning an array of the placeholders it contains</span><pre>mla_get_template_placeholders()</pre></a></li>
 
75
  <li class="method public "><a href="#mla_iptc_metadata_value" title="mla_iptc_metadata_value :: Parse one IPTC metadata field"><span class="description">Parse one IPTC metadata field</span><pre>mla_iptc_metadata_value()</pre></a></li>
76
  <li class="method public "><a href="#mla_load_template" title="mla_load_template :: Load an HTML template from a file"><span class="description">Load an HTML template from a file</span><pre>mla_load_template()</pre></a></li>
77
  <li class="method public "><a href="#mla_parse_array_template" title="mla_parse_array_template :: Expand a template, replacing placeholders with their values"><span class="description">Expand a template, replacing placeholders with their values</span><pre>mla_parse_array_template()</pre></a></li>
 
78
  <li class="method public "><a href="#mla_parse_template" title="mla_parse_template :: Expand a template, replacing placeholders with their values"><span class="description">Expand a template, replacing placeholders with their values</span><pre>mla_parse_template()</pre></a></li>
 
79
  <li class="method public "><a href="#mla_pdf_metadata_value" title="mla_pdf_metadata_value :: Parse one PDF metadata field"><span class="description">Parse one PDF metadata field</span><pre>mla_pdf_metadata_value()</pre></a></li>
80
  <li class="method public "><a href="#mla_query_list_table_items" title="mla_query_list_table_items :: Retrieve attachment objects for list table display"><span class="description">Retrieve attachment objects for list table display</span><pre>mla_query_list_table_items()</pre></a></li>
81
  <li class="method public "><a href="#mla_query_media_modal_items" title="mla_query_media_modal_items :: Retrieve attachment objects for the WordPress Media Manager"><span class="description">Retrieve attachment objects for the WordPress Media Manager</span><pre>mla_query_media_modal_items()</pre></a></li>
@@ -96,31 +99,21 @@ Defined as public because it's a filter.</span><pre>mla_query_relevanssi_admin_s
96
  and meta data for a single attachment'><span class="description">Update a single item; change the "post" data, taxonomy terms
97
  and meta data for a single attachment</span><pre>mla_update_single_item()</pre></a></li>
98
  <li class="method public "><a href="#mla_update_wp_attachment_metadata" title='mla_update_wp_attachment_metadata :: Update "meta:" data for a single attachment'><span class="description">Update "meta:" data for a single attachment</span><pre>mla_update_wp_attachment_metadata()</pre></a></li>
 
99
  <li class="nav-header private">» Private</li>
100
  <li class="method private "><a href="#_bin_to_utf8" title="_bin_to_utf8 :: Replace SQL incorrect characters (0x80 - 0xFF) with their UTF-8 equivalents"><span class="description">Replace SQL incorrect characters (0x80 - 0xFF) with their UTF-8 equivalents</span><pre>_bin_to_utf8()</pre></a></li>
101
  <li class="method private "><a href="#_build_mla_galleries" title="_build_mla_galleries :: Builds the $mla_galleries or $galleries array"><span class="description">Builds the $mla_galleries or $galleries array</span><pre>_build_mla_galleries()</pre></a></li>
102
- <li class="method private "><a href="#_build_pdf_indirect_objects" title="_build_pdf_indirect_objects :: Build an array of indirect object definitions"><span class="description">Build an array of indirect object definitions</span><pre>_build_pdf_indirect_objects()</pre></a></li>
103
  <li class="method private "><a href="#_evaluate_template_array_node" title='_evaluate_template_array_node :: Analyze a field-level "template:" element, expanding Field-level Markup Substitution Parameters'><span class="description">Analyze a field-level "template:" element, expanding Field-level Markup Substitution Parameters</span><pre>_evaluate_template_array_node()</pre></a></li>
104
  <li class="method private "><a href="#_evaluate_template_node" title='_evaluate_template_node :: Analyze a field-level "template:" element, expanding Field-level Markup Substitution Parameters'><span class="description">Analyze a field-level "template:" element, expanding Field-level Markup Substitution Parameters</span><pre>_evaluate_template_node()</pre></a></li>
105
  <li class="method private "><a href="#_execute_list_table_query" title="_execute_list_table_query :: Add filters, run query, remove filters"><span class="description">Add filters, run query, remove filters</span><pre>_execute_list_table_query()</pre></a></li>
106
  <li class="method private "><a href="#_expand_field_level_template" title='_expand_field_level_template :: Analyze a field-level "template:" element, expanding Field-level Markup Substitution Parameters'><span class="description">Analyze a field-level "template:" element, expanding Field-level Markup Substitution Parameters</span><pre>_expand_field_level_template()</pre></a></li>
107
- <li class="method private "><a href="#_extract_pdf_metadata" title="_extract_pdf_metadata :: Extract Metadata from a PDF file"><span class="description">Extract Metadata from a PDF file</span><pre>_extract_pdf_metadata()</pre></a></li>
108
- <li class="method private "><a href="#_extract_pdf_trailer" title="_extract_pdf_trailer :: Extract dictionary from traditional cross-reference + trailer documents"><span class="description">Extract dictionary from traditional cross-reference + trailer documents</span><pre>_extract_pdf_trailer()</pre></a></li>
109
- <li class="method private "><a href="#_find_pdf_indirect_dictionary" title="_find_pdf_indirect_dictionary :: Find the offset, length and contents of an indirect object containing a dictionary"><span class="description">Find the offset, length and contents of an indirect object containing a dictionary</span><pre>_find_pdf_indirect_dictionary()</pre></a></li>
110
  <li class="method private "><a href="#_find_template_substring" title="_find_template_substring :: Find a complete template, balancing opening and closing delimiters"><span class="description">Find a complete template, balancing opening and closing delimiters</span><pre>_find_template_substring()</pre></a></li>
111
  <li class="method private "><a href="#_find_test_substring" title="_find_test_substring :: Find a complete (test) element, balancing opening and closing delimiters"><span class="description">Find a complete (test) element, balancing opening and closing delimiters</span><pre>_find_test_substring()</pre></a></li>
 
112
  <li class="method private "><a href="#_parse_arguments" title="_parse_arguments :: Process an argument list within a field-level parameter format specification"><span class="description">Process an argument list within a field-level parameter format specification</span><pre>_parse_arguments()</pre></a></li>
113
  <li class="method private "><a href="#_parse_field_level_template" title='_parse_field_level_template :: Convert field-level "template:" string into its component parts'><span class="description">Convert field-level "template:" string into its component parts</span><pre>_parse_field_level_template()</pre></a></li>
114
  <li class="method private "><a href="#_parse_iso8601_date" title="_parse_iso8601_date :: Parse a ISO 8601 Timestamp"><span class="description">Parse a ISO 8601 Timestamp</span><pre>_parse_iso8601_date()</pre></a></li>
115
- <li class="method private "><a href="#_parse_pdf_LPD_dictionary" title="_parse_pdf_LPD_dictionary :: Parse a PDF Linearization Parameter Dictionary object"><span class="description">Parse a PDF Linearization Parameter Dictionary object</span><pre>_parse_pdf_LPD_dictionary()</pre></a></li>
116
- <li class="method private "><a href="#_parse_pdf_UTF16BE" title="_parse_pdf_UTF16BE :: Parse a PDF Unicode (16-bit Big Endian) object"><span class="description">Parse a PDF Unicode (16-bit Big Endian) object</span><pre>_parse_pdf_UTF16BE()</pre></a></li>
117
- <li class="method private "><a href="#_parse_pdf_date" title="_parse_pdf_date :: Parse a PDF date string"><span class="description">Parse a PDF date string</span><pre>_parse_pdf_date()</pre></a></li>
118
- <li class="method private "><a href="#_parse_pdf_dictionary" title="_parse_pdf_dictionary :: Parse a PDF dictionary object"><span class="description">Parse a PDF dictionary object</span><pre>_parse_pdf_dictionary()</pre></a></li>
119
- <li class="method private "><a href="#_parse_pdf_string" title="_parse_pdf_string :: Parse a PDF string object"><span class="description">Parse a PDF string object</span><pre>_parse_pdf_string()</pre></a></li>
120
- <li class="method private "><a href="#_parse_pdf_xref_section" title="_parse_pdf_xref_section :: Parse a cross-reference table section into the array of indirect object definitions"><span class="description">Parse a cross-reference table section into the array of indirect object definitions</span><pre>_parse_pdf_xref_section()</pre></a></li>
121
- <li class="method private "><a href="#_parse_pdf_xref_stream" title="_parse_pdf_xref_stream :: Parse a cross-reference steam into the array of indirect object definitions"><span class="description">Parse a cross-reference steam into the array of indirect object definitions</span><pre>_parse_pdf_xref_stream()</pre></a></li>
122
- <li class="method private "><a href="#_parse_pdf_xref_subsection" title="_parse_pdf_xref_subsection :: Parse a cross-reference table subsection into the array of indirect object definitions"><span class="description">Parse a cross-reference table subsection into the array of indirect object definitions</span><pre>_parse_pdf_xref_subsection()</pre></a></li>
123
- <li class="method private "><a href="#_parse_xmp_metadata" title="_parse_xmp_metadata :: Parse an XMP object"><span class="description">Parse an XMP object</span><pre>_parse_xmp_metadata()</pre></a></li>
124
  <li class="method private "><a href="#_prepare_list_table_query" title="_prepare_list_table_query :: Sanitize and expand query arguments from request variables"><span class="description">Sanitize and expand query arguments from request variables</span><pre>_prepare_list_table_query()</pre></a></li>
125
  <li class="method private "><a href="#_process_field_level_array" title="_process_field_level_array :: Process an markup field array value according to the supplied data-format option"><span class="description">Process an markup field array value according to the supplied data-format option</span><pre>_process_field_level_array()</pre></a></li>
126
  <li class="method private "><a href="#_rational_to_decimal" title="_rational_to_decimal :: Convert an EXIF GPS rational value to a PHP float value"><span class="description">Convert an EXIF GPS rational value to a PHP float value</span><pre>_rational_to_decimal()</pre></a></li>
@@ -133,6 +126,7 @@ and meta data for a single attachment</span><pre>mla_update_single_item()</pre><
133
  <i class="icon-custom icon-property"></i> Properties</li>
134
  <li class="property public "><a href="#%24mla_iptc_keys" title="$mla_iptc_keys :: IPTC Dataset friendly name/slug and identifiers"><span class="description">IPTC Dataset friendly name/slug and identifiers</span><pre>$mla_iptc_keys</pre></a></li>
135
  <li class="property public "><a href="#%24search_parameters" title="$search_parameters :: WP_Query 'posts_search' filter &quot;parameters&quot;"><span class="description">WP_Query 'posts_search' filter "parameters"</span><pre>$search_parameters</pre></a></li>
 
136
  <li class="nav-header private">» Private</li>
137
  <li class="property private "><a href="#%24galleries" title="$galleries :: Objects containing [gallery] shortcodes"><span class="description">Objects containing [gallery] shortcodes</span><pre>$galleries</pre></a></li>
138
  <li class="property private "><a href="#%24mla_IPTC_EXIF_errors" title="$mla_IPTC_EXIF_errors :: Passes IPTC/EXIF parse errors between mla_IPTC_EXIF_error_handler
@@ -145,9 +139,7 @@ and mla_fetch_attachment_image_metadata</span><pre>$mla_IPTC_EXIF_errors</pre></
145
  <li class="property private "><a href="#%24mla_iptc_image_types" title="$mla_iptc_image_types :: IPTC image type identifiers and descriptions"><span class="description">IPTC image type identifiers and descriptions</span><pre>$mla_iptc_image_types</pre></a></li>
146
  <li class="property private "><a href="#%24mla_iptc_records" title="$mla_iptc_records :: IPTC Dataset identifiers and names"><span class="description">IPTC Dataset identifiers and names</span><pre>$mla_iptc_records</pre></a></li>
147
  <li class="property private "><a href="#%24mla_list_table_items" title="$mla_list_table_items :: Cache the results of mla_count_list_table_items for reuse in mla_query_list_table_items"><span class="description">Cache the results of mla_count_list_table_items for reuse in mla_query_list_table_items</span><pre>$mla_list_table_items</pre></a></li>
148
- <li class="property private "><a href="#%24pdf_indirect_objects" title="$pdf_indirect_objects :: Array of PDF indirect objects"><span class="description">Array of PDF indirect objects</span><pre>$pdf_indirect_objects</pre></a></li>
149
  <li class="property private "><a href="#%24query_parameters" title='$query_parameters :: WP_Query filter "parameters"'><span class="description">WP_Query filter "parameters"</span><pre>$query_parameters</pre></a></li>
150
- <li class="property private "><a href="#%24utf8_chars" title="$utf8_chars :: UTF-8 replacements for invalid SQL characters"><span class="description">UTF-8 replacements for invalid SQL characters</span><pre>$utf8_chars</pre></a></li>
151
  <li class="nav-header">
152
  <i class="icon-custom icon-constant"></i> Constants</li>
153
  <li class="constant "><a href="#MLA_ALT_TEXT_VIEW_SUFFIX" title="MLA_ALT_TEXT_VIEW_SUFFIX :: Provides a unique suffix for the ALT Text/custom field SQL View"><span class="description">Provides a unique suffix for the ALT Text/custom field SQL View</span><pre>MLA_ALT_TEXT_VIEW_SUFFIX</pre></a></li>
@@ -180,36 +172,6 @@ Templates separate HTML markup from PHP code for easier maintenance and localiza
180
  </table>
181
  <h3>
182
  <i class="icon-custom icon-method"></i> Methods</h3>
183
- <a name="_hex_dump" id="_hex_dump"></a><div class="element clickable method public _hex_dump" data-toggle="collapse" data-target="._hex_dump .collapse">
184
- <h2>Format printable version of binary data</h2>
185
- <pre>_hex_dump(string $data, integer $limit, \intger $bytes_per_row, integer $offset) : string</pre>
186
- <div class="labels"></div>
187
- <div class="row collapse"><div class="detail-description">
188
- <p class="long_description"></p>
189
- <table class="table table-bordered"><tr>
190
- <th>since</th>
191
- <td>0.90</td>
192
- </tr></table>
193
- <h3>Parameters</h3>
194
- <div class="subelement argument">
195
- <h4>$data</h4>
196
- <code>string</code><p>Binary data</p></div>
197
- <div class="subelement argument">
198
- <h4>$limit</h4>
199
- <code>integer</code><p>Bytes to format, default = 0 (all bytes)</p>
200
- </div>
201
- <div class="subelement argument">
202
- <h4>$bytes_per_row</h4>
203
- <code>\intger</code><p>Bytes to format on each line</p></div>
204
- <div class="subelement argument">
205
- <h4>$offset</h4>
206
- <code>integer</code><p>offset of initial byte, or -1 to suppress printing offset information</p>
207
- </div>
208
- <h3>Returns</h3>
209
- <div class="subelement response">
210
- <code>string</code>Printable representation of $data</div>
211
- </div></div>
212
- </div>
213
  <a name="initialize" id="initialize"></a><div class="element clickable method public initialize" data-toggle="collapse" data-target=".initialize .collapse">
214
  <h2>Initialization function, similar to __construct()</h2>
215
  <pre>initialize() </pre>
@@ -250,6 +212,29 @@ Templates separate HTML markup from PHP code for easier maintenance and localiza
250
  <code>boolean</code>true, to bypass PHP error handler</div>
251
  </div></div>
252
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
253
  <a name="mla_attachment_array_fetch_references" id="mla_attachment_array_fetch_references"></a><div class="element clickable method public mla_attachment_array_fetch_references" data-toggle="collapse" data-target=".mla_attachment_array_fetch_references .collapse">
254
  <h2>Add Featured Image and inserted image/link references to an array of attachments</h2>
255
  <pre>mla_attachment_array_fetch_references(array $attachments) : void</pre>
@@ -311,7 +296,7 @@ as a Featured Image or inserted in the post as an image or link.</p></p>
311
  <code>string</code><p>field name</p></div>
312
  <div class="subelement argument">
313
  <h4>$item_metadata</h4>
314
- <code>string</code><p>metadata array containing iptc, exif, and pdf metadata arrays</p></div>
315
  <h3>Returns</h3>
316
  <div class="subelement response">
317
  <code>mixed</code>string/array representation of metadata value or an empty string</div>
@@ -323,7 +308,7 @@ as a Featured Image or inserted in the post as an image or link.</p></p>
323
  <div class="labels"></div>
324
  <div class="row collapse"><div class="detail-description">
325
  <p class="long_description"><p>Field-level parameters must have one of the following prefix values:
326
- template, request, query, custom, terms, meta, iptc, exif, pdf.
327
  All but request and query require an attachment ID.</p></p>
328
  <table class="table table-bordered"><tr>
329
  <th>since</th>
@@ -357,7 +342,7 @@ All but request and query require an attachment ID.</p></p>
357
  </div></div>
358
  </div>
359
  <a name="mla_fetch_attachment_image_metadata" id="mla_fetch_attachment_image_metadata"></a><div class="element clickable method public mla_fetch_attachment_image_metadata" data-toggle="collapse" data-target=".mla_fetch_attachment_image_metadata .collapse">
360
- <h2>Fetch and filter IPTC and EXIF or PDF metadata for an image attachment</h2>
361
  <pre>mla_fetch_attachment_image_metadata(int $post_id, string $path) : array</pre>
362
  <div class="labels"></div>
363
  <div class="row collapse"><div class="detail-description">
@@ -546,6 +531,36 @@ the posts and postmeta tables, and all references to the attachment.</p></p>
546
  <code>array</code>Placeholder information: each entry is an array with ['prefix'] => string, ['value'] => string, ['option'] => string 'text'|single'|'export'|'array'|'multi'</div>
547
  </div></div>
548
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
549
  <a name="mla_iptc_metadata_value" id="mla_iptc_metadata_value"></a><div class="element clickable method public mla_iptc_metadata_value" data-toggle="collapse" data-target=".mla_iptc_metadata_value .collapse">
550
  <h2>Parse one IPTC metadata field</h2>
551
  <pre>mla_iptc_metadata_value(string $iptc_key, string $item_metadata) : mixed</pre>
@@ -563,7 +578,7 @@ the posts and postmeta tables, and all references to the attachment.</p></p>
563
  </div>
564
  <div class="subelement argument">
565
  <h4>$item_metadata</h4>
566
- <code>string</code><p>metadata array containing iptc, exif, and pdf metadata arrays</p></div>
567
  <h3>Returns</h3>
568
  <div class="subelement response">
569
  <code>mixed</code>string/array representation of metadata value or an empty string</div>
@@ -619,6 +634,26 @@ where "key" becomes the key part of the array.</p></p>
619
  <code>mixed</code>string or array, depending on placeholder values. Placeholders corresponding to the keys of the markup_values will be replaced with their values.</div>
620
  </div></div>
621
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
622
  <a name="mla_parse_template" id="mla_parse_template"></a><div class="element clickable method public mla_parse_template" data-toggle="collapse" data-target=".mla_parse_template .collapse">
623
  <h2>Expand a template, replacing placeholders with their values</h2>
624
  <pre>mla_parse_template(string $tpl, array $markup_values) : \strng</pre>
@@ -643,6 +678,28 @@ where "key" becomes the key part of the array.</p></p>
643
  <code>\strng</code>Placeholders corresponding to the keys of the markup_values will be replaced with their values.</div>
644
  </div></div>
645
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
646
  <a name="mla_pdf_metadata_value" id="mla_pdf_metadata_value"></a><div class="element clickable method public mla_pdf_metadata_value" data-toggle="collapse" data-target=".mla_pdf_metadata_value .collapse">
647
  <h2>Parse one PDF metadata field</h2>
648
  <pre>mla_pdf_metadata_value(string $pdf_key, string $item_metadata) : mixed</pre>
@@ -659,7 +716,7 @@ where "key" becomes the key part of the array.</p></p>
659
  <code>string</code><p>field name</p></div>
660
  <div class="subelement argument">
661
  <h4>$item_metadata</h4>
662
- <code>string</code><p>metadata array containing iptc, exif, and pdf metadata arrays</p></div>
663
  <h3>Returns</h3>
664
  <div class="subelement response">
665
  <code>mixed</code>string/array representation of metadata value or an empty string</div>
@@ -762,7 +819,7 @@ Defined as public because it's a filter.</p></p>
762
  <pre>mla_query_posts_groupby_filter(string $groupby_clause) : string</pre>
763
  <div class="labels"></div>
764
  <div class="row collapse"><div class="detail-description">
765
- <p class="long_description"><p>Taxonomy text queries require a GROUPBY clause.
766
  Defined as public because it's a filter.</p></p>
767
  <table class="table table-bordered"><tr>
768
  <th>since</th>
@@ -991,6 +1048,36 @@ and meta data for a single attachment</h2>
991
  <code>string</code>success/failure message(s); empty string if no changes.</div>
992
  </div></div>
993
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
994
  <a name="_bin_to_utf8" id="_bin_to_utf8"></a><div class="element clickable method private _bin_to_utf8" data-toggle="collapse" data-target="._bin_to_utf8 .collapse">
995
  <h2>Replace SQL incorrect characters (0x80 - 0xFF) with their UTF-8 equivalents</h2>
996
  <pre>_bin_to_utf8(string $string) : string</pre>
@@ -1039,22 +1126,6 @@ and meta data for a single attachment</h2>
1039
  <code>boolean</code>true if the galleries array is not empty</div>
1040
  </div></div>
1041
  </div>
1042
- <a name="_build_pdf_indirect_objects" id="_build_pdf_indirect_objects"></a><div class="element clickable method private _build_pdf_indirect_objects" data-toggle="collapse" data-target="._build_pdf_indirect_objects .collapse">
1043
- <h2>Build an array of indirect object definitions</h2>
1044
- <pre>_build_pdf_indirect_objects(string $string) : void</pre>
1045
- <div class="labels"></div>
1046
- <div class="row collapse"><div class="detail-description">
1047
- <p class="long_description"><p>Creates the array of indirect object offsets and lengths</p></p>
1048
- <table class="table table-bordered"><tr>
1049
- <th>since</th>
1050
- <td>1.50</td>
1051
- </tr></table>
1052
- <h3>Parameters</h3>
1053
- <div class="subelement argument">
1054
- <h4>$string</h4>
1055
- <code>string</code><p>The entire PDF document, passsed by reference</p></div>
1056
- </div></div>
1057
- </div>
1058
  <a name="_evaluate_template_array_node" id="_evaluate_template_array_node"></a><div class="element clickable method private _evaluate_template_array_node" data-toggle="collapse" data-target="._evaluate_template_array_node .collapse">
1059
  <h2>Analyze a field-level "template:" element, expanding Field-level Markup Substitution Parameters</h2>
1060
  <pre>_evaluate_template_array_node(array $node, array $markup_values) : mixed</pre>
@@ -1148,28 +1219,9 @@ and meta data for a single attachment</h2>
1148
  <code>mixed</code>Element with expanded string/array values, if any</div>
1149
  </div></div>
1150
  </div>
1151
- <a name="_extract_pdf_metadata" id="_extract_pdf_metadata"></a><div class="element clickable method private _extract_pdf_metadata" data-toggle="collapse" data-target="._extract_pdf_metadata .collapse">
1152
- <h2>Extract Metadata from a PDF file</h2>
1153
- <pre>_extract_pdf_metadata(string $file_name) : array</pre>
1154
- <div class="labels"></div>
1155
- <div class="row collapse"><div class="detail-description">
1156
- <p class="long_description"></p>
1157
- <table class="table table-bordered"><tr>
1158
- <th>since</th>
1159
- <td>1.50</td>
1160
- </tr></table>
1161
- <h3>Parameters</h3>
1162
- <div class="subelement argument">
1163
- <h4>$file_name</h4>
1164
- <code>string</code><p>full path to the desired file</p></div>
1165
- <h3>Returns</h3>
1166
- <div class="subelement response">
1167
- <code>array</code>( key => value ) for each metadata field, in string format</div>
1168
- </div></div>
1169
- </div>
1170
- <a name="_extract_pdf_trailer" id="_extract_pdf_trailer"></a><div class="element clickable method private _extract_pdf_trailer" data-toggle="collapse" data-target="._extract_pdf_trailer .collapse">
1171
- <h2>Extract dictionary from traditional cross-reference + trailer documents</h2>
1172
- <pre>_extract_pdf_trailer(string $file_name, integer $file_offset) : mixed</pre>
1173
  <div class="labels"></div>
1174
  <div class="row collapse"><div class="detail-description">
1175
  <p class="long_description"></p>
@@ -1179,47 +1231,17 @@ and meta data for a single attachment</h2>
1179
  </tr></table>
1180
  <h3>Parameters</h3>
1181
  <div class="subelement argument">
1182
- <h4>$file_name</h4>
1183
- <code>string</code><p>full path to the desired file</p></div>
1184
- <div class="subelement argument">
1185
- <h4>$file_offset</h4>
1186
- <code>integer</code><p>offset within file of the cross-reference table</p>
1187
- </div>
1188
- <h3>Returns</h3>
1189
- <div class="subelement response">
1190
- <code>mixed</code>array of "PDF dictionary arrays", newest first, or NULL on failure</div>
1191
- </div></div>
1192
- </div>
1193
- <a name="_find_pdf_indirect_dictionary" id="_find_pdf_indirect_dictionary"></a><div class="element clickable method private _find_pdf_indirect_dictionary" data-toggle="collapse" data-target="._find_pdf_indirect_dictionary .collapse">
1194
- <h2>Find the offset, length and contents of an indirect object containing a dictionary</h2>
1195
- <pre>_find_pdf_indirect_dictionary(string $file_name, integer $object, integer $generation) : mixed</pre>
1196
- <div class="labels"></div>
1197
- <div class="row collapse"><div class="detail-description">
1198
- <p class="long_description"><p>The function searches the entire file, if necessary, to find the last/most recent copy of the object.
1199
- This is required because Adobe Acrobat does NOT increment the generation number when it reuses an object.</p></p>
1200
- <table class="table table-bordered"><tr>
1201
- <th>since</th>
1202
- <td>1.50</td>
1203
- </tr></table>
1204
- <h3>Parameters</h3>
1205
- <div class="subelement argument">
1206
- <h4>$file_name</h4>
1207
- <code>string</code><p>full path and file name</p></div>
1208
- <div class="subelement argument">
1209
- <h4>$object</h4>
1210
- <code>integer</code><p>The object number</p></div>
1211
- <div class="subelement argument">
1212
- <h4>$generation</h4>
1213
- <code>integer</code><p>The object generation number; default zero (0)</p>
1214
  </div>
1215
  <h3>Returns</h3>
1216
  <div class="subelement response">
1217
- <code>mixed</code>NULL on failure else array( 'start' => offset in the file, 'length' => object length, 'content' => dictionary contents )</div>
1218
  </div></div>
1219
  </div>
1220
- <a name="_find_template_substring" id="_find_template_substring"></a><div class="element clickable method private _find_template_substring" data-toggle="collapse" data-target="._find_template_substring .collapse">
1221
- <h2>Find a complete template, balancing opening and closing delimiters</h2>
1222
- <pre>_find_template_substring(string $tpl) : string</pre>
1223
  <div class="labels"></div>
1224
  <div class="row collapse"><div class="detail-description">
1225
  <p class="long_description"></p>
@@ -1230,31 +1252,34 @@ This is required because Adobe Acrobat does NOT increment the generation number
1230
  <h3>Parameters</h3>
1231
  <div class="subelement argument">
1232
  <h4>$tpl</h4>
1233
- <code>string</code><p>A string possibly starting with '[+template:'</p>
1234
  </div>
1235
  <h3>Returns</h3>
1236
  <div class="subelement response">
1237
- <code>string</code>'' or template string starting with '[+template:' and ending with the matching '+]'</div>
1238
  </div></div>
1239
  </div>
1240
- <a name="_find_test_substring" id="_find_test_substring"></a><div class="element clickable method private _find_test_substring" data-toggle="collapse" data-target="._find_test_substring .collapse">
1241
- <h2>Find a complete (test) element, balancing opening and closing delimiters</h2>
1242
- <pre>_find_test_substring(string $tpl) : string</pre>
1243
  <div class="labels"></div>
1244
  <div class="row collapse"><div class="detail-description">
1245
- <p class="long_description"></p>
1246
  <table class="table table-bordered"><tr>
1247
  <th>since</th>
1248
- <td>1.50</td>
1249
  </tr></table>
1250
  <h3>Parameters</h3>
1251
  <div class="subelement argument">
1252
- <h4>$tpl</h4>
1253
- <code>string</code><p>A string possibly starting with '('</p>
1254
  </div>
 
 
 
1255
  <h3>Returns</h3>
1256
  <div class="subelement response">
1257
- <code>string</code>'' or template string starting with '(' and ending with the matching ')'</div>
1258
  </div></div>
1259
  </div>
1260
  <a name="_parse_arguments" id="_parse_arguments"></a><div class="element clickable method private _parse_arguments" data-toggle="collapse" data-target="._parse_arguments .collapse">
@@ -1316,218 +1341,24 @@ This is required because Adobe Acrobat does NOT increment the generation number
1316
  <code>string</code>formatted date string YYYY-MM-DD HH:mm:SS</div>
1317
  </div></div>
1318
  </div>
1319
- <a name="_parse_pdf_LPD_dictionary" id="_parse_pdf_LPD_dictionary"></a><div class="element clickable method private _parse_pdf_LPD_dictionary" data-toggle="collapse" data-target="._parse_pdf_LPD_dictionary .collapse">
1320
- <h2>Parse a PDF Linearization Parameter Dictionary object</h2>
1321
- <pre>_parse_pdf_LPD_dictionary(string $source_string, integer $filesize) : mixed</pre>
1322
- <div class="labels"></div>
1323
- <div class="row collapse"><div class="detail-description">
1324
- <p class="long_description"><p>Returns an array of dictionary contents, classified by object type: boolean, numeric, string, hex (string),
1325
- indirect (object), name, array, dictionary, stream, and null.
1326
- The array also has a '/length' element containing the number of bytes occupied by the
1327
- dictionary in the source string, excluding the enclosing delimiters, if passed in.</p></p>
1328
- <table class="table table-bordered"><tr>
1329
- <th>since</th>
1330
- <td>1.50</td>
1331
- </tr></table>
1332
- <h3>Parameters</h3>
1333
- <div class="subelement argument">
1334
- <h4>$source_string</h4>
1335
- <code>string</code><p>data within which the object occurs, typically the start of a PDF document</p></div>
1336
- <div class="subelement argument">
1337
- <h4>$filesize</h4>
1338
- <code>integer</code><p>filesize of the PDF document, for validation purposes, or zero (0) to ignore filesize</p>
1339
- </div>
1340
- <h3>Returns</h3>
1341
- <div class="subelement response">
1342
- <code>mixed</code>array of dictionary objects on success, false on failure</div>
1343
- </div></div>
1344
- </div>
1345
- <a name="_parse_pdf_UTF16BE" id="_parse_pdf_UTF16BE"></a><div class="element clickable method private _parse_pdf_UTF16BE" data-toggle="collapse" data-target="._parse_pdf_UTF16BE .collapse">
1346
- <h2>Parse a PDF Unicode (16-bit Big Endian) object</h2>
1347
- <pre>_parse_pdf_UTF16BE(string $source_string) : string</pre>
1348
- <div class="labels"></div>
1349
- <div class="row collapse"><div class="detail-description">
1350
- <p class="long_description"></p>
1351
- <table class="table table-bordered"><tr>
1352
- <th>since</th>
1353
- <td>1.50</td>
1354
- </tr></table>
1355
- <h3>Parameters</h3>
1356
- <div class="subelement argument">
1357
- <h4>$source_string</h4>
1358
- <code>string</code><p>PDF string of 16-bit characters</p>
1359
- </div>
1360
- <h3>Returns</h3>
1361
- <div class="subelement response">
1362
- <code>string</code>UTF-8 encoded string</div>
1363
- </div></div>
1364
- </div>
1365
- <a name="_parse_pdf_date" id="_parse_pdf_date"></a><div class="element clickable method private _parse_pdf_date" data-toggle="collapse" data-target="._parse_pdf_date .collapse">
1366
- <h2>Parse a PDF date string</h2>
1367
- <pre>_parse_pdf_date(string $source_string) : string</pre>
1368
  <div class="labels"></div>
1369
  <div class="row collapse"><div class="detail-description">
1370
  <p class="long_description"></p>
1371
  <table class="table table-bordered"><tr>
1372
  <th>since</th>
1373
- <td>1.50</td>
1374
- </tr></table>
1375
- <h3>Parameters</h3>
1376
- <div class="subelement argument">
1377
- <h4>$source_string</h4>
1378
- <code>string</code><p>PDF date string of the form D:YYYYMMDDHHmmSSOHH'mm</p>
1379
- </div>
1380
- <h3>Returns</h3>
1381
- <div class="subelement response">
1382
- <code>string</code>formatted date string YYYY-MM-DD HH:mm:SS</div>
1383
- </div></div>
1384
- </div>
1385
- <a name="_parse_pdf_dictionary" id="_parse_pdf_dictionary"></a><div class="element clickable method private _parse_pdf_dictionary" data-toggle="collapse" data-target="._parse_pdf_dictionary .collapse">
1386
- <h2>Parse a PDF dictionary object</h2>
1387
- <pre>_parse_pdf_dictionary(string $source_string, integer $offset) : array</pre>
1388
- <div class="labels"></div>
1389
- <div class="row collapse"><div class="detail-description">
1390
- <p class="long_description"><p>Returns an array of dictionary contents, classified by object type: boolean, numeric, string, hex (string),
1391
- indirect (object), name, array, dictionary, stream, and null.
1392
- The array also has a '/length' element containing the number of bytes occupied by the
1393
- dictionary in the source string, excluding the enclosing delimiters.</p></p>
1394
- <table class="table table-bordered"><tr>
1395
- <th>since</th>
1396
- <td>1.50</td>
1397
- </tr></table>
1398
- <h3>Parameters</h3>
1399
- <div class="subelement argument">
1400
- <h4>$source_string</h4>
1401
- <code>string</code><p>data within which the string occurs</p></div>
1402
- <div class="subelement argument">
1403
- <h4>$offset</h4>
1404
- <code>integer</code><p>offset within the source string of the opening '<<' characters or the first content character.</p>
1405
- </div>
1406
- <h3>Returns</h3>
1407
- <div class="subelement response">
1408
- <code>array</code>( '/length' => length, key => array( 'type' => type, 'value' => value ) ) for each dictionary field</div>
1409
- </div></div>
1410
- </div>
1411
- <a name="_parse_pdf_string" id="_parse_pdf_string"></a><div class="element clickable method private _parse_pdf_string" data-toggle="collapse" data-target="._parse_pdf_string .collapse">
1412
- <h2>Parse a PDF string object</h2>
1413
- <pre>_parse_pdf_string(string $source_string, integer $offset) : array</pre>
1414
- <div class="labels"></div>
1415
- <div class="row collapse"><div class="detail-description">
1416
- <p class="long_description"><p>Returns an array with one dictionary entry. The array also has a '/length' element containing
1417
- the number of bytes occupied by the string in the source string, including the enclosing parentheses.</p></p>
1418
- <table class="table table-bordered"><tr>
1419
- <th>since</th>
1420
- <td>1.50</td>
1421
  </tr></table>
1422
  <h3>Parameters</h3>
1423
  <div class="subelement argument">
1424
- <h4>$source_string</h4>
1425
- <code>string</code><p>data within which the string occurs</p></div>
1426
- <div class="subelement argument">
1427
- <h4>$offset</h4>
1428
- <code>integer</code><p>offset within the source string of the opening '(' character.</p>
1429
  </div>
1430
  <h3>Returns</h3>
1431
  <div class="subelement response">
1432
- <code>array</code>( key => array( 'type' => type, 'value' => value, '/length' => length ) ) for the string</div>
1433
- </div></div>
1434
- </div>
1435
- <a name="_parse_pdf_xref_section" id="_parse_pdf_xref_section"></a><div class="element clickable method private _parse_pdf_xref_section" data-toggle="collapse" data-target="._parse_pdf_xref_section .collapse">
1436
- <h2>Parse a cross-reference table section into the array of indirect object definitions</h2>
1437
- <pre>_parse_pdf_xref_section(string $file_name, integer $file_offset) : integer</pre>
1438
- <div class="labels"></div>
1439
- <div class="row collapse"><div class="detail-description">
1440
- <p class="long_description"><p>Creates the array of indirect object offsets and lengths</p></p>
1441
- <table class="table table-bordered"><tr>
1442
- <th>since</th>
1443
- <td>1.50</td>
1444
- </tr></table>
1445
- <h3>Parameters</h3>
1446
- <div class="subelement argument">
1447
- <h4>$file_name</h4>
1448
- <code>string</code><p>full path and file name</p></div>
1449
- <div class="subelement argument">
1450
- <h4>$file_offset</h4>
1451
- <code>integer</code><p>offset within the file of the xref id and count entry</p></div>
1452
- <h3>Returns</h3>
1453
- <div class="subelement response">
1454
- <code>integer</code>length of the section</div>
1455
- </div></div>
1456
- </div>
1457
- <a name="_parse_pdf_xref_stream" id="_parse_pdf_xref_stream"></a><div class="element clickable method private _parse_pdf_xref_stream" data-toggle="collapse" data-target="._parse_pdf_xref_stream .collapse">
1458
- <h2>Parse a cross-reference steam into the array of indirect object definitions</h2>
1459
- <pre>_parse_pdf_xref_stream(string $file_name, integer $file_offset, string $entry_parms_string) : integer</pre>
1460
- <div class="labels"></div>
1461
- <div class="row collapse"><div class="detail-description">
1462
- <p class="long_description"><p>Creates the array of indirect object offsets and lengths</p></p>
1463
- <table class="table table-bordered"><tr>
1464
- <th>since</th>
1465
- <td>1.50</td>
1466
- </tr></table>
1467
- <h3>Parameters</h3>
1468
- <div class="subelement argument">
1469
- <h4>$file_name</h4>
1470
- <code>string</code><p>full path and file name</p></div>
1471
- <div class="subelement argument">
1472
- <h4>$file_offset</h4>
1473
- <code>integer</code><p>offset within the file of the xref id and count entry</p></div>
1474
- <div class="subelement argument">
1475
- <h4>$entry_parms_string</h4>
1476
- <code>string</code><p>"/W" entry, representing the size of the fields in a single entry</p>
1477
- </div>
1478
- <h3>Returns</h3>
1479
- <div class="subelement response">
1480
- <code>integer</code>length of the stream</div>
1481
- </div></div>
1482
- </div>
1483
- <a name="_parse_pdf_xref_subsection" id="_parse_pdf_xref_subsection"></a><div class="element clickable method private _parse_pdf_xref_subsection" data-toggle="collapse" data-target="._parse_pdf_xref_subsection .collapse">
1484
- <h2>Parse a cross-reference table subsection into the array of indirect object definitions</h2>
1485
- <pre>_parse_pdf_xref_subsection(string $xref_section, integer $offset, integer $object_id, integer $count) : void</pre>
1486
- <div class="labels"></div>
1487
- <div class="row collapse"><div class="detail-description">
1488
- <p class="long_description"><p>A cross-reference subsection is a sequence of 20-byte entries, each with offset and generation values.</p></p>
1489
- <table class="table table-bordered"><tr>
1490
- <th>since</th>
1491
- <td>1.50</td>
1492
- </tr></table>
1493
- <h3>Parameters</h3>
1494
- <div class="subelement argument">
1495
- <h4>$xref_section</h4>
1496
- <code>string</code><p>buffer containing the subsection</p></div>
1497
- <div class="subelement argument">
1498
- <h4>$offset</h4>
1499
- <code>integer</code><p>offset within the buffer of the first entry</p></div>
1500
- <div class="subelement argument">
1501
- <h4>$object_id</h4>
1502
- <code>integer</code><p>number of the first object in the subsection</p></div>
1503
- <div class="subelement argument">
1504
- <h4>$count</h4>
1505
- <code>integer</code><p>number of entries in the subsection</p></div>
1506
- </div></div>
1507
- </div>
1508
- <a name="_parse_xmp_metadata" id="_parse_xmp_metadata"></a><div class="element clickable method private _parse_xmp_metadata" data-toggle="collapse" data-target="._parse_xmp_metadata .collapse">
1509
- <h2>Parse an XMP object</h2>
1510
- <pre>_parse_xmp_metadata(string $file_name, integer $file_offset) : mixed</pre>
1511
- <div class="labels"></div>
1512
- <div class="row collapse"><div class="detail-description">
1513
- <p class="long_description"><p>Returns an array of dictionary contents, classified by object type: boolean, numeric, string, hex (string),
1514
- indirect (object), name, array, dictionary, stream, and null.
1515
- The array also has a '/length' element containing the number of bytes occupied by the
1516
- dictionary in the source string, excluding the enclosing delimiters, if passed in.</p></p>
1517
- <table class="table table-bordered"><tr>
1518
- <th>since</th>
1519
- <td>1.50</td>
1520
- </tr></table>
1521
- <h3>Parameters</h3>
1522
- <div class="subelement argument">
1523
- <h4>$file_name</h4>
1524
- <code>string</code><p>full path and file name</p></div>
1525
- <div class="subelement argument">
1526
- <h4>$file_offset</h4>
1527
- <code>integer</code><p>offset within the file of the search start point</p></div>
1528
- <h3>Returns</h3>
1529
- <div class="subelement response">
1530
- <code>mixed</code>array of metadata values or NULL on failure</div>
1531
  </div></div>
1532
  </div>
1533
  <a name="_prepare_list_table_query" id="_prepare_list_table_query"></a><div class="element clickable method private _prepare_list_table_query" data-toggle="collapse" data-target="._prepare_list_table_query .collapse">
@@ -1776,6 +1607,18 @@ Note: 'alt-text' is not supported in [mla_gallery]
1776
  </tr></table>
1777
  </div></div>
1778
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
1779
  <a name="%24galleries" id="$galleries"> </a><div class="element clickable property private $galleries" data-toggle="collapse" data-target=".$galleries .collapse">
1780
  <h2>Objects containing [gallery] shortcodes</h2>
1781
  <pre>$galleries : array</pre>
@@ -1902,20 +1745,6 @@ the "IPTC-NAA Information Interchange Model Version No. 4.1".</p></p>
1902
  </tr></table>
1903
  </div></div>
1904
  </div>
1905
- <a name="%24pdf_indirect_objects" id="$pdf_indirect_objects"> </a><div class="element clickable property private $pdf_indirect_objects" data-toggle="collapse" data-target=".$pdf_indirect_objects .collapse">
1906
- <h2>Array of PDF indirect objects</h2>
1907
- <pre>$pdf_indirect_objects : array</pre>
1908
- <div class="labels"></div>
1909
- <div class="row collapse"><div class="detail-description">
1910
- <p class="long_description"><p>This array contains all of the indirect object offsets and lengths.
1911
- The array key is ( object ID * 1000 ) + object generation.
1912
- The array value is array( number, generation, start, optional /length )</p></p>
1913
- <table class="table table-bordered"><tr>
1914
- <th>since</th>
1915
- <td>1.50</td>
1916
- </tr></table>
1917
- </div></div>
1918
- </div>
1919
  <a name="%24query_parameters" id="$query_parameters"> </a><div class="element clickable property private $query_parameters" data-toggle="collapse" data-target=".$query_parameters .collapse">
1920
  <h2>WP_Query filter "parameters"</h2>
1921
  <pre>$query_parameters : array</pre>
@@ -1933,18 +1762,6 @@ detached, orderby, order, mla-metavalue, debug (also in search_parameters)</p></
1933
  </tr></table>
1934
  </div></div>
1935
  </div>
1936
- <a name="%24utf8_chars" id="$utf8_chars"> </a><div class="element clickable property private $utf8_chars" data-toggle="collapse" data-target=".$utf8_chars .collapse">
1937
- <h2>UTF-8 replacements for invalid SQL characters</h2>
1938
- <pre>$utf8_chars : array</pre>
1939
- <div class="labels"></div>
1940
- <div class="row collapse"><div class="detail-description">
1941
- <p class="long_description"></p>
1942
- <table class="table table-bordered"><tr>
1943
- <th>since</th>
1944
- <td>1.41</td>
1945
- </tr></table>
1946
- </div></div>
1947
- </div>
1948
  <h3>
1949
  <i class="icon-custom icon-constant"></i> Constants</h3>
1950
  <a name="MLA_ALT_TEXT_VIEW_SUFFIX" id="MLA_ALT_TEXT_VIEW_SUFFIX"> </a><div class="element clickable constant MLA_ALT_TEXT_VIEW_SUFFIX" data-toggle="collapse" data-target=".MLA_ALT_TEXT_VIEW_SUFFIX .collapse">
@@ -1967,7 +1784,7 @@ ALT Text and custom field columns.</p></p>
1967
  <div class="row"><footer class="span12">
1968
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
1969
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
1970
- generated on 2015-02-17T16:36:12-08:00.<br></footer></div>
1971
  </div>
1972
  </body>
1973
  </html>
57
  <ul class="side-nav nav nav-list">
58
  <li class="nav-header">
59
  <i class="icon-custom icon-method"></i> Methods</li>
 
60
  <li class="method public "><a href="#initialize" title="initialize :: Initialization function, similar to __construct()"><span class="description">Initialization function, similar to __construct()</span><pre>initialize()</pre></a></li>
61
  <li class="method public "><a href="#mla_IPTC_EXIF_error_handler" title="mla_IPTC_EXIF_error_handler :: Intercept IPTC and EXIF parse errors"><span class="description">Intercept IPTC and EXIF parse errors</span><pre>mla_IPTC_EXIF_error_handler()</pre></a></li>
62
+ <li class="method public "><a href="#mla_apply_field_level_format" title="mla_apply_field_level_format :: Apply field-level format options to field-level content"><span class="description">Apply field-level format options to field-level content</span><pre>mla_apply_field_level_format()</pre></a></li>
63
  <li class="method public "><a href="#mla_attachment_array_fetch_references" title="mla_attachment_array_fetch_references :: Add Featured Image and inserted image/link references to an array of attachments"><span class="description">Add Featured Image and inserted image/link references to an array of attachments</span><pre>mla_attachment_array_fetch_references()</pre></a></li>
64
  <li class="method public "><a href="#mla_count_list_table_items" title="mla_count_list_table_items :: Get the total number of attachment posts"><span class="description">Get the total number of attachment posts</span><pre>mla_count_list_table_items()</pre></a></li>
65
  <li class="method public "><a href="#mla_exif_metadata_value" title="mla_exif_metadata_value :: Parse one EXIF metadata field"><span class="description">Parse one EXIF metadata field</span><pre>mla_exif_metadata_value()</pre></a></li>
66
  <li class="method public "><a href="#mla_expand_field_level_parameters" title="mla_expand_field_level_parameters :: Analyze a template, expanding Field-level Markup Substitution Parameters"><span class="description">Analyze a template, expanding Field-level Markup Substitution Parameters</span><pre>mla_expand_field_level_parameters()</pre></a></li>
67
+ <li class="method public "><a href="#mla_fetch_attachment_image_metadata" title="mla_fetch_attachment_image_metadata :: Fetch and filter IPTC and EXIF, XMP or PDF metadata for an image attachment"><span class="description">Fetch and filter IPTC and EXIF, XMP or PDF metadata for an image attachment</span><pre>mla_fetch_attachment_image_metadata()</pre></a></li>
68
  <li class="method public "><a href="#mla_fetch_attachment_metadata" title="mla_fetch_attachment_metadata :: Fetch and filter meta data for an attachment"><span class="description">Fetch and filter meta data for an attachment</span><pre>mla_fetch_attachment_metadata()</pre></a></li>
69
  <li class="method public "><a href="#mla_fetch_attachment_parent_data" title="mla_fetch_attachment_parent_data :: Returns information about an attachment's parent, if found"><span class="description">Returns information about an attachment's parent, if found</span><pre>mla_fetch_attachment_parent_data()</pre></a></li>
70
  <li class="method public "><a href="#mla_fetch_attachment_references" title="mla_fetch_attachment_references :: Find Featured Image and inserted image/link references to an attachment"><span class="description">Find Featured Image and inserted image/link references to an attachment</span><pre>mla_fetch_attachment_references()</pre></a></li>
72
  <li class="method public "><a href="#mla_flush_mla_galleries" title="mla_flush_mla_galleries :: Invalidates the $mla_galleries or $galleries array and cached values"><span class="description">Invalidates the $mla_galleries or $galleries array and cached values</span><pre>mla_flush_mla_galleries()</pre></a></li>
73
  <li class="method public "><a href="#mla_get_attachment_by_id" title="mla_get_attachment_by_id :: Retrieve an Attachment array given a $post_id"><span class="description">Retrieve an Attachment array given a $post_id</span><pre>mla_get_attachment_by_id()</pre></a></li>
74
  <li class="method public "><a href="#mla_get_template_placeholders" title="mla_get_template_placeholders :: Analyze a template, returning an array of the placeholders it contains"><span class="description">Analyze a template, returning an array of the placeholders it contains</span><pre>mla_get_template_placeholders()</pre></a></li>
75
+ <li class="method public "><a href="#mla_hex_dump" title="mla_hex_dump :: Format printable version of binary data"><span class="description">Format printable version of binary data</span><pre>mla_hex_dump()</pre></a></li>
76
  <li class="method public "><a href="#mla_iptc_metadata_value" title="mla_iptc_metadata_value :: Parse one IPTC metadata field"><span class="description">Parse one IPTC metadata field</span><pre>mla_iptc_metadata_value()</pre></a></li>
77
  <li class="method public "><a href="#mla_load_template" title="mla_load_template :: Load an HTML template from a file"><span class="description">Load an HTML template from a file</span><pre>mla_load_template()</pre></a></li>
78
  <li class="method public "><a href="#mla_parse_array_template" title="mla_parse_array_template :: Expand a template, replacing placeholders with their values"><span class="description">Expand a template, replacing placeholders with their values</span><pre>mla_parse_array_template()</pre></a></li>
79
+ <li class="method public "><a href="#mla_parse_pdf_date" title="mla_parse_pdf_date :: Parse a PDF date string"><span class="description">Parse a PDF date string</span><pre>mla_parse_pdf_date()</pre></a></li>
80
  <li class="method public "><a href="#mla_parse_template" title="mla_parse_template :: Expand a template, replacing placeholders with their values"><span class="description">Expand a template, replacing placeholders with their values</span><pre>mla_parse_template()</pre></a></li>
81
+ <li class="method public "><a href="#mla_parse_xmp_metadata" title="mla_parse_xmp_metadata :: Extract XMP meta data from a file"><span class="description">Extract XMP meta data from a file</span><pre>mla_parse_xmp_metadata()</pre></a></li>
82
  <li class="method public "><a href="#mla_pdf_metadata_value" title="mla_pdf_metadata_value :: Parse one PDF metadata field"><span class="description">Parse one PDF metadata field</span><pre>mla_pdf_metadata_value()</pre></a></li>
83
  <li class="method public "><a href="#mla_query_list_table_items" title="mla_query_list_table_items :: Retrieve attachment objects for list table display"><span class="description">Retrieve attachment objects for list table display</span><pre>mla_query_list_table_items()</pre></a></li>
84
  <li class="method public "><a href="#mla_query_media_modal_items" title="mla_query_media_modal_items :: Retrieve attachment objects for the WordPress Media Manager"><span class="description">Retrieve attachment objects for the WordPress Media Manager</span><pre>mla_query_media_modal_items()</pre></a></li>
99
  and meta data for a single attachment'><span class="description">Update a single item; change the "post" data, taxonomy terms
100
  and meta data for a single attachment</span><pre>mla_update_single_item()</pre></a></li>
101
  <li class="method public "><a href="#mla_update_wp_attachment_metadata" title='mla_update_wp_attachment_metadata :: Update "meta:" data for a single attachment'><span class="description">Update "meta:" data for a single attachment</span><pre>mla_update_wp_attachment_metadata()</pre></a></li>
102
+ <li class="method public "><a href="#mla_xmp_metadata_value" title="mla_xmp_metadata_value :: Parse one XMP metadata field"><span class="description">Parse one XMP metadata field</span><pre>mla_xmp_metadata_value()</pre></a></li>
103
  <li class="nav-header private">» Private</li>
104
  <li class="method private "><a href="#_bin_to_utf8" title="_bin_to_utf8 :: Replace SQL incorrect characters (0x80 - 0xFF) with their UTF-8 equivalents"><span class="description">Replace SQL incorrect characters (0x80 - 0xFF) with their UTF-8 equivalents</span><pre>_bin_to_utf8()</pre></a></li>
105
  <li class="method private "><a href="#_build_mla_galleries" title="_build_mla_galleries :: Builds the $mla_galleries or $galleries array"><span class="description">Builds the $mla_galleries or $galleries array</span><pre>_build_mla_galleries()</pre></a></li>
 
106
  <li class="method private "><a href="#_evaluate_template_array_node" title='_evaluate_template_array_node :: Analyze a field-level "template:" element, expanding Field-level Markup Substitution Parameters'><span class="description">Analyze a field-level "template:" element, expanding Field-level Markup Substitution Parameters</span><pre>_evaluate_template_array_node()</pre></a></li>
107
  <li class="method private "><a href="#_evaluate_template_node" title='_evaluate_template_node :: Analyze a field-level "template:" element, expanding Field-level Markup Substitution Parameters'><span class="description">Analyze a field-level "template:" element, expanding Field-level Markup Substitution Parameters</span><pre>_evaluate_template_node()</pre></a></li>
108
  <li class="method private "><a href="#_execute_list_table_query" title="_execute_list_table_query :: Add filters, run query, remove filters"><span class="description">Add filters, run query, remove filters</span><pre>_execute_list_table_query()</pre></a></li>
109
  <li class="method private "><a href="#_expand_field_level_template" title='_expand_field_level_template :: Analyze a field-level "template:" element, expanding Field-level Markup Substitution Parameters'><span class="description">Analyze a field-level "template:" element, expanding Field-level Markup Substitution Parameters</span><pre>_expand_field_level_template()</pre></a></li>
 
 
 
110
  <li class="method private "><a href="#_find_template_substring" title="_find_template_substring :: Find a complete template, balancing opening and closing delimiters"><span class="description">Find a complete template, balancing opening and closing delimiters</span><pre>_find_template_substring()</pre></a></li>
111
  <li class="method private "><a href="#_find_test_substring" title="_find_test_substring :: Find a complete (test) element, balancing opening and closing delimiters"><span class="description">Find a complete (test) element, balancing opening and closing delimiters</span><pre>_find_test_substring()</pre></a></li>
112
+ <li class="method private "><a href="#_match_quoted_phrase" title="_match_quoted_phrase :: Isolates keyword match results to word boundaries"><span class="description">Isolates keyword match results to word boundaries</span><pre>_match_quoted_phrase()</pre></a></li>
113
  <li class="method private "><a href="#_parse_arguments" title="_parse_arguments :: Process an argument list within a field-level parameter format specification"><span class="description">Process an argument list within a field-level parameter format specification</span><pre>_parse_arguments()</pre></a></li>
114
  <li class="method private "><a href="#_parse_field_level_template" title='_parse_field_level_template :: Convert field-level "template:" string into its component parts'><span class="description">Convert field-level "template:" string into its component parts</span><pre>_parse_field_level_template()</pre></a></li>
115
  <li class="method private "><a href="#_parse_iso8601_date" title="_parse_iso8601_date :: Parse a ISO 8601 Timestamp"><span class="description">Parse a ISO 8601 Timestamp</span><pre>_parse_iso8601_date()</pre></a></li>
116
+ <li class="method private "><a href="#_parse_xmp_array" title="_parse_xmp_array :: Parse an XMP array value, stripping namespace prefixes and Seq/Alt/Bag arrays"><span class="description">Parse an XMP array value, stripping namespace prefixes and Seq/Alt/Bag arrays</span><pre>_parse_xmp_array()</pre></a></li>
 
 
 
 
 
 
 
 
117
  <li class="method private "><a href="#_prepare_list_table_query" title="_prepare_list_table_query :: Sanitize and expand query arguments from request variables"><span class="description">Sanitize and expand query arguments from request variables</span><pre>_prepare_list_table_query()</pre></a></li>
118
  <li class="method private "><a href="#_process_field_level_array" title="_process_field_level_array :: Process an markup field array value according to the supplied data-format option"><span class="description">Process an markup field array value according to the supplied data-format option</span><pre>_process_field_level_array()</pre></a></li>
119
  <li class="method private "><a href="#_rational_to_decimal" title="_rational_to_decimal :: Convert an EXIF GPS rational value to a PHP float value"><span class="description">Convert an EXIF GPS rational value to a PHP float value</span><pre>_rational_to_decimal()</pre></a></li>
126
  <i class="icon-custom icon-property"></i> Properties</li>
127
  <li class="property public "><a href="#%24mla_iptc_keys" title="$mla_iptc_keys :: IPTC Dataset friendly name/slug and identifiers"><span class="description">IPTC Dataset friendly name/slug and identifiers</span><pre>$mla_iptc_keys</pre></a></li>
128
  <li class="property public "><a href="#%24search_parameters" title="$search_parameters :: WP_Query 'posts_search' filter &quot;parameters&quot;"><span class="description">WP_Query 'posts_search' filter "parameters"</span><pre>$search_parameters</pre></a></li>
129
+ <li class="property public "><a href="#%24utf8_chars" title="$utf8_chars :: UTF-8 replacements for invalid SQL characters"><span class="description">UTF-8 replacements for invalid SQL characters</span><pre>$utf8_chars</pre></a></li>
130
  <li class="nav-header private">» Private</li>
131
  <li class="property private "><a href="#%24galleries" title="$galleries :: Objects containing [gallery] shortcodes"><span class="description">Objects containing [gallery] shortcodes</span><pre>$galleries</pre></a></li>
132
  <li class="property private "><a href="#%24mla_IPTC_EXIF_errors" title="$mla_IPTC_EXIF_errors :: Passes IPTC/EXIF parse errors between mla_IPTC_EXIF_error_handler
139
  <li class="property private "><a href="#%24mla_iptc_image_types" title="$mla_iptc_image_types :: IPTC image type identifiers and descriptions"><span class="description">IPTC image type identifiers and descriptions</span><pre>$mla_iptc_image_types</pre></a></li>
140
  <li class="property private "><a href="#%24mla_iptc_records" title="$mla_iptc_records :: IPTC Dataset identifiers and names"><span class="description">IPTC Dataset identifiers and names</span><pre>$mla_iptc_records</pre></a></li>
141
  <li class="property private "><a href="#%24mla_list_table_items" title="$mla_list_table_items :: Cache the results of mla_count_list_table_items for reuse in mla_query_list_table_items"><span class="description">Cache the results of mla_count_list_table_items for reuse in mla_query_list_table_items</span><pre>$mla_list_table_items</pre></a></li>
 
142
  <li class="property private "><a href="#%24query_parameters" title='$query_parameters :: WP_Query filter "parameters"'><span class="description">WP_Query filter "parameters"</span><pre>$query_parameters</pre></a></li>
 
143
  <li class="nav-header">
144
  <i class="icon-custom icon-constant"></i> Constants</li>
145
  <li class="constant "><a href="#MLA_ALT_TEXT_VIEW_SUFFIX" title="MLA_ALT_TEXT_VIEW_SUFFIX :: Provides a unique suffix for the ALT Text/custom field SQL View"><span class="description">Provides a unique suffix for the ALT Text/custom field SQL View</span><pre>MLA_ALT_TEXT_VIEW_SUFFIX</pre></a></li>
172
  </table>
173
  <h3>
174
  <i class="icon-custom icon-method"></i> Methods</h3>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
175
  <a name="initialize" id="initialize"></a><div class="element clickable method public initialize" data-toggle="collapse" data-target=".initialize .collapse">
176
  <h2>Initialization function, similar to __construct()</h2>
177
  <pre>initialize() </pre>
212
  <code>boolean</code>true, to bypass PHP error handler</div>
213
  </div></div>
214
  </div>
215
+ <a name="mla_apply_field_level_format" id="mla_apply_field_level_format"></a><div class="element clickable method public mla_apply_field_level_format" data-toggle="collapse" data-target=".mla_apply_field_level_format .collapse">
216
+ <h2>Apply field-level format options to field-level content</h2>
217
+ <pre>mla_apply_field_level_format(string $value, array $args) : string</pre>
218
+ <div class="labels"></div>
219
+ <div class="row collapse"><div class="detail-description">
220
+ <p class="long_description"></p>
221
+ <table class="table table-bordered"><tr>
222
+ <th>since</th>
223
+ <td>2.10</td>
224
+ </tr></table>
225
+ <h3>Parameters</h3>
226
+ <div class="subelement argument">
227
+ <h4>$value</h4>
228
+ <code>string</code><p>field-level content</p>
229
+ </div>
230
+ <div class="subelement argument">
231
+ <h4>$args</h4>
232
+ <code>array</code><p>format code and aguments</p></div>
233
+ <h3>Returns</h3>
234
+ <div class="subelement response">
235
+ <code>string</code>formatted field-level content</div>
236
+ </div></div>
237
+ </div>
238
  <a name="mla_attachment_array_fetch_references" id="mla_attachment_array_fetch_references"></a><div class="element clickable method public mla_attachment_array_fetch_references" data-toggle="collapse" data-target=".mla_attachment_array_fetch_references .collapse">
239
  <h2>Add Featured Image and inserted image/link references to an array of attachments</h2>
240
  <pre>mla_attachment_array_fetch_references(array $attachments) : void</pre>
296
  <code>string</code><p>field name</p></div>
297
  <div class="subelement argument">
298
  <h4>$item_metadata</h4>
299
+ <code>string</code><p>metadata array containing iptc, exif, xmp and pdf metadata arrays</p></div>
300
  <h3>Returns</h3>
301
  <div class="subelement response">
302
  <code>mixed</code>string/array representation of metadata value or an empty string</div>
308
  <div class="labels"></div>
309
  <div class="row collapse"><div class="detail-description">
310
  <p class="long_description"><p>Field-level parameters must have one of the following prefix values:
311
+ template, request, query, custom, terms, meta, iptc, exif, xmp, pdf.
312
  All but request and query require an attachment ID.</p></p>
313
  <table class="table table-bordered"><tr>
314
  <th>since</th>
342
  </div></div>
343
  </div>
344
  <a name="mla_fetch_attachment_image_metadata" id="mla_fetch_attachment_image_metadata"></a><div class="element clickable method public mla_fetch_attachment_image_metadata" data-toggle="collapse" data-target=".mla_fetch_attachment_image_metadata .collapse">
345
+ <h2>Fetch and filter IPTC and EXIF, XMP or PDF metadata for an image attachment</h2>
346
  <pre>mla_fetch_attachment_image_metadata(int $post_id, string $path) : array</pre>
347
  <div class="labels"></div>
348
  <div class="row collapse"><div class="detail-description">
531
  <code>array</code>Placeholder information: each entry is an array with ['prefix'] => string, ['value'] => string, ['option'] => string 'text'|single'|'export'|'array'|'multi'</div>
532
  </div></div>
533
  </div>
534
+ <a name="mla_hex_dump" id="mla_hex_dump"></a><div class="element clickable method public mla_hex_dump" data-toggle="collapse" data-target=".mla_hex_dump .collapse">
535
+ <h2>Format printable version of binary data</h2>
536
+ <pre>mla_hex_dump(string $data, integer $limit, \intger $bytes_per_row, integer $offset) : string</pre>
537
+ <div class="labels"></div>
538
+ <div class="row collapse"><div class="detail-description">
539
+ <p class="long_description"></p>
540
+ <table class="table table-bordered"><tr>
541
+ <th>since</th>
542
+ <td>0.90</td>
543
+ </tr></table>
544
+ <h3>Parameters</h3>
545
+ <div class="subelement argument">
546
+ <h4>$data</h4>
547
+ <code>string</code><p>Binary data</p></div>
548
+ <div class="subelement argument">
549
+ <h4>$limit</h4>
550
+ <code>integer</code><p>Bytes to format, default = 0 (all bytes)</p>
551
+ </div>
552
+ <div class="subelement argument">
553
+ <h4>$bytes_per_row</h4>
554
+ <code>\intger</code><p>Bytes to format on each line</p></div>
555
+ <div class="subelement argument">
556
+ <h4>$offset</h4>
557
+ <code>integer</code><p>offset of initial byte, or -1 to suppress printing offset information</p>
558
+ </div>
559
+ <h3>Returns</h3>
560
+ <div class="subelement response">
561
+ <code>string</code>Printable representation of $data</div>
562
+ </div></div>
563
+ </div>
564
  <a name="mla_iptc_metadata_value" id="mla_iptc_metadata_value"></a><div class="element clickable method public mla_iptc_metadata_value" data-toggle="collapse" data-target=".mla_iptc_metadata_value .collapse">
565
  <h2>Parse one IPTC metadata field</h2>
566
  <pre>mla_iptc_metadata_value(string $iptc_key, string $item_metadata) : mixed</pre>
578
  </div>
579
  <div class="subelement argument">
580
  <h4>$item_metadata</h4>
581
+ <code>string</code><p>metadata array containing iptc, exif, xmp and pdf metadata arrays</p></div>
582
  <h3>Returns</h3>
583
  <div class="subelement response">
584
  <code>mixed</code>string/array representation of metadata value or an empty string</div>
634
  <code>mixed</code>string or array, depending on placeholder values. Placeholders corresponding to the keys of the markup_values will be replaced with their values.</div>
635
  </div></div>
636
  </div>
637
+ <a name="mla_parse_pdf_date" id="mla_parse_pdf_date"></a><div class="element clickable method public mla_parse_pdf_date" data-toggle="collapse" data-target=".mla_parse_pdf_date .collapse">
638
+ <h2>Parse a PDF date string</h2>
639
+ <pre>mla_parse_pdf_date(string $source_string) : string</pre>
640
+ <div class="labels"></div>
641
+ <div class="row collapse"><div class="detail-description">
642
+ <p class="long_description"></p>
643
+ <table class="table table-bordered"><tr>
644
+ <th>since</th>
645
+ <td>1.50</td>
646
+ </tr></table>
647
+ <h3>Parameters</h3>
648
+ <div class="subelement argument">
649
+ <h4>$source_string</h4>
650
+ <code>string</code><p>PDF date string of the form D:YYYYMMDDHHmmSSOHH'mm</p>
651
+ </div>
652
+ <h3>Returns</h3>
653
+ <div class="subelement response">
654
+ <code>string</code>formatted date string YYYY-MM-DD HH:mm:SS</div>
655
+ </div></div>
656
+ </div>
657
  <a name="mla_parse_template" id="mla_parse_template"></a><div class="element clickable method public mla_parse_template" data-toggle="collapse" data-target=".mla_parse_template .collapse">
658
  <h2>Expand a template, replacing placeholders with their values</h2>
659
  <pre>mla_parse_template(string $tpl, array $markup_values) : \strng</pre>
678
  <code>\strng</code>Placeholders corresponding to the keys of the markup_values will be replaced with their values.</div>
679
  </div></div>
680
  </div>
681
+ <a name="mla_parse_xmp_metadata" id="mla_parse_xmp_metadata"></a><div class="element clickable method public mla_parse_xmp_metadata" data-toggle="collapse" data-target=".mla_parse_xmp_metadata .collapse">
682
+ <h2>Extract XMP meta data from a file</h2>
683
+ <pre>mla_parse_xmp_metadata(string $file_name, integer $file_offset) : mixed</pre>
684
+ <div class="labels"></div>
685
+ <div class="row collapse"><div class="detail-description">
686
+ <p class="long_description"></p>
687
+ <table class="table table-bordered"><tr>
688
+ <th>since</th>
689
+ <td>2.10</td>
690
+ </tr></table>
691
+ <h3>Parameters</h3>
692
+ <div class="subelement argument">
693
+ <h4>$file_name</h4>
694
+ <code>string</code><p>full path and file name</p></div>
695
+ <div class="subelement argument">
696
+ <h4>$file_offset</h4>
697
+ <code>integer</code><p>offset within the file of the search start point</p></div>
698
+ <h3>Returns</h3>
699
+ <div class="subelement response">
700
+ <code>mixed</code>array of metadata values or NULL on failure</div>
701
+ </div></div>
702
+ </div>
703
  <a name="mla_pdf_metadata_value" id="mla_pdf_metadata_value"></a><div class="element clickable method public mla_pdf_metadata_value" data-toggle="collapse" data-target=".mla_pdf_metadata_value .collapse">
704
  <h2>Parse one PDF metadata field</h2>
705
  <pre>mla_pdf_metadata_value(string $pdf_key, string $item_metadata) : mixed</pre>
716
  <code>string</code><p>field name</p></div>
717
  <div class="subelement argument">
718
  <h4>$item_metadata</h4>
719
+ <code>string</code><p>metadata array containing iptc, exif, xmp and pdf metadata arrays</p></div>
720
  <h3>Returns</h3>
721
  <div class="subelement response">
722
  <code>mixed</code>string/array representation of metadata value or an empty string</div>
819
  <pre>mla_query_posts_groupby_filter(string $groupby_clause) : string</pre>
820
  <div class="labels"></div>
821
  <div class="row collapse"><div class="detail-description">
822
+ <p class="long_description"><p>Taxonomy text queries and postmeta queries can return multiple results for the same ID.
823
  Defined as public because it's a filter.</p></p>
824
  <table class="table table-bordered"><tr>
825
  <th>since</th>
1048
  <code>string</code>success/failure message(s); empty string if no changes.</div>
1049
  </div></div>
1050
  </div>
1051
+ <a name="mla_xmp_metadata_value" id="mla_xmp_metadata_value"></a><div class="element clickable method public mla_xmp_metadata_value" data-toggle="collapse" data-target=".mla_xmp_metadata_value .collapse">
1052
+ <h2>Parse one XMP metadata field</h2>
1053
+ <pre>mla_xmp_metadata_value(string $xmp_key, string $option, boolean $keep_existing, string $xmp_metadata) : mixed</pre>
1054
+ <div class="labels"></div>
1055
+ <div class="row collapse"><div class="detail-description">
1056
+ <p class="long_description"><p>Also handles the special pseudo-value 'ALL_XMP'.</p></p>
1057
+ <table class="table table-bordered"><tr>
1058
+ <th>since</th>
1059
+ <td>2.10</td>
1060
+ </tr></table>
1061
+ <h3>Parameters</h3>
1062
+ <div class="subelement argument">
1063
+ <h4>$xmp_key</h4>
1064
+ <code>string</code><p>field name</p></div>
1065
+ <div class="subelement argument">
1066
+ <h4>$option</h4>
1067
+ <code>string</code><p>data option 'text'|'single'|'export'|'array'|'multi'</p>
1068
+ </div>
1069
+ <div class="subelement argument">
1070
+ <h4>$keep_existing</h4>
1071
+ <code>boolean</code><p>Optional: for option 'multi', retain existing values</p>
1072
+ </div>
1073
+ <div class="subelement argument">
1074
+ <h4>$xmp_metadata</h4>
1075
+ <code>string</code><p>XMP metadata array</p></div>
1076
+ <h3>Returns</h3>
1077
+ <div class="subelement response">
1078
+ <code>mixed</code>string/array representation of metadata value or an empty string</div>
1079
+ </div></div>
1080
+ </div>
1081
  <a name="_bin_to_utf8" id="_bin_to_utf8"></a><div class="element clickable method private _bin_to_utf8" data-toggle="collapse" data-target="._bin_to_utf8 .collapse">
1082
  <h2>Replace SQL incorrect characters (0x80 - 0xFF) with their UTF-8 equivalents</h2>
1083
  <pre>_bin_to_utf8(string $string) : string</pre>
1126
  <code>boolean</code>true if the galleries array is not empty</div>
1127
  </div></div>
1128
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1129
  <a name="_evaluate_template_array_node" id="_evaluate_template_array_node"></a><div class="element clickable method private _evaluate_template_array_node" data-toggle="collapse" data-target="._evaluate_template_array_node .collapse">
1130
  <h2>Analyze a field-level "template:" element, expanding Field-level Markup Substitution Parameters</h2>
1131
  <pre>_evaluate_template_array_node(array $node, array $markup_values) : mixed</pre>
1219
  <code>mixed</code>Element with expanded string/array values, if any</div>
1220
  </div></div>
1221
  </div>
1222
+ <a name="_find_template_substring" id="_find_template_substring"></a><div class="element clickable method private _find_template_substring" data-toggle="collapse" data-target="._find_template_substring .collapse">
1223
+ <h2>Find a complete template, balancing opening and closing delimiters</h2>
1224
+ <pre>_find_template_substring(string $tpl) : string</pre>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1225
  <div class="labels"></div>
1226
  <div class="row collapse"><div class="detail-description">
1227
  <p class="long_description"></p>
1231
  </tr></table>
1232
  <h3>Parameters</h3>
1233
  <div class="subelement argument">
1234
+ <h4>$tpl</h4>
1235
+ <code>string</code><p>A string possibly starting with '[+template:'</p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1236
  </div>
1237
  <h3>Returns</h3>
1238
  <div class="subelement response">
1239
+ <code>string</code>'' or template string starting with '[+template:' and ending with the matching '+]'</div>
1240
  </div></div>
1241
  </div>
1242
+ <a name="_find_test_substring" id="_find_test_substring"></a><div class="element clickable method private _find_test_substring" data-toggle="collapse" data-target="._find_test_substring .collapse">
1243
+ <h2>Find a complete (test) element, balancing opening and closing delimiters</h2>
1244
+ <pre>_find_test_substring(string $tpl) : string</pre>
1245
  <div class="labels"></div>
1246
  <div class="row collapse"><div class="detail-description">
1247
  <p class="long_description"></p>
1252
  <h3>Parameters</h3>
1253
  <div class="subelement argument">
1254
  <h4>$tpl</h4>
1255
+ <code>string</code><p>A string possibly starting with '('</p>
1256
  </div>
1257
  <h3>Returns</h3>
1258
  <div class="subelement response">
1259
+ <code>string</code>'' or template string starting with '(' and ending with the matching ')'</div>
1260
  </div></div>
1261
  </div>
1262
+ <a name="_match_quoted_phrase" id="_match_quoted_phrase"></a><div class="element clickable method private _match_quoted_phrase" data-toggle="collapse" data-target="._match_quoted_phrase .collapse">
1263
+ <h2>Isolates keyword match results to word boundaries</h2>
1264
+ <pre>_match_quoted_phrase(string $needle, string $haystack) : boolean</pre>
1265
  <div class="labels"></div>
1266
  <div class="row collapse"><div class="detail-description">
1267
+ <p class="long_description"><p>Eliminates matches such as "man" in "woman".</p></p>
1268
  <table class="table table-bordered"><tr>
1269
  <th>since</th>
1270
+ <td>2.11</td>
1271
  </tr></table>
1272
  <h3>Parameters</h3>
1273
  <div class="subelement argument">
1274
+ <h4>$needle</h4>
1275
+ <code>string</code><p>the quoted phrase (without enclosing quotes)</p>
1276
  </div>
1277
+ <div class="subelement argument">
1278
+ <h4>$haystack</h4>
1279
+ <code>string</code><p>the entire term</p></div>
1280
  <h3>Returns</h3>
1281
  <div class="subelement response">
1282
+ <code>boolean</code>$needle is a word match within $haystack</div>
1283
  </div></div>
1284
  </div>
1285
  <a name="_parse_arguments" id="_parse_arguments"></a><div class="element clickable method private _parse_arguments" data-toggle="collapse" data-target="._parse_arguments .collapse">
1341
  <code>string</code>formatted date string YYYY-MM-DD HH:mm:SS</div>
1342
  </div></div>
1343
  </div>
1344
+ <a name="_parse_xmp_array" id="_parse_xmp_array"></a><div class="element clickable method private _parse_xmp_array" data-toggle="collapse" data-target="._parse_xmp_array .collapse">
1345
+ <h2>Parse an XMP array value, stripping namespace prefixes and Seq/Alt/Bag arrays</h2>
1346
+ <pre>_parse_xmp_array(array $values) : mixed</pre>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1347
  <div class="labels"></div>
1348
  <div class="row collapse"><div class="detail-description">
1349
  <p class="long_description"></p>
1350
  <table class="table table-bordered"><tr>
1351
  <th>since</th>
1352
+ <td>2.10</td>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1353
  </tr></table>
1354
  <h3>Parameters</h3>
1355
  <div class="subelement argument">
1356
+ <h4>$values</h4>
1357
+ <code>array</code><p>XMP multi-valued element</p>
 
 
 
1358
  </div>
1359
  <h3>Returns</h3>
1360
  <div class="subelement response">
1361
+ <code>mixed</code>Simplified array or string value</div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1362
  </div></div>
1363
  </div>
1364
  <a name="_prepare_list_table_query" id="_prepare_list_table_query"></a><div class="element clickable method private _prepare_list_table_query" data-toggle="collapse" data-target="._prepare_list_table_query .collapse">
1607
  </tr></table>
1608
  </div></div>
1609
  </div>
1610
+ <a name="%24utf8_chars" id="$utf8_chars"> </a><div class="element clickable property public $utf8_chars" data-toggle="collapse" data-target=".$utf8_chars .collapse">
1611
+ <h2>UTF-8 replacements for invalid SQL characters</h2>
1612
+ <pre>$utf8_chars : array</pre>
1613
+ <div class="labels"></div>
1614
+ <div class="row collapse"><div class="detail-description">
1615
+ <p class="long_description"></p>
1616
+ <table class="table table-bordered"><tr>
1617
+ <th>since</th>
1618
+ <td>1.41</td>
1619
+ </tr></table>
1620
+ </div></div>
1621
+ </div>
1622
  <a name="%24galleries" id="$galleries"> </a><div class="element clickable property private $galleries" data-toggle="collapse" data-target=".$galleries .collapse">
1623
  <h2>Objects containing [gallery] shortcodes</h2>
1624
  <pre>$galleries : array</pre>
1745
  </tr></table>
1746
  </div></div>
1747
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1748
  <a name="%24query_parameters" id="$query_parameters"> </a><div class="element clickable property private $query_parameters" data-toggle="collapse" data-target=".$query_parameters .collapse">
1749
  <h2>WP_Query filter "parameters"</h2>
1750
  <pre>$query_parameters : array</pre>
1762
  </tr></table>
1763
  </div></div>
1764
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
1765
  <h3>
1766
  <i class="icon-custom icon-constant"></i> Constants</h3>
1767
  <a name="MLA_ALT_TEXT_VIEW_SUFFIX" id="MLA_ALT_TEXT_VIEW_SUFFIX"> </a><div class="element clickable constant MLA_ALT_TEXT_VIEW_SUFFIX" data-toggle="collapse" data-target=".MLA_ALT_TEXT_VIEW_SUFFIX .collapse">
1784
  <div class="row"><footer class="span12">
1785
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
1786
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
1787
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
1788
  </div>
1789
  </body>
1790
  </html>
phpDocs/classes/MLAEdit.html CHANGED
@@ -396,7 +396,9 @@ and above the id="media-items" div.</p></p>
396
  <div class="labels"></div>
397
  <div class="row collapse"><div class="detail-description">
398
  <p class="long_description"><p>This filter is called AFTER MLA mapping rules are applied during
399
- wp_update_attachment_metadata() processing.</p></p>
 
 
400
  <table class="table table-bordered"><tr>
401
  <th>since</th>
402
  <td>2.02</td>
@@ -511,7 +513,7 @@ The array is built once each page load and cached for subsequent calls.</p></p>
511
  <div class="row"><footer class="span12">
512
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
513
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
514
- generated on 2015-02-17T16:36:12-08:00.<br></footer></div>
515
  </div>
516
  </body>
517
  </html>
396
  <div class="labels"></div>
397
  <div class="row collapse"><div class="detail-description">
398
  <p class="long_description"><p>This filter is called AFTER MLA mapping rules are applied during
399
+ wp_update_attachment_metadata() processing. If none of the mapping rules
400
+ is enabled it is called from the 'wp_update_attachment_metadata' filter
401
+ with just two arguments.</p></p>
402
  <table class="table table-bordered"><tr>
403
  <th>since</th>
404
  <td>2.02</td>
513
  <div class="row"><footer class="span12">
514
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
515
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
516
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
517
  </div>
518
  </body>
519
  </html>
phpDocs/classes/MLAMime.html CHANGED
@@ -1288,7 +1288,7 @@ Defined as public because it's a filter.</p></p>
1288
  <div class="row"><footer class="span12">
1289
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
1290
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
1291
- generated on 2015-02-17T16:36:12-08:00.<br></footer></div>
1292
  </div>
1293
  </body>
1294
  </html>
1288
  <div class="row"><footer class="span12">
1289
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
1290
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
1291
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
1292
  </div>
1293
  </body>
1294
  </html>
phpDocs/classes/MLAModal.html CHANGED
@@ -515,7 +515,7 @@ and mla_print_media_templates_action</h2>
515
  <div class="row"><footer class="span12">
516
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
517
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
518
- generated on 2015-02-17T16:36:12-08:00.<br></footer></div>
519
  </div>
520
  </body>
521
  </html>
515
  <div class="row"><footer class="span12">
516
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
517
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
518
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
519
  </div>
520
  </body>
521
  </html>
phpDocs/classes/MLAMutex.html ADDED
@@ -0,0 +1,450 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html><html xmlns:date="http://exslt.org/dates-and-times" lang="en">
2
+ <head>
3
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4
+ <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">
5
+ <meta charset="utf-8">
6
+ <title>Media Library Assistant » \MLAMutex</title>
7
+ <meta name="author" content="Mike van Riel">
8
+ <meta name="description" content="">
9
+ <link href="../css/template.css" rel="stylesheet" media="all">
10
+ <script src="../js/jquery-1.7.1.min.js" type="text/javascript"></script><script src="../js/jquery-ui-1.8.2.custom.min.js" type="text/javascript"></script><script src="../js/jquery.mousewheel.min.js" type="text/javascript"></script><script src="../js/bootstrap.js" type="text/javascript"></script><script src="../js/template.js" type="text/javascript"></script><script src="../js/prettify/prettify.min.js" type="text/javascript"></script><link rel="shortcut icon" href="../img/favicon.ico">
11
+ <link rel="apple-touch-icon" href="../img/apple-touch-icon.png">
12
+ <link rel="apple-touch-icon" sizes="72x72" href="../img/apple-touch-icon-72x72.png">
13
+ <link rel="apple-touch-icon" sizes="114x114" href="../img/apple-touch-icon-114x114.png">
14
+ </head>
15
+ <body>
16
+ <div class="navbar navbar-fixed-top">
17
+ <div class="navbar-inner"><div class="container">
18
+ <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></a><a class="brand" href="../index.html">Media Library Assistant</a><div class="nav-collapse"><ul class="nav">
19
+ <li class="dropdown">
20
+ <a href="#api" class="dropdown-toggle" data-toggle="dropdown">
21
+ API Documentation <b class="caret"></b></a><ul class="dropdown-menu">
22
+ <li><a>Packages</a></li>
23
+ <li><a href="../packages/Media%20Library%20Assistant.html"><i class="icon-folder-open"></i> Media Library Assistant</a></li>
24
+ </ul>
25
+ </li>
26
+ <li class="dropdown" id="charts-menu">
27
+ <a href="#charts" class="dropdown-toggle" data-toggle="dropdown">
28
+ Charts <b class="caret"></b></a><ul class="dropdown-menu"><li><a href="../graph_class.html"><i class="icon-list-alt"></i> Class hierarchy diagram</a></li></ul>
29
+ </li>
30
+ <li class="dropdown" id="reports-menu">
31
+ <a href="#reports" class="dropdown-toggle" data-toggle="dropdown">
32
+ Reports <b class="caret"></b></a><ul class="dropdown-menu">
33
+ <li><a href="../errors.html"><i class="icon-remove-sign"></i> Errors 
34
+ <span class="label label-info">0</span></a></li>
35
+ <li><a href="../markers.html"><i class="icon-map-marker"></i> Markers 
36
+ <ul><li>todo 
37
+ <span class="label label-info">1</span>
38
+ </li></ul></a></li>
39
+ <li><a href="../deprecated.html"><i class="icon-stop"></i> Deprecated elements 
40
+ <span class="label label-info">0</span></a></li>
41
+ </ul>
42
+ </li>
43
+ </ul></div>
44
+ </div></div>
45
+ <div class="go_to_top"><a href="#___" style="color: inherit">Back to top  <i class="icon-upload icon-white"></i></a></div>
46
+ </div>
47
+ <div id="___" class="container">
48
+ <noscript><div class="alert alert-warning">
49
+ Javascript is disabled; several features are only available
50
+ if Javascript is enabled.
51
+ </div></noscript>
52
+ <div class="row">
53
+ <div class="span4">
54
+ <span class="btn-group visibility" data-toggle="buttons-checkbox"><button class="btn public active" title="Show public elements">Public</button><button class="btn protected" title="Show protected elements">Protected</button><button class="btn private" title="Show private elements">Private</button><button class="btn inherited active" title="Show inherited elements">Inherited</button></span><div class="btn-group view pull-right" data-toggle="buttons-radio">
55
+ <button class="btn details" title="Show descriptions and method names"><i class="icon-list"></i></button><button class="btn simple" title="Show only method names"><i class="icon-align-justify"></i></button>
56
+ </div>
57
+ <ul class="side-nav nav nav-list">
58
+ <li class="nav-header">
59
+ <i class="icon-custom icon-method"></i> Methods</li>
60
+ <li class="method public "><a href="#__construct" title="__construct :: Initializes the choice of semaphore Vs file lock"><span class="description">Initializes the choice of semaphore Vs file lock</span><pre>__construct()</pre></a></li>
61
+ <li class="method public "><a href="#acquire" title="acquire :: Acquires the semaphore or opens and locks the file"><span class="description">Acquires the semaphore or opens and locks the file</span><pre>acquire()</pre></a></li>
62
+ <li class="method public "><a href="#getId" title="getId :: Returns the semaphore identifier, if it exists, else NULL"><span class="description">Returns the semaphore identifier, if it exists, else NULL</span><pre>getId()</pre></a></li>
63
+ <li class="method public "><a href="#init" title="init :: Creates the semaphore or sets the (lock) file name"><span class="description">Creates the semaphore or sets the (lock) file name</span><pre>init()</pre></a></li>
64
+ <li class="method public "><a href="#release" title="release :: Releases the semaphore or unlocks and closes (but does not unlink) the file"><span class="description">Releases the semaphore or unlocks and closes (but does not unlink) the file</span><pre>release()</pre></a></li>
65
+ <li class="nav-header">
66
+ <i class="icon-custom icon-property"></i> Properties</li>
67
+ <li class="nav-header private">» Private</li>
68
+ <li class="property private "><a href="#%24filename" title="$filename :: Name of the (locked) file used as a semaphore"><span class="description">Name of the (locked) file used as a semaphore</span><pre>$filename</pre></a></li>
69
+ <li class="property private "><a href="#%24filepointer" title="$filepointer :: File system pointer resource of the (locked) file used as a semaphore"><span class="description">File system pointer resource of the (locked) file used as a semaphore</span><pre>$filepointer</pre></a></li>
70
+ <li class="property private "><a href="#%24is_acquired" title="$is_acquired :: True if the semaphore has been acquired"><span class="description">True if the semaphore has been acquired</span><pre>$is_acquired</pre></a></li>
71
+ <li class="property private "><a href="#%24sem_id" title="$sem_id :: Semaphore identifier returned by sem_get()"><span class="description">Semaphore identifier returned by sem_get()</span><pre>$sem_id</pre></a></li>
72
+ <li class="property private "><a href="#%24use_file_lock" title="$use_file_lock :: True if using a file lock instead of a semaphore"><span class="description">True if using a file lock instead of a semaphore</span><pre>$use_file_lock</pre></a></li>
73
+ </ul>
74
+ <span class="btn-group visibility" data-toggle="buttons-checkbox"><button class="btn public active" title="Show public elements">Public</button><button class="btn protected" title="Show protected elements">Protected</button><button class="btn private" title="Show private elements">Private</button><button class="btn inherited active" title="Show inherited elements">Inherited</button></span><div class="btn-group view pull-right" data-toggle="buttons-radio">
75
+ <button class="btn details" title="Show descriptions and method names"><i class="icon-list"></i></button><button class="btn simple" title="Show only method names"><i class="icon-align-justify"></i></button>
76
+ </div>
77
+ <ul class="side-nav nav nav-list">
78
+ <li class="nav-header">
79
+ <i class="icon-custom icon-method"></i> Methods</li>
80
+ <li class="method public "><a href="#__construct" title="__construct :: Initializes the choice of semaphore Vs file lock"><span class="description">Initializes the choice of semaphore Vs file lock</span><pre>__construct()</pre></a></li>
81
+ <li class="method public "><a href="#acquire" title="acquire :: Acquires the semaphore or opens and locks the file"><span class="description">Acquires the semaphore or opens and locks the file</span><pre>acquire()</pre></a></li>
82
+ <li class="method public "><a href="#getId" title="getId :: Returns the semaphore identifier, if it exists, else NULL"><span class="description">Returns the semaphore identifier, if it exists, else NULL</span><pre>getId()</pre></a></li>
83
+ <li class="method public "><a href="#init" title="init :: Creates the semaphore or sets the (lock) file name"><span class="description">Creates the semaphore or sets the (lock) file name</span><pre>init()</pre></a></li>
84
+ <li class="method public "><a href="#release" title="release :: Releases the semaphore or unlocks and closes (but does not unlink) the file"><span class="description">Releases the semaphore or unlocks and closes (but does not unlink) the file</span><pre>release()</pre></a></li>
85
+ <li class="nav-header">
86
+ <i class="icon-custom icon-property"></i> Properties</li>
87
+ <li class="nav-header private">» Private</li>
88
+ <li class="property private "><a href="#%24filename" title="$filename :: Name of the (locked) file used as a semaphore"><span class="description">Name of the (locked) file used as a semaphore</span><pre>$filename</pre></a></li>
89
+ <li class="property private "><a href="#%24filepointer" title="$filepointer :: File system pointer resource of the (locked) file used as a semaphore"><span class="description">File system pointer resource of the (locked) file used as a semaphore</span><pre>$filepointer</pre></a></li>
90
+ <li class="property private "><a href="#%24is_acquired" title="$is_acquired :: True if the semaphore has been acquired"><span class="description">True if the semaphore has been acquired</span><pre>$is_acquired</pre></a></li>
91
+ <li class="property private "><a href="#%24sem_id" title="$sem_id :: Semaphore identifier returned by sem_get()"><span class="description">Semaphore identifier returned by sem_get()</span><pre>$sem_id</pre></a></li>
92
+ <li class="property private "><a href="#%24use_file_lock" title="$use_file_lock :: True if using a file lock instead of a semaphore"><span class="description">True if using a file lock instead of a semaphore</span><pre>$use_file_lock</pre></a></li>
93
+ </ul>
94
+ </div>
95
+ <div class="span8">
96
+ <a name="%5CMLAMutex" id="\MLAMutex"></a><ul class="breadcrumb">
97
+ <li>
98
+ <a href="../index.html"><i class="icon-custom icon-class"></i></a><span class="divider">\</span>
99
+ </li>
100
+ <li><a href="../namespaces/global.html">global</a></li>
101
+ <li class="active">
102
+ <span class="divider">\</span><a href="../classes/MLAMutex.html">MLAMutex</a>
103
+ </li>
104
+ </ul>
105
+ <div href="../classes/MLAMutex.html" class="element class">
106
+ <p class="short_description">Class MLA (Media Library Assistant) Mutex provides a simple "mutual exclusion" semaphore
107
+ for the [mla_gallery] mla_viewer=single option</p>
108
+ <div class="details">
109
+ <p class="long_description"><p>Adapted from the example by mr.smaon@gmail.com in the PHP Manual "Semaphore Functions" page.</p></p>
110
+ <table class="table table-bordered">
111
+ <tr>
112
+ <th>package</th>
113
+ <td><a href="../packages/Media%20Library%20Assistant.html">Media Library Assistant</a></td>
114
+ </tr>
115
+ <tr>
116
+ <th>since</th>
117
+ <td>2.10</td>
118
+ </tr>
119
+ </table>
120
+ <h3>
121
+ <i class="icon-custom icon-method"></i> Methods</h3>
122
+ <a name="__construct" id="__construct"></a><div class="element clickable method public __construct" data-toggle="collapse" data-target=".__construct .collapse">
123
+ <h2>Initializes the choice of semaphore Vs file lock</h2>
124
+ <pre>__construct(boolean $use_lock) : void</pre>
125
+ <div class="labels"></div>
126
+ <div class="row collapse"><div class="detail-description">
127
+ <p class="long_description"></p>
128
+ <table class="table table-bordered"><tr>
129
+ <th>since</th>
130
+ <td>2.10</td>
131
+ </tr></table>
132
+ <h3>Parameters</h3>
133
+ <div class="subelement argument">
134
+ <h4>$use_lock</h4>
135
+ <code>boolean</code><p>True to force use of file locking</p></div>
136
+ </div></div>
137
+ </div>
138
+ <a name="acquire" id="acquire"></a><div class="element clickable method public acquire" data-toggle="collapse" data-target=".acquire .collapse">
139
+ <h2>Acquires the semaphore or opens and locks the file</h2>
140
+ <pre>acquire() : boolean</pre>
141
+ <div class="labels"></div>
142
+ <div class="row collapse"><div class="detail-description">
143
+ <p class="long_description"></p>
144
+ <table class="table table-bordered"><tr>
145
+ <th>since</th>
146
+ <td>2.10</td>
147
+ </tr></table>
148
+ <h3>Returns</h3>
149
+ <div class="subelement response">
150
+ <code>boolean</code>True if the acquisition succeeded</div>
151
+ </div></div>
152
+ </div>
153
+ <a name="getId" id="getId"></a><div class="element clickable method public getId" data-toggle="collapse" data-target=".getId .collapse">
154
+ <h2>Returns the semaphore identifier, if it exists, else NULL</h2>
155
+ <pre>getId() : resource</pre>
156
+ <div class="labels"></div>
157
+ <div class="row collapse"><div class="detail-description">
158
+ <p class="long_description"></p>
159
+ <table class="table table-bordered"><tr>
160
+ <th>since</th>
161
+ <td>2.10</td>
162
+ </tr></table>
163
+ <h3>Returns</h3>
164
+ <div class="subelement response">
165
+ <code>resource</code>Semaphore identifier or NULL</div>
166
+ </div></div>
167
+ </div>
168
+ <a name="init" id="init"></a><div class="element clickable method public init" data-toggle="collapse" data-target=".init .collapse">
169
+ <h2>Creates the semaphore or sets the (lock) file name</h2>
170
+ <pre>init(integer $id, string $filename) : boolean</pre>
171
+ <div class="labels"></div>
172
+ <div class="row collapse"><div class="detail-description">
173
+ <p class="long_description"></p>
174
+ <table class="table table-bordered"><tr>
175
+ <th>since</th>
176
+ <td>2.10</td>
177
+ </tr></table>
178
+ <h3>Parameters</h3>
179
+ <div class="subelement argument">
180
+ <h4>$id</h4>
181
+ <code>integer</code><p>Key to identify the semaphore</p></div>
182
+ <div class="subelement argument">
183
+ <h4>$filename</h4>
184
+ <code>string</code><p>Absolute path and name of the file for locking</p></div>
185
+ <h3>Returns</h3>
186
+ <div class="subelement response">
187
+ <code>boolean</code>True if the initialization succeeded</div>
188
+ </div></div>
189
+ </div>
190
+ <a name="release" id="release"></a><div class="element clickable method public release" data-toggle="collapse" data-target=".release .collapse">
191
+ <h2>Releases the semaphore or unlocks and closes (but does not unlink) the file</h2>
192
+ <pre>release() : boolean</pre>
193
+ <div class="labels"></div>
194
+ <div class="row collapse"><div class="detail-description">
195
+ <p class="long_description"></p>
196
+ <table class="table table-bordered"><tr>
197
+ <th>since</th>
198
+ <td>2.10</td>
199
+ </tr></table>
200
+ <h3>Returns</h3>
201
+ <div class="subelement response">
202
+ <code>boolean</code>True if the release succeeded</div>
203
+ </div></div>
204
+ </div>
205
+ <h3>
206
+ <i class="icon-custom icon-property"></i> Properties</h3>
207
+ <a name="%24filename" id="$filename"> </a><div class="element clickable property private $filename" data-toggle="collapse" data-target=".$filename .collapse">
208
+ <h2>Name of the (locked) file used as a semaphore</h2>
209
+ <pre>$filename : string</pre>
210
+ <div class="labels"></div>
211
+ <div class="row collapse"><div class="detail-description">
212
+ <p class="long_description"></p>
213
+ <table class="table table-bordered"><tr>
214
+ <th>since</th>
215
+ <td>2.10</td>
216
+ </tr></table>
217
+ </div></div>
218
+ </div>
219
+ <a name="%24filepointer" id="$filepointer"> </a><div class="element clickable property private $filepointer" data-toggle="collapse" data-target=".$filepointer .collapse">
220
+ <h2>File system pointer resource of the (locked) file used as a semaphore</h2>
221
+ <pre>$filepointer : resource</pre>
222
+ <div class="labels"></div>
223
+ <div class="row collapse"><div class="detail-description">
224
+ <p class="long_description"></p>
225
+ <table class="table table-bordered"><tr>
226
+ <th>since</th>
227
+ <td>2.10</td>
228
+ </tr></table>
229
+ </div></div>
230
+ </div>
231
+ <a name="%24is_acquired" id="$is_acquired"> </a><div class="element clickable property private $is_acquired" data-toggle="collapse" data-target=".$is_acquired .collapse">
232
+ <h2>True if the semaphore has been acquired</h2>
233
+ <pre>$is_acquired : boolean</pre>
234
+ <div class="labels"></div>
235
+ <div class="row collapse"><div class="detail-description">
236
+ <p class="long_description"></p>
237
+ <table class="table table-bordered"><tr>
238
+ <th>since</th>
239
+ <td>2.10</td>
240
+ </tr></table>
241
+ </div></div>
242
+ </div>
243
+ <a name="%24sem_id" id="$sem_id"> </a><div class="element clickable property private $sem_id" data-toggle="collapse" data-target=".$sem_id .collapse">
244
+ <h2>Semaphore identifier returned by sem_get()</h2>
245
+ <pre>$sem_id : resource</pre>
246
+ <div class="labels"></div>
247
+ <div class="row collapse"><div class="detail-description">
248
+ <p class="long_description"></p>
249
+ <table class="table table-bordered"><tr>
250
+ <th>since</th>
251
+ <td>2.10</td>
252
+ </tr></table>
253
+ </div></div>
254
+ </div>
255
+ <a name="%24use_file_lock" id="$use_file_lock"> </a><div class="element clickable property private $use_file_lock" data-toggle="collapse" data-target=".$use_file_lock .collapse">
256
+ <h2>True if using a file lock instead of a semaphore</h2>
257
+ <pre>$use_file_lock : boolean</pre>
258
+ <div class="labels"></div>
259
+ <div class="row collapse"><div class="detail-description">
260
+ <p class="long_description"></p>
261
+ <table class="table table-bordered"><tr>
262
+ <th>since</th>
263
+ <td>2.10</td>
264
+ </tr></table>
265
+ </div></div>
266
+ </div>
267
+ </div>
268
+ </div>
269
+ <a name="%5CMLAMutex" id="\MLAMutex"></a><ul class="breadcrumb">
270
+ <li>
271
+ <a href="../index.html"><i class="icon-custom icon-class"></i></a><span class="divider">\</span>
272
+ </li>
273
+ <li><a href="../namespaces/global.html">global</a></li>
274
+ <li class="active">
275
+ <span class="divider">\</span><a href="../classes/MLAMutex.html">MLAMutex</a>
276
+ </li>
277
+ </ul>
278
+ <div href="../classes/MLAMutex.html" class="element class">
279
+ <p class="short_description">Class MLA (Media Library Assistant) Mutex provides a simple "mutual exclusion" semaphore
280
+ for the [mla_gallery] mla_viewer=single option</p>
281
+ <div class="details">
282
+ <p class="long_description"><p>Adapted from the example by mr.smaon@gmail.com in the PHP Manual "Semaphore Functions" page.</p></p>
283
+ <table class="table table-bordered">
284
+ <tr>
285
+ <th>package</th>
286
+ <td><a href="../packages/Media%20Library%20Assistant.html">Media Library Assistant</a></td>
287
+ </tr>
288
+ <tr>
289
+ <th>since</th>
290
+ <td>2.10</td>
291
+ </tr>
292
+ </table>
293
+ <h3>
294
+ <i class="icon-custom icon-method"></i> Methods</h3>
295
+ <a name="__construct" id="__construct"></a><div class="element clickable method public __construct" data-toggle="collapse" data-target=".__construct .collapse">
296
+ <h2>Initializes the choice of semaphore Vs file lock</h2>
297
+ <pre>__construct(boolean $use_lock) : void</pre>
298
+ <div class="labels"></div>
299
+ <div class="row collapse"><div class="detail-description">
300
+ <p class="long_description"></p>
301
+ <table class="table table-bordered"><tr>
302
+ <th>since</th>
303
+ <td>2.10</td>
304
+ </tr></table>
305
+ <h3>Parameters</h3>
306
+ <div class="subelement argument">
307
+ <h4>$use_lock</h4>
308
+ <code>boolean</code><p>True to force use of file locking</p></div>
309
+ </div></div>
310
+ </div>
311
+ <a name="acquire" id="acquire"></a><div class="element clickable method public acquire" data-toggle="collapse" data-target=".acquire .collapse">
312
+ <h2>Acquires the semaphore or opens and locks the file</h2>
313
+ <pre>acquire() : boolean</pre>
314
+ <div class="labels"></div>
315
+ <div class="row collapse"><div class="detail-description">
316
+ <p class="long_description"></p>
317
+ <table class="table table-bordered"><tr>
318
+ <th>since</th>
319
+ <td>2.10</td>
320
+ </tr></table>
321
+ <h3>Returns</h3>
322
+ <div class="subelement response">
323
+ <code>boolean</code>True if the acquisition succeeded</div>
324
+ </div></div>
325
+ </div>
326
+ <a name="getId" id="getId"></a><div class="element clickable method public getId" data-toggle="collapse" data-target=".getId .collapse">
327
+ <h2>Returns the semaphore identifier, if it exists, else NULL</h2>
328
+ <pre>getId() : resource</pre>
329
+ <div class="labels"></div>
330
+ <div class="row collapse"><div class="detail-description">
331
+ <p class="long_description"></p>
332
+ <table class="table table-bordered"><tr>
333
+ <th>since</th>
334
+ <td>2.10</td>
335
+ </tr></table>
336
+ <h3>Returns</h3>
337
+ <div class="subelement response">
338
+ <code>resource</code>Semaphore identifier or NULL</div>
339
+ </div></div>
340
+ </div>
341
+ <a name="init" id="init"></a><div class="element clickable method public init" data-toggle="collapse" data-target=".init .collapse">
342
+ <h2>Creates the semaphore or sets the (lock) file name</h2>
343
+ <pre>init(integer $id, string $filename) : boolean</pre>
344
+ <div class="labels"></div>
345
+ <div class="row collapse"><div class="detail-description">
346
+ <p class="long_description"></p>
347
+ <table class="table table-bordered"><tr>
348
+ <th>since</th>
349
+ <td>2.10</td>
350
+ </tr></table>
351
+ <h3>Parameters</h3>
352
+ <div class="subelement argument">
353
+ <h4>$id</h4>
354
+ <code>integer</code><p>Key to identify the semaphore</p></div>
355
+ <div class="subelement argument">
356
+ <h4>$filename</h4>
357
+ <code>string</code><p>Absolute path and name of the file for locking</p></div>
358
+ <h3>Returns</h3>
359
+ <div class="subelement response">
360
+ <code>boolean</code>True if the initialization succeeded</div>
361
+ </div></div>
362
+ </div>
363
+ <a name="release" id="release"></a><div class="element clickable method public release" data-toggle="collapse" data-target=".release .collapse">
364
+ <h2>Releases the semaphore or unlocks and closes (but does not unlink) the file</h2>
365
+ <pre>release() : boolean</pre>
366
+ <div class="labels"></div>
367
+ <div class="row collapse"><div class="detail-description">
368
+ <p class="long_description"></p>
369
+ <table class="table table-bordered"><tr>
370
+ <th>since</th>
371
+ <td>2.10</td>
372
+ </tr></table>
373
+ <h3>Returns</h3>
374
+ <div class="subelement response">
375
+ <code>boolean</code>True if the release succeeded</div>
376
+ </div></div>
377
+ </div>
378
+ <h3>
379
+ <i class="icon-custom icon-property"></i> Properties</h3>
380
+ <a name="%24filename" id="$filename"> </a><div class="element clickable property private $filename" data-toggle="collapse" data-target=".$filename .collapse">
381
+ <h2>Name of the (locked) file used as a semaphore</h2>
382
+ <pre>$filename : string</pre>
383
+ <div class="labels"></div>
384
+ <div class="row collapse"><div class="detail-description">
385
+ <p class="long_description"></p>
386
+ <table class="table table-bordered"><tr>
387
+ <th>since</th>
388
+ <td>2.10</td>
389
+ </tr></table>
390
+ </div></div>
391
+ </div>
392
+ <a name="%24filepointer" id="$filepointer"> </a><div class="element clickable property private $filepointer" data-toggle="collapse" data-target=".$filepointer .collapse">
393
+ <h2>File system pointer resource of the (locked) file used as a semaphore</h2>
394
+ <pre>$filepointer : resource</pre>
395
+ <div class="labels"></div>
396
+ <div class="row collapse"><div class="detail-description">
397
+ <p class="long_description"></p>
398
+ <table class="table table-bordered"><tr>
399
+ <th>since</th>
400
+ <td>2.10</td>
401
+ </tr></table>
402
+ </div></div>
403
+ </div>
404
+ <a name="%24is_acquired" id="$is_acquired"> </a><div class="element clickable property private $is_acquired" data-toggle="collapse" data-target=".$is_acquired .collapse">
405
+ <h2>True if the semaphore has been acquired</h2>
406
+ <pre>$is_acquired : boolean</pre>
407
+ <div class="labels"></div>
408
+ <div class="row collapse"><div class="detail-description">
409
+ <p class="long_description"></p>
410
+ <table class="table table-bordered"><tr>
411
+ <th>since</th>
412
+ <td>2.10</td>
413
+ </tr></table>
414
+ </div></div>
415
+ </div>
416
+ <a name="%24sem_id" id="$sem_id"> </a><div class="element clickable property private $sem_id" data-toggle="collapse" data-target=".$sem_id .collapse">
417
+ <h2>Semaphore identifier returned by sem_get()</h2>
418
+ <pre>$sem_id : resource</pre>
419
+ <div class="labels"></div>
420
+ <div class="row collapse"><div class="detail-description">
421
+ <p class="long_description"></p>
422
+ <table class="table table-bordered"><tr>
423
+ <th>since</th>
424
+ <td>2.10</td>
425
+ </tr></table>
426
+ </div></div>
427
+ </div>
428
+ <a name="%24use_file_lock" id="$use_file_lock"> </a><div class="element clickable property private $use_file_lock" data-toggle="collapse" data-target=".$use_file_lock .collapse">
429
+ <h2>True if using a file lock instead of a semaphore</h2>
430
+ <pre>$use_file_lock : boolean</pre>
431
+ <div class="labels"></div>
432
+ <div class="row collapse"><div class="detail-description">
433
+ <p class="long_description"></p>
434
+ <table class="table table-bordered"><tr>
435
+ <th>since</th>
436
+ <td>2.10</td>
437
+ </tr></table>
438
+ </div></div>
439
+ </div>
440
+ </div>
441
+ </div>
442
+ </div>
443
+ </div>
444
+ <div class="row"><footer class="span12">
445
+ Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
446
+ Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
447
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
448
+ </div>
449
+ </body>
450
+ </html>
phpDocs/classes/MLAObjects.html CHANGED
@@ -172,7 +172,7 @@ which replaces the "Posts" column with an equivalent "Attachments" column.</h2>
172
  <div class="row"><footer class="span12">
173
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
174
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
175
- generated on 2015-02-17T16:36:12-08:00.<br></footer></div>
176
  </div>
177
  </body>
178
  </html>
172
  <div class="row"><footer class="span12">
173
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
174
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
175
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
176
  </div>
177
  </body>
178
  </html>
phpDocs/classes/MLAOptions.html CHANGED
@@ -1087,7 +1087,7 @@ to ensure that mapping is only performed for new additions, not metadata updates
1087
  </div>
1088
  <h3>Returns</h3>
1089
  <div class="subelement response">
1090
- <code>mixed</code>'post_date' => (string) upload date, 'post_parent' => (integer) ID of parent or zero )</div>
1091
  </div></div>
1092
  </div>
1093
  <a name="_get_custom_field_names" id="_get_custom_field_names"></a><div class="element clickable method private _get_custom_field_names" data-toggle="collapse" data-target="._get_custom_field_names .collapse">
@@ -1658,7 +1658,7 @@ also controls the ATTACHMENT DETAILS enhancements</h2>
1658
  <div class="row"><footer class="span12">
1659
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
1660
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
1661
- generated on 2015-02-17T16:36:12-08:00.<br></footer></div>
1662
  </div>
1663
  </body>
1664
  </html>
1087
  </div>
1088
  <h3>Returns</h3>
1089
  <div class="subelement response">
1090
+ <code>mixed</code>(string)/'' or (integer)/0 depending on $data_source type</div>
1091
  </div></div>
1092
  </div>
1093
  <a name="_get_custom_field_names" id="_get_custom_field_names"></a><div class="element clickable method private _get_custom_field_names" data-toggle="collapse" data-target="._get_custom_field_names .collapse">
1658
  <div class="row"><footer class="span12">
1659
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
1660
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
1661
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
1662
  </div>
1663
  </body>
1664
  </html>
phpDocs/classes/MLAPDF.html ADDED
@@ -0,0 +1,384 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html><html xmlns:date="http://exslt.org/dates-and-times" lang="en">
2
+ <head>
3
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4
+ <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">
5
+ <meta charset="utf-8">
6
+ <title>Media Library Assistant » \MLAPDF</title>
7
+ <meta name="author" content="Mike van Riel">
8
+ <meta name="description" content="">
9
+ <link href="../css/template.css" rel="stylesheet" media="all">
10
+ <script src="../js/jquery-1.7.1.min.js" type="text/javascript"></script><script src="../js/jquery-ui-1.8.2.custom.min.js" type="text/javascript"></script><script src="../js/jquery.mousewheel.min.js" type="text/javascript"></script><script src="../js/bootstrap.js" type="text/javascript"></script><script src="../js/template.js" type="text/javascript"></script><script src="../js/prettify/prettify.min.js" type="text/javascript"></script><link rel="shortcut icon" href="../img/favicon.ico">
11
+ <link rel="apple-touch-icon" href="../img/apple-touch-icon.png">
12
+ <link rel="apple-touch-icon" sizes="72x72" href="../img/apple-touch-icon-72x72.png">
13
+ <link rel="apple-touch-icon" sizes="114x114" href="../img/apple-touch-icon-114x114.png">
14
+ </head>
15
+ <body>
16
+ <div class="navbar navbar-fixed-top">
17
+ <div class="navbar-inner"><div class="container">
18
+ <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></a><a class="brand" href="../index.html">Media Library Assistant</a><div class="nav-collapse"><ul class="nav">
19
+ <li class="dropdown">
20
+ <a href="#api" class="dropdown-toggle" data-toggle="dropdown">
21
+ API Documentation <b class="caret"></b></a><ul class="dropdown-menu">
22
+ <li><a>Packages</a></li>
23
+ <li><a href="../packages/Media%20Library%20Assistant.html"><i class="icon-folder-open"></i> Media Library Assistant</a></li>
24
+ </ul>
25
+ </li>
26
+ <li class="dropdown" id="charts-menu">
27
+ <a href="#charts" class="dropdown-toggle" data-toggle="dropdown">
28
+ Charts <b class="caret"></b></a><ul class="dropdown-menu"><li><a href="../graph_class.html"><i class="icon-list-alt"></i> Class hierarchy diagram</a></li></ul>
29
+ </li>
30
+ <li class="dropdown" id="reports-menu">
31
+ <a href="#reports" class="dropdown-toggle" data-toggle="dropdown">
32
+ Reports <b class="caret"></b></a><ul class="dropdown-menu">
33
+ <li><a href="../errors.html"><i class="icon-remove-sign"></i> Errors 
34
+ <span class="label label-info">0</span></a></li>
35
+ <li><a href="../markers.html"><i class="icon-map-marker"></i> Markers 
36
+ <ul><li>todo 
37
+ <span class="label label-info">1</span>
38
+ </li></ul></a></li>
39
+ <li><a href="../deprecated.html"><i class="icon-stop"></i> Deprecated elements 
40
+ <span class="label label-info">0</span></a></li>
41
+ </ul>
42
+ </li>
43
+ </ul></div>
44
+ </div></div>
45
+ <div class="go_to_top"><a href="#___" style="color: inherit">Back to top  <i class="icon-upload icon-white"></i></a></div>
46
+ </div>
47
+ <div id="___" class="container">
48
+ <noscript><div class="alert alert-warning">
49
+ Javascript is disabled; several features are only available
50
+ if Javascript is enabled.
51
+ </div></noscript>
52
+ <div class="row">
53
+ <div class="span4">
54
+ <span class="btn-group visibility" data-toggle="buttons-checkbox"><button class="btn public active" title="Show public elements">Public</button><button class="btn protected" title="Show protected elements">Protected</button><button class="btn private" title="Show private elements">Private</button><button class="btn inherited active" title="Show inherited elements">Inherited</button></span><div class="btn-group view pull-right" data-toggle="buttons-radio">
55
+ <button class="btn details" title="Show descriptions and method names"><i class="icon-list"></i></button><button class="btn simple" title="Show only method names"><i class="icon-align-justify"></i></button>
56
+ </div>
57
+ <ul class="side-nav nav nav-list">
58
+ <li class="nav-header">
59
+ <i class="icon-custom icon-method"></i> Methods</li>
60
+ <li class="method public "><a href="#mla_extract_pdf_metadata" title="mla_extract_pdf_metadata :: Extract Metadata from a PDF file"><span class="description">Extract Metadata from a PDF file</span><pre>mla_extract_pdf_metadata()</pre></a></li>
61
+ <li class="nav-header private">» Private</li>
62
+ <li class="method private "><a href="#_build_pdf_indirect_objects" title="_build_pdf_indirect_objects :: Build an array of indirect object definitions"><span class="description">Build an array of indirect object definitions</span><pre>_build_pdf_indirect_objects()</pre></a></li>
63
+ <li class="method private "><a href="#_extract_pdf_trailer" title="_extract_pdf_trailer :: Extract dictionary from traditional cross-reference + trailer documents"><span class="description">Extract dictionary from traditional cross-reference + trailer documents</span><pre>_extract_pdf_trailer()</pre></a></li>
64
+ <li class="method private "><a href="#_find_pdf_indirect_dictionary" title="_find_pdf_indirect_dictionary :: Find the offset, length and contents of an indirect object containing a dictionary"><span class="description">Find the offset, length and contents of an indirect object containing a dictionary</span><pre>_find_pdf_indirect_dictionary()</pre></a></li>
65
+ <li class="method private "><a href="#_parse_pdf_LPD_dictionary" title="_parse_pdf_LPD_dictionary :: Parse a PDF Linearization Parameter Dictionary object"><span class="description">Parse a PDF Linearization Parameter Dictionary object</span><pre>_parse_pdf_LPD_dictionary()</pre></a></li>
66
+ <li class="method private "><a href="#_parse_pdf_UTF16BE" title="_parse_pdf_UTF16BE :: Parse a PDF Unicode (16-bit Big Endian) object"><span class="description">Parse a PDF Unicode (16-bit Big Endian) object</span><pre>_parse_pdf_UTF16BE()</pre></a></li>
67
+ <li class="method private "><a href="#_parse_pdf_dictionary" title="_parse_pdf_dictionary :: Parse a PDF dictionary object"><span class="description">Parse a PDF dictionary object</span><pre>_parse_pdf_dictionary()</pre></a></li>
68
+ <li class="method private "><a href="#_parse_pdf_string" title="_parse_pdf_string :: Parse a PDF string object"><span class="description">Parse a PDF string object</span><pre>_parse_pdf_string()</pre></a></li>
69
+ <li class="method private "><a href="#_parse_pdf_xref_section" title="_parse_pdf_xref_section :: Parse a cross-reference table section into the array of indirect object definitions"><span class="description">Parse a cross-reference table section into the array of indirect object definitions</span><pre>_parse_pdf_xref_section()</pre></a></li>
70
+ <li class="method private "><a href="#_parse_pdf_xref_stream" title="_parse_pdf_xref_stream :: Parse a cross-reference steam into the array of indirect object definitions"><span class="description">Parse a cross-reference steam into the array of indirect object definitions</span><pre>_parse_pdf_xref_stream()</pre></a></li>
71
+ <li class="method private "><a href="#_parse_pdf_xref_subsection" title="_parse_pdf_xref_subsection :: Parse a cross-reference table subsection into the array of indirect object definitions"><span class="description">Parse a cross-reference table subsection into the array of indirect object definitions</span><pre>_parse_pdf_xref_subsection()</pre></a></li>
72
+ <li class="nav-header">
73
+ <i class="icon-custom icon-property"></i> Properties</li>
74
+ <li class="nav-header private">» Private</li>
75
+ <li class="property private "><a href="#%24pdf_indirect_objects" title="$pdf_indirect_objects :: Array of PDF indirect objects"><span class="description">Array of PDF indirect objects</span><pre>$pdf_indirect_objects</pre></a></li>
76
+ </ul>
77
+ </div>
78
+ <div class="span8">
79
+ <a name="%5CMLAPDF" id="\MLAPDF"></a><ul class="breadcrumb">
80
+ <li>
81
+ <a href="../index.html"><i class="icon-custom icon-class"></i></a><span class="divider">\</span>
82
+ </li>
83
+ <li><a href="../namespaces/global.html">global</a></li>
84
+ <li class="active">
85
+ <span class="divider">\</span><a href="../classes/MLAPDF.html">MLAPDF</a>
86
+ </li>
87
+ </ul>
88
+ <div href="../classes/MLAPDF.html" class="element class">
89
+ <p class="short_description">Class MLA (Media Library Assistant) PDF extracts legacy and XMP meta data from PDF files</p>
90
+ <div class="details">
91
+ <p class="long_description"></p>
92
+ <table class="table table-bordered">
93
+ <tr>
94
+ <th>package</th>
95
+ <td><a href="../packages/Media%20Library%20Assistant.html">Media Library Assistant</a></td>
96
+ </tr>
97
+ <tr>
98
+ <th>since</th>
99
+ <td>2.10</td>
100
+ </tr>
101
+ </table>
102
+ <h3>
103
+ <i class="icon-custom icon-method"></i> Methods</h3>
104
+ <a name="mla_extract_pdf_metadata" id="mla_extract_pdf_metadata"></a><div class="element clickable method public mla_extract_pdf_metadata" data-toggle="collapse" data-target=".mla_extract_pdf_metadata .collapse">
105
+ <h2>Extract Metadata from a PDF file</h2>
106
+ <pre>mla_extract_pdf_metadata(string $file_name) : array</pre>
107
+ <div class="labels"></div>
108
+ <div class="row collapse"><div class="detail-description">
109
+ <p class="long_description"></p>
110
+ <table class="table table-bordered"><tr>
111
+ <th>since</th>
112
+ <td>2.10</td>
113
+ </tr></table>
114
+ <h3>Parameters</h3>
115
+ <div class="subelement argument">
116
+ <h4>$file_name</h4>
117
+ <code>string</code><p>full path to the desired file</p></div>
118
+ <h3>Returns</h3>
119
+ <div class="subelement response">
120
+ <code>array</code>( 'xmp' => array( key => value ), 'pdf' => array( key => value ) ) for each metadata field, in string format</div>
121
+ </div></div>
122
+ </div>
123
+ <a name="_build_pdf_indirect_objects" id="_build_pdf_indirect_objects"></a><div class="element clickable method private _build_pdf_indirect_objects" data-toggle="collapse" data-target="._build_pdf_indirect_objects .collapse">
124
+ <h2>Build an array of indirect object definitions</h2>
125
+ <pre>_build_pdf_indirect_objects(string $string) : void</pre>
126
+ <div class="labels"></div>
127
+ <div class="row collapse"><div class="detail-description">
128
+ <p class="long_description"><p>Creates the array of indirect object offsets and lengths</p></p>
129
+ <table class="table table-bordered"><tr>
130
+ <th>since</th>
131
+ <td>2.10</td>
132
+ </tr></table>
133
+ <h3>Parameters</h3>
134
+ <div class="subelement argument">
135
+ <h4>$string</h4>
136
+ <code>string</code><p>The entire PDF document, passsed by reference</p></div>
137
+ </div></div>
138
+ </div>
139
+ <a name="_extract_pdf_trailer" id="_extract_pdf_trailer"></a><div class="element clickable method private _extract_pdf_trailer" data-toggle="collapse" data-target="._extract_pdf_trailer .collapse">
140
+ <h2>Extract dictionary from traditional cross-reference + trailer documents</h2>
141
+ <pre>_extract_pdf_trailer(string $file_name, integer $file_offset) : mixed</pre>
142
+ <div class="labels"></div>
143
+ <div class="row collapse"><div class="detail-description">
144
+ <p class="long_description"></p>
145
+ <table class="table table-bordered"><tr>
146
+ <th>since</th>
147
+ <td>2.10</td>
148
+ </tr></table>
149
+ <h3>Parameters</h3>
150
+ <div class="subelement argument">
151
+ <h4>$file_name</h4>
152
+ <code>string</code><p>full path to the desired file</p></div>
153
+ <div class="subelement argument">
154
+ <h4>$file_offset</h4>
155
+ <code>integer</code><p>offset within file of the cross-reference table</p>
156
+ </div>
157
+ <h3>Returns</h3>
158
+ <div class="subelement response">
159
+ <code>mixed</code>array of "PDF dictionary arrays", newest first, or NULL on failure</div>
160
+ </div></div>
161
+ </div>
162
+ <a name="_find_pdf_indirect_dictionary" id="_find_pdf_indirect_dictionary"></a><div class="element clickable method private _find_pdf_indirect_dictionary" data-toggle="collapse" data-target="._find_pdf_indirect_dictionary .collapse">
163
+ <h2>Find the offset, length and contents of an indirect object containing a dictionary</h2>
164
+ <pre>_find_pdf_indirect_dictionary(string $file_name, integer $object, integer $generation) : mixed</pre>
165
+ <div class="labels"></div>
166
+ <div class="row collapse"><div class="detail-description">
167
+ <p class="long_description"><p>The function searches the entire file, if necessary, to find the last/most recent copy of the object.
168
+ This is required because Adobe Acrobat does NOT increment the generation number when it reuses an object.</p></p>
169
+ <table class="table table-bordered"><tr>
170
+ <th>since</th>
171
+ <td>2.10</td>
172
+ </tr></table>
173
+ <h3>Parameters</h3>
174
+ <div class="subelement argument">
175
+ <h4>$file_name</h4>
176
+ <code>string</code><p>full path and file name</p></div>
177
+ <div class="subelement argument">
178
+ <h4>$object</h4>
179
+ <code>integer</code><p>The object number</p></div>
180
+ <div class="subelement argument">
181
+ <h4>$generation</h4>
182
+ <code>integer</code><p>The object generation number; default zero (0)</p>
183
+ </div>
184
+ <h3>Returns</h3>
185
+ <div class="subelement response">
186
+ <code>mixed</code>NULL on failure else array( 'start' => offset in the file, 'length' => object length, 'content' => dictionary contents )</div>
187
+ </div></div>
188
+ </div>
189
+ <a name="_parse_pdf_LPD_dictionary" id="_parse_pdf_LPD_dictionary"></a><div class="element clickable method private _parse_pdf_LPD_dictionary" data-toggle="collapse" data-target="._parse_pdf_LPD_dictionary .collapse">
190
+ <h2>Parse a PDF Linearization Parameter Dictionary object</h2>
191
+ <pre>_parse_pdf_LPD_dictionary(string $source_string, integer $filesize) : mixed</pre>
192
+ <div class="labels"></div>
193
+ <div class="row collapse"><div class="detail-description">
194
+ <p class="long_description"><p>Returns an array of dictionary contents, classified by object type: boolean, numeric, string, hex (string),
195
+ indirect (object), name, array, dictionary, stream, and null.
196
+ The array also has a '/length' element containing the number of bytes occupied by the
197
+ dictionary in the source string, excluding the enclosing delimiters, if passed in.</p></p>
198
+ <table class="table table-bordered"><tr>
199
+ <th>since</th>
200
+ <td>2.10</td>
201
+ </tr></table>
202
+ <h3>Parameters</h3>
203
+ <div class="subelement argument">
204
+ <h4>$source_string</h4>
205
+ <code>string</code><p>data within which the object occurs, typically the start of a PDF document</p></div>
206
+ <div class="subelement argument">
207
+ <h4>$filesize</h4>
208
+ <code>integer</code><p>filesize of the PDF document, for validation purposes, or zero (0) to ignore filesize</p>
209
+ </div>
210
+ <h3>Returns</h3>
211
+ <div class="subelement response">
212
+ <code>mixed</code>array of dictionary objects on success, false on failure</div>
213
+ </div></div>
214
+ </div>
215
+ <a name="_parse_pdf_UTF16BE" id="_parse_pdf_UTF16BE"></a><div class="element clickable method private _parse_pdf_UTF16BE" data-toggle="collapse" data-target="._parse_pdf_UTF16BE .collapse">
216
+ <h2>Parse a PDF Unicode (16-bit Big Endian) object</h2>
217
+ <pre>_parse_pdf_UTF16BE(string $source_string) : string</pre>
218
+ <div class="labels"></div>
219
+ <div class="row collapse"><div class="detail-description">
220
+ <p class="long_description"></p>
221
+ <table class="table table-bordered"><tr>
222
+ <th>since</th>
223
+ <td>2.10</td>
224
+ </tr></table>
225
+ <h3>Parameters</h3>
226
+ <div class="subelement argument">
227
+ <h4>$source_string</h4>
228
+ <code>string</code><p>PDF string of 16-bit characters</p>
229
+ </div>
230
+ <h3>Returns</h3>
231
+ <div class="subelement response">
232
+ <code>string</code>UTF-8 encoded string</div>
233
+ </div></div>
234
+ </div>
235
+ <a name="_parse_pdf_dictionary" id="_parse_pdf_dictionary"></a><div class="element clickable method private _parse_pdf_dictionary" data-toggle="collapse" data-target="._parse_pdf_dictionary .collapse">
236
+ <h2>Parse a PDF dictionary object</h2>
237
+ <pre>_parse_pdf_dictionary(string $source_string, integer $offset) : array</pre>
238
+ <div class="labels"></div>
239
+ <div class="row collapse"><div class="detail-description">
240
+ <p class="long_description"><p>Returns an array of dictionary contents, classified by object type: boolean, numeric, string, hex (string),
241
+ indirect (object), name, array, dictionary, stream, and null.
242
+ The array also has a '/length' element containing the number of bytes occupied by the
243
+ dictionary in the source string, excluding the enclosing delimiters.</p></p>
244
+ <table class="table table-bordered"><tr>
245
+ <th>since</th>
246
+ <td>2.10</td>
247
+ </tr></table>
248
+ <h3>Parameters</h3>
249
+ <div class="subelement argument">
250
+ <h4>$source_string</h4>
251
+ <code>string</code><p>data within which the string occurs</p></div>
252
+ <div class="subelement argument">
253
+ <h4>$offset</h4>
254
+ <code>integer</code><p>offset within the source string of the opening '<<' characters or the first content character.</p>
255
+ </div>
256
+ <h3>Returns</h3>
257
+ <div class="subelement response">
258
+ <code>array</code>( '/length' => length, key => array( 'type' => type, 'value' => value ) ) for each dictionary field</div>
259
+ </div></div>
260
+ </div>
261
+ <a name="_parse_pdf_string" id="_parse_pdf_string"></a><div class="element clickable method private _parse_pdf_string" data-toggle="collapse" data-target="._parse_pdf_string .collapse">
262
+ <h2>Parse a PDF string object</h2>
263
+ <pre>_parse_pdf_string(string $source_string, integer $offset) : array</pre>
264
+ <div class="labels"></div>
265
+ <div class="row collapse"><div class="detail-description">
266
+ <p class="long_description"><p>Returns an array with one dictionary entry. The array also has a '/length' element containing
267
+ the number of bytes occupied by the string in the source string, including the enclosing parentheses.</p></p>
268
+ <table class="table table-bordered"><tr>
269
+ <th>since</th>
270
+ <td>2.10</td>
271
+ </tr></table>
272
+ <h3>Parameters</h3>
273
+ <div class="subelement argument">
274
+ <h4>$source_string</h4>
275
+ <code>string</code><p>data within which the string occurs</p></div>
276
+ <div class="subelement argument">
277
+ <h4>$offset</h4>
278
+ <code>integer</code><p>offset within the source string of the opening '(' character.</p>
279
+ </div>
280
+ <h3>Returns</h3>
281
+ <div class="subelement response">
282
+ <code>array</code>( key => array( 'type' => type, 'value' => value, '/length' => length ) ) for the string</div>
283
+ </div></div>
284
+ </div>
285
+ <a name="_parse_pdf_xref_section" id="_parse_pdf_xref_section"></a><div class="element clickable method private _parse_pdf_xref_section" data-toggle="collapse" data-target="._parse_pdf_xref_section .collapse">
286
+ <h2>Parse a cross-reference table section into the array of indirect object definitions</h2>
287
+ <pre>_parse_pdf_xref_section(string $file_name, integer $file_offset) : integer</pre>
288
+ <div class="labels"></div>
289
+ <div class="row collapse"><div class="detail-description">
290
+ <p class="long_description"><p>Creates the array of indirect object offsets and lengths</p></p>
291
+ <table class="table table-bordered"><tr>
292
+ <th>since</th>
293
+ <td>2.10</td>
294
+ </tr></table>
295
+ <h3>Parameters</h3>
296
+ <div class="subelement argument">
297
+ <h4>$file_name</h4>
298
+ <code>string</code><p>full path and file name</p></div>
299
+ <div class="subelement argument">
300
+ <h4>$file_offset</h4>
301
+ <code>integer</code><p>offset within the file of the xref id and count entry</p></div>
302
+ <h3>Returns</h3>
303
+ <div class="subelement response">
304
+ <code>integer</code>length of the section</div>
305
+ </div></div>
306
+ </div>
307
+ <a name="_parse_pdf_xref_stream" id="_parse_pdf_xref_stream"></a><div class="element clickable method private _parse_pdf_xref_stream" data-toggle="collapse" data-target="._parse_pdf_xref_stream .collapse">
308
+ <h2>Parse a cross-reference steam into the array of indirect object definitions</h2>
309
+ <pre>_parse_pdf_xref_stream(string $file_name, integer $file_offset, string $entry_parms_string) : integer</pre>
310
+ <div class="labels"></div>
311
+ <div class="row collapse"><div class="detail-description">
312
+ <p class="long_description"><p>Creates the array of indirect object offsets and lengths</p></p>
313
+ <table class="table table-bordered"><tr>
314
+ <th>since</th>
315
+ <td>2.10</td>
316
+ </tr></table>
317
+ <h3>Parameters</h3>
318
+ <div class="subelement argument">
319
+ <h4>$file_name</h4>
320
+ <code>string</code><p>full path and file name</p></div>
321
+ <div class="subelement argument">
322
+ <h4>$file_offset</h4>
323
+ <code>integer</code><p>offset within the file of the xref id and count entry</p></div>
324
+ <div class="subelement argument">
325
+ <h4>$entry_parms_string</h4>
326
+ <code>string</code><p>"/W" entry, representing the size of the fields in a single entry</p>
327
+ </div>
328
+ <h3>Returns</h3>
329
+ <div class="subelement response">
330
+ <code>integer</code>length of the stream</div>
331
+ </div></div>
332
+ </div>
333
+ <a name="_parse_pdf_xref_subsection" id="_parse_pdf_xref_subsection"></a><div class="element clickable method private _parse_pdf_xref_subsection" data-toggle="collapse" data-target="._parse_pdf_xref_subsection .collapse">
334
+ <h2>Parse a cross-reference table subsection into the array of indirect object definitions</h2>
335
+ <pre>_parse_pdf_xref_subsection(string $xref_section, integer $offset, integer $object_id, integer $count) : void</pre>
336
+ <div class="labels"></div>
337
+ <div class="row collapse"><div class="detail-description">
338
+ <p class="long_description"><p>A cross-reference subsection is a sequence of 20-byte entries, each with offset and generation values.</p></p>
339
+ <table class="table table-bordered"><tr>
340
+ <th>since</th>
341
+ <td>2.10</td>
342
+ </tr></table>
343
+ <h3>Parameters</h3>
344
+ <div class="subelement argument">
345
+ <h4>$xref_section</h4>
346
+ <code>string</code><p>buffer containing the subsection</p></div>
347
+ <div class="subelement argument">
348
+ <h4>$offset</h4>
349
+ <code>integer</code><p>offset within the buffer of the first entry</p></div>
350
+ <div class="subelement argument">
351
+ <h4>$object_id</h4>
352
+ <code>integer</code><p>number of the first object in the subsection</p></div>
353
+ <div class="subelement argument">
354
+ <h4>$count</h4>
355
+ <code>integer</code><p>number of entries in the subsection</p></div>
356
+ </div></div>
357
+ </div>
358
+ <h3>
359
+ <i class="icon-custom icon-property"></i> Properties</h3>
360
+ <a name="%24pdf_indirect_objects" id="$pdf_indirect_objects"> </a><div class="element clickable property private $pdf_indirect_objects" data-toggle="collapse" data-target=".$pdf_indirect_objects .collapse">
361
+ <h2>Array of PDF indirect objects</h2>
362
+ <pre>$pdf_indirect_objects : array</pre>
363
+ <div class="labels"></div>
364
+ <div class="row collapse"><div class="detail-description">
365
+ <p class="long_description"><p>This array contains all of the indirect object offsets and lengths.
366
+ The array key is ( object ID * 1000 ) + object generation.
367
+ The array value is array( number, generation, start, optional /length )</p></p>
368
+ <table class="table table-bordered"><tr>
369
+ <th>since</th>
370
+ <td>2.10</td>
371
+ </tr></table>
372
+ </div></div>
373
+ </div>
374
+ </div>
375
+ </div>
376
+ </div>
377
+ </div>
378
+ <div class="row"><footer class="span12">
379
+ Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
380
+ Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
381
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
382
+ </div>
383
+ </body>
384
+ </html>
phpDocs/classes/MLASettings.html CHANGED
@@ -81,6 +81,7 @@ add settings link in the Plugins section entry for MLA.</span><pre>mla_admin_men
81
  <li class="method public "><a href="#mla_set_screen_option_filter" title='mla_set_screen_option_filter :: Save the "Views/Uploads per page" option set by this user'><span class="description">Save the "Views/Uploads per page" option set by this user</span><pre>mla_set_screen_option_filter()</pre></a></li>
82
  <li class="nav-header private">» Private</li>
83
  <li class="method private "><a href="#_compose_custom_field_tab" title="_compose_custom_field_tab :: Compose the Custom Field tab content for the Settings subpage"><span class="description">Compose the Custom Field tab content for the Settings subpage</span><pre>_compose_custom_field_tab()</pre></a></li>
 
84
  <li class="method private "><a href="#_compose_documentation_tab" title="_compose_documentation_tab :: Compose the Documentation tab content for the Settings subpage"><span class="description">Compose the Documentation tab content for the Settings subpage</span><pre>_compose_documentation_tab()</pre></a></li>
85
  <li class="method private "><a href="#_compose_edit_upload_tab" title="_compose_edit_upload_tab :: Compose the Edit Upload type tab content for the Settings subpage"><span class="description">Compose the Edit Upload type tab content for the Settings subpage</span><pre>_compose_edit_upload_tab()</pre></a></li>
86
  <li class="method private "><a href="#_compose_edit_view_tab" title="_compose_edit_view_tab :: Compose the Edit View tab content for the Settings subpage"><span class="description">Compose the Edit View tab content for the Settings subpage</span><pre>_compose_edit_view_tab()</pre></a></li>
@@ -112,6 +113,7 @@ without saving the settings to the mla_option</span><pre>_process_iptc_exif_taxo
112
  <li class="method private "><a href="#_process_optional_upload_mime" title="_process_optional_upload_mime :: Process an Optional Upload MIME Type selection"><span class="description">Process an Optional Upload MIME Type selection</span><pre>_process_optional_upload_mime()</pre></a></li>
113
  <li class="method private "><a href="#_reset_general_settings" title="_reset_general_settings :: Delete saved settings, restoring default values"><span class="description">Delete saved settings, restoring default values</span><pre>_reset_general_settings()</pre></a></li>
114
  <li class="method private "><a href="#_save_custom_field_settings" title="_save_custom_field_settings :: Save custom field settings to the options table"><span class="description">Save custom field settings to the options table</span><pre>_save_custom_field_settings()</pre></a></li>
 
115
  <li class="method private "><a href="#_save_gallery_settings" title="_save_gallery_settings :: Save MLA Gallery settings to the options table"><span class="description">Save MLA Gallery settings to the options table</span><pre>_save_gallery_settings()</pre></a></li>
116
  <li class="method private "><a href="#_save_general_settings" title="_save_general_settings :: Save General settings to the options table"><span class="description">Save General settings to the options table</span><pre>_save_general_settings()</pre></a></li>
117
  <li class="method private "><a href="#_save_iptc_exif_custom_settings" title="_save_iptc_exif_custom_settings :: Save IPTC/EXIF custom field settings to the options table"><span class="description">Save IPTC/EXIF custom field settings to the options table</span><pre>_save_iptc_exif_custom_settings()</pre></a></li>
@@ -459,6 +461,27 @@ in the "public static" array definition itself.</p></p>
459
  <code>array</code>'message' => status/error messages, 'body' => tab content</div>
460
  </div></div>
461
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
462
  <a name="_compose_documentation_tab" id="_compose_documentation_tab"></a><div class="element clickable method private _compose_documentation_tab" data-toggle="collapse" data-target="._compose_documentation_tab .collapse">
463
  <h2>Compose the Documentation tab content for the Settings subpage</h2>
464
  <pre>_compose_documentation_tab() : array</pre>
@@ -952,6 +975,27 @@ without saving the settings to the mla_option</h2>
952
  <code>array</code>Message(s) reflecting the results of the operation</div>
953
  </div></div>
954
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
955
  <a name="_save_gallery_settings" id="_save_gallery_settings"></a><div class="element clickable method private _save_gallery_settings" data-toggle="collapse" data-target="._save_gallery_settings .collapse">
956
  <h2>Save MLA Gallery settings to the options table</h2>
957
  <pre>_save_gallery_settings() : array</pre>
@@ -1290,7 +1334,7 @@ because Localization calls cannot be placed in the "public static" array definit
1290
  <div class="row"><footer class="span12">
1291
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
1292
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
1293
- generated on 2015-02-17T16:36:13-08:00.<br></footer></div>
1294
  </div>
1295
  </body>
1296
  </html>
81
  <li class="method public "><a href="#mla_set_screen_option_filter" title='mla_set_screen_option_filter :: Save the "Views/Uploads per page" option set by this user'><span class="description">Save the "Views/Uploads per page" option set by this user</span><pre>mla_set_screen_option_filter()</pre></a></li>
82
  <li class="nav-header private">» Private</li>
83
  <li class="method private "><a href="#_compose_custom_field_tab" title="_compose_custom_field_tab :: Compose the Custom Field tab content for the Settings subpage"><span class="description">Compose the Custom Field tab content for the Settings subpage</span><pre>_compose_custom_field_tab()</pre></a></li>
84
+ <li class="method private "><a href="#_compose_debug_tab" title="_compose_debug_tab :: Compose the Debug tab content for the Settings subpage"><span class="description">Compose the Debug tab content for the Settings subpage</span><pre>_compose_debug_tab()</pre></a></li>
85
  <li class="method private "><a href="#_compose_documentation_tab" title="_compose_documentation_tab :: Compose the Documentation tab content for the Settings subpage"><span class="description">Compose the Documentation tab content for the Settings subpage</span><pre>_compose_documentation_tab()</pre></a></li>
86
  <li class="method private "><a href="#_compose_edit_upload_tab" title="_compose_edit_upload_tab :: Compose the Edit Upload type tab content for the Settings subpage"><span class="description">Compose the Edit Upload type tab content for the Settings subpage</span><pre>_compose_edit_upload_tab()</pre></a></li>
87
  <li class="method private "><a href="#_compose_edit_view_tab" title="_compose_edit_view_tab :: Compose the Edit View tab content for the Settings subpage"><span class="description">Compose the Edit View tab content for the Settings subpage</span><pre>_compose_edit_view_tab()</pre></a></li>
113
  <li class="method private "><a href="#_process_optional_upload_mime" title="_process_optional_upload_mime :: Process an Optional Upload MIME Type selection"><span class="description">Process an Optional Upload MIME Type selection</span><pre>_process_optional_upload_mime()</pre></a></li>
114
  <li class="method private "><a href="#_reset_general_settings" title="_reset_general_settings :: Delete saved settings, restoring default values"><span class="description">Delete saved settings, restoring default values</span><pre>_reset_general_settings()</pre></a></li>
115
  <li class="method private "><a href="#_save_custom_field_settings" title="_save_custom_field_settings :: Save custom field settings to the options table"><span class="description">Save custom field settings to the options table</span><pre>_save_custom_field_settings()</pre></a></li>
116
+ <li class="method private "><a href="#_save_debug_settings" title="_save_debug_settings :: Save Debug settings to the options table"><span class="description">Save Debug settings to the options table</span><pre>_save_debug_settings()</pre></a></li>
117
  <li class="method private "><a href="#_save_gallery_settings" title="_save_gallery_settings :: Save MLA Gallery settings to the options table"><span class="description">Save MLA Gallery settings to the options table</span><pre>_save_gallery_settings()</pre></a></li>
118
  <li class="method private "><a href="#_save_general_settings" title="_save_general_settings :: Save General settings to the options table"><span class="description">Save General settings to the options table</span><pre>_save_general_settings()</pre></a></li>
119
  <li class="method private "><a href="#_save_iptc_exif_custom_settings" title="_save_iptc_exif_custom_settings :: Save IPTC/EXIF custom field settings to the options table"><span class="description">Save IPTC/EXIF custom field settings to the options table</span><pre>_save_iptc_exif_custom_settings()</pre></a></li>
461
  <code>array</code>'message' => status/error messages, 'body' => tab content</div>
462
  </div></div>
463
  </div>
464
+ <a name="_compose_debug_tab" id="_compose_debug_tab"></a><div class="element clickable method private _compose_debug_tab" data-toggle="collapse" data-target="._compose_debug_tab .collapse">
465
+ <h2>Compose the Debug tab content for the Settings subpage</h2>
466
+ <pre>_compose_debug_tab() : array</pre>
467
+ <div class="labels"></div>
468
+ <div class="row collapse"><div class="detail-description">
469
+ <p class="long_description"></p>
470
+ <table class="table table-bordered">
471
+ <tr>
472
+ <th>since</th>
473
+ <td>2.10</td>
474
+ </tr>
475
+ <tr>
476
+ <th>uses</th>
477
+ <td>\global\$page_template_array</td>
478
+ </tr>
479
+ </table>
480
+ <h3>Returns</h3>
481
+ <div class="subelement response">
482
+ <code>array</code>'message' => status/error messages, 'body' => tab content</div>
483
+ </div></div>
484
+ </div>
485
  <a name="_compose_documentation_tab" id="_compose_documentation_tab"></a><div class="element clickable method private _compose_documentation_tab" data-toggle="collapse" data-target="._compose_documentation_tab .collapse">
486
  <h2>Compose the Documentation tab content for the Settings subpage</h2>
487
  <pre>_compose_documentation_tab() : array</pre>
975
  <code>array</code>Message(s) reflecting the results of the operation</div>
976
  </div></div>
977
  </div>
978
+ <a name="_save_debug_settings" id="_save_debug_settings"></a><div class="element clickable method private _save_debug_settings" data-toggle="collapse" data-target="._save_debug_settings .collapse">
979
+ <h2>Save Debug settings to the options table</h2>
980
+ <pre>_save_debug_settings() : array</pre>
981
+ <div class="labels"></div>
982
+ <div class="row collapse"><div class="detail-description">
983
+ <p class="long_description"></p>
984
+ <table class="table table-bordered">
985
+ <tr>
986
+ <th>since</th>
987
+ <td>2.10</td>
988
+ </tr>
989
+ <tr>
990
+ <th>uses</th>
991
+ <td>\global\$_REQUEST</td>
992
+ </tr>
993
+ </table>
994
+ <h3>Returns</h3>
995
+ <div class="subelement response">
996
+ <code>array</code>Message(s) reflecting the results of the operation</div>
997
+ </div></div>
998
+ </div>
999
  <a name="_save_gallery_settings" id="_save_gallery_settings"></a><div class="element clickable method private _save_gallery_settings" data-toggle="collapse" data-target="._save_gallery_settings .collapse">
1000
  <h2>Save MLA Gallery settings to the options table</h2>
1001
  <pre>_save_gallery_settings() : array</pre>
1334
  <div class="row"><footer class="span12">
1335
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
1336
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
1337
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
1338
  </div>
1339
  </body>
1340
  </html>
phpDocs/classes/MLAShortcodes.html CHANGED
@@ -71,6 +71,7 @@
71
  <li class="method public "><a href="#mla_tag_cloud" title="mla_tag_cloud :: The MLA Tag Cloud support function."><span class="description">The MLA Tag Cloud support function.</span><pre>mla_tag_cloud()</pre></a></li>
72
  <li class="method public "><a href="#mla_tag_cloud_shortcode" title="mla_tag_cloud_shortcode :: The MLA Tag Cloud shortcode."><span class="description">The MLA Tag Cloud shortcode.</span><pre>mla_tag_cloud_shortcode()</pre></a></li>
73
  <li class="nav-header private">» Private</li>
 
74
  <li class="method private "><a href="#_pad_term_counts" title="_pad_term_counts :: Add count of children to parent count."><span class="description">Add count of children to parent count.</span><pre>_pad_term_counts()</pre></a></li>
75
  <li class="method private "><a href="#_paginate_links" title="_paginate_links :: Handles pagnation output types 'previous_page', 'next_page', and 'paginate_links'"><span class="description">Handles pagnation output types 'previous_page', 'next_page', and 'paginate_links'</span><pre>_paginate_links()</pre></a></li>
76
  <li class="method private "><a href="#_process_pagination_output_types" title="_process_pagination_output_types :: Handles pagnation output types 'previous_page', 'next_page', and 'paginate_links'"><span class="description">Handles pagnation output types 'previous_page', 'next_page', and 'paginate_links'</span><pre>_process_pagination_output_types()</pre></a></li>
@@ -412,6 +413,26 @@ options to customize the hyperlink behind each term.</p></p>
412
  <code>string</code>HTML content to display the tag cloud.</div>
413
  </div></div>
414
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
415
  <a name="_pad_term_counts" id="_pad_term_counts"></a><div class="element clickable method private _pad_term_counts" data-toggle="collapse" data-target="._pad_term_counts .collapse">
416
  <h2>Add count of children to parent count.</h2>
417
  <pre>_pad_term_counts(array $terms, string $taxonomy, array $post_types, array $post_stati) : null</pre>
@@ -707,7 +728,7 @@ any further logic required to translate those values is contained in the filter.
707
  <div class="row"><footer class="span12">
708
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
709
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
710
- generated on 2015-02-17T16:36:13-08:00.<br></footer></div>
711
  </div>
712
  </body>
713
  </html>
71
  <li class="method public "><a href="#mla_tag_cloud" title="mla_tag_cloud :: The MLA Tag Cloud support function."><span class="description">The MLA Tag Cloud support function.</span><pre>mla_tag_cloud()</pre></a></li>
72
  <li class="method public "><a href="#mla_tag_cloud_shortcode" title="mla_tag_cloud_shortcode :: The MLA Tag Cloud shortcode."><span class="description">The MLA Tag Cloud shortcode.</span><pre>mla_tag_cloud_shortcode()</pre></a></li>
73
  <li class="nav-header private">» Private</li>
74
+ <li class="method private "><a href="#_ghostscript_present" title="_ghostscript_present :: Verify the presence of Ghostscript for mla_viewer"><span class="description">Verify the presence of Ghostscript for mla_viewer</span><pre>_ghostscript_present()</pre></a></li>
75
  <li class="method private "><a href="#_pad_term_counts" title="_pad_term_counts :: Add count of children to parent count."><span class="description">Add count of children to parent count.</span><pre>_pad_term_counts()</pre></a></li>
76
  <li class="method private "><a href="#_paginate_links" title="_paginate_links :: Handles pagnation output types 'previous_page', 'next_page', and 'paginate_links'"><span class="description">Handles pagnation output types 'previous_page', 'next_page', and 'paginate_links'</span><pre>_paginate_links()</pre></a></li>
77
  <li class="method private "><a href="#_process_pagination_output_types" title="_process_pagination_output_types :: Handles pagnation output types 'previous_page', 'next_page', and 'paginate_links'"><span class="description">Handles pagnation output types 'previous_page', 'next_page', and 'paginate_links'</span><pre>_process_pagination_output_types()</pre></a></li>
413
  <code>string</code>HTML content to display the tag cloud.</div>
414
  </div></div>
415
  </div>
416
+ <a name="_ghostscript_present" id="_ghostscript_present"></a><div class="element clickable method private _ghostscript_present" data-toggle="collapse" data-target="._ghostscript_present .collapse">
417
+ <h2>Verify the presence of Ghostscript for mla_viewer</h2>
418
+ <pre>_ghostscript_present(string $explicit_path) : boolean</pre>
419
+ <div class="labels"></div>
420
+ <div class="row collapse"><div class="detail-description">
421
+ <p class="long_description"></p>
422
+ <table class="table table-bordered"><tr>
423
+ <th>since</th>
424
+ <td>2.10</td>
425
+ </tr></table>
426
+ <h3>Parameters</h3>
427
+ <div class="subelement argument">
428
+ <h4>$explicit_path</h4>
429
+ <code>string</code><p>Non-standard location to override default search, e.g., 'C:\Program Files (x86)\gs\gs9.15\bin\gswin32c.exe'</p>
430
+ </div>
431
+ <h3>Returns</h3>
432
+ <div class="subelement response">
433
+ <code>boolean</code>true if Ghostscript available else false</div>
434
+ </div></div>
435
+ </div>
436
  <a name="_pad_term_counts" id="_pad_term_counts"></a><div class="element clickable method private _pad_term_counts" data-toggle="collapse" data-target="._pad_term_counts .collapse">
437
  <h2>Add count of children to parent count.</h2>
438
  <pre>_pad_term_counts(array $terms, string $taxonomy, array $post_types, array $post_stati) : null</pre>
728
  <div class="row"><footer class="span12">
729
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
730
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
731
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
732
  </div>
733
  </body>
734
  </html>
phpDocs/classes/MLAStreamImage.html ADDED
@@ -0,0 +1,359 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html><html xmlns:date="http://exslt.org/dates-and-times" lang="en">
2
+ <head>
3
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4
+ <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">
5
+ <meta charset="utf-8">
6
+ <title>Media Library Assistant » \MLAStreamImage</title>
7
+ <meta name="author" content="Mike van Riel">
8
+ <meta name="description" content="">
9
+ <link href="../css/template.css" rel="stylesheet" media="all">
10
+ <script src="../js/jquery-1.7.1.min.js" type="text/javascript"></script><script src="../js/jquery-ui-1.8.2.custom.min.js" type="text/javascript"></script><script src="../js/jquery.mousewheel.min.js" type="text/javascript"></script><script src="../js/bootstrap.js" type="text/javascript"></script><script src="../js/template.js" type="text/javascript"></script><script src="../js/prettify/prettify.min.js" type="text/javascript"></script><link rel="shortcut icon" href="../img/favicon.ico">
11
+ <link rel="apple-touch-icon" href="../img/apple-touch-icon.png">
12
+ <link rel="apple-touch-icon" sizes="72x72" href="../img/apple-touch-icon-72x72.png">
13
+ <link rel="apple-touch-icon" sizes="114x114" href="../img/apple-touch-icon-114x114.png">
14
+ </head>
15
+ <body>
16
+ <div class="navbar navbar-fixed-top">
17
+ <div class="navbar-inner"><div class="container">
18
+ <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></a><a class="brand" href="../index.html">Media Library Assistant</a><div class="nav-collapse"><ul class="nav">
19
+ <li class="dropdown">
20
+ <a href="#api" class="dropdown-toggle" data-toggle="dropdown">
21
+ API Documentation <b class="caret"></b></a><ul class="dropdown-menu">
22
+ <li><a>Packages</a></li>
23
+ <li><a href="../packages/Media%20Library%20Assistant.html"><i class="icon-folder-open"></i> Media Library Assistant</a></li>
24
+ </ul>
25
+ </li>
26
+ <li class="dropdown" id="charts-menu">
27
+ <a href="#charts" class="dropdown-toggle" data-toggle="dropdown">
28
+ Charts <b class="caret"></b></a><ul class="dropdown-menu"><li><a href="../graph_class.html"><i class="icon-list-alt"></i> Class hierarchy diagram</a></li></ul>
29
+ </li>
30
+ <li class="dropdown" id="reports-menu">
31
+ <a href="#reports" class="dropdown-toggle" data-toggle="dropdown">
32
+ Reports <b class="caret"></b></a><ul class="dropdown-menu">
33
+ <li><a href="../errors.html"><i class="icon-remove-sign"></i> Errors 
34
+ <span class="label label-info">0</span></a></li>
35
+ <li><a href="../markers.html"><i class="icon-map-marker"></i> Markers 
36
+ <ul><li>todo 
37
+ <span class="label label-info">1</span>
38
+ </li></ul></a></li>
39
+ <li><a href="../deprecated.html"><i class="icon-stop"></i> Deprecated elements 
40
+ <span class="label label-info">0</span></a></li>
41
+ </ul>
42
+ </li>
43
+ </ul></div>
44
+ </div></div>
45
+ <div class="go_to_top"><a href="#___" style="color: inherit">Back to top  <i class="icon-upload icon-white"></i></a></div>
46
+ </div>
47
+ <div id="___" class="container">
48
+ <noscript><div class="alert alert-warning">
49
+ Javascript is disabled; several features are only available
50
+ if Javascript is enabled.
51
+ </div></noscript>
52
+ <div class="row">
53
+ <div class="span4">
54
+ <span class="btn-group visibility" data-toggle="buttons-checkbox"><button class="btn public active" title="Show public elements">Public</button><button class="btn protected" title="Show protected elements">Protected</button><button class="btn private" title="Show private elements">Private</button><button class="btn inherited active" title="Show inherited elements">Inherited</button></span><div class="btn-group view pull-right" data-toggle="buttons-radio">
55
+ <button class="btn details" title="Show descriptions and method names"><i class="icon-list"></i></button><button class="btn simple" title="Show only method names"><i class="icon-align-justify"></i></button>
56
+ </div>
57
+ <ul class="side-nav nav nav-list">
58
+ <li class="nav-header">
59
+ <i class="icon-custom icon-method"></i> Methods</li>
60
+ <li class="method public "><a href="#_wp_image_editors_filter" title="_wp_image_editors_filter :: Process Imagick image stream request, e.g., for a PDF thumbnail"><span class="description">Process Imagick image stream request, e.g., for a PDF thumbnail</span><pre>_wp_image_editors_filter()</pre></a></li>
61
+ <li class="method public "><a href="#initialize" title="initialize :: Load the plugin's Ajax handler"><span class="description">Load the plugin's Ajax handler</span><pre>initialize()</pre></a></li>
62
+ <li class="nav-header private">» Private</li>
63
+ <li class="method private "><a href="#_process_mla_stream_image" title="_process_mla_stream_image :: Process Imagick image stream request, e.g., for a PDF thumbnail"><span class="description">Process Imagick image stream request, e.g., for a PDF thumbnail</span><pre>_process_mla_stream_image()</pre></a></li>
64
+ <li class="nav-header">
65
+ <i class="icon-custom icon-property"></i> Properties</li>
66
+ <li class="property public "><a href="#%24mla_imagick_args" title="$mla_imagick_args :: Holds Imagick image resolution for class MLA_Image_Editor"><span class="description">Holds Imagick image resolution for class MLA_Image_Editor</span><pre>$mla_imagick_args</pre></a></li>
67
+ <li class="nav-header">
68
+ <i class="icon-custom icon-constant"></i> Constants</li>
69
+ <li class="constant "><a href="#MLA_ADMIN_NONCE" title="MLA_ADMIN_NONCE :: Action name; uniquely identifies the nonce"><span class="description">Action name; uniquely identifies the nonce</span><pre>MLA_ADMIN_NONCE</pre></a></li>
70
+ </ul>
71
+ <span class="btn-group visibility" data-toggle="buttons-checkbox"><button class="btn public active" title="Show public elements">Public</button><button class="btn protected" title="Show protected elements">Protected</button><button class="btn private" title="Show private elements">Private</button><button class="btn inherited active" title="Show inherited elements">Inherited</button></span><div class="btn-group view pull-right" data-toggle="buttons-radio">
72
+ <button class="btn details" title="Show descriptions and method names"><i class="icon-list"></i></button><button class="btn simple" title="Show only method names"><i class="icon-align-justify"></i></button>
73
+ </div>
74
+ <ul class="side-nav nav nav-list">
75
+ <li class="nav-header">
76
+ <i class="icon-custom icon-method"></i> Methods</li>
77
+ <li class="method public "><a href="#mla_process_stream_image" title="mla_process_stream_image :: Process Imagick image stream request, e.g., for a PDF thumbnail"><span class="description">Process Imagick image stream request, e.g., for a PDF thumbnail</span><pre>mla_process_stream_image()</pre></a></li>
78
+ <li class="nav-header private">» Private</li>
79
+ <li class="method private "><a href="#_get_temp_file" title="_get_temp_file :: Generate a unique, writable file in the temporary directory"><span class="description">Generate a unique, writable file in the temporary directory</span><pre>_get_temp_file()</pre></a></li>
80
+ <li class="method private "><a href="#_ghostscript_convert" title="_ghostscript_convert :: Direct Ghostscript file conversion"><span class="description">Direct Ghostscript file conversion</span><pre>_ghostscript_convert()</pre></a></li>
81
+ <li class="method private "><a href="#_mla_die" title="_mla_die :: Abort the operation and exit"><span class="description">Abort the operation and exit</span><pre>_mla_die()</pre></a></li>
82
+ <li class="method private "><a href="#_prepare_image" title="_prepare_image :: Prepare the image for output, scaling and flattening as required"><span class="description">Prepare the image for output, scaling and flattening as required</span><pre>_prepare_image()</pre></a></li>
83
+ <li class="nav-header">
84
+ <i class="icon-custom icon-property"></i> Properties</li>
85
+ <li class="nav-header protected">» Protected</li>
86
+ <li class="property protected "><a href="#%24image" title="$image :: Imagick object for the image to be streamed"><span class="description">Imagick object for the image to be streamed</span><pre>$image</pre></a></li>
87
+ </ul>
88
+ </div>
89
+ <div class="span8">
90
+ <a name="%5CMLAStreamImage" id="\MLAStreamImage"></a><ul class="breadcrumb">
91
+ <li>
92
+ <a href="../index.html"><i class="icon-custom icon-class"></i></a><span class="divider">\</span>
93
+ </li>
94
+ <li><a href="../namespaces/global.html">global</a></li>
95
+ <li class="active">
96
+ <span class="divider">\</span><a href="../classes/MLAStreamImage.html">MLAStreamImage</a>
97
+ </li>
98
+ </ul>
99
+ <div href="../classes/MLAStreamImage.html" class="element class">
100
+ <p class="short_description">Class MLA (Media Library Assistant) Stream Image provides PDF thumbnails.</p>
101
+ <div class="details">
102
+ <p class="long_description"></p>
103
+ <table class="table table-bordered">
104
+ <tr>
105
+ <th>package</th>
106
+ <td><a href="../packages/Media%20Library%20Assistant.html">Media Library Assistant</a></td>
107
+ </tr>
108
+ <tr>
109
+ <th>since</th>
110
+ <td>2.10</td>
111
+ </tr>
112
+ </table>
113
+ <h3>
114
+ <i class="icon-custom icon-method"></i> Methods</h3>
115
+ <a name="_wp_image_editors_filter" id="_wp_image_editors_filter"></a><div class="element clickable method public _wp_image_editors_filter" data-toggle="collapse" data-target="._wp_image_editors_filter .collapse">
116
+ <h2>Process Imagick image stream request, e.g., for a PDF thumbnail</h2>
117
+ <pre>_wp_image_editors_filter(array $editors) : void</pre>
118
+ <div class="labels"></div>
119
+ <div class="row collapse"><div class="detail-description">
120
+ <p class="long_description"><p>Requires _wpnonce and mla_stream_file (relative to wp_upload_dir ) in $_REQUEST; optional parameters are:
121
+ mla_stream_width, mla_stream_height, mla_stream_frame, mla_stream_type</p></p>
122
+ <table class="table table-bordered"><tr>
123
+ <th>since</th>
124
+ <td>2.10</td>
125
+ </tr></table>
126
+ <h3>Parameters</h3>
127
+ <div class="subelement argument">
128
+ <h4>$editors</h4>
129
+ <code>array</code><p>List of the implemented image editor classes</p></div>
130
+ </div></div>
131
+ </div>
132
+ <a name="initialize" id="initialize"></a><div class="element clickable method public initialize" data-toggle="collapse" data-target=".initialize .collapse">
133
+ <h2>Load the plugin's Ajax handler</h2>
134
+ <pre>initialize() : void</pre>
135
+ <div class="labels"></div>
136
+ <div class="row collapse"><div class="detail-description">
137
+ <p class="long_description"></p>
138
+ <table class="table table-bordered"><tr>
139
+ <th>since</th>
140
+ <td>2.10</td>
141
+ </tr></table>
142
+ </div></div>
143
+ </div>
144
+ <a name="_process_mla_stream_image" id="_process_mla_stream_image"></a><div class="element clickable method private _process_mla_stream_image" data-toggle="collapse" data-target="._process_mla_stream_image .collapse">
145
+ <h2>Process Imagick image stream request, e.g., for a PDF thumbnail</h2>
146
+ <pre>_process_mla_stream_image() : void</pre>
147
+ <div class="labels"></div>
148
+ <div class="row collapse"><div class="detail-description">
149
+ <p class="long_description"><p>Requires _wpnonce and mla_stream_file (relative to wp_upload_dir ) in $_REQUEST;
150
+ optional $_REQUEST parameters are:
151
+ mla_stream_width, mla_stream_height, mla_stream_frame,
152
+ mla_stream_resolution, mla_stream_quality, mla_stream_type</p></p>
153
+ <table class="table table-bordered"><tr>
154
+ <th>since</th>
155
+ <td>2.10</td>
156
+ </tr></table>
157
+ </div></div>
158
+ </div>
159
+ <h3>
160
+ <i class="icon-custom icon-property"></i> Properties</h3>
161
+ <a name="%24mla_imagick_args" id="$mla_imagick_args"> </a><div class="element clickable property public $mla_imagick_args" data-toggle="collapse" data-target=".$mla_imagick_args .collapse">
162
+ <h2>Holds Imagick image resolution for class MLA_Image_Editor</h2>
163
+ <pre>$mla_imagick_args : array</pre>
164
+ <div class="labels"></div>
165
+ <div class="row collapse"><div class="detail-description">
166
+ <p class="long_description"></p>
167
+ <table class="table table-bordered"><tr>
168
+ <th>since</th>
169
+ <td>2.10</td>
170
+ </tr></table>
171
+ </div></div>
172
+ </div>
173
+ <h3>
174
+ <i class="icon-custom icon-constant"></i> Constants</h3>
175
+ <a name="MLA_ADMIN_NONCE" id="MLA_ADMIN_NONCE"> </a><div class="element clickable constant MLA_ADMIN_NONCE" data-toggle="collapse" data-target=".MLA_ADMIN_NONCE .collapse">
176
+ <h2>Action name; uniquely identifies the nonce</h2>
177
+ <pre>MLA_ADMIN_NONCE : string</pre>
178
+ <div class="labels"></div>
179
+ <div class="row collapse"><div class="detail-description">
180
+ <p class="long_description"></p>
181
+ <table class="table table-bordered"><tr>
182
+ <th>since</th>
183
+ <td>2.10</td>
184
+ </tr></table>
185
+ </div></div>
186
+ </div>
187
+ </div>
188
+ </div>
189
+ <a name="%5CMLAStreamImage" id="\MLAStreamImage"></a><ul class="breadcrumb">
190
+ <li>
191
+ <a href="../index.html"><i class="icon-custom icon-class"></i></a><span class="divider">\</span>
192
+ </li>
193
+ <li><a href="../namespaces/global.html">global</a></li>
194
+ <li class="active">
195
+ <span class="divider">\</span><a href="../classes/MLAStreamImage.html">MLAStreamImage</a>
196
+ </li>
197
+ </ul>
198
+ <div href="../classes/MLAStreamImage.html" class="element class">
199
+ <p class="short_description">Class MLA (Media Library Assistant) Stream Image provides PDF thumbnails
200
+ for the [mla_gallery] mla_viewer.</p>
201
+ <div class="details">
202
+ <p class="long_description"></p>
203
+ <table class="table table-bordered">
204
+ <tr>
205
+ <th>package</th>
206
+ <td><a href="../packages/Media%20Library%20Assistant.html">Media Library Assistant</a></td>
207
+ </tr>
208
+ <tr>
209
+ <th>since</th>
210
+ <td>2.10</td>
211
+ </tr>
212
+ </table>
213
+ <h3>
214
+ <i class="icon-custom icon-method"></i> Methods</h3>
215
+ <a name="mla_process_stream_image" id="mla_process_stream_image"></a><div class="element clickable method public mla_process_stream_image" data-toggle="collapse" data-target=".mla_process_stream_image .collapse">
216
+ <h2>Process Imagick image stream request, e.g., for a PDF thumbnail</h2>
217
+ <pre>mla_process_stream_image() : void</pre>
218
+ <div class="labels"></div>
219
+ <div class="row collapse"><div class="detail-description">
220
+ <p class="long_description"><p>Requires mla_stream_file (relative to wp_upload_dir ) in $_REQUEST;
221
+ optional $_REQUEST parameters are:
222
+ mla_stream_width, mla_stream_height, mla_stream_frame, mla_stream_resolution,
223
+ mla_stream_quality, mla_stream_type, mla_stream_fit, mla_ghostscript_path</p></p>
224
+ <table class="table table-bordered"><tr>
225
+ <th>since</th>
226
+ <td>2.10</td>
227
+ </tr></table>
228
+ </div></div>
229
+ </div>
230
+ <a name="_get_temp_file" id="_get_temp_file"></a><div class="element clickable method private _get_temp_file" data-toggle="collapse" data-target="._get_temp_file .collapse">
231
+ <h2>Generate a unique, writable file in the temporary directory</h2>
232
+ <pre>_get_temp_file(string $extension) : string</pre>
233
+ <div class="labels"></div>
234
+ <div class="row collapse"><div class="detail-description">
235
+ <p class="long_description"></p>
236
+ <table class="table table-bordered"><tr>
237
+ <th>since</th>
238
+ <td>2.10</td>
239
+ </tr></table>
240
+ <h3>Parameters</h3>
241
+ <div class="subelement argument">
242
+ <h4>$extension</h4>
243
+ <code>string</code><p>File extension for the temporary file</p></div>
244
+ <h3>Returns</h3>
245
+ <div class="subelement response">
246
+ <code>string</code>Writable path and file name.</div>
247
+ </div></div>
248
+ </div>
249
+ <a name="_ghostscript_convert" id="_ghostscript_convert"></a><div class="element clickable method private _ghostscript_convert" data-toggle="collapse" data-target="._ghostscript_convert .collapse">
250
+ <h2>Direct Ghostscript file conversion</h2>
251
+ <pre>_ghostscript_convert(string $file, string $frame, string $resolution, string $output_type, string $explicit_path) : boolean</pre>
252
+ <div class="labels"></div>
253
+ <div class="row collapse"><div class="detail-description">
254
+ <p class="long_description"></p>
255
+ <table class="table table-bordered"><tr>
256
+ <th>since</th>
257
+ <td>2.10</td>
258
+ </tr></table>
259
+ <h3>Parameters</h3>
260
+ <div class="subelement argument">
261
+ <h4>$file</h4>
262
+ <code>string</code><p>Input file, e.g., a PDF document</p></div>
263
+ <div class="subelement argument">
264
+ <h4>$frame</h4>
265
+ <code>string</code><p>Page/frame within the file, zero-based</p>
266
+ </div>
267
+ <div class="subelement argument">
268
+ <h4>$resolution</h4>
269
+ <code>string</code><p>Output file DPI. Default 72.</p></div>
270
+ <div class="subelement argument">
271
+ <h4>$output_type</h4>
272
+ <code>string</code><p>Output MIME type; 'image/jpeg' or 'image/png'.</p>
273
+ </div>
274
+ <div class="subelement argument">
275
+ <h4>$explicit_path</h4>
276
+ <code>string</code><p>Non-standard location to override default search, e.g., 'C:\Program Files (x86)\gs\gs9.15\bin\gswin32c.exe'</p>
277
+ </div>
278
+ <h3>Returns</h3>
279
+ <div class="subelement response">
280
+ <code>boolean</code>true if conversion succeeds else false</div>
281
+ </div></div>
282
+ </div>
283
+ <a name="_mla_die" id="_mla_die"></a><div class="element clickable method private _mla_die" data-toggle="collapse" data-target="._mla_die .collapse">
284
+ <h2>Abort the operation and exit</h2>
285
+ <pre>_mla_die(string $message, string $title, integer $response) : void</pre>
286
+ <div class="labels"></div>
287
+ <div class="row collapse"><div class="detail-description">
288
+ <p class="long_description"></p>
289
+ <table class="table table-bordered"><tr>
290
+ <th>since</th>
291
+ <td>2.10</td>
292
+ </tr></table>
293
+ <h3>Parameters</h3>
294
+ <div class="subelement argument">
295
+ <h4>$message</h4>
296
+ <code>string</code><p>Error message.</p></div>
297
+ <div class="subelement argument">
298
+ <h4>$title</h4>
299
+ <code>string</code><p>Optional. Error title. Default empty.</p></div>
300
+ <div class="subelement argument">
301
+ <h4>$response</h4>
302
+ <code>integer</code><p>Optional. HTML response code. Default 500.</p></div>
303
+ </div></div>
304
+ </div>
305
+ <a name="_prepare_image" id="_prepare_image"></a><div class="element clickable method private _prepare_image" data-toggle="collapse" data-target="._prepare_image .collapse">
306
+ <h2>Prepare the image for output, scaling and flattening as required</h2>
307
+ <pre>_prepare_image(integer $width, integer $height, boolean $best_fit, string $type, integer $quality) : void</pre>
308
+ <div class="labels"></div>
309
+ <div class="row collapse"><div class="detail-description">
310
+ <p class="long_description"></p>
311
+ <table class="table table-bordered"><tr>
312
+ <th>since</th>
313
+ <td>2.10</td>
314
+ </tr></table>
315
+ <h3>Parameters</h3>
316
+ <div class="subelement argument">
317
+ <h4>$width</h4>
318
+ <code>integer</code><p>zero or new width</p></div>
319
+ <div class="subelement argument">
320
+ <h4>$height</h4>
321
+ <code>integer</code><p>zero or new height</p></div>
322
+ <div class="subelement argument">
323
+ <h4>$best_fit</h4>
324
+ <code>boolean</code><p>proportional fit (true) or exact fit (false)</p>
325
+ </div>
326
+ <div class="subelement argument">
327
+ <h4>$type</h4>
328
+ <code>string</code><p>output MIME type</p></div>
329
+ <div class="subelement argument">
330
+ <h4>$quality</h4>
331
+ <code>integer</code><p>compression quality; 1 - 100</p>
332
+ </div>
333
+ </div></div>
334
+ </div>
335
+ <h3>
336
+ <i class="icon-custom icon-property"></i> Properties</h3>
337
+ <a name="%24image" id="$image"> </a><div class="element clickable property protected $image" data-toggle="collapse" data-target=".$image .collapse">
338
+ <h2>Imagick object for the image to be streamed</h2>
339
+ <pre>$image : \Imagick</pre>
340
+ <div class="labels"></div>
341
+ <div class="row collapse"><div class="detail-description">
342
+ <p class="long_description"></p>
343
+ <table class="table table-bordered"><tr>
344
+ <th>since</th>
345
+ <td>2.10</td>
346
+ </tr></table>
347
+ </div></div>
348
+ </div>
349
+ </div>
350
+ </div>
351
+ </div>
352
+ </div>
353
+ <div class="row"><footer class="span12">
354
+ Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
355
+ Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
356
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
357
+ </div>
358
+ </body>
359
+ </html>
phpDocs/classes/MLATest.html CHANGED
@@ -165,7 +165,7 @@ to ensure the plugin can run in the current WordPress envrionment.</p>
165
  <div class="row"><footer class="span12">
166
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
167
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
168
- generated on 2015-02-17T16:36:13-08:00.<br></footer></div>
169
  </div>
170
  </body>
171
  </html>
165
  <div class="row"><footer class="span12">
166
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
167
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
168
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
169
  </div>
170
  </body>
171
  </html>
phpDocs/classes/MLATextWidget.html CHANGED
@@ -178,7 +178,7 @@
178
  <div class="row"><footer class="span12">
179
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
180
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
181
- generated on 2015-02-17T16:36:12-08:00.<br></footer></div>
182
  </div>
183
  </body>
184
  </html>
178
  <div class="row"><footer class="span12">
179
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
180
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
181
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
182
  </div>
183
  </body>
184
  </html>
phpDocs/classes/MLA_Checklist_Walker.html CHANGED
@@ -163,7 +163,7 @@ Class Walker is defined in /wp-includes/class-wp-walker.php.</p></p>
163
  <div class="row"><footer class="span12">
164
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
165
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
166
- generated on 2015-02-17T16:36:12-08:00.<br></footer></div>
167
  </div>
168
  </body>
169
  </html>
163
  <div class="row"><footer class="span12">
164
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
165
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
166
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
167
  </div>
168
  </body>
169
  </html>
phpDocs/classes/MLA_Image_Editor.html ADDED
@@ -0,0 +1,248 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html><html xmlns:date="http://exslt.org/dates-and-times" lang="en">
2
+ <head>
3
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4
+ <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">
5
+ <meta charset="utf-8">
6
+ <title>Media Library Assistant » \MLA_Image_Editor</title>
7
+ <meta name="author" content="Mike van Riel">
8
+ <meta name="description" content="">
9
+ <link href="../css/template.css" rel="stylesheet" media="all">
10
+ <script src="../js/jquery-1.7.1.min.js" type="text/javascript"></script><script src="../js/jquery-ui-1.8.2.custom.min.js" type="text/javascript"></script><script src="../js/jquery.mousewheel.min.js" type="text/javascript"></script><script src="../js/bootstrap.js" type="text/javascript"></script><script src="../js/template.js" type="text/javascript"></script><script src="../js/prettify/prettify.min.js" type="text/javascript"></script><link rel="shortcut icon" href="../img/favicon.ico">
11
+ <link rel="apple-touch-icon" href="../img/apple-touch-icon.png">
12
+ <link rel="apple-touch-icon" sizes="72x72" href="../img/apple-touch-icon-72x72.png">
13
+ <link rel="apple-touch-icon" sizes="114x114" href="../img/apple-touch-icon-114x114.png">
14
+ </head>
15
+ <body>
16
+ <div class="navbar navbar-fixed-top">
17
+ <div class="navbar-inner"><div class="container">
18
+ <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></a><a class="brand" href="../index.html">Media Library Assistant</a><div class="nav-collapse"><ul class="nav">
19
+ <li class="dropdown">
20
+ <a href="#api" class="dropdown-toggle" data-toggle="dropdown">
21
+ API Documentation <b class="caret"></b></a><ul class="dropdown-menu">
22
+ <li><a>Packages</a></li>
23
+ <li><a href="../packages/Media%20Library%20Assistant.html"><i class="icon-folder-open"></i> Media Library Assistant</a></li>
24
+ </ul>
25
+ </li>
26
+ <li class="dropdown" id="charts-menu">
27
+ <a href="#charts" class="dropdown-toggle" data-toggle="dropdown">
28
+ Charts <b class="caret"></b></a><ul class="dropdown-menu"><li><a href="../graph_class.html"><i class="icon-list-alt"></i> Class hierarchy diagram</a></li></ul>
29
+ </li>
30
+ <li class="dropdown" id="reports-menu">
31
+ <a href="#reports" class="dropdown-toggle" data-toggle="dropdown">
32
+ Reports <b class="caret"></b></a><ul class="dropdown-menu">
33
+ <li><a href="../errors.html"><i class="icon-remove-sign"></i> Errors 
34
+ <span class="label label-info">0</span></a></li>
35
+ <li><a href="../markers.html"><i class="icon-map-marker"></i> Markers 
36
+ <ul><li>todo 
37
+ <span class="label label-info">1</span>
38
+ </li></ul></a></li>
39
+ <li><a href="../deprecated.html"><i class="icon-stop"></i> Deprecated elements 
40
+ <span class="label label-info">0</span></a></li>
41
+ </ul>
42
+ </li>
43
+ </ul></div>
44
+ </div></div>
45
+ <div class="go_to_top"><a href="#___" style="color: inherit">Back to top  <i class="icon-upload icon-white"></i></a></div>
46
+ </div>
47
+ <div id="___" class="container">
48
+ <noscript><div class="alert alert-warning">
49
+ Javascript is disabled; several features are only available
50
+ if Javascript is enabled.
51
+ </div></noscript>
52
+ <div class="row">
53
+ <div class="span4">
54
+ <span class="btn-group visibility" data-toggle="buttons-checkbox"><button class="btn public active" title="Show public elements">Public</button><button class="btn protected" title="Show protected elements">Protected</button><button class="btn private" title="Show private elements">Private</button><button class="btn inherited active" title="Show inherited elements">Inherited</button></span><div class="btn-group view pull-right" data-toggle="buttons-radio">
55
+ <button class="btn details" title="Show descriptions and method names"><i class="icon-list"></i></button><button class="btn simple" title="Show only method names"><i class="icon-align-justify"></i></button>
56
+ </div>
57
+ <ul class="side-nav nav nav-list">
58
+ <li class="nav-header">
59
+ <i class="icon-custom icon-method"></i> Methods</li>
60
+ <li class="method public "><a href="#load" title="load :: Loads image from $this-&gt;file into new Imagick Object."><span class="description">Loads image from $this-&gt;file into new Imagick Object.</span><pre>load()</pre></a></li>
61
+ <li class="method public "><a href="#mla_prepare_image" title="mla_prepare_image :: Prepare the image for output, scaling and flattening as required"><span class="description">Prepare the image for output, scaling and flattening as required</span><pre>mla_prepare_image()</pre></a></li>
62
+ <li class="method public "><a href="#mla_setIteratorIndex" title="mla_setIteratorIndex :: Set the iterator position"><span class="description">Set the iterator position</span><pre>mla_setIteratorIndex()</pre></a></li>
63
+ <li class="method public "><a href="#stream" title="stream :: Streams current image to browser."><span class="description">Streams current image to browser.</span><pre>stream()</pre></a></li>
64
+ <li class="nav-header private">» Private</li>
65
+ <li class="method private "><a href="#_ghostscript_convert" title="_ghostscript_convert :: Direct Ghostscript file conversion"><span class="description">Direct Ghostscript file conversion</span><pre>_ghostscript_convert()</pre></a></li>
66
+ </ul>
67
+ </div>
68
+ <div class="span8">
69
+ <a name="%5CMLA_Image_Editor" id="\MLA_Image_Editor"></a><ul class="breadcrumb">
70
+ <li>
71
+ <a href="../index.html"><i class="icon-custom icon-class"></i></a><span class="divider">\</span>
72
+ </li>
73
+ <li><a href="../namespaces/global.html">global</a></li>
74
+ <li class="active">
75
+ <span class="divider">\</span><a href="../classes/MLA_Image_Editor.html">MLA_Image_Editor</a>
76
+ </li>
77
+ </ul>
78
+ <div href="../classes/MLA_Image_Editor.html" class="element class">
79
+ <p class="short_description">MLA Image Editor Class for Image Manipulation through Imagick PHP Module</p>
80
+ <div class="details">
81
+ <p class="long_description"></p>
82
+ <table class="table table-bordered">
83
+ <tr>
84
+ <th>since</th>
85
+ <td>2.10</td>
86
+ </tr>
87
+ <tr>
88
+ <th>package</th>
89
+ <td><a href="../packages/Media%20Library%20Assistant.html">Media Library Assistant</a></td>
90
+ </tr>
91
+ <tr>
92
+ <th>uses</th>
93
+ <td>\global\WP_Image_Editor_Imagick</td>
94
+ </tr>
95
+ </table>
96
+ <h3>
97
+ <i class="icon-custom icon-method"></i> Methods</h3>
98
+ <a name="load" id="load"></a><div class="element clickable method public load" data-toggle="collapse" data-target=".load .collapse">
99
+ <h2>Loads image from $this-&gt;file into new Imagick Object.</h2>
100
+ <pre>load() : boolean | \WP_Error</pre>
101
+ <div class="labels"></div>
102
+ <div class="row collapse"><div class="detail-description">
103
+ <p class="long_description"><p>Sets image resolution and frame from $imagick_args before loading the file.</p></p>
104
+ <table class="table table-bordered">
105
+ <tr>
106
+ <th>since</th>
107
+ <td>2.10</td>
108
+ </tr>
109
+ <tr>
110
+ <th>access</th>
111
+ <td>protected</td>
112
+ </tr>
113
+ </table>
114
+ <h3>Returns</h3>
115
+ <div class="subelement response">
116
+ <code>boolean</code><code>\WP_Error</code>True if loaded; WP_Error on failure.</div>
117
+ </div></div>
118
+ </div>
119
+ <a name="mla_prepare_image" id="mla_prepare_image"></a><div class="element clickable method public mla_prepare_image" data-toggle="collapse" data-target=".mla_prepare_image .collapse">
120
+ <h2>Prepare the image for output, scaling and flattening as required</h2>
121
+ <pre>mla_prepare_image(integer $width, integer $height, boolean $best_fit, string $type, integer $quality) : void</pre>
122
+ <div class="labels"></div>
123
+ <div class="row collapse"><div class="detail-description">
124
+ <p class="long_description"></p>
125
+ <table class="table table-bordered">
126
+ <tr>
127
+ <th>since</th>
128
+ <td>2.10</td>
129
+ </tr>
130
+ <tr>
131
+ <th>access</th>
132
+ <td>public</td>
133
+ </tr>
134
+ </table>
135
+ <h3>Parameters</h3>
136
+ <div class="subelement argument">
137
+ <h4>$width</h4>
138
+ <code>integer</code><p>zero or new width</p></div>
139
+ <div class="subelement argument">
140
+ <h4>$height</h4>
141
+ <code>integer</code><p>zero or new height</p></div>
142
+ <div class="subelement argument">
143
+ <h4>$best_fit</h4>
144
+ <code>boolean</code><p>proportional fit (true) or exact fit (false)</p>
145
+ </div>
146
+ <div class="subelement argument">
147
+ <h4>$type</h4>
148
+ <code>string</code><p>output MIME type</p></div>
149
+ <div class="subelement argument">
150
+ <h4>$quality</h4>
151
+ <code>integer</code><p>compression quality; 1 - 100</p>
152
+ </div>
153
+ </div></div>
154
+ </div>
155
+ <a name="mla_setIteratorIndex" id="mla_setIteratorIndex"></a><div class="element clickable method public mla_setIteratorIndex" data-toggle="collapse" data-target=".mla_setIteratorIndex .collapse">
156
+ <h2>Set the iterator position</h2>
157
+ <pre>mla_setIteratorIndex(integer $index) : boolean</pre>
158
+ <div class="labels"></div>
159
+ <div class="row collapse"><div class="detail-description">
160
+ <p class="long_description"></p>
161
+ <table class="table table-bordered">
162
+ <tr>
163
+ <th>since</th>
164
+ <td>2.10</td>
165
+ </tr>
166
+ <tr>
167
+ <th>access</th>
168
+ <td>public</td>
169
+ </tr>
170
+ </table>
171
+ <h3>Parameters</h3>
172
+ <div class="subelement argument">
173
+ <h4>$index</h4>
174
+ <code>integer</code><p>frame/page number</p>
175
+ </div>
176
+ <h3>Returns</h3>
177
+ <div class="subelement response">
178
+ <code>boolean</code>success/failure</div>
179
+ </div></div>
180
+ </div>
181
+ <a name="stream" id="stream"></a><div class="element clickable method public stream" data-toggle="collapse" data-target=".stream .collapse">
182
+ <h2>Streams current image to browser.</h2>
183
+ <pre>stream(string $mime_type) : boolean | \WP_Error</pre>
184
+ <div class="labels"></div>
185
+ <div class="row collapse"><div class="detail-description">
186
+ <p class="long_description"></p>
187
+ <table class="table table-bordered">
188
+ <tr>
189
+ <th>since</th>
190
+ <td>2.10</td>
191
+ </tr>
192
+ <tr>
193
+ <th>access</th>
194
+ <td>public</td>
195
+ </tr>
196
+ </table>
197
+ <h3>Parameters</h3>
198
+ <div class="subelement argument">
199
+ <h4>$mime_type</h4>
200
+ <code>string</code>
201
+ </div>
202
+ <h3>Returns</h3>
203
+ <div class="subelement response">
204
+ <code>boolean</code><code>\WP_Error</code>
205
+ </div>
206
+ </div></div>
207
+ </div>
208
+ <a name="_ghostscript_convert" id="_ghostscript_convert"></a><div class="element clickable method private _ghostscript_convert" data-toggle="collapse" data-target="._ghostscript_convert .collapse">
209
+ <h2>Direct Ghostscript file conversion</h2>
210
+ <pre>_ghostscript_convert(string $file, string $frame, string $resolution, string $output_type) : boolean</pre>
211
+ <div class="labels"></div>
212
+ <div class="row collapse"><div class="detail-description">
213
+ <p class="long_description"></p>
214
+ <table class="table table-bordered"><tr>
215
+ <th>since</th>
216
+ <td>2.10</td>
217
+ </tr></table>
218
+ <h3>Parameters</h3>
219
+ <div class="subelement argument">
220
+ <h4>$file</h4>
221
+ <code>string</code><p>Input file, e.g., a PDF document</p></div>
222
+ <div class="subelement argument">
223
+ <h4>$frame</h4>
224
+ <code>string</code><p>Page/frame within the file, zero-based</p>
225
+ </div>
226
+ <div class="subelement argument">
227
+ <h4>$resolution</h4>
228
+ <code>string</code><p>Output file DPI. Default 72.</p></div>
229
+ <div class="subelement argument">
230
+ <h4>$output_type</h4>
231
+ <code>string</code><p>Output MIME type; 'image/jpeg' or 'image/png'.</p>
232
+ </div>
233
+ <h3>Returns</h3>
234
+ <div class="subelement response">
235
+ <code>boolean</code>true if conversion succeeds else false</div>
236
+ </div></div>
237
+ </div>
238
+ </div>
239
+ </div>
240
+ </div>
241
+ </div>
242
+ <div class="row"><footer class="span12">
243
+ Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
244
+ Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
245
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
246
+ </div>
247
+ </body>
248
+ </html>
phpDocs/classes/MLA_List_Table.html CHANGED
@@ -60,7 +60,6 @@
60
  <li class="method public "><a href="#__construct" title="__construct :: Initializes some properties from $_REQUEST variables, then
61
  calls the parent constructor to set some default configs."><span class="description">Initializes some properties from $_REQUEST variables, then
62
  calls the parent constructor to set some default configs.</span><pre>__construct()</pre></a></li>
63
- <li class="method public "><a href="#_get_view" title="_get_view :: Returns HTML markup for one view that can be used with this table"><span class="description">Returns HTML markup for one view that can be used with this table</span><pre>_get_view()</pre></a></li>
64
  <li class="method public "><a href="#column_ID_parent" title="column_ID_parent :: Supply the content for a custom column"><span class="description">Supply the content for a custom column</span><pre>column_ID_parent()</pre></a></li>
65
  <li class="method public "><a href="#column_alt_text" title="column_alt_text :: Supply the content for a custom column"><span class="description">Supply the content for a custom column</span><pre>column_alt_text()</pre></a></li>
66
  <li class="method public "><a href="#column_attached_to" title="column_attached_to :: Supply the content for a custom column"><span class="description">Supply the content for a custom column</span><pre>column_attached_to()</pre></a></li>
@@ -116,7 +115,9 @@ and the value is db column (or other criteria) to sort by.</span><pre>get_sortab
116
  <li class="method protected "><a href="#_build_rollover_actions" title="_build_rollover_actions :: Add rollover actions to exactly one of the following displayed columns:
117
  'ID_parent', 'title_name', 'post_title', 'post_name'"><span class="description">Add rollover actions to exactly one of the following displayed columns:
118
  'ID_parent', 'title_name', 'post_title', 'post_name'</span><pre>_build_rollover_actions()</pre></a></li>
119
- <li class="method protected "><a href="#_format_post_status" title="_format_post_status :: Translate post_status 'future', 'pending' and 'draft' to label"><span class="description">Translate post_status 'future', 'pending' and 'draft' to label</span><pre>_format_post_status()</pre></a></li>
 
 
120
  <li class="nav-header">
121
  <i class="icon-custom icon-property"></i> Properties</li>
122
  <li class="nav-header protected">» Protected</li>
@@ -166,28 +167,6 @@ calls the parent constructor to set some default configs.</h2>
166
  </tr></table>
167
  </div></div>
168
  </div>
169
- <a name="_get_view" id="_get_view"></a><div class="element clickable method public _get_view" data-toggle="collapse" data-target="._get_view .collapse">
170
- <h2>Returns HTML markup for one view that can be used with this table</h2>
171
- <pre>_get_view(string $view_slug, string $current_view) : string</pre>
172
- <div class="labels"></div>
173
- <div class="row collapse"><div class="detail-description">
174
- <p class="long_description"></p>
175
- <table class="table table-bordered"><tr>
176
- <th>since</th>
177
- <td>1.40</td>
178
- </tr></table>
179
- <h3>Parameters</h3>
180
- <div class="subelement argument">
181
- <h4>$view_slug</h4>
182
- <code>string</code><p>View slug, key to MLA_POST_MIME_TYPES array</p></div>
183
- <div class="subelement argument">
184
- <h4>$current_view</h4>
185
- <code>string</code><p>Slug for current view</p></div>
186
- <h3>Returns</h3>
187
- <div class="subelement response">
188
- <code>string</code>| false HTML for link to display the view, false if count = zero</div>
189
- </div></div>
190
- </div>
191
  <a name="column_ID_parent" id="column_ID_parent"></a><div class="element clickable method public column_ID_parent" data-toggle="collapse" data-target=".column_ID_parent .collapse">
192
  <h2>Supply the content for a custom column</h2>
193
  <pre>column_ID_parent(array $item) : string</pre>
@@ -1085,7 +1064,7 @@ but uses the output of wp_count_attachments() as input.</p></p>
1085
  </div></div>
1086
  </div>
1087
  <a name="_format_post_status" id="_format_post_status"></a><div class="element clickable method protected _format_post_status" data-toggle="collapse" data-target="._format_post_status .collapse">
1088
- <h2>Translate post_status 'future', 'pending' and 'draft' to label</h2>
1089
  <pre>_format_post_status(string $post_status) : string</pre>
1090
  <div class="labels"></div>
1091
  <div class="row collapse"><div class="detail-description">
@@ -1103,6 +1082,28 @@ but uses the output of wp_count_attachments() as input.</p></p>
1103
  <code>string</code>Status label or empty string</div>
1104
  </div></div>
1105
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1106
  <h3>
1107
  <i class="icon-custom icon-property"></i> Properties</h3>
1108
  <a name="%24currently_hidden" id="$currently_hidden"> </a><div class="element clickable property protected $currently_hidden" data-toggle="collapse" data-target=".$currently_hidden .collapse">
@@ -1196,7 +1197,7 @@ MLA_List_Table::mla_admin_init_action.</p></p>
1196
  <div class="row"><footer class="span12">
1197
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
1198
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
1199
- generated on 2015-02-17T16:36:12-08:00.<br></footer></div>
1200
  </div>
1201
  </body>
1202
  </html>
60
  <li class="method public "><a href="#__construct" title="__construct :: Initializes some properties from $_REQUEST variables, then
61
  calls the parent constructor to set some default configs."><span class="description">Initializes some properties from $_REQUEST variables, then
62
  calls the parent constructor to set some default configs.</span><pre>__construct()</pre></a></li>
 
63
  <li class="method public "><a href="#column_ID_parent" title="column_ID_parent :: Supply the content for a custom column"><span class="description">Supply the content for a custom column</span><pre>column_ID_parent()</pre></a></li>
64
  <li class="method public "><a href="#column_alt_text" title="column_alt_text :: Supply the content for a custom column"><span class="description">Supply the content for a custom column</span><pre>column_alt_text()</pre></a></li>
65
  <li class="method public "><a href="#column_attached_to" title="column_attached_to :: Supply the content for a custom column"><span class="description">Supply the content for a custom column</span><pre>column_attached_to()</pre></a></li>
115
  <li class="method protected "><a href="#_build_rollover_actions" title="_build_rollover_actions :: Add rollover actions to exactly one of the following displayed columns:
116
  'ID_parent', 'title_name', 'post_title', 'post_name'"><span class="description">Add rollover actions to exactly one of the following displayed columns:
117
  'ID_parent', 'title_name', 'post_title', 'post_name'</span><pre>_build_rollover_actions()</pre></a></li>
118
+ <li class="method protected "><a href="#_format_post_status" title="_format_post_status :: Translate post_status 'future', 'pending', 'draft' and 'trash' to label"><span class="description">Translate post_status 'future', 'pending', 'draft' and 'trash' to label</span><pre>_format_post_status()</pre></a></li>
119
+ <li class="nav-header private">» Private</li>
120
+ <li class="method private "><a href="#_get_view" title="_get_view :: Returns HTML markup for one view that can be used with this table"><span class="description">Returns HTML markup for one view that can be used with this table</span><pre>_get_view()</pre></a></li>
121
  <li class="nav-header">
122
  <i class="icon-custom icon-property"></i> Properties</li>
123
  <li class="nav-header protected">» Protected</li>
167
  </tr></table>
168
  </div></div>
169
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
170
  <a name="column_ID_parent" id="column_ID_parent"></a><div class="element clickable method public column_ID_parent" data-toggle="collapse" data-target=".column_ID_parent .collapse">
171
  <h2>Supply the content for a custom column</h2>
172
  <pre>column_ID_parent(array $item) : string</pre>
1064
  </div></div>
1065
  </div>
1066
  <a name="_format_post_status" id="_format_post_status"></a><div class="element clickable method protected _format_post_status" data-toggle="collapse" data-target="._format_post_status .collapse">
1067
+ <h2>Translate post_status 'future', 'pending', 'draft' and 'trash' to label</h2>
1068
  <pre>_format_post_status(string $post_status) : string</pre>
1069
  <div class="labels"></div>
1070
  <div class="row collapse"><div class="detail-description">
1082
  <code>string</code>Status label or empty string</div>
1083
  </div></div>
1084
  </div>
1085
+ <a name="_get_view" id="_get_view"></a><div class="element clickable method private _get_view" data-toggle="collapse" data-target="._get_view .collapse">
1086
+ <h2>Returns HTML markup for one view that can be used with this table</h2>
1087
+ <pre>_get_view(string $view_slug, string $current_view) : string</pre>
1088
+ <div class="labels"></div>
1089
+ <div class="row collapse"><div class="detail-description">
1090
+ <p class="long_description"></p>
1091
+ <table class="table table-bordered"><tr>
1092
+ <th>since</th>
1093
+ <td>1.40</td>
1094
+ </tr></table>
1095
+ <h3>Parameters</h3>
1096
+ <div class="subelement argument">
1097
+ <h4>$view_slug</h4>
1098
+ <code>string</code><p>View slug, key to MLA_POST_MIME_TYPES array</p></div>
1099
+ <div class="subelement argument">
1100
+ <h4>$current_view</h4>
1101
+ <code>string</code><p>Slug for current view</p></div>
1102
+ <h3>Returns</h3>
1103
+ <div class="subelement response">
1104
+ <code>string</code>| false HTML for link to display the view, false if count = zero</div>
1105
+ </div></div>
1106
+ </div>
1107
  <h3>
1108
  <i class="icon-custom icon-property"></i> Properties</h3>
1109
  <a name="%24currently_hidden" id="$currently_hidden"> </a><div class="element clickable property protected $currently_hidden" data-toggle="collapse" data-target=".$currently_hidden .collapse">
1197
  <div class="row"><footer class="span12">
1198
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
1199
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
1200
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
1201
  </div>
1202
  </body>
1203
  </html>
phpDocs/classes/MLA_Upload_List_Table.html CHANGED
@@ -736,7 +736,7 @@ sorted by that column. This is computed each time the table is displayed.</p></p
736
  <div class="row"><footer class="span12">
737
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
738
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
739
- generated on 2015-02-17T16:36:13-08:00.<br></footer></div>
740
  </div>
741
  </body>
742
  </html>
736
  <div class="row"><footer class="span12">
737
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
738
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
739
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
740
  </div>
741
  </body>
742
  </html>
phpDocs/classes/MLA_Upload_Optional_List_Table.html CHANGED
@@ -554,7 +554,7 @@ sorted by that column. This is computed each time the table is displayed.</p></p
554
  <div class="row"><footer class="span12">
555
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
556
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
557
- generated on 2015-02-17T16:36:13-08:00.<br></footer></div>
558
  </div>
559
  </body>
560
  </html>
554
  <div class="row"><footer class="span12">
555
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
556
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
557
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
558
  </div>
559
  </body>
560
  </html>
phpDocs/classes/MLA_View_List_Table.html CHANGED
@@ -633,7 +633,7 @@ sorted by that column. This is computed each time the table is displayed.</p></p
633
  <div class="row"><footer class="span12">
634
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
635
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
636
- generated on 2015-02-17T16:36:13-08:00.<br></footer></div>
637
  </div>
638
  </body>
639
  </html>
633
  <div class="row"><footer class="span12">
634
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
635
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
636
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
637
  </div>
638
  </body>
639
  </html>
phpDocs/classes/MNA_Pad_Counts_Walker.html CHANGED
@@ -139,7 +139,7 @@ Class Walker_Category is defined in /wp-includes/category-template.php</p></p>
139
  <div class="row"><footer class="span12">
140
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
141
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
142
- generated on 2015-02-17T16:36:12-08:00.<br></footer></div>
143
  </div>
144
  </body>
145
  </html>
139
  <div class="row"><footer class="span12">
140
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
141
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
142
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
143
  </div>
144
  </body>
145
  </html>
phpDocs/deprecated.html CHANGED
@@ -67,7 +67,7 @@
67
  <div class="row"><footer class="span12">
68
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
69
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
70
- generated on 2015-02-17T16:36:13-08:00.<br></footer></div>
71
  </div>
72
  </body>
73
  </html>
67
  <div class="row"><footer class="span12">
68
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
69
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
70
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
71
  </div>
72
  </body>
73
  </html>
phpDocs/errors.html CHANGED
@@ -102,12 +102,16 @@
102
  <div class="package-contents"></div>
103
  <div class="package-contents"></div>
104
  <div class="package-contents"></div>
 
 
 
 
105
  </div>
106
  </div>
107
  <div class="row"><footer class="span12">
108
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
109
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
110
- generated on 2015-02-17T16:36:13-08:00.<br></footer></div>
111
  </div>
112
  </body>
113
  </html>
102
  <div class="package-contents"></div>
103
  <div class="package-contents"></div>
104
  <div class="package-contents"></div>
105
+ <div class="package-contents"></div>
106
+ <div class="package-contents"></div>
107
+ <div class="package-contents"></div>
108
+ <div class="package-contents"></div>
109
  </div>
110
  </div>
111
  <div class="row"><footer class="span12">
112
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
113
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
114
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
115
  </div>
116
  </body>
117
  </html>
phpDocs/graph_class.html CHANGED
@@ -64,7 +64,7 @@
64
  </script><div class="row"><footer class="span12">
65
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
66
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
67
- generated on 2015-02-17T16:36:13-08:00.<br></footer></div>
68
  </div>
69
  </body>
70
  </html>
64
  </script><div class="row"><footer class="span12">
65
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
66
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
67
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
68
  </div>
69
  </body>
70
  </html>
phpDocs/index.html CHANGED
@@ -86,7 +86,7 @@
86
  <div class="row"><footer class="span12">
87
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
88
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
89
- generated on 2015-02-17T16:36:12-08:00.<br></footer></div>
90
  </div>
91
  </body>
92
  </html>
86
  <div class="row"><footer class="span12">
87
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
88
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
89
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
90
  </div>
91
  </body>
92
  </html>
phpDocs/markers.html CHANGED
@@ -52,7 +52,7 @@
52
  <div class="row">
53
  <div class="span4"><ul class="side-nav nav nav-list">
54
  <li class="nav-header">Navigation</li>
55
- <li><a href="#includes%5Cclass-mla-data.php"><i class="icon-file"></i>includes\class-mla-data.php</a></li>
56
  </ul></div>
57
  <div class="span8">
58
  <ul class="breadcrumb">
@@ -68,8 +68,8 @@
68
  </li></ul>
69
  </div>
70
  <div id="marker-accordion"><div class="package-contents">
71
- <a name="includes%5Cclass-mla-data.php" id="includes\class-mla-data.php"></a><h3>
72
- <i class="icon-file"></i>includes\class-mla-data.php<small style="float: right;padding-right: 10px;">1</small>
73
  </h3>
74
  <div><table class="table markers table-bordered">
75
  <tr>
@@ -79,7 +79,7 @@
79
  </tr>
80
  <tr>
81
  <td>todo</td>
82
- <td>4122</td>
83
  <td>encode the rest</td>
84
  </tr>
85
  </table></div>
@@ -89,7 +89,7 @@
89
  <div class="row"><footer class="span12">
90
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
91
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
92
- generated on 2015-02-17T16:36:13-08:00.<br></footer></div>
93
  </div>
94
  </body>
95
  </html>
52
  <div class="row">
53
  <div class="span4"><ul class="side-nav nav nav-list">
54
  <li class="nav-header">Navigation</li>
55
+ <li><a href="#includes%5Cclass-mla-data-pdf.php"><i class="icon-file"></i>includes\class-mla-data-pdf.php</a></li>
56
  </ul></div>
57
  <div class="span8">
58
  <ul class="breadcrumb">
68
  </li></ul>
69
  </div>
70
  <div id="marker-accordion"><div class="package-contents">
71
+ <a name="includes%5Cclass-mla-data-pdf.php" id="includes\class-mla-data-pdf.php"></a><h3>
72
+ <i class="icon-file"></i>includes\class-mla-data-pdf.php<small style="float: right;padding-right: 10px;">1</small>
73
  </h3>
74
  <div><table class="table markers table-bordered">
75
  <tr>
79
  </tr>
80
  <tr>
81
  <td>todo</td>
82
+ <td>341</td>
83
  <td>encode the rest</td>
84
  </tr>
85
  </table></div>
89
  <div class="row"><footer class="span12">
90
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
91
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
92
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
93
  </div>
94
  </body>
95
  </html>
phpDocs/namespaces/global.html CHANGED
@@ -307,6 +307,22 @@ the Views and Uploads Settings tabs</p>
307
  <div class="details collapse"></div>
308
  <a href="../classes/MLAModal.html" class="more">« More »</a>
309
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
310
  <a name="MLAObjects" id="MLAObjects"></a><div class="element ajax clickable class" href="../classes/MLAObjects.html">
311
  <h1>MLAObjects<a href="../classes/MLAObjects.html">¶</a>
312
  </h1>
@@ -322,6 +338,13 @@ and provides functions to get and put them from/to WordPress option variables</p
322
  <div class="details collapse"></div>
323
  <a href="../classes/MLAOptions.html" class="more">« More »</a>
324
  </div>
 
 
 
 
 
 
 
325
  <a name="MLASettings" id="MLASettings"></a><div class="element ajax clickable class" href="../classes/MLASettings.html">
326
  <h1>MLASettings<a href="../classes/MLASettings.html">¶</a>
327
  </h1>
@@ -336,6 +359,21 @@ and provides functions to get and put them from/to WordPress option variables</p
336
  <div class="details collapse"></div>
337
  <a href="../classes/MLAShortcodes.html" class="more">« More »</a>
338
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
339
  <a name="MLATest" id="MLATest"></a><div class="element ajax clickable class" href="../classes/MLATest.html">
340
  <h1>MLATest<a href="../classes/MLATest.html">¶</a>
341
  </h1>
@@ -358,6 +396,13 @@ to ensure the plugin can run in the current WordPress envrionment.</p>
358
  <div class="details collapse"></div>
359
  <a href="../classes/MLA_Checklist_Walker.html" class="more">« More »</a>
360
  </div>
 
 
 
 
 
 
 
361
  <a name="MLA_List_Table" id="MLA_List_Table"></a><div class="element ajax clickable class" href="../classes/MLA_List_Table.html">
362
  <h1>MLA_List_Table<a href="../classes/MLA_List_Table.html">¶</a>
363
  </h1>
@@ -402,6 +447,12 @@ searchable database of exension/type associations for the "Uploads" admin settin
402
  <div class="labels"></div>
403
  <div class="row collapse"><div class="detail-description"><p class="long_description"></p></div></div>
404
  </div>
 
 
 
 
 
 
405
  <a name="MLA_OPTION_PREFIX" id="MLA_OPTION_PREFIX"> </a><div class="element clickable constant MLA_OPTION_PREFIX" data-toggle="collapse" data-target=".MLA_OPTION_PREFIX .collapse">
406
  <h2>Gives a unique prefix for plugin options; can be set in wp-config.php</h2>
407
  <pre>MLA_OPTION_PREFIX </pre>
@@ -432,7 +483,7 @@ searchable database of exension/type associations for the "Uploads" admin settin
432
  <div class="row"><footer class="span12">
433
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
434
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
435
- generated on 2015-02-17T16:36:12-08:00.<br></footer></div>
436
  </div>
437
  </body>
438
  </html>
307
  <div class="details collapse"></div>
308
  <a href="../classes/MLAModal.html" class="more">« More »</a>
309
  </div>
310
+ <a name="MLAMutex" id="MLAMutex"></a><div class="element ajax clickable class" href="../classes/MLAMutex.html">
311
+ <h1>MLAMutex<a href="../classes/MLAMutex.html">¶</a>
312
+ </h1>
313
+ <p class="short_description">Class MLA (Media Library Assistant) Mutex provides a simple "mutual exclusion" semaphore
314
+ for the [mla_gallery] mla_viewer=single option</p>
315
+ <div class="details collapse"></div>
316
+ <a href="../classes/MLAMutex.html" class="more">« More »</a>
317
+ </div>
318
+ <a name="MLAMutex" id="MLAMutex"></a><div class="element ajax clickable class" href="../classes/MLAMutex.html">
319
+ <h1>MLAMutex<a href="../classes/MLAMutex.html">¶</a>
320
+ </h1>
321
+ <p class="short_description">Class MLA (Media Library Assistant) Mutex provides a simple "mutual exclusion" semaphore
322
+ for the [mla_gallery] mla_viewer=single option</p>
323
+ <div class="details collapse"></div>
324
+ <a href="../classes/MLAMutex.html" class="more">« More »</a>
325
+ </div>
326
  <a name="MLAObjects" id="MLAObjects"></a><div class="element ajax clickable class" href="../classes/MLAObjects.html">
327
  <h1>MLAObjects<a href="../classes/MLAObjects.html">¶</a>
328
  </h1>
338
  <div class="details collapse"></div>
339
  <a href="../classes/MLAOptions.html" class="more">« More »</a>
340
  </div>
341
+ <a name="MLAPDF" id="MLAPDF"></a><div class="element ajax clickable class" href="../classes/MLAPDF.html">
342
+ <h1>MLAPDF<a href="../classes/MLAPDF.html">¶</a>
343
+ </h1>
344
+ <p class="short_description">Class MLA (Media Library Assistant) PDF extracts legacy and XMP meta data from PDF files</p>
345
+ <div class="details collapse"></div>
346
+ <a href="../classes/MLAPDF.html" class="more">« More »</a>
347
+ </div>
348
  <a name="MLASettings" id="MLASettings"></a><div class="element ajax clickable class" href="../classes/MLASettings.html">
349
  <h1>MLASettings<a href="../classes/MLASettings.html">¶</a>
350
  </h1>
359
  <div class="details collapse"></div>
360
  <a href="../classes/MLAShortcodes.html" class="more">« More »</a>
361
  </div>
362
+ <a name="MLAStreamImage" id="MLAStreamImage"></a><div class="element ajax clickable class" href="../classes/MLAStreamImage.html">
363
+ <h1>MLAStreamImage<a href="../classes/MLAStreamImage.html">¶</a>
364
+ </h1>
365
+ <p class="short_description">Class MLA (Media Library Assistant) Stream Image provides PDF thumbnails.</p>
366
+ <div class="details collapse"></div>
367
+ <a href="../classes/MLAStreamImage.html" class="more">« More »</a>
368
+ </div>
369
+ <a name="MLAStreamImage" id="MLAStreamImage"></a><div class="element ajax clickable class" href="../classes/MLAStreamImage.html">
370
+ <h1>MLAStreamImage<a href="../classes/MLAStreamImage.html">¶</a>
371
+ </h1>
372
+ <p class="short_description">Class MLA (Media Library Assistant) Stream Image provides PDF thumbnails
373
+ for the [mla_gallery] mla_viewer.</p>
374
+ <div class="details collapse"></div>
375
+ <a href="../classes/MLAStreamImage.html" class="more">« More »</a>
376
+ </div>
377
  <a name="MLATest" id="MLATest"></a><div class="element ajax clickable class" href="../classes/MLATest.html">
378
  <h1>MLATest<a href="../classes/MLATest.html">¶</a>
379
  </h1>
396
  <div class="details collapse"></div>
397
  <a href="../classes/MLA_Checklist_Walker.html" class="more">« More »</a>
398
  </div>
399
+ <a name="MLA_Image_Editor" id="MLA_Image_Editor"></a><div class="element ajax clickable class" href="../classes/MLA_Image_Editor.html">
400
+ <h1>MLA_Image_Editor<a href="../classes/MLA_Image_Editor.html">¶</a>
401
+ </h1>
402
+ <p class="short_description">MLA Image Editor Class for Image Manipulation through Imagick PHP Module</p>
403
+ <div class="details collapse"></div>
404
+ <a href="../classes/MLA_Image_Editor.html" class="more">« More »</a>
405
+ </div>
406
  <a name="MLA_List_Table" id="MLA_List_Table"></a><div class="element ajax clickable class" href="../classes/MLA_List_Table.html">
407
  <h1>MLA_List_Table<a href="../classes/MLA_List_Table.html">¶</a>
408
  </h1>
447
  <div class="labels"></div>
448
  <div class="row collapse"><div class="detail-description"><p class="long_description"></p></div></div>
449
  </div>
450
+ <a name="MLA_DEBUG_LEVEL" id="MLA_DEBUG_LEVEL"> </a><div class="element clickable constant MLA_DEBUG_LEVEL" data-toggle="collapse" data-target=".MLA_DEBUG_LEVEL .collapse">
451
+ <h2>Activates debug options; can be set in wp-config.php</h2>
452
+ <pre>MLA_DEBUG_LEVEL </pre>
453
+ <div class="labels"></div>
454
+ <div class="row collapse"><div class="detail-description"><p class="long_description"></p></div></div>
455
+ </div>
456
  <a name="MLA_OPTION_PREFIX" id="MLA_OPTION_PREFIX"> </a><div class="element clickable constant MLA_OPTION_PREFIX" data-toggle="collapse" data-target=".MLA_OPTION_PREFIX .collapse">
457
  <h2>Gives a unique prefix for plugin options; can be set in wp-config.php</h2>
458
  <pre>MLA_OPTION_PREFIX </pre>
483
  <div class="row"><footer class="span12">
484
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
485
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
486
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
487
  </div>
488
  </body>
489
  </html>
phpDocs/packages/Media Library Assistant.MLA.Child.Theme.html CHANGED
@@ -268,7 +268,7 @@ display an "accordian-style" list.</p></p>
268
  <div class="row"><footer class="span12">
269
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
270
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
271
- generated on 2015-02-17T16:36:12-08:00.<br></footer></div>
272
  </div>
273
  </body>
274
  </html>
268
  <div class="row"><footer class="span12">
269
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
270
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
271
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
272
  </div>
273
  </body>
274
  </html>
phpDocs/packages/Media Library Assistant.MLA.Child.html CHANGED
@@ -265,7 +265,7 @@ display an "accordian-style" list.</p></p>
265
  <div class="row"><footer class="span12">
266
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
267
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
268
- generated on 2015-02-17T16:36:12-08:00.<br></footer></div>
269
  </div>
270
  </body>
271
  </html>
265
  <div class="row"><footer class="span12">
266
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
267
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
268
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
269
  </div>
270
  </body>
271
  </html>
phpDocs/packages/Media Library Assistant.MLA.html CHANGED
@@ -276,7 +276,7 @@ display an "accordian-style" list.</p></p>
276
  <div class="row"><footer class="span12">
277
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
278
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
279
- generated on 2015-02-17T16:36:12-08:00.<br></footer></div>
280
  </div>
281
  </body>
282
  </html>
276
  <div class="row"><footer class="span12">
277
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
278
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
279
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
280
  </div>
281
  </body>
282
  </html>
phpDocs/packages/Media Library Assistant.html CHANGED
@@ -73,9 +73,11 @@
73
  <li class="nav-header">
74
  <i class="icon-custom icon-class"></i> Classes</li>
75
  <li><a href="#MNA_Pad_Counts_Walker" title="Class MNA_Pad_Counts_Walker adds accurate, padded attachment counts to taxonomy terms.">MNA_Pad_Counts_Walker</a></li>
 
76
  <li><a href="#MLAData" title="Class MLA (Media Library Assistant) Data provides database and template file access for MLA needs">MLAData</a></li>
77
  <li><a href="#MLAEdit" title="Class MLA (Media Library Assistant) Edit contains meta boxes for the Edit Media (advanced-form-edit.php) screen">MLAEdit</a></li>
78
  <li><a href="#MLA_Checklist_Walker" title="Class MLA (Media Library Assistant) Checklist Walker replaces term_id with slug in checklist output">MLA_Checklist_Walker</a></li>
 
79
  <li><a href="#MLA_List_Table" title='Class MLA (Media Library Assistant) List Table implements the "Assistant" admin submenu'>MLA_List_Table</a></li>
80
  <li><a href="#MLA" title="Class MLA (Media Library Assistant) provides several enhancements to the handling
81
  of images and files held in the WordPress Media Library.">MLA</a></li>
@@ -88,15 +90,23 @@ the Views and Uploads Settings tabs">MLAMime</a></li>
88
  and provides functions to get and put them from/to WordPress option variables">MLAOptions</a></li>
89
  <li><a href="#MLASettings" title="Class MLA (Media Library Assistant) Settings provides the settings page to edit the plugin option settings">MLASettings</a></li>
90
  <li><a href="#MLAShortcodes" title="Class MLA (Media Library Assistant) Shortcodes defines the shortcodes available to MLA users">MLAShortcodes</a></li>
 
 
 
91
  <li><a href="#MLA_Upload_List_Table" title='Class MLA (Media Library Assistant) Upload List Table implements the "Upload" admin settings tab'>MLA_Upload_List_Table</a></li>
92
  <li><a href="#MLA_Upload_Optional_List_Table" title='Class MLA (Media Library Assistant) Upload Optional List Table implements the
93
  searchable database of exension/type associations for the "Uploads" admin settings tab'>MLA_Upload_Optional_List_Table</a></li>
94
  <li><a href="#MLA_View_List_Table" title='Class MLA (Media Library Assistant) View List Table implements the "Views" admin settings tab'>MLA_View_List_Table</a></li>
 
 
 
 
95
  <li><a href="#MLATest" title="Class MLA (Media Library Assistant) Test provides basic run-time tests
96
  to ensure the plugin can run in the current WordPress envrionment.">MLATest</a></li>
97
  <li class="nav-header">
98
  <i class="icon-custom icon-constant"></i> Constants</li>
99
  <li class="constant "><a href="#MLA_BACKUP_DIR" title="MLA_BACKUP_DIR :: "><span class="description">MLA_BACKUP_DIR</span><pre>MLA_BACKUP_DIR</pre></a></li>
 
100
  <li class="constant "><a href="#MLA_OPTION_PREFIX" title="MLA_OPTION_PREFIX :: Gives a unique prefix for plugin options; can be set in wp-config.php"><span class="description">Gives a unique prefix for plugin options; can be set in wp-config.php</span><pre>MLA_OPTION_PREFIX</pre></a></li>
101
  <li class="constant "><a href="#MLA_PLUGIN_BASENAME" title="MLA_PLUGIN_BASENAME :: Provides the plugin's directory name, relative to the plugins directory, without leading or trailing slashes."><span class="description">Provides the plugin's directory name, relative to the plugins directory, without leading or trailing slashes.</span><pre>MLA_PLUGIN_BASENAME</pre></a></li>
102
  <li class="constant "><a href="#MLA_PLUGIN_PATH" title="MLA_PLUGIN_PATH :: Provides path information to the plugin root in file system format, including the trailing slash."><span class="description">Provides path information to the plugin root in file system format, including the trailing slash.</span><pre>MLA_PLUGIN_PATH</pre></a></li>
@@ -176,6 +186,22 @@ the Views and Uploads Settings tabs</p>
176
  <div class="details collapse"></div>
177
  <a href="../classes/MLAModal.html" class="more">« More »</a>
178
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
179
  <a name="MLAObjects" id="MLAObjects"></a><div class="element ajax clickable class" href="../classes/MLAObjects.html">
180
  <h1>MLAObjects<a href="../classes/MLAObjects.html">¶</a>
181
  </h1>
@@ -191,6 +217,13 @@ and provides functions to get and put them from/to WordPress option variables</p
191
  <div class="details collapse"></div>
192
  <a href="../classes/MLAOptions.html" class="more">« More »</a>
193
  </div>
 
 
 
 
 
 
 
194
  <a name="MLASettings" id="MLASettings"></a><div class="element ajax clickable class" href="../classes/MLASettings.html">
195
  <h1>MLASettings<a href="../classes/MLASettings.html">¶</a>
196
  </h1>
@@ -205,6 +238,21 @@ and provides functions to get and put them from/to WordPress option variables</p
205
  <div class="details collapse"></div>
206
  <a href="../classes/MLAShortcodes.html" class="more">« More »</a>
207
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
208
  <a name="MLATest" id="MLATest"></a><div class="element ajax clickable class" href="../classes/MLATest.html">
209
  <h1>MLATest<a href="../classes/MLATest.html">¶</a>
210
  </h1>
@@ -227,6 +275,13 @@ to ensure the plugin can run in the current WordPress envrionment.</p>
227
  <div class="details collapse"></div>
228
  <a href="../classes/MLA_Checklist_Walker.html" class="more">« More »</a>
229
  </div>
 
 
 
 
 
 
 
230
  <a name="MLA_List_Table" id="MLA_List_Table"></a><div class="element ajax clickable class" href="../classes/MLA_List_Table.html">
231
  <h1>MLA_List_Table<a href="../classes/MLA_List_Table.html">¶</a>
232
  </h1>
@@ -271,6 +326,12 @@ searchable database of exension/type associations for the "Uploads" admin settin
271
  <div class="labels"></div>
272
  <div class="row collapse"><div class="detail-description"><p class="long_description"></p></div></div>
273
  </div>
 
 
 
 
 
 
274
  <a name="MLA_OPTION_PREFIX" id="MLA_OPTION_PREFIX"> </a><div class="element clickable constant MLA_OPTION_PREFIX" data-toggle="collapse" data-target=".MLA_OPTION_PREFIX .collapse">
275
  <h2>Gives a unique prefix for plugin options; can be set in wp-config.php</h2>
276
  <pre>MLA_OPTION_PREFIX </pre>
@@ -505,7 +566,7 @@ display an "accordian-style" list.</p></p>
505
  <div class="row"><footer class="span12">
506
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
507
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
508
- generated on 2015-02-17T16:36:12-08:00.<br></footer></div>
509
  </div>
510
  </body>
511
  </html>
73
  <li class="nav-header">
74
  <i class="icon-custom icon-class"></i> Classes</li>
75
  <li><a href="#MNA_Pad_Counts_Walker" title="Class MNA_Pad_Counts_Walker adds accurate, padded attachment counts to taxonomy terms.">MNA_Pad_Counts_Walker</a></li>
76
+ <li><a href="#MLAPDF" title="Class MLA (Media Library Assistant) PDF extracts legacy and XMP meta data from PDF files">MLAPDF</a></li>
77
  <li><a href="#MLAData" title="Class MLA (Media Library Assistant) Data provides database and template file access for MLA needs">MLAData</a></li>
78
  <li><a href="#MLAEdit" title="Class MLA (Media Library Assistant) Edit contains meta boxes for the Edit Media (advanced-form-edit.php) screen">MLAEdit</a></li>
79
  <li><a href="#MLA_Checklist_Walker" title="Class MLA (Media Library Assistant) Checklist Walker replaces term_id with slug in checklist output">MLA_Checklist_Walker</a></li>
80
+ <li><a href="#MLA_Image_Editor" title="MLA Image Editor Class for Image Manipulation through Imagick PHP Module">MLA_Image_Editor</a></li>
81
  <li><a href="#MLA_List_Table" title='Class MLA (Media Library Assistant) List Table implements the "Assistant" admin submenu'>MLA_List_Table</a></li>
82
  <li><a href="#MLA" title="Class MLA (Media Library Assistant) provides several enhancements to the handling
83
  of images and files held in the WordPress Media Library.">MLA</a></li>
90
  and provides functions to get and put them from/to WordPress option variables">MLAOptions</a></li>
91
  <li><a href="#MLASettings" title="Class MLA (Media Library Assistant) Settings provides the settings page to edit the plugin option settings">MLASettings</a></li>
92
  <li><a href="#MLAShortcodes" title="Class MLA (Media Library Assistant) Shortcodes defines the shortcodes available to MLA users">MLAShortcodes</a></li>
93
+ <li><a href="#MLAStreamImage" title="Class MLA (Media Library Assistant) Stream Image provides PDF thumbnails.">MLAStreamImage</a></li>
94
+ <li><a href="#MLAMutex" title='Class MLA (Media Library Assistant) Mutex provides a simple "mutual exclusion" semaphore
95
+ for the [mla_gallery] mla_viewer=single option'>MLAMutex</a></li>
96
  <li><a href="#MLA_Upload_List_Table" title='Class MLA (Media Library Assistant) Upload List Table implements the "Upload" admin settings tab'>MLA_Upload_List_Table</a></li>
97
  <li><a href="#MLA_Upload_Optional_List_Table" title='Class MLA (Media Library Assistant) Upload Optional List Table implements the
98
  searchable database of exension/type associations for the "Uploads" admin settings tab'>MLA_Upload_Optional_List_Table</a></li>
99
  <li><a href="#MLA_View_List_Table" title='Class MLA (Media Library Assistant) View List Table implements the "Views" admin settings tab'>MLA_View_List_Table</a></li>
100
+ <li><a href="#MLAStreamImage" title="Class MLA (Media Library Assistant) Stream Image provides PDF thumbnails
101
+ for the [mla_gallery] mla_viewer.">MLAStreamImage</a></li>
102
+ <li><a href="#MLAMutex" title='Class MLA (Media Library Assistant) Mutex provides a simple "mutual exclusion" semaphore
103
+ for the [mla_gallery] mla_viewer=single option'>MLAMutex</a></li>
104
  <li><a href="#MLATest" title="Class MLA (Media Library Assistant) Test provides basic run-time tests
105
  to ensure the plugin can run in the current WordPress envrionment.">MLATest</a></li>
106
  <li class="nav-header">
107
  <i class="icon-custom icon-constant"></i> Constants</li>
108
  <li class="constant "><a href="#MLA_BACKUP_DIR" title="MLA_BACKUP_DIR :: "><span class="description">MLA_BACKUP_DIR</span><pre>MLA_BACKUP_DIR</pre></a></li>
109
+ <li class="constant "><a href="#MLA_DEBUG_LEVEL" title="MLA_DEBUG_LEVEL :: Activates debug options; can be set in wp-config.php"><span class="description">Activates debug options; can be set in wp-config.php</span><pre>MLA_DEBUG_LEVEL</pre></a></li>
110
  <li class="constant "><a href="#MLA_OPTION_PREFIX" title="MLA_OPTION_PREFIX :: Gives a unique prefix for plugin options; can be set in wp-config.php"><span class="description">Gives a unique prefix for plugin options; can be set in wp-config.php</span><pre>MLA_OPTION_PREFIX</pre></a></li>
111
  <li class="constant "><a href="#MLA_PLUGIN_BASENAME" title="MLA_PLUGIN_BASENAME :: Provides the plugin's directory name, relative to the plugins directory, without leading or trailing slashes."><span class="description">Provides the plugin's directory name, relative to the plugins directory, without leading or trailing slashes.</span><pre>MLA_PLUGIN_BASENAME</pre></a></li>
112
  <li class="constant "><a href="#MLA_PLUGIN_PATH" title="MLA_PLUGIN_PATH :: Provides path information to the plugin root in file system format, including the trailing slash."><span class="description">Provides path information to the plugin root in file system format, including the trailing slash.</span><pre>MLA_PLUGIN_PATH</pre></a></li>
186
  <div class="details collapse"></div>
187
  <a href="../classes/MLAModal.html" class="more">« More »</a>
188
  </div>
189
+ <a name="MLAMutex" id="MLAMutex"></a><div class="element ajax clickable class" href="../classes/MLAMutex.html">
190
+ <h1>MLAMutex<a href="../classes/MLAMutex.html">¶</a>
191
+ </h1>
192
+ <p class="short_description">Class MLA (Media Library Assistant) Mutex provides a simple "mutual exclusion" semaphore
193
+ for the [mla_gallery] mla_viewer=single option</p>
194
+ <div class="details collapse"></div>
195
+ <a href="../classes/MLAMutex.html" class="more">« More »</a>
196
+ </div>
197
+ <a name="MLAMutex" id="MLAMutex"></a><div class="element ajax clickable class" href="../classes/MLAMutex.html">
198
+ <h1>MLAMutex<a href="../classes/MLAMutex.html">¶</a>
199
+ </h1>
200
+ <p class="short_description">Class MLA (Media Library Assistant) Mutex provides a simple "mutual exclusion" semaphore
201
+ for the [mla_gallery] mla_viewer=single option</p>
202
+ <div class="details collapse"></div>
203
+ <a href="../classes/MLAMutex.html" class="more">« More »</a>
204
+ </div>
205
  <a name="MLAObjects" id="MLAObjects"></a><div class="element ajax clickable class" href="../classes/MLAObjects.html">
206
  <h1>MLAObjects<a href="../classes/MLAObjects.html">¶</a>
207
  </h1>
217
  <div class="details collapse"></div>
218
  <a href="../classes/MLAOptions.html" class="more">« More »</a>
219
  </div>
220
+ <a name="MLAPDF" id="MLAPDF"></a><div class="element ajax clickable class" href="../classes/MLAPDF.html">
221
+ <h1>MLAPDF<a href="../classes/MLAPDF.html">¶</a>
222
+ </h1>
223
+ <p class="short_description">Class MLA (Media Library Assistant) PDF extracts legacy and XMP meta data from PDF files</p>
224
+ <div class="details collapse"></div>
225
+ <a href="../classes/MLAPDF.html" class="more">« More »</a>
226
+ </div>
227
  <a name="MLASettings" id="MLASettings"></a><div class="element ajax clickable class" href="../classes/MLASettings.html">
228
  <h1>MLASettings<a href="../classes/MLASettings.html">¶</a>
229
  </h1>
238
  <div class="details collapse"></div>
239
  <a href="../classes/MLAShortcodes.html" class="more">« More »</a>
240
  </div>
241
+ <a name="MLAStreamImage" id="MLAStreamImage"></a><div class="element ajax clickable class" href="../classes/MLAStreamImage.html">
242
+ <h1>MLAStreamImage<a href="../classes/MLAStreamImage.html">¶</a>
243
+ </h1>
244
+ <p class="short_description">Class MLA (Media Library Assistant) Stream Image provides PDF thumbnails.</p>
245
+ <div class="details collapse"></div>
246
+ <a href="../classes/MLAStreamImage.html" class="more">« More »</a>
247
+ </div>
248
+ <a name="MLAStreamImage" id="MLAStreamImage"></a><div class="element ajax clickable class" href="../classes/MLAStreamImage.html">
249
+ <h1>MLAStreamImage<a href="../classes/MLAStreamImage.html">¶</a>
250
+ </h1>
251
+ <p class="short_description">Class MLA (Media Library Assistant) Stream Image provides PDF thumbnails
252
+ for the [mla_gallery] mla_viewer.</p>
253
+ <div class="details collapse"></div>
254
+ <a href="../classes/MLAStreamImage.html" class="more">« More »</a>
255
+ </div>
256
  <a name="MLATest" id="MLATest"></a><div class="element ajax clickable class" href="../classes/MLATest.html">
257
  <h1>MLATest<a href="../classes/MLATest.html">¶</a>
258
  </h1>
275
  <div class="details collapse"></div>
276
  <a href="../classes/MLA_Checklist_Walker.html" class="more">« More »</a>
277
  </div>
278
+ <a name="MLA_Image_Editor" id="MLA_Image_Editor"></a><div class="element ajax clickable class" href="../classes/MLA_Image_Editor.html">
279
+ <h1>MLA_Image_Editor<a href="../classes/MLA_Image_Editor.html">¶</a>
280
+ </h1>
281
+ <p class="short_description">MLA Image Editor Class for Image Manipulation through Imagick PHP Module</p>
282
+ <div class="details collapse"></div>
283
+ <a href="../classes/MLA_Image_Editor.html" class="more">« More »</a>
284
+ </div>
285
  <a name="MLA_List_Table" id="MLA_List_Table"></a><div class="element ajax clickable class" href="../classes/MLA_List_Table.html">
286
  <h1>MLA_List_Table<a href="../classes/MLA_List_Table.html">¶</a>
287
  </h1>
326
  <div class="labels"></div>
327
  <div class="row collapse"><div class="detail-description"><p class="long_description"></p></div></div>
328
  </div>
329
+ <a name="MLA_DEBUG_LEVEL" id="MLA_DEBUG_LEVEL"> </a><div class="element clickable constant MLA_DEBUG_LEVEL" data-toggle="collapse" data-target=".MLA_DEBUG_LEVEL .collapse">
330
+ <h2>Activates debug options; can be set in wp-config.php</h2>
331
+ <pre>MLA_DEBUG_LEVEL </pre>
332
+ <div class="labels"></div>
333
+ <div class="row collapse"><div class="detail-description"><p class="long_description"></p></div></div>
334
+ </div>
335
  <a name="MLA_OPTION_PREFIX" id="MLA_OPTION_PREFIX"> </a><div class="element clickable constant MLA_OPTION_PREFIX" data-toggle="collapse" data-target=".MLA_OPTION_PREFIX .collapse">
336
  <h2>Gives a unique prefix for plugin options; can be set in wp-config.php</h2>
337
  <pre>MLA_OPTION_PREFIX </pre>
566
  <div class="row"><footer class="span12">
567
  Template is built using <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap 2</a> and icons provided by <a href="http://glyphicons.com/">Glyphicons</a>.<br>
568
  Documentation is powered by <a href="http://www.phpdoc.org/">phpDocumentor 2.0.0a8</a> and<br>
569
+ generated on 2015-04-19T11:52:22-07:00.<br></footer></div>
570
  </div>
571
  </body>
572
  </html>
phpDocs/structure.xml CHANGED
@@ -622,7 +622,367 @@ different template.</p>]]></long-description>
622
  <tag line="2" name="since" description="MLA 1.80"/>
623
  </docblock>
624
  </file>
625
- <file path="includes\class-mla-data.php" hash="c9be00fae883e97bb6d1c64abccd4da2" package="Media Library Assistant">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
626
  <docblock line="2">
627
  <description><![CDATA[Database and template file access for MLA needs]]></description>
628
  <long-description><![CDATA[]]></long-description>
@@ -663,22 +1023,22 @@ ALT Text and custom field columns.</p>]]></long-description>
663
  </tag>
664
  </docblock>
665
  </property>
666
- <property final="false" static="true" visibility="private" line="1332" namespace="global" package="Media Library Assistant">
667
  <name>$mla_list_table_items</name>
668
  <default><![CDATA[NULL]]></default>
669
- <docblock line="1325">
670
  <description><![CDATA[Cache the results of mla_count_list_table_items for reuse in mla_query_list_table_items]]></description>
671
  <long-description><![CDATA[]]></long-description>
672
- <tag line="1325" name="since" description="1.40"/>
673
- <tag line="1325" name="var" description="" type="array">
674
  <type by_reference="false">array</type>
675
  </tag>
676
  </docblock>
677
  </property>
678
- <property final="false" static="true" visibility="private" line="1438" namespace="global" package="Media Library Assistant">
679
  <name>$query_parameters</name>
680
  <default><![CDATA[array()]]></default>
681
- <docblock line="1424">
682
  <description><![CDATA[WP_Query filter "parameters"]]></description>
683
  <long-description><![CDATA[<p>This array defines parameters for the query's join, where and orderby filters.
684
  The parameters are set up in the _prepare_list_table_query function, and
@@ -686,16 +1046,16 @@ any further logic required to translate those values is contained in the filters
686
 
687
  <p>Array index values are: use_postmeta_view, postmeta_key, postmeta_value, patterns,
688
  detached, orderby, order, mla-metavalue, debug (also in search_parameters)</p>]]></long-description>
689
- <tag line="1424" name="since" description="0.30"/>
690
- <tag line="1424" name="var" description="" type="array">
691
  <type by_reference="false">array</type>
692
  </tag>
693
  </docblock>
694
  </property>
695
- <property final="false" static="true" visibility="public" line="1467" namespace="global" package="Media Library Assistant">
696
  <name>$search_parameters</name>
697
  <default><![CDATA[array()]]></default>
698
- <docblock line="1440">
699
  <description><![CDATA[WP_Query 'posts_search' filter "parameters"]]></description>
700
  <long-description><![CDATA[<p>This array defines parameters for the query's posts_search filter, which uses
701
  'search_string' to add a clause to the query's WHERE clause. It is shared between
@@ -716,16 +1076,16 @@ Note: 'alt-text' is not supported in [mla_gallery]
716
  ['debug'] => internal element, console/log/shortcode/none
717
  ['mla_debug_messages'] => internal element, added when debug = 'shortcode'
718
  ['tax_terms_count'] => internal element, shared with JOIN and GROUP BY filters</p>]]></long-description>
719
- <tag line="1440" name="since" description="2.00"/>
720
- <tag line="1440" name="var" description="" type="array">
721
  <type by_reference="false">array</type>
722
  </tag>
723
  </docblock>
724
  </property>
725
- <property final="false" static="true" visibility="private" line="3552" namespace="global" package="Media Library Assistant">
726
  <name>$galleries</name>
727
  <default><![CDATA[null]]></default>
728
- <docblock line="3532">
729
  <description><![CDATA[Objects containing [gallery] shortcodes]]></description>
730
  <long-description><![CDATA[<p>This array contains all of the objects containing one or more [gallery] shortcodes
731
  and array(s) of which attachments each [gallery] contains. The arrays are built once
@@ -739,126 +1099,112 @@ each page load and cached for subsequent calls.</p>
739
  ['galleries'] array of [gallery] entries numbered from one (1), containing:
740
  galleries[X]['query'] contains a string with the arguments of the [gallery],
741
  galleries[X]['results'] contains an array ( ID ) of post_ids for the objects in the gallery.</p>]]></long-description>
742
- <tag line="3532" name="since" description="0.70"/>
743
- <tag line="3532" name="var" description="" type="array">
744
  <type by_reference="false">array</type>
745
  </tag>
746
  </docblock>
747
  </property>
748
- <property final="false" static="true" visibility="private" line="3565" namespace="global" package="Media Library Assistant">
749
  <name>$mla_galleries</name>
750
  <default><![CDATA[null]]></default>
751
- <docblock line="3554">
752
  <description><![CDATA[Objects containing [mla_gallery] shortcodes]]></description>
753
  <long-description><![CDATA[<p>This array contains all of the objects containing one or more [mla_gallery] shortcodes
754
  and array(s) of which attachments each [mla_gallery] contains. The arrays are built once
755
  each page load and cached for subsequent calls.</p>]]></long-description>
756
- <tag line="3554" name="since" description="0.70"/>
757
- <tag line="3554" name="var" description="" type="array">
758
  <type by_reference="false">array</type>
759
  </tag>
760
  </docblock>
761
  </property>
762
- <property final="false" static="true" visibility="private" line="3762" namespace="global" package="Media Library Assistant">
763
- <name>$pdf_indirect_objects</name>
764
- <default><![CDATA[NULL]]></default>
765
- <docblock line="3751">
766
- <description><![CDATA[Array of PDF indirect objects]]></description>
767
- <long-description><![CDATA[<p>This array contains all of the indirect object offsets and lengths.
768
- The array key is ( object ID * 1000 ) + object generation.
769
- The array value is array( number, generation, start, optional /length )</p>]]></long-description>
770
- <tag line="3751" name="since" description="1.50"/>
771
- <tag line="3751" name="var" description="" type="array">
772
- <type by_reference="false">array</type>
773
- </tag>
774
- </docblock>
775
- </property>
776
- <property final="false" static="true" visibility="private" line="4873" namespace="global" package="Media Library Assistant">
777
  <name>$utf8_chars</name>
778
  <default><![CDATA[array("\xC2\x80", "\xC2\x81", "\xC2\x82", "\xC2\x83", "\xC2\x84", "\xC2\x85", "\xC2\x86", "\xC2\x87", "\xC2\x88", "\xC2\x89", "\xC2\x8A", "\xC2\x8B", "\xC2\x8C", "\xC2\x8D", "\xC2\x8E", "\xC2\x8F", "\xC2\x90", "\xC2\x91", "\xC2\x92", "\xC2\x93", "\xC2\x94", "\xC2\x95", "\xC2\x96", "\xC2\x97", "\xC2\x98", "\xC2\x99", "\xC2\x9A", "\xC2\x9B", "\xC2\x9C", "\xC2\x9D", "\xC2\x9E", "\xC2\x9F", "\xC2\xA0", "\xC2\xA1", "\xC2\xA2", "\xC2\xA3", "\xC2\xA4", "\xC2\xA5", "\xC2\xA6", "\xC2\xA7", "\xC2\xA8", "\xC2\xA9", "\xC2\xAA", "\xC2\xAB", "\xC2\xAC", "\xC2\xAD", "\xC2\xAE", "\xC2\xAF", "\xC2\xB0", "\xC2\xB1", "\xC2\xB2", "\xC2\xB3", "\xC2\xB4", "\xC2\xB5", "\xC2\xB6", "\xC2\xB7", "\xC2\xB8", "\xC2\xB9", "\xC2\xBA", "\xC2\xBB", "\xC2\xBC", "\xC2\xBD", "\xC2\xBE", "\xC2\xBF", "\xC3\x80", "\xC3\x81", "\xC3\x82", "\xC3\x83", "\xC3\x84", "\xC3\x85", "\xC3\x86", "\xC3\x87", "\xC3\x88", "\xC3\x89", "\xC3\x8A", "\xC3\x8B", "\xC3\x8C", "\xC3\x8D", "\xC3\x8E", "\xC3\x8F", "\xC3\x90", "\xC3\x91", "\xC3\x92", "\xC3\x93", "\xC3\x94", "\xC3\x95", "\xC3\x96", "\xC3\x97", "\xC3\x98", "\xC3\x99", "\xC3\x9A", "\xC3\x9B", "\xC3\x9C", "\xC3\x9D", "\xC3\x9E", "\xC3\x9F", "\xC3\xA0", "\xC3\xA1", "\xC3\xA2", "\xC3\xA3", "\xC3\xA4", "\xC3\xA5", "\xC3\xA6", "\xC3\xA7", "\xC3\xA8", "\xC3\xA9", "\xC3\xAA", "\xC3\xAB", "\xC3\xAC", "\xC3\xAD", "\xC3\xAE", "\xC3\xAF", "\xC3\xB0", "\xC3\xB1", "\xC3\xB2", "\xC3\xB3", "\xC3\xB4", "\xC3\xB5", "\xC3\xB6", "\xC3\xB7", "\xC3\xB8", "\xC3\xB9", "\xC3\xBA", "\xC3\xBB", "\xC3\xBC", "\xC3\xBD", "\xC3\xBE", "\xC3\xBF")]]></default>
779
- <docblock line="4866">
780
  <description><![CDATA[UTF-8 replacements for invalid SQL characters]]></description>
781
  <long-description><![CDATA[]]></long-description>
782
- <tag line="4866" name="since" description="1.41"/>
783
- <tag line="4866" name="var" description="" type="array">
784
  <type by_reference="false">array</type>
785
  </tag>
786
  </docblock>
787
  </property>
788
- <property final="false" static="true" visibility="private" line="4933" namespace="global" package="Media Library Assistant">
789
  <name>$mla_iptc_records</name>
790
  <default><![CDATA[array("1#000" => "Model Version", "1#005" => "Destination", "1#020" => "File Format", "1#022" => "File Format Version", "1#030" => "Service Identifier", "1#040" => "Envelope Number", "1#050" => "Product ID", "1#060" => "Envelope Priority", "1#070" => "Date Sent", "1#080" => "Time Sent", "1#090" => "Coded Character Set", "1#100" => "UNO", "1#120" => "ARM Identifier", "1#122" => "ARM Version", "2#000" => "Record Version", "2#003" => "Object Type Reference", "2#004" => "Object Attribute Reference", "2#005" => "Object Name", "2#007" => "Edit Status", "2#008" => "Editorial Update", "2#010" => "Urgency", "2#012" => "Subject Reference", "2#015" => "Category", "2#020" => "Supplemental Category", "2#022" => "Fixture Identifier", "2#025" => "Keywords", "2#026" => "Content Location Code", "2#027" => "Content Location Name", "2#030" => "Release Date", "2#035" => "Release Time", "2#037" => "Expiration Date", "2#038" => "Expiration Time", "2#040" => "Special Instructions", "2#042" => "Action Advised", "2#045" => "Reference Service", "2#047" => "Reference Date", "2#050" => "Reference Number", "2#055" => "Date Created", "2#060" => "Time Created", "2#062" => "Digital Creation Date", "2#063" => "Digital Creation Time", "2#065" => "Originating Program", "2#070" => "Program Version", "2#075" => "Object Cycle", "2#080" => "By-line", "2#085" => "By-line Title", "2#090" => "City", "2#092" => "Sub-location", "2#095" => "Province or State", "2#100" => "Country or Primary Location Code", "2#101" => "Country or Primary Location Name", "2#103" => "Original Transmission Reference", "2#105" => "Headline", "2#110" => "Credit", "2#115" => "Source", "2#116" => "Copyright Notice", "2#118" => "Contact", "2#120" => "Caption or Abstract", "2#122" => "Caption Writer or Editor", "2#125" => "Rasterized Caption", "2#130" => "Image Type", "2#131" => "Image Orientation", "2#135" => "Language Identifier", "2#150" => "Audio Type", "2#151" => "Audio Sampling Rate", "2#152" => "Audio Sampling Resolution", "2#153" => "Audio Duration", "2#154" => "Audio Outcue", "2#200" => "ObjectData Preview File Format", "2#201" => "ObjectData Preview File Format Version", "2#202" => "ObjectData Preview Data", "7#010" => "Size Mode", "7#020" => "Max Subfile Size", "7#090" => "ObjectData Size Announced", "7#095" => "Maximum ObjectData Size", "8#010" => "Subfile", "9#010" => "Confirmed ObjectData Size")]]></default>
791
- <docblock line="4923">
792
  <description><![CDATA[IPTC Dataset identifiers and names]]></description>
793
  <long-description><![CDATA[<p>This array contains the identifiers and names of Datasets defined in
794
  the "IPTC-NAA Information Interchange Model Version No. 4.1".</p>]]></long-description>
795
- <tag line="4923" name="since" description="0.90"/>
796
- <tag line="4923" name="var" description="" type="array">
797
  <type by_reference="false">array</type>
798
  </tag>
799
  </docblock>
800
  </property>
801
- <property final="false" static="true" visibility="public" line="5032" namespace="global" package="Media Library Assistant">
802
  <name>$mla_iptc_keys</name>
803
  <default><![CDATA[array('model-version' => '1#000', 'destination' => '1#005', 'file-format' => '1#020', 'file-format-version' => '1#022', 'service-identifier' => '1#030', 'envelope-number' => '1#040', 'product-id' => '1#050', 'envelope-priority' => '1#060', 'date-sent' => '1#070', 'time-sent' => '1#080', 'coded-character-set' => '1#090', 'uno' => '1#100', 'arm-identifier' => '1#120', 'arm-version' => '1#122', 'record-version' => '2#000', 'object-type-reference' => '2#003', 'object-attribute-reference' => '2#004', 'object-name' => '2#005', 'edit-status' => '2#007', 'editorial-update' => '2#008', 'urgency' => '2#010', 'subject-reference' => '2#012', 'category' => '2#015', 'supplemental-category' => '2#020', 'fixture-identifier' => '2#022', 'keywords' => '2#025', 'content-location-code' => '2#026', 'content-location-name' => '2#027', 'release-date' => '2#030', 'release-time' => '2#035', 'expiration-date' => '2#037', 'expiration-time' => '2#038', 'special-instructions' => '2#040', 'action-advised' => '2#042', 'reference-service' => '2#045', 'reference-date' => '2#047', 'reference-number' => '2#050', 'date-created' => '2#055', 'time-created' => '2#060', 'digital-creation-date' => '2#062', 'digital-creation-time' => '2#063', 'originating-program' => '2#065', 'program-version' => '2#070', 'object-cycle' => '2#075', 'by-line' => '2#080', 'by-line-title' => '2#085', 'city' => '2#090', 'sub-location' => '2#092', 'province-or-state' => '2#095', 'country-or-primary-location-code' => '2#100', 'country-or-primary-location-name' => '2#101', 'original-transmission-reference' => '2#103', 'headline' => '2#105', 'credit' => '2#110', 'source' => '2#115', 'copyright-notice' => '2#116', 'contact' => '2#118', 'caption-or-abstract' => '2#120', 'caption-writer-or-editor' => '2#122', 'rasterized-caption' => '2#125', 'image-type' => '2#130', 'image-orientation' => '2#131', 'language-identifier' => '2#135', 'audio-type' => '2#150', 'audio-sampling-rate' => '2#151', 'audio-sampling-resolution' => '2#152', 'audio-duration' => '2#153', 'audio-outcue' => '2#154', 'objectdata-preview-file-format' => '2#200', 'objectdata-preview-file-format-version' => '2#201', 'objectdata-preview-data' => '2#202', 'size-mode' => '7#010', 'max-subfile-size' => '7#020', 'objectdata-size-announced' => '7#090', 'maximum-objectdata-size' => '7#095', 'subfile' => '8#010', 'confirmed-objectdata-size' => '9#010')]]></default>
804
- <docblock line="5022">
805
  <description><![CDATA[IPTC Dataset friendly name/slug and identifiers]]></description>
806
  <long-description><![CDATA[<p>This array contains the sanitized names and identifiers of Datasets defined in
807
  the "IPTC-NAA Information Interchange Model Version No. 4.1".</p>]]></long-description>
808
- <tag line="5022" name="since" description="0.90"/>
809
- <tag line="5022" name="var" description="" type="array">
810
  <type by_reference="false">array</type>
811
  </tag>
812
  </docblock>
813
  </property>
814
- <property final="false" static="true" visibility="private" line="5131" namespace="global" package="Media Library Assistant">
815
  <name>$mla_iptc_descriptions</name>
816
  <default><![CDATA[array("1#000" => "2 octet binary IIM version number", "1#005" => "Max 1024 characters of Destination (ISO routing information); repeatable", "1#020" => "2 octet binary file format number, see IPTC-NAA V4 Appendix A", "1#022" => "2 octet binary file format version number", "1#030" => "Max 10 characters of Service Identifier and product", "1#040" => "8 Character Envelope Number", "1#050" => "Max 32 characters subset of provider's overall service; repeatable", "1#060" => "1 numeric character of envelope handling priority (not urgency)", "1#070" => "8 numeric characters of Date Sent by service - CCYYMMDD", "1#080" => "11 characters of Time Sent by service - HHMMSS±HHMM", "1#090" => "Max 32 characters of control functions, etc.", "1#100" => "14 to 80 characters of eternal, globally unique identification for objects", "1#120" => "2 octet binary Abstract Relationship Model Identifier", "1#122" => "2 octet binary Abstract Relationship Model Version", "2#000" => "2 octet binary Information Interchange Model, Part II version number", "2#003" => "3 to 67 Characters of Object Type Reference number and optional text", "2#004" => "3 to 67 Characters of Object Attribute Reference number and optional text; repeatable", "2#005" => "Max 64 characters of the object name or shorthand reference", "2#007" => "Max 64 characters of the status of the objectdata", "2#008" => "2 numeric characters of the type of update this object provides", "2#010" => "1 numeric character of the editorial urgency of content", "2#012" => "13 to 236 characters of a structured definition of the subject matter; repeatable", "2#015" => "Max 3 characters of the subject of the objectdata, DEPRECATED", "2#020" => "Max 32 characters (each) of further refinement of subject, DEPRECATED; repeatable", "2#022" => "Max 32 characters identifying recurring, predictable content", "2#025" => "Max 64 characters (each) of tags; repeatable", "2#026" => "3 characters of ISO3166 country code or IPTC-assigned code; repeatable", "2#027" => "Max 64 characters of publishable country/geographical location name; repeatable", "2#030" => "8 numeric characters of Release Date - CCYYMMDD", "2#035" => "11 characters of Release Time (earliest use) - HHMMSS±HHMM", "2#037" => "8 numeric characters of Expiration Date (latest use) - CCYYMDD", "2#038" => "11 characters of Expiration Time (latest use) - HHMMSS±HHMM", "2#040" => "Max 256 Characters of editorial instructions, e.g., embargoes and warnings", "2#042" => "2 numeric characters of type of action this object provides to a previous object", "2#045" => "Max 10 characters of the Service ID (1#030) of a prior envelope; repeatable", "2#047" => "8 numeric characters of prior envelope Reference Date (1#070) - CCYYMMDD; repeatable", "2#050" => "8 characters of prior envelope Reference Number (1#040); repeatable", "2#055" => "8 numeric characters of intellectual content Date Created - CCYYMMDD", "2#060" => "11 characters of intellectual content Time Created - HHMMSS±HHMM", "2#062" => "8 numeric characters of digital representation creation date - CCYYMMDD", "2#063" => "11 characters of digital representation creation time - HHMMSS±HHMM", "2#065" => "Max 32 characters of the program used to create the objectdata", "2#070" => "Program Version - Max 10 characters of the version of the program used to create the objectdata", "2#075" => "1 character where a=morning, p=evening, b=both", "2#080" => "Max 32 Characters of the name of the objectdata creator, e.g., the writer, photographer; repeatable", "2#085" => "Max 32 characters of the title of the objectdata creator; repeatable", "2#090" => "Max 32 Characters of the city of objectdata origin", "2#092" => "Max 32 Characters of the location within the city of objectdata origin", "2#095" => "Max 32 Characters of the objectdata origin Province or State", "2#100" => "3 characters of ISO3166 or IPTC-assigned code for Country of objectdata origin", "2#101" => "Max 64 characters of publishable country/geographical location name of objectdata origin", "2#103" => "Max 32 characters of a code representing the location of original transmission", "2#105" => "Max 256 Characters of a publishable entry providing a synopsis of the contents of the objectdata", "2#110" => "Max 32 Characters that identifies the provider of the objectdata (Vs the owner/creator)", "2#115" => "Max 32 Characters that identifies the original owner of the intellectual content", "2#116" => "Max 128 Characters that contains any necessary copyright notice", "2#118" => "Max 128 characters that identifies the person or organisation which can provide further background information; repeatable", "2#120" => "Max 2000 Characters of a textual description of the objectdata", "2#122" => "Max 32 Characters that the identifies the person involved in the writing, editing or correcting the objectdata or caption/abstract; repeatable", "2#125" => "7360 binary octets of the rasterized caption - 1 bit per pixel, 460x128-pixel image", "2#130" => "2 characters of color composition type and information", "2#131" => "1 alphabetic character indicating the image area layout - P=portrait, L=landscape, S=square", "2#135" => "2 or 3 aphabetic characters containing the major national language of the object, according to the ISO 639:1988 codes", "2#150" => "2 characters identifying monaural/stereo and exact type of audio content", "2#151" => "6 numeric characters representing the audio sampling rate in hertz (Hz)", "2#152" => "2 numeric characters representing the number of bits in each audio sample", "2#153" => "6 numeric characters of the Audio Duration - HHMMSS", "2#154" => "Max 64 characters of the content of the end of an audio objectdata", "2#200" => "2 octet binary file format of the ObjectData Preview", "2#201" => "2 octet binary particular version of the ObjectData Preview File Format", "2#202" => "Max 256000 binary octets containing the ObjectData Preview data", "7#010" => "1 numeric character - 0=objectdata size not known, 1=objectdata size known at beginning of transfer", "7#020" => "4 octet binary maximum subfile dataset(s) size", "7#090" => "4 octet binary objectdata size if known at beginning of transfer", "7#095" => "4 octet binary largest possible objectdata size", "8#010" => "Subfile DataSet containing the objectdata itself; repeatable", "9#010" => "4 octet binary total objectdata size")]]></default>
817
- <docblock line="5121">
818
  <description><![CDATA[IPTC Dataset descriptions]]></description>
819
  <long-description><![CDATA[<p>This array contains the descriptions of Datasets defined in
820
  the "IPTC-NAA Information Interchange Model Version No. 4.1".</p>]]></long-description>
821
- <tag line="5121" name="since" description="0.90"/>
822
- <tag line="5121" name="var" description="" type="array">
823
  <type by_reference="false">array</type>
824
  </tag>
825
  </docblock>
826
  </property>
827
- <property final="false" static="true" visibility="private" line="5230" namespace="global" package="Media Library Assistant">
828
  <name>$mla_iptc_formats</name>
829
  <default><![CDATA[array(0 => "No ObjectData", 1 => "IPTC-NAA Digital Newsphoto Parameter Record", 2 => "IPTC7901 Recommended Message Format", 3 => "Tagged Image File Format (Adobe/Aldus Image data)", 4 => "Illustrator (Adobe Graphics data)", 5 => "AppleSingle (Apple Computer Inc)", 6 => "NAA 89-3 (ANPA 1312)", 7 => "MacBinary II", 0 => "IPTC Unstructured Character Oriented File Format (UCOFF)", 0 => "United Press International ANPA 1312 variant", 10 => "United Press International Down-Load Message", 11 => "JPEG File Interchange (JFIF)", 12 => "Photo-CD Image-Pac (Eastman Kodak)", 13 => "Microsoft Bit Mapped Graphics File [*.BMP]", 14 => "Digital Audio File [*.WAV] (Microsoft & Creative Labs)", 15 => "Audio plus Moving Video [*.AVI] (Microsoft)", 16 => "PC DOS/Windows Executable Files [*.COM][*.EXE]", 17 => "Compressed Binary File [*.ZIP] (PKWare Inc)", 18 => "Audio Interchange File Format AIFF (Apple Computer Inc)", 19 => "RIFF Wave (Microsoft Corporation)", 20 => "Freehand (Macromedia/Aldus)", 21 => "Hypertext Markup Language - HTML (The Internet Society)", 22 => "MPEG 2 Audio Layer 2 (Musicom), ISO/IEC", 23 => "MPEG 2 Audio Layer 3, ISO/IEC", 24 => "Portable Document File (*.PDF) Adobe", 25 => "News Industry Text Format (NITF)", 26 => "Tape Archive (*.TAR)", 27 => "Tidningarnas Telegrambyrå NITF version (TTNITF DTD)", 28 => "Ritzaus Bureau NITF version (RBNITF DTD)", 29 => "Corel Draw [*.CDR]")]]></default>
830
- <docblock line="5220">
831
  <description><![CDATA[IPTC file format identifiers and descriptions]]></description>
832
  <long-description><![CDATA[<p>This array contains the file format identifiers and descriptions defined in
833
  the "IPTC-NAA Information Interchange Model Version No. 4.1" for dataset 1#020.</p>]]></long-description>
834
- <tag line="5220" name="since" description="0.90"/>
835
- <tag line="5220" name="var" description="" type="array">
836
  <type by_reference="false">array</type>
837
  </tag>
838
  </docblock>
839
  </property>
840
- <property final="false" static="true" visibility="private" line="5273" namespace="global" package="Media Library Assistant">
841
  <name>$mla_iptc_image_types</name>
842
  <default><![CDATA[array("M" => "Monochrome", "Y" => "Yellow Component", "M" => "Magenta Component", "C" => "Cyan Component", "K" => "Black Component", "R" => "Red Component", "G" => "Green Component", "B" => "Blue Component", "T" => "Text Only", "F" => "Full colour composite, frame sequential", "L" => "Full colour composite, line sequential", "P" => "Full colour composite, pixel sequential", "S" => "Full colour composite, special interleaving")]]></default>
843
- <docblock line="5263">
844
  <description><![CDATA[IPTC image type identifiers and descriptions]]></description>
845
  <long-description><![CDATA[<p>This array contains the image type identifiers and descriptions defined in
846
  the "IPTC-NAA Information Interchange Model Version No. 4.1" for dataset 2#130, octet 2.</p>]]></long-description>
847
- <tag line="5263" name="since" description="0.90"/>
848
- <tag line="5263" name="var" description="" type="array">
849
  <type by_reference="false">array</type>
850
  </tag>
851
  </docblock>
852
  </property>
853
- <property final="false" static="true" visibility="private" line="5504" namespace="global" package="Media Library Assistant">
854
  <name>$mla_IPTC_EXIF_errors</name>
855
  <default><![CDATA[array()]]></default>
856
- <docblock line="5496">
857
  <description><![CDATA[Passes IPTC/EXIF parse errors between mla_IPTC_EXIF_error_handler
858
  and mla_fetch_attachment_image_metadata]]></description>
859
  <long-description><![CDATA[]]></long-description>
860
- <tag line="5496" name="since" description="1.81"/>
861
- <tag line="5496" name="var" description="" type="array">
862
  <type by_reference="false">array</type>
863
  </tag>
864
  </docblock>
@@ -1169,1629 +1515,1419 @@ where "key" becomes the key part of the array.</p>]]></long-description>
1169
  <type/>
1170
  </argument>
1171
  </method>
1172
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="897" package="Media Library Assistant">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1173
  <name>mla_expand_field_level_parameters</name>
1174
  <full_name>mla_expand_field_level_parameters</full_name>
1175
- <docblock line="879">
1176
  <description><![CDATA[Analyze a template, expanding Field-level Markup Substitution Parameters]]></description>
1177
  <long-description><![CDATA[<p>Field-level parameters must have one of the following prefix values:
1178
- template, request, query, custom, terms, meta, iptc, exif, pdf.
1179
  All but request and query require an attachment ID.</p>]]></long-description>
1180
- <tag line="879" name="since" description="1.50"/>
1181
- <tag line="879" name="param" description="A formatting string containing [+placeholders+]" type="string" variable="$tpl">
1182
  <type by_reference="false">string</type>
1183
  </tag>
1184
- <tag line="879" name="param" description="Optional: an array of values from the query, if any, e.g. shortcode parameters" type="array" variable="$query">
1185
  <type by_reference="false">array</type>
1186
  </tag>
1187
- <tag line="879" name="param" description="Optional: an array of values to add to the returned array" type="array" variable="$markup_values">
1188
  <type by_reference="false">array</type>
1189
  </tag>
1190
- <tag line="879" name="param" description="Optional: attachment ID for attachment-specific placeholders" type="integer" variable="$post_id">
1191
  <type by_reference="false">integer</type>
1192
  </tag>
1193
- <tag line="879" name="param" description="Optional: for option 'multi', retain existing values" type="boolean" variable="$keep_existing">
1194
  <type by_reference="false">boolean</type>
1195
  </tag>
1196
- <tag line="879" name="param" description="Optional: default option value" type="string" variable="$default_option">
1197
  <type by_reference="false">string</type>
1198
  </tag>
1199
- <tag line="879" name="return" description="( parameter =&gt; value ) for all field-level parameters and anything in $markup_values" type="array">
1200
  <type by_reference="false">array</type>
1201
  </tag>
1202
  </docblock>
1203
- <argument line="897">
1204
  <name>$tpl</name>
1205
  <default><![CDATA[]]></default>
1206
  <type/>
1207
  </argument>
1208
- <argument line="897">
1209
  <name>$query</name>
1210
  <default><![CDATA[NULL]]></default>
1211
  <type/>
1212
  </argument>
1213
- <argument line="897">
1214
  <name>$markup_values</name>
1215
  <default><![CDATA[array()]]></default>
1216
  <type/>
1217
  </argument>
1218
- <argument line="897">
1219
  <name>$post_id</name>
1220
  <default><![CDATA[0]]></default>
1221
  <type/>
1222
  </argument>
1223
- <argument line="897">
1224
  <name>$keep_existing</name>
1225
  <default><![CDATA[false]]></default>
1226
  <type/>
1227
  </argument>
1228
- <argument line="897">
1229
  <name>$default_option</name>
1230
  <default><![CDATA['text']]></default>
1231
  <type/>
1232
  </argument>
1233
  </method>
1234
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="1206" package="Media Library Assistant">
1235
  <name>mla_get_template_placeholders</name>
1236
  <full_name>mla_get_template_placeholders</full_name>
1237
- <docblock line="1195">
1238
  <description><![CDATA[Analyze a template, returning an array of the placeholders it contains]]></description>
1239
  <long-description><![CDATA[]]></long-description>
1240
- <tag line="1195" name="since" description="0.90"/>
1241
- <tag line="1195" name="param" description="A formatting string containing [+placeholders+]" type="string" variable="$tpl">
1242
  <type by_reference="false">string</type>
1243
  </tag>
1244
- <tag line="1195" name="param" description="Optional: default option value" type="string" variable="$default_option">
1245
  <type by_reference="false">string</type>
1246
  </tag>
1247
- <tag line="1195" name="return" description="Placeholder information: each entry is an array with ['prefix'] =&gt; string, ['value'] =&gt; string, ['option'] =&gt; string 'text'|single'|'export'|'array'|'multi'" type="array">
1248
  <type by_reference="false">array</type>
1249
  </tag>
1250
  </docblock>
1251
- <argument line="1206">
1252
  <name>$tpl</name>
1253
  <default><![CDATA[]]></default>
1254
  <type/>
1255
  </argument>
1256
- <argument line="1206">
1257
  <name>$default_option</name>
1258
  <default><![CDATA['text']]></default>
1259
  <type/>
1260
  </argument>
1261
  </method>
1262
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="1345" package="Media Library Assistant">
1263
  <name>mla_count_list_table_items</name>
1264
  <full_name>mla_count_list_table_items</full_name>
1265
- <docblock line="1334">
1266
  <description><![CDATA[Get the total number of attachment posts]]></description>
1267
  <long-description><![CDATA[]]></long-description>
1268
- <tag line="1334" name="since" description="0.30"/>
1269
- <tag line="1334" name="param" description="Query variables, e.g., from $_REQUEST" type="array" variable="$request">
1270
  <type by_reference="false">array</type>
1271
  </tag>
1272
- <tag line="1334" name="param" description="(optional) number of rows to skip over to reach desired page" type="int" variable="$offset">
1273
  <type by_reference="false">int</type>
1274
  </tag>
1275
- <tag line="1334" name="param" description="(optional) number of rows on each page" type="int" variable="$count">
1276
  <type by_reference="false">int</type>
1277
  </tag>
1278
- <tag line="1334" name="return" description="Number of attachment posts" type="integer">
1279
  <type by_reference="false">integer</type>
1280
  </tag>
1281
  </docblock>
1282
- <argument line="1345">
1283
  <name>$request</name>
1284
  <default><![CDATA[]]></default>
1285
  <type/>
1286
  </argument>
1287
- <argument line="1345">
1288
  <name>$offset</name>
1289
  <default><![CDATA[NULL]]></default>
1290
  <type/>
1291
  </argument>
1292
- <argument line="1345">
1293
  <name>$count</name>
1294
  <default><![CDATA[NULL]]></default>
1295
  <type/>
1296
  </argument>
1297
  </method>
1298
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="1373" package="Media Library Assistant">
1299
  <name>mla_query_list_table_items</name>
1300
  <full_name>mla_query_list_table_items</full_name>
1301
- <docblock line="1359">
1302
  <description><![CDATA[Retrieve attachment objects for list table display]]></description>
1303
  <long-description><![CDATA[<p>Supports prepare_items in class-mla-list-table.php.
1304
  Modeled after wp_edit_attachments_query in wp-admin/post.php</p>]]></long-description>
1305
- <tag line="1359" name="since" description="0.1"/>
1306
- <tag line="1359" name="param" description="query parameters from web page, usually found in $_REQUEST" type="array" variable="$request">
1307
  <type by_reference="false">array</type>
1308
  </tag>
1309
- <tag line="1359" name="param" description="number of rows to skip over to reach desired page" type="int" variable="$offset">
1310
  <type by_reference="false">int</type>
1311
  </tag>
1312
- <tag line="1359" name="param" description="number of rows on each page" type="int" variable="$count">
1313
  <type by_reference="false">int</type>
1314
  </tag>
1315
- <tag line="1359" name="return" description="attachment objects (posts) including parent data, meta data and references" type="array">
1316
  <type by_reference="false">array</type>
1317
  </tag>
1318
  </docblock>
1319
- <argument line="1373">
1320
  <name>$request</name>
1321
  <default><![CDATA[]]></default>
1322
  <type/>
1323
  </argument>
1324
- <argument line="1373">
1325
  <name>$offset</name>
1326
  <default><![CDATA[]]></default>
1327
  <type/>
1328
  </argument>
1329
- <argument line="1373">
1330
  <name>$count</name>
1331
  <default><![CDATA[]]></default>
1332
  <type/>
1333
  </argument>
1334
  </method>
1335
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="1419" package="Media Library Assistant">
1336
  <name>mla_query_media_modal_items</name>
1337
  <full_name>mla_query_media_modal_items</full_name>
1338
- <docblock line="1406">
1339
  <description><![CDATA[Retrieve attachment objects for the WordPress Media Manager]]></description>
1340
  <long-description><![CDATA[<p>Supports month-year and taxonomy-term filters as well as the enhanced search box</p>]]></long-description>
1341
- <tag line="1406" name="since" description="1.20"/>
1342
- <tag line="1406" name="param" description="query parameters from Media Manager" type="array" variable="$request">
1343
  <type by_reference="false">array</type>
1344
  </tag>
1345
- <tag line="1406" name="param" description="number of rows to skip over to reach desired page" type="int" variable="$offset">
1346
  <type by_reference="false">int</type>
1347
  </tag>
1348
- <tag line="1406" name="param" description="number of rows on each page" type="int" variable="$count">
1349
  <type by_reference="false">int</type>
1350
  </tag>
1351
- <tag line="1406" name="return" description="attachment objects (posts)" type="array">
1352
  <type by_reference="false">array</type>
1353
  </tag>
1354
  </docblock>
1355
- <argument line="1419">
1356
  <name>$request</name>
1357
  <default><![CDATA[]]></default>
1358
  <type/>
1359
  </argument>
1360
- <argument line="1419">
1361
  <name>$offset</name>
1362
  <default><![CDATA[]]></default>
1363
  <type/>
1364
  </argument>
1365
- <argument line="1419">
1366
  <name>$count</name>
1367
  <default><![CDATA[]]></default>
1368
  <type/>
1369
  </argument>
1370
  </method>
1371
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="1483" package="Media Library Assistant">
1372
  <name>_prepare_list_table_query</name>
1373
  <full_name>_prepare_list_table_query</full_name>
1374
- <docblock line="1469">
1375
  <description><![CDATA[Sanitize and expand query arguments from request variables]]></description>
1376
  <long-description><![CDATA[<p>Prepare the arguments for WP_Query.
1377
  Modeled after wp_edit_attachments_query in wp-admin/post.php</p>]]></long-description>
1378
- <tag line="1469" name="since" description="0.1"/>
1379
- <tag line="1469" name="param" description="query parameters from web page, usually found in $_REQUEST" type="array" variable="$raw_request">
1380
  <type by_reference="false">array</type>
1381
  </tag>
1382
- <tag line="1469" name="param" description="Optional number of rows (default 0) to skip over to reach desired page" type="int" variable="$offset">
1383
  <type by_reference="false">int</type>
1384
  </tag>
1385
- <tag line="1469" name="param" description="Optional number of rows on each page (0 = all rows, default)" type="int" variable="$count">
1386
  <type by_reference="false">int</type>
1387
  </tag>
1388
- <tag line="1469" name="return" description="revised arguments suitable for WP_Query" type="array">
1389
  <type by_reference="false">array</type>
1390
  </tag>
1391
  </docblock>
1392
- <argument line="1483">
1393
  <name>$raw_request</name>
1394
  <default><![CDATA[]]></default>
1395
  <type/>
1396
  </argument>
1397
- <argument line="1483">
1398
  <name>$offset</name>
1399
  <default><![CDATA[0]]></default>
1400
  <type/>
1401
  </argument>
1402
- <argument line="1483">
1403
  <name>$count</name>
1404
  <default><![CDATA[0]]></default>
1405
  <type/>
1406
  </argument>
1407
  </method>
1408
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="1880" package="Media Library Assistant">
1409
  <name>_execute_list_table_query</name>
1410
  <full_name>_execute_list_table_query</full_name>
1411
- <docblock line="1871">
1412
  <description><![CDATA[Add filters, run query, remove filters]]></description>
1413
  <long-description><![CDATA[]]></long-description>
1414
- <tag line="1871" name="since" description="0.30"/>
1415
- <tag line="1871" name="param" description="query parameters from web page, usually found in $_REQUEST" type="array" variable="$request">
1416
  <type by_reference="false">array</type>
1417
  </tag>
1418
- <tag line="1871" name="return" description="WP_Query object with query results" type="object">
1419
  <type by_reference="false">object</type>
1420
  </tag>
1421
  </docblock>
1422
- <argument line="1880">
1423
  <name>$request</name>
1424
  <default><![CDATA[]]></default>
1425
  <type/>
1426
  </argument>
1427
  </method>
1428
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="1983" package="Media Library Assistant">
1429
  <name>mla_search_terms_tidy</name>
1430
  <full_name>mla_search_terms_tidy</full_name>
1431
- <docblock line="1972">
1432
  <description><![CDATA[Replaces a WordPress function deprecated in v3.7]]></description>
1433
  <long-description><![CDATA[<p>Defined as public because it's a callback from array_map().</p>]]></long-description>
1434
- <tag line="1972" name="since" description="1.51"/>
1435
- <tag line="1972" name="param" description="search term before modification" type="string" variable="$term">
1436
  <type by_reference="false">string</type>
1437
  </tag>
1438
- <tag line="1972" name="return" description="cleaned up search term" type="string">
1439
  <type by_reference="false">string</type>
1440
  </tag>
1441
  </docblock>
1442
- <argument line="1983">
1443
  <name>$term</name>
1444
  <default><![CDATA[]]></default>
1445
  <type/>
1446
  </argument>
1447
  </method>
1448
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="1999" package="Media Library Assistant">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1449
  <name>mla_query_posts_search_filter</name>
1450
  <full_name>mla_query_posts_search_filter</full_name>
1451
- <docblock line="1987">
1452
  <description><![CDATA[Adds a keyword search to the WHERE clause, if required]]></description>
1453
  <long-description><![CDATA[<p>Defined as public because it's a filter.</p>]]></long-description>
1454
- <tag line="1987" name="since" description="0.60"/>
1455
- <tag line="1987" name="param" description="query clause before modification" type="string" variable="$search_string">
1456
  <type by_reference="false">string</type>
1457
  </tag>
1458
- <tag line="1987" name="param" description="WP_Query object" type="object" variable="$query_object">
1459
  <type by_reference="false">object</type>
1460
  </tag>
1461
- <tag line="1987" name="return" description="query clause after keyword search addition" type="string">
1462
  <type by_reference="false">string</type>
1463
  </tag>
1464
  </docblock>
1465
- <argument line="1999">
1466
  <name>$search_string</name>
1467
  <default><![CDATA[]]></default>
1468
  <type/>
1469
  </argument>
1470
- <argument line="1999">
1471
  <name>$query_object</name>
1472
  <default><![CDATA[]]></default>
1473
  <type/>
1474
  </argument>
1475
  </method>
1476
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="2269" package="Media Library Assistant">
1477
  <name>mla_query_posts_where_filter</name>
1478
  <full_name>mla_query_posts_where_filter</full_name>
1479
- <docblock line="2257">
1480
  <description><![CDATA[Adds/modifies the WHERE clause for meta values, LIKE patterns and detached items]]></description>
1481
  <long-description><![CDATA[<p>Modeled after _edit_attachments_query_helper in wp-admin/post.php.
1482
  Defined as public because it's a filter.</p>]]></long-description>
1483
- <tag line="2257" name="since" description="0.1"/>
1484
- <tag line="2257" name="param" description="query clause before modification" type="string" variable="$where_clause">
1485
  <type by_reference="false">string</type>
1486
  </tag>
1487
- <tag line="2257" name="return" description="query clause after modification" type="string">
1488
  <type by_reference="false">string</type>
1489
  </tag>
1490
  </docblock>
1491
- <argument line="2269">
1492
  <name>$where_clause</name>
1493
  <default><![CDATA[]]></default>
1494
  <type/>
1495
  </argument>
1496
  </method>
1497
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="2337" package="Media Library Assistant">
1498
  <name>mla_query_posts_join_filter</name>
1499
  <full_name>mla_query_posts_join_filter</full_name>
1500
- <docblock line="2326">
1501
  <description><![CDATA[Adds a JOIN clause, if required, to handle sorting/searching on custom fields or ALT Text]]></description>
1502
  <long-description><![CDATA[<p>Defined as public because it's a filter.</p>]]></long-description>
1503
- <tag line="2326" name="since" description="0.30"/>
1504
- <tag line="2326" name="param" description="query clause before modification" type="string" variable="$join_clause">
1505
  <type by_reference="false">string</type>
1506
  </tag>
1507
- <tag line="2326" name="return" description="query clause after &quot;LEFT JOIN view ON post_id&quot; item modification" type="string">
1508
  <type by_reference="false">string</type>
1509
  </tag>
1510
  </docblock>
1511
- <argument line="2337">
1512
  <name>$join_clause</name>
1513
  <default><![CDATA[]]></default>
1514
  <type/>
1515
  </argument>
1516
  </method>
1517
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="2392" package="Media Library Assistant">
1518
  <name>mla_query_posts_groupby_filter</name>
1519
  <full_name>mla_query_posts_groupby_filter</full_name>
1520
- <docblock line="2380">
1521
  <description><![CDATA[Adds a GROUPBY clause, if required]]></description>
1522
- <long-description><![CDATA[<p>Taxonomy text queries require a GROUPBY clause.
1523
  Defined as public because it's a filter.</p>]]></long-description>
1524
- <tag line="2380" name="since" description="1.90"/>
1525
- <tag line="2380" name="param" description="query clause before modification" type="string" variable="$groupby_clause">
1526
  <type by_reference="false">string</type>
1527
  </tag>
1528
- <tag line="2380" name="return" description="updated query clause" type="string">
1529
  <type by_reference="false">string</type>
1530
  </tag>
1531
  </docblock>
1532
- <argument line="2392">
1533
  <name>$groupby_clause</name>
1534
  <default><![CDATA[]]></default>
1535
  <type/>
1536
  </argument>
1537
  </method>
1538
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="2414" package="Media Library Assistant">
1539
  <name>mla_query_posts_orderby_filter</name>
1540
  <full_name>mla_query_posts_orderby_filter</full_name>
1541
- <docblock line="2402">
1542
  <description><![CDATA[Adds a ORDERBY clause, if required]]></description>
1543
  <long-description><![CDATA[<p>Expands the range of sort options because the logic in WP_Query is limited.
1544
  Defined as public because it's a filter.</p>]]></long-description>
1545
- <tag line="2402" name="since" description="0.30"/>
1546
- <tag line="2402" name="param" description="query clause before modification" type="string" variable="$orderby_clause">
1547
  <type by_reference="false">string</type>
1548
  </tag>
1549
- <tag line="2402" name="return" description="updated query clause" type="string">
1550
  <type by_reference="false">string</type>
1551
  </tag>
1552
  </docblock>
1553
- <argument line="2414">
1554
  <name>$orderby_clause</name>
1555
  <default><![CDATA[]]></default>
1556
  <type/>
1557
  </argument>
1558
  </method>
1559
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="2492" package="Media Library Assistant">
1560
  <name>mla_query_relevanssi_admin_search_ok_filter</name>
1561
  <full_name>mla_query_relevanssi_admin_search_ok_filter</full_name>
1562
- <docblock line="2482">
1563
  <description><![CDATA[Disable Relevanssi - A Better Search, v3.2 by Mikko Saari
1564
  Defined as public because it's a filter.]]></description>
1565
  <long-description><![CDATA[]]></long-description>
1566
- <tag line="2482" name="since" description="1.80"/>
1567
- <tag line="2482" name="param" description="Default setting" type="boolean" variable="$admin_search_ok">
1568
  <type by_reference="false">boolean</type>
1569
  </tag>
1570
- <tag line="2482" name="return" description="Updated setting" type="boolean">
1571
  <type by_reference="false">boolean</type>
1572
  </tag>
1573
  </docblock>
1574
- <argument line="2492">
1575
  <name>$admin_search_ok</name>
1576
  <default><![CDATA[]]></default>
1577
  <type/>
1578
  </argument>
1579
  </method>
1580
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="2508" package="Media Library Assistant">
1581
  <name>mla_query_posts_clauses_filter</name>
1582
  <full_name>mla_query_posts_clauses_filter</full_name>
1583
- <docblock line="2496">
1584
  <description><![CDATA[Filters all clauses for shortcode queries, pre caching plugins]]></description>
1585
  <long-description><![CDATA[<p>This is for debug purposes only.
1586
  Defined as public because it's a filter.</p>]]></long-description>
1587
- <tag line="2496" name="since" description="1.80"/>
1588
- <tag line="2496" name="param" description="query clauses before modification" type="array" variable="$pieces">
1589
  <type by_reference="false">array</type>
1590
  </tag>
1591
- <tag line="2496" name="return" description="query clauses after modification (none)" type="array">
1592
  <type by_reference="false">array</type>
1593
  </tag>
1594
  </docblock>
1595
- <argument line="2508">
1596
  <name>$pieces</name>
1597
  <default><![CDATA[]]></default>
1598
  <type/>
1599
  </argument>
1600
  </method>
1601
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="2532" package="Media Library Assistant">
1602
  <name>mla_query_posts_clauses_request_filter</name>
1603
  <full_name>mla_query_posts_clauses_request_filter</full_name>
1604
- <docblock line="2520">
1605
  <description><![CDATA[Filters all clauses for shortcode queries, post caching plugins]]></description>
1606
  <long-description><![CDATA[<p>This is for debug purposes only.
1607
  Defined as public because it's a filter.</p>]]></long-description>
1608
- <tag line="2520" name="since" description="1.80"/>
1609
- <tag line="2520" name="param" description="query clauses before modification" type="array" variable="$pieces">
1610
  <type by_reference="false">array</type>
1611
  </tag>
1612
- <tag line="2520" name="return" description="query clauses after modification (none)" type="array">
1613
  <type by_reference="false">array</type>
1614
  </tag>
1615
  </docblock>
1616
- <argument line="2532">
1617
  <name>$pieces</name>
1618
  <default><![CDATA[]]></default>
1619
  <type/>
1620
  </argument>
1621
  </method>
1622
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="2558" package="Media Library Assistant">
1623
  <name>mla_get_attachment_by_id</name>
1624
  <full_name>mla_get_attachment_by_id</full_name>
1625
- <docblock line="2544">
1626
  <description><![CDATA[Retrieve an Attachment array given a $post_id]]></description>
1627
  <long-description><![CDATA[<p>The (associative) array will contain every field that can be found in
1628
  the posts and postmeta tables, and all references to the attachment.</p>]]></long-description>
1629
- <tag line="2544" name="since" description="0.1"/>
1630
- <tag line="2544" name="uses" description="\global\$post" refers="\global\$post"/>
1631
- <tag line="2544" name="param" description="The ID of the attachment post" type="integer" variable="$post_id">
1632
  <type by_reference="false">integer</type>
1633
  </tag>
1634
- <tag line="2544" name="param" description="True to add references, false to skip references" type="boolean" variable="$add_references">
1635
  <type by_reference="false">boolean</type>
1636
  </tag>
1637
- <tag line="2544" name="return" description="NULL on failure else associative array" type="NULL|array">
1638
  <type by_reference="false">NULL</type>
1639
  <type by_reference="false">array</type>
1640
  </tag>
1641
  </docblock>
1642
- <argument line="2558">
1643
  <name>$post_id</name>
1644
  <default><![CDATA[]]></default>
1645
  <type/>
1646
  </argument>
1647
- <argument line="2558">
1648
  <name>$add_references</name>
1649
  <default><![CDATA[true]]></default>
1650
  <type/>
1651
  </argument>
1652
  </method>
1653
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="2614" package="Media Library Assistant">
1654
  <name>mla_fetch_attachment_parent_data</name>
1655
  <full_name>mla_fetch_attachment_parent_data</full_name>
1656
- <docblock line="2605">
1657
  <description><![CDATA[Returns information about an attachment's parent, if found]]></description>
1658
  <long-description><![CDATA[]]></long-description>
1659
- <tag line="2605" name="since" description="0.1"/>
1660
- <tag line="2605" name="param" description="post ID of attachment's parent, if any" type="int" variable="$parent_id">
1661
  <type by_reference="false">int</type>
1662
  </tag>
1663
- <tag line="2605" name="return" description="Parent information; post_date, post_title and post_type" type="array">
1664
  <type by_reference="false">array</type>
1665
  </tag>
1666
  </docblock>
1667
- <argument line="2614">
1668
  <name>$parent_id</name>
1669
  <default><![CDATA[]]></default>
1670
  <type/>
1671
  </argument>
1672
  </method>
1673
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="2664" package="Media Library Assistant">
1674
  <name>_set_array_element</name>
1675
  <full_name>_set_array_element</full_name>
1676
- <docblock line="2653">
1677
  <description><![CDATA[Adds or replaces the value of a key in a possibly nested array structure]]></description>
1678
  <long-description><![CDATA[]]></long-description>
1679
- <tag line="2653" name="since" description="1.51"/>
1680
- <tag line="2653" name="param" description="key value, e.g. array1.array2.element" type="string" variable="$needle">
1681
  <type by_reference="false">string</type>
1682
  </tag>
1683
- <tag line="2653" name="param" description="replacement value, string or array, by reference" type="mixed" variable="$value">
1684
  <type by_reference="false">mixed</type>
1685
  </tag>
1686
- <tag line="2653" name="param" description="PHP nested arrays, by reference" type="array" variable="$haystack">
1687
  <type by_reference="false">array</type>
1688
  </tag>
1689
- <tag line="2653" name="return" description="true if $needle element set, false if not" type="boolean">
1690
  <type by_reference="false">boolean</type>
1691
  </tag>
1692
  </docblock>
1693
- <argument line="2664">
1694
  <name>$needle</name>
1695
  <default><![CDATA[]]></default>
1696
  <type/>
1697
  </argument>
1698
- <argument line="2664">
1699
  <name>$value</name>
1700
  <default><![CDATA[]]></default>
1701
  <type/>
1702
  </argument>
1703
- <argument line="2664">
1704
  <name>$haystack</name>
1705
  <default><![CDATA[]]></default>
1706
  <type/>
1707
  </argument>
1708
  </method>
1709
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="2698" package="Media Library Assistant">
1710
  <name>_unset_array_element</name>
1711
  <full_name>_unset_array_element</full_name>
1712
- <docblock line="2688">
1713
  <description><![CDATA[Deletes the value of a key in a possibly nested array structure]]></description>
1714
  <long-description><![CDATA[]]></long-description>
1715
- <tag line="2688" name="since" description="1.51"/>
1716
- <tag line="2688" name="param" description="key value, e.g. array1.array2.element" type="string" variable="$needle">
1717
  <type by_reference="false">string</type>
1718
  </tag>
1719
- <tag line="2688" name="param" description="PHP nested arrays, by reference" type="array" variable="$haystack">
1720
  <type by_reference="false">array</type>
1721
  </tag>
1722
- <tag line="2688" name="return" description="true if $needle element found, false if not" type="boolean">
1723
  <type by_reference="false">boolean</type>
1724
  </tag>
1725
  </docblock>
1726
- <argument line="2698">
1727
  <name>$needle</name>
1728
  <default><![CDATA[]]></default>
1729
  <type/>
1730
  </argument>
1731
- <argument line="2698">
1732
  <name>$haystack</name>
1733
  <default><![CDATA[]]></default>
1734
  <type/>
1735
  </argument>
1736
  </method>
1737
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="2733" package="Media Library Assistant">
1738
  <name>mla_find_array_element</name>
1739
  <full_name>mla_find_array_element</full_name>
1740
- <docblock line="2718">
1741
  <description><![CDATA[Finds the value of a key in a possibly nested array structure]]></description>
1742
  <long-description><![CDATA[<p>Used primarily to extract fields from the _wp_attachment_metadata custom field.
1743
  Could also be used with the ID3 metadata exposed in WordPress 3.6 and later.</p>]]></long-description>
1744
- <tag line="2718" name="since" description="1.30"/>
1745
- <tag line="2718" name="param" description="key value, e.g. array1.array2.element" type="string" variable="$needle">
1746
  <type by_reference="false">string</type>
1747
  </tag>
1748
- <tag line="2718" name="param" description="PHP nested arrays" type="array" variable="$haystack">
1749
  <type by_reference="false">array</type>
1750
  </tag>
1751
- <tag line="2718" name="param" description="data option 'text'|'single'|'export'|'array'|'multi'" type="string" variable="$option">
1752
  <type by_reference="false">string</type>
1753
  </tag>
1754
- <tag line="2718" name="param" description="keep existing values - for 'multi' option" type="boolean" variable="$keep_existing">
1755
  <type by_reference="false">boolean</type>
1756
  </tag>
1757
- <tag line="2718" name="return" description="string or array value matching key(.key ...) or ''" type="mixed">
1758
  <type by_reference="false">mixed</type>
1759
  </tag>
1760
  </docblock>
1761
- <argument line="2733">
1762
  <name>$needle</name>
1763
  <default><![CDATA[]]></default>
1764
  <type/>
1765
  </argument>
1766
- <argument line="2733">
1767
  <name>$haystack</name>
1768
  <default><![CDATA[]]></default>
1769
  <type/>
1770
  </argument>
1771
- <argument line="2733">
1772
  <name>$option</name>
1773
  <default><![CDATA[]]></default>
1774
  <type/>
1775
  </argument>
1776
- <argument line="2733">
1777
  <name>$keep_existing</name>
1778
  <default><![CDATA[false]]></default>
1779
  <type/>
1780
  </argument>
1781
  </method>
1782
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="2786" package="Media Library Assistant">
1783
  <name>mla_fetch_attachment_metadata</name>
1784
  <full_name>mla_fetch_attachment_metadata</full_name>
1785
- <docblock line="2774">
1786
  <description><![CDATA[Fetch and filter meta data for an attachment]]></description>
1787
  <long-description><![CDATA[<p>Returns a filtered array of a post's meta data. Internal values beginning with '<em>'
1788
  are stripped out or converted to an 'mla</em>' equivalent.</p>]]></long-description>
1789
- <tag line="2774" name="since" description="0.1"/>
1790
- <tag line="2774" name="param" description="post ID of attachment" type="int" variable="$post_id">
1791
  <type by_reference="false">int</type>
1792
  </tag>
1793
- <tag line="2774" name="return" description="Meta data variables" type="array">
1794
  <type by_reference="false">array</type>
1795
  </tag>
1796
  </docblock>
1797
- <argument line="2786">
1798
  <name>$post_id</name>
1799
  <default><![CDATA[]]></default>
1800
  <type/>
1801
  </argument>
1802
  </method>
1803
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="2872" package="Media Library Assistant">
1804
  <name>mla_fetch_attachment_references</name>
1805
  <full_name>mla_fetch_attachment_references</full_name>
1806
- <docblock line="2858">
1807
  <description><![CDATA[Find Featured Image and inserted image/link references to an attachment]]></description>
1808
  <long-description><![CDATA[<p>Searches all post and page content to see if the attachment is used
1809
  as a Featured Image or inserted in the post as an image or link.</p>]]></long-description>
1810
- <tag line="2858" name="since" description="0.1"/>
1811
- <tag line="2858" name="param" description="post ID of attachment" type="int" variable="$ID">
1812
  <type by_reference="false">int</type>
1813
  </tag>
1814
- <tag line="2858" name="param" description="post ID of attachment's parent, if any" type="int" variable="$parent">
1815
  <type by_reference="false">int</type>
1816
  </tag>
1817
- <tag line="2858" name="param" description="True to compute references, false to return empty values" type="boolean" variable="$add_references">
1818
  <type by_reference="false">boolean</type>
1819
  </tag>
1820
- <tag line="2858" name="return" description="Reference information; see $references array comments" type="array">
1821
  <type by_reference="false">array</type>
1822
  </tag>
1823
  </docblock>
1824
- <argument line="2872">
1825
  <name>$ID</name>
1826
  <default><![CDATA[]]></default>
1827
  <type/>
1828
  </argument>
1829
- <argument line="2872">
1830
  <name>$parent</name>
1831
  <default><![CDATA[]]></default>
1832
  <type/>
1833
  </argument>
1834
- <argument line="2872">
1835
  <name>$add_references</name>
1836
  <default><![CDATA[true]]></default>
1837
  <type/>
1838
  </argument>
1839
  </method>
1840
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="3202" package="Media Library Assistant">
1841
  <name>mla_attachment_array_fetch_references</name>
1842
  <full_name>mla_attachment_array_fetch_references</full_name>
1843
- <docblock line="3190">
1844
  <description><![CDATA[Add Featured Image and inserted image/link references to an array of attachments]]></description>
1845
  <long-description><![CDATA[<p>Searches all post and page content to see if the attachmenta are used
1846
  as a Featured Image or inserted in the post as an image or link.</p>]]></long-description>
1847
- <tag line="3190" name="since" description="1.94"/>
1848
- <tag line="3190" name="param" description="WP_Post objects, passed by reference" type="array" variable="$attachments">
1849
  <type by_reference="false">array</type>
1850
  </tag>
1851
- <tag line="3190" name="return" description="updates WP_Post objects with new mla_references property" type="void">
1852
  <type by_reference="false">void</type>
1853
  </tag>
1854
  </docblock>
1855
- <argument line="3202">
1856
  <name>$attachments</name>
1857
  <default><![CDATA[]]></default>
1858
  <type/>
1859
  </argument>
1860
  </method>
1861
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="3576" package="Media Library Assistant">
1862
  <name>mla_flush_mla_galleries</name>
1863
  <full_name>mla_flush_mla_galleries</full_name>
1864
- <docblock line="3567">
1865
  <description><![CDATA[Invalidates the $mla_galleries or $galleries array and cached values]]></description>
1866
  <long-description><![CDATA[]]></long-description>
1867
- <tag line="3567" name="since" description="1.00"/>
1868
- <tag line="3567" name="param" description="name of the gallery's cache/option variable" type="string" variable="$option_name">
1869
  <type by_reference="false">string</type>
1870
  </tag>
1871
- <tag line="3567" name="return" description="" type="void">
1872
  <type by_reference="false">void</type>
1873
  </tag>
1874
  </docblock>
1875
- <argument line="3576">
1876
  <name>$option_name</name>
1877
  <default><![CDATA[]]></default>
1878
  <type/>
1879
  </argument>
1880
  </method>
1881
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="3600" package="Media Library Assistant">
1882
  <name>mla_save_post_action</name>
1883
  <full_name>mla_save_post_action</full_name>
1884
- <docblock line="3591">
1885
  <description><![CDATA[Invalidates $mla_galleries and $galleries arrays and cached values after post, page or attachment updates]]></description>
1886
  <long-description><![CDATA[]]></long-description>
1887
- <tag line="3591" name="since" description="1.00"/>
1888
- <tag line="3591" name="param" description="ID of post/page/attachment; not used at this time" type="integer" variable="$post_id">
1889
  <type by_reference="false">integer</type>
1890
  </tag>
1891
- <tag line="3591" name="return" description="" type="void">
1892
  <type by_reference="false">void</type>
1893
  </tag>
1894
  </docblock>
1895
- <argument line="3600">
1896
  <name>$post_id</name>
1897
  <default><![CDATA[]]></default>
1898
  <type/>
1899
  </argument>
1900
  </method>
1901
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="3617" package="Media Library Assistant">
1902
  <name>_build_mla_galleries</name>
1903
  <full_name>_build_mla_galleries</full_name>
1904
- <docblock line="3605">
1905
  <description><![CDATA[Builds the $mla_galleries or $galleries array]]></description>
1906
  <long-description><![CDATA[]]></long-description>
1907
- <tag line="3605" name="since" description="0.70"/>
1908
- <tag line="3605" name="param" description="name of the gallery's cache/option variable" type="string" variable="$option_name">
1909
  <type by_reference="false">string</type>
1910
  </tag>
1911
- <tag line="3605" name="param" description="by reference to the private static galleries array variable" type="array" variable="$galleries_array">
1912
  <type by_reference="false">array</type>
1913
  </tag>
1914
- <tag line="3605" name="param" description="the shortcode to be searched for and processed" type="string" variable="$shortcode">
1915
  <type by_reference="false">string</type>
1916
  </tag>
1917
- <tag line="3605" name="param" description="true to exclude revisions from the search" type="boolean" variable="$exclude_revisions">
1918
  <type by_reference="false">boolean</type>
1919
  </tag>
1920
- <tag line="3605" name="return" description="true if the galleries array is not empty" type="boolean">
1921
  <type by_reference="false">boolean</type>
1922
  </tag>
1923
  </docblock>
1924
- <argument line="3617">
1925
  <name>$option_name</name>
1926
  <default><![CDATA[]]></default>
1927
  <type/>
1928
  </argument>
1929
- <argument line="3617">
1930
  <name>$galleries_array</name>
1931
  <default><![CDATA[]]></default>
1932
  <type/>
1933
  </argument>
1934
- <argument line="3617">
1935
  <name>$shortcode</name>
1936
  <default><![CDATA[]]></default>
1937
  <type/>
1938
  </argument>
1939
- <argument line="3617">
1940
  <name>$exclude_revisions</name>
1941
  <default><![CDATA[]]></default>
1942
  <type/>
1943
  </argument>
1944
  </method>
1945
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="3738" package="Media Library Assistant">
1946
  <name>_search_mla_galleries</name>
1947
  <full_name>_search_mla_galleries</full_name>
1948
- <docblock line="3727">
1949
  <description><![CDATA[Search the $mla_galleries or $galleries array]]></description>
1950
  <long-description><![CDATA[]]></long-description>
1951
- <tag line="3727" name="since" description="0.70"/>
1952
- <tag line="3727" name="param" description="by reference to the private static galleries array variable" type="array" variable="$galleries_array">
1953
  <type by_reference="false">array</type>
1954
  </tag>
1955
- <tag line="3727" name="param" description="the attachment ID to be searched for and processed" type="int" variable="$attachment_id">
1956
  <type by_reference="false">int</type>
1957
  </tag>
1958
- <tag line="3727" name="return" description="All posts/pages with one or more galleries that include the attachment. The array key is the parent_post ID; each entry contains post_title and post_type." type="array">
1959
  <type by_reference="false">array</type>
1960
  </tag>
1961
  </docblock>
1962
- <argument line="3738">
1963
  <name>$galleries_array</name>
1964
  <default><![CDATA[]]></default>
1965
  <type/>
1966
  </argument>
1967
- <argument line="3738">
1968
  <name>$attachment_id</name>
1969
  <default><![CDATA[]]></default>
1970
  <type/>
1971
  </argument>
1972
  </method>
1973
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="3777" package="Media Library Assistant">
1974
- <name>_parse_pdf_xref_subsection</name>
1975
- <full_name>_parse_pdf_xref_subsection</full_name>
1976
- <docblock line="3764">
1977
- <description><![CDATA[Parse a cross-reference table subsection into the array of indirect object definitions]]></description>
1978
- <long-description><![CDATA[<p>A cross-reference subsection is a sequence of 20-byte entries, each with offset and generation values.</p>]]></long-description>
1979
- <tag line="3764" name="since" description="1.50"/>
1980
- <tag line="3764" name="param" description="buffer containing the subsection" type="string" variable="$xref_section">
1981
- <type by_reference="false">string</type>
1982
- </tag>
1983
- <tag line="3764" name="param" description="offset within the buffer of the first entry" type="integer" variable="$offset">
1984
- <type by_reference="false">integer</type>
1985
- </tag>
1986
- <tag line="3764" name="param" description="number of the first object in the subsection" type="integer" variable="$object_id">
1987
- <type by_reference="false">integer</type>
1988
- </tag>
1989
- <tag line="3764" name="param" description="number of entries in the subsection" type="integer" variable="$count">
1990
- <type by_reference="false">integer</type>
1991
- </tag>
1992
- <tag line="3764" name="return" description="" type="void">
1993
- <type by_reference="false">void</type>
1994
- </tag>
1995
- </docblock>
1996
- <argument line="3777">
1997
- <name>$xref_section</name>
1998
- <default><![CDATA[]]></default>
1999
- <type/>
2000
- </argument>
2001
- <argument line="3777">
2002
- <name>$offset</name>
2003
- <default><![CDATA[]]></default>
2004
- <type/>
2005
- </argument>
2006
- <argument line="3777">
2007
- <name>$object_id</name>
2008
- <default><![CDATA[]]></default>
2009
- <type/>
2010
- </argument>
2011
- <argument line="3777">
2012
- <name>$count</name>
2013
- <default><![CDATA[]]></default>
2014
- <type/>
2015
- </argument>
2016
- </method>
2017
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="3809" package="Media Library Assistant">
2018
- <name>_parse_pdf_xref_section</name>
2019
- <full_name>_parse_pdf_xref_section</full_name>
2020
- <docblock line="3798">
2021
- <description><![CDATA[Parse a cross-reference table section into the array of indirect object definitions]]></description>
2022
- <long-description><![CDATA[<p>Creates the array of indirect object offsets and lengths</p>]]></long-description>
2023
- <tag line="3798" name="since" description="1.50"/>
2024
- <tag line="3798" name="param" description="full path and file name" type="string" variable="$file_name">
2025
- <type by_reference="false">string</type>
2026
- </tag>
2027
- <tag line="3798" name="param" description="offset within the file of the xref id and count entry" type="integer" variable="$file_offset">
2028
- <type by_reference="false">integer</type>
2029
- </tag>
2030
- <tag line="3798" name="return" description="length of the section" type="integer">
2031
- <type by_reference="false">integer</type>
2032
- </tag>
2033
- </docblock>
2034
- <argument line="3809">
2035
- <name>$file_name</name>
2036
- <default><![CDATA[]]></default>
2037
- <type/>
2038
- </argument>
2039
- <argument line="3809">
2040
- <name>$file_offset</name>
2041
- <default><![CDATA[]]></default>
2042
- <type/>
2043
- </argument>
2044
- </method>
2045
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="3843" package="Media Library Assistant">
2046
- <name>_parse_pdf_xref_stream</name>
2047
- <full_name>_parse_pdf_xref_stream</full_name>
2048
- <docblock line="3831">
2049
- <description><![CDATA[Parse a cross-reference steam into the array of indirect object definitions]]></description>
2050
- <long-description><![CDATA[<p>Creates the array of indirect object offsets and lengths</p>]]></long-description>
2051
- <tag line="3831" name="since" description="1.50"/>
2052
- <tag line="3831" name="param" description="full path and file name" type="string" variable="$file_name">
2053
- <type by_reference="false">string</type>
2054
- </tag>
2055
- <tag line="3831" name="param" description="offset within the file of the xref id and count entry" type="integer" variable="$file_offset">
2056
- <type by_reference="false">integer</type>
2057
- </tag>
2058
- <tag line="3831" name="param" description="&quot;/W&quot; entry, representing the size of the fields in a single entry" type="string" variable="$entry_parms_string">
2059
- <type by_reference="false">string</type>
2060
- </tag>
2061
- <tag line="3831" name="return" description="length of the stream" type="integer">
2062
- <type by_reference="false">integer</type>
2063
- </tag>
2064
- </docblock>
2065
- <argument line="3843">
2066
- <name>$file_name</name>
2067
- <default><![CDATA[]]></default>
2068
- <type/>
2069
- </argument>
2070
- <argument line="3843">
2071
- <name>$file_offset</name>
2072
- <default><![CDATA[]]></default>
2073
- <type/>
2074
- </argument>
2075
- <argument line="3843">
2076
- <name>$entry_parms_string</name>
2077
- <default><![CDATA[]]></default>
2078
- <type/>
2079
- </argument>
2080
- </method>
2081
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="3922" package="Media Library Assistant">
2082
- <name>_build_pdf_indirect_objects</name>
2083
- <full_name>_build_pdf_indirect_objects</full_name>
2084
- <docblock line="3912">
2085
- <description><![CDATA[Build an array of indirect object definitions]]></description>
2086
- <long-description><![CDATA[<p>Creates the array of indirect object offsets and lengths</p>]]></long-description>
2087
- <tag line="3912" name="since" description="1.50"/>
2088
- <tag line="3912" name="param" description="The entire PDF document, passsed by reference" type="string" variable="$string">
2089
  <type by_reference="false">string</type>
2090
  </tag>
2091
- <tag line="3912" name="return" description="" type="void">
2092
- <type by_reference="false">void</type>
2093
- </tag>
2094
- </docblock>
2095
- <argument line="3922">
2096
- <name>$string</name>
2097
- <default><![CDATA[]]></default>
2098
- <type/>
2099
- </argument>
2100
- </method>
2101
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="3970" package="Media Library Assistant">
2102
- <name>_find_pdf_indirect_dictionary</name>
2103
- <full_name>_find_pdf_indirect_dictionary</full_name>
2104
- <docblock line="3956">
2105
- <description><![CDATA[Find the offset, length and contents of an indirect object containing a dictionary]]></description>
2106
- <long-description><![CDATA[<p>The function searches the entire file, if necessary, to find the last/most recent copy of the object.
2107
- This is required because Adobe Acrobat does NOT increment the generation number when it reuses an object.</p>]]></long-description>
2108
- <tag line="3956" name="since" description="1.50"/>
2109
- <tag line="3956" name="param" description="full path and file name" type="string" variable="$file_name">
2110
  <type by_reference="false">string</type>
2111
  </tag>
2112
- <tag line="3956" name="param" description="The object number" type="integer" variable="$object">
2113
- <type by_reference="false">integer</type>
2114
- </tag>
2115
- <tag line="3956" name="param" description="The object generation number; default zero (0)" type="integer" variable="$generation">
2116
- <type by_reference="false">integer</type>
2117
- </tag>
2118
- <tag line="3956" name="return" description="NULL on failure else array( 'start' =&gt; offset in the file, 'length' =&gt; object length, 'content' =&gt; dictionary contents )" type="mixed">
2119
- <type by_reference="false">mixed</type>
2120
- </tag>
2121
  </docblock>
2122
- <argument line="3970">
2123
- <name>$file_name</name>
2124
- <default><![CDATA[]]></default>
2125
- <type/>
2126
- </argument>
2127
- <argument line="3970">
2128
- <name>$object</name>
2129
  <default><![CDATA[]]></default>
2130
  <type/>
2131
  </argument>
2132
- <argument line="3970">
2133
- <name>$generation</name>
2134
- <default><![CDATA[0]]></default>
2135
- <type/>
2136
- </argument>
2137
  </method>
2138
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="4067" package="Media Library Assistant">
2139
  <name>_parse_iso8601_date</name>
2140
  <full_name>_parse_iso8601_date</full_name>
2141
- <docblock line="4058">
2142
  <description><![CDATA[Parse a ISO 8601 Timestamp]]></description>
2143
  <long-description><![CDATA[]]></long-description>
2144
- <tag line="4058" name="since" description="1.50"/>
2145
- <tag line="4058" name="param" description="ISO string of the form YYYY-MM-DDTHH:MM:SS-HH:MM (inc time zone)" type="string" variable="$source_string">
2146
- <type by_reference="false">string</type>
2147
- </tag>
2148
- <tag line="4058" name="return" description="formatted date string YYYY-MM-DD HH:mm:SS" type="string">
2149
- <type by_reference="false">string</type>
2150
- </tag>
2151
- </docblock>
2152
- <argument line="4067">
2153
- <name>$source_string</name>
2154
- <default><![CDATA[]]></default>
2155
- <type/>
2156
- </argument>
2157
- </method>
2158
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="4090" package="Media Library Assistant">
2159
- <name>_parse_pdf_date</name>
2160
- <full_name>_parse_pdf_date</full_name>
2161
- <docblock line="4081">
2162
- <description><![CDATA[Parse a PDF date string]]></description>
2163
- <long-description><![CDATA[]]></long-description>
2164
- <tag line="4081" name="since" description="1.50"/>
2165
- <tag line="4081" name="param" description="PDF date string of the form D:YYYYMMDDHHmmSSOHH'mm" type="string" variable="$source_string">
2166
  <type by_reference="false">string</type>
2167
  </tag>
2168
- <tag line="4081" name="return" description="formatted date string YYYY-MM-DD HH:mm:SS" type="string">
2169
  <type by_reference="false">string</type>
2170
  </tag>
2171
  </docblock>
2172
- <argument line="4090">
2173
  <name>$source_string</name>
2174
  <default><![CDATA[]]></default>
2175
  <type/>
2176
  </argument>
2177
  </method>
2178
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="4113" package="Media Library Assistant">
2179
- <name>_parse_pdf_UTF16BE</name>
2180
- <full_name>_parse_pdf_UTF16BE</full_name>
2181
- <docblock line="4104">
2182
- <description><![CDATA[Parse a PDF Unicode (16-bit Big Endian) object]]></description>
2183
  <long-description><![CDATA[]]></long-description>
2184
- <tag line="4104" name="since" description="1.50"/>
2185
- <tag line="4104" name="param" description="PDF string of 16-bit characters" type="string" variable="$source_string">
2186
- <type by_reference="false">string</type>
2187
- </tag>
2188
- <tag line="4104" name="return" description="UTF-8 encoded string" type="string">
2189
- <type by_reference="false">string</type>
2190
- </tag>
2191
- </docblock>
2192
- <argument line="4113">
2193
- <name>$source_string</name>
2194
- <default><![CDATA[]]></default>
2195
- <type/>
2196
- </argument>
2197
- </method>
2198
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="4142" package="Media Library Assistant">
2199
- <name>_parse_pdf_string</name>
2200
- <full_name>_parse_pdf_string</full_name>
2201
- <docblock line="4129">
2202
- <description><![CDATA[Parse a PDF string object]]></description>
2203
- <long-description><![CDATA[<p>Returns an array with one dictionary entry. The array also has a '/length' element containing
2204
- the number of bytes occupied by the string in the source string, including the enclosing parentheses.</p>]]></long-description>
2205
- <tag line="4129" name="since" description="1.50"/>
2206
- <tag line="4129" name="param" description="data within which the string occurs" type="string" variable="$source_string">
2207
- <type by_reference="false">string</type>
2208
- </tag>
2209
- <tag line="4129" name="param" description="offset within the source string of the opening '(' character." type="integer" variable="$offset">
2210
- <type by_reference="false">integer</type>
2211
- </tag>
2212
- <tag line="4129" name="return" description="( key =&gt; array( 'type' =&gt; type, 'value' =&gt; value, '/length' =&gt; length ) ) for the string" type="array">
2213
- <type by_reference="false">array</type>
2214
- </tag>
2215
- </docblock>
2216
- <argument line="4142">
2217
- <name>$source_string</name>
2218
- <default><![CDATA[]]></default>
2219
- <type/>
2220
- </argument>
2221
- <argument line="4142">
2222
- <name>$offset</name>
2223
- <default><![CDATA[]]></default>
2224
- <type/>
2225
- </argument>
2226
- </method>
2227
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="4236" package="Media Library Assistant">
2228
- <name>_parse_pdf_LPD_dictionary</name>
2229
- <full_name>_parse_pdf_LPD_dictionary</full_name>
2230
- <docblock line="4222">
2231
- <description><![CDATA[Parse a PDF Linearization Parameter Dictionary object]]></description>
2232
- <long-description><![CDATA[<p>Returns an array of dictionary contents, classified by object type: boolean, numeric, string, hex (string),
2233
- indirect (object), name, array, dictionary, stream, and null.
2234
- The array also has a '/length' element containing the number of bytes occupied by the
2235
- dictionary in the source string, excluding the enclosing delimiters, if passed in.</p>]]></long-description>
2236
- <tag line="4222" name="since" description="1.50"/>
2237
- <tag line="4222" name="param" description="data within which the object occurs, typically the start of a PDF document" type="string" variable="$source_string">
2238
- <type by_reference="false">string</type>
2239
- </tag>
2240
- <tag line="4222" name="param" description="filesize of the PDF document, for validation purposes, or zero (0) to ignore filesize" type="integer" variable="$filesize">
2241
- <type by_reference="false">integer</type>
2242
- </tag>
2243
- <tag line="4222" name="return" description="array of dictionary objects on success, false on failure" type="mixed">
2244
- <type by_reference="false">mixed</type>
2245
- </tag>
2246
- </docblock>
2247
- <argument line="4236">
2248
- <name>$source_string</name>
2249
- <default><![CDATA[]]></default>
2250
- <type/>
2251
- </argument>
2252
- <argument line="4236">
2253
- <name>$filesize</name>
2254
- <default><![CDATA[]]></default>
2255
- <type/>
2256
- </argument>
2257
- </method>
2258
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="4261" package="Media Library Assistant">
2259
- <name>_parse_pdf_dictionary</name>
2260
- <full_name>_parse_pdf_dictionary</full_name>
2261
- <docblock line="4247">
2262
- <description><![CDATA[Parse a PDF dictionary object]]></description>
2263
- <long-description><![CDATA[<p>Returns an array of dictionary contents, classified by object type: boolean, numeric, string, hex (string),
2264
- indirect (object), name, array, dictionary, stream, and null.
2265
- The array also has a '/length' element containing the number of bytes occupied by the
2266
- dictionary in the source string, excluding the enclosing delimiters.</p>]]></long-description>
2267
- <tag line="4247" name="since" description="1.50"/>
2268
- <tag line="4247" name="param" description="data within which the string occurs" type="string" variable="$source_string">
2269
- <type by_reference="false">string</type>
2270
- </tag>
2271
- <tag line="4247" name="param" description="offset within the source string of the opening '&lt;&lt;' characters or the first content character." type="integer" variable="$offset">
2272
- <type by_reference="false">integer</type>
2273
- </tag>
2274
- <tag line="4247" name="return" description="( '/length' =&gt; length, key =&gt; array( 'type' =&gt; type, 'value' =&gt; value ) ) for each dictionary field" type="array">
2275
  <type by_reference="false">array</type>
2276
  </tag>
2277
- </docblock>
2278
- <argument line="4261">
2279
- <name>$source_string</name>
2280
- <default><![CDATA[]]></default>
2281
- <type/>
2282
- </argument>
2283
- <argument line="4261">
2284
- <name>$offset</name>
2285
- <default><![CDATA[]]></default>
2286
- <type/>
2287
- </argument>
2288
- </method>
2289
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="4393" package="Media Library Assistant">
2290
- <name>_parse_xmp_metadata</name>
2291
- <full_name>_parse_xmp_metadata</full_name>
2292
- <docblock line="4379">
2293
- <description><![CDATA[Parse an XMP object]]></description>
2294
- <long-description><![CDATA[<p>Returns an array of dictionary contents, classified by object type: boolean, numeric, string, hex (string),
2295
- indirect (object), name, array, dictionary, stream, and null.
2296
- The array also has a '/length' element containing the number of bytes occupied by the
2297
- dictionary in the source string, excluding the enclosing delimiters, if passed in.</p>]]></long-description>
2298
- <tag line="4379" name="since" description="1.50"/>
2299
- <tag line="4379" name="param" description="full path and file name" type="string" variable="$file_name">
2300
- <type by_reference="false">string</type>
2301
- </tag>
2302
- <tag line="4379" name="param" description="offset within the file of the search start point" type="integer" variable="$file_offset">
2303
- <type by_reference="false">integer</type>
2304
- </tag>
2305
- <tag line="4379" name="return" description="array of metadata values or NULL on failure" type="mixed">
2306
  <type by_reference="false">mixed</type>
2307
  </tag>
2308
  </docblock>
2309
- <argument line="4393">
2310
- <name>$file_name</name>
2311
- <default><![CDATA[]]></default>
2312
- <type/>
2313
- </argument>
2314
- <argument line="4393">
2315
- <name>$file_offset</name>
2316
  <default><![CDATA[]]></default>
2317
  <type/>
2318
  </argument>
2319
  </method>
2320
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="4682" package="Media Library Assistant">
2321
- <name>_extract_pdf_trailer</name>
2322
- <full_name>_extract_pdf_trailer</full_name>
2323
- <docblock line="4672">
2324
- <description><![CDATA[Extract dictionary from traditional cross-reference + trailer documents]]></description>
2325
  <long-description><![CDATA[]]></long-description>
2326
- <tag line="4672" name="since" description="1.50"/>
2327
- <tag line="4672" name="param" description="full path to the desired file" type="string" variable="$file_name">
2328
  <type by_reference="false">string</type>
2329
  </tag>
2330
- <tag line="4672" name="param" description="offset within file of the cross-reference table" type="integer" variable="$file_offset">
2331
  <type by_reference="false">integer</type>
2332
  </tag>
2333
- <tag line="4672" name="return" description="array of &quot;PDF dictionary arrays&quot;, newest first, or NULL on failure" type="mixed">
2334
  <type by_reference="false">mixed</type>
2335
  </tag>
2336
  </docblock>
2337
- <argument line="4682">
2338
  <name>$file_name</name>
2339
  <default><![CDATA[]]></default>
2340
  <type/>
2341
  </argument>
2342
- <argument line="4682">
2343
- <name>$file_offset</name>
2344
- <default><![CDATA[]]></default>
2345
- <type/>
2346
- </argument>
2347
- </method>
2348
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="4768" package="Media Library Assistant">
2349
- <name>_extract_pdf_metadata</name>
2350
- <full_name>_extract_pdf_metadata</full_name>
2351
- <docblock line="4759">
2352
- <description><![CDATA[Extract Metadata from a PDF file]]></description>
2353
- <long-description><![CDATA[]]></long-description>
2354
- <tag line="4759" name="since" description="1.50"/>
2355
- <tag line="4759" name="param" description="full path to the desired file" type="string" variable="$file_name">
2356
- <type by_reference="false">string</type>
2357
- </tag>
2358
- <tag line="4759" name="return" description="( key =&gt; value ) for each metadata field, in string format" type="array">
2359
- <type by_reference="false">array</type>
2360
- </tag>
2361
- </docblock>
2362
- <argument line="4768">
2363
- <name>$file_name</name>
2364
  <default><![CDATA[]]></default>
2365
  <type/>
2366
  </argument>
2367
  </method>
2368
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="4901" package="Media Library Assistant">
2369
  <name>_bin_to_utf8</name>
2370
  <full_name>_bin_to_utf8</full_name>
2371
- <docblock line="4892">
2372
  <description><![CDATA[Replace SQL incorrect characters (0x80 - 0xFF) with their UTF-8 equivalents]]></description>
2373
  <long-description><![CDATA[]]></long-description>
2374
- <tag line="4892" name="since" description="1.41"/>
2375
- <tag line="4892" name="param" description="unencoded string" type="string" variable="$string">
2376
  <type by_reference="false">string</type>
2377
  </tag>
2378
- <tag line="4892" name="return" description="UTF-8 encoded string" type="string">
2379
  <type by_reference="false">string</type>
2380
  </tag>
2381
  </docblock>
2382
- <argument line="4901">
2383
  <name>$string</name>
2384
  <default><![CDATA[]]></default>
2385
  <type/>
2386
  </argument>
2387
  </method>
2388
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="5299" package="Media Library Assistant">
2389
  <name>mla_iptc_metadata_value</name>
2390
  <full_name>mla_iptc_metadata_value</full_name>
2391
- <docblock line="5289">
2392
  <description><![CDATA[Parse one IPTC metadata field]]></description>
2393
  <long-description><![CDATA[]]></long-description>
2394
- <tag line="5289" name="since" description="1.41"/>
2395
- <tag line="5289" name="param" description="field name - IPTC Identifier or friendly name/slug" type="string" variable="$iptc_key">
2396
  <type by_reference="false">string</type>
2397
  </tag>
2398
- <tag line="5289" name="param" description="metadata array containing iptc, exif, and pdf metadata arrays" type="string" variable="$item_metadata">
2399
  <type by_reference="false">string</type>
2400
  </tag>
2401
- <tag line="5289" name="return" description="string/array representation of metadata value or an empty string" type="mixed">
2402
  <type by_reference="false">mixed</type>
2403
  </tag>
2404
  </docblock>
2405
- <argument line="5299">
2406
  <name>$iptc_key</name>
2407
  <default><![CDATA[]]></default>
2408
  <type/>
2409
  </argument>
2410
- <argument line="5299">
2411
  <name>$item_metadata</name>
2412
  <default><![CDATA[]]></default>
2413
  <type/>
2414
  </argument>
2415
  </method>
2416
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="5347" package="Media Library Assistant">
2417
  <name>mla_exif_metadata_value</name>
2418
  <full_name>mla_exif_metadata_value</full_name>
2419
- <docblock line="5335">
2420
  <description><![CDATA[Parse one EXIF metadata field]]></description>
2421
  <long-description><![CDATA[<p>Also handles the special pseudo-values 'ALL_EXIF' and 'ALL_IPTC'.</p>]]></long-description>
2422
- <tag line="5335" name="since" description="1.13"/>
2423
- <tag line="5335" name="param" description="field name" type="string" variable="$exif_key">
2424
  <type by_reference="false">string</type>
2425
  </tag>
2426
- <tag line="5335" name="param" description="metadata array containing iptc, exif, and pdf metadata arrays" type="string" variable="$item_metadata">
2427
  <type by_reference="false">string</type>
2428
  </tag>
2429
- <tag line="5335" name="return" description="string/array representation of metadata value or an empty string" type="mixed">
2430
  <type by_reference="false">mixed</type>
2431
  </tag>
2432
  </docblock>
2433
- <argument line="5347">
2434
  <name>$exif_key</name>
2435
  <default><![CDATA[]]></default>
2436
  <type/>
2437
  </argument>
2438
- <argument line="5347">
2439
  <name>$item_metadata</name>
2440
  <default><![CDATA[]]></default>
2441
  <type/>
2442
  </argument>
2443
  </method>
2444
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="5408" package="Media Library Assistant">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2445
  <name>mla_pdf_metadata_value</name>
2446
  <full_name>mla_pdf_metadata_value</full_name>
2447
- <docblock line="5396">
2448
  <description><![CDATA[Parse one PDF metadata field]]></description>
2449
  <long-description><![CDATA[<p>Also handles the special pseudo-value 'ALL_PDF'.</p>]]></long-description>
2450
- <tag line="5396" name="since" description="1.50"/>
2451
- <tag line="5396" name="param" description="field name" type="string" variable="$pdf_key">
2452
  <type by_reference="false">string</type>
2453
  </tag>
2454
- <tag line="5396" name="param" description="metadata array containing iptc, exif, and pdf metadata arrays" type="string" variable="$item_metadata">
2455
  <type by_reference="false">string</type>
2456
  </tag>
2457
- <tag line="5396" name="return" description="string/array representation of metadata value or an empty string" type="mixed">
2458
  <type by_reference="false">mixed</type>
2459
  </tag>
2460
  </docblock>
2461
- <argument line="5408">
2462
  <name>$pdf_key</name>
2463
  <default><![CDATA[]]></default>
2464
  <type/>
2465
  </argument>
2466
- <argument line="5408">
2467
  <name>$item_metadata</name>
2468
  <default><![CDATA[]]></default>
2469
  <type/>
2470
  </argument>
2471
  </method>
2472
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="5450" package="Media Library Assistant">
2473
  <name>_rational_to_decimal</name>
2474
  <full_name>_rational_to_decimal</full_name>
2475
- <docblock line="5441">
2476
  <description><![CDATA[Convert an EXIF GPS rational value to a PHP float value]]></description>
2477
  <long-description><![CDATA[]]></long-description>
2478
- <tag line="5441" name="since" description="1.50"/>
2479
- <tag line="5441" name="param" description="array( 0 =&gt; numerator, 1 =&gt; denominator )" type="array" variable="$rational">
2480
  <type by_reference="false">array</type>
2481
  </tag>
2482
- <tag line="5441" name="return" description="numerator/denominator" type="float">
2483
  <type by_reference="false">float</type>
2484
  </tag>
2485
  </docblock>
2486
- <argument line="5450">
2487
  <name>$rational</name>
2488
  <default><![CDATA[]]></default>
2489
  <type/>
2490
  </argument>
2491
  </method>
2492
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="5467" package="Media Library Assistant">
2493
  <name>_rational_to_string</name>
2494
  <full_name>_rational_to_string</full_name>
2495
- <docblock line="5455">
2496
  <description><![CDATA[Convert an EXIF rational value to a formatted string]]></description>
2497
  <long-description><![CDATA[]]></long-description>
2498
- <tag line="5455" name="since" description="2.02"/>
2499
- <tag line="5455" name="param" description="numerator/denominator" type="string" variable="$rational">
2500
  <type by_reference="false">string</type>
2501
  </tag>
2502
- <tag line="5455" name="param" description="format for integer values" type="string" variable="$integer_format">
2503
  <type by_reference="false">string</type>
2504
  </tag>
2505
- <tag line="5455" name="param" description="format for fractional values from -1 to +1" type="string" variable="$fraction_format">
2506
  <type by_reference="false">string</type>
2507
  </tag>
2508
- <tag line="5455" name="param" description="format for integer.fraction values" type="string" variable="$mixed_format">
2509
  <type by_reference="false">string</type>
2510
  </tag>
2511
- <tag line="5455" name="return" description="formatted value or boolean false if no value available" type="mixed">
2512
  <type by_reference="false">mixed</type>
2513
  </tag>
2514
  </docblock>
2515
- <argument line="5467">
2516
  <name>$rational</name>
2517
  <default><![CDATA[]]></default>
2518
  <type/>
2519
  </argument>
2520
- <argument line="5467">
2521
  <name>$integer_format</name>
2522
  <default><![CDATA[]]></default>
2523
  <type/>
2524
  </argument>
2525
- <argument line="5467">
2526
  <name>$fraction_format</name>
2527
  <default><![CDATA[]]></default>
2528
  <type/>
2529
  </argument>
2530
- <argument line="5467">
2531
  <name>$mixed_format</name>
2532
  <default><![CDATA[]]></default>
2533
  <type/>
2534
  </argument>
2535
  </method>
2536
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="5518" package="Media Library Assistant">
2537
  <name>mla_IPTC_EXIF_error_handler</name>
2538
  <full_name>mla_IPTC_EXIF_error_handler</full_name>
2539
- <docblock line="5506">
2540
  <description><![CDATA[Intercept IPTC and EXIF parse errors]]></description>
2541
  <long-description><![CDATA[]]></long-description>
2542
- <tag line="5506" name="since" description="1.81"/>
2543
- <tag line="5506" name="param" description="the level of the error raised" type="int" variable="$type">
2544
  <type by_reference="false">int</type>
2545
  </tag>
2546
- <tag line="5506" name="param" description="the error message" type="string" variable="$string">
2547
  <type by_reference="false">string</type>
2548
  </tag>
2549
- <tag line="5506" name="param" description="the filename that the error was raised in" type="string" variable="$file">
2550
  <type by_reference="false">string</type>
2551
  </tag>
2552
- <tag line="5506" name="param" description="the line number the error was raised at" type="int" variable="$line">
2553
  <type by_reference="false">int</type>
2554
  </tag>
2555
- <tag line="5506" name="return" description="true, to bypass PHP error handler" type="boolean">
2556
  <type by_reference="false">boolean</type>
2557
  </tag>
2558
  </docblock>
2559
- <argument line="5518">
2560
  <name>$type</name>
2561
  <default><![CDATA[]]></default>
2562
  <type/>
2563
  </argument>
2564
- <argument line="5518">
2565
  <name>$string</name>
2566
  <default><![CDATA[]]></default>
2567
  <type/>
2568
  </argument>
2569
- <argument line="5518">
2570
  <name>$file</name>
2571
  <default><![CDATA[]]></default>
2572
  <type/>
2573
  </argument>
2574
- <argument line="5518">
2575
  <name>$line</name>
2576
  <default><![CDATA[]]></default>
2577
  <type/>
2578
  </argument>
2579
  </method>
2580
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="5556" package="Media Library Assistant">
2581
  <name>mla_fetch_attachment_image_metadata</name>
2582
  <full_name>mla_fetch_attachment_image_metadata</full_name>
2583
- <docblock line="5546">
2584
- <description><![CDATA[Fetch and filter IPTC and EXIF or PDF metadata for an image attachment]]></description>
2585
  <long-description><![CDATA[]]></long-description>
2586
- <tag line="5546" name="since" description="0.90"/>
2587
- <tag line="5546" name="param" description="post ID of attachment" type="int" variable="$post_id">
2588
  <type by_reference="false">int</type>
2589
  </tag>
2590
- <tag line="5546" name="param" description="optional; if $post_id is zero, path to the image file." type="string" variable="$path">
2591
  <type by_reference="false">string</type>
2592
  </tag>
2593
- <tag line="5546" name="return" description="Meta data variables, IPTC and EXIF or PDF" type="array">
2594
  <type by_reference="false">array</type>
2595
  </tag>
2596
  </docblock>
2597
- <argument line="5556">
2598
  <name>$post_id</name>
2599
  <default><![CDATA[]]></default>
2600
  <type/>
2601
  </argument>
2602
- <argument line="5556">
2603
  <name>$path</name>
2604
  <default><![CDATA['']]></default>
2605
  <type/>
2606
  </argument>
2607
  </method>
2608
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="5896" package="Media Library Assistant">
2609
  <name>mla_update_wp_attachment_metadata</name>
2610
  <full_name>mla_update_wp_attachment_metadata</full_name>
2611
- <docblock line="5886">
2612
  <description><![CDATA[Update "meta:" data for a single attachment]]></description>
2613
  <long-description><![CDATA[]]></long-description>
2614
- <tag line="5886" name="since" description="1.51"/>
2615
- <tag line="5886" name="param" description="The current wp_attachment_metadata value" type="array" variable="$current_values">
2616
  <type by_reference="false">array</type>
2617
  </tag>
2618
- <tag line="5886" name="param" description="Field name =&gt; value pairs" type="array" variable="$new_meta">
2619
  <type by_reference="false">array</type>
2620
  </tag>
2621
- <tag line="5886" name="return" description="success/failure message(s); empty string if no changes." type="string">
2622
  <type by_reference="false">string</type>
2623
  </tag>
2624
  </docblock>
2625
- <argument line="5896">
2626
  <name>$current_values</name>
2627
  <default><![CDATA[]]></default>
2628
  <type/>
2629
  </argument>
2630
- <argument line="5896">
2631
  <name>$new_meta</name>
2632
  <default><![CDATA[]]></default>
2633
  <type/>
2634
  </argument>
2635
  </method>
2636
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="5980" package="Media Library Assistant">
2637
  <name>mla_update_item_postmeta</name>
2638
  <full_name>mla_update_item_postmeta</full_name>
2639
- <docblock line="5970">
2640
  <description><![CDATA[Update custom field and "meta:" data for a single attachment]]></description>
2641
  <long-description><![CDATA[]]></long-description>
2642
- <tag line="5970" name="since" description="1.40"/>
2643
- <tag line="5970" name="param" description="The ID of the attachment to be updated" type="int" variable="$post_id">
2644
  <type by_reference="false">int</type>
2645
  </tag>
2646
- <tag line="5970" name="param" description="Field name =&gt; value pairs" type="array" variable="$new_meta">
2647
  <type by_reference="false">array</type>
2648
  </tag>
2649
- <tag line="5970" name="return" description="success/failure message(s)" type="string">
2650
  <type by_reference="false">string</type>
2651
  </tag>
2652
  </docblock>
2653
- <argument line="5980">
2654
  <name>$post_id</name>
2655
  <default><![CDATA[]]></default>
2656
  <type/>
2657
  </argument>
2658
- <argument line="5980">
2659
  <name>$new_meta</name>
2660
  <default><![CDATA[]]></default>
2661
  <type/>
2662
  </argument>
2663
  </method>
2664
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="6147" package="Media Library Assistant">
2665
  <name>mla_update_single_item</name>
2666
  <full_name>mla_update_single_item</full_name>
2667
- <docblock line="6134">
2668
  <description><![CDATA[Update a single item; change the "post" data, taxonomy terms
2669
  and meta data for a single attachment]]></description>
2670
  <long-description><![CDATA[]]></long-description>
2671
- <tag line="6134" name="since" description="0.1"/>
2672
- <tag line="6134" name="param" description="The ID of the attachment to be updated" type="int" variable="$post_id">
2673
  <type by_reference="false">int</type>
2674
  </tag>
2675
- <tag line="6134" name="param" description="Field name =&gt; value pairs" type="array" variable="$new_data">
2676
  <type by_reference="false">array</type>
2677
  </tag>
2678
- <tag line="6134" name="param" description="Optional taxonomy term values, default null" type="array" variable="$tax_input">
2679
  <type by_reference="false">array</type>
2680
  </tag>
2681
- <tag line="6134" name="param" description="Optional taxonomy actions (add, remove, replace), default null" type="array" variable="$tax_actions">
2682
  <type by_reference="false">array</type>
2683
  </tag>
2684
- <tag line="6134" name="return" description="success/failure message and NULL content" type="array">
2685
  <type by_reference="false">array</type>
2686
  </tag>
2687
  </docblock>
2688
- <argument line="6147">
2689
  <name>$post_id</name>
2690
  <default><![CDATA[]]></default>
2691
  <type/>
2692
  </argument>
2693
- <argument line="6147">
2694
  <name>$new_data</name>
2695
  <default><![CDATA[]]></default>
2696
  <type/>
2697
  </argument>
2698
- <argument line="6147">
2699
  <name>$tax_input</name>
2700
  <default><![CDATA[NULL]]></default>
2701
  <type/>
2702
  </argument>
2703
- <argument line="6147">
2704
  <name>$tax_actions</name>
2705
  <default><![CDATA[NULL]]></default>
2706
  <type/>
2707
  </argument>
2708
  </method>
2709
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="6429" package="Media Library Assistant">
2710
  <name>_remove_terms</name>
2711
  <full_name>_remove_terms</full_name>
2712
- <docblock line="6418">
2713
  <description><![CDATA[Remove terms from an attachment's assignments]]></description>
2714
  <long-description><![CDATA[]]></long-description>
2715
- <tag line="6418" name="since" description="0.40"/>
2716
- <tag line="6418" name="param" description="The ID of the attachment to be updated" type="integer" variable="$post_id">
2717
  <type by_reference="false">integer</type>
2718
  </tag>
2719
- <tag line="6418" name="param" description="The term ids (integer array) or names (string array) to remove" type="array" variable="$terms">
2720
  <type by_reference="false">array</type>
2721
  </tag>
2722
- <tag line="6418" name="param" description="The taxonomy object" type="object" variable="$taxonomy_obj">
2723
  <type by_reference="false">object</type>
2724
  </tag>
2725
- <tag line="6418" name="return" description="Term ids/names of the surviving terms" type="array">
2726
  <type by_reference="false">array</type>
2727
  </tag>
2728
  </docblock>
2729
- <argument line="6429">
2730
  <name>$post_id</name>
2731
  <default><![CDATA[]]></default>
2732
  <type/>
2733
  </argument>
2734
- <argument line="6429">
2735
  <name>$terms</name>
2736
  <default><![CDATA[]]></default>
2737
  <type/>
2738
  </argument>
2739
- <argument line="6429">
2740
  <name>$taxonomy_obj</name>
2741
  <default><![CDATA[]]></default>
2742
  <type/>
2743
  </argument>
2744
  </method>
2745
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="6480" package="Media Library Assistant">
2746
- <name>_hex_dump</name>
2747
- <full_name>_hex_dump</full_name>
2748
- <docblock line="6468">
2749
  <description><![CDATA[Format printable version of binary data]]></description>
2750
  <long-description><![CDATA[]]></long-description>
2751
- <tag line="6468" name="since" description="0.90"/>
2752
- <tag line="6468" name="param" description="Binary data" type="string" variable="$data">
2753
  <type by_reference="false">string</type>
2754
  </tag>
2755
- <tag line="6468" name="param" description="Bytes to format, default = 0 (all bytes)" type="integer" variable="$limit">
2756
  <type by_reference="false">integer</type>
2757
  </tag>
2758
- <tag line="6468" name="param" description="Bytes to format on each line" type="\intger" variable="$bytes_per_row">
2759
  <type by_reference="false">\intger</type>
2760
  </tag>
2761
- <tag line="6468" name="param" description="offset of initial byte, or -1 to suppress printing offset information" type="integer" variable="$offset">
2762
  <type by_reference="false">integer</type>
2763
  </tag>
2764
- <tag line="6468" name="return" description="Printable representation of $data" type="string">
2765
  <type by_reference="false">string</type>
2766
  </tag>
2767
  </docblock>
2768
- <argument line="6480">
2769
  <name>$data</name>
2770
  <default><![CDATA[]]></default>
2771
  <type/>
2772
  </argument>
2773
- <argument line="6480">
2774
  <name>$limit</name>
2775
  <default><![CDATA[0]]></default>
2776
  <type/>
2777
  </argument>
2778
- <argument line="6480">
2779
  <name>$bytes_per_row</name>
2780
  <default><![CDATA[16]]></default>
2781
  <type/>
2782
  </argument>
2783
- <argument line="6480">
2784
  <name>$offset</name>
2785
  <default><![CDATA[-1]]></default>
2786
  <type/>
2787
  </argument>
2788
  </method>
2789
  </class>
2790
- <markers>
2791
- <todo line="4122">encode the rest</todo>
2792
- </markers>
2793
  </file>
2794
- <file path="includes\class-mla-edit-media.php" hash="0b17ee9679ca929c7bce3754cf9e63ea" package="Media Library Assistant">
2795
  <docblock line="2">
2796
  <description><![CDATA[Media Library Assistant Edit Media screen enhancements]]></description>
2797
  <long-description><![CDATA[]]></long-description>
@@ -2847,15 +2983,15 @@ and meta data for a single attachment]]></description>
2847
  </tag>
2848
  </docblock>
2849
  </constant>
2850
- <property final="false" static="true" visibility="private" line="680" namespace="global" package="Media Library Assistant">
2851
  <name>$mla_references</name>
2852
  <default><![CDATA[null]]></default>
2853
- <docblock line="670">
2854
  <description><![CDATA[Where-used values for the current item]]></description>
2855
  <long-description><![CDATA[<p>This array contains the Featured/Inserted/Gallery/MLA Gallery references for the item.
2856
  The array is built once each page load and cached for subsequent calls.</p>]]></long-description>
2857
- <tag line="670" name="since" description="0.80"/>
2858
- <tag line="670" name="var" description="" type="array">
2859
  <type by_reference="false">array</type>
2860
  </tag>
2861
  </docblock>
@@ -2884,490 +3020,492 @@ The array is built once each page load and cached for subsequent calls.</p>]]></
2884
  </tag>
2885
  </docblock>
2886
  </method>
2887
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="151" package="Media Library Assistant">
2888
  <name>mla_admin_enqueue_scripts_action</name>
2889
  <full_name>mla_admin_enqueue_scripts_action</full_name>
2890
- <docblock line="142">
2891
  <description><![CDATA[Load the plugin's Style Sheet and Javascript files]]></description>
2892
  <long-description><![CDATA[]]></long-description>
2893
- <tag line="142" name="since" description="1.71"/>
2894
- <tag line="142" name="param" description="Name of the page being loaded" type="string" variable="$page_hook">
2895
  <type by_reference="false">string</type>
2896
  </tag>
2897
- <tag line="142" name="return" description="" type="void">
2898
  <type by_reference="false">void</type>
2899
  </tag>
2900
  </docblock>
2901
- <argument line="151">
2902
  <name>$page_hook</name>
2903
  <default><![CDATA[]]></default>
2904
  <type/>
2905
  </argument>
2906
  </method>
2907
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="240" package="Media Library Assistant">
2908
  <name>mla_upload_post_params</name>
2909
  <full_name>mla_upload_post_params</full_name>
2910
- <docblock line="233">
2911
  <description><![CDATA[Filter the Media/Add New post parameters.]]></description>
2912
  <long-description><![CDATA[]]></long-description>
2913
- <tag line="233" name="since" description="2.02"/>
2914
- <tag line="233" name="param" description="An array of media upload parameters used by Plupload." type="array" variable="$post_parms">
2915
  <type by_reference="false">array</type>
2916
  </tag>
2917
  </docblock>
2918
- <argument line="240">
2919
  <name>$post_parms</name>
2920
  <default><![CDATA[]]></default>
2921
  <type/>
2922
  </argument>
2923
  </method>
2924
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="263" package="Media Library Assistant">
2925
  <name>mla_post_upload_ui</name>
2926
  <full_name>mla_post_upload_ui</full_name>
2927
- <docblock line="253">
2928
  <description><![CDATA[Echoes bulk edit area HTML to the Media/Add New screen]]></description>
2929
  <long-description><![CDATA[<p>Fires on the post upload UI screen; legacy (pre-3.5.0) upload interface.
2930
  Anything echoed here goes below the "Maximum upload file size" message
2931
  and above the id="media-items" div.</p>]]></long-description>
2932
- <tag line="253" name="since" description="2.02"/>
2933
  </docblock>
2934
  </method>
2935
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="428" package="Media Library Assistant">
2936
  <name>mla_update_attachment_metadata_postfilter</name>
2937
  <full_name>mla_update_attachment_metadata_postfilter</full_name>
2938
- <docblock line="414">
2939
  <description><![CDATA[Apply Media/Add New bulk edit area updates, if any]]></description>
2940
  <long-description><![CDATA[<p>This filter is called AFTER MLA mapping rules are applied during
2941
- wp_update_attachment_metadata() processing.</p>]]></long-description>
2942
- <tag line="414" name="since" description="2.02"/>
2943
- <tag line="414" name="param" description="attachment metadata" type="array" variable="$data">
 
 
2944
  <type by_reference="false">array</type>
2945
  </tag>
2946
- <tag line="414" name="param" description="The Post ID of the new/updated attachment" type="integer" variable="$post_id">
2947
  <type by_reference="false">integer</type>
2948
  </tag>
2949
- <tag line="414" name="param" description="Processing options, e.g., 'is_upload'" type="array" variable="$options">
2950
  <type by_reference="false">array</type>
2951
  </tag>
2952
- <tag line="414" name="return" description="updated attachment metadata" type="array">
2953
  <type by_reference="false">array</type>
2954
  </tag>
2955
  </docblock>
2956
- <argument line="428">
2957
  <name>$data</name>
2958
  <default><![CDATA[]]></default>
2959
  <type/>
2960
  </argument>
2961
- <argument line="428">
2962
  <name>$post_id</name>
2963
  <default><![CDATA[]]></default>
2964
  <type/>
2965
  </argument>
2966
- <argument line="428">
2967
  <name>$options</name>
2968
- <default><![CDATA[]]></default>
2969
  <type/>
2970
  </argument>
2971
  </method>
2972
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="480" package="Media Library Assistant">
2973
  <name>mla_post_updated_messages_filter</name>
2974
  <full_name>mla_post_updated_messages_filter</full_name>
2975
- <docblock line="470">
2976
  <description><![CDATA[Adds mapping update messages for display at the top of the Edit Media screen.]]></description>
2977
  <long-description><![CDATA[<p>Declared public because it is a filter.</p>]]></long-description>
2978
- <tag line="470" name="since" description="1.10"/>
2979
- <tag line="470" name="param" description="messages for the Edit screen" type="array" variable="$messages">
2980
  <type by_reference="false">array</type>
2981
  </tag>
2982
- <tag line="470" name="return" description="updated messages" type="array">
2983
  <type by_reference="false">array</type>
2984
  </tag>
2985
  </docblock>
2986
- <argument line="480">
2987
  <name>$messages</name>
2988
  <default><![CDATA[]]></default>
2989
  <type/>
2990
  </argument>
2991
  </method>
2992
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="497" package="Media Library Assistant">
2993
  <name>mla_attachment_submitbox_action</name>
2994
  <full_name>mla_attachment_submitbox_action</full_name>
2995
- <docblock line="489">
2996
  <description><![CDATA[Adds Last Modified date to the Submit box on the Edit Media screen.]]></description>
2997
  <long-description><![CDATA[<p>Declared public because it is an action.</p>]]></long-description>
2998
- <tag line="489" name="since" description="0.80"/>
2999
- <tag line="489" name="return" description="echoes the HTML markup for the label and value" type="void">
3000
  <type by_reference="false">void</type>
3001
  </tag>
3002
  </docblock>
3003
  </method>
3004
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="533" package="Media Library Assistant">
3005
  <name>mla_add_meta_boxes_action</name>
3006
  <full_name>mla_add_meta_boxes_action</full_name>
3007
- <docblock line="522">
3008
  <description><![CDATA[Registers meta boxes for the Edit Media screen.]]></description>
3009
  <long-description><![CDATA[<p>Declared public because it is an action.</p>]]></long-description>
3010
- <tag line="522" name="since" description="0.80"/>
3011
- <tag line="522" name="param" description="type of the current post, e.g., 'attachment' (optional, default 'unknown')" type="string" variable="$post_type">
3012
  <type by_reference="false">string</type>
3013
  </tag>
3014
- <tag line="522" name="param" description="current post (optional, default (object) array ( 'ID' =&gt; 0 ))" type="object" variable="$post">
3015
  <type by_reference="false">object</type>
3016
  </tag>
3017
- <tag line="522" name="return" description="" type="void">
3018
  <type by_reference="false">void</type>
3019
  </tag>
3020
  </docblock>
3021
- <argument line="533">
3022
  <name>$post_type</name>
3023
  <default><![CDATA['unknown']]></default>
3024
  <type/>
3025
  </argument>
3026
- <argument line="533">
3027
  <name>$post</name>
3028
  <default><![CDATA[NULL]]></default>
3029
  <type/>
3030
  </argument>
3031
  </method>
3032
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="630" package="Media Library Assistant">
3033
  <name>mla_edit_add_help_tab</name>
3034
  <full_name>mla_edit_add_help_tab</full_name>
3035
- <docblock line="620">
3036
  <description><![CDATA[Add contextual help tabs to the WordPress Edit Media page]]></description>
3037
  <long-description><![CDATA[]]></long-description>
3038
- <tag line="620" name="since" description="0.90"/>
3039
- <tag line="620" name="param" description="title as shown on the screen" type="string" variable="$admin_title">
3040
  <type by_reference="false">string</type>
3041
  </tag>
3042
- <tag line="620" name="param" description="title as shown in the HTML header" type="string" variable="$title">
3043
  <type by_reference="false">string</type>
3044
  </tag>
3045
- <tag line="620" name="return" description="" type="void">
3046
  <type by_reference="false">void</type>
3047
  </tag>
3048
  </docblock>
3049
- <argument line="630">
3050
  <name>$admin_title</name>
3051
  <default><![CDATA[]]></default>
3052
  <type/>
3053
  </argument>
3054
- <argument line="630">
3055
  <name>$title</name>
3056
  <default><![CDATA[]]></default>
3057
  <type/>
3058
  </argument>
3059
  </method>
3060
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="692" package="Media Library Assistant">
3061
  <name>mla_parent_info_handler</name>
3062
  <full_name>mla_parent_info_handler</full_name>
3063
- <docblock line="682">
3064
  <description><![CDATA[Renders the Parent Info meta box on the Edit Media page.]]></description>
3065
  <long-description><![CDATA[<p>Declared public because it is a callback function.</p>]]></long-description>
3066
- <tag line="682" name="since" description="0.80"/>
3067
- <tag line="682" name="param" description="current post" type="object" variable="$post">
3068
  <type by_reference="false">object</type>
3069
  </tag>
3070
- <tag line="682" name="return" description="echoes the HTML markup for the meta box content" type="void">
3071
  <type by_reference="false">void</type>
3072
  </tag>
3073
  </docblock>
3074
- <argument line="692">
3075
  <name>$post</name>
3076
  <default><![CDATA[]]></default>
3077
  <type/>
3078
  </argument>
3079
  </method>
3080
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="741" package="Media Library Assistant">
3081
  <name>mla_menu_order_handler</name>
3082
  <full_name>mla_menu_order_handler</full_name>
3083
- <docblock line="731">
3084
  <description><![CDATA[Renders the Menu Order meta box on the Edit Media page.]]></description>
3085
  <long-description><![CDATA[<p>Declared public because it is a callback function.</p>]]></long-description>
3086
- <tag line="731" name="since" description="0.80"/>
3087
- <tag line="731" name="param" description="current post" type="object" variable="$post">
3088
  <type by_reference="false">object</type>
3089
  </tag>
3090
- <tag line="731" name="return" description="echoes the HTML markup for the meta box content" type="void">
3091
  <type by_reference="false">void</type>
3092
  </tag>
3093
  </docblock>
3094
- <argument line="741">
3095
  <name>$post</name>
3096
  <default><![CDATA[]]></default>
3097
  <type/>
3098
  </argument>
3099
  </method>
3100
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="758" package="Media Library Assistant">
3101
  <name>mla_image_metadata_handler</name>
3102
  <full_name>mla_image_metadata_handler</full_name>
3103
- <docblock line="748">
3104
  <description><![CDATA[Renders the Image Metadata meta box on the Edit Media page.]]></description>
3105
  <long-description><![CDATA[<p>Declared public because it is a callback function.</p>]]></long-description>
3106
- <tag line="748" name="since" description="0.80"/>
3107
- <tag line="748" name="param" description="current post" type="object" variable="$post">
3108
  <type by_reference="false">object</type>
3109
  </tag>
3110
- <tag line="748" name="return" description="echoes the HTML markup for the meta box content" type="void">
3111
  <type by_reference="false">void</type>
3112
  </tag>
3113
  </docblock>
3114
- <argument line="758">
3115
  <name>$post</name>
3116
  <default><![CDATA[]]></default>
3117
  <type/>
3118
  </argument>
3119
  </method>
3120
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="783" package="Media Library Assistant">
3121
  <name>mla_featured_in_handler</name>
3122
  <full_name>mla_featured_in_handler</full_name>
3123
- <docblock line="773">
3124
  <description><![CDATA[Renders the Featured in meta box on the Edit Media page.]]></description>
3125
  <long-description><![CDATA[<p>Declared public because it is a callback function.</p>]]></long-description>
3126
- <tag line="773" name="since" description="0.80"/>
3127
- <tag line="773" name="param" description="current post" type="object" variable="$post">
3128
  <type by_reference="false">object</type>
3129
  </tag>
3130
- <tag line="773" name="return" description="echoes the HTML markup for the meta box content" type="void">
3131
  <type by_reference="false">void</type>
3132
  </tag>
3133
  </docblock>
3134
- <argument line="783">
3135
  <name>$post</name>
3136
  <default><![CDATA[]]></default>
3137
  <type/>
3138
  </argument>
3139
  </method>
3140
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="818" package="Media Library Assistant">
3141
  <name>mla_inserted_in_handler</name>
3142
  <full_name>mla_inserted_in_handler</full_name>
3143
- <docblock line="808">
3144
  <description><![CDATA[Renders the Inserted in meta box on the Edit Media page.]]></description>
3145
  <long-description><![CDATA[<p>Declared public because it is a callback function.</p>]]></long-description>
3146
- <tag line="808" name="since" description="0.80"/>
3147
- <tag line="808" name="param" description="current post" type="object" variable="$post">
3148
  <type by_reference="false">object</type>
3149
  </tag>
3150
- <tag line="808" name="return" description="echoes the HTML markup for the meta box content" type="void">
3151
  <type by_reference="false">void</type>
3152
  </tag>
3153
  </docblock>
3154
- <argument line="818">
3155
  <name>$post</name>
3156
  <default><![CDATA[]]></default>
3157
  <type/>
3158
  </argument>
3159
  </method>
3160
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="857" package="Media Library Assistant">
3161
  <name>mla_gallery_in_handler</name>
3162
  <full_name>mla_gallery_in_handler</full_name>
3163
- <docblock line="847">
3164
  <description><![CDATA[Renders the Gallery in meta box on the Edit Media page.]]></description>
3165
  <long-description><![CDATA[<p>Declared public because it is a callback function.</p>]]></long-description>
3166
- <tag line="847" name="since" description="0.80"/>
3167
- <tag line="847" name="param" description="current post" type="object" variable="$post">
3168
  <type by_reference="false">object</type>
3169
  </tag>
3170
- <tag line="847" name="return" description="echoes the HTML markup for the meta box content" type="void">
3171
  <type by_reference="false">void</type>
3172
  </tag>
3173
  </docblock>
3174
- <argument line="857">
3175
  <name>$post</name>
3176
  <default><![CDATA[]]></default>
3177
  <type/>
3178
  </argument>
3179
  </method>
3180
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="892" package="Media Library Assistant">
3181
  <name>mla_mla_gallery_in_handler</name>
3182
  <full_name>mla_mla_gallery_in_handler</full_name>
3183
- <docblock line="882">
3184
  <description><![CDATA[Renders the MLA Gallery in meta box on the Edit Media page.]]></description>
3185
  <long-description><![CDATA[<p>Declared public because it is a callback function.</p>]]></long-description>
3186
- <tag line="882" name="since" description="0.80"/>
3187
- <tag line="882" name="param" description="current post" type="object" variable="$post">
3188
  <type by_reference="false">object</type>
3189
  </tag>
3190
- <tag line="882" name="return" description="echoes the HTML markup for the meta box content" type="void">
3191
  <type by_reference="false">void</type>
3192
  </tag>
3193
  </docblock>
3194
- <argument line="892">
3195
  <name>$post</name>
3196
  <default><![CDATA[]]></default>
3197
  <type/>
3198
  </argument>
3199
  </method>
3200
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="927" package="Media Library Assistant">
3201
  <name>mla_edit_attachment_action</name>
3202
  <full_name>mla_edit_attachment_action</full_name>
3203
- <docblock line="917">
3204
  <description><![CDATA[Saves updates from the Edit Media screen.]]></description>
3205
  <long-description><![CDATA[<p>Declared public because it is an action.</p>]]></long-description>
3206
- <tag line="917" name="since" description="0.80"/>
3207
- <tag line="917" name="param" description="ID of the current post" type="integer" variable="$post_ID">
3208
  <type by_reference="false">integer</type>
3209
  </tag>
3210
- <tag line="917" name="return" description="" type="void">
3211
  <type by_reference="false">void</type>
3212
  </tag>
3213
  </docblock>
3214
- <argument line="927">
3215
  <name>$post_ID</name>
3216
  <default><![CDATA[]]></default>
3217
  <type/>
3218
  </argument>
3219
  </method>
3220
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="953" package="Media Library Assistant">
3221
  <name>_mla_ajax_add_flat_term</name>
3222
  <full_name>_mla_ajax_add_flat_term</full_name>
3223
- <docblock line="942">
3224
  <description><![CDATA[Add flat taxonomy term from "checklist" meta box on the Media Manager Modal Window]]></description>
3225
  <long-description><![CDATA[<p>Adapted from the WordPress post_categories_meta_box() in /wp-admin/includes/meta-boxes.php.</p>]]></long-description>
3226
- <tag line="942" name="since" description="1.80"/>
3227
- <tag line="942" name="param" description="The taxonomy name, from $_POST['action']" type="string" variable="$key">
3228
  <type by_reference="false">string</type>
3229
  </tag>
3230
- <tag line="942" name="return" description="Sends JSON response with updated HTML for the checklist" type="void">
3231
  <type by_reference="false">void</type>
3232
  </tag>
3233
  </docblock>
3234
- <argument line="953">
3235
  <name>$key</name>
3236
  <default><![CDATA[]]></default>
3237
  <type/>
3238
  </argument>
3239
  </method>
3240
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="1016" package="Media Library Assistant">
3241
  <name>mla_checklist_meta_box</name>
3242
  <full_name>mla_checklist_meta_box</full_name>
3243
- <docblock line="1001">
3244
  <description><![CDATA[Display taxonomy "checklist" form fields]]></description>
3245
  <long-description><![CDATA[<p>Adapted from /wp-admin/includes/ajax-actions.php function _wp_ajax_add_hierarchical_term().
3246
  Includes the "? Search" area to filter the term checklist by entering part
3247
  or all of a word/phrase in the term label.
3248
  Output to the Media/Edit Media screen and to the Media Manager Modal Window.</p>]]></long-description>
3249
- <tag line="1001" name="since" description="1.71"/>
3250
- <tag line="1001" name="param" description="The current post" type="object" variable="$target_post">
3251
  <type by_reference="false">object</type>
3252
  </tag>
3253
- <tag line="1001" name="param" description="The meta box parameters" type="array" variable="$box">
3254
  <type by_reference="false">array</type>
3255
  </tag>
3256
- <tag line="1001" name="return" description="Echoes HTML for the form fields" type="void">
3257
  <type by_reference="false">void</type>
3258
  </tag>
3259
  </docblock>
3260
- <argument line="1016">
3261
  <name>$target_post</name>
3262
  <default><![CDATA[]]></default>
3263
  <type/>
3264
  </argument>
3265
- <argument line="1016">
3266
  <name>$box</name>
3267
  <default><![CDATA[]]></default>
3268
  <type/>
3269
  </argument>
3270
  </method>
3271
  </class>
3272
- <class final="false" abstract="false" namespace="global" line="1175" package="Media Library Assistant">
3273
  <extends>\Walker_Category</extends>
3274
  <name>MLA_Checklist_Walker</name>
3275
  <full_name>\MLA_Checklist_Walker</full_name>
3276
- <docblock line="1165">
3277
  <description><![CDATA[Class MLA (Media Library Assistant) Checklist Walker replaces term_id with slug in checklist output]]></description>
3278
  <long-description><![CDATA[<p>This walker is used to build the meta boxes for flat taxonomies, e.g., Tags, Att. Tags.
3279
  Class Walker_Category is defined in /wp-includes/category-template.php.
3280
  Class Walker is defined in /wp-includes/class-wp-walker.php.</p>]]></long-description>
3281
- <tag line="1165" name="package" description="Media Library Assistant"/>
3282
- <tag line="1165" name="since" description="1.80"/>
3283
  </docblock>
3284
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1189" package="Media Library Assistant">
3285
  <name>start_el</name>
3286
  <full_name>start_el</full_name>
3287
- <docblock line="1176">
3288
  <description><![CDATA[Start the element output.]]></description>
3289
  <long-description><![CDATA[]]></long-description>
3290
- <tag line="1176" name="see" description="\global\Walker::start_el()" refers="\global\Walker::start_el()"/>
3291
- <tag line="1176" name="since" description="1.80"/>
3292
- <tag line="1176" name="param" description="Passed by reference. Used to append additional content." type="string" variable="$output">
3293
  <type by_reference="false">string</type>
3294
  </tag>
3295
- <tag line="1176" name="param" description="Taxonomy data object." type="object" variable="$taxonomy_object">
3296
  <type by_reference="false">object</type>
3297
  </tag>
3298
- <tag line="1176" name="param" description="Depth of category in reference to parents. Default 0." type="int" variable="$depth">
3299
  <type by_reference="false">int</type>
3300
  </tag>
3301
- <tag line="1176" name="param" description="An array of arguments. @see wp_list_categories()" type="array" variable="$args">
3302
  <type by_reference="false">array</type>
3303
  </tag>
3304
- <tag line="1176" name="param" description="ID of the current category." type="int" variable="$id">
3305
  <type by_reference="false">int</type>
3306
  </tag>
3307
  </docblock>
3308
- <argument line="1189">
3309
  <name>$output</name>
3310
  <default><![CDATA[]]></default>
3311
  <type/>
3312
  </argument>
3313
- <argument line="1189">
3314
  <name>$taxonomy_object</name>
3315
  <default><![CDATA[]]></default>
3316
  <type/>
3317
  </argument>
3318
- <argument line="1189">
3319
  <name>$depth</name>
3320
  <default><![CDATA[0]]></default>
3321
  <type/>
3322
  </argument>
3323
- <argument line="1189">
3324
  <name>$args</name>
3325
  <default><![CDATA[array()]]></default>
3326
  <type/>
3327
  </argument>
3328
- <argument line="1189">
3329
  <name>$id</name>
3330
  <default><![CDATA[0]]></default>
3331
  <type/>
3332
  </argument>
3333
  </method>
3334
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1222" package="Media Library Assistant">
3335
  <name>end_el</name>
3336
  <full_name>end_el</full_name>
3337
- <docblock line="1210">
3338
  <description><![CDATA[Ends the element output, if needed.]]></description>
3339
  <long-description><![CDATA[]]></long-description>
3340
- <tag line="1210" name="see" description="\global\Walker::end_el()" refers="\global\Walker::end_el()"/>
3341
- <tag line="1210" name="since" description="1.80"/>
3342
- <tag line="1210" name="param" description="Passed by reference. Used to append additional content." type="string" variable="$output">
3343
  <type by_reference="false">string</type>
3344
  </tag>
3345
- <tag line="1210" name="param" description="The current term object." type="object" variable="$category">
3346
  <type by_reference="false">object</type>
3347
  </tag>
3348
- <tag line="1210" name="param" description="Depth of the term in reference to parents. Default 0." type="int" variable="$depth">
3349
  <type by_reference="false">int</type>
3350
  </tag>
3351
- <tag line="1210" name="param" description="An array of arguments. @see wp_terms_checklist()" type="array" variable="$args">
3352
  <type by_reference="false">array</type>
3353
  </tag>
3354
  </docblock>
3355
- <argument line="1222">
3356
  <name>$output</name>
3357
  <default><![CDATA[]]></default>
3358
  <type/>
3359
  </argument>
3360
- <argument line="1222">
3361
  <name>$category</name>
3362
  <default><![CDATA[]]></default>
3363
  <type/>
3364
  </argument>
3365
- <argument line="1222">
3366
  <name>$depth</name>
3367
  <default><![CDATA[0]]></default>
3368
  <type/>
3369
  </argument>
3370
- <argument line="1222">
3371
  <name>$args</name>
3372
  <default><![CDATA[array()]]></default>
3373
  <type/>
@@ -3375,7 +3513,181 @@ Class Walker is defined in /wp-includes/class-wp-walker.php.</p>]]></long-descri
3375
  </method>
3376
  </class>
3377
  </file>
3378
- <file path="includes\class-mla-list-table.php" hash="ed75e8f99d631d3232cf62becaae69f8" package="Media Library Assistant">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3379
  <docblock line="2">
3380
  <description><![CDATA[Media Library Assistant extended List Table class]]></description>
3381
  <long-description><![CDATA[]]></long-description>
@@ -3814,7 +4126,7 @@ is given special treatment when columns are processed.</p>]]></long-description>
3814
  <name>_format_post_status</name>
3815
  <full_name>_format_post_status</full_name>
3816
  <docblock line="757">
3817
- <description><![CDATA[Translate post_status 'future', 'pending' and 'draft' to label]]></description>
3818
  <long-description><![CDATA[]]></long-description>
3819
  <tag line="757" name="since" description="2.01"/>
3820
  <tag line="757" name="param" description="post_status" type="string" variable="$post_status">
@@ -3830,633 +4142,633 @@ is given special treatment when columns are processed.</p>]]></long-description>
3830
  <type/>
3831
  </argument>
3832
  </method>
3833
- <method final="false" abstract="false" static="false" visibility="protected" namespace="global" line="796" package="Media Library Assistant">
3834
  <name>_build_rollover_actions</name>
3835
  <full_name>_build_rollover_actions</full_name>
3836
- <docblock line="785">
3837
  <description><![CDATA[Add rollover actions to exactly one of the following displayed columns:
3838
  'ID_parent', 'title_name', 'post_title', 'post_name']]></description>
3839
  <long-description><![CDATA[]]></long-description>
3840
- <tag line="785" name="since" description="0.1"/>
3841
- <tag line="785" name="param" description="A singular attachment (post) object" type="object" variable="$item">
3842
  <type by_reference="false">object</type>
3843
  </tag>
3844
- <tag line="785" name="param" description="Current column name" type="string" variable="$column">
3845
  <type by_reference="false">string</type>
3846
  </tag>
3847
- <tag line="785" name="return" description="Names and URLs of row-level actions" type="array">
3848
  <type by_reference="false">array</type>
3849
  </tag>
3850
  </docblock>
3851
- <argument line="796">
3852
  <name>$item</name>
3853
  <default><![CDATA[]]></default>
3854
  <type/>
3855
  </argument>
3856
- <argument line="796">
3857
  <name>$column</name>
3858
  <default><![CDATA[]]></default>
3859
  <type/>
3860
  </argument>
3861
  </method>
3862
- <method final="false" abstract="false" static="false" visibility="protected" namespace="global" line="870" package="Media Library Assistant">
3863
  <name>_build_inline_data</name>
3864
  <full_name>_build_inline_data</full_name>
3865
- <docblock line="861">
3866
  <description><![CDATA[Add hidden fields with the data for use in the inline editor]]></description>
3867
  <long-description><![CDATA[]]></long-description>
3868
- <tag line="861" name="since" description="0.20"/>
3869
- <tag line="861" name="param" description="A singular attachment (post) object" type="object" variable="$item">
3870
  <type by_reference="false">object</type>
3871
  </tag>
3872
- <tag line="861" name="return" description="HTML &lt;div&gt; with row data" type="string">
3873
  <type by_reference="false">string</type>
3874
  </tag>
3875
  </docblock>
3876
- <argument line="870">
3877
  <name>$item</name>
3878
  <default><![CDATA[]]></default>
3879
  <type/>
3880
  </argument>
3881
  </method>
3882
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="957" package="Media Library Assistant">
3883
  <name>column_ID_parent</name>
3884
  <full_name>column_ID_parent</full_name>
3885
- <docblock line="949">
3886
  <description><![CDATA[Supply the content for a custom column]]></description>
3887
  <long-description><![CDATA[]]></long-description>
3888
- <tag line="949" name="since" description="0.1"/>
3889
- <tag line="949" name="param" description="A singular attachment (post) object" type="array" variable="$item">
3890
  <type by_reference="false">array</type>
3891
  </tag>
3892
- <tag line="949" name="return" description="HTML markup to be placed inside the column" type="string">
3893
  <type by_reference="false">string</type>
3894
  </tag>
3895
  </docblock>
3896
- <argument line="957">
3897
  <name>$item</name>
3898
  <default><![CDATA[]]></default>
3899
  <type/>
3900
  </argument>
3901
  </method>
3902
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="990" package="Media Library Assistant">
3903
  <name>column_title_name</name>
3904
  <full_name>column_title_name</full_name>
3905
- <docblock line="982">
3906
  <description><![CDATA[Supply the content for a custom column]]></description>
3907
  <long-description><![CDATA[]]></long-description>
3908
- <tag line="982" name="since" description="0.1"/>
3909
- <tag line="982" name="param" description="A singular attachment (post) object" type="array" variable="$item">
3910
  <type by_reference="false">array</type>
3911
  </tag>
3912
- <tag line="982" name="return" description="HTML markup to be placed inside the column" type="string">
3913
  <type by_reference="false">string</type>
3914
  </tag>
3915
  </docblock>
3916
- <argument line="990">
3917
  <name>$item</name>
3918
  <default><![CDATA[]]></default>
3919
  <type/>
3920
  </argument>
3921
  </method>
3922
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1014" package="Media Library Assistant">
3923
  <name>column_post_title</name>
3924
  <full_name>column_post_title</full_name>
3925
- <docblock line="1006">
3926
  <description><![CDATA[Supply the content for a custom column]]></description>
3927
  <long-description><![CDATA[]]></long-description>
3928
- <tag line="1006" name="since" description="0.1"/>
3929
- <tag line="1006" name="param" description="A singular attachment (post) object" type="array" variable="$item">
3930
  <type by_reference="false">array</type>
3931
  </tag>
3932
- <tag line="1006" name="return" description="HTML markup to be placed inside the column" type="string">
3933
  <type by_reference="false">string</type>
3934
  </tag>
3935
  </docblock>
3936
- <argument line="1014">
3937
  <name>$item</name>
3938
  <default><![CDATA[]]></default>
3939
  <type/>
3940
  </argument>
3941
  </method>
3942
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1032" package="Media Library Assistant">
3943
  <name>column_post_name</name>
3944
  <full_name>column_post_name</full_name>
3945
- <docblock line="1024">
3946
  <description><![CDATA[Supply the content for a custom column]]></description>
3947
  <long-description><![CDATA[]]></long-description>
3948
- <tag line="1024" name="since" description="0.1"/>
3949
- <tag line="1024" name="param" description="A singular attachment (post) object" type="array" variable="$item">
3950
  <type by_reference="false">array</type>
3951
  </tag>
3952
- <tag line="1024" name="return" description="HTML markup to be placed inside the column" type="string">
3953
  <type by_reference="false">string</type>
3954
  </tag>
3955
  </docblock>
3956
- <argument line="1032">
3957
  <name>$item</name>
3958
  <default><![CDATA[]]></default>
3959
  <type/>
3960
  </argument>
3961
  </method>
3962
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1050" package="Media Library Assistant">
3963
  <name>column_parent</name>
3964
  <full_name>column_parent</full_name>
3965
- <docblock line="1042">
3966
  <description><![CDATA[Supply the content for a custom column]]></description>
3967
  <long-description><![CDATA[]]></long-description>
3968
- <tag line="1042" name="since" description="0.1"/>
3969
- <tag line="1042" name="param" description="A singular attachment (post) object" type="array" variable="$item">
3970
  <type by_reference="false">array</type>
3971
  </tag>
3972
- <tag line="1042" name="return" description="HTML markup to be placed inside the column" type="string">
3973
  <type by_reference="false">string</type>
3974
  </tag>
3975
  </docblock>
3976
- <argument line="1050">
3977
  <name>$item</name>
3978
  <default><![CDATA[]]></default>
3979
  <type/>
3980
  </argument>
3981
  </method>
3982
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1076" package="Media Library Assistant">
3983
  <name>column_menu_order</name>
3984
  <full_name>column_menu_order</full_name>
3985
- <docblock line="1068">
3986
  <description><![CDATA[Supply the content for a custom column]]></description>
3987
  <long-description><![CDATA[]]></long-description>
3988
- <tag line="1068" name="since" description="0.60"/>
3989
- <tag line="1068" name="param" description="A singular attachment (post) object" type="array" variable="$item">
3990
  <type by_reference="false">array</type>
3991
  </tag>
3992
- <tag line="1068" name="return" description="HTML markup to be placed inside the column" type="string">
3993
  <type by_reference="false">string</type>
3994
  </tag>
3995
  </docblock>
3996
- <argument line="1076">
3997
  <name>$item</name>
3998
  <default><![CDATA[]]></default>
3999
  <type/>
4000
  </argument>
4001
  </method>
4002
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1088" package="Media Library Assistant">
4003
  <name>column_featured</name>
4004
  <full_name>column_featured</full_name>
4005
- <docblock line="1080">
4006
  <description><![CDATA[Supply the content for a custom column]]></description>
4007
  <long-description><![CDATA[]]></long-description>
4008
- <tag line="1080" name="since" description="0.1"/>
4009
- <tag line="1080" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4010
  <type by_reference="false">array</type>
4011
  </tag>
4012
- <tag line="1080" name="return" description="HTML markup to be placed inside the column" type="string">
4013
  <type by_reference="false">string</type>
4014
  </tag>
4015
  </docblock>
4016
- <argument line="1088">
4017
  <name>$item</name>
4018
  <default><![CDATA[]]></default>
4019
  <type/>
4020
  </argument>
4021
  </method>
4022
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1133" package="Media Library Assistant">
4023
  <name>column_inserted</name>
4024
  <full_name>column_inserted</full_name>
4025
- <docblock line="1125">
4026
  <description><![CDATA[Supply the content for a custom column]]></description>
4027
  <long-description><![CDATA[]]></long-description>
4028
- <tag line="1125" name="since" description="0.1"/>
4029
- <tag line="1125" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4030
  <type by_reference="false">array</type>
4031
  </tag>
4032
- <tag line="1125" name="return" description="HTML markup to be placed inside the column" type="string">
4033
  <type by_reference="false">string</type>
4034
  </tag>
4035
  </docblock>
4036
- <argument line="1133">
4037
  <name>$item</name>
4038
  <default><![CDATA[]]></default>
4039
  <type/>
4040
  </argument>
4041
  </method>
4042
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1183" package="Media Library Assistant">
4043
  <name>column_galleries</name>
4044
  <full_name>column_galleries</full_name>
4045
- <docblock line="1175">
4046
  <description><![CDATA[Supply the content for a custom column]]></description>
4047
  <long-description><![CDATA[]]></long-description>
4048
- <tag line="1175" name="since" description="0.70"/>
4049
- <tag line="1175" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4050
  <type by_reference="false">array</type>
4051
  </tag>
4052
- <tag line="1175" name="return" description="HTML markup to be placed inside the column" type="string">
4053
  <type by_reference="false">string</type>
4054
  </tag>
4055
  </docblock>
4056
- <argument line="1183">
4057
  <name>$item</name>
4058
  <default><![CDATA[]]></default>
4059
  <type/>
4060
  </argument>
4061
  </method>
4062
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1228" package="Media Library Assistant">
4063
  <name>column_mla_galleries</name>
4064
  <full_name>column_mla_galleries</full_name>
4065
- <docblock line="1220">
4066
  <description><![CDATA[Supply the content for a custom column]]></description>
4067
  <long-description><![CDATA[]]></long-description>
4068
- <tag line="1220" name="since" description="0.70"/>
4069
- <tag line="1220" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4070
  <type by_reference="false">array</type>
4071
  </tag>
4072
- <tag line="1220" name="return" description="HTML markup to be placed inside the column" type="string">
4073
  <type by_reference="false">string</type>
4074
  </tag>
4075
  </docblock>
4076
- <argument line="1228">
4077
  <name>$item</name>
4078
  <default><![CDATA[]]></default>
4079
  <type/>
4080
  </argument>
4081
  </method>
4082
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1273" package="Media Library Assistant">
4083
  <name>column_alt_text</name>
4084
  <full_name>column_alt_text</full_name>
4085
- <docblock line="1265">
4086
  <description><![CDATA[Supply the content for a custom column]]></description>
4087
  <long-description><![CDATA[]]></long-description>
4088
- <tag line="1265" name="since" description="0.1"/>
4089
- <tag line="1265" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4090
  <type by_reference="false">array</type>
4091
  </tag>
4092
- <tag line="1265" name="return" description="HTML markup to be placed inside the column" type="string">
4093
  <type by_reference="false">string</type>
4094
  </tag>
4095
  </docblock>
4096
- <argument line="1273">
4097
  <name>$item</name>
4098
  <default><![CDATA[]]></default>
4099
  <type/>
4100
  </argument>
4101
  </method>
4102
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1300" package="Media Library Assistant">
4103
  <name>column_caption</name>
4104
  <full_name>column_caption</full_name>
4105
- <docblock line="1292">
4106
  <description><![CDATA[Supply the content for a custom column]]></description>
4107
  <long-description><![CDATA[]]></long-description>
4108
- <tag line="1292" name="since" description="0.1"/>
4109
- <tag line="1292" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4110
  <type by_reference="false">array</type>
4111
  </tag>
4112
- <tag line="1292" name="return" description="HTML markup to be placed inside the column" type="string">
4113
  <type by_reference="false">string</type>
4114
  </tag>
4115
  </docblock>
4116
- <argument line="1300">
4117
  <name>$item</name>
4118
  <default><![CDATA[]]></default>
4119
  <type/>
4120
  </argument>
4121
  </method>
4122
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1312" package="Media Library Assistant">
4123
  <name>column_description</name>
4124
  <full_name>column_description</full_name>
4125
- <docblock line="1304">
4126
  <description><![CDATA[Supply the content for a custom column]]></description>
4127
  <long-description><![CDATA[]]></long-description>
4128
- <tag line="1304" name="since" description="0.1"/>
4129
- <tag line="1304" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4130
  <type by_reference="false">array</type>
4131
  </tag>
4132
- <tag line="1304" name="return" description="HTML markup to be placed inside the column" type="string">
4133
  <type by_reference="false">string</type>
4134
  </tag>
4135
  </docblock>
4136
- <argument line="1312">
4137
  <name>$item</name>
4138
  <default><![CDATA[]]></default>
4139
  <type/>
4140
  </argument>
4141
  </method>
4142
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1324" package="Media Library Assistant">
4143
  <name>column_post_mime_type</name>
4144
  <full_name>column_post_mime_type</full_name>
4145
- <docblock line="1316">
4146
  <description><![CDATA[Supply the content for a custom column]]></description>
4147
  <long-description><![CDATA[]]></long-description>
4148
- <tag line="1316" name="since" description="0.30"/>
4149
- <tag line="1316" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4150
  <type by_reference="false">array</type>
4151
  </tag>
4152
- <tag line="1316" name="return" description="HTML markup to be placed inside the column" type="string">
4153
  <type by_reference="false">string</type>
4154
  </tag>
4155
  </docblock>
4156
- <argument line="1324">
4157
  <name>$item</name>
4158
  <default><![CDATA[]]></default>
4159
  <type/>
4160
  </argument>
4161
  </method>
4162
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1340" package="Media Library Assistant">
4163
  <name>column_file_url</name>
4164
  <full_name>column_file_url</full_name>
4165
- <docblock line="1332">
4166
  <description><![CDATA[Supply the content for a custom column]]></description>
4167
  <long-description><![CDATA[]]></long-description>
4168
- <tag line="1332" name="since" description="0.1"/>
4169
- <tag line="1332" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4170
  <type by_reference="false">array</type>
4171
  </tag>
4172
- <tag line="1332" name="return" description="HTML markup to be placed inside the column" type="string">
4173
  <type by_reference="false">string</type>
4174
  </tag>
4175
  </docblock>
4176
- <argument line="1340">
4177
  <name>$item</name>
4178
  <default><![CDATA[]]></default>
4179
  <type/>
4180
  </argument>
4181
  </method>
4182
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1354" package="Media Library Assistant">
4183
  <name>column_base_file</name>
4184
  <full_name>column_base_file</full_name>
4185
- <docblock line="1346">
4186
  <description><![CDATA[Supply the content for a custom column]]></description>
4187
  <long-description><![CDATA[]]></long-description>
4188
- <tag line="1346" name="since" description="0.1"/>
4189
- <tag line="1346" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4190
  <type by_reference="false">array</type>
4191
  </tag>
4192
- <tag line="1346" name="return" description="HTML markup to be placed inside the column" type="string">
4193
  <type by_reference="false">string</type>
4194
  </tag>
4195
  </docblock>
4196
- <argument line="1354">
4197
  <name>$item</name>
4198
  <default><![CDATA[]]></default>
4199
  <type/>
4200
  </argument>
4201
  </method>
4202
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1373" package="Media Library Assistant">
4203
  <name>column_date</name>
4204
  <full_name>column_date</full_name>
4205
- <docblock line="1365">
4206
  <description><![CDATA[Supply the content for a custom column]]></description>
4207
  <long-description><![CDATA[]]></long-description>
4208
- <tag line="1365" name="since" description="0.1"/>
4209
- <tag line="1365" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4210
  <type by_reference="false">array</type>
4211
  </tag>
4212
- <tag line="1365" name="return" description="HTML markup to be placed inside the column" type="string">
4213
  <type by_reference="false">string</type>
4214
  </tag>
4215
  </docblock>
4216
- <argument line="1373">
4217
  <name>$item</name>
4218
  <default><![CDATA[]]></default>
4219
  <type/>
4220
  </argument>
4221
  </method>
4222
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1408" package="Media Library Assistant">
4223
  <name>column_modified</name>
4224
  <full_name>column_modified</full_name>
4225
- <docblock line="1400">
4226
  <description><![CDATA[Supply the content for a custom column]]></description>
4227
  <long-description><![CDATA[]]></long-description>
4228
- <tag line="1400" name="since" description="0.30"/>
4229
- <tag line="1400" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4230
  <type by_reference="false">array</type>
4231
  </tag>
4232
- <tag line="1400" name="return" description="HTML markup to be placed inside the column" type="string">
4233
  <type by_reference="false">string</type>
4234
  </tag>
4235
  </docblock>
4236
- <argument line="1408">
4237
  <name>$item</name>
4238
  <default><![CDATA[]]></default>
4239
  <type/>
4240
  </argument>
4241
  </method>
4242
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1437" package="Media Library Assistant">
4243
  <name>column_author</name>
4244
  <full_name>column_author</full_name>
4245
- <docblock line="1429">
4246
  <description><![CDATA[Supply the content for a custom column]]></description>
4247
  <long-description><![CDATA[]]></long-description>
4248
- <tag line="1429" name="since" description="0.30"/>
4249
- <tag line="1429" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4250
  <type by_reference="false">array</type>
4251
  </tag>
4252
- <tag line="1429" name="return" description="HTML markup to be placed inside the column" type="string">
4253
  <type by_reference="false">string</type>
4254
  </tag>
4255
  </docblock>
4256
- <argument line="1437">
4257
  <name>$item</name>
4258
  <default><![CDATA[]]></default>
4259
  <type/>
4260
  </argument>
4261
  </method>
4262
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1459" package="Media Library Assistant">
4263
  <name>column_attached_to</name>
4264
  <full_name>column_attached_to</full_name>
4265
- <docblock line="1451">
4266
  <description><![CDATA[Supply the content for a custom column]]></description>
4267
  <long-description><![CDATA[]]></long-description>
4268
- <tag line="1451" name="since" description="0.1"/>
4269
- <tag line="1451" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4270
  <type by_reference="false">array</type>
4271
  </tag>
4272
- <tag line="1451" name="return" description="HTML markup to be placed inside the column" type="string">
4273
  <type by_reference="false">string</type>
4274
  </tag>
4275
  </docblock>
4276
- <argument line="1459">
4277
  <name>$item</name>
4278
  <default><![CDATA[]]></default>
4279
  <type/>
4280
  </argument>
4281
  </method>
4282
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1496" package="Media Library Assistant">
4283
  <name>pagination</name>
4284
  <full_name>pagination</full_name>
4285
- <docblock line="1488">
4286
  <description><![CDATA[Display the pagination, adding view, search and filter arguments]]></description>
4287
  <long-description><![CDATA[]]></long-description>
4288
- <tag line="1488" name="since" description="1.42"/>
4289
- <tag line="1488" name="param" description="'top' | 'bottom'" type="string" variable="$which">
4290
  <type by_reference="false">string</type>
4291
  </tag>
4292
- <tag line="1488" name="return" description="" type="void">
4293
  <type by_reference="false">void</type>
4294
  </tag>
4295
  </docblock>
4296
- <argument line="1496">
4297
  <name>$which</name>
4298
  <default><![CDATA[]]></default>
4299
  <type/>
4300
  </argument>
4301
  </method>
4302
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1510" package="Media Library Assistant">
4303
  <name>get_columns</name>
4304
  <full_name>get_columns</full_name>
4305
- <docblock line="1503">
4306
  <description><![CDATA[This method dictates the table's columns and titles]]></description>
4307
  <long-description><![CDATA[]]></long-description>
4308
- <tag line="1503" name="since" description="0.1"/>
4309
- <tag line="1503" name="return" description="Column information: 'slugs'=&gt;'Visible Titles'" type="array">
4310
  <type by_reference="false">array</type>
4311
  </tag>
4312
  </docblock>
4313
  </method>
4314
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1522" package="Media Library Assistant">
4315
  <name>get_hidden_columns</name>
4316
  <full_name>get_hidden_columns</full_name>
4317
- <docblock line="1514">
4318
  <description><![CDATA[Returns the list of currently hidden columns from a user option or
4319
  from default values if the option is not set]]></description>
4320
  <long-description><![CDATA[]]></long-description>
4321
- <tag line="1514" name="since" description="0.1"/>
4322
- <tag line="1514" name="return" description="Column information,e.g., array(0 =&gt; 'ID_parent, 1 =&gt; 'title_name')" type="array">
4323
  <type by_reference="false">array</type>
4324
  </tag>
4325
  </docblock>
4326
  </method>
4327
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1547" package="Media Library Assistant">
4328
  <name>get_sortable_columns</name>
4329
  <full_name>get_sortable_columns</full_name>
4330
- <docblock line="1538">
4331
  <description><![CDATA[Returns an array where the key is the column that needs to be sortable
4332
  and the value is db column (or other criteria) to sort by.]]></description>
4333
  <long-description><![CDATA[]]></long-description>
4334
- <tag line="1538" name="since" description="0.1"/>
4335
- <tag line="1538" name="return" description="Sortable column information,e.g., 'slug' =&gt; array('data_value', (boolean) initial_descending )" type="array">
4336
  <type by_reference="false">array</type>
4337
  </tag>
4338
  </docblock>
4339
  </method>
4340
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1558" package="Media Library Assistant">
4341
  <name>print_column_headers</name>
4342
  <full_name>print_column_headers</full_name>
4343
- <docblock line="1551">
4344
  <description><![CDATA[Print column headers, adding view, search and filter arguments]]></description>
4345
  <long-description><![CDATA[]]></long-description>
4346
- <tag line="1551" name="since" description="1.42"/>
4347
- <tag line="1551" name="param" description="Whether to set the id attribute or not" type="bool" variable="$with_id">
4348
  <type by_reference="false">bool</type>
4349
  </tag>
4350
  </docblock>
4351
- <argument line="1558">
4352
  <name>$with_id</name>
4353
  <default><![CDATA[true]]></default>
4354
  <type/>
4355
  </argument>
4356
  </method>
4357
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1575" package="Media Library Assistant">
4358
  <name>_get_view</name>
4359
  <full_name>_get_view</full_name>
4360
- <docblock line="1565">
4361
  <description><![CDATA[Returns HTML markup for one view that can be used with this table]]></description>
4362
  <long-description><![CDATA[]]></long-description>
4363
- <tag line="1565" name="since" description="1.40"/>
4364
- <tag line="1565" name="param" description="View slug, key to MLA_POST_MIME_TYPES array" type="string" variable="$view_slug">
4365
  <type by_reference="false">string</type>
4366
  </tag>
4367
- <tag line="1565" name="param" description="Slug for current view" type="string" variable="$current_view">
4368
  <type by_reference="false">string</type>
4369
  </tag>
4370
- <tag line="1565" name="return" description="| false HTML for link to display the view, false if count = zero" type="string">
4371
  <type by_reference="false">string</type>
4372
  </tag>
4373
  </docblock>
4374
- <argument line="1575">
4375
  <name>$view_slug</name>
4376
  <default><![CDATA[]]></default>
4377
  <type/>
4378
  </argument>
4379
- <argument line="1575">
4380
  <name>$current_view</name>
4381
  <default><![CDATA[]]></default>
4382
  <type/>
4383
  </argument>
4384
  </method>
4385
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1702" package="Media Library Assistant">
4386
  <name>get_views</name>
4387
  <full_name>get_views</full_name>
4388
- <docblock line="1694">
4389
  <description><![CDATA[Returns an associative array listing all the views that can be used with this table.]]></description>
4390
  <long-description><![CDATA[<p>These are listed across the top of the page and managed by WordPress.</p>]]></long-description>
4391
- <tag line="1694" name="since" description="0.1"/>
4392
- <tag line="1694" name="return" description="View information,e.g., array ( id =&gt; link )" type="array">
4393
  <type by_reference="false">array</type>
4394
  </tag>
4395
  </docblock>
4396
  </method>
4397
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1758" package="Media Library Assistant">
4398
  <name>get_bulk_actions</name>
4399
  <full_name>get_bulk_actions</full_name>
4400
- <docblock line="1750">
4401
  <description><![CDATA[Get an associative array ( option_name => option_title ) with the list
4402
  of bulk actions available on this table.]]></description>
4403
  <long-description><![CDATA[]]></long-description>
4404
- <tag line="1750" name="since" description="0.1"/>
4405
- <tag line="1750" name="return" description="Contains all the bulk actions: 'slugs'=&gt;'Visible Titles'" type="array">
4406
  <type by_reference="false">array</type>
4407
  </tag>
4408
  </docblock>
4409
  </method>
4410
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1788" package="Media Library Assistant">
4411
  <name>extra_tablenav</name>
4412
  <full_name>extra_tablenav</full_name>
4413
- <docblock line="1777">
4414
  <description><![CDATA[Extra controls to be displayed between bulk actions and pagination]]></description>
4415
  <long-description><![CDATA[<p>Modeled after class-wp-posts-list-table.php in wp-admin/includes.</p>]]></long-description>
4416
- <tag line="1777" name="since" description="0.1"/>
4417
- <tag line="1777" name="param" description="'top' or 'bottom', i.e., above or below the table rows" type="string" variable="$which">
4418
  <type by_reference="false">string</type>
4419
  </tag>
4420
- <tag line="1777" name="return" description="Contains all the bulk actions: 'slugs'=&gt;'Visible Titles'" type="array">
4421
  <type by_reference="false">array</type>
4422
  </tag>
4423
  </docblock>
4424
- <argument line="1788">
4425
  <name>$which</name>
4426
  <default><![CDATA[]]></default>
4427
  <type/>
4428
  </argument>
4429
  </method>
4430
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1828" package="Media Library Assistant">
4431
  <name>prepare_items</name>
4432
  <full_name>prepare_items</full_name>
4433
- <docblock line="1816">
4434
  <description><![CDATA[Prepares the list of items for displaying]]></description>
4435
  <long-description><![CDATA[<p>This is where you prepare your data for display. This method will usually
4436
  be used to query the database, sort and filter the data, and generally
4437
  get it ready to be displayed. At a minimum, we should set $this->items and
4438
  $this->set_pagination_args().</p>]]></long-description>
4439
- <tag line="1816" name="since" description="0.1"/>
4440
- <tag line="1816" name="return" description="" type="void">
4441
  <type by_reference="false">void</type>
4442
  </tag>
4443
  </docblock>
4444
  </method>
4445
- <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1883" package="Media Library Assistant">
4446
  <name>single_row</name>
4447
  <full_name>single_row</full_name>
4448
- <docblock line="1874">
4449
  <description><![CDATA[Generates (echoes) content for a single row of the table]]></description>
4450
  <long-description><![CDATA[]]></long-description>
4451
- <tag line="1874" name="since" description=".20"/>
4452
- <tag line="1874" name="param" description="the current item" type="object" variable="$item">
4453
  <type by_reference="false">object</type>
4454
  </tag>
4455
- <tag line="1874" name="return" description="Echoes the row HTML" type="void">
4456
  <type by_reference="false">void</type>
4457
  </tag>
4458
  </docblock>
4459
- <argument line="1883">
4460
  <name>$item</name>
4461
  <default><![CDATA[]]></default>
4462
  <type/>
@@ -4464,7 +4776,7 @@ $this->set_pagination_args().</p>]]></long-description>
4464
  </method>
4465
  </class>
4466
  </file>
4467
- <file path="includes\class-mla-main.php" hash="69ee61523b15f82c7e7b588aaa154edf" package="Media Library Assistant">
4468
  <docblock line="2">
4469
  <description><![CDATA[Top-level functions for the Media Library Assistant]]></description>
4470
  <long-description><![CDATA[]]></long-description>
@@ -4474,7 +4786,7 @@ $this->set_pagination_args().</p>]]></long-description>
4474
  <include line="13" type="Require Once" package="Media Library Assistant">
4475
  <name/>
4476
  </include>
4477
- <include line="1530" type="Require Once" package="Media Library Assistant">
4478
  <name/>
4479
  </include>
4480
  <class final="false" abstract="false" namespace="global" line="23" package="Media Library Assistant">
@@ -4491,7 +4803,7 @@ of images and files held in the WordPress Media Library.]]></description>
4491
  <constant namespace="global" line="32" package="Media Library Assistant">
4492
  <name>CURRENT_MLA_VERSION</name>
4493
  <full_name>CURRENT_MLA_VERSION</full_name>
4494
- <value><![CDATA['2.01']]></value>
4495
  <docblock line="25">
4496
  <description><![CDATA[Current version number]]></description>
4497
  <long-description><![CDATA[]]></long-description>
@@ -4502,289 +4814,302 @@ of images and files held in the WordPress Media Library.]]></description>
4502
  </docblock>
4503
  </constant>
4504
  <constant namespace="global" line="41" package="Media Library Assistant">
 
 
 
 
 
 
 
 
 
 
 
 
 
4505
  <name>STYLESHEET_SLUG</name>
4506
  <full_name>STYLESHEET_SLUG</full_name>
4507
  <value><![CDATA['mla-style']]></value>
4508
- <docblock line="34">
4509
  <description><![CDATA[Slug for registering and enqueueing plugin style sheet]]></description>
4510
  <long-description><![CDATA[]]></long-description>
4511
- <tag line="34" name="since" description="0.1"/>
4512
- <tag line="34" name="var" description="" type="string">
4513
  <type by_reference="false">string</type>
4514
  </tag>
4515
  </docblock>
4516
  </constant>
4517
- <constant namespace="global" line="50" package="Media Library Assistant">
4518
  <name>JAVASCRIPT_SINGLE_EDIT_SLUG</name>
4519
  <full_name>JAVASCRIPT_SINGLE_EDIT_SLUG</full_name>
4520
  <value><![CDATA['mla-single-edit-scripts']]></value>
4521
- <docblock line="43">
4522
  <description><![CDATA[Slug for localizing and enqueueing JavaScript - edit single item page]]></description>
4523
  <long-description><![CDATA[]]></long-description>
4524
- <tag line="43" name="since" description="0.1"/>
4525
- <tag line="43" name="var" description="" type="string">
4526
  <type by_reference="false">string</type>
4527
  </tag>
4528
  </docblock>
4529
  </constant>
4530
- <constant namespace="global" line="59" package="Media Library Assistant">
4531
  <name>JAVASCRIPT_SINGLE_EDIT_OBJECT</name>
4532
  <full_name>JAVASCRIPT_SINGLE_EDIT_OBJECT</full_name>
4533
  <value><![CDATA['mla_single_edit_vars']]></value>
4534
- <docblock line="52">
4535
  <description><![CDATA[Object name for localizing JavaScript - edit single item page]]></description>
4536
  <long-description><![CDATA[]]></long-description>
4537
- <tag line="52" name="since" description="0.1"/>
4538
- <tag line="52" name="var" description="" type="string">
4539
  <type by_reference="false">string</type>
4540
  </tag>
4541
  </docblock>
4542
  </constant>
4543
- <constant namespace="global" line="68" package="Media Library Assistant">
4544
  <name>JAVASCRIPT_INLINE_EDIT_SLUG</name>
4545
  <full_name>JAVASCRIPT_INLINE_EDIT_SLUG</full_name>
4546
  <value><![CDATA['mla-inline-edit-scripts']]></value>
4547
- <docblock line="61">
4548
  <description><![CDATA[Slug for localizing and enqueueing JavaScript - MLA List Table]]></description>
4549
  <long-description><![CDATA[]]></long-description>
4550
- <tag line="61" name="since" description="0.20"/>
4551
- <tag line="61" name="var" description="" type="string">
4552
  <type by_reference="false">string</type>
4553
  </tag>
4554
  </docblock>
4555
  </constant>
4556
- <constant namespace="global" line="77" package="Media Library Assistant">
4557
  <name>JAVASCRIPT_INLINE_EDIT_OBJECT</name>
4558
  <full_name>JAVASCRIPT_INLINE_EDIT_OBJECT</full_name>
4559
  <value><![CDATA['mla_inline_edit_vars']]></value>
4560
- <docblock line="70">
4561
  <description><![CDATA[Object name for localizing JavaScript - MLA List Table]]></description>
4562
  <long-description><![CDATA[]]></long-description>
4563
- <tag line="70" name="since" description="0.20"/>
4564
- <tag line="70" name="var" description="" type="string">
4565
  <type by_reference="false">string</type>
4566
  </tag>
4567
  </docblock>
4568
  </constant>
4569
- <constant namespace="global" line="86" package="Media Library Assistant">
4570
  <name>ADMIN_PAGE_SLUG</name>
4571
  <full_name>ADMIN_PAGE_SLUG</full_name>
4572
  <value><![CDATA['mla-menu']]></value>
4573
- <docblock line="79">
4574
  <description><![CDATA[Slug for adding plugin submenu]]></description>
4575
  <long-description><![CDATA[]]></long-description>
4576
- <tag line="79" name="since" description="0.1"/>
4577
- <tag line="79" name="var" description="" type="string">
4578
  <type by_reference="false">string</type>
4579
  </tag>
4580
  </docblock>
4581
  </constant>
4582
- <constant namespace="global" line="95" package="Media Library Assistant">
4583
  <name>MLA_ADMIN_NONCE</name>
4584
  <full_name>MLA_ADMIN_NONCE</full_name>
4585
  <value><![CDATA['mla_admin']]></value>
4586
- <docblock line="88">
4587
  <description><![CDATA[Action name; uniquely identifies the nonce]]></description>
4588
  <long-description><![CDATA[]]></long-description>
4589
- <tag line="88" name="since" description="0.1"/>
4590
- <tag line="88" name="var" description="" type="string">
4591
  <type by_reference="false">string</type>
4592
  </tag>
4593
  </docblock>
4594
  </constant>
4595
- <constant namespace="global" line="104" package="Media Library Assistant">
4596
  <name>MLA_ADMIN_SINGLE_DELETE</name>
4597
  <full_name>MLA_ADMIN_SINGLE_DELETE</full_name>
4598
  <value><![CDATA['single_item_delete']]></value>
4599
- <docblock line="97">
4600
  <description><![CDATA[mla_admin_action value for permanently deleting a single item]]></description>
4601
  <long-description><![CDATA[]]></long-description>
4602
- <tag line="97" name="since" description="0.1"/>
4603
- <tag line="97" name="var" description="" type="string">
4604
  <type by_reference="false">string</type>
4605
  </tag>
4606
  </docblock>
4607
  </constant>
4608
- <constant namespace="global" line="113" package="Media Library Assistant">
4609
  <name>MLA_ADMIN_SINGLE_EDIT_DISPLAY</name>
4610
  <full_name>MLA_ADMIN_SINGLE_EDIT_DISPLAY</full_name>
4611
  <value><![CDATA['single_item_edit_display']]></value>
4612
- <docblock line="106">
4613
  <description><![CDATA[mla_admin_action value for displaying a single item]]></description>
4614
  <long-description><![CDATA[]]></long-description>
4615
- <tag line="106" name="since" description="0.1"/>
4616
- <tag line="106" name="var" description="" type="string">
4617
  <type by_reference="false">string</type>
4618
  </tag>
4619
  </docblock>
4620
  </constant>
4621
- <constant namespace="global" line="122" package="Media Library Assistant">
4622
  <name>MLA_ADMIN_SINGLE_EDIT_UPDATE</name>
4623
  <full_name>MLA_ADMIN_SINGLE_EDIT_UPDATE</full_name>
4624
  <value><![CDATA['single_item_edit_update']]></value>
4625
- <docblock line="115">
4626
  <description><![CDATA[mla_admin_action value for updating a single item]]></description>
4627
  <long-description><![CDATA[]]></long-description>
4628
- <tag line="115" name="since" description="0.1"/>
4629
- <tag line="115" name="var" description="" type="string">
4630
  <type by_reference="false">string</type>
4631
  </tag>
4632
  </docblock>
4633
  </constant>
4634
- <constant namespace="global" line="131" package="Media Library Assistant">
4635
  <name>MLA_ADMIN_SINGLE_RESTORE</name>
4636
  <full_name>MLA_ADMIN_SINGLE_RESTORE</full_name>
4637
  <value><![CDATA['single_item_restore']]></value>
4638
- <docblock line="124">
4639
  <description><![CDATA[mla_admin_action value for restoring a single item from the trash]]></description>
4640
  <long-description><![CDATA[]]></long-description>
4641
- <tag line="124" name="since" description="0.1"/>
4642
- <tag line="124" name="var" description="" type="string">
4643
  <type by_reference="false">string</type>
4644
  </tag>
4645
  </docblock>
4646
  </constant>
4647
- <constant namespace="global" line="140" package="Media Library Assistant">
4648
  <name>MLA_ADMIN_SINGLE_TRASH</name>
4649
  <full_name>MLA_ADMIN_SINGLE_TRASH</full_name>
4650
  <value><![CDATA['single_item_trash']]></value>
4651
- <docblock line="133">
4652
  <description><![CDATA[mla_admin_action value for moving a single item to the trash]]></description>
4653
  <long-description><![CDATA[]]></long-description>
4654
- <tag line="133" name="since" description="0.1"/>
4655
- <tag line="133" name="var" description="" type="string">
4656
  <type by_reference="false">string</type>
4657
  </tag>
4658
  </docblock>
4659
  </constant>
4660
- <constant namespace="global" line="149" package="Media Library Assistant">
4661
  <name>MLA_ADMIN_SINGLE_CUSTOM_FIELD_MAP</name>
4662
  <full_name>MLA_ADMIN_SINGLE_CUSTOM_FIELD_MAP</full_name>
4663
  <value><![CDATA['single_item_custom_field_map']]></value>
4664
- <docblock line="142">
4665
  <description><![CDATA[mla_admin_action value for mapping Custom Field metadata]]></description>
4666
  <long-description><![CDATA[]]></long-description>
4667
- <tag line="142" name="since" description="1.10"/>
4668
- <tag line="142" name="var" description="" type="string">
4669
  <type by_reference="false">string</type>
4670
  </tag>
4671
  </docblock>
4672
  </constant>
4673
- <constant namespace="global" line="158" package="Media Library Assistant">
4674
  <name>MLA_ADMIN_SINGLE_MAP</name>
4675
  <full_name>MLA_ADMIN_SINGLE_MAP</full_name>
4676
  <value><![CDATA['single_item_map']]></value>
4677
- <docblock line="151">
4678
  <description><![CDATA[mla_admin_action value for mapping IPTC/EXIF metadata]]></description>
4679
  <long-description><![CDATA[]]></long-description>
4680
- <tag line="151" name="since" description="1.00"/>
4681
- <tag line="151" name="var" description="" type="string">
4682
  <type by_reference="false">string</type>
4683
  </tag>
4684
  </docblock>
4685
  </constant>
4686
- <constant namespace="global" line="167" package="Media Library Assistant">
4687
  <name>MLA_ADMIN_SET_PARENT</name>
4688
  <full_name>MLA_ADMIN_SET_PARENT</full_name>
4689
  <value><![CDATA['set_parent']]></value>
4690
- <docblock line="160">
4691
  <description><![CDATA[mla_admin_action value for setting an item's parent object]]></description>
4692
  <long-description><![CDATA[]]></long-description>
4693
- <tag line="160" name="since" description="1.82"/>
4694
- <tag line="160" name="var" description="" type="string">
4695
  <type by_reference="false">string</type>
4696
  </tag>
4697
  </docblock>
4698
  </constant>
4699
- <constant namespace="global" line="176" package="Media Library Assistant">
4700
  <name>MLA_ADMIN_TERMS_SEARCH</name>
4701
  <full_name>MLA_ADMIN_TERMS_SEARCH</full_name>
4702
  <value><![CDATA['terms_search']]></value>
4703
- <docblock line="169">
4704
  <description><![CDATA[mla_admin_action value for searching taxonomy terms]]></description>
4705
  <long-description><![CDATA[]]></long-description>
4706
- <tag line="169" name="since" description="1.90"/>
4707
- <tag line="169" name="var" description="" type="string">
4708
  <type by_reference="false">string</type>
4709
  </tag>
4710
  </docblock>
4711
  </constant>
4712
- <property final="false" static="true" visibility="private" line="185" namespace="global" package="Media Library Assistant">
4713
  <name>$page_hooks</name>
4714
  <default><![CDATA[array()]]></default>
4715
- <docblock line="178">
4716
  <description><![CDATA[Holds screen ids to match help text to corresponding screen]]></description>
4717
  <long-description><![CDATA[]]></long-description>
4718
- <tag line="178" name="since" description="0.1"/>
4719
- <tag line="178" name="var" description="" type="array">
4720
  <type by_reference="false">array</type>
4721
  </tag>
4722
  </docblock>
4723
  </property>
4724
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="198" package="Media Library Assistant">
4725
  <name>initialize</name>
4726
  <full_name>initialize</full_name>
4727
- <docblock line="187">
4728
  <description><![CDATA[Initialization function, similar to __construct()]]></description>
4729
  <long-description><![CDATA[<p>This function contains add_action and add_filter calls
4730
  to set up the Ajax handlers, enqueue JavaScript and CSS files, and
4731
  set up the Assistant submenu.</p>]]></long-description>
4732
- <tag line="187" name="since" description="0.1"/>
4733
- <tag line="187" name="return" description="" type="void">
4734
  <type by_reference="false">void</type>
4735
  </tag>
4736
  </docblock>
4737
  </method>
4738
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="217" package="Media Library Assistant">
4739
  <name>mla_plugins_loaded_action</name>
4740
  <full_name>mla_plugins_loaded_action</full_name>
4741
- <docblock line="206">
4742
  <description><![CDATA[Load a plugin text domain]]></description>
4743
  <long-description><![CDATA[<p>The "add_action" for this function is in mla-plugin-loader.php, because the "initialize"
4744
  function above doesn't run in time.
4745
  Defined as public because it's an action.</p>]]></long-description>
4746
- <tag line="206" name="since" description="1.60"/>
4747
- <tag line="206" name="return" description="" type="void">
4748
  <type by_reference="false">void</type>
4749
  </tag>
4750
  </docblock>
4751
  </method>
4752
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="247" package="Media Library Assistant">
4753
  <name>mla_admin_init_action</name>
4754
  <full_name>mla_admin_init_action</full_name>
4755
- <docblock line="240">
4756
  <description><![CDATA[Load the plugin's Ajax handler or process Edit Media update actions]]></description>
4757
  <long-description><![CDATA[]]></long-description>
4758
- <tag line="240" name="since" description="0.20"/>
4759
- <tag line="240" name="return" description="" type="void">
4760
  <type by_reference="false">void</type>
4761
  </tag>
4762
  </docblock>
4763
  </method>
4764
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="312" package="Media Library Assistant">
4765
  <name>mla_admin_enqueue_scripts_action</name>
4766
  <full_name>mla_admin_enqueue_scripts_action</full_name>
4767
- <docblock line="303">
4768
  <description><![CDATA[Load the plugin's Style Sheet and Javascript files]]></description>
4769
  <long-description><![CDATA[]]></long-description>
4770
- <tag line="303" name="since" description="0.1"/>
4771
- <tag line="303" name="param" description="Name of the page being loaded" type="string" variable="$page_hook">
4772
  <type by_reference="false">string</type>
4773
  </tag>
4774
- <tag line="303" name="return" description="" type="void">
4775
  <type by_reference="false">void</type>
4776
  </tag>
4777
  </docblock>
4778
- <argument line="312">
4779
  <name>$page_hook</name>
4780
  <default><![CDATA[]]></default>
4781
  <type/>
4782
  </argument>
4783
  </method>
4784
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="401" package="Media Library Assistant">
4785
  <name>mla_admin_menu_action</name>
4786
  <full_name>mla_admin_menu_action</full_name>
4787
- <docblock line="386">
4788
  <description><![CDATA[Add the submenu pages]]></description>
4789
  <long-description><![CDATA[<p>Add a submenu page in the "Media" section,
4790
  add settings page in the "Settings" section.
@@ -4793,131 +5118,131 @@ add settings link in the Plugins section entry for MLA.</p>
4793
  <p>For WordPress versions before 3.5,
4794
  add submenu page(s) for attachment taxonomies,
4795
  add filter to clean up taxonomy submenu labels.</p>]]></long-description>
4796
- <tag line="386" name="since" description="0.1"/>
4797
- <tag line="386" name="return" description="" type="void">
4798
  <type by_reference="false">void</type>
4799
  </tag>
4800
  </docblock>
4801
  </method>
4802
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="478" package="Media Library Assistant">
4803
  <name>mla_load_media_action</name>
4804
  <full_name>mla_load_media_action</full_name>
4805
- <docblock line="471">
4806
  <description><![CDATA[Redirect to Media/Assistant if Media/Library is hidden]]></description>
4807
  <long-description><![CDATA[]]></long-description>
4808
- <tag line="471" name="since" description="1.60"/>
4809
- <tag line="471" name="return" description="" type="void">
4810
  <type by_reference="false">void</type>
4811
  </tag>
4812
  </docblock>
4813
  </method>
4814
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="506" package="Media Library Assistant">
4815
  <name>mla_add_menu_options</name>
4816
  <full_name>mla_add_menu_options</full_name>
4817
- <docblock line="499">
4818
  <description><![CDATA[Add the "XX Entries per page" filter to the Screen Options tab]]></description>
4819
  <long-description><![CDATA[]]></long-description>
4820
- <tag line="499" name="since" description="0.1"/>
4821
- <tag line="499" name="return" description="" type="void">
4822
  <type by_reference="false">void</type>
4823
  </tag>
4824
  </docblock>
4825
  </method>
4826
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="525" package="Media Library Assistant">
4827
  <name>mla_add_help_tab</name>
4828
  <full_name>mla_add_help_tab</full_name>
4829
- <docblock line="518">
4830
  <description><![CDATA[Add contextual help tabs to all the MLA pages]]></description>
4831
  <long-description><![CDATA[]]></long-description>
4832
- <tag line="518" name="since" description="0.1"/>
4833
- <tag line="518" name="return" description="" type="void">
4834
  <type by_reference="false">void</type>
4835
  </tag>
4836
  </docblock>
4837
  </method>
4838
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="635" package="Media Library Assistant">
4839
  <name>mla_screen_options_show_screen_filter</name>
4840
  <full_name>mla_screen_options_show_screen_filter</full_name>
4841
- <docblock line="625">
4842
  <description><![CDATA[Only show screen options on the table-list screen]]></description>
4843
  <long-description><![CDATA[]]></long-description>
4844
- <tag line="625" name="since" description="0.1"/>
4845
- <tag line="625" name="param" description="True to display &quot;Screen Options&quot;, false to suppress them" type="boolean" variable="$show_screen">
4846
  <type by_reference="false">boolean</type>
4847
  </tag>
4848
- <tag line="625" name="param" description="Name of the page being loaded" type="string" variable="$this_screen">
4849
  <type by_reference="false">string</type>
4850
  </tag>
4851
- <tag line="625" name="return" description="True to display &quot;Screen Options&quot;, false to suppress them" type="boolean">
4852
  <type by_reference="false">boolean</type>
4853
  </tag>
4854
  </docblock>
4855
- <argument line="635">
4856
  <name>$show_screen</name>
4857
  <default><![CDATA[]]></default>
4858
  <type/>
4859
  </argument>
4860
- <argument line="635">
4861
  <name>$this_screen</name>
4862
  <default><![CDATA[]]></default>
4863
  <type/>
4864
  </argument>
4865
  </method>
4866
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="654" package="Media Library Assistant">
4867
  <name>mla_set_screen_option_filter</name>
4868
  <full_name>mla_set_screen_option_filter</full_name>
4869
- <docblock line="643">
4870
  <description><![CDATA[Save the "Entries per page" option set by this user]]></description>
4871
  <long-description><![CDATA[]]></long-description>
4872
- <tag line="643" name="since" description="0.1"/>
4873
- <tag line="643" name="param" description="false or value returned by previous filter" type="mixed" variable="$status">
4874
  <type by_reference="false">mixed</type>
4875
  </tag>
4876
- <tag line="643" name="param" description="Name of the option being changed" type="string" variable="$option">
4877
  <type by_reference="false">string</type>
4878
  </tag>
4879
- <tag line="643" name="param" description="New value of the option" type="string" variable="$value">
4880
  <type by_reference="false">string</type>
4881
  </tag>
4882
- <tag line="643" name="return" description="New value if this is our option, otherwise nothing" type="string|void">
4883
  <type by_reference="false">string</type>
4884
  <type by_reference="false">void</type>
4885
  </tag>
4886
  </docblock>
4887
- <argument line="654">
4888
  <name>$status</name>
4889
  <default><![CDATA[]]></default>
4890
  <type/>
4891
  </argument>
4892
- <argument line="654">
4893
  <name>$option</name>
4894
  <default><![CDATA[]]></default>
4895
  <type/>
4896
  </argument>
4897
- <argument line="654">
4898
  <name>$value</name>
4899
  <default><![CDATA[]]></default>
4900
  <type/>
4901
  </argument>
4902
  </method>
4903
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="673" package="Media Library Assistant">
4904
  <name>mla_edit_tax_redirect</name>
4905
  <full_name>mla_edit_tax_redirect</full_name>
4906
- <docblock line="662">
4907
  <description><![CDATA[Redirect to the Edit Tags/Categories page]]></description>
4908
  <long-description><![CDATA[<p>The custom taxonomy add/edit submenu entries go to "upload.php" by default.
4909
  This filter is the only way to redirect them to the correct WordPress page.
4910
  The filter is not required for WordPress 3.5 and later.</p>]]></long-description>
4911
- <tag line="662" name="since" description="0.1"/>
4912
- <tag line="662" name="return" description="" type="void">
4913
  <type by_reference="false">void</type>
4914
  </tag>
4915
  </docblock>
4916
  </method>
4917
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="706" package="Media Library Assistant">
4918
  <name>mla_parent_file_filter</name>
4919
  <full_name>mla_parent_file_filter</full_name>
4920
- <docblock line="690">
4921
  <description><![CDATA[Cleanup menus for Edit Tags/Categories page]]></description>
4922
  <long-description><![CDATA[<p>For WordPress before 3.5, the submenu entries for custom taxonomies
4923
  under the "Media" menu are not set up correctly by WordPress, so this
@@ -4925,344 +5250,344 @@ function cleans them up, redirecting the request to the right WordPress
4925
  page for editing/adding taxonomy terms.
4926
  For WordPress 3.5 and later, the function fixes the submenu bolding when
4927
  going to the Edit Media screen.</p>]]></long-description>
4928
- <tag line="690" name="since" description="0.1"/>
4929
- <tag line="690" name="param" description="The top-level menu page" type="array" variable="$parent_file">
4930
  <type by_reference="false">array</type>
4931
  </tag>
4932
- <tag line="690" name="return" description="The updated top-level menu page" type="string">
4933
  <type by_reference="false">string</type>
4934
  </tag>
4935
  </docblock>
4936
- <argument line="706">
4937
  <name>$parent_file</name>
4938
  <default><![CDATA[]]></default>
4939
  <type/>
4940
  </argument>
4941
  </method>
4942
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="768" package="Media Library Assistant">
4943
  <name>_process_mla_download_file</name>
4944
  <full_name>_process_mla_download_file</full_name>
4945
- <docblock line="759">
4946
  <description><![CDATA[Process secure file download]]></description>
4947
  <long-description><![CDATA[<p>Requires _wpnonce, mla_download_file and mla_download_type in $_REQUEST; mla_download_disposition is optional.</p>]]></long-description>
4948
- <tag line="759" name="since" description="2.00"/>
4949
- <tag line="759" name="return" description="echos file contents and calls exit();" type="void">
4950
  <type by_reference="false">void</type>
4951
  </tag>
4952
  </docblock>
4953
  </method>
4954
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="822" package="Media Library Assistant">
4955
  <name>_process_bulk_value</name>
4956
  <full_name>_process_bulk_value</full_name>
4957
- <docblock line="812">
4958
  <description><![CDATA[Process bulk edit area fields, which may contain a Content Template]]></description>
4959
  <long-description><![CDATA[]]></long-description>
4960
- <tag line="812" name="since" description="1.80"/>
4961
- <tag line="812" name="param" description="Current post ID" type="integer" variable="$post_id">
4962
  <type by_reference="false">integer</type>
4963
  </tag>
4964
- <tag line="812" name="param" description="Field value as entered" type="string" variable="$bulk_value">
4965
  <type by_reference="false">string</type>
4966
  </tag>
4967
- <tag line="812" name="return" description="Empty, or new value for the field" type="string">
4968
  <type by_reference="false">string</type>
4969
  </tag>
4970
  </docblock>
4971
- <argument line="822">
4972
  <name>$post_id</name>
4973
  <default><![CDATA[]]></default>
4974
  <type/>
4975
  </argument>
4976
- <argument line="822">
4977
  <name>$bulk_value</name>
4978
  <default><![CDATA[]]></default>
4979
  <type/>
4980
  </argument>
4981
  </method>
4982
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="857" package="Media Library Assistant">
4983
  <name>mla_process_bulk_action</name>
4984
  <full_name>mla_process_bulk_action</full_name>
4985
- <docblock line="847">
4986
  <description><![CDATA[Process bulk action for one or more attachments]]></description>
4987
  <long-description><![CDATA[]]></long-description>
4988
- <tag line="847" name="since" description="2.00"/>
4989
- <tag line="847" name="param" description="Bulk action slug: delete, edit, restore, trash, custom action" type="string" variable="$bulk_action">
4990
  <type by_reference="false">string</type>
4991
  </tag>
4992
- <tag line="847" name="param" description="Form elements, e.g., from $_REQUEST" type="array" variable="$request">
4993
  <type by_reference="false">array</type>
4994
  </tag>
4995
- <tag line="847" name="return" description="messages and page content: ( 'message', 'body', 'unchanged', 'success', 'failure', 'item_results' )" type="array">
4996
  <type by_reference="false">array</type>
4997
  </tag>
4998
  </docblock>
4999
- <argument line="857">
5000
  <name>$bulk_action</name>
5001
  <default><![CDATA[]]></default>
5002
  <type/>
5003
  </argument>
5004
- <argument line="857">
5005
  <name>$request</name>
5006
  <default><![CDATA[NULL]]></default>
5007
  <type/>
5008
  </argument>
5009
  </method>
5010
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="1219" package="Media Library Assistant">
5011
  <name>mla_render_admin_page</name>
5012
  <full_name>mla_render_admin_page</full_name>
5013
- <docblock line="1212">
5014
  <description><![CDATA[Render the "Assistant" subpage in the Media section, using the list_table package]]></description>
5015
  <long-description><![CDATA[]]></long-description>
5016
- <tag line="1212" name="since" description="0.1"/>
5017
- <tag line="1212" name="return" description="" type="void">
5018
  <type by_reference="false">void</type>
5019
  </tag>
5020
  </docblock>
5021
  </method>
5022
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="1583" package="Media Library Assistant">
5023
  <name>mla_find_posts_ajax_action</name>
5024
  <full_name>mla_find_posts_ajax_action</full_name>
5025
- <docblock line="1573">
5026
  <description><![CDATA[Ajax handler to fetch candidates for the "Set Parent" popup window]]></description>
5027
  <long-description><![CDATA[<p>Adapted from wp_ajax_find_posts in /wp-admin/includes/ajax-actions.php.
5028
  Adds filters for post type and pagination.</p>]]></long-description>
5029
- <tag line="1573" name="since" description="1.90"/>
5030
- <tag line="1573" name="return" description="passes results to wp_send_json_success() for JSON encoding and transmission" type="void">
5031
  <type by_reference="false">void</type>
5032
  </tag>
5033
  </docblock>
5034
  </method>
5035
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="1672" package="Media Library Assistant">
5036
  <name>mla_set_parent_ajax_action</name>
5037
  <full_name>mla_set_parent_ajax_action</full_name>
5038
- <docblock line="1663">
5039
  <description><![CDATA[Ajax handler to set post_parent for a single attachment]]></description>
5040
  <long-description><![CDATA[<p>Adapted from wp_ajax_inline_save in /wp-admin/includes/ajax-actions.php</p>]]></long-description>
5041
- <tag line="1663" name="since" description="0.20"/>
5042
- <tag line="1663" name="return" description="echo HTML &lt;td&gt; innerHTML for updated call or error message, then die()" type="void">
5043
  <type by_reference="false">void</type>
5044
  </tag>
5045
  </docblock>
5046
  </method>
5047
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="1706" package="Media Library Assistant">
5048
  <name>_bulk_edit_ajax_handler</name>
5049
  <full_name>_bulk_edit_ajax_handler</full_name>
5050
- <docblock line="1699">
5051
  <description><![CDATA[Ajax handler for bulk editing and mapping]]></description>
5052
  <long-description><![CDATA[]]></long-description>
5053
- <tag line="1699" name="since" description="2.00"/>
5054
- <tag line="1699" name="return" description="echo json results or error message, then die()" type="void">
5055
  <type by_reference="false">void</type>
5056
  </tag>
5057
  </docblock>
5058
  </method>
5059
- <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="1747" package="Media Library Assistant">
5060
  <name>mla_inline_edit_ajax_action</name>
5061
  <full_name>mla_inline_edit_ajax_action</full_name>
5062
- <docblock line="1738">
5063
  <description><![CDATA[Ajax handler for inline editing]]></description>
5064
  <long-description><![CDATA[<p>Adapted for Quick Edit from wp_ajax_inline_save in /wp-admin/includes/ajax-actions.php</p>]]></long-description>
5065
- <tag line="1738" name="since" description="0.20"/>
5066
- <tag line="1738" name="return" description="echo HTML &lt;tr&gt; markup for updated row or error message, then die()" type="void">
5067
  <type by_reference="false">void</type>
5068
  </tag>
5069
  </docblock>
5070
  </method>
5071
- <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="1862" package="Media Library Assistant">
5072
  <name>_compose_post_type_select</name>
5073
  <full_name>_compose_post_type_select</full_name>
5074
- <docblock line="1851">
5075
  <description><![CDATA[Compose a Post Type Options list with current selection]]></description>
5076
  <long-description><![CDATA[]]></long-description>
5077
- <tag line="1851" name="since" description="1.90"/>
5078
- <tag line="1851" name="uses" description="\global\$mla_option_templates" refers="\global\$mla_option_templates"/>
5079
- <tag line="1851" name="param" description="template parts" type="array" variable="$templates">
5080
  <type by_reference="false">array</type>
5081
  </tag>
5082
- <tag line="1851" name="param" description="current selection or 'all' (default)" type="string" variable="$selection">
5083
  <type by_reference="false">string</type>
5084
  </tag>
5085
- <tag line="1851" name="return" description="HTML markup with select field options" type="string">
5086
  <type by_reference="false">string</type>
5087
  </tag>
5088
  </docblock>
5089
- <argument line="1862">
5090
  <name>$templates</name
622
  <tag line="2" name="since" description="MLA 1.80"/>
623
  </docblock>
624
  </file>
625
+ <file path="includes\class-mla-data-pdf.php" hash="854fafe96899ef281ab3d644ce318da8" package="Media Library Assistant">
626
+ <docblock line="2">
627
+ <description><![CDATA[Meta data parsing functions for PDF documents]]></description>
628
+ <long-description><![CDATA[]]></long-description>
629
+ <tag line="2" name="package" description="Media Library Assistant"/>
630
+ <tag line="2" name="since" description="2.10"/>
631
+ </docblock>
632
+ <class final="false" abstract="false" namespace="global" line="15" package="Media Library Assistant">
633
+ <extends/>
634
+ <name>MLAPDF</name>
635
+ <full_name>\MLAPDF</full_name>
636
+ <docblock line="9">
637
+ <description><![CDATA[Class MLA (Media Library Assistant) PDF extracts legacy and XMP meta data from PDF files]]></description>
638
+ <long-description><![CDATA[]]></long-description>
639
+ <tag line="9" name="package" description="Media Library Assistant"/>
640
+ <tag line="9" name="since" description="2.10"/>
641
+ </docblock>
642
+ <property final="false" static="true" visibility="private" line="27" namespace="global" package="Media Library Assistant">
643
+ <name>$pdf_indirect_objects</name>
644
+ <default><![CDATA[NULL]]></default>
645
+ <docblock line="16">
646
+ <description><![CDATA[Array of PDF indirect objects]]></description>
647
+ <long-description><![CDATA[<p>This array contains all of the indirect object offsets and lengths.
648
+ The array key is ( object ID * 1000 ) + object generation.
649
+ The array value is array( number, generation, start, optional /length )</p>]]></long-description>
650
+ <tag line="16" name="since" description="2.10"/>
651
+ <tag line="16" name="var" description="" type="array">
652
+ <type by_reference="false">array</type>
653
+ </tag>
654
+ </docblock>
655
+ </property>
656
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="42" package="Media Library Assistant">
657
+ <name>_parse_pdf_xref_subsection</name>
658
+ <full_name>_parse_pdf_xref_subsection</full_name>
659
+ <docblock line="29">
660
+ <description><![CDATA[Parse a cross-reference table subsection into the array of indirect object definitions]]></description>
661
+ <long-description><![CDATA[<p>A cross-reference subsection is a sequence of 20-byte entries, each with offset and generation values.</p>]]></long-description>
662
+ <tag line="29" name="since" description="2.10"/>
663
+ <tag line="29" name="param" description="buffer containing the subsection" type="string" variable="$xref_section">
664
+ <type by_reference="false">string</type>
665
+ </tag>
666
+ <tag line="29" name="param" description="offset within the buffer of the first entry" type="integer" variable="$offset">
667
+ <type by_reference="false">integer</type>
668
+ </tag>
669
+ <tag line="29" name="param" description="number of the first object in the subsection" type="integer" variable="$object_id">
670
+ <type by_reference="false">integer</type>
671
+ </tag>
672
+ <tag line="29" name="param" description="number of entries in the subsection" type="integer" variable="$count">
673
+ <type by_reference="false">integer</type>
674
+ </tag>
675
+ <tag line="29" name="return" description="" type="void">
676
+ <type by_reference="false">void</type>
677
+ </tag>
678
+ </docblock>
679
+ <argument line="42">
680
+ <name>$xref_section</name>
681
+ <default><![CDATA[]]></default>
682
+ <type/>
683
+ </argument>
684
+ <argument line="42">
685
+ <name>$offset</name>
686
+ <default><![CDATA[]]></default>
687
+ <type/>
688
+ </argument>
689
+ <argument line="42">
690
+ <name>$object_id</name>
691
+ <default><![CDATA[]]></default>
692
+ <type/>
693
+ </argument>
694
+ <argument line="42">
695
+ <name>$count</name>
696
+ <default><![CDATA[]]></default>
697
+ <type/>
698
+ </argument>
699
+ </method>
700
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="74" package="Media Library Assistant">
701
+ <name>_parse_pdf_xref_section</name>
702
+ <full_name>_parse_pdf_xref_section</full_name>
703
+ <docblock line="63">
704
+ <description><![CDATA[Parse a cross-reference table section into the array of indirect object definitions]]></description>
705
+ <long-description><![CDATA[<p>Creates the array of indirect object offsets and lengths</p>]]></long-description>
706
+ <tag line="63" name="since" description="2.10"/>
707
+ <tag line="63" name="param" description="full path and file name" type="string" variable="$file_name">
708
+ <type by_reference="false">string</type>
709
+ </tag>
710
+ <tag line="63" name="param" description="offset within the file of the xref id and count entry" type="integer" variable="$file_offset">
711
+ <type by_reference="false">integer</type>
712
+ </tag>
713
+ <tag line="63" name="return" description="length of the section" type="integer">
714
+ <type by_reference="false">integer</type>
715
+ </tag>
716
+ </docblock>
717
+ <argument line="74">
718
+ <name>$file_name</name>
719
+ <default><![CDATA[]]></default>
720
+ <type/>
721
+ </argument>
722
+ <argument line="74">
723
+ <name>$file_offset</name>
724
+ <default><![CDATA[]]></default>
725
+ <type/>
726
+ </argument>
727
+ </method>
728
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="108" package="Media Library Assistant">
729
+ <name>_parse_pdf_xref_stream</name>
730
+ <full_name>_parse_pdf_xref_stream</full_name>
731
+ <docblock line="96">
732
+ <description><![CDATA[Parse a cross-reference steam into the array of indirect object definitions]]></description>
733
+ <long-description><![CDATA[<p>Creates the array of indirect object offsets and lengths</p>]]></long-description>
734
+ <tag line="96" name="since" description="2.10"/>
735
+ <tag line="96" name="param" description="full path and file name" type="string" variable="$file_name">
736
+ <type by_reference="false">string</type>
737
+ </tag>
738
+ <tag line="96" name="param" description="offset within the file of the xref id and count entry" type="integer" variable="$file_offset">
739
+ <type by_reference="false">integer</type>
740
+ </tag>
741
+ <tag line="96" name="param" description="&quot;/W&quot; entry, representing the size of the fields in a single entry" type="string" variable="$entry_parms_string">
742
+ <type by_reference="false">string</type>
743
+ </tag>
744
+ <tag line="96" name="return" description="length of the stream" type="integer">
745
+ <type by_reference="false">integer</type>
746
+ </tag>
747
+ </docblock>
748
+ <argument line="108">
749
+ <name>$file_name</name>
750
+ <default><![CDATA[]]></default>
751
+ <type/>
752
+ </argument>
753
+ <argument line="108">
754
+ <name>$file_offset</name>
755
+ <default><![CDATA[]]></default>
756
+ <type/>
757
+ </argument>
758
+ <argument line="108">
759
+ <name>$entry_parms_string</name>
760
+ <default><![CDATA[]]></default>
761
+ <type/>
762
+ </argument>
763
+ </method>
764
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="187" package="Media Library Assistant">
765
+ <name>_build_pdf_indirect_objects</name>
766
+ <full_name>_build_pdf_indirect_objects</full_name>
767
+ <docblock line="177">
768
+ <description><![CDATA[Build an array of indirect object definitions]]></description>
769
+ <long-description><![CDATA[<p>Creates the array of indirect object offsets and lengths</p>]]></long-description>
770
+ <tag line="177" name="since" description="2.10"/>
771
+ <tag line="177" name="param" description="The entire PDF document, passsed by reference" type="string" variable="$string">
772
+ <type by_reference="false">string</type>
773
+ </tag>
774
+ <tag line="177" name="return" description="" type="void">
775
+ <type by_reference="false">void</type>
776
+ </tag>
777
+ </docblock>
778
+ <argument line="187">
779
+ <name>$string</name>
780
+ <default><![CDATA[]]></default>
781
+ <type/>
782
+ </argument>
783
+ </method>
784
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="235" package="Media Library Assistant">
785
+ <name>_find_pdf_indirect_dictionary</name>
786
+ <full_name>_find_pdf_indirect_dictionary</full_name>
787
+ <docblock line="221">
788
+ <description><![CDATA[Find the offset, length and contents of an indirect object containing a dictionary]]></description>
789
+ <long-description><![CDATA[<p>The function searches the entire file, if necessary, to find the last/most recent copy of the object.
790
+ This is required because Adobe Acrobat does NOT increment the generation number when it reuses an object.</p>]]></long-description>
791
+ <tag line="221" name="since" description="2.10"/>
792
+ <tag line="221" name="param" description="full path and file name" type="string" variable="$file_name">
793
+ <type by_reference="false">string</type>
794
+ </tag>
795
+ <tag line="221" name="param" description="The object number" type="integer" variable="$object">
796
+ <type by_reference="false">integer</type>
797
+ </tag>
798
+ <tag line="221" name="param" description="The object generation number; default zero (0)" type="integer" variable="$generation">
799
+ <type by_reference="false">integer</type>
800
+ </tag>
801
+ <tag line="221" name="return" description="NULL on failure else array( 'start' =&gt; offset in the file, 'length' =&gt; object length, 'content' =&gt; dictionary contents )" type="mixed">
802
+ <type by_reference="false">mixed</type>
803
+ </tag>
804
+ </docblock>
805
+ <argument line="235">
806
+ <name>$file_name</name>
807
+ <default><![CDATA[]]></default>
808
+ <type/>
809
+ </argument>
810
+ <argument line="235">
811
+ <name>$object</name>
812
+ <default><![CDATA[]]></default>
813
+ <type/>
814
+ </argument>
815
+ <argument line="235">
816
+ <name>$generation</name>
817
+ <default><![CDATA[0]]></default>
818
+ <type/>
819
+ </argument>
820
+ </method>
821
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="332" package="Media Library Assistant">
822
+ <name>_parse_pdf_UTF16BE</name>
823
+ <full_name>_parse_pdf_UTF16BE</full_name>
824
+ <docblock line="323">
825
+ <description><![CDATA[Parse a PDF Unicode (16-bit Big Endian) object]]></description>
826
+ <long-description><![CDATA[]]></long-description>
827
+ <tag line="323" name="since" description="2.10"/>
828
+ <tag line="323" name="param" description="PDF string of 16-bit characters" type="string" variable="$source_string">
829
+ <type by_reference="false">string</type>
830
+ </tag>
831
+ <tag line="323" name="return" description="UTF-8 encoded string" type="string">
832
+ <type by_reference="false">string</type>
833
+ </tag>
834
+ </docblock>
835
+ <argument line="332">
836
+ <name>$source_string</name>
837
+ <default><![CDATA[]]></default>
838
+ <type/>
839
+ </argument>
840
+ </method>
841
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="361" package="Media Library Assistant">
842
+ <name>_parse_pdf_string</name>
843
+ <full_name>_parse_pdf_string</full_name>
844
+ <docblock line="348">
845
+ <description><![CDATA[Parse a PDF string object]]></description>
846
+ <long-description><![CDATA[<p>Returns an array with one dictionary entry. The array also has a '/length' element containing
847
+ the number of bytes occupied by the string in the source string, including the enclosing parentheses.</p>]]></long-description>
848
+ <tag line="348" name="since" description="2.10"/>
849
+ <tag line="348" name="param" description="data within which the string occurs" type="string" variable="$source_string">
850
+ <type by_reference="false">string</type>
851
+ </tag>
852
+ <tag line="348" name="param" description="offset within the source string of the opening '(' character." type="integer" variable="$offset">
853
+ <type by_reference="false">integer</type>
854
+ </tag>
855
+ <tag line="348" name="return" description="( key =&gt; array( 'type' =&gt; type, 'value' =&gt; value, '/length' =&gt; length ) ) for the string" type="array">
856
+ <type by_reference="false">array</type>
857
+ </tag>
858
+ </docblock>
859
+ <argument line="361">
860
+ <name>$source_string</name>
861
+ <default><![CDATA[]]></default>
862
+ <type/>
863
+ </argument>
864
+ <argument line="361">
865
+ <name>$offset</name>
866
+ <default><![CDATA[]]></default>
867
+ <type/>
868
+ </argument>
869
+ </method>
870
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="455" package="Media Library Assistant">
871
+ <name>_parse_pdf_LPD_dictionary</name>
872
+ <full_name>_parse_pdf_LPD_dictionary</full_name>
873
+ <docblock line="441">
874
+ <description><![CDATA[Parse a PDF Linearization Parameter Dictionary object]]></description>
875
+ <long-description><![CDATA[<p>Returns an array of dictionary contents, classified by object type: boolean, numeric, string, hex (string),
876
+ indirect (object), name, array, dictionary, stream, and null.
877
+ The array also has a '/length' element containing the number of bytes occupied by the
878
+ dictionary in the source string, excluding the enclosing delimiters, if passed in.</p>]]></long-description>
879
+ <tag line="441" name="since" description="2.10"/>
880
+ <tag line="441" name="param" description="data within which the object occurs, typically the start of a PDF document" type="string" variable="$source_string">
881
+ <type by_reference="false">string</type>
882
+ </tag>
883
+ <tag line="441" name="param" description="filesize of the PDF document, for validation purposes, or zero (0) to ignore filesize" type="integer" variable="$filesize">
884
+ <type by_reference="false">integer</type>
885
+ </tag>
886
+ <tag line="441" name="return" description="array of dictionary objects on success, false on failure" type="mixed">
887
+ <type by_reference="false">mixed</type>
888
+ </tag>
889
+ </docblock>
890
+ <argument line="455">
891
+ <name>$source_string</name>
892
+ <default><![CDATA[]]></default>
893
+ <type/>
894
+ </argument>
895
+ <argument line="455">
896
+ <name>$filesize</name>
897
+ <default><![CDATA[]]></default>
898
+ <type/>
899
+ </argument>
900
+ </method>
901
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="481" package="Media Library Assistant">
902
+ <name>_parse_pdf_dictionary</name>
903
+ <full_name>_parse_pdf_dictionary</full_name>
904
+ <docblock line="466">
905
+ <description><![CDATA[Parse a PDF dictionary object]]></description>
906
+ <long-description><![CDATA[<p>Returns an array of dictionary contents, classified by object type: boolean, numeric, string, hex (string),
907
+ indirect (object), name, array, dictionary, stream, and null.
908
+ The array also has a '/length' element containing the number of bytes occupied by the
909
+ dictionary in the source string, excluding the enclosing delimiters.</p>]]></long-description>
910
+ <tag line="466" name="since" description="2.10"/>
911
+ <tag line="466" name="param" description="data within which the string occurs" type="string" variable="$source_string">
912
+ <type by_reference="false">string</type>
913
+ </tag>
914
+ <tag line="466" name="param" description="offset within the source string of the opening '&lt;&lt;' characters or the first content character." type="integer" variable="$offset">
915
+ <type by_reference="false">integer</type>
916
+ </tag>
917
+ <tag line="466" name="return" description="( '/length' =&gt; length, key =&gt; array( 'type' =&gt; type, 'value' =&gt; value ) ) for each dictionary field" type="array">
918
+ <type by_reference="false">array</type>
919
+ </tag>
920
+ </docblock>
921
+ <argument line="481">
922
+ <name>$source_string</name>
923
+ <default><![CDATA[]]></default>
924
+ <type/>
925
+ </argument>
926
+ <argument line="481">
927
+ <name>$offset</name>
928
+ <default><![CDATA[]]></default>
929
+ <type/>
930
+ </argument>
931
+ </method>
932
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="609" package="Media Library Assistant">
933
+ <name>_extract_pdf_trailer</name>
934
+ <full_name>_extract_pdf_trailer</full_name>
935
+ <docblock line="599">
936
+ <description><![CDATA[Extract dictionary from traditional cross-reference + trailer documents]]></description>
937
+ <long-description><![CDATA[]]></long-description>
938
+ <tag line="599" name="since" description="2.10"/>
939
+ <tag line="599" name="param" description="full path to the desired file" type="string" variable="$file_name">
940
+ <type by_reference="false">string</type>
941
+ </tag>
942
+ <tag line="599" name="param" description="offset within file of the cross-reference table" type="integer" variable="$file_offset">
943
+ <type by_reference="false">integer</type>
944
+ </tag>
945
+ <tag line="599" name="return" description="array of &quot;PDF dictionary arrays&quot;, newest first, or NULL on failure" type="mixed">
946
+ <type by_reference="false">mixed</type>
947
+ </tag>
948
+ </docblock>
949
+ <argument line="609">
950
+ <name>$file_name</name>
951
+ <default><![CDATA[]]></default>
952
+ <type/>
953
+ </argument>
954
+ <argument line="609">
955
+ <name>$file_offset</name>
956
+ <default><![CDATA[]]></default>
957
+ <type/>
958
+ </argument>
959
+ </method>
960
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="695" package="Media Library Assistant">
961
+ <name>mla_extract_pdf_metadata</name>
962
+ <full_name>mla_extract_pdf_metadata</full_name>
963
+ <docblock line="686">
964
+ <description><![CDATA[Extract Metadata from a PDF file]]></description>
965
+ <long-description><![CDATA[]]></long-description>
966
+ <tag line="686" name="since" description="2.10"/>
967
+ <tag line="686" name="param" description="full path to the desired file" type="string" variable="$file_name">
968
+ <type by_reference="false">string</type>
969
+ </tag>
970
+ <tag line="686" name="return" description="( 'xmp' =&gt; array( key =&gt; value ), 'pdf' =&gt; array( key =&gt; value ) ) for each metadata field, in string format" type="array">
971
+ <type by_reference="false">array</type>
972
+ </tag>
973
+ </docblock>
974
+ <argument line="695">
975
+ <name>$file_name</name>
976
+ <default><![CDATA[]]></default>
977
+ <type/>
978
+ </argument>
979
+ </method>
980
+ </class>
981
+ <markers>
982
+ <todo line="341">encode the rest</todo>
983
+ </markers>
984
+ </file>
985
+ <file path="includes\class-mla-data.php" hash="d79dfbd85b01f0d8b4c7dedb7e93f7be" package="Media Library Assistant">
986
  <docblock line="2">
987
  <description><![CDATA[Database and template file access for MLA needs]]></description>
988
  <long-description><![CDATA[]]></long-description>
1023
  </tag>
1024
  </docblock>
1025
  </property>
1026
+ <property final="false" static="true" visibility="private" line="1370" namespace="global" package="Media Library Assistant">
1027
  <name>$mla_list_table_items</name>
1028
  <default><![CDATA[NULL]]></default>
1029
+ <docblock line="1363">
1030
  <description><![CDATA[Cache the results of mla_count_list_table_items for reuse in mla_query_list_table_items]]></description>
1031
  <long-description><![CDATA[]]></long-description>
1032
+ <tag line="1363" name="since" description="1.40"/>
1033
+ <tag line="1363" name="var" description="" type="array">
1034
  <type by_reference="false">array</type>
1035
  </tag>
1036
  </docblock>
1037
  </property>
1038
+ <property final="false" static="true" visibility="private" line="1476" namespace="global" package="Media Library Assistant">
1039
  <name>$query_parameters</name>
1040
  <default><![CDATA[array()]]></default>
1041
+ <docblock line="1462">
1042
  <description><![CDATA[WP_Query filter "parameters"]]></description>
1043
  <long-description><![CDATA[<p>This array defines parameters for the query's join, where and orderby filters.
1044
  The parameters are set up in the _prepare_list_table_query function, and
1046
 
1047
  <p>Array index values are: use_postmeta_view, postmeta_key, postmeta_value, patterns,
1048
  detached, orderby, order, mla-metavalue, debug (also in search_parameters)</p>]]></long-description>
1049
+ <tag line="1462" name="since" description="0.30"/>
1050
+ <tag line="1462" name="var" description="" type="array">
1051
  <type by_reference="false">array</type>
1052
  </tag>
1053
  </docblock>
1054
  </property>
1055
+ <property final="false" static="true" visibility="public" line="1505" namespace="global" package="Media Library Assistant">
1056
  <name>$search_parameters</name>
1057
  <default><![CDATA[array()]]></default>
1058
+ <docblock line="1478">
1059
  <description><![CDATA[WP_Query 'posts_search' filter "parameters"]]></description>
1060
  <long-description><![CDATA[<p>This array defines parameters for the query's posts_search filter, which uses
1061
  'search_string' to add a clause to the query's WHERE clause. It is shared between
1076
  ['debug'] => internal element, console/log/shortcode/none
1077
  ['mla_debug_messages'] => internal element, added when debug = 'shortcode'
1078
  ['tax_terms_count'] => internal element, shared with JOIN and GROUP BY filters</p>]]></long-description>
1079
+ <tag line="1478" name="since" description="2.00"/>
1080
+ <tag line="1478" name="var" description="" type="array">
1081
  <type by_reference="false">array</type>
1082
  </tag>
1083
  </docblock>
1084
  </property>
1085
+ <property final="false" static="true" visibility="private" line="3689" namespace="global" package="Media Library Assistant">
1086
  <name>$galleries</name>
1087
  <default><![CDATA[null]]></default>
1088
+ <docblock line="3669">
1089
  <description><![CDATA[Objects containing [gallery] shortcodes]]></description>
1090
  <long-description><![CDATA[<p>This array contains all of the objects containing one or more [gallery] shortcodes
1091
  and array(s) of which attachments each [gallery] contains. The arrays are built once
1099
  ['galleries'] array of [gallery] entries numbered from one (1), containing:
1100
  galleries[X]['query'] contains a string with the arguments of the [gallery],
1101
  galleries[X]['results'] contains an array ( ID ) of post_ids for the objects in the gallery.</p>]]></long-description>
1102
+ <tag line="3669" name="since" description="0.70"/>
1103
+ <tag line="3669" name="var" description="" type="array">
1104
  <type by_reference="false">array</type>
1105
  </tag>
1106
  </docblock>
1107
  </property>
1108
+ <property final="false" static="true" visibility="private" line="3702" namespace="global" package="Media Library Assistant">
1109
  <name>$mla_galleries</name>
1110
  <default><![CDATA[null]]></default>
1111
+ <docblock line="3691">
1112
  <description><![CDATA[Objects containing [mla_gallery] shortcodes]]></description>
1113
  <long-description><![CDATA[<p>This array contains all of the objects containing one or more [mla_gallery] shortcodes
1114
  and array(s) of which attachments each [mla_gallery] contains. The arrays are built once
1115
  each page load and cached for subsequent calls.</p>]]></long-description>
1116
+ <tag line="3691" name="since" description="0.70"/>
1117
+ <tag line="3691" name="var" description="" type="array">
1118
  <type by_reference="false">array</type>
1119
  </tag>
1120
  </docblock>
1121
  </property>
1122
+ <property final="false" static="true" visibility="public" line="4289" namespace="global" package="Media Library Assistant">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1123
  <name>$utf8_chars</name>
1124
  <default><![CDATA[array("\xC2\x80", "\xC2\x81", "\xC2\x82", "\xC2\x83", "\xC2\x84", "\xC2\x85", "\xC2\x86", "\xC2\x87", "\xC2\x88", "\xC2\x89", "\xC2\x8A", "\xC2\x8B", "\xC2\x8C", "\xC2\x8D", "\xC2\x8E", "\xC2\x8F", "\xC2\x90", "\xC2\x91", "\xC2\x92", "\xC2\x93", "\xC2\x94", "\xC2\x95", "\xC2\x96", "\xC2\x97", "\xC2\x98", "\xC2\x99", "\xC2\x9A", "\xC2\x9B", "\xC2\x9C", "\xC2\x9D", "\xC2\x9E", "\xC2\x9F", "\xC2\xA0", "\xC2\xA1", "\xC2\xA2", "\xC2\xA3", "\xC2\xA4", "\xC2\xA5", "\xC2\xA6", "\xC2\xA7", "\xC2\xA8", "\xC2\xA9", "\xC2\xAA", "\xC2\xAB", "\xC2\xAC", "\xC2\xAD", "\xC2\xAE", "\xC2\xAF", "\xC2\xB0", "\xC2\xB1", "\xC2\xB2", "\xC2\xB3", "\xC2\xB4", "\xC2\xB5", "\xC2\xB6", "\xC2\xB7", "\xC2\xB8", "\xC2\xB9", "\xC2\xBA", "\xC2\xBB", "\xC2\xBC", "\xC2\xBD", "\xC2\xBE", "\xC2\xBF", "\xC3\x80", "\xC3\x81", "\xC3\x82", "\xC3\x83", "\xC3\x84", "\xC3\x85", "\xC3\x86", "\xC3\x87", "\xC3\x88", "\xC3\x89", "\xC3\x8A", "\xC3\x8B", "\xC3\x8C", "\xC3\x8D", "\xC3\x8E", "\xC3\x8F", "\xC3\x90", "\xC3\x91", "\xC3\x92", "\xC3\x93", "\xC3\x94", "\xC3\x95", "\xC3\x96", "\xC3\x97", "\xC3\x98", "\xC3\x99", "\xC3\x9A", "\xC3\x9B", "\xC3\x9C", "\xC3\x9D", "\xC3\x9E", "\xC3\x9F", "\xC3\xA0", "\xC3\xA1", "\xC3\xA2", "\xC3\xA3", "\xC3\xA4", "\xC3\xA5", "\xC3\xA6", "\xC3\xA7", "\xC3\xA8", "\xC3\xA9", "\xC3\xAA", "\xC3\xAB", "\xC3\xAC", "\xC3\xAD", "\xC3\xAE", "\xC3\xAF", "\xC3\xB0", "\xC3\xB1", "\xC3\xB2", "\xC3\xB3", "\xC3\xB4", "\xC3\xB5", "\xC3\xB6", "\xC3\xB7", "\xC3\xB8", "\xC3\xB9", "\xC3\xBA", "\xC3\xBB", "\xC3\xBC", "\xC3\xBD", "\xC3\xBE", "\xC3\xBF")]]></default>
1125
+ <docblock line="4282">
1126
  <description><![CDATA[UTF-8 replacements for invalid SQL characters]]></description>
1127
  <long-description><![CDATA[]]></long-description>
1128
+ <tag line="4282" name="since" description="1.41"/>
1129
+ <tag line="4282" name="var" description="" type="array">
1130
  <type by_reference="false">array</type>
1131
  </tag>
1132
  </docblock>
1133
  </property>
1134
+ <property final="false" static="true" visibility="private" line="4349" namespace="global" package="Media Library Assistant">
1135
  <name>$mla_iptc_records</name>
1136
  <default><![CDATA[array("1#000" => "Model Version", "1#005" => "Destination", "1#020" => "File Format", "1#022" => "File Format Version", "1#030" => "Service Identifier", "1#040" => "Envelope Number", "1#050" => "Product ID", "1#060" => "Envelope Priority", "1#070" => "Date Sent", "1#080" => "Time Sent", "1#090" => "Coded Character Set", "1#100" => "UNO", "1#120" => "ARM Identifier", "1#122" => "ARM Version", "2#000" => "Record Version", "2#003" => "Object Type Reference", "2#004" => "Object Attribute Reference", "2#005" => "Object Name", "2#007" => "Edit Status", "2#008" => "Editorial Update", "2#010" => "Urgency", "2#012" => "Subject Reference", "2#015" => "Category", "2#020" => "Supplemental Category", "2#022" => "Fixture Identifier", "2#025" => "Keywords", "2#026" => "Content Location Code", "2#027" => "Content Location Name", "2#030" => "Release Date", "2#035" => "Release Time", "2#037" => "Expiration Date", "2#038" => "Expiration Time", "2#040" => "Special Instructions", "2#042" => "Action Advised", "2#045" => "Reference Service", "2#047" => "Reference Date", "2#050" => "Reference Number", "2#055" => "Date Created", "2#060" => "Time Created", "2#062" => "Digital Creation Date", "2#063" => "Digital Creation Time", "2#065" => "Originating Program", "2#070" => "Program Version", "2#075" => "Object Cycle", "2#080" => "By-line", "2#085" => "By-line Title", "2#090" => "City", "2#092" => "Sub-location", "2#095" => "Province or State", "2#100" => "Country or Primary Location Code", "2#101" => "Country or Primary Location Name", "2#103" => "Original Transmission Reference", "2#105" => "Headline", "2#110" => "Credit", "2#115" => "Source", "2#116" => "Copyright Notice", "2#118" => "Contact", "2#120" => "Caption or Abstract", "2#122" => "Caption Writer or Editor", "2#125" => "Rasterized Caption", "2#130" => "Image Type", "2#131" => "Image Orientation", "2#135" => "Language Identifier", "2#150" => "Audio Type", "2#151" => "Audio Sampling Rate", "2#152" => "Audio Sampling Resolution", "2#153" => "Audio Duration", "2#154" => "Audio Outcue", "2#200" => "ObjectData Preview File Format", "2#201" => "ObjectData Preview File Format Version", "2#202" => "ObjectData Preview Data", "7#010" => "Size Mode", "7#020" => "Max Subfile Size", "7#090" => "ObjectData Size Announced", "7#095" => "Maximum ObjectData Size", "8#010" => "Subfile", "9#010" => "Confirmed ObjectData Size")]]></default>
1137
+ <docblock line="4339">
1138
  <description><![CDATA[IPTC Dataset identifiers and names]]></description>
1139
  <long-description><![CDATA[<p>This array contains the identifiers and names of Datasets defined in
1140
  the "IPTC-NAA Information Interchange Model Version No. 4.1".</p>]]></long-description>
1141
+ <tag line="4339" name="since" description="0.90"/>
1142
+ <tag line="4339" name="var" description="" type="array">
1143
  <type by_reference="false">array</type>
1144
  </tag>
1145
  </docblock>
1146
  </property>
1147
+ <property final="false" static="true" visibility="public" line="4448" namespace="global" package="Media Library Assistant">
1148
  <name>$mla_iptc_keys</name>
1149
  <default><![CDATA[array('model-version' => '1#000', 'destination' => '1#005', 'file-format' => '1#020', 'file-format-version' => '1#022', 'service-identifier' => '1#030', 'envelope-number' => '1#040', 'product-id' => '1#050', 'envelope-priority' => '1#060', 'date-sent' => '1#070', 'time-sent' => '1#080', 'coded-character-set' => '1#090', 'uno' => '1#100', 'arm-identifier' => '1#120', 'arm-version' => '1#122', 'record-version' => '2#000', 'object-type-reference' => '2#003', 'object-attribute-reference' => '2#004', 'object-name' => '2#005', 'edit-status' => '2#007', 'editorial-update' => '2#008', 'urgency' => '2#010', 'subject-reference' => '2#012', 'category' => '2#015', 'supplemental-category' => '2#020', 'fixture-identifier' => '2#022', 'keywords' => '2#025', 'content-location-code' => '2#026', 'content-location-name' => '2#027', 'release-date' => '2#030', 'release-time' => '2#035', 'expiration-date' => '2#037', 'expiration-time' => '2#038', 'special-instructions' => '2#040', 'action-advised' => '2#042', 'reference-service' => '2#045', 'reference-date' => '2#047', 'reference-number' => '2#050', 'date-created' => '2#055', 'time-created' => '2#060', 'digital-creation-date' => '2#062', 'digital-creation-time' => '2#063', 'originating-program' => '2#065', 'program-version' => '2#070', 'object-cycle' => '2#075', 'by-line' => '2#080', 'by-line-title' => '2#085', 'city' => '2#090', 'sub-location' => '2#092', 'province-or-state' => '2#095', 'country-or-primary-location-code' => '2#100', 'country-or-primary-location-name' => '2#101', 'original-transmission-reference' => '2#103', 'headline' => '2#105', 'credit' => '2#110', 'source' => '2#115', 'copyright-notice' => '2#116', 'contact' => '2#118', 'caption-or-abstract' => '2#120', 'caption-writer-or-editor' => '2#122', 'rasterized-caption' => '2#125', 'image-type' => '2#130', 'image-orientation' => '2#131', 'language-identifier' => '2#135', 'audio-type' => '2#150', 'audio-sampling-rate' => '2#151', 'audio-sampling-resolution' => '2#152', 'audio-duration' => '2#153', 'audio-outcue' => '2#154', 'objectdata-preview-file-format' => '2#200', 'objectdata-preview-file-format-version' => '2#201', 'objectdata-preview-data' => '2#202', 'size-mode' => '7#010', 'max-subfile-size' => '7#020', 'objectdata-size-announced' => '7#090', 'maximum-objectdata-size' => '7#095', 'subfile' => '8#010', 'confirmed-objectdata-size' => '9#010')]]></default>
1150
+ <docblock line="4438">
1151
  <description><![CDATA[IPTC Dataset friendly name/slug and identifiers]]></description>
1152
  <long-description><![CDATA[<p>This array contains the sanitized names and identifiers of Datasets defined in
1153
  the "IPTC-NAA Information Interchange Model Version No. 4.1".</p>]]></long-description>
1154
+ <tag line="4438" name="since" description="0.90"/>
1155
+ <tag line="4438" name="var" description="" type="array">
1156
  <type by_reference="false">array</type>
1157
  </tag>
1158
  </docblock>
1159
  </property>
1160
+ <property final="false" static="true" visibility="private" line="4547" namespace="global" package="Media Library Assistant">
1161
  <name>$mla_iptc_descriptions</name>
1162
  <default><![CDATA[array("1#000" => "2 octet binary IIM version number", "1#005" => "Max 1024 characters of Destination (ISO routing information); repeatable", "1#020" => "2 octet binary file format number, see IPTC-NAA V4 Appendix A", "1#022" => "2 octet binary file format version number", "1#030" => "Max 10 characters of Service Identifier and product", "1#040" => "8 Character Envelope Number", "1#050" => "Max 32 characters subset of provider's overall service; repeatable", "1#060" => "1 numeric character of envelope handling priority (not urgency)", "1#070" => "8 numeric characters of Date Sent by service - CCYYMMDD", "1#080" => "11 characters of Time Sent by service - HHMMSS±HHMM", "1#090" => "Max 32 characters of control functions, etc.", "1#100" => "14 to 80 characters of eternal, globally unique identification for objects", "1#120" => "2 octet binary Abstract Relationship Model Identifier", "1#122" => "2 octet binary Abstract Relationship Model Version", "2#000" => "2 octet binary Information Interchange Model, Part II version number", "2#003" => "3 to 67 Characters of Object Type Reference number and optional text", "2#004" => "3 to 67 Characters of Object Attribute Reference number and optional text; repeatable", "2#005" => "Max 64 characters of the object name or shorthand reference", "2#007" => "Max 64 characters of the status of the objectdata", "2#008" => "2 numeric characters of the type of update this object provides", "2#010" => "1 numeric character of the editorial urgency of content", "2#012" => "13 to 236 characters of a structured definition of the subject matter; repeatable", "2#015" => "Max 3 characters of the subject of the objectdata, DEPRECATED", "2#020" => "Max 32 characters (each) of further refinement of subject, DEPRECATED; repeatable", "2#022" => "Max 32 characters identifying recurring, predictable content", "2#025" => "Max 64 characters (each) of tags; repeatable", "2#026" => "3 characters of ISO3166 country code or IPTC-assigned code; repeatable", "2#027" => "Max 64 characters of publishable country/geographical location name; repeatable", "2#030" => "8 numeric characters of Release Date - CCYYMMDD", "2#035" => "11 characters of Release Time (earliest use) - HHMMSS±HHMM", "2#037" => "8 numeric characters of Expiration Date (latest use) - CCYYMDD", "2#038" => "11 characters of Expiration Time (latest use) - HHMMSS±HHMM", "2#040" => "Max 256 Characters of editorial instructions, e.g., embargoes and warnings", "2#042" => "2 numeric characters of type of action this object provides to a previous object", "2#045" => "Max 10 characters of the Service ID (1#030) of a prior envelope; repeatable", "2#047" => "8 numeric characters of prior envelope Reference Date (1#070) - CCYYMMDD; repeatable", "2#050" => "8 characters of prior envelope Reference Number (1#040); repeatable", "2#055" => "8 numeric characters of intellectual content Date Created - CCYYMMDD", "2#060" => "11 characters of intellectual content Time Created - HHMMSS±HHMM", "2#062" => "8 numeric characters of digital representation creation date - CCYYMMDD", "2#063" => "11 characters of digital representation creation time - HHMMSS±HHMM", "2#065" => "Max 32 characters of the program used to create the objectdata", "2#070" => "Program Version - Max 10 characters of the version of the program used to create the objectdata", "2#075" => "1 character where a=morning, p=evening, b=both", "2#080" => "Max 32 Characters of the name of the objectdata creator, e.g., the writer, photographer; repeatable", "2#085" => "Max 32 characters of the title of the objectdata creator; repeatable", "2#090" => "Max 32 Characters of the city of objectdata origin", "2#092" => "Max 32 Characters of the location within the city of objectdata origin", "2#095" => "Max 32 Characters of the objectdata origin Province or State", "2#100" => "3 characters of ISO3166 or IPTC-assigned code for Country of objectdata origin", "2#101" => "Max 64 characters of publishable country/geographical location name of objectdata origin", "2#103" => "Max 32 characters of a code representing the location of original transmission", "2#105" => "Max 256 Characters of a publishable entry providing a synopsis of the contents of the objectdata", "2#110" => "Max 32 Characters that identifies the provider of the objectdata (Vs the owner/creator)", "2#115" => "Max 32 Characters that identifies the original owner of the intellectual content", "2#116" => "Max 128 Characters that contains any necessary copyright notice", "2#118" => "Max 128 characters that identifies the person or organisation which can provide further background information; repeatable", "2#120" => "Max 2000 Characters of a textual description of the objectdata", "2#122" => "Max 32 Characters that the identifies the person involved in the writing, editing or correcting the objectdata or caption/abstract; repeatable", "2#125" => "7360 binary octets of the rasterized caption - 1 bit per pixel, 460x128-pixel image", "2#130" => "2 characters of color composition type and information", "2#131" => "1 alphabetic character indicating the image area layout - P=portrait, L=landscape, S=square", "2#135" => "2 or 3 aphabetic characters containing the major national language of the object, according to the ISO 639:1988 codes", "2#150" => "2 characters identifying monaural/stereo and exact type of audio content", "2#151" => "6 numeric characters representing the audio sampling rate in hertz (Hz)", "2#152" => "2 numeric characters representing the number of bits in each audio sample", "2#153" => "6 numeric characters of the Audio Duration - HHMMSS", "2#154" => "Max 64 characters of the content of the end of an audio objectdata", "2#200" => "2 octet binary file format of the ObjectData Preview", "2#201" => "2 octet binary particular version of the ObjectData Preview File Format", "2#202" => "Max 256000 binary octets containing the ObjectData Preview data", "7#010" => "1 numeric character - 0=objectdata size not known, 1=objectdata size known at beginning of transfer", "7#020" => "4 octet binary maximum subfile dataset(s) size", "7#090" => "4 octet binary objectdata size if known at beginning of transfer", "7#095" => "4 octet binary largest possible objectdata size", "8#010" => "Subfile DataSet containing the objectdata itself; repeatable", "9#010" => "4 octet binary total objectdata size")]]></default>
1163
+ <docblock line="4537">
1164
  <description><![CDATA[IPTC Dataset descriptions]]></description>
1165
  <long-description><![CDATA[<p>This array contains the descriptions of Datasets defined in
1166
  the "IPTC-NAA Information Interchange Model Version No. 4.1".</p>]]></long-description>
1167
+ <tag line="4537" name="since" description="0.90"/>
1168
+ <tag line="4537" name="var" description="" type="array">
1169
  <type by_reference="false">array</type>
1170
  </tag>
1171
  </docblock>
1172
  </property>
1173
+ <property final="false" static="true" visibility="private" line="4646" namespace="global" package="Media Library Assistant">
1174
  <name>$mla_iptc_formats</name>
1175
  <default><![CDATA[array(0 => "No ObjectData", 1 => "IPTC-NAA Digital Newsphoto Parameter Record", 2 => "IPTC7901 Recommended Message Format", 3 => "Tagged Image File Format (Adobe/Aldus Image data)", 4 => "Illustrator (Adobe Graphics data)", 5 => "AppleSingle (Apple Computer Inc)", 6 => "NAA 89-3 (ANPA 1312)", 7 => "MacBinary II", 0 => "IPTC Unstructured Character Oriented File Format (UCOFF)", 0 => "United Press International ANPA 1312 variant", 10 => "United Press International Down-Load Message", 11 => "JPEG File Interchange (JFIF)", 12 => "Photo-CD Image-Pac (Eastman Kodak)", 13 => "Microsoft Bit Mapped Graphics File [*.BMP]", 14 => "Digital Audio File [*.WAV] (Microsoft & Creative Labs)", 15 => "Audio plus Moving Video [*.AVI] (Microsoft)", 16 => "PC DOS/Windows Executable Files [*.COM][*.EXE]", 17 => "Compressed Binary File [*.ZIP] (PKWare Inc)", 18 => "Audio Interchange File Format AIFF (Apple Computer Inc)", 19 => "RIFF Wave (Microsoft Corporation)", 20 => "Freehand (Macromedia/Aldus)", 21 => "Hypertext Markup Language - HTML (The Internet Society)", 22 => "MPEG 2 Audio Layer 2 (Musicom), ISO/IEC", 23 => "MPEG 2 Audio Layer 3, ISO/IEC", 24 => "Portable Document File (*.PDF) Adobe", 25 => "News Industry Text Format (NITF)", 26 => "Tape Archive (*.TAR)", 27 => "Tidningarnas Telegrambyrå NITF version (TTNITF DTD)", 28 => "Ritzaus Bureau NITF version (RBNITF DTD)", 29 => "Corel Draw [*.CDR]")]]></default>
1176
+ <docblock line="4636">
1177
  <description><![CDATA[IPTC file format identifiers and descriptions]]></description>
1178
  <long-description><![CDATA[<p>This array contains the file format identifiers and descriptions defined in
1179
  the "IPTC-NAA Information Interchange Model Version No. 4.1" for dataset 1#020.</p>]]></long-description>
1180
+ <tag line="4636" name="since" description="0.90"/>
1181
+ <tag line="4636" name="var" description="" type="array">
1182
  <type by_reference="false">array</type>
1183
  </tag>
1184
  </docblock>
1185
  </property>
1186
+ <property final="false" static="true" visibility="private" line="4689" namespace="global" package="Media Library Assistant">
1187
  <name>$mla_iptc_image_types</name>
1188
  <default><![CDATA[array("M" => "Monochrome", "Y" => "Yellow Component", "M" => "Magenta Component", "C" => "Cyan Component", "K" => "Black Component", "R" => "Red Component", "G" => "Green Component", "B" => "Blue Component", "T" => "Text Only", "F" => "Full colour composite, frame sequential", "L" => "Full colour composite, line sequential", "P" => "Full colour composite, pixel sequential", "S" => "Full colour composite, special interleaving")]]></default>
1189
+ <docblock line="4679">
1190
  <description><![CDATA[IPTC image type identifiers and descriptions]]></description>
1191
  <long-description><![CDATA[<p>This array contains the image type identifiers and descriptions defined in
1192
  the "IPTC-NAA Information Interchange Model Version No. 4.1" for dataset 2#130, octet 2.</p>]]></long-description>
1193
+ <tag line="4679" name="since" description="0.90"/>
1194
+ <tag line="4679" name="var" description="" type="array">
1195
  <type by_reference="false">array</type>
1196
  </tag>
1197
  </docblock>
1198
  </property>
1199
+ <property final="false" static="true" visibility="private" line="4955" namespace="global" package="Media Library Assistant">
1200
  <name>$mla_IPTC_EXIF_errors</name>
1201
  <default><![CDATA[array()]]></default>
1202
+ <docblock line="4947">
1203
  <description><![CDATA[Passes IPTC/EXIF parse errors between mla_IPTC_EXIF_error_handler
1204
  and mla_fetch_attachment_image_metadata]]></description>
1205
  <long-description><![CDATA[]]></long-description>
1206
+ <tag line="4947" name="since" description="1.81"/>
1207
+ <tag line="4947" name="var" description="" type="array">
1208
  <type by_reference="false">array</type>
1209
  </tag>
1210
  </docblock>
1515
  <type/>
1516
  </argument>
1517
  </method>
1518
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="889" package="Media Library Assistant">
1519
+ <name>mla_apply_field_level_format</name>
1520
+ <full_name>mla_apply_field_level_format</full_name>
1521
+ <docblock line="879">
1522
+ <description><![CDATA[Apply field-level format options to field-level content]]></description>
1523
+ <long-description><![CDATA[]]></long-description>
1524
+ <tag line="879" name="since" description="2.10"/>
1525
+ <tag line="879" name="param" description="field-level content" type="string" variable="$value">
1526
+ <type by_reference="false">string</type>
1527
+ </tag>
1528
+ <tag line="879" name="param" description="format code and aguments" type="array" variable="$args">
1529
+ <type by_reference="false">array</type>
1530
+ </tag>
1531
+ <tag line="879" name="return" description="formatted field-level content" type="string">
1532
+ <type by_reference="false">string</type>
1533
+ </tag>
1534
+ </docblock>
1535
+ <argument line="889">
1536
+ <name>$value</name>
1537
+ <default><![CDATA[]]></default>
1538
+ <type/>
1539
+ </argument>
1540
+ <argument line="889">
1541
+ <name>$args</name>
1542
+ <default><![CDATA[]]></default>
1543
+ <type/>
1544
+ </argument>
1545
+ </method>
1546
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="996" package="Media Library Assistant">
1547
  <name>mla_expand_field_level_parameters</name>
1548
  <full_name>mla_expand_field_level_parameters</full_name>
1549
+ <docblock line="978">
1550
  <description><![CDATA[Analyze a template, expanding Field-level Markup Substitution Parameters]]></description>
1551
  <long-description><![CDATA[<p>Field-level parameters must have one of the following prefix values:
1552
+ template, request, query, custom, terms, meta, iptc, exif, xmp, pdf.
1553
  All but request and query require an attachment ID.</p>]]></long-description>
1554
+ <tag line="978" name="since" description="1.50"/>
1555
+ <tag line="978" name="param" description="A formatting string containing [+placeholders+]" type="string" variable="$tpl">
1556
  <type by_reference="false">string</type>
1557
  </tag>
1558
+ <tag line="978" name="param" description="Optional: an array of values from the query, if any, e.g. shortcode parameters" type="array" variable="$query">
1559
  <type by_reference="false">array</type>
1560
  </tag>
1561
+ <tag line="978" name="param" description="Optional: an array of values to add to the returned array" type="array" variable="$markup_values">
1562
  <type by_reference="false">array</type>
1563
  </tag>
1564
+ <tag line="978" name="param" description="Optional: attachment ID for attachment-specific placeholders" type="integer" variable="$post_id">
1565
  <type by_reference="false">integer</type>
1566
  </tag>
1567
+ <tag line="978" name="param" description="Optional: for option 'multi', retain existing values" type="boolean" variable="$keep_existing">
1568
  <type by_reference="false">boolean</type>
1569
  </tag>
1570
+ <tag line="978" name="param" description="Optional: default option value" type="string" variable="$default_option">
1571
  <type by_reference="false">string</type>
1572
  </tag>
1573
+ <tag line="978" name="return" description="( parameter =&gt; value ) for all field-level parameters and anything in $markup_values" type="array">
1574
  <type by_reference="false">array</type>
1575
  </tag>
1576
  </docblock>
1577
+ <argument line="996">
1578
  <name>$tpl</name>
1579
  <default><![CDATA[]]></default>
1580
  <type/>
1581
  </argument>
1582
+ <argument line="996">
1583
  <name>$query</name>
1584
  <default><![CDATA[NULL]]></default>
1585
  <type/>
1586
  </argument>
1587
+ <argument line="996">
1588
  <name>$markup_values</name>
1589
  <default><![CDATA[array()]]></default>
1590
  <type/>
1591
  </argument>
1592
+ <argument line="996">
1593
  <name>$post_id</name>
1594
  <default><![CDATA[0]]></default>
1595
  <type/>
1596
  </argument>
1597
+ <argument line="996">
1598
  <name>$keep_existing</name>
1599
  <default><![CDATA[false]]></default>
1600
  <type/>
1601
  </argument>
1602
+ <argument line="996">
1603
  <name>$default_option</name>
1604
  <default><![CDATA['text']]></default>
1605
  <type/>
1606
  </argument>
1607
  </method>
1608
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="1252" package="Media Library Assistant">
1609
  <name>mla_get_template_placeholders</name>
1610
  <full_name>mla_get_template_placeholders</full_name>
1611
+ <docblock line="1241">
1612
  <description><![CDATA[Analyze a template, returning an array of the placeholders it contains]]></description>
1613
  <long-description><![CDATA[]]></long-description>
1614
+ <tag line="1241" name="since" description="0.90"/>
1615
+ <tag line="1241" name="param" description="A formatting string containing [+placeholders+]" type="string" variable="$tpl">
1616
  <type by_reference="false">string</type>
1617
  </tag>
1618
+ <tag line="1241" name="param" description="Optional: default option value" type="string" variable="$default_option">
1619
  <type by_reference="false">string</type>
1620
  </tag>
1621
+ <tag line="1241" name="return" description="Placeholder information: each entry is an array with ['prefix'] =&gt; string, ['value'] =&gt; string, ['option'] =&gt; string 'text'|single'|'export'|'array'|'multi'" type="array">
1622
  <type by_reference="false">array</type>
1623
  </tag>
1624
  </docblock>
1625
+ <argument line="1252">
1626
  <name>$tpl</name>
1627
  <default><![CDATA[]]></default>
1628
  <type/>
1629
  </argument>
1630
+ <argument line="1252">
1631
  <name>$default_option</name>
1632
  <default><![CDATA['text']]></default>
1633
  <type/>
1634
  </argument>
1635
  </method>
1636
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="1383" package="Media Library Assistant">
1637
  <name>mla_count_list_table_items</name>
1638
  <full_name>mla_count_list_table_items</full_name>
1639
+ <docblock line="1372">
1640
  <description><![CDATA[Get the total number of attachment posts]]></description>
1641
  <long-description><![CDATA[]]></long-description>
1642
+ <tag line="1372" name="since" description="0.30"/>
1643
+ <tag line="1372" name="param" description="Query variables, e.g., from $_REQUEST" type="array" variable="$request">
1644
  <type by_reference="false">array</type>
1645
  </tag>
1646
+ <tag line="1372" name="param" description="(optional) number of rows to skip over to reach desired page" type="int" variable="$offset">
1647
  <type by_reference="false">int</type>
1648
  </tag>
1649
+ <tag line="1372" name="param" description="(optional) number of rows on each page" type="int" variable="$count">
1650
  <type by_reference="false">int</type>
1651
  </tag>
1652
+ <tag line="1372" name="return" description="Number of attachment posts" type="integer">
1653
  <type by_reference="false">integer</type>
1654
  </tag>
1655
  </docblock>
1656
+ <argument line="1383">
1657
  <name>$request</name>
1658
  <default><![CDATA[]]></default>
1659
  <type/>
1660
  </argument>
1661
+ <argument line="1383">
1662
  <name>$offset</name>
1663
  <default><![CDATA[NULL]]></default>
1664
  <type/>
1665
  </argument>
1666
+ <argument line="1383">
1667
  <name>$count</name>
1668
  <default><![CDATA[NULL]]></default>
1669
  <type/>
1670
  </argument>
1671
  </method>
1672
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="1411" package="Media Library Assistant">
1673
  <name>mla_query_list_table_items</name>
1674
  <full_name>mla_query_list_table_items</full_name>
1675
+ <docblock line="1397">
1676
  <description><![CDATA[Retrieve attachment objects for list table display]]></description>
1677
  <long-description><![CDATA[<p>Supports prepare_items in class-mla-list-table.php.
1678
  Modeled after wp_edit_attachments_query in wp-admin/post.php</p>]]></long-description>
1679
+ <tag line="1397" name="since" description="0.1"/>
1680
+ <tag line="1397" name="param" description="query parameters from web page, usually found in $_REQUEST" type="array" variable="$request">
1681
  <type by_reference="false">array</type>
1682
  </tag>
1683
+ <tag line="1397" name="param" description="number of rows to skip over to reach desired page" type="int" variable="$offset">
1684
  <type by_reference="false">int</type>
1685
  </tag>
1686
+ <tag line="1397" name="param" description="number of rows on each page" type="int" variable="$count">
1687
  <type by_reference="false">int</type>
1688
  </tag>
1689
+ <tag line="1397" name="return" description="attachment objects (posts) including parent data, meta data and references" type="array">
1690
  <type by_reference="false">array</type>
1691
  </tag>
1692
  </docblock>
1693
+ <argument line="1411">
1694
  <name>$request</name>
1695
  <default><![CDATA[]]></default>
1696
  <type/>
1697
  </argument>
1698
+ <argument line="1411">
1699
  <name>$offset</name>
1700
  <default><![CDATA[]]></default>
1701
  <type/>
1702
  </argument>
1703
+ <argument line="1411">
1704
  <name>$count</name>
1705
  <default><![CDATA[]]></default>
1706
  <type/>
1707
  </argument>
1708
  </method>
1709
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="1457" package="Media Library Assistant">
1710
  <name>mla_query_media_modal_items</name>
1711
  <full_name>mla_query_media_modal_items</full_name>
1712
+ <docblock line="1444">
1713
  <description><![CDATA[Retrieve attachment objects for the WordPress Media Manager]]></description>
1714
  <long-description><![CDATA[<p>Supports month-year and taxonomy-term filters as well as the enhanced search box</p>]]></long-description>
1715
+ <tag line="1444" name="since" description="1.20"/>
1716
+ <tag line="1444" name="param" description="query parameters from Media Manager" type="array" variable="$request">
1717
  <type by_reference="false">array</type>
1718
  </tag>
1719
+ <tag line="1444" name="param" description="number of rows to skip over to reach desired page" type="int" variable="$offset">
1720
  <type by_reference="false">int</type>
1721
  </tag>
1722
+ <tag line="1444" name="param" description="number of rows on each page" type="int" variable="$count">
1723
  <type by_reference="false">int</type>
1724
  </tag>
1725
+ <tag line="1444" name="return" description="attachment objects (posts)" type="array">
1726
  <type by_reference="false">array</type>
1727
  </tag>
1728
  </docblock>
1729
+ <argument line="1457">
1730
  <name>$request</name>
1731
  <default><![CDATA[]]></default>
1732
  <type/>
1733
  </argument>
1734
+ <argument line="1457">
1735
  <name>$offset</name>
1736
  <default><![CDATA[]]></default>
1737
  <type/>
1738
  </argument>
1739
+ <argument line="1457">
1740
  <name>$count</name>
1741
  <default><![CDATA[]]></default>
1742
  <type/>
1743
  </argument>
1744
  </method>
1745
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="1521" package="Media Library Assistant">
1746
  <name>_prepare_list_table_query</name>
1747
  <full_name>_prepare_list_table_query</full_name>
1748
+ <docblock line="1507">
1749
  <description><![CDATA[Sanitize and expand query arguments from request variables]]></description>
1750
  <long-description><![CDATA[<p>Prepare the arguments for WP_Query.
1751
  Modeled after wp_edit_attachments_query in wp-admin/post.php</p>]]></long-description>
1752
+ <tag line="1507" name="since" description="0.1"/>
1753
+ <tag line="1507" name="param" description="query parameters from web page, usually found in $_REQUEST" type="array" variable="$raw_request">
1754
  <type by_reference="false">array</type>
1755
  </tag>
1756
+ <tag line="1507" name="param" description="Optional number of rows (default 0) to skip over to reach desired page" type="int" variable="$offset">
1757
  <type by_reference="false">int</type>
1758
  </tag>
1759
+ <tag line="1507" name="param" description="Optional number of rows on each page (0 = all rows, default)" type="int" variable="$count">
1760
  <type by_reference="false">int</type>
1761
  </tag>
1762
+ <tag line="1507" name="return" description="revised arguments suitable for WP_Query" type="array">
1763
  <type by_reference="false">array</type>
1764
  </tag>
1765
  </docblock>
1766
+ <argument line="1521">
1767
  <name>$raw_request</name>
1768
  <default><![CDATA[]]></default>
1769
  <type/>
1770
  </argument>
1771
+ <argument line="1521">
1772
  <name>$offset</name>
1773
  <default><![CDATA[0]]></default>
1774
  <type/>
1775
  </argument>
1776
+ <argument line="1521">
1777
  <name>$count</name>
1778
  <default><![CDATA[0]]></default>
1779
  <type/>
1780
  </argument>
1781
  </method>
1782
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="1923" package="Media Library Assistant">
1783
  <name>_execute_list_table_query</name>
1784
  <full_name>_execute_list_table_query</full_name>
1785
+ <docblock line="1914">
1786
  <description><![CDATA[Add filters, run query, remove filters]]></description>
1787
  <long-description><![CDATA[]]></long-description>
1788
+ <tag line="1914" name="since" description="0.30"/>
1789
+ <tag line="1914" name="param" description="query parameters from web page, usually found in $_REQUEST" type="array" variable="$request">
1790
  <type by_reference="false">array</type>
1791
  </tag>
1792
+ <tag line="1914" name="return" description="WP_Query object with query results" type="object">
1793
  <type by_reference="false">object</type>
1794
  </tag>
1795
  </docblock>
1796
+ <argument line="1923">
1797
  <name>$request</name>
1798
  <default><![CDATA[]]></default>
1799
  <type/>
1800
  </argument>
1801
  </method>
1802
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="2026" package="Media Library Assistant">
1803
  <name>mla_search_terms_tidy</name>
1804
  <full_name>mla_search_terms_tidy</full_name>
1805
+ <docblock line="2015">
1806
  <description><![CDATA[Replaces a WordPress function deprecated in v3.7]]></description>
1807
  <long-description><![CDATA[<p>Defined as public because it's a callback from array_map().</p>]]></long-description>
1808
+ <tag line="2015" name="since" description="1.51"/>
1809
+ <tag line="2015" name="param" description="search term before modification" type="string" variable="$term">
1810
  <type by_reference="false">string</type>
1811
  </tag>
1812
+ <tag line="2015" name="return" description="cleaned up search term" type="string">
1813
  <type by_reference="false">string</type>
1814
  </tag>
1815
  </docblock>
1816
+ <argument line="2026">
1817
  <name>$term</name>
1818
  <default><![CDATA[]]></default>
1819
  <type/>
1820
  </argument>
1821
  </method>
1822
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="2042" package="Media Library Assistant">
1823
+ <name>_match_quoted_phrase</name>
1824
+ <full_name>_match_quoted_phrase</full_name>
1825
+ <docblock line="2030">
1826
+ <description><![CDATA[Isolates keyword match results to word boundaries]]></description>
1827
+ <long-description><![CDATA[<p>Eliminates matches such as "man" in "woman".</p>]]></long-description>
1828
+ <tag line="2030" name="since" description="2.11"/>
1829
+ <tag line="2030" name="param" description="the quoted phrase (without enclosing quotes)" type="string" variable="$needle">
1830
+ <type by_reference="false">string</type>
1831
+ </tag>
1832
+ <tag line="2030" name="param" description="the entire term" type="string" variable="$haystack">
1833
+ <type by_reference="false">string</type>
1834
+ </tag>
1835
+ <tag line="2030" name="return" description="$needle is a word match within $haystack" type="boolean">
1836
+ <type by_reference="false">boolean</type>
1837
+ </tag>
1838
+ </docblock>
1839
+ <argument line="2042">
1840
+ <name>$needle</name>
1841
+ <default><![CDATA[]]></default>
1842
+ <type/>
1843
+ </argument>
1844
+ <argument line="2042">
1845
+ <name>$haystack</name>
1846
+ <default><![CDATA[]]></default>
1847
+ <type/>
1848
+ </argument>
1849
+ </method>
1850
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="2073" package="Media Library Assistant">
1851
  <name>mla_query_posts_search_filter</name>
1852
  <full_name>mla_query_posts_search_filter</full_name>
1853
+ <docblock line="2061">
1854
  <description><![CDATA[Adds a keyword search to the WHERE clause, if required]]></description>
1855
  <long-description><![CDATA[<p>Defined as public because it's a filter.</p>]]></long-description>
1856
+ <tag line="2061" name="since" description="0.60"/>
1857
+ <tag line="2061" name="param" description="query clause before modification" type="string" variable="$search_string">
1858
  <type by_reference="false">string</type>
1859
  </tag>
1860
+ <tag line="2061" name="param" description="WP_Query object" type="object" variable="$query_object">
1861
  <type by_reference="false">object</type>
1862
  </tag>
1863
+ <tag line="2061" name="return" description="query clause after keyword search addition" type="string">
1864
  <type by_reference="false">string</type>
1865
  </tag>
1866
  </docblock>
1867
+ <argument line="2073">
1868
  <name>$search_string</name>
1869
  <default><![CDATA[]]></default>
1870
  <type/>
1871
  </argument>
1872
+ <argument line="2073">
1873
  <name>$query_object</name>
1874
  <default><![CDATA[]]></default>
1875
  <type/>
1876
  </argument>
1877
  </method>
1878
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="2376" package="Media Library Assistant">
1879
  <name>mla_query_posts_where_filter</name>
1880
  <full_name>mla_query_posts_where_filter</full_name>
1881
+ <docblock line="2364">
1882
  <description><![CDATA[Adds/modifies the WHERE clause for meta values, LIKE patterns and detached items]]></description>
1883
  <long-description><![CDATA[<p>Modeled after _edit_attachments_query_helper in wp-admin/post.php.
1884
  Defined as public because it's a filter.</p>]]></long-description>
1885
+ <tag line="2364" name="since" description="0.1"/>
1886
+ <tag line="2364" name="param" description="query clause before modification" type="string" variable="$where_clause">
1887
  <type by_reference="false">string</type>
1888
  </tag>
1889
+ <tag line="2364" name="return" description="query clause after modification" type="string">
1890
  <type by_reference="false">string</type>
1891
  </tag>
1892
  </docblock>
1893
+ <argument line="2376">
1894
  <name>$where_clause</name>
1895
  <default><![CDATA[]]></default>
1896
  <type/>
1897
  </argument>
1898
  </method>
1899
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="2444" package="Media Library Assistant">
1900
  <name>mla_query_posts_join_filter</name>
1901
  <full_name>mla_query_posts_join_filter</full_name>
1902
+ <docblock line="2433">
1903
  <description><![CDATA[Adds a JOIN clause, if required, to handle sorting/searching on custom fields or ALT Text]]></description>
1904
  <long-description><![CDATA[<p>Defined as public because it's a filter.</p>]]></long-description>
1905
+ <tag line="2433" name="since" description="0.30"/>
1906
+ <tag line="2433" name="param" description="query clause before modification" type="string" variable="$join_clause">
1907
  <type by_reference="false">string</type>
1908
  </tag>
1909
+ <tag line="2433" name="return" description="query clause after &quot;LEFT JOIN view ON post_id&quot; item modification" type="string">
1910
  <type by_reference="false">string</type>
1911
  </tag>
1912
  </docblock>
1913
+ <argument line="2444">
1914
  <name>$join_clause</name>
1915
  <default><![CDATA[]]></default>
1916
  <type/>
1917
  </argument>
1918
  </method>
1919
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="2499" package="Media Library Assistant">
1920
  <name>mla_query_posts_groupby_filter</name>
1921
  <full_name>mla_query_posts_groupby_filter</full_name>
1922
+ <docblock line="2487">
1923
  <description><![CDATA[Adds a GROUPBY clause, if required]]></description>
1924
+ <long-description><![CDATA[<p>Taxonomy text queries and postmeta queries can return multiple results for the same ID.
1925
  Defined as public because it's a filter.</p>]]></long-description>
1926
+ <tag line="2487" name="since" description="1.90"/>
1927
+ <tag line="2487" name="param" description="query clause before modification" type="string" variable="$groupby_clause">
1928
  <type by_reference="false">string</type>
1929
  </tag>
1930
+ <tag line="2487" name="return" description="updated query clause" type="string">
1931
  <type by_reference="false">string</type>
1932
  </tag>
1933
  </docblock>
1934
+ <argument line="2499">
1935
  <name>$groupby_clause</name>
1936
  <default><![CDATA[]]></default>
1937
  <type/>
1938
  </argument>
1939
  </method>
1940
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="2521" package="Media Library Assistant">
1941
  <name>mla_query_posts_orderby_filter</name>
1942
  <full_name>mla_query_posts_orderby_filter</full_name>
1943
+ <docblock line="2509">
1944
  <description><![CDATA[Adds a ORDERBY clause, if required]]></description>
1945
  <long-description><![CDATA[<p>Expands the range of sort options because the logic in WP_Query is limited.
1946
  Defined as public because it's a filter.</p>]]></long-description>
1947
+ <tag line="2509" name="since" description="0.30"/>
1948
+ <tag line="2509" name="param" description="query clause before modification" type="string" variable="$orderby_clause">
1949
  <type by_reference="false">string</type>
1950
  </tag>
1951
+ <tag line="2509" name="return" description="updated query clause" type="string">
1952
  <type by_reference="false">string</type>
1953
  </tag>
1954
  </docblock>
1955
+ <argument line="2521">
1956
  <name>$orderby_clause</name>
1957
  <default><![CDATA[]]></default>
1958
  <type/>
1959
  </argument>
1960
  </method>
1961
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="2599" package="Media Library Assistant">
1962
  <name>mla_query_relevanssi_admin_search_ok_filter</name>
1963
  <full_name>mla_query_relevanssi_admin_search_ok_filter</full_name>
1964
+ <docblock line="2589">
1965
  <description><![CDATA[Disable Relevanssi - A Better Search, v3.2 by Mikko Saari
1966
  Defined as public because it's a filter.]]></description>
1967
  <long-description><![CDATA[]]></long-description>
1968
+ <tag line="2589" name="since" description="1.80"/>
1969
+ <tag line="2589" name="param" description="Default setting" type="boolean" variable="$admin_search_ok">
1970
  <type by_reference="false">boolean</type>
1971
  </tag>
1972
+ <tag line="2589" name="return" description="Updated setting" type="boolean">
1973
  <type by_reference="false">boolean</type>
1974
  </tag>
1975
  </docblock>
1976
+ <argument line="2599">
1977
  <name>$admin_search_ok</name>
1978
  <default><![CDATA[]]></default>
1979
  <type/>
1980
  </argument>
1981
  </method>
1982
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="2615" package="Media Library Assistant">
1983
  <name>mla_query_posts_clauses_filter</name>
1984
  <full_name>mla_query_posts_clauses_filter</full_name>
1985
+ <docblock line="2603">
1986
  <description><![CDATA[Filters all clauses for shortcode queries, pre caching plugins]]></description>
1987
  <long-description><![CDATA[<p>This is for debug purposes only.
1988
  Defined as public because it's a filter.</p>]]></long-description>
1989
+ <tag line="2603" name="since" description="1.80"/>
1990
+ <tag line="2603" name="param" description="query clauses before modification" type="array" variable="$pieces">
1991
  <type by_reference="false">array</type>
1992
  </tag>
1993
+ <tag line="2603" name="return" description="query clauses after modification (none)" type="array">
1994
  <type by_reference="false">array</type>
1995
  </tag>
1996
  </docblock>
1997
+ <argument line="2615">
1998
  <name>$pieces</name>
1999
  <default><![CDATA[]]></default>
2000
  <type/>
2001
  </argument>
2002
  </method>
2003
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="2639" package="Media Library Assistant">
2004
  <name>mla_query_posts_clauses_request_filter</name>
2005
  <full_name>mla_query_posts_clauses_request_filter</full_name>
2006
+ <docblock line="2627">
2007
  <description><![CDATA[Filters all clauses for shortcode queries, post caching plugins]]></description>
2008
  <long-description><![CDATA[<p>This is for debug purposes only.
2009
  Defined as public because it's a filter.</p>]]></long-description>
2010
+ <tag line="2627" name="since" description="1.80"/>
2011
+ <tag line="2627" name="param" description="query clauses before modification" type="array" variable="$pieces">
2012
  <type by_reference="false">array</type>
2013
  </tag>
2014
+ <tag line="2627" name="return" description="query clauses after modification (none)" type="array">
2015
  <type by_reference="false">array</type>
2016
  </tag>
2017
  </docblock>
2018
+ <argument line="2639">
2019
  <name>$pieces</name>
2020
  <default><![CDATA[]]></default>
2021
  <type/>
2022
  </argument>
2023
  </method>
2024
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="2665" package="Media Library Assistant">
2025
  <name>mla_get_attachment_by_id</name>
2026
  <full_name>mla_get_attachment_by_id</full_name>
2027
+ <docblock line="2651">
2028
  <description><![CDATA[Retrieve an Attachment array given a $post_id]]></description>
2029
  <long-description><![CDATA[<p>The (associative) array will contain every field that can be found in
2030
  the posts and postmeta tables, and all references to the attachment.</p>]]></long-description>
2031
+ <tag line="2651" name="since" description="0.1"/>
2032
+ <tag line="2651" name="uses" description="\global\$post" refers="\global\$post"/>
2033
+ <tag line="2651" name="param" description="The ID of the attachment post" type="integer" variable="$post_id">
2034
  <type by_reference="false">integer</type>
2035
  </tag>
2036
+ <tag line="2651" name="param" description="True to add references, false to skip references" type="boolean" variable="$add_references">
2037
  <type by_reference="false">boolean</type>
2038
  </tag>
2039
+ <tag line="2651" name="return" description="NULL on failure else associative array" type="NULL|array">
2040
  <type by_reference="false">NULL</type>
2041
  <type by_reference="false">array</type>
2042
  </tag>
2043
  </docblock>
2044
+ <argument line="2665">
2045
  <name>$post_id</name>
2046
  <default><![CDATA[]]></default>
2047
  <type/>
2048
  </argument>
2049
+ <argument line="2665">
2050
  <name>$add_references</name>
2051
  <default><![CDATA[true]]></default>
2052
  <type/>
2053
  </argument>
2054
  </method>
2055
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="2721" package="Media Library Assistant">
2056
  <name>mla_fetch_attachment_parent_data</name>
2057
  <full_name>mla_fetch_attachment_parent_data</full_name>
2058
+ <docblock line="2712">
2059
  <description><![CDATA[Returns information about an attachment's parent, if found]]></description>
2060
  <long-description><![CDATA[]]></long-description>
2061
+ <tag line="2712" name="since" description="0.1"/>
2062
+ <tag line="2712" name="param" description="post ID of attachment's parent, if any" type="int" variable="$parent_id">
2063
  <type by_reference="false">int</type>
2064
  </tag>
2065
+ <tag line="2712" name="return" description="Parent information; post_date, post_title and post_type" type="array">
2066
  <type by_reference="false">array</type>
2067
  </tag>
2068
  </docblock>
2069
+ <argument line="2721">
2070
  <name>$parent_id</name>
2071
  <default><![CDATA[]]></default>
2072
  <type/>
2073
  </argument>
2074
  </method>
2075
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="2771" package="Media Library Assistant">
2076
  <name>_set_array_element</name>
2077
  <full_name>_set_array_element</full_name>
2078
+ <docblock line="2760">
2079
  <description><![CDATA[Adds or replaces the value of a key in a possibly nested array structure]]></description>
2080
  <long-description><![CDATA[]]></long-description>
2081
+ <tag line="2760" name="since" description="1.51"/>
2082
+ <tag line="2760" name="param" description="key value, e.g. array1.array2.element" type="string" variable="$needle">
2083
  <type by_reference="false">string</type>
2084
  </tag>
2085
+ <tag line="2760" name="param" description="replacement value, string or array, by reference" type="mixed" variable="$value">
2086
  <type by_reference="false">mixed</type>
2087
  </tag>
2088
+ <tag line="2760" name="param" description="PHP nested arrays, by reference" type="array" variable="$haystack">
2089
  <type by_reference="false">array</type>
2090
  </tag>
2091
+ <tag line="2760" name="return" description="true if $needle element set, false if not" type="boolean">
2092
  <type by_reference="false">boolean</type>
2093
  </tag>
2094
  </docblock>
2095
+ <argument line="2771">
2096
  <name>$needle</name>
2097
  <default><![CDATA[]]></default>
2098
  <type/>
2099
  </argument>
2100
+ <argument line="2771">
2101
  <name>$value</name>
2102
  <default><![CDATA[]]></default>
2103
  <type/>
2104
  </argument>
2105
+ <argument line="2771">
2106
  <name>$haystack</name>
2107
  <default><![CDATA[]]></default>
2108
  <type/>
2109
  </argument>
2110
  </method>
2111
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="2805" package="Media Library Assistant">
2112
  <name>_unset_array_element</name>
2113
  <full_name>_unset_array_element</full_name>
2114
+ <docblock line="2795">
2115
  <description><![CDATA[Deletes the value of a key in a possibly nested array structure]]></description>
2116
  <long-description><![CDATA[]]></long-description>
2117
+ <tag line="2795" name="since" description="1.51"/>
2118
+ <tag line="2795" name="param" description="key value, e.g. array1.array2.element" type="string" variable="$needle">
2119
  <type by_reference="false">string</type>
2120
  </tag>
2121
+ <tag line="2795" name="param" description="PHP nested arrays, by reference" type="array" variable="$haystack">
2122
  <type by_reference="false">array</type>
2123
  </tag>
2124
+ <tag line="2795" name="return" description="true if $needle element found, false if not" type="boolean">
2125
  <type by_reference="false">boolean</type>
2126
  </tag>
2127
  </docblock>
2128
+ <argument line="2805">
2129
  <name>$needle</name>
2130
  <default><![CDATA[]]></default>
2131
  <type/>
2132
  </argument>
2133
+ <argument line="2805">
2134
  <name>$haystack</name>
2135
  <default><![CDATA[]]></default>
2136
  <type/>
2137
  </argument>
2138
  </method>
2139
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="2840" package="Media Library Assistant">
2140
  <name>mla_find_array_element</name>
2141
  <full_name>mla_find_array_element</full_name>
2142
+ <docblock line="2825">
2143
  <description><![CDATA[Finds the value of a key in a possibly nested array structure]]></description>
2144
  <long-description><![CDATA[<p>Used primarily to extract fields from the _wp_attachment_metadata custom field.
2145
  Could also be used with the ID3 metadata exposed in WordPress 3.6 and later.</p>]]></long-description>
2146
+ <tag line="2825" name="since" description="1.30"/>
2147
+ <tag line="2825" name="param" description="key value, e.g. array1.array2.element" type="string" variable="$needle">
2148
  <type by_reference="false">string</type>
2149
  </tag>
2150
+ <tag line="2825" name="param" description="PHP nested arrays" type="array" variable="$haystack">
2151
  <type by_reference="false">array</type>
2152
  </tag>
2153
+ <tag line="2825" name="param" description="data option 'text'|'single'|'export'|'array'|'multi'" type="string" variable="$option">
2154
  <type by_reference="false">string</type>
2155
  </tag>
2156
+ <tag line="2825" name="param" description="keep existing values - for 'multi' option" type="boolean" variable="$keep_existing">
2157
  <type by_reference="false">boolean</type>
2158
  </tag>
2159
+ <tag line="2825" name="return" description="string or array value matching key(.key ...) or ''" type="mixed">
2160
  <type by_reference="false">mixed</type>
2161
  </tag>
2162
  </docblock>
2163
+ <argument line="2840">
2164
  <name>$needle</name>
2165
  <default><![CDATA[]]></default>
2166
  <type/>
2167
  </argument>
2168
+ <argument line="2840">
2169
  <name>$haystack</name>
2170
  <default><![CDATA[]]></default>
2171
  <type/>
2172
  </argument>
2173
+ <argument line="2840">
2174
  <name>$option</name>
2175
  <default><![CDATA[]]></default>
2176
  <type/>
2177
  </argument>
2178
+ <argument line="2840">
2179
  <name>$keep_existing</name>
2180
  <default><![CDATA[false]]></default>
2181
  <type/>
2182
  </argument>
2183
  </method>
2184
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="2923" package="Media Library Assistant">
2185
  <name>mla_fetch_attachment_metadata</name>
2186
  <full_name>mla_fetch_attachment_metadata</full_name>
2187
+ <docblock line="2911">
2188
  <description><![CDATA[Fetch and filter meta data for an attachment]]></description>
2189
  <long-description><![CDATA[<p>Returns a filtered array of a post's meta data. Internal values beginning with '<em>'
2190
  are stripped out or converted to an 'mla</em>' equivalent.</p>]]></long-description>
2191
+ <tag line="2911" name="since" description="0.1"/>
2192
+ <tag line="2911" name="param" description="post ID of attachment" type="int" variable="$post_id">
2193
  <type by_reference="false">int</type>
2194
  </tag>
2195
+ <tag line="2911" name="return" description="Meta data variables" type="array">
2196
  <type by_reference="false">array</type>
2197
  </tag>
2198
  </docblock>
2199
+ <argument line="2923">
2200
  <name>$post_id</name>
2201
  <default><![CDATA[]]></default>
2202
  <type/>
2203
  </argument>
2204
  </method>
2205
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="3009" package="Media Library Assistant">
2206
  <name>mla_fetch_attachment_references</name>
2207
  <full_name>mla_fetch_attachment_references</full_name>
2208
+ <docblock line="2995">
2209
  <description><![CDATA[Find Featured Image and inserted image/link references to an attachment]]></description>
2210
  <long-description><![CDATA[<p>Searches all post and page content to see if the attachment is used
2211
  as a Featured Image or inserted in the post as an image or link.</p>]]></long-description>
2212
+ <tag line="2995" name="since" description="0.1"/>
2213
+ <tag line="2995" name="param" description="post ID of attachment" type="int" variable="$ID">
2214
  <type by_reference="false">int</type>
2215
  </tag>
2216
+ <tag line="2995" name="param" description="post ID of attachment's parent, if any" type="int" variable="$parent">
2217
  <type by_reference="false">int</type>
2218
  </tag>
2219
+ <tag line="2995" name="param" description="True to compute references, false to return empty values" type="boolean" variable="$add_references">
2220
  <type by_reference="false">boolean</type>
2221
  </tag>
2222
+ <tag line="2995" name="return" description="Reference information; see $references array comments" type="array">
2223
  <type by_reference="false">array</type>
2224
  </tag>
2225
  </docblock>
2226
+ <argument line="3009">
2227
  <name>$ID</name>
2228
  <default><![CDATA[]]></default>
2229
  <type/>
2230
  </argument>
2231
+ <argument line="3009">
2232
  <name>$parent</name>
2233
  <default><![CDATA[]]></default>
2234
  <type/>
2235
  </argument>
2236
+ <argument line="3009">
2237
  <name>$add_references</name>
2238
  <default><![CDATA[true]]></default>
2239
  <type/>
2240
  </argument>
2241
  </method>
2242
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="3339" package="Media Library Assistant">
2243
  <name>mla_attachment_array_fetch_references</name>
2244
  <full_name>mla_attachment_array_fetch_references</full_name>
2245
+ <docblock line="3327">
2246
  <description><![CDATA[Add Featured Image and inserted image/link references to an array of attachments]]></description>
2247
  <long-description><![CDATA[<p>Searches all post and page content to see if the attachmenta are used
2248
  as a Featured Image or inserted in the post as an image or link.</p>]]></long-description>
2249
+ <tag line="3327" name="since" description="1.94"/>
2250
+ <tag line="3327" name="param" description="WP_Post objects, passed by reference" type="array" variable="$attachments">
2251
  <type by_reference="false">array</type>
2252
  </tag>
2253
+ <tag line="3327" name="return" description="updates WP_Post objects with new mla_references property" type="void">
2254
  <type by_reference="false">void</type>
2255
  </tag>
2256
  </docblock>
2257
+ <argument line="3339">
2258
  <name>$attachments</name>
2259
  <default><![CDATA[]]></default>
2260
  <type/>
2261
  </argument>
2262
  </method>
2263
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="3713" package="Media Library Assistant">
2264
  <name>mla_flush_mla_galleries</name>
2265
  <full_name>mla_flush_mla_galleries</full_name>
2266
+ <docblock line="3704">
2267
  <description><![CDATA[Invalidates the $mla_galleries or $galleries array and cached values]]></description>
2268
  <long-description><![CDATA[]]></long-description>
2269
+ <tag line="3704" name="since" description="1.00"/>
2270
+ <tag line="3704" name="param" description="name of the gallery's cache/option variable" type="string" variable="$option_name">
2271
  <type by_reference="false">string</type>
2272
  </tag>
2273
+ <tag line="3704" name="return" description="" type="void">
2274
  <type by_reference="false">void</type>
2275
  </tag>
2276
  </docblock>
2277
+ <argument line="3713">
2278
  <name>$option_name</name>
2279
  <default><![CDATA[]]></default>
2280
  <type/>
2281
  </argument>
2282
  </method>
2283
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="3737" package="Media Library Assistant">
2284
  <name>mla_save_post_action</name>
2285
  <full_name>mla_save_post_action</full_name>
2286
+ <docblock line="3728">
2287
  <description><![CDATA[Invalidates $mla_galleries and $galleries arrays and cached values after post, page or attachment updates]]></description>
2288
  <long-description><![CDATA[]]></long-description>
2289
+ <tag line="3728" name="since" description="1.00"/>
2290
+ <tag line="3728" name="param" description="ID of post/page/attachment; not used at this time" type="integer" variable="$post_id">
2291
  <type by_reference="false">integer</type>
2292
  </tag>
2293
+ <tag line="3728" name="return" description="" type="void">
2294
  <type by_reference="false">void</type>
2295
  </tag>
2296
  </docblock>
2297
+ <argument line="3737">
2298
  <name>$post_id</name>
2299
  <default><![CDATA[]]></default>
2300
  <type/>
2301
  </argument>
2302
  </method>
2303
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="3754" package="Media Library Assistant">
2304
  <name>_build_mla_galleries</name>
2305
  <full_name>_build_mla_galleries</full_name>
2306
+ <docblock line="3742">
2307
  <description><![CDATA[Builds the $mla_galleries or $galleries array]]></description>
2308
  <long-description><![CDATA[]]></long-description>
2309
+ <tag line="3742" name="since" description="0.70"/>
2310
+ <tag line="3742" name="param" description="name of the gallery's cache/option variable" type="string" variable="$option_name">
2311
  <type by_reference="false">string</type>
2312
  </tag>
2313
+ <tag line="3742" name="param" description="by reference to the private static galleries array variable" type="array" variable="$galleries_array">
2314
  <type by_reference="false">array</type>
2315
  </tag>
2316
+ <tag line="3742" name="param" description="the shortcode to be searched for and processed" type="string" variable="$shortcode">
2317
  <type by_reference="false">string</type>
2318
  </tag>
2319
+ <tag line="3742" name="param" description="true to exclude revisions from the search" type="boolean" variable="$exclude_revisions">
2320
  <type by_reference="false">boolean</type>
2321
  </tag>
2322
+ <tag line="3742" name="return" description="true if the galleries array is not empty" type="boolean">
2323
  <type by_reference="false">boolean</type>
2324
  </tag>
2325
  </docblock>
2326
+ <argument line="3754">
2327
  <name>$option_name</name>
2328
  <default><![CDATA[]]></default>
2329
  <type/>
2330
  </argument>
2331
+ <argument line="3754">
2332
  <name>$galleries_array</name>
2333
  <default><![CDATA[]]></default>
2334
  <type/>
2335
  </argument>
2336
+ <argument line="3754">
2337
  <name>$shortcode</name>
2338
  <default><![CDATA[]]></default>
2339
  <type/>
2340
  </argument>
2341
+ <argument line="3754">
2342
  <name>$exclude_revisions</name>
2343
  <default><![CDATA[]]></default>
2344
  <type/>
2345
  </argument>
2346
  </method>
2347
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="3875" package="Media Library Assistant">
2348
  <name>_search_mla_galleries</name>
2349
  <full_name>_search_mla_galleries</full_name>
2350
+ <docblock line="3864">
2351
  <description><![CDATA[Search the $mla_galleries or $galleries array]]></description>
2352
  <long-description><![CDATA[]]></long-description>
2353
+ <tag line="3864" name="since" description="0.70"/>
2354
+ <tag line="3864" name="param" description="by reference to the private static galleries array variable" type="array" variable="$galleries_array">
2355
  <type by_reference="false">array</type>
2356
  </tag>
2357
+ <tag line="3864" name="param" description="the attachment ID to be searched for and processed" type="int" variable="$attachment_id">
2358
  <type by_reference="false">int</type>
2359
  </tag>
2360
+ <tag line="3864" name="return" description="All posts/pages with one or more galleries that include the attachment. The array key is the parent_post ID; each entry contains post_title and post_type." type="array">
2361
  <type by_reference="false">array</type>
2362
  </tag>
2363
  </docblock>
2364
+ <argument line="3875">
2365
  <name>$galleries_array</name>
2366
  <default><![CDATA[]]></default>
2367
  <type/>
2368
  </argument>
2369
+ <argument line="3875">
2370
  <name>$attachment_id</name>
2371
  <default><![CDATA[]]></default>
2372
  <type/>
2373
  </argument>
2374
  </method>
2375
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="3897" package="Media Library Assistant">
2376
+ <name>mla_parse_pdf_date</name>
2377
+ <full_name>mla_parse_pdf_date</full_name>
2378
+ <docblock line="3888">
2379
+ <description><![CDATA[Parse a PDF date string]]></description>
2380
+ <long-description><![CDATA[]]></long-description>
2381
+ <tag line="3888" name="since" description="1.50"/>
2382
+ <tag line="3888" name="param" description="PDF date string of the form D:YYYYMMDDHHmmSSOHH'mm" type="string" variable="$source_string">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2383
  <type by_reference="false">string</type>
2384
  </tag>
2385
+ <tag line="3888" name="return" description="formatted date string YYYY-MM-DD HH:mm:SS" type="string">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2386
  <type by_reference="false">string</type>
2387
  </tag>
 
 
 
 
 
 
 
 
 
2388
  </docblock>
2389
+ <argument line="3897">
2390
+ <name>$source_string</name>
 
 
 
 
 
2391
  <default><![CDATA[]]></default>
2392
  <type/>
2393
  </argument>
 
 
 
 
 
2394
  </method>
2395
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="3920" package="Media Library Assistant">
2396
  <name>_parse_iso8601_date</name>
2397
  <full_name>_parse_iso8601_date</full_name>
2398
+ <docblock line="3911">
2399
  <description><![CDATA[Parse a ISO 8601 Timestamp]]></description>
2400
  <long-description><![CDATA[]]></long-description>
2401
+ <tag line="3911" name="since" description="1.50"/>
2402
+ <tag line="3911" name="param" description="ISO string of the form YYYY-MM-DDTHH:MM:SS-HH:MM (inc time zone)" type="string" variable="$source_string">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2403
  <type by_reference="false">string</type>
2404
  </tag>
2405
+ <tag line="3911" name="return" description="formatted date string YYYY-MM-DD HH:mm:SS" type="string">
2406
  <type by_reference="false">string</type>
2407
  </tag>
2408
  </docblock>
2409
+ <argument line="3920">
2410
  <name>$source_string</name>
2411
  <default><![CDATA[]]></default>
2412
  <type/>
2413
  </argument>
2414
  </method>
2415
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="3943" package="Media Library Assistant">
2416
+ <name>_parse_xmp_array</name>
2417
+ <full_name>_parse_xmp_array</full_name>
2418
+ <docblock line="3934">
2419
+ <description><![CDATA[Parse an XMP array value, stripping namespace prefixes and Seq/Alt/Bag arrays]]></description>
2420
  <long-description><![CDATA[]]></long-description>
2421
+ <tag line="3934" name="since" description="2.10"/>
2422
+ <tag line="3934" name="param" description="XMP multi-valued element" type="array" variable="$values">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2423
  <type by_reference="false">array</type>
2424
  </tag>
2425
+ <tag line="3934" name="return" description="Simplified array or string value" type="mixed">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2426
  <type by_reference="false">mixed</type>
2427
  </tag>
2428
  </docblock>
2429
+ <argument line="3943">
2430
+ <name>$values</name>
 
 
 
 
 
2431
  <default><![CDATA[]]></default>
2432
  <type/>
2433
  </argument>
2434
  </method>
2435
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="3988" package="Media Library Assistant">
2436
+ <name>mla_parse_xmp_metadata</name>
2437
+ <full_name>mla_parse_xmp_metadata</full_name>
2438
+ <docblock line="3978">
2439
+ <description><![CDATA[Extract XMP meta data from a file]]></description>
2440
  <long-description><![CDATA[]]></long-description>
2441
+ <tag line="3978" name="since" description="2.10"/>
2442
+ <tag line="3978" name="param" description="full path and file name" type="string" variable="$file_name">
2443
  <type by_reference="false">string</type>
2444
  </tag>
2445
+ <tag line="3978" name="param" description="offset within the file of the search start point" type="integer" variable="$file_offset">
2446
  <type by_reference="false">integer</type>
2447
  </tag>
2448
+ <tag line="3978" name="return" description="array of metadata values or NULL on failure" type="mixed">
2449
  <type by_reference="false">mixed</type>
2450
  </tag>
2451
  </docblock>
2452
+ <argument line="3988">
2453
  <name>$file_name</name>
2454
  <default><![CDATA[]]></default>
2455
  <type/>
2456
  </argument>
2457
+ <argument line="3988">
2458
+ <name>$file_offset</name>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2459
  <default><![CDATA[]]></default>
2460
  <type/>
2461
  </argument>
2462
  </method>
2463
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="4317" package="Media Library Assistant">
2464
  <name>_bin_to_utf8</name>
2465
  <full_name>_bin_to_utf8</full_name>
2466
+ <docblock line="4308">
2467
  <description><![CDATA[Replace SQL incorrect characters (0x80 - 0xFF) with their UTF-8 equivalents]]></description>
2468
  <long-description><![CDATA[]]></long-description>
2469
+ <tag line="4308" name="since" description="1.41"/>
2470
+ <tag line="4308" name="param" description="unencoded string" type="string" variable="$string">
2471
  <type by_reference="false">string</type>
2472
  </tag>
2473
+ <tag line="4308" name="return" description="UTF-8 encoded string" type="string">
2474
  <type by_reference="false">string</type>
2475
  </tag>
2476
  </docblock>
2477
+ <argument line="4317">
2478
  <name>$string</name>
2479
  <default><![CDATA[]]></default>
2480
  <type/>
2481
  </argument>
2482
  </method>
2483
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="4715" package="Media Library Assistant">
2484
  <name>mla_iptc_metadata_value</name>
2485
  <full_name>mla_iptc_metadata_value</full_name>
2486
+ <docblock line="4705">
2487
  <description><![CDATA[Parse one IPTC metadata field]]></description>
2488
  <long-description><![CDATA[]]></long-description>
2489
+ <tag line="4705" name="since" description="1.41"/>
2490
+ <tag line="4705" name="param" description="field name - IPTC Identifier or friendly name/slug" type="string" variable="$iptc_key">
2491
  <type by_reference="false">string</type>
2492
  </tag>
2493
+ <tag line="4705" name="param" description="metadata array containing iptc, exif, xmp and pdf metadata arrays" type="string" variable="$item_metadata">
2494
  <type by_reference="false">string</type>
2495
  </tag>
2496
+ <tag line="4705" name="return" description="string/array representation of metadata value or an empty string" type="mixed">
2497
  <type by_reference="false">mixed</type>
2498
  </tag>
2499
  </docblock>
2500
+ <argument line="4715">
2501
  <name>$iptc_key</name>
2502
  <default><![CDATA[]]></default>
2503
  <type/>
2504
  </argument>
2505
+ <argument line="4715">
2506
  <name>$item_metadata</name>
2507
  <default><![CDATA[]]></default>
2508
  <type/>
2509
  </argument>
2510
  </method>
2511
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="4763" package="Media Library Assistant">
2512
  <name>mla_exif_metadata_value</name>
2513
  <full_name>mla_exif_metadata_value</full_name>
2514
+ <docblock line="4751">
2515
  <description><![CDATA[Parse one EXIF metadata field]]></description>
2516
  <long-description><![CDATA[<p>Also handles the special pseudo-values 'ALL_EXIF' and 'ALL_IPTC'.</p>]]></long-description>
2517
+ <tag line="4751" name="since" description="1.13"/>
2518
+ <tag line="4751" name="param" description="field name" type="string" variable="$exif_key">
2519
  <type by_reference="false">string</type>
2520
  </tag>
2521
+ <tag line="4751" name="param" description="metadata array containing iptc, exif, xmp and pdf metadata arrays" type="string" variable="$item_metadata">
2522
  <type by_reference="false">string</type>
2523
  </tag>
2524
+ <tag line="4751" name="return" description="string/array representation of metadata value or an empty string" type="mixed">
2525
  <type by_reference="false">mixed</type>
2526
  </tag>
2527
  </docblock>
2528
+ <argument line="4763">
2529
  <name>$exif_key</name>
2530
  <default><![CDATA[]]></default>
2531
  <type/>
2532
  </argument>
2533
+ <argument line="4763">
2534
  <name>$item_metadata</name>
2535
  <default><![CDATA[]]></default>
2536
  <type/>
2537
  </argument>
2538
  </method>
2539
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="4826" package="Media Library Assistant">
2540
+ <name>mla_xmp_metadata_value</name>
2541
+ <full_name>mla_xmp_metadata_value</full_name>
2542
+ <docblock line="4812">
2543
+ <description><![CDATA[Parse one XMP metadata field]]></description>
2544
+ <long-description><![CDATA[<p>Also handles the special pseudo-value 'ALL_XMP'.</p>]]></long-description>
2545
+ <tag line="4812" name="since" description="2.10"/>
2546
+ <tag line="4812" name="param" description="field name" type="string" variable="$xmp_key">
2547
+ <type by_reference="false">string</type>
2548
+ </tag>
2549
+ <tag line="4812" name="param" description="data option 'text'|'single'|'export'|'array'|'multi'" type="string" variable="$option">
2550
+ <type by_reference="false">string</type>
2551
+ </tag>
2552
+ <tag line="4812" name="param" description="Optional: for option 'multi', retain existing values" type="boolean" variable="$keep_existing">
2553
+ <type by_reference="false">boolean</type>
2554
+ </tag>
2555
+ <tag line="4812" name="param" description="XMP metadata array" type="string" variable="$xmp_metadata">
2556
+ <type by_reference="false">string</type>
2557
+ </tag>
2558
+ <tag line="4812" name="return" description="string/array representation of metadata value or an empty string" type="mixed">
2559
+ <type by_reference="false">mixed</type>
2560
+ </tag>
2561
+ </docblock>
2562
+ <argument line="4826">
2563
+ <name>$xmp_key</name>
2564
+ <default><![CDATA[]]></default>
2565
+ <type/>
2566
+ </argument>
2567
+ <argument line="4826">
2568
+ <name>$option</name>
2569
+ <default><![CDATA[]]></default>
2570
+ <type/>
2571
+ </argument>
2572
+ <argument line="4826">
2573
+ <name>$keep_existing</name>
2574
+ <default><![CDATA[]]></default>
2575
+ <type/>
2576
+ </argument>
2577
+ <argument line="4826">
2578
+ <name>$xmp_metadata</name>
2579
+ <default><![CDATA[]]></default>
2580
+ <type/>
2581
+ </argument>
2582
+ </method>
2583
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="4859" package="Media Library Assistant">
2584
  <name>mla_pdf_metadata_value</name>
2585
  <full_name>mla_pdf_metadata_value</full_name>
2586
+ <docblock line="4847">
2587
  <description><![CDATA[Parse one PDF metadata field]]></description>
2588
  <long-description><![CDATA[<p>Also handles the special pseudo-value 'ALL_PDF'.</p>]]></long-description>
2589
+ <tag line="4847" name="since" description="1.50"/>
2590
+ <tag line="4847" name="param" description="field name" type="string" variable="$pdf_key">
2591
  <type by_reference="false">string</type>
2592
  </tag>
2593
+ <tag line="4847" name="param" description="metadata array containing iptc, exif, xmp and pdf metadata arrays" type="string" variable="$item_metadata">
2594
  <type by_reference="false">string</type>
2595
  </tag>
2596
+ <tag line="4847" name="return" description="string/array representation of metadata value or an empty string" type="mixed">
2597
  <type by_reference="false">mixed</type>
2598
  </tag>
2599
  </docblock>
2600
+ <argument line="4859">
2601
  <name>$pdf_key</name>
2602
  <default><![CDATA[]]></default>
2603
  <type/>
2604
  </argument>
2605
+ <argument line="4859">
2606
  <name>$item_metadata</name>
2607
  <default><![CDATA[]]></default>
2608
  <type/>
2609
  </argument>
2610
  </method>
2611
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="4901" package="Media Library Assistant">
2612
  <name>_rational_to_decimal</name>
2613
  <full_name>_rational_to_decimal</full_name>
2614
+ <docblock line="4892">
2615
  <description><![CDATA[Convert an EXIF GPS rational value to a PHP float value]]></description>
2616
  <long-description><![CDATA[]]></long-description>
2617
+ <tag line="4892" name="since" description="1.50"/>
2618
+ <tag line="4892" name="param" description="array( 0 =&gt; numerator, 1 =&gt; denominator )" type="array" variable="$rational">
2619
  <type by_reference="false">array</type>
2620
  </tag>
2621
+ <tag line="4892" name="return" description="numerator/denominator" type="float">
2622
  <type by_reference="false">float</type>
2623
  </tag>
2624
  </docblock>
2625
+ <argument line="4901">
2626
  <name>$rational</name>
2627
  <default><![CDATA[]]></default>
2628
  <type/>
2629
  </argument>
2630
  </method>
2631
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="4918" package="Media Library Assistant">
2632
  <name>_rational_to_string</name>
2633
  <full_name>_rational_to_string</full_name>
2634
+ <docblock line="4906">
2635
  <description><![CDATA[Convert an EXIF rational value to a formatted string]]></description>
2636
  <long-description><![CDATA[]]></long-description>
2637
+ <tag line="4906" name="since" description="2.02"/>
2638
+ <tag line="4906" name="param" description="numerator/denominator" type="string" variable="$rational">
2639
  <type by_reference="false">string</type>
2640
  </tag>
2641
+ <tag line="4906" name="param" description="format for integer values" type="string" variable="$integer_format">
2642
  <type by_reference="false">string</type>
2643
  </tag>
2644
+ <tag line="4906" name="param" description="format for fractional values from -1 to +1" type="string" variable="$fraction_format">
2645
  <type by_reference="false">string</type>
2646
  </tag>
2647
+ <tag line="4906" name="param" description="format for integer.fraction values" type="string" variable="$mixed_format">
2648
  <type by_reference="false">string</type>
2649
  </tag>
2650
+ <tag line="4906" name="return" description="formatted value or boolean false if no value available" type="mixed">
2651
  <type by_reference="false">mixed</type>
2652
  </tag>
2653
  </docblock>
2654
+ <argument line="4918">
2655
  <name>$rational</name>
2656
  <default><![CDATA[]]></default>
2657
  <type/>
2658
  </argument>
2659
+ <argument line="4918">
2660
  <name>$integer_format</name>
2661
  <default><![CDATA[]]></default>
2662
  <type/>
2663
  </argument>
2664
+ <argument line="4918">
2665
  <name>$fraction_format</name>
2666
  <default><![CDATA[]]></default>
2667
  <type/>
2668
  </argument>
2669
+ <argument line="4918">
2670
  <name>$mixed_format</name>
2671
  <default><![CDATA[]]></default>
2672
  <type/>
2673
  </argument>
2674
  </method>
2675
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="4969" package="Media Library Assistant">
2676
  <name>mla_IPTC_EXIF_error_handler</name>
2677
  <full_name>mla_IPTC_EXIF_error_handler</full_name>
2678
+ <docblock line="4957">
2679
  <description><![CDATA[Intercept IPTC and EXIF parse errors]]></description>
2680
  <long-description><![CDATA[]]></long-description>
2681
+ <tag line="4957" name="since" description="1.81"/>
2682
+ <tag line="4957" name="param" description="the level of the error raised" type="int" variable="$type">
2683
  <type by_reference="false">int</type>
2684
  </tag>
2685
+ <tag line="4957" name="param" description="the error message" type="string" variable="$string">
2686
  <type by_reference="false">string</type>
2687
  </tag>
2688
+ <tag line="4957" name="param" description="the filename that the error was raised in" type="string" variable="$file">
2689
  <type by_reference="false">string</type>
2690
  </tag>
2691
+ <tag line="4957" name="param" description="the line number the error was raised at" type="int" variable="$line">
2692
  <type by_reference="false">int</type>
2693
  </tag>
2694
+ <tag line="4957" name="return" description="true, to bypass PHP error handler" type="boolean">
2695
  <type by_reference="false">boolean</type>
2696
  </tag>
2697
  </docblock>
2698
+ <argument line="4969">
2699
  <name>$type</name>
2700
  <default><![CDATA[]]></default>
2701
  <type/>
2702
  </argument>
2703
+ <argument line="4969">
2704
  <name>$string</name>
2705
  <default><![CDATA[]]></default>
2706
  <type/>
2707
  </argument>
2708
+ <argument line="4969">
2709
  <name>$file</name>
2710
  <default><![CDATA[]]></default>
2711
  <type/>
2712
  </argument>
2713
+ <argument line="4969">
2714
  <name>$line</name>
2715
  <default><![CDATA[]]></default>
2716
  <type/>
2717
  </argument>
2718
  </method>
2719
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="5007" package="Media Library Assistant">
2720
  <name>mla_fetch_attachment_image_metadata</name>
2721
  <full_name>mla_fetch_attachment_image_metadata</full_name>
2722
+ <docblock line="4997">
2723
+ <description><![CDATA[Fetch and filter IPTC and EXIF, XMP or PDF metadata for an image attachment]]></description>
2724
  <long-description><![CDATA[]]></long-description>
2725
+ <tag line="4997" name="since" description="0.90"/>
2726
+ <tag line="4997" name="param" description="post ID of attachment" type="int" variable="$post_id">
2727
  <type by_reference="false">int</type>
2728
  </tag>
2729
+ <tag line="4997" name="param" description="optional; if $post_id is zero, path to the image file." type="string" variable="$path">
2730
  <type by_reference="false">string</type>
2731
  </tag>
2732
+ <tag line="4997" name="return" description="Meta data variables, IPTC and EXIF or PDF" type="array">
2733
  <type by_reference="false">array</type>
2734
  </tag>
2735
  </docblock>
2736
+ <argument line="5007">
2737
  <name>$post_id</name>
2738
  <default><![CDATA[]]></default>
2739
  <type/>
2740
  </argument>
2741
+ <argument line="5007">
2742
  <name>$path</name>
2743
  <default><![CDATA['']]></default>
2744
  <type/>
2745
  </argument>
2746
  </method>
2747
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="5355" package="Media Library Assistant">
2748
  <name>mla_update_wp_attachment_metadata</name>
2749
  <full_name>mla_update_wp_attachment_metadata</full_name>
2750
+ <docblock line="5345">
2751
  <description><![CDATA[Update "meta:" data for a single attachment]]></description>
2752
  <long-description><![CDATA[]]></long-description>
2753
+ <tag line="5345" name="since" description="1.51"/>
2754
+ <tag line="5345" name="param" description="The current wp_attachment_metadata value" type="array" variable="$current_values">
2755
  <type by_reference="false">array</type>
2756
  </tag>
2757
+ <tag line="5345" name="param" description="Field name =&gt; value pairs" type="array" variable="$new_meta">
2758
  <type by_reference="false">array</type>
2759
  </tag>
2760
+ <tag line="5345" name="return" description="success/failure message(s); empty string if no changes." type="string">
2761
  <type by_reference="false">string</type>
2762
  </tag>
2763
  </docblock>
2764
+ <argument line="5355">
2765
  <name>$current_values</name>
2766
  <default><![CDATA[]]></default>
2767
  <type/>
2768
  </argument>
2769
+ <argument line="5355">
2770
  <name>$new_meta</name>
2771
  <default><![CDATA[]]></default>
2772
  <type/>
2773
  </argument>
2774
  </method>
2775
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="5439" package="Media Library Assistant">
2776
  <name>mla_update_item_postmeta</name>
2777
  <full_name>mla_update_item_postmeta</full_name>
2778
+ <docblock line="5429">
2779
  <description><![CDATA[Update custom field and "meta:" data for a single attachment]]></description>
2780
  <long-description><![CDATA[]]></long-description>
2781
+ <tag line="5429" name="since" description="1.40"/>
2782
+ <tag line="5429" name="param" description="The ID of the attachment to be updated" type="int" variable="$post_id">
2783
  <type by_reference="false">int</type>
2784
  </tag>
2785
+ <tag line="5429" name="param" description="Field name =&gt; value pairs" type="array" variable="$new_meta">
2786
  <type by_reference="false">array</type>
2787
  </tag>
2788
+ <tag line="5429" name="return" description="success/failure message(s)" type="string">
2789
  <type by_reference="false">string</type>
2790
  </tag>
2791
  </docblock>
2792
+ <argument line="5439">
2793
  <name>$post_id</name>
2794
  <default><![CDATA[]]></default>
2795
  <type/>
2796
  </argument>
2797
+ <argument line="5439">
2798
  <name>$new_meta</name>
2799
  <default><![CDATA[]]></default>
2800
  <type/>
2801
  </argument>
2802
  </method>
2803
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="5606" package="Media Library Assistant">
2804
  <name>mla_update_single_item</name>
2805
  <full_name>mla_update_single_item</full_name>
2806
+ <docblock line="5593">
2807
  <description><![CDATA[Update a single item; change the "post" data, taxonomy terms
2808
  and meta data for a single attachment]]></description>
2809
  <long-description><![CDATA[]]></long-description>
2810
+ <tag line="5593" name="since" description="0.1"/>
2811
+ <tag line="5593" name="param" description="The ID of the attachment to be updated" type="int" variable="$post_id">
2812
  <type by_reference="false">int</type>
2813
  </tag>
2814
+ <tag line="5593" name="param" description="Field name =&gt; value pairs" type="array" variable="$new_data">
2815
  <type by_reference="false">array</type>
2816
  </tag>
2817
+ <tag line="5593" name="param" description="Optional taxonomy term values, default null" type="array" variable="$tax_input">
2818
  <type by_reference="false">array</type>
2819
  </tag>
2820
+ <tag line="5593" name="param" description="Optional taxonomy actions (add, remove, replace), default null" type="array" variable="$tax_actions">
2821
  <type by_reference="false">array</type>
2822
  </tag>
2823
+ <tag line="5593" name="return" description="success/failure message and NULL content" type="array">
2824
  <type by_reference="false">array</type>
2825
  </tag>
2826
  </docblock>
2827
+ <argument line="5606">
2828
  <name>$post_id</name>
2829
  <default><![CDATA[]]></default>
2830
  <type/>
2831
  </argument>
2832
+ <argument line="5606">
2833
  <name>$new_data</name>
2834
  <default><![CDATA[]]></default>
2835
  <type/>
2836
  </argument>
2837
+ <argument line="5606">
2838
  <name>$tax_input</name>
2839
  <default><![CDATA[NULL]]></default>
2840
  <type/>
2841
  </argument>
2842
+ <argument line="5606">
2843
  <name>$tax_actions</name>
2844
  <default><![CDATA[NULL]]></default>
2845
  <type/>
2846
  </argument>
2847
  </method>
2848
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="5896" package="Media Library Assistant">
2849
  <name>_remove_terms</name>
2850
  <full_name>_remove_terms</full_name>
2851
+ <docblock line="5885">
2852
  <description><![CDATA[Remove terms from an attachment's assignments]]></description>
2853
  <long-description><![CDATA[]]></long-description>
2854
+ <tag line="5885" name="since" description="0.40"/>
2855
+ <tag line="5885" name="param" description="The ID of the attachment to be updated" type="integer" variable="$post_id">
2856
  <type by_reference="false">integer</type>
2857
  </tag>
2858
+ <tag line="5885" name="param" description="The term ids (integer array) or names (string array) to remove" type="array" variable="$terms">
2859
  <type by_reference="false">array</type>
2860
  </tag>
2861
+ <tag line="5885" name="param" description="The taxonomy object" type="object" variable="$taxonomy_obj">
2862
  <type by_reference="false">object</type>
2863
  </tag>
2864
+ <tag line="5885" name="return" description="Term ids/names of the surviving terms" type="array">
2865
  <type by_reference="false">array</type>
2866
  </tag>
2867
  </docblock>
2868
+ <argument line="5896">
2869
  <name>$post_id</name>
2870
  <default><![CDATA[]]></default>
2871
  <type/>
2872
  </argument>
2873
+ <argument line="5896">
2874
  <name>$terms</name>
2875
  <default><![CDATA[]]></default>
2876
  <type/>
2877
  </argument>
2878
+ <argument line="5896">
2879
  <name>$taxonomy_obj</name>
2880
  <default><![CDATA[]]></default>
2881
  <type/>
2882
  </argument>
2883
  </method>
2884
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="5947" package="Media Library Assistant">
2885
+ <name>mla_hex_dump</name>
2886
+ <full_name>mla_hex_dump</full_name>
2887
+ <docblock line="5935">
2888
  <description><![CDATA[Format printable version of binary data]]></description>
2889
  <long-description><![CDATA[]]></long-description>
2890
+ <tag line="5935" name="since" description="0.90"/>
2891
+ <tag line="5935" name="param" description="Binary data" type="string" variable="$data">
2892
  <type by_reference="false">string</type>
2893
  </tag>
2894
+ <tag line="5935" name="param" description="Bytes to format, default = 0 (all bytes)" type="integer" variable="$limit">
2895
  <type by_reference="false">integer</type>
2896
  </tag>
2897
+ <tag line="5935" name="param" description="Bytes to format on each line" type="\intger" variable="$bytes_per_row">
2898
  <type by_reference="false">\intger</type>
2899
  </tag>
2900
+ <tag line="5935" name="param" description="offset of initial byte, or -1 to suppress printing offset information" type="integer" variable="$offset">
2901
  <type by_reference="false">integer</type>
2902
  </tag>
2903
+ <tag line="5935" name="return" description="Printable representation of $data" type="string">
2904
  <type by_reference="false">string</type>
2905
  </tag>
2906
  </docblock>
2907
+ <argument line="5947">
2908
  <name>$data</name>
2909
  <default><![CDATA[]]></default>
2910
  <type/>
2911
  </argument>
2912
+ <argument line="5947">
2913
  <name>$limit</name>
2914
  <default><![CDATA[0]]></default>
2915
  <type/>
2916
  </argument>
2917
+ <argument line="5947">
2918
  <name>$bytes_per_row</name>
2919
  <default><![CDATA[16]]></default>
2920
  <type/>
2921
  </argument>
2922
+ <argument line="5947">
2923
  <name>$offset</name>
2924
  <default><![CDATA[-1]]></default>
2925
  <type/>
2926
  </argument>
2927
  </method>
2928
  </class>
 
 
 
2929
  </file>
2930
+ <file path="includes\class-mla-edit-media.php" hash="79f66a430b45e0ed6d979fdbbe417e49" package="Media Library Assistant">
2931
  <docblock line="2">
2932
  <description><![CDATA[Media Library Assistant Edit Media screen enhancements]]></description>
2933
  <long-description><![CDATA[]]></long-description>
2983
  </tag>
2984
  </docblock>
2985
  </constant>
2986
+ <property final="false" static="true" visibility="private" line="699" namespace="global" package="Media Library Assistant">
2987
  <name>$mla_references</name>
2988
  <default><![CDATA[null]]></default>
2989
+ <docblock line="689">
2990
  <description><![CDATA[Where-used values for the current item]]></description>
2991
  <long-description><![CDATA[<p>This array contains the Featured/Inserted/Gallery/MLA Gallery references for the item.
2992
  The array is built once each page load and cached for subsequent calls.</p>]]></long-description>
2993
+ <tag line="689" name="since" description="0.80"/>
2994
+ <tag line="689" name="var" description="" type="array">
2995
  <type by_reference="false">array</type>
2996
  </tag>
2997
  </docblock>
3020
  </tag>
3021
  </docblock>
3022
  </method>
3023
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="168" package="Media Library Assistant">
3024
  <name>mla_admin_enqueue_scripts_action</name>
3025
  <full_name>mla_admin_enqueue_scripts_action</full_name>
3026
+ <docblock line="159">
3027
  <description><![CDATA[Load the plugin's Style Sheet and Javascript files]]></description>
3028
  <long-description><![CDATA[]]></long-description>
3029
+ <tag line="159" name="since" description="1.71"/>
3030
+ <tag line="159" name="param" description="Name of the page being loaded" type="string" variable="$page_hook">
3031
  <type by_reference="false">string</type>
3032
  </tag>
3033
+ <tag line="159" name="return" description="" type="void">
3034
  <type by_reference="false">void</type>
3035
  </tag>
3036
  </docblock>
3037
+ <argument line="168">
3038
  <name>$page_hook</name>
3039
  <default><![CDATA[]]></default>
3040
  <type/>
3041
  </argument>
3042
  </method>
3043
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="257" package="Media Library Assistant">
3044
  <name>mla_upload_post_params</name>
3045
  <full_name>mla_upload_post_params</full_name>
3046
+ <docblock line="250">
3047
  <description><![CDATA[Filter the Media/Add New post parameters.]]></description>
3048
  <long-description><![CDATA[]]></long-description>
3049
+ <tag line="250" name="since" description="2.02"/>
3050
+ <tag line="250" name="param" description="An array of media upload parameters used by Plupload." type="array" variable="$post_parms">
3051
  <type by_reference="false">array</type>
3052
  </tag>
3053
  </docblock>
3054
+ <argument line="257">
3055
  <name>$post_parms</name>
3056
  <default><![CDATA[]]></default>
3057
  <type/>
3058
  </argument>
3059
  </method>
3060
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="280" package="Media Library Assistant">
3061
  <name>mla_post_upload_ui</name>
3062
  <full_name>mla_post_upload_ui</full_name>
3063
+ <docblock line="270">
3064
  <description><![CDATA[Echoes bulk edit area HTML to the Media/Add New screen]]></description>
3065
  <long-description><![CDATA[<p>Fires on the post upload UI screen; legacy (pre-3.5.0) upload interface.
3066
  Anything echoed here goes below the "Maximum upload file size" message
3067
  and above the id="media-items" div.</p>]]></long-description>
3068
+ <tag line="270" name="since" description="2.02"/>
3069
  </docblock>
3070
  </method>
3071
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="447" package="Media Library Assistant">
3072
  <name>mla_update_attachment_metadata_postfilter</name>
3073
  <full_name>mla_update_attachment_metadata_postfilter</full_name>
3074
+ <docblock line="431">
3075
  <description><![CDATA[Apply Media/Add New bulk edit area updates, if any]]></description>
3076
  <long-description><![CDATA[<p>This filter is called AFTER MLA mapping rules are applied during
3077
+ wp_update_attachment_metadata() processing. If none of the mapping rules
3078
+ is enabled it is called from the 'wp_update_attachment_metadata' filter
3079
+ with just two arguments.</p>]]></long-description>
3080
+ <tag line="431" name="since" description="2.02"/>
3081
+ <tag line="431" name="param" description="attachment metadata" type="array" variable="$data">
3082
  <type by_reference="false">array</type>
3083
  </tag>
3084
+ <tag line="431" name="param" description="The Post ID of the new/updated attachment" type="integer" variable="$post_id">
3085
  <type by_reference="false">integer</type>
3086
  </tag>
3087
+ <tag line="431" name="param" description="Processing options, e.g., 'is_upload'" type="array" variable="$options">
3088
  <type by_reference="false">array</type>
3089
  </tag>
3090
+ <tag line="431" name="return" description="updated attachment metadata" type="array">
3091
  <type by_reference="false">array</type>
3092
  </tag>
3093
  </docblock>
3094
+ <argument line="447">
3095
  <name>$data</name>
3096
  <default><![CDATA[]]></default>
3097
  <type/>
3098
  </argument>
3099
+ <argument line="447">
3100
  <name>$post_id</name>
3101
  <default><![CDATA[]]></default>
3102
  <type/>
3103
  </argument>
3104
+ <argument line="447">
3105
  <name>$options</name>
3106
+ <default><![CDATA[array('is_upload' => true)]]></default>
3107
  <type/>
3108
  </argument>
3109
  </method>
3110
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="499" package="Media Library Assistant">
3111
  <name>mla_post_updated_messages_filter</name>
3112
  <full_name>mla_post_updated_messages_filter</full_name>
3113
+ <docblock line="489">
3114
  <description><![CDATA[Adds mapping update messages for display at the top of the Edit Media screen.]]></description>
3115
  <long-description><![CDATA[<p>Declared public because it is a filter.</p>]]></long-description>
3116
+ <tag line="489" name="since" description="1.10"/>
3117
+ <tag line="489" name="param" description="messages for the Edit screen" type="array" variable="$messages">
3118
  <type by_reference="false">array</type>
3119
  </tag>
3120
+ <tag line="489" name="return" description="updated messages" type="array">
3121
  <type by_reference="false">array</type>
3122
  </tag>
3123
  </docblock>
3124
+ <argument line="499">
3125
  <name>$messages</name>
3126
  <default><![CDATA[]]></default>
3127
  <type/>
3128
  </argument>
3129
  </method>
3130
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="516" package="Media Library Assistant">
3131
  <name>mla_attachment_submitbox_action</name>
3132
  <full_name>mla_attachment_submitbox_action</full_name>
3133
+ <docblock line="508">
3134
  <description><![CDATA[Adds Last Modified date to the Submit box on the Edit Media screen.]]></description>
3135
  <long-description><![CDATA[<p>Declared public because it is an action.</p>]]></long-description>
3136
+ <tag line="508" name="since" description="0.80"/>
3137
+ <tag line="508" name="return" description="echoes the HTML markup for the label and value" type="void">
3138
  <type by_reference="false">void</type>
3139
  </tag>
3140
  </docblock>
3141
  </method>
3142
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="552" package="Media Library Assistant">
3143
  <name>mla_add_meta_boxes_action</name>
3144
  <full_name>mla_add_meta_boxes_action</full_name>
3145
+ <docblock line="541">
3146
  <description><![CDATA[Registers meta boxes for the Edit Media screen.]]></description>
3147
  <long-description><![CDATA[<p>Declared public because it is an action.</p>]]></long-description>
3148
+ <tag line="541" name="since" description="0.80"/>
3149
+ <tag line="541" name="param" description="type of the current post, e.g., 'attachment' (optional, default 'unknown')" type="string" variable="$post_type">
3150
  <type by_reference="false">string</type>
3151
  </tag>
3152
+ <tag line="541" name="param" description="current post (optional, default (object) array ( 'ID' =&gt; 0 ))" type="object" variable="$post">
3153
  <type by_reference="false">object</type>
3154
  </tag>
3155
+ <tag line="541" name="return" description="" type="void">
3156
  <type by_reference="false">void</type>
3157
  </tag>
3158
  </docblock>
3159
+ <argument line="552">
3160
  <name>$post_type</name>
3161
  <default><![CDATA['unknown']]></default>
3162
  <type/>
3163
  </argument>
3164
+ <argument line="552">
3165
  <name>$post</name>
3166
  <default><![CDATA[NULL]]></default>
3167
  <type/>
3168
  </argument>
3169
  </method>
3170
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="649" package="Media Library Assistant">
3171
  <name>mla_edit_add_help_tab</name>
3172
  <full_name>mla_edit_add_help_tab</full_name>
3173
+ <docblock line="639">
3174
  <description><![CDATA[Add contextual help tabs to the WordPress Edit Media page]]></description>
3175
  <long-description><![CDATA[]]></long-description>
3176
+ <tag line="639" name="since" description="0.90"/>
3177
+ <tag line="639" name="param" description="title as shown on the screen" type="string" variable="$admin_title">
3178
  <type by_reference="false">string</type>
3179
  </tag>
3180
+ <tag line="639" name="param" description="title as shown in the HTML header" type="string" variable="$title">
3181
  <type by_reference="false">string</type>
3182
  </tag>
3183
+ <tag line="639" name="return" description="" type="void">
3184
  <type by_reference="false">void</type>
3185
  </tag>
3186
  </docblock>
3187
+ <argument line="649">
3188
  <name>$admin_title</name>
3189
  <default><![CDATA[]]></default>
3190
  <type/>
3191
  </argument>
3192
+ <argument line="649">
3193
  <name>$title</name>
3194
  <default><![CDATA[]]></default>
3195
  <type/>
3196
  </argument>
3197
  </method>
3198
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="711" package="Media Library Assistant">
3199
  <name>mla_parent_info_handler</name>
3200
  <full_name>mla_parent_info_handler</full_name>
3201
+ <docblock line="701">
3202
  <description><![CDATA[Renders the Parent Info meta box on the Edit Media page.]]></description>
3203
  <long-description><![CDATA[<p>Declared public because it is a callback function.</p>]]></long-description>
3204
+ <tag line="701" name="since" description="0.80"/>
3205
+ <tag line="701" name="param" description="current post" type="object" variable="$post">
3206
  <type by_reference="false">object</type>
3207
  </tag>
3208
+ <tag line="701" name="return" description="echoes the HTML markup for the meta box content" type="void">
3209
  <type by_reference="false">void</type>
3210
  </tag>
3211
  </docblock>
3212
+ <argument line="711">
3213
  <name>$post</name>
3214
  <default><![CDATA[]]></default>
3215
  <type/>
3216
  </argument>
3217
  </method>
3218
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="760" package="Media Library Assistant">
3219
  <name>mla_menu_order_handler</name>
3220
  <full_name>mla_menu_order_handler</full_name>
3221
+ <docblock line="750">
3222
  <description><![CDATA[Renders the Menu Order meta box on the Edit Media page.]]></description>
3223
  <long-description><![CDATA[<p>Declared public because it is a callback function.</p>]]></long-description>
3224
+ <tag line="750" name="since" description="0.80"/>
3225
+ <tag line="750" name="param" description="current post" type="object" variable="$post">
3226
  <type by_reference="false">object</type>
3227
  </tag>
3228
+ <tag line="750" name="return" description="echoes the HTML markup for the meta box content" type="void">
3229
  <type by_reference="false">void</type>
3230
  </tag>
3231
  </docblock>
3232
+ <argument line="760">
3233
  <name>$post</name>
3234
  <default><![CDATA[]]></default>
3235
  <type/>
3236
  </argument>
3237
  </method>
3238
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="777" package="Media Library Assistant">
3239
  <name>mla_image_metadata_handler</name>
3240
  <full_name>mla_image_metadata_handler</full_name>
3241
+ <docblock line="767">
3242
  <description><![CDATA[Renders the Image Metadata meta box on the Edit Media page.]]></description>
3243
  <long-description><![CDATA[<p>Declared public because it is a callback function.</p>]]></long-description>
3244
+ <tag line="767" name="since" description="0.80"/>
3245
+ <tag line="767" name="param" description="current post" type="object" variable="$post">
3246
  <type by_reference="false">object</type>
3247
  </tag>
3248
+ <tag line="767" name="return" description="echoes the HTML markup for the meta box content" type="void">
3249
  <type by_reference="false">void</type>
3250
  </tag>
3251
  </docblock>
3252
+ <argument line="777">
3253
  <name>$post</name>
3254
  <default><![CDATA[]]></default>
3255
  <type/>
3256
  </argument>
3257
  </method>
3258
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="802" package="Media Library Assistant">
3259
  <name>mla_featured_in_handler</name>
3260
  <full_name>mla_featured_in_handler</full_name>
3261
+ <docblock line="792">
3262
  <description><![CDATA[Renders the Featured in meta box on the Edit Media page.]]></description>
3263
  <long-description><![CDATA[<p>Declared public because it is a callback function.</p>]]></long-description>
3264
+ <tag line="792" name="since" description="0.80"/>
3265
+ <tag line="792" name="param" description="current post" type="object" variable="$post">
3266
  <type by_reference="false">object</type>
3267
  </tag>
3268
+ <tag line="792" name="return" description="echoes the HTML markup for the meta box content" type="void">
3269
  <type by_reference="false">void</type>
3270
  </tag>
3271
  </docblock>
3272
+ <argument line="802">
3273
  <name>$post</name>
3274
  <default><![CDATA[]]></default>
3275
  <type/>
3276
  </argument>
3277
  </method>
3278
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="837" package="Media Library Assistant">
3279
  <name>mla_inserted_in_handler</name>
3280
  <full_name>mla_inserted_in_handler</full_name>
3281
+ <docblock line="827">
3282
  <description><![CDATA[Renders the Inserted in meta box on the Edit Media page.]]></description>
3283
  <long-description><![CDATA[<p>Declared public because it is a callback function.</p>]]></long-description>
3284
+ <tag line="827" name="since" description="0.80"/>
3285
+ <tag line="827" name="param" description="current post" type="object" variable="$post">
3286
  <type by_reference="false">object</type>
3287
  </tag>
3288
+ <tag line="827" name="return" description="echoes the HTML markup for the meta box content" type="void">
3289
  <type by_reference="false">void</type>
3290
  </tag>
3291
  </docblock>
3292
+ <argument line="837">
3293
  <name>$post</name>
3294
  <default><![CDATA[]]></default>
3295
  <type/>
3296
  </argument>
3297
  </method>
3298
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="876" package="Media Library Assistant">
3299
  <name>mla_gallery_in_handler</name>
3300
  <full_name>mla_gallery_in_handler</full_name>
3301
+ <docblock line="866">
3302
  <description><![CDATA[Renders the Gallery in meta box on the Edit Media page.]]></description>
3303
  <long-description><![CDATA[<p>Declared public because it is a callback function.</p>]]></long-description>
3304
+ <tag line="866" name="since" description="0.80"/>
3305
+ <tag line="866" name="param" description="current post" type="object" variable="$post">
3306
  <type by_reference="false">object</type>
3307
  </tag>
3308
+ <tag line="866" name="return" description="echoes the HTML markup for the meta box content" type="void">
3309
  <type by_reference="false">void</type>
3310
  </tag>
3311
  </docblock>
3312
+ <argument line="876">
3313
  <name>$post</name>
3314
  <default><![CDATA[]]></default>
3315
  <type/>
3316
  </argument>
3317
  </method>
3318
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="911" package="Media Library Assistant">
3319
  <name>mla_mla_gallery_in_handler</name>
3320
  <full_name>mla_mla_gallery_in_handler</full_name>
3321
+ <docblock line="901">
3322
  <description><![CDATA[Renders the MLA Gallery in meta box on the Edit Media page.]]></description>
3323
  <long-description><![CDATA[<p>Declared public because it is a callback function.</p>]]></long-description>
3324
+ <tag line="901" name="since" description="0.80"/>
3325
+ <tag line="901" name="param" description="current post" type="object" variable="$post">
3326
  <type by_reference="false">object</type>
3327
  </tag>
3328
+ <tag line="901" name="return" description="echoes the HTML markup for the meta box content" type="void">
3329
  <type by_reference="false">void</type>
3330
  </tag>
3331
  </docblock>
3332
+ <argument line="911">
3333
  <name>$post</name>
3334
  <default><![CDATA[]]></default>
3335
  <type/>
3336
  </argument>
3337
  </method>
3338
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="946" package="Media Library Assistant">
3339
  <name>mla_edit_attachment_action</name>
3340
  <full_name>mla_edit_attachment_action</full_name>
3341
+ <docblock line="936">
3342
  <description><![CDATA[Saves updates from the Edit Media screen.]]></description>
3343
  <long-description><![CDATA[<p>Declared public because it is an action.</p>]]></long-description>
3344
+ <tag line="936" name="since" description="0.80"/>
3345
+ <tag line="936" name="param" description="ID of the current post" type="integer" variable="$post_ID">
3346
  <type by_reference="false">integer</type>
3347
  </tag>
3348
+ <tag line="936" name="return" description="" type="void">
3349
  <type by_reference="false">void</type>
3350
  </tag>
3351
  </docblock>
3352
+ <argument line="946">
3353
  <name>$post_ID</name>
3354
  <default><![CDATA[]]></default>
3355
  <type/>
3356
  </argument>
3357
  </method>
3358
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="972" package="Media Library Assistant">
3359
  <name>_mla_ajax_add_flat_term</name>
3360
  <full_name>_mla_ajax_add_flat_term</full_name>
3361
+ <docblock line="961">
3362
  <description><![CDATA[Add flat taxonomy term from "checklist" meta box on the Media Manager Modal Window]]></description>
3363
  <long-description><![CDATA[<p>Adapted from the WordPress post_categories_meta_box() in /wp-admin/includes/meta-boxes.php.</p>]]></long-description>
3364
+ <tag line="961" name="since" description="1.80"/>
3365
+ <tag line="961" name="param" description="The taxonomy name, from $_POST['action']" type="string" variable="$key">
3366
  <type by_reference="false">string</type>
3367
  </tag>
3368
+ <tag line="961" name="return" description="Sends JSON response with updated HTML for the checklist" type="void">
3369
  <type by_reference="false">void</type>
3370
  </tag>
3371
  </docblock>
3372
+ <argument line="972">
3373
  <name>$key</name>
3374
  <default><![CDATA[]]></default>
3375
  <type/>
3376
  </argument>
3377
  </method>
3378
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="1035" package="Media Library Assistant">
3379
  <name>mla_checklist_meta_box</name>
3380
  <full_name>mla_checklist_meta_box</full_name>
3381
+ <docblock line="1020">
3382
  <description><![CDATA[Display taxonomy "checklist" form fields]]></description>
3383
  <long-description><![CDATA[<p>Adapted from /wp-admin/includes/ajax-actions.php function _wp_ajax_add_hierarchical_term().
3384
  Includes the "? Search" area to filter the term checklist by entering part
3385
  or all of a word/phrase in the term label.
3386
  Output to the Media/Edit Media screen and to the Media Manager Modal Window.</p>]]></long-description>
3387
+ <tag line="1020" name="since" description="1.71"/>
3388
+ <tag line="1020" name="param" description="The current post" type="object" variable="$target_post">
3389
  <type by_reference="false">object</type>
3390
  </tag>
3391
+ <tag line="1020" name="param" description="The meta box parameters" type="array" variable="$box">
3392
  <type by_reference="false">array</type>
3393
  </tag>
3394
+ <tag line="1020" name="return" description="Echoes HTML for the form fields" type="void">
3395
  <type by_reference="false">void</type>
3396
  </tag>
3397
  </docblock>
3398
+ <argument line="1035">
3399
  <name>$target_post</name>
3400
  <default><![CDATA[]]></default>
3401
  <type/>
3402
  </argument>
3403
+ <argument line="1035">
3404
  <name>$box</name>
3405
  <default><![CDATA[]]></default>
3406
  <type/>
3407
  </argument>
3408
  </method>
3409
  </class>
3410
+ <class final="false" abstract="false" namespace="global" line="1194" package="Media Library Assistant">
3411
  <extends>\Walker_Category</extends>
3412
  <name>MLA_Checklist_Walker</name>
3413
  <full_name>\MLA_Checklist_Walker</full_name>
3414
+ <docblock line="1184">
3415
  <description><![CDATA[Class MLA (Media Library Assistant) Checklist Walker replaces term_id with slug in checklist output]]></description>
3416
  <long-description><![CDATA[<p>This walker is used to build the meta boxes for flat taxonomies, e.g., Tags, Att. Tags.
3417
  Class Walker_Category is defined in /wp-includes/category-template.php.
3418
  Class Walker is defined in /wp-includes/class-wp-walker.php.</p>]]></long-description>
3419
+ <tag line="1184" name="package" description="Media Library Assistant"/>
3420
+ <tag line="1184" name="since" description="1.80"/>
3421
  </docblock>
3422
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1208" package="Media Library Assistant">
3423
  <name>start_el</name>
3424
  <full_name>start_el</full_name>
3425
+ <docblock line="1195">
3426
  <description><![CDATA[Start the element output.]]></description>
3427
  <long-description><![CDATA[]]></long-description>
3428
+ <tag line="1195" name="see" description="\global\Walker::start_el()" refers="\global\Walker::start_el()"/>
3429
+ <tag line="1195" name="since" description="1.80"/>
3430
+ <tag line="1195" name="param" description="Passed by reference. Used to append additional content." type="string" variable="$output">
3431
  <type by_reference="false">string</type>
3432
  </tag>
3433
+ <tag line="1195" name="param" description="Taxonomy data object." type="object" variable="$taxonomy_object">
3434
  <type by_reference="false">object</type>
3435
  </tag>
3436
+ <tag line="1195" name="param" description="Depth of category in reference to parents. Default 0." type="int" variable="$depth">
3437
  <type by_reference="false">int</type>
3438
  </tag>
3439
+ <tag line="1195" name="param" description="An array of arguments. @see wp_list_categories()" type="array" variable="$args">
3440
  <type by_reference="false">array</type>
3441
  </tag>
3442
+ <tag line="1195" name="param" description="ID of the current category." type="int" variable="$id">
3443
  <type by_reference="false">int</type>
3444
  </tag>
3445
  </docblock>
3446
+ <argument line="1208">
3447
  <name>$output</name>
3448
  <default><![CDATA[]]></default>
3449
  <type/>
3450
  </argument>
3451
+ <argument line="1208">
3452
  <name>$taxonomy_object</name>
3453
  <default><![CDATA[]]></default>
3454
  <type/>
3455
  </argument>
3456
+ <argument line="1208">
3457
  <name>$depth</name>
3458
  <default><![CDATA[0]]></default>
3459
  <type/>
3460
  </argument>
3461
+ <argument line="1208">
3462
  <name>$args</name>
3463
  <default><![CDATA[array()]]></default>
3464
  <type/>
3465
  </argument>
3466
+ <argument line="1208">
3467
  <name>$id</name>
3468
  <default><![CDATA[0]]></default>
3469
  <type/>
3470
  </argument>
3471
  </method>
3472
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1241" package="Media Library Assistant">
3473
  <name>end_el</name>
3474
  <full_name>end_el</full_name>
3475
+ <docblock line="1229">
3476
  <description><![CDATA[Ends the element output, if needed.]]></description>
3477
  <long-description><![CDATA[]]></long-description>
3478
+ <tag line="1229" name="see" description="\global\Walker::end_el()" refers="\global\Walker::end_el()"/>
3479
+ <tag line="1229" name="since" description="1.80"/>
3480
+ <tag line="1229" name="param" description="Passed by reference. Used to append additional content." type="string" variable="$output">
3481
  <type by_reference="false">string</type>
3482
  </tag>
3483
+ <tag line="1229" name="param" description="The current term object." type="object" variable="$category">
3484
  <type by_reference="false">object</type>
3485
  </tag>
3486
+ <tag line="1229" name="param" description="Depth of the term in reference to parents. Default 0." type="int" variable="$depth">
3487
  <type by_reference="false">int</type>
3488
  </tag>
3489
+ <tag line="1229" name="param" description="An array of arguments. @see wp_terms_checklist()" type="array" variable="$args">
3490
  <type by_reference="false">array</type>
3491
  </tag>
3492
  </docblock>
3493
+ <argument line="1241">
3494
  <name>$output</name>
3495
  <default><![CDATA[]]></default>
3496
  <type/>
3497
  </argument>
3498
+ <argument line="1241">
3499
  <name>$category</name>
3500
  <default><![CDATA[]]></default>
3501
  <type/>
3502
  </argument>
3503
+ <argument line="1241">
3504
  <name>$depth</name>
3505
  <default><![CDATA[0]]></default>
3506
  <type/>
3507
  </argument>
3508
+ <argument line="1241">
3509
  <name>$args</name>
3510
  <default><![CDATA[array()]]></default>
3511
  <type/>
3513
  </method>
3514
  </class>
3515
  </file>
3516
+ <file path="includes\class-mla-image-editor.php" hash="a729b23d5e71d710a0afa7d4d091f904" package="Media Library Assistant">
3517
+ <docblock line="2">
3518
+ <description><![CDATA[MLA Imagick Image Editor]]></description>
3519
+ <long-description><![CDATA[]]></long-description>
3520
+ <tag line="2" name="package" description="Media Library Assistant"/>
3521
+ <tag line="2" name="since" description="2.10"/>
3522
+ </docblock>
3523
+ <class final="false" abstract="false" namespace="global" line="16" package="Media Library Assistant">
3524
+ <extends>\WP_Image_Editor_Imagick</extends>
3525
+ <name>MLA_Image_Editor</name>
3526
+ <full_name>\MLA_Image_Editor</full_name>
3527
+ <docblock line="9">
3528
+ <description><![CDATA[MLA Image Editor Class for Image Manipulation through Imagick PHP Module]]></description>
3529
+ <long-description><![CDATA[]]></long-description>
3530
+ <tag line="9" name="since" description="2.10"/>
3531
+ <tag line="9" name="package" description="Media Library Assistant"/>
3532
+ <tag line="9" name="uses" description="\global\WP_Image_Editor_Imagick" refers="\global\WP_Image_Editor_Imagick"/>
3533
+ </docblock>
3534
+ <method final="false" abstract="false" static="false" visibility="private" namespace="global" line="29" package="Media Library Assistant">
3535
+ <name>_ghostscript_convert</name>
3536
+ <full_name>_ghostscript_convert</full_name>
3537
+ <docblock line="17">
3538
+ <description><![CDATA[Direct Ghostscript file conversion]]></description>
3539
+ <long-description><![CDATA[]]></long-description>
3540
+ <tag line="17" name="since" description="2.10"/>
3541
+ <tag line="17" name="param" description="Input file, e.g., a PDF document" type="string" variable="$file">
3542
+ <type by_reference="false">string</type>
3543
+ </tag>
3544
+ <tag line="17" name="param" description="Page/frame within the file, zero-based" type="string" variable="$frame">
3545
+ <type by_reference="false">string</type>
3546
+ </tag>
3547
+ <tag line="17" name="param" description="Output file DPI. Default 72." type="string" variable="$resolution">
3548
+ <type by_reference="false">string</type>
3549
+ </tag>
3550
+ <tag line="17" name="param" description="Output MIME type; 'image/jpeg' or 'image/png'." type="string" variable="$output_type">
3551
+ <type by_reference="false">string</type>
3552
+ </tag>
3553
+ <tag line="17" name="return" description="true if conversion succeeds else false" type="boolean">
3554
+ <type by_reference="false">boolean</type>
3555
+ </tag>
3556
+ </docblock>
3557
+ <argument line="29">
3558
+ <name>$file</name>
3559
+ <default><![CDATA[]]></default>
3560
+ <type/>
3561
+ </argument>
3562
+ <argument line="29">
3563
+ <name>$frame</name>
3564
+ <default><![CDATA[]]></default>
3565
+ <type/>
3566
+ </argument>
3567
+ <argument line="29">
3568
+ <name>$resolution</name>
3569
+ <default><![CDATA[]]></default>
3570
+ <type/>
3571
+ </argument>
3572
+ <argument line="29">
3573
+ <name>$output_type</name>
3574
+ <default><![CDATA[]]></default>
3575
+ <type/>
3576
+ </argument>
3577
+ </method>
3578
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="136" package="Media Library Assistant">
3579
+ <name>load</name>
3580
+ <full_name>load</full_name>
3581
+ <docblock line="126">
3582
+ <description><![CDATA[Loads image from $this->file into new Imagick Object.]]></description>
3583
+ <long-description><![CDATA[<p>Sets image resolution and frame from $imagick_args before loading the file.</p>]]></long-description>
3584
+ <tag line="126" name="since" description="2.10"/>
3585
+ <tag line="126" name="access" description="protected"/>
3586
+ <tag line="126" name="return" description="True if loaded; WP_Error on failure." type="boolean|\WP_Error">
3587
+ <type by_reference="false">boolean</type>
3588
+ <type by_reference="false">\WP_Error</type>
3589
+ </tag>
3590
+ </docblock>
3591
+ </method>
3592
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="228" package="Media Library Assistant">
3593
+ <name>mla_setIteratorIndex</name>
3594
+ <full_name>mla_setIteratorIndex</full_name>
3595
+ <docblock line="218">
3596
+ <description><![CDATA[Set the iterator position]]></description>
3597
+ <long-description><![CDATA[]]></long-description>
3598
+ <tag line="218" name="since" description="2.10"/>
3599
+ <tag line="218" name="access" description="public"/>
3600
+ <tag line="218" name="param" description="frame/page number" type="integer" variable="$index">
3601
+ <type by_reference="false">integer</type>
3602
+ </tag>
3603
+ <tag line="218" name="return" description="success/failure" type="boolean">
3604
+ <type by_reference="false">boolean</type>
3605
+ </tag>
3606
+ </docblock>
3607
+ <argument line="228">
3608
+ <name>$index</name>
3609
+ <default><![CDATA[]]></default>
3610
+ <type/>
3611
+ </argument>
3612
+ </method>
3613
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="250" package="Media Library Assistant">
3614
+ <name>mla_prepare_image</name>
3615
+ <full_name>mla_prepare_image</full_name>
3616
+ <docblock line="236">
3617
+ <description><![CDATA[Prepare the image for output, scaling and flattening as required]]></description>
3618
+ <long-description><![CDATA[]]></long-description>
3619
+ <tag line="236" name="since" description="2.10"/>
3620
+ <tag line="236" name="access" description="public"/>
3621
+ <tag line="236" name="param" description="zero or new width" type="integer" variable="$width">
3622
+ <type by_reference="false">integer</type>
3623
+ </tag>
3624
+ <tag line="236" name="param" description="zero or new height" type="integer" variable="$height">
3625
+ <type by_reference="false">integer</type>
3626
+ </tag>
3627
+ <tag line="236" name="param" description="proportional fit (true) or exact fit (false)" type="boolean" variable="$best_fit">
3628
+ <type by_reference="false">boolean</type>
3629
+ </tag>
3630
+ <tag line="236" name="param" description="output MIME type" type="string" variable="$type">
3631
+ <type by_reference="false">string</type>
3632
+ </tag>
3633
+ <tag line="236" name="param" description="compression quality; 1 - 100" type="integer" variable="$quality">
3634
+ <type by_reference="false">integer</type>
3635
+ </tag>
3636
+ <tag line="236" name="return" description="" type="void">
3637
+ <type by_reference="false">void</type>
3638
+ </tag>
3639
+ </docblock>
3640
+ <argument line="250">
3641
+ <name>$width</name>
3642
+ <default><![CDATA[]]></default>
3643
+ <type/>
3644
+ </argument>
3645
+ <argument line="250">
3646
+ <name>$height</name>
3647
+ <default><![CDATA[]]></default>
3648
+ <type/>
3649
+ </argument>
3650
+ <argument line="250">
3651
+ <name>$best_fit</name>
3652
+ <default><![CDATA[]]></default>
3653
+ <type/>
3654
+ </argument>
3655
+ <argument line="250">
3656
+ <name>$type</name>
3657
+ <default><![CDATA[]]></default>
3658
+ <type/>
3659
+ </argument>
3660
+ <argument line="250">
3661
+ <name>$quality</name>
3662
+ <default><![CDATA[]]></default>
3663
+ <type/>
3664
+ </argument>
3665
+ </method>
3666
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="297" package="Media Library Assistant">
3667
+ <name>stream</name>
3668
+ <full_name>stream</full_name>
3669
+ <docblock line="288">
3670
+ <description><![CDATA[Streams current image to browser.]]></description>
3671
+ <long-description><![CDATA[]]></long-description>
3672
+ <tag line="288" name="since" description="2.10"/>
3673
+ <tag line="288" name="access" description="public"/>
3674
+ <tag line="288" name="param" description="" type="string" variable="$mime_type">
3675
+ <type by_reference="false">string</type>
3676
+ </tag>
3677
+ <tag line="288" name="return" description="" type="boolean|\WP_Error">
3678
+ <type by_reference="false">boolean</type>
3679
+ <type by_reference="false">\WP_Error</type>
3680
+ </tag>
3681
+ </docblock>
3682
+ <argument line="297">
3683
+ <name>$mime_type</name>
3684
+ <default><![CDATA[null]]></default>
3685
+ <type/>
3686
+ </argument>
3687
+ </method>
3688
+ </class>
3689
+ </file>
3690
+ <file path="includes\class-mla-list-table.php" hash="e38dc26aff2ffb7b116a38f9b0499545" package="Media Library Assistant">
3691
  <docblock line="2">
3692
  <description><![CDATA[Media Library Assistant extended List Table class]]></description>
3693
  <long-description><![CDATA[]]></long-description>
4126
  <name>_format_post_status</name>
4127
  <full_name>_format_post_status</full_name>
4128
  <docblock line="757">
4129
+ <description><![CDATA[Translate post_status 'future', 'pending', 'draft' and 'trash' to label]]></description>
4130
  <long-description><![CDATA[]]></long-description>
4131
  <tag line="757" name="since" description="2.01"/>
4132
  <tag line="757" name="param" description="post_status" type="string" variable="$post_status">
4142
  <type/>
4143
  </argument>
4144
  </method>
4145
+ <method final="false" abstract="false" static="false" visibility="protected" namespace="global" line="799" package="Media Library Assistant">
4146
  <name>_build_rollover_actions</name>
4147
  <full_name>_build_rollover_actions</full_name>
4148
+ <docblock line="788">
4149
  <description><![CDATA[Add rollover actions to exactly one of the following displayed columns:
4150
  'ID_parent', 'title_name', 'post_title', 'post_name']]></description>
4151
  <long-description><![CDATA[]]></long-description>
4152
+ <tag line="788" name="since" description="0.1"/>
4153
+ <tag line="788" name="param" description="A singular attachment (post) object" type="object" variable="$item">
4154
  <type by_reference="false">object</type>
4155
  </tag>
4156
+ <tag line="788" name="param" description="Current column name" type="string" variable="$column">
4157
  <type by_reference="false">string</type>
4158
  </tag>
4159
+ <tag line="788" name="return" description="Names and URLs of row-level actions" type="array">
4160
  <type by_reference="false">array</type>
4161
  </tag>
4162
  </docblock>
4163
+ <argument line="799">
4164
  <name>$item</name>
4165
  <default><![CDATA[]]></default>
4166
  <type/>
4167
  </argument>
4168
+ <argument line="799">
4169
  <name>$column</name>
4170
  <default><![CDATA[]]></default>
4171
  <type/>
4172
  </argument>
4173
  </method>
4174
+ <method final="false" abstract="false" static="false" visibility="protected" namespace="global" line="873" package="Media Library Assistant">
4175
  <name>_build_inline_data</name>
4176
  <full_name>_build_inline_data</full_name>
4177
+ <docblock line="864">
4178
  <description><![CDATA[Add hidden fields with the data for use in the inline editor]]></description>
4179
  <long-description><![CDATA[]]></long-description>
4180
+ <tag line="864" name="since" description="0.20"/>
4181
+ <tag line="864" name="param" description="A singular attachment (post) object" type="object" variable="$item">
4182
  <type by_reference="false">object</type>
4183
  </tag>
4184
+ <tag line="864" name="return" description="HTML &lt;div&gt; with row data" type="string">
4185
  <type by_reference="false">string</type>
4186
  </tag>
4187
  </docblock>
4188
+ <argument line="873">
4189
  <name>$item</name>
4190
  <default><![CDATA[]]></default>
4191
  <type/>
4192
  </argument>
4193
  </method>
4194
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="966" package="Media Library Assistant">
4195
  <name>column_ID_parent</name>
4196
  <full_name>column_ID_parent</full_name>
4197
+ <docblock line="958">
4198
  <description><![CDATA[Supply the content for a custom column]]></description>
4199
  <long-description><![CDATA[]]></long-description>
4200
+ <tag line="958" name="since" description="0.1"/>
4201
+ <tag line="958" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4202
  <type by_reference="false">array</type>
4203
  </tag>
4204
+ <tag line="958" name="return" description="HTML markup to be placed inside the column" type="string">
4205
  <type by_reference="false">string</type>
4206
  </tag>
4207
  </docblock>
4208
+ <argument line="966">
4209
  <name>$item</name>
4210
  <default><![CDATA[]]></default>
4211
  <type/>
4212
  </argument>
4213
  </method>
4214
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="999" package="Media Library Assistant">
4215
  <name>column_title_name</name>
4216
  <full_name>column_title_name</full_name>
4217
+ <docblock line="991">
4218
  <description><![CDATA[Supply the content for a custom column]]></description>
4219
  <long-description><![CDATA[]]></long-description>
4220
+ <tag line="991" name="since" description="0.1"/>
4221
+ <tag line="991" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4222
  <type by_reference="false">array</type>
4223
  </tag>
4224
+ <tag line="991" name="return" description="HTML markup to be placed inside the column" type="string">
4225
  <type by_reference="false">string</type>
4226
  </tag>
4227
  </docblock>
4228
+ <argument line="999">
4229
  <name>$item</name>
4230
  <default><![CDATA[]]></default>
4231
  <type/>
4232
  </argument>
4233
  </method>
4234
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1023" package="Media Library Assistant">
4235
  <name>column_post_title</name>
4236
  <full_name>column_post_title</full_name>
4237
+ <docblock line="1015">
4238
  <description><![CDATA[Supply the content for a custom column]]></description>
4239
  <long-description><![CDATA[]]></long-description>
4240
+ <tag line="1015" name="since" description="0.1"/>
4241
+ <tag line="1015" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4242
  <type by_reference="false">array</type>
4243
  </tag>
4244
+ <tag line="1015" name="return" description="HTML markup to be placed inside the column" type="string">
4245
  <type by_reference="false">string</type>
4246
  </tag>
4247
  </docblock>
4248
+ <argument line="1023">
4249
  <name>$item</name>
4250
  <default><![CDATA[]]></default>
4251
  <type/>
4252
  </argument>
4253
  </method>
4254
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1041" package="Media Library Assistant">
4255
  <name>column_post_name</name>
4256
  <full_name>column_post_name</full_name>
4257
+ <docblock line="1033">
4258
  <description><![CDATA[Supply the content for a custom column]]></description>
4259
  <long-description><![CDATA[]]></long-description>
4260
+ <tag line="1033" name="since" description="0.1"/>
4261
+ <tag line="1033" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4262
  <type by_reference="false">array</type>
4263
  </tag>
4264
+ <tag line="1033" name="return" description="HTML markup to be placed inside the column" type="string">
4265
  <type by_reference="false">string</type>
4266
  </tag>
4267
  </docblock>
4268
+ <argument line="1041">
4269
  <name>$item</name>
4270
  <default><![CDATA[]]></default>
4271
  <type/>
4272
  </argument>
4273
  </method>
4274
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1059" package="Media Library Assistant">
4275
  <name>column_parent</name>
4276
  <full_name>column_parent</full_name>
4277
+ <docblock line="1051">
4278
  <description><![CDATA[Supply the content for a custom column]]></description>
4279
  <long-description><![CDATA[]]></long-description>
4280
+ <tag line="1051" name="since" description="0.1"/>
4281
+ <tag line="1051" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4282
  <type by_reference="false">array</type>
4283
  </tag>
4284
+ <tag line="1051" name="return" description="HTML markup to be placed inside the column" type="string">
4285
  <type by_reference="false">string</type>
4286
  </tag>
4287
  </docblock>
4288
+ <argument line="1059">
4289
  <name>$item</name>
4290
  <default><![CDATA[]]></default>
4291
  <type/>
4292
  </argument>
4293
  </method>
4294
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1085" package="Media Library Assistant">
4295
  <name>column_menu_order</name>
4296
  <full_name>column_menu_order</full_name>
4297
+ <docblock line="1077">
4298
  <description><![CDATA[Supply the content for a custom column]]></description>
4299
  <long-description><![CDATA[]]></long-description>
4300
+ <tag line="1077" name="since" description="0.60"/>
4301
+ <tag line="1077" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4302
  <type by_reference="false">array</type>
4303
  </tag>
4304
+ <tag line="1077" name="return" description="HTML markup to be placed inside the column" type="string">
4305
  <type by_reference="false">string</type>
4306
  </tag>
4307
  </docblock>
4308
+ <argument line="1085">
4309
  <name>$item</name>
4310
  <default><![CDATA[]]></default>
4311
  <type/>
4312
  </argument>
4313
  </method>
4314
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1097" package="Media Library Assistant">
4315
  <name>column_featured</name>
4316
  <full_name>column_featured</full_name>
4317
+ <docblock line="1089">
4318
  <description><![CDATA[Supply the content for a custom column]]></description>
4319
  <long-description><![CDATA[]]></long-description>
4320
+ <tag line="1089" name="since" description="0.1"/>
4321
+ <tag line="1089" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4322
  <type by_reference="false">array</type>
4323
  </tag>
4324
+ <tag line="1089" name="return" description="HTML markup to be placed inside the column" type="string">
4325
  <type by_reference="false">string</type>
4326
  </tag>
4327
  </docblock>
4328
+ <argument line="1097">
4329
  <name>$item</name>
4330
  <default><![CDATA[]]></default>
4331
  <type/>
4332
  </argument>
4333
  </method>
4334
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1142" package="Media Library Assistant">
4335
  <name>column_inserted</name>
4336
  <full_name>column_inserted</full_name>
4337
+ <docblock line="1134">
4338
  <description><![CDATA[Supply the content for a custom column]]></description>
4339
  <long-description><![CDATA[]]></long-description>
4340
+ <tag line="1134" name="since" description="0.1"/>
4341
+ <tag line="1134" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4342
  <type by_reference="false">array</type>
4343
  </tag>
4344
+ <tag line="1134" name="return" description="HTML markup to be placed inside the column" type="string">
4345
  <type by_reference="false">string</type>
4346
  </tag>
4347
  </docblock>
4348
+ <argument line="1142">
4349
  <name>$item</name>
4350
  <default><![CDATA[]]></default>
4351
  <type/>
4352
  </argument>
4353
  </method>
4354
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1192" package="Media Library Assistant">
4355
  <name>column_galleries</name>
4356
  <full_name>column_galleries</full_name>
4357
+ <docblock line="1184">
4358
  <description><![CDATA[Supply the content for a custom column]]></description>
4359
  <long-description><![CDATA[]]></long-description>
4360
+ <tag line="1184" name="since" description="0.70"/>
4361
+ <tag line="1184" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4362
  <type by_reference="false">array</type>
4363
  </tag>
4364
+ <tag line="1184" name="return" description="HTML markup to be placed inside the column" type="string">
4365
  <type by_reference="false">string</type>
4366
  </tag>
4367
  </docblock>
4368
+ <argument line="1192">
4369
  <name>$item</name>
4370
  <default><![CDATA[]]></default>
4371
  <type/>
4372
  </argument>
4373
  </method>
4374
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1237" package="Media Library Assistant">
4375
  <name>column_mla_galleries</name>
4376
  <full_name>column_mla_galleries</full_name>
4377
+ <docblock line="1229">
4378
  <description><![CDATA[Supply the content for a custom column]]></description>
4379
  <long-description><![CDATA[]]></long-description>
4380
+ <tag line="1229" name="since" description="0.70"/>
4381
+ <tag line="1229" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4382
  <type by_reference="false">array</type>
4383
  </tag>
4384
+ <tag line="1229" name="return" description="HTML markup to be placed inside the column" type="string">
4385
  <type by_reference="false">string</type>
4386
  </tag>
4387
  </docblock>
4388
+ <argument line="1237">
4389
  <name>$item</name>
4390
  <default><![CDATA[]]></default>
4391
  <type/>
4392
  </argument>
4393
  </method>
4394
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1282" package="Media Library Assistant">
4395
  <name>column_alt_text</name>
4396
  <full_name>column_alt_text</full_name>
4397
+ <docblock line="1274">
4398
  <description><![CDATA[Supply the content for a custom column]]></description>
4399
  <long-description><![CDATA[]]></long-description>
4400
+ <tag line="1274" name="since" description="0.1"/>
4401
+ <tag line="1274" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4402
  <type by_reference="false">array</type>
4403
  </tag>
4404
+ <tag line="1274" name="return" description="HTML markup to be placed inside the column" type="string">
4405
  <type by_reference="false">string</type>
4406
  </tag>
4407
  </docblock>
4408
+ <argument line="1282">
4409
  <name>$item</name>
4410
  <default><![CDATA[]]></default>
4411
  <type/>
4412
  </argument>
4413
  </method>
4414
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1309" package="Media Library Assistant">
4415
  <name>column_caption</name>
4416
  <full_name>column_caption</full_name>
4417
+ <docblock line="1301">
4418
  <description><![CDATA[Supply the content for a custom column]]></description>
4419
  <long-description><![CDATA[]]></long-description>
4420
+ <tag line="1301" name="since" description="0.1"/>
4421
+ <tag line="1301" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4422
  <type by_reference="false">array</type>
4423
  </tag>
4424
+ <tag line="1301" name="return" description="HTML markup to be placed inside the column" type="string">
4425
  <type by_reference="false">string</type>
4426
  </tag>
4427
  </docblock>
4428
+ <argument line="1309">
4429
  <name>$item</name>
4430
  <default><![CDATA[]]></default>
4431
  <type/>
4432
  </argument>
4433
  </method>
4434
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1321" package="Media Library Assistant">
4435
  <name>column_description</name>
4436
  <full_name>column_description</full_name>
4437
+ <docblock line="1313">
4438
  <description><![CDATA[Supply the content for a custom column]]></description>
4439
  <long-description><![CDATA[]]></long-description>
4440
+ <tag line="1313" name="since" description="0.1"/>
4441
+ <tag line="1313" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4442
  <type by_reference="false">array</type>
4443
  </tag>
4444
+ <tag line="1313" name="return" description="HTML markup to be placed inside the column" type="string">
4445
  <type by_reference="false">string</type>
4446
  </tag>
4447
  </docblock>
4448
+ <argument line="1321">
4449
  <name>$item</name>
4450
  <default><![CDATA[]]></default>
4451
  <type/>
4452
  </argument>
4453
  </method>
4454
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1333" package="Media Library Assistant">
4455
  <name>column_post_mime_type</name>
4456
  <full_name>column_post_mime_type</full_name>
4457
+ <docblock line="1325">
4458
  <description><![CDATA[Supply the content for a custom column]]></description>
4459
  <long-description><![CDATA[]]></long-description>
4460
+ <tag line="1325" name="since" description="0.30"/>
4461
+ <tag line="1325" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4462
  <type by_reference="false">array</type>
4463
  </tag>
4464
+ <tag line="1325" name="return" description="HTML markup to be placed inside the column" type="string">
4465
  <type by_reference="false">string</type>
4466
  </tag>
4467
  </docblock>
4468
+ <argument line="1333">
4469
  <name>$item</name>
4470
  <default><![CDATA[]]></default>
4471
  <type/>
4472
  </argument>
4473
  </method>
4474
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1349" package="Media Library Assistant">
4475
  <name>column_file_url</name>
4476
  <full_name>column_file_url</full_name>
4477
+ <docblock line="1341">
4478
  <description><![CDATA[Supply the content for a custom column]]></description>
4479
  <long-description><![CDATA[]]></long-description>
4480
+ <tag line="1341" name="since" description="0.1"/>
4481
+ <tag line="1341" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4482
  <type by_reference="false">array</type>
4483
  </tag>
4484
+ <tag line="1341" name="return" description="HTML markup to be placed inside the column" type="string">
4485
  <type by_reference="false">string</type>
4486
  </tag>
4487
  </docblock>
4488
+ <argument line="1349">
4489
  <name>$item</name>
4490
  <default><![CDATA[]]></default>
4491
  <type/>
4492
  </argument>
4493
  </method>
4494
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1363" package="Media Library Assistant">
4495
  <name>column_base_file</name>
4496
  <full_name>column_base_file</full_name>
4497
+ <docblock line="1355">
4498
  <description><![CDATA[Supply the content for a custom column]]></description>
4499
  <long-description><![CDATA[]]></long-description>
4500
+ <tag line="1355" name="since" description="0.1"/>
4501
+ <tag line="1355" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4502
  <type by_reference="false">array</type>
4503
  </tag>
4504
+ <tag line="1355" name="return" description="HTML markup to be placed inside the column" type="string">
4505
  <type by_reference="false">string</type>
4506
  </tag>
4507
  </docblock>
4508
+ <argument line="1363">
4509
  <name>$item</name>
4510
  <default><![CDATA[]]></default>
4511
  <type/>
4512
  </argument>
4513
  </method>
4514
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1382" package="Media Library Assistant">
4515
  <name>column_date</name>
4516
  <full_name>column_date</full_name>
4517
+ <docblock line="1374">
4518
  <description><![CDATA[Supply the content for a custom column]]></description>
4519
  <long-description><![CDATA[]]></long-description>
4520
+ <tag line="1374" name="since" description="0.1"/>
4521
+ <tag line="1374" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4522
  <type by_reference="false">array</type>
4523
  </tag>
4524
+ <tag line="1374" name="return" description="HTML markup to be placed inside the column" type="string">
4525
  <type by_reference="false">string</type>
4526
  </tag>
4527
  </docblock>
4528
+ <argument line="1382">
4529
  <name>$item</name>
4530
  <default><![CDATA[]]></default>
4531
  <type/>
4532
  </argument>
4533
  </method>
4534
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1417" package="Media Library Assistant">
4535
  <name>column_modified</name>
4536
  <full_name>column_modified</full_name>
4537
+ <docblock line="1409">
4538
  <description><![CDATA[Supply the content for a custom column]]></description>
4539
  <long-description><![CDATA[]]></long-description>
4540
+ <tag line="1409" name="since" description="0.30"/>
4541
+ <tag line="1409" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4542
  <type by_reference="false">array</type>
4543
  </tag>
4544
+ <tag line="1409" name="return" description="HTML markup to be placed inside the column" type="string">
4545
  <type by_reference="false">string</type>
4546
  </tag>
4547
  </docblock>
4548
+ <argument line="1417">
4549
  <name>$item</name>
4550
  <default><![CDATA[]]></default>
4551
  <type/>
4552
  </argument>
4553
  </method>
4554
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1446" package="Media Library Assistant">
4555
  <name>column_author</name>
4556
  <full_name>column_author</full_name>
4557
+ <docblock line="1438">
4558
  <description><![CDATA[Supply the content for a custom column]]></description>
4559
  <long-description><![CDATA[]]></long-description>
4560
+ <tag line="1438" name="since" description="0.30"/>
4561
+ <tag line="1438" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4562
  <type by_reference="false">array</type>
4563
  </tag>
4564
+ <tag line="1438" name="return" description="HTML markup to be placed inside the column" type="string">
4565
  <type by_reference="false">string</type>
4566
  </tag>
4567
  </docblock>
4568
+ <argument line="1446">
4569
  <name>$item</name>
4570
  <default><![CDATA[]]></default>
4571
  <type/>
4572
  </argument>
4573
  </method>
4574
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1468" package="Media Library Assistant">
4575
  <name>column_attached_to</name>
4576
  <full_name>column_attached_to</full_name>
4577
+ <docblock line="1460">
4578
  <description><![CDATA[Supply the content for a custom column]]></description>
4579
  <long-description><![CDATA[]]></long-description>
4580
+ <tag line="1460" name="since" description="0.1"/>
4581
+ <tag line="1460" name="param" description="A singular attachment (post) object" type="array" variable="$item">
4582
  <type by_reference="false">array</type>
4583
  </tag>
4584
+ <tag line="1460" name="return" description="HTML markup to be placed inside the column" type="string">
4585
  <type by_reference="false">string</type>
4586
  </tag>
4587
  </docblock>
4588
+ <argument line="1468">
4589
  <name>$item</name>
4590
  <default><![CDATA[]]></default>
4591
  <type/>
4592
  </argument>
4593
  </method>
4594
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1505" package="Media Library Assistant">
4595
  <name>pagination</name>
4596
  <full_name>pagination</full_name>
4597
+ <docblock line="1497">
4598
  <description><![CDATA[Display the pagination, adding view, search and filter arguments]]></description>
4599
  <long-description><![CDATA[]]></long-description>
4600
+ <tag line="1497" name="since" description="1.42"/>
4601
+ <tag line="1497" name="param" description="'top' | 'bottom'" type="string" variable="$which">
4602
  <type by_reference="false">string</type>
4603
  </tag>
4604
+ <tag line="1497" name="return" description="" type="void">
4605
  <type by_reference="false">void</type>
4606
  </tag>
4607
  </docblock>
4608
+ <argument line="1505">
4609
  <name>$which</name>
4610
  <default><![CDATA[]]></default>
4611
  <type/>
4612
  </argument>
4613
  </method>
4614
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1519" package="Media Library Assistant">
4615
  <name>get_columns</name>
4616
  <full_name>get_columns</full_name>
4617
+ <docblock line="1512">
4618
  <description><![CDATA[This method dictates the table's columns and titles]]></description>
4619
  <long-description><![CDATA[]]></long-description>
4620
+ <tag line="1512" name="since" description="0.1"/>
4621
+ <tag line="1512" name="return" description="Column information: 'slugs'=&gt;'Visible Titles'" type="array">
4622
  <type by_reference="false">array</type>
4623
  </tag>
4624
  </docblock>
4625
  </method>
4626
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1531" package="Media Library Assistant">
4627
  <name>get_hidden_columns</name>
4628
  <full_name>get_hidden_columns</full_name>
4629
+ <docblock line="1523">
4630
  <description><![CDATA[Returns the list of currently hidden columns from a user option or
4631
  from default values if the option is not set]]></description>
4632
  <long-description><![CDATA[]]></long-description>
4633
+ <tag line="1523" name="since" description="0.1"/>
4634
+ <tag line="1523" name="return" description="Column information,e.g., array(0 =&gt; 'ID_parent, 1 =&gt; 'title_name')" type="array">
4635
  <type by_reference="false">array</type>
4636
  </tag>
4637
  </docblock>
4638
  </method>
4639
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1556" package="Media Library Assistant">
4640
  <name>get_sortable_columns</name>
4641
  <full_name>get_sortable_columns</full_name>
4642
+ <docblock line="1547">
4643
  <description><![CDATA[Returns an array where the key is the column that needs to be sortable
4644
  and the value is db column (or other criteria) to sort by.]]></description>
4645
  <long-description><![CDATA[]]></long-description>
4646
+ <tag line="1547" name="since" description="0.1"/>
4647
+ <tag line="1547" name="return" description="Sortable column information,e.g., 'slug' =&gt; array('data_value', (boolean) initial_descending )" type="array">
4648
  <type by_reference="false">array</type>
4649
  </tag>
4650
  </docblock>
4651
  </method>
4652
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1567" package="Media Library Assistant">
4653
  <name>print_column_headers</name>
4654
  <full_name>print_column_headers</full_name>
4655
+ <docblock line="1560">
4656
  <description><![CDATA[Print column headers, adding view, search and filter arguments]]></description>
4657
  <long-description><![CDATA[]]></long-description>
4658
+ <tag line="1560" name="since" description="1.42"/>
4659
+ <tag line="1560" name="param" description="Whether to set the id attribute or not" type="bool" variable="$with_id">
4660
  <type by_reference="false">bool</type>
4661
  </tag>
4662
  </docblock>
4663
+ <argument line="1567">
4664
  <name>$with_id</name>
4665
  <default><![CDATA[true]]></default>
4666
  <type/>
4667
  </argument>
4668
  </method>
4669
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="1584" package="Media Library Assistant">
4670
  <name>_get_view</name>
4671
  <full_name>_get_view</full_name>
4672
+ <docblock line="1574">
4673
  <description><![CDATA[Returns HTML markup for one view that can be used with this table]]></description>
4674
  <long-description><![CDATA[]]></long-description>
4675
+ <tag line="1574" name="since" description="1.40"/>
4676
+ <tag line="1574" name="param" description="View slug, key to MLA_POST_MIME_TYPES array" type="string" variable="$view_slug">
4677
  <type by_reference="false">string</type>
4678
  </tag>
4679
+ <tag line="1574" name="param" description="Slug for current view" type="string" variable="$current_view">
4680
  <type by_reference="false">string</type>
4681
  </tag>
4682
+ <tag line="1574" name="return" description="| false HTML for link to display the view, false if count = zero" type="string">
4683
  <type by_reference="false">string</type>
4684
  </tag>
4685
  </docblock>
4686
+ <argument line="1584">
4687
  <name>$view_slug</name>
4688
  <default><![CDATA[]]></default>
4689
  <type/>
4690
  </argument>
4691
+ <argument line="1584">
4692
  <name>$current_view</name>
4693
  <default><![CDATA[]]></default>
4694
  <type/>
4695
  </argument>
4696
  </method>
4697
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1711" package="Media Library Assistant">
4698
  <name>get_views</name>
4699
  <full_name>get_views</full_name>
4700
+ <docblock line="1703">
4701
  <description><![CDATA[Returns an associative array listing all the views that can be used with this table.]]></description>
4702
  <long-description><![CDATA[<p>These are listed across the top of the page and managed by WordPress.</p>]]></long-description>
4703
+ <tag line="1703" name="since" description="0.1"/>
4704
+ <tag line="1703" name="return" description="View information,e.g., array ( id =&gt; link )" type="array">
4705
  <type by_reference="false">array</type>
4706
  </tag>
4707
  </docblock>
4708
  </method>
4709
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1767" package="Media Library Assistant">
4710
  <name>get_bulk_actions</name>
4711
  <full_name>get_bulk_actions</full_name>
4712
+ <docblock line="1759">
4713
  <description><![CDATA[Get an associative array ( option_name => option_title ) with the list
4714
  of bulk actions available on this table.]]></description>
4715
  <long-description><![CDATA[]]></long-description>
4716
+ <tag line="1759" name="since" description="0.1"/>
4717
+ <tag line="1759" name="return" description="Contains all the bulk actions: 'slugs'=&gt;'Visible Titles'" type="array">
4718
  <type by_reference="false">array</type>
4719
  </tag>
4720
  </docblock>
4721
  </method>
4722
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1797" package="Media Library Assistant">
4723
  <name>extra_tablenav</name>
4724
  <full_name>extra_tablenav</full_name>
4725
+ <docblock line="1786">
4726
  <description><![CDATA[Extra controls to be displayed between bulk actions and pagination]]></description>
4727
  <long-description><![CDATA[<p>Modeled after class-wp-posts-list-table.php in wp-admin/includes.</p>]]></long-description>
4728
+ <tag line="1786" name="since" description="0.1"/>
4729
+ <tag line="1786" name="param" description="'top' or 'bottom', i.e., above or below the table rows" type="string" variable="$which">
4730
  <type by_reference="false">string</type>
4731
  </tag>
4732
+ <tag line="1786" name="return" description="Contains all the bulk actions: 'slugs'=&gt;'Visible Titles'" type="array">
4733
  <type by_reference="false">array</type>
4734
  </tag>
4735
  </docblock>
4736
+ <argument line="1797">
4737
  <name>$which</name>
4738
  <default><![CDATA[]]></default>
4739
  <type/>
4740
  </argument>
4741
  </method>
4742
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1837" package="Media Library Assistant">
4743
  <name>prepare_items</name>
4744
  <full_name>prepare_items</full_name>
4745
+ <docblock line="1825">
4746
  <description><![CDATA[Prepares the list of items for displaying]]></description>
4747
  <long-description><![CDATA[<p>This is where you prepare your data for display. This method will usually
4748
  be used to query the database, sort and filter the data, and generally
4749
  get it ready to be displayed. At a minimum, we should set $this->items and
4750
  $this->set_pagination_args().</p>]]></long-description>
4751
+ <tag line="1825" name="since" description="0.1"/>
4752
+ <tag line="1825" name="return" description="" type="void">
4753
  <type by_reference="false">void</type>
4754
  </tag>
4755
  </docblock>
4756
  </method>
4757
+ <method final="false" abstract="false" static="false" visibility="public" namespace="global" line="1892" package="Media Library Assistant">
4758
  <name>single_row</name>
4759
  <full_name>single_row</full_name>
4760
+ <docblock line="1883">
4761
  <description><![CDATA[Generates (echoes) content for a single row of the table]]></description>
4762
  <long-description><![CDATA[]]></long-description>
4763
+ <tag line="1883" name="since" description=".20"/>
4764
+ <tag line="1883" name="param" description="the current item" type="object" variable="$item">
4765
  <type by_reference="false">object</type>
4766
  </tag>
4767
+ <tag line="1883" name="return" description="Echoes the row HTML" type="void">
4768
  <type by_reference="false">void</type>
4769
  </tag>
4770
  </docblock>
4771
+ <argument line="1892">
4772
  <name>$item</name>
4773
  <default><![CDATA[]]></default>
4774
  <type/>
4776
  </method>
4777
  </class>
4778
  </file>
4779
+ <file path="includes\class-mla-main.php" hash="f23bd9bf23104e7160c2e6130650b245" package="Media Library Assistant">
4780
  <docblock line="2">
4781
  <description><![CDATA[Top-level functions for the Media Library Assistant]]></description>
4782
  <long-description><![CDATA[]]></long-description>
4786
  <include line="13" type="Require Once" package="Media Library Assistant">
4787
  <name/>
4788
  </include>
4789
+ <include line="1550" type="Require Once" package="Media Library Assistant">
4790
  <name/>
4791
  </include>
4792
  <class final="false" abstract="false" namespace="global" line="23" package="Media Library Assistant">
4803
  <constant namespace="global" line="32" package="Media Library Assistant">
4804
  <name>CURRENT_MLA_VERSION</name>
4805
  <full_name>CURRENT_MLA_VERSION</full_name>
4806
+ <value><![CDATA['2.02']]></value>
4807
  <docblock line="25">
4808
  <description><![CDATA[Current version number]]></description>
4809
  <long-description><![CDATA[]]></long-description>
4814
  </docblock>
4815
  </constant>
4816
  <constant namespace="global" line="41" package="Media Library Assistant">
4817
+ <name>MLA_DEVELOPMENT_VERSION</name>
4818
+ <full_name>MLA_DEVELOPMENT_VERSION</full_name>
4819
+ <value><![CDATA['20150418']]></value>
4820
+ <docblock line="34">
4821
+ <description><![CDATA[Current date for Development Version, empty for production versions]]></description>
4822
+ <long-description><![CDATA[]]></long-description>
4823
+ <tag line="34" name="since" description="2.10"/>
4824
+ <tag line="34" name="var" description="" type="string">
4825
+ <type by_reference="false">string</type>
4826
+ </tag>
4827
+ </docblock>
4828
+ </constant>
4829
+ <constant namespace="global" line="50" package="Media Library Assistant">
4830
  <name>STYLESHEET_SLUG</name>
4831
  <full_name>STYLESHEET_SLUG</full_name>
4832
  <value><![CDATA['mla-style']]></value>
4833
+ <docblock line="43">
4834
  <description><![CDATA[Slug for registering and enqueueing plugin style sheet]]></description>
4835
  <long-description><![CDATA[]]></long-description>
4836
+ <tag line="43" name="since" description="0.1"/>
4837
+ <tag line="43" name="var" description="" type="string">
4838
  <type by_reference="false">string</type>
4839
  </tag>
4840
  </docblock>
4841
  </constant>
4842
+ <constant namespace="global" line="59" package="Media Library Assistant">
4843
  <name>JAVASCRIPT_SINGLE_EDIT_SLUG</name>
4844
  <full_name>JAVASCRIPT_SINGLE_EDIT_SLUG</full_name>
4845
  <value><![CDATA['mla-single-edit-scripts']]></value>
4846
+ <docblock line="52">
4847
  <description><![CDATA[Slug for localizing and enqueueing JavaScript - edit single item page]]></description>
4848
  <long-description><![CDATA[]]></long-description>
4849
+ <tag line="52" name="since" description="0.1"/>
4850
+ <tag line="52" name="var" description="" type="string">
4851
  <type by_reference="false">string</type>
4852
  </tag>
4853
  </docblock>
4854
  </constant>
4855
+ <constant namespace="global" line="68" package="Media Library Assistant">
4856
  <name>JAVASCRIPT_SINGLE_EDIT_OBJECT</name>
4857
  <full_name>JAVASCRIPT_SINGLE_EDIT_OBJECT</full_name>
4858
  <value><![CDATA['mla_single_edit_vars']]></value>
4859
+ <docblock line="61">
4860
  <description><![CDATA[Object name for localizing JavaScript - edit single item page]]></description>
4861
  <long-description><![CDATA[]]></long-description>
4862
+ <tag line="61" name="since" description="0.1"/>
4863
+ <tag line="61" name="var" description="" type="string">
4864
  <type by_reference="false">string</type>
4865
  </tag>
4866
  </docblock>
4867
  </constant>
4868
+ <constant namespace="global" line="77" package="Media Library Assistant">
4869
  <name>JAVASCRIPT_INLINE_EDIT_SLUG</name>
4870
  <full_name>JAVASCRIPT_INLINE_EDIT_SLUG</full_name>
4871
  <value><![CDATA['mla-inline-edit-scripts']]></value>
4872
+ <docblock line="70">
4873
  <description><![CDATA[Slug for localizing and enqueueing JavaScript - MLA List Table]]></description>
4874
  <long-description><![CDATA[]]></long-description>
4875
+ <tag line="70" name="since" description="0.20"/>
4876
+ <tag line="70" name="var" description="" type="string">
4877
  <type by_reference="false">string</type>
4878
  </tag>
4879
  </docblock>
4880
  </constant>
4881
+ <constant namespace="global" line="86" package="Media Library Assistant">
4882
  <name>JAVASCRIPT_INLINE_EDIT_OBJECT</name>
4883
  <full_name>JAVASCRIPT_INLINE_EDIT_OBJECT</full_name>
4884
  <value><![CDATA['mla_inline_edit_vars']]></value>
4885
+ <docblock line="79">
4886
  <description><![CDATA[Object name for localizing JavaScript - MLA List Table]]></description>
4887
  <long-description><![CDATA[]]></long-description>
4888
+ <tag line="79" name="since" description="0.20"/>
4889
+ <tag line="79" name="var" description="" type="string">
4890
  <type by_reference="false">string</type>
4891
  </tag>
4892
  </docblock>
4893
  </constant>
4894
+ <constant namespace="global" line="95" package="Media Library Assistant">
4895
  <name>ADMIN_PAGE_SLUG</name>
4896
  <full_name>ADMIN_PAGE_SLUG</full_name>
4897
  <value><![CDATA['mla-menu']]></value>
4898
+ <docblock line="88">
4899
  <description><![CDATA[Slug for adding plugin submenu]]></description>
4900
  <long-description><![CDATA[]]></long-description>
4901
+ <tag line="88" name="since" description="0.1"/>
4902
+ <tag line="88" name="var" description="" type="string">
4903
  <type by_reference="false">string</type>
4904
  </tag>
4905
  </docblock>
4906
  </constant>
4907
+ <constant namespace="global" line="104" package="Media Library Assistant">
4908
  <name>MLA_ADMIN_NONCE</name>
4909
  <full_name>MLA_ADMIN_NONCE</full_name>
4910
  <value><![CDATA['mla_admin']]></value>
4911
+ <docblock line="97">
4912
  <description><![CDATA[Action name; uniquely identifies the nonce]]></description>
4913
  <long-description><![CDATA[]]></long-description>
4914
+ <tag line="97" name="since" description="0.1"/>
4915
+ <tag line="97" name="var" description="" type="string">
4916
  <type by_reference="false">string</type>
4917
  </tag>
4918
  </docblock>
4919
  </constant>
4920
+ <constant namespace="global" line="113" package="Media Library Assistant">
4921
  <name>MLA_ADMIN_SINGLE_DELETE</name>
4922
  <full_name>MLA_ADMIN_SINGLE_DELETE</full_name>
4923
  <value><![CDATA['single_item_delete']]></value>
4924
+ <docblock line="106">
4925
  <description><![CDATA[mla_admin_action value for permanently deleting a single item]]></description>
4926
  <long-description><![CDATA[]]></long-description>
4927
+ <tag line="106" name="since" description="0.1"/>
4928
+ <tag line="106" name="var" description="" type="string">
4929
  <type by_reference="false">string</type>
4930
  </tag>
4931
  </docblock>
4932
  </constant>
4933
+ <constant namespace="global" line="122" package="Media Library Assistant">
4934
  <name>MLA_ADMIN_SINGLE_EDIT_DISPLAY</name>
4935
  <full_name>MLA_ADMIN_SINGLE_EDIT_DISPLAY</full_name>
4936
  <value><![CDATA['single_item_edit_display']]></value>
4937
+ <docblock line="115">
4938
  <description><![CDATA[mla_admin_action value for displaying a single item]]></description>
4939
  <long-description><![CDATA[]]></long-description>
4940
+ <tag line="115" name="since" description="0.1"/>
4941
+ <tag line="115" name="var" description="" type="string">
4942
  <type by_reference="false">string</type>
4943
  </tag>
4944
  </docblock>
4945
  </constant>
4946
+ <constant namespace="global" line="131" package="Media Library Assistant">
4947
  <name>MLA_ADMIN_SINGLE_EDIT_UPDATE</name>
4948
  <full_name>MLA_ADMIN_SINGLE_EDIT_UPDATE</full_name>
4949
  <value><![CDATA['single_item_edit_update']]></value>
4950
+ <docblock line="124">
4951
  <description><![CDATA[mla_admin_action value for updating a single item]]></description>
4952
  <long-description><![CDATA[]]></long-description>
4953
+ <tag line="124" name="since" description="0.1"/>
4954
+ <tag line="124" name="var" description="" type="string">
4955
  <type by_reference="false">string</type>
4956
  </tag>
4957
  </docblock>
4958
  </constant>
4959
+ <constant namespace="global" line="140" package="Media Library Assistant">
4960
  <name>MLA_ADMIN_SINGLE_RESTORE</name>
4961
  <full_name>MLA_ADMIN_SINGLE_RESTORE</full_name>
4962
  <value><![CDATA['single_item_restore']]></value>
4963
+ <docblock line="133">
4964
  <description><![CDATA[mla_admin_action value for restoring a single item from the trash]]></description>
4965
  <long-description><![CDATA[]]></long-description>
4966
+ <tag line="133" name="since" description="0.1"/>
4967
+ <tag line="133" name="var" description="" type="string">
4968
  <type by_reference="false">string</type>
4969
  </tag>
4970
  </docblock>
4971
  </constant>
4972
+ <constant namespace="global" line="149" package="Media Library Assistant">
4973
  <name>MLA_ADMIN_SINGLE_TRASH</name>
4974
  <full_name>MLA_ADMIN_SINGLE_TRASH</full_name>
4975
  <value><![CDATA['single_item_trash']]></value>
4976
+ <docblock line="142">
4977
  <description><![CDATA[mla_admin_action value for moving a single item to the trash]]></description>
4978
  <long-description><![CDATA[]]></long-description>
4979
+ <tag line="142" name="since" description="0.1"/>
4980
+ <tag line="142" name="var" description="" type="string">
4981
  <type by_reference="false">string</type>
4982
  </tag>
4983
  </docblock>
4984
  </constant>
4985
+ <constant namespace="global" line="158" package="Media Library Assistant">
4986
  <name>MLA_ADMIN_SINGLE_CUSTOM_FIELD_MAP</name>
4987
  <full_name>MLA_ADMIN_SINGLE_CUSTOM_FIELD_MAP</full_name>
4988
  <value><![CDATA['single_item_custom_field_map']]></value>
4989
+ <docblock line="151">
4990
  <description><![CDATA[mla_admin_action value for mapping Custom Field metadata]]></description>
4991
  <long-description><![CDATA[]]></long-description>
4992
+ <tag line="151" name="since" description="1.10"/>
4993
+ <tag line="151" name="var" description="" type="string">
4994
  <type by_reference="false">string</type>
4995
  </tag>
4996
  </docblock>
4997
  </constant>
4998
+ <constant namespace="global" line="167" package="Media Library Assistant">
4999
  <name>MLA_ADMIN_SINGLE_MAP</name>
5000
  <full_name>MLA_ADMIN_SINGLE_MAP</full_name>
5001
  <value><![CDATA['single_item_map']]></value>
5002
+ <docblock line="160">
5003
  <description><![CDATA[mla_admin_action value for mapping IPTC/EXIF metadata]]></description>
5004
  <long-description><![CDATA[]]></long-description>
5005
+ <tag line="160" name="since" description="1.00"/>
5006
+ <tag line="160" name="var" description="" type="string">
5007
  <type by_reference="false">string</type>
5008
  </tag>
5009
  </docblock>
5010
  </constant>
5011
+ <constant namespace="global" line="176" package="Media Library Assistant">
5012
  <name>MLA_ADMIN_SET_PARENT</name>
5013
  <full_name>MLA_ADMIN_SET_PARENT</full_name>
5014
  <value><![CDATA['set_parent']]></value>
5015
+ <docblock line="169">
5016
  <description><![CDATA[mla_admin_action value for setting an item's parent object]]></description>
5017
  <long-description><![CDATA[]]></long-description>
5018
+ <tag line="169" name="since" description="1.82"/>
5019
+ <tag line="169" name="var" description="" type="string">
5020
  <type by_reference="false">string</type>
5021
  </tag>
5022
  </docblock>
5023
  </constant>
5024
+ <constant namespace="global" line="185" package="Media Library Assistant">
5025
  <name>MLA_ADMIN_TERMS_SEARCH</name>
5026
  <full_name>MLA_ADMIN_TERMS_SEARCH</full_name>
5027
  <value><![CDATA['terms_search']]></value>
5028
+ <docblock line="178">
5029
  <description><![CDATA[mla_admin_action value for searching taxonomy terms]]></description>
5030
  <long-description><![CDATA[]]></long-description>
5031
+ <tag line="178" name="since" description="1.90"/>
5032
+ <tag line="178" name="var" description="" type="string">
5033
  <type by_reference="false">string</type>
5034
  </tag>
5035
  </docblock>
5036
  </constant>
5037
+ <property final="false" static="true" visibility="private" line="194" namespace="global" package="Media Library Assistant">
5038
  <name>$page_hooks</name>
5039
  <default><![CDATA[array()]]></default>
5040
+ <docblock line="187">
5041
  <description><![CDATA[Holds screen ids to match help text to corresponding screen]]></description>
5042
  <long-description><![CDATA[]]></long-description>
5043
+ <tag line="187" name="since" description="0.1"/>
5044
+ <tag line="187" name="var" description="" type="array">
5045
  <type by_reference="false">array</type>
5046
  </tag>
5047
  </docblock>
5048
  </property>
5049
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="207" package="Media Library Assistant">
5050
  <name>initialize</name>
5051
  <full_name>initialize</full_name>
5052
+ <docblock line="196">
5053
  <description><![CDATA[Initialization function, similar to __construct()]]></description>
5054
  <long-description><![CDATA[<p>This function contains add_action and add_filter calls
5055
  to set up the Ajax handlers, enqueue JavaScript and CSS files, and
5056
  set up the Assistant submenu.</p>]]></long-description>
5057
+ <tag line="196" name="since" description="0.1"/>
5058
+ <tag line="196" name="return" description="" type="void">
5059
  <type by_reference="false">void</type>
5060
  </tag>
5061
  </docblock>
5062
  </method>
5063
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="226" package="Media Library Assistant">
5064
  <name>mla_plugins_loaded_action</name>
5065
  <full_name>mla_plugins_loaded_action</full_name>
5066
+ <docblock line="215">
5067
  <description><![CDATA[Load a plugin text domain]]></description>
5068
  <long-description><![CDATA[<p>The "add_action" for this function is in mla-plugin-loader.php, because the "initialize"
5069
  function above doesn't run in time.
5070
  Defined as public because it's an action.</p>]]></long-description>
5071
+ <tag line="215" name="since" description="1.60"/>
5072
+ <tag line="215" name="return" description="" type="void">
5073
  <type by_reference="false">void</type>
5074
  </tag>
5075
  </docblock>
5076
  </method>
5077
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="256" package="Media Library Assistant">
5078
  <name>mla_admin_init_action</name>
5079
  <full_name>mla_admin_init_action</full_name>
5080
+ <docblock line="249">
5081
  <description><![CDATA[Load the plugin's Ajax handler or process Edit Media update actions]]></description>
5082
  <long-description><![CDATA[]]></long-description>
5083
+ <tag line="249" name="since" description="0.20"/>
5084
+ <tag line="249" name="return" description="" type="void">
5085
  <type by_reference="false">void</type>
5086
  </tag>
5087
  </docblock>
5088
  </method>
5089
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="321" package="Media Library Assistant">
5090
  <name>mla_admin_enqueue_scripts_action</name>
5091
  <full_name>mla_admin_enqueue_scripts_action</full_name>
5092
+ <docblock line="312">
5093
  <description><![CDATA[Load the plugin's Style Sheet and Javascript files]]></description>
5094
  <long-description><![CDATA[]]></long-description>
5095
+ <tag line="312" name="since" description="0.1"/>
5096
+ <tag line="312" name="param" description="Name of the page being loaded" type="string" variable="$page_hook">
5097
  <type by_reference="false">string</type>
5098
  </tag>
5099
+ <tag line="312" name="return" description="" type="void">
5100
  <type by_reference="false">void</type>
5101
  </tag>
5102
  </docblock>
5103
+ <argument line="321">
5104
  <name>$page_hook</name>
5105
  <default><![CDATA[]]></default>
5106
  <type/>
5107
  </argument>
5108
  </method>
5109
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="410" package="Media Library Assistant">
5110
  <name>mla_admin_menu_action</name>
5111
  <full_name>mla_admin_menu_action</full_name>
5112
+ <docblock line="395">
5113
  <description><![CDATA[Add the submenu pages]]></description>
5114
  <long-description><![CDATA[<p>Add a submenu page in the "Media" section,
5115
  add settings page in the "Settings" section.
5118
  <p>For WordPress versions before 3.5,
5119
  add submenu page(s) for attachment taxonomies,
5120
  add filter to clean up taxonomy submenu labels.</p>]]></long-description>
5121
+ <tag line="395" name="since" description="0.1"/>
5122
+ <tag line="395" name="return" description="" type="void">
5123
  <type by_reference="false">void</type>
5124
  </tag>
5125
  </docblock>
5126
  </method>
5127
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="487" package="Media Library Assistant">
5128
  <name>mla_load_media_action</name>
5129
  <full_name>mla_load_media_action</full_name>
5130
+ <docblock line="480">
5131
  <description><![CDATA[Redirect to Media/Assistant if Media/Library is hidden]]></description>
5132
  <long-description><![CDATA[]]></long-description>
5133
+ <tag line="480" name="since" description="1.60"/>
5134
+ <tag line="480" name="return" description="" type="void">
5135
  <type by_reference="false">void</type>
5136
  </tag>
5137
  </docblock>
5138
  </method>
5139
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="515" package="Media Library Assistant">
5140
  <name>mla_add_menu_options</name>
5141
  <full_name>mla_add_menu_options</full_name>
5142
+ <docblock line="508">
5143
  <description><![CDATA[Add the "XX Entries per page" filter to the Screen Options tab]]></description>
5144
  <long-description><![CDATA[]]></long-description>
5145
+ <tag line="508" name="since" description="0.1"/>
5146
+ <tag line="508" name="return" description="" type="void">
5147
  <type by_reference="false">void</type>
5148
  </tag>
5149
  </docblock>
5150
  </method>
5151
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="534" package="Media Library Assistant">
5152
  <name>mla_add_help_tab</name>
5153
  <full_name>mla_add_help_tab</full_name>
5154
+ <docblock line="527">
5155
  <description><![CDATA[Add contextual help tabs to all the MLA pages]]></description>
5156
  <long-description><![CDATA[]]></long-description>
5157
+ <tag line="527" name="since" description="0.1"/>
5158
+ <tag line="527" name="return" description="" type="void">
5159
  <type by_reference="false">void</type>
5160
  </tag>
5161
  </docblock>
5162
  </method>
5163
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="644" package="Media Library Assistant">
5164
  <name>mla_screen_options_show_screen_filter</name>
5165
  <full_name>mla_screen_options_show_screen_filter</full_name>
5166
+ <docblock line="634">
5167
  <description><![CDATA[Only show screen options on the table-list screen]]></description>
5168
  <long-description><![CDATA[]]></long-description>
5169
+ <tag line="634" name="since" description="0.1"/>
5170
+ <tag line="634" name="param" description="True to display &quot;Screen Options&quot;, false to suppress them" type="boolean" variable="$show_screen">
5171
  <type by_reference="false">boolean</type>
5172
  </tag>
5173
+ <tag line="634" name="param" description="Name of the page being loaded" type="string" variable="$this_screen">
5174
  <type by_reference="false">string</type>
5175
  </tag>
5176
+ <tag line="634" name="return" description="True to display &quot;Screen Options&quot;, false to suppress them" type="boolean">
5177
  <type by_reference="false">boolean</type>
5178
  </tag>
5179
  </docblock>
5180
+ <argument line="644">
5181
  <name>$show_screen</name>
5182
  <default><![CDATA[]]></default>
5183
  <type/>
5184
  </argument>
5185
+ <argument line="644">
5186
  <name>$this_screen</name>
5187
  <default><![CDATA[]]></default>
5188
  <type/>
5189
  </argument>
5190
  </method>
5191
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="663" package="Media Library Assistant">
5192
  <name>mla_set_screen_option_filter</name>
5193
  <full_name>mla_set_screen_option_filter</full_name>
5194
+ <docblock line="652">
5195
  <description><![CDATA[Save the "Entries per page" option set by this user]]></description>
5196
  <long-description><![CDATA[]]></long-description>
5197
+ <tag line="652" name="since" description="0.1"/>
5198
+ <tag line="652" name="param" description="false or value returned by previous filter" type="mixed" variable="$status">
5199
  <type by_reference="false">mixed</type>
5200
  </tag>
5201
+ <tag line="652" name="param" description="Name of the option being changed" type="string" variable="$option">
5202
  <type by_reference="false">string</type>
5203
  </tag>
5204
+ <tag line="652" name="param" description="New value of the option" type="string" variable="$value">
5205
  <type by_reference="false">string</type>
5206
  </tag>
5207
+ <tag line="652" name="return" description="New value if this is our option, otherwise nothing" type="string|void">
5208
  <type by_reference="false">string</type>
5209
  <type by_reference="false">void</type>
5210
  </tag>
5211
  </docblock>
5212
+ <argument line="663">
5213
  <name>$status</name>
5214
  <default><![CDATA[]]></default>
5215
  <type/>
5216
  </argument>
5217
+ <argument line="663">
5218
  <name>$option</name>
5219
  <default><![CDATA[]]></default>
5220
  <type/>
5221
  </argument>
5222
+ <argument line="663">
5223
  <name>$value</name>
5224
  <default><![CDATA[]]></default>
5225
  <type/>
5226
  </argument>
5227
  </method>
5228
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="682" package="Media Library Assistant">
5229
  <name>mla_edit_tax_redirect</name>
5230
  <full_name>mla_edit_tax_redirect</full_name>
5231
+ <docblock line="671">
5232
  <description><![CDATA[Redirect to the Edit Tags/Categories page]]></description>
5233
  <long-description><![CDATA[<p>The custom taxonomy add/edit submenu entries go to "upload.php" by default.
5234
  This filter is the only way to redirect them to the correct WordPress page.
5235
  The filter is not required for WordPress 3.5 and later.</p>]]></long-description>
5236
+ <tag line="671" name="since" description="0.1"/>
5237
+ <tag line="671" name="return" description="" type="void">
5238
  <type by_reference="false">void</type>
5239
  </tag>
5240
  </docblock>
5241
  </method>
5242
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="715" package="Media Library Assistant">
5243
  <name>mla_parent_file_filter</name>
5244
  <full_name>mla_parent_file_filter</full_name>
5245
+ <docblock line="699">
5246
  <description><![CDATA[Cleanup menus for Edit Tags/Categories page]]></description>
5247
  <long-description><![CDATA[<p>For WordPress before 3.5, the submenu entries for custom taxonomies
5248
  under the "Media" menu are not set up correctly by WordPress, so this
5250
  page for editing/adding taxonomy terms.
5251
  For WordPress 3.5 and later, the function fixes the submenu bolding when
5252
  going to the Edit Media screen.</p>]]></long-description>
5253
+ <tag line="699" name="since" description="0.1"/>
5254
+ <tag line="699" name="param" description="The top-level menu page" type="array" variable="$parent_file">
5255
  <type by_reference="false">array</type>
5256
  </tag>
5257
+ <tag line="699" name="return" description="The updated top-level menu page" type="string">
5258
  <type by_reference="false">string</type>
5259
  </tag>
5260
  </docblock>
5261
+ <argument line="715">
5262
  <name>$parent_file</name>
5263
  <default><![CDATA[]]></default>
5264
  <type/>
5265
  </argument>
5266
  </method>
5267
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="777" package="Media Library Assistant">
5268
  <name>_process_mla_download_file</name>
5269
  <full_name>_process_mla_download_file</full_name>
5270
+ <docblock line="768">
5271
  <description><![CDATA[Process secure file download]]></description>
5272
  <long-description><![CDATA[<p>Requires _wpnonce, mla_download_file and mla_download_type in $_REQUEST; mla_download_disposition is optional.</p>]]></long-description>
5273
+ <tag line="768" name="since" description="2.00"/>
5274
+ <tag line="768" name="return" description="echos file contents and calls exit();" type="void">
5275
  <type by_reference="false">void</type>
5276
  </tag>
5277
  </docblock>
5278
  </method>
5279
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="831" package="Media Library Assistant">
5280
  <name>_process_bulk_value</name>
5281
  <full_name>_process_bulk_value</full_name>
5282
+ <docblock line="821">
5283
  <description><![CDATA[Process bulk edit area fields, which may contain a Content Template]]></description>
5284
  <long-description><![CDATA[]]></long-description>
5285
+ <tag line="821" name="since" description="1.80"/>
5286
+ <tag line="821" name="param" description="Current post ID" type="integer" variable="$post_id">
5287
  <type by_reference="false">integer</type>
5288
  </tag>
5289
+ <tag line="821" name="param" description="Field value as entered" type="string" variable="$bulk_value">
5290
  <type by_reference="false">string</type>
5291
  </tag>
5292
+ <tag line="821" name="return" description="Empty, or new value for the field" type="string">
5293
  <type by_reference="false">string</type>
5294
  </tag>
5295
  </docblock>
5296
+ <argument line="831">
5297
  <name>$post_id</name>
5298
  <default><![CDATA[]]></default>
5299
  <type/>
5300
  </argument>
5301
+ <argument line="831">
5302
  <name>$bulk_value</name>
5303
  <default><![CDATA[]]></default>
5304
  <type/>
5305
  </argument>
5306
  </method>
5307
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="866" package="Media Library Assistant">
5308
  <name>mla_process_bulk_action</name>
5309
  <full_name>mla_process_bulk_action</full_name>
5310
+ <docblock line="856">
5311
  <description><![CDATA[Process bulk action for one or more attachments]]></description>
5312
  <long-description><![CDATA[]]></long-description>
5313
+ <tag line="856" name="since" description="2.00"/>
5314
+ <tag line="856" name="param" description="Bulk action slug: delete, edit, restore, trash, custom action" type="string" variable="$bulk_action">
5315
  <type by_reference="false">string</type>
5316
  </tag>
5317
+ <tag line="856" name="param" description="Form elements, e.g., from $_REQUEST" type="array" variable="$request">
5318
  <type by_reference="false">array</type>
5319
  </tag>
5320
+ <tag line="856" name="return" description="messages and page content: ( 'message', 'body', 'unchanged', 'success', 'failure', 'item_results' )" type="array">
5321
  <type by_reference="false">array</type>
5322
  </tag>
5323
  </docblock>
5324
+ <argument line="866">
5325
  <name>$bulk_action</name>
5326
  <default><![CDATA[]]></default>
5327
  <type/>
5328
  </argument>
5329
+ <argument line="866">
5330
  <name>$request</name>
5331
  <default><![CDATA[NULL]]></default>
5332
  <type/>
5333
  </argument>
5334
  </method>
5335
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="1238" package="Media Library Assistant">
5336
  <name>mla_render_admin_page</name>
5337
  <full_name>mla_render_admin_page</full_name>
5338
+ <docblock line="1231">
5339
  <description><![CDATA[Render the "Assistant" subpage in the Media section, using the list_table package]]></description>
5340
  <long-description><![CDATA[]]></long-description>
5341
+ <tag line="1231" name="since" description="0.1"/>
5342
+ <tag line="1231" name="return" description="" type="void">
5343
  <type by_reference="false">void</type>
5344
  </tag>
5345
  </docblock>
5346
  </method>
5347
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="1603" package="Media Library Assistant">
5348
  <name>mla_find_posts_ajax_action</name>
5349
  <full_name>mla_find_posts_ajax_action</full_name>
5350
+ <docblock line="1593">
5351
  <description><![CDATA[Ajax handler to fetch candidates for the "Set Parent" popup window]]></description>
5352
  <long-description><![CDATA[<p>Adapted from wp_ajax_find_posts in /wp-admin/includes/ajax-actions.php.
5353
  Adds filters for post type and pagination.</p>]]></long-description>
5354
+ <tag line="1593" name="since" description="1.90"/>
5355
+ <tag line="1593" name="return" description="passes results to wp_send_json_success() for JSON encoding and transmission" type="void">
5356
  <type by_reference="false">void</type>
5357
  </tag>
5358
  </docblock>
5359
  </method>
5360
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="1692" package="Media Library Assistant">
5361
  <name>mla_set_parent_ajax_action</name>
5362
  <full_name>mla_set_parent_ajax_action</full_name>
5363
+ <docblock line="1683">
5364
  <description><![CDATA[Ajax handler to set post_parent for a single attachment]]></description>
5365
  <long-description><![CDATA[<p>Adapted from wp_ajax_inline_save in /wp-admin/includes/ajax-actions.php</p>]]></long-description>
5366
+ <tag line="1683" name="since" description="0.20"/>
5367
+ <tag line="1683" name="return" description="echo HTML &lt;td&gt; innerHTML for updated call or error message, then die()" type="void">
5368
  <type by_reference="false">void</type>
5369
  </tag>
5370
  </docblock>
5371
  </method>
5372
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="1726" package="Media Library Assistant">
5373
  <name>_bulk_edit_ajax_handler</name>
5374
  <full_name>_bulk_edit_ajax_handler</full_name>
5375
+ <docblock line="1719">
5376
  <description><![CDATA[Ajax handler for bulk editing and mapping]]></description>
5377
  <long-description><![CDATA[]]></long-description>
5378
+ <tag line="1719" name="since" description="2.00"/>
5379
+ <tag line="1719" name="return" description="echo json results or error message, then die()" type="void">
5380
  <type by_reference="false">void</type>
5381
  </tag>
5382
  </docblock>
5383
  </method>
5384
+ <method final="false" abstract="false" static="true" visibility="public" namespace="global" line="1767" package="Media Library Assistant">
5385
  <name>mla_inline_edit_ajax_action</name>
5386
  <full_name>mla_inline_edit_ajax_action</full_name>
5387
+ <docblock line="1758">
5388
  <description><![CDATA[Ajax handler for inline editing]]></description>
5389
  <long-description><![CDATA[<p>Adapted for Quick Edit from wp_ajax_inline_save in /wp-admin/includes/ajax-actions.php</p>]]></long-description>
5390
+ <tag line="1758" name="since" description="0.20"/>
5391
+ <tag line="1758" name="return" description="echo HTML &lt;tr&gt; markup for updated row or error message, then die()" type="void">
5392
  <type by_reference="false">void</type>
5393
  </tag>
5394
  </docblock>
5395
  </method>
5396
+ <method final="false" abstract="false" static="true" visibility="private" namespace="global" line="1881" package="Media Library Assistant">
5397
  <name>_compose_post_type_select</name>
5398
  <full_name>_compose_post_type_select</full_name>
5399
+ <docblock line="1870">
5400
  <description><![CDATA[Compose a Post Type Options list with current selection]]></description>
5401
  <long-description><![CDATA[]]></long-description>
5402
+ <tag line="1870" name="since" description="1.90"/>
5403
+ <tag line="1870" name="uses" description="\global\$mla_option_templates" refers="\global\$mla_option_templates"/>
5404
+ <tag line="1870" name="param" description="template parts" type="array" variable="$templates">
5405
  <type by_reference="false">array</type>
5406
  </tag>
5407
+ <tag line="1870" name="param" description="current selection or 'all' (default)" type="string" variable="$selection">
5408
  <type by_reference="false">string</type>
5409
  </tag>
5410
+ <tag line="1870" name="return" description="HTML markup with select field options" type="string">
5411
  <type by_reference="false">string</type>
5412
  </tag>
5413
  </docblock>
5414
+ <argument line="1881">
5415
  <name>$templates</name