コード例 #1
0
ファイル: ic2.php プロジェクト: nyarla/fluxflex-rep2ex
function ic2_checkAbornedFile($tmpfile, $params)
{
    global $ini;
    extract($params);
    // ブラックリスト検索
    $bl_check = new IC2_DataObject_BlackList();
    $bl_check->whereAddQuoted('size', '=', $size);
    $bl_check->whereAddQuoted('md5', '=', $md5);
    if ($bl_check->find(true)) {
        $bl_add = clone $bl_check;
        $bl_add->id = null;
        $bl_add->uri = $uri;
        switch ((int) $bl_check->type) {
            case 0:
                $errcode = 'x05';
                // No More
                break;
            case 1:
                $errcode = 'x01';
                // Aborn
                break;
            case 2:
                $errcode = 'x04';
                // Virus
                break;
            default:
                $errcode = 'x06';
                // Unknown
        }
        // 厳密には、その可能性が限りなく高いだけで100%ではない
        ic2_error($errcode, 'ブラックリストにある画像と同じ内容です。', false);
    }
    // あぼーん画像検索
    $check = new IC2_DataObject_Images();
    $check->whereAddQuoted('size', '=', $size);
    $check->whereAddQuoted('md5', '=', $md5);
    //$check->whereAddQuoted('mime', '=', $mime); // SizeとMD5で十分
    // 同じのが異なるURLで複数登録されていて、ランクが違う可能性があるので
    // (普通に使う分には起こらない...と思う。少なくとも起こりにくいはず)
    $check->orderByArray(array('rank' => 'ASC'));
    if ($check->find(true)) {
        if ($check->rank < 0) {
            ic2_aborn($params);
            // 現状では(たぶんずっと) -1 or -4 だけだが、一応
            if ($check->rank >= -5) {
                $errcode = 'x0' . abs($check->rank);
            } else {
                $errcode = 'x06';
                // Unknown
            }
            // 厳密には、以下同文
            if ($check->rank == -4) {
                $errmsg = 'ウィルスに感染していた画像と同じ内容です。';
            } else {
                $errmsg = '既にあぼーんされている画像と同じ内容です。';
            }
            ic2_error($errcode, $errmsg);
        } else {
            return $check->rank;
        }
    }
    return false;
}
コード例 #2
0
 /**
  * 画像1000枚ごとにインクリメントするディレクトリIDを取得
  */
 public function dirID($size = null, $md5 = null, $mime = null)
 {
     if ($size && $md5 && $mime) {
         $icdb = new IC2_DataObject_Images();
         $icdb->whereAddQUoted('size', '=', $size);
         $icdb->whereAddQuoted('md5', '=', $md5);
         $icdb->whereAddQUoted('mime', '=', $mime);
         $icdb->orderByArray(array('id' => 'ASC'));
         if ($icdb->find(true)) {
             $this->found = $icdb->toArray();
             return str_pad(ceil($icdb->id / 1000), 5, 0, STR_PAD_LEFT);
         }
     }
     $sql = 'SELECT MAX(' . $this->db->quoteIdentifier('id') . ') + 1 FROM ' . $this->db->quoteIdentifier($this->ini['General']['table']) . ';';
     $nextid = $this->db->getOne($sql);
     if (DB::isError($nextid) || !$nextid) {
         $nextid = 1;
     }
     return str_pad(ceil($nextid / 1000), 5, 0, STR_PAD_LEFT);
 }