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

source: OpenPNE/branches/2.8.x/webapp/modules/pc/do/c_topic_edit_update_c_commu_topic.php @ 2659

Last change on this file since 2659 was 2659, checked in by ogawa, 14 years ago

#650:Webサーバ分散環境でファイルアップロードができない

File size: 5.6 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_do_c_topic_edit_update_c_commu_topic extends OpenPNE_Action
8{
9    function execute($requests)
10    {
11        $u = $GLOBALS['AUTH']->uid();
12
13        // --- リクエスト変数
14        $c_commu_topic_id = $requests['target_c_commu_topic_id'];
15        $body = $requests['body'];
16        $title = $requests['title'];
17        // ----------
18        $upfile_obj1 = $_FILES['image_filename1'];
19        $upfile_obj2 = $_FILES['image_filename2'];
20        $upfile_obj3 = $_FILES['image_filename3'];
21        $upfile_obj4 = $_FILES['filename4'];
22
23        //--- 権限チェック
24        //トピック作成者 or コミュニティ管理者
25
26        $c_topic = c_topic_detail_c_topic4c_commu_topic_id($c_commu_topic_id);
27        $c_commu_id = $c_topic['c_commu_id'];
28
29        if (!db_commu_is_c_topic_admin($c_commu_topic_id, $u) &&
30            !db_commu_is_c_commu_admin($c_commu_id, $u)) {
31            handle_kengen_error();
32        }
33        $c_commu = db_commu_c_commu4c_commu_id2($c_commu_id);
34        if ($c_commu['topic_authority'] == 'admin_only' &&
35            !db_commu_is_c_commu_admin($c_commu_id, $u)) {
36            handle_kengen_error();
37        }
38        //---
39
40        //エラーチェック
41        $err_msg = array();
42        if (is_null($title) || $title === '') $err_msg[] = "タイトルを入力してください";
43        if (is_null($body) || $body === '') $err_msg[] = "詳細を入力してください";
44
45        if ($upfile_obj1['error'] !== UPLOAD_ERR_NO_FILE) {
46            if (!($image = t_check_image($upfile_obj1))) {
47                $err_msg[] = '画像1は'.IMAGE_MAX_FILESIZE.'KB以内のGIF・JPEG・PNGにしてください';
48            }
49        }
50        if ($upfile_obj2['error'] !== UPLOAD_ERR_NO_FILE) {
51            if (!($image = t_check_image($upfile_obj2))) {
52                $err_msg[] = '画像2は'.IMAGE_MAX_FILESIZE.'KB以内のGIF・JPEG・PNGにしてください';
53            }
54        }
55        if ($upfile_obj3['error'] !== UPLOAD_ERR_NO_FILE) {
56            if (!($image = t_check_image($upfile_obj3))) {
57                $err_msg[] = '画像3は'.IMAGE_MAX_FILESIZE.'KB以内のGIF・JPEG・PNGにしてください';
58            }
59        }
60        if ($upfile_obj4['error'] !== UPLOAD_ERR_NO_FILE) {
61            if (OPENPNE_USE_FILEUPLOAD) {
62                $filesize = $upfile_obj4['size'];
63                if ((!$filesize)  || ($filesize > IMAGE_MAX_FILESIZE * 1024)) {
64                    $err_msg[] = '添付ファイルは'.IMAGE_MAX_FILESIZE.'KB以内のファイルにしてください';
65                }
66
67                // 添付ファイルの拡張子が許可されているか
68                if (!db_is_permit_file_type($upfile_obj4["name"])) {
69                    $err_msg[] = 'アップロードできるファイルの拡張子は('.FILE_TYPE.')です';
70                }
71
72            } else {
73                $err_msg[] = 'ファイルのアップロードはできません。';
74            }
75        }
76
77        if ($err_msg) {
78            $_REQUEST['err_msg'] = $err_msg;
79            $_REQUEST['target_c_commu_topic_id'] = $c_commu_topic_id;
80            $_REQUEST['title'] = $title;
81            $_REQUEST['body'] = $body;
82            openpne_forward('pc', 'page', "c_topic_edit");
83            exit;
84        }
85
86        //画像コピー
87        $sessid = session_id();
88        t_image_clear_tmp($sessid);
89        $tmpfile1 = t_image_save2tmp($upfile_obj1, $sessid, "t_1");
90        $tmpfile2 = t_image_save2tmp($upfile_obj2, $sessid, "t_2");
91        $tmpfile3 = t_image_save2tmp($upfile_obj3, $sessid, "t_3");
92        if (OPENPNE_USE_FILEUPLOAD) {
93            $tmpfile4 = t_file_save2tmp($upfile_obj4, $sessid, "t_4");
94        }
95
96        if ($tmpfile1) {
97            $filename1 = image_insert_c_image4tmp("t_{$c_commu_topic_id}_1", $tmpfile1);
98        }
99        if ($tmpfile2) {
100            $filename2 = image_insert_c_image4tmp("t_{$c_commu_topic_id}_2", $tmpfile2);
101        }
102        if ($tmpfile3) {
103            $filename3 = image_insert_c_image4tmp("t_{$c_commu_topic_id}_3", $tmpfile3);
104        }
105        if ($tmpfile4) {
106            $filename4 = file_insert_c_file4tmp("t_{$c_commu_topic_id}_4", $tmpfile4, $upfile_obj4['name']);
107        }
108        t_image_clear_tmp(session_id());
109        t_file_clear_tmp(session_id());
110
111
112        $update_c_commu_topic = array(
113            'name'       => $title,
114            'event_flag' => 0,
115        );
116        db_commu_update_c_commu_topic($c_commu_topic_id, $update_c_commu_topic);
117
118
119        $update_c_commu_topic_comment = array(
120            'body' => $body,
121        );
122        $c_topic = c_topic_detail_c_topic4c_commu_topic_id($c_commu_topic_id);
123        if ($filename1) {
124            $update_c_commu_topic_comment["image_filename1"] = $filename1;
125            image_data_delete($c_topic['image_filename1']);
126        }
127        if ($filename2) {
128            $update_c_commu_topic_comment["image_filename2"] = $filename2;
129            image_data_delete($c_topic['image_filename2']);
130        }
131        if ($filename3) {
132            $update_c_commu_topic_comment["image_filename3"] = $filename3;
133            image_data_delete($c_topic['image_filename3']);
134        }
135        if ($filename4) {
136            $update_c_commu_topic_comment['filename4'] = $filename4;
137            db_file_delete_c_file($c_topic['filename4']);
138        }
139        db_commu_update_c_commu_topic_comment($c_commu_topic_id, $update_c_commu_topic_comment);
140
141        $p = array('target_c_commu_topic_id' => $c_commu_topic_id);
142        openpne_redirect('pc', 'page_c_topic_detail', $p);
143    }
144}
145
146?>
Note: See TracBrowser for help on using the repository browser.