This commit is contained in:
Valentin Popov committed 2016-09-21 18:12:07 +04:00
1 parent b9628f189b
commit 07c1b99cb5
6 files changed
+61 -40

No files matched your search

+35 -24
View File
@@ -1,12 +1,18 @@
<?php <?php
/** /**
* Function of saving the token in a cookie. * The function returns the current ID.
* When you receive the new value clears all stored cookies. * Returns zero if no ID is stored.
* @param $token - The values of the token.
*/ */
function NewToken($token) { function GetID() {
unset($_COOKIE); // Removes all // Search current ID...
SetCookie("BOT_TOKEN", $token); // Save a new cookie if (isset($_COOKIE['CURRENT_ID'])) {
$id = (int)$_COOKIE['CURRENT_ID'] + 1;
// ...or returns zero
} else {
$id = 0;
}
// We issue results
return $id;
} }
/** /**
@@ -33,22 +39,6 @@ function GetSession($token, $bot) {
} }
} }
/**
* The function returns the current ID.
* Returns zero if no ID is stored.
*/
function GetID() {
// Search current ID...
if (isset($_COOKIE['CURRENT_ID'])) {
$id = (int)$_COOKIE['CURRENT_ID'] + 1;
// ...or returns zero
} else {
$id = 0;
}
// We issue results
return $id;
}
/** /**
* The function overrides the current ID to * The function overrides the current ID to
* the specified or the next. If any missing ID * the specified or the next. If any missing ID
@@ -67,8 +57,29 @@ function SetID($id) {
$id = 1; $id = 1;
} }
SetCookie('CURRENT_ID', $id, time()+300); // Save the result SetCookie('CURRENT_ID', $id, time()+300); // Save the result
// We issue results return $id; // We issue results
return $id; }
/**
* Cleaning function of the parameter that is passed to it.
* @param $type - Type cleansed.
*/
function ClearingCache($type) {
switch ($type) {
// Clear the cookies
case 'cookies':
foreach ($_COOKIE as $key => $value) {
SetCookie($key, $value, time()-1000);
}
break;
// Clear the POST
case 'post':
$_POST = array();
break;
// ...
default:
break;
}
} }
/** /**
+2 -2
View File
@@ -1,8 +1,8 @@
<!-- Beginning footer --> <!-- Beginning footer -->
<footer class="footer"> <footer class="footer">
<div class="container"> <div class="container">
<p class="text-muted"> <p class="text-muted text-center">
<a href="mailto:dev@valentineus.link">dev@valentineus.link</a> With love <i class="glyphicon glyphicon-heart text-danger"></i> from Russia
</p> </p>
</div> </div>
</footer> </footer>
+2
View File
@@ -1,8 +1,10 @@
<!-- Start navigation bar --> <!-- Start navigation bar -->
<nav class="navbar navbar-default navbar-fixed-top"> <nav class="navbar navbar-default navbar-fixed-top">
<!-- Loaded banner GitHub -->
<a href="https://github.com/valentineus/Module-III-API"> <a href="https://github.com/valentineus/Module-III-API">
<img class="github-fork"> <img class="github-fork">
</a> </a>
<!-- Filling panel -->
<div class="container"> <div class="container">
<div class="collapse navbar-collapse"> <div class="collapse navbar-collapse">
<!-- The right side of the navigation bar --> <!-- The right side of the navigation bar -->
@@ -9,6 +9,7 @@
<div class="col-md-4"> <div class="col-md-4">
<button type="submit" class="btn btn-default">Submit</button> <button type="submit" class="btn btn-default">Submit</button>
<button type="button" class="btn btn-success" data-toggle="modal" data-target="#SettingsModal">Settings</button> <button type="button" class="btn btn-success" data-toggle="modal" data-target="#SettingsModal">Settings</button>
<button type="submit" class="btn btn-danger" name="reset">Reset</button>
</div> </div>
</div><!-- row --> </div><!-- row -->
</form> </form>
+20 -13
View File
@@ -1,8 +1,3 @@
<?php
ini_set("display_errors","1");
ini_set("display_startup_errors","1");
ini_set('error_reporting', E_ALL);
?>
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
@@ -20,6 +15,7 @@ ini_set('error_reporting', E_ALL);
<!-- Title --> <!-- Title -->
<title>Testing conversational bot</title> <title>Testing conversational bot</title>
</head> </head>
<body> <body>
<?php // Connect all of the dependencies <?php // Connect all of the dependencies
include("../src/bot.php"); // Class for working with AI include("../src/bot.php"); // Class for working with AI
@@ -27,16 +23,27 @@ ini_set('error_reporting', E_ALL);
include("components/navbar.php"); // Connect the navigation bar include("components/navbar.php"); // Connect the navigation bar
include("components/settings.php"); // Connecting a modal window with the settings include("components/settings.php"); // Connecting a modal window with the settings
?> ?>
<!-- Begin page content --> <!-- Begin page content -->
<div class="container"> <div class="container">
<div class="page-header"> <div class="page-header">
<h1>Communication Panel</h1> <h1>Communication Panel</h1>
</div> </div>
<?php <?php
// Treat the reset button
if (isset($_POST['reset'])) {
ClearingCache("cookies"); // We clear all cookies
ClearingCache("post"); // Removes all requests that were not processed
header("Location: " . $_SERVER["REQUEST_URI"]); // Reloading the page
}
// Checking the token initialization // Checking the token initialization
if (isset($_POST['BOT_TOKEN'])) { if (isset($_POST['BOT_TOKEN'])) {
$token = htmlspecialchars($_POST['BOT_TOKEN']); $token = htmlspecialchars($_POST['BOT_TOKEN']);
NewToken($token); ClearingCache("cookies"); // We clear all cookies
SetCookie("BOT_TOKEN", $token); // Save a new cookie
header("Location: " . $_SERVER["REQUEST_URI"]); // Reloading the page
// ...Finding saved token // ...Finding saved token
} elseif (isset($_COOKIE['BOT_TOKEN'])) { } elseif (isset($_COOKIE['BOT_TOKEN'])) {
$token = $_COOKIE['BOT_TOKEN']; $token = $_COOKIE['BOT_TOKEN'];
@@ -47,7 +54,8 @@ ini_set('error_reporting', E_ALL);
// Initialize the robot system // Initialize the robot system
define('BOT_TOKEN', $token); define('BOT_TOKEN', $token);
$bot = new Bot(BOT_TOKEN); $bot = new Bot(BOT_TOKEN);
$session = GetSession($token, $bot); // Initialize the session // Initialize the session
$session = GetSession($token, $bot);
if (empty($session)) { // No session? Error! ?> if (empty($session)) { // No session? Error! ?>
<!-- Error Notification --> <!-- Error Notification -->
<div class="alert alert-danger alert-dismissible" role="alert"> <div class="alert alert-danger alert-dismissible" role="alert">
@@ -65,16 +73,15 @@ ini_set('error_reporting', E_ALL);
// Processes the message // Processes the message
if (isset($_POST['textarea'])) { if (isset($_POST['textarea'])) {
$currentid = GetID(); // Get the current ID
$currenttext = htmlspecialchars($_POST['textarea']); // Transform text $currenttext = htmlspecialchars($_POST['textarea']); // Transform text
SavingStories($currentid, $currenttext, 'user'); // Keeping your message SavingStories(GetID(), $currenttext, 'user'); // Keeping your message
$currentid = SetID($currentid); // Get next ID $currentid = SetID(GetID()); // Get next ID
SavingStories($currentid, $bot->say($currenttext), 'bot'); // Save bot response SavingStories(SetID($currentid), $bot->say($currenttext), 'bot'); // Save bot response
header("Location: ".$_SERVER["REQUEST_URI"]); // Reloading the page header("Location: " . $_SERVER["REQUEST_URI"]); // Reloading the page
} }
// Connecting the system interface // Connecting the system interface
include("components/communication.php"); // Settings panel include("components/on-board-panel.php"); // Settings panel
include("components/results.php"); // Output messages include("components/results.php"); // Output messages
?> ?>
</div> </div>
+1 -1
View File
@@ -27,7 +27,7 @@ textarea.form-control {
margin: 20px 0; margin: 20px 0;
} }
/* Loaded one icon from GitHub */ /* Loaded banner from GitHub */
.github-fork { .github-fork {
background: url('data:image/png;base64,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 truncated background: url('data:image/png;base64,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 truncated
background-size: cover; background-size: cover;