<?php
namespace app\model;

use think\Image;

class File extends Base
{
    const IMG = 'img';
    const VIDEO = 'video';
    const FILE = 'file';

    //获取文件类型
    public static function getTypes()
    {
        return [
            'img' => '图片',
            'video' => '视频',
            'file' => '文件'
        ];
    }

    //获取文件列表
    public static function getList($type = '', $page = 1, $per = 20)
    {
        $limit = ($page - 1) * $per;
        if($type != ''){
            if(!in_array($type, array_keys(self::getTypes()))){
                return [];
            }
            $items = self::where('type', $type)
            ->order('id desc');
        }else{
            $items = self::order('id desc');
        }
        $items = $items->limit($limit, $per)->select()->toArray();
        foreach($items as &$item){
            $item['sizeStr'] = sizeToStr($item['size']);
        }
        return $items;
    }

    //获取分页列表
    public static function getListPage($type = '', $per = 20)
    {
        if($type != ''){
            if(!in_array($type, array_keys(self::getTypes()))){
                return [];
            }
            return self::where('type', $type)
            ->order('id desc')
            ->paginate([
                'list_rows' => $per,
                'query' => [
                    'type' => $type
                ]
            ], false);
        }else{
            return self::order('id desc')
            ->paginate([
                'list_rows' => $per
            ], false);
        }
    }

    //添加，$w_h图片尺寸大小，单位像素，只对type=img时有效
    public static function add($file, $src, $type = 'img')
    {
        $realPath = app()->getRootPath() . ltrim($src,'/');
        if(is_file($realPath) && $type == 'img'){
            $img = Image::open($realPath);
            list($w,$h) = $img->size();
            $w_h = $w . 'px * ' . $h . 'px';
        }else{
            $w_h = '';
        }
        return self::create([
            'type' => $type,
            'name' => $file->getOriginalName(),
            'src' => $src,
            'size' => $file->getSize(),
            'suffix' => $file->getOriginalExtension(),
            'mime_type' => $file->getOriginalMime(),
            'create_time' => time(),
            'w_h' => $w_h
        ]);
    }

    //获取所有记录
    public static function getAll()
    {
        return self::select()->toArray();
    }
}
