send-blogpost-notification #681
@ -179,6 +179,13 @@ ORDER BY read_at DESC, created_at DESC;
|
|||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub(crate) async fn delete_by_link(db: &sqlx::Pool<Sqlite>, link: &str) {
|
||||||
|
sqlx::query!("DELETE FROM notification WHERE link=?", link)
|
||||||
|
.execute(db)
|
||||||
|
.await
|
||||||
|
.unwrap();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
@ -148,6 +148,26 @@ async fn new_blogpost(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(FromForm, Debug)]
|
||||||
|
struct BlogpostUnpublishedForm<'r> {
|
||||||
|
article_url: &'r str,
|
||||||
|
pw: &'r str,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[post("/", data = "<blogpost>")]
|
||||||
|
async fn blogpost_unpublished(
|
||||||
|
db: &State<SqlitePool>,
|
||||||
|
blogpost: Form<BlogpostUnpublishedForm<'_>>,
|
||||||
|
config: &State<Config>,
|
||||||
|
) -> String {
|
||||||
|
if blogpost.pw == &config.wordpress_key {
|
||||||
|
Notification::delete_by_link(&db, blogpost.article_url).await;
|
||||||
|
"ACK".into()
|
||||||
|
} else {
|
||||||
|
"WRONG pw".into()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[catch(403)] //forbidden
|
#[catch(403)] //forbidden
|
||||||
fn forbidden_error() -> Flash<Redirect> {
|
fn forbidden_error() -> Flash<Redirect> {
|
||||||
Flash::error(Redirect::to("/"), "Keine Berechtigung für diese Aktion. Wenn du der Meinung bist, dass du das machen darfst, melde dich bitte bei it@rudernlinz.at.")
|
Flash::error(Redirect::to("/"), "Keine Berechtigung für diese Aktion. Wenn du der Meinung bist, dass du das machen darfst, melde dich bitte bei it@rudernlinz.at.")
|
||||||
@ -226,6 +246,7 @@ pub fn config(rocket: Rocket<Build>) -> Rocket<Build> {
|
|||||||
.mount("/auth", auth::routes())
|
.mount("/auth", auth::routes())
|
||||||
.mount("/wikiauth", routes![wikiauth])
|
.mount("/wikiauth", routes![wikiauth])
|
||||||
.mount("/new-blogpost", routes![new_blogpost])
|
.mount("/new-blogpost", routes![new_blogpost])
|
||||||
|
.mount("/blogpost-unpublished", routes![blogpost_unpublished])
|
||||||
.mount("/log", log::routes())
|
.mount("/log", log::routes())
|
||||||
.mount("/planned", planned::routes())
|
.mount("/planned", planned::routes())
|
||||||
.mount("/ergo", ergo::routes())
|
.mount("/ergo", ergo::routes())
|
||||||
|
@ -78,7 +78,6 @@ add_filter( 'authenticate', 'rot_auth', 10, 3 );
|
|||||||
Add the following code to `wp-content/themes/bravada/functions.php`:
|
Add the following code to `wp-content/themes/bravada/functions.php`:
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
function send_article_url_on_publish($new_status, $old_status, $post) {
|
function send_article_url_on_publish($new_status, $old_status, $post) {
|
||||||
// Check if the post is transitioning to 'publish' status
|
// Check if the post is transitioning to 'publish' status
|
||||||
if ($new_status == 'publish' && $old_status != 'publish' && $post->post_type == 'post') {
|
if ($new_status == 'publish' && $old_status != 'publish' && $post->post_type == 'post') {
|
||||||
@ -93,7 +92,7 @@ function send_article_url_on_publish($new_status, $old_status, $post) {
|
|||||||
$body = array(
|
$body = array(
|
||||||
'article_url' => $article_url,
|
'article_url' => $article_url,
|
||||||
'article_title' => $article_title,
|
'article_title' => $article_title,
|
||||||
'pw' => "pw-as-specified-in-rockettoml"
|
'pw' => "wordpress_key"
|
||||||
);
|
);
|
||||||
|
|
||||||
// Prepare the arguments for wp_remote_post
|
// Prepare the arguments for wp_remote_post
|
||||||
@ -117,6 +116,39 @@ function send_article_url_on_publish($new_status, $old_status, $post) {
|
|||||||
error_log('POST request sent successfully with article URL: ' . $article_url);
|
error_log('POST request sent successfully with article URL: ' . $article_url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ($new_status != 'publish' && $old_status == 'publish' && $post->post_type == 'post') {
|
||||||
|
$article_url = get_permalink($post->ID);
|
||||||
|
// URL to send the POST request to
|
||||||
|
$api_url = 'https://app.rudernlinz.at/blogpost-unpublished';
|
||||||
|
|
||||||
|
// Prepare the data for the POST request
|
||||||
|
$body = array(
|
||||||
|
'article_url' => $article_url,
|
||||||
|
'pw' => "wordpress_key"
|
||||||
|
);
|
||||||
|
|
||||||
|
// Prepare the arguments for wp_remote_post
|
||||||
|
$args = array(
|
||||||
|
'body' => $body,
|
||||||
|
'timeout' => '5',
|
||||||
|
'redirection' => '5',
|
||||||
|
'httpversion' => '1.0',
|
||||||
|
'blocking' => true,
|
||||||
|
'headers' => array(),
|
||||||
|
'cookies' => array()
|
||||||
|
);
|
||||||
|
|
||||||
|
// Send the POST request
|
||||||
|
$response = wp_remote_post($api_url, $args);
|
||||||
|
|
||||||
|
// Optional: Check if the request was successful
|
||||||
|
if (is_wp_error($response)) {
|
||||||
|
error_log('Failed to send POST request: ' . $response->get_error_message());
|
||||||
|
} else {
|
||||||
|
error_log('POST request sent successfully with article URL: ' . $article_url);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Hook the function to the 'transition_post_status' action
|
// Hook the function to the 'transition_post_status' action
|
||||||
|
Loading…
Reference in New Issue
Block a user