public function update_public_flag_with_relations($public_flag, $is_update_album_images = false) { // album_image の public_flag の更新 if ($is_update_album_images) { Model_AlbumImage::update_public_flag4album_id($this->id, $public_flag); } // timeline の public_flag の更新 if (\Module::loaded('timeline')) { \Timeline\Model_Timeline::update_public_flag4foreign_table_and_foreign_id($public_flag, 'album', $this->id, \Config::get('timeline.types.album')); } $this->public_flag = $public_flag; $this->save(); }
public static function setup_album_image($member_id, $album_image_values = null, $create_count = 1, $album_id = null) { $public_flag = isset($album_image_values['public_flag']) ? $album_image_values['public_flag'] : conf('public_flag.default'); if (!$album_id) { $album_values = array('name' => 'test album_image.', 'body' => 'This is test for album_image.', 'public_flag' => $public_flag); $album = static::force_save_album($member_id, $album_values); $album_id = $album->id; } if (!$album_image_values) { $album_image_values = array('name' => 'test', 'public_flag' => conf('public_flag.default')); } for ($i = 0; $i < $create_count; $i++) { $upload_file_path = static::setup_upload_file(); list($album_image, $file) = Model_AlbumImage::save_with_relations($album_id, null, null, $upload_file_path, 'album', $album_image_values); } return $album_image; }
public static function delete_album_image_multiple4ids($album_image_ids = array(), $with_delete_timeline = false) { if (!is_array($album_image_ids)) { $album_image_ids = (array) $album_image_ids; } $delete_target_notice_cache_member_ids = array(); $delete_target_timeline_ids = array(); $writable_connection = \MyOrm\Model::connection(true); \DBUtil::set_connection($writable_connection); \DB::start_transaction(); foreach ($album_image_ids as $album_image_id) { if (is_enabled('notice')) { \Notice\Site_NoOrmModel::delete_member_watch_content_multiple4foreign_data('album_image', $album_image_id); $notice_ids = \Notice\Site_NoOrmModel::get_notice_ids4foreign_data('album_image', $album_image_id); $delete_target_notice_cache_member_ids += \Notice\Site_NoOrmModel::get_notice_status_member_ids4notice_ids($notice_ids); \Notice\Site_NoOrmModel::delete_notice_multiple4ids($notice_ids); } if (is_enabled('timeline') && $with_delete_timeline) { $delete_target_timeline_ids += \timeline\site_noormmodel::delete_timeline_multiple4foreign_data('album_image', $album_image_id); } } $file_names = \Util_Orm::conv_col2array(Model_AlbumImage::get4ids($album_image_ids), 'file_name'); \DB::delete('album_image')->where('id', 'in', $album_image_ids)->execute(); \DB::commit_transaction(); \DBUtil::set_connection(null); \DB::start_transaction(); if ($files = \Model_File::get4names($file_names)) { foreach ($files as $file) { $file->delete(); } } \DB::commit_transaction(); // delete caches if ($delete_target_notice_cache_member_ids) { foreach ($delete_target_notice_cache_member_ids as $member_id) { \Notice\Site_Util::delete_unread_count_cache($member_id); } } if ($delete_target_timeline_ids) { foreach ($delete_target_timeline_ids as $timeline_id) { \Timeline\Site_Util::delete_cache($timeline_id); } } }
public static function get_album_images($limit, $page = 1, $self_member_id = 0, $target_member_obj = null, $is_mypage = false, $params = array(), $is_return_array = false, $is_asc = false) { if (!is_array($params)) { $params = (array) $params; } if ($target_member_obj && !$target_member_obj instanceof \Model_Member) { throw new InvalidArgumentException('parameter target_member_obj is invalid.'); } if (!empty($params['select']) && !\DBUtil::field_exists('album_image', $params['select'])) { throw new \ValidationFailedException(); } $params = array_merge($params, array('where' => \Site_Model::get_where_params4list($target_member_obj ? $target_member_obj->id : 0, $self_member_id ?: 0, $is_mypage, !empty($params['where']) ? $params['where'] : array(), $target_member_obj ? 'album.member_id' : 'member_id'), 'limit' => $limit, 'order_by' => array('id' => $is_asc ? 'asc' : 'desc'))); if ($target_member_obj) { $params['related'] = array('album'); } $data = Model_AlbumImage::get_pager_list($params, $page, $is_return_array); $data['liked_album_image_ids'] = conf('like.isEnabled') && $self_member_id ? \Site_Model::get_liked_ids('album_image', $self_member_id, $data['list']) : array(); return $data; }
public function action_create($album_image_id = null) { if (!$album_image_id || !($album_image = Model_AlbumImage::find($album_image_id))) { throw new \HttpNotFoundException(); } // Lazy validation if (\Input::post('body')) { \Util_security::check_csrf(); // Create a new comment $comment = new Model_AlbumImageComment(array('body' => \Input::post('body'), 'album_image_id' => $album_image_id, 'member_id' => $this->u->id)); // Save the post and the comment will save too if ($comment->save()) { \Session::set_flash('message', 'コメントしました。'); } else { \Session::set_flash('error', 'コメントに失敗しました。'); } \Response::redirect('album/image/' . $album_image_id); } else { Controller_Image::action_detail($album_image_id); } }
private static function get_album_filesize_total($album_id) { $album_images = Model_AlbumImage::get4album_id($album_id); $size = 0; foreach ($album_images as $album_image) { $file = \Model_File::get4name($album_image->file_name); $size += $file->filesize; } return $size; }
private function get_before_after_ids(Model_AlbumImage $album_image) { $ids = Model_AlbumImage::get_col_array('id', $this->get_query_params($album_image)); return \Util_Array::get_neighborings($album_image->id, $ids); }
public static function update_multiple_each($ids, $set_value, $is_disabled_to_update_public_flag = false) { $album_images = Model_AlbumImage::find('all', array('where' => array(array('id', 'in', $ids)))); $result = 0; foreach ($album_images as $album_image) { $is_set = false; if (isset($set_value['name']) && strlen($set_value['name']) && $album_image->name != $set_value['name']) { $album_image->name = $set_value['name']; $is_set = true; } if (isset($set_value['shot_at']) && strlen($set_value['shot_at']) && !\Util_Date::check_is_same_minute($set_value['shot_at'], $album_image->shot_at)) { $album_image->shot_at = $set_value['shot_at'] . ':' . '00'; $is_set = true; } if ($is_set) { $album_image->save(); } if (!$is_disabled_to_update_public_flag && isset($set_value['public_flag']) && $set_value['public_flag'] != 99 && $album_image->public_flag != $set_value['public_flag']) { $album_image->update_public_flag($set_value['public_flag'], true); $is_set = true; } if (isset($set_value['latitude']) && strlen($set_value['latitude']) && isset($set_value['longitude']) && strlen($set_value['longitude'])) { Model_AlbumImageLocation::save4album_image_id($album_image->id, $set_value['latitude'], $set_value['longitude']); } if ($is_set) { $result++; } } return $result; }
/** * Album upload image * * @access public * @return Response */ public function action_upload_image($album_id = null) { \Util_security::check_method('POST'); \Util_security::check_csrf(); $album = Model_Album::check_authority($album_id, $this->u->id, 'member'); if (Site_Util::check_album_disabled_to_update($album->foreign_table, true)) { throw new \HttpForbiddenException(); } try { $val = self::get_validation_public_flag(); if (!$val->run()) { throw new \ValidationFailedException($val->show_errors()); } $post = $val->validated(); \DB::start_transaction(); list($album_image, $file) = Model_AlbumImage::save_with_relations($album_id, $this->u, $post['public_flag'], null, 'album_image'); \DB::commit_transaction(); \Session::set_flash('message', '写真を投稿しました。'); } catch (\ValidationFailedException $e) { \Session::set_flash('error', $e->getMessage()); } catch (\FuelException $e) { if (\DB::in_transaction()) { \DB::rollback_transaction(); } \Session::set_flash('error', $e->getMessage()); } \Response::redirect('album/' . $album_id); }
public function test_delete_notice() { // 事前準備 \Model_MemberConfig::set_value(2, \Notice\Form_MemberConfig::get_name(self::$type_key), 1); \Model_MemberConfig::set_value(2, \Notice\Site_Util::get_member_config_name_for_watch_content(self::$type_key), 1); \Model_MemberConfig::set_value(3, \Notice\Form_MemberConfig::get_name(self::$type_key), 1); \Model_MemberConfig::set_value(3, \Notice\Site_Util::get_member_config_name_for_watch_content(self::$type_key), 1); self::$member_id = 1; self::$album_image = \Album\Site_Test::setup_album_image(self::$member_id, null, 1); self::$album = Model_Album::find(self::$album_image->album_id); $album_image_id = self::$album_image->id; $foreign_id = self::$album_image->id; $notice_count_all_before = \Notice\Model_Notice::get_count(); $notice_status_count_all_before = \Notice\Model_NoticeStatus::get_count(); $notice_member_from_count_all_before = \Notice\Model_NoticeMemberFrom::get_count(); $member_watch_content_count_all_before = \Notice\Model_MemberWatchContent::get_count(); // liked from others. $like_id = Model_AlbumImageLike::change_registered_status4unique_key(array('album_image_id' => $album_image_id, 'member_id' => 2)); $notice = \Notice\Model_Notice::get_last4foreign_data(self::$foreign_table, $album_image_id, \Notice\Site_Util::get_notice_type(self::$type_key)); $this->assertNotNull($notice); // check count $this->assertEquals($notice_count_all_before + 1, \Notice\Model_Notice::get_count()); $this->assertEquals($notice_status_count_all_before + 1, \Notice\Model_NoticeStatus::get_count()); $this->assertEquals($notice_member_from_count_all_before + 1, \Notice\Model_NoticeMemberFrom::get_count()); $this->assertEquals($member_watch_content_count_all_before + 1, \Notice\Model_MemberWatchContent::get_count()); // check created related table records. $this->assertNotNull(\Notice\Model_NoticeStatus::get4member_id_and_notice_id(self::$member_id, $notice->id)); $this->assertNotNull(\Notice\Model_NoticeMemberFrom::get4notice_id_and_member_id($notice->id, 2)); $this->assertNotNull(\Notice\Model_MemberWatchContent::get_one4foreign_data_and_member_id(self::$foreign_table, $album_image_id, 2)); $this->assertNotNull(\Notice\Model_Notice::get_last4foreign_data(self::$foreign_table, $album_image_id, \Notice\Site_Util::get_notice_type(self::$type_key))); // undo like. $like_id = Model_AlbumImageLike::change_registered_status4unique_key(array('album_image_id' => $album_image_id, 'member_id' => 2)); // check count $this->assertEquals($notice_count_all_before, \Notice\Model_Notice::get_count()); $this->assertEquals($notice_status_count_all_before, \Notice\Model_NoticeStatus::get_count()); $this->assertEquals($notice_member_from_count_all_before, \Notice\Model_NoticeMemberFrom::get_count()); $this->assertEquals($member_watch_content_count_all_before + 1, \Notice\Model_MemberWatchContent::get_count()); // keep watched // check deleted related table records. $this->assertNull(\Notice\Model_NoticeStatus::get4member_id_and_notice_id(self::$member_id, $notice->id)); $this->assertNull(\Notice\Model_NoticeMemberFrom::get4notice_id_and_member_id($notice->id, 2)); $this->assertNotNull(\Notice\Model_MemberWatchContent::get_one4foreign_data_and_member_id(self::$foreign_table, $album_image_id, 2)); // keep watched $this->assertNull(\Notice\Model_Notice::get_last4foreign_data(self::$foreign_table, $album_image_id, \Notice\Site_Util::get_notice_type(self::$type_key))); // others execute like and coment myself. $album_image_like_id = Model_AlbumImageLike::change_registered_status4unique_key(array('album_image_id' => $album_image_id, 'member_id' => 2)); \Site_Test::save_comment('album_image', $album_image_id, 1, 'Test comment1.'); $notice_like = \Notice\Model_Notice::get_last4foreign_data(self::$foreign_table, $album_image_id, \Notice\Site_Util::get_notice_type(self::$type_key)); $notice_comment = \Notice\Model_Notice::get_last4foreign_data(self::$foreign_table, $album_image_id, \Notice\Site_Util::get_notice_type('comment')); $this->assertNotNull($notice_like); $this->assertNotNull($notice_comment); // check count $this->assertEquals($notice_count_all_before + 2, \Notice\Model_Notice::get_count()); $this->assertEquals($notice_status_count_all_before + 2, \Notice\Model_NoticeStatus::get_count()); $this->assertEquals($notice_member_from_count_all_before + 2, \Notice\Model_NoticeMemberFrom::get_count()); $this->assertEquals($member_watch_content_count_all_before + 1, \Notice\Model_MemberWatchContent::get_count()); // check created related table records. $this->assertNotNull(\Notice\Model_NoticeStatus::get4member_id_and_notice_id(2, $notice_comment->id)); $this->assertNotNull(\Notice\Model_NoticeStatus::get4member_id_and_notice_id(self::$member_id, $notice_like->id)); $this->assertNotNull(\Notice\Model_NoticeMemberFrom::get4notice_id_and_member_id($notice_like->id, 2)); $this->assertNotNull(\Notice\Model_NoticeMemberFrom::get4notice_id_and_member_id($notice_comment->id, self::$member_id)); $this->assertNotNull(\Notice\Model_MemberWatchContent::get_one4foreign_data_and_member_id(self::$foreign_table, $album_image_id, 2)); $this->assertNull(\Notice\Model_MemberWatchContent::get_one4foreign_data_and_member_id(self::$foreign_table, $album_image_id, self::$member_id)); $this->assertNotNull(\Notice\Model_Notice::get_last4foreign_data(self::$foreign_table, $album_image_id, \Notice\Site_Util::get_notice_type(self::$type_key))); // undo like. $like_id = Model_AlbumImageLike::change_registered_status4unique_key(array('album_image_id' => $album_image_id, 'member_id' => 2)); // check count $this->assertEquals($notice_count_all_before + 1, \Notice\Model_Notice::get_count()); $this->assertEquals($notice_status_count_all_before + 1, \Notice\Model_NoticeStatus::get_count()); $this->assertEquals($notice_member_from_count_all_before + 1, \Notice\Model_NoticeMemberFrom::get_count()); $this->assertEquals($member_watch_content_count_all_before + 1, \Notice\Model_MemberWatchContent::get_count()); // keep watch // check created related table records. $this->assertNotNull(\Notice\Model_NoticeStatus::get4member_id_and_notice_id(2, $notice_comment->id)); $this->assertNull(\Notice\Model_NoticeStatus::get4member_id_and_notice_id(self::$member_id, $notice_like->id)); $this->assertNull(\Notice\Model_NoticeMemberFrom::get4notice_id_and_member_id($notice_like->id, 2)); $this->assertNotNull(\Notice\Model_NoticeMemberFrom::get4notice_id_and_member_id($notice_comment->id, self::$member_id)); $this->assertNotNull(\Notice\Model_MemberWatchContent::get_one4foreign_data_and_member_id(self::$foreign_table, $album_image_id, 2)); $this->assertNull(\Notice\Model_MemberWatchContent::get_one4foreign_data_and_member_id(self::$foreign_table, $album_image_id, self::$member_id)); $this->assertNull(\Notice\Model_Notice::get_last4foreign_data(self::$foreign_table, $album_image_id, \Notice\Site_Util::get_notice_type(self::$type_key))); // others execute like. $album_image_like_id = Model_AlbumImageLike::change_registered_status4unique_key(array('album_image_id' => $album_image_id, 'member_id' => 3)); $notice = \Notice\Model_Notice::get_last4foreign_data(self::$foreign_table, $album_image_id, \Notice\Site_Util::get_notice_type(self::$type_key)); $this->assertNotNull($notice); // delete album_image. $album_image = Model_AlbumImage::find($album_image_id); $album_image->delete(); // check count $this->assertEquals($notice_count_all_before, \Notice\Model_Notice::get_count()); $this->assertEquals($notice_status_count_all_before, \Notice\Model_NoticeStatus::get_count()); $this->assertEquals($notice_member_from_count_all_before, \Notice\Model_NoticeMemberFrom::get_count()); $this->assertEquals($member_watch_content_count_all_before, \Notice\Model_MemberWatchContent::get_count()); // check deleted related table records. $this->assertNull(\Notice\Model_NoticeStatus::get4member_id_and_notice_id(self::$member_id, $notice->id)); $this->assertNull(\Notice\Model_NoticeMemberFrom::get4notice_id_and_member_id($notice->id, 3)); $this->assertNull(\Notice\Model_MemberWatchContent::get_one4foreign_data_and_member_id(self::$foreign_table, $album_image_id, 3)); $this->assertNull(\Notice\Model_Notice::get_last4foreign_data(self::$foreign_table, $album_image_id, \Notice\Site_Util::get_notice_type(self::$type_key))); // album delete test // setup self::$album_image = \Album\Site_Test::setup_album_image(self::$member_id, null, 1, self::$album->id); $foreign_id = self::$album_image->id; $album_image_id = self::$album_image->id; // others execute like. $album_image_like_id = Model_AlbumImageLike::change_registered_status4unique_key(array('album_image_id' => $album_image_id, 'member_id' => 4)); $notice = \Notice\Model_Notice::get_last4foreign_data(self::$foreign_table, $album_image_id, \Notice\Site_Util::get_notice_type(self::$type_key)); $this->assertNotNull($notice); // delete album_image self::$album->delete(); // check count $this->assertEquals($notice_count_all_before, \Notice\Model_Notice::get_count()); $this->assertEquals($notice_status_count_all_before, \Notice\Model_NoticeStatus::get_count()); $this->assertEquals($notice_member_from_count_all_before, \Notice\Model_NoticeMemberFrom::get_count()); $this->assertEquals($member_watch_content_count_all_before, \Notice\Model_MemberWatchContent::get_count()); // check deleted related table records. $this->assertNull(\Notice\Model_NoticeStatus::get4member_id_and_notice_id(self::$member_id, $notice->id)); $this->assertNull(\Notice\Model_NoticeMemberFrom::get4notice_id_and_member_id($notice->id, 3)); $this->assertNull(\Notice\Model_MemberWatchContent::get_one4foreign_data_and_member_id(self::$foreign_table, $album_image_id, 3)); $this->assertNull(\Notice\Model_Notice::get_last4foreign_data(self::$foreign_table, $album_image_id, \Notice\Site_Util::get_notice_type(self::$type_key))); }
private static function get_album_image() { return Model_AlbumImage::query()->where('album_id', self::$album->id)->get_one(); }
/** * Save location data. * * @access public * @param int $id album_image_id * @return Response (json) * @throws Exception in Controller_Base::controller_common_api * @see Controller_Base::controller_common_api */ public function post_save_location($id = null) { $this->controller_common_api(function () use($id) { $this->response_body['errors']['message_default'] = sprintf('%sの%sに失敗しました。', term('site.location'), term('form.save')); $id = intval(\Input::post('id') ?: $id); $album_image = Model_AlbumImage::check_authority($id, $this->u->id, 'album_image_location'); $album_image_location = $album_image->album_image_location ?: Model_AlbumImageLocation::forge(); $val = \Validation::forge(); $val->add_model($album_image_location); $val->fieldset()->field('album_image_id')->delete_rule('required'); if (!$val->run()) { throw new \ValidationFailedException($val->show_errors()); } $post = $val->validated(); $album_image_location->album_image_id = $id; $album_image_location->latitude = $post['latitude']; $album_image_location->longitude = $post['longitude']; \DB::start_transaction(); $status = (bool) $album_image_location->save(); \DB::commit_transaction(); $data = array('status' => $status, 'album_image_location' => $album_image_location->to_array(), 'message' => sprintf('%sを%sしました。', term('site.location'), term('form.save'))); $this->set_response_body_api($data); }); }