From 319a8fef6d159ae581b616475dff87a972dd97f0 Mon Sep 17 00:00:00 2001 From: Ryan Domingue Date: Tue, 29 Jul 2014 22:40:24 -0700 Subject: [PATCH 001/125] Adds field to the comment form to display notification info --- .../editorial-comments/editorial-comments.php | 8 ++++ .../lib/editorial-comments.js | 42 +++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/modules/editorial-comments/editorial-comments.php b/modules/editorial-comments/editorial-comments.php index c45aa0284..7df50e41b 100755 --- a/modules/editorial-comments/editorial-comments.php +++ b/modules/editorial-comments/editorial-comments.php @@ -197,6 +197,14 @@ function the_comment_form( ) { + module_enabled( 'notifications' )) { + // Only show the input if notifications are enabled ?> + + +

diff --git a/modules/editorial-comments/lib/editorial-comments.js b/modules/editorial-comments/lib/editorial-comments.js index ae8513f54..99b9a3aa1 100644 --- a/modules/editorial-comments/lib/editorial-comments.js +++ b/modules/editorial-comments/lib/editorial-comments.js @@ -65,6 +65,9 @@ editorialCommentReply = { } jQuery('#ef-comment_respond').hide(); + + // Display who will be notified for this comment + editorialCommentReply.notify(); // Show reply textbox jQuery('#ef-replyrow') @@ -114,6 +117,45 @@ editorialCommentReply = { return false; }, + /** + * Display who will be notified of the new comment + */ + notify : function() { + var checked_notifiers = [], username = "", message = ""; + + // Get notification field and make sure it's empty + // If there is no wrapper, we need to get out + var message_wrapper = jQuery('#ef-reply-notifier'); + if (message_wrapper[0]) { + message_wrapper.val(''); + } else { + return; + } + + // Get checked checkboxes + checked_notifiers = jQuery('.ef-post_following_list li input:checkbox:checked'); + + if (checked_notifiers.length > 0) { + var current_item; + // There are checked users/usergroups + // Set the class to 'selection-success' + message_wrapper.removeClass('ef-none-selected').addClass('ef-selection-success'); + for (var i = 0; i < checked_notifiers.length; i++) { + current_item = checked_notifiers[i]; + username = jQuery(current_item).next(); + // Create the message + // We don't want a comma on the last item or if there is only one item + message += username.html() + ((i === checked_notifiers.length -1 || checked_notifiers.length === 1) ? '' : ', ') ; + message_wrapper.val(message); + } + } else { + // There are no checked users/usergroups + // Set input class to 'none-selected' and display message + message_wrapper.removeClass('ef-selection-success').addClass('ef-none-selected'); + message_wrapper.val('No one will be notified'); + } + }, + show : function(xml) { var response, comment, supplemental, id, bg; From da675a5cbd0c21fe53c0b09371e97f5f6dc89418 Mon Sep 17 00:00:00 2001 From: Ryan Domingue Date: Tue, 29 Jul 2014 22:42:47 -0700 Subject: [PATCH 002/125] Feedback updates as users are selected/deselected --- modules/notifications/lib/notifications.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/notifications/lib/notifications.js b/modules/notifications/lib/notifications.js index aee16be59..ae257bedd 100644 --- a/modules/notifications/lib/notifications.js +++ b/modules/notifications/lib/notifications.js @@ -28,6 +28,11 @@ jQuery(document).ready(function($) { url : (ajaxurl) ? ajaxurl : wpListL10n.url, data : params, success : function(x) { + // Update the list of users/groups to be notified of new comment + // Check for editorialCommentReply, in case EF Comments are disabled + if (typeof editorialCommentReply == 'object') { + editorialCommentReply.notify(); + } var backgroundColor = parent_this.css( 'background-color' ); $(parent_this.parent().parent()) .animate( { 'backgroundColor':'#CCEEBB' }, 200 ) From d42f4211ce0a4bc3059b06d9d0b920674b0b716e Mon Sep 17 00:00:00 2001 From: Ryan Domingue Date: Tue, 29 Jul 2014 22:44:57 -0700 Subject: [PATCH 003/125] Save the notification message info for display in the comment --- modules/editorial-comments/editorial-comments.php | 6 ++++++ modules/editorial-comments/lib/editorial-comments.js | 2 ++ 2 files changed, 8 insertions(+) diff --git a/modules/editorial-comments/editorial-comments.php b/modules/editorial-comments/editorial-comments.php index 7df50e41b..a173b910f 100755 --- a/modules/editorial-comments/editorial-comments.php +++ b/modules/editorial-comments/editorial-comments.php @@ -299,6 +299,7 @@ function ajax_insert_comment( ) { // Set up comment data $post_id = absint( $_POST['post_id'] ); $parent = absint( $_POST['parent'] ); + $notification = $_POST['notification']; // Only allow the comment if user can edit post // @TODO: allow contributers to add comments as well (?) @@ -339,6 +340,11 @@ function ajax_insert_comment( ) { // Insert Comment $comment_id = wp_insert_comment($data); $comment = get_comment($comment_id); + + // Save the list of notified users/usergroups + if ($this->module_enabled( 'notifications' )) { + add_comment_meta( $comment_id, 'notification_list', $notification, false ); + } // Register actions -- will be used to set up notifications and other modules can hook into this if ( $comment_id ) diff --git a/modules/editorial-comments/lib/editorial-comments.js b/modules/editorial-comments/lib/editorial-comments.js index 99b9a3aa1..08beae82e 100644 --- a/modules/editorial-comments/lib/editorial-comments.js +++ b/modules/editorial-comments/lib/editorial-comments.js @@ -104,6 +104,8 @@ editorialCommentReply = { post.parent = (jQuery("#ef-comment_parent").val()=='') ? 0 : jQuery("#ef-comment_parent").val(); post._nonce = jQuery("#ef_comment_nonce").val(); post.post_id = jQuery("#ef-post_id").val(); + post.notification = (jQuery('#ef-reply-notifier').val() == 'No one will be notified' || + jQuery('#ef-reply-notifier').val() == '') ? 1 : jQuery('#ef-reply-notifier').val() // Send the request jQuery.ajax({ From 343adce26916e057cf5d215a1b9326f62b3ce6cb Mon Sep 17 00:00:00 2001 From: Ryan Domingue Date: Tue, 29 Jul 2014 22:46:44 -0700 Subject: [PATCH 004/125] Display the saved notification feedback in the comment --- .../editorial-comments/editorial-comments.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/modules/editorial-comments/editorial-comments.php b/modules/editorial-comments/editorial-comments.php index a173b910f..dd2351feb 100755 --- a/modules/editorial-comments/editorial-comments.php +++ b/modules/editorial-comments/editorial-comments.php @@ -226,6 +226,22 @@ function the_comment_form( ) { No users or groups were notified'; + } else { + $message = 'Notified: ' . $notification; + } + echo '

' . $message . '

'; + } + } + /** * Displays a single comment */ @@ -276,6 +292,7 @@ function the_comment($comment, $args, $depth) {
+ get_comment_notification_meta($comment->comment_ID); ?>

From 09857fa1fa844ac0265fdec38845c0f28fabd605 Mon Sep 17 00:00:00 2001 From: Ryan Domingue Date: Tue, 29 Jul 2014 22:48:36 -0700 Subject: [PATCH 005/125] Styles notification message in the form and comments --- .../lib/editorial-comments.css | 39 ++++++++++++++++++- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/modules/editorial-comments/lib/editorial-comments.css b/modules/editorial-comments/lib/editorial-comments.css index e62237695..c96938b39 100644 --- a/modules/editorial-comments/lib/editorial-comments.css +++ b/modules/editorial-comments/lib/editorial-comments.css @@ -24,7 +24,13 @@ border-bottom: 1px solid #e5e5e5; background: #fff; } - #ef-comments li:hover p.row-actions { + + .row-actions { + margin-top: 0; + } + + #ef-comments li:hover p.row-actions, + #ef-comments li:hover .ef-notification-meta { visibility: visible; } #ef-comments li p.row-actions { @@ -111,4 +117,33 @@ #ef-comment-rbutton { margin-top: 10px; margin-bottom: 10px; -} \ No newline at end of file +} + +input[readonly].ef-reply-notifier-message { + height: 2em; + width: 100%; + padding: 0.5em; + border: none; + font-size: 1em; +} + + label[for="ef-reply-notifier"] { + margin: 0.75em 0; + display: block; + cursor: default; + } + + input[readonly].ef-selection-success { + border-left: 0.5em solid #80a029; + } + + input[readonly].ef-none-selected { + border-left: 0.5em solid #a00; + } + +.ef-notification-meta { + text-align: right; + margin-bottom: 0; + visibility: hidden; +} + From c8c0c3953643cac56f5883d9569eb9da4ad66fdf Mon Sep 17 00:00:00 2001 From: Ryan Domingue Date: Tue, 29 Jul 2014 23:11:30 -0700 Subject: [PATCH 006/125] Slight formatting adjustment --- modules/notifications/lib/notifications.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/notifications/lib/notifications.js b/modules/notifications/lib/notifications.js index ae257bedd..debeb6a88 100644 --- a/modules/notifications/lib/notifications.js +++ b/modules/notifications/lib/notifications.js @@ -28,11 +28,11 @@ jQuery(document).ready(function($) { url : (ajaxurl) ? ajaxurl : wpListL10n.url, data : params, success : function(x) { - // Update the list of users/groups to be notified of new comment - // Check for editorialCommentReply, in case EF Comments are disabled - if (typeof editorialCommentReply == 'object') { - editorialCommentReply.notify(); - } + // Update the list of users/groups to be notified of new comment + // Check for editorialCommentReply, in case EF Comments are disabled + if (typeof editorialCommentReply == 'object') { + editorialCommentReply.notify(); + } var backgroundColor = parent_this.css( 'background-color' ); $(parent_this.parent().parent()) .animate( { 'backgroundColor':'#CCEEBB' }, 200 ) From 07d91331c3913020335c42ea7fa38211bf70f896 Mon Sep 17 00:00:00 2001 From: Ryan Domingue Date: Thu, 31 Jul 2014 09:41:40 -0700 Subject: [PATCH 007/125] Updated message creation to be more robust --- .../lib/editorial-comments.js | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/modules/editorial-comments/lib/editorial-comments.js b/modules/editorial-comments/lib/editorial-comments.js index 08beae82e..2b82aa13b 100644 --- a/modules/editorial-comments/lib/editorial-comments.js +++ b/modules/editorial-comments/lib/editorial-comments.js @@ -123,7 +123,7 @@ editorialCommentReply = { * Display who will be notified of the new comment */ notify : function() { - var checked_notifiers = [], username = "", message = ""; + var checked_notifiers = [], usernames = [], message = "", lastUser = ""; // Get notification field and make sure it's empty // If there is no wrapper, we need to get out @@ -144,12 +144,21 @@ editorialCommentReply = { message_wrapper.removeClass('ef-none-selected').addClass('ef-selection-success'); for (var i = 0; i < checked_notifiers.length; i++) { current_item = checked_notifiers[i]; - username = jQuery(current_item).next(); - // Create the message - // We don't want a comma on the last item or if there is only one item - message += username.html() + ((i === checked_notifiers.length -1 || checked_notifiers.length === 1) ? '' : ', ') ; - message_wrapper.val(message); + // Add usernames to the usernames array + usernames.push(jQuery(current_item).next().html()); } + // Create the message + // We don't want a comma on the last item or if there is only one item + lastUser = usernames.pop(); + if (usernames.length > 0) { + // There is still at least one item in the array after popping off the last item + message = usernames.join(', ') + ' and ' + lastUser; + } else { + // There was only one item to begin with + message = lastUser; + } + // Display the message + message_wrapper.val(message); } else { // There are no checked users/usergroups // Set input class to 'none-selected' and display message From 13dcc0ee34a95dd44dfe5bd65cb8744d032da611 Mon Sep 17 00:00:00 2001 From: Ryan Domingue Date: Fri, 29 Aug 2014 11:58:58 -0700 Subject: [PATCH 008/125] Set up strings for localization --- modules/editorial-comments/editorial-comments.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/editorial-comments/editorial-comments.php b/modules/editorial-comments/editorial-comments.php index dd2351feb..6c18e8046 100755 --- a/modules/editorial-comments/editorial-comments.php +++ b/modules/editorial-comments/editorial-comments.php @@ -200,7 +200,7 @@ function the_comment_form( ) { module_enabled( 'notifications' )) { // Only show the input if notifications are enabled ?> -
' . __( 'Preview' ) . ''; return $actions; From 6d6cf810c0b405e7b4c9b70e656610778c761427 Mon Sep 17 00:00:00 2001 From: Connor Jennings Date: Tue, 7 Jun 2016 16:35:38 -0400 Subject: [PATCH 010/125] Using PHPDoc to generate accesible Edit Flow documentation. --- edit_flow.php | 39 +- phpdoc.json | 34972 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 35009 insertions(+), 2 deletions(-) create mode 100644 phpdoc.json diff --git a/edit_flow.php b/edit_flow.php index 6b85a39ca..1cb7a8758 100644 --- a/edit_flow.php +++ b/edit_flow.php @@ -128,8 +128,12 @@ private function load_modules() { } } - // Supplementary plugins can hook into this, include their own modules - // and add them to the $edit_flow object + /** + * Fires after edit_flow has loaded all Edit Flow internal modules. + * + * Plugin authors can hook into this action, include their own modules add them to the $edit_flow object + * + */ do_action( 'ef_modules_loaded' ); } @@ -147,6 +151,13 @@ private function setup_actions() { add_action( 'admin_init', array( $this, 'action_admin_init' ) ); + /** + * Fires after setup of all edit_flow actions. + * + * Plugin authors can hook into this action to manipulate the edit_flow class after initial actions have been registered. + * + * @param edit_flow $this The core edit flow class + */ do_action_ref_array( 'editflow_after_setup_actions', array( &$this ) ); } @@ -169,6 +180,12 @@ function action_init() { if ( isset( $mod_data->options->enabled ) && $mod_data->options->enabled == 'on' ) $this->$mod_name->init(); + /** + * Fires after edit_flow has loaded all modules and module options. + * + * Plugin authors can hook into this action to trigger functionaltiy after all Edit Flow module's have been loaded. + * + */ do_action( 'ef_init' ); } @@ -248,6 +265,14 @@ public function register_module( $name, $args = array() ) { add_action( 'load-edit-flow_page_' . $args['settings_slug'], array( &$this->$name, 'action_settings_help_menu' ) ); $this->modules->$name = (object) $args; + + /** + * Fires after edit_flow has registered a module. + * + * Plugin authors can hook into this action to trigger functionaltiy after a module has been loaded. + * + * @param string $name The name of the registered module + */ do_action( 'ef_module_registered', $name ); return $this->modules->$name; } @@ -268,6 +293,13 @@ function load_module_options() { $this->$mod_name->module = $this->modules->$mod_name; } + + /** + * Fires after edit_flow has loaded all of the module options from the database. + * + * Plugin authors can hook into this action to read and manipulate module settings. + * + */ do_action( 'ef_module_options_loaded' ); } @@ -288,6 +320,9 @@ function action_init_after() { /** * Get a module by one of its descriptive values + * + * @param string $key The property to use for searching a module (ex: 'name') + * @param string|int|array $value The value to compare (using ==) */ function get_module_by( $key, $value ) { $module = false; diff --git a/phpdoc.json b/phpdoc.json new file mode 100644 index 000000000..205cc794b --- /dev/null +++ b/phpdoc.json @@ -0,0 +1,34972 @@ +[ + { + "file": { + "description": "class EF_Module", + "long_description": "", + "tags": [ + { + "name": "desc", + "content": "Base class any Edit Flow module should extend" + } + ] + }, + "path": "common\/php\/class-module.php", + "root": "\/Users\/connor.jennings\/code\/vagrant-local\/www\/wordpress-default\/wp-content\/plugins\/Edit-Flow", + "uses": { + "functions": [ + { + "name": "class_exists", + "line": 8, + "end_line": 8 + } + ] + }, + "classes": [ + { + "name": "EF_Module", + "namespace": "global", + "line": 10, + "end_line": 645, + "final": false, + "abstract": false, + "extends": "", + "implements": [], + "properties": [ + { + "name": "$published_statuses", + "line": 12, + "end_line": 16, + "default": "array('publish', 'future', 'private')", + "static": false, + "visibility": "public", + "doc": { + "description": "", + "long_description": "", + "tags": [] + } + } + ], + "methods": [ + { + "name": "__construct", + "namespace": "", + "aliases": [], + "line": 18, + "end_line": 18, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [], + "doc": { + "description": "", + "long_description": "", + "tags": [] + } + }, + { + "name": "module_enabled", + "namespace": "", + "aliases": [], + "line": 28, + "end_line": 32, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$slug", + "default": null, + "type": "" + } + ], + "doc": { + "description": "Returns whether the module with the given name is enabled.", + "long_description": "", + "tags": [ + { + "name": "since", + "content": "0.7" + }, + { + "name": "param", + "content": "module Slug of the module to check", + "types": [ + "string" + ], + "variable": "" + }, + { + "name": "return", + "content": "if the module is enabled, false<\/code> otherwise", + "types": [ + "\\true<\/code>" + ] + } + ] + } + }, + { + "name": "get_all_post_types", + "namespace": "", + "aliases": [], + "line": 39, + "end_line": 51, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [], + "doc": { + "description": "Gets an array of allowed post types for a module", + "long_description": "", + "tags": [ + { + "name": "return", + "content": "post-type-slug => post-type-label", + "types": [ + "array" + ] + } + ] + }, + "uses": { + "functions": [ + { + "name": "__", + "line": 42, + "end_line": 42 + }, + { + "name": "__", + "line": 43, + "end_line": 43 + } + ], + "methods": [ + { + "name": "get_supported_post_types_for_module", + "class": "\\EF_Module", + "static": false, + "line": 45, + "end_line": 45 + } + ] + } + }, + { + "name": "clean_post_type_options", + "namespace": "", + "aliases": [], + "line": 64, + "end_line": 74, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$module_post_types", + "default": "array()", + "type": "" + }, + { + "name": "$post_type_support", + "default": "null", + "type": "" + } + ], + "doc": { + "description": "Cleans up the 'on' and 'off' for post types on a given module (so we don't get warnings all over) For every post type that doesn't explicitly have the 'on' value, turn it 'off' If add_post_type_support() has been used anywhere (legacy support), inherit the state", + "long_description": "", + "tags": [ + { + "name": "param", + "content": "Current state of post type options for the module", + "types": [ + "array" + ], + "variable": "$module_post_types" + }, + { + "name": "param", + "content": "What the feature is called for post_type_support (e.g. 'ef_calendar')", + "types": [ + "string" + ], + "variable": "$post_type_support" + }, + { + "name": "return", + "content": "$normalized_post_type_options The setting for each post type, normalized based on rules", + "types": [ + "array" + ] + }, + { + "name": "since", + "content": "0.7" + } + ] + }, + "uses": { + "functions": [ + { + "name": "array_keys", + "line": 66, + "end_line": 66 + }, + { + "name": "post_type_supports", + "line": 68, + "end_line": 68 + } + ], + "methods": [ + { + "name": "get_all_post_types", + "class": "\\EF_Module", + "static": false, + "line": 66, + "end_line": 66 + } + ] + } + }, + { + "name": "get_supported_post_types_for_module", + "namespace": "", + "aliases": [], + "line": 84, + "end_line": 92, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$module", + "default": "null", + "type": "" + } + ], + "doc": { + "description": "Get all of the possible post types that can be used with a given module", + "long_description": "", + "tags": [ + { + "name": "param", + "content": "The full module", + "types": [ + "object" + ], + "variable": "$module" + }, + { + "name": "return", + "content": "$post_types An array of post type objects", + "types": [ + "array" + ] + }, + { + "name": "since", + "content": "0.7.2" + } + ] + }, + "uses": { + "functions": [ + { + "name": "apply_filters", + "line": 90, + "end_line": 90 + }, + { + "name": "get_post_types", + "line": 91, + "end_line": 91 + } + ] + }, + "hooks": [ + { + "name": "edit_flow_supported_module_post_types_args", + "line": 90, + "end_line": 90, + "type": "filter", + "arguments": [ + "$pt_args", + "$module" + ], + "doc": { + "description": "", + "long_description": "", + "tags": [] + } + } + ] + }, + { + "name": "get_post_types_for_module", + "namespace": "", + "aliases": [], + "line": 102, + "end_line": 111, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$module", + "default": null, + "type": "" + } + ], + "doc": { + "description": "Collect all of the active post types for a given module", + "long_description": "", + "tags": [ + { + "name": "param", + "content": "Module's data", + "types": [ + "object" + ], + "variable": "$module" + }, + { + "name": "return", + "content": "$post_types All of the post types that are 'on'", + "types": [ + "array" + ] + }, + { + "name": "since", + "content": "0.7" + } + ] + }, + "uses": { + "functions": [ + { + "name": "is_array", + "line": 105, + "end_line": 105 + } + ] + } + }, + { + "name": "get_post_statuses", + "namespace": "", + "aliases": [], + "line": 121, + "end_line": 129, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [], + "doc": { + "description": "Get all of the currently available post statuses This should be used in favor of calling $edit_flow->custom_status->get_custom_statuses() directly", + "long_description": "", + "tags": [ + { + "name": "return", + "content": "$post_statuses All of the post statuses that aren't a published state", + "types": [ + "array" + ] + }, + { + "name": "since", + "content": "0.7" + } + ] + }, + "uses": { + "methods": [ + { + "name": "get_custom_statuses", + "class": "$edit_flow->custom_status", + "static": false, + "line": 125, + "end_line": 125 + }, + { + "name": "get_core_post_statuses", + "class": "\\EF_Module", + "static": false, + "line": 127, + "end_line": 127 + }, + { + "name": "module_enabled", + "class": "\\EF_Module", + "static": false, + "line": 124, + "end_line": 124 + } + ] + } + }, + { + "name": "get_core_post_statuses", + "namespace": "", + "aliases": [], + "line": 138, + "end_line": 154, + "final": false, + "abstract": false, + "static": false, + "visibility": "protected", + "arguments": [], + "doc": { + "description": "Get core's 'draft' and 'pending' post statuses, but include our special attributes", + "long_description": "", + "tags": [ + { + "name": "since", + "content": "0.8.1" + }, + { + "name": "return", + "content": "", + "types": [ + "array" + ] + } + ] + }, + "uses": { + "functions": [ + { + "name": "__", + "line": 142, + "end_line": 142 + }, + { + "name": "__", + "line": 148, + "end_line": 148 + } + ] + } + }, + { + "name": "get_default_post_status", + "namespace": "", + "aliases": [], + "line": 162, + "end_line": 172, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [], + "doc": { + "description": "Gets the name of the default custom status. If custom statuses are disabled, returns 'draft'.", + "long_description": "", + "tags": [ + { + "name": "return", + "content": "Name of the status", + "types": [ + "\\str" + ] + } + ] + }, + "uses": { + "functions": [ + { + "name": "EditFlow", + "line": 165, + "end_line": 165 + } + ] + } + }, + { + "name": "filter_posts_link", + "namespace": "", + "aliases": [], + "line": 183, + "end_line": 188, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$slug", + "default": null, + "type": "" + }, + { + "name": "$post_type", + "default": "'post'", + "type": "" + } + ], + "doc": { + "description": "Filter to all posts with a given post status (can be a custom status or a built-in status) and optional custom post type.", + "long_description": "", + "tags": [ + { + "name": "since", + "content": "0.7" + }, + { + "name": "param", + "content": "The slug for the post status to which to filter", + "types": [ + "string" + ], + "variable": "$slug" + }, + { + "name": "param", + "content": "Optional post type to which to filter", + "types": [ + "string" + ], + "variable": "$post_type" + }, + { + "name": "return", + "content": "edit.php link to all posts with the given post status and, optionally, the given post type", + "types": [ + "\\an" + ] + } + ] + }, + "uses": { + "functions": [ + { + "name": "add_query_arg", + "line": 184, + "end_line": 184 + }, + { + "name": "get_admin_url", + "line": 184, + "end_line": 184 + }, + { + "name": "add_query_arg", + "line": 186, + "end_line": 186 + }, + { + "name": "in_array", + "line": 185, + "end_line": 185 + }, + { + "name": "get_post_types", + "line": 185, + "end_line": 185 + } + ] + } + }, + { + "name": "get_post_status_friendly_name", + "namespace": "", + "aliases": [], + "line": 198, + "end_line": 223, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$status", + "default": null, + "type": "" + } + ], + "doc": { + "description": "Returns the friendly name for a given status", + "long_description": "", + "tags": [ + { + "name": "since", + "content": "0.7" + }, + { + "name": "param", + "content": "The status slug", + "types": [ + "string" + ], + "variable": "$status" + }, + { + "name": "return", + "content": "$status_friendly_name The friendly name for the status", + "types": [ + "string" + ] + } + ] + }, + "uses": { + "functions": [ + { + "name": "__", + "line": 204, + "end_line": 204 + }, + { + "name": "__", + "line": 205, + "end_line": 205 + }, + { + "name": "__", + "line": 206, + "end_line": 206 + }, + { + "name": "__", + "line": 207, + "end_line": 207 + }, + { + "name": "__", + "line": 208, + "end_line": 208 + }, + { + "name": "__", + "line": 209, + "end_line": 209 + }, + { + "name": "is_wp_error", + "line": 216, + "end_line": 216 + }, + { + "name": "array_key_exists", + "line": 219, + "end_line": 219 + }, + { + "name": "in_array", + "line": 214, + "end_line": 214 + } + ], + "methods": [ + { + "name": "get_custom_status_by", + "class": "$edit_flow->custom_status", + "static": false, + "line": 215, + "end_line": 215 + }, + { + "name": "module_enabled", + "class": "\\EF_Module", + "static": false, + "line": 213, + "end_line": 213 + } + ] + } + }, + { + "name": "enqueue_datepicker_resources", + "namespace": "", + "aliases": [], + "line": 230, + "end_line": 245, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [], + "doc": { + "description": "Enqueue any resources (CSS or JS) associated with datepicker functionality", + "long_description": "", + "tags": [ + { + "name": "since", + "content": "0.7" + } + ] + }, + "uses": { + "functions": [ + { + "name": "get_option", + "line": 233, + "end_line": 233 + }, + { + "name": "wp_enqueue_script", + "line": 236, + "end_line": 236 + }, + { + "name": "wp_enqueue_script", + "line": 239, + "end_line": 239 + }, + { + "name": "wp_enqueue_script", + "line": 240, + "end_line": 240 + }, + { + "name": "wp_enqueue_style", + "line": 243, + "end_line": 243 + }, + { + "name": "wp_enqueue_style", + "line": 244, + "end_line": 244 + } + ] + } + }, + { + "name": "get_current_post_type", + "namespace": "", + "aliases": [], + "line": 253, + "end_line": 277, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [], + "doc": { + "description": "Checks for the current post type", + "long_description": "", + "tags": [ + { + "name": "since", + "content": "0.7" + }, + { + "name": "return", + "content": "$post_type The post type we've found, or null if no post type", + "types": [ + "string", + "null" + ] + } + ] + }, + "uses": { + "functions": [ + { + "name": "sanitize_key", + "line": 265, + "end_line": 265 + }, + { + "name": "get_post", + "line": 268, + "end_line": 268 + }, + { + "name": "get_post", + "line": 269, + "end_line": 269 + } + ] + } + }, + { + "name": "get_user_meta", + "namespace": "", + "aliases": [], + "line": 289, + "end_line": 298, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$user_id", + "default": null, + "type": "" + }, + { + "name": "$key", + "default": null, + "type": "" + }, + { + "name": "$string", + "default": "true", + "type": "" + } + ], + "doc": { + "description": "Wrapper for the get_user_meta() function so we can replace it if we need to", + "long_description": "", + "tags": [ + { + "name": "since", + "content": "0.7" + }, + { + "name": "param", + "content": "Unique ID for the user", + "types": [ + "int" + ], + "variable": "$user_id" + }, + { + "name": "param", + "content": "Key to search against", + "types": [ + "string" + ], + "variable": "$key" + }, + { + "name": "param", + "content": "Whether or not to return just one value", + "types": [ + "bool" + ], + "variable": "$single" + }, + { + "name": "return", + "content": "$value Whatever the stored value was", + "types": [ + "string", + "bool", + "array" + ] + } + ] + }, + "uses": { + "functions": [ + { + "name": "apply_filters", + "line": 292, + "end_line": 292 + }, + { + "name": "is_null", + "line": 293, + "end_line": 293 + }, + { + "name": "get_user_meta", + "line": 296, + "end_line": 296 + } + ] + }, + "hooks": [ + { + "name": "ef_get_user_meta", + "line": 292, + "end_line": 292, + "type": "filter", + "arguments": [ + "$response", + "$user_id", + "$key", + "$string" + ], + "doc": { + "description": "", + "long_description": "", + "tags": [] + } + } + ] + }, + { + "name": "update_user_meta", + "namespace": "", + "aliases": [], + "line": 311, + "end_line": 320, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$user_id", + "default": null, + "type": "" + }, + { + "name": "$key", + "default": null, + "type": "" + }, + { + "name": "$value", + "default": null, + "type": "" + }, + { + "name": "$previous", + "default": "null", + "type": "" + } + ], + "doc": { + "description": "Wrapper for the update_user_meta() function so we can replace it if we need to", + "long_description": "", + "tags": [ + { + "name": "since", + "content": "0.7" + }, + { + "name": "param", + "content": "Unique ID for the user", + "types": [ + "int" + ], + "variable": "$user_id" + }, + { + "name": "param", + "content": "Key to search against", + "types": [ + "string" + ], + "variable": "$key" + }, + { + "name": "param", + "content": "Whether or not to return just one value", + "types": [ + "string", + "bool", + "array" + ], + "variable": "$value" + }, + { + "name": "param", + "content": "(optional) Previous value to replace", + "types": [ + "string", + "bool", + "array" + ], + "variable": "$previous" + }, + { + "name": "return", + "content": "$success Whether we were successful in saving", + "types": [ + "bool" + ] + } + ] + }, + "uses": { + "functions": [ + { + "name": "apply_filters", + "line": 314, + "end_line": 314 + }, + { + "name": "is_null", + "line": 315, + "end_line": 315 + }, + { + "name": "update_user_meta", + "line": 318, + "end_line": 318 + } + ] + }, + "hooks": [ + { + "name": "ef_update_user_meta", + "line": 314, + "end_line": 314, + "type": "filter", + "arguments": [ + "$response", + "$user_id", + "$key", + "$value", + "$previous" + ], + "doc": { + "description": "", + "long_description": "", + "tags": [] + } + } + ] + }, + { + "name": "print_ajax_response", + "namespace": "", + "aliases": [], + "line": 329, + "end_line": 333, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$status", + "default": null, + "type": "" + }, + { + "name": "$message", + "default": "''", + "type": "" + } + ], + "doc": { + "description": "Take a status and a message, JSON encode and print", + "long_description": "", + "tags": [ + { + "name": "since", + "content": "0.7" + }, + { + "name": "param", + "content": "Whether it was a 'success' or an 'error'", + "types": [ + "string" + ], + "variable": "$status" + } + ] + }, + "uses": { + "functions": [ + { + "name": "header", + "line": 330, + "end_line": 330 + }, + { + "name": "json_encode", + "line": 331, + "end_line": 331 + } + ] + } + }, + { + "name": "is_whitelisted_functional_view", + "namespace": "", + "aliases": [], + "line": 343, + "end_line": 348, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$module_name", + "default": "null", + "type": "" + } + ], + "doc": { + "description": "Whether or not the current page is a user-facing Edit Flow View", + "long_description": "", + "tags": [ + { + "name": "todo", + "content": "Think of a creative way to make this work" + }, + { + "name": "since", + "content": "0.7" + }, + { + "name": "param", + "content": "(Optional) Module name to check against", + "types": [ + "string" + ], + "variable": "$module_name" + } + ] + } + }, + { + "name": "is_whitelisted_settings_view", + "namespace": "", + "aliases": [], + "line": 360, + "end_line": 381, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$module_name", + "default": "null", + "type": "" + } + ], + "doc": { + "description": "Whether or not the current page is an Edit Flow settings view (either main or module) Determination is based on $pagenow, $_GET['page'], and the module's $settings_slug If there's no module name specified, it will return true against all Edit Flow settings views", + "long_description": "", + "tags": [ + { + "name": "since", + "content": "0.7" + }, + { + "name": "param", + "content": "(Optional) Module name to check against", + "types": [ + "string" + ], + "variable": "$module_name" + }, + { + "name": "return", + "content": "$is_settings_view Return true if it is", + "types": [ + "bool" + ] + } + ] + }, + "uses": { + "functions": [ + { + "name": "in_array", + "line": 374, + "end_line": 374 + } + ] + } + }, + { + "name": "remove_object_terms", + "namespace": "", + "aliases": [], + "line": 395, + "end_line": 418, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$object_id", + "default": null, + "type": "" + }, + { + "name": "$terms", + "default": null, + "type": "" + }, + { + "name": "$taxonomy", + "default": null, + "type": "" + } + ], + "doc": { + "description": "Remove term(s) associated with a given object(s). Core doesn't have this as of 3.2", + "long_description": "", + "tags": [ + { + "name": "see", + "content": "", + "refers": "http:\/\/core.trac.wordpress.org\/ticket\/15475" + }, + { + "name": "author", + "content": "ericmann" + }, + { + "name": "compat", + "content": "3.3?" + }, + { + "name": "param", + "content": "The ID(s) of the object(s) to retrieve.", + "types": [ + "int", + "array" + ], + "variable": "$object_ids" + }, + { + "name": "param", + "content": "The ids of the terms to remove.", + "types": [ + "int", + "array" + ], + "variable": "$terms" + }, + { + "name": "param", + "content": "The taxonomies to retrieve terms from.", + "types": [ + "string", + "array" + ], + "variable": "$taxonomies" + }, + { + "name": "return", + "content": "Affected Term IDs", + "types": [ + "bool", + "\\WP_Error" + ] + } + ] + }, + "uses": { + "methods": [ + { + "name": "__construct", + "class": "\\WP_Error", + "static": false, + "line": 399, + "end_line": 399 + }, + { + "name": "query", + "class": "$wpdb", + "static": false, + "line": 413, + "end_line": 413 + }, + { + "name": "prepare", + "class": "$wpdb", + "static": false, + "line": 413, + "end_line": 413 + } + ], + "functions": [ + { + "name": "__", + "line": 399, + "end_line": 399 + }, + { + "name": "taxonomy_exists", + "line": 398, + "end_line": 398 + }, + { + "name": "is_array", + "line": 401, + "end_line": 401 + }, + { + "name": "is_array", + "line": 404, + "end_line": 404 + }, + { + "name": "array_map", + "line": 407, + "end_line": 407 + }, + { + "name": "array_map", + "line": 408, + "end_line": 408 + }, + { + "name": "implode", + "line": 411, + "end_line": 411 + }, + { + "name": "implode", + "line": 412, + "end_line": 412 + }, + { + "name": "wp_update_term_count", + "line": 414, + "end_line": 414 + } + ] + } + }, + { + "name": "get_encoded_description", + "namespace": "", + "aliases": [], + "line": 430, + "end_line": 432, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$args", + "default": "array()", + "type": "" + } + ], + "doc": { + "description": "This is a hack, Hack, HACK!!! Encode all of the given arguments as a serialized array, and then base64_encode Used to store extra data in a term's description field", + "long_description": "", + "tags": [ + { + "name": "since", + "content": "0.7" + }, + { + "name": "param", + "content": "The arguments to encode", + "types": [ + "array" + ], + "variable": "$args" + }, + { + "name": "return", + "content": "Arguments encoded in base64", + "types": [ + "string" + ] + } + ] + }, + "uses": { + "functions": [ + { + "name": "base64_encode", + "line": 431, + "end_line": 431 + }, + { + "name": "maybe_serialize", + "line": 431, + "end_line": 431 + } + ] + } + }, + { + "name": "get_unencoded_description", + "namespace": "", + "aliases": [], + "line": 443, + "end_line": 445, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$string_to_unencode", + "default": null, + "type": "" + } + ], + "doc": { + "description": "If given an encoded string from a term's description field, return an array of values. Otherwise, return the original string", + "long_description": "", + "tags": [ + { + "name": "since", + "content": "0.7" + }, + { + "name": "param", + "content": "Possibly encoded string", + "types": [ + "string" + ], + "variable": "$string_to_unencode" + }, + { + "name": "return", + "content": "Array if string was encoded, otherwise the string as the 'description' field", + "types": [ + "array" + ] + } + ] + }, + "uses": { + "functions": [ + { + "name": "maybe_unserialize", + "line": 444, + "end_line": 444 + }, + { + "name": "base64_decode", + "line": 444, + "end_line": 444 + } + ] + } + }, + { + "name": "get_module_url", + "namespace": "", + "aliases": [], + "line": 455, + "end_line": 458, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$file", + "default": null, + "type": "" + } + ], + "doc": { + "description": "Get the publicly accessible URL for the module based on the filename", + "long_description": "", + "tags": [ + { + "name": "since", + "content": "0.7" + }, + { + "name": "param", + "content": "File path for the module", + "types": [ + "string" + ], + "variable": "$filepath" + }, + { + "name": "return", + "content": "$module_url Publicly accessible URL for the module", + "types": [ + "string" + ] + } + ] + }, + "uses": { + "functions": [ + { + "name": "plugins_url", + "line": 456, + "end_line": 456 + }, + { + "name": "trailingslashit", + "line": 457, + "end_line": 457 + } + ] + } + }, + { + "name": "timesince", + "namespace": "", + "aliases": [], + "line": 466, + "end_line": 504, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$original", + "default": null, + "type": "" + } + ], + "doc": { + "description": "Produce a human-readable version of the time since a timestamp", + "long_description": "", + "tags": [ + { + "name": "param", + "content": "The UNIX timestamp we're producing a relative time for", + "types": [ + "int" + ], + "variable": "$original" + }, + { + "name": "return", + "content": "$relative_time Human-readable version of the difference between the timestamp and now", + "types": [ + "string" + ] + } + ] + }, + "uses": { + "functions": [ + { + "name": "time", + "line": 478, + "end_line": 478 + }, + { + "name": "date", + "line": 482, + "end_line": 482 + }, + { + "name": "date", + "line": 485, + "end_line": 485 + }, + { + "name": "count", + "line": 492, + "end_line": 492 + }, + { + "name": "floor", + "line": 498, + "end_line": 498 + }, + { + "name": "sprintf", + "line": 503, + "end_line": 503 + }, + { + "name": "_n", + "line": 503, + "end_line": 503 + } + ] + } + }, + { + "name": "users_select_form", + "namespace": "", + "aliases": [], + "line": 516, + "end_line": 556, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$selected", + "default": "null", + "type": "" + }, + { + "name": "$args", + "default": "null", + "type": "" + } + ], + "doc": { + "description": "Displays a list of users that can be selected!", + "long_description": "", + "tags": [ + { + "name": "since", + "content": "0.7" + }, + { + "name": "todo", + "content": "Add pagination support for blogs with billions of users" + }, + { + "name": "param", + "content": "", + "types": [ + "\\???" + ], + "variable": "" + }, + { + "name": "param", + "content": "", + "types": [ + "\\???" + ], + "variable": "" + } + ] + }, + "uses": { + "functions": [ + { + "name": "wp_parse_args", + "line": 523, + "end_line": 523 + }, + { + "name": "extract", + "line": 524, + "end_line": 524 + }, + { + "name": "apply_filters", + "line": 535, + "end_line": 535 + }, + { + "name": "get_users", + "line": 536, + "end_line": 536 + }, + { + "name": "is_array", + "line": 538, + "end_line": 538 + }, + { + "name": "esc_attr", + "line": 542, + "end_line": 542 + }, + { + "name": "in_array", + "line": 544, + "end_line": 544 + }, + { + "name": "esc_attr", + "line": 546, + "end_line": 546 + }, + { + "name": "esc_attr", + "line": 547, + "end_line": 547 + }, + { + "name": "esc_attr", + "line": 547, + "end_line": 547 + }, + { + "name": "esc_attr", + "line": 547, + "end_line": 547 + }, + { + "name": "esc_html", + "line": 548, + "end_line": 548 + }, + { + "name": "esc_html", + "line": 549, + "end_line": 549 + } + ] + }, + "hooks": [ + { + "name": "ef_users_select_form_get_users_args", + "line": 535, + "end_line": 535, + "type": "filter", + "arguments": [ + "$args" + ], + "doc": { + "description": "", + "long_description": "", + "tags": [] + } + } + ] + }, + { + "name": "add_caps_to_role", + "namespace": "", + "aliases": [], + "line": 566, + "end_line": 580, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$role", + "default": null, + "type": "" + }, + { + "name": "$caps", + "default": null, + "type": "" + } + ], + "doc": { + "description": "Adds an array of capabilities to a role.", + "long_description": "", + "tags": [ + { + "name": "since", + "content": "0.7" + }, + { + "name": "param", + "content": "A standard WP user role like 'administrator' or 'author'", + "types": [ + "string" + ], + "variable": "$role" + }, + { + "name": "param", + "content": "One or more user caps to add", + "types": [ + "array" + ], + "variable": "$caps" + } + ] + }, + "uses": { + "functions": [ + { + "name": "apply_filters", + "line": 569, + "end_line": 569 + }, + { + "name": "get_role", + "line": 575, + "end_line": 575 + } + ], + "methods": [ + { + "name": "add_cap", + "class": "$role", + "static": false, + "line": 577, + "end_line": 577 + }, + { + "name": "is_role", + "class": "$wp_roles", + "static": false, + "line": 574, + "end_line": 574 + } + ] + }, + "hooks": [ + { + "name": "ef_kill_add_caps_to_role", + "line": 569, + "end_line": 569, + "type": "filter", + "arguments": [ + "false", + "$role", + "$caps" + ], + "doc": { + "description": "", + "long_description": "", + "tags": [] + } + } + ] + }, + { + "name": "action_settings_help_menu", + "namespace": "", + "aliases": [], + "line": 588, + "end_line": 606, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [], + "doc": { + "description": "Add settings help menus to our module screens if the values exist Auto-registered in Edit_Flow::register_module()", + "long_description": "", + "tags": [ + { + "name": "since", + "content": "0.7" + } + ] + }, + "uses": { + "functions": [ + { + "name": "get_current_screen", + "line": 590, + "end_line": 590 + }, + { + "name": "method_exists", + "line": 592, + "end_line": 592 + } + ], + "methods": [ + { + "name": "add_help_tab", + "class": "$screen", + "static": false, + "line": 600, + "end_line": 600 + }, + { + "name": "set_help_sidebar", + "class": "$screen", + "static": false, + "line": 603, + "end_line": 603 + } + ] + } + }, + { + "name": "upgrade_074_term_descriptions", + "namespace": "", + "aliases": [], + "line": 611, + "end_line": 643, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$taxonomy", + "default": null, + "type": "" + } + ], + "doc": { + "description": "Upgrade the term descriptions for all of the terms in a given taxonomy", + "long_description": "", + "tags": [] + }, + "uses": { + "functions": [ + { + "name": "get_terms", + "line": 615, + "end_line": 615 + }, + { + "name": "base64_decode", + "line": 618, + "end_line": 618 + }, + { + "name": "is_serialized", + "line": 619, + "end_line": 619 + }, + { + "name": "stripslashes", + "line": 625, + "end_line": 625 + }, + { + "name": "htmlspecialchars_decode", + "line": 625, + "end_line": 625 + }, + { + "name": "json_decode", + "line": 626, + "end_line": 626 + }, + { + "name": "html_entity_decode", + "line": 632, + "end_line": 632 + }, + { + "name": "is_array", + "line": 631, + "end_line": 631 + }, + { + "name": "is_array", + "line": 628, + "end_line": 628 + }, + { + "name": "strpos", + "line": 624, + "end_line": 624 + }, + { + "name": "wp_update_term", + "line": 641, + "end_line": 641 + } + ], + "methods": [ + { + "name": "get_encoded_description", + "class": "\\EF_Module", + "static": false, + "line": 640, + "end_line": 640 + } + ] + } + } + ], + "doc": { + "description": "", + "long_description": "", + "tags": [] + } + } + ] + }, + { + "file": { + "description": "", + "long_description": "", + "tags": [] + }, + "path": "common\/php\/screen-options.php", + "root": "\/Users\/connor.jennings\/code\/vagrant-local\/www\/wordpress-default\/wp-content\/plugins\/Edit-Flow", + "uses": { + "functions": [ + { + "name": "class_exists", + "line": 5, + "end_line": 5 + }, + { + "name": "function_exists", + "line": 253, + "end_line": 253 + } + ] + }, + "functions": [ + { + "name": "add_screen_options_panel", + "namespace": "global", + "aliases": [], + "line": 268, + "end_line": 280, + "arguments": [ + { + "name": "$id", + "default": null, + "type": "" + }, + { + "name": "$title", + "default": null, + "type": "" + }, + { + "name": "$callback", + "default": null, + "type": "" + }, + { + "name": "$page", + "default": null, + "type": "" + }, + { + "name": "$save_callback", + "default": "null", + "type": "" + }, + { + "name": "$autosave", + "default": "false", + "type": "" + } + ], + "doc": { + "description": "Add a new settings panel to the \"Screen Options\" box.", + "long_description": "", + "tags": [ + { + "name": "see", + "content": "", + "refers": "wsScreenOptions10::add_screen_options_panel()" + }, + { + "name": "param", + "content": "String to use in the 'id' attribute of the settings panel. Should be unique.", + "types": [ + "string" + ], + "variable": "$id" + }, + { + "name": "param", + "content": "Title of the settings panel. Set to an empty string to omit title.", + "types": [ + "string" + ], + "variable": "$title" + }, + { + "name": "param", + "content": "Function that fills the panel with the desired content. Should return its output.", + "types": [ + "callback" + ], + "variable": "$callback" + }, + { + "name": "param", + "content": "The page(s) on which to show the panel (similar to add_meta_box()).", + "types": [ + "string", + "array" + ], + "variable": "$page" + }, + { + "name": "param", + "content": "Optional. Function that saves the settings contained in the panel.", + "types": [ + "callback" + ], + "variable": "$save_callback" + }, + { + "name": "param", + "content": "Optional. If set, settings will be automatically saved (via AJAX) when the value of any input element in the panel changes. Defaults to false.", + "types": [ + "bool" + ], + "variable": "$autosave" + }, + { + "name": "return", + "content": "", + "types": [ + "void" + ] + } + ] + }, + "hooks": [], + "uses": { + "functions": [ + { + "name": "uksort", + "line": 274, + "end_line": 274 + }, + { + "name": "end", + "line": 275, + "end_line": 275 + }, + { + "name": "is_null", + "line": 272, + "end_line": 272 + } + ], + "methods": [ + { + "name": "__construct", + "class": "$className", + "static": false, + "line": 276, + "end_line": 276 + }, + { + "name": "add_screen_options_panel", + "class": "$instance", + "static": false, + "line": 279, + "end_line": 279 + } + ] + } + } + ], + "classes": [ + { + "name": "wsScreenOptions10", + "namespace": "global", + "line": 17, + "end_line": 241, + "final": false, + "abstract": false, + "extends": "", + "implements": [], + "properties": [ + { + "name": "$registered_panels", + "line": 18, + "end_line": 18, + "default": null, + "static": false, + "visibility": "public", + "doc": { + "description": "", + "long_description": "", + "tags": [] + } + }, + { + "name": "$page_panels", + "line": 19, + "end_line": 19, + "default": null, + "static": false, + "visibility": "public", + "doc": { + "description": "", + "long_description": "", + "tags": [] + } + } + ], + "methods": [ + { + "name": "wsScreenOptions10", + "namespace": "", + "aliases": [], + "line": 26, + "end_line": 32, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [], + "doc": { + "description": "Class constructor", + "long_description": "", + "tags": [ + { + "name": "return", + "content": "", + "types": [ + "void" + ] + } + ] + }, + "uses": { + "functions": [ + { + "name": "add_filter", + "line": 30, + "end_line": 30 + }, + { + "name": "add_action", + "line": 31, + "end_line": 31 + } + ] + } + }, + { + "name": "add_screen_options_panel", + "namespace": "", + "aliases": [], + "line": 45, + "end_line": 74, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$id", + "default": null, + "type": "" + }, + { + "name": "$title", + "default": null, + "type": "" + }, + { + "name": "$callback", + "default": null, + "type": "" + }, + { + "name": "$page", + "default": null, + "type": "" + }, + { + "name": "$save_callback", + "default": "null", + "type": "" + }, + { + "name": "$autosave", + "default": "false", + "type": "" + } + ], + "doc": { + "description": "Add a new settings panel to the \"Screen Options\" box.", + "long_description": "", + "tags": [ + { + "name": "param", + "content": "String to use in the 'id' attribute of the settings panel. Should be unique.", + "types": [ + "string" + ], + "variable": "$id" + }, + { + "name": "param", + "content": "Title of the settings panel. Set to an empty string to omit title.", + "types": [ + "string" + ], + "variable": "$title" + }, + { + "name": "param", + "content": "Function that fills the panel with the desired content. Should return its output.", + "types": [ + "callback" + ], + "variable": "$callback" + }, + { + "name": "param", + "content": "The page(s) on which to show the panel (similar to add_meta_box()).", + "types": [ + "string", + "array" + ], + "variable": "$page" + }, + { + "name": "param", + "content": "Optional. Function that saves the settings.", + "types": [ + "callback" + ], + "variable": "$save_callback" + }, + { + "name": "param", + "content": "Optional. If se, settings will be automatically saved (via AJAX) when the value of any input element in the panel changes. Defaults to false.", + "types": [ + "bool" + ], + "variable": "$autosave" + }, + { + "name": "return", + "content": "", + "types": [ + "void" + ] + } + ] + }, + "uses": { + "functions": [ + { + "name": "is_array", + "line": 46, + "end_line": 46 + }, + { + "name": "array_map", + "line": 50, + "end_line": 50 + }, + { + "name": "array_unique", + "line": 51, + "end_line": 51 + }, + { + "name": "add_action", + "line": 62, + "end_line": 62 + } + ] + } + }, + { + "name": "page_to_screen_id", + "namespace": "", + "aliases": [], + "line": 85, + "end_line": 96, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$page", + "default": null, + "type": "" + } + ], + "doc": { + "description": "Convert a page hook name to a screen ID.", + "long_description": "", + "tags": [ + { + "name": "uses", + "content": "", + "refers": "convert_to_screen()" + }, + { + "name": "access", + "content": "private" + }, + { + "name": "param", + "content": "", + "types": [ + "string" + ], + "variable": "$page" + }, + { + "name": "return", + "content": "", + "types": [ + "string" + ] + } + ] + }, + "uses": { + "functions": [ + { + "name": "convert_to_screen", + "line": 87, + "end_line": 87 + }, + { + "name": "str_replace", + "line": 94, + "end_line": 94 + }, + { + "name": "function_exists", + "line": 86, + "end_line": 86 + } + ] + } + }, + { + "name": "append_screen_settings", + "namespace": "", + "aliases": [], + "line": 108, + "end_line": 155, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$current", + "default": null, + "type": "" + }, + { + "name": "$screen", + "default": null, + "type": "" + } + ], + "doc": { + "description": "Append custom panel HTML to the \"Screen Options\" box of the current page.", + "long_description": "

Callback for the 'screen_settings' filter (available in WP 3.0 and up).<\/p>", + "tags": [ + { + "name": "access", + "content": "private" + }, + { + "name": "param", + "content": "", + "types": [ + "string" + ], + "variable": "$current" + }, + { + "name": "param", + "content": "Screen object (undocumented).", + "types": [ + "string" + ], + "variable": "$screen" + }, + { + "name": "return", + "content": "The HTML code to append to "Screen Options"", + "types": [ + "string" + ] + } + ] + }, + "uses": { + "methods": [ + { + "name": "get_panels_for_screen", + "class": "\\wsScreenOptions10", + "static": false, + "line": 117, + "end_line": 117 + } + ], + "functions": [ + { + "name": "call_user_func", + "line": 132, + "end_line": 132 + }, + { + "name": "sprintf", + "line": 141, + "end_line": 148 + }, + { + "name": "esc_attr", + "line": 143, + "end_line": 143 + }, + { + "name": "implode", + "line": 144, + "end_line": 144 + }, + { + "name": "esc_attr", + "line": 145, + "end_line": 145 + }, + { + "name": "wp_create_nonce", + "line": 146, + "end_line": 146 + }, + { + "name": "is_callable", + "line": 131, + "end_line": 131 + } + ] + } + }, + { + "name": "ajax_save_callback", + "namespace": "", + "aliases": [], + "line": 163, + "end_line": 185, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [], + "doc": { + "description": "AJAX callback for the \"Screen Options\" autosave.", + "long_description": "", + "tags": [ + { + "name": "access", + "content": "private" + }, + { + "name": "return", + "content": "", + "types": [ + "void" + ] + } + ] + }, + "uses": { + "functions": [ + { + "name": "end", + "line": 169, + "end_line": 169 + }, + { + "name": "explode", + "line": 169, + "end_line": 169 + }, + { + "name": "check_ajax_referer", + "line": 172, + "end_line": 172 + }, + { + "name": "call_user_func", + "line": 180, + "end_line": 180 + }, + { + "name": "is_callable", + "line": 179, + "end_line": 179 + } + ] + } + }, + { + "name": "add_autosave_script", + "namespace": "", + "aliases": [], + "line": 195, + "end_line": 218, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [], + "doc": { + "description": "Add\/enqueue supporting JavaScript for the autosave function of custom \"Screen Options\" panels.", + "long_description": "

Checks if the current page is supposed to contain any autosave-enabled panels and adds the script only if that's the case.<\/p>", + "tags": [ + { + "name": "return", + "content": "", + "types": [ + "void" + ] + } + ] + }, + "uses": { + "methods": [ + { + "name": "get_panels_for_screen", + "class": "\\wsScreenOptions10", + "static": false, + "line": 200, + "end_line": 200 + } + ], + "functions": [ + { + "name": "wp_enqueue_script", + "line": 216, + "end_line": 216 + } + ] + } + }, + { + "name": "get_panels_for_screen", + "namespace": "", + "aliases": [], + "line": 227, + "end_line": 240, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$screen_id", + "default": null, + "type": "" + }, + { + "name": "$page", + "default": "''", + "type": "" + } + ], + "doc": { + "description": "Get custom panels registered for a particular screen and\/or page.", + "long_description": "", + "tags": [ + { + "name": "param", + "content": "Screen ID.", + "types": [ + "string" + ], + "variable": "$screen_id" + }, + { + "name": "param", + "content": "Optional. Page filename or hook name.", + "types": [ + "string" + ], + "variable": "$page" + }, + { + "name": "return", + "content": "Array of custom panels.", + "types": [ + "array" + ] + } + ] + }, + "uses": { + "methods": [ + { + "name": "page_to_screen_id", + "class": "\\wsScreenOptions10", + "static": false, + "line": 234, + "end_line": 234 + } + ], + "functions": [ + { + "name": "array_merge", + "line": 236, + "end_line": 236 + }, + { + "name": "array_unique", + "line": 239, + "end_line": 239 + } + ] + } + } + ], + "doc": { + "description": "Class for adding new panels to the \"Screen Options\" box.", + "long_description": "

Do not access this class directly. Instead, use the add_screen_options_panel() function.<\/p>", + "tags": [ + { + "name": "author", + "content": "Janis Elsts" + }, + { + "name": "copyright", + "content": "2010" + }, + { + "name": "version", + "content": "1.0" + }, + { + "name": "access", + "content": "public" + } + ] + } + } + ] + }, + { + "file": { + "description": "", + "long_description": "", + "tags": [] + }, + "path": "common\/php\/util.php", + "root": "\/Users\/connor.jennings\/code\/vagrant-local\/www\/wordpress-default\/wp-content\/plugins\/Edit-Flow", + "uses": { + "functions": [ + { + "name": "function_exists", + "line": 3, + "end_line": 3 + } + ] + }, + "functions": [ + { + "name": "ef_draft_or_post_title", + "namespace": "global", + "aliases": [], + "line": 12, + "end_line": 15, + "arguments": [ + { + "name": "$post_id", + "default": "0", + "type": "" + } + ], + "doc": { + "description": "Copy of core's _draft_or_post_title without the filters", + "long_description": "

The post title is fetched and if it is blank then a default string is returned.<\/p>", + "tags": [ + { + "name": "param", + "content": "The post id. If not supplied the global $post is used.", + "types": [ + "int" + ], + "variable": "$post_id" + }, + { + "name": "return", + "content": "The post title if set", + "types": [ + "string" + ] + } + ] + }, + "hooks": [], + "uses": { + "functions": [ + { + "name": "get_post", + "line": 13, + "end_line": 13 + }, + { + "name": "__", + "line": 14, + "end_line": 14 + } + ] + } + } + ] + }, + { + "file": { + "description": "", + "long_description": "", + "tags": [] + }, + "path": "edit_flow.php", + "root": "\/Users\/connor.jennings\/code\/vagrant-local\/www\/wordpress-default\/wp-content\/plugins\/Edit-Flow", + "uses": { + "functions": [ + { + "name": "define", + "line": 31, + "end_line": 31 + }, + { + "name": "define", + "line": 32, + "end_line": 32 + }, + { + "name": "dirname", + "line": 32, + "end_line": 32 + }, + { + "name": "define", + "line": 33, + "end_line": 33 + }, + { + "name": "basename", + "line": 33, + "end_line": 33 + }, + { + "name": "define", + "line": 34, + "end_line": 34 + }, + { + "name": "plugins_url", + "line": 34, + "end_line": 34 + }, + { + "name": "define", + "line": 35, + "end_line": 35 + }, + { + "name": "add_query_arg", + "line": 35, + "end_line": 35 + }, + { + "name": "get_admin_url", + "line": 35, + "end_line": 35 + }, + { + "name": "add_action", + "line": 383, + "end_line": 383 + } + ] + }, + "includes": [ + { + "name": "", + "line": 92, + "type": "Require Once" + }, + { + "name": "", + "line": 95, + "type": "Require Once" + }, + { + "name": "", + "line": 102, + "type": "Include Once" + }, + { + "name": "", + "line": 121, + "type": "Require Once" + } + ], + "constants": [ + { + "name": "EDIT_FLOW_VERSION", + "line": 31, + "value": "'0.8.2-alpha'" + }, + { + "name": "EDIT_FLOW_ROOT", + "line": 32, + "value": "dirname(__FILE__)" + }, + { + "name": "EDIT_FLOW_FILE_PATH", + "line": 33, + "value": "EDIT_FLOW_ROOT . '\/' . basename(__FILE__)" + }, + { + "name": "EDIT_FLOW_URL", + "line": 34, + "value": "plugins_url('\/', __FILE__)" + }, + { + "name": "EDIT_FLOW_SETTINGS_PAGE", + "line": 35, + "value": "add_query_arg('page', 'ef-settings', get_admin_url(null, 'admin.php'))" + } + ], + "functions": [ + { + "name": "EditFlow", + "namespace": "global", + "aliases": [], + "line": 380, + "end_line": 382, + "arguments": [], + "doc": { + "description": "", + "long_description": "", + "tags": [] + }, + "hooks": [], + "uses": { + "methods": [ + { + "name": "instance", + "class": "\\edit_flow", + "static": true, + "line": 381, + "end_line": 381 + } + ] + } + } + ], + "classes": [ + { + "name": "edit_flow", + "namespace": "global", + "line": 38, + "end_line": 378, + "final": false, + "abstract": false, + "extends": "", + "implements": [], + "properties": [ + { + "name": "$options_group", + "line": 41, + "end_line": 41, + "default": "'edit_flow_'", + "static": false, + "visibility": "public", + "doc": { + "description": "", + "long_description": "", + "tags": [] + } + }, + { + "name": "$options_group_name", + "line": 42, + "end_line": 42, + "default": "'edit_flow_options'", + "static": false, + "visibility": "public", + "doc": { + "description": "", + "long_description": "", + "tags": [] + } + }, + { + "name": "$instance", + "line": 47, + "end_line": 47, + "default": null, + "static": true, + "visibility": "private", + "doc": { + "description": "", + "long_description": "", + "tags": [ + { + "name": "var", + "content": "The one true EditFlow", + "types": [ + "\\EditFlow" + ], + "variable": "" + } + ] + } + } + ], + "methods": [ + { + "name": "instance", + "namespace": "", + "aliases": [], + "line": 63, + "end_line": 73, + "final": false, + "abstract": false, + "static": true, + "visibility": "public", + "arguments": [], + "doc": { + "description": "Main EditFlow Instance", + "long_description": "

Insures that only one instance of EditFlow exists in memory at any one time. Also prevents needing to define globals all over the place.<\/p>", + "tags": [ + { + "name": "since", + "content": "EditFlow 0.7.4", + "description": "EditFlow 0.7.4" + }, + { + "name": "staticvar", + "content": "array $instance" + }, + { + "name": "uses", + "content": "Setup the globals needed", + "refers": "EditFlow::setup_globals()" + }, + { + "name": "uses", + "content": "Include the required files", + "refers": "EditFlow::includes()" + }, + { + "name": "uses", + "content": "Setup the hooks and actions", + "refers": "EditFlow::setup_actions()" + }, + { + "name": "see", + "content": "", + "refers": "EditFlow()" + }, + { + "name": "return", + "content": "one true EditFlow", + "types": [ + "\\The" + ] + } + ] + }, + "uses": { + "methods": [ + { + "name": "__construct", + "class": "\\edit_flow", + "static": false, + "line": 65, + "end_line": 65 + }, + { + "name": "setup_globals", + "class": "self::$instance", + "static": false, + "line": 66, + "end_line": 66 + }, + { + "name": "setup_actions", + "class": "self::$instance", + "static": false, + "line": 67, + "end_line": 67 + } + ] + } + }, + { + "name": "__construct", + "namespace": "", + "aliases": [], + "line": 75, + "end_line": 77, + "final": false, + "abstract": false, + "static": false, + "visibility": "private", + "arguments": [], + "doc": { + "description": "", + "long_description": "", + "tags": [] + } + }, + { + "name": "setup_globals", + "namespace": "", + "aliases": [], + "line": 79, + "end_line": 83, + "final": false, + "abstract": false, + "static": false, + "visibility": "private", + "arguments": [], + "doc": { + "description": "", + "long_description": "", + "tags": [] + }, + "uses": { + "methods": [ + { + "name": "__construct", + "class": "\\stdClass", + "static": false, + "line": 81, + "end_line": 81 + } + ] + } + }, + { + "name": "load_modules", + "namespace": "", + "aliases": [], + "line": 88, + "end_line": 139, + "final": false, + "abstract": false, + "static": false, + "visibility": "private", + "arguments": [], + "doc": { + "description": "Include the common resources to Edit Flow and dynamically load the modules", + "long_description": "", + "tags": [] + }, + "uses": { + "functions": [ + { + "name": "class_exists", + "line": 91, + "end_line": 91 + }, + { + "name": "scandir", + "line": 98, + "end_line": 98 + }, + { + "name": "explode", + "line": 104, + "end_line": 104 + }, + { + "name": "ucfirst", + "line": 108, + "end_line": 108 + }, + { + "name": "rtrim", + "line": 111, + "end_line": 111 + }, + { + "name": "rtrim", + "line": 112, + "end_line": 112 + }, + { + "name": "file_exists", + "line": 101, + "end_line": 101 + }, + { + "name": "class_exists", + "line": 126, + "end_line": 126 + }, + { + "name": "do_action", + "line": 137, + "end_line": 137 + } + ], + "methods": [ + { + "name": "__construct", + "class": "\\EF_Module", + "static": false, + "line": 118, + "end_line": 118 + }, + { + "name": "__construct", + "class": "$class_name", + "static": false, + "line": 127, + "end_line": 127 + } + ] + }, + "hooks": [ + { + "name": "ef_modules_loaded", + "line": 137, + "end_line": 137, + "type": "action", + "arguments": [], + "doc": { + "description": "Fires after edit_flow has loaded all Edit Flow internal modules.", + "long_description": "

Plugin authors can hook into this action, include their own modules add them to the $edit_flow object<\/p>", + "tags": [] + } + } + ] + }, + { + "name": "setup_actions", + "namespace": "", + "aliases": [], + "line": 148, + "end_line": 162, + "final": false, + "abstract": false, + "static": false, + "visibility": "private", + "arguments": [], + "doc": { + "description": "Setup the default hooks and actions", + "long_description": "", + "tags": [ + { + "name": "since", + "content": "EditFlow 0.7.4", + "description": "EditFlow 0.7.4" + }, + { + "name": "access", + "content": "private" + }, + { + "name": "uses", + "content": "To add various actions", + "refers": "add_action()" + } + ] + }, + "uses": { + "functions": [ + { + "name": "add_action", + "line": 149, + "end_line": 149 + }, + { + "name": "add_action", + "line": 150, + "end_line": 150 + }, + { + "name": "add_action", + "line": 152, + "end_line": 152 + }, + { + "name": "do_action_ref_array", + "line": 161, + "end_line": 161 + } + ] + }, + "hooks": [ + { + "name": "editflow_after_setup_actions", + "line": 161, + "end_line": 161, + "type": "action_reference", + "arguments": [ + "array(&$this)" + ], + "doc": { + "description": "Fires after setup of all edit_flow actions.", + "long_description": "

Plugin authors can hook into this action to manipulate the edit_flow class after initial actions have been registered.<\/p>", + "tags": [ + { + "name": "param", + "content": "The core edit flow class", + "types": [ + "\\edit_flow" + ], + "variable": "$this" + } + ] + } + } + ] + }, + { + "name": "action_init", + "namespace": "", + "aliases": [], + "line": 168, + "end_line": 190, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [], + "doc": { + "description": "Inititalizes the Edit Flows! Loads options for each registered module and then initializes it if it's active", + "long_description": "", + "tags": [] + }, + "uses": { + "functions": [ + { + "name": "load_plugin_textdomain", + "line": 170, + "end_line": 170 + }, + { + "name": "dirname", + "line": 170, + "end_line": 170 + }, + { + "name": "plugin_basename", + "line": 170, + "end_line": 170 + }, + { + "name": "do_action", + "line": 189, + "end_line": 189 + } + ], + "methods": [ + { + "name": "load_modules", + "class": "\\edit_flow", + "static": false, + "line": 172, + "end_line": 172 + }, + { + "name": "load_module_options", + "class": "\\edit_flow", + "static": false, + "line": 175, + "end_line": 175 + }, + { + "name": "init", + "class": "$this->{$mod_name}", + "static": false, + "line": 181, + "end_line": 181 + } + ] + }, + "hooks": [ + { + "name": "ef_init", + "line": 189, + "end_line": 189, + "type": "action", + "arguments": [], + "doc": { + "description": "Fires after edit_flow has loaded all modules and module options.", + "long_description": "

Plugin authors can hook into this action to trigger functionaltiy after all Edit Flow module's have been loaded.<\/p>", + "tags": [] + } + } + ] + }, + { + "name": "action_admin_init", + "namespace": "", + "aliases": [], + "line": 195, + "end_line": 221, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [], + "doc": { + "description": "Initialize the plugin for the admin", + "long_description": "", + "tags": [] + }, + "uses": { + "functions": [ + { + "name": "get_option", + "line": 198, + "end_line": 198 + }, + { + "name": "method_exists", + "line": 201, + "end_line": 201 + }, + { + "name": "update_option", + "line": 204, + "end_line": 204 + }, + { + "name": "update_option", + "line": 206, + "end_line": 206 + }, + { + "name": "version_compare", + "line": 199, + "end_line": 199 + }, + { + "name": "method_exists", + "line": 213, + "end_line": 213 + } + ], + "methods": [ + { + "name": "upgrade", + "class": "$this->{$mod_name}", + "static": false, + "line": 202, + "end_line": 202 + }, + { + "name": "install", + "class": "$this->{$mod_name}", + "static": false, + "line": 214, + "end_line": 214 + }, + { + "name": "update_module_option", + "class": "\\edit_flow", + "static": false, + "line": 215, + "end_line": 215 + }, + { + "name": "register_scripts_and_styles", + "class": "\\edit_flow", + "static": false, + "line": 219, + "end_line": 219 + } + ] + } + }, + { + "name": "register_module", + "namespace": "", + "aliases": [], + "line": 226, + "end_line": 278, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$name", + "default": null, + "type": "" + }, + { + "name": "$args", + "default": "array()", + "type": "" + } + ], + "doc": { + "description": "Register a new module with Edit Flow", + "long_description": "", + "tags": [] + }, + "uses": { + "functions": [ + { + "name": "__", + "line": 242, + "end_line": 242 + }, + { + "name": "__", + "line": 245, + "end_line": 245 + }, + { + "name": "__", + "line": 246, + "end_line": 246 + }, + { + "name": "__", + "line": 247, + "end_line": 247 + }, + { + "name": "__", + "line": 248, + "end_line": 248 + }, + { + "name": "__", + "line": 249, + "end_line": 249 + }, + { + "name": "array_merge", + "line": 254, + "end_line": 254 + }, + { + "name": "array_merge", + "line": 255, + "end_line": 255 + }, + { + "name": "add_action", + "line": 265, + "end_line": 265 + }, + { + "name": "do_action", + "line": 276, + "end_line": 276 + } + ] + }, + "hooks": [ + { + "name": "ef_module_registered", + "line": 276, + "end_line": 276, + "type": "action", + "arguments": [ + "$name" + ], + "doc": { + "description": "Fires after edit_flow has registered a module.", + "long_description": "

Plugin authors can hook into this action to trigger functionaltiy after a module has been loaded.<\/p>", + "tags": [ + { + "name": "param", + "content": "The name of the registered module", + "types": [ + "string" + ], + "variable": "$name" + } + ] + } + } + ] + }, + { + "name": "load_module_options", + "namespace": "", + "aliases": [], + "line": 284, + "end_line": 304, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [], + "doc": { + "description": "Load all of the module options from the database If a given option isn't yet set, then set it to the module's default (upgrades, etc.)", + "long_description": "", + "tags": [] + }, + "uses": { + "functions": [ + { + "name": "get_option", + "line": 288, + "end_line": 288 + }, + { + "name": "do_action", + "line": 303, + "end_line": 303 + } + ], + "methods": [ + { + "name": "__construct", + "class": "\\stdClass", + "static": false, + "line": 288, + "end_line": 288 + } + ] + }, + "hooks": [ + { + "name": "ef_module_options_loaded", + "line": 303, + "end_line": 303, + "type": "action", + "arguments": [], + "doc": { + "description": "Fires after edit_flow has loaded all of the module options from the database.", + "long_description": "

Plugin authors can hook into this action to read and manipulate module settings.<\/p>", + "tags": [] + } + } + ] + }, + { + "name": "action_init_after", + "namespace": "", + "aliases": [], + "line": 311, + "end_line": 319, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [], + "doc": { + "description": "Load the post type options again so we give add_post_type_support() a chance to work", + "long_description": "", + "tags": [ + { + "name": "see", + "content": "", + "refers": "http:\/\/dev.editflow.org\/2011\/11\/17\/edit-flow-v0-7-alpha2-notes\/#comment-232" + } + ] + }, + "uses": { + "methods": [ + { + "name": "clean_post_type_options", + "class": "$this->helpers", + "static": false, + "line": 315, + "end_line": 315 + } + ] + } + }, + { + "name": "get_module_by", + "namespace": "", + "aliases": [], + "line": 327, + "end_line": 341, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$key", + "default": null, + "type": "" + }, + { + "name": "$value", + "default": null, + "type": "" + } + ], + "doc": { + "description": "Get a module by one of its descriptive values", + "long_description": "", + "tags": [ + { + "name": "param", + "content": "The property to use for searching a module (ex: 'name')", + "types": [ + "string" + ], + "variable": "$key" + }, + { + "name": "param", + "content": "The value to compare (using ==)", + "types": [ + "string", + "int", + "array" + ], + "variable": "$value" + } + ] + } + }, + { + "name": "update_module_option", + "namespace": "", + "aliases": [], + "line": 346, + "end_line": 350, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$mod_name", + "default": null, + "type": "" + }, + { + "name": "$key", + "default": null, + "type": "" + }, + { + "name": "$value", + "default": null, + "type": "" + } + ], + "doc": { + "description": "Update the $edit_flow object with new value and save to the database", + "long_description": "", + "tags": [] + }, + "uses": { + "functions": [ + { + "name": "update_option", + "line": 349, + "end_line": 349 + } + ] + } + }, + { + "name": "update_all_module_options", + "namespace": "", + "aliases": [], + "line": 352, + "end_line": 358, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$mod_name", + "default": null, + "type": "" + }, + { + "name": "$new_options", + "default": null, + "type": "" + } + ], + "doc": { + "description": "", + "long_description": "", + "tags": [] + }, + "uses": { + "functions": [ + { + "name": "is_array", + "line": 353, + "end_line": 353 + }, + { + "name": "update_option", + "line": 357, + "end_line": 357 + } + ] + } + }, + { + "name": "register_scripts_and_styles", + "namespace": "", + "aliases": [], + "line": 363, + "end_line": 376, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [], + "doc": { + "description": "Registers commonly used scripts + styles for easy enqueueing", + "long_description": "", + "tags": [] + }, + "uses": { + "functions": [ + { + "name": "wp_enqueue_style", + "line": 364, + "end_line": 364 + }, + { + "name": "wp_register_script", + "line": 366, + "end_line": 366 + }, + { + "name": "wp_register_style", + "line": 367, + "end_line": 367 + }, + { + "name": "wp_register_script", + "line": 369, + "end_line": 369 + }, + { + "name": "wp_register_script", + "line": 375, + "end_line": 375 + } + ] + } + } + ], + "doc": { + "description": "", + "long_description": "", + "tags": [] + } + } + ] + }, + { + "file": { + "description": "class EF_Calendar This class displays an editorial calendar for viewing upcoming and past content at a glance", + "long_description": "", + "tags": [ + { + "name": "author", + "content": "danielbachhuber" + } + ] + }, + "path": "modules\/calendar\/calendar.php", + "root": "\/Users\/connor.jennings\/code\/vagrant-local\/www\/wordpress-default\/wp-content\/plugins\/Edit-Flow", + "uses": { + "functions": [ + { + "name": "class_exists", + "line": 8, + "end_line": 8 + } + ] + }, + "includes": [ + { + "name": "", + "line": 89, + "type": "Require Once" + } + ], + "classes": [ + { + "name": "EF_Calendar", + "namespace": "global", + "line": 10, + "end_line": 1826, + "final": false, + "abstract": false, + "extends": "\\EF_Module", + "implements": [], + "properties": [ + { + "name": "$module", + "line": 15, + "end_line": 15, + "default": null, + "static": false, + "visibility": "public", + "doc": { + "description": "", + "long_description": "", + "tags": [] + } + }, + { + "name": "$start_date", + "line": 17, + "end_line": 17, + "default": "''", + "static": false, + "visibility": "public", + "doc": { + "description": "", + "long_description": "", + "tags": [] + } + }, + { + "name": "$current_week", + "line": 18, + "end_line": 18, + "default": "1", + "static": false, + "visibility": "public", + "doc": { + "description": "", + "long_description": "", + "tags": [] + } + }, + { + "name": "$total_weeks", + "line": 19, + "end_line": 19, + "default": "6", + "static": false, + "visibility": "public", + "doc": { + "description": "", + "long_description": "", + "tags": [] + } + }, + { + "name": "$hidden", + "line": 20, + "end_line": 20, + "default": "0", + "static": false, + "visibility": "public", + "doc": { + "description": "", + "long_description": "", + "tags": [] + } + }, + { + "name": "$max_visible_posts_per_date", + "line": 21, + "end_line": 21, + "default": "4", + "static": false, + "visibility": "public", + "doc": { + "description": "", + "long_description": "", + "tags": [] + } + }, + { + "name": "$post_date_cache", + "line": 23, + "end_line": 23, + "default": "array()", + "static": false, + "visibility": "private", + "doc": { + "description": "", + "long_description": "", + "tags": [] + } + }, + { + "name": "$post_li_html_cache_key", + "line": 24, + "end_line": 24, + "default": "'ef_calendar_post_li_html'", + "static": true, + "visibility": "private", + "doc": { + "description": "", + "long_description": "", + "tags": [] + } + } + ], + "methods": [ + { + "name": "__construct", + "namespace": "", + "aliases": [], + "line": 29, + "end_line": 68, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [], + "doc": { + "description": "Construct the EF_Calendar class", + "long_description": "", + "tags": [] + }, + "uses": { + "methods": [ + { + "name": "get_module_url", + "class": "\\EF_Calendar", + "static": false, + "line": 31, + "end_line": 31 + }, + { + "name": "register_module", + "class": "EditFlow()", + "static": false, + "line": 66, + "end_line": 66 + } + ], + "functions": [ + { + "name": "__", + "line": 34, + "end_line": 34 + }, + { + "name": "sprintf", + "line": 35, + "end_line": 35 + }, + { + "name": "__", + "line": 35, + "end_line": 35 + }, + { + "name": "admin_url", + "line": 35, + "end_line": 35 + }, + { + "name": "__", + "line": 36, + "end_line": 36 + }, + { + "name": "__", + "line": 52, + "end_line": 52 + }, + { + "name": "__", + "line": 53, + "end_line": 53 + }, + { + "name": "__", + "line": 54, + "end_line": 54 + }, + { + "name": "__", + "line": 55, + "end_line": 55 + }, + { + "name": "__", + "line": 58, + "end_line": 58 + }, + { + "name": "__", + "line": 61, + "end_line": 61 + }, + { + "name": "__", + "line": 62, + "end_line": 62 + }, + { + "name": "__", + "line": 64, + "end_line": 64 + }, + { + "name": "EditFlow", + "line": 66, + "end_line": 66 + } + ] + } + }, + { + "name": "init", + "namespace": "", + "aliases": [], + "line": 75, + "end_line": 116, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [], + "doc": { + "description": "Initialize all of our methods and such. Only runs if the module is active", + "long_description": "", + "tags": [ + { + "name": "uses", + "content": "", + "refers": "add_action()" + } + ] + }, + "uses": { + "functions": [ + { + "name": "add_action", + "line": 78, + "end_line": 78 + }, + { + "name": "add_action", + "line": 79, + "end_line": 79 + }, + { + "name": "apply_filters", + "line": 83, + "end_line": 83 + }, + { + "name": "current_user_can", + "line": 84, + "end_line": 84 + }, + { + "name": "apply_filters", + "line": 87, + "end_line": 87 + }, + { + "name": "add_screen_options_panel", + "line": 90, + "end_line": 90 + }, + { + "name": "__", + "line": 90, + "end_line": 90 + }, + { + "name": "add_action", + "line": 91, + "end_line": 91 + }, + { + "name": "add_action", + "line": 93, + "end_line": 93 + }, + { + "name": "add_action", + "line": 94, + "end_line": 94 + }, + { + "name": "add_action", + "line": 95, + "end_line": 95 + }, + { + "name": "add_action", + "line": 96, + "end_line": 96 + }, + { + "name": "add_action", + "line": 99, + "end_line": 99 + }, + { + "name": "add_action", + "line": 102, + "end_line": 102 + }, + { + "name": "add_action", + "line": 105, + "end_line": 105 + }, + { + "name": "add_action", + "line": 108, + "end_line": 108 + }, + { + "name": "add_action", + "line": 111, + "end_line": 111 + }, + { + "name": "add_action", + "line": 114, + "end_line": 114 + }, + { + "name": "add_action", + "line": 115, + "end_line": 115 + } + ] + }, + "hooks": [ + { + "name": "ef_view_calendar_cap", + "line": 83, + "end_line": 83, + "type": "filter", + "arguments": [ + "$view_calendar_cap" + ], + "doc": { + "description": "", + "long_description": "", + "tags": [] + } + }, + { + "name": "ef_calendar_create_post_cap", + "line": 87, + "end_line": 87, + "type": "filter", + "arguments": [ + "'edit_posts'" + ], + "doc": { + "description": "", + "long_description": "", + "tags": [] + } + } + ] + }, + { + "name": "install", + "namespace": "", + "aliases": [], + "line": 123, + "end_line": 137, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [], + "doc": { + "description": "Load the capabilities onto users the first time the module is run", + "long_description": "", + "tags": [ + { + "name": "since", + "content": "0.7" + } + ] + }, + "uses": { + "methods": [ + { + "name": "add_caps_to_role", + "class": "\\EF_Calendar", + "static": false, + "line": 135, + "end_line": 135 + } + ] + } + }, + { + "name": "upgrade", + "namespace": "", + "aliases": [], + "line": 144, + "end_line": 161, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [ + { + "name": "$previous_version", + "default": null, + "type": "" + } + ], + "doc": { + "description": "Upgrade our data in case we need to", + "long_description": "", + "tags": [ + { + "name": "since", + "content": "0.7" + } + ] + }, + "uses": { + "functions": [ + { + "name": "get_option", + "line": 150, + "end_line": 150 + }, + { + "name": "delete_option", + "line": 155, + "end_line": 155 + }, + { + "name": "version_compare", + "line": 148, + "end_line": 148 + } + ], + "methods": [ + { + "name": "update_module_option", + "class": "$edit_flow", + "static": false, + "line": 154, + "end_line": 154 + }, + { + "name": "update_module_option", + "class": "$edit_flow", + "static": false, + "line": 158, + "end_line": 158 + } + ] + } + }, + { + "name": "action_admin_menu", + "namespace": "", + "aliases": [], + "line": 168, + "end_line": 170, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [], + "doc": { + "description": "Add the calendar link underneath the \"Dashboard\"", + "long_description": "", + "tags": [ + { + "name": "uses", + "content": "", + "refers": "add_submenu_page" + } + ] + }, + "uses": { + "functions": [ + { + "name": "add_submenu_page", + "line": 169, + "end_line": 169 + }, + { + "name": "__", + "line": 169, + "end_line": 169 + }, + { + "name": "__", + "line": 169, + "end_line": 169 + }, + { + "name": "apply_filters", + "line": 169, + "end_line": 169 + } + ] + }, + "hooks": [ + { + "name": "ef_view_calendar_cap", + "line": 169, + "end_line": 169, + "type": "filter", + "arguments": [ + "'ef_view_calendar'" + ], + "doc": { + "description": "", + "long_description": "", + "tags": [] + } + } + ] + }, + { + "name": "add_admin_styles", + "namespace": "", + "aliases": [], + "line": 177, + "end_line": 182, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [], + "doc": { + "description": "Add any necessary CSS to the WordPress admin", + "long_description": "", + "tags": [ + { + "name": "uses", + "content": "", + "refers": "wp_enqueue_style()" + } + ] + }, + "uses": { + "functions": [ + { + "name": "wp_enqueue_style", + "line": 181, + "end_line": 181 + } + ] + } + }, + { + "name": "enqueue_admin_scripts", + "namespace": "", + "aliases": [], + "line": 190, + "end_line": 211, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [], + "doc": { + "description": "Add any necessary JS to the WordPress admin", + "long_description": "", + "tags": [ + { + "name": "since", + "content": "0.7" + }, + { + "name": "uses", + "content": "", + "refers": "wp_enqueue_script()" + } + ] + }, + "uses": { + "methods": [ + { + "name": "enqueue_datepicker_resources", + "class": "\\EF_Calendar", + "static": false, + "line": 192, + "end_line": 192 + }, + { + "name": "is_whitelisted_functional_view", + "class": "\\EF_Calendar", + "static": false, + "line": 194, + "end_line": 194 + } + ], + "functions": [ + { + "name": "wp_enqueue_script", + "line": 203, + "end_line": 203 + }, + { + "name": "wp_enqueue_script", + "line": 205, + "end_line": 205 + }, + { + "name": "current_user_can", + "line": 207, + "end_line": 207 + }, + { + "name": "wp_localize_script", + "line": 208, + "end_line": 208 + } + ] + } + }, + { + "name": "generate_screen_options", + "namespace": "", + "aliases": [], + "line": 218, + "end_line": 245, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [], + "doc": { + "description": "Prepare the options that need to appear in Screen Options", + "long_description": "", + "tags": [ + { + "name": "since", + "content": "0.7" + } + ] + }, + "uses": { + "methods": [ + { + "name": "get_screen_options", + "class": "\\EF_Calendar", + "static": false, + "line": 221, + "end_line": 221 + } + ], + "functions": [ + { + "name": "__", + "line": 223, + "end_line": 223 + }, + { + "name": "esc_attr", + "line": 226, + "end_line": 226 + }, + { + "name": "selected", + "line": 226, + "end_line": 226 + }, + { + "name": "esc_attr", + "line": 226, + "end_line": 226 + }, + { + "name": "__", + "line": 230, + "end_line": 230 + }, + { + "name": "wp_get_current_user", + "line": 235, + "end_line": 235 + }, + { + "name": "md5", + "line": 236, + "end_line": 236 + }, + { + "name": "wp_get_current_user", + "line": 236, + "end_line": 236 + }, + { + "name": "add_query_arg", + "line": 238, + "end_line": 238 + }, + { + "name": "admin_url", + "line": 238, + "end_line": 238 + }, + { + "name": "__", + "line": 240, + "end_line": 240 + }, + { + "name": "esc_attr", + "line": 241, + "end_line": 241 + } + ] + } + }, + { + "name": "handle_save_screen_options", + "namespace": "", + "aliases": [], + "line": 252, + "end_line": 276, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [], + "doc": { + "description": "Handle the request to save the screen options", + "long_description": "", + "tags": [ + { + "name": "since", + "content": "0.7" + } + ] + }, + "uses": { + "functions": [ + { + "name": "wp_die", + "line": 260, + "end_line": 260 + }, + { + "name": "wp_verify_nonce", + "line": 259, + "end_line": 259 + }, + { + "name": "wp_get_current_user", + "line": 269, + "end_line": 269 + }, + { + "name": "menu_page_url", + "line": 273, + "end_line": 273 + }, + { + "name": "wp_redirect", + "line": 274, + "end_line": 274 + } + ], + "methods": [ + { + "name": "get_screen_options", + "class": "\\EF_Calendar", + "static": false, + "line": 263, + "end_line": 263 + }, + { + "name": "update_user_meta", + "class": "\\EF_Calendar", + "static": false, + "line": 270, + "end_line": 270 + } + ] + } + }, + { + "name": "handle_ajax_drag_and_drop", + "namespace": "", + "aliases": [], + "line": 288, + "end_line": 340, + "final": false, + "abstract": false, + "static": false, + "visibility": "public", + "arguments": [], + "doc": { + "description": "Handle an AJAX request from the calendar to update a post's timestamp.", + "long_description": "

Notes:<\/p>