Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var daysFromLastVisit = 7; // Change this and only this to modify the cutoff date.
- var cutoffDate = new Date(); // Gets current date
- var AmericanDateFormat=true; //Set to true for American Date Format (Month/Day/Year), false for (Day/Month/Year)
- cutoffDate.setHours(0,0,0,0); // setting the current date to a plain date, without the hour and such. This could cause problems otherwise.
- cutoffDate.setDate(cutoffDate.getDate() - daysFromLastVisit); // Specs say this should work everywhere. In doubt, use Chrome or Firefox.
- var usernamesArray = document.getElementsByClassName('nobold'); // This will probably break with any site updates.
- // Output strings
- var hasVisited = '';
- var hasntVisited = '';
- if (usernamesArray.length == 0){
- console.log("NO USERS DETECTED, THE SITE HAD A LAYOUT UPDATE"); // Adding a warning, just in case
- }else{
- for(var i=0; i < usernamesArray.length; i++){
- var username = usernamesArray[i].innerHTML; // Grabs username
- var AMURICAdateText = usernamesArray[i].parentNode.parentNode.lastChild.innerHTML.trim(); // Does some DOM magic to get the date. This will probably break when the site updates.
- var hasVisitedRecently = false; // This is set to true only if the user has visited, after all that code.
- if(AMURICAdateText != ''){ // If the user has visited the board at least once. I don't feel particularly confident when checking against an empty string, this is very prone to breaking but it works for the current version of the admin page.
- // Start code to fix the date to a standard format because AMURICA
- var splitDate = AMURICAdateText.split('/'); // splits '11/18/14' into ['11', '18', '14']
- if(AmericanDateFormat){
- var outputDate = splitDate[0]+'/'+splitDate[1]+'/20'+splitDate[2]; // Switches month and day around. Will break when 2100 comes.
- }else{
- var outputDate = splitDate[1]+'/'+splitDate[0]+'/20'+splitDate[2]; // Switches month and day around. Will break when 2100 comes.
- }
- // End AMURICA code
- // This has to be done manually as I don't trust at all that different browsers will parse a non ISO date correctly.
- var lastVisitDateObject = new Date();
- lastVisitDateObject.setHours(0,0,0,0); // Plain date, no hours.
- lastVisitDateObject.setFullYear('20'+splitDate[2]);
- lastVisitDateObject.setMonth(splitDate[0] - 1); // WHY THE **** MONTH IS 0-11 WHEN DAY IS 1-31
- lastVisitDateObject.setDate(splitDate[1]);
- if(lastVisitDateObject.toString() == 'NaN'){ // Just doing some housekeeping, this should never happen but if GF screws up you'll be warned
- var lastVisitDate = "ERROR";
- }else{
- if(cutoffDate <= lastVisitDateObject){
- hasVisitedRecently = true; // Whew. Done.
- };
- };
- }else{
- var outputDate = "Hasn't visited the board";
- };
- if(hasVisitedRecently){
- hasVisited += (username + ' @ ' + outputDate + "\n");
- }else{
- hasntVisited += (username + ' @ ' + outputDate + "\n");
- };
- };
- // The following generates a textarea and fills it with the output.
- var textareaVisited = document.createElement('textarea');
- textareaVisited.style.width = '49%';
- textareaVisited.style.height = '300px';
- textareaVisited.innerHTML = "Users who visited in the last "+daysFromLastVisit+" days:\n" + hasVisited;
- var textareaNotVisited = document.createElement('textarea');
- textareaNotVisited.style.width = '49%';
- textareaNotVisited.style.height = '300px';
- textareaNotVisited.innerHTML = "Users who did NOT visit in the last "+daysFromLastVisit+" days:\n" + hasntVisited;
- // The following adds it to the page.
- var userTable = document.getElementsByClassName('board')[0];
- var parentDiv = userTable.parentNode;
- parentDiv.insertBefore(textareaVisited, userTable);
- parentDiv.insertBefore(textareaNotVisited, userTable);
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement