OpenPNE Issue Tracking System: チケット
http://redmine.openpne.jp/
http://redmine.openpne.jp/favicon.ico
2016-09-29T07:06:00Z
OpenPNE Issue Tracking System
Redmine
OpenPNE 3 - Bug(バグ) #4019 (Invalid(無効)): 「携帯電話のIP帯域をチェックする」を有効にするとリダイレクトループに陥る場合がある
http://redmine.openpne.jp/issues/4019
2016-09-29T07:06:00Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p><a class="changeset" title="redirect from mobile_frontend.php to index.php for smartphone users who have a mobile mail addres..." href="http://redmine.openpne.jp/projects/op3/repository/revisions/fa249a6d29684d37a9a18eee73c869fa51b4b5fa">fa249a6d</a> (<a class="issue tracker-1 status-13 priority-4 priority-default closed" title="Bug(バグ): スマートフォンで携帯メールアドレスを利用することができない (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3155">#3155</a>) の修正以降、「携帯電話のIP帯域をチェックする」が有効(デフォルト)の状態で User-Agent を偽装したブラウザから SNS にアクセスした場合に、正しくエラー画面が表示されず同じ URL へのリダイレクトによってループが生じています。</p>
<p>この現象は、古い携帯電話 IP アドレス帯域リストを使用している SNS に正規の携帯電話がアクセスした場合にも同様の現象が起きると考えられます。</p>
<a name="手順"></a>
<h4 >手順<a href="#手順" class="wiki-anchor">¶</a></h4>
<ol>
<li>管理画面で「上級者向け設定」の「携帯関連設定」(/pc_backend.php/advanced/config?category=mobile) から、「携帯電話のIP帯域設定」を「携帯電話のIP帯域をチェックする」に設定する</li>
<li>FireMobileSimurator で端末を DC P903i などに設定する</li>
<li>SNS のログイン画面にアクセスする (ここではURLを <code>http://sns.example.com/</code> とする)</li>
<li><code>/</code> にリダイレクトされ、リダイレクトのループが発生しブラウザのエラー画面が表示される</li>
</ol>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>バグが発生した原因を記入</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 - 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>
opOpenSocialPlugin - Backport(バックポート) #2249 (Fixed(完了)): [api] 取得したアクティビティのリンク先URLが streamUrl に格納...
http://redmine.openpne.jp/issues/2249
2011-06-28T07:27:22Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>下記のように activity_data.uri にURIが設定されたアクティビティをAPIで取得した場合に、URLが <code>url</code> フィールドではなく <code>streamUrl</code> フィールドに格納されてしまう。</p>
<pre>
sqlite> select * from activity_data;
id|member_id|in_reply_to_activity_id|body|uri|public_flag|is_pc|is_mobile|source|source_uri|foreign_table|foreign_id|template|template_param|created_at|updated_at
1|1||test|http://sns.localhost/|1|1|1|||||||2011-06-02 21:29:57|2011-06-02 21:29:57
</pre>
<p>APIで取得されるアクティビティ:<br />(※: URLの値が壊れている問題については <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): [api] 取得したアクティビティのフィールドに含まれるURLがおかしい (Fixed(完了))" href="http://redmine.openpne.jp/issues/2231">#2231</a> で取り扱います)</p>
<pre><code class="javascript syntaxhl"><span class="CodeRay">{
<span class="key"><span class="delimiter">"</span><span class="content">id</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="key"><span class="delimiter">"</span><span class="content">userId</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="key"><span class="delimiter">"</span><span class="content">title</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">test</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">postedTime</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">2011-06-02T21:29:57+09:00</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">streamUrl</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">http:</span><span class="content">\/</span><span class="content">\/</span><span class="content">sns.localhost</span><span class="content">\/</span><span class="content">sqlite</span><span class="content">\/</span><span class="content">http%3A</span><span class="content">\/</span><span class="delimiter">"</span></span>
}
</span></code></pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>opJsonDbOpensocialService::getActivities() メソッド内で、下記のように activity_data.uri の値を streamUrl へ代入している箇所がある。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="keyword">if</span> (<span class="local-variable">$activity</span>->getUri())
{
<span class="local-variable">$a</span>[<span class="string"><span class="delimiter">'</span><span class="content">streamUrl</span><span class="delimiter">'</span></span>] = app_url_for(<span class="string"><span class="delimiter">'</span><span class="content">pc_frontend</span><span class="delimiter">'</span></span>, <span class="local-variable">$activity</span>->getUri(), <span class="predefined-constant">true</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>activity_data.uri の値の代入先を streamUrl から url に変更する。</p>
<pre><code class="diff syntaxhl"><span class="CodeRay"><span class="line comment">diff --git a/lib/util/opJsonDbOpensocialService.class.php b/lib/util/opJsonDbOpensocialService.class.php</span>
<span class="line comment">index 398ff69..0f0d61f 100644</span>
<span class="line head"><span class="head">--- </span><span class="filename">a/lib/util/opJsonDbOpensocialService.class.php</span></span>
<span class="line head"><span class="head">+++ </span><span class="filename">b/lib/util/opJsonDbOpensocialService.class.php</span></span>
<span class="change"><span class="change">@@</span> -171,7 +171,7 <span class="change">@@</span></span> <span class="keyword">class</span> <span class="class">opJsonDbOpensocialService</span> <span class="keyword">implements</span> <span class="constant">ActivityService</span>, <span class="constant">PersonService</span>, <span class="constant">AppDa</span>
<span class="keyword">if</span> (<span class="local-variable">$activity</span>->getUri())
{
<span class="line delete"><span class="delete">-</span> <span class="local-variable">$a</span>[<span class="string"><span class="delimiter">'</span></span><span class="eyecatcher"><span class="string"><span class="content">streamU</span></span></span><span class="string"><span class="content">rl</span><span class="delimiter">'</span></span>] = app_url_for(<span class="string"><span class="delimiter">'</span><span class="content">pc_frontend</span><span class="delimiter">'</span></span>, <span class="local-variable">$activity</span>->getUri(), <span class="predefined-constant">true</span>);</span>
<span class="line insert"><span class="insert">+</span> <span class="local-variable">$a</span>[<span class="string"><span class="delimiter">'</span></span><span class="eyecatcher"><span class="string"><span class="content">u</span></span></span><span class="string"><span class="content">rl</span><span class="delimiter">'</span></span>] = app_url_for(<span class="string"><span class="delimiter">'</span><span class="content">pc_frontend</span><span class="delimiter">'</span></span>, <span class="local-variable">$activity</span>->getUri(), <span class="predefined-constant">true</span>);</span>
}
<span class="keyword">if</span> (<span class="local-variable">$activity</span>->getForeignTable() == <span class="constant">Doctrine</span>::getTable(<span class="string"><span class="delimiter">'</span><span class="content">MemberApplication</span><span class="delimiter">'</span></span>)->getTableName())
{
</span></code></pre>
opOpenSocialPlugin - Backport(バックポート) #2248 (Fixed(完了)): [api] 取得したアクティビティのリンク先URLが streamUrl に格納...
http://redmine.openpne.jp/issues/2248
2011-06-28T07:27:13Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>下記のように activity_data.uri にURIが設定されたアクティビティをAPIで取得した場合に、URLが <code>url</code> フィールドではなく <code>streamUrl</code> フィールドに格納されてしまう。</p>
<pre>
sqlite> select * from activity_data;
id|member_id|in_reply_to_activity_id|body|uri|public_flag|is_pc|is_mobile|source|source_uri|foreign_table|foreign_id|template|template_param|created_at|updated_at
1|1||test|http://sns.localhost/|1|1|1|||||||2011-06-02 21:29:57|2011-06-02 21:29:57
</pre>
<p>APIで取得されるアクティビティ:<br />(※: URLの値が壊れている問題については <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): [api] 取得したアクティビティのフィールドに含まれるURLがおかしい (Fixed(完了))" href="http://redmine.openpne.jp/issues/2231">#2231</a> で取り扱います)</p>
<pre><code class="javascript syntaxhl"><span class="CodeRay">{
<span class="key"><span class="delimiter">"</span><span class="content">id</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="key"><span class="delimiter">"</span><span class="content">userId</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="key"><span class="delimiter">"</span><span class="content">title</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">test</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">postedTime</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">2011-06-02T21:29:57+09:00</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">streamUrl</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">http:</span><span class="content">\/</span><span class="content">\/</span><span class="content">sns.localhost</span><span class="content">\/</span><span class="content">sqlite</span><span class="content">\/</span><span class="content">http%3A</span><span class="content">\/</span><span class="delimiter">"</span></span>
}
</span></code></pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>opJsonDbOpensocialService::getActivities() メソッド内で、下記のように activity_data.uri の値を streamUrl へ代入している箇所がある。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="keyword">if</span> (<span class="local-variable">$activity</span>->getUri())
{
<span class="local-variable">$a</span>[<span class="string"><span class="delimiter">'</span><span class="content">streamUrl</span><span class="delimiter">'</span></span>] = app_url_for(<span class="string"><span class="delimiter">'</span><span class="content">pc_frontend</span><span class="delimiter">'</span></span>, <span class="local-variable">$activity</span>->getUri(), <span class="predefined-constant">true</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>activity_data.uri の値の代入先を streamUrl から url に変更する。</p>
<pre><code class="diff syntaxhl"><span class="CodeRay"><span class="line comment">diff --git a/lib/util/opJsonDbOpensocialService.class.php b/lib/util/opJsonDbOpensocialService.class.php</span>
<span class="line comment">index 398ff69..0f0d61f 100644</span>
<span class="line head"><span class="head">--- </span><span class="filename">a/lib/util/opJsonDbOpensocialService.class.php</span></span>
<span class="line head"><span class="head">+++ </span><span class="filename">b/lib/util/opJsonDbOpensocialService.class.php</span></span>
<span class="change"><span class="change">@@</span> -171,7 +171,7 <span class="change">@@</span></span> <span class="keyword">class</span> <span class="class">opJsonDbOpensocialService</span> <span class="keyword">implements</span> <span class="constant">ActivityService</span>, <span class="constant">PersonService</span>, <span class="constant">AppDa</span>
<span class="keyword">if</span> (<span class="local-variable">$activity</span>->getUri())
{
<span class="line delete"><span class="delete">-</span> <span class="local-variable">$a</span>[<span class="string"><span class="delimiter">'</span></span><span class="eyecatcher"><span class="string"><span class="content">streamU</span></span></span><span class="string"><span class="content">rl</span><span class="delimiter">'</span></span>] = app_url_for(<span class="string"><span class="delimiter">'</span><span class="content">pc_frontend</span><span class="delimiter">'</span></span>, <span class="local-variable">$activity</span>->getUri(), <span class="predefined-constant">true</span>);</span>
<span class="line insert"><span class="insert">+</span> <span class="local-variable">$a</span>[<span class="string"><span class="delimiter">'</span></span><span class="eyecatcher"><span class="string"><span class="content">u</span></span></span><span class="string"><span class="content">rl</span><span class="delimiter">'</span></span>] = app_url_for(<span class="string"><span class="delimiter">'</span><span class="content">pc_frontend</span><span class="delimiter">'</span></span>, <span class="local-variable">$activity</span>->getUri(), <span class="predefined-constant">true</span>);</span>
}
<span class="keyword">if</span> (<span class="local-variable">$activity</span>->getForeignTable() == <span class="constant">Doctrine</span>::getTable(<span class="string"><span class="delimiter">'</span><span class="content">MemberApplication</span><span class="delimiter">'</span></span>)->getTableName())
{
</span></code></pre>
opOpenSocialPlugin - Backport(バックポート) #2247 (Fixed(完了)): [api] 取得したアクティビティのフィールドに含まれるURLがおかしい
http://redmine.openpne.jp/issues/2247
2011-06-28T07:26:02Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>下記のように activity_data.uri や activity_image.uri にabsolute URIが含まれる場合に、RESTful API や osapi などでアクティビティを取得した際にURLがおかしな値になる。</p>
<pre>
sqlite> select * from activity_data;
id|member_id|in_reply_to_activity_id|body|uri|public_flag|is_pc|is_mobile|source|source_uri|foreign_table|foreign_id|template|template_param|created_at|updated_at
1|1||test|http://sns.localhost/|1|1|1|||||||2011-06-02 21:29:57|2011-06-02 21:29:57
sqlite> select * from activity_image;
id|activity_data_id|mime_type|uri|file_id|created_at|updated_at
1|1|image/png|http://www.example.com/image.png||2011-06-02 21:29:58|2011-06-02 21:29:58
</pre>
<p>APIで取得されるアクティビティ:</p>
<pre><code class="javascript syntaxhl"><span class="CodeRay">{
<span class="key"><span class="delimiter">"</span><span class="content">id</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="key"><span class="delimiter">"</span><span class="content">userId</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="key"><span class="delimiter">"</span><span class="content">title</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">test</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">postedTime</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">2011-06-02T21:29:57+09:00</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">streamUrl</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">http:</span><span class="content">\/</span><span class="content">\/</span><span class="content">sns.localhost</span><span class="content">\/</span><span class="content">sqlite</span><span class="content">\/</span><span class="content">http%3A</span><span class="content">\/</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">mediaItems</span><span class="delimiter">"</span></span>: [
{
<span class="key"><span class="delimiter">"</span><span class="content">url</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">http:</span><span class="content">\/</span><span class="content">\/</span><span class="content">sns.localhost</span><span class="content">\/</span><span class="content">sqlite</span><span class="content">\/</span><span class="content">http%3A</span><span class="content">\/</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">type</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">image</span><span class="content">\/</span><span class="content">png</span><span class="delimiter">"</span></span>
}
]
}
</span></code></pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>lib/util/opJsonDbOpensocialService.class.php にて、各 URL のフィールドに値を設定している箇所でURLがabsoluteであるかないかに関わらず app_url_for を通しているため間違った値に変換されている。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="keyword">if</span> (<span class="local-variable">$activity</span>->getUri())
{
<span class="local-variable">$a</span>[<span class="string"><span class="delimiter">'</span><span class="content">streamUrl</span><span class="delimiter">'</span></span>] = app_url_for(<span class="string"><span class="delimiter">'</span><span class="content">pc_frontend</span><span class="delimiter">'</span></span>, <span class="local-variable">$activity</span>->getUri(), <span class="predefined-constant">true</span>);
}
</span></code></pre>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="keyword">if</span> (<span class="local-variable">$image</span>->getFileId())
{
<span class="comment">// (snip)</span>
}
<span class="keyword">else</span>
{
<span class="local-variable">$mediaItem</span>[<span class="string"><span class="delimiter">'</span><span class="content">url</span><span class="delimiter">'</span></span>] = app_url_for(<span class="string"><span class="delimiter">'</span><span class="content">pc_frontend</span><span class="delimiter">'</span></span>, <span class="local-variable">$image</span>->getUri(), <span class="predefined-constant">true</span>);
<span class="local-variable">$mediaItem</span>[<span class="string"><span class="delimiter">'</span><span class="content">type</span><span class="delimiter">'</span></span>] = <span class="local-variable">$image</span>->getMimeType();
}
</span></code></pre>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>下記のいずれかの方法でこの問題を解決することが可能である。</p>
<ul>
<li>absolute URIの場合には app_url_for を使わないようにopOpenSocialPlugin側で修正する</li>
<li>app_url_for にabsolute URIが渡された場合は何もせずにreturnするようにCore側で修正する</li>
</ul>
opOpenSocialPlugin - Backport(バックポート) #2246 (Fixed(完了)): [api] 取得したアクティビティのフィールドに含まれるURLがおかしい
http://redmine.openpne.jp/issues/2246
2011-06-28T07:25:49Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>下記のように activity_data.uri や activity_image.uri にabsolute URIが含まれる場合に、RESTful API や osapi などでアクティビティを取得した際にURLがおかしな値になる。</p>
<pre>
sqlite> select * from activity_data;
id|member_id|in_reply_to_activity_id|body|uri|public_flag|is_pc|is_mobile|source|source_uri|foreign_table|foreign_id|template|template_param|created_at|updated_at
1|1||test|http://sns.localhost/|1|1|1|||||||2011-06-02 21:29:57|2011-06-02 21:29:57
sqlite> select * from activity_image;
id|activity_data_id|mime_type|uri|file_id|created_at|updated_at
1|1|image/png|http://www.example.com/image.png||2011-06-02 21:29:58|2011-06-02 21:29:58
</pre>
<p>APIで取得されるアクティビティ:</p>
<pre><code class="javascript syntaxhl"><span class="CodeRay">{
<span class="key"><span class="delimiter">"</span><span class="content">id</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="key"><span class="delimiter">"</span><span class="content">userId</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="key"><span class="delimiter">"</span><span class="content">title</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">test</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">postedTime</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">2011-06-02T21:29:57+09:00</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">streamUrl</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">http:</span><span class="content">\/</span><span class="content">\/</span><span class="content">sns.localhost</span><span class="content">\/</span><span class="content">sqlite</span><span class="content">\/</span><span class="content">http%3A</span><span class="content">\/</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">mediaItems</span><span class="delimiter">"</span></span>: [
{
<span class="key"><span class="delimiter">"</span><span class="content">url</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">http:</span><span class="content">\/</span><span class="content">\/</span><span class="content">sns.localhost</span><span class="content">\/</span><span class="content">sqlite</span><span class="content">\/</span><span class="content">http%3A</span><span class="content">\/</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">type</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">image</span><span class="content">\/</span><span class="content">png</span><span class="delimiter">"</span></span>
}
]
}
</span></code></pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>lib/util/opJsonDbOpensocialService.class.php にて、各 URL のフィールドに値を設定している箇所でURLがabsoluteであるかないかに関わらず app_url_for を通しているため間違った値に変換されている。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="keyword">if</span> (<span class="local-variable">$activity</span>->getUri())
{
<span class="local-variable">$a</span>[<span class="string"><span class="delimiter">'</span><span class="content">streamUrl</span><span class="delimiter">'</span></span>] = app_url_for(<span class="string"><span class="delimiter">'</span><span class="content">pc_frontend</span><span class="delimiter">'</span></span>, <span class="local-variable">$activity</span>->getUri(), <span class="predefined-constant">true</span>);
}
</span></code></pre>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="keyword">if</span> (<span class="local-variable">$image</span>->getFileId())
{
<span class="comment">// (snip)</span>
}
<span class="keyword">else</span>
{
<span class="local-variable">$mediaItem</span>[<span class="string"><span class="delimiter">'</span><span class="content">url</span><span class="delimiter">'</span></span>] = app_url_for(<span class="string"><span class="delimiter">'</span><span class="content">pc_frontend</span><span class="delimiter">'</span></span>, <span class="local-variable">$image</span>->getUri(), <span class="predefined-constant">true</span>);
<span class="local-variable">$mediaItem</span>[<span class="string"><span class="delimiter">'</span><span class="content">type</span><span class="delimiter">'</span></span>] = <span class="local-variable">$image</span>->getMimeType();
}
</span></code></pre>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>下記のいずれかの方法でこの問題を解決することが可能である。</p>
<ul>
<li>absolute URIの場合には app_url_for を使わないようにopOpenSocialPlugin側で修正する</li>
<li>app_url_for にabsolute URIが渡された場合は何もせずにreturnするようにCore側で修正する</li>
</ul>
opOpenSocialPlugin - Backport(バックポート) #2212 (Fixed(完了)): [etc] NOTICE ファイルの更新
http://redmine.openpne.jp/issues/2212
2011-06-11T08:05:27Z
Youichi Kimura
kim.upsilon@bucyou.net
<p>NOTICEファイルについて</p>
<ul>
<li>Control.Tabsのライセンス情報の記載</li>
<li>Copyrightの年の更新</li>
</ul>
<p>の修正を行う。</p>
opOpenSocialPlugin - Backport(バックポート) #2211 (Fixed(完了)): [etc] NOTICE ファイルの更新
http://redmine.openpne.jp/issues/2211
2011-06-11T08:05:01Z
Youichi Kimura
kim.upsilon@bucyou.net
<p>NOTICEファイルについて</p>
<ul>
<li>Control.Tabsのライセンス情報の記載</li>
<li>Copyrightの年の更新</li>
</ul>
<p>の修正を行う。</p>
opOpenSocialPlugin - Backport(バックポート) #2148 (Fixed(完了)): [api] /albums/@me/@self で取得したアルバムのサムネイルが...
http://redmine.openpne.jp/issues/2148
2011-06-03T13:47:45Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p><code>/albums/@me/@self</code> でアルバムのコレクションを取得すると、サムネイルが未設定のアルバムに <code>http://sns.example.com/cache/img/jpg/w180_h180/.jpg</code> のようなURLが入ってしまう。</p>
<pre><code class="javascript syntaxhl"><span class="CodeRay">{
<span class="key"><span class="delimiter">"</span><span class="content">entry</span><span class="delimiter">"</span></span>: [
{
<span class="key"><span class="delimiter">"</span><span class="content">id</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="key"><span class="delimiter">"</span><span class="content">title</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">test</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">description</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">aaaaa</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">mediaItemCount</span><span class="delimiter">"</span></span>: <span class="integer">2</span>,
<span class="key"><span class="delimiter">"</span><span class="content">ownerId</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">3</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">thumbnailUrl</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">http:</span><span class="content">\/</span><span class="content">\/</span><span class="content">sns.localhost</span><span class="content">\/</span><span class="content">sqlite</span><span class="content">\/</span><span class="content">cache</span><span class="content">\/</span><span class="content">img</span><span class="content">\/</span><span class="content">jpg</span><span class="content">\/</span><span class="content">w180_h180</span><span class="content">\/</span><span class="content">.jpg</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">mediaType</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">IMAGE</span><span class="delimiter">"</span></span>
}
],
<span class="key"><span class="delimiter">"</span><span class="content">startIndex</span><span class="delimiter">"</span></span>:<span class="integer">0</span>,
<span class="key"><span class="delimiter">"</span><span class="content">totalResults</span><span class="delimiter">"</span></span>:<span class="integer">1</span>,
<span class="key"><span class="delimiter">"</span><span class="content">itemsPerPage</span><span class="delimiter">"</span></span>:<span class="integer">10</span>
}
</span></code></pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p><code>lib/util/opJsonDbOpensocialService.class.php</code> で以下のようにサムネイルの有無をチェックしている箇所があるが、サムネイルが未設定の場合 (album.file_id = null) は <code>$object->getFile()</code> メソッドの実行時に File オブジェクトのインスタンスが新規に生成されてしまうため条件式が偽にならずURLの生成が行われてしまう。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">thumbnailUrl</span><span class="delimiter">'</span></span>] = <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>;
<span class="keyword">if</span> (<span class="local-variable">$object</span>->getFile())
{
sfContext::getInstance()->getConfiguration()->loadHelpers(<span class="predefined">array</span>(<span class="string"><span class="delimiter">'</span><span class="content">Asset</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">sfImage</span><span class="delimiter">'</span></span>));
<span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">thumbnailUrl</span><span class="delimiter">'</span></span>] = sf_image_path(<span class="local-variable">$object</span>->getFile(), <span class="predefined">array</span>(<span class="string"><span class="delimiter">'</span><span class="content">size</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">180x180</span><span class="delimiter">'</span></span>), <span class="predefined-constant">true</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><code>getFile()</code> メソッドではなく <code>getFileId()</code> メソッドを使用してサムネイルの有無をチェックする。</p>
opOpenSocialPlugin - Backport(バックポート) #2147 (Fixed(完了)): [api] /albums/@me/@self で取得したアルバムのサムネイルが...
http://redmine.openpne.jp/issues/2147
2011-06-03T13:46:52Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p><code>/albums/@me/@self</code> でアルバムのコレクションを取得すると、サムネイルが未設定のアルバムに <code>http://sns.example.com/cache/img/jpg/w180_h180/.jpg</code> のようなURLが入ってしまう。</p>
<pre><code class="javascript syntaxhl"><span class="CodeRay">{
<span class="key"><span class="delimiter">"</span><span class="content">entry</span><span class="delimiter">"</span></span>: [
{
<span class="key"><span class="delimiter">"</span><span class="content">id</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="key"><span class="delimiter">"</span><span class="content">title</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">test</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">description</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">aaaaa</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">mediaItemCount</span><span class="delimiter">"</span></span>: <span class="integer">2</span>,
<span class="key"><span class="delimiter">"</span><span class="content">ownerId</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">3</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">thumbnailUrl</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">http:</span><span class="content">\/</span><span class="content">\/</span><span class="content">sns.localhost</span><span class="content">\/</span><span class="content">sqlite</span><span class="content">\/</span><span class="content">cache</span><span class="content">\/</span><span class="content">img</span><span class="content">\/</span><span class="content">jpg</span><span class="content">\/</span><span class="content">w180_h180</span><span class="content">\/</span><span class="content">.jpg</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">mediaType</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">IMAGE</span><span class="delimiter">"</span></span>
}
],
<span class="key"><span class="delimiter">"</span><span class="content">startIndex</span><span class="delimiter">"</span></span>:<span class="integer">0</span>,
<span class="key"><span class="delimiter">"</span><span class="content">totalResults</span><span class="delimiter">"</span></span>:<span class="integer">1</span>,
<span class="key"><span class="delimiter">"</span><span class="content">itemsPerPage</span><span class="delimiter">"</span></span>:<span class="integer">10</span>
}
</span></code></pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p><code>lib/util/opJsonDbOpensocialService.class.php</code> で以下のようにサムネイルの有無をチェックしている箇所があるが、サムネイルが未設定の場合 (album.file_id = null) は <code>$object->getFile()</code> メソッドの実行時に File オブジェクトのインスタンスが新規に生成されてしまうため条件式が偽にならずURLの生成が行われてしまう。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">thumbnailUrl</span><span class="delimiter">'</span></span>] = <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>;
<span class="keyword">if</span> (<span class="local-variable">$object</span>->getFile())
{
sfContext::getInstance()->getConfiguration()->loadHelpers(<span class="predefined">array</span>(<span class="string"><span class="delimiter">'</span><span class="content">Asset</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">sfImage</span><span class="delimiter">'</span></span>));
<span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">thumbnailUrl</span><span class="delimiter">'</span></span>] = sf_image_path(<span class="local-variable">$object</span>->getFile(), <span class="predefined">array</span>(<span class="string"><span class="delimiter">'</span><span class="content">size</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">180x180</span><span class="delimiter">'</span></span>), <span class="predefined-constant">true</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><code>getFile()</code> メソッドではなく <code>getFileId()</code> メソッドを使用してサムネイルの有無をチェックする。</p>
opOpenSocialPlugin - Backport(バックポート) #2146 (Fixed(完了)): [api] /albums/@me/@self で取得したアルバムのサムネイルが...
http://redmine.openpne.jp/issues/2146
2011-06-03T13:45:59Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p><code>/albums/@me/@self</code> でアルバムのコレクションを取得すると、サムネイルが未設定のアルバムに <code>http://sns.example.com/cache/img/jpg/w180_h180/.jpg</code> のようなURLが入ってしまう。</p>
<pre><code class="javascript syntaxhl"><span class="CodeRay">{
<span class="key"><span class="delimiter">"</span><span class="content">entry</span><span class="delimiter">"</span></span>: [
{
<span class="key"><span class="delimiter">"</span><span class="content">id</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="key"><span class="delimiter">"</span><span class="content">title</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">test</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">description</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">aaaaa</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">mediaItemCount</span><span class="delimiter">"</span></span>: <span class="integer">2</span>,
<span class="key"><span class="delimiter">"</span><span class="content">ownerId</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">3</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">thumbnailUrl</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">http:</span><span class="content">\/</span><span class="content">\/</span><span class="content">sns.localhost</span><span class="content">\/</span><span class="content">sqlite</span><span class="content">\/</span><span class="content">cache</span><span class="content">\/</span><span class="content">img</span><span class="content">\/</span><span class="content">jpg</span><span class="content">\/</span><span class="content">w180_h180</span><span class="content">\/</span><span class="content">.jpg</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">mediaType</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">IMAGE</span><span class="delimiter">"</span></span>
}
],
<span class="key"><span class="delimiter">"</span><span class="content">startIndex</span><span class="delimiter">"</span></span>:<span class="integer">0</span>,
<span class="key"><span class="delimiter">"</span><span class="content">totalResults</span><span class="delimiter">"</span></span>:<span class="integer">1</span>,
<span class="key"><span class="delimiter">"</span><span class="content">itemsPerPage</span><span class="delimiter">"</span></span>:<span class="integer">10</span>
}
</span></code></pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p><code>lib/util/opJsonDbOpensocialService.class.php</code> で以下のようにサムネイルの有無をチェックしている箇所があるが、サムネイルが未設定の場合 (album.file_id = null) は <code>$object->getFile()</code> メソッドの実行時に File オブジェクトのインスタンスが新規に生成されてしまうため条件式が偽にならずURLの生成が行われてしまう。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">thumbnailUrl</span><span class="delimiter">'</span></span>] = <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>;
<span class="keyword">if</span> (<span class="local-variable">$object</span>->getFile())
{
sfContext::getInstance()->getConfiguration()->loadHelpers(<span class="predefined">array</span>(<span class="string"><span class="delimiter">'</span><span class="content">Asset</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">sfImage</span><span class="delimiter">'</span></span>));
<span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">thumbnailUrl</span><span class="delimiter">'</span></span>] = sf_image_path(<span class="local-variable">$object</span>->getFile(), <span class="predefined">array</span>(<span class="string"><span class="delimiter">'</span><span class="content">size</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">180x180</span><span class="delimiter">'</span></span>), <span class="predefined-constant">true</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><code>getFile()</code> メソッドではなく <code>getFileId()</code> メソッドを使用してサムネイルの有無をチェックする。</p>
opOpenSocialPlugin - Backport(バックポート) #2126 (Won't fix(対応せず)): [pc] modalboxを2回目以降に表示すると、読み込みが完了す...
http://redmine.openpne.jp/issues/2126
2011-05-20T16:22:56Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-概要"></a>
<h3 >Overview (概要)<a href="#Overview-概要" class="wiki-anchor">¶</a></h3>
<p>requestShareApp等でモーダルボックスを表示させる際に前回表示時の内容が消去されずに残ってしまうため、2回目以降表示するとき読み込みが完了するまでの間に以前の内容が表示されたままとなってしまう。</p>
<a name="Spec-仕様"></a>
<h3 >Spec (仕様)<a href="#Spec-仕様" class="wiki-anchor">¶</a></h3>
<p>モーダルボックスを閉じるときにiframeの内容を消去する。</p>
opOpenSocialPlugin - Backport(バックポート) #2125 (Fixed(完了)): [api] /mediaitems/@me/@self/{albumId} で取...
http://redmine.openpne.jp/issues/2125
2011-05-20T16:19:53Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>/mediaitems/@me/@self/{albumId} でアルバムに含まれるMediaItemのコレクションを取得すると、下記のように albumId フィールドがMediaItemのidの値になってしまう。</p>
<pre><code class="javascript syntaxhl"><span class="CodeRay">{
<span class="key"><span class="delimiter">"</span><span class="content">entry</span><span class="delimiter">"</span></span>: [
{
<span class="key"><span class="delimiter">"</span><span class="content">albumId</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="key"><span class="delimiter">"</span><span class="content">created</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">2011-05-10 17:57:37</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">description</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">0f7d8518b483d10f86a6d90edeb97979fd0af43a_png</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">fileSize</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">0</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">id</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="key"><span class="delimiter">"</span><span class="content">lastUpdated</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">2011-05-10 17:57:37</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">thumbnailUrl</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">http://sns.localhost/sqlite/cache/img/png/w180_h180/a_1_0f7d8518b483d10f86a6d90edeb97979fd0af43a_png.png</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">title</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">0f7d8518b483d10f86a6d90edeb97979fd0af43a_png</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">type</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">IMAGE</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">url</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">http://sns.localhost/sqlite/cache/img/png/w_h/a_1_0f7d8518b483d10f86a6d90edeb97979fd0af43a_png.png</span><span class="delimiter">"</span></span>
},
{
<span class="key"><span class="delimiter">"</span><span class="content">albumId</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">2</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">created</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">2011-05-10 17:57:38</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">description</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">c51bc5e4eb6eec85258f088f9900c0f059d9c394_png</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">fileSize</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">0</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">id</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">2</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">lastUpdated</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">2011-05-10 17:57:38</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">thumbnailUrl</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">http://sns.localhost/sqlite/cache/img/png/w180_h180/a_1_c51bc5e4eb6eec85258f088f9900c0f059d9c394_png.png</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">title</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">c51bc5e4eb6eec85258f088f9900c0f059d9c394_png</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">type</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">IMAGE</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">url</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">http://sns.localhost/sqlite/cache/img/png/w_h/a_1_c51bc5e4eb6eec85258f088f9900c0f059d9c394_png.png</span><span class="delimiter">"</span></span>
}
],
<span class="key"><span class="delimiter">"</span><span class="content">itemsPerPage</span><span class="delimiter">"</span></span>: <span class="integer">10</span>,
<span class="key"><span class="delimiter">"</span><span class="content">startIndex</span><span class="delimiter">"</span></span>: <span class="integer">0</span>,
<span class="key"><span class="delimiter">"</span><span class="content">totalResults</span><span class="delimiter">"</span></span>: <span class="integer">2</span>
}
</span></code></pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>lib/util/opJsonDbOpensocialService.class.php にて、下記のように albumId にalbum_imageテーブルのidの値を入れている箇所があるため。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="keyword">foreach</span> (<span class="local-variable">$objects</span> <span class="keyword">as</span> <span class="local-variable">$object</span>)
{
<span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">albumId</span><span class="delimiter">'</span></span>] = <span class="local-variable">$object</span>->getId();
<span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">created</span><span class="delimiter">'</span></span>] = <span class="local-variable">$object</span>->getCreatedAt();
<span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">description</span><span class="delimiter">'</span></span>] = opOpenSocialToolKit::convertEmojiForApi(<span class="local-variable">$object</span>->getDescription());
<span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">fileSize</span><span class="delimiter">'</span></span>] = <span class="local-variable">$object</span>->getFilesize();
<span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">id</span><span class="delimiter">'</span></span>] = <span class="local-variable">$object</span>->getId();
<span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">lastUpdated</span><span class="delimiter">'</span></span>] = <span class="local-variable">$object</span>->getUpdatedAt();
<span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">thumbnailUrl</span><span class="delimiter">'</span></span>] = <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></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>$result['albumId'] にalbum_imageテーブルの <strong>album_id</strong> の値を入れるように修正する。</p>
opOpenSocialPlugin - Backport(バックポート) #2124 (Fixed(完了)): [api] /mediaitems/@me/@self/{albumId} で取...
http://redmine.openpne.jp/issues/2124
2011-05-20T16:14:06Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>/mediaitems/@me/@self/{albumId} でアルバムに含まれるMediaItemのコレクションを取得すると、下記のように albumId フィールドがMediaItemのidの値になってしまう。</p>
<pre><code class="javascript syntaxhl"><span class="CodeRay">{
<span class="key"><span class="delimiter">"</span><span class="content">entry</span><span class="delimiter">"</span></span>: [
{
<span class="key"><span class="delimiter">"</span><span class="content">albumId</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="key"><span class="delimiter">"</span><span class="content">created</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">2011-05-10 17:57:37</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">description</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">0f7d8518b483d10f86a6d90edeb97979fd0af43a_png</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">fileSize</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">0</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">id</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="key"><span class="delimiter">"</span><span class="content">lastUpdated</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">2011-05-10 17:57:37</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">thumbnailUrl</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">http://sns.localhost/sqlite/cache/img/png/w180_h180/a_1_0f7d8518b483d10f86a6d90edeb97979fd0af43a_png.png</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">title</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">0f7d8518b483d10f86a6d90edeb97979fd0af43a_png</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">type</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">IMAGE</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">url</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">http://sns.localhost/sqlite/cache/img/png/w_h/a_1_0f7d8518b483d10f86a6d90edeb97979fd0af43a_png.png</span><span class="delimiter">"</span></span>
},
{
<span class="key"><span class="delimiter">"</span><span class="content">albumId</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">2</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">created</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">2011-05-10 17:57:38</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">description</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">c51bc5e4eb6eec85258f088f9900c0f059d9c394_png</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">fileSize</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">0</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">id</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">2</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">lastUpdated</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">2011-05-10 17:57:38</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">thumbnailUrl</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">http://sns.localhost/sqlite/cache/img/png/w180_h180/a_1_c51bc5e4eb6eec85258f088f9900c0f059d9c394_png.png</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">title</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">c51bc5e4eb6eec85258f088f9900c0f059d9c394_png</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">type</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">IMAGE</span><span class="delimiter">"</span></span>,
<span class="key"><span class="delimiter">"</span><span class="content">url</span><span class="delimiter">"</span></span>: <span class="string"><span class="delimiter">"</span><span class="content">http://sns.localhost/sqlite/cache/img/png/w_h/a_1_c51bc5e4eb6eec85258f088f9900c0f059d9c394_png.png</span><span class="delimiter">"</span></span>
}
],
<span class="key"><span class="delimiter">"</span><span class="content">itemsPerPage</span><span class="delimiter">"</span></span>: <span class="integer">10</span>,
<span class="key"><span class="delimiter">"</span><span class="content">startIndex</span><span class="delimiter">"</span></span>: <span class="integer">0</span>,
<span class="key"><span class="delimiter">"</span><span class="content">totalResults</span><span class="delimiter">"</span></span>: <span class="integer">2</span>
}
</span></code></pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>lib/util/opJsonDbOpensocialService.class.php にて、下記のように albumId にalbum_imageテーブルのidの値を入れている箇所があるため。</p>
<pre><code class="php syntaxhl"><span class="CodeRay"><span class="keyword">foreach</span> (<span class="local-variable">$objects</span> <span class="keyword">as</span> <span class="local-variable">$object</span>)
{
<span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">albumId</span><span class="delimiter">'</span></span>] = <span class="local-variable">$object</span>->getId();
<span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">created</span><span class="delimiter">'</span></span>] = <span class="local-variable">$object</span>->getCreatedAt();
<span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">description</span><span class="delimiter">'</span></span>] = opOpenSocialToolKit::convertEmojiForApi(<span class="local-variable">$object</span>->getDescription());
<span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">fileSize</span><span class="delimiter">'</span></span>] = <span class="local-variable">$object</span>->getFilesize();
<span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">id</span><span class="delimiter">'</span></span>] = <span class="local-variable">$object</span>->getId();
<span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">lastUpdated</span><span class="delimiter">'</span></span>] = <span class="local-variable">$object</span>->getUpdatedAt();
<span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">thumbnailUrl</span><span class="delimiter">'</span></span>] = <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></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>$result['albumId'] にalbum_imageテーブルの <strong>album_id</strong> の値を入れるように修正する。</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>