OpenPNE Issue Tracking System: チケット
http://redmine.openpne.jp/
http://redmine.openpne.jp/favicon.ico
2017-03-27T10:09:05Z
OpenPNE Issue Tracking System
Redmine
OpenPNE 3 - Enhancement(機能追加・改善) #4177 (Fixed(完了)): 最低動作環境をPHP5.4以上に変更する
http://redmine.openpne.jp/issues/4177
2017-03-27T10:09:05Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-概要"></a>
<h3 >Overview (概要)<a href="#Overview-概要" class="wiki-anchor">¶</a></h3>
<p><a class="issue tracker-2 status-5 priority-4 priority-default closed child parent" title="Enhancement(機能追加・改善): PEARパッケージのアップデート (Fixed(完了))" href="http://redmine.openpne.jp/issues/4176">#4176</a> における PEAR のアップデートにより、OpenPNE の実行に必要な PHP のバージョン要件を 5.4 以上に引き上げる必要がある。</p>
<a name="Spec-仕様"></a>
<h3 >Spec (仕様)<a href="#Spec-仕様" class="wiki-anchor">¶</a></h3>
<ul>
<li><a class="source" href="http://redmine.openpne.jp/projects/op3/repository/entry/NOTICE">source:NOTICE</a> に記載されている PHP のバージョンを変更する</li>
<li>OpenPNE セットアップ手順 (<code>doc/{en,ja}/OpenPNE3_Setup_Guide.txt</code>) に記載されている PHP のバージョンを変更する</li>
<li>OpenPNE バージョンアップ手順 (<code>doc/{en,ja}/OpenPNE3_Version_Up_Guide.txt</code>) の「注意事項」に、PHP 5.4 以上でなければ動作しない旨を記載する</li>
</ul>
opCommunityTopicPlugin - Bug(バグ) #4054 (Fixed(完了)): 管理画面のトピックリストなどの画面でtr要素の閉じタグが不足している
http://redmine.openpne.jp/issues/4054
2016-11-17T08:11:18Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>管理画面のトピックリスト (/pc_backend.php/communityTopic/topicList) の検索フォームは下記のようにマークアップされている:</p>
<pre><code class="html syntaxhl"><span class="CodeRay"><span class="tag"><form</span> <span class="attribute-name">method</span>=<span class="string"><span class="delimiter">"</span><span class="content">get</span><span class="delimiter">"</span></span> <span class="attribute-name">action</span>=<span class="string"><span class="delimiter">"</span><span class="content">/master/pc_backend.php/communityTopic/topicList</span><span class="delimiter">"</span></span><span class="tag">></span><span class="tag"><table></span>
<span class="tag"><tr></span>
<span class="tag"><th></span><span class="tag"><label</span> <span class="attribute-name">for</span>=<span class="string"><span class="delimiter">"</span><span class="content">communityTopic_id</span><span class="delimiter">"</span></span><span class="tag">></span>トピックID<span class="tag"></label></span><span class="tag"></th></span>
<span class="tag"><td></span><span class="tag"><input</span> <span class="attribute-name">type</span>=<span class="string"><span class="delimiter">"</span><span class="content">text</span><span class="delimiter">"</span></span> <span class="attribute-name">id</span>=<span class="string"><span class="delimiter">"</span><span class="content">communityTopic_id</span><span class="delimiter">"</span></span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">"</span><span class="content">communityTopic[id][text]</span><span class="delimiter">"</span></span> <span class="attribute-name">value</span>=<span class="string"><span class="delimiter">"</span><span class="delimiter">"</span></span> <span class="tag">/></span><span class="tag"><br</span> <span class="tag">/></span> <span class="tag"></td></span>
<span class="tag"></tr></span>
<span class="tag"><tr></span>
<span class="tag"><th></span><span class="tag"><label</span> <span class="attribute-name">for</span>=<span class="string"><span class="delimiter">"</span><span class="content">communityTopic_name</span><span class="delimiter">"</span></span><span class="tag">></span>トピックタイトル<span class="tag"></label></span><span class="tag"></th></span>
<span class="tag"><td></span><span class="tag"><input</span> <span class="attribute-name">type</span>=<span class="string"><span class="delimiter">"</span><span class="content">text</span><span class="delimiter">"</span></span> <span class="attribute-name">id</span>=<span class="string"><span class="delimiter">"</span><span class="content">communityTopic_name</span><span class="delimiter">"</span></span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">"</span><span class="content">communityTopic[name][text]</span><span class="delimiter">"</span></span> <span class="attribute-name">value</span>=<span class="string"><span class="delimiter">"</span><span class="delimiter">"</span></span> <span class="tag">/></span><span class="tag"><br</span> <span class="tag">/></span> <span class="tag"></td></span>
<span class="tag"></tr></span>
<span class="tag"><tr></span>
<span class="tag"><th></span><span class="tag"><label</span> <span class="attribute-name">for</span>=<span class="string"><span class="delimiter">"</span><span class="content">communityTopic_body</span><span class="delimiter">"</span></span><span class="tag">></span>本文<span class="tag"></label></span><span class="tag"></th></span>
<span class="tag"><td></span><span class="tag"><input</span> <span class="attribute-name">type</span>=<span class="string"><span class="delimiter">"</span><span class="content">text</span><span class="delimiter">"</span></span> <span class="attribute-name">id</span>=<span class="string"><span class="delimiter">"</span><span class="content">communityTopic_body</span><span class="delimiter">"</span></span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">"</span><span class="content">communityTopic[body][text]</span><span class="delimiter">"</span></span> <span class="attribute-name">value</span>=<span class="string"><span class="delimiter">"</span><span class="delimiter">"</span></span> <span class="tag">/></span><span class="tag"><br</span> <span class="tag">/></span> <span class="tag"></td></span>
<span class="tag"></tr></span>
<span class="tag"><tr></span>
<span class="tag"><td</span> <span class="attribute-name">colspan</span>=<span class="string"><span class="delimiter">"</span><span class="content">2</span><span class="delimiter">"</span></span><span class="tag">></span><span class="tag"><input</span> <span class="attribute-name">type</span>=<span class="string"><span class="delimiter">"</span><span class="content">submit</span><span class="delimiter">"</span></span> <span class="attribute-name">value</span>=<span class="string"><span class="delimiter">"</span><span class="content">検索</span><span class="delimiter">"</span></span> <span class="tag">/></span><span class="tag"></td></span>
<span class="tag"></table></span>
<span class="tag"></form></span>
</span></code></pre>
<p>この中で、検索ボタンが含まれている最後の列について tr 要素の閉じタグが存在せず、XHTML の構文として正しくない状態になっている。</p>
<p>トピックコメントリストやイベントリストなどにも同様の不具合がある。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p><code></table></code> の手前の行に <code></tr></code> を追加する</p>
OpenPNE 3 - Bug(バグ) #4032 (Fixed(完了)): リッチテキストエリア設定でボタンの並び替えが機能しなくなっている
http://redmine.openpne.jp/issues/4032
2016-10-27T07:24:02Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>管理画面のリッチテキストエリア設定 (/pc_backend.php/advanced/richTextarea) で、「ボタンの設定」に表示されている各ボタンの順序をマウスドラッグで変更する機能が動作しなくなっている。</p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p><a class="issue tracker-2 status-13 priority-4 priority-default closed" title="Enhancement(機能追加・改善): 上級者設定へ移動 (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3010">#3010</a> にてリッチテキストエリア設定を「上級者向け設定」に移動した際に、<code>view.yml</code> の設定や <code>url_for</code> の URL の修正が漏れていたことが原因。</p>
<p><a class="source" href="http://redmine.openpne.jp/projects/op3/repository/revisions/6e121793/entry/apps/pc_backend/modules/sns/config/view.yml">source:apps/pc_backend/modules/sns/config/view.yml@6e121793</a>:</p>
<pre><code class="yaml syntaxhl"><span class="CodeRay"><span class="key">richTextareaSuccess</span>:
<span class="key">javascripts</span>:
- <span class="string"><span class="content">jquery.min.js</span></span>
- <span class="string"><span class="content">jquery-ui.min.js</span></span>
</span></code></pre>
<p><a class="source" href="http://redmine.openpne.jp/projects/op3/repository/revisions/6e121793/entry/apps/pc_backend/modules/advanced/templates/richTextareaSuccess.php#L45">source:apps/pc_backend/modules/advanced/templates/richTextareaSuccess.php@6e121793#L45</a>:</p>
<pre><code class="javascript syntaxhl"><span class="CodeRay"> <span class="predefined">$</span>.ajax({
<span class="key">url</span>: <span class="string"><span class="delimiter">"</span><span class="content">'.url_for('sns/changeRichTextareaButtonOrder').'</span><span class="delimiter">"</span></span>,
<span class="key">type</span>: <span class="string"><span class="delimiter">"</span><span class="content">POST</span><span class="delimiter">"</span></span>,
<span class="key">data</span>: postData
});
</span></code></pre>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p><code>view.yml</code> を <code>apps/pc_backend/modules/advanced/config/view.yml</code> に移動し、url_for を正しい URL に書き換える。</p>
OpenPNE 3 - Bug(バグ) #4031 (Fixed(完了)): 存在しない /js/.js を読み込もうとして404エラーが発生している
http://redmine.openpne.jp/issues/4031
2016-10-27T06:48:13Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="現象"></a>
<h3 >現象<a href="#現象" class="wiki-anchor">¶</a></h3>
<p>管理画面のガジェット設定 (/pc_backend.php/design/gadget) を開くと下記のような script 要素が記載されており、<code>/js/.js</code> にはファイルが存在しないため 404 エラーが発生する。</p>
<pre><code class="html syntaxhl"><span class="CodeRay"><span class="tag"><script</span> <span class="attribute-name">type</span>=<span class="string"><span class="delimiter">"</span><span class="content">text/javascript</span><span class="delimiter">"</span></span> <span class="attribute-name">src</span>=<span class="string"><span class="delimiter">"</span><span class="content">/js/.js</span><span class="delimiter">"</span></span><span class="tag">></span><span class="tag"></script></span>
</span></code></pre>
<a name="原因"></a>
<h3 >原因<a href="#原因" class="wiki-anchor">¶</a></h3>
<p>下記のコードで <code>op_jquery_url</code> は存在しない設定であるため null を返すことが原因。</p>
<p><a class="source" href="http://redmine.openpne.jp/projects/op3/repository/revisions/43190aa1/entry/lib/helper/opJavascriptHelper.php#L28">source:lib/helper/opJavascriptHelper.php@43190aa1#L28</a>:</p>
<pre><code class="php syntaxhl"><span class="CodeRay">sfContext::getInstance()->getResponse()->addJavascript(sfConfig::get(<span class="string"><span class="delimiter">'</span><span class="content">op_jquery_url</span><span class="delimiter">'</span></span>));
</span></code></pre>
<p><code>op_jquery_url</code> は <a class="issue tracker-2 status-5 priority-5 priority-high3 closed" title="Enhancement(機能追加・改善): prototype.js や script.aculo.us を使用している箇所を全て jQuery で置き換える (Fixed(完了))" href="http://redmine.openpne.jp/issues/2617">#2617</a> で prototype.js から jQuery に移行する際に使用していたものであり、この設定は <a class="changeset" title="include jquery.min.js and jquery-ui.min.js into project tree (fixes #2617)" href="http://redmine.openpne.jp/projects/op3/repository/revisions/207729a0c01b2abcc10902fd08bea021e17b27a9">207729a0</a> で削除されている。</p>
<a name="修正内容"></a>
<h3 >修正内容<a href="#修正内容" class="wiki-anchor">¶</a></h3>
<p><code>sfConfig::get('op_jquery_url')</code> を <code>'jquery.min.js'</code> に置き換える</p>
OpenPNE 3 - Enhancement(機能追加・改善) #3962 (Pending Testing(テスト待ち)): 壊れたテストコードを削除する
http://redmine.openpne.jp/issues/3962
2016-06-27T05:42:55Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="概要"></a>
<h3 >概要<a href="#概要" class="wiki-anchor">¶</a></h3>
<p>現在 OpenPNE3 のテストコードは十分にメンテナンスされておらず、壊れた状態のテストケースが多数存在する。<br />このような状態は CI などにおけるテストコードの自動実行を妨げるだけでなく、退行バグによって既存のテストケースでエラーが発生しても他の大量のエラーに埋もれて発見できないなど、テストコードを十分に活用することができない。<br />過去にこのような壊れたテストコードを全て修正する試みがあった (<a class="issue tracker-5 status-12 priority-4 priority-default closed parent" title="Task(タスク): OpenPNE の既存のテストコードが正常に動作するように修正を行う (Invalid(無効))" href="http://redmine.openpne.jp/issues/3403">#3403</a>) が、エラーとなるテストケースがあまりに多いため「成功か否かに関わらず全てのテストケースが実行される」(Fatal Error による異常終了がない) 状態まで修正するに留まっている。<br />当チケットでは、壊れたテストコードをすべて削除し <code>./symfony test:all</code> によって実行されるすべてのテストコードが正常に実行される状態にする。</p>
opCommunityTopicPlugin - Bug(バグ) #3926 (Fixed(完了)): スマートフォン版のコミュニティトピック/イベントの画面からコメントを投稿しても通知メールが...
http://redmine.openpne.jp/issues/3926
2016-04-06T04:43:12Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>opCommunityTopicPlugin にはコミュニティの書き込み(トピック/イベントの作成、コメントの投稿)をメールで通知する機能が備わっているが、バージョン 1.1.0 から追加されたスマートフォン版の画面からイベントやトピックにコメントを投稿してもコミュニティ参加者にメールが送信されない。</p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>コメントの投稿をメールで通知する機能は、イベントの場合は <a href="https://github.com/tejimaya/opCommunityTopicPlugin/blob/opCommunityTopicPlugin-1.1.2.1/lib/form/doctrine/PluginCommunityEventCommentForm.class.php#L82" class="external">PluginCommunityEventCommentForm::save()</a> 、トピックの場合は <a href="https://github.com/tejimaya/opCommunityTopicPlugin/blob/opCommunityTopicPlugin-1.1.2.1/lib/form/doctrine/PluginCommunityTopicCommentForm.class.php#L98" class="external">PluginCommunityTopicCommentForm::save()</a> でそれぞれ実現されている一方で、スマートフォン版では JSON API を使用しており内部でこれらのフォームが使われないため通知が行われなかった。</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 - Bug(バグ) #3510 (Fixed(完了)): opConfig::get() の $default に null 以外を指定すると sns_config.yml ...
http://redmine.openpne.jp/issues/3510
2013-12-04T08:56:58Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>sns_config.yml には下記のようにデフォルト値を設定する項目があり、例えば <code>opConfig::get('sns_name')</code> とした場合に sns_config テーブルに該当する値が存在しない場合は <code>'MySNS'</code> が返るようになっている。また、sns_config.yml でデフォルト値が定義されていない項目については opConfig::get() の第二引数 $default の値が返る。</p>
<pre><code class="yaml syntaxhl"><span class="CodeRay"><span class="key">general</span>:
<span class="key">sns_name</span>:
<span class="key">Name</span>: <span class="string"><span class="delimiter">"</span><span class="content">sns_name</span><span class="delimiter">"</span></span>
<span class="key">Caption</span>: <span class="string"><span class="delimiter">"</span><span class="content">SNS名</span><span class="delimiter">"</span></span>
<span class="key">FormType</span>: <span class="string"><span class="delimiter">"</span><span class="content">input</span><span class="delimiter">"</span></span>
<span class="key">ValueType</span>: <span class="string"><span class="delimiter">"</span><span class="content">text</span><span class="delimiter">"</span></span>
<span class="key">Default</span>: <span class="string"><span class="delimiter">"</span><span class="content">MySNS</span><span class="delimiter">"</span></span>
<span class="key">IsRequired</span>: <span class="string"><span class="content">true</span></span>
</span></code></pre>
<p>しかし opConfig::get() の第二引数 $default に null 以外の値を指定すると、sns_config テーブルに存在しない設定項目について sns_config.yml に記述されている Default の値は無視され $default の値が返ってしまう。</p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<pre><code class="php syntaxhl"><span class="CodeRay"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">function</span> <span class="function">get</span>(<span class="local-variable">$name</span>, <span class="local-variable">$default</span> = <span class="predefined-constant">null</span>)
{
<span class="local-variable">$setting</span> = <span class="predefined-constant">self</span>::getConfigurationSetting();
<span class="local-variable">$result</span> = <span class="predefined-constant">null</span>;
<span class="local-variable">$result</span> = <span class="constant">Doctrine</span>::getTable(<span class="string"><span class="delimiter">'</span><span class="content">SnsConfig</span><span class="delimiter">'</span></span>)->get(<span class="local-variable">$name</span>, <span class="local-variable">$default</span>);
<span class="keyword">if</span> (<span class="predefined">isset</span>(<span class="local-variable">$setting</span>[<span class="local-variable">$name</span>]))
{
<span class="keyword">if</span> (<span class="predefined">is_null</span>(<span class="local-variable">$result</span>))
{
<span class="local-variable">$result</span> = <span class="predefined-constant">self</span>::getDefaultValue(<span class="local-variable">$name</span>);
}
}
<span class="keyword">return</span> <span class="local-variable">$result</span>;
}
</span></code></pre>
<p>SnsConfigTable::get() の第二引数に $default を指定しているため、sns_config テーブル内に該当するレコードが存在しない場合に <code>is_null($result)</code> が false となり、$result が sns_config から取得された値なのか区別ができなくなってしまうことが原因。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>SnsConfigTable::get() の第二引数には null を指定し、最後の <code>return $result;</code> の箇所で $default を使用するか否かの判定を行う。</p>
OpenPNE 3 - Bug(バグ) #3485 (Fixed(完了)): PC向けUIの未ログイン時に jQuery 等のライブラリがロードされない
http://redmine.openpne.jp/issues/3485
2013-11-15T06:22:05Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p><code>jquery.min.js</code> などのライブラリが PC 向け UI の未ログイン時には読み込まれない。これにより jQuery 等に依存するプラグインが未ログイン時の画面で動作できない状態となっている。</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/27853bc5/entry/apps/pc_frontend/templates/_layout.php">source:apps/pc_frontend/templates/_layout.php@27853bc5</a> の下記コードの通り、未ログイン時には <code>use_javascript('jquery.min.js')</code> を通過しないためこれらのライブラリのロードが行われない。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="inline-delimiter"><?php</span> <span class="keyword">if</span> (opConfig::get(<span class="string"><span class="delimiter">'</span><span class="content">enable_jsonapi</span><span class="delimiter">'</span></span>) && opToolkit::isSecurePage()): <span class="inline-delimiter">?></span>
<span class="inline-delimiter"><?php</span>
use_helper(<span class="string"><span class="delimiter">'</span><span class="content">Javascript</span><span class="delimiter">'</span></span>);
use_javascript(<span class="string"><span class="delimiter">'</span><span class="content">jquery.min.js</span><span class="delimiter">'</span></span>);
use_javascript(<span class="string"><span class="delimiter">'</span><span class="content">jquery.tmpl.min.js</span><span class="delimiter">'</span></span>);
use_javascript(<span class="string"><span class="delimiter">'</span><span class="content">jquery.notify.js</span><span class="delimiter">'</span></span>);
use_javascript(<span class="string"><span class="delimiter">'</span><span class="content">op_notify.js</span><span class="delimiter">'</span></span>);
<span class="local-variable">$jsonData</span> = <span class="predefined">array</span>(
<span class="string"><span class="delimiter">'</span><span class="content">apiKey</span><span class="delimiter">'</span></span> => <span class="local-variable">$sf_user</span>->getMemberApiKey(),
<span class="string"><span class="delimiter">'</span><span class="content">apiBase</span><span class="delimiter">'</span></span> => app_url_for(<span class="string"><span class="delimiter">'</span><span class="content">api</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">homepage</span><span class="delimiter">'</span></span>),
<span class="string"><span class="delimiter">'</span><span class="content">baseUrl</span><span class="delimiter">'</span></span> => <span class="local-variable">$sf_request</span>->getRelativeUrlRoot().<span class="string"><span class="delimiter">'</span><span class="content">/</span><span class="delimiter">'</span></span>,
);
<span class="predefined">echo</span> javascript_tag(<span class="string"><span class="delimiter">'</span><span class="content">
var openpne = </span><span class="delimiter">'</span></span>.json_encode(<span class="local-variable">$jsonData</span>).<span class="string"><span class="delimiter">'</span><span class="content">;
</span><span class="delimiter">'</span></span>);
<span class="inline-delimiter">?></span>
<span class="inline-delimiter"><?php</span> <span class="keyword">endif</span> <span class="inline-delimiter">?></span>
</span></code></pre>
<p><code>opConfig::get('enable_jsonapi') && opToolkit::isSecurePage()</code> という条件は API キーの出力を行うか否かを判断するための条件であるが、 <a class="changeset" title="add notification center for PC (refs #2767)" href="http://redmine.openpne.jp/projects/op3/repository/revisions/9f50bdf66e3cdaaa4372669902995a1558d8cbe8">9f50bdf66e3cdaaa4372669902995a1558d8cbe8</a> にて誤って use_javascript をこの if ブロック内に追加してしまったことが原因で当チケットの問題が発生した。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>jQuery 等をロードする <code>use_javascript</code> を <code>opConfig::get('enable_jsonapi') && opToolkit::isSecurePage()</code> の if ブロックの外に移動する。</p>
OpenPNE 3 - Bug(バグ) #3476 (New(新規)): カスタム CSS を読み込む記述が 2 度書かれている
http://redmine.openpne.jp/issues/3476
2013-11-01T07:09:08Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>pc_frontend 内の各ページ (スマートフォン版を除く) にてカスタム CSS を読み込む link 要素が下記のように 2 つ書かれている。</p>
<pre><code class="html syntaxhl"><span class="CodeRay"><span class="tag"><head></span>
<span class="tag"><meta</span> <span class="attribute-name">http-equiv</span>=<span class="string"><span class="delimiter">"</span><span class="content">Content-Type</span><span class="delimiter">"</span></span> <span class="attribute-name">content</span>=<span class="string"><span class="delimiter">"</span><span class="content">text/html; charset=utf-8</span><span class="delimiter">"</span></span> <span class="tag">/></span>
<span class="tag"><meta</span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">"</span><span class="content">robots</span><span class="delimiter">"</span></span> <span class="attribute-name">content</span>=<span class="string"><span class="delimiter">"</span><span class="content">index, follow</span><span class="delimiter">"</span></span> <span class="tag">/></span>
<span class="tag"><title></span>MySNS<span class="tag"></title></span>
<span class="tag"><link</span> <span class="attribute-name">rel</span>=<span class="string"><span class="delimiter">"</span><span class="content">stylesheet</span><span class="delimiter">"</span></span> <span class="attribute-name">type</span>=<span class="string"><span class="delimiter">"</span><span class="content">text/css</span><span class="delimiter">"</span></span> <span class="attribute-name">media</span>=<span class="string"><span class="delimiter">"</span><span class="content">screen</span><span class="delimiter">"</span></span> <span class="attribute-name">href</span>=<span class="string"><span class="delimiter">"</span><span class="content">/opSkinBasicPlugin/css/main.css</span><span class="delimiter">"</span></span> <span class="tag">/></span>
<span class="tag"><link</span> <span class="attribute-name">rel</span>=<span class="string"><span class="delimiter">"</span><span class="content">stylesheet</span><span class="delimiter">"</span></span> <span class="attribute-name">type</span>=<span class="string"><span class="delimiter">"</span><span class="content">text/css</span><span class="delimiter">"</span></span> <span class="attribute-name">media</span>=<span class="string"><span class="delimiter">"</span><span class="content">screen</span><span class="delimiter">"</span></span> <span class="attribute-name">href</span>=<span class="string"><span class="delimiter">"</span><span class="content">/cache/css/customizing.css</span><span class="delimiter">"</span></span> <span class="tag">/></span>
<span class="tag"><link</span> <span class="attribute-name">rel</span>=<span class="string"><span class="delimiter">"</span><span class="content">stylesheet</span><span class="delimiter">"</span></span> <span class="attribute-name">type</span>=<span class="string"><span class="delimiter">"</span><span class="content">text/css</span><span class="delimiter">"</span></span> <span class="attribute-name">href</span>=<span class="string"><span class="delimiter">"</span><span class="content">/cache/css/customizing</span><span class="delimiter">"</span></span> <span class="tag">/></span>
<span class="tag"><script</span> <span class="attribute-name">type</span>=<span class="string"><span class="delimiter">"</span><span class="content">text/javascript</span><span class="delimiter">"</span></span> <span class="attribute-name">src</span>=<span class="string"><span class="delimiter">"</span><span class="content">/js/util.js</span><span class="delimiter">"</span></span><span class="tag">></span><span class="tag"></script></span>
<span class="tag"></head></span>
</span></code></pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p><a class="changeset" title="(fixes #3006) fixed not to show apiKey when user is not logged in and to show apiKey when OpenPNE..." href="http://redmine.openpne.jp/projects/op3/repository/revisions/98f097f624d6e0ccfedcdda47e641f29fbb4ce15">98f097f624d6e0ccfedcdda47e641f29fbb4ce15</a> によって追加された customizing_css の記述が原因となっている。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="inline-delimiter"><?php</span> <span class="keyword">if</span> (<span class="constant">Doctrine</span>::getTable(<span class="string"><span class="delimiter">'</span><span class="content">SnsConfig</span><span class="delimiter">'</span></span>)->get(<span class="string"><span class="delimiter">'</span><span class="content">customizing_css</span><span class="delimiter">'</span></span>)): <span class="inline-delimiter">?></span>
<span class="tag"><link</span> <span class="attribute-name">rel</span>=<span class="string"><span class="delimiter">"</span><span class="content">stylesheet</span><span class="delimiter">"</span></span> <span class="attribute-name">type</span>=<span class="string"><span class="delimiter">"</span><span class="content">text/css</span><span class="delimiter">"</span></span> <span class="attribute-name">href</span>=<span class="string"><span class="delimiter">"</span></span><span class="inline-delimiter"><?php</span> <span class="predefined">echo</span> url_for(<span class="string"><span class="delimiter">'</span><span class="content">@customizing_css</span><span class="delimiter">'</span></span>) <span class="inline-delimiter">?></span><span class="string"><span class="delimiter">"</span></span> <span class="tag">/></span>
<span class="inline-delimiter"><?php</span> <span class="keyword">endif</span>; <span class="inline-delimiter">?></span>
</span></code></pre>
<p>上記のコードは <a class="issue tracker-2 status-8 priority-4 priority-default" title="Enhancement(機能追加・改善): customizing.css がブラウザキャッシュを使うように対処する (Rejected(差し戻し))" href="http://redmine.openpne.jp/issues/1539">#1539</a> で一度削除されている (代わりに <code>use_stylesheet('/cache/css/customizing.css')</code> を追加している) もので、恐らく誤って古い _layout.php から記述をコピーしてしまったものと見られる。</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 - Bug(バグ) #3428 (Won't fix(対応せず)): opFormItemGenerator::generateValidator() に渡すフィールドの I...
http://redmine.openpne.jp/issues/3428
2013-10-07T08:29:17Z
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/lib/config/config/sns_config.yml">source:lib/config/config/sns_config.yml</a> などの opFormItemGenerator で自動生成するフィールドの定義では、しばしば IsRequired や IsTrim が省略されているが、opFormItemGenerator::generateValidator() の下記のコードはそれらの省略を考慮されておらず E_NOTICE レベルのエラーを発生させてしまう。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">function</span> <span class="function">generateValidator</span>(<span class="local-variable">$field</span>, <span class="local-variable">$choices</span> = <span class="predefined">array</span>())
{
<span class="local-variable">$field</span> = <span class="predefined-constant">self</span>::arrayKeyCamelize(<span class="local-variable">$field</span>);
<span class="local-variable">$option</span> = <span class="predefined">array</span>(<span class="string"><span class="delimiter">'</span><span class="content">required</span><span class="delimiter">'</span></span> => <span class="local-variable">$field</span>[<span class="string"><span class="delimiter">'</span><span class="content">IsRequired</span><span class="delimiter">'</span></span>], <span class="string"><span class="delimiter">'</span><span class="content">trim</span><span class="delimiter">'</span></span> => <span class="local-variable">$field</span>[<span class="string"><span class="delimiter">'</span><span class="content">IsTrim</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>isset() を使用し IsRequired 等が定義されていることを確認した上で値を使用するように修正する</p>
OpenPNE 3 - Bug(バグ) #3426 (Won't fix(対応せず)): pc_backend の存在しないアクションに対するテストコードを削除する
http://redmine.openpne.jp/issues/3426
2013-10-07T07:34:35Z
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/securityActionsTest.php">source:test/functional/pc_backend/securityActionsTest.php</a> は pc_backend の security/index アクションに対するテストコードとなっているが、現状 security/index というモジュール及びアクションは存在せずテストを実行してもエラーで終了する。<br />また <a class="source" href="http://redmine.openpne.jp/projects/op3/repository/entry/test/functional/pc_backend/mailActionsTest.php">source:test/functional/pc_backend/mailActionsTest.php</a> についても、存在しないアクション mail/index に対するテストコードとなっている。<br />そのため、securityActionsTest.php 及び mailActionsTest.php は不要なファイルと判断し削除する。</p>
OpenPNE 3 - Bug(バグ) #3289 (Rejected(差し戻し)): 自動リンク機能で末尾のスラッシュを省略すると後続の日本語テキストもURLとしてリンクされてしまう
http://redmine.openpne.jp/issues/3289
2012-12-27T07:38:14Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="現象"></a>
<h3 >現象<a href="#現象" class="wiki-anchor">¶</a></h3>
<p>op_auto_link_text (<a class="source" href="http://redmine.openpne.jp/projects/op3/repository/entry/lib/helper/opUtilHelper.php">source:lib/helper/opUtilHelper.php</a>) を使用する箇所(アクティビティ、日記の本文・コメントなど)で、次のような現象が起こる。</p>
<p><code>http://example.com/テキスト</code> と入力して投稿すると <code><a href="http://example.com/">http://example.com/</a>テキスト</code> のように日本語の部分を除いて自動リンク機能が働くが、<br /><code>http://example.comテキスト</code> と入力して投稿すると <code><a href="http://example.comテキスト">http://example.comテキスト</a></code> のようなリンクが生成されてしまう。</p>
<a name="原因"></a>
<h3 >原因<a href="#原因" class="wiki-anchor">¶</a></h3>
<p>op_auto_link_text による自動リンクで使用される正規表現は次のように定義されている。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"> <span class="predefined">define</span>(<span class="string"><span class="delimiter">'</span><span class="content">SF_AUTO_LINK_RE</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">~
( # leading text
<</span><span class="content">\w</span><span class="content">+.*?>| # leading HTML tag, or
[^=!:</span><span class="char">\'</span><span class="content">"/]| # leading punctuation, or
^| # beginning of line, or
</span><span class="content">\s</span><span class="content">? # leading whitespaces
)
(
(?:https?://)| # protocol spec, or
(?:www</span><span class="content">\.</span><span class="content">) # www.*
)
(
[-</span><span class="content">\w</span><span class="content">]+ # subdomain or domain
(?:</span><span class="content">\.</span><span class="content">[-</span><span class="content">\w</span><span class="content">]+)* # remaining subdomains or domain
(?::</span><span class="content">\d</span><span class="content">+)? # port
</span><span class="content">\/</span><span class="content">?
[a-zA-Z0-9_</span><span class="content">\-</span><span class="content">\/</span><span class="content">.,:;</span><span class="content">\~</span><span class="content">\?</span><span class="content">@&=+$%#!()]*
)
([^a-zA-Z0-9_</span><span class="content">\-</span><span class="content">\/</span><span class="content">.,:;</span><span class="content">\~</span><span class="content">\?</span><span class="content">@&=+$%#!()]|</span><span class="content">\s</span><span class="content">|<|$) # trailing text
~xu</span><span class="delimiter">'</span></span>);
</span></code></pre>
<p>この正規表現はUTF-8モードが有効となっており(末尾の <code>u</code> オプションによる)、このモードではpreg_match内部でPCREに対して PCRE_UCF オプションが使用される。このオプションでは <code>\d</code>, <code>\D</code>, <code>\s</code>, <code>\S</code>, <code>\w</code>, <code>\W</code> などの <strong>重要な</strong> 文字クラスの挙動が変わり、例えば <code>\d</code> は全角数字にもマッチし、 <code>\w</code> は漢字や平仮名にもマッチするようになる。これによって、ドメイン部分の <code>[-\w]+</code> に日本語のテキストがマッチしてしまうため前述のような現象が起こる。</p>
<a name="参考"></a>
<h4 >参考<a href="#参考" class="wiki-anchor">¶</a></h4>
<ul>
<li><a href="https://bugs.php.net/bug.php?id=52971" class="external">PHP :: Bug #52971 :: PCRE-Meta-Characters not working with utf-8</a></li>
<li><a href="https://github.com/php/php-src/blob/master/ext/pcre/php_pcre.c#L359-L366" class="external">php-src/ext/pcre/php_pcre.c at master · php/php-src · GitHub</a></li>
</ul>
<a name="修正内容"></a>
<h3 >修正内容<a href="#修正内容" class="wiki-anchor">¶</a></h3>
<p>SF_AUTO_LINK_RE で使用されている <code>\w</code>, <code>\s</code>, <code>\d</code> を <code>[0-9A-Za-z]</code>, <code>\ </code>, <code>[0-9]</code> にそれぞれ置き換える。</p>
OpenPNE 3 - Bug(バグ) #3165 (Won't fix(対応せず)): ./symfony ccでキャッシュをクリアした直後だけメッセージが翻訳されずに表示される
http://redmine.openpne.jp/issues/3165
2012-08-15T02:31:11Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p><code>./symfony cc</code> を実行した後にブラウザでホーム画面等を閲覧すると、ナビゲーションと SnsTerm で設定される語句を除いてメッセージが翻訳されずに表示されてしまう。リロードすると正常に設定された言語でメッセージが表示される。</p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>git bisect を使用して原因となるコミットを探索した結果 <a class="changeset" title="fixed for coding standard (fixes #2698)" href="http://redmine.openpne.jp/projects/op3/repository/revisions/94515d98f87747603b42b4397c0561039bff011a">94515d98f87747603b42b4397c0561039bff011a</a> に行き着いた。</p>
<p>このコミット内には <code>b/lib/i18n/opI18N.class.php</code> に対する下記の修正ミスがあり、これを正したところ上記の現象は起きなかったためこの変更が原因と思われる。</p>
<pre><code class="diff syntaxhl"><span class="CodeRay"><span class="change"><span class="change">@@</span> -74,7 +74,7 <span class="change">@@</span></span> class opI18N extends sfI18N
{
$this->generateApplicationMessages($dirs);
<span class="line delete"><span class="delete">-</span> if (<span class="eyecatcher">null === $dirs</span>)</span>
<span class="line insert"><span class="insert">+</span> if (<span class="eyecatcher">!is_null($dirs)</span>)</span>
{
$this->messageSource = $this->createMessageSource();
}
</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>
OpenPNE 3 - Bug(バグ) #3026 (Fixed(完了)): PHP5.2.x環境でjson_encodeの呼び出し時にWarningが発生する
http://redmine.openpne.jp/issues/3026
2012-04-23T12:28:06Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p><code>json_encode</code> の第2引数はPHP5.3.0で追加されたもので、それ以前のバージョンで実行されることを考慮されていなかったことが原因。</p>
<p>参考: <a href="http://php.net/manual/ja/function.json-encode.php" class="external">PHP: json_encode - Manual</a></p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p><code>JSON_PRETTY_PRINT</code> が定義されていない場合に <code>json_encode</code> の第2引数を指定しないように修正する。</p>
opCalendarPlugin - Bug(バグ) #1887 (Fixed(完了)): MySQLに依存する関数を含むクエリがある
http://redmine.openpne.jp/issues/1887
2011-01-21T15:57:40Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>opCalendarPluginExtension::getScheduleBirthMember() メソッド内で実行されるクエリの一部がMySQLのDATE_FORMAT関数を使用しているため、MySQL以外のDBMSで「バースデイボックス」ガジェットを使用するとInternal Server Errorが返ります。</p>