Thread: [phpslash-users] A Patch for Poll.class
Brought to you by:
joestewart,
nhruby
From: charles w. <cwa...@st...> - 2001-04-24 14:23:36
|
I have some patches to submit, but since I do not have CVS write priviledges, I am submitting to the list for discussion, as recommended in the group developer guidelines. If this isn't the right way to submit changes please let me know. I suggest that Poll.class be patched to substitute slashSess as the value to be used for the voter_id field, rather than the user IP number (as it currently is set). This will place all users on an equal basis. Currently, users with a static IP could vote in a poll only once, while dialup users could vote once each time they sign onto their system. However, I am pretty sure AOL users can vote repeatedly, since AOL uses IPX to connect to the home, and rotates through a bank of IP numbers when making requests on the internet. (At least, that is the way it used to be. Perhaps they have changed.) This would mean that everytime an AOL user submitted a vote, it would come in under a different IP number. The following 5 changes would correct the discrepancy in the treatment of users (plus correct a bug - the $notes are not being displayed at the moment). **************************** diff Poll.class **************************** 406c406 < global $PHP_SELF, $REMOTE_ADDR; --- > global $PHP_SELF, $REMOTE_ADDR, $slashSess; 417c417 < AND voter_id = '$REMOTE_ADDR'"; --- > AND voter_id = '$slashSess'"; 423d422 < 431c430 < '$REMOTE_ADDR', --- > '$slashSess', 452c451 < $this->viewResults($question_id); --- > $this->viewResults($question_id, $notes); 459c458 < function viewResults($question_id) { --- > function viewResults($question_id, $notes) { **************************** diff Poll.class **************************** Unfortunately, this requires a change to the database, since the existing voter_id field is 30 characters, and the $slashSess variable is 32 characters. As commanded by the developer guidelines, I have attached files that can update the structure of existing databases and also modify slash-all.sql and slash-structure.sql. Changing the database structure is a major pain, so I have combined three additional suggested changes so that they can all be applied at once. The are: 1) adding a sys_var flag to the psl_variable to distinguish between system variables and (which would have sys_var set to '1') and user added variables (which would be created with the default NULL value). This will be used to remove the delete option from critical values in the variableAdmin area. 2&3) adding topic_options to the psl_topic table and section_options to the psl_section table. The existing box_type feature for Block.class is extremely cool. Similar customization features would logically be added to the Story.class All of the hard work has been done, it is just a question of copying existing routines. The first step of course is to make room for the options in the database. **************************** slash6to6dotX.sql **************************** # -------------------------------------------------------- # # Increase size of voter_id field to hold $slashSess variable # ALTER TABLE psl_poll_voter CHANGE psl_poll_voter.voter_id psl_poll_voter.voter_id VARCHAR(32) # -------------------------------------------------------- # # Additional changes - add sys_var to psl_variable table and update data. # ALTER TABLE psl_variable ADD COLUMN sys_var CHAR(1) AFTER variable_id UPDATE psl_variable SET sys_var='1' WHERE variable_name='poll_currentquestionid' UPDATE psl_variable SET sys_var='1' WHERE variable_name='article_nextprevlinks' UPDATE psl_variable SET sys_var='1' WHERE variable_name='site_name','PHPSlash' UPDATE psl_variable SET sys_var='1' WHERE variable_name='site_title' UPDATE psl_variable SET sys_var='1' WHERE variable_name='site_slogan' UPDATE psl_variable SET sys_var='1' WHERE variable_name='site_logosmall' UPDATE psl_variable SET sys_var='1' WHERE variable_name='site_owner' UPDATE psl_variable SET sys_var='1' WHERE variable_name='article_updatehits' UPDATE psl_variable SET sys_var='1' WHERE variable_name='block_optioncount' UPDATE psl_variable SET sys_var='1' WHERE variable_name='search_maxresults' UPDATE psl_variable SET sys_var='1' WHERE variable_name='comment_defaultmode' UPDATE psl_variable SET sys_var='1' WHERE variable_name='submission_autodelete' UPDATE psl_variable SET sys_var='1' WHERE variable_name='site_homesection' UPDATE psl_variable SET sys_var='1' WHERE variable_name='mailinglist_subject' # -------------------------------------------------------- # # Additional changes - add topic_options to psl_topic table. # ALTER TABLE psl_topic ADD COLUMN topic_options text AFTER onlinkbar # -------------------------------------------------------- # # Additional changes - add section_options to psl_section table. # ALTER TABLE psl_section ADD COLUMN section_options text AFTER artcount **************************** slash61to6x.sql **************************** **************************** diff slash-all.sql **************************** 379c379 < voter_id varchar(30), --- > voter_id varchar(32), 396a397 > section_options text, 405,408c406,409 < INSERT INTO psl_section VALUES (4,'interviews','Our interviews with the \"important\" people.',NULL); < INSERT INTO psl_section VALUES (5,'features','Same as stories but *better*. Oh yeah',NULL); < INSERT INTO psl_section VALUES (3,'Home','Everything that\'s associated with this section appears on the main index page.',NULL); < INSERT INTO psl_section VALUES (7,'test','foo',NULL); --- > INSERT INTO psl_section VALUES (4,'interviews','Our interviews with the \"important\" people.',NULL,''); > INSERT INTO psl_section VALUES (5,'features','Same as stories but *better*. Oh yeah',NULL,''); > INSERT INTO psl_section VALUES (3,'Home','Everything that\'s associated with this section appears on the main index page.',NULL,''); > INSERT INTO psl_section VALUES (7,'test','foo',NULL,''); 531a533 > topic_options text, 540,549c542,551 < INSERT INTO psl_topic VALUES (14,'News','topicnews.gif','News',34,44,2); < INSERT INTO psl_topic VALUES (12,'FreeBSD','topicfreebsd.gif','FreeBSD',64,72,0); < INSERT INTO psl_topic VALUES (17,'Humor','topichumor.gif','It\'s Funny, Laugh dammit!',58,39,4); < INSERT INTO psl_topic VALUES (16,'Hardware','topichardware.gif','Hardware',64,63,3); < INSERT INTO psl_topic VALUES (15,'Games','topicgames.jpg','Games',80,56,1); < INSERT INTO psl_topic VALUES (11,'Apple','topicapple.gif','Apple',60,64,0); < INSERT INTO psl_topic VALUES (10,'American Online','topicaol.jpg','America Online',60,48,0); < INSERT INTO psl_topic VALUES (18,'PHPSlash','topicphpslash.gif','The wonderful PHPSlash',100,40,0); < INSERT INTO psl_topic VALUES (9,'Amiga','topicamiga.gif','Amiga',64,64,5); < INSERT INTO psl_topic VALUES (34,'what\'s new','xxx.gif','what\'s goin\' on',23,23,0); --- > INSERT INTO psl_topic VALUES (14,'News','topicnews.gif','News',34,44,2,''); > INSERT INTO psl_topic VALUES (12,'FreeBSD','topicfreebsd.gif','FreeBSD',64,72,0,''); > INSERT INTO psl_topic VALUES (17,'Humor','topichumor.gif','It\'s Funny, Laugh dammit!',58,39,4,''); > INSERT INTO psl_topic VALUES (16,'Hardware','topichardware.gif','Hardware',64,63,3,''); > INSERT INTO psl_topic VALUES (15,'Games','topicgames.jpg','Games',80,56,1,''); > INSERT INTO psl_topic VALUES (11,'Apple','topicapple.gif','Apple',60,64,0,''); > INSERT INTO psl_topic VALUES (10,'American Online','topicaol.jpg','America Online',60,48,0,''); > INSERT INTO psl_topic VALUES (18,'PHPSlash','topicphpslash.gif','The wonderful PHPSlash',100,40,0,''); > INSERT INTO psl_topic VALUES (9,'Amiga','topicamiga.gif','Amiga',64,64,5,''); > INSERT INTO psl_topic VALUES (34,'what\'s new','xxx.gif','what\'s goin\' on',23,23,0,''); 587a590 > sys_var char(1) NULL, **************************** diff slash-all.sql **************************** **************************** diff slash-structure.sql **************************** 280c280 < voter_id varchar(30), --- > voter_id varchar(32), 295a296 > section_options text, 395a397 > topic_options text, 433a436 > sys_var char(1) NULL, **************************** diff slash-structure.sql **************************** |
From: Ajay S. <ss...@od...> - 2001-04-24 19:05:04
|
> I have some patches to submit, but since I do not have CVS write > priviledges, I am submitting to the list for discussion, as > recommended in the group developer guidelines. If this isn't the > right way to submit changes please let me know. This is the right way to go about it, but I think we should update that document so that you can discuss the changes before you start working on it. > I suggest that Poll.class be patched to substitute slashSess as the > value to be used for the voter_id field, rather than the user IP > number (as it currently is set). The IP number was always an issue and can't be resolved without user accounts. When you open up a phpslash site, it will assign that session an id. Then if I exit my browser (and all open windows), open it up again, and load up the same phpslash site, I will get a totally different id. I'm pretty sure this is how it works... The current session variables aren't persistant across browser sessions. So to jack up the poll, I just have to restart my browsers a dozen times and vote each time. > Changing the database structure is a major pain, so I have combined > three additional suggested changes so that they can all be applied > at once. The are: 1) adding a sys_var flag to the psl_variable to > distinguish between system variables and (which would have sys_var > set to '1') and user added variables (which would be created with > the default NULL value). This will be used to remove the delete > option from critical values in the variableAdmin area. The psl_variable table was carried over from the old slash-0.2 days. It will be phased out soon and everything moved over to a better looking config file. Right now phpslash is REALLY database heavy. 0.5x had about a billion queries, everything from the site title, all the way down to the bgcolor on some tables. Now 0.6 cleaned a lot of that up by pushing most of the presentation stuff to the templates, but there's still a lot more to do. It's a performance nightmare to query for things like "site_title" and "comment_defaultmode". I'm pretty sure that you're not changing these values everyday so there's no need for them to be in a database. Just assign the values to some global variables (or a global array). As far as I can tell, the ONLY semi-valid variable is the poll_currentquestionid as that changes depending on what the current poll is. But that should really be moved to the psl_poll table anyway. We should have a boolean column called "current" and it's true for current poll. > 2&3) adding topic_options to the psl_topic table and section_options > to the psl_section table. The existing box_type feature for > Block.class is extremely cool. Similar customization features would > logically be added to the Story.class All of the hard work has been > done, it is just a question of copying existing routines. The first > step of course is to make room for the options in the database. Now this is a great idea. I wanted to add some custom flags to the topics but wasn't really sure how to go about it without branching from phpslash. If we just add the whole option thing like we did for the blocks then we'll be set! later, ajay ---------------------------------------------------------------- Satyajot (Ajay) Sharma ss...@od... Digital Odyssey System Administrator "You will find true love, or a missing sock" -- Bazooka Joe ---------------------------------------------------------------- |