OpenPNE Issue Tracking System: チケット
http://redmine.openpne.jp/
http://redmine.openpne.jp/favicon.ico
2015-01-06T04:42:37Z
OpenPNE Issue Tracking System
Redmine
opCommunityTopicPlugin - Backport(バックポート) #3754 (Won't fix(対応せず)): テスト用のFixtureが壊れている
http://redmine.openpne.jp/issues/3754
2015-01-06T04:42:37Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>opCommunityTopicPlugin 内の任意のテストコードを実行すると下記のようなエラーが出力され異常終了する。</p>
<pre>
$ php test/unit/model/CommunityTopicTest.php
PHP Fatal error: Uncaught exception 'Doctrine_Connection_Mysql_Exception' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1055' for key 'PRIMARY'' in /home/upsilon/git/openpne3/master/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php:1082
Stack trace:
#0 /home/upsilon/git/openpne3/master/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Statement.php(269): Doctrine_Connection->rethrowException(Object(PDOException), Object(Doctrine_Connection_Statement))
#1 /home/upsilon/git/openpne3/master/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php(1042): Doctrine_Connection_Statement->execute(Array)
#2 /home/upsilon/git/openpne3/master/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php(687): Doctrine_Connection->exec('INSERT INTO mem...', Array)
#3 /home/upsilon/git/openpne3/master/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendo in /home/upsilon/git/openpne3/master/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php on line 1082
</pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p><a href="https://github.com/tejimaya/opCommunityTopicPlugin/commit/b26343a6caa26d2915eade9455ebf9cfa53f8b65" class="external">b26343a6</a> と <a href="https://github.com/tejimaya/opCommunityTopicPlugin/commit/1c1ac0282d5360348388277dc9b15671e544f7e9" class="external">1c1ac028</a> の各コミットで追加されたテスト用の Fixture に同じ ID のメンバーやコミュニティが含まれており、両方の Fixture が読み込まれる際に ID が衝突してエラーとなる。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p><a href="https://github.com/tejimaya/opCommunityTopicPlugin/commit/1c1ac0282d5360348388277dc9b15671e544f7e9" class="external">1c1ac028</a> で追加された 999_xss_test_data.yml には <a href="https://github.com/tejimaya/opCommunityTopicPlugin/commit/b26343a6caa26d2915eade9455ebf9cfa53f8b65" class="external">b26343a6</a> で 999_test_data.yml に追加されたものとほぼ同じレコードを含んでいるため、999_xss_test_data.yml を残した上で重複するレコードを削除する。</p>
OpenPNE 3 - Bug(バグ) #3753 (Won't fix(対応せず)): コミュニティ画像が設定されたコミュニティを削除しても画像がDBから削除されない
http://redmine.openpne.jp/issues/3753
2015-01-05T06:32:43Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="現象"></a>
<h3 >現象<a href="#現象" class="wiki-anchor">¶</a></h3>
<p>コミュニティ画像が設定されているコミュニティを削除しても、画像は削除されずに DB に残ってしまう。</p>
<a name="再現手順"></a>
<h3 >再現手順<a href="#再現手順" class="wiki-anchor">¶</a></h3>
<ol>
<li>コミュニティ作成 (/community/edit) ページから新規にコミュニティを作成する。この時にコミュニティ画像も指定する</li>
<li>コミュニティ編集 (/community/edit?id=xx) ページの「コミュニティを削除する」からコミュニティを削除する
<ul>
<li>「コミュニティ画像」の削除ではない</li>
</ul>
</li>
<li>管理画面のアップロード画像リスト (/pc_backend.php/monitoring) に、コミュニティに設定していた画像が表示されたままとなっている</li>
</ol>
<a name="原因"></a>
<h3 >原因<a href="#原因" class="wiki-anchor">¶</a></h3>
<p>親チケット <a class="issue tracker-1 status-13 priority-4 priority-default closed parent" title="Bug(バグ): fileを参照するテーブル(activity_imageなど)のレコード削除時に対応するfileレコードが削除されない (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3738">#3738</a> を参照。</p>
OpenPNE 3 - Bug(バグ) #3738 (Won't fix(対応せず)): fileを参照するテーブル(activity_imageなど)のレコード削除時に対応するfileレコード...
http://redmine.openpne.jp/issues/3738
2014-12-08T16:32:29Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>メンバーのプロフィール画像やコミュニティ画像などの file テーブルを介して格納される画像について、ブラウザ上で画像を変更・削除しても対応する file, file_bin レコードがデータベース上に残ったまま削除されない。</p>
<p>削除されずに残った画像は管理画面のアップロード画像リスト (<code>/pc_backend.php/monitoring</code>) からも確認できる。</p>
<p>対象となるテーブル:</p>
<ul>
<li>OpenPNE コア
<ul>
<li>activity_image (<a class="issue tracker-1 status-13 priority-4 priority-default closed child" title="Bug(バグ): アクティビティを削除しても添付された画像がDBから削除されない (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3752">#3752</a>)</li>
<li>banner_image (<a class="issue tracker-1 status-13 priority-4 priority-default closed child" title="Bug(バグ): バナー設定でアップロードした画像を削除してもDBから削除されない (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3755">#3755</a>)</li>
<li>community (<a class="issue tracker-1 status-13 priority-4 priority-default closed child" title="Bug(バグ): コミュニティ画像が設定されたコミュニティを削除しても画像がDBから削除されない (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3753">#3753</a>)</li>
<li>member_image (<a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): The record of the File is not deleted when related MemberImage is deleted (MemberImage が削除されたときに ... (Fixed(完了))" href="http://redmine.openpne.jp/issues/453">#453</a> <b>修正済み</b>)</li>
<li>oauth_consumer (<a class="issue tracker-1 status-13 priority-4 priority-default closed child" title="Bug(バグ): 画像付きのOAuthアプリケーションを削除してもDBから画像が削除されない (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3756">#3756</a>)</li>
</ul>
</li>
<li>opAlbumPlugin (<a class="issue tracker-1 status-9 priority-4 priority-default" title="Bug(バグ): アルバム・アルバム画像を削除しても画像ファイルが削除されていない (Pending Review(レビュー待ち))" href="http://redmine.openpne.jp/issues/2447">#2447</a>)
<ul>
<li>album</li>
<li>album_image</li>
</ul>
</li>
<li>opCommunityTopicPlugin (<a class="issue tracker-4 status-13 priority-4 priority-default closed child" title="Backport(バックポート): 画像が添付されたコミュニティトピックを削除しても、管理画面のアップロード画像リストに画像が残る (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/2591">#2591</a>)
<ul>
<li>community_event_image</li>
<li>community_event_comment_image</li>
<li>community_topic_image</li>
<li>community_topic_comment_image</li>
</ul>
</li>
<li>opDiaryPlugin (<a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): 日記・日記コメントを削除しても添付画像が削除されない (Fixed(完了))" href="http://redmine.openpne.jp/issues/106">#106</a> <b>修正済み</b>)
<ul>
<li>diary_image</li>
<li>diary_comment_image</li>
</ul>
</li>
<li>opMessagePlugin (<a class="issue tracker-1 status-5 priority-3 priority-lowest closed parent" title="Bug(バグ): メッセージを削除しても画像データが削除されていない (Fixed(完了))" href="http://redmine.openpne.jp/issues/190">#190</a>)
<ul>
<li>message_file</li>
</ul></li>
</ul>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<pre><code class="yaml syntaxhl"><span class="CodeRay"><span class="key">HogeImage</span>:
<span class="key">columns</span>:
<span class="key">id</span>: <span class="string"><span class="content">{ type: integer(4), primary: true, autoincrement: true }</span></span>
<span class="key">hoge_id</span>: <span class="string"><span class="content">{ type: integer(4), notnull: true }</span></span>
<span class="key">file_id</span>: <span class="string"><span class="content">{ type: integer(4), notnull: true }</span></span>
<span class="key">relations</span>:
<span class="key">Hoge</span>: <span class="string"><span class="content">{ onDelete: cascade }</span></span>
<span class="key">File</span>: <span class="string"><span class="content">{ onDelete: cascade }</span></span>
</span></code></pre>
<p>例えば上記の様な DB スキーマの定義があったとき、外部キー制約があるため file のレコードが削除されると対応する hoge_image のレコードが削除されるが、逆に hoge_image のレコードが削除されても file のレコードは削除されない。そのため hoge_image のレコードを削除する際に対応する file のレコードを明示的に削除する必要がある。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<a name="HogeImage-を削除する際に関連する-File-が削除されるようにする"></a>
<h4 >HogeImage を削除する際に関連する File が削除されるようにする<a href="#HogeImage-を削除する際に関連する-File-が削除されるようにする" class="wiki-anchor">¶</a></h4>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="keyword">class</span> <span class="class">HogeImage</span> <span class="keyword">extends</span> <span class="constant">BaseHogeImage</span>
{
<span class="keyword">public</span> <span class="keyword">function</span> <span class="function">preDelete</span>(<span class="local-variable">$event</span>)
{
<span class="local-variable">$this</span>-><span class="predefined">File</span>-><span class="predefined">delete</span>();
}
}
</span></code></pre>
<p>File を参照するモデルのクラスに <code>preDelete()</code> メソッドを定義し、その中で <code>$this->File->delete();</code> を実行することで関連する file テーブルのレコードも削除されるようになる。</p>
<a name="Hoge-を削除する際に関連する-HogeImage-を明示的に削除する"></a>
<h4 >Hoge を削除する際に関連する HogeImage を明示的に削除する<a href="#Hoge-を削除する際に関連する-HogeImage-を明示的に削除する" class="wiki-anchor">¶</a></h4>
<p>hoge のレコードを削除した場合は、外部キー制約の <code>ON DELETE CASCADE</code> によりそれを参照する hoge_image のレコードも削除される。しかしこれは DBMS 側で行われるもので Doctrine は関知しないため、削除時に <code>HogeImage::preDelete()</code> は実行されない。<br />これでは Hoge の delete() メソッドを呼び出した場合には前述の修正に関わらず File から画像が削除されず残ってしまうため、<code>Hoge::preDelete()</code> から <code>$this->HogeImage->delete();</code> を明示的に呼び出す必要がある。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="keyword">class</span> <span class="class">Hoge</span> <span class="keyword">extends</span> <span class="constant">BaseHoge</span>
{
<span class="keyword">public</span> <span class="keyword">function</span> <span class="function">preDelete</span>(<span class="local-variable">$event</span>)
{
<span class="comment">// HogeImage::preDelete() を実行させるために明示的に削除する</span>
<span class="local-variable">$this</span>-><span class="constant">HogeImage</span>-><span class="predefined">delete</span>();
}
}
</span></code></pre>
OpenPNE 3 - Bug(バグ) #3507 (Won't fix(対応せず)): opDynamicAclRoute クラスが allow_empty オプションの利用を想定していない
http://redmine.openpne.jp/issues/3507
2013-11-29T08:24:15Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>opDynamicAclRoute クラスを使用したルートの <a href="http://symfony.com/legacy/doc/reference/1_4/ja/10-Routing#chapter_10_sub_allow_empty" class="external">allow_empty</a> オプションを true にセットした状態で存在しないオブジェクトに対する URL がリクエストされると、 <code>$route->getObject()</code> で null が返されることなく Fatal Error が発生し異常終了する。</p>
<pre>
[Fri Nov 29 16:56:45.251504 2013] [fcgid:warn] [pid 32517:tid 139863663769344] [client 115.65.29.61:64752] mod_fcgid: stderr: PHP Fatal error: Call to a member function isAllowed() on a non-object in /home/upsilon/git/openpne3/master/lib/routing/opDynamicAclRoute.class.php on line 44, referer: https://sns.example.com/communityTopic/1
</pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>opDynamicAclRoute::getObject() メソッド内で、parent::getObject() が null を返すことが想定していないことが原因。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"> <span class="keyword">public</span> <span class="keyword">function</span> <span class="function">getObject</span>()
{
<span class="local-variable">$result</span> = <span class="predefined-constant">parent</span>::getObject();
<span class="keyword">if</span> (!<span class="local-variable">$role</span> = <span class="local-variable">$this</span>->getCurrentMemberId())
{
<span class="local-variable">$role</span> = <span class="string"><span class="delimiter">'</span><span class="content">alien</span><span class="delimiter">'</span></span>;
}
<span class="keyword">if</span> (<span class="local-variable">$result</span> <span class="keyword">instanceof</span> opAccessControlRecordInterface)
{
<span class="keyword">if</span> (!<span class="local-variable">$result</span>->isAllowed(<span class="local-variable">$this</span>->getCurrentMember(), <span class="local-variable">$this</span>->options[<span class="string"><span class="delimiter">'</span><span class="content">privilege</span><span class="delimiter">'</span></span>]))
{
<span class="local-variable">$this</span>->handleRestriction();
}
}
<span class="keyword">elseif</span> (!<span class="local-variable">$this</span>->acl->isAllowed(<span class="local-variable">$this</span>->getCurrentMemberId(), <span class="predefined-constant">null</span>, <span class="local-variable">$this</span>->options[<span class="string"><span class="delimiter">'</span><span class="content">privilege</span><span class="delimiter">'</span></span>]))
{
<span class="local-variable">$this</span>->handleRestriction();
}
<span class="keyword">return</span> <span class="local-variable">$result</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>parent::getObject() が null を返した場合には何もせずそのまま null を返すように修正する。</p>
OpenPNE 3 - Bug(バグ) #3475 (Won't fix(対応せず)): 部分 SSL 使用時に SSL 必須のページでカスタム CSS が読み込まれない
http://redmine.openpne.jp/issues/3475
2013-11-01T06:44:51Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>config/OpenPNE.yml にて部分 SSL を有効 (<code>use_ssl: true</code>) にしている環境で、ログイン画面 (member/login) などの SSL 必須のページを Web ブラウザからアクセスする際にカスタム CSS が読み込まれない場合がある。</p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>カスタム CSS は /cache/css/customizing.css (実体は default/customizingCss アクション) が読み込まれることによって反映される仕組みとなっているが、default/customizingCss アクションは部分 SSL の対象となっていないため常に <code>http://</code> スキームにリダイレクトされてしまう。<br />Google Chrome などの Web ブラウザでは、SSL で保護されている Web ページ内に保護されていない CSS などのコンテンツが含まれている場合は「混在したコンテンツ」としてブロックされるため、結果としてカスタム CSS が読み込まれない状態となる。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>config/OpenPNE.yml.sample の ssl_selectable_actions に default/customizingCss アクションを追加する</p>
OpenPNE 3 - Bug(バグ) #3453 (Won't fix(対応せず)): 管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定しても新規登録時には...
http://redmine.openpne.jp/issues/3453
2013-10-17T07:41:26Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定している状態であっても、新規登録時のプロフィール入力画面では年齢の公開範囲に「Web全体に公開」の選択肢が表示され選択できてしまう。</p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>管理画面の「Web 全体への年齢公開許可設定」で設定された値は、<code>MemberConfigPublicFlagForm::__construct()</code> で使用されている。<br />ここでは「Web 全体への年齢公開許可設定」が「メンバーの設定を許可しない」にセットされていた場合、「年齢の公開範囲」の選択肢から「Web 全体に公開」を除去している。</p>
<p><a class="source" href="http://redmine.openpne.jp/projects/op3/repository/revisions/20d13f4/entry/lib/form/MemberConfigForm/MemberConfigPublicFlagForm.class.php#L31">source:lib/form/MemberConfigForm/MemberConfigPublicFlagForm.class.php@20d13f4#L31</a>:<br /><pre><code class="php syntaxhl"><span class="CodeRay"> <span class="keyword">if</span> (!opConfig::get(<span class="string"><span class="delimiter">'</span><span class="content">is_allow_web_public_flag_age</span><span class="delimiter">'</span></span>))
{
<span class="local-variable">$widget</span> = <span class="local-variable">$this</span>->widgetSchema[<span class="string"><span class="delimiter">'</span><span class="content">age_public_flag</span><span class="delimiter">'</span></span>];
<span class="local-variable">$choices</span> = <span class="local-variable">$widget</span>->getOption(<span class="string"><span class="delimiter">'</span><span class="content">choices</span><span class="delimiter">'</span></span>);
<span class="predefined">unset</span>(<span class="local-variable">$choices</span>[<span class="integer">4</span>]);
<span class="local-variable">$widget</span>->setOption(<span class="string"><span class="delimiter">'</span><span class="content">choices</span><span class="delimiter">'</span></span>, <span class="local-variable">$choices</span>);
<span class="local-variable">$this</span>->validatorSchema[<span class="string"><span class="delimiter">'</span><span class="content">age_public_flag</span><span class="delimiter">'</span></span>]->setOption(<span class="string"><span class="delimiter">'</span><span class="content">choices</span><span class="delimiter">'</span></span>, <span class="predefined">array_keys</span>(<span class="local-variable">$choices</span>));
}
</span></code></pre></p>
<p>しかし、 <strong>新規登録時</strong> のフォームでは MemberConfigPublicFlagForm などの MemberConfigForm 派生クラスは使用されず MemberConfigForm のインスタンスが直接使用されるため、<code>MemberConfigPublicFlagForm::__construct()</code> が呼ばれることはない。<br />そのため、「Web 全体への年齢公開許可設定」の設定値を考慮することなく <code>MemberConfigForm::generateConfigWidgets()</code> によってウィジェットが追加される。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>「Web 全体に公開」の選択肢の除去を <code>MemberConfigForm::setMemberConfigSettings()</code> メソッドに移動する。<br />このメソッドは、新規登録画面 (MemberConfigForm インスタンスが使われる) および設定変更画面 (MemberConfigForm 派生クラスのインスタンスが使われる) で共通して使用されるため、これらの画面による選択肢の差異が生じなくなる。</p>
OpenPNE 3 - Bug(バグ) #3427 (Won't fix(対応せず)): snsActionsTest.php でsfTestFunctionalクラスに存在しないisStatu...
http://redmine.openpne.jp/issues/3427
2013-10-07T07:59:45Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>snsActionsTest.php には、下記のように $browser (sfTestFunctional のインスタンス) の isStatusCode メソッドを呼び出そうとしている箇所があるが、isStatusCode メソッドは opTestFunctional クラスで追加されたもので sfTestFunctional には存在しない。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="local-variable">$browser</span>
->info(<span class="string"><span class="delimiter">'</span><span class="content">0. Login</span><span class="delimiter">'</span></span>)
->get(<span class="string"><span class="delimiter">'</span><span class="content">/default/login</span><span class="delimiter">'</span></span>)
->click(<span class="string"><span class="delimiter">'</span><span class="content">ログイン</span><span class="delimiter">'</span></span>, <span class="predefined">array</span>(<span class="string"><span class="delimiter">'</span><span class="content">admin_user</span><span class="delimiter">'</span></span> => <span class="predefined">array</span>(
<span class="string"><span class="delimiter">'</span><span class="content">username</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">admin</span><span class="delimiter">'</span></span>,
<span class="string"><span class="delimiter">'</span><span class="content">password</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">password</span><span class="delimiter">'</span></span>,
)))
->isStatusCode(<span class="integer">302</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>sfTestFunctional クラスの代わりに opTestFunctional を使用するよう修正する</p>
OpenPNE 3 - Bug(バグ) #3425 (Won't fix(対応せず)): pc_backendの機能テスト designActionsTest.php の実行に失敗する
http://redmine.openpne.jp/issues/3425
2013-10-07T07:12:38Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p><a class="source" href="http://redmine.openpne.jp/projects/op3/repository/entry/test/functional/pc_backend/designActionsTest.php">source:test/functional/pc_backend/designActionsTest.php</a> を実行すると下記のエラーが発生し異常終了する。</p>
<pre>
PHP Fatal error: Class 'ProjectConfiguration' not found in /home/upsilon/git/openpne3/master/test/bootstrap/database.php on line 10
Fatal error: Class 'ProjectConfiguration' not found in /home/upsilon/git/openpne3/master/test/bootstrap/database.php on line 10
</pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>designActionsTest.php 内の記述は次のようになっている。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="inline-delimiter"><?php</span>
<span class="predefined">include</span>(<span class="predefined">dirname</span>(<span class="predefined-constant">__FILE__</span>).<span class="string"><span class="delimiter">'</span><span class="content">/../../bootstrap/database.php</span><span class="delimiter">'</span></span>);
<span class="predefined">include</span>(<span class="predefined">dirname</span>(<span class="predefined-constant">__FILE__</span>).<span class="string"><span class="delimiter">'</span><span class="content">/../../bootstrap/functional.php</span><span class="delimiter">'</span></span>);
<span class="local-variable">$browser</span> = <span class="keyword">new</span> opTestFunctional(<span class="keyword">new</span> opBrowser(), <span class="keyword">new</span> lime_test(<span class="predefined-constant">null</span>, <span class="keyword">new</span> lime_output_color()));
</span></code></pre>
<p>functional.php よりも先に database.php をロードしたために sfAutoload が初期化される前に ProjectConfiguration クラスを呼び出そうとしてエラーとなっている。また、functional.php 内で database.php がロードされるためそもそも database.php のロードは不要である。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>designActionsTest.php から database.php を include する処理を削除する</p>
OpenPNE 3 - Bug(バグ) #3424 (Won't fix(対応せず)): opI18N::generateApplicationMessages() から呼ばれる sfMessa...
http://redmine.openpne.jp/issues/3424
2013-10-07T06:57:25Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>opI18N::generateApplicationMessages() 内の下記コードで sfMessageSource::factory() の第 2 引数に array が渡されているが、sfMessageSource_File::__construct() にて引数をファイル名として string 型にキャストするため E_NOTICE レベルのエラーが発生する。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"> <span class="local-variable">$messageSource</span> = sfMessageSource::factory(<span class="string"><span class="delimiter">'</span><span class="content">OpenPNE</span><span class="delimiter">'</span></span>, <span class="predefined">array</span>());
<span class="local-variable">$data</span> = <span class="local-variable">$messageSource</span>->loadData(<span class="local-variable">$file</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>sfMessageSource::factory() の第 2 引数は省略可能であるため array() の記述を削除する</p>
OpenPNE 3 - Bug(バグ) #3423 (Won't fix(対応せず)): OpenPNE 本体のテストコードに opCommunityTopicPlugin 依存のテストが含まれている
http://redmine.openpne.jp/issues/3423
2013-10-07T02:25:08Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>test/functional/pc_frontend/communityActionsTest.php の下記テストコードは opCommunityTopicPlugin が存在しない状態では動作せず、LogicException が発生する。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"> ->info(<span class="string"><span class="delimiter">'</span><span class="content">/config/communityTopicNotificationMail/1 - CSRF</span><span class="delimiter">'</span></span>)
->post(<span class="string"><span class="delimiter">'</span><span class="content">/config/communityTopicNotificationMail/1</span><span class="delimiter">'</span></span>, <span class="predefined">array</span>(<span class="string"><span class="delimiter">'</span><span class="content">topic_notify</span><span class="delimiter">'</span></span> => <span class="predefined">array</span>()))
->followRedirect()
->checkCSRF()
</span></code></pre>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>該当部分を communityActionsTest.php から削除する</p>
OpenPNE 3 - Bug(バグ) #3416 (Won't fix(対応せず)): 自動ログインCookieを有効にしてログインしているブラウザで新規登録を実行すると member/reg...
http://redmine.openpne.jp/issues/3416
2013-10-04T02:56:18Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<ol>
<li>自動ログインを有効にして <a class="email" href="mailto:sns@example.com">sns@example.com</a> にログインする</li>
<li>友人を招待する (/invite) 画面から招待メールを送信する</li>
<li>届いたメールに書かれている招待 URL (/member/register) を開く</li>
<li>「プロフィール入力ページへ」(/member/registerInput) ボタンをクリックする</li>
<li>404 エラーが表示される</li>
</ol>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p><a class="issue tracker-1 status-5 priority-5 priority-high3 closed" title="Bug(バグ): 既にSNSにログインしているブラウザで新規登録を実行しようとすると、member/regist が404エラーになる (Fixed(完了))" href="http://redmine.openpne.jp/issues/1100">#1100</a> では新規登録時にログイン中のセッションがあった場合に削除する処理が追加されているが、自動ログインが有効な場合が考慮されていない。そのため member/register までは正常に表示されるが、次の画面に遷移したところで自動ログイン Cookie によりログイン状態となってしまう。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>member/register アクション内に自動ログイン Cookie を失効させる処理を追加する</p>
OpenPNE 3 - Enhancement(機能追加・改善) #3414 (Won't fix(対応せず)): YouTube小窓での動画の埋め込みに iframe 要素を使用する
http://redmine.openpne.jp/issues/3414
2013-10-01T07:58:30Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="概要"></a>
<h3 >概要<a href="#概要" class="wiki-anchor">¶</a></h3>
<p>現在 YouTube 小窓では object 要素を使用して動画を埋め込んでいるが、最新の YouTube の埋め込みコードでは iframe 要素を使用したものに置き換わっている (<a class="external" href="http://apiblog.youtube.com/2010/07/new-way-to-embed-youtube-videos.html">http://apiblog.youtube.com/2010/07/new-way-to-embed-youtube-videos.html</a>)。<br />これを使用すると Flash が使用できない環境でも動作する利点があるため、小窓機能の埋め込みコードもこれに合わせて修正する。</p>
OpenPNE 3 - Bug(バグ) #3406 (Won't fix(対応せず)): opMobileUserAgent::__construct() で E_STRICT エラーが発生する
http://redmine.openpne.jp/issues/3406
2013-09-24T06:37:42Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>opMobileUserAgent::__construct() には Net_UserAgent_Mobile::factory() を呼び出している箇所があるが、Net_UserAgent_Mobile は PHP4 の形式で書かれたクラスのため、静的メソッドとして呼び出される factory() メソッドに static キーワードが付与されていない。そのため、factory() を呼び出した時点で E_STRICT エラーが発生してしまう。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"> <span class="keyword">protected</span> <span class="keyword">function</span> <span class="function">__construct</span>()
{
<span class="predefined">require_once</span> <span class="string"><span class="delimiter">'</span><span class="content">Net/UserAgent/Mobile.php</span><span class="delimiter">'</span></span>;
<span class="predefined">require_once</span> <span class="string"><span class="delimiter">'</span><span class="content">Net/UserAgent/Mobile/NonMobile.php</span><span class="delimiter">'</span></span>;
<span class="predefined-constant">self</span>::<span class="local-variable">$mobile</span> = <span class="constant">Net_UserAgent_Mobile</span>::factory();
<span class="keyword">if</span> (<span class="predefined-constant">self</span>::<span class="local-variable">$mobile</span> <span class="keyword">instanceof</span> <span class="constant">Net_UserAgent_Mobile_Error</span>)
{
<span class="predefined-constant">self</span>::<span class="local-variable">$mobile</span> = <span class="keyword">new</span> <span class="constant">Net_UserAgent_Mobile_NonMobile</span>(<span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></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>Net_UserAgent_Mobile::factory() を使用しているのは opMobileUserAgent::_construct() 以外に無いため、factory() を呼び出す前後で一時的に E_STRICT エラーを error_reporting の値から外すことで回避する。</p>
OpenPNE 3 - Bug(バグ) #3405 (Won't fix(対応せず)): アクションの基底クラスとその派生クラスでメソッドのシグニチャが一致していない
http://redmine.openpne.jp/issues/3405
2013-09-20T07:20:45Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>opMemberAction::executeLogin() 等のメソッドで、下記のように継承先クラスのメソッドのシグニチャが異なるために E_STRICT エラーが発生している。</p>
<p><code>apps/pc_frontend/modules/member/actions/actions.class.php</code> の executeLogin():</p>
<pre><code class="php syntaxhl"><span class="CodeRay"> <span class="keyword">public</span> <span class="keyword">function</span> <span class="function">executeLogin</span>(opWebRequest <span class="local-variable">$request</span>)
</span></code></pre>
<p><code>apps/mobile_frontend/modules/member/actions/actions.class.php</code> の executeLogin():</p>
<pre><code class="php syntaxhl"><span class="CodeRay"> <span class="keyword">public</span> <span class="keyword">function</span> <span class="function">executeLogin</span>(<span class="local-variable">$request</span>)
</span></code></pre>
<p><code>lib/action/opMemberAction.class.php</code> の executeLogin():</p>
<pre><code class="php syntaxhl"><span class="CodeRay"> <span class="keyword">public</span> <span class="keyword">function</span> <span class="function">executeLogin</span>(<span class="local-variable">$request</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>opWebRequest を引数として受け取る各メソッドを <a href="http://php.net/manual/ja/language.oop5.typehinting.php" class="external">タイプヒンティング</a> を使用する形に統一する</p>
OpenPNE 3 - Bug(バグ) #3404 (Won't fix(対応せず)): テストデータのカテゴライズ機能がfunctionalテストで正しく動作していない
http://redmine.openpne.jp/issues/3404
2013-09-20T05:55:06Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="現象"></a>
<h3 >現象<a href="#現象" class="wiki-anchor">¶</a></h3>
<p><a class="changeset" title="added ability to categorize test data (refs #1527)" href="http://redmine.openpne.jp/projects/op3/repository/revisions/9f48bdd61a5c5667e6a573811876e949aff9015d">9f48bdd61a5c5667e6a573811876e949aff9015d</a> によって追加されたテストデータのカテゴライズ機能で、ユニットテストのコード内にて <code>$fixture</code> に 'common' や 'fix_wrong_categorized_community' などを指定することにより使用する fixture を選択できるようになったが、このコミットはfunctionalテスト向けの修正が抜けている。<br />そのため、functionalテスト実行時にはカテゴライズを無視して全てのテストデータがロードされるためデータの重複などによりエラーとなる。</p>
<a name="原因"></a>
<h3 >原因<a href="#原因" class="wiki-anchor">¶</a></h3>
<p>テストデータのカテゴライズは <a class="source" href="http://redmine.openpne.jp/projects/op3/repository/entry/test/bootstrap/database.php">source:test/bootstrap/database.php</a> にて <code>sfDoctrineBuildTask</code> の <code>and-load</code> に渡される fixture のパスを変えることで実現しているが、functional テストでは <a class="source" href="http://redmine.openpne.jp/projects/op3/repository/entry/test/bootstrap/functional.php">source:test/bootstrap/functional.php</a> を使用するため従来通り <code>test/fixtures/</code> 以下の全てのテストデータをロードしてしまう。</p>
<a name="修正内容"></a>
<h3 >修正内容<a href="#修正内容" class="wiki-anchor">¶</a></h3>
<p><a class="source" href="http://redmine.openpne.jp/projects/op3/repository/entry/test/bootstrap/functional.php">source:test/bootstrap/functional.php</a> 内のデータロード処理に <a class="source" href="http://redmine.openpne.jp/projects/op3/repository/entry/test/bootstrap/database.php">source:test/bootstrap/database.php</a> を使用するように修正する。</p>