<?php
namespace app\service;

use app\model\Category;
use app\model\Article;

class Tool
{
    //删除文件
    public static function delFile($path)
    {
        if(!empty(trim($path))){
            $realPath = app()->getRootPath() . ltrim($path, '/');
            if (file_exists($realPath)) {
                $info = pathinfo($realPath);
                $source = $info['dirname'] . DIRECTORY_SEPARATOR . $info['filename'] . '*.' . $info['extension'];
                foreach(glob($source) as $filename){
                    if(is_file($filename)){
                        unlink($filename);
                    }
                }
                clearstatcache();// 清除缓存
            }
        }
    }

    /**
     * 删除目录下的所有文件和子目录
     * 调用完毕后请用clearstatcache()清理缓存
     */
    public static function removeByPath($path)
    {
        if(is_dir($path)) {
            if($handle = @opendir($path)) {
                while (($file = readdir($handle)) !== false){
                    if($file != '.' && $file != '..') {
                        $child = $path.'/'.$file;
                        is_dir($child) ? self::removeByPath($child) : @unlink($child);
                    }
                }
            }
            closedir($handle);
        } elseif (is_file($path)) {
            @unlink($path);
        } else {
            return false;
        }
        return true;
    }

    //去除字符串空格
    public static function trimSpace($str)
    {
        return str_replace(' ', '', trim($str));
    }


    //获取文章链接
    public static function getArticleUrl($article)
    {
        if(empty($article)){
            return '';
        }
        // if(!empty($article['link'])){
        //     return $article['link'];
        // }
        if(empty($article['route'])){
            return url('article/detail', ['id' => $article['id']]);
        }
        $category = Category::getById($article['category_id']);
        $categoryRoute = '';
        if(isset($category['route']) && !empty($category['route'])){
            $categoryRoute = $category['route'];
        }
        $url = '/';
        if(!empty($categoryRoute)){
            $url .= $categoryRoute . '/';
        }
        return $url . $article['route'] . '.html';
    }

    /**
     * 格式化金钱字段
     * @param $money
     * @return float
     */
    public static function moneyFormat($money)
    {
        $money = is_string($money) ? trim($money) : $money;
        return is_numeric($money) ? number_format($money, 2, '.', '') : 0;
    }
    // 获取客户端IP
    public static function get_client_ip() {
        $forwarded = request()->header("x-forwarded-for");
        if($forwarded){
            $ip = explode(',',$forwarded)[0];
        }else{
            $ip = request()->ip();
        }
        return $ip;
    }
}