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 - 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>
opChatPlugin - Enhancement(機能追加・改善) #1976 (New(新規)): ウィンドウを閉じた場合などに自動でログアウトさせる
http://redmine.openpne.jp/issues/1976
2011-03-25T15:00:12Z
Youichi Kimura
kim.upsilon@bucyou.net
<p>JavaScriptのunloadイベントを使ってクローズを検知する</p>
opChatPlugin - Enhancement(機能追加・改善) #1975 (New(新規)): ページタイトルに未読件数を表示して欲しい
http://redmine.openpne.jp/issues/1975
2011-03-25T14:59:13Z
Youichi Kimura
kim.upsilon@bucyou.net
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>
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>
opWikifyPlugin - Enhancement(機能追加・改善) #1889 (New(新規)): 日記のコメントやコミュニティのトピックなどでリンク構文を使うことができない
http://redmine.openpne.jp/issues/1889
2011-01-24T11:27:23Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-概要"></a>
<h3 >Overview (概要)<a href="#Overview-概要" class="wiki-anchor">¶</a></h3>
<p>現時点では日記の本文とアクティビティの投稿にしか対応していない。<br />広い範囲に対応させるためにはop_activity.filter_bodyやop_decoration.filter_htmlを使うのではなく、op_auto_link_textから発生させるイベントを新たに作る必要がある。</p>
<a name="Spec-仕様"></a>
<h3 >Spec (仕様)<a href="#Spec-仕様" class="wiki-anchor">¶</a></h3>
<p>OpenPNE3のコアにop_auto_link_textから発生させるイベントを新たに作成する。<br />プラグイン側では、新たに作成したイベントだけを受け取るようにする。(フィルタを二重に通すことを防ぐため)</p>
opWikifyPlugin - Enhancement(機能追加・改善) #1888 (New(新規)): interwiki.ymlで1つのprefixに対してPC向けとmobile向けでU...
http://redmine.openpne.jp/issues/1888
2011-01-24T11:14:57Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-概要"></a>
<h3 >Overview (概要)<a href="#Overview-概要" class="wiki-anchor">¶</a></h3>
<p>interwiki.ymlでリンク先の設定をpc_frontendとmobile_frontendで書き分けられない。<br />例えば、Wikipediaへのリンクを設定する場合に「pc_frontendからは <a class="external" href="http://ja.wikipedia.org/wiki/%s">http://ja.wikipedia.org/wiki/%s</a> へのリンクに変換し、mobile_frontendからは <a class="external" href="http://ja.m.wikipedia.org/wiki/%s">http://ja.m.wikipedia.org/wiki/%s</a> へのリンクへ変換する」といった設定をすることができない。</p>
<a name="Spec-仕様"></a>
<h3 >Spec (仕様)<a href="#Spec-仕様" class="wiki-anchor">¶</a></h3>
<pre>
- wp:
url: 'http://ja.wikipedia.org/wiki/%s'
enable_pc: true
enable_mobile: false
- wp:
url: 'http://ja.m.wikipedia.org/wiki/%s'
enable_pc: false
enable_mobile: true
</pre><br />納得の行く書き方が思いつかない。思いついたら着手する。
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 - Enhancement(機能追加・改善) #1747 (New(新規)): [PATCH] <op:*>タグ以外の記述もプラグインから装飾できるようにしてほしい
http://redmine.openpne.jp/issues/1747
2010-10-27T12:41:50Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="概要"></a>
<h3 >概要<a href="#概要" class="wiki-anchor">¶</a></h3>
<p>プラグインから<op:*>タグ以外の独自の文法に対しても装飾できるようにしたい</p>
<a name="仕様"></a>
<h3 >仕様<a href="#仕様" class="wiki-anchor">¶</a></h3>
<p>opWidgetFormRichTextareaOpenPNE::toHtml() からfilter型イベントを送出し、プラグイン側で装飾を施す。</p>
opChatPlugin - Enhancement(機能追加・改善) #1024 (New(新規)): チャットの携帯対応
http://redmine.openpne.jp/issues/1024
2010-05-04T19:15:39Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="概要"></a>
<h3 >概要<a href="#概要" class="wiki-anchor">¶</a></h3>
<p>携帯からチャットへ参加できるようにする</p>
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>