<?php require_once(__DIR__ . "/ks-datasets-database.php"); $EMPTY_SPACE = '{"links":[],"nodes":[]}'; add_action("wp_ajax_get_space", "ks_get_space"); // Fires only for logged-in-users add_action("wp_ajax_nopriv_get_space", 'ks_get_space' ); // Fires for everyone function ks_get_space() { $name = ks_escape_space_name($_POST["space"]); $space = ks_select_space($name); // If it doesn't exist, create new empty space if ($space == NULL) { global $EMPTY_SPACE; ks_insert_space($name, $EMPTY_SPACE); $space = ks_select_space($name); } echo $space->graph; wp_die(); } add_action("wp_ajax_list_spaces", "ks_list_spaces"); // Fires only for logged-in-users function ks_list_spaces() { $spaces = array(); foreach (ks_select_all_spaces() as $space) { $spaces[] = $space->name; } $payload = array("spaces" => $spaces); echo json_encode($payload); wp_die(); } add_action("wp_ajax_update_space", "ks_update_space"); // Fires only for logged-in-users //add_action("wp_ajax_nopriv_update_space", 'update_space' ); // Fires for everyone function ks_update_space() { // Check user capabilities if (current_user_can("edit_posts")) { // Use json encoding. $graph = stripslashes($_POST["graph"]); $name = ks_escape_space_name($_POST["space"]); ks_insert_or_update_graph($name, $graph); wp_die(); } else { echo "Insufficient permissions!"; } } function ks_escape_space_name($space_name) { // Cleaning up the space id $space_name = str_replace("/", "-", $space_name); $space_name = str_replace("\\", "-", $space_name); $space_name = str_replace(".", "-", $space_name); $space_name = str_replace(";", "-", $space_name); $space_name = str_replace(":", "-", $space_name); $space_name = str_replace(",", "-", $space_name); return strtolower($space_name); }