OpenPNE Issue Tracking System: チケット
http://redmine.openpne.jp/
http://redmine.openpne.jp/favicon.ico
2017-11-10T05:41:59Z
OpenPNE Issue Tracking System
Redmine
OpenPNE 3 - Backport(バックポート) #4259 (Fixed(完了)): [PATCH] opWidgetFormDateTime クラスの追加
http://redmine.openpne.jp/issues/4259
2017-11-10T05:41:59Z
Youichi Kimura
kim.upsilon@bucyou.net
<p>親チケットの説明を参照</p>
OpenPNE 3 - Backport(バックポート) #4258 (Fixed(完了)): [PATCH] opWidgetFormDateTime クラスの追加
http://redmine.openpne.jp/issues/4258
2017-11-10T05:41:19Z
Youichi Kimura
kim.upsilon@bucyou.net
<p>親チケットの説明を参照</p>
OpenPNE 3 - Backport(バックポート) #4229 (Fixed(完了)): opI18N::__() のパラメータに語形変化の設定をしたSnsTermインスタンスを渡しても反...
http://redmine.openpne.jp/issues/4229
2017-10-20T06:26:28Z
Youichi Kimura
kim.upsilon@bucyou.net
<p>親チケットの説明を参照</p>
OpenPNE 3 - Backport(バックポート) #4228 (Fixed(完了)): opI18N::__() のパラメータに語形変化の設定をしたSnsTermインスタンスを渡しても反...
http://redmine.openpne.jp/issues/4228
2017-10-20T06:24:28Z
Youichi Kimura
kim.upsilon@bucyou.net
<p>親チケットの説明を参照</p>
OpenPNE 3 - Enhancement(機能追加・改善) #4200 (New(新規)): 古い静的ファイルのキャッシュが意図せず使われないようにする
http://redmine.openpne.jp/issues/4200
2017-06-05T08:20:28Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-概要"></a>
<h3 >Overview (概要)<a href="#Overview-概要" class="wiki-anchor">¶</a></h3>
<p>現状の OpenPNE では、静的ファイル (*.js, *.css など) のキャッシュについて HTTP ヘッダ等による制御を行っておらず、Web ブラウザやプロキシサーバーのデフォルトの動作に委ねられている。</p>
<p>静的ファイルについて Apache のデフォルトの動作では、以下のように <code>Last-Modified</code>, <code>ETag</code> ディレクティブがレスポンスヘッダに出力される。</p>
<pre>
$ curl --head http://v38.localhost/js/util.js
HTTP/1.1 200 OK
Date: Mon, 05 Jun 2017 08:13:30 GMT
Server: Apache/2.4.10 (Debian)
Last-Modified: Fri, 17 Mar 2017 06:02:37 GMT
ETag: "6a2-54ae6ecb2f7a1"
Accept-Ranges: bytes
Content-Length: 1698
Vary: Accept-Encoding
Content-Type: application/javascript
</pre>
<p><a class="issue tracker-1 status-5 priority-5 priority-high3 closed" title="Bug(バグ): メンバー登録時にデータが不正な状態になることがある (Fixed(完了))" href="http://redmine.openpne.jp/issues/3150#note-19">#3150-19</a> で指摘されているように、Google Chrome 58 といった比較的新しいブラウザにおいても静的ファイルの古いキャッシュが問題を引き起こす場合があることから、OpenPNE 側での対処が必要であると考えられる。</p>
<p>なお、 #2287 では <code>Cache-Control: no-store, no-cache, private, max-age=0, must-revalidate, post-check=0, pre-check=0</code> が出力されるように修正が行われているが、これは symfony を経由しない静的ファイルに対しては適用されない。</p>
<a name="Spec-仕様"></a>
<h3 >Spec (仕様)<a href="#Spec-仕様" class="wiki-anchor">¶</a></h3>
OpenPNE 3 - Enhancement(機能追加・改善) #4179 (Fixed(完了)): SimplePie 1.4.3 へのアップデート
http://redmine.openpne.jp/issues/4179
2017-03-29T07:13:27Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-概要"></a>
<h3 >Overview (概要)<a href="#Overview-概要" class="wiki-anchor">¶</a></h3>
<p>OpenPNE に同梱されている SimplePie 1.0.1 (2007-07-23) は PHP7 で廃止された構文が含まれており、これを使用すると Parse Error で異常終了する。</p>
<pre>
Parse error: syntax error, unexpected 'new' (T_NEW) in /vagrant/lib/vendor/simplepie/simplepie.inc on line 659
</pre>
<p>SimplePie に依存する機能は、OpenPNE 本体に存在する「RSS リーダー」ガジェットおよび opBlogPlugin が該当するため、SimplePie をアップデートすることで PHP7 で動作できる状態にする。</p>
<a name="Spec-仕様"></a>
<h3 >Spec (仕様)<a href="#Spec-仕様" class="wiki-anchor">¶</a></h3>
<p>SimplePie 1.4.3 (2016-11-27) にアップデートする。</p>
OpenPNE 3 - Task(タスク) #4172 (Fixed(完了)): 新masterブランチへの移行
http://redmine.openpne.jp/issues/4172
2017-03-15T05:49:17Z
Youichi Kimura
kim.upsilon@bucyou.net
<p>現行の master ブランチを廃止し、OpenPNE 3.8 系ベースの新しい master ブランチに移行します。</p>
<a name="現状の問題点"></a>
<h4 >現状の問題点<a href="#現状の問題点" class="wiki-anchor">¶</a></h4>
<ul>
<li>PHP7 への移行 (<a class="issue tracker-5 status-2 priority-4 priority-default parent" title="Task(タスク): PHP7対応のための修正を行う (Accepted(着手))" href="http://redmine.openpne.jp/issues/4112">#4112</a>) を進めるためには、フレームワークの変更やそれに伴う最低動作要件 (PHPバージョン) の変更など、最小限に留めるにせよ互換性を損なう変更が不可欠であるため安定版ブランチで実施することはできない</li>
<li>OpenPNE 開発版のブランチである master は事実上メンテナンスされていない
<ul>
<li>バグチケットを含む一切の Pull Request は master および各安定版ブランチに対して作成されるが、テストが行われマージまで実施されるのは安定版ブランチのみである</li>
</ul>
</li>
<li>現在の master ブランチは stable-3.8.x よりも古い状態となっており、バグ修正等を現行の安定版と同程度にするためには放置された多くの Pull Request を処理する必要があり、膨大な手間が掛かると予想される</li>
</ul>
<a name="解決策"></a>
<h4 >解決策<a href="#解決策" class="wiki-anchor">¶</a></h4>
<ul>
<li>現行の master ブランチを廃止し、old-master ブランチに改称する
<ul>
<li>master ブランチに対して作成されていた Pull Request は、old-master ブランチに対する Pull Request として残す (クローズするかどうかは要検討)</li>
</ul>
</li>
<li>最新の安定版バージョンをベースとして、新たな master ブランチを作成する
<ul>
<li>予定されているのは OpenPNE 3.8.23 ベース</li>
</ul>
</li>
<li>これまで master ブランチにのみ作成されていた機能追加等の Pull Request については、必要に応じて個別に新 master ブランチに対する Pull Request を作成する</li>
</ul>
<a name="手順"></a>
<h4 >手順<a href="#手順" class="wiki-anchor">¶</a></h4>
<ol>
<li><code>git clone git@github.com:openpne/OpenPNE3.git openpne3</code></li>
<li><code>cd openpne3</code></li>
<li><code>git branch -M master old-master</code></li>
<li><code>git branch master OpenPNE-3.8.23</code></li>
<li><code>git push origin old-master master --force</code></li>
</ol>
<a name="移行後の作業"></a>
<h4 >移行後の作業<a href="#移行後の作業" class="wiki-anchor">¶</a></h4>
<ul>
<li>master ブランチ宛に作成されている全ての Pull Request のベースブランチを old-master に変更する</li>
<li>Redmine のチケットでの「対象バージョン」の扱い
<ul>
<li>old-master ブランチ (旧 master ブランチ) に紐付いたままのチケットは <a class="version" href="http://redmine.openpne.jp/versions/269">OpenPNE 3.9.0-old</a> に、新しい master ブランチで進行するチケットは <a class="version" href="http://redmine.openpne.jp/versions/369">OpenPNE 3.9.0</a> に設定されます。</li>
</ul></li>
</ul>
OpenPNE 3 - Bug(バグ) #4168 (Fixed(完了)): opI18N::__() のパラメータに語形変化の設定をしたSnsTermインスタンスを渡しても反映されない
http://redmine.openpne.jp/issues/4168
2017-02-27T09:19:05Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-概要"></a>
<h3 >Overview (概要)<a href="#Overview-概要" class="wiki-anchor">¶</a></h3>
<p>SnsTerm の <a href="https://github.com/openpne/OpenPNE3-doc/blob/master/cookbook/3.6/ja/use-sns-term-from-plugin.rst#%E8%A4%87%E9%9B%91%E3%81%AA%E4%BD%BF%E7%94%A8%E4%BE%8B" class="external">複雑な使用例</a> に記載されている下記のようなコードが正しく動作せず、語形変化が適用されていない「friend」のまま出力される。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="inline-delimiter"><?php</span> <span class="predefined">echo</span> __(<span class="string"><span class="delimiter">'</span><span class="content">%friend% are removed.</span><span class="delimiter">'</span></span>, <span class="predefined">array</span>(<span class="string"><span class="delimiter">'</span><span class="content">%friend%</span><span class="delimiter">'</span></span> => <span class="local-variable">$op_term</span>[<span class="string"><span class="delimiter">'</span><span class="content">friend</span><span class="delimiter">'</span></span>]->pluralize()->fronting())); <span class="inline-delimiter">?></span>
</span></code></pre>
<p>この問題は <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): occurs "warning" when second argument of the __() i18n translation method is non-array (i18nの翻訳メソ... (Fixed(完了))" href="http://redmine.openpne.jp/issues/1759">#1759</a> における <a class="changeset" title="fixed non-array (fixes #1759)" href="http://redmine.openpne.jp/projects/op3/repository/revisions/9b2f55d84ecb1e0cc2aa47a77b9b42f0582799f5">9b2f55d8</a> の修正以降から発生している。</p>
<p>これにより、opDiaryPlugin の日記作成画面を英語で表示した際に「My Friends」と表示されるべき箇所が「my friend」と表示される状態になっている。</p>
<p><img src="http://redmine.openpne.jp/attachments/download/653/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2017-02-27_18.00.07.png" style="width:567px;" alt="" /></p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>前提として、SnsTerm は以下のような性質を持っている。</p>
<ol>
<li>SnsTerm インスタンスに設定した語形変化は <code>SnsTerm::__toString()</code> が呼ばれると初期状態に戻る
<ul>
<li><pre><code class="php syntaxhl"><span class="CodeRay"><span class="local-variable">$term</span> = <span class="constant">Doctrine_Core</span>::getTable(<span class="string"><span class="delimiter">'</span><span class="content">SnsTerm</span><span class="delimiter">'</span></span>)->get(<span class="string"><span class="delimiter">'</span><span class="content">my_friend</span><span class="delimiter">'</span></span>);
<span class="local-variable">$term</span>->titleize();
<span class="predefined">var_dump</span>((<span class="predefined-type">string</span>)<span class="local-variable">$term</span>); <span class="comment">// "My Friend" </span>
<span class="predefined">var_dump</span>((<span class="predefined-type">string</span>)<span class="local-variable">$term</span>); <span class="comment">// "my friend" </span>
</span></code></pre></li>
</ul>
</li>
<li>SnsTerm インスタンスは SnsTermTable クラス内でキャッシュされる
<ul>
<li><pre><code class="php syntaxhl"><span class="CodeRay"><span class="local-variable">$term</span> = <span class="constant">Doctrine_Core</span>::getTable(<span class="string"><span class="delimiter">'</span><span class="content">SnsTerm</span><span class="delimiter">'</span></span>)->get(<span class="string"><span class="delimiter">'</span><span class="content">my_friend</span><span class="delimiter">'</span></span>);
<span class="local-variable">$term</span>->titleize();
<span class="comment">// $term と同一のインスタンスが返る</span>
<span class="local-variable">$term2</span> = <span class="constant">Doctrine_Core</span>::getTable(<span class="string"><span class="delimiter">'</span><span class="content">SnsTerm</span><span class="delimiter">'</span></span>)->get(<span class="string"><span class="delimiter">'</span><span class="content">my_friend</span><span class="delimiter">'</span></span>);
<span class="predefined">var_dump</span>((<span class="predefined-type">string</span>)<span class="local-variable">$term2</span>); <span class="comment">// "My Friend" </span>
</span></code></pre></li>
</ul></li>
</ol>
<p>それを踏まえて、<code>opI18N::__()</code> メソッドの動作を追うと以下のようになる。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"> <span class="comment">// 以下のように呼ばれる。期待する出力は「Friends are removed.」</span>
<span class="predefined">echo</span> __(<span class="string"><span class="delimiter">'</span><span class="content">%friend% are removed.</span><span class="delimiter">'</span></span>, <span class="predefined">array</span>(<span class="string"><span class="delimiter">'</span><span class="content">%friend%</span><span class="delimiter">'</span></span> => <span class="local-variable">$op_term</span>[<span class="string"><span class="delimiter">'</span><span class="content">friend</span><span class="delimiter">'</span></span>]->pluralize()->fronting()));
....
<span class="comment">// lib/i18n/opI18N.class.php</span>
<span class="keyword">public</span> <span class="keyword">function</span> <span class="function">__</span>(<span class="local-variable">$string</span>, <span class="local-variable">$args</span> = <span class="predefined">array</span>(), <span class="local-variable">$catalogue</span> = <span class="string"><span class="delimiter">'</span><span class="content">messages</span><span class="delimiter">'</span></span>)
{
<span class="keyword">if</span> (<span class="predefined">empty</span>(<span class="local-variable">$this</span>->parsed[<span class="local-variable">$string</span>])) <span class="comment">// 初回の呼び出しでは true になる</span>
{
<span class="local-variable">$this</span>->parsed[<span class="local-variable">$string</span>] = <span class="predefined">array</span>();
<span class="local-variable">$matches</span> = <span class="predefined">array</span>();
<span class="predefined">preg_match_all</span>(<span class="string"><span class="delimiter">'</span><span class="content">/%([a-zA-Z_]+)%/</span><span class="delimiter">'</span></span>, <span class="local-variable">$string</span>, <span class="local-variable">$matches</span>); <span class="comment">// 「%friend%」がヒットする</span>
<span class="predefined">array_shift</span>(<span class="local-variable">$matches</span>);
<span class="keyword">foreach</span> (<span class="local-variable">$matches</span> <span class="keyword">as</span> <span class="local-variable">$match</span>)
{
<span class="keyword">foreach</span> (<span class="local-variable">$match</span> <span class="keyword">as</span> <span class="local-variable">$v</span>)
{
<span class="keyword">if</span> (<span class="local-variable">$this</span>->terms[<span class="local-variable">$v</span>])
{
<span class="local-variable">$term</span> = <span class="local-variable">$this</span>->terms[<span class="local-variable">$v</span>]; <span class="comment">// 性質 2 より、語形変化が適用されたままのインスタンスが返る</span>
<span class="keyword">if</span> (<span class="local-variable">$this</span>->titleize) <span class="comment">// デフォルトで false</span>
{
<span class="local-variable">$term</span> = <span class="local-variable">$term</span>->titleize();
}
<span class="local-variable">$this</span>->parsed[<span class="local-variable">$string</span>][<span class="string"><span class="delimiter">'</span><span class="content">%</span><span class="delimiter">'</span></span>.<span class="local-variable">$v</span>.<span class="string"><span class="delimiter">'</span><span class="content">%</span><span class="delimiter">'</span></span>] = (<span class="predefined-type">string</span>)<span class="local-variable">$term</span>; <span class="comment">// ここで返るのは「Friends」</span>
}
}
}
}
<span class="local-variable">$parsedString</span> = <span class="local-variable">$this</span>->parsed[<span class="local-variable">$string</span>];
<span class="keyword">if</span> (<span class="predefined">is_array</span>(<span class="local-variable">$args</span>))
{
<span class="keyword">foreach</span> (<span class="local-variable">$args</span> <span class="keyword">as</span> <span class="local-variable">$k</span> => <span class="local-variable">$v</span>)
{
<span class="keyword">if</span> (<span class="local-variable">$v</span> <span class="keyword">instanceof</span> <span class="constant">SnsTerm</span>)
{
<span class="local-variable">$args</span>[<span class="local-variable">$k</span>] = (<span class="predefined-type">string</span>)<span class="local-variable">$v</span>; <span class="comment">// 性質 1 より、ここで返るのは「friend」</span>
}
}
<span class="local-variable">$parsedString</span> = <span class="predefined">array_merge</span>(<span class="local-variable">$parsedString</span>, <span class="local-variable">$args</span>); <span class="comment">// 「Friends」が「friend」に上書きされる</span>
}
<span class="comment">// 「friend are removed.」が出力される (不具合)</span>
<span class="keyword">return</span> <span class="predefined-constant">parent</span>::__(<span class="local-variable">$string</span>, <span class="local-variable">$parsedString</span>, <span class="local-variable">$catalogue</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><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): occurs "warning" when second argument of the __() i18n translation method is non-array (i18nの翻訳メソ... (Fixed(完了))" href="http://redmine.openpne.jp/issues/1759">#1759</a> の修正を一旦取り消し、上記のような SnsTerm の不具合が生じないように <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): occurs "warning" when second argument of the __() i18n translation method is non-array (i18nの翻訳メソ... (Fixed(完了))" href="http://redmine.openpne.jp/issues/1759">#1759</a> の修正を再度行う。</p>
OpenPNE 3 - Backport(バックポート) #4149 (Fixed(完了)): メールアドレス変更を行うと member_config に name='captcha' のレコー...
http://redmine.openpne.jp/issues/4149
2017-02-15T11:05:52Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>メールアドレス変更を行うと、member_config に下記のような name = 'captcha' のレコードが追加される。</p>
<pre>
> SELECT * FROM member_config WHERE name = 'captcha' \G
*************************** 1. row ***************************
id: 145
member_id: 2
name: captcha
value: Array
value_datetime: NULL
name_value_hash: 7fee6c903f71b6b14b0b6b6636ab3f5b
created_at: 2016-08-31 15:30:37
updated_at: 2016-08-31 15:30:37
</pre>
<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/lib/form/MemberConfigForm/MemberConfigPcAddressForm.class.php#L28">source:lib/form/MemberConfigForm/MemberConfigPcAddressForm.class.php@43190aa1#L28</a>:<br /><pre><code class="php syntaxhl"><span class="CodeRay"> <span class="keyword">public</span> <span class="keyword">function</span> <span class="function">__construct</span>(<span class="constant">Member</span> <span class="local-variable">$member</span> = <span class="predefined-constant">null</span>, <span class="local-variable">$options</span> = <span class="predefined">array</span>(), <span class="local-variable">$CSRFSecret</span> = <span class="predefined-constant">null</span>)
{
<span class="predefined-constant">parent</span>::__construct(<span class="local-variable">$member</span>, <span class="local-variable">$options</span>, <span class="local-variable">$CSRFSecret</span>);
<span class="keyword">if</span> (sfConfig::get(<span class="string"><span class="delimiter">'</span><span class="content">op_is_use_captcha</span><span class="delimiter">'</span></span>, <span class="predefined-constant">false</span>))
{
<span class="local-variable">$this</span>->embedForm(<span class="string"><span class="delimiter">'</span><span class="content">captcha</span><span class="delimiter">'</span></span>, <span class="keyword">new</span> opCaptchaForm());
}
}
</span></code></pre></p>
<p>MemberConfigPcAddressForm, MemberConfigMobileAddressForm では embedForm を使用して opCaptchaForm を追加している。一方で、saveConfig メソッドでは追加された captcha フィールドをそのまま member_config テーブルに格納しようとするため上記のような現象が発生する。</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 - Backport(バックポート) #4148 (Fixed(完了)): メールアドレス変更を行うと member_config に name='captcha' のレコー...
http://redmine.openpne.jp/issues/4148
2017-02-15T11:05:33Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>メールアドレス変更を行うと、member_config に下記のような name = 'captcha' のレコードが追加される。</p>
<pre>
> SELECT * FROM member_config WHERE name = 'captcha' \G
*************************** 1. row ***************************
id: 145
member_id: 2
name: captcha
value: Array
value_datetime: NULL
name_value_hash: 7fee6c903f71b6b14b0b6b6636ab3f5b
created_at: 2016-08-31 15:30:37
updated_at: 2016-08-31 15:30:37
</pre>
<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/lib/form/MemberConfigForm/MemberConfigPcAddressForm.class.php#L28">source:lib/form/MemberConfigForm/MemberConfigPcAddressForm.class.php@43190aa1#L28</a>:<br /><pre><code class="php syntaxhl"><span class="CodeRay"> <span class="keyword">public</span> <span class="keyword">function</span> <span class="function">__construct</span>(<span class="constant">Member</span> <span class="local-variable">$member</span> = <span class="predefined-constant">null</span>, <span class="local-variable">$options</span> = <span class="predefined">array</span>(), <span class="local-variable">$CSRFSecret</span> = <span class="predefined-constant">null</span>)
{
<span class="predefined-constant">parent</span>::__construct(<span class="local-variable">$member</span>, <span class="local-variable">$options</span>, <span class="local-variable">$CSRFSecret</span>);
<span class="keyword">if</span> (sfConfig::get(<span class="string"><span class="delimiter">'</span><span class="content">op_is_use_captcha</span><span class="delimiter">'</span></span>, <span class="predefined-constant">false</span>))
{
<span class="local-variable">$this</span>->embedForm(<span class="string"><span class="delimiter">'</span><span class="content">captcha</span><span class="delimiter">'</span></span>, <span class="keyword">new</span> opCaptchaForm());
}
}
</span></code></pre></p>
<p>MemberConfigPcAddressForm, MemberConfigMobileAddressForm では embedForm を使用して opCaptchaForm を追加している。一方で、saveConfig メソッドでは追加された captcha フィールドをそのまま member_config テーブルに格納しようとするため上記のような現象が発生する。</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(タスク) #4112 (Accepted(着手)): PHP7対応のための修正を行う
http://redmine.openpne.jp/issues/4112
2017-01-06T06:02:42Z
Youichi Kimura
kim.upsilon@bucyou.net
<p>2017/01 時点の OpenPNE3 は、全ての安定版および master ブランチにおいて PHP7 では動作しない状態となっている (<a class="issue tracker-1 status-13 priority-4 priority-default closed" title="Bug(バグ): PHP7の環境で動かない? (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3879">#3879</a>)</p>
<a name="調査-完了"></a>
<h4 >調査 (完了)<a href="#調査-完了" class="wiki-anchor">¶</a></h4>
<p>PHP7 への移行にあたって以下の調査を行う。</p>
<ul>
<li>OpenPNE3 が PHP7 で動かない原因</li>
<li>OpenPNE3 を PHP7 で動かすためにはどのような修正が必要か (機能を削る必要があるか)</li>
</ul>
<a name="修正"></a>
<h4 >修正<a href="#修正" class="wiki-anchor">¶</a></h4>
<ul>
<li>最低動作環境を PHP 5.4 以上とする</li>
<li><a href="https://pear.php.net/package/PEAR/download/1.10.3" class="external">PEAR 1.10.3</a> へのアップデート</li>
<li><a href="https://github.com/LExpress/symfony1" class="external">LExpress/symfony1</a> への移行</li>
<li>Net_UserAgent_Mobile をアップデート
<ul>
<li>ただしパッケージとしては未リリースのため GitHub から直接ソースコードを取得する必要がある</li>
<li><a class="external" href="https://github.com/iteman/net-useragent-mobile">https://github.com/iteman/net-useragent-mobile</a></li>
</ul></li>
</ul>
OpenPNE 3 - Bug(バグ) #4034 (Fixed(完了)): member/registerInputアクションでメンバー登録のフォームを生成する際にE_NOTICEエラーが発生する
http://redmine.openpne.jp/issues/4034
2016-10-31T09:19:22Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-概要"></a>
<h3 >Overview (概要)<a href="#Overview-概要" class="wiki-anchor">¶</a></h3>
<p>新規メンバー登録で使用される member/registerInput の画面で下記のような E_NOTICE レベルのエラーが発生する(pc_frontend_dev.php を使用するとエラー出力を確認できる)</p>
<pre>
Notice: Undefined index: IsRegist in /home/upsilon/git/openpne3/master/lib/form/doctrine/MemberConfigForm.class.php on line 51
</pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p><code>MemberConfigForm::generateConfigWidgets()</code> メソッドで下記のように <code>$value['IsRegist']</code> を参照しているが、member_config.yml で定義された設定の中には IsRegist が省略されている項目も存在するため未定義なインデックスの参照としてエラーが発生する場合がある。</p>
<p><a class="source" href="http://redmine.openpne.jp/projects/op3/repository/revisions/ac9a15cd/entry/lib/form/doctrine/MemberConfigForm.class.php#L51">source:lib/form/doctrine/MemberConfigForm.class.php@ac9a15cd#L51</a>:</p>
<pre><code class="php syntaxhl"><span class="CodeRay"> <span class="keyword">foreach</span> (<span class="local-variable">$this</span>->memberConfigSettings <span class="keyword">as</span> <span class="local-variable">$key</span> => <span class="local-variable">$value</span>) {
<span class="keyword">if</span> (<span class="local-variable">$this</span>->isNew && <span class="local-variable">$value</span>[<span class="string"><span class="delimiter">'</span><span class="content">IsRegist</span><span class="delimiter">'</span></span>] || !<span class="local-variable">$this</span>->isNew && <span class="local-variable">$value</span>[<span class="string"><span class="delimiter">'</span><span class="content">IsConfig</span><span class="delimiter">'</span></span>]) {
<span class="local-variable">$this</span>->setMemberConfigWidget(<span class="local-variable">$key</span>);
}
}
</span></code></pre>
<p>類似の不具合として過去に修正された <a class="issue tracker-1 status-13 priority-3 priority-lowest closed child" title="Bug(バグ): opFormItemGenerator::generateValidator() に渡すフィールドの IsRequired や IsTrim を省略すると E_NOTICE レベルのエラーが発生する (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3428">#3428</a> がある。</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(バグ) #2882 (Won't fix(対応せず)): opValidatorDate で「年」に 0 を入力した場合に空値として認識される
http://redmine.openpne.jp/issues/2882
2012-03-13T09:13:24Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="現象"></a>
<h3 >現象<a href="#現象" class="wiki-anchor">¶</a></h3>
<p>opValidatorDate を使用しているフォーム(コミュニティイベントの作成画面など)で、日付を入力する項目の「年」に <code>0</code> を入力すると空値として扱われる。</p>
<ul>
<li>コミュニティイベントの作成画面の場合、「募集期日」の「年」に <code>0</code> と入力された状態(「月」「日」は入力しない)で送信しても「正しくありません。」と表示されずにイベントの作成が完了する。</li>
</ul>
<a name="原因"></a>
<h3 >原因<a href="#原因" class="wiki-anchor">¶</a></h3>
<p>lib/validator/opValidatorDate.class.php の 100 行目付近</p>
<pre><code class="php syntaxhl"><span class="CodeRay"> <span class="comment">// if one date value is empty, all others must be empty too</span>
<span class="local-variable">$empties</span> =
(!<span class="predefined">isset</span>(<span class="local-variable">$value</span>[<span class="string"><span class="delimiter">'</span><span class="content">year</span><span class="delimiter">'</span></span>]) || !<span class="local-variable">$value</span>[<span class="string"><span class="delimiter">'</span><span class="content">year</span><span class="delimiter">'</span></span>] ? <span class="integer">1</span> : <span class="integer">0</span>) +
(!<span class="predefined">isset</span>(<span class="local-variable">$value</span>[<span class="string"><span class="delimiter">'</span><span class="content">month</span><span class="delimiter">'</span></span>]) || !<span class="local-variable">$value</span>[<span class="string"><span class="delimiter">'</span><span class="content">month</span><span class="delimiter">'</span></span>] ? <span class="integer">1</span> : <span class="integer">0</span>) +
(!<span class="predefined">isset</span>(<span class="local-variable">$value</span>[<span class="string"><span class="delimiter">'</span><span class="content">day</span><span class="delimiter">'</span></span>]) || !<span class="local-variable">$value</span>[<span class="string"><span class="delimiter">'</span><span class="content">day</span><span class="delimiter">'</span></span>] ? <span class="integer">1</span> : <span class="integer">0</span>);
</span></code></pre>
<p>この判定で、「年」(<code>$value['year']</code>) に <code>"0"</code> が入力されると <code>!isset($value['year']) || !$value['year']</code> が <code>true</code> となり空値と判定されることが原因。</p>
<p>参照: <a href="http://php.net/manual/ja/types.comparisons.php" class="external">PHP: PHP 型の比較表 - Manual</a></p>
<a name="修正内容"></a>
<h3 >修正内容<a href="#修正内容" class="wiki-anchor">¶</a></h3>
<p>修正内容を記入</p>
OpenPNE 3 - Bug(バグ) #1839 (Won't fix(対応せず)): [PATCH] 一部のファイルに不要な実行権限が設定されている
http://redmine.openpne.jp/issues/1839
2010-12-09T07:37:47Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="現象"></a>
<h3 >現象<a href="#現象" class="wiki-anchor">¶</a></h3>
<p>直接実行できないphpファイルや画像ファイルなどに実行可能権限が設定されています。</p>
<a name="修正内容"></a>
<h3 >修正内容<a href="#修正内容" class="wiki-anchor">¶</a></h3>
<p>ソースツリー内にELFファイルは存在しないため、ファイルの一行目がシバン行 (先頭が「#!」で開始) であるか否かで実行権限を設定します</p>
<pre>
find * -type f ! -regex '.*\.git.*' -print0 | xargs -0r -Ifile sh -c 'head -n1 file | grep -q "^#!" && chmod +x file || chmod -x file'
</pre>
opCommunityTopicPlugin - Enhancement(機能追加・改善) #1526 (Rejected(差し戻し)): イベントの参加者を編集できるようにしてほしい
http://redmine.openpne.jp/issues/1526
2010-08-21T15:25:10Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="概要"></a>
<h3 >概要<a href="#概要" class="wiki-anchor">¶</a></h3>
<p>普段あまり書き込みをしないメンバーがイベントに参加する際に参加者一覧と実際の参加者が一致しなくなることがあるため、イベントの作成者が参加者を編集(追加・削除)できるようにしてほしいです。</p>