Initial Commit

This commit is contained in:
David Stone
2024-11-30 18:24:12 -07:00
commit e8f7955c1c
5432 changed files with 1397750 additions and 0 deletions

144
inc/duplication/log.php Normal file
View File

@ -0,0 +1,144 @@
<?php
if( !class_exists( 'MUCD_Log' ) ) {
class MUCD_Log {
/**
* @readonly
*/
private string $log_file_path;
/**
* @readonly
*/
private string $log_file_url;
private $fp;
/**
* @var boolean
*/
public $mod;
/**
* @var string
*/
private $log_dir_path = '';
/**
* @var string
*/
private $log_file_name = '';
/**
* Constructor
* @since 0.2.0
* @param boolean $mod is log active
* @param string $log_dir_path log directory
* @param string $log_file_name log file name
*/
public function __construct($mod, $log_dir_path = '', $log_file_name = '') {
$this->mod = $mod;
$this->log_dir_path = $log_dir_path;
$this->log_file_name = $log_file_name;
$this->log_file_path = $log_dir_path . $log_file_name;
$this->log_file_url = str_replace(ABSPATH, get_site_url(1, '/'), $log_dir_path) . $log_file_name;
if( $mod !== false) {
$this->init_file();
}
}
/**
* Returns log directory path
* @since 0.2.0
* @return string $this->log_dir_path
*/
public function dir_path() {
return $this->log_dir_path;
}
/**
* Returns log file path
* @since 0.2.0
* @return string $this->log_file_path
*/
public function file_path() {
return $this->log_file_path;
}
/**
* Returns log file name
* @since 0.2.0
* @return string $this->log_file_name
*/
public function file_name() {
return $this->log_file_name;
}
/**
* Returns log file url
* @since 0.2.0
* @return string $this->log_file_url
*/
public function file_url() {
return $this->log_file_url;
}
/**
* Checks if log is writable
* @since 0.2.0
* @return boolean True if plugin can writes the log, or false
*/
public function can_write() {
return ( is_resource($this->fp) && is_writable($this->log_file_path) );
}
/**
* Returns log mod (active or not)
* @since 0.2.0
* @return boolean $this->mod
*/
public function mod() {
return $this->mod;
}
/**
* Initialize file before writing
* @since 0.2.0
* @return boolean True on success, False on failure
*/
private function init_file(): bool {
if(MUCD_Files::init_dir($this->log_dir_path) !==false) {
if( !$this->fp = @fopen($this->log_file_path, 'a') ) {
return false;
}
chmod($this->log_file_path, 0777);
return true;
}
return false;
}
/**
* Writes a message in log file
* @since 0.2.0
* @param string $message the message to write
* @return boolean True on success, False on failure
*/
public function write_log($message): bool {
if($this->mod!==false && $this->can_write() ) {
$time = @date('[d/M/Y:H:i:s]');
fwrite($this->fp, "$time $message" . "\r\n");
return true;
}
return false;
}
/**
* Closes the log file
* @since 0.2.0
*/
public function close_log() {
@fclose($this->fp);
}
}
}