diff --git a/CHANGES.md b/CHANGES.md index 61ae9a44..2ff14c07 100755 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,8 @@ # Changelog +## Version 10.3.13 +Modification : + - Verouillage des fichiers de données ouverts en écriture. ## Version 10.3.12 Correction : diff --git a/README.md b/README.md index 557c8c18..a8d8d670 100755 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ![](https://img.shields.io/github/last-commit/fredtempez/ZwiiCMS/master) ![](https://img.shields.io/github/release-date/fredtempez/ZwiiCMS) -# ZwiiCMS 10.3.12 +# ZwiiCMS 10.3.13 Zwii est un CMS sans base de données (flat-file) qui permet de créer et gérer facilement un site web sans aucune connaissance en programmation. diff --git a/core/class/jsondb/JsonDb.class.php b/core/class/jsondb/JsonDb.class.php index 3e9ce04c..05566c29 100755 --- a/core/class/jsondb/JsonDb.class.php +++ b/core/class/jsondb/JsonDb.class.php @@ -108,8 +108,7 @@ class JsonDb extends \Prowebcraft\Dot } else { $this->data = json_decode(file_get_contents($this->db), true); if (!$this->data === null) { - throw new \InvalidArgumentException('Database file ' . $this->db - . ' contains invalid json object. Please validate or remove file'); + throw new \InvalidArgumentException('Erreur de lecture du fichier de données ' . $this->db); } } } @@ -120,6 +119,16 @@ class JsonDb extends \Prowebcraft\Dot * Saving to local database */ public function save() { - file_put_contents($this->db, json_encode($this->data, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT)); + // 3 essais + for($i = 0; $i < 4; $i++) { + if(file_put_contents($this->db, json_encode($this->data, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|LOCK_EX)) !== false) { + break; + } + // Pause de 10 millisecondes + usleep(10000); + if ($i === 4) { + throw new \InvalidArgumentException('Erreur d\'écriture du fichier de données ' . $this->db); + } + } } } diff --git a/core/core.php b/core/core.php index 25e6df47..bbb5aee1 100755 --- a/core/core.php +++ b/core/core.php @@ -40,7 +40,7 @@ class common { const ACCESS_TIMER = 1800; // Numéro de version - const ZWII_VERSION = '10.3.12'; + const ZWII_VERSION = '10.3.13'; const ZWII_UPDATE_CHANNEL = "v10"; public static $actions = []; @@ -617,7 +617,8 @@ class common { $this->setData(['theme',$tempData['theme']]); // Import des users sauvegardés si option active - if ($keepUsers === false) { + if ($keepUsers === false + AND $tempData['user'] !== NULL) { $this->setData(['user',$tempData['user']]); } @@ -1878,7 +1879,8 @@ class core extends common { } } // Accès concurrent stocke la page visitée - if ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')) { + if ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD') + AND $this->getUser('id') ) { $this->setData(['user',$this->getUser('id'),'accessUrl',$this->getUrl()]); $this->setData(['user',$this->getUser('id'),'accessTimer',time()]); }