function ic2_aborn($params, $infected = false) { global $ini; extract($params); $aborn = new IC2_DataObject_Images(); $aborn->uri = $uri; $aborn->host = $host; $aborn->name = $name; $aborn->size = $size; $aborn->md5 = $md5; $aborn->width = $width; $aborn->height = $height; $aborn->mime = $mime; $aborn->time = time(); $aborn->rank = $infected ? -4 : -1; if ($ini['General']['automemo'] && !is_null($memo)) { $aborn->memo = $memo; } return $aborn->insert(); }
/** * アップロードされた画像ファイルをDBに登録する。 * 成功したときはファイル情報(配列)を、 * 失敗したときはエラーメッセージ(文字列)を返す。 */ function ic2_register_uploaded_file($file) { global $_conf, $ini, $err_fmt; global $thumbnailer; global $f_host, $f_time, $f_memo, $f_rank; $utf8_path = mb_convert_encoding($file['path'], 'UTF-8', 'CP932'); $utf8_name = mb_convert_encoding($file['name'], 'UTF-8', 'CP932'); $file['path'] = htmlspecialchars($file['path'], ENT_QUOTES); $file['name'] = htmlspecialchars($file['name'], ENT_QUOTES); $file['memo'] = $f_memo; $file['rank'] = $f_rank; $file['img_src'] = $thumbnailer->srcPath($file['size'], $file['md5'], $file['mime']); $file['thumb'] = $thumbnailer->thumbPath($file['size'], $file['md5'], $file['mime']); if (!file_exists($file['thumb'])) { $file['thumb'] = 'ic2.php?r=1&t=1&file=' . $file['size'] . '_' . $file['md5']; } if (preg_match('/(\\d+)x(\\d+)/', $thumbnailer->calc($file['width'], $file['height']), $thumb_xy)) { $file['thumb_x'] = $thumb_xy[1]; $file['thumb_y'] = $thumb_xy[2]; } // 既存の画像か検索 $search1 = new IC2_DataObject_Images(); $search1->whereAddQuoted('size', '=', $file['size']); $search1->whereAddQuoted('md5', '=', $file['md5']); $search1->whereAddQuoted('mime', '=', $file['mime']); $search2 = clone $search1; $search1->whereAddQuoted('uri', '=', $utf8_path); // 全く同じ画像が登録されていたとき if ($search1->find(TRUE)) { $update = clone $search1; $changed = FALSE; if (strlen($f_memo) > 0 && strpos($search1->memo, $f_memo) === false) { if (!is_null($search1->memo) && strlen($search1->memo) > 0) { $update->memo = $f_memo . ' ' . $search1->memo; } else { $update->memo = $f_memo; } $file['memo'] = mb_convert_encoding($update->memo, 'CP932', 'UTF-8'); $changed = TRUE; } if ($search1->rank != $f_rank) { $update->rank = $f_rank; $changed = TRUE; } if ($changed) { $update->update(); } $file['message'] = '同じ画像が登録されていました。'; if ($changed) { $file['message'] .= '(ステータスの更新あり)'; } } else { $record = new IC2_DataObject_Images(); $record->uri = $utf8_path; $record->host = $f_host; $record->name = $utf8_name; $record->size = $file['size']; $record->md5 = $file['md5']; $record->width = $file['width']; $record->height = $file['height']; $record->mime = $file['mime']; $record->time = $f_time; $record->rank = $f_rank; if (strlen($f_memo) > 0) { $record->memo = $f_memo; } // 登録済みの画像で、URLが異なるとき if ($search2->find(TRUE) && file_exists($file['img_src'])) { $record->insert(); $file['message'] = '同じ画像が異なるURLで登録されていました。'; // 未登録の画像だったとき } else { $newdir = dirname($file['img_src']); if (!is_dir($newdir) && !@mkdir($newdir)) { return sprintf($err_fmt['dir'], $file['path'], $newdir); } if (!@move_uploaded_file($file['tmp_name'], $file['img_src'])) { return sprintf($err_fmt['file'], $file['path'], $file['tmp_name'], $file['img_src']); } $record->insert(); $file['message'] = 'アップロード成功。'; } } return $file; }