<?php namespace HashOver;// Copyright (C) 2010-2021 Jacob Barkdull// This file is part of HashOver.//// HashOver is free software: you can redistribute it and/or modify// it under the terms of the GNU Affero General Public License as// published by the Free Software Foundation, either version 3 of the// License, or (at your option) any later version.//// HashOver is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the// GNU Affero General Public License for more details.//// You should have received a copy of the GNU Affero General Public License// along with HashOver.  If not, see <http://www.gnu.org/licenses/>.// Functions for reading and writing JSON filesclass ParseJSON extends CommentFiles{	public function __construct (Setup $setup, Thread $thread)	{		// Construct parent class		parent::__construct ($setup, $thread);		// Throw exception if the JSON extension isn't loaded		$setup->extensionsLoaded (array ('json'));	}	// Returns an array of comment files	public function query ()	{		return $this->loadFiles ('json');	}	// Reads a comment file	public function read ($file, $thread = 'auto')	{		// Get comment file path		$file = $this->getCommentPath ($file, 'json', $thread);		// Read and parse JSON comment file		$json = $this->readJSON ($file);		return $json;	}	// Saves a comment file	public function save ($file, array $contents, $editing = false, $thread = 'auto')	{		// Get comment file path		$file = $this->getCommentPath ($file, 'json', $thread);		// Return false on attempts to override an existing file		if (file_exists ($file) and $editing === false) {			return false;		}		// Attempt to write file		$saved = $this->saveJSON ($file, $contents);		// Change file permission if file saved successfully		if ($saved !== false) {			@chmod ($file, 0600);		}		// Return status of file write		return $saved;	}	// Deletes a comment file	public function delete ($file, $hard_unlink = false)	{		// Actually delete the comment file		if ($hard_unlink === true) {			return unlink ($this->getCommentPath ($file, 'json'));		}		// Read comment file		$json = $this->read ($file);		// Check for JSON parse error		if ($json !== false) {			// Change status to deleted			$json['status'] = 'deleted';			// Attempt to save file			if ($this->save ($file, $json, true)) {				return true;			}		}		return false;	}}