OpenPNE Issue Tracking System: チケット
http://redmine.openpne.jp/
http://redmine.openpne.jp/favicon.ico
2016-11-17T08:11:18Z
OpenPNE Issue Tracking System
Redmine
opCommunityTopicPlugin - Bug(バグ) #4054 (Fixed(完了)): 管理画面のトピックリストなどの画面でtr要素の閉じタグが不足している
http://redmine.openpne.jp/issues/4054
2016-11-17T08:11:18Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>管理画面のトピックリスト (/pc_backend.php/communityTopic/topicList) の検索フォームは下記のようにマークアップされている:</p>
<pre><code class="html syntaxhl"><span class="CodeRay"><span class="tag"><form</span> <span class="attribute-name">method</span>=<span class="string"><span class="delimiter">"</span><span class="content">get</span><span class="delimiter">"</span></span> <span class="attribute-name">action</span>=<span class="string"><span class="delimiter">"</span><span class="content">/master/pc_backend.php/communityTopic/topicList</span><span class="delimiter">"</span></span><span class="tag">></span><span class="tag"><table></span>
<span class="tag"><tr></span>
<span class="tag"><th></span><span class="tag"><label</span> <span class="attribute-name">for</span>=<span class="string"><span class="delimiter">"</span><span class="content">communityTopic_id</span><span class="delimiter">"</span></span><span class="tag">></span>トピックID<span class="tag"></label></span><span class="tag"></th></span>
<span class="tag"><td></span><span class="tag"><input</span> <span class="attribute-name">type</span>=<span class="string"><span class="delimiter">"</span><span class="content">text</span><span class="delimiter">"</span></span> <span class="attribute-name">id</span>=<span class="string"><span class="delimiter">"</span><span class="content">communityTopic_id</span><span class="delimiter">"</span></span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">"</span><span class="content">communityTopic[id][text]</span><span class="delimiter">"</span></span> <span class="attribute-name">value</span>=<span class="string"><span class="delimiter">"</span><span class="delimiter">"</span></span> <span class="tag">/></span><span class="tag"><br</span> <span class="tag">/></span> <span class="tag"></td></span>
<span class="tag"></tr></span>
<span class="tag"><tr></span>
<span class="tag"><th></span><span class="tag"><label</span> <span class="attribute-name">for</span>=<span class="string"><span class="delimiter">"</span><span class="content">communityTopic_name</span><span class="delimiter">"</span></span><span class="tag">></span>トピックタイトル<span class="tag"></label></span><span class="tag"></th></span>
<span class="tag"><td></span><span class="tag"><input</span> <span class="attribute-name">type</span>=<span class="string"><span class="delimiter">"</span><span class="content">text</span><span class="delimiter">"</span></span> <span class="attribute-name">id</span>=<span class="string"><span class="delimiter">"</span><span class="content">communityTopic_name</span><span class="delimiter">"</span></span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">"</span><span class="content">communityTopic[name][text]</span><span class="delimiter">"</span></span> <span class="attribute-name">value</span>=<span class="string"><span class="delimiter">"</span><span class="delimiter">"</span></span> <span class="tag">/></span><span class="tag"><br</span> <span class="tag">/></span> <span class="tag"></td></span>
<span class="tag"></tr></span>
<span class="tag"><tr></span>
<span class="tag"><th></span><span class="tag"><label</span> <span class="attribute-name">for</span>=<span class="string"><span class="delimiter">"</span><span class="content">communityTopic_body</span><span class="delimiter">"</span></span><span class="tag">></span>本文<span class="tag"></label></span><span class="tag"></th></span>
<span class="tag"><td></span><span class="tag"><input</span> <span class="attribute-name">type</span>=<span class="string"><span class="delimiter">"</span><span class="content">text</span><span class="delimiter">"</span></span> <span class="attribute-name">id</span>=<span class="string"><span class="delimiter">"</span><span class="content">communityTopic_body</span><span class="delimiter">"</span></span> <span class="attribute-name">name</span>=<span class="string"><span class="delimiter">"</span><span class="content">communityTopic[body][text]</span><span class="delimiter">"</span></span> <span class="attribute-name">value</span>=<span class="string"><span class="delimiter">"</span><span class="delimiter">"</span></span> <span class="tag">/></span><span class="tag"><br</span> <span class="tag">/></span> <span class="tag"></td></span>
<span class="tag"></tr></span>
<span class="tag"><tr></span>
<span class="tag"><td</span> <span class="attribute-name">colspan</span>=<span class="string"><span class="delimiter">"</span><span class="content">2</span><span class="delimiter">"</span></span><span class="tag">></span><span class="tag"><input</span> <span class="attribute-name">type</span>=<span class="string"><span class="delimiter">"</span><span class="content">submit</span><span class="delimiter">"</span></span> <span class="attribute-name">value</span>=<span class="string"><span class="delimiter">"</span><span class="content">検索</span><span class="delimiter">"</span></span> <span class="tag">/></span><span class="tag"></td></span>
<span class="tag"></table></span>
<span class="tag"></form></span>
</span></code></pre>
<p>この中で、検索ボタンが含まれている最後の列について tr 要素の閉じタグが存在せず、XHTML の構文として正しくない状態になっている。</p>
<p>トピックコメントリストやイベントリストなどにも同様の不具合がある。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p><code></table></code> の手前の行に <code></tr></code> を追加する</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>
opOpenSocialPlugin - Bug(バグ) #3937 (Pending Review(レビュー待ち)): 管理画面の「アクティビティの連続投稿禁止時間」の値を変更しても連続投稿禁...
http://redmine.openpne.jp/issues/3937
2016-04-27T11:02:44Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>管理画面の「アクティビティの連続投稿禁止時間」はデフォルトで 30 秒となっているが、この値を 1 秒や 60 秒に変更しても設定したとおりの時間にならず常に 30 秒で連続投稿が制限される。</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/plg-open-social/repository/revisions/6d81bffd/entry/lib/services/opOpenSocialActivityService.class.php#L185">source:lib/services/opOpenSocialActivityService.class.php@6d81bffd#L185</a></p>
<pre><code class="php syntaxhl"><span class="CodeRay"> <span class="keyword">if</span> (sfConfig::get(<span class="string"><span class="delimiter">'</span><span class="content">opensocial_activity_post_limit_time</span><span class="delimiter">'</span></span>, <span class="integer">30</span>))
{
<span class="local-variable">$object</span> = <span class="constant">Doctrine</span>::getTable(<span class="string"><span class="delimiter">'</span><span class="content">ActivityData</span><span class="delimiter">'</span></span>)->createQuery()
->where(<span class="string"><span class="delimiter">'</span><span class="content">foreign_table = ?</span><span class="delimiter">'</span></span>, <span class="constant">Doctrine</span>::getTable(<span class="string"><span class="delimiter">'</span><span class="content">Application</span><span class="delimiter">'</span></span>)->getTableName())
->andWhere(<span class="string"><span class="delimiter">'</span><span class="content">foreign_id = ?</span><span class="delimiter">'</span></span>, <span class="local-variable">$memberApplication</span>->getApplicationId())
->andWhere(<span class="string"><span class="delimiter">'</span><span class="content">member_id = ?</span><span class="delimiter">'</span></span>, <span class="local-variable">$member</span>->getId())
->orderBy(<span class="string"><span class="delimiter">'</span><span class="content">created_at DESC</span><span class="delimiter">'</span></span>)
->fetchOne();
<span class="keyword">if</span> (<span class="local-variable">$object</span>)
{
<span class="local-variable">$interval</span> = <span class="predefined">time</span>() - <span class="predefined">strtotime</span>(<span class="local-variable">$object</span>->getCreatedAt());
<span class="keyword">if</span> (<span class="local-variable">$interval</span> < sfConfig::get(<span class="string"><span class="delimiter">'</span><span class="content">opensocial_activity_post_limit_time</span><span class="delimiter">'</span></span>, <span class="integer">30</span>))
{
<span class="keyword">throw</span> <span class="keyword">new</span> <span class="constant">SocialSpiException</span>(<span class="string"><span class="delimiter">"</span><span class="content">Service Unavailable</span><span class="delimiter">"</span></span>, <span class="integer">503</span>);
}
}
}
</span></code></pre>
<p>「アクティビティの連続投稿禁止時間」の設定値は上記の箇所で使用されているが、この設定は sns_config テーブルに格納される値であるため sfConfig ではなく opConfig ないし <code>Doctrine_Core::getTable('SnsConfig')->get()</code> を使わなければ期待した値を取得することができない。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p><code>sfConfig::get('opensocial_activity_post_limit_time', 30)</code> としている箇所を <code>Doctrine_Core::getTable('SnsConfig')->get('opensocial_activity_post_limit_time', 30)</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 - Bug(バグ) #3475 (Won't fix(対応せず)): 部分 SSL 使用時に SSL 必須のページでカスタム CSS が読み込まれない
http://redmine.openpne.jp/issues/3475
2013-11-01T06:44:51Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>config/OpenPNE.yml にて部分 SSL を有効 (<code>use_ssl: true</code>) にしている環境で、ログイン画面 (member/login) などの SSL 必須のページを Web ブラウザからアクセスする際にカスタム CSS が読み込まれない場合がある。</p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>カスタム CSS は /cache/css/customizing.css (実体は default/customizingCss アクション) が読み込まれることによって反映される仕組みとなっているが、default/customizingCss アクションは部分 SSL の対象となっていないため常に <code>http://</code> スキームにリダイレクトされてしまう。<br />Google Chrome などの Web ブラウザでは、SSL で保護されている Web ページ内に保護されていない CSS などのコンテンツが含まれている場合は「混在したコンテンツ」としてブロックされるため、結果としてカスタム CSS が読み込まれない状態となる。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>config/OpenPNE.yml.sample の ssl_selectable_actions に default/customizingCss アクションを追加する</p>
OpenPNE 3 - Bug(バグ) #3416 (Won't fix(対応せず)): 自動ログインCookieを有効にしてログインしているブラウザで新規登録を実行すると member/reg...
http://redmine.openpne.jp/issues/3416
2013-10-04T02:56:18Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<ol>
<li>自動ログインを有効にして <a class="email" href="mailto:sns@example.com">sns@example.com</a> にログインする</li>
<li>友人を招待する (/invite) 画面から招待メールを送信する</li>
<li>届いたメールに書かれている招待 URL (/member/register) を開く</li>
<li>「プロフィール入力ページへ」(/member/registerInput) ボタンをクリックする</li>
<li>404 エラーが表示される</li>
</ol>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p><a class="issue tracker-1 status-5 priority-5 priority-high3 closed" title="Bug(バグ): 既にSNSにログインしているブラウザで新規登録を実行しようとすると、member/regist が404エラーになる (Fixed(完了))" href="http://redmine.openpne.jp/issues/1100">#1100</a> では新規登録時にログイン中のセッションがあった場合に削除する処理が追加されているが、自動ログインが有効な場合が考慮されていない。そのため member/register までは正常に表示されるが、次の画面に遷移したところで自動ログイン Cookie によりログイン状態となってしまう。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>member/register アクション内に自動ログイン Cookie を失効させる処理を追加する</p>
OpenPNE 3 - Bug(バグ) #3415 (New(新規)): 管理画面のガジェット設定ページのiframe内でフォームのエラーが赤文字で表示されない
http://redmine.openpne.jp/issues/3415
2013-10-03T03:38:02Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>アクティビティガジェットなどのガジェットの設定項目で「表示する行」の値をブラウザのインスペクタ等で不正な文字 ("aaaa" など) に書き換えて送信した場合に「正しくありません」というエラーメッセージが表示されるが、「SNS設定」画面で表示されるエラーのように赤文字で表示されない。</p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>ガジェットの設定画面は iframe 内に表示されているが、このページ内で backend.css が読み込まれていないのが原因である。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>修正内容を記入</p>
OpenPNE 3 - Bug(バグ) #3303 (Fixed(完了)): 通知センターのUIがモックアップ上のものと異なる箇所がある
http://redmine.openpne.jp/issues/3303
2013-01-24T09:55:52Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p><a class="external" href="http://www.tejimaya.com/20111203houou-%E3%83%A2%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97-update/">http://www.tejimaya.com/20111203houou-%E3%83%A2%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97-update/</a></p>
<p><a class="external" href="http://www.tejimaya.com/20111203%E9%80%9A%E7%9F%A5%E3%82%BB%E3%83%B3%E3%82%BF%E3%83%BC%E3%82%92%E5%AE%9F%E8%A3%85%E3%81%99%E3%82%8B%E3%82%A2%E3%82%A4%E3%83%87%E3%82%A2/">http://www.tejimaya.com/20111203%E9%80%9A%E7%9F%A5%E3%82%BB%E3%83%B3%E3%82%BF%E3%83%BC%E3%82%92%E5%AE%9F%E8%A3%85%E3%81%99%E3%82%8B%E3%82%A2%E3%82%A4%E3%83%87%E3%82%A2/</a></p>
<p>通知センターのモックアップが上記のURLに掲載されているが、次の点で現在の実装と相違がある。</p>
<ul>
<li>フレンド申請の通知文が「○○さんからリンク申請が届いています」ではなく「フレンド申請を許可しますか?」のみとなっている(申請者の名前が表示されていない)</li>
<li>「クリックしたものは通知から消す」との記述があるが、既読状態にかかわらず全ての通知が表示されている</li>
</ul>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>モックアップの通りに修正すべきか判断し、モックアップに合わせる場合は上記の相違点を修正する。</p>
OpenPNE 3 - Bug(バグ) #3289 (Rejected(差し戻し)): 自動リンク機能で末尾のスラッシュを省略すると後続の日本語テキストもURLとしてリンクされてしまう
http://redmine.openpne.jp/issues/3289
2012-12-27T07:38:14Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="現象"></a>
<h3 >現象<a href="#現象" class="wiki-anchor">¶</a></h3>
<p>op_auto_link_text (<a class="source" href="http://redmine.openpne.jp/projects/op3/repository/entry/lib/helper/opUtilHelper.php">source:lib/helper/opUtilHelper.php</a>) を使用する箇所(アクティビティ、日記の本文・コメントなど)で、次のような現象が起こる。</p>
<p><code>http://example.com/テキスト</code> と入力して投稿すると <code><a href="http://example.com/">http://example.com/</a>テキスト</code> のように日本語の部分を除いて自動リンク機能が働くが、<br /><code>http://example.comテキスト</code> と入力して投稿すると <code><a href="http://example.comテキスト">http://example.comテキスト</a></code> のようなリンクが生成されてしまう。</p>
<a name="原因"></a>
<h3 >原因<a href="#原因" class="wiki-anchor">¶</a></h3>
<p>op_auto_link_text による自動リンクで使用される正規表現は次のように定義されている。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"> <span class="predefined">define</span>(<span class="string"><span class="delimiter">'</span><span class="content">SF_AUTO_LINK_RE</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">~
( # leading text
<</span><span class="content">\w</span><span class="content">+.*?>| # leading HTML tag, or
[^=!:</span><span class="char">\'</span><span class="content">"/]| # leading punctuation, or
^| # beginning of line, or
</span><span class="content">\s</span><span class="content">? # leading whitespaces
)
(
(?:https?://)| # protocol spec, or
(?:www</span><span class="content">\.</span><span class="content">) # www.*
)
(
[-</span><span class="content">\w</span><span class="content">]+ # subdomain or domain
(?:</span><span class="content">\.</span><span class="content">[-</span><span class="content">\w</span><span class="content">]+)* # remaining subdomains or domain
(?::</span><span class="content">\d</span><span class="content">+)? # port
</span><span class="content">\/</span><span class="content">?
[a-zA-Z0-9_</span><span class="content">\-</span><span class="content">\/</span><span class="content">.,:;</span><span class="content">\~</span><span class="content">\?</span><span class="content">@&=+$%#!()]*
)
([^a-zA-Z0-9_</span><span class="content">\-</span><span class="content">\/</span><span class="content">.,:;</span><span class="content">\~</span><span class="content">\?</span><span class="content">@&=+$%#!()]|</span><span class="content">\s</span><span class="content">|<|$) # trailing text
~xu</span><span class="delimiter">'</span></span>);
</span></code></pre>
<p>この正規表現はUTF-8モードが有効となっており(末尾の <code>u</code> オプションによる)、このモードではpreg_match内部でPCREに対して PCRE_UCF オプションが使用される。このオプションでは <code>\d</code>, <code>\D</code>, <code>\s</code>, <code>\S</code>, <code>\w</code>, <code>\W</code> などの <strong>重要な</strong> 文字クラスの挙動が変わり、例えば <code>\d</code> は全角数字にもマッチし、 <code>\w</code> は漢字や平仮名にもマッチするようになる。これによって、ドメイン部分の <code>[-\w]+</code> に日本語のテキストがマッチしてしまうため前述のような現象が起こる。</p>
<a name="参考"></a>
<h4 >参考<a href="#参考" class="wiki-anchor">¶</a></h4>
<ul>
<li><a href="https://bugs.php.net/bug.php?id=52971" class="external">PHP :: Bug #52971 :: PCRE-Meta-Characters not working with utf-8</a></li>
<li><a href="https://github.com/php/php-src/blob/master/ext/pcre/php_pcre.c#L359-L366" class="external">php-src/ext/pcre/php_pcre.c at master · php/php-src · GitHub</a></li>
</ul>
<a name="修正内容"></a>
<h3 >修正内容<a href="#修正内容" class="wiki-anchor">¶</a></h3>
<p>SF_AUTO_LINK_RE で使用されている <code>\w</code>, <code>\s</code>, <code>\d</code> を <code>[0-9A-Za-z]</code>, <code>\ </code>, <code>[0-9]</code> にそれぞれ置き換える。</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>
opChatPlugin - Enhancement(機能追加・改善) #819 (Fixed(完了)): 重複投稿を防止する
http://redmine.openpne.jp/issues/819
2010-03-07T15:58:41Z
Youichi Kimura
kim.upsilon@bucyou.net
<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>