UBB.Dev
Posted By: havoq Writing Featured Member To File - 02/23/2005 4:08 AM
Im trying to write the daily featured member out to a file, for specific reasons.

I thought it would be something like whats in BOLD: However I think it would append, not write as a string. Im also thinkin I would need a while loop maybe? Any ideas? I want to write out the featured member daily, so it would accumulate in a log file.

Quote
quote:

sub FeaturedMember {
$CurrentTime = time();
$vars_statistics{'FeaturedMemberDuration'} = $vars_statistics{'FeaturedMemberDuration'} * 3600;
if ( (($CurrentTime - $vars_statistics{'FeaturedMemberTime'}) > $vars_statistics{'FeaturedMemberDuration'}) && ($vars_statistics{'FeaturedMemberDuration'} != 0) ) {
srand;
$vars_statistics{'FeaturedMemberTime'} = $CurrentTime;
@the_members = &OpenFileAsArray("$vars_config{MembersPath}/memberslist.cgi");
my $x;
while (!$x) {
$x = $the_members[int (rand($StatsData{'TotalMembers'}-1) + 1)];
}
($StatsData{'FeaturedMember1'},$StatsData{'FeaturedMember2'}) = split(/|!!|/,$x);
chomp($StatsData{'FeaturedMember2'});
}
else {
$StatsData{'FeaturedMember2'} = "$vars_statistics{'FeaturedMember'}";
}

# get featured members public display name
if ((-e "$vars_config{MembersPath}/$StatsData{'FeaturedMember2'}.cgi") && ($StatsData{'FeaturedMember2'} ne '')) {
@user_profile = &OpenProfile("$StatsData{'FeaturedMember2'}");
chomp($user_profile[0]); chomp($user_profile[15]);
if ($user_profile[15] eq '') { $StatsData{'FeaturedMember1'} = "$user_profile[0]"; }
else { $StatsData{'FeaturedMember1'} = "$user_profile[15]"; }


}

$vars_statistics{'ShColSpan2'} = $ShColSpan2 if ($ShColSpan2);

$vars_statistics{'FeaturedMember'} = $StatsData{'FeaturedMember2'};
$vars_statistics{'FeaturedMemberDuration'} = int($vars_statistics{'FeaturedMemberDuration'} / 3600);

# write config to file!
&WriteHashToFile("$vars_config{VariablesPath}/vars_statistics.cgi", "vars_statistics", %vars_statistics);
&WriteFileAsString("$vars_config{NonCGIPath}/featured_member.txt",qq~Time: $GotTime{HyphenDate} $GotTime{Time}n$StatsData{'FeaturedMember1'}~);
}
Posted By: Ian Spence Re: Writing Featured Member To File - 02/23/2005 8:35 AM
you could &OpenFileAsArray, an an entry, and &WriteFileAsArray
Posted By: havoq Re: Writing Featured Member To File - 02/23/2005 8:56 AM
Ok,

It looks like its being opened as an array here -->
Quote
quote:
@the_members = &OpenFileAsArray("$vars_config{MembersPath}/memberslist.cgi");
Im assuming I wouldnt wanna do that twice? In theory, all Im wanting to do is not only write it to vars_statistics.cgi, but also a readable text file, where it could be appended daily so I could see who the featured member was a week ago if I wanted too. Its for a contest Im doing...
Posted By: Ian Spence Re: Writing Featured Member To File - 02/23/2005 9:26 PM
that's a different file. You'd open the log file, add a line, and write it. no loop required
Posted By: havoq Re: Writing Featured Member To File - 02/23/2005 9:31 PM
Alright, I was thinking this

Quote
quote:

&AppendFileAsString("$vars_config{NonCGIPath}/featured_member.txt",qq~Time: $GotTime{HyphenDate}nFeatured Member For Today Is: $StatsData{'FeaturedMember1'}n~);

since Ill need to append each entry.

It works, however, somethings weird.

I have it set to switch every hour for now, and it just switched the featured memeber. This is what the file looks like though

quote:
[qb]
Time: 02-23-2005
Featured Member For Today Is: midmigurl
Time: 02-23-2005
Featured Member For Today Is: reimb1nb
Time: 02-23-2005
Featured Member For Today Is: reimb1nb
Time: 02-23-2005
Featured Member For Today Is: reimb1nb
Time: 02-23-2005
Featured Member For Today Is: reimb1nb
Time: 02-23-2005
Featured Member For Today Is: reimb1nb
Time: 02-23-2005
Featured Member For Today Is: reimb1nb
Time: 02-23-2005
Featured Member For Today Is: reimb1nb
Time: 02-23-2005
Featured Member For Today Is: reimb1nb
Time: 02-23-2005
Featured Member For Today Is: reimb1nb
Time: 02-23-2005
Featured Member For Today Is: reimb1nb
Time: 02-23-2005
Featured Member For Today Is: reimb1nb
Time: 02-23-2005
Featured Member For Today Is: reimb1nb
Time: 02-23-2005
Featured Member For Today Is: potgirrl420
[/qb]
It keeps adding the same member multiple times. not sure why. Im lost doh
Posted By: havoq Re: Writing Featured Member To File - 02/23/2005 10:36 PM
Think I figured it out. Had that line in the wrong location. I'll keep you posted if I have further problems.

Thanks wink
Posted By: havoq Re: Writing Featured Member To File - 02/24/2005 3:25 AM
Ian:

Last question, since I'm always looking for better things to do with mods.

Is there anyway we can add a line of code to the sub FeaturedMember function allowing only to pull featured members with 10+ posts?

This way it wont cycle through all registered members, but only ones with a specified number of posts? Thus your chances are higher of becoming the featured member.

Thus it would make my contest more exciting! wink
Posted By: Ian Spence Re: Writing Featured Member To File - 02/24/2005 3:40 AM
well all you'd do is open the file, and it the post count is under 10, do it again, until the person with 10 posts is selected
Posted By: havoq Re: Writing Featured Member To File - 02/24/2005 3:47 AM
so maybe something like:

Quote
quote:

if ($user_profile[7] > 10) {
&AppendFileAsString("$vars_config{NonCGIPath}/featured_member.txt",qq~Date: $GotTime{HyphenDate} Time: $GotTime{Time}nFeatured

Member For Today Is: $StatsData{'FeaturedMember1'}, $StatsData{'FeaturedMember2'} nn~);
}
??
Posted By: Ian Spence Re: Writing Featured Member To File - 02/24/2005 3:55 AM
well, that would prevent a user from being a featured member from having 10 posts or less, but it'd also prevent having any featured member for at least the next (specified interval)
Posted By: havoq Re: Writing Featured Member To File - 02/24/2005 4:02 AM
Right, which is what I wanted. If Im listening to you correctly.

I only want users to be the featured members who have at least 10+ posts. Every 24 hours.

So that makes sense then...
Posted By: havoq Re: Writing Featured Member To File - 02/24/2005 4:06 AM
Ya that doesnt work, duh! It'll still pick a random member, but only write to the text file if a user is chosen with 10+ posts.

Dam, I guess that isnt what i wanted. I actually want it to cycle through the database and look for users with only 10+ posts. lol

Im guessing I would use this while statement already in the function
Quote
quote:

while (!$x) {
$x = $the_members[int (rand($StatsData{'TotalMembers'}-1) + 1)];
}
Now what to add to it, Im not sure. or how..
Posted By: Ian Spence Re: Writing Featured Member To File - 02/24/2005 4:10 AM
well, you could always try to old standby


while($user_profile <= 10) {
&pick_new_number
&open_member;
}
Posted By: havoq Re: Writing Featured Member To File - 02/24/2005 4:29 AM
Right, but I need to adapt that to the already existing code. Above
Posted By: havoq Re: Writing Featured Member To File - 02/24/2005 4:59 AM
I thought maybe like
Quote
quote:

while ((!$x) && ($user_profile[7] <= 10)) {
$x = $the_members[int (rand($StatsData{'TotalMembers'}-1) + 1)];
}
Posted By: havoq Re: Writing Featured Member To File - 02/25/2005 2:28 AM
Tried opening the users profile as an array as well, and still can't get it.

If someone can finish a working version for me with the code provided in the original post, Id be willing to give them a little cash for their troubles
Posted By: Ian Spence Re: Writing Featured Member To File - 02/25/2005 2:42 AM
*sees money*

Lemme try now
Posted By: Ian Spence Re: Writing Featured Member To File - 02/25/2005 2:48 AM
Untested
Code
sub FeaturedMember {
$CurrentTime = time();
$vars_statistics{'FeaturedMemberDuration'} = $vars_statistics{'FeaturedMemberDuration'} * 3600;
if ( (($CurrentTime - $vars_statistics{'FeaturedMemberTime'}) > $vars_statistics{'FeaturedMemberDuration'}) && ($vars_statistics{'FeaturedMemberDuration'} != 0) ) {
srand;
$vars_statistics{'FeaturedMemberTime'} = $CurrentTime;
@the_members = &OpenFileAsArray("$vars_config{MembersPath}/memberslist.cgi");
my $x;
my @user_profile;
$user_profile[7] = 5;

LOOP: while($user_profile[7] <= 10) {
$x = $the_members[int (rand($StatsData{'TotalMembers'}-1) + 1)];
if(&FileExists(qq~$vars_config{MembersPath}/$x.cgi~)) {
@user_profile = &OpenProfile($x);
} else {
next LOOP;
}
}

if ($user_profile[15] eq '') {
$StatsData{'FeaturedMember1'} = "$user_profile[0]";
} else {
$StatsData{'FeaturedMember1'} = "$user_profile[15]";
}

} else {
$StatsData{'FeaturedMember2'} = "$vars_statistics{'FeaturedMember'}";
}


$vars_statistics{'ShColSpan2'} = $ShColSpan2 if ($ShColSpan2);

$vars_statistics{'FeaturedMember'} = $StatsData{'FeaturedMember2'};
$vars_statistics{'FeaturedMemberDuration'} = int($vars_statistics{'FeaturedMemberDuration'} / 3600);

# write config to file!
&WriteHashToFile("$vars_config{VariablesPath}/vars_statistics.cgi", "vars_statistics", %vars_statistics);
&AppendFileAsString("$vars_config{NonCGIPath}/featured_member.txt",qq~Date: $GotTime{HyphenDate} Time: $GotTime{Time}nFeatured Member For Today Is: $StatsData{'FeaturedMember1'}, $StatsData{'FeaturedMember2'} nn~);
}
Posted By: havoq Re: Writing Featured Member To File - 02/25/2005 3:23 AM
NOpe, that code just through my server in a loop. Now I gotta go chat my host and tell them to restart apache.

Dam.
Posted By: havoq Re: Writing Featured Member To File - 02/25/2005 3:27 AM
That loop doesnt look right anyways. I want it to cycle through members with 10+ posts. not below 10

I'll let u know when i can upload more code and my server is online.


Update: Ok we're good again. I dont think I should risk loop issues though and my server going down again. I've already chatted my host twice about bringing it back up, lol
Posted By: Ian Spence Re: Writing Featured Member To File - 02/25/2005 4:37 AM
delete "srand;"
Posted By: havoq Re: Writing Featured Member To File - 02/25/2005 4:47 AM
you pretty confident buddy?

oh and shouldnt it be user_profile[7] > 10 or no?
Posted By: Ian Spence Re: Writing Featured Member To File - 02/25/2005 4:53 AM
the way I have it says "do this while postcount is not greater than 10", which means it stops when it is greater than ten.

The way you suggested would prevent anyone with over ten posts from being featured.

Yes, I'm positive srand was causing the loop, as it prevented the random number from changing in the loop
Posted By: havoq Re: Writing Featured Member To File - 02/25/2005 5:10 AM
Im sorry, maybe I wasnt clear then.

I wanted it written so that only users with 10+ posts are selected.

I'd hate to have a featured member be featured who has 0 posts. Whats the point in them winning the contest with 0 posts?

Which is why I was thinking only 10+ posts are featured members. Anything less than that IS NOT SELECTED wink
Posted By: Ian Spence Re: Writing Featured Member To File - 02/25/2005 5:14 AM
which is what I wrote **rage**
Posted By: havoq Re: Writing Featured Member To File - 02/25/2005 6:16 AM
I dunno man, its not lookin good. My server doesnt seem to be doing to well with it. My server load keeps going up, and no featured member is displayed on the forum.

uggg sorry man
Posted By: havoq Re: Writing Featured Member To File - 02/25/2005 4:16 PM
This thread is done. Cancelled project.
© UBB.Developers