[wpgancio] remove event when trashed

This commit is contained in:
les 2020-05-22 00:28:42 +02:00
parent 22381d1fe6
commit 1ee9cdc1fa
4 changed files with 64 additions and 47 deletions

View file

@ -46,7 +46,8 @@ export default {
},
keywords () {
const tags = this.tags.filter(t => !this.filters.tags.includes(t.tag)).map(t => ({ type: 'tag', label: t.tag, weigth: t.weigth, id: t.tag }))
const places = this.places.filter(p => !this.filters.places.includes(p.id)).map(p => ({ type: 'place', label: p.name, weigth: p.weigth, id: p.id }))
const places = this.places.filter(p => !this.filters.places.includes(p.id))
.map(p => ({ type: 'place', label: p.name, weigth: p.weigth, id: p.id }))
const keywords = tags.concat(places).sort((a, b) => b.weigth - a.weigth)
return keywords
},

View file

@ -4,6 +4,25 @@ defined( 'ABSPATH' ) or die( 'Nope, not accessing this' );
// eventorganizer / triggered after an event has been updated
// http://codex.wp-event-organiser.com/hook-eventorganiser_save_event.html
add_action('eventorganiser_save_event', 'wpgancio_save_event', 15);
add_action('wp_trash_post', 'delete_post', 15);
function delete_post ($post_id) {
$post = get_post($post_id);
$instance_url = get_option('wpgancio_instance_url');
if ($post->post_type == 'event') {
$gancio_id = get_post_meta($post_id, 'gancio_id', TRUE);
if ($gancio_id) {
$body['id'] = $gancio_id;
$http = _wp_http_get_object();
$response = $http->request( "${instance_url}/api/event/${gancio_id}", array(
'method' => 'DELETE',
'headers' => array (
'Authorization' => 'Bearer ' . get_option('wpgancio_token')
)));
}
}
}
function wpgancio_save_event ($post_id) {
$event = get_post( $post_id );
@ -22,15 +41,14 @@ function wpgancio_save_event ($post_id) {
$venue_id = eo_get_venue($post_id);
$place_name = eo_get_venue_name($venue_id);
$place_address = eo_get_venue_address($venue_id);
$options = get_option('wpgancio_options');
$instance_url = $options['wpgancio_field_url'];
$instance_url = get_option('wpgancio_instance_url');
$body = array (
'title' => $event->post_title,
'description' => $event->post_content,
'start_datetime' => intval($date),
'place_name' => $place_name,
'place_address' => $place_address,
'place_address' => "${place_address['address']}${place_address['city']}"
);
// add image if specified
@ -60,7 +78,6 @@ function wpgancio_save_event ($post_id) {
echo "<div class='error notice'><p>${error_message}</p></div>";
return;
}
$data = json_decode(wp_remote_retrieve_body($response));
update_post_meta($post_id, 'gancio_id', $data->id);
}

View file

@ -1,28 +1,40 @@
<?php
defined( 'ABSPATH' ) or die( 'Nope, not accessing this' );
// https://codex.wordpress.org/Settings_API
// Fires as an admin screen or script is being initialized. Register out settings
add_action( 'admin_init', 'wpgancio_settings_init' );
function wpgancio_settings_init() {
register_setting( 'wpgancio', 'wpgancio_options' );
// register a new settings page
add_settings_section('wpgancio_settings', __('Settings'), FALSE, 'wpgancio');
// register a new field in the 'wpgancio_settings' section
add_settings_field('wpgancio_field_url', __( 'Instance URL', 'wpgancio' ),
'wpgancio_field_url_cb', 'wpgancio',
'wpgancio_settings', [ 'label_for' => 'wpgancio_field_url' ] );
add_settings_field('wpgancio_instance_url', __( 'Instance URL', 'wpgancio' ),
'wpgancio_instance_url_cb', 'wpgancio',
'wpgancio_settings');
register_setting( 'wpgancio', 'wpgancio_instance_url', 'wpgancio_instance_url_validate' );
}
add_action( 'update_option_wpgancio_options', 'wpgancio_update_options', 15, 2);
add_action( 'update_option_wpgancio_instance_url', 'wpgancio_update_options', 15, 2);
function wpgancio_update_options ($old_value, $instance_url) {
$redirect_uri = get_site_url(null, '/wp-admin/options-general.php?page=wpgancio' );
$query = join('&', array(
'response_type=code',
'redirect_uri=' . esc_html($redirect_uri),
'scope=event:write',
'client_id=' . get_option('wpgancio_client_id'),
));
wp_redirect("${instance_url}/authorize?${query}");
exit;
}
// Fires before the administration menu loads in the admin, add our options page
add_action( 'admin_menu', 'wpgancio_options_page' );
function wpgancio_update_options ($old_value, $new_value) {
$instance_url = $new_value['wpgancio_field_url'];
function wpgancio_instance_url_validate ($instance_url) {
$redirect_uri = get_site_url(null, '/wp-admin/options-general.php?page=wpgancio' );
// create this WP instance as a new client in selected gancio instance
@ -43,20 +55,9 @@ function wpgancio_update_options ($old_value, $new_value) {
$data = json_decode( wp_remote_retrieve_body($response), true);
update_option('wpgancio_client_secret', $data['client_secret']);
update_option('wpgancio_client_id', $data['client_id']);
$query = join('&', array(
'response_type=code',
'redirect_uri=' . esc_html($redirect_uri),
'scope=event:write',
'client_id=' . get_option('wpgancio_client_id'),
'state=antani'
));
wp_redirect("${instance_url}/authorize?${query}");
exit;
return $instance_url;
}
};
}
function wpgancio_options_page() {
// add top level menu page
@ -76,16 +77,15 @@ function wpgancio_options_page() {
// the "label_for" key value is used for the "for" attribute of the <label>.
// the "class" key value is used for the "class" attribute of the <tr> containing the field.
// you can add custom key value pairs to be used inside your callbacks.
function wpgancio_field_url_cb( $args ) {
function wpgancio_instance_url_cb( $args ) {
// get the value of the setting we've registered with register_setting()
$options = get_option( 'wpgancio_options' );
$instance_url = get_option( 'wpgancio_instance_url' );
// output the field
?>
<input id="<?php echo esc_attr( $args['label_for'] ); ?>"
value="<?php echo $options[ $args['label_for'] ]; ?>"
name="wpgancio_options[<?php echo esc_attr( $args['label_for'] ); ?>]">
<input id="wpgancio_instance_url"
value="<?php echo esc_attr($instance_url); ?>"
name="wpgancio_instance_url">
<p class="description">
<?php esc_html_e( 'Insert your gancio instance URL', 'wpgancio' ); ?>
@ -109,16 +109,15 @@ function wpgancio_options_page_html() {
$code = $_GET['code'];
if ( $code ) {
update_option('wpgancio_code', $code);
$options = get_option( 'wpgancio_options' );
$instance_url = $options['wpgancio_field_url'];
$instance_url = get_option( 'wpgancio_instance_url' );
$response = wp_remote_post($instance_url . "/oauth/token", array(
'body' => array(
'client_id' => get_option('wpgancio_client_id'),
'client_secret' => get_option('wpgancio_client_secret'),
'scope' => 'event:write',
'grant_type' => 'authorization_code',
'code' => $code,
'state' => 'antani'
'code' => $code
)));
if ( is_wp_error( $response ) ) {
add_settings_error('wpgancio_messages', 'wpgancio_messages', $response->get_error_message());
@ -130,7 +129,7 @@ function wpgancio_options_page_html() {
$data = json_decode( wp_remote_retrieve_body($response), true);
update_option('wpgancio_token', $data['access_token']);
update_option('wpgancio_refresh', $data['refresh_token']);
add_settings_error('wpgancio_messages', 'wpgancio_messages', 'TUTTO REGO MATCH!', 'success');
add_settings_error('wpgancio_messages', 'wpgancio_messages', 'Association completed!', 'success');
settings_errors( 'wpgancio_messages' );
}
}