114 lines
2.9 KiB
PHP
114 lines
2.9 KiB
PHP
<?php
|
|
/**
|
|
* Log writing section of the plugin
|
|
*
|
|
* @link
|
|
*
|
|
* @package Wt_Import_Export_For_Woo
|
|
*/
|
|
if (!defined('ABSPATH')) {
|
|
exit;
|
|
}
|
|
if(!class_exists('Wt_Import_Export_For_Woo_Basic_Log')){
|
|
class Wt_Import_Export_For_Woo_Basic_Log
|
|
{
|
|
public static $log_dir=WP_CONTENT_DIR.'/webtoffee_iew_log';
|
|
public static $history_id='';
|
|
public function __construct()
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Get given temp file path.
|
|
* If file name is empty then file path will return
|
|
*/
|
|
public static function get_file_path($file_name="")
|
|
{
|
|
global $wp_filesystem;
|
|
|
|
// Initialize WP_Filesystem
|
|
if (!function_exists('WP_Filesystem')) {
|
|
require_once(ABSPATH . 'wp-admin/includes/file.php');
|
|
}
|
|
WP_Filesystem();
|
|
|
|
// Create directory using WP_Filesystem
|
|
if (!$wp_filesystem->is_dir(self::$log_dir)) {
|
|
if (!$wp_filesystem->mkdir(self::$log_dir, FS_CHMOD_DIR)) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Ensure proper permissions and add index.php for security
|
|
$wp_filesystem->chmod(self::$log_dir, FS_CHMOD_DIR);
|
|
|
|
// Add security files to prevent directory listing and direct access
|
|
$security_files = array(
|
|
'index.php' => '<?php' . PHP_EOL . '// Silence is golden',
|
|
'.htaccess' => 'deny from all'
|
|
);
|
|
|
|
foreach ($security_files as $file => $content) {
|
|
if (!$wp_filesystem->exists(self::$log_dir . '/' . $file)) {
|
|
$wp_filesystem->put_contents(
|
|
self::$log_dir . '/' . $file,
|
|
$content
|
|
);
|
|
}
|
|
}
|
|
return self::$log_dir.'/'.$file_name;
|
|
}
|
|
|
|
/**
|
|
* Checks a log file created for the history entry for current day
|
|
* @param int $history_id id of history entry
|
|
* @return string/bool if file found returns file name otherwise false
|
|
*/
|
|
public static function check_log_exists_for_entry($history_id)
|
|
{
|
|
$log_dir=self::get_file_path();
|
|
$exp='~^'.$history_id.'.*\.log$~';
|
|
$files = preg_grep($exp, scandir($log_dir));
|
|
|
|
if(count($files)>0) /* file exists */
|
|
{
|
|
foreach($files as $key => $value)
|
|
{
|
|
$file_name=pathinfo($value, PATHINFO_FILENAME);
|
|
$file_name_arr=explode('_', $file_name);
|
|
$file_date_time=end($file_name_arr);
|
|
$file_date_time_arr=explode(' ', $file_date_time);
|
|
$file_time=strtotime($file_date_time_arr[0]);
|
|
if($file_time) //file time exists
|
|
{
|
|
$today=strtotime(gmdate('Y-m-d'));
|
|
$file_time=strtotime(gmdate('Y-m-d', $file_time));
|
|
if($today==$file_time) //file exists with the current day
|
|
{
|
|
return $value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Generate log file name
|
|
*
|
|
*/
|
|
public static function generate_file_name($post_type='', $action_type='', $history_id='')
|
|
{
|
|
$arr=array($history_id, $post_type);
|
|
if(defined( 'WT_IEW_CRON' )) /* this is a cron run so add a schedule prefix */
|
|
{
|
|
$arr[]='schedule';
|
|
}
|
|
$arr[]=$action_type;
|
|
$arr[]=gmdate('Y-m-d h i s A'); /* if changing this format please consider `check_log_exists_for_entry` method */
|
|
|
|
$arr=array_filter($arr);
|
|
return implode("_", $arr).'.log';
|
|
}
|
|
}
|
|
} |