OpenPNE Issue Tracking System: チケット
http://redmine.openpne.jp/
http://redmine.openpne.jp/favicon.ico
2017-02-17T07:57:45Z
OpenPNE Issue Tracking System
Redmine
OpenPNE 3 - Task(タスク) #4159 (New(新規)): MySQLのSTRICT_TRANS_TABLESが有効な状態でテスト用fixtureのロードに失敗する
http://redmine.openpne.jp/issues/4159
2017-02-17T07:57:45Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-概要"></a>
<h3 >Overview (概要)<a href="#Overview-概要" class="wiki-anchor">¶</a></h3>
<p>MySQL 5.7 の Strict Mode が有効な状態での動作確認 (<a class="issue tracker-5 status-2 priority-4 priority-default parent" title="Task(タスク): MySQLのStrict Modeを有効にした場合に生じる問題を調査 (Accepted(着手))" href="http://redmine.openpne.jp/issues/4033">#4033</a>) を行った際に発生した。</p>
<p>fixture の読み込みを必要とするテストコードを実行すると下記のエラーが発生する:<br /><pre>
$ php test/unit/model/doctrine/MemberTest.php
PHP Fatal error: Uncaught exception 'Doctrine_Connection_Mysql_Exception' with message 'SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '' for column 'value_datetime' at row 1' in /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php:1082
Stack trace:
#0 /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Statement.php(269): Doctrine_Connection->rethrowException(Object(PDOException), Object(Doctrine_Connection_Statement))
#1 /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php(1042): Doctrine_Connection_Statement->execute(Array)
#2 /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php(687): Doctrine_Connection->exec('INSERT INTO mem...', Array)
#3 /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/UnitOfWork.php(647): Doctrine_Connection->insert(Object(MemberProfileTable), in /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php on line 1082
</pre></p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p><a class="source" href="http://redmine.openpne.jp/projects/op3/repository/revisions/43190aa1/entry/test/fixtures/common/test_data.yml#L344">source:test/fixtures/common/test_data.yml@43190aa1#L344</a>:<br /><pre><code class="yaml syntaxhl"><span class="CodeRay"> <span class="key">second_member_profile_birthday</span>:
<span class="key">value</span>: <span class="string"><span class="delimiter">"</span><span class="delimiter">"</span></span>
<span class="key">value_datetime</span>: <span class="string"><span class="delimiter">"</span><span class="delimiter">"</span></span>
<span class="key">public_flag</span>: <span class="string"><span class="content">1</span></span>
<span class="key">Member</span>: <span class="string"><span class="content">second_member</span></span>
<span class="key">Profile</span>: <span class="string"><span class="content">profile_birthday</span></span>
<span class="key">children</span>: <span class="string"><span class="content">[]</span></span>
</span></code></pre></p>
<p>上記の value_datetime に空文字列をセットしていることが原因。</p>
<p><a class="source" href="http://redmine.openpne.jp/projects/op3/repository/revisions/43190aa1/entry/test/fixtures/common/xss_test_data.yml#L244">source:test/fixtures/common/xss_test_data.yml@43190aa1#L244</a>:<br /><pre><code class="yaml syntaxhl"><span class="CodeRay"><span class="key">OAuthMemberToken</span>:
<span class="key">first_member_html_oauth_token</span>:
<span class="key">key_string</span>: <span class="string"><span class="delimiter">"</span><span class="content">fIrStMeMbErHtMlOaUtHtOkEn</span><span class="delimiter">"</span></span>
<span class="key">secret</span>: <span class="string"><span class="delimiter">"</span><span class="content">fIrStMeMbErHtMlOaUtHsEcReT</span><span class="delimiter">"</span></span>
<span class="key">type</span>: <span class="string"><span class="delimiter">"</span><span class="content">access</span><span class="delimiter">"</span></span>
<span class="key">is_active</span>: <span class="string"><span class="content">1</span></span>
<span class="key">Consumer</span>: <span class="string"><span class="content">html_oauth_consumer1</span></span>
<span class="key">Member</span>: <span class="string"><span class="content">first_member</span></span>
</span></code></pre></p>
<p>また、上記の key_string についても定義されている VARCHAR のサイズを越える文字列のためエラーが発生する。</p>
OpenPNE 3 - Task(タスク) #4158 (New(新規)): MySQLのSTRICT_TRANS_TABLESが有効な状態でプリセットのプロフィール項目を登録するとエラー
http://redmine.openpne.jp/issues/4158
2017-02-17T03:55:14Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-概要"></a>
<h3 >Overview (概要)<a href="#Overview-概要" class="wiki-anchor">¶</a></h3>
<p>MySQL 5.7 の Strict Mode が有効な状態での動作確認 (<a class="issue tracker-5 status-2 priority-4 priority-default parent" title="Task(タスク): MySQLのStrict Modeを有効にした場合に生じる問題を調査 (Accepted(着手))" href="http://redmine.openpne.jp/issues/4033">#4033</a>) を行った際に発生した。</p>
<p>管理画面の「プロフィール項目登録」でプリセットから選択した項目を登録すると下記のエラーが発生する:</p>
<pre>
SQLSTATE[HY000]: General error: 1364 Field 'caption' doesn't have a default value
</pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<pre><code class="sql syntaxhl"><span class="CodeRay"><span class="class">INSERT</span> <span class="class">INTO</span> profile (name, is_required, is_unique, is_edit_public_flag, default_public_flag, form_type, value_type, is_disp_regist, is_disp_config, is_disp_search, is_public_web, sort_order, created_at, updated_at) <span class="keyword">VALUES</span> (<span class="string"><span class="delimiter">'</span><span class="content">op_preset_country</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">0</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">0</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">0</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">1</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">country_select</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">string</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">1</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">1</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">1</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">0</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">130</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">2017-02-16 21:24:37</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">2017-02-16 21:24:37</span><span class="delimiter">'</span></span>)
<span class="class">INSERT</span> <span class="class">INTO</span> profile_translation (id, lang) <span class="keyword">VALUES</span> (<span class="string"><span class="delimiter">'</span><span class="content">5</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">en</span><span class="delimiter">'</span></span>)
</span></code></pre>
<p>二つ目のクエリで、NOT NULL 制約のある <code>caption</code> に値がセットされていないためエラーが発生している。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>修正内容を記入</p>
OpenPNE 3 - Task(タスク) #4040 (New(新規)): #3083の修正コミットがstable-3.8.xのみに存在し、masterブランチに対するチケット及びPull R...
http://redmine.openpne.jp/issues/4040
2016-11-14T07:59:10Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="概要"></a>
<h3 >概要<a href="#概要" class="wiki-anchor">¶</a></h3>
<p><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3083">#3083</a> はトラッカーが Bug のチケットであるが、その修正コミットである <a class="changeset" title="(fixes #3083) fixed not to occur Exception when channel server was not registered" href="http://redmine.openpne.jp/projects/op3/repository/revisions/41db124efa99201060a2d17cecac966045b8c611">41db124e</a> は stable-3.8.x に取り込まれている。<br />そのため <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3083">#3083</a> の役割は実質 Backport のチケットであるが、一方で <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3083">#3083</a> の修正を master ブランチで行うチケットが存在していない。</p>
<p>内容が酷似した <a class="issue tracker-1 status-13 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3011">#3011</a>, <a class="issue tracker-4 status-5 priority-4 priority-default closed" title="Backport(バックポート): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3012">#3012</a> のチケットも存在するが、これらは <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3083">#3083</a> 以前に master ブランチで修正および stable-3.8.x へのバックポートが既に行われている。<br /><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3083">#3083</a> は、一度 <a class="issue tracker-1 status-13 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3011">#3011</a>, <a class="issue tracker-4 status-5 priority-4 priority-default closed" title="Backport(バックポート): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3012">#3012</a> で修正した問題について再び修正を試みたチケットであるように読み取れる。</p>
<a name="対応方法"></a>
<h3 >対応方法<a href="#対応方法" class="wiki-anchor">¶</a></h3>
<p>stable-3.8.x ブランチにしか存在しない <a class="changeset" title="(fixes #3083) fixed not to occur Exception when channel server was not registered" href="http://redmine.openpne.jp/projects/op3/repository/revisions/41db124efa99201060a2d17cecac966045b8c611">41db124e</a> の修正を master ブランチに cherry-pick するためのチケットおよび Pull Request を作成する</p>
OpenPNE 3 - Backport(バックポート) #3971 (New(新規)): #3968で削除したテストコードを動作する状態にして再び追加する
http://redmine.openpne.jp/issues/3971
2016-07-19T02:30:58Z
Youichi Kimura
kim.upsilon@bucyou.net
<p><a class="issue tracker-4 status-8 priority-4 priority-default" title="Backport(バックポート): 壊れたテストコードを削除する (Rejected(差し戻し))" href="http://redmine.openpne.jp/issues/3968">#3968</a> で削除したテストコードを動作する状態に修正した上で再び追加します。</p>
<a name="Functional-Test"></a>
<h4 >Functional Test<a href="#Functional-Test" class="wiki-anchor">¶</a></h4>
<ul>
<li>pc_backend
<ul>
<li>POST /community/categoryEdit/id/1 (CSRF)</li>
<li>POST /community/addDefaultCommunity/id/1 (CSRF)</li>
<li>POST /connection (CSRF)</li>
<li>POST /connection/1 (CSRF)</li>
<li>POST /default/login (CSRF)</li>
<li>POST /design/gadget?type=gadget (sfTesterDoctrine::check)</li>
<li>POST /design/gadget?type=sideBanner (sfTesterDoctrine::check)</li>
<li>POST /design/gadget?type=mobile (sfTesterDoctrine::check)</li>
<li>POST /design (CSRF)</li>
<li>POST /design/gadget (CSRF)</li>
<li>POST /design/customCss (CSRF)</li>
<li>POST /navigation/edit?app=pc (CSRF)</li>
<li>POST /navigation/edit?app=mobile (CSRF)</li>
<li>POST /navigation/edit?app=backend (CSRF)</li>
<li>POST /plugin/list?type=application (CSRF)</li>
<li>POST /plugin/list?type=auth (CSRF)</li>
<li>POST /plugin/list?type=skin (CSRF)</li>
<li>POST /profile/editOption (CSRF)</li>
<li>GET /sns/config?category=general (sfTestFunctionalBase::click)</li>
<li>POST /sns/richTextarea (CSRF)</li>
<li>POST /sns/changeRichTextareaButtonOrder (CSRF)</li>
</ul>
</li>
<li>pc_frontend
<ul>
<li><del>POST /community/quit?id=1 (CSRF)</del>
<ul>
<li>stable-3.8.x にのみ存在しないテスト</li>
</ul>
</li>
<li><del>POST /community/join?id=1 (CSRF)</del>
<ul>
<li>stable-3.8.x にのみ存在しないテスト</li>
</ul>
</li>
<li><del>GET /community/changeAdminRequest?id=1055&member_id=1056 (XSS)</del>
<ul>
<li>stable-3.8.x にのみ存在しないテスト</li>
</ul>
</li>
<li><del>GET /community/changeAdminRequest?id=1055&member_id=1056 (XSS)</del>
<ul>
<li>stable-3.8.x にのみ存在しないテスト</li>
</ul>
</li>
<li><del>GET /community/1055 (XSS)</del>
<ul>
<li>stable-3.8.x にのみ存在しないテスト</li>
</ul>
</li>
<li>「コミュニティリスト」ガジェットの画像部分のリンク先に対するリクエスト</li>
<li>「コミュニティリスト」ガジェットのテキスト部分のリンク先に対するリクエスト</li>
<li>POST /confirmation/community_admin_request/5 (CSRF)</li>
<li>POST /confirmation/community_sub_admin_request/8 (CSRF)</li>
<li>GET /connection/1055 (XSS)</li>
<li>GET /connection/list (XSS)</li>
<li>POST /connection (CSRF)</li>
<li>POST /connection/2/delete (CSRF)</li>
<li>POST /connection/2 (CSRF)</li>
<li>POST /connection/revoke/2 (CSRF)</li>
<li>POST /leave (CSRF)</li>
<li>POST /member/config?category=language (CSRF)</li>
<li>GET / (XSS, RSSガジェット部分)</li>
</ul>
</li>
<li>api
<ul>
<li><a href="https://houou.github.io/api.php/" class="external">JSON API</a> に対するテスト</li>
</ul></li>
</ul>
<a name="Unit-Test"></a>
<h4 >Unit Test<a href="#Unit-Test" class="wiki-anchor">¶</a></h4>
<ul>
<li>Doctrine_Record::getListener() (opApplicationLevelCascadingListener)</li>
<li>ActivityDataTable::getPublicFlags()</li>
<li>CommunityCategoryTable::getAllChildren()</li>
<li>CommunityCategory::getChildren()</li>
<li>CommunityMemberTable::join()</li>
<li>CommunityMemberTable::quit()</li>
<li>CommunityMemberTable::requestChangeAdmin()</li>
<li>CommunityMemberTable::requestSubAdmin()</li>
<li>CommunityMemberTable::getMemberIdsByCommunityId()</li>
<li>CommunityTable::getCommunityMemberListPager()</li>
<li>CommunityTable::getDefaultCommunities()</li>
<li>Community::countCommunityMembers()</li>
<li>Community::getNameAndCount()</li>
<li>File::delete()</li>
<li>MemberProfileTable::searchMemberIds()</li>
<li>MemberRelationshipTable::retrievesByMemberIdFrom()</li>
<li>MemberRelationshipTable::getFriendListPager()</li>
<li>MemberRelationshipTable::getFriendMemberIds()</li>
<li>MemberTable::searchMemberIds()</li>
<li>Member::getProfiles()</li>
<li>Member::countFriends()</li>
<li>Member::getNameAndCount()</li>
<li>Member::delete()</li>
<li>OAuthConsumerInformationTable::getListPager()</li>
<li>OAuthConsumerInformation::getAPICaptions()</li>
<li>ProfileOptionTable::getMaxSortOrder()</li>
<li>ProfileTable::getMaxSortOrder()</li>
<li>Profile::getOptionsArray()</li>
<li>opToolkit::loadXmlString()</li>
</ul>
OpenPNE 3 - Backport(バックポート) #3970 (New(新規)): #3967で削除したテストコードを動作する状態にして再び追加する
http://redmine.openpne.jp/issues/3970
2016-07-19T02:30:46Z
Youichi Kimura
kim.upsilon@bucyou.net
<p><a class="issue tracker-4 status-13 priority-4 priority-default closed" title="Backport(バックポート): 壊れたテストコードを削除する (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3967">#3967</a> で削除したテストコードを動作する状態に修正した上で再び追加します。</p>
<a name="Functional-Test"></a>
<h4 >Functional Test<a href="#Functional-Test" class="wiki-anchor">¶</a></h4>
<ul>
<li>pc_backend
<ul>
<li>POST /community/categoryEdit/id/1 (CSRF)</li>
<li>POST /community/addDefaultCommunity/id/1 (CSRF)</li>
<li>POST /connection (CSRF)</li>
<li>POST /connection/1 (CSRF)</li>
<li>POST /default/login (CSRF)</li>
<li>POST /design/gadget?type=gadget (sfTesterDoctrine::check)</li>
<li>POST /design/gadget?type=sideBanner (sfTesterDoctrine::check)</li>
<li>POST /design/gadget?type=mobile (sfTesterDoctrine::check)</li>
<li>POST /design (CSRF)</li>
<li>POST /design/gadget (CSRF)</li>
<li>POST /design/customCss (CSRF)</li>
<li>POST /mail (CSRF)
<ul>
<li>stable-3.6.x にのみ存在するテスト</li>
</ul>
</li>
<li>POST /mail/edit (CSRF)
<ul>
<li>stable-3.6.x にのみ存在するテスト</li>
</ul>
</li>
<li>POST /navigation/edit?app=pc (CSRF)</li>
<li>POST /navigation/edit?app=mobile (CSRF)</li>
<li>POST /navigation/edit?app=backend (CSRF)</li>
<li>POST /plugin/list?type=application (CSRF)</li>
<li>POST /plugin/list?type=auth (CSRF)</li>
<li>POST /plugin/list?type=skin (CSRF)</li>
<li>POST /profile/editOption (CSRF)</li>
<li>GET /sns/config?category=general (sfTestFunctionalBase::click)</li>
<li>POST /sns/richTextarea (CSRF)</li>
<li>POST /sns/changeRichTextareaButtonOrder (CSRF)</li>
</ul>
</li>
<li>pc_frontend
<ul>
<li>GET /OpenID/list (XSS)
<ul>
<li>stable-3.6.x にのみ存在するテスト</li>
</ul>
</li>
<li>/OpenID/unsetPermission?id=2 (CSRF)
<ul>
<li>stable-3.6.x にのみ存在するテスト</li>
</ul>
</li>
<li>POST /community/quit?id=1 (CSRF)</li>
<li>POST /community/join?id=1 (CSRF)</li>
<li>GET /community/changeAdminRequest?id=1055&member_id=1056 (XSS)</li>
<li>GET /community/changeAdminRequest?id=1055&member_id=1056 (XSS)</li>
<li>GET /community/1055 (XSS)</li>
<li>「コミュニティリスト」ガジェットの画像部分のリンク先に対するリクエスト</li>
<li>「コミュニティリスト」ガジェットのテキスト部分のリンク先に対するリクエスト</li>
<li>POST /confirmation/community_admin_request/5 (CSRF)</li>
<li>POST /confirmation/community_sub_admin_request/8 (CSRF)</li>
<li>GET /connection/1055 (XSS)</li>
<li>GET /connection/list (XSS)</li>
<li>POST /connection (CSRF)</li>
<li>POST /connection/2/delete (CSRF)</li>
<li>POST /connection/2 (CSRF)</li>
<li>POST /connection/revoke/2 (CSRF)</li>
<li>POST /leave (CSRF)</li>
<li>POST /member/config?category=language (CSRF)</li>
<li>GET / (XSS, RSSガジェット部分)</li>
</ul>
</li>
<li>api
<ul>
<li><del><a href="https://houou.github.io/api.php/" class="external">JSON API</a> に対するテスト</del>
<ul>
<li>stable-3.6.x にのみ存在しないテスト</li>
</ul></li>
</ul></li>
</ul>
<a name="Unit-Test"></a>
<h4 >Unit Test<a href="#Unit-Test" class="wiki-anchor">¶</a></h4>
<ul>
<li>Doctrine_Record::getListener() (opApplicationLevelCascadingListener)</li>
<li>ActivityDataTable::getPublicFlags()</li>
<li>CommunityCategoryTable::getAllChildren()</li>
<li>CommunityCategory::getChildren()</li>
<li>CommunityMemberTable::join()</li>
<li>CommunityMemberTable::quit()</li>
<li>CommunityMemberTable::requestChangeAdmin()</li>
<li>CommunityMemberTable::requestSubAdmin()</li>
<li>CommunityMemberTable::getMemberIdsByCommunityId()</li>
<li>CommunityTable::getCommunityMemberListPager()</li>
<li>CommunityTable::getDefaultCommunities()</li>
<li>Community::countCommunityMembers()</li>
<li>Community::getNameAndCount()</li>
<li>File::delete()</li>
<li>MemberProfileTable::searchMemberIds()</li>
<li>MemberRelationshipTable::retrievesByMemberIdFrom()</li>
<li>MemberRelationshipTable::getFriendListPager()</li>
<li>MemberRelationshipTable::getFriendMemberIds()</li>
<li>MemberTable::searchMemberIds()</li>
<li>Member::getProfiles()</li>
<li>Member::countFriends()</li>
<li>Member::getNameAndCount()</li>
<li>Member::delete()</li>
<li>OAuthConsumerInformationTable::getListPager()</li>
<li>OAuthConsumerInformation::getAPICaptions()</li>
<li>ProfileOptionTable::getMaxSortOrder()</li>
<li>ProfileTable::getMaxSortOrder()</li>
<li>Profile::getOptionsArray()</li>
<li>opToolkit::loadXmlString()</li>
</ul>
OpenPNE 3 - Task(タスク) #3394 (New(新規)): JSON APIドキュメントのアクティビティ関連のページに画像投稿・取得のサンプルを追加する
http://redmine.openpne.jp/issues/3394
2013-09-09T09:32:26Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="概要"></a>
<h3 >概要<a href="#概要" class="wiki-anchor">¶</a></h3>
<p><a class="issue tracker-2 status-13 priority-4 priority-default closed" title="Enhancement(機能追加・改善): activity/post.json の画像投稿対応 (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3064">#3064</a> によりアクティビティ関連の API で画像投稿や画像取得が行えるような実装となったため、これに合わせて「OpenPNE3 JSON API ドキュメント」(<a class="external" href="http://houou.github.io/api.php/">http://houou.github.io/api.php/</a>) に画像投稿・取得を行うサンプルを追加する。</p>
opOpenSocialPlugin - Backport(バックポート) #2249 (Fixed(完了)): [api] 取得したアクティビティのリンク先URLが streamUrl に格納...
http://redmine.openpne.jp/issues/2249
2011-06-28T07:27:22Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>下記のように activity_data.uri にURIが設定されたアクティビティをAPIで取得した場合に、URLが <code>url</code> フィールドではなく <code>streamUrl</code> フィールドに格納されてしまう。</p>
<pre>
sqlite> select * from activity_data;
id|member_id|in_reply_to_activity_id|body|uri|public_flag|is_pc|is_mobile|source|source_uri|foreign_table|foreign_id|template|template_param|created_at|updated_at
1|1||test|http://sns.localhost/|1|1|1|||||||2011-06-02 21:29:57|2011-06-02 21:29:57
</pre>
<p>APIで取得されるアクティビティ:<br />(※: URLの値が壊れている問題については <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): [api] 取得したアクティビティのフィールドに含まれるURLがおかしい (Fixed(完了))" href="http://redmine.openpne.jp/issues/2231">#2231</a> で取り扱います)</p>
<pre><code class="javascript syntaxhl"><span class="CodeRay">{
<span class="key"><span class="delimiter">"</span><span class="content">id</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">1</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">userId</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">1</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">title</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">test</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">postedTime</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">2011-06-02T21:29:57+09:00</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">streamUrl</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">http:</span><span class="content">\/</span><span class="content">\/</span><span class="content">sns.localhost</span><span class="content">\/</span><span class="content">sqlite</span><span class="content">\/</span><span class="content">http%3A</span><span class="content">\/</span><span class="delimiter">"</span></span>
}
</span></code></pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>opJsonDbOpensocialService::getActivities() メソッド内で、下記のように activity_data.uri の値を streamUrl へ代入している箇所がある。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="keyword">if</span> (<span class="local-variable">$activity</span>->getUri())
{
<span class="local-variable">$a</span>[<span class="string"><span class="delimiter">'</span><span class="content">streamUrl</span><span class="delimiter">'</span></span>] = app_url_for(<span class="string"><span class="delimiter">'</span><span class="content">pc_frontend</span><span class="delimiter">'</span></span>, <span class="local-variable">$activity</span>->getUri(), <span class="predefined-constant">true</span>);
}
</span></code></pre>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>activity_data.uri の値の代入先を streamUrl から url に変更する。</p>
<pre><code class="diff syntaxhl"><span class="CodeRay"><span class="line comment">diff --git a/lib/util/opJsonDbOpensocialService.class.php b/lib/util/opJsonDbOpensocialService.class.php</span>
<span class="line comment">index 398ff69..0f0d61f 100644</span>
<span class="line head"><span class="head">--- </span><span class="filename">a/lib/util/opJsonDbOpensocialService.class.php</span></span>
<span class="line head"><span class="head">+++ </span><span class="filename">b/lib/util/opJsonDbOpensocialService.class.php</span></span>
<span class="change"><span class="change">@@</span> -171,7 +171,7 <span class="change">@@</span></span> <span class="keyword">class</span> <span class="class">opJsonDbOpensocialService</span> <span class="keyword">implements</span> <span class="constant">ActivityService</span>, <span class="constant">PersonService</span>, <span class="constant">AppDa</span>
<span class="keyword">if</span> (<span class="local-variable">$activity</span>->getUri())
{
<span class="line delete"><span class="delete">-</span> <span class="local-variable">$a</span>[<span class="string"><span class="delimiter">'</span></span><span class="eyecatcher"><span class="string"><span class="content">streamU</span></span></span><span class="string"><span class="content">rl</span><span class="delimiter">'</span></span>] = app_url_for(<span class="string"><span class="delimiter">'</span><span class="content">pc_frontend</span><span class="delimiter">'</span></span>, <span class="local-variable">$activity</span>->getUri(), <span class="predefined-constant">true</span>);</span>
<span class="line insert"><span class="insert">+</span> <span class="local-variable">$a</span>[<span class="string"><span class="delimiter">'</span></span><span class="eyecatcher"><span class="string"><span class="content">u</span></span></span><span class="string"><span class="content">rl</span><span class="delimiter">'</span></span>] = app_url_for(<span class="string"><span class="delimiter">'</span><span class="content">pc_frontend</span><span class="delimiter">'</span></span>, <span class="local-variable">$activity</span>->getUri(), <span class="predefined-constant">true</span>);</span>
}
<span class="keyword">if</span> (<span class="local-variable">$activity</span>->getForeignTable() == <span class="constant">Doctrine</span>::getTable(<span class="string"><span class="delimiter">'</span><span class="content">MemberApplication</span><span class="delimiter">'</span></span>)->getTableName())
{
</span></code></pre>
opOpenSocialPlugin - Backport(バックポート) #2247 (Fixed(完了)): [api] 取得したアクティビティのフィールドに含まれるURLがおかしい
http://redmine.openpne.jp/issues/2247
2011-06-28T07:26:02Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>下記のように activity_data.uri や activity_image.uri にabsolute URIが含まれる場合に、RESTful API や osapi などでアクティビティを取得した際にURLがおかしな値になる。</p>
<pre>
sqlite> select * from activity_data;
id|member_id|in_reply_to_activity_id|body|uri|public_flag|is_pc|is_mobile|source|source_uri|foreign_table|foreign_id|template|template_param|created_at|updated_at
1|1||test|http://sns.localhost/|1|1|1|||||||2011-06-02 21:29:57|2011-06-02 21:29:57
sqlite> select * from activity_image;
id|activity_data_id|mime_type|uri|file_id|created_at|updated_at
1|1|image/png|http://www.example.com/image.png||2011-06-02 21:29:58|2011-06-02 21:29:58
</pre>
<p>APIで取得されるアクティビティ:</p>
<pre><code class="javascript syntaxhl"><span class="CodeRay">{
<span class="key"><span class="delimiter">"</span><span class="content">id</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">1</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">userId</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">1</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">title</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">test</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">postedTime</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">2011-06-02T21:29:57+09:00</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">streamUrl</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">http:</span><span class="content">\/</span><span class="content">\/</span><span class="content">sns.localhost</span><span class="content">\/</span><span class="content">sqlite</span><span class="content">\/</span><span class="content">http%3A</span><span class="content">\/</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">mediaItems</span><span class="delimiter">"</span></span>: [
{
<span class="key"><span class="delimiter">"</span><span class="content">url</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">http:</span><span class="content">\/</span><span class="content">\/</span><span class="content">sns.localhost</span><span class="content">\/</span><span class="content">sqlite</span><span class="content">\/</span><span class="content">http%3A</span><span class="content">\/</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">type</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">image</span><span class="content">\/</span><span class="content">png</span><span class="delimiter">"</span></span>
}
]
}
</span></code></pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>lib/util/opJsonDbOpensocialService.class.php にて、各 URL のフィールドに値を設定している箇所でURLがabsoluteであるかないかに関わらず app_url_for を通しているため間違った値に変換されている。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="keyword">if</span> (<span class="local-variable">$activity</span>->getUri())
{
<span class="local-variable">$a</span>[<span class="string"><span class="delimiter">'</span><span class="content">streamUrl</span><span class="delimiter">'</span></span>] = app_url_for(<span class="string"><span class="delimiter">'</span><span class="content">pc_frontend</span><span class="delimiter">'</span></span>, <span class="local-variable">$activity</span>->getUri(), <span class="predefined-constant">true</span>);
}
</span></code></pre>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="keyword">if</span> (<span class="local-variable">$image</span>->getFileId())
{
<span class="comment">// (snip)</span>
}
<span class="keyword">else</span>
{
<span class="local-variable">$mediaItem</span>[<span class="string"><span class="delimiter">'</span><span class="content">url</span><span class="delimiter">'</span></span>] = app_url_for(<span class="string"><span class="delimiter">'</span><span class="content">pc_frontend</span><span class="delimiter">'</span></span>, <span class="local-variable">$image</span>->getUri(), <span class="predefined-constant">true</span>);
<span class="local-variable">$mediaItem</span>[<span class="string"><span class="delimiter">'</span><span class="content">type</span><span class="delimiter">'</span></span>] = <span class="local-variable">$image</span>->getMimeType();
}
</span></code></pre>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>下記のいずれかの方法でこの問題を解決することが可能である。</p>
<ul>
<li>absolute URIの場合には app_url_for を使わないようにopOpenSocialPlugin側で修正する</li>
<li>app_url_for にabsolute URIが渡された場合は何もせずにreturnするようにCore側で修正する</li>
</ul>
opOpenSocialPlugin - Backport(バックポート) #2246 (Fixed(完了)): [api] 取得したアクティビティのフィールドに含まれるURLがおかしい
http://redmine.openpne.jp/issues/2246
2011-06-28T07:25:49Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>下記のように activity_data.uri や activity_image.uri にabsolute URIが含まれる場合に、RESTful API や osapi などでアクティビティを取得した際にURLがおかしな値になる。</p>
<pre>
sqlite> select * from activity_data;
id|member_id|in_reply_to_activity_id|body|uri|public_flag|is_pc|is_mobile|source|source_uri|foreign_table|foreign_id|template|template_param|created_at|updated_at
1|1||test|http://sns.localhost/|1|1|1|||||||2011-06-02 21:29:57|2011-06-02 21:29:57
sqlite> select * from activity_image;
id|activity_data_id|mime_type|uri|file_id|created_at|updated_at
1|1|image/png|http://www.example.com/image.png||2011-06-02 21:29:58|2011-06-02 21:29:58
</pre>
<p>APIで取得されるアクティビティ:</p>
<pre><code class="javascript syntaxhl"><span class="CodeRay">{
<span class="key"><span class="delimiter">"</span><span class="content">id</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">1</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">userId</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">1</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">title</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">test</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">postedTime</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">2011-06-02T21:29:57+09:00</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">streamUrl</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">http:</span><span class="content">\/</span><span class="content">\/</span><span class="content">sns.localhost</span><span class="content">\/</span><span class="content">sqlite</span><span class="content">\/</span><span class="content">http%3A</span><span class="content">\/</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">mediaItems</span><span class="delimiter">"</span></span>: [
{
<span class="key"><span class="delimiter">"</span><span class="content">url</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">http:</span><span class="content">\/</span><span class="content">\/</span><span class="content">sns.localhost</span><span class="content">\/</span><span class="content">sqlite</span><span class="content">\/</span><span class="content">http%3A</span><span class="content">\/</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">type</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">image</span><span class="content">\/</span><span class="content">png</span><span class="delimiter">"</span></span>
}
]
}
</span></code></pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>lib/util/opJsonDbOpensocialService.class.php にて、各 URL のフィールドに値を設定している箇所でURLがabsoluteであるかないかに関わらず app_url_for を通しているため間違った値に変換されている。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="keyword">if</span> (<span class="local-variable">$activity</span>->getUri())
{
<span class="local-variable">$a</span>[<span class="string"><span class="delimiter">'</span><span class="content">streamUrl</span><span class="delimiter">'</span></span>] = app_url_for(<span class="string"><span class="delimiter">'</span><span class="content">pc_frontend</span><span class="delimiter">'</span></span>, <span class="local-variable">$activity</span>->getUri(), <span class="predefined-constant">true</span>);
}
</span></code></pre>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="keyword">if</span> (<span class="local-variable">$image</span>->getFileId())
{
<span class="comment">// (snip)</span>
}
<span class="keyword">else</span>
{
<span class="local-variable">$mediaItem</span>[<span class="string"><span class="delimiter">'</span><span class="content">url</span><span class="delimiter">'</span></span>] = app_url_for(<span class="string"><span class="delimiter">'</span><span class="content">pc_frontend</span><span class="delimiter">'</span></span>, <span class="local-variable">$image</span>->getUri(), <span class="predefined-constant">true</span>);
<span class="local-variable">$mediaItem</span>[<span class="string"><span class="delimiter">'</span><span class="content">type</span><span class="delimiter">'</span></span>] = <span class="local-variable">$image</span>->getMimeType();
}
</span></code></pre>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>下記のいずれかの方法でこの問題を解決することが可能である。</p>
<ul>
<li>absolute URIの場合には app_url_for を使わないようにopOpenSocialPlugin側で修正する</li>
<li>app_url_for にabsolute URIが渡された場合は何もせずにreturnするようにCore側で修正する</li>
</ul>
opOpenSocialPlugin - Backport(バックポート) #2217 (Fixed(完了)): [pc] Fix two js errors in application/li...
http://redmine.openpne.jp/issues/2217
2011-06-11T08:48:55Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview"></a>
<h3 >Overview<a href="#Overview" class="wiki-anchor">¶</a></h3>
<p>Fix two js errors in application/list screen when the user doesn't have any application.</p>
<p>(所有アプリが 0 件の時に アプリ一覧画面で JavaScript エラー)</p>
<pre>IframeModalBox is not defined
http://op3.happyturn/application/list
Line 120
element is null
http://op3.happyturn/sfProtoculousPlugin/js/dragdrop.js
Line 614</pre>
opOpenSocialPlugin - Backport(バックポート) #2216 (Fixed(完了)): [pc] Fix two js errors in application/li...
http://redmine.openpne.jp/issues/2216
2011-06-11T08:48:37Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview"></a>
<h3 >Overview<a href="#Overview" class="wiki-anchor">¶</a></h3>
<p>Fix two js errors in application/list screen when the user doesn't have any application.</p>
<p>(所有アプリが 0 件の時に アプリ一覧画面で JavaScript エラー)</p>
<pre>IframeModalBox is not defined
http://op3.happyturn/application/list
Line 120
element is null
http://op3.happyturn/sfProtoculousPlugin/js/dragdrop.js
Line 614</pre>
opOpenSocialPlugin - Backport(バックポート) #2215 (Fixed(完了)): [pc] Fix two js errors in application/li...
http://redmine.openpne.jp/issues/2215
2011-06-11T08:47:57Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview"></a>
<h3 >Overview<a href="#Overview" class="wiki-anchor">¶</a></h3>
<p>Fix two js errors in application/list screen when the user doesn't have any application.</p>
<p>(所有アプリが 0 件の時に アプリ一覧画面で JavaScript エラー)</p>
<pre>IframeModalBox is not defined
http://op3.happyturn/application/list
Line 120
element is null
http://op3.happyturn/sfProtoculousPlugin/js/dragdrop.js
Line 614</pre>
opOpenSocialPlugin - Backport(バックポート) #2214 (Fixed(完了)): [pc] Fix a js error in application/invit...
http://redmine.openpne.jp/issues/2214
2011-06-11T08:46:10Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview"></a>
<h3 >Overview<a href="#Overview" class="wiki-anchor">¶</a></h3>
<p>Fix a js error in application/invite when the user doesn't have any friend.<br />(フレンドが0人の時に招待画面で JavaScript エラー)</p>
<p>Error is likely following.</p>
<pre>$("invite_button") is null
http://op3.happyturn/application/invite/6
Line 89</pre>
<a name="Environment"></a>
<h3 >Environment<a href="#Environment" class="wiki-anchor">¶</a></h3>
<p>opOpenSocialPlugin 1.0 〜</p>
opOpenSocialPlugin - Backport(バックポート) #2213 (Fixed(完了)): [pc] Fix a js error in application/invit...
http://redmine.openpne.jp/issues/2213
2011-06-11T08:45:33Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview"></a>
<h3 >Overview<a href="#Overview" class="wiki-anchor">¶</a></h3>
<p>Fix a js error in application/invite when the user doesn't have any friend.<br />(フレンドが0人の時に招待画面で JavaScript エラー)</p>
<p>Error is likely following.</p>
<pre>$("invite_button") is null
http://op3.happyturn/application/invite/6
Line 89</pre>
<a name="Environment"></a>
<h3 >Environment<a href="#Environment" class="wiki-anchor">¶</a></h3>
<p>opOpenSocialPlugin 1.0 〜</p>
opOpenSocialPlugin - Backport(バックポート) #2211 (Fixed(完了)): [etc] NOTICE ファイルの更新
http://redmine.openpne.jp/issues/2211
2011-06-11T08:05:01Z
Youichi Kimura
kim.upsilon@bucyou.net
<p>NOTICEファイルについて</p>
<ul>
<li>Control.Tabsのライセンス情報の記載</li>
<li>Copyrightの年の更新</li>
</ul>
<p>の修正を行う。</p>