diff --git a/html/webapp/config/install.inc.php b/html/webapp/config/install.inc.php index 33618f4..6d2cbee 100644 --- a/html/webapp/config/install.inc.php +++ b/html/webapp/config/install.inc.php @@ -18,7 +18,7 @@ // ---------------------------- // ベースのURL値 // ---------------------------- -define('BASE_URL', 'http://'); +define('BASE_URL', 'http://localhost'); // ------------------------------------------------- // ベースのURL値(ソースがあるCoreのNetCommonsのURL) // 基本:BASE_URLと同じ diff --git a/html/webapp/modules/simplemovie/action/admin/operation/Operation.class.php b/html/webapp/modules/simplemovie/action/admin/operation/Operation.class.php new file mode 100644 index 0000000..119865f --- /dev/null +++ b/html/webapp/modules/simplemovie/action/admin/operation/Operation.class.php @@ -0,0 +1,270 @@ +simplemovieView->getBlock( $this->block_id ); + + switch ($this->mode) { + case "move": + + // 動画レコード更新 + $params = array( + "block_id"=> intval($this->move_block_id), + "room_id"=> intval($this->move_room_id) + ); + $where_params = array( + "block_id"=> intval($this->block_id) + ); + $result = $this->db->updateExecute("simplemovie", $params, $where_params, false); + if($result === false) { + return "false"; + } + + // 動画ファイル更新処理(room_id を更新する) + if ( $bofore_simplemovie['room_id'] != $this->move_room_id ) { + + // 動画ファイルがある場合 + if ( !empty( $bofore_simplemovie['movie_upload_id'] ) ) { + + // uploads テーブル更新 + $movie_params = array( "room_id"=> intval($this->move_room_id) ); + $movie_where = array( "upload_id"=> intval($bofore_simplemovie['movie_upload_id']) ); + $movie_result = $this->db->updateExecute("uploads", $movie_params, $movie_where, false); + if($movie_result === false) { + return "false"; + } + } + + // サムネイル画像ファイルがある場合 + if ( !empty( $bofore_simplemovie['thumbnail_upload_id'] ) ) { + + // uploads テーブル更新 + $thumbnail_params = array( "room_id"=> intval($this->move_room_id) ); + $thumbnail_where = array( "upload_id"=> intval($bofore_simplemovie['thumbnail_upload_id']) ); + $thumbnail_result = $this->db->updateExecute("uploads", $thumbnail_params, $thumbnail_where, false); + if($thumbnail_result === false) { + return "false"; + } + } + + // リクエスト動画ファイルがある場合 + if ( !empty( $bofore_simplemovie['movie_upload_id_request'] ) ) { + + // uploads テーブル更新 + $movie_params = array( "room_id"=> intval($this->move_room_id) ); + $movie_where = array( "upload_id"=> intval($bofore_simplemovie['movie_upload_id_request']) ); + $movie_result = $this->db->updateExecute("uploads", $movie_params, $movie_where, false); + if($movie_result === false) { + return "false"; + } + } + + // リクエストサムネイル画像ファイルがある場合 + if ( !empty( $bofore_simplemovie['thumbnail_upload_id_request'] ) ) { + + // uploads テーブル更新 + $thumbnail_params = array( "room_id"=> intval($this->move_room_id) ); + $thumbnail_where = array( "upload_id"=> intval($bofore_simplemovie['thumbnail_upload_id_request']) ); + $thumbnail_result = $this->db->updateExecute("uploads", $thumbnail_params, $thumbnail_where, false); + if($thumbnail_result === false) { + return "false"; + } + } + + } + + //--新着情報関連 Start-- + //$whatsnew = array( + // "unique_id" => $this->block_id, + // "room_id" => $this->move_room_id + //); + //$result = $this->whatsnewAction->moveUpdate($whatsnew); + //if ($result === false) { + // return false; + //} + //--新着情報関連 End-- + + break; + + case "copy": + + // 添付ファイルコピー処理 + + // uploads テーブル取得 + $upload_id_arr = array(); + + // コピーした動画ファイルの upload_id + $movie_upload_id = null; + + // コピーしたサムネイル画像ファイルの upload_id + $thumbnail_upload_id = null; + + // コピーしたリクエスト動画ファイルの upload_id + $movie_upload_id_request = null; + + // コピーしたリクエストサムネイル画像ファイルの upload_id + $thumbnail_upload_id_request = null; + + // 動画ファイルがある場合 + if ( !empty( $bofore_simplemovie['movie_upload_id'] ) ) { + $movie_upload_id = $this->copyUploads( $bofore_simplemovie['movie_upload_id'], $this->move_room_id ); + } + + // サムネイル画像ファイルがある場合 + if ( !empty( $bofore_simplemovie['thumbnail_upload_id'] ) ) { + $thumbnail_upload_id = $this->copyUploads( $bofore_simplemovie['thumbnail_upload_id'], $this->move_room_id ); + } + + // リクエスト動画ファイルがある場合 + if ( !empty( $bofore_simplemovie['movie_upload_id_request'] ) ) { + $movie_upload_id_request = $this->copyUploads( $bofore_simplemovie['movie_upload_id_request'], $this->move_room_id ); + } + + // リクエストサムネイル画像ファイルがある場合 + if ( !empty( $bofore_simplemovie['thumbnail_upload_id_request'] ) ) { + $thumbnail_upload_id_request = $this->copyUploads( $bofore_simplemovie['thumbnail_upload_id_request'], $this->move_room_id ); + } + + // 動画テーブルの追加 + $params = array( + 'block_id' => $this->move_block_id, + 'movie_upload_id' => $movie_upload_id, + 'thumbnail_upload_id' => $thumbnail_upload_id, + 'movie_upload_id_request' => $movie_upload_id_request, + 'thumbnail_upload_id_request' => $thumbnail_upload_id_request, + 'width' => $bofore_simplemovie['width'], + 'height' => $bofore_simplemovie['height'], + 'room_id' => $this->move_room_id, + //コピーした場合にも + 'agree_flag' => $bofore_simplemovie['agree_flag'], + ); + $result = $this->db->insertExecute( + 'simplemovie', + $params, + true + ); + break; + default: + return "false"; + } + + return "true"; + } + + /** + * 添付ファイルのコピー + * + * @access public + */ + function copyUploads( $upload_id, $move_room_id ) + { + + // upload_id から uploads テーブルの取得 + $where_params = array( "upload_id" => $upload_id ); + + $uploads = $this->db->selectExecute( "uploads", $where_params ); + if( $uploads === false ) { + return false; + } + if( !isset( $uploads[0] ) ) { + return array(); + } + + // uploads テーブルの追加 + $params = array( + 'room_id' => $move_room_id, + 'module_id' => $uploads[0]['module_id'], + 'unique_id' => $uploads[0]['unique_id'], + 'file_name' => $uploads[0]['file_name'], + 'physical_file_name' => "", + 'file_path' => $uploads[0]['file_path'], + 'action_name' => $uploads[0]['action_name'], + 'file_size' => $uploads[0]['file_size'], + 'mimetype' => $uploads[0]['mimetype'], + 'extension' => $uploads[0]['extension'], + 'garbage_flag' => $uploads[0]['garbage_flag'] + ); + $upload_id = $this->simplemovieAction->insUploads( $params ); + if ( $upload_id === false ) { + return false; + } + + //サムネイル自動作成時には動画のupload_id+_thumbnailで作成される ex.600_thumbnail.jpg サムネイル画像自体のupload_idは601 + //コピー元が自動作成サムネイルの場合に処理を実行 + $autoCreateThumbFilename = $uploads[0]['file_name']; + if(preg_match('/^[0-9]*_thumbnail.*/', $autoCreateThumbFilename)){ + copy( FILEUPLOADS_DIR.$uploads[0]['file_path'].$autoCreateThumbFilename, + FILEUPLOADS_DIR.$uploads[0]['file_path'].$upload_id.".".$uploads[0]['extension'] ); + //コピーしたのでリターン + return $upload_id; + } + + // ファイルのコピー(サムネイルがある場合はサムネイルも) + $file_full_path = FILEUPLOADS_DIR.$uploads[0]['file_path'].$uploads[0]['upload_id']."*.*"; + foreach ( glob( $file_full_path ) as $filename ) { + + $filename = basename( $filename ); + + // メインのファイル + if ( $filename == $uploads[0]['physical_file_name'] ) { + copy( FILEUPLOADS_DIR.$uploads[0]['file_path'].$filename, + FILEUPLOADS_DIR.$uploads[0]['file_path'].$upload_id.".".$uploads[0]['extension'] ); + } + // サムネイル(240) + elseif ( $filename == $uploads[0]['upload_id'] . "_mobile_" . MOBILE_IMGDSP_SIZE_240 .".". $uploads[0]['extension'] ) { + copy( FILEUPLOADS_DIR.$uploads[0]['file_path'].$uploads[0]['upload_id'] . "_mobile_" . MOBILE_IMGDSP_SIZE_240 .".". $uploads[0]['extension'], + FILEUPLOADS_DIR.$uploads[0]['file_path'].$upload_id . "_mobile_" . MOBILE_IMGDSP_SIZE_240 .".". $uploads[0]['extension'] ); + } + // サムネイル(480) + elseif ( $filename == $uploads[0]['upload_id'] . "_mobile_" . MOBILE_IMGDSP_SIZE_480 .".". $uploads[0]['extension'] ) { + copy( FILEUPLOADS_DIR.$uploads[0]['file_path'].$uploads[0]['upload_id'] . "_mobile_" . MOBILE_IMGDSP_SIZE_480 .".". $uploads[0]['extension'], + FILEUPLOADS_DIR.$uploads[0]['file_path'].$upload_id . "_mobile_" . MOBILE_IMGDSP_SIZE_480 .".". $uploads[0]['extension'] ); + } + } + + // 新しいupload_id の返却 + return $upload_id; + } +} +?> \ No newline at end of file diff --git a/html/webapp/modules/simplemovie/action/admin/operation/dicon.ini b/html/webapp/modules/simplemovie/action/admin/operation/dicon.ini new file mode 100644 index 0000000..be88da7 --- /dev/null +++ b/html/webapp/modules/simplemovie/action/admin/operation/dicon.ini @@ -0,0 +1,2 @@ +[DIContainer] +fileAction = "file.action" diff --git a/html/webapp/modules/simplemovie/action/admin/operation/maple.ini b/html/webapp/modules/simplemovie/action/admin/operation/maple.ini new file mode 100644 index 0000000..310ed17 --- /dev/null +++ b/html/webapp/modules/simplemovie/action/admin/operation/maple.ini @@ -0,0 +1,17 @@ +[RecursiveNocall] +ValidateDef = + +[ValidateDef] +requiredfalse ="1:lang._invalid_input" + +[DIContainer] +filename_operation = "dicon.ini" + +[Action] +db = "ref:DbObject" +simplemovieView = "ref:simplemovieView" +simplemovieAction = "ref:simplemovieAction" +uploadsAction = "ref:uploadsAction" +;commonOperation = "ref:commonOperation" +;whatsnewAction = "ref:whatsnewAction" +session = "ref:Session" \ No newline at end of file diff --git a/html/webapp/modules/simplemovie/action/dicon.ini b/html/webapp/modules/simplemovie/action/dicon.ini new file mode 100644 index 0000000..a1ca4b8 --- /dev/null +++ b/html/webapp/modules/simplemovie/action/dicon.ini @@ -0,0 +1,3 @@ +[DIContainer] +simplemovieView = "modules://simplemovie.components.view" +simplemovieAction = "modules://simplemovie.components.action" diff --git a/html/webapp/modules/simplemovie/action/edit/delblock/Delblock.class.php b/html/webapp/modules/simplemovie/action/edit/delblock/Delblock.class.php new file mode 100644 index 0000000..3b10727 --- /dev/null +++ b/html/webapp/modules/simplemovie/action/edit/delblock/Delblock.class.php @@ -0,0 +1,64 @@ +simplemovieView->getBlock( $this->block_id ); + + if ( empty( $simplemovie ) || count( $simplemovie ) == 0 ) { + return 'success'; + } + + // ファイル削除処理 + $mUId = $simplemovie['movie_upload_id']; + if ( empty( $mUId ) == false ) $this->simplemovieAction->deleteUpload($mUId); + $tUId = $simplemovie['thumbnail_upload_id']; + if ( empty( $tUId ) == false ) $this->simplemovieAction->deleteUpload($tUId); + $mUIdR = $simplemovie['movie_upload_id_request']; + if ( empty( $mUIdR ) == false ) $this->simplemovieAction->deleteUpload($mUIdR); + $tUIdR = $simplemovie['thumbnail_upload_id_request']; + if ( empty( $tUIdR ) == false ) $this->simplemovieAction->deleteUpload($tUIdR); + + // ブロックデータ削除処理 + $result = $this->db->deleteExecute( "simplemovie", array( "block_id" => $this->block_id ) ); + if ($result === false) { + return 'error'; + } + + //--新着情報関連 Start-- + //$this->whatsnew = array( + // "unique_id" => $this->block_id + //); + //--新着情報関連 End-- + + return 'success'; + } +} +?> diff --git a/html/webapp/modules/simplemovie/action/edit/delblock/dicon.ini b/html/webapp/modules/simplemovie/action/edit/delblock/dicon.ini new file mode 100644 index 0000000..d593094 --- /dev/null +++ b/html/webapp/modules/simplemovie/action/edit/delblock/dicon.ini @@ -0,0 +1,2 @@ +[DIContainer] +uploadsAction = "uploads.action" \ No newline at end of file diff --git a/html/webapp/modules/simplemovie/action/edit/delblock/maple.ini b/html/webapp/modules/simplemovie/action/edit/delblock/maple.ini new file mode 100644 index 0000000..49a9bda --- /dev/null +++ b/html/webapp/modules/simplemovie/action/edit/delblock/maple.ini @@ -0,0 +1,15 @@ +[ValidateDef] +block_id.required ="1:lang._required,lang._block_id" + +[DIContainer] +filename_upload = "dicon.ini" + +[Action] +simplemovieView = "ref:simplemovieView" +simplemovieAction = "ref:simplemovieAction" +db = "ref:DbObject" +uploadsAction = "ref:uploadsAction" + +;[Whatsnew] +;mode = delete + diff --git a/html/webapp/modules/simplemovie/action/edit/init/Init.class.php b/html/webapp/modules/simplemovie/action/edit/init/Init.class.php new file mode 100644 index 0000000..25e247c --- /dev/null +++ b/html/webapp/modules/simplemovie/action/edit/init/Init.class.php @@ -0,0 +1,57 @@ +movie_delete ) || !empty( $this->thumbnail_delete ) ) { + $this->simplemovieAction->deleteUploads( $this->block_id, $this->movie_delete, $this->thumbnail_delete ); + } + + // アップロード・ファイル情報の登録 + if ( !empty( $this->upload_files ) ) { + $this->simplemovieAction->setUploads( $this->block_id, $this->upload_files ); + } + + return 'success'; + } +} +?> diff --git a/html/webapp/modules/simplemovie/action/edit/init/maple.ini b/html/webapp/modules/simplemovie/action/edit/init/maple.ini new file mode 100644 index 0000000..0dbd439 --- /dev/null +++ b/html/webapp/modules/simplemovie/action/edit/init/maple.ini @@ -0,0 +1,29 @@ +[TokenExtra] +mode="check" +action="simplemovie_view_edit_init" + +[Include] +filename_simplemovie = "/modules/simplemovie/config/define.inc.php" + +[FileUpload] +name = attachment +action_name = simplemovie_view_main_play +allow_extension = "true" +maxsize = SIMPLEMOVIE_UPLOAD_MAX_SIZE_MEDIA +;noFileError = _FILE_UPLOAD_ERR_UPLOAD_NOFILE +stopper = "false" + +[ValidateDef] +.simplemovie.movieupload = "1:" + +[Action] +simplemovieView = "ref:simplemovieView" +simplemovieAction = "ref:simplemovieAction" +mailMain = "ref:mailMain" +session = "ref:Session" + +[View] +define:attachment = 1 +success = "main:true.html" +;success = "action:simplemovie_view_edit_init.html" +error = "main:error.html" diff --git a/html/webapp/modules/simplemovie/action/edit/style/Style.class.php b/html/webapp/modules/simplemovie/action/edit/style/Style.class.php new file mode 100644 index 0000000..f1bfab3 --- /dev/null +++ b/html/webapp/modules/simplemovie/action/edit/style/Style.class.php @@ -0,0 +1,48 @@ +simplemovieAction->setStyle( array( 'block_id' => $this->block_id, + 'default_width' => $this->default_width, + 'default_height' => $this->default_height, + 'autoplay_flag' => $this->autoplay_flag, + 'embed_show_flag' => $this->embed_show_flag ) ); + return 'success'; + } +} +?> diff --git a/html/webapp/modules/simplemovie/action/edit/style/maple.ini b/html/webapp/modules/simplemovie/action/edit/style/maple.ini new file mode 100644 index 0000000..6f9139f --- /dev/null +++ b/html/webapp/modules/simplemovie/action/edit/style/maple.ini @@ -0,0 +1,16 @@ +[TokenExtra] +mode="check" +action="simplemovie_view_edit_style" + +[Action] +simplemovieView = "ref:simplemovieView" +simplemovieAction = "ref:simplemovieAction" + +[ValidateDef] +default_width.numeric="1:幅は数値で入力してください。" +default_height.numeric="1:高さは数値で入力してください。" + +[View] +;success = "main:true.html" +success = "action:simplemovie_view_edit_style" +error = "main:error.html" diff --git a/html/webapp/modules/simplemovie/action/main/agree/Agree.class.php b/html/webapp/modules/simplemovie/action/main/agree/Agree.class.php new file mode 100644 index 0000000..97abc63 --- /dev/null +++ b/html/webapp/modules/simplemovie/action/main/agree/Agree.class.php @@ -0,0 +1,92 @@ +agree_flag == 1 ) { + // 一緒にページ情報も取得する。 + $params = array( "block_id" => $this->block_id ); + + $sql = "SELECT a.*, p.page_id, p.page_name, p.permalink ". + "FROM {simplemovie} a, {blocks} b ". + "LEFT JOIN {pages} p ON b.page_id = p.page_id ". + "WHERE a.block_id = ? AND a.block_id = b.block_id"; + + $simplemovie = $this->db->execute($sql, $params); + if ($simplemovie === false) { + $this->db->addError(); + return $simplemovie; + } + + $params = array( + "agree_flag" => SIMPLEMOVIE_STATUS_AGREE, + "movie_upload_id" => $simplemovie[0]["movie_upload_id_request"], + "thumbnail_upload_id" => $simplemovie[0]["thumbnail_upload_id_request"], + "movie_upload_id_request" => null, + "thumbnail_upload_id_request" => null + ); + $result = $this->db->updateExecute("simplemovie", $params, array("block_id"=>$this->block_id), true); + if ($result === false) { + return 'error'; + } + + // メールで指定するURL の編集 + $page_url = BASE_URL; + if ( !empty( $simplemovie[0]['permalink'] ) ) { + $page_url .= "/" . $simplemovie[0]['permalink']; + } else { + $page_url .= "/?page_id=" . $simplemovie[0]['page_id']; + } + + // メール本文 + $mail_body = "以下のページ内のシンプル動画が承認されました。\n\n"; + $mail_body .= "ページタイトル:" . $simplemovie[0]['page_name'] . "\n"; + $mail_body .= "URL :" . $page_url . "\n"; + + // メール送信ユーザ + $sql = "SELECT u.user_id, u.role_authority_id, mail.content AS email, u.login_id, u.handle ". + "FROM {users} u ". + "INNER JOIN {users_items_link} mail ON u.user_id = mail.user_id ". + "AND mail.item_id = ( SELECT item_id FROM {items} WHERE item_name = 'USER_ITEM_EMAIL' ) ". + "WHERE u.user_id = ? ". + "AND mail.content != ''"; + $params = array( "update_user_id" => $simplemovie[0]["update_user_id"] ); + + $send_user = $this->db->execute( $sql, $params ); + if ( $send_user === false ) { + $this->db->addError(); + return false; + } + + $this->mailMain->setSubject("シンプル動画が承認されました。"); + $this->mailMain->setBody($mail_body); + $this->mailMain->setToUsers($send_user); + $this->mailMain->send(); + } + + return 'success'; + } +} +?> diff --git a/html/webapp/modules/simplemovie/action/main/agree/dicon.ini b/html/webapp/modules/simplemovie/action/main/agree/dicon.ini new file mode 100644 index 0000000..f088008 --- /dev/null +++ b/html/webapp/modules/simplemovie/action/main/agree/dicon.ini @@ -0,0 +1,2 @@ +[DIContainer] +mailMain = "mail.main" diff --git a/html/webapp/modules/simplemovie/action/main/agree/maple.ini b/html/webapp/modules/simplemovie/action/main/agree/maple.ini new file mode 100644 index 0000000..69c9b72 --- /dev/null +++ b/html/webapp/modules/simplemovie/action/main/agree/maple.ini @@ -0,0 +1,17 @@ +[SmartyAssign] +module = main.ini + +[DIContainer] +filename_upload = "dicon.ini" + +[Action] +db = "ref:DbObject" +mailMain = "ref:mailMain" + +[TokenExtra] +mode="check" +action = "simplemovie_view_main_agree" + +[View] +success = "action:simplemovie_view_main_init" +error = "main:error.html" diff --git a/html/webapp/modules/simplemovie/action/main/init/Init.class.php b/html/webapp/modules/simplemovie/action/main/init/Init.class.php new file mode 100644 index 0000000..2304558 --- /dev/null +++ b/html/webapp/modules/simplemovie/action/main/init/Init.class.php @@ -0,0 +1,36 @@ + diff --git a/html/webapp/modules/simplemovie/action/main/init/maple.ini b/html/webapp/modules/simplemovie/action/main/init/maple.ini new file mode 100644 index 0000000..00bdeec --- /dev/null +++ b/html/webapp/modules/simplemovie/action/main/init/maple.ini @@ -0,0 +1,12 @@ +[TokenExtra] +mode="check" +action="simplemovie_view_main_init" + +[Action] +simplemovieView = "ref:simplemovieView" +simplemovieAction = "ref:simplemovieAction" + +[View] +success = "main:true.html" +;success = "action:simplemovie_view_main_init.html" +error = "main:error.html" diff --git a/html/webapp/modules/simplemovie/action/maple.ini b/html/webapp/modules/simplemovie/action/maple.ini new file mode 100644 index 0000000..877442a --- /dev/null +++ b/html/webapp/modules/simplemovie/action/maple.ini @@ -0,0 +1,5 @@ +[SmartyAssign] +module = main.ini + +[DIContainer] +filename = "/modules/simplemovie/action/dicon.ini" diff --git a/html/webapp/modules/simplemovie/components/Action.class.php b/html/webapp/modules/simplemovie/components/Action.class.php new file mode 100644 index 0000000..a59f7b5 --- /dev/null +++ b/html/webapp/modules/simplemovie/components/Action.class.php @@ -0,0 +1,288 @@ +_container =& DIContainerFactory::getContainer(); + $this->_db =& $this->_container->getComponent("DbObject"); + $commonMain =& $this->_container->getComponent("commonMain"); + $this->_uploadsAction =& $commonMain->registerClass(WEBAPP_DIR.'/components/uploads/Action.class.php', "Uploads_Action", "uploadsAction"); + $this->_simplemovieView =& $this->_container->getComponent("simplemovieView"); + } + + /** + * アップロードデータの削除 + * + * @access public + */ + function deleteUploads( $block_id, $movie_delete, $thumbnail_delete ) + { + // 削除フラグがチェックされていなければ処理しない。 + if ( empty( $movie_delete ) && empty( $thumbnail_delete ) ) { + return; + } + + // テーブル確認 + $params = array( $block_id ); + $sql = "SELECT * " + . "FROM {simplemovie} " + . "WHERE block_id = ? "; + $simplemovie_record = $this->_db->execute( $sql, $params ); + + if ($simplemovie_record === false) { + $this->_db->addError(); + return $simplemovie_record; + } + + // データがなければ、特に処理しない。 + if ( count( $simplemovie_record ) == 0 ) { + return; + } + + //自動承認権限の場合は表示用カラムそれ以外は_requestカラム + if($this->_simplemovieView->isAutoAgree($this->_simplemovieView->getAgreeFlag())) { + $mCol = "movie_upload_id"; + $tCol = "thumbnail_upload_id"; + } else { + $mCol = "movie_upload_id_request"; + $tCol = "thumbnail_upload_id_request"; + } + // データがあれば、ファイルの削除 + $params = array(); + + //データを承認済にする + // ※主担以上の権限者が動画未承認時の「動画ファイルがアップロードされていません。」の表示を防ぐため + $params["agree_flag"] = SIMPLEMOVIE_STATUS_AGREE; + + if ( $movie_delete == "1" ) { + $this->deleteUpload( $simplemovie_record[0][$mCol] ); + $params[$mCol] = null; + } + if ( $thumbnail_delete == "1" ) { + $this->deleteUpload( $simplemovie_record[0][$tCol] ); + $params[$tCol] = null; + } + + $result = $this->_db->updateExecute( + 'simplemovie', + $params, + array( "block_id" => $block_id ), + true + ); + if ( $result === false ) { + $this->_db->addError(); + return $result; + } + } + + /** + * アップロードされたファイルを削除する。 + * + * @return boolean true or false + * @access public + */ + function deleteUpload( $upload_id ) + { + $files = $this->_uploadsAction->delUploadsById( $upload_id ); + } + + /** + * uploads テーブル追加 + * + * @return boolean true or false + * @access public + */ + function insUploads( $params ) + { + return $this->_uploadsAction->insUploads( $params ); + } + + /** + * アップロードデータの登録 + * + * @access public + */ + function setUploads( $block_id, $files ) + { + + // アップロード・ファイルがあるかチェック、 + if ( empty( $files ) ) { + return true; + } + + // すでにブロックのデータがあるか確認 + $params = array( $block_id ); + $sql = "SELECT * " + . "FROM {simplemovie} " + . "WHERE block_id = ? "; + $simplemovie_record = $this->_db->execute( $sql, $params ); + + if ($simplemovie_record === false) { + $this->_db->addError(); + return $simplemovie_record; + } + + // SQL パラメータのクリア + $params = array(); + + //アップローダーの承認フラグをセット 1:承認済(自動承認)2:未承認 + $agreeFlg = $this->_simplemovieView->getAgreeFlag(); + $params["agree_flag"] = $agreeFlg; + // 動画ファイルのID を処理 + if ( array_key_exists( 'movie', $files ) ) { + $mUId = $files['movie']['upload_id']; + } + + // サムネイル画像ファイルのID を処理 + if ( array_key_exists( 'thumbnail', $files ) ) { + $tUId = $files['thumbnail']['upload_id']; + } + //自動承認権限の場合は表示用カラムそれ以外は_requestカラム + if($this->_simplemovieView->isAutoAgree($agreeFlg) == true){ + // 管理者での更新(承認済)→xxxxx_upload_idに紐づくデータを削除 + $mCol = "movie_upload_id"; + $tCol = "thumbnail_upload_id"; + }else{ + // 主担での更新(未承認)→xxxxx_upload_id_requestに紐づくデータを削除 + $mCol = "movie_upload_id_request"; + $tCol = "thumbnail_upload_id_request"; + } + if ($mUId) $params[$mCol] = $mUId; + if ($tUId) $params[$tCol] = $tUId; + + // データがあれば更新 + if ( count( $simplemovie_record ) > 0 ) { + $rowMUId = $simplemovie_record[0][$mCol]; + $rowTUId = $simplemovie_record[0][$tCol]; + // 既存のファイルがあり、新たにアップロードされている場合、既存のファイルを削除 + if ( !empty( $rowMUId ) && array_key_exists( 'movie', $files ) && !empty( $files['movie']['upload_id'] ) ) { + $this->deleteUpload( $rowMUId ); + } + if ( !empty( $rowTUId ) && array_key_exists( 'thumbnail', $files ) && !empty( $files['thumbnail']['upload_id'] ) ) { + $this->deleteUpload( $rowTUId ); + } + + $result = $this->_db->updateExecute( + 'simplemovie', + $params, + array( "block_id"=> $block_id ), + true + ); + } + // データがなければ追加 + else { + + $params["block_id"] = $block_id; + $result = $this->_db->insertExecute( + 'simplemovie', + $params, + true + ); + } + } + + /** + * 表示方法の登録 + * @param func_parmas array( block_id, default_width, default_height, autoplay_flag, embed_show_flag ) + * @access public + */ + function setStyle( $func_parmas ) + { + + // 引数が配列じゃなければ異常終了 + if ( !is_array( $func_parmas ) ) return false; + + // ブロックIDの取得 + $block_id = array_key_exists( 'block_id', $func_parmas ) ? $func_parmas['block_id'] : null; + + // すでにブロックのデータがあるか確認 + $params = array( $block_id ); + $sql = "SELECT * " + . "FROM {simplemovie} " + . "WHERE block_id = ? "; + $simplemovie_record = $this->_db->execute( $sql, $params ); + + if ($simplemovie_record === false) { + $this->_db->addError(); + return $simplemovie_record; + } + + // SQL パラメータのクリア + $params = array(); + + if ( array_key_exists( 'default_width' , $func_parmas ) ) $params["width"] = $func_parmas['default_width']; + if ( array_key_exists( 'default_height' , $func_parmas ) ) $params["height"] = $func_parmas['default_height']; + if ( array_key_exists( 'autoplay_flag' , $func_parmas ) ) $params["autoplay_flag"] = $func_parmas['autoplay_flag']; + if ( array_key_exists( 'embed_show_flag', $func_parmas ) ) $params["embed_show_flag"] = $func_parmas['embed_show_flag']; + + // Updateする項目がない場合には何もせず終了 + if ( count( $params ) <= 0 ) return false; + + // データがあれば更新 + if ( count( $simplemovie_record ) > 0 ) { + + $result = $this->_db->updateExecute( + 'simplemovie', + $params, + array( "block_id"=> $block_id ), + true + ); + } + // データがなければ追加 + else { + + $params["block_id"] = $block_id; + $result = $this->_db->insertExecute( + 'simplemovie', + $params, + true + ); + } + } + +} +?> diff --git a/html/webapp/modules/simplemovie/components/View.class.php b/html/webapp/modules/simplemovie/components/View.class.php new file mode 100644 index 0000000..7655559 --- /dev/null +++ b/html/webapp/modules/simplemovie/components/View.class.php @@ -0,0 +1,169 @@ +_container =& DIContainerFactory::getContainer(); + $this->_db =& $this->_container->getComponent("DbObject"); + $this->_session = $this->_container->getComponent("Session"); // ★ 2.4.2.5 ⇒ 2.4.2.6 追加 + } + + /** + * ブロックデータの取得 + * + * @access public + */ + function getBlock( $block_id ) + { + // テーブル確認 + $params = array( $block_id ); + $sql = "SELECT " + . "s.*, " + . "m.file_name AS movie_file_name, " + . "t.file_name AS thumbnail_file_name, " + . "mr.file_name AS movie_file_name_request, " + . "tr.file_name AS thumbnail_file_name_request " + . "FROM {simplemovie} s " + . "LEFT JOIN {uploads} m ON m.upload_id = s.movie_upload_id " + . "LEFT JOIN {uploads} t ON t.upload_id = s.thumbnail_upload_id " + . "LEFT JOIN {uploads} mr ON mr.upload_id = s.movie_upload_id_request " + . "LEFT JOIN {uploads} tr ON tr.upload_id = s.thumbnail_upload_id_request " + . "WHERE s.block_id = ? "; + $simplemovie_record = $this->_db->execute( $sql, $params ); + + if ($simplemovie_record === false) { + $this->_db->addError(); + return $simplemovie_record; + } + + if ( !empty( $simplemovie_record ) && count( $simplemovie_record ) > 0 ) { + return $simplemovie_record[0]; + } + return $simplemovie_record; + } + + /** + * 動画UploadIDからブロックデータを取得 + * + * @access public + */ + public function getBlockByMovieUploadID( $movie_upload_id ) + { + // 条件設定 + $params = array( $movie_upload_id ); + + // SQL文作成(uploadsテーブルにないとダメなので、inner joinを行っている) + $sql = "SELECT s.*, u.file_name AS movie_file_name " + . "FROM {simplemovie} s " + . "INNER JOIN {uploads} u ON u.upload_id = s.movie_upload_id " + . "WHERE s.movie_upload_id = ? "; + + // SQL実施 + $simplemovie_record = $this->_db->execute( $sql, $params ); + + // 結果 + if ( $simplemovie_record === false ) + { + $this->_db->addError(); + return false; + } + else if( empty( $simplemovie_record ) || count( $simplemovie_record) <= 0 ) + { + return false; + } + + return $simplemovie_record[0]; + } + +// ★ 2.4.2.5 ⇒ 2.4.2.6 追加 start + /** + * ログインユーザーの権限を取得 + * + * @return int -1:ログインしてない / 0以上:ログインユーザーの基本権限値 + * @access public + */ + public function getLoginAuth() + { + // ユーザーID取得 + $user_id = $this->_session->getParameter("_user_id"); + if( $user_id == "0" ) + { + // "0"の場合はログインしていない + return -1; + } + + // ログインユーザー権限を取得して返却 + return $this->_session->getParameter("_user_auth_id"); + + } +// ★ 2.4.2.5 ⇒ 2.4.2.6 追加 end + /** + * 自身の権限の承認フラグを返却 + * @return int 1:承認済 2:未承認 + * @access public + */ + function getAgreeFlag() + { + // ユーザ権限を取得 + if ( $this->_session->getParameter("_user_auth_id") <= _AUTH_CHIEF ) { + // 主担以下の権限の場合、承認待ちにする + $agree_flag = SIMPLEMOVIE_STATUS_RESERVE; + } else { + // 主担より上位(管理者)の場合、承認済みにする + $agree_flag = SIMPLEMOVIE_STATUS_AGREE; + } + return $agree_flag; + } + + /** + * 自動承認の可否状態を返却(管理者の場合にtrueを返却を想定) + * @access public + */ + function isAutoAgree($agree_flag) + { + if ( $agree_flag == SIMPLEMOVIE_STATUS_AGREE) { + return true; + } + return false; + } +} +?> diff --git a/html/webapp/modules/simplemovie/config/define.inc.php b/html/webapp/modules/simplemovie/config/define.inc.php new file mode 100644 index 0000000..df5e98d --- /dev/null +++ b/html/webapp/modules/simplemovie/config/define.inc.php @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/html/webapp/modules/simplemovie/config/main.ini b/html/webapp/modules/simplemovie/config/main.ini new file mode 100644 index 0000000..6dfd7e4 --- /dev/null +++ b/html/webapp/modules/simplemovie/config/main.ini @@ -0,0 +1,18 @@ +[Simplemovie] +define:SIMPLEMOVIE_UPLOAD_MAX_SIZE_MEDIA = 314572800 + +; 動画変換ボタン表示フラグ(1:表示する / 1以外:表示しない) +define:SIMPLEMOVIE_CHANGE_EXECUTE_BUTTON_SHOW = 1 + +; ダウンロードタイムリミット +define:SIMPLEMOVIE_TIME_LIMIT = 2400 ;// ファイル作成処理最大時間 + + +;// 承認ステータス +;//承認 +define:SIMPLEMOVIE_STATUS_AGREE = 1 +;//未承認 +define:SIMPLEMOVIE_STATUS_RESERVE = 2 +;//非承認 +define:SIMPLEMOVIE_STATUS_DISAGREE = 0 + diff --git a/html/webapp/modules/simplemovie/files/css/default/style.css b/html/webapp/modules/simplemovie/files/css/default/style.css new file mode 100644 index 0000000..6378525 --- /dev/null +++ b/html/webapp/modules/simplemovie/files/css/default/style.css @@ -0,0 +1,41 @@ +/* Css定義ファイル */ + +/* 使い方画面 +-------------------------------------------------*/ +.simplemovie_copyright { + text-align: right; + color: #a3a3a3; + font-size: 90%; + font-weight: bold; + vertical-align: middle; +} +.simplemovie_caution { + color: #ff0000; +} +.simplemovie_help { + margin: 10px; +} +.simplemovie_help fieldset { + padding: 10px; +} +.simplemovie_help_block { + margin: 0px 0px 5px 30px; +} +.simplemovie_help_block_sub { + margin: 0px 0px 5px 30px; +} +.simplemovie_help_tab { + text-decoration: underline; +} + +/* 埋め込みタグ表示用テキストエリア +-------------------------------------------------*/ +textarea.simplemovie_embed_code { + background:#E8E8E8 none repeat scroll 0 0; + border-bottom:1px solid #000000; + border-top:2px solid #000000; + margin:15px 0; + overflow:scroll; + width:498px; + height:100px; +} diff --git a/html/webapp/modules/simplemovie/files/js/default/simplemovie.js b/html/webapp/modules/simplemovie/files/js/default/simplemovie.js new file mode 100644 index 0000000..601fd55 --- /dev/null +++ b/html/webapp/modules/simplemovie/files/js/default/simplemovie.js @@ -0,0 +1,114 @@ +var clsSimplemovie = Class.create(); +var simplemovieCls = Array(); + +clsSimplemovie.prototype = { + initialize: function(id) { + this.id = id; + }, + + /* 動画、サムネイルをアップロードする */ + uploadEditForm: function(eventObject, form_el) { + + // dialog + if ( form_el["attachment[movie]"].value || form_el["attachment[thumbnail]"].value ) { + + var queryString = "action=simplemovie_view_main_uploading" + + "&prefix_id_name=popup_uploading"; + + var option = new Object(); + option["top_el"] = $(this.id); + option["modal_flag"] = true; + option["center_flag"] = true; + commonCls.sendPopupView(eventObject, queryString, option); + } + + var messageBody = new Object(); + messageBody["action"] = "simplemovie_action_edit_init"; + + // POSTオプションの設定 + var option = new Object(); + option["param"] = messageBody; + option["top_el"] = $(this.id); + option["timeout_flag"] = false; + option["callbackfunc"] = function(res) { + commonCls.alert('更新しました。'); + if ( form_el["attachment[movie]"].value || form_el["attachment[thumbnail]"].value ) { + commonCls.removeBlock("_popup_uploading"+this.id); + } + commonCls.sendRefresh(this.id); + }.bind(this); + option["callbackfunc_error"] = function(file, res){ + commonCls.alert(res); + if ( form_el["attachment[movie]"].value || form_el["attachment[thumbnail]"].value ) { + commonCls.removeBlock("_popup_uploading"+this.id); + } + }.bind(this); + commonCls.sendAttachment(option); + }, + + // 表示設定 + setStyle: function() { + + var fromElement = $("simplemovieForm" + this.id); + var messageBody = Form.serialize(fromElement); + + var option = new Object(); + option["target_el"] = $(this.id); + option["callbackfunc"] = function(){ + alert("更新しました。"); + //commonCls.sendRefresh(this.id); + }.bind(this); + + commonCls.sendPost(this.id, messageBody, option); + }, + + // 動画ダウンロード + movieDownload: function( block_id, movie_upload_id ) + { + var set_id = block_id.replace("_", ""); + + // 呼び出し + var href = _nc_base_url + _nc_index_file_name + '?block_id=' + set_id + '&action=simplemovie_view_edit_download&upload_id=' + movie_upload_id; + location.href = href; + }, + + // 埋め込みタグコード(iframeタグコード)生成 + createIFrameValue: function( embed_code ) + { + // VIDEOタグエレメント取得 + var videoEl = $("simplemovie_video" + this.id); + if( videoEl == null ) + { + // サムネイルエレメント取得して、そこからサイズを取得する + var thumbnailEl = $("simplemovie_thumbnail" + this.id); + var setWidth = thumbnailEl.getWidth() +20; // 少し大きめに指定する。 + var setHeight = thumbnailEl.getHeight() +60; // 注意文言が入る事を想定して、少し大きく指定する。 + } + else + { + // VIDEOエレメントからサイズを取得する + var setWidth = videoEl.getWidth(); + var setHeight = videoEl.getHeight() ; + } + + var result = "