Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * I am a User Persisted entity
- * @output true
- * @table galleon_users
- * @persistent true
- * @cachename Users
- * @cacheuse nonstrict-read-write
- */
- component
- {
- // identifier
- property name="userID" column="Id" generator="identity";
- // properties
- property name="username";
- property name="firstName";
- property name="lastName";
- property name="password";
- property name="passwordNew";
- property name="email" column="emailaddress";
- property name="signature" default="";
- property name="userActKey" default="";
- property name="userIP" default="";
- property name="userRegDate" column="datecreated";
- property name="userLastVisit" default="0";
- property name="userLastPage" default="";
- property name="userAvatar" column="avatar" default="";
- property name="userInterests";
- property name="userBirthday";
- property name="userZip";
- // relationships
- property name="groups" fieldtype="many-to-many" CFC="Group" linktable="galleon_users_groups" FKColumn="useridfk" inversejoincolumn="groupidfk" lazy="true" cascade="all";
- property name="myRated" fieldtype="many-to-many" CFC="Beer" linktable="ratings" FKColumn="userID" inversejoincolumn="beerID" lazy="true" cascade="all";
- property name="myFavorites" fieldtype="many-to-many" CFC="Beer" linktable="myBeers" FKColumn="userID" inversejoincolumn="beerID" lazy="true" cascade="all" orderby="beerName";
- property name="myWishlist" fieldtype="many-to-many" CFC="Beer" linktable="myWishlist" FKColumn="userID" inversejoincolumn="beerID" lazy="true" cascade="all" orderby="beerName";
- property name="myFriends" fieldtype="many-to-many" CFC="User" linktable="friends" FKColumn="userID" inversejoincolumn="friendID" lazy="true" cascade="all" orderby="RAND()";
- property name="notifications" fieldtype="one-to-many" CFC="UpdateLog" fkcolumn="userID" lazy="true" where="actionRequired=1 AND actionTaken=0" orderby="updateTimestamp DESC";
- property name="galleon_subscriptions" fieldtype="one-to-many" CFC="Galleon_subscriptions" fkcolumn="useridfk" lazy="true";
- // override
- public function setusername(val) {
- VARIABLES.username = val;
- VARIABLES.usernameClean = val;
- }
- public function setfirstName(val) {
- VARIABLES.firstName = val;
- }
- public function setlastName(val) {
- VARIABLES.lastName = val;
- }
- public function setpassword(val) {
- VARIABLES.password = lcase(hash(lcase(hash(val))));
- }
- public function setemail(val) {
- VARIABLES.email = val;
- VARIABLES.emailHash = REQUEST.udfs.crc32(val & len(val));
- }
- // read-only
- public function getlink() {
- return "/#THIS.getuserName()#/";
- }
- public function getsmallThumb() {
- if (len(this.getuserAvatar())) {
- return "/images/users/#THIS.getuserID()#/avatar/" & this.getuserAvatar() & "_smallThumb.png";
- } else {
- return "/images/users/noavatar_thumb.png";
- }
- }
- public function getmedThumb() {
- if (len(this.getuserAvatar())) {
- return "/images/users/#THIS.getuserID()#/avatar/" & this.getuserAvatar() & "_medThumb.png";
- } else {
- return "/images/users/noavatar_med.png";
- }
- }
- public function getlargeImage() {
- if (len(this.getuserAvatar())) {
- return "/images/users/#THIS.getuserID()#/avatar/" & this.getuserAvatar() & "_large.png";
- } else {
- return "/images/users/noavatar_large.png";
- }
- }
- public function getisRealUser() {
- // don't let anon or bot users do stuff!
- if (THIS.getuserID() GT 2) {
- return true;
- }
- return false;
- }
- public function isAdmin() {
- if (listFind("54,55",this.getuserID())) {
- return true;
- }
- return false;
- }
- public function isModerator() {
- if (listFind("54,55",this.getuserID())) {
- return true;
- }
- return false;
- }
- public function getUpdates() {
- // get friends
- friendsArr = THIS.getmyFriends();
- friendsList = "0";
- for (i=1;i LTE arrayLen(friendsArr);i++) {
- friendsList = listAppend(friendsList,friendsArr[i].getuserID());
- }
- return ormExecuteQuery("FROM UpdateLog WHERE (userID IN (#friendsList#) AND updateType <> 'friend' AND actionRequired <> 1) OR (updateCauseID = #THIS.getuserID()# AND updateType = 'friend') ORDER BY updateTimestamp DESC",[],false,{cacheable=true,maxResults=15});
- }
- // validation
- public function validateUsername(username) {
- // make sure the username is valid
- if (NOT len(ARGUMENTS.username) GT 5) {
- return "Username must be at least 6 characters.";
- }
- // make sure the username is not in use
- queryTest = EntityLoad("User",{username=ARGUMENTS.username},true);
- if (isDefined("queryTest")) {
- return "Username ""#ARGUMENTS.username#"" already in use.";
- }
- // if it all passes
- THIS.setusername(ARGUMENTS.username);
- return "";
- }
- public function validateEmail(email) {
- // make sure the email is valid
- if (NOT isValid("email", ARGUMENTS.email)) {
- return "Email address is not valid.";
- }
- // make sure the email is not in use
- queryTest = EntityLoad("User",{email=ARGUMENTS.email},true);
- if (isDefined("queryTest") AND queryTest.getuserID() NEQ THIS.getuserID()) {
- return "Email address already in use.";
- }
- // if it all passes
- THIS.setemail(ARGUMENTS.email);
- return "";
- }
- public function validatePassword(password) {
- if (len(ARGUMENTS.password) LT 6) {
- return "Passwords must be at least 6 characters.";
- }
- // if it all passes
- THIS.setpassword(ARGUMENTS.password);
- return "";
- }
- public function validateUserBirthday(dobm,dobd,doby) {
- if (NOT isDate("#ARGUMENTS.dobm#/#ARGUMENTS.dobd#/#ARGUMENTS.doby#") OR dateDiff("yyyy","#FORM.dobm#/#FORM.dobd#/#FORM.doby#",now()) LT 21) {
- return "You must be at least 21 to use this application.";
- }
- // if it all passes
- THIS.setuserBirthday("#ARGUMENTS.dobd#-#ARGUMENTS.dobm#-#ARGUMENTS.doby#");
- return "";
- }
- // rating methods
- public function getRecommendations(howMany=20) {
- recommender = createObject("component","pintley.model.recommenderHelper");
- recommendations = deserializeJSON(recommender.recommend(THIS.getuserID(),ARGUMENTS.howMany));
- beers = arrayNew(1);
- for (i=1;i LTE arrayLen(recommendations.recommendedItems.item);i=i+1) {
- thisBeer = entityLoad("Beer",recommendations.recommendedItems.item[i].id,true);
- if (isDefined("thisBeer")) {
- arrayAppend(beers,thisBeer);
- }
- }
- return beers;
- }
- // methods
- public function hashPassword(password) {
- return hash(hash(ARGUMENTS.password,"MD5"),"MD5");
- }
- // forum subscription methods
- public function galleonCheckSubscription(mode, id) {
- if(ARGUMENTS.mode EQ "conference") { existingSub = entityLoad('galleon_subscriptions', {useridfk=this.getuserID(), conferenceidfk=ARGUMENTS.id}, "true"); }
- else if(ARGUMENTS.mode EQ "forum") { existingSub = entityLoad('galleon_subscriptions', {useridfk=this.getuserID(), forumidfk=ARGUMENTS.id}, "true"); }
- else if(ARGUMENTS.mode EQ "thread") { existingSub = entityLoad('galleon_subscriptions', {useridfk=this.getuserID(), threadidfk=ARGUMENTS.id}, "true"); }
- if(isDefined("existingSub")) {return existingSub.getSubscriptionID();}
- else {return;}
- }
- public function galleonSubscribe(mode, id) {
- existingSub = galleonCheckSubscription(mode,id);
- if(NOT isDefined("existingSub")) {
- thisSubscription = new Galleon_subscriptions();
- thisSubscription.setUseridfk(this.getuserID());
- if(ARGUMENTS.mode EQ "conference") {thisSubscription.setConferenceidfk(ARGUMENTS.id);}
- else if(ARGUMENTS.mode EQ "forum") {thisSubscription.setForumidfk(ARGUMENTS.id);}
- else if(ARGUMENTS.mode EQ "thread") {thisSubscription.setThreadidfk(ARGUMENTS.id);}
- entitySave(thisSubscription);
- }
- }
- public function galleonUnsubscribe(subscriptionID123) {
- subscription = entityLoad('Galleon_subscriptions', ARGUMENTS.subscriptionID123, true);
- entityDelete(subscription);
- }
- // events
- public function postInsert() {
- createObject("component","emailHelper").sendActivationEmail(THIS);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement