Put etymology in new words_advanced table
This commit is contained in:
parent
5f15ec6353
commit
006f020424
|
@ -215,7 +215,10 @@ WHERE dictionary=$dictionary";
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getWords ($user, $dictionary) {
|
public function getWords ($user, $dictionary) {
|
||||||
$query = "SELECT words.* FROM words JOIN dictionaries ON id = dictionary WHERE dictionary=$dictionary AND user=$user";
|
$query = "SELECT words.*, words_advanced.etymology FROM words
|
||||||
|
LEFT JOIN words_advanced ON words_advanced.dictionary = words.dictionary AND words_advanced.word_id = words.word_id
|
||||||
|
JOIN dictionaries ON dictionaries.id = words.dictionary
|
||||||
|
WHERE words.dictionary=$dictionary AND dictionaries.user=$user";
|
||||||
$results = $this->db->query($query)->fetchAll();
|
$results = $this->db->query($query)->fetchAll();
|
||||||
if ($results) {
|
if ($results) {
|
||||||
return array_map(function ($row) {
|
return array_map(function ($row) {
|
||||||
|
@ -231,7 +234,7 @@ WHERE dictionary=$dictionary";
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!is_null($row['etymology'])) {
|
if (!is_null($row['etymology'])) {
|
||||||
$word['etymology'] = $row['etymology'];
|
$word['etymology'] = explode(',', $row['etymology']);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $word;
|
return $word;
|
||||||
|
@ -259,8 +262,10 @@ WHERE dictionary=$dictionary";
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
$query = 'INSERT INTO words (dictionary, word_id, name, pronunciation, part_of_speech, definition, details, etymology, last_updated, created_on) VALUES ';
|
$query1 = 'INSERT INTO words (dictionary, word_id, name, pronunciation, part_of_speech, definition, details, last_updated, created_on) VALUES ';
|
||||||
$params = array();
|
$query2 = 'INSERT INTO words_advanced (dictionary, word_id, etymology) VALUES ';
|
||||||
|
$params1 = array();
|
||||||
|
$params2 = array();
|
||||||
$word_ids = array();
|
$word_ids = array();
|
||||||
$most_recent_word_update = 0;
|
$most_recent_word_update = 0;
|
||||||
foreach($words as $word) {
|
foreach($words as $word) {
|
||||||
|
@ -269,31 +274,36 @@ WHERE dictionary=$dictionary";
|
||||||
$most_recent_word_update = $last_updated;
|
$most_recent_word_update = $last_updated;
|
||||||
}
|
}
|
||||||
$word_ids[] = $word['wordId'];
|
$word_ids[] = $word['wordId'];
|
||||||
$query .= "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?), ";
|
$query1 .= "(?, ?, ?, ?, ?, ?, ?, ?, ?), ";
|
||||||
$params[] = $dictionary;
|
$params1[] = $dictionary;
|
||||||
$params[] = $word['wordId'];
|
$params1[] = $word['wordId'];
|
||||||
$params[] = $word['name'];
|
$params1[] = $word['name'];
|
||||||
$params[] = $word['pronunciation'];
|
$params1[] = $word['pronunciation'];
|
||||||
$params[] = $word['partOfSpeech'];
|
$params1[] = $word['partOfSpeech'];
|
||||||
$params[] = $word['definition'];
|
$params1[] = $word['definition'];
|
||||||
$params[] = $word['details'];
|
$params1[] = $word['details'];
|
||||||
$params[] = isset($word['etymology']) ? $word['etymology'] : null;
|
$params1[] = $last_updated;
|
||||||
$params[] = $last_updated;
|
$params1[] = $word['createdOn'];
|
||||||
$params[] = $word['createdOn'];
|
|
||||||
|
$query2 .= "(?, ?, ?), ";
|
||||||
|
$params2[] = $dictionary;
|
||||||
|
$params2[] = $word['wordId'];
|
||||||
|
$params2[] = isset($word['etymology']) ? implode(',', $word['etymology']) : null;
|
||||||
}
|
}
|
||||||
$query = trim($query, ', ') . ' ON DUPLICATE KEY UPDATE
|
$query1 = trim($query1, ', ') . ' ON DUPLICATE KEY UPDATE
|
||||||
name=VALUES(name),
|
name=VALUES(name),
|
||||||
pronunciation=VALUES(pronunciation),
|
pronunciation=VALUES(pronunciation),
|
||||||
part_of_speech=VALUES(part_of_speech),
|
part_of_speech=VALUES(part_of_speech),
|
||||||
definition=VALUES(definition),
|
definition=VALUES(definition),
|
||||||
details=VALUES(details),
|
details=VALUES(details),
|
||||||
etymology=VALUES(etymology),
|
|
||||||
last_updated=VALUES(last_updated),
|
last_updated=VALUES(last_updated),
|
||||||
created_on=VALUES(created_on)';
|
created_on=VALUES(created_on)';
|
||||||
|
$query2 = trim($query2, ', ') . ' ON DUPLICATE KEY UPDATE
|
||||||
|
etymology=VALUES(etymology)';
|
||||||
|
|
||||||
$results = $this->db->execute($query, $params);
|
$results1 = $this->db->execute($query1, $params1);
|
||||||
|
|
||||||
// if ($results) {
|
// if ($results1) {
|
||||||
// $database_words = $this->getWords($user, $dictionary);
|
// $database_words = $this->getWords($user, $dictionary);
|
||||||
// $database_ids = array_map(function($database_word) { return $database_word['id']; }, $database_words);
|
// $database_ids = array_map(function($database_word) { return $database_word['id']; }, $database_words);
|
||||||
// $words_to_delete = array_filter($database_ids, function($database_id) use($word_ids) { return !in_array($database_id, $word_ids); });
|
// $words_to_delete = array_filter($database_ids, function($database_id) use($word_ids) { return !in_array($database_id, $word_ids); });
|
||||||
|
@ -303,8 +313,11 @@ created_on=VALUES(created_on)';
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
if ($results) {
|
if ($results1 === true) {
|
||||||
return $results;
|
$results2 = $this->db->execute($query2, $params2);
|
||||||
|
if ($results2 === true) {
|
||||||
|
return $results1 && $results2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return array(
|
return array(
|
||||||
'error' => $this->db->last_error_info,
|
'error' => $this->db->last_error_info,
|
||||||
|
|
|
@ -86,8 +86,18 @@ CREATE TABLE IF NOT EXISTS `words` (
|
||||||
`part_of_speech` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
|
`part_of_speech` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
|
||||||
`definition` text COLLATE utf8_unicode_ci NOT NULL,
|
`definition` text COLLATE utf8_unicode_ci NOT NULL,
|
||||||
`details` text COLLATE utf8_unicode_ci NOT NULL COMMENT 'Markdown',
|
`details` text COLLATE utf8_unicode_ci NOT NULL COMMENT 'Markdown',
|
||||||
`etymology` text COLLATE utf8_unicode_ci DEFAULT NULL,
|
|
||||||
`last_updated` int(11) DEFAULT NULL,
|
`last_updated` int(11) DEFAULT NULL,
|
||||||
`created_on` int(11) NOT NULL,
|
`created_on` int(11) NOT NULL,
|
||||||
UNIQUE KEY `unique_index` (`dictionary`,`word_id`)
|
UNIQUE KEY `unique_index` (`dictionary`,`word_id`)
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE TRIGGER IF NOT EXISTS `delete_word_advanced` AFTER DELETE ON `words` FOR EACH ROW DELETE FROM words_advanced WHERE words_advanced.dictionary=old.dictionary AND words_advanced.word_id=old.word_id
|
||||||
|
$$
|
||||||
|
DELIMITER ;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `words_advanced` (
|
||||||
|
`dictionary` int(11) NOT NULL,
|
||||||
|
`word_id` int(11) NOT NULL,
|
||||||
|
`etymology` text NOT NULL COMMENT 'Comma-separated',
|
||||||
|
UNIQUE KEY `dictionary_word_id` (`dictionary`,`word_id`)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||||
|
|
Loading…
Reference in New Issue