diff --git a/README.md b/README.md index 9daf270..a76c7db 100644 --- a/README.md +++ b/README.md @@ -5,24 +5,3 @@ There is nothing stored on the server except the words. ## Database Database config option is set in the dbconfig.php file, example is in dbconfig_empty.php. -This software is developped with PostgreSQL, -I don't know if it is working with others DB management systems. - -## Libraries - -### php-i18n - -The internationalization is made possible by -[Philipp Schröer (php-i18n project)](https://github.com/Philipp15b/php-i18n). -For now it's only in french but the traduction should be easy. - -### Wordcloud2 - -The display of the words cloud is done by the Wordcloud2 javascript -code, made by -[Timothy Guan-tin Chien](http://timdream.org/wordcloud2.js/). - -### Soundex_fr - -The words comparison is made with PHP tools and the work of -Florent Bruneau on [the french translation of soundex](http://blog.mymind.fr/blog/2007/03/15/soundex-francais/). diff --git a/create.php b/create.php index 7b8f98f..f24f899 100644 --- a/create.php +++ b/create.php @@ -24,11 +24,12 @@ if (empty($_POST)) { > - + createCloud($text, $size, $duration)) { $viewUrl = 'result.php?id=' . $cloud['code']; $viewName = 'https://' . $_SERVER['HTTP_HOST'] . '/' . $viewUrl; diff --git a/db.php b/db.php index 8868b4f..5e9fbbe 100644 --- a/db.php +++ b/db.php @@ -14,7 +14,6 @@ class DataBase const DEFAULT_SIZE = 3; const MAX_SIZE = 9; const CLOUD_CODE_LENGTH = 6; - const CLOUD_CODE_MAXTRY = 10; private $db; private $cloud; @@ -132,40 +131,16 @@ class DataBase $stmt->execute(); } } - /** - * Get the list of the words inside the cloud - * - * If there is no $code parameter and the cloud isn't already loaded, - * return null. - * - * Return a list of words, orderer from the most used to the least, - * with the following fields: - * - word => the word - * - count => the number of occurences of the word - * - relative => the relative number of occurences, - * relative to the occurence max - * - percent => the percent of word in the cloud, - * relative to the total number of words - * @param string $code Code of the cloud - * @return array|null The words list - */ - public function getWordsList(string $code = null) + public function getWordsList(string $id) { - if (isset($code)) { - $this->loadCloudByCode($code); - } - if (!isset($code) && !$this->isCloudSet()) { - return null; - } - $stmt = $this->db->prepare(" SELECT * FROM words JOIN clouds ON words.cloud_id = clouds.id_cloud - WHERE code = :code; + WHERE code = :id; "); - $stmt->bindValue(':code', $this->cloud['code']); + $stmt->bindValue(':id', $id); $stmt->execute(); $words = []; $values = []; @@ -182,7 +157,7 @@ class DataBase } foreach ($words as $key => $word) { $words[$key]['relative'] = $word['count'] / $max; - $words[$key]['percent'] = $word['count'] / $total * 100; + $words[$key]['percent'] = $word['count'] / $total * 100; } array_multisort($values, SORT_DESC, $words); @@ -218,25 +193,34 @@ class DataBase $duration = self::DEFAULT_DURATION; } - for ($i = 0; $i < self::CLOUD_CODE_MAXTRY; $i++) { + $cpt = 0; + $codeIsUsed = true; + while ($codeIsUsed && $cpt < 0) { $code = bin2hex(random_bytes(self::CLOUD_CODE_LENGTH)); - $code = '2ae606bfb6d2'; - if (!$this->loadCloudByCode($code)) { - break; + $stmt = $this->db->prepare(" + SELECT * + FROM clouds + WHERE code = :code; + "); + $stmt->bindValue(':code', $code); + $stmt->execute(); + if (!$data = $stmt->fetch()) { + $codeIsUsed = false; } + $cpt++; } - if ($this->isCloudSet()) { + if ($codeIsUsed) { return false; } - $delete = date('Y-m-d H:i:s', strtotime(self::OPTIONS_DURATION[$duration])); + $duration = date('Y-m-d H:i:s', strtotime(self::OPTIONS_DURATION[$duration])); $stmt = $this->db->prepare(" INSERT INTO clouds(code, text, size, delete_t) - VALUES (:code, :text, :size, :delete); + VALUES (:code, :text, :size, :duration); "); $stmt->bindValue(':code', $code, PDO::PARAM_STR); $stmt->bindValue(':text', $text, PDO::PARAM_STR); $stmt->bindValue(':size', $size, PDO::PARAM_INT); - $stmt->bindValue(':delete', $delete, PDO::PARAM_STR); + $stmt->bindValue(':duration', $duration, PDO::PARAM_STR); try { $stmt->execute(); } catch (PDOEXception $e) { @@ -246,7 +230,7 @@ class DataBase 'id' => $this->db->lastInsertId(), 'code' => $code, 'size' => $size, - 'delete_t' => $delete, + 'delete_t' => $duration, 'text' => $text, ); return $this->cloud; diff --git a/index.php b/index.php index 806b854..ced4ef2 100644 --- a/index.php +++ b/index.php @@ -29,7 +29,7 @@ if (isset($_GET['id'])) { ?>

- +
%s n'a pas été trouvé, veuillez vérifier [create] errorCode = "Erreur lors de la création du nuage, désolé du dérangement." -button = "Créer" [duration] day = "un jour"