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

source: OpenPNE/branches/2.8.x/webapp/modules/pc/page/c_topic_add_confirm.php @ 2923

Last change on this file since 2923 was 2923, checked in by ogawa, 13 years ago

#761:ファイルアップロード機能に拡張子制限機能を入れる
#741:0byteのファイルをアップロードできない

File size: 4.5 KB
Line 
1<?php
2/**
3 * @copyright 2005-2007 OpenPNE Project
4 * @license   http://www.php.net/license/3_01.txt PHP License 3.01
5 */
6
7class pc_page_c_topic_add_confirm extends OpenPNE_Action
8{
9    function handleError($errors)
10    {
11        $_REQUEST['err_msg'] = $errors;
12        openpne_forward('pc', 'page', 'c_topic_add', $errors);
13        exit;
14    }
15
16    function execute($requests)
17    {
18        $u = $GLOBALS['AUTH']->uid();
19
20        // --- リクエスト変数
21        $c_commu_id = $requests['target_c_commu_id'];
22        $title = $requests['title'];
23        $body = $requests['body'];
24        // ----------
25
26        //--- 権限チェック
27        if (!db_commu_is_c_commu_view4c_commu_idAc_member_id($c_commu_id, $u)) {
28            handle_kengen_error();
29        }
30
31        $c_commu = db_commu_c_commu4c_commu_id2($c_commu_id);
32
33        //トピック作成権限チェック
34        if ($c_commu['topic_authority'] == 'admin_only' && !db_commu_is_c_commu_admin($c_commu_id, $u)) {
35            $_REQUEST['target_c_commu_id'] = $c_commu_id;
36            $_REQUEST['msg'] = "トピックは管理者だけが作成できます";
37            openpne_forward('pc', 'page', "c_home");
38            exit;
39        }
40
41        //画像ファイル
42        $upfile_obj1 = $_FILES['image_filename1'];
43        $upfile_obj2 = $_FILES['image_filename2'];
44        $upfile_obj3 = $_FILES['image_filename3'];
45
46        //添付ファイル
47        $upfile_obj4 = $_FILES['uploadfile'];
48
49        $err_msg = array();
50
51        if ($upfile_obj1['error'] !== UPLOAD_ERR_NO_FILE) {
52            if (!($image = t_check_image($upfile_obj1))) {
53                $err_msg[] = '画像1は'.IMAGE_MAX_FILESIZE.'KB以内のGIF・JPEG・PNGにしてください';
54            }
55        }
56        if ($upfile_obj2['error'] !== UPLOAD_ERR_NO_FILE) {
57            if (!($image = t_check_image($upfile_obj2))) {
58                $err_msg[] = '画像2は'.IMAGE_MAX_FILESIZE.'KB以内のGIF・JPEG・PNGにしてください';
59            }
60        }
61        if ($upfile_obj3['error'] !== UPLOAD_ERR_NO_FILE) {
62            if (!($image = t_check_image($upfile_obj3))) {
63                $err_msg[] = '画像3は'.IMAGE_MAX_FILESIZE.'KB以内のGIF・JPEG・PNGにしてください';
64            }
65        }
66
67        if (OPENPNE_USE_FILEUPLOAD) {
68            if ($upfile_obj4['error'] !== UPLOAD_ERR_NO_FILE) {
69                // ファイルサイズ制限
70                if ($upfile_obj4['size'] === 0) {
71                    $err_msg[] = '空のファイルはアップロードできません';
72                }
73
74                if ($upfile_obj4['size'] > FILE_MAX_FILESIZE * 1024) {
75                    $err_msg[] = 'ファイルは' . FILE_MAX_FILESIZE . 'KB以内のファイルにしてください';
76                }
77
78                // 拡張子制限
79                if (!util_check_file_extention($upfile_obj4['name'])) {
80                    $err_msg[] = sprintf('アップロードできるファイルの種類は(%s)です', util_get_file_allowed_extensions('string'));
81                }
82            }
83        }
84
85        if ($err_msg) {
86            $_REQUEST['err_msg'] = $err_msg;
87            openpne_forward('pc', 'page', "c_topic_add");
88            exit;
89        }
90        $sessid = session_id();
91       
92        //-----
93
94        t_image_clear_tmp($sessid);
95        t_file_clear_tmp($sessid);
96
97        //画像をvar/tmpフォルダにコピー
98        $tmpfile1 = t_image_save2tmp($upfile_obj1, $sessid, "t_1");
99        $tmpfile2 = t_image_save2tmp($upfile_obj2, $sessid, "t_2");
100        $tmpfile3 = t_image_save2tmp($upfile_obj3, $sessid, "t_3");
101        if (OPENPNE_USE_FILEUPLOAD) {
102            // 一次ファイルをvar/tmpにコピー
103            $tmpfile4 = t_file_save2tmp($upfile_obj4, $sessid, "t_4");
104        }
105
106        $this->set('inc_navi', fetch_inc_navi("c", $c_commu_id));
107        $c_topic = array(
108            'c_commu_id' => $c_commu_id,
109            'title'      => $title,
110            'body'       => $body,
111            'image_filename1_tmpfile' => $tmpfile1,
112            'image_filename2_tmpfile' => $tmpfile2,
113            'image_filename3_tmpfile' => $tmpfile3,
114            'image_filename1'         => $upfile_obj1["name"],
115            'image_filename2'         => $upfile_obj2["name"],
116            'image_filename3'         => $upfile_obj3["name"],
117             // 添付ファイル
118            'filename4_tmpfile' => $tmpfile4,
119            'filename4_original_filename' => $upfile_obj4["name"],
120        );
121
122        $this->set('c_topic', $c_topic);
123        return 'success';
124    }
125}
126
127?>
Note: See TracBrowser for help on using the repository browser.