2015-11-04 22:12:39 +01:00
< ? php
2015-11-28 07:17:52 +01:00
// require_once("../required.php");
require_once ( 'config.php' );
require_once ( SITE_LOCATION . '/php/functions.php' );
2015-11-04 22:12:39 +01:00
2015-11-05 00:43:52 +01:00
session_start ();
2015-11-04 22:12:39 +01:00
if ( $_GET [ 'action' ] == 'getall' ) {
2015-11-28 07:17:52 +01:00
Get_Dictionaries ( true );
2015-11-04 22:12:39 +01:00
}
elseif ( $_GET [ 'action' ] == 'load' ) {
Load_Current_Dictionary ();
}
elseif ( $_GET [ 'action' ] == 'new' ) {
Save_Current_DictionaryAsNew ();
}
elseif ( $_GET [ 'action' ] == 'update' ) {
Update_Current_Dictionary ();
}
elseif ( $_GET [ 'action' ] == 'switch' ) {
2015-11-28 07:17:52 +01:00
Switch_Current_Dictionary ( $_POST [ 'newdictionaryid' ], true );
}
elseif ( $_GET [ 'action' ] == 'delete' ) {
2015-12-01 00:08:43 +01:00
Delete_Current_Dictionary ();
2015-11-04 22:12:39 +01:00
}
2015-11-28 07:17:52 +01:00
function Get_Dictionaries ( $return_list = true ) {
2015-12-01 00:08:43 +01:00
if ( $_SESSION [ 'user' ] > 0 ) {
$query = " SELECT `id`, `name` FROM `dictionaries` WHERE `user`= " . $_SESSION [ 'user' ] . " ORDER BY `name` ASC; " ;
$dictionaries = query ( $query );
if ( $dictionaries ) {
if ( num_rows ( $dictionaries ) > 0 ) {
if ( $return_list ) {
$list = " " ;
$_SESSION [ 'dictionaries' ] = [];
while ( $dict = fetch ( $dictionaries )) {
$_SESSION [ 'dictionaries' ][] = $dict [ 'id' ]; // Save a list of all dictionaries user has.
//list for the switch dictionaries dropdown.
$list .= $dict [ 'id' ] . '_IDNAMESEPARATOR_' . $dict [ 'name' ] . '_DICTIONARYSEPARATOR_' ;
2015-11-04 22:12:39 +01:00
}
2015-12-01 00:08:43 +01:00
echo $list ;
2015-11-04 22:12:39 +01:00
}
2015-12-01 00:08:43 +01:00
return true ;
2015-11-04 22:12:39 +01:00
} else {
2015-12-01 00:08:43 +01:00
echo " no dictionaries " ;
2015-11-04 22:12:39 +01:00
}
} else {
2015-12-01 00:08:43 +01:00
echo " could not load " ;
2015-11-04 22:12:39 +01:00
}
} else {
2015-12-01 00:08:43 +01:00
echo " not signed in " ;
2015-11-04 22:12:39 +01:00
}
return false ;
}
function Load_Current_Dictionary () {
2015-12-01 00:08:43 +01:00
if ( $_SESSION [ 'user' ] > 0 ) {
2015-12-22 01:52:56 +01:00
$query = " SELECT `d`.`id`, `d`.`name`, `d`.`description`, `u`.`public_name`, `d`.`words`, `d`.`next_word_id`, `d`.`allow_duplicates`, `d`.`case_sensitive`, `d`.`parts_of_speech`, `d`.`sort_by_equivalent`, `d`.`is_complete`, `d`.`is_public` " ;
2016-06-14 06:26:05 +02:00
$query .= " FROM `dictionaries` AS `d` LEFT JOIN `users` AS `u` ON `user`=`u`.`id` WHERE `d`.`id`=`u`.`current_dictionary` AND `user`= " . $_SESSION [ 'user' ] . " ; " ;
2015-11-04 22:12:39 +01:00
$dictionary = query ( $query );
if ( $dictionary ) {
2015-11-05 00:43:52 +01:00
if ( num_rows ( $dictionary ) > 0 ) {
if ( num_rows ( $dictionary ) === 1 ) {
2015-11-26 00:08:24 +01:00
while ( $dict = fetch ( $dictionary )) {
2015-11-05 00:43:52 +01:00
$_SESSION [ 'dictionary' ] = $dict [ 'id' ];
$json = '{"name":"' . $dict [ 'name' ] . '",' ;
$json .= '"description":"' . $dict [ 'description' ] . '",' ;
$json .= '"createdBy":"' . $dict [ 'public_name' ] . '",' ;
$json .= '"words":' . $dict [ 'words' ] . ',' ;
2015-12-01 00:08:43 +01:00
$json .= '"nextWordId":' . $dict [ 'next_word_id' ] . ',' ;
2015-11-05 00:43:52 +01:00
$json .= '"settings":{' ;
$json .= '"allowDuplicates":' . (( $dict [ 'allow_duplicates' ] == 1 ) ? 'true' : 'false' ) . ',' ;
$json .= '"caseSensitive":' . (( $dict [ 'case_sensitive' ] == 1 ) ? 'true' : 'false' ) . ',' ;
$json .= '"partsOfSpeech":"' . $dict [ 'parts_of_speech' ] . '",' ;
2015-11-26 00:08:24 +01:00
$json .= '"sortByEquivalent":' . (( $dict [ 'sort_by_equivalent' ] == 1 ) ? 'true' : 'false' ) . ',' ;
2015-12-22 01:52:56 +01:00
$json .= '"isComplete":' . (( $dict [ 'is_complete' ] == 1 ) ? 'true' : 'false' ) . ',' ;
$json .= '"isPublic":' . (( $dict [ 'is_public' ] == 1 ) ? 'true' : 'false' ) . '},' ;
2015-11-26 00:08:24 +01:00
$json .= '"externalID":' . $dict [ 'id' ] . '}' ;
2015-11-05 00:43:52 +01:00
echo $json ;
return true ;
}
} else {
echo " more than 1 returned " ;
2015-11-04 22:12:39 +01:00
}
} else {
2015-11-05 00:43:52 +01:00
echo " no dictionaries " ;
2015-11-04 22:12:39 +01:00
}
} else {
echo " could not load " ;
}
} else {
2015-12-01 00:08:43 +01:00
echo " not logged in " ;
2015-11-04 22:12:39 +01:00
}
return false ;
}
function Save_Current_DictionaryAsNew () {
2015-12-01 00:08:43 +01:00
if ( $_SESSION [ 'user' ] > 0 ) {
2015-11-26 00:08:24 +01:00
$dbconnection = new PDO ( 'mysql:host=' . DATABASE_SERVERNAME . ';dbname=' . DATABASE_NAME . ';charset=utf8' , DATABASE_USERNAME , DATABASE_PASSWORD );
$dbconnection -> setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION );
$dbconnection -> setAttribute ( PDO :: ATTR_EMULATE_PREPARES , false );
$dbconnection -> setAttribute ( PDO :: ATTR_DEFAULT_FETCH_MODE , PDO :: FETCH_ASSOC );
2016-06-14 06:26:05 +02:00
$query = " INSERT INTO `dictionaries`(`user`, `name`, `description`, `words`, `next_word_id`, `allow_duplicates`, `case_sensitive`, `parts_of_speech`, `sort_by_equivalent`, `is_complete`, `is_public`) " ;
$query .= " VALUES ( " . $_SESSION [ 'user' ] . " ,' " . $_POST [ 'name' ] . " ',' " . $_POST [ 'description' ] . " ',' " . $_POST [ 'words' ] . " ', " . $_POST [ 'nextwordid' ] . " , " . $_POST [ 'allowduplicates' ] . " , " . $_POST [ 'casesensitive' ] . " ,' " . $_POST [ 'partsofspeech' ] . " ', " . $_POST [ 'sortbyequivalent' ] . " , " . $_POST [ 'iscomplete' ] . " , " . $_POST [ 'ispublic' ] . " ) " ;
2015-11-04 22:12:39 +01:00
2015-11-26 00:08:24 +01:00
try {
$update = $dbconnection -> prepare ( $query );
$update -> execute ();
2015-12-01 00:08:43 +01:00
$_SESSION [ 'dictionary' ] = $dbconnection -> lastInsertId ();
2015-11-04 22:12:39 +01:00
$_SESSION [ 'dictionaries' ][] = $_SESSION [ 'dictionary' ]; //Add new id to valid dictionaries.
echo $_SESSION [ 'dictionary' ];
2015-12-01 00:08:43 +01:00
Switch_Current_Dictionary ( $_SESSION [ 'dictionary' ], false );
2015-11-04 22:12:39 +01:00
return true ;
2015-11-26 00:08:24 +01:00
}
catch ( PDOException $ex ) {
$errorMessage = $dbconnection -> errorInfo ();
echo " could not update: \n " . $errorMessage [ 2 ] . " \n " . $query ;
2015-11-04 22:12:39 +01:00
}
} else {
2015-12-01 00:08:43 +01:00
echo " not logged in " ;
2015-11-04 22:12:39 +01:00
}
return false ;
}
function Update_Current_Dictionary () {
2015-12-01 00:08:43 +01:00
if ( $_SESSION [ 'user' ] > 0 ) {
if ( isset ( $_SESSION [ 'dictionary' ])) {
$query = " UPDATE `dictionaries` SET " ;
if ( isset ( $_POST [ 'name' ])) {
$query .= " `name`=' " . $_POST [ 'name' ] . " ', " ;
}
if ( isset ( $_POST [ 'description' ])) {
$query .= " `description`=' " . $_POST [ 'description' ] . " ', " ;
}
if ( isset ( $_POST [ 'words' ])) {
$query .= " `words`=' " . $_POST [ 'words' ] . " ', " ;
}
if ( isset ( $_POST [ 'nextwordid' ])) {
$query .= " `next_word_id`= " . $_POST [ 'nextwordid' ] . " , " ;
}
2016-02-29 22:43:41 +01:00
if ( isset ( $_POST [ 'allowduplicates' ])) {
2015-12-01 00:08:43 +01:00
$query .= " `allow_duplicates`= " . $_POST [ 'allowduplicates' ] . " , " ;
}
if ( isset ( $_POST [ 'casesensitive' ])) {
$query .= " `case_sensitive`= " . $_POST [ 'casesensitive' ] . " , " ;
}
if ( isset ( $_POST [ 'partsofspeech' ])) {
$query .= " `parts_of_speech`=' " . $_POST [ 'partsofspeech' ] . " ', " ;
}
if ( isset ( $_POST [ 'sortbyequivalent' ])) {
$query .= " `sort_by_equivalent`=' " . $_POST [ 'sortbyequivalent' ] . " ', " ;
}
if ( isset ( $_POST [ 'iscomplete' ])) {
$query .= " `is_complete`= " . $_POST [ 'iscomplete' ] . " , " ;
}
if ( isset ( $_POST [ 'ispublic' ])) {
$query .= " `is_public`= " . $_POST [ 'ispublic' ] . " , " ;
}
$query .= " `last_updated`=' " . date ( " Y-m-d H:i:s " ) . " ' " ;
$query .= " WHERE `id`= " . $_SESSION [ 'dictionary' ] . " AND `user`= " . $_SESSION [ 'user' ] . " ; " ;
$update = query ( $query );
if ( $update ) {
echo " updated successfully " ;
return true ;
} else {
echo " could not update " ;
}
2015-11-04 22:12:39 +01:00
} else {
2015-12-01 00:08:43 +01:00
Save_Current_DictionaryAsNew ();
2015-11-04 22:12:39 +01:00
}
} else {
2015-12-01 00:08:43 +01:00
echo " not logged in " ;
2015-11-04 22:12:39 +01:00
}
return false ;
}
2015-11-28 07:17:52 +01:00
function Switch_Current_Dictionary ( $newdictionaryid , $returndictionary = true ) {
2015-12-01 00:08:43 +01:00
if ( $_SESSION [ 'user' ] > 0 ) {
if ( isset ( $newdictionaryid )) {
if ( in_array ( $newdictionaryid , $_SESSION [ 'dictionaries' ])) {
//Clear is_current from all user's dictionaries and then update the one they chose, only if the chosen dictionary is valid.
2016-06-14 06:26:05 +02:00
$query .= " UPDATE `users` SET `current_dictionary`= " . $newdictionaryid . " WHERE `id`= " . $_SESSION [ 'user' ] . " ; " ;
2015-12-01 00:08:43 +01:00
$update = query ( $query );
if ( $update ) {
if ( $returndictionary ) {
Load_Current_Dictionary ();
} else {
echo " dictionary switched " ;
}
// return true;
2015-11-28 07:17:52 +01:00
} else {
2015-12-01 00:08:43 +01:00
echo " could not update " ;
2015-11-28 07:17:52 +01:00
}
2015-11-04 22:12:39 +01:00
} else {
2015-12-01 00:08:43 +01:00
echo " invalid dictionary " ;
2015-11-04 22:12:39 +01:00
}
} else {
2015-12-01 00:08:43 +01:00
echo " no info provided " ;
2015-11-04 22:12:39 +01:00
}
} else {
2015-12-01 00:08:43 +01:00
echo " not logged in " ;
2015-11-04 22:12:39 +01:00
}
return false ;
}
2015-11-28 07:17:52 +01:00
2015-12-01 00:08:43 +01:00
function Delete_Current_Dictionary () {
if ( $_SESSION [ 'user' ] > 0 ) {
if ( isset ( $_SESSION [ 'dictionary' ])) {
if ( in_array ( $_SESSION [ 'dictionary' ], $_SESSION [ 'dictionaries' ])) {
//Clear is_current from all user's dictionaries and then update the one they chose, only if the chosen dictionary is valid.
$query = " DELETE FROM `dictionaries` WHERE `id`= " . $_SESSION [ 'dictionary' ] . " AND `user`= " . $_SESSION [ 'user' ] . " ; " ;
2015-11-28 07:17:52 +01:00
$update = query ( $query );
2015-12-01 00:08:43 +01:00
2015-11-28 07:17:52 +01:00
if ( $update ) {
2015-12-01 00:08:43 +01:00
Get_Dictionaries ( true );
} else {
echo " could not delete " ;
2015-11-28 07:17:52 +01:00
}
} else {
2015-12-01 00:08:43 +01:00
echo " invalid dictionary " ;
2015-11-28 07:17:52 +01:00
}
} else {
2015-12-01 00:08:43 +01:00
echo " no current dictionary " ;
2015-11-28 07:17:52 +01:00
}
} else {
2015-12-01 00:08:43 +01:00
echo " not logged in " ;
2015-11-28 07:17:52 +01:00
}
return false ;
2015-12-01 00:08:43 +01:00
}
2015-11-04 22:12:39 +01:00
?>