Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Wolfgang Knopki
Spacedeck-open-SAML
Commits
077bf165
Commit
077bf165
authored
May 11, 2020
by
mntmn
Committed by
mntmn
May 11, 2020
Browse files
integrations: first version of Spacedeck integration for WordPress
parent
e5fc11d2
Changes
1
Show whitespace changes
Inline
Side-by-side
integrations/wordpress/plugins/spacedeck/spacedeck.php
0 → 100644
View file @
077bf165
<?php
/*
Plugin Name: Spacedeck
Plugin URI: https://spacedeck.com
description: Embed Spacedeck Whiteboards in Wordpress Posts
Version: 1.0
Author: MNT Research GmbH
Author URI: https://mntre.com
License: GPLv3+
*/
add_option
(
"spacedeck_settings"
);
function
spacedeck_apicall
(
$method
,
$path
,
$data
)
{
$spacedeck_api_base_uri
=
get_option
(
"spacedeck_settings"
)[
spacedeck_api_base_uri
];
$spacedeck_api_key
=
get_option
(
"spacedeck_settings"
)[
spacedeck_api_key
];
$data_string
=
json_encode
(
$data
);
$url
=
$spacedeck_api_base_uri
.
$path
;
$headers
=
array
(
'Content-Type'
=>
'application/json'
,
'X-Spacedeck-API-Token'
=>
$spacedeck_api_key
);
$payload
=
array
(
'method'
=>
$method
,
'timeout'
=>
10
,
'blocking'
=>
true
,
'headers'
=>
$headers
,
'body'
=>
$data_string
);
// echo("<p>payload:</p><pre>");
// print_r($payload);
// echo("</pre>");
$result
=
wp_remote_post
(
$url
,
$payload
);
if
(
is_wp_error
(
$result
))
{
return
$result
;
}
$result
=
json_decode
(
$result
[
body
],
true
);
// echo("<p>decoded:</p><pre>");
// print_r($result);
// echo("</pre>");
return
$result
;
}
function
spacedeck_embed_space
(
$slug
,
$width
=
'90%'
,
$height
=
'800'
,
$parent_space_id
=
null
)
{
$spacedeck_frontend_base_uri
=
get_option
(
"spacedeck_settings"
)[
spacedeck_frontend_base_uri
];
// try to find the space identified by slug
$space
=
spacedeck_apicall
(
"GET"
,
"/spaces/"
.
$slug
,
array
());
if
(
is_wp_error
(
$space
))
{
$error
=
$response
->
get_error_message
();
return
(
"<p><b>Spacedeck: WP Error looking up Space:
$error
</b></p>"
);
}
else
if
(
$space
[
error
]
&&
$space
[
error
]
!=
"space_not_found"
)
{
return
(
"<p><b>Spacedeck: Error looking up Space:
$space[error]
</b></p>"
);
}
// if it doesn't exist, create it:
if
(
$space
[
error
]
==
"space_not_found"
)
{
$data
=
array
(
"name"
=>
$slug
,
"edit_slug"
=>
$slug
);
if
(
$parent_space_id
)
{
$data
[
parent_space_id
]
=
$parent_space_id
;
}
$space
=
spacedeck_apicall
(
"POST"
,
"/spaces"
,
$data
);
if
(
is_wp_error
(
$space
))
{
$error
=
$response
->
get_error_message
();
return
(
"<p><b>Spacedeck: WP Error creating Space:
$error
</b></p>"
);
}
else
if
(
$space
[
error
])
{
return
(
"<p><b>Spacedeck: Error creating Space:
$space[error]
</b></p>"
);
}
}
if
(
is_wp_error
(
$space
))
{
$error
=
$response
->
get_error_message
();
return
(
"<p><b>Spacedeck: WP Error embedding Space:
$error
</b></p>"
);
}
else
if
(
!
$space
||
$space
[
error
])
{
return
(
"<p><b>Spacedeck: Error embedding Space. Is your API key set up correctly?</b></p>"
);
}
$space_auth
=
$space
[
edit_hash
];
// return a piece of html (iframe) embedding the space
$uri
=
$spacedeck_frontend_base_uri
.
'/spaces/'
.
$slug
.
'?embedded=1&spaceAuth='
.
$space_auth
;
$html
=
"<iframe src='
$uri
' class='spacedeck' width='
$width
' height='
$height
' style='max-width:100%' frameborder='0' allowFullScreen='true'></iframe>"
;
return
$html
;
}
function
spacedeck_shortcode
(
$attrs
)
{
extract
(
shortcode_atts
(
array
(
'id'
=>
'none'
,
'parent_space_id'
=>
null
,
'width'
=>
'100%'
,
'height'
=>
'800'
),
$attrs
));
$w
=
$attrs
[
width
];
$h
=
$attrs
[
height
];
if
(
!
$w
)
$w
=
'100%'
;
if
(
!
$h
)
$h
=
800
;
return
spacedeck_embed_space
(
$attrs
[
id
],
$w
,
$h
,
$attrs
[
parent_space_id
]);
}
add_shortcode
(
'spacedeck_space'
,
'spacedeck_shortcode'
);
add_action
(
'admin_menu'
,
'spacedeck_add_admin_menu'
);
add_action
(
'admin_init'
,
'spacedeck_settings_init'
);
function
spacedeck_add_admin_menu
()
{
add_options_page
(
'spacedeck'
,
'Spacedeck'
,
'manage_options'
,
'spacedeck'
,
'spacedeck_options_page'
);
}
function
spacedeck_settings_init
()
{
register_setting
(
'pluginPage'
,
'spacedeck_settings'
);
add_settings_section
(
'spacedeck_pluginPage_section'
,
'Spacedeck Settings'
,
'spacedeck_settings_section_callback'
,
'pluginPage'
);
add_settings_field
(
'spacedeck_text_field_0'
,
'API key'
,
'spacedeck_text_field_0_render'
,
'pluginPage'
,
'spacedeck_pluginPage_section'
);
add_settings_field
(
'spacedeck_text_field_1'
,
'API base URL'
,
'spacedeck_text_field_1_render'
,
'pluginPage'
,
'spacedeck_pluginPage_section'
);
add_settings_field
(
'spacedeck_text_field_2'
,
'Frontend base URL'
,
'spacedeck_text_field_2_render'
,
'pluginPage'
,
'spacedeck_pluginPage_section'
);
}
function
spacedeck_text_field_0_render
()
{
$opts
=
get_option
(
'spacedeck_settings'
);
?>
<input
type=
'text'
name=
'spacedeck_settings[spacedeck_api_key]'
value=
'
<?php
echo
$opts
[
spacedeck_api_key
];
?>
'
>
<?php
}
function
spacedeck_text_field_1_render
()
{
$opts
=
get_option
(
'spacedeck_settings'
);
?>
<input
type=
'text'
name=
'spacedeck_settings[spacedeck_api_base_uri]'
value=
'
<?php
echo
$opts
[
spacedeck_api_base_uri
];
?>
'
>
<?php
}
function
spacedeck_text_field_2_render
()
{
$opts
=
get_option
(
'spacedeck_settings'
);
?>
<input
type=
'text'
name=
'spacedeck_settings[spacedeck_frontend_base_uri]'
value=
'
<?php
echo
$opts
[
spacedeck_frontend_base_uri
];
?>
'
>
<?php
}
function
spacedeck_settings_section_callback
()
{
echo
''
;
}
function
spacedeck_options_page
()
{
?>
<form
action=
'options.php'
method=
'post'
>
<?php
settings_fields
(
'pluginPage'
);
do_settings_sections
(
'pluginPage'
);
submit_button
();
?>
</form>
<?php
}
?>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment