/** * Add action links to Stream drop row in admin list screen * * @filter wp_stream_action_links_{connector} * * @param array $links Previous links registered * @param Record $record Stream record * * @return array Action links */ public function action_links($links, $record) { if (in_array($record->context, $this->post_types) && get_post($record->object_id)) { if ($link = get_edit_post_link($record->object_id)) { $posts_connector = new Connector_Posts(); $post_type_name = $posts_connector->get_post_type_name(get_post_type($record->object_id)); $links[sprintf(esc_html_x('Edit %s', 'Post type singular name', 'stream'), $post_type_name)] = $link; } if (post_type_exists(get_post_type($record->object_id)) && ($link = get_permalink($record->object_id))) { $links[esc_html__('View', 'stream')] = $link; } } $context_labels = $this->get_context_labels(); $option_key = $record->get_meta('option', true); $option_page = $record->get_meta('page', true); $option_tab = $record->get_meta('tab', true); $option_section = $record->get_meta('section', true); if ($option_key && $option_tab) { $text = sprintf(esc_html__('Edit WooCommerce %s', 'stream'), $context_labels[$record->context]); $url = add_query_arg(array('page' => $option_page, 'tab' => $option_tab, 'section' => $option_section), admin_url('admin.php')); $links[$text] = $url . '#wp-stream-highlight:' . $option_key; } return $links; }
/** * Add action links to Stream drop row in admin list screen * * @filter wp_stream_action_links_{connector} * * @param array $links Previous links registered * @param Record $record Stream record * * @return array Action links */ public function action_links($links, $record) { // Options if ($option = $record->get_meta('option', true)) { $key = $record->get_meta('option_key', true); $links[esc_html__('Edit', 'stream')] = add_query_arg(array('page' => $record->context), admin_url('admin.php')) . '#stream-highlight-' . esc_attr($key); } elseif ('wpseo_files' === $record->context) { $links[esc_html__('Edit', 'stream')] = add_query_arg(array('page' => $record->context), admin_url('admin.php')); } elseif ('wpseo_meta' === $record->context) { $post = get_post($record->object_id); if ($post) { $posts_connector = new Connector_Posts(); $post_type_name = $posts_connector->get_post_type_name(get_post_type($post->ID)); if ('trash' === $post->post_status) { $untrash = wp_nonce_url(add_query_arg(array('action' => 'untrash', 'post' => $post->ID), admin_url('post.php')), sprintf('untrash-post_%d', $post->ID)); $delete = wp_nonce_url(add_query_arg(array('action' => 'delete', 'post' => $post->ID), admin_url('post.php')), sprintf('delete-post_%d', $post->ID)); $links[sprintf(esc_html_x('Restore %s', 'Post type singular name', 'stream'), $post_type_name)] = $untrash; $links[sprintf(esc_html_x('Delete %s Permenantly', 'Post type singular name', 'stream'), $post_type_name)] = $delete; } else { $links[sprintf(esc_html_x('Edit %s', 'Post type singular name', 'stream'), $post_type_name)] = get_edit_post_link($post->ID); if ($view_link = get_permalink($post->ID)) { $links[esc_html__('View', 'stream')] = $view_link; } if ($revision_id = $record->get_meta('revision_id', true)) { $links[esc_html__('Revision', 'stream')] = get_edit_post_link($revision_id); } } } } return $links; }
/** * Track changes to ACF values within rendered post meta forms * * @param string $type Type of object, post or user * @param string $action Added, updated, deleted * @param integer $meta_id * @param integer $object_id * @param string $key * @param mixed|null $value * * @return bool */ public function check_meta_values($type, $action, $meta_id, $object_id, $key, $value = null) { unset($action); unset($meta_id); if (empty($this->cached_field_values_updates)) { return false; } $object_key = $object_id; if ('user' === $type) { $object_key = 'user_' . $object_id; } elseif ('taxonomy' === $type) { if (0 === strpos($key, '_')) { // Ignore the 'revision' stuff! return false; } if (1 !== preg_match('#([a-z0-9_-]+)_([\\d]+)_([a-z0-9_-]+)#', $key, $matches)) { return false; } list(, $taxonomy, $term_id, $key) = $matches; // Skips 0 index $object_key = $taxonomy . '_' . $term_id; } if (isset($this->cached_field_values_updates[$object_key][$key])) { if ('post' === $type) { $posts_connector = new Connector_Posts(); $post = get_post($object_id); $title = $post->post_title; $type_name = strtolower($posts_connector->get_post_type_name($post->post_type)); } elseif ('user' === $type) { $user = new \WP_User($object_id); $title = $user->get('display_name'); $type_name = esc_html__('user', 'stream'); } elseif ('taxonomy' === $type && isset($term_id) && isset($taxonomy)) { $term = get_term($term_id, $taxonomy); $title = $term->name; $tax_obj = get_taxonomy($taxonomy); $type_name = strtolower(get_taxonomy_labels($tax_obj)->singular_name); } else { return false; } $cache = $this->cached_field_values_updates[$object_key][$key]; $this->log(esc_html_x('"%1$s" of "%2$s" %3$s updated', 'acf', 'stream'), array('field_label' => $cache['field']['label'], 'title' => $title, 'singular_name' => $type_name, 'meta_value' => $value, 'meta_key' => $key, 'meta_type' => $type), $object_id, 'values', 'updated'); } return true; }
/** * Add action links to Stream drop row in admin list screen * * @filter wp_stream_action_links_{connector} * * @param array $links Previous links registered * @param object $record Stream record * * @return array Action links */ public function action_links($links, $record) { if (in_array($record->context, array('downloads'))) { $posts_connector = new Connector_Posts(); $links = $posts_connector->action_links($links, $record); } elseif (in_array($record->context, array('discounts'))) { $post_type_label = get_post_type_labels(get_post_type_object('edd_discount'))->singular_name; $base = admin_url('edit.php?post_type=download&page=edd-discounts'); $links[sprintf(esc_html__('Edit %s', 'stream'), $post_type_label)] = add_query_arg(array('edd-action' => 'edit_discount', 'discount' => $record->object_id), $base); if ('active' === get_post($record->object_id)->post_status) { $links[sprintf(esc_html__('Deactivate %s', 'stream'), $post_type_label)] = add_query_arg(array('edd-action' => 'deactivate_discount', 'discount' => $record->object_id), $base); } else { $links[sprintf(esc_html__('Activate %s', 'stream'), $post_type_label)] = add_query_arg(array('edd-action' => 'activate_discount', 'discount' => $record->object_id), $base); } } elseif (in_array($record->context, array('download_category', 'download_tag'))) { $tax_label = get_taxonomy_labels(get_taxonomy($record->context))->singular_name; $links[sprintf(esc_html__('Edit %s', 'stream'), $tax_label)] = get_edit_term_link($record->object_id, $record->get_meta('taxonomy', true)); } elseif ('api_keys' === $record->context) { $user = new \WP_User($record->object_id); if (apply_filters('edd_api_log_requests', true)) { $links[esc_html__('View API Log', 'stream')] = add_query_arg(array('view' => 'api_requests', 'post_type' => 'download', 'page' => 'edd-reports', 'tab' => 'logs', 's' => $user->user_email), 'edit.php'); } $links[esc_html__('Revoke', 'stream')] = add_query_arg(array('post_type' => 'download', 'user_id' => $record->object_id, 'edd_action' => 'process_api_key', 'edd_api_process' => 'revoke'), 'edit.php'); $links[esc_html__('Reissue', 'stream')] = add_query_arg(array('post_type' => 'download', 'user_id' => $record->object_id, 'edd_action' => 'process_api_key', 'edd_api_process' => 'regenerate'), 'edit.php'); } return $links; }