شما اینجا هستید

عوض کردن نقش کاربر پس از 3ماه توسط افزونه rules

8 پست / 0 جدید
آخرین ارسال

وضعیت: آفلاین
  • تعداد ارسال: ۸۰
  • تاریخ عضویت: ۱۳۹۴/۰۲/۲۹
  • آخرین حضور: ۱۳۹۶/۰۵/۲۷
  • سمت: کاربر عضو
  • موقعیت: کردستان

سلام دوستان من می خواستم نقش کاربر هامو پس از سه ماه از عضویت عوض کنم، برای این کار، این آموزش رو پیدا کردم(Expire a specific user role) اما چون مسیرهایی رو که میگه نتونستم پیدا کنم، برام اجرایی نشد.
کسی میتونه منو راهنمایی کنه؟

نسخه مرتبط: 

وضعیت: آفلاین
  • تعداد ارسال: ۸۰
  • تاریخ عضویت: ۱۳۹۴/۰۲/۲۹
  • آخرین حضور: ۱۳۹۶/۰۵/۲۷
  • سمت: کاربر عضو
  • موقعیت: کردستان

روش کار اینه که اول باید یه rules component برای تغییر نقش کاربر ایجاد بشه، این قانون باید زمانی اجرا بشه که کاربر ثبت نام می کنه یا هر فرم دیگه ای رو تکمیل و ارسال می کنه. بعد یه action برای زمان بندی کردن component ایجاد می کنیم تا مشخص کنیم این component در چه زمانی اجرا بشه.
در نتیجه تو آموزشی که توی سایت دروپال هست باید به جای rule_sets بزاریم component و به جای trigger بزاریم schedule .


وضعیت: آفلاین
  • تعداد ارسال: ۸۰
  • تاریخ عضویت: ۱۳۹۴/۰۲/۲۹
  • آخرین حضور: ۱۳۹۶/۰۵/۲۷
  • سمت: کاربر عضو
  • موقعیت: کردستان

آموزشی که تو سایت دروپال هست مربوط به دروپال 6 هست.
در راستای همین تایپک به آموزش انتشار محتوا بعداز مدت زمان خاص رسیدم که میتونم ازش برای حل مشکل خودم استفاده کنم.
مراحل کار به شکل زیر هست ولی یه مشکلی که داره اینه که برای انتشار محتوا کرون باید اجرا بشه.
Creating a rule set as scheduling action
    Go to admin/config/workflow/rules/components/add
    select "Rule set", hit "continue"
    name: "Publish content"
    data type, first row: data type "Node", name/machine name "node", usage "parameter"
    click "Continue"
    click on "Add Rule"
    name "Publish action", click "Save changes"
    click "Add action", select "Node > Publish content", click "Save"
Creating a triggered rule
    Go to admin/config/workflow/rules/reaction/add
    Name "Publishing rule", react on event "Node > After saving new content"
    click "Save"
    click "Add action", select action "Rules scheduler > Schedule component evaluation"
    Value: "Publish content", click "Continue"
    Value "+1 day", data selector "node"
    click "Save"
    click "Add condition"
    select condition "Node > Content is published", check "negate"
    click "Save"

آموزش بالا همه محتوا هایی که به صورت unpublished ایجاد شده اند رو 24 ساعت بعداز ساخته شدن انتشار میده.
کد زیر برای انتشار محتوا از نوع مقاله (آرتیکل) سه دقیقه بعد از ایجاده، می تونید کد زیر رو ایمپورت کنید و تغییرات خودتون رو توش بدین:
اول این Component رو ایمپورت کنید:

{ "rules_publish_content" : {
    "LABEL" : "Publish content",
    "PLUGIN" : "rule set",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "USES VARIABLES" : { "publish_content__content" : { "label" : "Content", "type" : "node" } },
    "RULES" : [
      { "RULE" : {
          "DO" : [ { "node_publish" : { "node" : [ "publish-content--content" ] } } ],
          "LABEL" : "Publish action"
        }
      }
    ]
  }
}

بعدش rule زیر رو ایمپورت کنید:
{ "rules_publishing_rule" : {
    "LABEL" : "Publishing rule",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules", "rules_scheduler" ],
    "ON" : { "node_insert--article" : { "bundle" : "article" } },
    "IF" : [ { "NOT node_is_published" : { "node" : [ "node" ] } } ],
    "DO" : [
      { "schedule" : {
          "component" : "rules_publish_content",
          "date" : { "select" : "node:created", "date_offset" : { "value" : 180 } },
          "param_publish_content__content" : [ "node" ]
        }
      }
    ]
  }
}

ان شاالله کد عوض کردن نقش کاربر پس از یه زمان مشخص توسط افزونه rules رو هم به کمک آموزش بالا به زودی برا کسایی که بهش احتیاج دارن میزارم.


وضعیت: آفلاین
  • تعداد ارسال: ۸۰
  • تاریخ عضویت: ۱۳۹۴/۰۲/۲۹
  • آخرین حضور: ۱۳۹۶/۰۵/۲۷
  • سمت: کاربر عضو
  • موقعیت: کردستان

قانون زیر 5 دقیقه بعد از ثبت نام کردن، نقش کاربر رو از کاربر شناخته شده به کاربری با نقش trial user تبدیل می کنه. قبل از اینکه rules رو ایجاد کنید نقش trial user رو ایجاد کنید.
اول Component زیر رو ایمپورت کنید:
{ "rules_expire_user_role" : {
    "LABEL" : "Expire user role",
    "PLUGIN" : "rule set",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "USES VARIABLES" : { "expire_user" : { "label" : "User", "type" : "user" } },
    "RULES" : [
      { "RULE" : {
          "DO" : [
            { "user_add_role" : { "account" : [ "expire-user" ], "roles" : { "value" : { "4" : "4" } } } }
          ],
          "LABEL" : "Expire user rule"
        }
      }
    ]
  }
}

حالا rule زیر رو ایمپورت کنید.
{ "rules_user_role_expire" : {
    "LABEL" : "user role expire",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules", "rules_scheduler" ],
    "ON" : { "user_insert" : [] },
    "IF" : [
      { "user_has_role" : { "account" : [ "account" ], "roles" : { "value" : { "2" : "2" } } } }
    ],
    "DO" : [
      { "schedule" : {
          "component" : "rules_expire_user_role",
          "date" : { "select" : "account:created", "date_offset" : { "value" : 300 } },
          "param_expire_user" : [ "account" ]
        }
      }
    ]
  }
}


وضعیت: آفلاین
  • تعداد ارسال: ۸۰
  • تاریخ عضویت: ۱۳۹۴/۰۲/۲۹
  • آخرین حضور: ۱۳۹۶/۰۵/۲۷
  • سمت: کاربر عضو
  • موقعیت: کردستان

نظر طراحان بزرگوار رو می خوام:
هدف من از این که نقش کاربر رو بعد از مثلاً 3ماه عوض کنم اینه که کاربر هر سه ماه یه دفعه مجبور بشه مبلغی رو به خاطر امکاناتی که در اختیارش گذاشته شده پرداخت کنه.
برنامه من اینه که:

  1. با rule بالا کاربر سه ماه پس از ثبت نامش دارای یه نقش با کمترین دسترسی بشه
  2. یه فرم برای پرداخت حق عضویت ایجاد کنم(رو این قسمت فعلا کار نکردم)
  3. بعد از تکمیل فرم و پرداخت حق عضویت، با یه rule دیگه، نقشی که به کاربر داده بودم رو ازش حذف کنم و دوباره نقش کاربر شناخته شده رو بهش بدم البته میشه یه نقش که تمام دسترسی های کاربر شناخته شده رو داشته باشه بهش داد.
  4. یه rule دیگه درست کنم که با تغییر نقش کاربر بازم شروع به شمارش کنه و بعد سه ماه دوباره نقش کاربر رو عوض کنه(رو این قسمت دارم کار می کنم و فعلا به جایی نرسیدم)

لطف کنید نظر و پیشنهاد بدین.


وضعیت: آفلاین
  • تعداد ارسال: ۸۰
  • تاریخ عضویت: ۱۳۹۴/۰۲/۲۹
  • آخرین حضور: ۱۳۹۶/۰۵/۲۷
  • سمت: کاربر عضو
  • موقعیت: کردستان

قانون مرحله چهارم هم حل شد
بعد از اینکه فرم پرداخت تکمیل و کارش تموم میشه به کاربر یک نقش با عنوان normal user داده میشه(شماره این نقش برا من 5 هستش)
برای اینکه rule درست کارکنه Component که تو تایپک چهار ساختیم به شکل زیر اصلاح کنید اما rule که ساختیم دستکاری نمیکنیم:

{ "rules_expire_user_role" : {
    "LABEL" : "Expire user role",
    "PLUGIN" : "rule set",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "USES VARIABLES" : { "expire_user" : { "label" : "User", "type" : "user" } },
    "RULES" : [
      { "RULE" : {
          "DO" : [
            { "user_remove_role" : { "account" : [ "expire-user" ], "roles" : { "value" : { "5" : "5" } } } },
            { "user_add_role" : { "account" : [ "expire-user" ], "roles" : { "value" : { "4" : "4" } } } }
          ],
          "LABEL" : "Expire user rule"
        }
      }
    ]
  }
}

و بعدش یه rule دیگه به صورت زیر ایجاد می کنیم:

{ "rules_role_changed" : {
    "LABEL" : "Role changed and expire",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules", "rules_scheduler" ],
    "ON" : { "user_update" : [] },
    "IF" : [
      { "NOT user_has_role" : {
          "account" : [ "account-unchanged" ],
          "roles" : { "value" : { "5" : "5" } }
        }
      },
      { "user_has_role" : { "account" : [ "account" ], "roles" : { "value" : { "5" : "5" } } } }
    ],
    "DO" : [
      { "schedule" : {
          "component" : "rules_expire_user_role",
          "date" : {
            "select" : "account-unchanged:last-access",
            "date_offset" : { "value" : 120 }
          },
          "param_expire_user" : [ "account-unchanged" ]
        }
      }
    ]
  }
}

دقت داشته باشید که من زمان ها رو روی 2 دقیقه یا 5 دقیقه ست کردم که بشه سریع تستش کرد با مراجعه به قسمت Actions قانون زمان رو روی مقداری که خودتون در نظر دارید ست کنید، همچنین در نظر داشته باشید که rule های زماندار وقتی اجرایی میشن که کرون اجرا بشه.


وضعیت: آفلاین
  • تعداد ارسال: ۸۰
  • تاریخ عضویت: ۱۳۹۴/۰۲/۲۹
  • آخرین حضور: ۱۳۹۶/۰۵/۲۷
  • سمت: کاربر عضو
  • موقعیت: کردستان

برای فرم پرداخت حق عضویت کسی نظری نداره؟؟؟؟


وضعیت: آفلاین
  • تعداد ارسال: ۸۰
  • تاریخ عضویت: ۱۳۹۴/۰۲/۲۹
  • آخرین حضور: ۱۳۹۶/۰۵/۲۷
  • سمت: کاربر عضو
  • موقعیت: کردستان

اینجا ایجاد درگاه پرداخت بدون کامرس و بدون ابرکارت رو ببینید
ایجاد درگاه پرداخت با استفاده از وب سریس و رولز ( wsclient , rules )