web-dev-qa-db-ja.com

ユーザーがステータス更新にフラグを付けたときに欠落しているルールイベントを作成する方法

問題:

ルールイベントがありません。 EVENT 1.ユーザーがステータスにフラグを立てたおよびEVENT 2.ユーザーがfbss_commentにフラグを立てた。すべてが利用可能です。これらのイベントを追加する必要があります。ステータスの更新は statuses module によって作成されます。上記の両方のイベントを メッセージモジュール を使用してログに記録したいのですが、このイベントが作成されない限り、できません。条件とアクションはデフォルトで使用できます。

重要な注意:

ステータスフラグ と互換性がありません。フラグ2で動作します。フラグ2をインストールすると、ステータス更新はステータス更新とステータスコメントに「いいね」ボタンを表示します。これだけでなく、「フォロー」フラグのフラグが付いている場合は、ステータスストリームで、フォローしているユーザーのステータスの更新を確認することもできます。さらに、ルールの条件とアクションが表示された場合、 "fbss_comment is flagged"および "ステータスであることがわかりますフラグが付けられている "および同様のアクション"フラグのステータス "および"フラグfbss_comment "を使用できます。ソリューションがステータスモジュールフォルダーとそのサブモジュール内に隠されているのではないかと感じています。それを見る目を持っている人が必要です。誰かが言った、「drupalですべてが可能」

私が試したことは?

「ユーザーがfbss_commentにフラグを立てた」イベントから始めて、サブモジュールfbss_commentsのファイルfbss_comments_rules.rules.incに行きました。 function fbss_comments_rules_rules_event_info()の下に貼り付け、

'fbss_comments_flag' => array(
      'label' => t('User flags a comment on a status'),
      'group' => t('Statuses Comments'),
      'variables' => array(
        'comment' => array(
          'type' => 'fbss_comment',
          'label' => t('The status comment.'),
        ),
      ),
    ),

次にfunction fbss_comments_rules_add_action 追加した、

function fbss_comments_rules_flag_action($cid, $sid, $message, $uid) {
  fbss_comments_flag_comment($cid, $sid, $message, empty($uid) ? $GLOBALS['user']->uid : $uid);
}

注:私は何をしていたのかわかりません。私は試行錯誤としてそれをやった。

メッセージタイプエクスポート

{
  "name" : "scomments_liked",
  "description" : "Status comments liked",
  "argument_keys" : [ "@scomments_liked_user", "!scomments_liked_statuses_url" ],
  "argument" : [],
  "category" : "message_type",
  "data" : {
    "token options" : { "clear" : 0 },
    "purge" : { "override" : 0, "enabled" : 0, "quota" : "", "days" : "" }
  },
  "language" : "",
  "arguments" : null,
  "message_text" : { "und" : [
      {
        "value" : "@scomments_liked_user liked your comment on the \u003Ca href=\u0022!scomments_liked_statuses_url\u0022\u003EStatus Update\u003C\/a\u003E",
        "format" : "plain_text",
        "safe_value" : "@scomments_liked_user liked your comment on the \u003Ca href=\u0022!scomments_liked_statuses_url\u0022\u003EStatus Update\u003C\/a\u003E"
      }
    ]
  },
  "rdf_mapping" : []
}

ルールのエクスポート

{ "rules_statuses_comments_flag" : {
    "LABEL" : "Statuses comments flag",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "TAGS" : [ "statuses" ],
    "REQUIRES" : [ "fbss_comments_rules", "rules" ],
    "ON" : { "fbss_comments_flag" : [] },
    "DO" : [
      { "fbss_comments_rules_load_action" : {
          "USING" : { "cid" : [ "comment:cid" ] },
          "PROVIDE" : { "comment_loaded" : { "comment_loaded" : "Loaded status comment" } }
        }
      },
      { "entity_query" : {
          "USING" : {
            "type" : "user",
            "property" : "uid",
            "value" : [ "comment-loaded:uid" ],
            "limit" : "1"
          },
          "PROVIDE" : { "entity_fetched" : { "entity_fetched" : "Fetched entity" } }
        }
      },
      { "entity_create" : {
          "USING" : {
            "type" : "message",
            "param_type" : "scomments_liked",
            "param_user" : [ "entity-fetched:0" ]
          },
          "PROVIDE" : { "entity_created" : { "entity_created" : "Created entity" } }
        }
      },
      { "data_set" : {
          "data" : [ "entity-created:arguments:scomments-liked-user" ],
          "value" : "[site:current-user]"
        }
      },
      { "data_set" : {
          "data" : [ "entity-created:arguments:scomments-liked-statuses-url" ],
          "value" : "[comment:comment-status-url]"
        }
      }
    ]
  }
}

Nial Murphyの回答に基づくルールのエクスポート

{ "rules_user_flagged_statuses" : {
    "LABEL" : "User flagged statuses update",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "TAGS" : [ "statuses" ],
    "REQUIRES" : [ "fbss_rules", "rules", "flag" ],
    "ON" : { "flag_flagged_like" : [] },
    "DO" : [
      { "fbss_rules_load_action" : {
          "USING" : { "sid" : [ "flagged-status:sid" ] },
          "PROVIDE" : { "status_loaded" : { "status_loaded" : "Loaded status" } }
        }
      },
      { "entity_query" : {
          "USING" : {
            "type" : "user",
            "property" : "uid",
            "value" : [ "status-loaded:sender" ],
            "limit" : "1"
          },
          "PROVIDE" : { "entity_fetched" : { "entity_fetched" : "Fetched entity" } }
        }
      },
      { "entity_create" : {
          "USING" : {
            "type" : "message",
            "param_type" : "flagged_status",
            "param_user" : [ "entity-fetched:0" ]
          },
          "PROVIDE" : { "entity_created" : { "entity_created" : "Created entity" } }
        }
      },
      { "data_set" : {
          "data" : [ "entity-created:arguments:statuses-flagged-user" ],
          "value" : "[flagging-user:name]"
        }
      }
    ]
  }
}
4
Umair

序文-開始

この回答は、現在のバージョンの Flag 、つまり7.x.-3.xを使用していることを前提としています。この回答の下のコメントには次のように記載されていますが:

ステータスはフラグ3と互換性がありません。フラグ2で動作します。フラグ2をインストールすると、ステータス更新はステータス更新およびステータスコメントに「いいね」ボタンを表示します。これだけでなく、「フォロー」フラグのフラグが付いている場合は、ステータスストリームで、フォローしているユーザーのステータスの更新を確認することもできます。

序文-停止



(あなたの質問のように)それらのルールイベントのいずれかを作成するための方法なしがあると思います:

  • ステータス更新にフラグが立てられます。
  • ステータスコメントにフラグが付けられます。

少なくともバージョン7.x.-3.xを使用している場合はそうではありません。 フラグ の。理由を理解するために読んでください...

ルールUIを使用して、イベントのFlagグループ内にある使用可能なルールイベントを確認します。そこに表示されるエントリの数はさまざまですが、それぞれのエントリは次のようなものです。

A thing-ieは、「somethingの下でフラグが立てられました。

さらに詳細:

  • thing-ieは、Drupal entityを参照します。ノード、ユーザーのように、グループ、メッセージ。
  • somethingはフラグのtitleを参照し、定義(作成または編集)するときに指定します)管理におけるあなたの旗。

しかし、あなたがadd/admin/structure/flags/addを使用して新しいフラグを設定する場合、最初に強制されるのは "作成するフラグのタイプを選択します "(これがthing-ieになります)。また、選択できるオプションはすべてエンティティです(ノード、ユーザー、グループ、メッセージ、コメントなど)。ただし、「ステータス」を含むものは選択できません。リスト(そして Statuses モジュールはエンティティーを作成しないため、欠落しています)。

ただし、そのリストで「コメント」を選択すると(「ステータスコメント」に近いので、試してみる価値があります)、次のステップ(admin/structure/flags/add/comment)で、-Bundles。このフラグを使用できるバンドルを選択できます。そのリストで使用可能なオプションは「ABCコメント」のようですが、「ABC」は各コンテンツタイプに対応しています。したがって、これも機能しません(選択できる「ステータス」に関連するものはありません)。

上記の内容は、Flagのプロジェクトページに記載されている内容(ここで太字のマークアップを追加した)のために、驚くべきことではありません。

...このモジュールを使用して、サイト管理者はノード、コメント、ユーザー、およびその他の種類のentityに任意の数のフラグを提供できます。

繰り返しますが、 Statuses モジュールはエンティティを作成しないため、次のようなものを思い付く方法はありません。

Aステータス(= thing-ie)に「Some status関連タイトル」(= somethingのフラグが付けられました。

上記のすべての理由から、あなたは間違った質問をしていると思います:

  • Flag モジュールを使用してStatusにフラグを立てることはできません。
  • ステータスの更新またはステータスのコメントに関連して発生した何かに関するログを作成するために使用できるカスタムルールイベントを作成するために使用できる Statuses モジュールに関連する他のものについて考えてみてください。

たぶん、これが何らかの形で役立つかもしれません。ステータスに使用できる4つのルールイベントとステータスコメントに3つのルールイベントがあります。それらのルールイベントのいずれかを使用して、追加のルールアクションとして実行したいことを実行します。質問に対する回答があった場合に考えているのと同じです。

申し訳ありませんが、申し訳ありませんが、これはそれで十分です。

3
Pierre.Vriens

drupal.org/node/17879drupal.org/node/1311468maybe他にいくつかありますか?ステータス+ルールでフラグ3を処理しましたが、コメントは処理しませんでした。可能かもしれませんが、コメントにフラグを付けたくなかったので、時間を費やすことはありませんでした。

何らかの理由で、自分の作業モジュール ここではダウンロードする となったパッチの順序を再現できません。これにより、ルールに統合され、次にメッセージに統合されるステータスの新しいフラグタイプを作成できます。クリーンインストールでテストしたところ、ステータスが気に入ったときにアクションが実行されました。

私は特にGoogleドライブのモジュールを提供する人を信頼しませんが、Pierre.Vriensはおそらく私が悪い人ではないことを保証できます。テスト後に本稼働で使用したい場合は、見つけることをお勧めします45kbのstatuses.moduleファイルを生成し、そこから機能するパッチの組み合わせ/順序。 .infoファイルを見ると、Devリリースから始めなければならないようです。

補足:メッセージモジュールに含まれているサンプルファイルをご覧ください。ルールが十分ではなく、追加された可能性を認識しておくと非常に複雑なメッセージシナリオがいくつかあります。

3
Niall Murphy