]> jfr.im git - irc/quakenet/newserv.git/blobdiff - request/lrequest.c
TRUSTS: require sqlite
[irc/quakenet/newserv.git] / request / lrequest.c
index f8da1b2a67db9ba6259285bb63bb3579c6a3375b..feed150ac033790cd7925e2fdc4dbc4e360651cb 100644 (file)
@@ -5,13 +5,12 @@
 #include "request.h"
 #include "lrequest.h"
 #include "request_block.h"
+#include "request_fasttrack.h"
 #include "../localuser/localuser.h"
 
 /* stats counters */
-int lr_noregops = 0;
-int lr_scoretoolow = 0;
 int lr_top5 = 0;
-int lr_floodattempts = 0;
+int lr_notargets = 0;
 
 #define min(a,b) ((a > b) ? b : a)
 
@@ -30,69 +29,49 @@ int lr_requestl(nick *svc, nick *np, channel *cp, nick *qnick) {
 
   cf = cf_findchanfix(cp->index);
 
-  if (cf == NULL) {
-    sendnoticetouser(svc, np, "Sorry, your channel '%s' was created recently. "
-          "Please try again in an hour.", cp->index->name->content);
+  if(cf) {
+    rocount = cf_getsortedregops(cf, LR_TOPX, rolist);
 
-    lr_noregops++;
+    ro = NULL;
 
-    return RQ_ERROR;
-  }
-
-  rocount = cf_getsortedregops(cf, LR_TOPX, rolist);
-
-  ro = NULL;
-
-  for (i = 0; i < min(LR_TOPX, rocount); i++) {
-    if (cf_cmpregopnick(rolist[i], np)) {
-      ro = rolist[i];
-      break;
+    for (i = 0; i < min(LR_TOPX, rocount); i++) {
+      if (cf_cmpregopnick(rolist[i], np)) {
+        ro = rolist[i];
+        break;
+      }
     }
-  }
 
-  if (ro == NULL) {
-    sendnoticetouser(svc, np, "Sorry, you must be one of the top %d ops "
-          "for the channel '%s'.", LR_TOPX, cp->index->name->content);
+    if (ro == NULL) {
+      sendnoticetouser(svc, np, "Sorry, you must be one of the top %d ops "
+            "for the channel '%s'.", LR_TOPX, cp->index->name->content);
 
-    lr_top5++;
-
-    return RQ_ERROR;
-  }
-
-  /* treat blocked users as if their score is too low */
-  if (ro->score < LR_CFSCORE || rq_findblock(np->authname)) {
-    if (rq_isspam(np)) {
-      sendnoticetouser(svc, np, "Do not flood the request system. "
-            "Try again in %s.", rq_longtoduration(rq_blocktime(np)));
-
-      lr_floodattempts++;
+      lr_top5++;
 
       return RQ_ERROR;
     }
+  }
 
-    sendnoticetouser(svc, np, "Sorry, you do not meet the "
-          "%s request requirements; please try again in an hour, "
-          "see http://www.quakenet.org/faq/faq.php?c=1&f=6#6", RQ_QNICK);
+  /* treat blocked users as if they're out of targets */
+  if(rq_findblock(np->authname) || !rq_tryfasttrack(np)) {
+    sendnoticetouser(svc, np, "Sorry, you may not request %s for another "
+      "channel at this time. Please try again in an hour.", rq_qnick->content);
 
-    lr_scoretoolow++;
+    lr_notargets++;
 
     return RQ_ERROR;
   }
 
-  
   sendmessagetouser(svc, qnick, "addchan %s #%s +jp upgrade %s", cp->index->name->content,
         np->authname, np->nick);
 
   sendnoticetouser(svc, np, "Success! %s has been added to '%s' "
         "(contact #help if you require further assistance).", 
-        RQ_QNICK, cp->index->name->content);
+        rq_qnick->content, cp->index->name->content);
 
   return RQ_OK;
 }
 
 void lr_requeststats(nick *rqnick, nick *np) {
-  sendnoticetouser(rqnick, np, "- No registered ops (Q):          %d", lr_noregops);
-  sendnoticetouser(rqnick, np, "- Score too low (Q):              %d", lr_scoretoolow);
+  sendnoticetouser(rqnick, np, "- Too many requests (Q):          %d", lr_notargets);
   sendnoticetouser(rqnick, np, "- Not in top%d (Q):                %d", LR_TOPX, lr_top5);
-  sendnoticetouser(rqnick, np, "- Floods (Q):                     %d", lr_floodattempts);
 }