Skip to content

Commit

Permalink
Further use, expansion of plugin API for Revisions integration
Browse files Browse the repository at this point in the history
  • Loading branch information
agapetry committed Jan 29, 2025
1 parent 6219809 commit 3bed1cd
Show file tree
Hide file tree
Showing 6 changed files with 50 additions and 188 deletions.
2 changes: 1 addition & 1 deletion common/php/class-module.php
Original file line number Diff line number Diff line change
Expand Up @@ -1156,7 +1156,7 @@ public function get_post_action_links($post, $can_edit_post) {
);
}

return $item_actions;
return apply_filters('publishpress_item_action_links', $item_actions, $post, $can_edit_post);
}

public function get_author_markup($post, $can_edit_post) {
Expand Down
27 changes: 3 additions & 24 deletions modules/calendar/calendar.php
Original file line number Diff line number Diff line change
Expand Up @@ -722,14 +722,7 @@ public function update_user_filters($request_filter = [])
*
* @return array
*/
$this->filters = apply_filters('publishpress_content_calendar_filters', $filters);

if (isset($this->filters['post_status'])) {
$this->filters['revision_status'] = $this->filters['post_status'];
$this->filters['revision_status'] = __('Revision Status', 'publishpress');
} else {
unset($this->filters['revision_status']);
}
$this->filters = apply_filters('publishpress_content_calendar_filters', $filters, 'update_user_filters');

$this->filters = array_merge([
'weeks' => __('Weeks', 'publishpress'),
Expand Down Expand Up @@ -983,32 +976,18 @@ public function get_content_calendar_datas() {

$datas['content_calendar_filters'] = is_array($content_calendar_filters) ? $content_calendar_filters : [
'post_status' => esc_html__('Status', 'publishpress'),
'revision_status' => esc_html__('Revision Status', 'publishpress'),
'author' => esc_html__('Author', 'publishpress'),
'cpt' => esc_html__('Post Type', 'publishpress')
];

if (isset($datas['content_calendar_filters']['post_status'])) {
$datas['content_calendar_filters']['revision_status'] = esc_html__('Revision Status', 'publishpress');
}

if (isset($content_calendar_custom_filters['post_status'])) {
$content_calendar_custom_filters['revision_status'] = esc_html__('Revision Status', 'publishpress');
}

if (!function_exists('rvy_in_revision_workflow')) {
unset($datas['content_calendar_filters']['revision_status']);
unset($content_calendar_custom_filters['revision_status']);
}

$datas['content_calendar_custom_filters'] = is_array($content_calendar_custom_filters) ? $content_calendar_custom_filters : [];

/**
* @param array $datas
*
* @return $datas
*/
$datas = apply_filters('publishpress_content_calendar_datas', $datas);
$datas = apply_filters('publishpress_content_calendar_datas', $datas, compact('content_calendar_filters', 'content_calendar_custom_filters'));

$this->content_calendar_datas = $datas;

Expand Down Expand Up @@ -1059,7 +1038,7 @@ public function render_admin_page()
*
* @return array
*/
$this->filters = apply_filters('publishpress_content_calendar_filters', $filters);
$this->filters = apply_filters('publishpress_content_calendar_filters', $filters, 'render_admin_page');

$this->form_filters = $this->get_content_calendar_form_filters();
$this->form_filter_list = array_merge(...array_values(array_column($this->form_filters, 'filters')));
Expand Down
51 changes: 25 additions & 26 deletions modules/calendar/library/calendar-methods.php
Original file line number Diff line number Diff line change
Expand Up @@ -769,31 +769,29 @@ public function getPostTypeFields($post_status_options)
wp_send_json([], 404);
}

$fields = [
'title' => [
'label' => __('Title', 'publishpress'),
'value' => null,
'type' => 'text',
],
'status' => [
'label' => __('Post Status', 'publishpress'),
'value' => 'draft',
'type' => 'status',
'options' => $post_status_options
],
'revision_status' => [
'label' => __('Revision Status', 'publishpress'),
'value' => 'draft',
'type' => 'status',
'options' => $post_status_options
],
'time' => [
'label' => __('Publish Time', 'publishpress'),
'value' => null,
'type' => 'time',
'placeholder' => isset($this->module->options->default_publish_time) ? $this->module->options->default_publish_time : null,
]
];
$fields = apply_filters(
'publishpress_calendar_post_type_fields',
[
'title' => [
'label' => __('Title', 'publishpress'),
'value' => null,
'type' => 'text',
],
'status' => [
'label' => __('Post Status', 'publishpress'),
'value' => 'draft',
'type' => 'status',
'options' => $post_status_options
],
'time' => [
'label' => __('Publish Time', 'publishpress'),
'value' => null,
'type' => 'time',
'placeholder' => isset($this->module->options->default_publish_time) ? $this->module->options->default_publish_time : null,
]
],
$post_status_options
);

if (current_user_can($postTypeObject->cap->edit_others_posts)) {
$fields['authors'] = [
Expand Down Expand Up @@ -1332,7 +1330,7 @@ public function getCalendarDataForMultipleWeeks($args = [], $context = 'dashboar
*
* @return array
*/
$filters = apply_filters('publishpress_content_calendar_filters', $filters);
$filters = apply_filters('publishpress_content_calendar_filters', $filters, 'get_calendar_data');

$enabled_filters = array_keys($filters);
$editorial_metadata = $method_args['terms_options'];
Expand Down Expand Up @@ -1542,6 +1540,7 @@ public function getCalendarDataForMultipleWeeks($args = [], $context = 'dashboar
if (isset($this->module->options->sort_by)) {
add_filter('posts_orderby', [$this, 'filterPostsOrderBy'], 10);
}

$post_results = new WP_Query($args);

$posts = [];
Expand Down
74 changes: 11 additions & 63 deletions modules/calendar/library/calendar-utilities.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ class PP_Calendar_Utilities

public static function content_calendar_filter_options($args)
{
$args = apply_filters('publishpress_calendar_filter_options_args', $args);

$select_id = $args['select_id'];
$select_name = $args['select_name'];
$filters = $args['user_filters'];
Expand All @@ -24,28 +26,8 @@ public static function content_calendar_filter_options($args)
$form_filter_list = $args['form_filter_list'];
$all_filters = $args['all_filters'];
$operator_labels = $args['operator_labels'];

switch ($select_id) {
case 'post_status':
case 'revision_status':
if (function_exists('rvy_revision_statuses')) {
if (class_exists('PublishPress_Statuses') && defined('PUBLISHPRESS_STATUSES_PRO_VERSION')) {
$revision_statuses = \PublishPress_Statuses::instance()->getPostStatuses(['for_revision' => true], 'object');
} else {
$revision_statuses = rvy_revision_statuses(['output' => 'object']);
}
} else {
$revision_statuses = [];
}

if ($revision_statuses) {
foreach ($post_statuses as $k => $status_obj) {
if (in_array($status_obj->slug, array_keys($revision_statuses))) {
unset($post_statuses[$k]);
}
}
}
}
$revision_statuses = (!empty($args['revision_statuses'])) ? $args['revision_statuses'] : [];

if (array_key_exists($select_id, $terms_options)) {
$select_id = 'metadata_key';
Expand Down Expand Up @@ -95,27 +77,6 @@ public static function content_calendar_filter_options($args)
<?php
break;

case 'revision_status':
$filter_label = esc_html__('Revision Status', 'publishpress');
?>
<select id="revision_status" name="revision_status"><!-- Status selectors -->
<option value=""><?php
_e('All statuses', 'publishpress'); ?></option>
<?php
foreach ($revision_statuses as $post_status) {
if ($post_status->name == $filters['post_status']) {
$selected_value = $post_status->label;
}
echo "<option value='" . esc_attr($post_status->name) . "' " . selected(
$post_status->name,
$filters['revision_status']
) . ">" . esc_html($post_status->label) . "</option>";
}
?>
</select>
<?php
break;

case 'taxonomy':
$taxonomySlug = isset($filters[$select_name]) ? sanitize_key($filters[$select_name]) : '';
$taxonomy = get_taxonomy($select_name);
Expand Down Expand Up @@ -391,7 +352,13 @@ class="date-time-pick"
break;

default:
if (array_key_exists($select_name, $form_filter_list)) {
if ($filter_vars = apply_filters('publishpress_calendar_custom_filter', false, $select_id, $args)) {
$filter_vars = (array) $filter_vars;

$filter_label = (isset($filter_vars['filter_label'])) ? $filter_vars['filter_label'] : '';
$selected_value = (isset($filter_vars['selected_value'])) ? $filter_vars['selected_value'] : '';

} elseif (array_key_exists($select_name, $form_filter_list)) {
$selected_value_meta = isset($filters[$select_name]) ? sanitize_text_field($filters[$select_name]) : '';
$filter_label = $all_filters[$select_name];
$selected_value = $selected_value_meta;
Expand Down Expand Up @@ -553,26 +520,7 @@ public static function get_calendar_filters($args) {
</div>
<?php

// force Revision Status selector to display right after Post Status
if (isset($calendar_filters['revision_status'])) {
$revision_status_filter = $calendar_filters['revision_status'];

$_calendar_filters = [];

foreach ($calendar_filters as $select_id => $filter) {
if ('revision_status' == $select_id) {
continue;
}

$_calendar_filters[$select_id] = $filter;

if ('post_status' == $select_id) {
$_calendar_filters['revision_status'] = $revision_status_filter;
}
}

$calendar_filters = $_calendar_filters;
}
$calendar_filters = apply_filters('publishpress_calendar_get_filters', $calendar_filters, $args);

foreach ($calendar_filters as $select_id => $select_name) {
$modal_id++;
Expand Down
26 changes: 0 additions & 26 deletions modules/content-overview/content-overview.php
Original file line number Diff line number Diff line change
Expand Up @@ -574,13 +574,6 @@ public function update_user_filters()

$user_filters = apply_filters('PP_Content_Overview_filter_values', $user_filters, $current_user_filters);

if (isset($user_filters['post_status'])) {
$user_filters['revision_status'] = $user_filters['post_status'];
$user_filters['revision_status'] = __('Revision Status', 'publishpress');
} else {
unset($user_filters['revision_status']);
}

$this->update_user_meta($current_user->ID, self::USERMETA_KEY_PREFIX . 'filters', $user_filters);

$pp_content_overview_user_filters = $user_filters;
Expand Down Expand Up @@ -850,29 +843,10 @@ public function get_content_overview_datas() {

$datas['content_overview_filters'] = is_array($content_overview_filters) ? $content_overview_filters : [
'post_status' => esc_html__('Status', 'publishpress'),
'revision_status' => esc_html__('Revision Status', 'publishpress'),
'author' => esc_html__('Author', 'publishpress'),
'ptype' => esc_html__('Post Type', 'publishpress')
];

if (isset($datas['content_overview_filters']['post_status'])) {
$datas['content_overview_filters']['revision_status'] = esc_html__('Revision Status', 'publishpress');
}

if (isset($content_overview_custom_filters['post_status'])) {
$content_overview_custom_filters['revision_status'] = esc_html__('Revision Status', 'publishpress');
}

if (!function_exists('rvy_in_revision_workflow')) {
if (isset($datas['content_overview_filters']) && is_array($datas['content_overview_filters'])) {
unset($datas['content_overview_filters']['revision_status']);
}

if (is_array($content_overview_custom_filters)) {
unset($content_overview_custom_filters['revision_status']);
}
}

$datas['content_overview_custom_filters'] = is_array($content_overview_custom_filters) ? $content_overview_custom_filters : [];

/**
Expand Down
58 changes: 10 additions & 48 deletions modules/content-overview/library/content-overview-utilities.php
Original file line number Diff line number Diff line change
Expand Up @@ -670,6 +670,8 @@ public static function content_overview_time_range($args)

public static function content_overview_filter_options($args)
{
$args = apply_filters('publishpress_content_overview_filter_options_args', $args);

$select_id = $args['select_id'];
$select_name = $args['select_name'];
$filters = $args['user_filters'];
Expand All @@ -681,27 +683,7 @@ public static function content_overview_filter_options($args)
$all_filters = $args['all_filters'];
$operator_labels = $args['operator_labels'];

switch ($select_id) {
case 'post_status':
case 'revision_status':
if (function_exists('rvy_revision_statuses')) {
if (class_exists('PublishPress_Statuses') && defined('PUBLISHPRESS_STATUSES_PRO_VERSION')) {
$revision_statuses = \PublishPress_Statuses::instance()->getPostStatuses(['for_revision' => true], 'object');
} else {
$revision_statuses = rvy_revision_statuses(['output' => 'object']);
}
} else {
$revision_statuses = [];
}

if ($revision_statuses) {
foreach ($post_statuses as $k => $status_obj) {
if (in_array($status_obj->slug, array_keys($revision_statuses))) {
unset($post_statuses[$k]);
}
}
}
}
$revision_statuses = (!empty($args['revision_statuses'])) ? $args['revision_statuses'] : [];

if (array_key_exists($select_id, $terms_options)) {
$select_id = 'metadata_key';
Expand Down Expand Up @@ -737,32 +719,6 @@ public static function content_overview_filter_options($args)
</select>
<?php
break;

case 'revision_status':
$filter_label = esc_html__('Revision Status', 'publishpress');
?>
<select id="revision_status" name="revision_status"><!-- Status selectors -->
<option value=""><?php
_e('All statuses', 'publishpress'); ?></option>
<option value="all"><?php
_e('(reset)', 'publishpress'); ?></option>
<?php
$filter_value = (!empty($_REQUEST['revision_status'])) ? sanitize_key($_REQUEST['revision_status']) : '';

foreach ($revision_statuses as $post_status) {
//if ($post_status->name == $filters['revision_status']) {
if ($post_status->name == $filter_value) {
$selected_value = $post_status->label;
}
echo "<option value='" . esc_attr($post_status->name) . "' " . selected(
$post_status->name,
$filters['revision_status']
) . ">" . esc_html($post_status->label) . "</option>";
}
?>
</select>
<?php
break;

case 'taxonomy':
$taxonomySlug = isset($filters[$select_name]) ? sanitize_key($filters[$select_name]) : '';
Expand Down Expand Up @@ -1036,7 +992,13 @@ class="date-time-pick"
break;

default:
if (array_key_exists($select_name, $form_filter_list)) {
if ($filter_vars = apply_filters('publishpress_content_overview_custom_filter', false, $select_id, $args)) {
$filter_vars = (array) $filter_vars;

$filter_label = (isset($filter_vars['filter_label'])) ? $filter_vars['filter_label'] : '';
$selected_value = (isset($filter_vars['selected_value'])) ? $filter_vars['selected_value'] : '';

} elseif (array_key_exists($select_name, $form_filter_list)) {
$selected_value_meta = isset($filters[$select_name]) ? sanitize_text_field($filters[$select_name]) : '';
$filter_label = $all_filters[$select_name];
$selected_value = $selected_value_meta;
Expand Down

0 comments on commit 3bed1cd

Please sign in to comment.