diff --git a/src/sbbs3/js_user.c b/src/sbbs3/js_user.c index 8f0eb169d8212438cba43264e415e15c5ad4463c..f87fe193d2090bf83e3d413029ff0eab12514d97 100644 --- a/src/sbbs3/js_user.c +++ b/src/sbbs3/js_user.c @@ -8,7 +8,7 @@ * @format.tab-size 4 (Plain Text/Source Code File Header) * * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * * * - * Copyright 2005 Rob Swindell - http://www.synchro.net/copyright.html * + * Copyright 2006 Rob Swindell - http://www.synchro.net/copyright.html * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License * @@ -828,15 +828,161 @@ js_chk_ar(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) if(ar!=NULL && ar!=nular) free(ar); - return(JS_TRUE); + return JS_TRUE; +} + +static JSBool +js_posted_msg(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + private_t* p; + int32 count=1; + + if((p=(private_t*)JS_GetPrivate(cx,obj))==NULL) + return JS_FALSE; + + if(argc) + JS_ValueToInt32(cx, argv[0], &count); + + js_getuserdat(p); + + *rval = BOOLEAN_TO_JSVAL(user_posted_msg(p->cfg, &p->user, count)); + + return JS_TRUE; +} + +static JSBool +js_sent_email(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + private_t* p; + int32 count=1; + BOOL feedback; + + if((p=(private_t*)JS_GetPrivate(cx,obj))==NULL) + return JS_FALSE; + + if(argc) + JS_ValueToInt32(cx, argv[0], &count); + if(argc>1) + JS_ValueToBoolean(cx, argv[1], &feedback); + + js_getuserdat(p); + + *rval = BOOLEAN_TO_JSVAL(user_sent_email(p->cfg, &p->user, count, feedback)); + + return JS_TRUE; +} + +static JSBool +js_downloaded_file(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + private_t* p; + int32 files=1; + int32 bytes=0; + + if((p=(private_t*)JS_GetPrivate(cx,obj))==NULL) + return JS_FALSE; + + if(argc) + JS_ValueToInt32(cx, argv[0], &bytes); + if(argc>1) + JS_ValueToInt32(cx, argv[1], &files); + + js_getuserdat(p); + + *rval = BOOLEAN_TO_JSVAL(user_downloaded(p->cfg, &p->user, files, bytes)); + + return JS_TRUE; +} + +static JSBool +js_uploaded_file(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + private_t* p; + int32 files=1; + int32 bytes=0; + + if((p=(private_t*)JS_GetPrivate(cx,obj))==NULL) + return JS_FALSE; + + if(argc) + JS_ValueToInt32(cx, argv[0], &bytes); + if(argc>1) + JS_ValueToInt32(cx, argv[1], &files); + + js_getuserdat(p); + + *rval = BOOLEAN_TO_JSVAL(user_uploaded(p->cfg, &p->user, files, bytes)); + + return JS_TRUE; +} + +static JSBool +js_adjust_credits(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + private_t* p; + int32 count=0; + + if((p=(private_t*)JS_GetPrivate(cx,obj))==NULL) + return JS_FALSE; + + if(argc) + JS_ValueToInt32(cx, argv[0], &count); + + js_getuserdat(p); + + *rval = BOOLEAN_TO_JSVAL(user_adjust_credits(p->cfg, &p->user, count)); + + return JS_TRUE; } +static JSBool +js_adjust_minutes(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) +{ + private_t* p; + int32 count=0; + + if((p=(private_t*)JS_GetPrivate(cx,obj))==NULL) + return JS_FALSE; + + if(argc) + JS_ValueToInt32(cx, argv[0], &count); + + js_getuserdat(p); + + *rval = BOOLEAN_TO_JSVAL(user_adjust_minutes(p->cfg, &p->user, count)); + + return JS_TRUE; +} static jsSyncMethodSpec js_user_functions[] = { - {"compare_ars", js_chk_ar, 1, JSTYPE_BOOLEAN, JSDOCSTR("string ars") + {"compare_ars", js_chk_ar, 1, JSTYPE_BOOLEAN, JSDOCSTR("string ars") ,JSDOCSTR("Verify user meets access requirements string") ,310 }, + {"adjust_credits", js_adjust_credits, 1, JSTYPE_BOOLEAN, JSDOCSTR("count") + ,JSDOCSTR("Adjust user's credits by <i>count</i> (negative to subtract)") + ,31301 + }, + {"adjust_minutes", js_adjust_minutes, 1, JSTYPE_BOOLEAN, JSDOCSTR("count") + ,JSDOCSTR("Adjust user's extra minutes <i>count</i> (negative to subtract)") + ,31301 + }, + {"posted_message", js_posted_msg, 1, JSTYPE_BOOLEAN, JSDOCSTR("[count]") + ,JSDOCSTR("Adjust user's posted-messages statistics by <i>count</i> (default: 1) (negative to subtract)") + ,31301 + }, + {"sent_email", js_sent_email, 1, JSTYPE_BOOLEAN, JSDOCSTR("[count] [,bool feedback]") + ,JSDOCSTR("Adjust user's email/feedback-sent statistics by <i>count</i> (default: 1) (negative to subtract)") + ,31301 + }, + {"uploaded_file", js_uploaded_file, 1, JSTYPE_BOOLEAN, JSDOCSTR("[bytes] [,files]") + ,JSDOCSTR("Adjust user's files/bytes-uploaded statistics") + ,31301 + }, + {"downloaded_file", js_downloaded_file, 1, JSTYPE_BOOLEAN, JSDOCSTR("[bytes] [,files]") + ,JSDOCSTR("Adjust user's files/bytes-downloaded statistics") + ,31301 + }, {0} };