নিয়ম সঙ্গে জৈব গ্রুপ যোগদানের পরে ব্যবহারকারীর ভূমিকা যোগ করুন


8

আমি কোনও ব্যবহারকারীর ভূমিকা জুড়ে দেওয়ার চেষ্টা করছি যা কোনও গ্রুপের সদস্য হয়ে গেছে। কর্মপ্রবাহ এইরকম:

  • গ্রুপে যোগদানের জন্য ব্যবহারকারীদের অনুরোধ।
  • অনুরোধ গ্রুপ প্রশাসক দ্বারা অনুমোদিত হয়।
  • ব্যবহারকারী গ্রুপটির সদস্য।
  • ব্যবহারকারী একটি অতিরিক্ত ভূমিকা পান।

আমি একটি নিয়ম তৈরি করার চেষ্টা করেছি যা এটি করতে সক্ষম হবে, তবে গোষ্ঠীতে যোগদানের পরে সমস্ত সেটিংস সঠিক বলে মনে হলেও ব্যবহারকারী অতিরিক্ত ভূমিকা পান না। আমার নিয়ম সেটিংসের স্ক্রিনশটটি নীচে দেখুন:

আমার নিয়মের স্ক্রিনশট


আমার ঠিক একই সমস্যা আছে, সুতরাং এটিতে একটি অনুগ্রহ শুরু করলাম।
সবুজ কালো

@ জন আপনি কি আপনার সমস্যার সমাধান করেছেন?
কলাব্রো

উত্তর:


2

এখন আপনার বিধিটি ব্যবহারকারীর সদস্যতার অনুরোধের পরে চলে। ওজি সদস্যতা অনুমোদিত হওয়ার পরে আপনার এটি চালানো উচিত।
সদস্যপদ অনুমোদনের পরে বা প্রশাসক (স্বতঃ-অনুমোদিত) দ্বারা যোগ করা হলে আমি সেই নিয়মটি প্রস্তুত করেছিলাম যা "সদস্য" ভূমিকা যুক্ত করে। এখানে রফতানি ( 4আমার দ্রুপাল ভূমিকা "সদস্য" এর আইডি):

{ "rules_after_add_user_to_group" : {
    "LABEL" : "After add user to group",
    "PLUGIN" : "reaction rule",
    "TAGS" : [ "test" ],
    "REQUIRES" : [ "rules", "og" ],
    "ON" : [ "og_user_insert", "og_user_approved" ],
    "IF" : [ { "data_is" : { "data" : [ "og-membership:state" ], "value" : "1" } } ],
    "DO" : [
      { "user_add_role" : { "account" : [ "account" ], "roles" : { "value" : { "4" : "4" } } } }
    ]
  }
}

স্ক্রীনশট: এখানে চিত্র বর্ণনা লিখুন

টিপ:admin/config/workflow/rules/settings আপনার বিধিগুলি কখন কার্যকর হয় তা দেখতে আপনি নিয়মাবলীর ডিবাগ (পৃষ্ঠা ) সক্ষম করতে পারেন ।


হাই কালাব্রো। আপনার জঞ্জাল জন্য আপনাকে ধন্যবাদ! আমি সেভাবে সেট আপ করেছি, তবে ব্যবহারকারী ভূমিকাটি পান না। আমি কাস্টম মডিউলে একটি ফাংশন যোগ করে এবং কাস্টম পিএইচপি কোড ব্যবহার করে ভূমিকা যুক্ত করে এটি ঠিক করতে সক্ষম হয়েছি। আমি এখানে নোংরা সমাধান পোস্ট করুন।
সবুজ কালো

পুনশ্চ. আমি এখানে আমার প্রশ্নটি জিজ্ঞাসা করেছি, এই প্রশ্নের চেয়ে আরও বিশদ: drupal.org/node/1866278 আপনি deb অ্যাকাউন্টটি ডিবাগ করেন, আপনি দেখতে পাবেন যে ভূমিকাটি যুক্ত করা হয়েছে, তবে কেবল সংরক্ষণ করা হয়নি, বা কোনও কিছুতে ওভাররাইট করা হয়েছে।
সবুজ কালো

@ জন আমি আপনার প্রশ্নটি দ্রুপাল.আর.জে মন্তব্য করেছি। দয়া করে এটি দেখুন: # 1
ক্যালাব্রো

2

আমার একই সমস্যা রয়েছে (যে কারণে আমি একটি অনুগ্রহ শুরু করেছি)।

আমি এটি এইভাবে সমাধান।

আমি একটি কাস্টম মডিউল একটি ফাংশন যোগ। আপনি দুটি ফাইল সহ / সাইট / সমস্ত / মডিউলগুলিতে একটি নতুন ফোল্ডার তৈরি করে আপনার নিজস্ব মডিউলটি সহজেই তৈরি করতে পারেন:

yourname_module.info - >>

name = "Custom Functions"
description = "Allows execution of custom code for the website"
core = 7.x
package = "yourname_customs"
version = 7.x-1.x

yourname.module

<?php 
function yourname_add_role_to_user($uid, $role_name) {

    $user = user_load($uid);

    if ($user === false || !isset($user->uid) || !is_array($user->roles)) {
        //Display an ugly error when user is not set correctly
        exit('$user is not set correctly <pre>' . print_r($user, true) . "</pre>");
    }

    //Get the user roles
    $roles = user_roles(TRUE);
    $rid = array_search($role_name, $roles);

    if ($rid != FALSE) {
        $new_role[$rid] = $role_name;

        // Add new role to existing roles.
        $all_roles = $user->roles + $new_role;

        //Delete all user roles from DB
        db_delete('users_roles')
                ->condition('uid', $user->uid)
                ->execute();

        //Insert all user roles in DB
        $query = db_insert('users_roles')->fields(array('uid', 'rid'));
        foreach (array_keys($all_roles) as $rid) {
            if (!in_array($rid, array(DRUPAL_ANONYMOUS_RID, DRUPAL_AUTHENTICATED_RID))) {
                $query->values(array(
                    'uid' => $user->uid,
                    'rid' => $rid,
                ));
            }
        }
        $query->execute();
    } else {

        //Display an ugly error wen role not found
        exit("Could not find role " . htmlspecialchars($role_name) . "<br/>
              Vald roles: <pre>" . print_r($roles, true) . "</pre>");
    }
}

তারপরে আপনার মডিউলগুলি যান এবং "কাস্টম ফাংশন" সক্ষম করুন।

আপনার মডিউল কাস্টম পিএইচপি কোড সক্ষম হয়েছে তা নিশ্চিত করুন।

তারপরে কর্মের পরিবর্তে বিধিগুলিতে ব্যবহারকারীকে ভূমিকা রাখতে যোগ করুন: কাস্টম পিএইচপি কোড চালান এবং প্রবেশ করুন:

yourname_add_role_to_user($account->uid, "Members");
header("Location: /admin/people");
exit;

এটি ব্যবহারকারীকে ভূমিকাটিতে যুক্ত করে এবং স্ক্রিপ্টটি বন্ধ করে দেয়। আপনি যদি স্ক্রিপ্টটি বন্ধ না করেন, ভূমিকাটি সংরক্ষণ করা হবে না। এবং আমার একটি মডিউল যুক্ত করার দরকার ছিল কারণ মৃত্যুর user_saveসময় কার্যকর হয় না custom php code

সুতরাং, আমি জানি এটি খুব কুৎসিত, তবে এটি আমার পক্ষে কাজ করে।


0

আপনি ওজির কোন সংস্করণটি চালান?

এটি একটি জানা বাগ যা জৈব গ্রুপ ২.৪++ ( বাগের পৃষ্ঠাটি দেখুন ) এর সাথে স্থির করা হয়েছে ।

আপনি যদি ইতিমধ্যে ওজির একটি 2.3 বা নিম্ন সংস্করণটি চালাচ্ছেন তবে আপডেটগ্র্যাগটি সোজা হওয়া উচিত। আপনি যদি ওজি 1.x চালাচ্ছেন তবে ওজি 1.5 থেকে 2.4+ অবধি আপডেট প্রক্রিয়া সম্পর্কে আপনি আরও বিশদ জানতে পারেন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.