OpenPNE Issue Tracking System: チケット
http://redmine.openpne.jp/
http://redmine.openpne.jp/favicon.ico
2017-03-15T05:49:17Z
OpenPNE Issue Tracking System
Redmine
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 - Task(タスク) #4159 (New(新規)): MySQLのSTRICT_TRANS_TABLESが有効な状態でテスト用fixtureのロードに失敗する
http://redmine.openpne.jp/issues/4159
2017-02-17T07:57:45Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-概要"></a>
<h3 >Overview (概要)<a href="#Overview-概要" class="wiki-anchor">¶</a></h3>
<p>MySQL 5.7 の Strict Mode が有効な状態での動作確認 (<a class="issue tracker-5 status-2 priority-4 priority-default parent" title="Task(タスク): MySQLのStrict Modeを有効にした場合に生じる問題を調査 (Accepted(着手))" href="http://redmine.openpne.jp/issues/4033">#4033</a>) を行った際に発生した。</p>
<p>fixture の読み込みを必要とするテストコードを実行すると下記のエラーが発生する:<br /><pre>
$ php test/unit/model/doctrine/MemberTest.php
PHP Fatal error: Uncaught exception 'Doctrine_Connection_Mysql_Exception' with message 'SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '' for column 'value_datetime' at row 1' in /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php:1082
Stack trace:
#0 /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Statement.php(269): Doctrine_Connection->rethrowException(Object(PDOException), Object(Doctrine_Connection_Statement))
#1 /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php(1042): Doctrine_Connection_Statement->execute(Array)
#2 /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php(687): Doctrine_Connection->exec('INSERT INTO mem...', Array)
#3 /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/UnitOfWork.php(647): Doctrine_Connection->insert(Object(MemberProfileTable), in /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php on line 1082
</pre></p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p><a class="source" href="http://redmine.openpne.jp/projects/op3/repository/revisions/43190aa1/entry/test/fixtures/common/test_data.yml#L344">source:test/fixtures/common/test_data.yml@43190aa1#L344</a>:<br /><pre><code class="yaml syntaxhl"><span class="CodeRay"> <span class="key">second_member_profile_birthday</span>:
<span class="key">value</span>: <span class="string"><span class="delimiter">"</span><span class="delimiter">"</span></span>
<span class="key">value_datetime</span>: <span class="string"><span class="delimiter">"</span><span class="delimiter">"</span></span>
<span class="key">public_flag</span>: <span class="string"><span class="content">1</span></span>
<span class="key">Member</span>: <span class="string"><span class="content">second_member</span></span>
<span class="key">Profile</span>: <span class="string"><span class="content">profile_birthday</span></span>
<span class="key">children</span>: <span class="string"><span class="content">[]</span></span>
</span></code></pre></p>
<p>上記の value_datetime に空文字列をセットしていることが原因。</p>
<p><a class="source" href="http://redmine.openpne.jp/projects/op3/repository/revisions/43190aa1/entry/test/fixtures/common/xss_test_data.yml#L244">source:test/fixtures/common/xss_test_data.yml@43190aa1#L244</a>:<br /><pre><code class="yaml syntaxhl"><span class="CodeRay"><span class="key">OAuthMemberToken</span>:
<span class="key">first_member_html_oauth_token</span>:
<span class="key">key_string</span>: <span class="string"><span class="delimiter">"</span><span class="content">fIrStMeMbErHtMlOaUtHtOkEn</span><span class="delimiter">"</span></span>
<span class="key">secret</span>: <span class="string"><span class="delimiter">"</span><span class="content">fIrStMeMbErHtMlOaUtHsEcReT</span><span class="delimiter">"</span></span>
<span class="key">type</span>: <span class="string"><span class="delimiter">"</span><span class="content">access</span><span class="delimiter">"</span></span>
<span class="key">is_active</span>: <span class="string"><span class="content">1</span></span>
<span class="key">Consumer</span>: <span class="string"><span class="content">html_oauth_consumer1</span></span>
<span class="key">Member</span>: <span class="string"><span class="content">first_member</span></span>
</span></code></pre></p>
<p>また、上記の key_string についても定義されている VARCHAR のサイズを越える文字列のためエラーが発生する。</p>
OpenPNE 3 - Task(タスク) #4158 (New(新規)): MySQLのSTRICT_TRANS_TABLESが有効な状態でプリセットのプロフィール項目を登録するとエラー
http://redmine.openpne.jp/issues/4158
2017-02-17T03:55:14Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-概要"></a>
<h3 >Overview (概要)<a href="#Overview-概要" class="wiki-anchor">¶</a></h3>
<p>MySQL 5.7 の Strict Mode が有効な状態での動作確認 (<a class="issue tracker-5 status-2 priority-4 priority-default parent" title="Task(タスク): MySQLのStrict Modeを有効にした場合に生じる問題を調査 (Accepted(着手))" href="http://redmine.openpne.jp/issues/4033">#4033</a>) を行った際に発生した。</p>
<p>管理画面の「プロフィール項目登録」でプリセットから選択した項目を登録すると下記のエラーが発生する:</p>
<pre>
SQLSTATE[HY000]: General error: 1364 Field 'caption' doesn't have a default value
</pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<pre><code class="sql syntaxhl"><span class="CodeRay"><span class="class">INSERT</span> <span class="class">INTO</span> profile (name, is_required, is_unique, is_edit_public_flag, default_public_flag, form_type, value_type, is_disp_regist, is_disp_config, is_disp_search, is_public_web, sort_order, created_at, updated_at) <span class="keyword">VALUES</span> (<span class="string"><span class="delimiter">'</span><span class="content">op_preset_country</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">0</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">0</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">0</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">1</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">country_select</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">string</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">1</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">1</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">1</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">0</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">130</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">2017-02-16 21:24:37</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">2017-02-16 21:24:37</span><span class="delimiter">'</span></span>)
<span class="class">INSERT</span> <span class="class">INTO</span> profile_translation (id, lang) <span class="keyword">VALUES</span> (<span class="string"><span class="delimiter">'</span><span class="content">5</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">en</span><span class="delimiter">'</span></span>)
</span></code></pre>
<p>二つ目のクエリで、NOT NULL 制約のある <code>caption</code> に値がセットされていないためエラーが発生している。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>修正内容を記入</p>
OpenPNE 3 - Task(タスク) #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 - Task(タスク) #4040 (New(新規)): #3083の修正コミットがstable-3.8.xのみに存在し、masterブランチに対するチケット及びPull R...
http://redmine.openpne.jp/issues/4040
2016-11-14T07:59:10Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="概要"></a>
<h3 >概要<a href="#概要" class="wiki-anchor">¶</a></h3>
<p><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3083">#3083</a> はトラッカーが Bug のチケットであるが、その修正コミットである <a class="changeset" title="(fixes #3083) fixed not to occur Exception when channel server was not registered" href="http://redmine.openpne.jp/projects/op3/repository/revisions/41db124efa99201060a2d17cecac966045b8c611">41db124e</a> は stable-3.8.x に取り込まれている。<br />そのため <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3083">#3083</a> の役割は実質 Backport のチケットであるが、一方で <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3083">#3083</a> の修正を master ブランチで行うチケットが存在していない。</p>
<p>内容が酷似した <a class="issue tracker-1 status-13 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3011">#3011</a>, <a class="issue tracker-4 status-5 priority-4 priority-default closed" title="Backport(バックポート): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3012">#3012</a> のチケットも存在するが、これらは <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3083">#3083</a> 以前に master ブランチで修正および stable-3.8.x へのバックポートが既に行われている。<br /><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3083">#3083</a> は、一度 <a class="issue tracker-1 status-13 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3011">#3011</a>, <a class="issue tracker-4 status-5 priority-4 priority-default closed" title="Backport(バックポート): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3012">#3012</a> で修正した問題について再び修正を試みたチケットであるように読み取れる。</p>
<a name="対応方法"></a>
<h3 >対応方法<a href="#対応方法" class="wiki-anchor">¶</a></h3>
<p>stable-3.8.x ブランチにしか存在しない <a class="changeset" title="(fixes #3083) fixed not to occur Exception when channel server was not registered" href="http://redmine.openpne.jp/projects/op3/repository/revisions/41db124efa99201060a2d17cecac966045b8c611">41db124e</a> の修正を master ブランチに cherry-pick するためのチケットおよび Pull Request を作成する</p>
OpenPNE 3 - Task(タスク) #4033 (Accepted(着手)): MySQLのStrict Modeを有効にした場合に生じる問題を調査
http://redmine.openpne.jp/issues/4033
2016-10-31T05:41:59Z
Youichi Kimura
kim.upsilon@bucyou.net
<p>MySQL の sql_mode を厳格にした場合に生じる問題を調査する。</p>
<p>具体的には MySQL 5.7 から sql_mode のデフォルトが <code>ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION</code> となるため、この設定で問題が生じる箇所を探す。</p>
<p>過去には <a class="issue tracker-1 status-13 priority-4 priority-default closed" title="Bug(バグ): MySQLのStrict Modeが有効な状態でメンバーの新規登録を行うとエラーが発生する (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3543">#3543</a> で Strict Mode における問題を修正したことがあった。</p>
<a name="使用する環境"></a>
<h4 >使用する環境<a href="#使用する環境" class="wiki-anchor">¶</a></h4>
<p>MySQL 5.7.15:</p>
<pre>
mysql> SELECT VERSION() \G
*************************** 1. row ***************************
VERSION(): 5.7.15-1
1 row in set (0.00 sec)
mysql> SELECT @@sql_mode \G
*************************** 1. row ***************************
@@sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
1 row in set (0.00 sec)
</pre>
<p>PHP 5.6.26:</p>
<pre>
$ /usr/bin/php -v
PHP 5.6.26-1 (cli)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
</pre>
OpenPNE 3 - Task(タスク) #4028 (Won't fix(対応せず)): jQuery / jQuery UI のアップグレードによる影響を調査
http://redmine.openpne.jp/issues/4028
2016-10-26T08:48:59Z
Youichi Kimura
kim.upsilon@bucyou.net
<p>jQuery および jQuery UI を最新版にアップグレードする際の影響を調査する。</p>
<a name="調査対象"></a>
<h4 >調査対象<a href="#調査対象" class="wiki-anchor">¶</a></h4>
<ul>
<li>OpenPNE
<ul>
<li>安定版ブランチは対象に含める?</li>
</ul>
</li>
<li>OpenPNE プラグイン (要検討)
<ul>
<li>opCommunityTopicPlugin 1.1.x</li>
<li>opDiaryPlugin 1.5.x</li>
<li>opLikePlugin</li>
<li>opMessagePlugin 2.0.x</li>
<li>opSkinThemePlugin</li>
<li>opTimelinePlugin</li>
<li>opUploadFilePlugin</li>
</ul></li>
</ul>
<a name="現状"></a>
<h4 >現状<a href="#現状" class="wiki-anchor">¶</a></h4>
<p>下記のバージョンが OpenPNE に同梱されている:</p>
<ul>
<li>jQuery v1.7.1 (2011/11/21)</li>
<li>jQuery UI v1.8.16 (2011/08/18)</li>
</ul>
opBlogPlugin - Bug(バグ) #3986 (Accepted(着手)): v0.9.0からv1.0.2へのマイグレーション後とv1.0.2のクリーンインストール後でDBスキーマに...
http://redmine.openpne.jp/issues/3986
2016-07-27T11:32:27Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>マイグレーションスクリプトの不備により v1.0.2 へのマイグレーションと v1.0.2 のクリーンインストール後で <code>blog_rss_cache</code> テーブルのスキーマに差異が生じている。</p>
<pre>
$ cd plugins/opBlogPlugin
$ git checkout v0.9.0
$ ../../symfony doctrine:build --env=test --all --and-load
$ git checkout v1.0.2
$ ../../symfony openpne:migrate --env=test --no-update-plugin --target=opBlogPlugin
$ echo 'SHOW CREATE TABLE blog_rss_cache\G' | mysql -u root openpne_test > schema-migrate.txt
$ ../../symfony doctrine:build --env=test --all --and-load
$ echo 'SHOW CREATE TABLE blog_rss_cache\G' | mysql -u root openpne_test > schema-rebuild.txt
$ diff -u schema-migrate.txt schema-rebuild.txt
</pre>
<pre><code class="diff syntaxhl"><span class="CodeRay"><span class="line head"><span class="head">--- </span><span class="filename">schema-migrate.txt 2016-07-27 17:45:29.927593471 +0900</span></span>
<span class="line head"><span class="head">+++ </span><span class="filename">schema-rebuild.txt 2016-07-27 17:46:18.371593471 +0900</span></span>
<span class="line change"><span class="change">@@</span> -11,5 +11,7 <span class="change">@@</span></span>
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `date_INDEX_idx` (`date`),
<span class="line delete"><span class="delete">-</span> KEY `member_id_date_idx` (`member_id`,`date`)</span>
<span class="line insert"><span class="insert">+</span> KEY `member_id_date_idx` (`member_id`,`date`),</span>
<span class="line insert"><span class="insert">+</span> KEY `member_id_idx` (`member_id`),</span>
<span class="line insert"><span class="insert">+</span> CONSTRAINT `blog_rss_cache_member_id_member_id` FOREIGN KEY (`member_id`) REFERENCES `member` (`id`)</span>
) ENGINE=InnoDB DEFAULT CHARSET=utf8
</span></code></pre>
<p>不足している箇所:</p>
<ul>
<li>インデックス <code>member_id_idx</code> (Doctrine によって自動で追加されたもの) が追加されていない</li>
<li>外部キー制約 <code>blog_rss_cache_member_id_member_id</code> が追加されていない</li>
</ul>
<p>特に <code>blog_rss_cache_member_id_member_id</code> が存在しない不一致については、v1.0.3 で修正された <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): opBlogPlugin を使用しているメンバーが退会しようとすると500エラーとなる (Fixed(完了))" href="http://redmine.openpne.jp/issues/3473">#3473</a> に関するマイグレーション時に問題となる。<br />具体的には v0.9.0 をクリーンインストールした状態から v1.0.3 にマイグレーションすると下記のエラーが発生して異常終了する。</p>
<pre>
migrating of opBlogPlugin encountered the following errors:
Error #1 - SQLSTATE[42000]: Syntax error or access violation: 1091 Can't DROP 'blog_rss_cache_member_id_member_id'; check that column/key exists. Failing Query: "ALTER TABLE `blog_rss_cache` DROP FOREIGN KEY blog_rss_cache_member_id_member_id"
</pre>
<p>このエラーが発生した場合、マイグレーションが途中まで完了した状態かつ <code>opBlogPlugin_revision</code> が更新されないままロールバックされずに中断されるため、復旧が困難な <strong>非常に面倒な状態になる</strong>。(チケットの優先度を高めにしたのはこのため)</p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p><code>data/migrations/1.0.0/001_add_blog_rss_cache_table.php</code> に必要な定義が不足していたことが原因。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>修正にあたって下記のパターンを考慮する必要がある。</p>
<ul>
<li>v0.9.0 をクリーンインストールした状態から最新版にマイグレーション
<ul>
<li><code>opBlogPlugin_revision</code> が存在しない状態からリビジョン 1, 2, 3, 4 の差分が一度に適用される</li>
<li>この場合、リビジョン 1 を直接修正することで <code>blog_rss_cache_member_id_member_id</code> を追加できる</li>
<li>一方で、リビジョン 1 を修正したとしても、追加された <code>blog_rss_cache_member_id_member_id</code> の存在をリビジョン 4 の up メソッド内でチェックすることはできない</li>
<li>各リビジョンの up メソッド内で呼ばれる addForeignKey などのメソッドは即時に SQL として実行されるものではない(全てのリビジョンの up メソッドが呼ばれた後に一度に実行される)</li>
</ul>
</li>
<li>v0.9.0 をクリーンインストールした状態から一度 v1.0.2 にマイグレーションしてから最新版にマイグレーション
<ul>
<li><code>opBlogPlugin_revision</code> が存在しない状態からリビジョン 1, 2, 3 の差分が適用され、その後リビジョン 4 が適用される</li>
<li>修正前のリビジョン 1 がすでに適用された状態からのマイグレーション</li>
<li>リビジョン 4 が実行される時点では <code>blog_rss_cache_member_id_member_id</code> が存在しない状態</li>
</ul>
</li>
<li>v1.0.2 をクリーンインストールした状態から最新版にマイグレーション
<ul>
<li><code>opBlogPlugin_revision</code> が 3 の状態からリビジョン 4 が適用される</li>
<li>リビジョン 4 が実行される時点では <code>blog_rss_cache_member_id_member_id</code> が存在する状態</li>
</ul>
</li>
<li>最新版をクリーンインストール</li>
</ul>
<p>上記の全てのパターンでインストールまたはマイグレーションが正常に完了し、かつ最終的な <code>blog_rss_cache</code> テーブルのスキーマが同一でなければならない。</p>
OpenPNE 3 - Enhancement(機能追加・改善) #3829 (Invalid(無効)): member_configのpc_address_preを複数の目的で使用すべきではない
http://redmine.openpne.jp/issues/3829
2015-07-09T10:18:43Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-概要"></a>
<h3 >Overview (概要)<a href="#Overview-概要" class="wiki-anchor">¶</a></h3>
<p>現状、member_config の pc_address_pre は下記の 2 つの目的で使用されている。</p>
<ul>
<li>メンバーの新規登録または招待時に入力されたメールアドレスの保持
<ul>
<li>メンバー登録が完了するまで有効</li>
<li>登録が完了すると、name が pc_address_pre から pc_address に変更される。</li>
<li>参照: <a href="https://github.com/openpne/OpenPNE3/blob/OpenPNE-3.8.16/plugins/opAuthMailAddressPlugin/lib/form/opAuthRegisterFormMailAddress.class.php#L52-L60" class="external"><code>opAuthRegisterFormMailAddress::doSave()</code></a></li>
</ul>
</li>
<li>メンバーのメールアドレス変更時に、確認手続きが完了するまでの変更後のメールアドレスの保持
<ul>
<li>変更後のメールアドレスの確認手続きが完了するまで有効</li>
<li>確認手続きが完了すると、name が pc_address_pre から pc_address に変更される。</li>
<li>参照: <a href="https://github.com/openpne/OpenPNE3/blob/OpenPNE-3.8.16/lib/action/opMemberAction.class.php#L301-L317" class="external"><code>opMemberAction::executeConfigComplete()</code></a></li>
</ul></li>
</ul>
<p>このように pc_address_pre が複数の意味を持っている現状では、新規登録の実装に手を加える際にはメールアドレス変更の影響を受けないか、実装やレビュー時に余分に考慮しなければならない。(メールアドレス変更の実装に変更を加える場合も同様)<br />新規登録はユーザーの権限に影響を及ぼすため変更に慎重を要することや、新規登録のフローは <a class="issue tracker-1 status-13 priority-4 priority-default closed" title="Bug(バグ): 自動ログインCookieを有効にしてログインしているブラウザで新規登録を実行すると member/registerInput で404エラーとなる (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3416">#3416</a> のコメントに記載されているように複雑な手順を踏むことから、考慮しなければならない事項をなるべく減らすためにも pc_address_pre を複数の目的で使用することは避けるべきである。</p>
<a name="Spec-仕様"></a>
<h3 >Spec (仕様)<a href="#Spec-仕様" class="wiki-anchor">¶</a></h3>
<p>新規登録かメールアドレス変更のいずれかで pc_address_pre 以外の別の名前を使用するように変更する。<br />ただし、いずれの場合も既存の pc_address_pre を仕様変更後にどのように扱うか考慮する必要がある。(マイグレーション時に pc_address_pre の用途を判別して適切な名前に変更するなど)</p>
OpenPNE 3 - Task(タスク) #2946 (New(新規)): スマートフォンUIのユニットテストを作成する
http://redmine.openpne.jp/issues/2946
2012-04-12T05:59:02Z
Youichi Kimura
kim.upsilon@bucyou.net
<p>スマートフォンUIに対するユニットテストをQUnitで作成する。</p>
OpenPNE 3 - Task(タスク) #2908 (Fixed(完了)): JSON APIのユニットテストを作成する(正常系)
http://redmine.openpne.jp/issues/2908
2012-03-27T10:03:46Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="概要"></a>
<h3 >概要<a href="#概要" class="wiki-anchor">¶</a></h3>
<p>OpenPNE3コアに含まれるJSON APIに対するユニットテストを作成する。</p>
OpenPNE 3 - Enhancement(機能追加・改善) #2822 (Fixed(完了)): sfPropelPlugin をプロジェクトツリーから削除する
http://redmine.openpne.jp/issues/2822
2012-02-16T07:30:02Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-概要"></a>
<h3 >Overview (概要)<a href="#Overview-概要" class="wiki-anchor">¶</a></h3>
<p>sfPropelPlugin は現在使用されていないため削除する。</p>
<a name="Spec-仕様"></a>
<h3 >Spec (仕様)<a href="#Spec-仕様" class="wiki-anchor">¶</a></h3>
<ul>
<li><code>lib/vendor/symfony/lib/plugins/sfPropelPlugin</code> を削除する</li>
<li><code>lib/config/opProjectConfigration.class.php</code> から sfPropelPlugin を無効化するコードを除去する</li>
</ul>
OpenPNE 3 - Enhancement(機能追加・改善) #2698 (Fixed(完了)): OpenPNE3 コアに JSON API を追加する
http://redmine.openpne.jp/issues/2698
2011-12-19T14:06:29Z
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-5 priority-high3 closed" title="Enhancement(機能追加・改善): スマートフォンに対応する (Fixed(完了))" href="http://redmine.openpne.jp/issues/2227">#2227</a>) や外部アプリから利用できるようなJSON APIを追加する</p>
<a name="Spec-仕様"></a>
<h3 >Spec (仕様)<a href="#Spec-仕様" class="wiki-anchor">¶</a></h3>
<p>出力フォーマットは JSON。<br />ユーザごとにOpenPNE内部・外部ともに共通で使用する「API キー」(ユーザ毎に生成されるランダムな文字列)を発行し、これによって認証を行う。</p>
<p><a class="external" href="https://docs.google.com/spreadsheet/ccc?key=0AlEj4P9A6aRKdGp5cjFfaER3N1IzdUNhT3RlTmtUdmc">https://docs.google.com/spreadsheet/ccc?key=0AlEj4P9A6aRKdGp5cjFfaER3N1IzdUNhT3RlTmtUdmc</a></p>
OpenPNE 3 - Enhancement(機能追加・改善) #2617 (Fixed(完了)): prototype.js や script.aculo.us を使用している箇所を全て j...
http://redmine.openpne.jp/issues/2617
2011-11-22T14:07:55Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-概要"></a>
<h3 >Overview (概要)<a href="#Overview-概要" class="wiki-anchor">¶</a></h3>
<p>prototype.js と script.aculo.us が含まれている sfProtoculousPlugin を削除し、OpenPNE3 の JavaScript コード中に含まれている prototype.js または script.aculo.us 依存なコードを jQuery 用に書き換える。</p>
<a name="Spec-仕様"></a>
<h3 >Spec (仕様)<a href="#Spec-仕様" class="wiki-anchor">¶</a></h3>
<ul>
<li>sfProtoculousPlugin を削除</li>
<li>jQuery 及び jQuery UI を同梱する</li>
<li>ビューでのJavaScriptの読み込みで <code>%SF_PROTOTYPE_WEB_DIR%/js/prototype</code> などの代わりに <code>jquery.min.js</code> を使用して jQuery をロードする</li>
<li>既存の JavaScript コードの prototype.js または script.aculo.us 依存なコードを jQuery 用に書き換える</li>
</ul>
OpenPNE 3 - Bug(バグ) #1936 (Fixed(完了)): opAnonymousMember クラスにStrict Standardsエラーが含まれている
http://redmine.openpne.jp/issues/1936
2011-03-01T08:14:16Z
Youichi Kimura
kim.upsilon@bucyou.net
<p>error_reporting に E_STRICT を設定している環境において、以下のエラーが出力される場合があります。</p>
<code><pre>
PHP Strict Standards: Declaration of opAnonymousMember::getConfig() should be compatible with that of Member::getConfig() in /home/upsilon/git/openpne3/sqlite/lib/user/opAnonymousMember.class.php on line 158
Strict Standards: Declaration of opAnonymousMember::getConfig() should be compatible with that of Member::getConfig() in /home/upsilon/git/openpne3/sqlite/lib/user/opAnonymousMember.class.php on line 158
PHP Strict Standards: Declaration of opAnonymousMember::delete() should be compatible with that of Member::delete() in /home/upsilon/git/openpne3/sqlite/lib/user/opAnonymousMember.class.php on line 158
Strict Standards: Declaration of opAnonymousMember::delete() should be compatible with that of Member::delete() in /home/upsilon/git/openpne3/sqlite/lib/user/opAnonymousMember.class.php on line 158
PHP Strict Standards: Declaration of opAnonymousMember::save() should be compatible with that of opDoctrineRecord::save() in /home/upsilon/git/openpne3/sqlite/lib/user/opAnonymousMember.class.php on line 158
Strict Standards: Declaration of opAnonymousMember::save() should be compatible with that of opDoctrineRecord::save() in /home/upsilon/git/openpne3/sqlite/lib/user/opAnonymousMember.class.php on line 158
</pre></code>