OpenPNE Issue Tracking System: チケット
http://redmine.openpne.jp/
http://redmine.openpne.jp/favicon.ico
2017-04-13T05:59:31Z
OpenPNE Issue Tracking System
Redmine
OpenPNE 3 - Bug(バグ) #4187 (Fixed(完了)): Class 'sfPearRest13' not found のエラーによりプラグインのインストールに失敗する
http://redmine.openpne.jp/issues/4187
2017-04-13T05:59:31Z
Youichi Kimura
kim.upsilon@bucyou.net
<p>master ブランチ (<a class="changeset" title="Merge remote-tracking branches 'upsilon/update-pear', 'upsilon/t-4178' and 'upsilon/t-4179'" href="http://redmine.openpne.jp/projects/op3/repository/revisions/8cbcdac4e0716ccfe0ed2f0dd1ae3b77175924fb">8cbcdac4</a>) にて、opPlugin:install タスクを実行すると一部のプラグインで Fatal error により異常終了する問題が起きている。</p>
<pre>
$ php symfony opPlugin:install opTimelinePlugin -r 1.2.6.1
PHP Warning: Declaration of sfPearRest::downloadHttp($url, $lastmodified = NULL, $accept = false) should be compatible with PEAR_REST::downloadHttp($url, $lastmodified = NULL, $accept = false, $channel = false) in /vagrant/lib/vendor/symfony/lib/plugin/sfPearRest.class.php on line 30
PHP Notice: Only variables should be passed by reference in /vagrant/lib/vendor/symfony/lib/plugin/sfSymfonyPluginManager.class.php on line 186
PHP Notice: Only variables should be passed by reference in /vagrant/lib/plugin/opPluginManager.class.php on line 220
>> plugin installing plugin "opTimelinePlugin"
PHP Warning: Declaration of opPluginDownloader::getDependency2Object(&$c, $i, $p, $s) should be compatible with & PEAR_Downloader::getDependency2Object(&$c, $i, $p, $s) in /vagrant/lib/plugin/opPluginDownloader.class.php on line 18
>> sfPearFrontendPlugin downloading opTimelinePlugin-1.2.6.1.tgz ...
>> sfPearFrontendPlugin Starting to download opTimelinePlugin-1.2.6.1.tgz (235,547
>> sfPearFrontendPlugin bytes)
>> sfPearFrontendPlugin .
[...]
>> sfPearFrontendPlugin .
>> sfPearFrontendPlugin ...done: 235,547 bytes
>> sfPearFrontendPlugin WARNING: channel "plugins.openpne.jp" has updated its
>> sfPearFrontendPlugin protocols, use "pear channel-update plugins.openpne.jp" to
>> sfPearFrontendPlugin update
PHP Fatal error: Uncaught Error: Class 'sfPearRest13' not found in /vagrant/lib/vendor/symfony/lib/plugin/sfPearConfig.class.php:27
Stack trace:
#0 /vagrant/lib/vendor/PEAR/PEAR/Downloader.php(1022): sfPearConfig->getREST('1.3', Array)
#1 /vagrant/lib/vendor/PEAR/PEAR/Downloader/Package.php(637): PEAR_Downloader->_getDepPackageDownloadUrl(Array, Array)
#2 /vagrant/lib/vendor/PEAR/PEAR/Downloader/Package.php(466): PEAR_Downloader_Package->_detect2Dep(Array, Array, 'required', Array)
#3 /vagrant/lib/vendor/PEAR/PEAR/Downloader/Package.php(380): PEAR_Downloader_Package->_detect2(Array, Array, Array, Array)
#4 /vagrant/lib/vendor/PEAR/PEAR/Downloader.php(412): PEAR_Downloader_Package->detectDependencies(Array)
#5 /vagrant/lib/vendor/symfony/lib/plugin/sfPluginManager.class.php(207): PEAR_Downloader->download(Array)
#6 /vagrant/lib/vendor/symfony/lib/plugin/sfPluginManager.class.php(112): sfPluginManager->doInstallPlugin('opTimelinePlugi...', Array)
#7 /vagrant/lib/vendor/symfony/lib/task/plugin/sfPluginInstallTask.class.php(122): in /vagrant/lib/vendor/symfony/lib/plugin/sfPearConfig.class.php on line 27
</pre>
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>
opFavoritePlugin - Bug(バグ) #4163 (New(新規)): テスト用fixtureの記述に誤りがありロード時にエラーが発生する
http://redmine.openpne.jp/issues/4163
2017-02-17T08:58:04Z
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 plugins/opFavoritePlugin/test/functional/pc_frontend/favoriteActionsTest.php
PHP Fatal error: Uncaught exception 'Doctrine_Connection_Mysql_Exception' with message 'SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '1487263613' for column 'date' 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 blo...', Array)
#3 /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/UnitOfWork.php(647): Doctrine_Connection->insert(Object(BlogRssCacheTable), 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 href="https://github.com/tejimaya/opFavoritePlugin/blob/bca2c9a470adc6e81003f69d9135a5507227e139/test/fixtures/004_import_blog_rss_cache.yml#L14" class="external">test/fixtures/004_import_blog_rss_cache.yml#L14</a>:<br /><pre><code class="yaml syntaxhl"><span class="CodeRay"><span class="key">BlogRssCache</span>:
<span class="key">first_member_blog_rss_cache</span>:
<span class="key">Member</span>: <span class="string"><span class="content">third_member</span></span>
<span class="key">title</span>: <span class="string"><span class="delimiter">"</span><span class="content"><&\"'>BlogRssCache.title ESCAPING HTML TEST DATA</span><span class="delimiter">"</span></span>
<span class="key">description</span>: <span class="string"><span class="delimiter">"</span><span class="content">description</span><span class="delimiter">"</span></span>
<span class="key">link</span>: <span class="string"><span class="delimiter">"</span><span class="content">http://localhost/</span><span class="delimiter">"</span></span>
<span class="key">date</span>: <span class="string"><span class="content"><?php echo date("Y-m-d H:i:s\n") ?></span></span>
</span></code></pre></p>
<p>上記のように記述された fixture は以下のような YAML を出力します。</p>
<pre><code class="yaml syntaxhl"><span class="CodeRay"><span class="key">BlogRssCache</span>:
<span class="key">first_member_blog_rss_cache</span>:
<span class="key">Member</span>: <span class="string"><span class="content">third_member</span></span>
<span class="key">title</span>: <span class="string"><span class="delimiter">"</span><span class="content"><&\"'>BlogRssCache.title ESCAPING HTML TEST DATA</span><span class="delimiter">"</span></span>
<span class="key">description</span>: <span class="string"><span class="delimiter">"</span><span class="content">description</span><span class="delimiter">"</span></span>
<span class="key">link</span>: <span class="string"><span class="delimiter">"</span><span class="content">http://localhost/</span><span class="delimiter">"</span></span>
<span class="key">date</span>: <span class="string"><span class="content">2017-02-27 01:46:53</span></span>
</span></code></pre>
<p>文字列としてダブルクオーテーションで囲われていない日付は、YAML のロード時にタイムスタンプの数値に置換されるため、<code>'1487263613'</code> が不正な形式の日付であるとしてエラーが発生する。</p>
opMessagePlugin - Bug(バグ) #4162 (Fixed(完了)): MySQLのSTRICT_TRANS_TABLESが有効な状態でテスト用fixtureのロードに失敗する
http://redmine.openpne.jp/issues/4162
2017-02-17T08:48:26Z
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 の読み込みを必要とするテストコードを実行すると下記のエラーが発生する:</p>
<pre>
$ php plugins/opMessagePlugin/test/unit/model/SendMessageDataTest.php
PHP Fatal error: Uncaught exception 'Doctrine_Connection_Mysql_Exception' with message 'SQLSTATE[HY000]: General error: 1364 Field 'message_id' doesn't have a default value' 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 del...', Array)
#3 /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/UnitOfWork.php(647): Doctrine_Connection->insert(Object(DeletedMessageTable), Array)
#4 /vagrant/lib/ven in /vagrant/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 class="source" href="http://redmine.openpne.jp/projects/plg-message/repository/revisions/6eef6b49/entry/test/fixtures/010_message.yml#L106">source:test/fixtures/010_message.yml@6eef6b49#L106</a>:<br /><pre><code class="yaml syntaxhl"><span class="CodeRay"><span class="key">DeletedMessage</span>:
<span class="key">dust_delete_mesage</span>:
<span class="key">id</span>: <span class="string"><span class="content">1</span></span>
<span class="key">Member</span>: <span class="string"><span class="content">first_member</span></span>
<span class="key">message_send_list_id</span>: <span class="string"><span class="content">3</span></span>
<span class="key">is_deleted</span>: <span class="string"><span class="content">0</span></span>
</span></code></pre></p>
<p>上記の fixture で、NOT NULL 制約のある deleted_message.message_id に値がセットされていないことが原因。</p>
opDiaryPlugin - Bug(バグ) #4161 (New(新規)): MySQLのSTRICT_TRANS_TABLESが有効な状態でテスト用fixtureのロードに失敗する
http://redmine.openpne.jp/issues/4161
2017-02-17T08:36:57Z
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 の読み込みを必要とするテストコードを実行すると下記のエラーが発生する:</p>
<pre>
$ php plugins/opDiaryPlugin/test/unit/model/DiaryTest.php
[...]
Fatal error: Uncaught exception 'Doctrine_Connection_Mysql_Exception' with message 'SQLSTATE[HY000]: General error: 1364 Field 'last_comment_time' doesn't have a default value' 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 dia...', Array)
#3 /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/UnitOfWork.php(647): Doctrine_Connection->insert(Object(DiaryCommentUpdateTable), Array)
#4 /vagr in /vagrant/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/opDiaryPlugin/blob/a72db784a0dc3fea8f3a9d40a274c11db6253213/test/fixtures/diaries.yml#L110-L111" class="external">test/fixtures/diaries.yml#L110-L111</a>:<br /><pre><code class="php syntaxhl"><span class="CodeRay"><span class="inline-delimiter"><?php</span> <span class="keyword">for</span> (<span class="local-variable">$i</span> = <span class="integer">1</span>; <span class="local-variable">$i</span> <= <span class="integer">60</span>; <span class="local-variable">$i</span>++): <span class="inline-delimiter">?></span>
diary_for_member1_<span class="inline-delimiter"><?php</span> <span class="predefined">echo</span> <span class="local-variable">$i</span> <span class="inline-delimiter">?></span>:
Member: member1
title: "title:<span class="inline-delimiter"><?php</span> <span class="predefined">echo</span> <span class="local-variable">$i</span> <span class="inline-delimiter">?></span> by member1"
body: "body:<span class="inline-delimiter"><?php</span> <span class="predefined">echo</span> <span class="local-variable">$i</span> <span class="inline-delimiter">?></span> by member1"
created_at: "2009-03-<span class="inline-delimiter"><?php</span> <span class="predefined">printf</span>(<span class="string"><span class="delimiter">'</span><span class="content">%02d</span><span class="delimiter">'</span></span>, <span class="local-variable">$i</span>) <span class="inline-delimiter">?></span> 10:00:00"
updated_at: "2009-03-<span class="inline-delimiter"><?php</span> <span class="predefined">printf</span>(<span class="string"><span class="delimiter">'</span><span class="content">%02d</span><span class="delimiter">'</span></span>, <span class="local-variable">$i</span>) <span class="inline-delimiter">?></span> 10:00:00"
<span class="inline-delimiter"><?php</span> <span class="keyword">endfor</span>; <span class="inline-delimiter">?></span>
</span></code></pre></p>
<p>上記のように記述された fixture は次のような YAML を出力します。</p>
<pre><code class="yaml syntaxhl"><span class="CodeRay"> <span class="key">diary_for_member1_1</span>:
<span class="key">Member</span>: <span class="string"><span class="content">member1</span></span>
<span class="key">title</span>: <span class="string"><span class="delimiter">"</span><span class="content">title:1 by member1</span><span class="delimiter">"</span></span>
<span class="key">body</span>: <span class="string"><span class="delimiter">"</span><span class="content">body:1 by member1</span><span class="delimiter">"</span></span>
<span class="key">created_at</span>: <span class="string"><span class="delimiter">"</span><span class="content">2009-03-01 10:00:00</span><span class="delimiter">"</span></span>
<span class="key">updated_at</span>: <span class="string"><span class="delimiter">"</span><span class="content">2009-03-01 10:00:00</span><span class="delimiter">"</span></span>
<span class="head"><span class="head">...</span></span>
<span class="key">diary_for_member1_60</span>:
<span class="key">Member</span>: <span class="string"><span class="content">member1</span></span>
<span class="key">title</span>: <span class="string"><span class="delimiter">"</span><span class="content">title:60 by member1</span><span class="delimiter">"</span></span>
<span class="key">body</span>: <span class="string"><span class="delimiter">"</span><span class="content">body:60 by member1</span><span class="delimiter">"</span></span>
<span class="key">created_at</span>: <span class="string"><span class="delimiter">"</span><span class="content">2009-03-60 10:00:00</span><span class="delimiter">"</span></span>
<span class="key">updated_at</span>: <span class="string"><span class="delimiter">"</span><span class="content">2009-03-60 10:00:00</span><span class="delimiter">"</span></span>
</span></code></pre>
<p>created_at および updated_at にセットされる <code>"2009-03-60 10:00:00"</code> は不正な日付のため、<code>STRICT_TRANS_TABLES</code> が有効な MySQL ではエラーが発生する。</p>
opCommunityTopicPlugin - Bug(バグ) #4160 (New(新規)): テスト用fixtureの記述に誤りがありロード時にエラーが発生する
http://redmine.openpne.jp/issues/4160
2017-02-17T08:24:55Z
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 plugins/opCommunityTopicPlugin/test/unit/model/CommunityTopicTest.php
PHP Fatal error: Uncaught exception 'Doctrine_Connection_Mysql_Exception' with message 'SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '2017-02-17 open_date_comment: 'あかさたな'' for column 'open_date' 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 com...', Array)
#3 /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/UnitOfWork.php(647): Doctrine_C 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 href="https://github.com/tejimaya/opCommunityTopicPlugin/blob/1176429425ca9bca6557fe281321fd59eaae037d/test/fixtures/999_test_data.yml#L360" class="external">test/fixtures/999_test_data.yml#L360</a>:<br /><pre><code class="yaml syntaxhl"><span class="CodeRay"> <span class="error">community_event_a_<?php echo $i ?>:</span>
<span class="key">Community</span>: <span class="string"><span class="content">community_a</span></span>
<span class="key">Member</span>: <span class="string"><span class="content">member_1</span></span>
<span class="key">name</span>: <span class="string"><span class="content">'イベントナンバー <?php echo $i ?>'</span></span>
<span class="key">body</span>: <span class="string"><span class="content">'こんにちは <?php echo $i ?>'</span></span>
<span class="key">open_date</span>: <span class="string"><span class="content"><?php echo date('Y-m-d', time())?></span></span>
<span class="key">open_date_comment</span>: <span class="string"><span class="content">'あかさたな'</span></span>
<span class="key">area</span>: <span class="string"><span class="content">'福岡県'</span></span>
</span></code></pre></p>
<p>上記のように記述された fixture は以下のような YAML を出力します。</p>
<pre><code class="yaml syntaxhl"><span class="CodeRay"> <span class="key">community_event_a_1</span>:
<span class="key">Community</span>: <span class="string"><span class="content">community_a</span></span>
<span class="key">Member</span>: <span class="string"><span class="content">member_1</span></span>
<span class="key">name</span>: <span class="string"><span class="content">'イベントナンバー 1'</span></span>
<span class="key">body</span>: <span class="string"><span class="content">'こんにちは 1'</span></span>
<span class="key">open_date</span>: <span class="string"><span class="content">2017-02-17 open_date_comment: 'あかさたな'</span></span>
<span class="key">area</span>: <span class="string"><span class="content">'福岡県'</span></span>
</span></code></pre>
<p>これは PHP タグの仕様で、<code>?></code> と後続する改行文字を含めて除去されるためです。そして、open_date にセットされる日付が不正な文字列であるとしてエラーが発生します。</p>
opMessagePlugin - Bug(バグ) #4157 (Fixed(完了)): MySQLのSTRICT_TRANS_TABLESが有効な状態でメッセージの削除を行うとエラー
http://redmine.openpne.jp/issues/4157
2017-02-17T03:41:47Z
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 'message_send_list_id' doesn't have a default value
</pre>
<p>受信メッセージの削除 (「ゴミ箱」への移動) を行うと下記のエラーが発生する:</p>
<pre>
SQLSTATE[HY000]: General error: 1364 Field 'message_id' doesn't have a default value
</pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<a name="送信済みメッセージの削除"></a>
<h4 >送信済みメッセージの削除<a href="#送信済みメッセージの削除" class="wiki-anchor">¶</a></h4>
<pre><code class="sql syntaxhl"><span class="CodeRay"><span class="class">INSERT</span> <span class="class">INTO</span> deleted_message (is_deleted, message_id, member_id, created_at, updated_at) <span class="keyword">VALUES</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">1</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">2017-02-16 21:12:14</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">2017-02-16 21:12:14</span><span class="delimiter">'</span></span>)
</span></code></pre>
<p>上記のクエリで、NOT NULL 制約のある message_send_list_id に値がセットされていないことが原因。</p>
<a name="受信メッセージの削除"></a>
<h4 >受信メッセージの削除<a href="#受信メッセージの削除" class="wiki-anchor">¶</a></h4>
<pre>
INSERT INTO deleted_message (is_deleted, message_send_list_id, member_id, created_at, updated_at) VALUES ('0', '1', '2', '2017-02-16 21:18:43', '2017-02-16 21:18:43')
</pre>
<p>上記のクエリで、NOT NULL 制約のある message_id に値がセットされていないことが原因。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>修正内容を記入</p>
opWebAPIPlugin - Bug(バグ) #4156 (New(新規)): MySQLのONLY_FULL_GROUP_BYが有効な状態でコミュニティ一覧のフィードを取得するとエラー
http://redmine.openpne.jp/issues/4156
2017-02-16T11:33:52Z
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>コミュニティ一覧のフィード (<code>/api.php/feeds/community</code>) を取得すると下記のエラーが発生する:</p>
<pre>
SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'openpne.c3.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by.
</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">SELECT</span> <span class="keyword">DISTINCT</span> c3.id
<span class="keyword">FROM</span> community c3
<span class="keyword">LEFT</span> <span class="keyword">JOIN</span> community_member c4 <span class="keyword">ON</span> c3.id = c4.community_id
<span class="keyword">GROUP</span> <span class="keyword">BY</span> c4.community_id
<span class="keyword">ORDER</span> <span class="keyword">BY</span> c3.created_at <span class="directive">DESC</span>
LIMIT <span class="integer">25</span>
</span></code></pre>
<p>上記のクエリで、<code>c3.id</code> が GROUP BY に含まれていないためエラーが発生している。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>修正内容を記入</p>
opRankingPlugin - Bug(バグ) #4155 (New(新規)): MySQLのONLY_FULL_GROUP_BYが有効な状態でコミュニティ盛り上がり度ランキング画面を表示す...
http://redmine.openpne.jp/issues/4155
2017-02-16T07:20:26Z
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[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'openpne.c.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
</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">SELECT</span> c.id <span class="keyword">AS</span> c__id, c2.id <span class="keyword">AS</span> c2__id, c2.community_id <span class="keyword">AS</span> c2__1, <span class="predefined">COUNT</span>(*) <span class="keyword">AS</span> c__0, c2.community_id <span class="keyword">AS</span> c2__1
<span class="keyword">FROM</span> community_topic_comment c
<span class="keyword">LEFT</span> <span class="keyword">JOIN</span> community_topic c2 <span class="keyword">ON</span> c.community_topic_id = c2.id
<span class="keyword">WHERE</span> (c.created_at >= <span class="string"><span class="delimiter">'</span><span class="content">2017-02-15</span><span class="delimiter">'</span></span> <span class="keyword">AND</span> c.created_at < <span class="string"><span class="delimiter">'</span><span class="content">2017-02-16</span><span class="delimiter">'</span></span>)
<span class="keyword">GROUP</span> <span class="keyword">BY</span> c2.community_id
<span class="keyword">ORDER</span> <span class="keyword">BY</span> <span class="predefined">COUNT</span>(*) <span class="directive">DESC</span>
LIMIT <span class="integer">10</span>
</span></code></pre>
<p>上記のクエリで、<code>c.id</code> が GROUP BY に含まれていないためエラーが発生している。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>修正内容を記入</p>
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 - 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>