ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Opened 10 years ago

Closed 10 years ago

Last modified 9 years ago

#3775 closed enhancement (fixed)

画像アップロード容量制限機能

Reported by: BW Owned by: BW
Priority: major Milestone: OpenPNE2.13.8
Component: 指定しない Version: 2.14.x
Keywords: Cc:

Description (last modified by kudo)

■概要

  • アルバム以外の日記、トピック等も容量制限を設定できるようする

■仕様

1.管理できる画像のカテゴリは以下のようになる

1)日記系

  • 日記・日記コメント

2)コミュニティ系

  • トピック、イベント、トピックコメント、イベントコメント

3)アルバム

  • アルバム

4)その他

  • プロフィール、メッセージ、グループ(biz)、施設(biz)、コミュニティ表紙、アルバム表紙

2.管理者が管理画面にて、メンバーがアップロードする画像の総容量を、以下の単位で制限できるようにする

設定できる総容量の単位はMBで、整数値のみとする

1)メンバーがアップロードできる総容量

2)日記系でアップロードできる総容量

3)コミュニティ系でアップロードできる総容量

4)アルバムでアップロードできる総容量

5)その他は総容量の設定は行わず、1)が設定されている時のみ、以下の計算で求める

5) = 1) - 2) - 3) - 4)

※0または空白が設定された場合、そのカテゴリでの容量制限はされないものとする

  • 1)を0に指定した場合、2)~4)のカテゴリ毎のみ制限される
  • 1)が設定されている場合で2)~4)に0を設定した場合、設定されたカテゴリは
    5)のその他として扱われる

3.管理者が管理画面にて、現状のカテゴリ別の画像容量を、確認できるようにする

4.ユーザホーム上で、現在アップロードしている画像の総容量を、メンバー自身が確認できるようにする

5.メンバーが画像をアップロードする際、2.で制限されている容量を超えていないかチェックする

*超えていないければ、アップロード可能とし、従来通り投稿処理を続行する

*超えている場合、アップロードNGとし、投稿そのものをエラーとして、処理する(投稿画面に戻る)

6.2.の制限が設定されていない場合、従来通り無制限でアップロード可能とする

7.管理者がアップロードした画像については、管理対象外とする

8.トピックやコメントなどの添付画像は、メンバーが退会しても画像は残るため、

これらの画像は「容量制限では管理されない画像」となる

※コミュニティの場合、コミュニティ管理者が変更する場合がある。

コミュニティ管理者が変更したとしても、コミュニティ作成時に指定した画像は

作成者のものとして計上される。

(画像容量の計上するメンバーを、新しいコミュニティ管理者には切り替えず、

アップロードしたメンバーのままとする)

■修正内容

(1) 管理画面
  1)管理画面に、「画像容量制限設定」ページを追加(edit_image_limit)
   (a) 1)の画面に「全体画像 制限容量」の項目を設ける
     変数名:OPENPNE_IMAGE_USER_LIMIT 初期値:0
   (b) 1)の画面に「アルバム 制限容量」の項目を設ける
     変数名:OPENPNE_ALBUM_LIMIT 初期値:0 (既存の変数使用)
   (c) 1)の画面に「日記 制限容量」の項目を設ける
     変数名:OPENPNE_IMAGE_DIARY_LIMIT 初期値:0
   (d) 1)の画面に「コミュニティ 制限容量」の項目を設ける
     変数名:OPENPNE_IMAGE_COMMU_LIMIT 初期値:0
   (e) 1)のページに既存の「アルバム容量制限設定」が統合されるため、
     管理画面のリンクを「アルバム容量制限設定」のページから1)のページへ置き換える

  2)管理画面に、「カテゴリ別容量表示」ページを追加(image_analysis_category)
   (a) 2)の画面にファイルサイズ管理テーブル[ c_image_size ]のカテゴリ毎の
      合計ファイルサイズと一人当たりの平均値を表示させる

(2) ユーザ画面
  1)容量制限が設定されていた場合、現在の使用量を既存のユーザホームに表示する

(3) DB
  1)ユーザがアップロードした画像のファイルサイズを管理するテーブルを新設[ c_image_size ]
  2)一時ファイルを保存するテーブル [ c_tmp_image ] に、ファイルサイズも保存されるようにする
   OPENPNE_TMP_IMAGE_DB=true の場合、画像データは、[ c_tmp_image ] から [ c_image ]
   へコピーするが、このタイミングではファイルサイズが取得できないため、[ c_tmp_image ] に
   ファイルサイズを持たせる

(4)投稿時の確認画面表示時
  1)現在の総容量を取得する関数を新設(db_image_get_image_filesize())
  2) 1)の関数を利用して、アップロード可能かどうかチェックする関数を新設
    util_image_check_add_image_upload(),util_image_check_change_image_upload()) 
  3) 2)を利用し、アップロード可否の判断を行うようにする

(5)登録時
    1)一時ファイルを[ c_tmp_image ] に登録する際、ファイルサイズも登録されるようにする
    2)[c_image_size]にレコード登録を行う関数を追加
     (db_image_insert_c_image_size())
    3)[ c_image ] に画像データを登録する際、[ c_image_size ] にファイルサイズを登録していく
      OPENPNE_TMP_IMAGE_DB=true の場合、[ c_tmp_image ] から取得する
     OPENPNE_TMP_IMAGE_DB=false の場合、filesize(ファイル) で取得する
    4)携帯からのメール投稿時の画像情報を取得する際、ファイルサイズも取得できるようにする
    5)携帯からのメール投稿時にも総容量をチェックする
     *制限値を超えていない場合OKとし、[ c_image_size ] にファイルサイズを登録する
     *制限を越えている場合エラーとし、エラーメッセージを返すようにする

(6)削除時
  1)[ c_image ] からの削除と同タイミングで、[c_image_size]からも削除する
  2)メッセージの削除の場合、[ c_image ] から削除されないため、
   [c_image_size]のみ削除して、容量管理対象外とする

(7)退会時
  1)従来の退会処理の最後で、[ c_image_size ]から退会者のレコードを削除する
   退会処理時に削除される画像と削除されない画像があるため、削除されない画像に関する分を削除する
   以下に、削除される画像と削除されない画像を示す
投稿種別 削除対象
日記
日記コメント △(日記作成者が退会の場合)
コミュニティ表紙 △(コミュニティが自分1人の場合のみ)
トピック △(コミュニティが自分1人の場合のみ)
イベント △(コミュニティが自分1人の場合のみ)
トピックコメント △(コミュニティが自分1人の場合のみ)
イベントコメント △(コミュニティが自分1人の場合のみ)
アルバム表紙
アルバム
メッセージ ×
プロフィール
施設 ×
グループ △(グループが自分1人の場合のみ)
   上記表の○については、退会処理の延長で削除されるが、△の注釈に該当しない場合と
   ×については画像は削除されないため、[ c_image_size ]から情報のみを削除する

(8)アルバム
  1)従来の、アルバム容量チェック用関数内部で(4)の関数をコールするように変更する

(9) SQL文
CREATE TABLE `c_image_size` (
    `c_image_size_id` int(11) NOT NULL auto_increment,
    `filename` text NOT NULL,
    `c_member_id` int(11) NOT NULL default '0',
    `filesize`   int(11) NOT NULL default '0',
    `image_category` enum('album','diary','commu','other') NOT NULL default 'other',
    `r_datetime` datetime NOT NULL default '0000-00-00 00:00:00',
    PRIMARY KEY  (`c_image_size_id`),
    KEY `c_member_id` (`c_member_id`),
    KEY `c_member_id_image_category`(`c_member_id`,`image_category`),
    KEY `filename` (`filename`(100))
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

ALTER TABLE c_tmp_image ADD COLUMN filesize int(11) NOT NULL DEFAULT '0';

(10) 懸念事項
  * グループ編集時、元画像を [ c_image ]から削除していないため、
    元画像のレコードは残り続けてしまう。
    施設編集時と同様に元画像のレコードを削除する必要があると思われる。

(11) ソース
OpenPNE2.13.6ベースで作成

■関連情報

Attachments (1)

アップロード容量制限テストケース.xls (311.5 KB) - added by BW 10 years ago.

Download all attachments as: .zip

Change History (15)

comment:1 Changed 10 years ago by BW

修正量が多いのでr11178で一旦コミットしました。
https://trac.openpne.jp/svn/OpenPNE/branches/work/toraneko/prj_newfeature/enhancement_image/

comment:2 Changed 10 years ago by BW

r11197でアップロード容量制限機能バグ修正+管理画面にカテゴリ別容量表示ページ追加しました。

comment:3 Changed 10 years ago by BW

2.13.7がリリースされたらマージして、携帯版アルバムに対応する予定です。

comment:4 Changed 10 years ago by BW

実施したテスト結果を送付しました。

comment:5 Changed 10 years ago by kiwa

Milestone: OpenPNE2.13.8

ありがとうございます!テストケースまでとはとっても助かります。2.13.8で取り込み検討しましょう。

comment:6 Changed 10 years ago by kiwa

Priority: minormajor

comment:7 Changed 10 years ago by urabe

Owner: changed from nobody to urabe
Status: newassigned

comment:8 Changed 10 years ago by urabe

Keywords: 2009.4.20 確認中 added

r11363 でトランクにマージしました。

comment:9 Changed 10 years ago by Shintani@…

Keywords: 差し戻し added; 確認中 removed

動作確認いたしました

問題点

  • 日記編集時において、合計画像容量が制限容量を上回る場合でも編集できてしまう。
  • 日記コメントにおいて、合計画像容量が制限容量を上回る場合でもコメントできてしまう。
  • 写真容量 使用状況 において、アルバム・にっきの使用量が正しく表示されない。

以上の事を確認お願いします。

comment:10 Changed 10 years ago by BW

取り込み検討していただきありがとうございます。
携帯版アルバム対応は、別チケット#3858で対応いたします。

comment:11 Changed 10 years ago by ShogoKawahara

r11516

アップデートSQLのファイル名の連番・バージョンを変更しました。

comment:12 in reply to:  9 Changed 10 years ago by imamura623

Keywords: 2009.4.20 差し戻し removed
Owner: changed from urabe to BW
Status: assignednew
Version: 2.13.x
  • 日記編集時において、合計画像容量が制限容量を上回る場合でも編集できてしまう。
  • 日記コメントにおいて、合計画像容量が制限容量を上回る場合でもコメントできてしまう。
  • 写真容量 使用状況 において、アルバム・にっきの使用量が正しく表示されない。

上記の問題点については下記チケットについて対応いたします。

comment:13 Changed 10 years ago by imamura623

Resolution: fixed
Status: newclosed

本チケットにつきましてはこれで修正完了とし閉じます。

comment:14 Changed 9 years ago by kudo

Description: modified (diff)
Note: See TracTickets for help on using tickets.