Index: branches/5.1.x/units/poll_comments/poll_comments_config.php =================================================================== --- branches/5.1.x/units/poll_comments/poll_comments_config.php (revision 14440) +++ branches/5.1.x/units/poll_comments/poll_comments_config.php (revision 14441) @@ -1,115 +1,109 @@ <?php /** * @version $Id$ * @package In-Bulletin * @copyright Copyright (C) 1997 - 2009 Intechnic. All rights reserved. * @license GNU/GPL * In-Portal is Open Source software. * This means that this software may have been modified pursuant * the GNU General Public License, and as distributed it includes * or is derivative of works licensed under the GNU General Public License * or other free or open source software licenses. * See http://www.in-portal.org/license for copyright notices and details. */ defined('FULL_PATH') or die('restricted access!'); $config = Array ( 'Prefix' => 'poll-comment', 'ItemClass' => Array ('class' => 'kDBItem', 'file' => '', 'build_event' => 'OnItemBuild'), 'ListClass' => Array ('class' => 'kDBList', 'file' => '', 'build_event' => 'OnListBuild'), 'EventHandlerClass' => Array ('class' => 'PollCommentEventHandler', 'file' => 'poll_comment_eh.php', 'build_event' => 'OnBuild'), 'TagProcessorClass' => Array ('class' => 'kDBTagProcessor', 'file' => '', 'build_event' => 'OnBuild'), 'AutoLoad' => true, 'QueryString' => Array ( 1 => 'id', 2 => 'Page', 3 => 'PerPage', 4 => 'event', ), 'IDField' => 'CommentId', 'TableName' => TABLE_PREFIX . 'PollsComments', 'ParentPrefix' => 'poll', 'ForeignKey' => 'PollId', 'ParentTableKey' => 'PollId', 'AutoDelete' => true, 'AutoClone' => true, 'StatusField' => Array('Status'), // key - special, value - list select sql 'ListSQLs' => Array ( '' => ' SELECT %1$s.* %2$s FROM %1$s LEFT JOIN '.TABLE_PREFIX.'PortalUser pu ON pu.PortalUserId = %1$s.CreatedById', ), 'ItemSQLs' => Array ('' => 'SELECT * FROM %s'), 'ListSortings' => Array ( '' => Array( 'ForcedSorting' => Array('Priority' => 'desc'), 'Sorting' => Array('CreatedOn' => 'desc'), ) ), 'Fields' => Array ( 'CommentId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0), 'PollId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0), 'AnswerId' => Array ('type' => 'int', 'default' => NULL), 'CreatedById' => Array ('type' => 'int', 'formatter'=>'kLEFTFormatter', 'error_msgs' => Array ('invalid_option' => '!la_error_UserNotFound!'), 'options' => Array(USER_ROOT => 'root', USER_GUEST => 'Guest'), 'left_sql' => 'SELECT %s FROM '.TABLE_PREFIX.'PortalUser WHERE `%s` = \'%s\'', 'left_key_field' => 'PortalUserId', 'left_title_field' => 'Login', 'required' => 1, 'default' => NULL), 'GuestName' => Array ('type' => 'string', 'max_len' => 255, 'not_null' => 1, 'default' => ''), 'GuestEmail' => Array('type' => 'string', 'max_len' => 255, 'formatter'=>'kFormatter', 'regexp'=>'/^(' . REGEX_EMAIL_USER . '@' . REGEX_EMAIL_DOMAIN . ')$/i', 'sample_value' => 'email@domain.com', 'not_null' => '1', 'default' => '', 'error_msgs' => Array('invalid_format'=>'!la_invalid_email!', 'unique'=>'!lu_email_already_exist!'),'required' => 0 ), 'CommentBody' => Array ('type' => 'string', 'formatter' => 'kFormatter', 'using_fck' => 1, 'default' => NULL, 'required' => 1), 'CreatedOn' => Array ('type' => 'int', 'formatter' => 'kDateFormatter', 'required' => 1, 'default' => '#NOW#'), 'UserIP' => Array ('type' => 'string', 'max_len' => 255, 'not_null' => 1, 'default' => ''), 'Priority' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0), 'Status' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'la_opt_Active', 0 => 'la_opt_Disabled', 2 => 'la_opt_Pending'), 'use_phrases' => 1, 'required' => 1, 'not_null' => 1, 'default' => 1), ), 'VirtualFields' => Array ( 'CommentedByUser' => Array('type' => 'string', 'default' => ''), 'CommentedByEmail' => Array ('type' => 'string', 'default' => ''), ), 'CalculatedFields' => Array ( '' => Array ( 'CommentedByUser' => 'IF( ISNULL(pu.Login), IF (%1$s.CreatedById = ' . USER_ROOT . ', \'root\', IF (%1$s.CreatedById = ' . USER_GUEST . ', \'Guest\', \'n/a\')), pu.Login )', ), ), - 'ConfigMapping' => Array ( - 'PerPage' => 'poll_Perpage_Comments', - 'CommentDelayInterval' => 'poll_CommentDelay_Value', - 'CommentDelayValue' => 'poll_CommentDelay_Interval', - ), - 'Grids' => Array ( 'Default' => Array ( 'Icons' => Array ( 'default' => 'icon16_item.png', 0 => 'icon16_disabled.png', 1 => 'icon16_item.png', 2 => 'icon16_pending.png', 'module' => 'core', ), 'Fields' => Array ( 'CommentId' => Array ('title' => 'la_col_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter', 'width' => 60, ), 'CommentBody' => Array ('title' => 'la_col_PollComment', 'data_block' => 'grid_priority_td', 'filter_block' => 'grid_like_filter', 'width' => 250, ), 'CommentedByUser' => Array( 'title'=>'la_col_CommentedByUser', 'filter_block' => 'grid_like_filter', 'width' => 150, ), 'CreatedOn' => Array ('title' => 'la_col_CreatedOn', 'filter_block' => 'grid_date_range_filter', 'width' => 145, ), 'Status' => Array ('title' => 'la_col_Status', 'filter_block' => 'grid_options_filter', 'width' => 100, ), ), ), ), ); \ No newline at end of file Index: branches/5.1.x/units/poll_comments/poll_comment_eh.php =================================================================== --- branches/5.1.x/units/poll_comments/poll_comment_eh.php (revision 14440) +++ branches/5.1.x/units/poll_comments/poll_comment_eh.php (revision 14441) @@ -1,149 +1,148 @@ <?php /** * @version $Id$ * @package In-Bulletin * @copyright Copyright (C) 1997 - 2009 Intechnic. All rights reserved. * @license GNU/GPL * In-Portal is Open Source software. * This means that this software may have been modified pursuant * the GNU General Public License, and as distributed it includes * or is derivative of works licensed under the GNU General Public License * or other free or open source software licenses. * See http://www.in-portal.org/license for copyright notices and details. */ defined('FULL_PATH') or die('restricted access!'); class PollCommentEventHandler extends kDBEventHandler { /** * Allows to override standart permission mapping * */ function mapPermissions() { parent::mapPermissions(); $permissions = Array( 'OnCreate' => Array('self' => true, 'subitem' => true,), 'OnItemBuild' => Array('self' => true, 'subitem' => true,), ); $this->permMapping = array_merge($this->permMapping, $permissions); } function OnAfterConfigRead(&$event) { if ($this->Application->RecallVar('user_id') == USER_GUEST) { // make Guest Name and Email required for guests $fields = $this->Application->getUnitOption($event->Prefix, 'Fields'); $fields['GuestName']['required'] = 1; $fields['GuestEmail']['required'] = 1; $this->Application->setUnitOption($event->Prefix, 'Fields', $fields); } } /** * Applies special filter, that allows to select all commented from current poll * * @param kEvent $event */ function SetCustomQuery(&$event) { if ($this->Application->isAdminUser) { return ; } $object =& $event->getObject(); /* @var $object kDBList */ $object->addFilter('comment_status', '(%1$s.Status = ' .STATUS_ACTIVE. ')'); } /** * Before New PollComment created * * @param kEvent $event */ function OnBeforeItemCreate(&$event) { if ($this->Application->isAdminUser) { return ; } $object =& $event->getObject(); /* @var $object kDBItem */ // get Poll info $parent_prefix = $this->Application->getUnitOption($this->Prefix, 'ParentPrefix'); if($parent_prefix) { $main_object =& $this->Application->recallObject($parent_prefix.'.'.$special, null,Array('raise_warnings' => 0)); /* @var $main_object kDBItem */ if (!$main_object->isLoaded()) { $main_object =& $this->Application->recallObject($parent_prefix); } $poll_id = $main_object->GetDBField($this->Application->getUnitOption($event->Prefix, 'ForeignKey')); } if ($poll_id) { $spam_helper =& $this->Application->recallObject('SpamHelper'); /* @var $spam_helper SpamHelper */ $spam_helper->InitHelper($poll_id, 'PollComment', 0); // ResourceId used for SpamControl only if ($spam_helper->InSpamControl()) { $event->status = erFAIL; $object->SetError('CommentText', 'too_frequent', 'lu_error_AlreadyCommented'); return ; } } $object->SetDBField('CreatedById', $this->Application->RecallVar('user_id')); $object->SetDBField('UserIP', $_SERVER['REMOTE_ADDR']); $object->SetDBField('PollId', $poll_id); // PollId $object->SetDBField('Status', STATUS_ACTIVE); parent::OnBeforeItemCreate($event); } /** * Updates item review counter * * @param kEvent $event */ function OnCreate(&$event) { parent::OnCreate($event); if ($this->Application->isAdminUser) { return; } if ($event->status == erSUCCESS) { $event->setRedirectParam('opener', 's'); $event->setRedirectParam('pass', 'm,poll'); $event->redirect = $this->Application->GetVar('success_template'); } } /** * Updates item review counter * * @param kEvent $event */ function OnAfterItemCreate(&$event) { if (!$this->Application->isAdminUser) { $spam_helper =& $this->Application->recallObject('SpamHelper'); /* @var $spam_helper SpamHelper */ $object =& $event->getObject(); - $config_mapping = $this->Application->getUnitOption($event->Prefix, 'ConfigMapping'); - $comment_settings = $config_mapping['CommentDelayValue'].':'.$config_mapping['CommentDelayInterval']; + $comment_settings = 'poll_CommentDelay_Value:poll_CommentDelay_Interval'; $spam_helper->InitHelper($object->GetDBField('PollId'), 'PollComment', $comment_settings); $spam_helper->AddToSpamControl(); } } } \ No newline at end of file