MODXおよびLivestreetバンドルモジュールに関するトピックを続けて、modLivestreetモジュールの新しいバージョンlivestreet-0.3.0-rc.transport.zipを紹介します。
新機能 はい、ほとんどすべて:-)モジュールはゼロから書き直されました。
1. LiveStreetリクエスト処理ロジックが大幅に変更されました(改善されました)。
2. MODXおよびLiveStreetに同期ユーザー登録を追加しました。 MODX管理パネルを使用してユーザーを登録すると、ユーザーはLiveStreetで自動的に作成されます。LiveStreetがユーザーを登録するリクエストを処理すると、登録はMODXを通過します。
この機能は設定により無効にできます。
カットオフでは、標準バージョンとmodLivestreetモジュールでのMODX作業スキーム(簡略化)と、ユーザーがMODXとLivestreetに同時に登録される方法の詳細な説明(MODXでの登録がどのように変更されたかのスキームを後日掲載します)、およびソースコード。
UPD:githubでパッケージを構築:
github.com/Fi1osof/modx-livestreet標準アセンブリおよびmodLivestreetモジュールを使用した有望なMODXワークフロー それでは、このモジュールはどのように機能しますか?
1.このモジュールで最も重要なプラグインは、2つのイベントonHandleRequestとonPageNotFoundによってトリガーされます。
最初のケースでは、原則としてLivestreetへのリクエストのチェック(およびLivestreet変数の初期化)と、静的Livestreetファイルおよびその個々のモジュール(Captchaなど)へのアクセスのチェックがあります。
2番目のケースでは、別のタスクが実行されます:リクエストの処理中にMODXがランディングページを見つけた場合、onPageNotFoundイベントは原則として機能せず、livestreet.runスニペットがMODXドキュメントで明示的に呼び出され、LiveStreetのリクエストを実行する場合、LiveStreetは処理されません このアプローチにより、LiveStreetでのみMODXを結び付けることはできません。 つまり、MODXで完全に独立したサイトを作成できますが、/フォーラム/セクション(または別のforum.site.ruサブドメイン)を作成し、そこに着信ページを定義し、その中にスニペットコール[[!Livestreet.ru]]を記述しますサイト)、設定でlivestreet.url_perfix '/ forum /'を指定します。 /forum/.*マスクに対するすべてのリクエストは、LiveStreetへの呼び出しで実行され、ブログを取得します。 ここでは、権限の検証を追加したり、特定のブログスレッドのみを呼び出したりできます。
ドキュメントが見つからず、onPageNotFoundイベントが発生し、URLがLivestreetセクションと一致する場合、Livestreetの要求は既に実行されています。 小さな警告があります:これがLivestreetユーザーを登録するリクエストである場合、登録スニペットはsnippet.livestreet.ajax-registration.phpと呼ばれます
ここにプラグインのリストがあります<?php switch($modx->context->key){ case 'web': break; default: return; } switch($modx->event->name){
ご覧のように、原則として、プラグインはそのような機能にはまったく大きくありません。 したがって、自分のニーズに合わせて変更したい場合は、誰でもそれを理解できます。
2.スニペットsnippet.livestreet.runは、LiveStreetのリクエストを実行するために使用されます
リスティング <?php if($request_uri){ $_SERVER['REQUEST_URI'] = $request_uri; } ob_start(); @include $modx->getOption('livestreet.livestreet_path').$modx->getOption('livestreet.index_file'); $output = ob_get_contents(); ob_end_clean(); return $output;
彼はとても小さいです。 愚かにLiveStreetを呼び出し、バッファリングして結果を返します。 したがって、出力前にコンテンツを処理し、実行を確認するためにAjaxリクエストの結果を処理することができます(これは、ユーザー登録を実行する場合に特に重要です。 Livestreetで)。
再度予約があります。 Livestreetでは、コンテンツ出力クラスは正しく機能しません。 Ajax出力モードでは、LSは愚かにexit();を実行し、モジュール全体の動作を中断します。 したがって、LSでは、少し操作する必要があります。
ファイルコンポーネント/ livestreet / docs / forLiveStreet / source / engine / modules / viewer / Viewer.class.php
DisplayAjaxメソッド($ sType = 'json')でexit()を置き換えます。 帰りに;
そして、Displayメソッド($ sTemplate)で置き換えます
if ($this->sResponseAjax) { $this->DisplayAjax($this->sResponseAjax); }
に
if ($this->sResponseAjax) { $this->DisplayAjax($this->sResponseAjax); return; }
原則として、これはLivesreetの独立した仕事を変えることはありませんが、Ajaxリクエストの結果を処理し、ロジックを継続する機会を与えてくれます。
3. livestreet.ajax-registrationのスニペット。
このスニペットは、Livestreetユーザーの登録要求を処理します。
設定で同期登録が無効になっている場合、スニペットは実行されません。これがLivestreetでのユーザー登録の直接リクエストである場合、リクエストはLivestreetに送信されます。
同期登録が有効になっている場合、リクエストはLivestreetではなく、MODXにユーザーを登録するために送信されます(プロセッサーコア/コンポーネント/ livestreet /プロセッサー/セキュリティ/ユーザー/ ajaxCreate.class.phpが呼び出され、拡張クラスmodUserCreateProcessorが呼び出されます)。 このプロセッサを呼び出すことの本質は簡単です-システムプロセッサmodx / processor / security / user / create.class.phpを介してベースプロセッサを呼び出してMODXユーザーを作成する
この呼び出しの理由は、このプロセッサが新しいユーザーを作成する権利をチェックするため、このプロセッサを直接呼び出すことができないためです。これは、許可されていないユーザーの権利ではありません。 したがって、このクラスでは、この権利の検証を上書きするだけです(この
手法の ヒントを
ありがとうbezumkinに感謝し
ます )。
リスティング <?php $file = MODX_PROCESSORS_PATH.'security/user/create.class.php'; if(!file_exists($file)){ class modLivestreetUserCreateErrorProcessor extends modProcessor { public function process() { $err = 'processor security/user/create not found'; $this->modx->log(modX::LOG_LEVEL_ERROR, $err); return $this->failure($err); } } return 'modLivestreetUserCreateErrorProcessor'; } require_once $file; class modLivestreetUserCreateProcessor extends modUserCreateProcessor { public $permission = ''; } return 'modLivestreetUserCreateProcessor';
さて、ユーザーがMODXに登録されたら、livestreet_usersプラグインをOnBeforeUserFormSaveイベントでハングさせます。
リスティング <?php switch($modx->event->name){ case 'OnBeforeUserFormSave': switch($scriptProperties['mode']){
MODXユーザーの登録時に、すべてのチェックの後(すべてが正常であれば)、プラグインが実行され、LiveStreetでユーザーの登録が試行されます。 試行が中断した場合、LiveStreetエラーを返し、MODXユーザーの登録を終了します。 すべて問題なければ、最終的にユーザーをMODXに登録します。
したがって、MODX管理パネルとFrontEndの両方からユーザーを登録できるようにします。あちこちで、考えられるすべてのエラーを確認し、MODXとLiveStreetの両方でユーザー登録を取得します。 将来、必要に応じて、これらのユーザーを電子メールでリンクできます(LSでは電子メールが一意のキーであるため)。
それだけです:-)
だから私はMODXが大好きです:-)エンジン自体のコードのバイトに影響を与えることなく、エンジンを真剣に変更しました。
しかし、MODXにはソーシャルモジュールはありません。
しかし、Livestreetは優れたソーシャルネットワークですが、MODXなどのAPIは提供していません。 管理者さえもいません。
しかし、一緒に、これらのエンジンは素晴らしい製品を提供できます! このモジュールの開発を続けます。
UPD 2:新しいリリースがリリースされました:
modlivestreet-0.4.1-rc.transport.zip新規:
1.すべての要素と設定にmodLivestreetプレフィックスが追加されたため、残念ながら新しいモジュールには以前のバージョンとの下位互換性がありません。 しかし、確かにこれは誰にとっても問題にはなりません。 古いモジュールを削除して新しいモジュールを入れ、メインページで次のように変更するだけで十分です。
2.ディレクトリ/テンプレート/、/アップロード/などからダウンロードしたファイルの拡張子のチェックを追加し、.phpなどをダウンロードしないようにしました。
もちろん、そのようなファイルはそこにあるべきではありませんが、少なくとも/ skin / config /にはそのようなファイルがあります。
UPD 3:セキュリティノート:
modxlivestreet.ru/blog/modLivestreet_security/7.html