携帯電話からの投稿について  【解決済み】

質問全般・改善要望
返信する
jbitmm
メンバー
メンバー
記事: 18
登録日時: 2010年4月13日(火) 21:17

携帯電話からの投稿について  【解決済み】

投稿記事 by jbitmm »

標準的な機能を持ったBlogシステムの実装を試みています。

カレンダー、カテゴリ、アーカイブからの検索・抽出まではプログラムが終わり、
後は携帯電話からのメールによる投稿の更新のみを残しています。

今のところ、投稿を行うと、
ドキュメントのDB登録と添付ファイルの配置までは無事に終わり、
Manager画面からは内容を見ることができます。

ただ、コンテンツの閲覧に Ditto を採用していますが、
正常に表示されません。
Manager画面で、いずれかのドキュメントを更新すると正常に閲覧できます。

キャッシュの問題なのか、Ditto のコールの仕方に問題があるのか
解決の糸口をいただけませんでしょうか。

Ditto は以下のようにコールしています。
[!Ditto? &id=`blog` &startID=`20` &display=`10` &trunc=`0` &tpl=`blogList` &paginate=`1` &language=`japanese-utf8` &tagDelimiter=`,` &extenders=`request,tagging,dateFilter` &paginateAlwaysShowLinks=`1` &sortBy=`createdon` &NewsCategory=`tvNewsCategory`!]

MODxのバージョンは、Evolution 1.0.2 です。

よろしくお願いいたします。
sama55
メンバー
メンバー
記事: 816
登録日時: 2009年8月03日(月) 08:16

Re: 携帯電話からの投稿について

投稿記事 by sama55 »

jbitmm さんが書きました:ただ、コンテンツの閲覧に Ditto を採用していますが、正常に表示されません。
Manager画面で、いずれかのドキュメントを更新すると正常に閲覧できます。
キャッシュの問題なのか、Ditto のコールの仕方に問題があるのか
解決の糸口をいただけませんでしょうか。Ditto は以下のようにコールしています。
[!Ditto? &id=`blog` &startID=`20` &display=`10` &trunc=`0` &tpl=`blogList` &paginate=`1` &language=`japanese-utf8` &tagDelimiter=`,` &extenders=`request,tagging,dateFilter` &paginateAlwaysShowLinks=`1` &sortBy=`createdon` &NewsCategory=`tvNewsCategory`!]
携帯対応はsoushiさんが詳しいのでちょっとだけ。
  1. PCからアクセスした後に携帯からアクセス: NG
  2. リソースの更新(キャッシュクリア)後に携帯からアクセス: OK
ということでしたらキュッシュでしょうね。。。
DIttoはノンキャッシュでコールされてるようですが、対象ページのキャッシュ属性(”キャッシュを生成”)はどうなってますか?
携帯への対応方法を書いた方が有効な回答が得られる気がします。 ;)
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 携帯電話からの投稿について

投稿記事 by yama »

jbitmm さんが書きました:いずれかのドキュメントを更新すると正常に閲覧できます。
自分がよくやる汎用的なデバッグ方法ですが・・

・ドキュメント更新前のSQLダンプを取得
・ドキュメント更新後のSQLダンプを取得

で、あとはWinMergeなどの差分比較ツールで見比べるとヒントが得られると思います。

でもたぶんサイトキャッシュかな?
MODxはまずassets/cache/siteCache.idx.phpを見て、ここに情報があればそれを出力します。ノンキャッシュ書式でスニペットコールを書いても、ここは見てた気がします。

コード: 全て選択

$a = &$this->aliasListing;
$d = &$this->documentListing;
$m = &$this->documentMap;
具体的にはこのへん以降からかな?
これを更新するには、cache_sync.class.processorのemptyCacheメソッドを用いるんじゃなかったかなと思います。だとすると投稿直後に実行してキャッシュを更新ですね。これで合っていればですが。
jbitmm
メンバー
メンバー
記事: 18
登録日時: 2010年4月13日(火) 21:17

Re: 携帯電話からの投稿について

投稿記事 by jbitmm »

sama55さん、yamaさん、ありがとうございました。
無事解決できました。

ご指摘いただいたように、
save_content.processor.php を参考にしながら、
キャッシュファイルを更新することで、閲覧できました。

実際のところ、親フォルダも含めて
cacheableフィールドは 0 に設定していましたので、
少しは疑ってはいましたが、
この状態でも、キャッシュファイルを参照しているとは、勉強不足でした。

あと少し考えて解決できなければ、Ditto の採用を止め、
新しくスニペットを書くところでした。
今回始めてトピックを立てさせていただきましたが、
早急なご回答に感謝しています。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 携帯電話からの投稿について

投稿記事 by yama »

解決してよかったです。
メール投稿は興味ある人が多いと思うので、もしよければ事業に差し支えない程度にネタを投稿いただけると嬉しいです。また分からないことがあったらいつでもどうぞ
jbitmm
メンバー
メンバー
記事: 18
登録日時: 2010年4月13日(火) 21:17

Re: 携帯電話からの投稿について

投稿記事 by jbitmm »

yama さんが書きました:解決してよかったです。
メール投稿は興味ある人が多いと思うので、もしよければ事業に差し支えない程度にネタを投稿いただけると嬉しいです。また分からないことがあったらいつでもどうぞ
ご指摘ありがとうございます。
簡単ですがネタを説明させていただきます。

今回のシステムはMODxがらみでブログの構築依頼がありました。
WordpressIntegrator も検討しましたが、
MODxの勉強がてらにゼロからスニペットを作成することにしました。

リンクカレンダー、カテゴリ検索、アーカイブリストは、
MODxのAPIを利用し、DBからデータを抜き出し、HTMLを生成しています。

肝は携帯からの投稿でした。
携帯による投稿を考えた場合、利便性を考えるとメールにたどり着きます。
問題はセキュリティです。
そこで、投稿を2段回に分けます。

最初に携帯から指定したアドレスにメールで投稿します。
この際、携帯のメールアドレスとユーザーはユーザー管理を利用し、
事前登録しておく必要があります。
本来ならメールが届いた時点でワンタイムトークンを発行できれば良いのですが、
今回は共用サーバーのため、これは見送りました。

次に携帯電話から指定したアドレスにアクセスします。
画面にはログインフォームが表示されます。
登録ユーザーのフルネームとパスワードでログインします。
ここでフルネームを採用しているのは、
ダブルバイト文字を利用しセキュリティレベルを上げるためです。

ログインすると画面には更新ボタンが表示されますので、
これを押下すると投稿内容が登録されます。

メールの処理は次のように行っています。

POPサーバーからすべてのメールを取得
取得したメールを順次処理
メールをヘッダ、件名、本文に分割
投稿時間と現在の時間の差異を判別し、指定時間を超えるものは排除
IPアドレスを判別し携帯業者以外のものを排除
メールアドレスを判別し登録ユーザー以外のものを排除
件名と本文をデコード
件名にはカテゴリと区切り文字とタイトルが含まれるのでこれを分割
カテゴリの正当性を判別し不当な値はその他に変更
本文がマルチパートなら添付ファイルとテキストに分割
添付ファイルが指定画像以外なら排除
ファイル名を生成
正当な画像ファイルなら縦横サイズを調べ範囲を超えるものはリサイズ
添付ファイルをデコードし保存
添付ファイルの件数分を上記処理を繰り返す
データベースにドキュメントとカテゴリを登録
キャッシュの更新

大きくはこのような流れになります。
検証はまだ終わっていませんが、今のところは問題なく動いています。
少し手間がかかりましたが
MODxの柔軟性を垣間見たような気がします。
今後MODXでブログを構築される方のお役に立てば良いのですが。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 携帯電話からの投稿について

投稿記事 by yama »

シェアありがとうございます。本来ならゼロからPHPで書き起こすようなフローでも、MODxの上に乗せる感じで全体的な手間を省けるというのはありますね。こういう使い方もMODx的には王道だと思いました。セキュリティ面に十分に配慮されているのはすごいなと思いました。

ブログ的な使い方は、管理画面のインターフェイス的にはまだ弱いです。これはいずれ解決したいと思います。ビジョンはまとまっているので、あとは時間の問題かと。
返信する