-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathloopia-driftblogg.php
134 lines (122 loc) · 3.6 KB
/
loopia-driftblogg.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?php /* PHPCS:ignore */
/**
* Plugin Name: Loopia Driftblogg Widget
* Description: Adminwidget för att visa planerade och pågående driftstörningar från Loopia Driftblogg.
* Version: 1.2
* Author: Jamie Blomerus
* License: GPLv2 or later
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
*/
defined( 'ABSPATH' ) || die( 'No script kiddies please!' );
/**
* Loopia_Driftblogg-klassen.
*
* Denna klass skapar en widget som visar driftstörningar från Loopia Driftblogg.
*/
class Loopia_Driftblogg {
/**
* Constructor
*/
public function __construct() {
add_action( 'wp_dashboard_setup', array( $this, 'loopia_driftblogg_widget' ) );
}
/**
* Registrerar widget
*
* @return void
*/
public function loopia_driftblogg_widget(): void {
wp_add_dashboard_widget(
'loopia_driftblogg_widget',
'Loopia Driftblogg',
array( $this, 'loopia_driftblogg_widget_content' )
);
}
/**
* Innehåll för widget
*
* @return void
*/
public function loopia_driftblogg_widget_content(): void {
// Försök hämta loopia_driftblogg_posts från cache.
$posts = get_transient( 'loopia_driftblogg_posts' );
if ( false === $posts ) {
// Hämta inlägg från driftbloggen.
$url = 'https://driftbloggen.se/wp-json/wp/v2/posts?categories=1&per_page=3';
$response = wp_remote_get( $url );
if ( is_wp_error( $response ) ) {
echo 'Error fetching posts';
return;
}
$posts = json_decode( wp_remote_retrieve_body( $response ) );
// Spara inlägg i cache.
set_transient( 'loopia_driftblogg_posts', $posts, 300 );
}
if ( empty( $posts ) ) {
echo 'Inga driftstörningar hittades.';
return;
}
?>
<ul>
<?php
foreach ( $posts as $post ) :
$post_content = wp_remote_get( $post->link );
$post_content = wp_remote_retrieve_body( $post_content );
$title = wp_trim_words( $post->title->rendered, 8, '...' );
// Kapa innehållet till det innan <div class="wrapper" id="single-wrapper">.
$post_content = substr( $post_content, 0, strpos( $post_content, '<div class="wrapper" id="single-wrapper">' ) );
// Hämta flagga.
$flag = strpos( $post_content, 'flag_ongoing' ) ? 'flag-ongoing' : ( strpos( $post_content, 'flag_planned' ) ? 'flag-planned' : 'flag-done' );
?>
<li>
<a href="<?php echo esc_attr( $post->link ); ?>" target="_blank">
<p><strong><?php echo esc_html( $title ); ?></strong><span class="flag <?php echo esc_attr( $flag ); ?>"><?php echo 'flag-ongoing' === $flag ? 'Pågående' : ( 'flag-planned' === $flag ? 'Planerad' : 'Avklarad' ); ?></span></p>
<p><i>
<?php
$excerpt = wp_trim_words( $post->excerpt->rendered, 10, '...' );
echo esc_html( $excerpt );
?>
</i></p>
</a>
</li>
<?php endforeach; ?>
</ul>
<style>
#loopia_driftblogg_widget ul {
list-style: none;
padding-left: 0;
}
#loopia_driftblogg_widget ul li {
margin-bottom: 10px;
}
#loopia_driftblogg_widget ul li a {
text-decoration: none;
}
#loopia_driftblogg_widget ul li a p {
margin-bottom: 0;
}
#loopia_driftblogg_widget ul li a p strong {
font-weight: bold;
}
#loopia_driftblogg_widget ul li a p .flag {
font-weight: bold;
float: right;
color: #fff;
font-size: 0.8em;
padding: 2px 5px;
border-radius: 5px;
margin-right: 10px;
}
#loopia_driftblogg_widget ul li a p .flag-ongoing {
background-color: #FF2D2D;
}
#loopia_driftblogg_widget ul li a p .flag-planned {
background-color: #e8b000;
}
#loopia_driftblogg_widget ul li a p .flag-done {
background-color: #64c882;
}
<?php
}
}
new Loopia_Driftblogg();