Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Knowledge Space WP Plugin
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
alg
Knowledge Space WP Plugin
Commits
00c27579
Commit
00c27579
authored
3 years ago
by
Maximilian Giller
Browse files
Options
Downloads
Patches
Plain Diff
Implemented get space with full graph
parent
a00b7f40
Branches
Branches containing commit
No related tags found
No related merge requests found
Pipeline
#53949
passed
3 years ago
Stage: test
Changes
4
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
README.md
+5
-4
5 additions, 4 deletions
README.md
datasets/datasets.php
+127
-34
127 additions, 34 deletions
datasets/datasets.php
datasets/ks-datasets-database.php
+28
-8
28 additions, 8 deletions
datasets/ks-datasets-database.php
editor/js/interactions.js
+1
-1
1 addition, 1 deletion
editor/js/interactions.js
with
161 additions
and
47 deletions
README.md
+
5
−
4
View file @
00c27579
...
...
@@ -62,14 +62,15 @@ To run the project run `npm run watch`. This starts a parcel instance which auto
"nodetype_id"
:
"3"
,
"name"
:
"Vorlesung"
,
"color"
:
"85D0AB"
}
"references"
:
[
{
},
"references"
:
{
"35"
:
{
"node_id"
:
"1"
,
"reference_id"
:
"35"
,
"url"
:
"https://tu-bs.de/reference.html"
},
...
more
references
]
}
},
...
more
nodes
},
...
...
This diff is collapsed.
Click to expand it.
datasets/datasets.php
+
127
−
34
View file @
00c27579
<?php
require_once
(
__DIR__
.
"/ks-datasets-database.php"
);
//! TODO: REMOVE!
ini_set
(
'display_errors'
,
1
);
ini_set
(
'display_startup_errors'
,
1
);
error_reporting
(
E_ALL
);
require_once
(
__DIR__
.
"/../knowledge-space-database.php"
);
require_once
(
__DIR__
.
"/ks-datasets-database.php"
);
$EMPTY_SPACE
=
'{"links":[],"nodes":[]}'
;
$SPACES_DIR
=
__DIR__
.
"/spaces/"
;
$SPACES_DIR
=
__DIR__
.
"/spaces/"
;
add_action
(
"wp_ajax_get_space"
,
"kg_get_space"
);
// Fires only for logged-in-users
add_action
(
"wp_ajax_nopriv_get_space"
,
'kg_get_space'
);
// Fires for everyone
function
kg_get_space
()
{
$space_id
=
kg_get_space_file_path
(
$_POST
[
"space_id"
]);
add_action
(
"wp_ajax_nopriv_get_space"
,
'kg_get_space'
);
// Fires for everyone
function
kg_get_space
()
{
$space_id
=
$_POST
[
"space_id"
];
$space
=
ks_select_
all_
space
s
(
$space_id
);
$space
=
ks_select_space
(
$space_id
);
if
(
$space
==
null
)
{
// No valid space found
wp_die
();
}
$space_id
=
$space
->
space_id
;
// Collect
nodes
// Collect
data
$nodes
=
ks_select_space_nodes
(
$space_id
);
$links
=
ks_select_space_links
(
$space_id
);
// Construct data
$nodes
=
ks_construct_nodes
(
$nodes
);
$links
=
ks_construct_links
(
$links
);
// Construct payload and insert graph data
$spaces
=
ks_spaces_to_array
(
array
(
$space
));
$spaces
[
$space_id
][
"nodes"
]
=
$nodes
;
$spaces
[
$space_id
][
"links"
]
=
$links
;
$payload
=
array
(
"spaces"
=>
$spaces
);
echo
json_encode
(
$payload
);
wp_die
();
}
function
ks_construct_links
(
$raw_links
)
{
$array_links
=
array
();
foreach
(
$raw_links
as
$link
)
{
// Construct link
$array_link
=
array
(
"link_id"
=>
$link
->
link_id
,
"source_node_id"
=>
$link
->
source_node_id
,
"target_node_id"
=>
$link
->
target_node_id
);
$array_links
[
$array_link
[
"link_id"
]]
=
$array_link
;
}
return
$array_links
;
}
function
ks_construct_nodes
(
$raw_nodes
)
{
$array_nodes
=
array
();
foreach
(
$raw_nodes
as
$node
)
{
// Get type
$array_type
=
ks_get_nodetype_to_node
(
$node
->
nodetype_id
);
// Get references
$array_references
=
ks_get_references_to_node
(
$node
->
node_id
);
// Construct node
$array_node
=
array
(
"node_id"
=>
$node
->
node_id
,
"space_id"
=>
$node
->
space_id
,
"title"
=>
$node
->
title
,
"description"
=>
$node
->
description
,
"icon_url"
=>
$node
->
icon_url
,
"header_url"
=>
$node
->
header_url
,
"video_url"
=>
$node
->
video_url
,
"type"
=>
$array_type
,
"references"
=>
$array_references
,
);
$array_nodes
[
$array_node
[
"node_id"
]]
=
$array_node
;
}
return
$array_nodes
;
}
function
ks_get_references_to_node
(
$node_id
)
{
if
(
$node_id
==
null
)
{
return
array
();
}
$raw_references
=
ks_select_node_references
(
$node_id
);
if
(
$raw_references
==
null
)
{
return
array
();
}
$array_references
=
array
();
foreach
(
$raw_references
as
$raw_reference
)
{
$array_reference
=
array
(
"node_id"
=>
$raw_reference
->
node_id
,
"reference_id"
=>
$raw_reference
->
reference_id
,
"url"
=>
$raw_reference
->
url
);
$array_references
[
$array_reference
[
"reference_id"
]]
=
$array_reference
;
}
return
$array_references
;
}
function
ks_get_nodetype_to_node
(
$nodetype_id
)
{
if
(
$nodetype_id
==
null
)
{
return
null
;
}
$type
=
ks_select_nodetype
(
$nodetype_id
);
if
(
$type
==
null
)
{
return
null
;
}
return
array
(
"nodetype_id"
=>
$type
->
nodetype_id
,
"name"
=>
$type
->
name
,
"color"
=>
str_pad
(
dechex
(
$type
->
color
),
6
,
"0"
,
STR_PAD_LEFT
)
);
}
add_action
(
"wp_ajax_list_spaces"
,
"kg_list_spaces"
);
// Fires only for logged-in-users
function
kg_list_spaces
()
{
$spaces
=
ks_select_spaces
();
function
kg_list_spaces
()
{
$spaces
=
ks_select_all_spaces
();
$spaces
=
ks_spaces_to_array
(
$spaces
);
$payload
=
array
(
"spaces"
=>
$spaces
);
...
...
@@ -34,7 +144,8 @@ function kg_list_spaces() {
add_action
(
"wp_ajax_update_space"
,
"kg_update_space"
);
// Fires only for logged-in-users
//add_action("wp_ajax_nopriv_update_space", 'update_space' ); // Fires for everyone
function
kg_update_space
()
{
function
kg_update_space
()
{
// Check user capabilities
if
(
current_user_can
(
"edit_posts"
))
{
// Use json encoding.
...
...
@@ -48,7 +159,8 @@ function kg_update_space() {
}
}
function
kg_store_new_graph
(
$graph
,
$space_id
)
{
function
kg_store_new_graph
(
$graph
,
$space_id
)
{
$file_path
=
kg_get_space_file_path
(
$space_id
);
$result
=
file_put_contents
(
$file_path
,
$graph
);
...
...
@@ -59,34 +171,15 @@ function kg_store_new_graph($graph, $space_id) {
echo
$result
;
}
function
kg_get_space_file_path
(
$space_id
)
{
function
kg_get_space_file_path
(
$space_id
)
{
// Cleaning up the space id
$space_id
=
str_replace
(
"/"
,
"-"
,
$space_id
);
$space_id
=
str_replace
(
"
\\
"
,
"-"
,
$space_id
);
$space_id
=
str_replace
(
"."
,
"-"
,
$space_id
);
global
$SPACES_DIR
;
return
$SPACES_DIR
.
$space_id
.
".json"
;
}
function
kg_create_empty_space
(
$file_path
)
{
// Don't do anything, if it exists
if
(
file_exists
(
$file_path
))
{
return
;
}
// Write empty space to file
global
$EMPTY_SPACE
;
file_put_contents
(
$file_path
,
$EMPTY_SPACE
);
}
function
endsWith
(
$haystack
,
$needle
)
{
# Source: https://stackoverflow.com/a/834355/7376120
$length
=
strlen
(
$needle
);
if
(
!
$length
)
{
return
true
;
}
return
substr
(
$haystack
,
-
$length
)
===
$needle
;
return
$SPACES_DIR
.
$space_id
.
".json"
;
}
function
ks_spaces_to_array
(
$spaces
)
...
...
This diff is collapsed.
Click to expand it.
datasets/ks-datasets-database.php
+
28
−
8
View file @
00c27579
...
...
@@ -20,7 +20,7 @@ function ks_select_all_spaces()
function
ks_select_space
(
$space_id
)
{
global
$SPACES_TABLE
;
return
ks_select
(
"SELECT * FROM
$SPACES_TABLE
WHERE space_id = %
i
"
,
$space_id
);
return
ks_select
_single
(
"SELECT * FROM
$SPACES_TABLE
WHERE space_id = %
d
"
,
$space_id
);
}
function
ks_insert_space
(
$name
=
null
,
$description
=
""
)
...
...
@@ -48,35 +48,55 @@ function ks_insert_space($name = null, $description = "")
function
ks_select_space_nodes
(
$space_id
)
{
global
$NODES_TABLE
;
return
ks_select
(
"SELECT * FROM
$NODES_TABLE
WHERE space_id = %
i
"
,
$space_id
);
return
ks_select
(
"SELECT * FROM
$NODES_TABLE
WHERE space_id = %
d
"
,
$space_id
);
}
function
ks_select_space_links
(
$space_id
)
{
global
$LINKS_TABLE
;
global
$NODES_TABLE
;
return
ks_select
(
"SELECT link_id, source_node_id, target_node_id FROM
$LINKS_TABLE
JOIN
$NODES_TABLE
ON
$NODES_TABLE
.node_id =
$LINKS_TABLE
.source_node_id WHERE
$NODES_TABLE
.space_id = %
i
"
,
$space_id
);
return
ks_select
(
"SELECT link_id, source_node_id, target_node_id FROM
$LINKS_TABLE
JOIN
$NODES_TABLE
ON
$NODES_TABLE
.node_id =
$LINKS_TABLE
.source_node_id WHERE
$NODES_TABLE
.space_id = %
d
"
,
$space_id
);
}
function
ks_select_space_nodetypes
(
$space_id
)
{
global
$NODETYPES_TABLE
;
return
ks_select
(
"SELECT * FROM
$NODETYPES_TABLE
WHERE space_id = %i"
,
$space_id
);
return
ks_select
(
"SELECT * FROM
$NODETYPES_TABLE
WHERE space_id = %d"
,
$space_id
);
}
function
ks_select_nodetype
(
$nodetype_id
)
{
global
$NODETYPES_TABLE
;
return
ks_select_single
(
"SELECT * FROM
$NODETYPES_TABLE
WHERE nodetype_id = %d"
,
$nodetype_id
);
}
function
ks_select_space_references
(
$space_id
)
{
global
$REFERENCES_TABLE
;
global
$NODES_TABLE
;
return
ks_select
(
"SELECT reference_id, url, node_id FROM
$REFERENCES_TABLE
JOIN
$NODES_TABLE
ON
$NODES_TABLE
.node_id =
$REFERENCES_TABLE
.node_id WHERE
$NODES_TABLE
.space_id = %i"
,
$space_id
);
return
ks_select
(
"SELECT reference_id, url, node_id FROM
$REFERENCES_TABLE
JOIN
$NODES_TABLE
ON
$NODES_TABLE
.node_id =
$REFERENCES_TABLE
.node_id WHERE
$NODES_TABLE
.space_id = %d"
,
$space_id
);
}
function
ks_select_node_references
(
$node_id
)
{
global
$REFERENCES_TABLE
;
return
ks_select
(
"SELECT * FROM
$REFERENCES_TABLE
WHERE node_id = %d"
,
$node_id
);
}
function
ks_select
(
$query
,
$parameters
=
array
())
{
global
$wpdb
;
$sql
=
$wpdb
->
prepare
(
$query
,
$parameters
);
$results
=
$wpdb
->
get_results
(
$sql
)
or
die
(
mysql_error
());
return
$wpdb
->
get_results
(
$sql
);
}
return
$results
;
function
ks_select_single
(
$query
,
$parameters
=
array
())
{
$result
=
ks_select
(
$query
,
$parameters
);
if
(
$result
)
{
return
$result
[
0
];
}
else
{
return
null
;
}
}
This diff is collapsed.
Click to expand it.
editor/js/interactions.js
+
1
−
1
View file @
00c27579
...
...
@@ -17,7 +17,7 @@ export function initInteractions() {
Object
.
keys
(
spaces
).
forEach
(
space_id
=>
{
var
selectedTxt
=
""
;
var
space
=
spaces
[
space_id
];
if
(
space
.
name
===
SPACE
)
{
if
(
space
_id
===
SPACE
)
{
selectedTxt
=
"
selected
"
;
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment