2021-04-23 00:30:23 +02:00
< ? php
require_once ( " shoppingListConfig.php " );
$justCreatedProductId ;
class DBLink
{
static $sqlLink = null ;
public static function getDbLink ()
{
if ( DBLink :: $sqlLink == null )
{
DBLink :: $sqlLink = new mysqli ( Configuration :: $mysqlserver , Configuration :: $mysqluser , Configuration :: $mysqlpw , Configuration :: $mysqldb , Configuration :: $mysqlPort );
// Verbindung überprüfen
if ( mysqli_connect_errno ())
{
printf ( " Database connection error:%s \n " , mysqli_connect_error ());
exit ();
}
}
return DBLink :: $sqlLink ;
}
}
if ( isset ( $_GET [ 'command' ]) && $_GET [ 'command' ] == " printProductList " || $_GET [ 'command' ] == " printRhasspyProductList " )
{
displayProductList ();
exit ( 0 );
}
?>
< html >
< head >
< title > Shopping list </ title >
< style type = " text/css " >
body
{
font - family : Arial , Geneva , Helvetica , sans - serif ;
}
table
{
border - collapse : separate ;
border - spacing : 10 px 10 px ;
}
. smallButton
{
font - size : 10 px ;;
height : 5000 em ;
width : 5000 em ;
}
</ style >
< script language = " javascript " type = " text/javascript " >
function checkCreateProduct ()
{
var productToCreate = document . forms [ " createProductForm " ][ " productToCreateName " ] . value ;
if ( productToCreate == " " )
{
alert ( " Product name must be filled out " );
return false ;
}
var storeTypeId = document . forms [ " createProductForm " ][ " storeType " ] . value ;
if ( storeTypeId == " " || storeTypeId == " 0 " )
{
alert ( " Store type must be selected " );
return false ;
}
return true ;
}
</ script >
</ head >
< body >
< ? php
$command = $_POST [ 'command' ];
$listId ;
if ( isset ( $command ))
{
switch ( $command )
{
case " addToList " :
$productId = $_POST [ 'productToAdd' ];
addToList ( $productId );
break ;
case " removeFromList " :
$productId = $_POST [ 'productToRemove' ];
$listId = $_POST [ 'listId' ];
removeFromList ( $productId , $listId );
break ;
case " displayShoppingList " :
displayShoppingList ();
break ;
case " createNewShoppingList " :
createNewShoppingList ();
break ;
case " createProduct " :
$productNames = $_POST [ 'productToCreateName' ];
$storeTypeId = $_POST [ 'storeType' ];
$rc = createProduct ( $productNames , $storeTypeId );
if ( $rc > 0 )
$justCreatedProductId = $rc ;
break ;
case " oldList " :
$listId = $_POST [ 'oldListId' ];
$subCommand = $_POST [ 'bSubmit' ];
if ( $subCommand == " remove " )
{
removeShoppingList ( $listId );
$listId = null ;
}
break ;
case " trainRhasspy " :
echo " Triggering training in Rhasspy has not been implemented, yet. " ;
break ;
}
}
displayShoppingList ( $listId , $justCreatedProductId );
showDataMaintenance ();
echo " </body></html> " ;
mysqli_close ( DBLink :: getDbLink ());
function addToList ( $productId )
{
if ( $productId > 0 )
{
$SQL_command ;
if ( oneListExists ())
$SQL_command = " INSERT IGNORE INTO listEntries (listId, productId) VALUES ((SELECT id FROM `lists` ORDER BY creationTime DESC LIMIT 1), " . $productId . " ) " ;
else
$SQL_command = " INSERT IGNORE INTO listEntries (listId, productId) VALUES ((INSERT INTO `lists` (creationTime) VALUES ( " . round ( microtime ( true ) * 1000 ) . " ) RETURN @id, " . $productId . " )) " ;
if ( DBLink :: getDbLink () -> query ( $SQL_command ))
echo " Product added to list.<br> " ;
else
echo " Product could not be added to list.<br> " ;
}
else
echo " Select a product. " ;
}
function removeFromList ( $productId , $listId )
{
if ( $productId > 0 )
{
if ( oneListExists ())
{
$SQL_command = " DELETE FROM listEntries WHERE listId= " . $listId . " AND productId= " . $productId ;
if ( DBLink :: getDbLink () -> query ( $SQL_command ))
echo " Product removed from list.<br> " ;
else
echo " Product could not be removed from list.<br> " ;
}
}
else
echo " Select a product. " ;
}
function oneListExists ()
{
$SQL_command = " SELECT COUNT(id) as listAmount FROM lists " ;
$mysqli_result = DBLink :: getDbLink () -> query ( $SQL_command );
if ( $row = mysqli_fetch_object ( $mysqli_result ))
{
if ( $row -> listAmount > 0 )
return true ;
}
return false ;
}
function twoListsExist ()
{
$SQL_command = " SELECT COUNT(id) as listAmount FROM lists " ;
$mysqli_result = DBLink :: getDbLink () -> query ( $SQL_command );
if ( $row = mysqli_fetch_object ( $mysqli_result ))
{
if ( $row -> listAmount > 1 )
return true ;
}
return false ;
}
function displayShoppingList ( $listId , $justCreatedProductId )
{
echo " <form action= \" " . $_SERVER [ 'PHP_SELF' ] . " \" method= \" POST \" >
< input type = \ " hidden \" id= \" command \" name= \" command \" value= \" addToList \" />
< select name = \ " productToAdd \" id= \" productToAdd \" >
< option value = \ " 0 \" >Select product to add</option>
" ;
$SQL_command = " SELECT id, name FROM `products` ORDER BY name ASC " ;
$mysqli_result = DBLink :: getDbLink () -> query ( $SQL_command );
while ( $row = mysqli_fetch_object ( $mysqli_result ))
{
$currentId = ( int ) $row -> id ;
if ( isset ( $justCreatedProductId ) && $justCreatedProductId === $currentId )
echo " <option value= \" " . $row -> id . " \" selected> " . $row -> name . " </option> " ;
else
echo " <option value= \" " . $row -> id . " \" > " . $row -> name . " </option> " ;
}
echo " </select>
< input type = \ " submit \" value= \" add \" />
</ form > " ;
if ( oneListExists ())
{
$list_SQL_command ;
if ( isset ( $listId ))
{
$list_SQL_command = " SELECT * FROM lists WHERE id= " . $listId ;
}
else
{
$list_SQL_command = " SELECT * FROM lists ORDER BY creationTime DESC LIMIT 0,1 " ;
$SQL_command_listId = " SELECT id FROM lists ORDER BY creationTime DESC LIMIT 0,1 " ;
$mysqli_result = DBLink :: getDbLink () -> query ( $SQL_command_listId );
if ( $row = mysqli_fetch_object ( $mysqli_result ))
$listId = $row -> id ;
}
$mysqli_result = DBLink :: getDbLink () -> query ( $list_SQL_command );
if ( $row = mysqli_fetch_object ( $mysqli_result ))
{
echo " List created on " . date ( " l, d.m.Y " , ( $row -> creationTime ) / 1000 ) . " at " . date ( " G:i:s " , ( $row -> creationTime ) / 1000 ) . " <br /> " ;
if ( isset ( $row -> comment ) && strlen ( $row -> comment ) > 0 )
echo " <i> " . $row -> comment . " </i><br /> " ;
echo " <br /> " ;
}
$SQL_command = " SELECT * FROM listEntries INNER JOIN products ON listEntries.productId=products.id INNER JOIN storeTypes ON products.storeTypeId = storeTypes.id WHERE listEntries.listId= " . $listId . " ORDER BY storeTypes.name, products.name ASC " ;
$mysqli_result = DBLink :: getDbLink () -> query ( $SQL_command );
$lastShop = " " ;
while ( $row = mysqli_fetch_array ( $mysqli_result ))
{
if ( isset ( $lastShop ) && $lastShop != " " && $row [ 7 ] != $lastShop )
echo " </table> " ;
if ( ! isset ( $lastShop ) || $row [ 7 ] != $lastShop )
{
$lastShop = $row [ 7 ];
echo $lastShop . " <br>================ " ;
echo " <table border= \" 0 \" > " ;
}
echo " <tr>
< td style = \ " vertical-align:top; \" > " . $row [ 3 ] . " </td>
< td style = \ " vertical-align:top; \" >
< form action = \ " " . $_SERVER [ 'PHP_SELF' ] . " \" method= \" POST \" >
< input type = \ " hidden \" id= \" command \" name= \" command \" value= \" removeFromList \" />
< input type = \ " hidden \" id= \" listId \" name= \" listId \" value= \" " . $listId . " \" />
< input type = \ " hidden \" id= \" productToRemove \" name= \" productToRemove \" value= \" " . $row [ 1 ] . " \" />
< input class = \ " smallButton \" type= \" submit \" value= \" remove \" />
</ form >
</ td >
</ tr > " ;
}
echo " </table> " ;
}
else
echo " No list exists, yet. " ;
}
function showDataMaintenance ()
{
echo " <hr /> " ;
echo " <h2>Data maintenance</h3>
< h3 > Create new list </ h3 >
< form action = \ " " . $_SERVER [ 'PHP_SELF' ] . " \" method= \" POST \" onSubmit= \" if(!confirm('Are you sure you want to create a new list?')) { return false;} \" >
< input type = \ " hidden \" id= \" command \" name= \" command \" value= \" createNewShoppingList \" />
< input type = \ " submit \" value= \" Create new list \" />
</ form >
< h3 > Create new product </ h3 >
< form action = \ " " . $_SERVER [ 'PHP_SELF' ] . " \" method= \" POST \" onSubmit= \" return checkCreateProduct() \" id= \" createProductForm \" >
< input type = \ " hidden \" id= \" command \" name= \" command \" value= \" createProduct \" />
< input type = \ " text \" id= \" productToCreateName \" name= \" productToCreateName \" />
< select name = \ " storeType \" id= \" storeType \" >
< option value = \ " 0 \" >Select store type</option>
" ;
$SQL_command = " SELECT id, name FROM storeTypes ORDER BY name ASC " ;
$mysqli_result = DBLink :: getDbLink () -> query ( $SQL_command );
while ( $row = mysqli_fetch_object ( $mysqli_result ))
{
echo " <option value= \" " . $row -> id . " \" > " . $row -> name . " </option> " ;
}
echo " </select>
< input type = \ " submit \" value= \" Create new product \" />
</ form >
< font size = \ " 2 \" >You can enter synonyms. Separate all terms with semikolons.</font> " ;
if ( twoListsExist ())
{
$SQL_command = " SELECT * FROM lists ORDER BY creationTime DESC " ;
$mysqli_result = DBLink :: getDbLink () -> query ( $SQL_command );
echo " <h3>Show specific list</h3> " ;
echo " <form action= \" " . $_SERVER [ 'PHP_SELF' ] . " \" method= \" POST \" id= \" oldListForm \" >
< input type = \ " hidden \" id= \" command \" name= \" command \" value= \" oldList \" />
< select name = \ " oldListId \" id= \" oldListId \" > " ;
while ( $row = mysqli_fetch_object ( $mysqli_result ))
{
echo " <option value= \" " . $row -> id . " \" >List created on " . date ( " l, d.m.Y " , ( $row -> creationTime ) / 1000 ) . " at " . date ( " G:i:s " , ( $row -> creationTime ) / 1000 );
if ( isset ( $row -> comment ) && strlen ( $row -> comment ) > 0 )
echo " <i>( " . $row -> comment . " )</i> " ;
echo " </option> " ;
}
echo "
</ select >
< input type = \ " submit \" name= \" bSubmit \" value= \" show \" />
< input type = \ " submit \" name= \" bSubmit \" value= \" remove \" onClick= \" if(!confirm('Are you sure you want to delete that list?')) { return false;} \" />
</ form > " ;
}
echo " <h3>Train Rhasspy</h3>
< form action = \ " " . $_SERVER [ 'PHP_SELF' ] . " \" method= \" POST \" >
< input type = \ " hidden \" id= \" command \" name= \" command \" value= \" trainRhasspy \" />
< input type = \ " submit \" value= \" Train Rhasspy \" />
</ form > " ;
}
function displayProductList ()
{
$SQL_Befehl = " SELECT name, synonyms FROM products ORDER BY products.name ASC " ;
$mysqli_result = DBLink :: getDbLink () -> query ( $SQL_Befehl );
$lastShop = " " ;
while ( $row = mysqli_fetch_array ( $mysqli_result ))
{
if ( is_null ( $row [ 1 ]))
echo $row [ 0 ] . " \n " ;
else
echo " ( " . str_replace ( " ; " , " | " , $row [ 1 ]) . " | " . $row [ 0 ] . " ): " . $row [ 0 ] . " \n " ;
}
}
function createNewShoppingList ()
{
$date = new DateTime ();
$SQL_command = " INSERT INTO lists (creationTime) VALUES ( " . ( $date -> getTimestamp () * 1000 ) . " ) " ;
if ( DBLink :: getDbLink () -> query ( $SQL_command ))
echo " New list has been created.<br> " ;
else
echo " Error creating new list.<br> " ;
}
function removeShoppingList ( $listId )
{
$date = new DateTime ();
$SQL_command = " DELETE FROM lists WHERE id= " . $listId ;
if ( DBLink :: getDbLink () -> query ( $SQL_command ))
echo " List has been deleted.<br> " ;
else
echo " Error deleting list.<br> " ;
}
function createProduct ( $productNames , $storeTypeId )
{
$date = new DateTime ();
$SQL_command ;
if ( strpos ( $productNames , " ; " ) !== false )
{
$terms = explode ( " ; " , $productNames );
$mainName = $terms [ 0 ];
$syns = " " ;
for ( $i = 1 ; $i < count ( $terms ); $i ++ )
{
$currentWord = trim ( $terms [ $i ]);
if ( strlen ( $currentWord ) > 0 )
$syns .= " ; " . $currentWord ;
}
$syns = ltrim ( $syns , ';' );
}
if ( strlen ( $syns ) > 0 )
$SQL_command = " INSERT INTO products (name, synonyms, storeTypeId) VALUES ( \" " . $mainName . " \" , \" " . $syns . " \" , " . $storeTypeId . " ) " ;
else
$SQL_command = " INSERT INTO products (name, storeTypeId) VALUES ( \" " . $productNames . " \" , " . $storeTypeId . " ) " ;
if ( DBLink :: getDbLink () -> query ( $SQL_command ))
{
echo " New product has been created.<br> " ;
return DBLink :: getDbLink () -> insert_id ;
}
else
echo " Error creating new product.<br> " ;
return - 1 ;
}
2021-02-03 23:20:13 +01:00
?>