OpenPNE Issue Tracking System: チケット
http://redmine.openpne.jp/
http://redmine.openpne.jp/favicon.ico
2016-07-27T11:32:27Z
OpenPNE Issue Tracking System
Redmine
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 - 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>
opOpenSocialPlugin - Bug(バグ) #1932 (Won't fix(対応せず)): applicationActions::executeInvitePost() 内のコ...
http://redmine.openpne.jp/issues/1932
2011-02-25T06:48:00Z
Youichi Kimura
kim.upsilon@bucyou.net
<p>applicationActions::executeInvitePost() メソッド内の処理で、result と resultIds を混同している箇所があるため application/invitePost のレスポンスが正しい値になりません。</p>
opWikifyPlugin - Bug(バグ) #1891 (Fixed(完了)): URLの「#」や「/」などの文字もエンコードされてしまう
http://redmine.openpne.jp/issues/1891
2011-01-24T12:25:02Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>リンク構文を使用して <code>[[aaa#bbb]]</code> や <code>[[aaa/bbb]]</code> のように記述すると、 <code>http://example.com/wiki/aaa%23bbb</code> や <code>http://example.com/wiki/aaa%2Fbbb</code> のように変換されてしまい、アンカーやサブページ(MediaWiki)などが正しく機能しない。</p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>PHPのurlencode()が「#」や「/」もエスケープするため、これらの文字を分けてエンコードする必要がある。</p>
opWikifyPlugin - Bug(バグ) #1890 (New(新規)): 「最新日記」ページで日記の本文要約にタグが出力されてしまう
http://redmine.openpne.jp/issues/1890
2011-01-24T12:05:28Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>日記の先頭近くにリンク構文が含まれていると、最新日記ページの日記の本文要約に「<a class="wikilink" target="_blank" href="http:// ...」とタグが出力されてしまう。<br />ただしエスケープされているため脆弱性ではない。</p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>OpenPNE3のコアに対して行った <a class="external" href="https://github.com/upsilon/OpenPNE3/commit/ace43b7">https://github.com/upsilon/OpenPNE3/commit/ace43b7</a> の機能追加では、イベントの受信先が $isStrip の値を知ることができないため常にタグを出力することになる。<br /><a class="issue tracker-2 status-1 priority-4 priority-default" title="Enhancement(機能追加・改善): 日記のコメントやコミュニティのトピックなどでリンク構文を使うことができない (New(新規))" href="http://redmine.openpne.jp/issues/1889">#1889</a> の修正を行うことでも解決できるが、いずれにせよpull-requestは修正する必要がある。</p>
OpenPNE 3 - Bug(バグ) #1855 (New(新規)): cache以下のディレクトリがユーザ毎に完全に分離できていない
http://redmine.openpne.jp/issues/1855
2010-12-17T07:01:26Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>symfony コマンドを使用してタスクを実行すると、キャッシュディレクトリにユーザ毎に生成されるディレクトリを無視して ./cache/config/OpenPNE.yml.php や ./cache/project_autoload.cache のようなファイルが生成されてしまいます。</p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>ユーザ毎の sf_cache_dir の変更は opApplicationConfiguration::setCacheDir() で行われていますが、symfony コマンドでのタスクの実行ではタスクが実行されるまでの初期化中に opApplicationConfiguration が使われていません。そのため、sf_cache_dir への変更が行われないままキャッシュが生成されてます。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>opApplicationConfiguration::setCacheDir() メソッドを opProjectConfiguration クラスに移動する</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>
opChatPlugin - Bug(バグ) #1460 (Fixed(完了)): チャットルーム一覧で開始時間前のチャットルームが最下位に表示される
http://redmine.openpne.jp/issues/1460
2010-07-31T14:45:52Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>開始時間前のチャットルームがチャットルーム一覧で最下位に表示されてしまい、完全に最終更新日順となっていない。</p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>ChatContentテーブルのupdated_atを元にチャットルームを並び替えているため、書き込みがまったく無い開始時間前のチャットルームが最下位になってしまう。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
opChatPlugin - Bug(バグ) #1459 (Fixed(完了)): チャットルーム一覧で他のメンバーのキャッシュが表示されてしまう
http://redmine.openpne.jp/issues/1459
2010-07-31T14:41:22Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>チャットルーム一覧にアクセスしたタイミングによって他人が作成したチャットルームに「編集」リンクが表示されたり、自分が作成したチャットルームであるにもかかわらず「編集」リンクが表示されなかったりする。</p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
opChatPlugin - Bug(バグ) #1458 (Fixed(完了)): チャットルームの開始時間になってもチャットルーム一覧が更新されない
http://redmine.openpne.jp/issues/1458
2010-07-31T14:38:26Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>チャットルーム作成時に設定した開始時間を過ぎてもチャットルーム一覧が更新されず、表示が開始時間前のままで入室できない。</p>
<p>直接、当該チャットルームのURLにアクセスすれば入室自体はできる。</p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
opChatPlugin - Bug(バグ) #829 (Fixed(完了)): チャットの更新中に次の更新が開始されてしまう場合がある
http://redmine.openpne.jp/issues/829
2010-03-08T10:48:46Z
Youichi Kimura
kim.upsilon@bucyou.net
<p>サーバーの応答がチャットの更新間隔に追いつけなくなる(例: 5秒間隔で更新されるのに対してレスポンスが8秒かかる)と、読み込みが終わる前に次の更新が始まってしまいサーバーの負荷が次第に高くなってしまう。</p>
opChatPlugin - Bug(バグ) #818 (Fixed(完了)): オープン中のチャットルームで過去ログが閲覧できない
http://redmine.openpne.jp/issues/818
2010-03-07T15:44:49Z
Youichi Kimura
kim.upsilon@bucyou.net
opRichTextareaSyntaxHighlightP - Bug(バグ) #777 (New(新規)): 表示するコード中にURLが含まれているとaタグに置き換わってしまう
http://redmine.openpne.jp/issues/777
2010-03-03T09:48:17Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="手順"></a>
<h3 >手順<a href="#手順" class="wiki-anchor">¶</a></h3>
<ol>
<li>日記作成画面でタイトルを入れ、本文に<br /><pre><code><op:source lang="html">
http://www.example.com/
</op:source>
</code></pre>と入力する</li>
<li>「確定」をクリック</li>
<li>日記本文に<br /><pre><code><a href="http://www.example.com/" target="_blank">http://www.example.com/</a>
</code></pre>と表示されます</li>
</ol>
OpenPNE 3 - Bug(バグ) #690 (Fixed(完了)): util.js内のopCookie.get()がCookieを取得できない場合がある
http://redmine.openpne.jp/issues/690
2010-02-18T18:01:27Z
Youichi Kimura
kim.upsilon@bucyou.net
<p>opCookie.get()でdocument.cookieの1番目にある値を取り出すことができません。</p>
<a name="例"></a>
<h3 >例<a href="#例" class="wiki-anchor">¶</a></h3>
<p>document.cookieの値が<br /><pre>aaa=AAA; bbb=BBB; ccc=CCC
</pre>のようになっている場合、bbbとcccは問題なく取得できるが、aaaの値のみ取得することができない</p>
OpenPNE 3 - Bug(バグ) #633 (Fixed(完了)): opValidatorDate with date_time option don't return time cor...
http://redmine.openpne.jp/issues/633
2010-02-13T09:29:29Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-概要"></a>
<h3 >Overview (概要)<a href="#Overview-概要" class="wiki-anchor">¶</a></h3>
<p>opValidatorDateをwith_timeオプション付きで使用したとき、時刻に「フォームで入力した時刻 + 現在時刻」の値が設定されてしまいます。</p>
<a name="Cause-原因"></a>
<h3 >Cause (原因)<a href="#Cause-原因" class="wiki-anchor">¶</a></h3>
<p>配列で時刻を受け取った時、opValidatorDateの挙動が正しくありません。</p>
<pre><code>122 $clean->modify('+'.(isset($value['hour']) ? intval($value['hour']) : 0).'hour');
123 $clean->modify('+'.(isset($value['second']) ? intval($value['second']) : 0).'second');
</code></pre>
<p>ここは、 modify()で加算するのではなく、setTime()で時刻をセットするのが正しいでしょう。</p>
<a name="Reproduction-method-再現方法"></a>
<h3 >Reproduction method (再現方法)<a href="#Reproduction-method-再現方法" class="wiki-anchor">¶</a></h3>
<p>検証コード</p>
<pre><code>$v = new opValidatorDate(array('with_time' => true));
var_dump($v->clean(array('year' => 1989, 'month' => 1, 'day' => 8, 'hour' => 10, 'minute' => 2, 'second' => 10)));
</code></pre>
<p>結果として、時刻が正しくない結果が帰ってきます。</p>
<p>(上記の場合、現時時刻に 10時間と10秒が加算される)</p>
<a name="Environment-環境"></a>
<h3 >Environment (環境)<a href="#Environment-環境" class="wiki-anchor">¶</a></h3>
<ul>
<li>OpenPNE3.5.x</li>
<li>OpenPNE3.4.x</li>
<li>OpenPNE3.2.x</li>
<li>OpenPNE3.0.x</li>
</ul>