Display a custom message with the Node_limitnumber module.

Last modified: November 7, 2009 - 20:06

I wanted to restrict the the number of posts a Certain Role could create. So I installed the "node_limitnumber" module.

It worked out great, except I was wanting a bit more functionality when it came to the execution of the code.

As the module is now, if a user try's to create more than their allowed the, module re-directs them to the add content page and following error message is displayed...

"You can't create more content of type !type, sorry."

Effective... But I decided to add some "snippets" to the node_limitnumber.module file for configuring conditional messages. This was my first real php programming venture.

Before.. (starting at line 152 of node_limitnumber.module,v 1.6.2.1 2009/09/22)

$result = db_query( $q, $node->type, $user->uid);
      $num = db_affected_rows();
      if ($num >= $limit) {// We have the data, now we check the limit
        $nodetypename = node_get_types('name', $node);
        drupal_set_message(t("You can't create more content of type !type, sorry.", array('!type' => $nodetypename)), 'error');
        drupal_goto('node/add');
      }
    }
  }
}

And After...

$result = db_query( $q, $node->type, $user->uid);
      $num = db_affected_rows();
      if ($num >= $limit) {// We have the data, now we check the limit
        $nodetypename = node_get_types('name', $node);
        switch ($nodetypename)
{
case "Story":
        drupal_set_message(t("We're sorry, Standard accounts are limited to 3 New Story posts a week.", array('!type' => $nodetypename)), 'error');
        drupal_goto('node/add');
  break;
case "Page":
        drupal_set_message(t("We're sorry, But you're only allowed one user page. If you feel you've reached this message in error, please contact us.", array('!type' => $nodetypename)), 'error');
        drupal_goto('node/add');
  break;
default:
        drupal_set_message(t("It seems you already have a !type... It may be a technical issue though. Try again, and if you still have trouble <a href='/support'>click here</a> to contact customer support.", array('!type' => $nodetypename)), 'error');
        drupal_goto('node/add');
}
      }
    }
  }
}

Oh yeah... You can also make the redirect conditional where you see drupal_goto(''node/add");

Hopefully some of you find this useful, that and it inspires someone with mad php Skills to further develop this module.

 
 

Drupal is a registered trademark of Dries Buytaert.