Page MenuHomeIn-Portal Phabricator

in-bulletin
No OneTemporary

File Metadata

Created
Mon, Feb 24, 2:43 PM

in-bulletin

Index: branches/5.3.x/units/emoticons/emoticons_config.php
===================================================================
--- branches/5.3.x/units/emoticons/emoticons_config.php (revision 15669)
+++ branches/5.3.x/units/emoticons/emoticons_config.php (revision 15670)
@@ -1,109 +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' => 'emoticon',
'ItemClass' => Array ('class' => 'kDBItem', 'file' => '', 'build_event' => 'OnItemBuild'),
'ListClass' => Array ('class' => 'kDBList', 'file' => '', 'build_event' => 'OnListBuild'),
'EventHandlerClass' => Array ('class' => 'EmoticonEventHandler', 'file' => 'emoticon_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',
5 => 'mode',
),
'IDField' => 'EmoticonId',
'TableName' => TABLE_PREFIX.'Emoticon',
'TitleField' => 'Name',
'TitlePresets' => Array (
'default' => Array (
'new_status_labels' => Array ('emoticon' => '!la_title_AddingSmiley!'),
'edit_status_labels' => Array ('emoticon' => '!la_title_EditingSmiley!'),
),
'emoticon_list' => Array ('prefixes' => Array ('emoticon_List'), 'format' => "!la_tab_ConfigSmileys!"),
'emoticon_edit' => Array ('prefixes' => Array ('emoticon'), 'format' => "#emoticon_status# '#emoticon_titlefield#'"),
),
'PermSection' => Array ('main' => 'in-bulletin:configuration_emoticon'),
'Sections' => Array (
'in-bulletin:configuration_emoticon' => Array (
'parent' => 'in-bulletin:setting_folder',
'icon' => 'conf_smileys',
'label' => 'la_tab_ConfigSmileys',
'url' => Array ('t' => 'in-bulletin/emoticons/emoticon_list', 'pass' => 'm'),
'permissions' => Array ('view', 'add', 'edit'),
'priority' => 2,
'type' => stTREE,
),
),
'ListSQLs' => Array (
'' => ' SELECT %1$s.* %2$s
FROM %1$s',
),
'ListSortings' => Array (
'' => Array (
'Sorting' => Array ('Name' => 'desc'),
)
),
'Fields' => Array (
'EmoticonId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
'Name' => Array ('type' => 'string', 'max_len' => 20, 'not_null' => 1, 'required' => 1, 'default' => ''),
'KeyStroke' => Array ('type' => 'string', 'max_len' => 20, 'not_null' => 1, 'required' => 1, 'default' => ''),
'Enabled' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter',
'options' => Array (0 => 'la_No', 1 => 'la_Yes',), 'use_phrases' => 1,
'default' => 1, 'not_null' => 1,
),
'EmotionImage' => Array (
'type' => 'string', 'max_len' => 255,
- 'formatter' => 'kUploadFormatter', 'allowed_types' => Array ('image/jpeg', 'image/jpg', 'image/gif', 'image/png', 'image/pjpeg'),
+ 'formatter' => 'kUploadFormatter', 'allowed_types' => Array ('image/jpeg', 'image/jpg', 'image/gif', 'image/png', 'image/pjpeg', 'image/bmp', 'image/x-ms-bmp'),
'upload_dir' => SMILEYS_PATH,
'not_null' => 1, 'required' => 1, 'default' => '',
),
),
'Grids' => Array (
'Default' => Array (
'Icons' => Array (
'default' => 'icon16_item.png',
0 => 'icon16_disabled.png',
1 => 'icon16_item.png',
'module' => 'core',
),
'Fields' => Array (
'EmoticonId' => Array ('title' => 'column:la_fld_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter', 'width' => 50, ),
'Name' => Array ('filter_block' => 'grid_like_filter', 'width' => 150, ),
'KeyStroke' => Array ('filter_block' => 'grid_like_filter', 'width' => 100, ),
'EmotionImage' => Array ('title' => 'column:la_fld_Image', 'filter_block' => 'grid_like_filter', 'width' => 150, ),
),
),
),
);
\ No newline at end of file
Index: branches/5.3.x/units/private_messages/private_message_eh.php
===================================================================
--- branches/5.3.x/units/private_messages/private_message_eh.php (revision 15669)
+++ branches/5.3.x/units/private_messages/private_message_eh.php (revision 15670)
@@ -1,299 +1,299 @@
<?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 PrivateMessageEventHandler extends kDBEventHandler {
/**
* Allows to override standard permission mapping
*
* @return void
* @access protected
* @see kEventHandler::$permMapping
*/
protected function mapPermissions()
{
parent::mapPermissions();
$permissions = Array (
'OnItemBuild' => Array ('self' => true),
'OnCreate' => Array ('self' => true),
'OnDelete' => Array ('self' => true),
);
$this->permMapping = array_merge($this->permMapping, $permissions);
}
/**
* Applies folder & message owner filter to message list
*
* @param kEvent $event
* @return void
* @access protected
* @see kDBEventHandler::OnListBuild()
*/
protected function SetCustomQuery(kEvent $event)
{
parent::SetCustomQuery($event);
$folder_id = $this->Application->GetVar('folder_id');
if ( $folder_id === false ) {
$folder_id = PM_FOLDER_INBOX;
$this->Application->SetVar('folder_id', $folder_id);
}
$object = $event->getObject();
/* @var $object kDBList */
$user_id = $this->Application->RecallVar('user_id');
if ( $folder_id == PM_FOLDER_INBOX ) {
$object->addFilter('owner_filter', '%1$s.ToId = ' . $user_id);
}
else {
$object->addFilter('owner_filter', '%1$s.FromId = ' . $user_id);
}
$object->addFilter('folder_filter', '%1$s.FolderId = ' . $folder_id);
}
/**
* Puts message to Sent folder
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnBeforeItemCreate(kEvent $event)
{
parent::OnBeforeItemCreate($event);
$object = $event->getObject();
/* @var $object kDBItem */
if ( $object->GetDBField('FolderId') != PM_FOLDER_SENT ) {
// when creating "Inbox" message (from "Sent" message) don't reset folder & status
return ;
}
$user_id = $this->Application->RecallVar('user_id');
$object->SetDBField('FromId', $user_id);
$object->SetDBField('FolderId', PM_FOLDER_SENT);
$object->SetDBField('Status', PM_STATUS_READ);
}
/**
* Creates 1st post when topic is created
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnAfterItemCreate(kEvent $event)
{
parent::OnAfterItemCreate($event);
$object = $event->getObject();
/* @var $object kDBItem */
- $this->Application->EmailEventUser('PM.ADD', $object->GetDBField('ToId'));
+ $this->Application->emailUser('PM.ADD', $object->GetDBField('ToId'));
if ( $object->GetDBField('FolderId') != PM_FOLDER_SENT ) {
// 1. create message in sender's "Sent" folder (this method only for this step)
// 2. create message body (shared)
// 3. create message copy in recipient's "Inbox" folder
return ;
}
$message_body = $this->Application->recallObject($event->Prefix . '-body', null, Array ('skip_autoload' => true));
/* @var $message_body kDBItem */
// 1. create message body (for sender & recipient)
$copy_fields = Array ('Subject', 'Body', 'ShowSignatures', 'DisableSmileys', 'DisableBBCodes');
$message_body->SetDBFieldsFromHash($object->GetFieldValues(), null, $copy_fields);
$body_created = $message_body->Create();
if ( $body_created ) {
// 2. link body with message
$object->SetDBField('PMBodyId', $message_body->GetID());
$object->Update();
// 3. create message in recipient's Inbox folder
$object->SetDBField('FolderId', PM_FOLDER_INBOX);
$object->SetDBField('Status', PM_STATUS_UNREAD);
$object->Create();
}
}
/**
* Sets post options to virtual fields
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnAfterItemLoad(kEvent $event)
{
parent::OnAfterItemLoad($event);
$object = $event->getObject();
/* @var $object kDBItem */
$post_helper = $this->Application->recallObject('PostHelper');
/* @var $post_helper PostHelper */
$options_map = $post_helper->getOptionsMap();
$post_options = $object->GetDBField('Options');
foreach ($options_map as $option_name => $field_name) {
$option_value = $post_helper->GetPostOption($option_name, $post_options);
$object->SetDBField($field_name, (int)$option_value);
}
}
/**
* Goes to next_template after post creation
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnCreate(kEvent $event)
{
parent::OnCreate($event);
if ( $event->status == kEvent::erSUCCESS && !$this->Application->isAdmin ) {
$event->SetRedirectParam('opener', 's');
$event->redirect = $this->Application->GetVar('next_template');
}
}
/**
* Prevents user from deleting other user private messages
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnBeforeItemDelete(kEvent $event)
{
parent::OnBeforeItemDelete($event);
$object = $event->getObject();
/* @var $object kDBItem */
$user_id = $this->Application->RecallVar('user_id');
$owner_field = ($object->GetDBField('FolderId') == PM_FOLDER_INBOX) ? 'ToId' : 'FromId';
if ( $object->GetDBField($owner_field) != $user_id ) {
$event->status = kEvent::erFAIL;
}
}
/**
* Updates reference counter in message body record
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnAfterItemDelete(kEvent $event)
{
parent::OnAfterItemDelete($event);
$object = $event->getObject();
/* @var $object kDBItem */
$body_idfield = $this->Application->getUnitOption($event->Prefix . '-body', 'IDField');
$body_table = $this->Application->getUnitOption($event->Prefix . '-body', 'TableName');
$sql = 'UPDATE ' . $body_table . '
SET ReferenceCount = ReferenceCount - 1
WHERE ' . $body_idfield . ' = ' . $object->GetDBField('PMBodyId');
$this->Conn->Query($sql);
}
/**
* Sets default values to posting options based on persistent session
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnAfterConfigRead(kEvent $event)
{
parent::OnAfterConfigRead($event);
$virtual_fields = $this->Application->getUnitOption($event->Prefix, 'VirtualFields');
$virtual_fields['DisableBBCodes']['default'] = (int)!$this->Application->RecallPersistentVar('bbcode');
$virtual_fields['DisableSmileys']['default'] = (int)!$this->Application->RecallPersistentVar('smileys');
$virtual_fields['ShowSignatures']['default'] = (int)$this->Application->RecallPersistentVar('show_sig');
$this->Application->setUnitOption($event->Prefix, 'VirtualFields', $virtual_fields);
}
/**
* Checks, that current user is recipient or sender of viewed message
*
* @param kEvent $event
* @return bool
* @access protected
*/
protected function checkItemStatus(kEvent $event)
{
$object = $event->getObject();
/* @var $object kDBItem */
if ( !$object->isLoaded() ) {
return true;
}
$user_id = $this->Application->RecallVar('user_id');
return ($object->GetDBField('FromId') == $user_id) || ($object->GetDBField('ToId') == $user_id);
}
/**
* Prepares new reply & new message form
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnNew(kEvent $event)
{
parent::OnNew($event);
$reply_to = $this->Application->GetVar('reply_to');
$user_id = $this->Application->GetVar('user_id');
$object = $event->getObject();
/* @var $object kDBItem */
if ( $reply_to > 0 ) {
// reply to message
$source_msg = $this->Application->recallObject($event->Prefix . '.-item', null, Array ('skip_autoload' => true));
/* @var $source_msg kDBItem */
$source_msg->Load($reply_to);
$object->SetDBField('ToId', $source_msg->GetDBField('FromId'));
$object->SetDBField('Subject', 'Re: ' . $source_msg->GetDBField('Subject'));
}
elseif ( $user_id > 0 ) {
// send message to any user by id
$object->SetDBField('ToId', $user_id);
}
}
}
\ No newline at end of file
Index: branches/5.3.x/units/private_messages/private_messages_config.php
===================================================================
--- branches/5.3.x/units/private_messages/private_messages_config.php (revision 15669)
+++ branches/5.3.x/units/private_messages/private_messages_config.php (revision 15670)
@@ -1,102 +1,102 @@
<?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' => 'private-message',
'ItemClass' => Array ('class' => 'kDBItem', 'file' => '', 'build_event' => 'OnItemBuild'),
'ListClass' => Array ('class' => 'kDBList', 'file' => '', 'build_event' => 'OnListBuild'),
'EventHandlerClass' => Array ('class' => 'PrivateMessageEventHandler', 'file' => 'private_message_eh.php', 'build_event' => 'OnBuild'),
'TagProcessorClass' => Array ('class' => 'PrivateMessageTagProcessor', 'file' => 'private_message_tp.php', 'build_event' => 'OnBuild'),
'AutoLoad' => true,
'QueryString' => Array (
1 => 'id',
2 => 'Page',
3 => 'PerPage',
4 => 'event',
5 => 'mode',
),
'IDField' => 'PmId',
'StatusField' => Array ('Status'),
'TitleField' => 'Subject',
'PermSection' => Array ('main' => 'in-bulletin:private_messages',),
'TableName' => TABLE_PREFIX.'PrivateMessages',
'CalculatedFields' => Array (
'' => Array (
'Subject' => 'pmb.Subject',
'Body' => 'pmb.Body',
),
),
'ListSQLs' => Array (
'' => ' SELECT %1$s.* %2$s
FROM %1$s
LEFT JOIN '.TABLE_PREFIX.'%3$sPrivateMessageBody pmb ON pmb.PMBodyId = %1$s.PMBodyId
LEFT JOIN '.TABLE_PREFIX.'Users from_user ON from_user.PortalUserId = %1$s.FromId
LEFT JOIN '.TABLE_PREFIX.'Users to_user ON to_user.PortalUserId = %1$s.ToId',
),
'ListSortings' => Array (
'' => Array (
'ForcedSorting' => Array ('CreatedOn' => 'desc'),
),
),
'SubItems' => Array ('private-message-body'),
'CalculatedFields' => Array (
'' => Array (
'Subject' => 'pmb.Subject',
'Body' => 'pmb.Body',
'Options' => 'pmb.Options',
- 'FromName' => 'IF (ISNULL(from_user.Username), IF (%1$s.FromId = ' . USER_ROOT . ', "root", IF (%1$s.FromId = ' . USER_GUEST . ', "Guest", "n/a")), from_user.Username)',
- 'ToName' => 'IF (ISNULL(to_user.Username), IF (%1$s.ToId = ' . USER_ROOT . ', "root", IF (%1$s.ToId = ' . USER_GUEST . ', "Guest", "n/a")), to_user.Username)',
+ 'FromName' => 'IF (ISNULL(from_user.Username), IF (%1$s.FromId = ' . USER_ROOT . ', "root", IF (%1$s.FromId = ' . USER_GUEST . ', "Guest", "n/a")), IF(from_user.Username = "", from_user.Email, from_user.Username))',
+ 'ToName' => 'IF (ISNULL(to_user.Username), IF (%1$s.ToId = ' . USER_ROOT . ', "root", IF (%1$s.ToId = ' . USER_GUEST . ', "Guest", "n/a")), IF(to_user.Username = "", to_user.Email, to_user.Username))',
'FromFullName' => 'TRIM(CONCAT(from_user.FirstName, " ", from_user.LastName))',
'ToFullName' => 'TRIM(CONCAT(to_user.FirstName, " ", to_user.LastName))',
),
),
'Fields' => Array (
'PmId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
- 'FromId' => Array ('type' => 'int', 'formatter' => 'kLEFTFormatter', 'error_msgs' => Array ('invalid_option' => '!lu_error_UserNotFound!'), 'left_sql' => 'SELECT %s FROM '.TABLE_PREFIX.'Users WHERE `%s` = \'%s\'', 'left_key_field' => 'PortalUserId', 'left_title_field' => 'Username', 'required' => 1, 'default' => null),
- 'ToId' => Array ('type' => 'int', 'formatter' => 'kLEFTFormatter', 'error_msgs' => Array ('invalid_option' => '!lu_error_UserNotFound!'), 'left_sql' => 'SELECT %s FROM '.TABLE_PREFIX.'Users WHERE `%s` = \'%s\'', 'left_key_field' => 'PortalUserId', 'left_title_field' => 'Username', 'required' => 1, 'default' => null),
+ 'FromId' => Array ('type' => 'int', 'formatter' => 'kLEFTFormatter', 'error_msgs' => Array ('invalid_option' => '!lu_error_UserNotFound!'), 'left_sql' => 'SELECT %s FROM '.TABLE_PREFIX.'Users WHERE %s', 'left_key_field' => 'PortalUserId', 'left_title_field' => USER_TITLE_FIELD, 'required' => 1, 'default' => null),
+ 'ToId' => Array ('type' => 'int', 'formatter' => 'kLEFTFormatter', 'error_msgs' => Array ('invalid_option' => '!lu_error_UserNotFound!'), 'left_sql' => 'SELECT %s FROM '.TABLE_PREFIX.'Users WHERE %s', 'left_key_field' => 'PortalUserId', 'left_title_field' => USER_TITLE_FIELD, 'required' => 1, 'default' => null),
'FolderId' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (0 => 'lu_Inbox', 1 => 'lu_Sent'), 'use_phrases' => 1, 'not_null' => 1, 'default' => PM_FOLDER_SENT),
'Status' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (0 => 'lu_opt_MessageUnread', 1 => 'lu_opt_MessageViewed', 2 => 'lu_opt_MessageRead', 3 => 'lu_opt_MessageReplied', 4 => 'lu_opt_MessageSent'), 'use_phrases' => 1, 'not_null' => 1, 'default' => 0),
'PMBodyId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
'CreatedOn' => Array ('type' => 'int', 'formatter' => 'kDateFormatter', 'default' => '#NOW#'),
),
'VirtualFields' => Array (
'FromName' => Array ('type' => 'string', 'default' => ''),
'FromFullName' => Array ('type' => 'string', 'default' => ''),
'ToName' => Array ('type' => 'string', 'default' => ''),
'ToFullName' => Array ('type' => 'string', 'default' => ''),
'Subject' => Array ('type' => 'string', 'default' => ''),
'Body' => Array ('type' => 'string', 'required' => 1, 'default' => ''),
'Options' => Array ('type' => 'string', 'default' => 0),
'DisableBBCodes' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'la_Yes', 0 => 'la_No'), 'use_phrases' => 1, 'default' => 0),
'DisableSmileys' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'la_Yes', 0 => 'la_No'), 'use_phrases' => 1, 'default' => 0),
'ShowSignatures' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (0 => 'la_No', 1 => 'la_Yes'), 'use_phrases' => 1, 'default' => 1),
),
);
\ No newline at end of file
Index: branches/5.3.x/units/topics/topics_config.php
===================================================================
--- branches/5.3.x/units/topics/topics_config.php (revision 15669)
+++ branches/5.3.x/units/topics/topics_config.php (revision 15670)
@@ -1,581 +1,577 @@
<?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' => 'bb',
'ItemClass' => Array ('class' => 'kCatDBItem', 'file' => '', 'build_event' => 'OnItemBuild'),
'ListClass' => Array ('class' => 'kCatDBList', 'file' => '', 'build_event' => 'OnListBuild'),
'EventHandlerClass' => Array ('class' => 'TopicsEventHandler', 'file' => 'topics_event_handler.php', 'build_event' => 'OnBuild'),
'TagProcessorClass' => Array ('class' => 'TopicsTagProcessor', 'file' => 'topics_tag_processor.php', 'build_event' => 'OnBuild'),
'AutoLoad' => true,
'QueryString' => Array (
1 => 'id',
2 => 'Page',
3 => 'PerPage',
4 => 'event',
5 => 'mode',
),
'ConfigPriority' => 0,
'RewritePriority' => 103,
'RewriteListener' => 'CategoryItemRewrite:RewriteListener',
'Hooks' => Array (
Array (
'Mode' => hBEFORE,
'Conditional' => false,
'HookToPrefix' => '',
'HookToSpecial' => '*',
'HookToEvent' => Array ('OnAfterConfigRead'),
'DoPrefix' => 'cdata',
'DoSpecial' => '*',
'DoEvent' => 'OnDefineCustomFields',
),
Array (
'Mode' => hBEFORE,
'Conditional' => false,
'HookToPrefix' => 'rev',
'HookToSpecial' => '*',
'HookToEvent' => Array ('OnAfterConfigRead'),
'DoPrefix' => '',
'DoSpecial' => '*',
'DoEvent' => 'OnCloneSubItem',
),
Array (
'Mode' => hBEFORE,
'Conditional' => false,
'HookToPrefix' => 'fav',
'HookToSpecial' => '*',
'HookToEvent' => Array ('OnAfterConfigRead'),
'DoPrefix' => '',
'DoSpecial' => '*',
'DoEvent' => 'OnCloneSubItem',
),
Array (
'Mode' => hBEFORE,
'Conditional' => false,
'HookToPrefix' => 'rel',
'HookToSpecial' => '*',
'HookToEvent' => Array ('OnAfterConfigRead'),
'DoPrefix' => '',
'DoSpecial' => '*',
'DoEvent' => 'OnCloneSubItem',
),
Array (
'Mode' => hBEFORE,
'Conditional' => false,
'HookToPrefix' => 'img',
'HookToSpecial' => '*',
'HookToEvent' => Array ('OnAfterConfigRead'),
'DoPrefix' => '',
'DoSpecial' => '*',
'DoEvent' => 'OnCloneSubItem',
),
Array (
'Mode' => hBEFORE,
'Conditional' => false,
'HookToPrefix' => 'ci',
'HookToSpecial' => '*',
'HookToEvent' => Array ('OnAfterConfigRead'),
'DoPrefix' => '',
'DoSpecial' => '*',
'DoEvent' => 'OnCloneSubItem',
),
),
'CatalogItem' => true,
'AdminTemplatePath' => 'topics',
'AdminTemplatePrefix' => 'topics_',
'SearchConfigPostfix' => 'topics',
'IDField' => 'TopicId',
'StatusField' => Array ('Status'), // field, that is affected by Approve/Decline events
'TitleField' => 'TopicText', // field, used in bluebar when editing existing item
'TitlePhrase' => 'la_Text_Topic', // phrase used to specify item type in relationship list
'OwnerField' => 'OwnerId', // usually it is CreatedById
'TitlePresets' => Array (
'default' => Array (
'new_status_labels' => Array ('bb' => '!la_title_AddingTopic!'),
'edit_status_labels' => Array ('bb' => '!la_title_EditingTopic!'),
'new_titlefield' => Array ('bb' => '!la_title_NewTopic!'),
),
'topics_edit' => Array ('prefixes' => Array ('bb'), 'format' => "#bb_status# '#bb_titlefield#' - !la_title_General!"),
'topics_categories' => Array ('prefixes' => Array ('bb', 'bb-ci_List'), 'format' => "#bb_status# '#bb_titlefield#' - !la_title_Categories!"),
'topics_relations' => Array ('prefixes' => Array ('bb'), 'format' => "#bb_status# '#bb_titlefield#' - !la_title_Relations!"),
'topics_images' => Array ('prefixes' => Array ('bb'), 'format' => "#bb_status# '#bb_titlefield#' - !la_title_Images!"),
'topics_reviews' => Array ('prefixes' => Array ('bb'), 'format' => "#bb_status# '#bb_titlefield#' - !la_title_Reviews!"),
'topics_custom' => Array ('prefixes' => Array ('bb'), 'format' => "#bb_status# '#bb_titlefield#' - !la_title_Custom!"),
'images_edit' => Array (
'prefixes' => Array ('bb', 'bb-img'),
'new_status_labels' => Array ('bb-img' => '!la_title_Adding_Image!'),
'edit_status_labels' => Array ('bb-img' => '!la_title_Editing_Image!'),
'new_titlefield' => Array ('bb-img' => '!la_title_New_Image!'),
'format' => "#bb_status# '#bb_titlefield#' - #bb-img_status# '#bb-img_titlefield#'",
),
'reviews_edit' => Array (
'prefixes' => Array ('bb', 'bb-rev'),
'new_status_labels' => Array ('bb-rev' =>"!la_title_Adding_Review! '!la_title_New_Review!'"),
'edit_status_labels' => Array ('bb-rev' => '!la_title_Editing_Review!'),
'format' => "#bb_status# '#bb_titlefield#' - #bb-rev_status#",
),
'relations_edit' => Array (
'prefixes' => Array ('bb', 'bb-rel'),
'new_status_labels' => Array ('bb-rel' =>"!la_title_Adding_Relationship! '!la_title_New_Relationship!'"),
'edit_status_labels' => Array ('bb-rel' => '!la_title_Editing_Relationship!'),
'format' => "#bb_status# '#bb_titlefield#' - #bb-rel_status#",
),
'tree_in-bulletin' => Array ('format' => '!la_Text_Version! '.$this->Application->findModule('Name', 'In-Bulletin', 'Version')),
),
'EditTabPresets' => Array (
'Default' => Array (
'general' => Array ('title' => 'la_tab_General', 't' => 'in-bulletin/topics/topics_edit', 'priority' => 1),
'categories' => Array ('title' => 'la_tab_Categories', 't' => 'in-bulletin/topics/topics_categories', 'priority' => 2),
'relations' => Array ('title' => 'la_tab_Relations', 't' => 'in-bulletin/topics/topics_relations', 'priority' => 3),
'images' => Array ('title' => 'la_tab_Images', 't' => 'in-bulletin/topics/topics_images', 'priority' => 4),
'reviews' => Array ('title' => 'la_tab_Reviews', 't' => 'in-bulletin/topics/topics_reviews', 'priority' => 5),
'custom' => Array ('title' => 'la_tab_Custom', 't' => 'in-bulletin/topics/topics_custom', 'priority' => 6),
),
),
'PermItemPrefix' => 'TOPIC',
'PermTabText' => 'In-Bulletin',
'PermSection' => Array ('main' => 'CATEGORY:in-bulletin:topics_list', 'search' => 'in-bulletin:configuration_search', 'custom' => 'in-bulletin:configuration_custom'),
'Sections' => Array (
/*'in-bulletin' => Array (
'parent' => 'in-portal:root',
'icon' => 'settings_in-bulletin',
'label' => 'la_title_In-Bulletin',
'url' => Array ('t' => 'index', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 3.3,
'container' => true,
'type' => stTREE,
),*/
'in-bulletin:topics' => Array (
'parent' => 'in-portal:site',
'icon' => 'topics',
'label' => 'la_tab_Topics',
'url' => Array ('t' => 'catalog/advanced_view', 'anchor' => 'tab-bb.showall', 'pass' => 'm'),
'onclick' => 'setCatalogTab(\'bb.showall\')',
'permissions' => Array ('view'),
'priority' => 3.4,
'type' => stTREE,
),
// topic settings
'in-bulletin:setting_folder' => Array (
'parent' => 'in-portal:system',
'icon' => 'conf_topics',
'label' => 'la_title_In-Bulletin',
'use_parent_header' => 1,
'url' => Array ('t' => 'index', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view'),
'priority' => 3.5,
'container' => true,
'type' => stTREE,
),
/*'in-bulletin:inbulletin_general' => Array (
'parent' => 'in-bulletin:setting_folder',
'icon' => 'core:settings_general',
'label' => 'la_tab_GeneralSettings',
'url' => Array ('t' => 'config/config_general', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view', 'add', 'edit'),
'priority' => 2.9,
'type' => stTREE,
),*/
'in-bulletin:configuration_output' => Array (
'parent' => 'in-bulletin:setting_folder',
'icon' => 'core:conf_output',
'label' => 'la_tab_ConfigOutput',
'url' => Array ('t' => 'config/config_general', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view', 'add', 'edit'),
'priority' => 3,
'type' => stTREE,
),
'in-bulletin:configuration_search' => Array (
'parent' => 'in-bulletin:setting_folder',
'icon' => 'core:conf_search',
'label' => 'la_tab_ConfigSearch',
'url' => Array ('t' => 'config/config_search', 'module_key' => 'topics', 'pass_section' => true, 'pass' => 'm'),
'permissions' => Array ('view', 'edit'),
'priority' => 4,
'type' => stTREE,
),
'in-bulletin:configuration_custom' => Array (
'parent' => 'in-bulletin:setting_folder',
'icon' => 'core:conf_customfields',
'label' => 'la_tab_ConfigCustom',
'url' => Array ('t' => 'custom_fields/custom_fields_list', 'cf_type' => 3, 'pass_section' => true, 'pass' => 'm,cf'),
'permissions' => Array ('view', 'add', 'edit', 'delete'),
'priority' => 5,
'type' => stTREE,
),
),
'FilterMenu' => Array (
'Groups' => Array (
Array ('mode' => 'AND', 'filters' => Array ('show_new'), 'type' => kDBList::HAVING_FILTER),
Array ('mode' => 'AND', 'filters' => Array ('show_hot'), 'type' => kDBList::HAVING_FILTER),
Array ('mode' => 'AND', 'filters' => Array ('show_pop'), 'type' => kDBList::HAVING_FILTER),
Array ('mode' => 'AND', 'filters' => Array ('show_pick'), 'type' => kDBList::WHERE_FILTER),
),
'Filters' => Array (
'show_new' => Array ('label' => 'la_Text_New', 'on_sql' => '', 'off_sql' => '`IsNew` != 1' ),
'show_hot' => Array ('label' => 'la_Text_Hot', 'on_sql' => '', 'off_sql' => '`IsHot` != 1' ),
'show_pop' => Array ('label' => 'la_Text_Pop', 'on_sql' => '', 'off_sql' => '`IsPop` != 1' ),
'show_pick' => Array ('label' => 'la_prompt_EditorsPick', 'on_sql' => '', 'off_sql' => '%1$s.`EditorsPick` != 1' ),
),
),
'CatalogSelectorName' => 'topiclist',
'ItemPropertyMappings' => Array (
'NewDays' => 'Topic_NewDays', // number of days item to be NEW
'MinPopVotes' => 'Topic_MinPopVotes', // minimum number of votes for an item to be POP
'MinPopRating' => 'Topic_MinPopRating', // minimum rating for an item to be POP
'MaxHotNumber' => 'Topic_MaxHotNumber', // maximum number of HOT items
'HotLimit' => 'Topic_HotLimit', // variable name in inp_Cache table
'ClickField' => 'Views', // item click count is stored here (in item table)
),
'ItemType' => 3, // this is used when relation to product is added from in-portal and via-versa
'ViewMenuPhrase' => 'la_title_Topics',
'CatalogTabIcon' => 'in-bulletin:icon16_topics.png',
'UsePendingEditing' => true, // item editing is controlled by TOPIC.ADD/EDIT, TOPIC.ADD/EDIT.PENDING permissions
'StatisticsInfo' => Array (
'pending' => Array (
'icon' => 'icon16_topic_pending.gif',
'label' => 'la_Text_Topics',
'js_url' => '#url#',
'url' => Array ('t' => 'catalog/advanced_view', 'SetTab' => 'bb', 'pass' => 'm,bb.showall', 'bb.showall_event' => 'OnSetFilterPattern', 'bb.showall_filters' => 'show_active=0,show_pending=1,show_disabled=0,show_new=1,show_hot=1,show_pop=1,show_pick=1'),
'status' => STATUS_PENDING,
),
),
'TableName' => TABLE_PREFIX.'Topic',
'CustomDataTableName' => TABLE_PREFIX . 'TopicCustomData',
'CalculatedFields' => Array (
'' => Array (
- 'UserName' => 'IF (ISNULL(u.Username), IF (%1$s.OwnerId = ' . USER_ROOT . ', "root", IF (%1$s.OwnerId = ' . USER_GUEST . ', "Guest", "n/a")), u.Username)',
+ 'UserName' => 'IF (ISNULL(u.Username), IF (%1$s.OwnerId = ' . USER_ROOT . ', "root", IF (%1$s.OwnerId = ' . USER_GUEST . ', "Guest", "n/a")), IF(u.Username = "", u.Email, u.Username))',
'CategoryId' => TABLE_PREFIX.'%3$sCategoryItems.CategoryId',
'Filename' => TABLE_PREFIX.'%3$sCategoryItems.Filename',
'CategoryFilename' => TABLE_PREFIX.'Categories.NamedParentPath',
'PrimaryCat' => TABLE_PREFIX.'%3$sCategoryItems.PrimaryCat',
'ParentPath' => TABLE_PREFIX.'Categories.ParentPath',
'AltName' => 'img.AltName',
'SameImages' => 'img.SameImages',
'LocalThumb' => 'img.LocalThumb',
'ThumbPath' => 'img.ThumbPath',
'ThumbUrl' => 'img.ThumbUrl',
'LocalImage' => 'img.LocalImage',
'LocalPath' => 'img.LocalPath',
'FullUrl' => 'img.Url',
'LastPoster' => 'IF (ISNULL(last_post.PosterAlias), "Guest", last_post.PosterAlias)',
'LastPosterId' => 'last_post.CreatedById',
),
),
'ListSQLs' => Array (
'' => ' SELECT %1$s.* %2$s
FROM %1$s
LEFT JOIN '.TABLE_PREFIX.'%3$sCategoryItems ON '.TABLE_PREFIX.'%3$sCategoryItems.ItemResourceId = %1$s.ResourceId
LEFT JOIN '.TABLE_PREFIX.'Categories ON '.TABLE_PREFIX.'Categories.CategoryId = '.TABLE_PREFIX.'%3$sCategoryItems.CategoryId
LEFT JOIN '.TABLE_PREFIX.'%3$sCatalogImages img ON img.ResourceId = %1$s.ResourceId AND img.DefaultImg = 1
LEFT JOIN '.TABLE_PREFIX.'CategoryPermissionsCache perm ON perm.CategoryId = '.TABLE_PREFIX.'%3$sCategoryItems.CategoryId
LEFT JOIN '.TABLE_PREFIX.'Users u ON %1$s.OwnerId = u.PortalUserId
LEFT JOIN '.TABLE_PREFIX.'%3$sPosting last_post ON last_post.PostingId = %1$s.LastPostId
LEFT JOIN '.TABLE_PREFIX.'%3$sTopicCustomData cust ON %1$s.ResourceId = cust.ResourceId',
),
'ListSortings' => Array (
'' => Array (
'ForcedSorting' => Array ('EditorsPick' => 'desc', 'Priority' => 'desc'),
'Sorting' => Array ('TopicText' => 'asc'),
)
),
'ItemSQLs' => Array (
'' => ' SELECT %1$s.* %2$s
FROM %1$s
LEFT JOIN '.TABLE_PREFIX.'%3$sCategoryItems ON '.TABLE_PREFIX.'%3$sCategoryItems.ItemResourceId = %1$s.ResourceId
LEFT JOIN '.TABLE_PREFIX.'Categories ON '.TABLE_PREFIX.'Categories.CategoryId = '.TABLE_PREFIX.'%3$sCategoryItems.CategoryId
LEFT JOIN '.TABLE_PREFIX.'%3$sCatalogImages img ON img.ResourceId = %1$s.ResourceId AND img.DefaultImg = 1
LEFT JOIN '.TABLE_PREFIX.'Users u ON %1$s.OwnerId = u.PortalUserId
LEFT JOIN '.TABLE_PREFIX.'%3$sPosting last_post ON last_post.PostingId = %1$s.LastPostId
LEFT JOIN '.TABLE_PREFIX.'%3$sTopicCustomData cust ON %1$s.ResourceId = cust.ResourceId'
),
'SubItems' => Array ('bb-rev', 'bb-ci', 'bb-rel', 'bb-img', 'bb-cdata', 'bb-fav', 'bb-post'),
'Fields' => Array (
'TopicId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0,),
'NotifyOwnerOnChanges' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter',
'options' => Array (0 => 'lu_No', 1 => 'lu_Yes'), 'use_phrases' => 1,
'not_null' => 1, 'default' => 0,
),
'Modified' => Array (
'type' => 'int',
'formatter' => 'kDateFormatter',
'required' => 1, 'default' => '#NOW#',
),
'TopicText' => Array (
'type' => 'string',
'required' => 1, 'default' => '', 'not_null' => 1,
),
'AutomaticFilename' => Array ('type' => 'int', 'not_null' => 1, 'default' => 1),
'Posts' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
'Views' => Array (
'type' => 'double',
'formatter' => 'kFormatter',
'format' => '%d',
'not_null' => 1, 'default' => 0,
),
'EditorsPick' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter',
'options' => Array (0 => 'la_No', 1 => 'la_Yes', ), 'use_phrases' => 1,
'not_null' => 1, 'default' => 0,
),
'Status' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter',
'options' => Array (
0 => 'la_Disabled',
1 => 'la_Active',
2 => 'la_Pending',
),
'use_phrases' => 1,
'not_null' => 1, 'default' => 2,
),
'Priority' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
'OwnerId' => Array (
'type' => 'int',
'formatter' => 'kLEFTFormatter',
'options' => Array (USER_ROOT => 'root', USER_GUEST => 'Guest'),
- 'left_sql' => 'SELECT %s FROM ' . TABLE_PREFIX . 'Users
- WHERE `%s` = \'%s\' ',
- 'left_key_field' => 'PortalUserId',
- 'left_title_field' => 'Username',
+ 'left_sql' => 'SELECT %s FROM ' . TABLE_PREFIX . 'Users WHERE %s',
+ 'left_key_field' => 'PortalUserId', 'left_title_field' => USER_TITLE_FIELD,
'error_msgs' => Array ('invalid_option' => '!la_error_UserNotFound!'),
'sample_value' => 'Guest', 'required' => 1, 'default' => NULL,
),
'ModifiedById' => Array (
'type' => 'int',
'formatter' => 'kLEFTFormatter',
'options' => Array (USER_ROOT => 'root', USER_GUEST => 'Guest'),
- 'left_sql' => 'SELECT %s FROM ' . TABLE_PREFIX . 'Users
- WHERE `%s` = \'%s\' ',
- 'left_key_field' => 'PortalUserId',
- 'left_title_field' => 'Username',
+ 'left_sql' => 'SELECT %s FROM ' . TABLE_PREFIX . 'Users WHERE %s',
+ 'left_key_field' => 'PortalUserId', 'left_title_field' => USER_TITLE_FIELD,
'error_msgs' => Array ('invalid_option' => '!la_error_UserNotFound!'),
'default' => NULL,
),
'ResourceId' => Array ('type' => 'int', 'default' => null),
'TopicType' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter',
'options' => Array (0 => 'la_Yes', 1 => 'la_No'), 'use_phrases' => 1,
'not_null' => 1, 'default' => 1,
),
'CreatedOn' => Array (
'type' => 'double',
'formatter' => 'kDateFormatter',
'required' => 1, 'default' => '#NOW#',
),
'CachedReviewsQty' => Array ('type' => 'int' , 'not_null' => 1, 'default' => 0),
'CachedRating' => Array ('type' => 'string', 'not_null' => 1, 'default' => 0),
'CachedVotesQty' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
'NewItem' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter', 'use_phrases' => 1,
'options' => Array (
2 => 'la_Auto', 1 => 'la_Always', 0 => 'la_Never',
),
'default' => 2, 'not_null' => 1,
),
'PopItem' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter', 'use_phrases' => 1,
'options' => Array (
2 => 'la_Auto', 1 => 'la_Always', 0 => 'la_Never',
),
'default' => 2, 'not_null' => 1,
),
'HotItem' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter', 'use_phrases' => 1,
'options' => Array (
2 => 'la_Auto', 1 => 'la_Always', 0 => 'la_Never',
),
'default' => 2, 'not_null' => 1,
),
'PostedBy' => Array ('type' => 'string', 'not_null' => 1, 'default' => ''),
'OrgId' => Array ('type' => 'int', 'default' => null),
'LastPostId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
'LastPostDate' => Array ('type' => 'int', 'formatter' => 'kDateFormatter', 'default' => null),
'TodayDate' => Array ('type' => 'string', 'default' => null),
'TodayPosts' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
'MetaKeywords' => Array ('type' => 'string', 'default' => null),
'MetaDescription' => Array (
'type' => 'string',
'formatter' => 'kFormatter', 'using_fck' => 1, 'default' => null
),
),
'VirtualFields' => Array (
'Relevance' => Array ('type' => 'float', 'default' => 0),
'UserName' => Array ('type' => 'string', 'default' => ''),
'CategoryId' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter',
'options' => Array (),
'default' => 0,
),
'Filename' => Array ('type' => 'string', 'default' => ''),
'CategoryFilename' => Array ('type' => 'string', 'default' => ''),
'PrimaryCat' => Array ('type' => 'int', 'default' => 0),
'IsHot' => Array ('type' => 'int', 'default' => 0),
'IsNew' => Array ('type' => 'int', 'default' => 0),
'IsPop' => Array ('type' => 'int', 'default' => 0),
'CachedNavbar' => Array ('type' => 'string', 'default' => ''),
'ParentPath' => Array ('type' => 'string', 'default' => ''),
'LastPoster' => Array ('type' => 'string', 'default' => ''),
'LastPosterId' => Array ('type' => 'int', 'default' => USER_GUEST),
'PostingText' => Array (
'type' => 'string',
'formatter' => 'kFormatter', 'using_fck' => 1,
'required' => 1, 'allow_html' => 1, 'default' => '',
),
'DisableBBCodes' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter',
'options' => Array (0 => 'la_No', 1 => 'la_Yes',), 'use_phrases' => 1,
'default' => 0,
),
'DisableSmileys' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter',
'options' => Array (0 => 'la_No', 1 => 'la_Yes',), 'use_phrases' => 1,
'default' => 0,
),
'ShowSignatures' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter',
'options' => Array (0 => 'la_No', 1 => 'la_Yes',), 'use_phrases' => 1,
'default' => 1,
),
// for primary image
'AltName' => Array ('type' => 'string', 'default' => ''),
'SameImages' => Array ('type' => 'string', 'default' => ''),
'LocalThumb' => Array ('type' => 'string', 'default' => ''),
'ThumbPath' => Array ('type' => 'string', 'default' => ''),
'ThumbUrl' => Array ('type' => 'string', 'default' => ''),
'LocalImage' => Array ('type' => 'string', 'default' => ''),
'LocalPath' => Array ('type' => 'string', 'default' => ''),
'FullUrl' => Array ('type' => 'string', 'default' => ''),
),
'Grids' => Array (
'Default' => Array (
'Icons' => Array (
'default' => 'icon16_topic.png',
0 => 'icon16_topic_disabled.png',
1 => 'icon16_topic.png',
2 => 'icon16_topic_pending.png',
'NEW' => 'icon16_topic_new.png',
),
'Fields' => Array (
'TopicId' => Array ('title' => 'column:la_fld_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter', 'width' => 60, ),
'TopicText' => Array ('title' => 'la_col_TopicText', 'data_block' => 'grid_catitem_td', 'filter_block' => 'grid_like_filter', 'width' => 300, 'first_chars' => 290, ),
'Priority' => Array ('filter_block' => 'grid_range_filter', 'width' => 65),
'UserName' => Array ('title' => 'column:la_fld_PostedBy', 'filter_block' => 'grid_like_filter', 'width' => 150, ),
'CreatedOn' => Array ('filter_block' => 'grid_date_range_filter', 'width' => 145, ),
'Status' => Array ('filter_block' => 'grid_options_filter', 'width' => 70, ),
'LastPostDate' => Array ('title' => 'la_col_LastPostOn', 'filter_block' => 'grid_date_range_filter', 'width' => 145, ),
'Posts' => Array ('title' => 'la_col_Posts', 'filter_block' => 'grid_range_filter', 'width' => 70, ),
'Views' => Array ('filter_block' => 'grid_range_filter', 'width' => 70, ),
),
),
'Radio' => Array (
'Icons' => Array (
'default' => 'icon16_topic.png',
0 => 'icon16_topic_disabled.png',
1 => 'icon16_topic.png',
2 => 'icon16_topic_pending.png',
'NEW' => 'icon16_topic_new.png',
),
'Selector' => 'radio',
'Fields' => Array (
'TopicId' => Array ('title' => 'column:la_fld_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter', 'width' => 60, ),
'TopicText' => Array ('title' => 'la_col_TopicText', 'data_block' => 'grid_catitem_td', 'filter_block' => 'grid_like_filter', 'width' => 300, 'first_chars' => 290, ),
'Priority' => Array ('filter_block' => 'grid_range_filter', 'width' => 65),
'UserName' => Array ('title' => 'column:la_fld_PostedBy', 'filter_block' => 'grid_like_filter', 'width' => 150, ),
'CreatedOn' => Array ('filter_block' => 'grid_date_range_filter', 'width' => 145, ),
'Status' => Array ('filter_block' => 'grid_options_filter', 'width' => 70, ),
'LastPostDate' => Array ('title' => 'la_col_LastPostOn', 'filter_block' => 'grid_date_range_filter', 'width' => 145, ),
'Posts' => Array ('title' => 'la_col_Posts', 'filter_block' => 'grid_range_filter', 'width' => 70, ),
'Views' => Array ('filter_block' => 'grid_range_filter', 'width' => 70, ),
),
),
),
'ConfigMapping' => Array (
'PerPage' => 'Perpage_Topics',
'ShortListPerPage' => 'Perpage_Topics_Short',
'ForceEditorPick' => 'Topic_EditorPicksAbove',
'DefaultSorting1Field' => 'Topic_SortField',
'DefaultSorting2Field' => 'Topic_SortField2',
'DefaultSorting1Dir' => 'Topic_SortOrder',
'DefaultSorting2Dir' => 'Topic_SortOrder2',
'RatingDelayValue' => 'topic_RatingDelay_Value',
'RatingDelayInterval' => 'topic_RatingDelay_Interval',
),
);
\ No newline at end of file
Index: branches/5.3.x/units/helpers/post_helper.php
===================================================================
--- branches/5.3.x/units/helpers/post_helper.php (revision 15669)
+++ branches/5.3.x/units/helpers/post_helper.php (revision 15670)
@@ -1,463 +1,463 @@
<?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 PostHelper extends kHelper {
var $postOptionBits = Array (
'show_sig' => 128,
'disable_bbcode' => 64,
'disable_smileys' => 32,
);
/**
* Checks if specific option is set for post
*
* @param string $option_name
* @param Array $options
* @return bool
*/
function GetPostOption($option_name, $options)
{
if (!isset($this->postOptionBits[$option_name])) {
return false;
}
$option_bit = $this->postOptionBits[$option_name];
return ($options & $option_bit) == $option_bit;
}
/**
* Sets given option bit (by name) to post options
*
* @param string $option_name
* @param int $option_value
* @param Array $options
* @return bool
*/
function SetPostOption($option_name, $option_value, &$options)
{
if (!isset($this->postOptionBits[$option_name])) {
return false;
}
$option_bit = $this->postOptionBits[$option_name];
if ($option_value) {
$options |= $option_bit;
}
else {
$options = $options &~ $option_bit;
}
return true;
}
/**
* Returns post options map to virtual field names
*
* @return Array
*/
function getOptionsMap()
{
$options_map = Array (
'show_sig' => 'ShowSignatures',
'disable_smileys' => 'DisableSmileys',
'disable_bbcode' => 'DisableBBCodes',
);
return $options_map;
}
/**
* @return void
* @param int $date
* @desc Set any field to category & all it's parent categories
*/
function PropagateCategoryField($category_id, $field_name, $field_value)
{
$id_field = $this->Application->getUnitOption('c', 'IDField');
$table_name = $this->Application->getUnitOption('c', 'TableName');
$sql = 'SELECT ParentPath
FROM ' . $table_name . '
WHERE ' . $id_field . ' = ' . $category_id;
$parent_path = $this->Conn->GetOne($sql);
$parent_categories = explode('|', substr($parent_path, 1, -1));
if ( !$parent_categories ) {
return;
}
$fields_hash = Array ($field_name => $field_value);
$this->Conn->doUpdate($fields_hash, $table_name, $id_field . ' IN (' . implode(',', $parent_categories) . ')');
}
/**
* Sets today posts count & today date for topic
*
* @param kCatDBItem $object
* @param int $post_date
* @param int $increment_by
* @return bool
*/
function updateTodayPostsCount(&$object, $post_date, $increment_by = 1)
{
$date_now = adodb_date('Y-m-d');
if (adodb_date('Y-m-d', $post_date) != $date_now) {
return true;
}
// last post update date was today or not
$today_posts = ($date_now == $object->GetDBField('TodayDate')) ? $object->GetDBField('TodayPosts') : 0;
$object->SetDBField('TodayDate', $date_now);
$object->SetDBField('TodayPosts', $today_posts + $increment_by);
return $object->Update();
}
function updatePostCount($topic_id, $increment = 1)
{
$id_field = $this->Application->getUnitOption('bb', 'IDField');
$table_name = $this->Application->getUnitOption('bb', 'TableName');
// helps in case, when 2 (or more) users tries to post in same topic at same time
$sql = 'UPDATE '.$table_name.'
SET Posts = Posts '.($increment > 0 ? '+' : '-').' '.abs($increment).'
WHERE '.$id_field.' = '.$topic_id;
$this->Conn->Query($sql);
// returns new value
$sql = 'SELECT Posts
FROM '.$table_name.'
WHERE '.$id_field.' = '.$topic_id;
return $this->Conn->GetOne($sql);
}
/**
* Replaces all special formatting in post before displaing it to user
*
* @param string $post_body
* @param int $post_options bit array of post options
* @param Array $sub_blocks block names for rendering smileys & bbcodes
* @return string
*/
function parsePostBody($post_body, $post_options, $sub_blocks)
{
// 1. escape all html sequences
- $post_body = htmlspecialchars($post_body, ENT_NOQUOTES); // don't touch quotes in bbcode attribute values
+ $post_body = htmlspecialchars($post_body, ENT_NOQUOTES, CHARSET); // don't touch quotes in bbcode attribute values
// 2. replace censored words
$post_body = $this->CensorText($post_body);
// 3. replace bb codes
if (!$this->GetPostOption('disable_bbcode', $post_options)) {
$post_body = $this->replaceBBCodes($post_body, $sub_blocks['bbcode']);
}
// 4. replace smileys
if (!$this->GetPostOption('disable_smileys', $post_options)) {
$post_body = $this->replaceSmileys($post_body, $sub_blocks['smileys']);
}
// 5. add enters (because we don't use HTML in post body)
$post_body = nl2br($post_body);
// 6. replace quoted text
return $this->replacePostQuote($post_body, $sub_blocks['quote']);
}
function replacePostQuote($text, $render_as)
{
if (preg_match('/\[quote id=([\d]+)\](.*)\[\/quote\]/s', $text, $regs)) {
$post = $this->Application->recallObject('bb-post.-item', null, Array ('skip_autoload' => true));
/* @var $post kDBItem */
$post->Load($regs[1]);
$block_params = Array ('name' => $render_as, 'PrefixSpecial' => 'bb-post.-item', 'Prefix' => 'bb-post', 'Special' => '-item', 'strip_nl' => 2);
$parsed_quote = $this->Application->ParseBlock($block_params);
return str_replace($regs[0], $parsed_quote, $text);
}
return $text;
}
/**
* Replaces bad words with good words (censorship process)
*
* @param string $text
* @return string
*/
function CensorText($text)
{
static $censor_words = null;
if (!isset($censor_words)) {
$sql = 'SELECT Replacement, BadWord
FROM '.TABLE_PREFIX.'Censorship';
$censor_words = $this->Conn->GetCol($sql, 'BadWord');
}
foreach ($censor_words as $replace_from => $replace_to) {
$text = str_replace($replace_from, $replace_to, $text);
}
return $text;
}
function replaceSmileys($text, $smiley_element)
{
static $smileys = null;
if (!isset($smileys)) {
$sql = 'SELECT em.EmotionImage, em.KeyStroke
FROM '.TABLE_PREFIX.'Emoticon em
WHERE em.Enabled = 1
ORDER BY CHAR_LENGTH(em.KeyStroke) DESC';
$smileys = $this->Conn->GetCol($sql, 'KeyStroke');
}
$block_params = Array ('name' => $smiley_element, 'smiley_url' => '#SMILEY_URL#');
$smiley_mask = trim($this->Application->ParseBlock($block_params));
$base_url = rtrim($this->Application->BaseURL(),'/');
foreach ($smileys as $key_stoke => $image_url) {
if (strpos($text, $key_stoke) === false) {
continue;
}
$smiley_html = str_replace('#SMILEY_URL#', $base_url.SMILEYS_PATH.$image_url, $smiley_mask);
$text = str_replace($key_stoke, $smiley_html, $text);
}
return $text;
}
/**
* Sort params by name and then by length
*
* @param string $a
* @param string $b
* @return int
* @access private
*/
function CmpParams($a, $b)
{
list ($a, ) = explode(':', $a);
list ($b, ) = explode(':', $b);
$a_len = strlen($a);
$b_len = strlen($b);
if ($a_len == $b_len) return 0;
return $a_len > $b_len ? -1 : 1;
}
function replaceBBCodes($text, $bbcode_element)
{
// convert phpbb bbcodes to in-bulletin bbcodes
$text = $this->preformatBBCodes($text);
$tags_defs = explode(';', $this->Application->ConfigValue('BBTags')); // 'b:;i:;u:;ul:type|align;font:color|face|size;url:href;img:src|border';
usort($tags_defs, Array (&$this, 'CmpParams'));
foreach($tags_defs as $tag) {
list ($tag_name, $tag_params) = explode(':', $tag);
$tag_params = $tag_params ? array_flip(explode('|', $tag_params)) : 0;
$text = preg_replace('/\['.$tag_name.'(.*)\](.*)\[\/'.$tag_name.' *\]/Uise','$this->checkBBCodeAttribs("'.$tag_name.'",\'$1\',\'$2\',$tag_params);', $text);
}
// additional processing for [url], [*], [img] bbcode
$text = preg_replace('/<url>(.*)<\/url>/Usi','<url href="$1">$1</url>',$text);
$text = preg_replace('/<font>(.*)<\/font>/Usi','$1',$text); // skip empty fonts
$text = str_replace( Array('<url','</url>','[*]'),
Array('<a target="_blank"','</a>','<li>'),
$text);
// bbcode [code]xxx[/code] processing
$text = preg_replace('/\[code\](.*)\[\/code\]/Uise', "\$this->replaceCodeBBCode('$1', '".$bbcode_element."')", $text);
return $text;
}
/**
* Convert phpbb url bbcode to valid in-bulletin's format
*
* @param string $text
* @return string
*/
function preformatBBCodes($text)
{
// 1. urls
$text = preg_replace('/\[url=(.*)\](.*)\[\/url\]/Ui','[url href="$1"]$2[/url]',$text);
$text = preg_replace('/\[url\](.*)\[\/url\]/Ui','[url href="$1"]$1[/url]',$text);
// 2. images
$text = preg_replace('/\[img\](.*)\[\/img\]/Ui','[img src="$1" border="0"][/img]',$text);
// 3. color
$text = preg_replace('/\[color=(.*)\](.*)\[\/color\]/Ui','[font color="$1"]$2[/font]',$text);
// 4. size
$text = preg_replace('/\[size=(.*)\](.*)\[\/size\]/Ui','[font size="$1"]$2[/font]',$text);
// 5. lists
$text = preg_replace('/\[list(.*)\](.*)\[\/list\]/Uis','[ul]$2[/ul]',$text);
// 6. email to link
$text = preg_replace('/\[email\](.*)\[\/email\]/Ui','[url href="mailto:$1"]$1[/url]',$text);
//7. b tag
$text = preg_replace('/\[(b|i|u):(.*)\](.*)\[\/(b|i|u):(.*)\]/Ui','[$1]$3[/$4]',$text);
//8. code tag
$text = preg_replace('/\[code:(.*)\](.*)\[\/code:(.*)\]/Uis','[code]$2[/code]',$text);
return $text;
}
/**
* Removes not allowed params from tag and returns result
*
* @param string $BBCode bbcode to check
* @param string $TagParams params string entered by user
* @param string $TextInside text between opening and closing bbcode tag
* @param string $ParamsAllowed list of allowed parameter names ("|" separated)
* @return string
*/
function checkBBCodeAttribs($BBCode, $TagParams, $TextInside, $ParamsAllowed)
{
// unescape escaped quotes in tag
$TagParams = str_replace('\"', '"', $TagParams);
$TextInside = str_replace('\"', '"', $TextInside);
$params_extracted = preg_match_all('/ +([^=]*)=["\']?([^ "\']*)["\']?/is', $TagParams, $extracted_params, PREG_SET_ORDER);
if ($ParamsAllowed && $params_extracted) {
$ret = Array();
foreach ($extracted_params as $param) {
$param_name = strtolower(trim( $param[1] ));
$param_value = trim($param[2]);
// 1. prevent hacking
if ($BBCode == 'url' && $param_name == 'href') {
if (strpos(strtolower($param_value), 'script:') !== false) {
// script tag found in "href" parameter of "url" bbcode (equals to hacking) -> remove bbcode
return $TextInside;
}
}
// 2. leave only allowed params & remove all not allowed
if (isset($ParamsAllowed[$param_name])) {
$ret[] = $param_name.'="'.$param_value.'"';
}
}
$ret = count($ret) ? ' '.implode(' ', $ret) : '';
return '<'.$BBCode.$ret.'>'.$TextInside.'</'.$BBCode.'>';
}
return '<'.$BBCode.'>'.$TextInside.'</'.$BBCode.'>';
}
function highlightCode($code, $strip_tabs = 0)
{
if ($strip_tabs) {
$code = preg_replace('/(\t){'.$strip_tabs.'}(.*)/', '\\2', $code);
}
$code = str_replace( Array('\\', '/') , Array('_no_match_string_', '_n_m_s_'), $code);
$code = highlight_string('<?php'.$code.'?>', true);
$code = str_replace( Array('_no_match_string_', '_n_m_s_'), Array('\\', '/'), $code);
$code = preg_replace('/&lt;\?(.*)php(.*)\?&gt;/Us', '\\2', $code);
$code = preg_replace('/<code><font color="(.*)">([\r\n]+)/si', '<code><font color="\\1">', $code);
$code = preg_replace('/([\r\n]+)<\/font>([\r\n]+)<\/code>/si', '</font></code>', $code);
return $code;
}
/**
* Replaces [code]php code[/code] bbcode in post
*
* @param string $input_string code line to highlight
* @param string $bbcode_element block name used for bbcode descoration
* @return string
*/
function replaceCodeBBCode($input_string, $bbcode_element)
{
static $bbcode_mask = null;
if (!isset($bbcode_mask)) {
$block_params = Array ('name' => $bbcode_element, 'bb_code' => '#BB_CODE#');
$bbcode_mask = trim($this->Application->ParseBlock($block_params));
}
$input_string = trim( str_replace('\"','"', htmlspecialchars_decode($input_string)) );
$input_string = $this->highlightCode($input_string);
$input_string = preg_replace("/\r<br \/>/s", "\r", $input_string); // undo nl2br added in highlighting
$input_string = str_replace('#BB_CODE#', $input_string, $bbcode_mask);
return $input_string;
}
/**
* Returns subscription manager by name
*
* @param string $name
* @param array $arguments
* @return kSubscriptionManager
* @throws InvalidArgumentException
*/
public function getSubscriptionManager($name, $arguments = Array ())
{
if ( $name != 'CategoryTopics' && $name != 'TopicPosts' ) {
throw new InvalidArgumentException('Unknown subscription manager "' . $name . '"');
}
$manager = $this->Application->makeClass('kSubscriptionManager');
/* @var $manager kSubscriptionManager */
$fields_hash = Array ();
$user_id = isset($arguments[1]) ? $arguments[1] : $this->Application->RecallVar('user_id');
switch ( $name ) {
case 'CategoryTopics':
$category_id = isset($arguments[0]) ? $arguments[0] : $this->Application->GetVar('m_cat_id');
$fields_hash = Array (
- 'EmailEventId' => $manager->getEmailEventId('TOPIC.ADD.SUB'),
+ 'EmailTemplateId' => $manager->getEmailTemplateId('TOPIC.ADD.SUB'),
'UserId' => $user_id,
'CategoryId' => $category_id,
);
break;
case 'TopicPosts':
$fields_hash = Array (
- 'EmailEventId' => $manager->getEmailEventId('POST.ADD.SUB'),
+ 'EmailTemplateId' => $manager->getEmailTemplateId('POST.ADD.SUB'),
'UserId' => $user_id,
'ParentItemId' => $arguments[0],
);
break;
}
$manager->add($fields_hash);
return $manager;
}
}
\ No newline at end of file
Index: branches/5.3.x/units/posts/posts_config.php
===================================================================
--- branches/5.3.x/units/posts/posts_config.php (revision 15669)
+++ branches/5.3.x/units/posts/posts_config.php (revision 15670)
@@ -1,111 +1,111 @@
<?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' => 'bb-post',
'ItemClass' => Array ('class' => 'kDBItem', 'file' => '', 'build_event' => 'OnItemBuild'),
'ListClass' => Array ('class' => 'kDBList', 'file' => '', 'build_event' => 'OnListBuild'),
'EventHandlerClass' => Array ('class' => 'PostEventHandler', 'file' => 'post_eh.php', 'build_event' => 'OnBuild'),
'TagProcessorClass' => Array ('class' => 'PostTagProcessor', 'file' => 'post_tp.php', 'build_event' => 'OnBuild'),
'AutoLoad' => true,
'QueryString' => Array (
1 => 'id',
2 => 'Page',
3 => 'PerPage',
4 => 'event',
),
'IDField' => 'PostingId',
'StatusField' => Array ('Pending'),
'TitleField' => 'Subject',
'TableName' => TABLE_PREFIX.'Posting',
'ForeignKey' => 'TopicId',
'ParentTableKey' => 'TopicId',
'ParentPrefix' => 'bb',
'AutoDelete' => true,
'AutoClone' => true,
'ListSQLs' => Array (
'' => ' SELECT %1$s.* %2$s
FROM %1$s
LEFT JOIN '.TABLE_PREFIX.'Users u ON %1$s.CreatedById = u.PortalUserId
LEFT JOIN '.TABLE_PREFIX.'CatalogImages img ON (img.ResourceId = u.ResourceId) AND (img.DefaultImg = 1 OR img.Name = "avatar")',
),
'ListSortings' => Array (
'' => Array (
'ForcedSorting' => Array ('CreatedOn' => 'asc',),
),
),
'CalculatedFields' => Array (
'' => Array (
- 'UserName' => 'IF (ISNULL(u.Username), IF (%1$s.CreatedById = ' . USER_ROOT . ', "root", IF (%1$s.CreatedById = ' . USER_GUEST . ', "Guest", "n/a")), u.Username)',
+ 'UserName' => 'IF (ISNULL(u.Username), IF (%1$s.CreatedById = ' . USER_ROOT . ', "root", IF (%1$s.CreatedById = ' . USER_GUEST . ', "Guest", "n/a")), IF(u.Username = "", u.Email, u.Username))',
'AltName' => 'img.AltName',
'SameImages' => 'img.SameImages',
'LocalThumb' => 'img.LocalThumb',
'ThumbPath' => 'img.ThumbPath',
'ThumbUrl' => 'img.ThumbUrl',
'LocalImage' => 'img.LocalImage',
'LocalPath' => 'img.LocalPath',
'FullUrl' => 'img.Url',
),
),
'Fields' => Array (
'PostingId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
'IPAddress' => Array ('type' => 'string', 'max_len' => 255, 'not_null' => 1, 'default' => ''),
'PosterAlias' => Array ('type' => 'string', 'max_len' => 255, 'not_null' => 1, 'default' => ''),
'Pending' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
'Subject' => Array ('type' => 'string', 'max_len' => 255, 'default' => NULL),
'PostingText' => Array ('type' => 'string', 'allow_html' => 1, 'default' => NULL),
'GraphicsUrl' => Array ('type' => 'string', 'max_len' => 255, 'default' => NULL),
'CreatedOn' => Array ('type' => 'int', 'formatter' => 'kDateFormatter', 'default' => '#NOW#'),
'Modified' => Array ('type' => 'int', 'formatter' => 'kDateFormatter', 'default' => NULL),
'ModifiedById' => 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.'Users WHERE `%s` = \'%s\'', 'left_key_field' => 'PortalUserId', 'left_title_field' => 'Username', '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.'Users WHERE `%s` = \'%s\'', 'left_key_field' => 'PortalUserId', 'left_title_field' => 'Username', 'default' => NULL),
'TopicId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
'ResourceId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
'ReplyTo' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
'Options' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
),
'VirtualFields' => Array (
'DisableBBCodes' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'la_Yes', 0 => 'la_No'), 'use_phrases' => 1, 'default' => 0),
'DisableSmileys' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'la_Yes', 0 => 'la_No'), 'use_phrases' => 1, 'default' => 0),
'ShowSignatures' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (0 => 'la_No', 1 => 'la_Yes'), 'use_phrases' => 1, 'default' => 1),
'UserName' => Array ('type' => 'string', 'default' => ''),
// for avatar image
'AltName' => Array ('type' => 'string', 'default' => ''),
'SameImages' => Array ('type' => 'string', 'default' => ''),
'LocalThumb' => Array ('type' => 'string', 'default' => ''),
'ThumbPath' => Array ('type' => 'string', 'default' => ''),
'ThumbUrl' => Array ('type' => 'string', 'default' => ''),
'LocalImage' => Array ('type' => 'string', 'default' => ''),
'LocalPath' => Array ('type' => 'string', 'default' => ''),
'FullUrl' => Array ('type' => 'string', 'default' => ''),
),
'ConfigMapping' => Array (
'PerPage' => 'Perpage_Postings',
),
);
\ No newline at end of file
Index: branches/5.3.x/units/posts/post_eh.php
===================================================================
--- branches/5.3.x/units/posts/post_eh.php (revision 15669)
+++ branches/5.3.x/units/posts/post_eh.php (revision 15670)
@@ -1,447 +1,447 @@
<?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 PostEventHandler extends kDBEventHandler {
/**
* Checks topic-post modify and delete permissions
*
* @param kEvent $event
* @return bool
* @access public
*/
public function CheckPermission(kEvent $event)
{
$events = Array ('OnUpdate', 'OnDelete');
if ( in_array($event->Name, $events) ) {
return true;
}
return parent::CheckPermission($event);
}
/**
* Sets default values
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnBeforeItemCreate(kEvent $event)
{
parent::OnBeforeItemCreate($event);
$object = $event->getObject();
/* @var $object kDBItem */
$user_id = $this->Application->RecallVar('user_id');
$now = adodb_mktime();
$object->SetDBField('CreatedById', $user_id);
$object->SetDBField('CreatedOn_date', $now);
$object->SetDBField('CreatedOn_time', $now);
$object->SetDBField('ModifiedById', $user_id);
$object->SetDBField('Modified_date', $now);
$object->SetDBField('Modified_time', $now);
- $object->SetDBField('IPAddress', $_SERVER['REMOTE_ADDR']);
+ $object->SetDBField('IPAddress', $this->Application->getClientIp());
$sql = 'SELECT Username
FROM ' . TABLE_PREFIX . 'Users
WHERE PortalUserId = ' . $user_id;
$object->SetDBField('PosterAlias', $this->Conn->GetOne($sql));
// set post options
$post_helper = $this->Application->recallObject('PostHelper');
/* @var $post_helper PostHelper */
$options_map = $post_helper->getOptionsMap();
$post_options = $object->GetDBField('Options');
foreach ($options_map as $option_name => $field_name) {
$option_value = $object->GetDBField($field_name);
$post_helper->SetPostOption($option_name, $option_value, $post_options);
}
$object->SetDBField('Options', $post_options);
$table_info = $object->getLinkedInfo($event->Special, true);
$object->SetDBField($table_info['ForeignKey'], $table_info['ParentId']);
}
/**
* Checks if user has permission on post
*
* @param kEvent $event
* @param string $permissions
*/
function checkPostPermission($event, $permissions)
{
$object = $event->getObject();
/* @var $object kDBItem */
$sql = 'SELECT ci.CategoryId, p.CreatedById
FROM '.$object->TableName.' p
LEFT JOIN '.TABLE_PREFIX.'Topic t ON t.TopicId = p.TopicId
LEFT JOIN '.TABLE_PREFIX.'CategoryItems ci ON ci.ItemResourceId = t.ResourceId AND ci.PrimaryCat = 1
WHERE p.'.$object->IDField.' = '.$object->GetID();
$post_info = $this->Conn->GetRow($sql);
$perm_helper = $this->Application->recallObject('PermissionsHelper');
/* @var $perm_helper kPermissionsHelper */
$is_owner = $post_info['CreatedById'] == $this->Application->RecallVar('user_id');
$params['permissions'] = 'TOPIC.REPLY.MODIFY|TOPIC.REPLY.OWNER.MODIFY';
$params['cat_id'] = $post_info['CategoryId'];
return $perm_helper->TagPermissionCheck($params, $is_owner);
}
/**
* Sets post options before post update
* Ensures, that only user with permission will update topic
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnBeforeItemUpdate(kEvent $event)
{
parent::OnBeforeItemUpdate($event);
$object = $event->getObject();
/* @var $object kDBItem */
$perm_status = $this->checkPostPermission($event, 'TOPIC.REPLY.MODIFY|TOPIC.REPLY.OWNER.MODIFY');
if ( !$perm_status ) {
$event->status = kEvent::erFAIL;
return;
}
$post_helper = $this->Application->recallObject('PostHelper');
/* @var $post_helper PostHelper */
$options_map = $post_helper->getOptionsMap();
$post_options = $object->GetDBField('Options');
foreach ($options_map as $option_name => $field_name) {
$option_value = $object->GetDBField($field_name);
$post_helper->SetPostOption($option_name, $option_value, $post_options);
}
$object->SetDBField('Options', $post_options);
}
/**
* Notifies admin about post change
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnAfterItemUpdate(kEvent $event)
{
parent::OnAfterItemUpdate($event);
- $this->Application->EmailEventAdmin('POST.MODIFY');
+ $this->Application->emailAdmin('POST.MODIFY');
}
/**
* Checks, that user can delete post
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnBeforeItemDelete(kEvent $event)
{
parent::OnBeforeItemDelete($event);
$object = $event->getObject();
/* @var $object kDBItem */
if ( !$this->checkPostPermission($event, 'TOPIC.REPLY.OWNER.DELETE|TOPIC.REPLY.DELETE') ) {
$event->status = kEvent::erFAIL;
}
}
/**
* Sets post options to virtual fields
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnAfterItemLoad(kEvent $event)
{
parent::OnAfterItemLoad($event);
$object = $event->getObject();
/* @var $object kDBItem */
$post_helper = $this->Application->recallObject('PostHelper');
/* @var $post_helper PostHelper */
$options_map = $post_helper->getOptionsMap();
$post_options = $object->GetDBField('Options');
foreach ($options_map as $option_name => $field_name) {
$option_value = $post_helper->GetPostOption($option_name, $post_options);
$object->SetDBField($field_name, (int)$option_value);
}
}
/**
* Updates cached post counter in topic
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnAfterItemCreate(kEvent $event)
{
parent::OnAfterItemCreate($event);
$object = $event->getObject();
/* @var $object kDBItem */
$parent_prefix = $this->Application->getUnitOption($event->Prefix, 'ParentPrefix');
$main_object = $this->Application->recallObject($parent_prefix);
/* @var $main_object kCatDBItem */
// update user posts counter
$user_posts = $this->Application->RecallPersistentVar('bb_posts');
$this->Application->StorePersistentVar('bb_posts', $user_posts + 1);
$post_helper = $this->Application->recallObject('PostHelper');
/* @var $post_helper PostHelper */
$category_id = $this->Application->GetVar('m_cat_id');
$post_helper->PropagateCategoryField($category_id, 'Modified', $object->GetDBField('CreatedOn'));
if ( !$this->Application->isAdmin && $main_object->GetDBField('Posts') ) {
// don't send any email events when in admin OR new topic just added (0 posts)
$user_notified = false; // don't send POST.ADD event twice to same user (in case if owner adds new post)
if ( $main_object->GetDBField('NotifyOwnerOnChanges') ) {
$user_notified = $main_object->GetDBField('OwnerId');
- $this->Application->EmailEventUser('POST.ADD', $user_notified);
+ $this->Application->emailUser('POST.ADD', $user_notified);
}
$post_owner_id = $object->GetDBField('CreatedById');
if ( ($post_owner_id > 0) && ($user_notified != $post_owner_id) ) {
- $this->Application->EmailEventUser('POST.ADD', $post_owner_id);
+ $this->Application->emailUser('POST.ADD', $post_owner_id);
}
- $this->Application->EmailEventAdmin('POST.ADD');
+ $this->Application->emailAdmin('POST.ADD');
}
$post_helper->updateTodayPostsCount($main_object, $object->GetDBField('CreatedOn'), +1);
$this->updateTopicInfo($event, $main_object);
$topic_id = $object->GetDBField('TopicId');
$posts_count = $post_helper->updatePostCount($topic_id, +1);
$main_object->SetDBField('Posts', $posts_count);
// auto-lock topic after N number of posts (if option enabled)
$auto_lock = $this->Application->ConfigValue('AutoTopicLockPosts');
if ( (int)$auto_lock > 0 ) {
if ( $posts_count >= $auto_lock ) {
// user has unlocked topic after $auto_lock and posts again -> ensure that topic will be locked again
$this->Application->HandleEvent(new kEvent($parent_prefix . ':OnTopicLockToggle'));
}
}
}
/**
* Update last post info in topic
*
* @param kEvent $event
* @param kCatDBItem $main_object
*/
function updateTopicInfo($event, &$main_object)
{
$object = $event->getObject();
/* @var $object kDBItem */
$main_object->SetDBField('Modified_date', $object->GetDBField('Modified'));
$main_object->SetDBField('Modified_time', $object->GetDBField('Modified'));
$main_object->SetDBField('LastPostId', $object->GetID());
$main_object->SetDBField('LastPostDate_date', $object->GetDBField('CreatedOn'));
$main_object->SetDBField('LastPostDate_time', $object->GetDBField('CreatedOn'));
$main_object->Update();
}
/**
* Goes to next_template after post creation
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnCreate(kEvent $event)
{
parent::OnCreate($event);
if ( $event->status == kEvent::erSUCCESS && !$this->Application->isAdmin ) {
$event->SetRedirectParam('opener', 's');
$event->redirect = $this->Application->GetVar('next_template');
}
}
/**
* Goes to next_template after post editing
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnUpdate(kEvent $event)
{
parent::OnUpdate($event);
if ($event->status == kEvent::erSUCCESS && !$this->Application->isAdmin) {
$event->SetRedirectParam('opener', 's');
$event->redirect = $this->Application->GetVar('next_template');
$event->SetRedirectParam('pass', 'm,bb');
}
}
/**
* Moves reference to last post in topic, when it is deleted
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnAfterItemDelete(kEvent $event)
{
parent::OnAfterItemDelete($event);
$object = $event->getObject();
/* @var $object kDBItem */
$topic_id = $object->GetDBField('TopicId');
if ( !$topic_id ) {
// deleting post from non-existing topic
return;
}
$post_helper = $this->Application->recallObject('PostHelper');
/* @var $post_helper PostHelper */
// update posts count in topic
$post_helper->updatePostCount($topic_id, -1);
// update post owner posts counter
$sql = 'UPDATE ' . TABLE_PREFIX . 'UserPersistentSessionData
SET VariableValue = IF (VariableValue > 0, VariableValue - 1, 0)
WHERE (PortalUserId = ' . $object->GetDBField('CreatedById') . ') AND (VariableName = "bb_posts")';
$this->Conn->Query($sql);
$main_object = $this->Application->recallObject('bb.-item', null, Array ('skip_autoload' => true));
/* @var $main_object kCatDBItem */
$main_object->Load($topic_id);
if ( !$main_object->isLoaded() ) {
// this is topic deletion proccess, when all it's posts are deleted too
return;
}
$post_helper->updateTodayPostsCount($main_object, $object->GetDBField('CreatedOn'), -1);
if ( $main_object->GetDBField('LastPostId') == $object->GetID() ) {
$sql = 'SELECT PostingId, CreatedOn
FROM ' . $object->TableName . '
WHERE TopicId = ' . $topic_id . '
ORDER BY PostingId DESC';
$last_post = $this->Conn->GetRow($sql);
$fields_hash = Array (
'LastPostId' => $last_post['PostingId'],
'LastPostDate' => $last_post['CreatedOn'],
);
$this->Conn->doUpdate($fields_hash, $main_object->TableName, $main_object->IDField . ' = ' . $topic_id);
}
}
/**
* Sets default values to posting options based on persistent session
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnAfterConfigRead(kEvent $event)
{
parent::OnAfterConfigRead($event);
$virtual_fields = $this->Application->getUnitOption($event->Prefix, 'VirtualFields');
$virtual_fields['DisableBBCodes']['default'] = (int)!$this->Application->RecallPersistentVar('bbcode');
$virtual_fields['DisableSmileys']['default'] = (int)!$this->Application->RecallPersistentVar('smileys');
$virtual_fields['ShowSignatures']['default'] = (int)$this->Application->RecallPersistentVar('show_sig');
$this->Application->setUnitOption($event->Prefix, 'VirtualFields', $virtual_fields);
}
/**
* Deletes items & preserves clean env
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnDelete(kEvent $event)
{
parent::OnDelete($event);
if ( $event->status == kEvent::erSUCCESS && !$this->Application->isAdmin ) {
$parent_prefix = $this->Application->getUnitOption($event->Prefix, 'ParentPrefix');
$event->SetRedirectParam('pass', 'm,' . $parent_prefix);
}
}
/**
* Prepares new reply form
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnNew(kEvent $event)
{
parent::OnNew($event);
$reply_to = $this->Application->GetVar('reply_to');
if ( $reply_to > 0 ) {
$object = $event->getObject();
/* @var $object kDBItem */
$source_post = $this->Application->recallObject($event->Prefix . '.-item', null, Array ('skip_autoload' => true));
/* @var $source_post kDBItem */
$source_post->Load($reply_to);
$object->SetDBField('Subject', 'Re: ' . $source_post->GetDBField('Subject'));
$object->SetDBField('PostingText', '[quote id=' . $reply_to . ']' . $source_post->GetDBField('PostingText') . '[/quote]');
}
}
}
\ No newline at end of file
Index: branches/5.3.x/units/polls/poll_tp.php
===================================================================
--- branches/5.3.x/units/polls/poll_tp.php (revision 15669)
+++ branches/5.3.x/units/polls/poll_tp.php (revision 15670)
@@ -1,119 +1,126 @@
<?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 PollTagProcessor extends kDBTagProcessor {
/**
* Allows to tell if user from current ip has voted already for current poll
*
* @param Array $params
* @return bool
*/
function HasVoted($params)
{
$object = $this->getObject($params);
/* @var $object kDBItem */
- if (!$object->GetDBField('AllowMultipleVotings')) {
+ if ( !$object->GetDBField('AllowMultipleVotings') ) {
+ $where_clause = Array (
+ 'PollId = ' . $object->GetID(),
+ 'CreatedById = ' . $this->Application->RecallVar('user_id'),
+ 'UserIP = ' . $this->Conn->qstr($this->Application->getClientIp()),
+ );
+
$sql = 'SELECT StatisticsId
- FROM '.TABLE_PREFIX.'PollsStatistics
- WHERE PollId = '.$object->GetID().' AND CreatedById = '.$this->Application->RecallVar('user_id').' AND UserIP = '.$this->Conn->qstr(getenv('REMOTE_ADDR'));
+ FROM ' . TABLE_PREFIX . 'PollsStatistics
+ WHERE (' . implode(') AND (', $where_clause) . ')';
+
return $this->Conn->GetOne($sql) > 0;
}
return false;
}
/**
* Allows to tell if user from current ip has voted already for current poll
*
* @param Array $params
* @return bool
*/
function HasCommented($params)
{
$object = $this->getObject($params);
/* @var $object kDBItem */
$spam_helper = $this->Application->recallObject('SpamHelper');
/* @var $spam_helper SpamHelper */
$spam_helper->InitHelper($object->GetID(), 'PollComment', 0); // PollId used for SpamControl only
return $spam_helper->InSpamControl();
}
/**
* Prints out only filled in answers of current poll
*
* @param Array $params
* @return string
*/
function PrintPoll($params)
{
$object = $this->getObject($params);
$sql = 'SELECT COUNT(AnswerNum), AnswerNum
FROM '.TABLE_PREFIX.'PollsStatistics
WHERE PollId = '.$object->GetID().'
GROUP BY AnswerNum';
$statistics = $this->Conn->GetCol($sql, 'AnswerNum');
$total_votes = array_sum($statistics);
$block_params = $this->prepareTagParams($params);
$block_params['name'] = $params['render_as'];
$i = 1;
$ret = '';
while ($i < 8) {
$answer = $object->GetDBField('Answer'.$i);
if ($answer) {
$answer_votes = isset($statistics[$i]) ? $statistics[$i] : 0;
if ($total_votes > 0) {
$block_params['percent'] = round((100 * $answer_votes) / $total_votes, 0);
}
else {
$block_params['percent'] = 0;
}
$block_params['answer'] = $answer;
$block_params['answer_num'] = $i;
$ret .= $this->Application->ParseBlock($block_params);
}
$i++;
}
return $ret;
}
/**
* Prints link to comments of of current poll
*
* @param Array $params
* @return string
*/
function CommentsLink($params)
{
$object = $this->getObject($params);
$params['pass'] = 'm,poll';
$params['poll_id'] = $object->GetID();
return $this->Application->ProcessParsedTag('m', 'Link', $params);
}
}
\ No newline at end of file
Index: branches/5.3.x/units/polls/polls_config.php
===================================================================
--- branches/5.3.x/units/polls/polls_config.php (revision 15669)
+++ branches/5.3.x/units/polls/polls_config.php (revision 15670)
@@ -1,172 +1,172 @@
<?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',
'ItemClass' => Array ('class' => 'kDBItem', 'file' => '', 'build_event' => 'OnItemBuild'),
'ListClass' => Array ('class' => 'kDBList', 'file' => '', 'build_event' => 'OnListBuild'),
'EventHandlerClass' => Array ('class' => 'PollEventHandler', 'file' => 'poll_eh.php', 'build_event' => 'OnBuild'),
'TagProcessorClass' => Array ('class' => 'PollTagProcessor', 'file' => 'poll_tp.php', 'build_event' => 'OnBuild'),
'AutoLoad' => true,
'QueryString' => Array (
1 => 'id',
2 => 'Page',
3 => 'PerPage',
4 => 'event',
5 => 'mode',
),
'IDField' => 'PollId',
'TitleField' => 'Name',
'StatusField' => Array ('Status'),
'TitlePresets' => Array (
'default' => Array (
'new_status_labels' => Array ('poll' => '!la_title_Adding_Poll!'),
'edit_status_labels' => Array ('poll' => '!la_title_Editing_Poll!'),
'new_titlefield' => Array ('poll' => '!la_title_NewPoll!'),
),
'poll_list' => Array ('prefixes' => Array ('poll_List'), 'format' => "!la_title_Polls!", ),
'poll_edit' => Array ('prefixes' => Array ('poll'), 'format' => "#poll_status# '#poll_titlefield#' - !la_title_General!", ),
'poll_edit_answers' => Array ('prefixes' => Array ('poll', 'poll-answer_List'), 'format' => "#poll_status# '#poll_titlefield#' - !la_title_PollAnswers!"),
'poll_edit_comments' => Array ('prefixes' => Array ('poll', 'poll-comment_List'), 'format' => "#poll_status# '#poll_titlefield#' - !la_title_PollComments!"),
'answer_edit' => Array (
'prefixes' => Array ('poll', 'poll-answer'),
'new_status_labels' => Array ('poll-answer' => '!la_title_Adding_Answer!'),
'edit_status_labels' => Array ('poll-answer' => '!la_title_Editing_Answer!'),
'new_titlefield' => Array ('poll-answer' => '!la_title_New_Answer!'),
'format' => "#poll_status# '#poll_titlefield#' - #poll-answer_status# '#poll-answer_titlefield#'"
),
'comment_edit' => Array (
'prefixes' => Array ('poll', 'poll-comment'),
'new_status_labels' => Array ('poll-comment' => '!la_title_Adding_Comment!'),
'edit_status_labels' => Array ('poll-comment' => '!la_title_Editing_Comment!'),
'new_titlefield' => Array ('poll-comment' => '!la_title_NewComment!'),
'format' => "#poll_status# '#poll_titlefield#' - #poll-comment_status#",
),
),
'PermSection' => Array ('main' => 'in-bulletin:polls'),
'Sections' => Array (
'in-bulletin:polls' => Array (
'parent' => 'in-portal:site',
'icon' => 'polls',
'label' => 'la_title_Polls',
'url' => Array ('t' => 'in-bulletin/polls/poll_list', 'pass' => 'm'),
'permissions' => Array ('view', 'add', 'edit', 'delete'),
'priority' => 3.6,
'type' => stTREE,
),
),
'TableName' => TABLE_PREFIX.'Polls',
'ListSQLs' => Array (
'' => ' SELECT %1$s.* %2$s
FROM %1$s',
),
'ListSortings' => Array (
'' => Array (
'Sorting' => Array ('PollId' => 'asc'),
)
),
'Fields' => Array (
'PollId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0,),
'Name' => Array ('type' => 'string', 'not_null' => '1', 'default' => '', 'required' => 1, 'max_len' => 255),
'Question' => Array (
'type' => 'string',
'formatter' => 'kMultiLanguage', 'using_fck' => 1,
'default' => null, 'required' => 1,
),
'CreatedOn' => Array ('type' => 'int', 'formatter' => 'kDateFormatter', 'required' => 1, 'default' => '#NOW#'),
'StartDate' => Array ('type' => 'int', 'formatter' => 'kDateFormatter', 'required' => 1, 'default' => '#NOW#'),
'EndDate' => Array ('type' => 'int', 'formatter' => 'kDateFormatter', 'default' => null),
'Image' => Array (
'type' => 'string',
'formatter' => 'kPictureFormatter',
'max_size' => MAX_UPLOAD_SIZE, 'upload_dir' => IMAGES_PATH . 'polls/',
- 'file_types' => '*.jpg;*.gif;*.png', 'files_description' => '!la_hint_ImageFiles!',
+ 'file_types' => '*.jpg;*.jpeg;*.gif;*.png;*.bmp', 'files_description' => '!la_hint_ImageFiles!',
'multiple' => false, 'thumb_format' => 'resize:200x200',
'max_len' => 255, 'not_null' => 1, 'default' => ''
),
'Priority' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
'RequireLogin' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter',
'options' => Array (0 => 'la_No', 1 => 'la_Yes',), 'use_phrases' => 1,
'default' => 0, 'not_null' => 1,
),
'AllowComments' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter',
'options' => Array (0 => 'la_No', 1 => 'la_Yes',), 'use_phrases' => 1,
'default' => 1, 'not_null' => 1,
),
'AllowMultipleVotings' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter',
'options' => Array (0 => 'la_No', 1 => 'la_Yes',), 'use_phrases' => 1,
'default' => 1, 'not_null' => 1,
),
'CachedVotesQty' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
'Status' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter',
'options' => Array (0 => 'la_opt_Disabled', 1 => 'la_opt_Active',), 'use_phrases' => 1,
'required' => 1, 'default' => 1, 'not_null' => 1,
),
),
'SubItems' => Array ('poll-answer', 'poll-comment'),
'EditTabPresets' => Array (
'Default' => Array (
Array ('title' => 'la_tab_General', 't' => 'in-bulletin/polls/poll_edit', 'priority' => 1),
Array ('title' => 'la_tab_PollAnswers', 't' => 'in-bulletin/polls/poll_edit_answers', 'priority' => 2),
Array ('title' => 'la_tab_PollUserComments', 't' => 'in-bulletin/polls/poll_edit_comments', 'priority' => 3),
),
),
'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 (
'PollId' => Array ('title' => 'column:la_fld_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter', 'width' => 60, ),
'Name' => Array ('data_block' => 'grid_priority_td', 'filter_block' => 'grid_like_filter', 'width' => 200, ),
'StartDate' => Array ('filter_block' => 'grid_date_range_filter', 'width' => 145, ),
'EndDate' => Array ('data_block' => 'poll_expire_td', 'filter_block' => 'grid_date_range_filter', 'width' => 145, ),
'CachedVotesQty' => Array ('title' => 'la_col_VoteCount', 'filter_block' => 'grid_like_filter', 'width' => 100, ),
'Status' => Array ('filter_block' => 'grid_options_filter', 'width' => 100, ),
// 'DaysActive' => Array ('title' => 'la_col_NumberOfDaysActive', 'filter_block' => 'grid_range_filter',),
),
),
),
);
\ No newline at end of file
Index: branches/5.3.x/units/polls/poll_eh.php
===================================================================
--- branches/5.3.x/units/polls/poll_eh.php (revision 15669)
+++ branches/5.3.x/units/polls/poll_eh.php (revision 15670)
@@ -1,171 +1,171 @@
<?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 PollEventHandler extends kDBEventHandler {
/**
* Allows to override standard permission mapping
*
* @return void
* @access protected
* @see kEventHandler::$permMapping
*/
protected function mapPermissions()
{
parent::mapPermissions();
$permissions = Array (
'OnResetVotes' => Array ('self' => 'edit'),
'OnMakeVote' => Array ('self' => true),
'OnItemBuild' => Array ('self' => true),
);
$this->permMapping = array_merge($this->permMapping, $permissions);
}
/**
* Applies special filter, that allows to select all poll from given date range
*
* @param kEvent $event
* @return void
* @access protected
* @see kDBEventHandler::OnListBuild()
*/
protected function SetCustomQuery(kEvent $event)
{
parent::SetCustomQuery($event);
if ( $this->Application->isAdminUser ) {
return;
}
$object = $event->getObject();
/* @var $object kDBList */
$object->addFilter('poll_range_filter', '(%1$s.StartDate <= ' . adodb_mktime() . ') AND (%1$s.EndDate >= ' . adodb_mktime() . ' OR EndDate IS NULL)');
$object->addFilter('poll_status', '(%1$s.Status = ' . STATUS_ACTIVE . ')');
}
/**
* Reset votes statistics for current poll
*
* @param kEvent $event
*/
function OnResetVotes($event)
{
$object = $event->getObject();
/* @var $object kDBItem */
$sql = 'DELETE FROM '.TABLE_PREFIX.'PollsStatistics
WHERE '.$object->IDField.' = '.$object->GetID();
$this->Conn->Query($sql);
$poll_answers_table = $this->Application->getUnitOption('poll-answer', 'TableName');
$poll_answers_table = $this->Application->GetTempName($poll_answers_table);
$sql = 'UPDATE '.$poll_answers_table.' SET VotesQty = 0
WHERE '.$object->IDField.' = '.$object->GetID();
$this->Conn->Query($sql);
}
/**
* Sets resource id
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnBeforeItemCreate(kEvent $event)
{
parent::OnBeforeItemCreate($event);
$object = $event->getObject();
/* @var $object kDBItem */
$object->SetDBField('ResourceId', $this->Application->NextResourceId());
}
/**
* Make vote to current poll
*
* @param kEvent $event
*/
function OnMakeVote($event)
{
$object = $event->getObject($this->Application->GetVar('poll_id'));
/* @var $object kDBItem */
$poll_answer_id = $this->Application->GetVar('option_id');
if (!$poll_answer_id) {
$event->redirect = false;
return ;
}
- $ip_address = $_SERVER['REMOTE_ADDR'];
+ $ip_address = $this->Application->getClientIp();
if (!$object->GetDBField('AllowMultipleVotings')) {
$sql = 'SELECT StatisticsId
FROM '.TABLE_PREFIX.'PollsStatistics
WHERE PollId = '.$object->GetID().' AND UserIP = '.$this->Conn->qstr($ip_address);
$voted = $this->Conn->GetOne($sql) > 0;
}
if (!$voted) {
$user_id = $this->Application->RecallVar('user_id');
$fields_hash = Array (
'PollId' => $object->GetID(),
'AnswerId' => $poll_answer_id,
'UserIP' => $ip_address,
'CreatedById' => $user_id,
'AnswerDate' => adodb_mktime(),
);
$this->Conn->doInsert($fields_hash, TABLE_PREFIX.'PollsStatistics');
$poll_table = $this->Application->getUnitOption('poll', 'TableName');
$this->Conn->Query('UPDATE '.$poll_table.' SET CachedVotesQty = CachedVotesQty + 1
WHERE PollId = '.$object->GetID());
// update table with answers
$poll_answers_table = $this->Application->getUnitOption('poll-answer', 'TableName');
$this->Conn->Query('UPDATE '.$poll_answers_table.' SET VotesQty = VotesQty + 1
WHERE PollId = '.$object->GetID().' AND AnswerId = '.$poll_answer_id);
}
$event->setEventParam('PollId', $this->Application->GetVar('poll_id'));
$event->redirect = false;
}
/**
* Cleanup by removing items from PollStatistics before Poll is deleted
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnAfterItemDelete(kEvent $event)
{
parent::OnAfterItemDelete($event);
$object = $event->getObject();
/* @var $object kDBItem */
$sql = 'DELETE FROM ' . TABLE_PREFIX . 'PollsStatistics
WHERE PollId = ' . $object->GetID();
$this->Conn->Query($sql);
}
}
\ No newline at end of file
Index: branches/5.3.x/units/poll_comments/poll_comments_config.php
===================================================================
--- branches/5.3.x/units/poll_comments/poll_comments_config.php (revision 15669)
+++ branches/5.3.x/units/poll_comments/poll_comments_config.php (revision 15670)
@@ -1,109 +1,112 @@
<?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.'Users pu ON pu.PortalUserId = %1$s.CreatedById',
),
'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.'Users WHERE `%s` = \'%s\'',
- 'left_key_field' => 'PortalUserId', 'left_title_field' => 'Username',
- 'required' => 1, '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 . 'Users WHERE %s',
+ 'left_key_field' => 'PortalUserId', 'left_title_field' => USER_TITLE_FIELD,
+ '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.Username), IF (%1$s.CreatedById = ' . USER_ROOT . ', \'root\', IF (%1$s.CreatedById = ' . USER_GUEST . ', \'Guest\', \'n/a\')), pu.Username )',
+ 'CommentedByUser' => 'IF( ISNULL(pu.Username), IF (%1$s.CreatedById = ' . USER_ROOT . ', \'root\', IF (%1$s.CreatedById = ' . USER_GUEST . ', \'Guest\', \'n/a\')), IF(pu.Username = "", pu.Email, pu.Username))',
),
),
'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' => 'column:la_fld_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter', 'width' => 60, ),
'CommentBody' => Array ('title' => 'column:la_fld_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 ('filter_block' => 'grid_date_range_filter', 'width' => 145, ),
'Status' => Array ('filter_block' => 'grid_options_filter', 'width' => 100, ),
),
),
),
);
\ No newline at end of file
Index: branches/5.3.x/units/poll_comments/poll_comment_eh.php
===================================================================
--- branches/5.3.x/units/poll_comments/poll_comment_eh.php (revision 15669)
+++ branches/5.3.x/units/poll_comments/poll_comment_eh.php (revision 15670)
@@ -1,161 +1,161 @@
<?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 standard permission mapping
*
* @return void
* @access protected
* @see kEventHandler::$permMapping
*/
protected 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);
}
/**
* Occurs, when config was parsed, allows to change config data dynamically
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnAfterConfigRead(kEvent $event)
{
parent::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
* @return void
* @access protected
* @see kDBEventHandler::OnListBuild()
*/
protected function SetCustomQuery(kEvent $event)
{
parent::SetCustomQuery($event);
if ( $this->Application->isAdminUser ) {
return;
}
$object = $event->getObject();
/* @var $object kDBList */
$object->addFilter('comment_status', '%1$s.Status = ' . STATUS_ACTIVE);
}
/**
* Occurs before creating item
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnBeforeItemCreate(kEvent $event)
{
if ( !$this->Application->isAdmin ) {
$object = $event->getObject();
/* @var $object kDBItem */
$parent_info = $object->getLinkedInfo($event->Special);
$poll_id = $parent_info['ParentId'];
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 = kEvent::erFAIL;
$object->SetError('CommentText', 'too_frequent', 'lu_error_AlreadyCommented');
return ;
}
$object->SetDBField('PollId', $poll_id); // PollId
}
$object->SetDBField('CreatedById', $this->Application->RecallVar('user_id'));
- $object->SetDBField('UserIP', $_SERVER['REMOTE_ADDR']);
+ $object->SetDBField('UserIP', $this->Application->getClientIp());
$object->SetDBField('Status', STATUS_ACTIVE);
}
parent::OnBeforeItemCreate($event);
}
/**
* Updates item review counter
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnCreate(kEvent $event)
{
parent::OnCreate($event);
if ( !$this->Application->isAdmin && $event->status == kEvent::erSUCCESS ) {
$event->setRedirectParam('opener', 's');
$event->setRedirectParam('pass', 'm,poll');
$event->redirect = $this->Application->GetVar('success_template');
}
}
/**
* Protects against spam
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnAfterItemCreate(kEvent $event)
{
parent::OnAfterItemCreate($event);
if ( !$this->Application->isAdminUser ) {
$spam_helper = $this->Application->recallObject('SpamHelper');
/* @var $spam_helper SpamHelper */
$object = $event->getObject();
/* @var $object kDBItem */
$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
Index: branches/5.3.x/admin_templates/topics/relations_edit.tpl
===================================================================
--- branches/5.3.x/admin_templates/topics/relations_edit.tpl (revision 15669)
+++ branches/5.3.x/admin_templates/topics/relations_edit.tpl (revision 15670)
@@ -1,74 +1,76 @@
+<inp2:adm_SetPopupSize width="750" height="400"/>
+
<inp2:m_include t="incs/header"/>
<inp2:m_RenderElement name="combined_header" prefix="bb" section="in-portal:browse" title_preset="relations_edit"/>
<!-- ToolBar -->
<table class="toolbar" height="30" cellspacing="0" cellpadding="0" width="100%" border="0">
<tbody>
<tr>
<td>
<script type="text/javascript">
a_toolbar = new ToolBar();
a_toolbar.AddButton( new ToolBarButton('select', '<inp2:m_phrase label="la_ToolTip_Save" escape="1"/>', function() {
submit_event('bb-rel','<inp2:bb-rel_SaveEvent/>');
}
) );
a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
submit_event('bb-rel','OnCancel');
}
) );
a_toolbar.AddButton( new ToolBarSeparator('sep1') );
a_toolbar.AddButton( new ToolBarButton('prev', '<inp2:m_phrase label="la_ToolTip_Prev" escape="1"/>', function() {
go_to_id('bb-rel', '<inp2:bb-rel_PrevId/>');
}
));
a_toolbar.AddButton( new ToolBarButton('next', '<inp2:m_phrase label="la_ToolTip_Next" escape="1"/>', function() {
go_to_id('bb-rel', '<inp2:bb-rel_NextId/>');
}
));
a_toolbar.Render();
-
+
<inp2:m_if check="bb-rel_IsSingle">
a_toolbar.HideButton('prev');
a_toolbar.HideButton('next');
a_toolbar.HideButton('sep1');
<inp2:m_else/>
<inp2:m_if check="bb-rel_IsLast">
a_toolbar.DisableButton('next');
</inp2:m_if>
<inp2:m_if check="bb-rel_IsFirst">
a_toolbar.DisableButton('prev');
</inp2:m_if>
</inp2:m_if>
</script>
</td>
</tr>
</tbody>
</table>
<inp2:m_include t="categories/ci_blocks"/>
<inp2:bb-rel_SaveWarning name="grid_save_warning"/>
<inp2:bb-rel_ErrorWarning name="form_error_warning"/>
<div id="scroll_container">
<table class="edit-form">
<inp2:m_RenderElement name="subsection" title="la_section_Relation"/>
<inp2:m_RenderElement name="inp_edit_hidden" prefix="bb-rel" field="SourceId"/>
<inp2:m_RenderElement name="inp_edit_hidden" prefix="bb-rel" field="SourceType"/>
<inp2:m_RenderElement name="inp_edit_hidden" prefix="bb-rel" field="TargetId"/>
<inp2:m_RenderElement name="inp_edit_hidden" prefix="bb-rel" field="TargetType"/>
<inp2:m_RenderElement name="inp_id_label" prefix="bb-rel" field="RelationshipId" title="la_fld_Id"/>
<inp2:m_RenderElement name="inp_edit_relation" prefix="bb-rel" field="TargetId" title="la_fld_TargetId"/>
<inp2:m_RenderElement name="inp_edit_radio" prefix="bb-rel" field="Type" title="la_fld_RelationshipType"/>
<inp2:m_RenderElement name="inp_edit_checkbox" prefix="bb-rel" field="Enabled" title="la_fld_Enabled"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="bb-rel" field="Priority" title="la_fld_Priority" size="4"/>
<inp2:m_RenderElement name="inp_edit_filler"/>
</table>
</div>
<inp2:m_include t="incs/footer"/>
\ No newline at end of file
Index: branches/5.3.x/admin_templates/topics/review_edit.tpl
===================================================================
--- branches/5.3.x/admin_templates/topics/review_edit.tpl (revision 15669)
+++ branches/5.3.x/admin_templates/topics/review_edit.tpl (revision 15670)
@@ -1,75 +1,77 @@
+<inp2:adm_SetPopupSize width="750" height="400"/>
+
<inp2:m_include t="incs/header"/>
<inp2:m_RenderElement name="combined_header" prefix="bb" section="in-portal:browse" title_preset="reviews_edit"/>
<!-- ToolBar -->
<table class="toolbar" height="30" cellspacing="0" cellpadding="0" width="100%" border="0">
<tbody>
<tr>
<td>
<script type="text/javascript">
a_toolbar = new ToolBar();
a_toolbar.AddButton( new ToolBarButton('select', '<inp2:m_phrase label="la_ToolTip_Save" escape="1"/>', function() {
submit_event('bb-rev','<inp2:bb-rev_SaveEvent/>');
}
) );
a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
submit_event('bb-rev','OnCancel');
}
) );
a_toolbar.AddButton( new ToolBarSeparator('sep1') );
a_toolbar.AddButton( new ToolBarButton('prev', '<inp2:m_phrase label="la_ToolTip_Prev" escape="1"/>', function() {
go_to_id('bb-rev', '<inp2:bb-rev_PrevId/>');
}
));
a_toolbar.AddButton( new ToolBarButton('next', '<inp2:m_phrase label="la_ToolTip_Next" escape="1"/>', function() {
go_to_id('bb-rev', '<inp2:bb-rev_NextId/>');
}
));
a_toolbar.Render();
<inp2:m_if check="bb-rev_IsSingle" >
a_toolbar.HideButton('prev');
a_toolbar.HideButton('next');
a_toolbar.HideButton('sep1');
<inp2:m_else/>
<inp2:m_if check="bb-rev_IsLast" >
a_toolbar.DisableButton('next');
</inp2:m_if>
<inp2:m_if check="bb-rev_IsFirst" >
a_toolbar.DisableButton('prev');
</inp2:m_if>
</inp2:m_if>
</script>
</td>
</tr>
</tbody>
</table>
<inp2:bb-rev_SaveWarning name="grid_save_warning"/>
<inp2:bb-rev_ErrorWarning name="form_error_warning"/>
<inp2:m_RenderElement name="inp_edit_hidden" prefix="bb-rev" field="ItemId"/>
<div id="scroll_container">
<table class="edit-form">
<inp2:m_RenderElement name="subsection" title="la_Text_Review"/>
<inp2:m_RenderElement name="inp_edit_checkbox_allow_html" prefix="bb-rev" field="TextFormat"/>
<inp2:m_RenderElement name="inp_id_label" prefix="bb-rev" field="ReviewId" title="la_fld_Id"/>
<inp2:m_RenderElement name="inp_edit_user" prefix="bb-rev" field="CreatedById" title="la_fld_CreatedById" class="text"/>
<inp2:m_RenderElement name="inp_edit_textarea" prefix="bb-rev" field="ReviewText" title="la_fld_ReviewText" cols="70" rows="8"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="bb-rev" field="HelpfulCount" title="la_fld_HelpfulCount" style="width: 50px;"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="bb-rev" field="NotHelpfulCount" title="la_fld_NotHelpfulCount" style="width: 50px;"/>
<inp2:m_RenderElement name="subsection" title="la_Text_General"/>
<inp2:m_RenderElement name="inp_edit_radio" prefix="bb-rev" field="Status" title="la_fld_Status"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="bb-rev" field="Priority" title="la_fld_Priority" size="3" class="text"/>
<inp2:m_RenderElement name="inp_edit_date_time" prefix="bb-rev" field="CreatedOn" title="la_fld_CreatedOn" size="20" class="text"/>
<inp2:m_RenderElement name="inp_edit_filler"/>
</table>
</div>
<inp2:m_include t="incs/footer"/>
\ No newline at end of file
Index: branches/5.3.x/admin_templates/topics/topics_edit.tpl
===================================================================
--- branches/5.3.x/admin_templates/topics/topics_edit.tpl (revision 15669)
+++ branches/5.3.x/admin_templates/topics/topics_edit.tpl (revision 15670)
@@ -1,104 +1,104 @@
<inp2:adm_SetPopupSize width="880" height="680"/>
<inp2:m_include t="incs/header"/>
<inp2:m_RenderElement name="combined_header" prefix="bb" section="in-portal:browse" title_preset="topics_edit" tab_preset="Default"/>
<!-- ToolBar -->
<table class="toolbar" height="30" cellspacing="0" cellpadding="0" width="100%" border="0">
<tbody>
<tr>
<td>
<script type="text/javascript">
a_toolbar = new ToolBar();
a_toolbar.AddButton( new ToolBarButton('select', '<inp2:m_phrase label="la_ToolTip_Save" escape="1"/>', function() {
submit_event('bb','<inp2:bb_SaveEvent/>');
}
) );
a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
submit_event('bb','OnCancelEdit');
}
) );
a_toolbar.AddButton( new ToolBarSeparator('sep1') );
a_toolbar.AddButton( new ToolBarButton('prev', '<inp2:m_phrase label="la_ToolTip_Prev" escape="1"/>', function() {
go_to_id('bb', '<inp2:bb_PrevId/>');
}
) );
a_toolbar.AddButton( new ToolBarButton('next', '<inp2:m_phrase label="la_ToolTip_Next" escape="1"/>', function() {
go_to_id('bb', '<inp2:bb_NextId/>');
}
) );
//a_toolbar.AddButton( new ToolBarSeparator('sep2') );
a_toolbar.Render();
<inp2:m_if check="bb_IsSingle" >
a_toolbar.HideButton('prev');
a_toolbar.HideButton('next');
a_toolbar.HideButton('sep1');
//a_toolbar.HideButton('sep2');
<inp2:m_else/>
<inp2:m_if check="bb_IsLast" >
a_toolbar.DisableButton('next');
</inp2:m_if>
<inp2:m_if check="bb_IsFirst" >
a_toolbar.DisableButton('prev');
</inp2:m_if>
</inp2:m_if>
</script>
</td>
</tr>
</tbody>
</table>
<inp2:bb_SaveWarning name="grid_save_warning"/>
<inp2:bb_ErrorWarning name="form_error_warning"/>
<div id="scroll_container">
<table class="edit-form">
<inp2:m_RenderElement name="subsection" title="la_section_Topic"/>
<inp2:m_RenderElement name="inp_id_label" prefix="bb" field="TopicId" title="la_fld_Id"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="bb" field="TopicText" title="la_fld_Subject" size="70"/>
<inp2:m_if check="bb_FieldEquals" name="Posts" value="0">
- <inp2:m_RenderElement name="inp_edit_textarea" prefix="bb" field="PostingText" title="la_fld_MessageBody" control_options="{min_height: 100}" cols="70" rows="8"/>
+ <inp2:m_RenderElement name="inp_edit_textarea" prefix="bb" field="PostingText" title="la_fld_MessageBody" control_options="{min_height: 100}" allow_html="1" cols="70" rows="8"/>
</inp2:m_if>
<inp2:m_RenderElement name="inp_edit_user" prefix="bb" field="OwnerId" title="la_fld_PostedBy" size="40"/>
<inp2:m_RenderElement name="inp_edit_options" prefix="bb" field="CategoryId" title="la_fld_ParentSection" display_original="1"/>
<inp2:m_RenderElement name="subsection" title="la_section_Properties"/>
<inp2:m_RenderElement name="inp_edit_radio" prefix="bb" field="TopicType" title="la_fld_TopicType"/>
<inp2:m_RenderElement name="inp_edit_radio" prefix="bb" field="Status" title="la_fld_Status"/>
<inp2:m_RenderElement name="inp_edit_radio" prefix="bb" field="NewItem" title="la_fld_New"/>
<inp2:m_RenderElement name="inp_edit_radio" prefix="bb" field="HotItem" title="la_fld_Hot"/>
<inp2:m_RenderElement name="inp_edit_radio" prefix="bb" field="PopItem" title="la_fld_Pop"/>
<inp2:m_RenderElement name="inp_edit_checkbox" prefix="bb" field="EditorsPick" title="la_fld_EditorsPick"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="bb" field="Priority" title="la_fld_Priority" size="4"/>
<inp2:m_RenderElement name="inp_edit_date_time" prefix="bb" field="CreatedOn" title="la_fld_CreatedOn"/>
<inp2:m_RenderElement name="inp_edit_date_time" prefix="bb" field="Modified" title="la_fld_Modified"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="bb" field="MetaKeywords" title="la_fld_MetaKeywords" size="70"/>
<inp2:m_RenderElement name="inp_edit_textarea" prefix="bb" field="MetaDescription" title="la_fld_MetaDescription" control_options="{min_height: 100}" cols="70" rows="8"/>
<inp2:m_RenderElement name="subsection" title="la_section_Counters"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="bb" field="CachedRating" title="la_fld_Rating" hint_label="la_prompt_RatingLimits" size="4"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="bb" field="CachedVotesQty" title="la_fld_Votes" hint_label="la_prompt_VoteLimits" size="4"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="bb" field="Views" title="la_fld_Views" hint_label="la_prompt_HitLimits" size="4"/>
<input type="hidden" name="Views_original" id="Views_original" value="<inp2:bb_Field name="Views" db="db" />" />
<!-- custom fields: begin -->
<inp2:m_include t="incs/custom_blocks"/>
<inp2:cf.general_PrintList render_as="cv_row_block" SourcePrefix="bb" value_field="Value" per_page="-1" grid="Default" />
<!-- custom fields: end -->
<inp2:m_RenderElement name="inp_edit_filler"/>
</table>
</div>
<script type="text/javascript">
disable_categories('<inp2:bb_InputName name="CategoryId"/>', <inp2:bb_AllowedCategoriesJSON/>);
</script>
<inp2:m_include t="incs/footer"/>
\ No newline at end of file
Index: branches/5.3.x/admin_templates/topics/images_edit.tpl
===================================================================
--- branches/5.3.x/admin_templates/topics/images_edit.tpl (revision 15669)
+++ branches/5.3.x/admin_templates/topics/images_edit.tpl (revision 15670)
@@ -1,85 +1,87 @@
+<inp2:adm_SetPopupSize width="750" height="670"/>
+
<inp2:m_include t="incs/header"/>
<inp2:m_RenderElement name="combined_header" prefix="bb" section="in-portal:browse" title_preset="images_edit"/>
<inp2:m_include t="incs/image_blocks"/>
<!-- ToolBar -->
<table class="toolbar" height="30" cellspacing="0" cellpadding="0" width="100%" border="0">
<tbody>
<tr>
<td>
<script type="text/javascript">
a_toolbar = new ToolBar();
a_toolbar.AddButton( new ToolBarButton('select', '<inp2:m_phrase label="la_ToolTip_Save" escape="1"/>', function() {
submit_event('bb-img','<inp2:bb-img_SaveEvent/>');
}
) );
a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
submit_event('bb-img','OnCancel');
}
) );
a_toolbar.AddButton( new ToolBarSeparator('sep1') );
a_toolbar.AddButton( new ToolBarButton('prev', '<inp2:m_phrase label="la_ToolTip_Prev" escape="1"/>', function() {
go_to_id('bb-img', '<inp2:bb-img_PrevId/>');
}
));
a_toolbar.AddButton( new ToolBarButton('next', '<inp2:m_phrase label="la_ToolTip_Next" escape="1"/>', function() {
go_to_id('bb-img', '<inp2:bb-img_NextId/>');
}
));
a_toolbar.Render();
-
+
<inp2:m_if check="bb-img_IsSingle">
a_toolbar.HideButton('prev');
a_toolbar.HideButton('next');
a_toolbar.HideButton('sep1');
<inp2:m_else/>
<inp2:m_if check="bb-img_IsLast">
a_toolbar.DisableButton('next');
</inp2:m_if>
<inp2:m_if check="bb-img_IsFirst">
a_toolbar.DisableButton('prev');
</inp2:m_if>
- </inp2:m_if>
+ </inp2:m_if>
</script>
</td>
</tr>
</tbody>
</table>
<inp2:bb-img_SaveWarning name="grid_save_warning"/>
<inp2:bb-img_ErrorWarning name="form_error_warning"/>
<div id="scroll_container">
<table class="edit-form">
<inp2:m_RenderElement name="subsection" title="la_section_Image"/>
<inp2:m_RenderElement name="inp_edit_hidden" prefix="bb-img" field="ResourceId"/>
<inp2:m_RenderElement name="inp_label" prefix="bb-img" field="ImageId" title="la_fld_Id"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="bb-img" field="Name" title="la_fld_Name" size="40"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="bb-img" field="AltName" title="la_fld_AltValue" size="40"/>
<inp2:m_RenderElement name="inp_edit_checkbox" prefix="bb-img" field="Enabled" title="la_fld_Enabled" onchange="check_primary()" />
<inp2:m_RenderElement name="inp_edit_checkbox" prefix="bb-img" field="DefaultImg" title="la_fld_Primary" onchange="check_status()" />
<inp2:m_RenderElement name="inp_edit_box" prefix="bb-img" field="Priority" title="la_fld_Priority" size="5"/>
<inp2:m_RenderElement name="subsection" title="la_section_ThumbnailImage"/>
<inp2:m_RenderElement name="thumbnail_section" prefix="bb-img"/>
<inp2:m_RenderElement name="subsection" title="la_section_FullSizeImage"/>
<inp2:m_RenderElement name="inp_edit_checkbox" prefix="bb-img" field="SameImages" title="la_fld_SameAsThumb" onchange="toggle_fullsize()"/>
<inp2:m_RenderElement name="fullsize_section" prefix="bb-img"/>
<inp2:m_RenderElement name="inp_edit_filler"/>
</table>
</div>
<script type="text/javascript">
<inp2:m_RenderElement name="images_edit_js" prefix="bb-img"/>
toggle_fullsize();
</script>
<inp2:m_include t="incs/footer"/>
\ No newline at end of file
Index: branches/5.3.x/admin_templates/polls/poll_edit.tpl
===================================================================
--- branches/5.3.x/admin_templates/polls/poll_edit.tpl (revision 15669)
+++ branches/5.3.x/admin_templates/polls/poll_edit.tpl (revision 15670)
@@ -1,110 +1,110 @@
<inp2:adm_SetPopupSize width="900" height="680"/>
<inp2:m_include t="incs/header"/>
<inp2:m_RenderElement name="combined_header" section="in-bulletin:polls" prefix="poll" title_preset="poll_edit" tab_preset="Default"/>
<!-- ToolBar -->
<table class="toolbar" height="30" cellspacing="0" cellpadding="0" width="100%" border="0">
<tbody>
<tr>
<td>
<script type="text/javascript">
a_toolbar = new ToolBar();
a_toolbar.AddButton( new ToolBarButton('select', '<inp2:m_phrase label="la_ToolTip_Save" escape="1"/>', function() {
submit_event('poll','<inp2:poll_SaveEvent/>');
}
) );
a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
cancel_edit('poll', 'OnCancelEdit','<inp2:poll_SaveEvent/>','<inp2:m_Phrase label="la_FormCancelConfirmation" escape="1"/>');
}
) );
a_toolbar.AddButton( new ToolBarSeparator('sep1') );
a_toolbar.AddButton(
new ToolBarButton(
'prev',
'<inp2:m_phrase label="la_ToolTip_Prev" escape="1"/>',
function() {
go_to_id('poll', '<inp2:poll_PrevId/>');
}
)
);
a_toolbar.AddButton(
new ToolBarButton(
'next',
'<inp2:m_phrase label="la_ToolTip_Next" escape="1"/>',
function() {
go_to_id('poll', '<inp2:poll_NextId/>');
}
)
);
a_toolbar.AddButton( new ToolBarSeparator('sep2') );
a_toolbar.AddButton( new ToolBarButton('reset', '<inp2:m_phrase label="la_ToolTip_ResetVotes" escape="1"/>', function() {
submit_event('poll', 'OnResetVotes');
}
) );
a_toolbar.Render();
<inp2:m_if check="poll_IsSingle">
a_toolbar.HideButton('prev');
a_toolbar.HideButton('next');
a_toolbar.HideButton('sep1');
<inp2:m_else/>
<inp2:m_if check="poll_IsLast">
a_toolbar.DisableButton('next');
</inp2:m_if>
<inp2:m_if check="poll_IsFirst">
a_toolbar.DisableButton('prev');
</inp2:m_if>
</inp2:m_if>
</script>
<script src="js/swfobject.js" type="text/javascript"></script>
<script type="text/javascript" src="<inp2:m_Compress files='js/uploader/upload_manager.js|js/uploader/uploader.js'/>"></script>
</td>
<inp2:m_RenderElement name="ml_selector" prefix="poll"/>
</tr>
</tbody>
</table>
<inp2:poll_SaveWarning name="grid_save_warning"/>
<inp2:poll_ErrorWarning name="form_error_warning"/>
<div id="scroll_container">
<table class="edit-form">
<inp2:m_RenderElement name="subsection" title="la_section_General"/>
<inp2:m_RenderElement name="inp_label" prefix="poll" field="PollId" title="la_fld_Id"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="poll" field="Name" title="la_fld_Name" size="50"/>
- <inp2:m_RenderElement name="inp_edit_textarea_ml" prefix="poll" field="Question" title="la_fld_Question" control_options="{min_height: 100}" cols="70" rows="5"/>
+ <inp2:m_RenderElement name="inp_edit_textarea_ml" prefix="poll" field="Question" title="la_fld_Question" control_options="{min_height: 100}" allow_html="1" cols="70" rows="5"/>
<inp2:m_RenderElement name="inp_edit_swf_upload" prefix="poll" field="Image" title="la_fld_Image"/>
<inp2:m_RenderElement name="subsection" title="la_section_Properties"/>
<inp2:m_RenderElement name="inp_edit_date_time" prefix="poll" field="CreatedOn" title="la_fld_CreatedOn"/>
<inp2:m_RenderElement name="inp_edit_date_time" prefix="poll" field="StartDate" title="la_fld_StartDate"/>
<inp2:m_RenderElement name="inp_edit_date_time" prefix="poll" field="EndDate" title="la_fld_EndDate"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="poll" field="Priority" title="la_fld_Priority" size="5"/>
<inp2:m_RenderElement name="inp_edit_checkbox" prefix="poll" field="RequireLogin" title="la_fld_RequireLogin"/>
<inp2:m_RenderElement name="inp_edit_checkbox" prefix="poll" field="AllowComments" title="la_fld_AllowComments"/>
<inp2:m_RenderElement name="inp_edit_checkbox" prefix="poll" field="AllowMultipleVotings" title="la_fld_AllowMultipleVotings"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="poll" field="CachedVotesQty" title="la_fld_Votes" size="5"/>
<inp2:m_RenderElement name="inp_edit_options" prefix="poll" field="Status" title="la_fld_Status"/>
<inp2:m_RenderElement name="inp_edit_filler"/>
</table>
</div>
<inp2:m_include t="incs/footer"/>
\ No newline at end of file
Index: branches/5.3.x/admin_templates/img/toolbar/toolbar-sprite.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: branches/5.3.x/install/upgrades.php
===================================================================
--- branches/5.3.x/install/upgrades.php (revision 15669)
+++ branches/5.3.x/install/upgrades.php (revision 15670)
@@ -1,97 +1,98 @@
<?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!');
$upgrade_class = 'InBulletinUpgrades';
/**
* Class, that holds all upgrade scripts for "In-Bulletin" module
*
*/
class InBulletinUpgrades extends kUpgradeHelper {
public function __construct()
{
parent::__construct();
$this->dependencies = Array (
'4.3.9' => Array ('Core' => '4.3.9'),
'5.0.0' => Array ('Core' => '5.0.0'),
'5.0.1' => Array ('Core' => '5.0.1'),
'5.0.2-B1' => Array ('Core' => '5.0.2-B1'),
'5.0.2-B2' => Array ('Core' => '5.0.2-B2'),
'5.0.2-RC1' => Array ('Core' => '5.0.2-RC1'),
'5.0.2' => Array ('Core' => '5.0.2'),
'5.0.3-B1' => Array ('Core' => '5.0.3-B1'),
'5.0.3-B2' => Array ('Core' => '5.0.3-B2'),
'5.0.3-RC1' => Array ('Core' => '5.0.3-RC1'),
'5.0.3' => Array ('Core' => '5.0.3'),
'5.0.4-B1' => Array ('Core' => '5.0.4-B1'),
'5.0.4-B2' => Array ('Core' => '5.0.4-B2'),
'5.0.4' => Array ('Core' => '5.0.4'),
'5.1.0-B1' => Array ('Core' => '5.1.0-B1'),
'5.1.0-B2' => Array ('Core' => '5.1.0-B2'),
'5.1.0-RC1' => Array ('Core' => '5.1.0-RC1'),
'5.1.0' => Array ('Core' => '5.1.0'),
'5.1.1-B1' => Array ('Core' => '5.1.1-B1'),
'5.1.1-B2' => Array ('Core' => '5.1.1-B2'),
'5.1.1-RC1' => Array ('Core' => '5.1.1-RC1'),
'5.1.1' => Array ('Core' => '5.1.1'),
'5.1.2-B1' => Array ('Core' => '5.1.2-B1'),
'5.1.2-RC1' => Array ('Core' => '5.1.2-RC1'),
'5.1.2' => Array ('Core' => '5.1.2'),
'5.1.3-B1' => Array ('Core' => '5.1.3-B1'),
'5.1.3-B2' => Array ('Core' => '5.1.3-B2'),
'5.1.3-RC1' => Array ('Core' => '5.1.3-RC1'),
'5.1.3-RC2' => Array ('Core' => '5.1.3-RC2'),
'5.1.3' => Array ('Core' => '5.1.3'),
'5.2.0-B1' => Array ('Core' => '5.2.0-B1'),
'5.2.0-B2' => Array ('Core' => '5.2.0-B2'),
'5.2.0-B3' => Array ('Core' => '5.2.0-B3'),
'5.2.0-RC1' => Array ('Core' => '5.2.0-RC1'),
'5.2.0' => Array ('Core' => '5.2.0'),
+ '5.2.1-B1' => Array ('Core' => '5.2.1-B1'),
);
}
/**
* Changes table structure, where multilingual fields of TEXT type are present
*
* @param string $mode when called mode {before, after)
*/
function Upgrade_5_0_0($mode)
{
if ($mode == 'after') {
$root_category = $this->Application->findModule('Name', 'In-Bulletin', 'RootCat');
$sql = 'UPDATE ' . $this->Application->getUnitOption('c', 'TableName') . '
SET UseMenuIconUrl = 1, MenuIconUrl = "in-bulletin/img/menu_topics.gif"
WHERE ' . $this->Application->getUnitOption('c', 'IDField') . ' = ' . $root_category;
$this->Conn->Query($sql);
$this->_updateDetailTemplate('bb', 'inbulletin/post_list', 'in-bulletin/designs/detail');
}
}
/**
* Update to 5.0.1, update details template
*
* @param string $mode when called mode {before, after)
*/
function Upgrade_5_0_1($mode)
{
if ($mode == 'after') {
$this->_updateDetailTemplate('bb', 'in-bulletin/designs/detail', 'in-bulletin/topics/topic_detail');
}
}
}
\ No newline at end of file
Index: branches/5.3.x/install/upgrades.sql
===================================================================
--- branches/5.3.x/install/upgrades.sql (revision 15669)
+++ branches/5.3.x/install/upgrades.sql (revision 15670)
@@ -1,266 +1,268 @@
# ===== v 4.3.9 =====
ALTER TABLE Emoticon
ADD EmotionImage VARCHAR(255) NOT NULL,
ADD INDEX (EmotionImage),
DROP ImageId;
UPDATE Emoticon SET EmotionImage = CONCAT('0_',EmoticonId,'.gif') WHERE EmoticonId < 21;
# ===== v 5.0.0 =====
CREATE TABLE Polls (
PollId int(11) NOT NULL auto_increment,
`Name` varchar(255) NOT NULL default '',
l1_Question text,
l2_Question text,
l3_Question text,
l4_Question text,
l5_Question text,
Image varchar(255) NOT NULL default '',
CreatedOn int(11) unsigned NOT NULL,
StartDate int(11) unsigned NOT NULL,
EndDate int(11) unsigned default NULL,
Priority tinyint(4) NOT NULL default '0',
RequireLogin tinyint(4) NOT NULL default '0',
AllowMultipleVotings tinyint(4) NOT NULL default '1',
AllowComments tinyint(4) NOT NULL default '1',
`Status` tinyint(4) NOT NULL default '1',
CachedVotesQty int(11) NOT NULL,
PRIMARY KEY (PollId),
KEY `Status` (`Status`),
KEY Priority (Priority),
KEY StartDate (StartDate),
KEY EndDate (EndDate)
);
CREATE TABLE PollsAnswers (
AnswerId int(11) NOT NULL auto_increment,
PollId int(11) NOT NULL,
l1_Answer text,
l2_Answer text,
l3_Answer text,
l4_Answer text,
l5_Answer text,
VotesQty int(11) NOT NULL,
Priority int(11) NOT NULL default '0',
Status tinyint(4) NOT NULL default '1',
PRIMARY KEY (AnswerId),
KEY Status (Status),
KEY Priority (Priority),
KEY VoteCount (VotesQty),
KEY PollId (PollId)
);
CREATE TABLE PollsComments (
CommentId int(11) NOT NULL auto_increment,
PollId int(11) NOT NULL,
AnswerId int(11) default NULL,
CreatedById int(11) NOT NULL default '-2',
GuestName varchar(255) NOT NULL,
GuestEmail varchar(255) NOT NULL,
CommentBody text,
CreatedOn int(11) NOT NULL,
UserIP varchar(255) NOT NULL,
Priority int(11) NOT NULL,
`Status` tinyint(4) NOT NULL default '1',
PRIMARY KEY (CommentId),
KEY `Status` (`Status`),
KEY Priority (Priority),
KEY CreatedOn (CreatedOn),
KEY AnswerId (AnswerId),
KEY PollId (PollId),
KEY CreatedById (CreatedById)
);
CREATE TABLE PollsStatistics (
StatisticsId int(11) NOT NULL auto_increment,
PollId int(11) NOT NULL default '0',
AnswerId int(11) NOT NULL default '0',
CreatedById int(11) NOT NULL default '-2',
UserIP varchar(255) NOT NULL,
AnswerDate int(10) unsigned default NULL,
PRIMARY KEY (StatisticsId),
KEY AnswerId (AnswerId,PollId),
KEY CreatedById (CreatedById),
KEY UserIP (UserIP)
);
INSERT INTO ConfigurationAdmin VALUES ('poll_CommentDelay_Value', 'la_Text_Polls', 'la_prompt_DupPollComments', 'text', '', '', 60.1, 1, 1);
INSERT INTO ConfigurationAdmin VALUES ('poll_CommentDelay_Interval', 'la_Text_Polls', 'la_prompt_DupPollComments', 'select', '', '1=la_Text_Second,60=la_Text_Minute,3600=la_Text_Hour,86400=la_Text_Day,604800=la_Text_Week,2419200=la_Text_Month,29030400=la_text_Year', 60.2, 2, 1);
INSERT INTO ConfigurationValues VALUES (DEFAULT, 'poll_CommentDelay_Interval', '60', 'In-Bulletin', 'in-bulletin:configuration_output');
INSERT INTO ConfigurationValues VALUES (DEFAULT, 'poll_CommentDelay_Value', '10', 'In-Bulletin', 'in-bulletin:configuration_output');
UPDATE Category SET Template = '/in-bulletin/designs/section' WHERE Template = 'inbulletin/index';
UPDATE Category SET CachedTemplate = '/in-bulletin/designs/section' WHERE CachedTemplate = 'inbulletin/index';
UPDATE ConfigurationValues SET VariableValue = '/in-bulletin/designs/section' WHERE VariableName = 'bb_CategoryTemplate';
UPDATE ConfigurationValues SET VariableValue = 'in-bulletin/designs/detail' WHERE VariableName = 'bb_ItemTemplate';
INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:topics.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:setting_folder.view', 11, 1, 1, 0);
DELETE FROM Permissions WHERE Permission LIKE 'in-bulletin:inbulletin_general.%';
UPDATE Phrase SET Module = 'In-Bulletin' WHERE ((Phrase LIKE '%Topic%' OR Phrase LIKE '%Post%' OR Phrase LIKE '%Forum%' OR Phrase LIKE '%Censor%' OR Phrase LIKE '%Smiley%' OR Phrase = 'la_title_In-Bulletin') AND (Module = 'Core'));
# ===== v 5.0.1 =====
UPDATE ConfigurationValues SET VariableValue = 'in-bulletin/topics/topic_detail' WHERE VariableName = 'bb_ItemTemplate';
UPDATE ConfigurationAdmin
SET ValueList = 'TopicText=la_opt_TopicText,Posts=la_opt_NumberOfPosts,CreatedOn=la_opt_CreatedOn,LastPostDate=la_opt_LastUpdated,Views=la_opt_TopicViews,CachedRating=la_opt_Rating,LastPoser=la_opt_LastPoster,<SQL>SELECT Prompt AS OptionName, CONCAT("cust_", FieldName) AS OptionValue FROM <PREFIX>CustomField WHERE (Type = 3) AND (IsSystem = 0)</SQL>'
WHERE VariableName IN ('Topic_SortField', 'Topic_SortField2');
UPDATE ConfigurationAdmin
SET ValueList = 'ASC=la_common_Ascending,DESC=la_common_Descending'
WHERE VariableName IN ('Topic_SortOrder', 'Topic_SortOrder2');
UPDATE ConfigurationAdmin SET ValueList = '1=la_opt_Sec,60=la_opt_Min,3600=la_opt_Hour,86400=la_opt_Day,604800=la_opt_Week,2419200=la_opt_Month,29030400=la_opt_Year' WHERE VariableName = 'topic_ReviewDelay_Interval';
UPDATE ConfigurationAdmin SET ValueList = '1=la_opt_Sec,60=la_opt_Min,3600=la_opt_Hour,86400=la_opt_Day,604800=la_opt_Week,2419200=la_opt_Month,29030400=la_opt_Year' WHERE VariableName = 'topic_RatingDelay_Interval';
UPDATE ConfigurationAdmin SET ValueList = '1=la_opt_Sec,60=la_opt_Min,3600=la_opt_Hour,86400=la_opt_Day,604800=la_opt_Week,2419200=la_opt_Month,29030400=la_opt_Year' WHERE VariableName = 'poll_CommentDelay_Interval';
UPDATE CustomField SET FieldLabel = 'la_fld_cust_bb_ItemTemplate', Prompt = 'la_fld_cust_bb_ItemTemplate' WHERE FieldName = 'bb_ItemTemplate';
INSERT INTO Events VALUES(DEFAULT, 'TOPIC.ADD', NULL, 1, 1, NULL, 'In-Bulletin', 'la_event_topic.add', 0);
INSERT INTO Events VALUES(DEFAULT, 'TOPIC.ADD.PENDING', NULL, 1, 1, NULL, 'In-Bulletin', 'la_event_topic.add.pending', 1);
INSERT INTO Events VALUES(DEFAULT, 'TOPIC.ADD.PENDING', NULL, 1, 1, NULL, 'In-Bulletin', 'la_event_topic.add.pending', 0);
INSERT INTO Events VALUES(DEFAULT, 'TOPIC.MODIFY', NULL, 1, 1, NULL, 'In-Bulletin', 'la_event_topic.modify', 1);
INSERT INTO Events VALUES(DEFAULT, 'TOPIC.MODIFY', NULL, 1, 1, NULL, 'In-Bulletin', 'la_event_topic.modify', 0);
INSERT INTO Events VALUES(DEFAULT, 'TOPIC.MODIFY.PENDING', NULL, 1, 1, NULL, 'In-Bulletin', 'la_event_topic.modify.pending', 1);
INSERT INTO Events VALUES(DEFAULT, 'TOPIC.MODIFY.PENDING', NULL, 1, 1, NULL, 'In-Bulletin', 'la_event_topic.modify.pending', 0);
INSERT INTO Events VALUES(DEFAULT, 'TOPIC.APPROVE', NULL, 1, 0, NULL, 'In-Bulletin', 'la_event_topic.approve', 0);
UPDATE ConfigurationAdmin SET ValueList = 'style="width: 50px;"' WHERE VariableName IN ('topic_ReviewDelay_Value', 'topic_RatingDelay_Value', 'poll_CommentDelay_Value');
# ===== v 5.0.2-B1 =====
ALTER TABLE PrivateMessageBody CHANGE Body Body text NULL;
ALTER TABLE Emoticon CHANGE EmotionImage EmotionImage VARCHAR(255) NOT NULL DEFAULT '';
ALTER TABLE Polls
CHANGE CreatedOn CreatedOn INT(11) UNSIGNED NULL DEFAULT NULL ,
CHANGE StartDate StartDate INT(11) UNSIGNED NULL DEFAULT NULL ,
CHANGE CachedVotesQty CachedVotesQty INT(11) NOT NULL DEFAULT '0';
ALTER TABLE PollsAnswers
CHANGE PollId PollId INT(11) NOT NULL DEFAULT '0',
CHANGE VotesQty VotesQty INT(11) NOT NULL DEFAULT '0';
ALTER TABLE PollsComments
CHANGE PollId PollId INT(11) NOT NULL DEFAULT '0',
CHANGE GuestName GuestName VARCHAR(255) NOT NULL DEFAULT '',
CHANGE GuestEmail GuestEmail VARCHAR(255) NOT NULL DEFAULT '',
CHANGE CreatedOn CreatedOn INT(11) NULL DEFAULT NULL ,
CHANGE UserIP UserIP VARCHAR(255) NOT NULL DEFAULT '',
CHANGE Priority Priority INT(11) NOT NULL DEFAULT '0';
ALTER TABLE PollsStatistics CHANGE UserIP UserIP VARCHAR(255) NOT NULL DEFAULT '';
ALTER TABLE Posting
CHANGE CreatedOn CreatedOn INT(11) NULL DEFAULT NULL,
CHANGE Modified Modified INT(11) NULL DEFAULT NULL;
ALTER TABLE PrivateMessages CHANGE CreatedOn CreatedOn INT(11) UNSIGNED NULL DEFAULT NULL;
ALTER TABLE Topic
CHANGE Modified Modified INT(11) NULL DEFAULT NULL,
CHANGE CreatedOn CreatedOn INT(11) NULL DEFAULT NULL;
# ===== v 5.0.2-B2 =====
# ===== v 5.0.2-RC1 =====
# ===== v 5.0.2 =====
# ===== v 5.0.3-B1 =====
# ===== v 5.0.3-B2 =====
# ===== v 5.0.3-RC1 =====
# ===== v 5.0.3 =====
# ===== v 5.0.4-B1 =====
# ===== v 5.0.4-B2 =====
# ===== v 5.0.4 =====
# ===== v 5.1.0-B1 =====
UPDATE Modules SET Path = 'modules/in-bulletin/' WHERE `Name` = 'In-Bulletin';
DELETE FROM ConfigurationValues WHERE VariableName IN (
'Post_Sortfield', 'Post_SortOrder', 'Perpage_PrivateMessages', 'Topic_Root',
'Topic_Background1', 'Topic_Background2', 'Post_Background1', 'Post_Background2',
'Posting_SortOrder', 'Bulletin_TopCount', 'Bulletin_CatNewDays', 'Bulletin_Pick_First'
);
UPDATE ConfigurationValues SET ModuleOwner = 'In-Bulletin' WHERE VariableName = 'BBTags';
UPDATE Phrase SET Module = 'Core' WHERE Phrase = 'la_fld_Replacement';
DELETE FROM Permissions WHERE Permission LIKE 'in-bulletin:configuration_email%';
# ===== v 5.1.0-B2 =====
# ===== v 5.1.0-RC1 =====
# ===== v 5.1.0 =====
# ===== v 5.1.1-B1 =====
ALTER TABLE PollsComments CHANGE CreatedById CreatedById INT(11) NULL DEFAULT NULL;
ALTER TABLE Topic
CHANGE OwnerId OwnerId INT( 11 ) NULL DEFAULT NULL ,
CHANGE ModifiedById ModifiedById INT( 11 ) NULL DEFAULT NULL;
UPDATE Topic SET ModifiedById = NULL WHERE ModifiedById = 0;
# ===== v 5.1.1-B2 =====
# ===== v 5.1.1-RC1 =====
# ===== v 5.1.1 =====
# ===== v 5.1.2-B1 =====
# ===== v 5.1.2-RC1 =====
# ===== v 5.1.2 =====
# ===== v 5.1.3-B1 =====
# ===== v 5.1.3-B2 =====
# ===== v 5.1.3-RC1 =====
UPDATE ConfigurationValues
SET VariableValue = 'in-bulletin/topics/topic_detail'
WHERE VariableName = 'bb_ItemTemplate' AND VariableValue = 'in-bulletin/designs/detail';
# ===== v 5.1.3-RC2 =====
# ===== v 5.1.3 =====
UPDATE Phrase
SET `Module` = 'Core'
WHERE PhraseKey = 'LA_FLD_REQUIRELOGIN';
# ===== v 5.2.0-B1 =====
UPDATE SearchConfig
SET DisplayName = REPLACE(DisplayName, 'lu_', 'lc_')
WHERE DisplayName IN (
'lu_field_notifyowneronchanges', 'lu_field_topicid', 'lu_field_ownerid',
'lu_field_topictext', 'lu_field_postedby', 'lu_field_lastpostid'
);
DELETE FROM LanguageLabels
WHERE PhraseKey IN ('LA_POSTS_NEWDAYS_PROMPT');
DELETE FROM SystemSettings
WHERE VariableName IN ('Topic_Highlight_OpenTag', 'Topic_Highlight_CloseTag', 'Posts_NewDays');
# ===== v 5.2.0-B2 =====
UPDATE Topic main_table
SET main_table.CachedReviewsQty = (SELECT COUNT(*) FROM <%TABLE_PREFIX%>CatalogReviews review_table WHERE review_table.ItemId = main_table.ResourceId);
# ===== v 5.2.0-B3 =====
INSERT INTO EmailEvents (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient, BindToSystemEvent) VALUES(DEFAULT, 'POST.ADD.SUB', NULL, 1, 0, 'In-Bulletin', 'Post Added (for subscribers)', 0, 1, 0, 'bb-post:OnCreate');
INSERT INTO EmailEvents (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient, BindToSystemEvent) VALUES(DEFAULT, 'TOPIC.ADD.SUB', NULL, 1, 0, 'In-Bulletin', 'Topic Added (for subscribers)', 0, 1, 0, 'bb:OnCreate');
# ===== v 5.2.0-RC1 =====
# ===== v 5.2.0 =====
INSERT INTO Permissions VALUES(DEFAULT, 'in-bulletin:configuration_output.add', 11, 1, 1, 0);
+
+# ===== v 5.2.1-B1 =====
Index: branches/5.3.x/install/install_data.sql
===================================================================
--- branches/5.3.x/install/install_data.sql (revision 15669)
+++ branches/5.3.x/install/install_data.sql (revision 15670)
@@ -1,229 +1,229 @@
# Section "in-bulletin:configuration_output":
INSERT INTO SystemSettings VALUES(DEFAULT, 'Topic_SortOrder', 'desc', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_Text_Topics', 'la_topic_sortfield_prompt', 'select', '', 'asc=la_common_Ascending||desc=la_common_Descending', 10.01, 2, 1, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'Topic_SortField', 'LastPostDate', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_Text_Topics', 'la_topic_sortfield_prompt', 'select', '', 'TopicText=la_opt_TopicText||Posts=la_opt_NumberOfPosts||CreatedOn=la_opt_CreatedOn||LastPostDate=la_opt_LastUpdated||Views=la_opt_TopicViews||CachedRating=la_opt_Rating||LastPoser=la_opt_LastPoster||<SQL>SELECT Prompt AS OptionName, CONCAT("cust_", FieldName) AS OptionValue FROM <PREFIX>CustomFields WHERE (Type = 3) AND (IsSystem = 0)</SQL>', 10.01, 1, 1, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'Topic_SortOrder2', 'desc', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_Text_Topics', 'la_topic_sortfield2_prompt', 'select', '', 'asc=la_common_Ascending||desc=la_common_Descending', 10.02, 2, 1, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'Topic_SortField2', 'Posts', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_Text_Topics', 'la_topic_sortfield2_prompt', 'select', '', 'TopicText=la_opt_TopicText||Posts=la_opt_NumberOfPosts||CreatedOn=la_opt_CreatedOn||LastPostDate=la_opt_LastUpdated||Views=la_opt_TopicViews||CachedRating=la_opt_Rating||LastPoser=la_opt_LastPoster||<SQL>SELECT Prompt AS OptionName, CONCAT("cust_", FieldName) AS OptionValue FROM <PREFIX>CustomFields WHERE (Type = 3) AND (IsSystem = 0)</SQL>', 10.02, 1, 1, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'Perpage_Topics', '5', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_Text_Topics', 'la_topic_perpage_prompt', 'text', '', '', 10.03, 0, 1, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'Perpage_Topics_Short', '3', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_Text_Topics', 'la_topic_perpage_short_prompt', 'text', '', '', 10.04, 0, 1, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'Topic_NewDays', '6', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_Text_Topics', 'la_topic_newdays_prompt', 'text', '', '', 10.05, 0, 1, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'Topic_MinPopRating', '3', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_Text_Topics', 'la_fld_Topic_MinPopRating', 'text', '', '', 10.06, 0, 1, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'Topic_MinPopVotes', '8', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_Text_Topics', 'la_fld_Topic_MinPopVotes', 'text', '', '', 10.07, 0, 1, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'Topic_MaxHotNumber', '3', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_Text_Topics', 'la_fld_Topic_MaxHotNumber', 'text', '', '', 10.08, 0, 1, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'Topic_EditorPicksAbove', '1', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_Text_Topics', 'la_topic_editorpicksabove_prompt', 'checkbox', '', '', 10.09, 0, 1, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'topic_ReviewDelay_Interval', '60', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_Text_Topics', 'la_prompt_DupReviews', 'select', '', '1=la_opt_Sec||60=la_opt_Min||3600=la_opt_Hour||86400=la_opt_Day||604800=la_opt_Week||2419200=la_opt_Month||29030400=la_opt_Year', 10.1, 2, 1, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'topic_ReviewDelay_Value', '10', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_Text_Topics', 'la_prompt_DupReviews', 'text', '', 'style="width: 50px;"', 10.1, 1, 1, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'topic_RatingDelay_Interval', '3600', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_Text_Topics', 'la_prompt_DupRating', 'select', '', '1=la_opt_Sec||60=la_opt_Min||3600=la_opt_Hour||86400=la_opt_Day||604800=la_opt_Week||2419200=la_opt_Month||29030400=la_opt_Year', 10.11, 2, 1, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'topic_RatingDelay_Value', '1', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_Text_Topics', 'la_prompt_DupRating', 'text', '', 'style="width: 50px;"', 10.11, 1, 1, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'AutoTopicLockPosts', '0', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_Text_Topics', 'la_prompt_PostsToLock', 'text', NULL, NULL, 10.12, 0, 0, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'Perpage_Postings', '25', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_posts_subheading', 'la_posts_perpage_prompt', 'text', '', '', 20.01, 0, 1, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'Perpage_TopicReviews', '10', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_Text_Reviews', 'la_review_perpage_prompt', 'text', NULL, NULL, 30.01, 0, 1, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'bb_CategoryTemplate', '/in-bulletin/designs/section', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_section_Templates', 'la_fld_CategoryTemplate', 'text', '', '', 40.01, 0, 0, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'bb_ItemTemplate', 'in-bulletin/topics/topic_detail', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_section_Templates', 'la_fld_ItemTemplate', 'text', '', '', 40.02, 0, 0, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'bb_MaxImageCount', '5', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_section_ImageSettings', 'la_config_MaxImageCount', 'text', '', '', 50.01, 0, 0, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'bb_ThumbnailImageWidth', '120', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_section_ImageSettings', 'la_config_ThumbnailImageWidth', 'text', '', '', 50.02, 0, 0, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'bb_ThumbnailImageHeight', '120', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_section_ImageSettings', 'la_config_ThumbnailImageHeight', 'text', '', '', 50.03, 0, 0, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'bb_FullImageWidth', '450', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_section_ImageSettings', 'la_config_FullImageWidth', 'text', '', '', 50.04, 0, 0, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'bb_FullImageHeight', '450', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_section_ImageSettings', 'la_config_FullImageHeight', 'text', '', '', 50.05, 0, 0, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'poll_CommentDelay_Value', '10', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_Text_Polls', 'la_prompt_DupPollComments', 'text', '', 'style="width: 50px;"', 60.1, 1, 1, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'poll_CommentDelay_Interval', '60', 'In-Bulletin', 'in-bulletin:configuration_output', 'la_Text_Polls', 'la_prompt_DupPollComments', 'select', '', '1=la_opt_Sec||60=la_opt_Min||3600=la_opt_Hour||86400=la_opt_Day||604800=la_opt_Week||2419200=la_opt_Month||29030400=la_opt_Year', 60.2, 2, 1, NULL);
# Section "in-bulletin:configuration_search":
INSERT INTO SystemSettings VALUES(DEFAULT, 'SearchRel_Increase_topics', '30', 'In-Bulletin', 'in-bulletin:configuration_search', 'la_config_DefaultIncreaseImportance', 'la_text_increase_importance', 'text', NULL, NULL, 0, 0, 1, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'SearchRel_Keyword_topics', '90', 'In-Bulletin', 'in-bulletin:configuration_search', 'la_config_SearchRel_DefaultKeyword', 'la_text_keyword', 'text', NULL, NULL, 0, 0, 1, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'SearchRel_Pop_topics', '5', 'In-Bulletin', 'in-bulletin:configuration_search', 'la_config_DefaultPop', 'la_text_popularity', 'text', NULL, NULL, 0, 0, 1, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'SearchRel_Rating_topics', '5', 'In-Bulletin', 'in-bulletin:configuration_search', 'la_config_DefaultRating', 'la_prompt_Rating', 'text', NULL, NULL, 0, 0, 1, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'SearchRel_Increase_posts', '30', 'In-Bulletin', 'in-bulletin:configuration_search', '', '', '', NULL, NULL, 0, 0, 0, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'SearchRel_Keyword_posts', '90', 'In-Bulletin', 'in-bulletin:configuration_search', '', '', '', NULL, NULL, 0, 0, 0, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'SearchRel_Pop_posts', '5', 'In-Bulletin', 'in-bulletin:configuration_search', '', '', '', NULL, NULL, 0, 0, 0, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'SearchRel_Rating_posts', '5', 'In-Bulletin', 'in-bulletin:configuration_search', '', '', '', NULL, NULL, 0, 0, 0, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'Search_ShowMultiple_topics', '0', 'In-Bulletin', 'in-bulletin:configuration_search', 'la_config_ShowMultiple', 'la_Text_MultipleShow', 'text', NULL, NULL, 0, 0, 1, NULL);
INSERT INTO SystemSettings VALUES(DEFAULT, 'BBTags', 'b:;i:;u:;ul:type|align;font:color|face|size;url:href;img:src|border', 'In-Bulletin', '', '', '', '', NULL, NULL, 0, 0, 0, NULL);
INSERT INTO Emoticon VALUES (1, 'Happy Smile', ':)', 1, '');
INSERT INTO Emoticon VALUES (2, 'Big Grin', ':grin:', 1, '');
INSERT INTO Emoticon VALUES (3, 'Wink', ';)', 1, '');
INSERT INTO Emoticon VALUES (4, 'Scared', ':scared:', 1, '');
INSERT INTO Emoticon VALUES (5, 'Teasing', ':eek:', 1, '');
INSERT INTO Emoticon VALUES (6, 'Cool', ':cool:', 1, '');
INSERT INTO Emoticon VALUES (7, 'Angry', ':@', 1, '');
INSERT INTO Emoticon VALUES (8, 'Squint', ':squint:', 1, '');
INSERT INTO Emoticon VALUES (9, 'Oops', ':o', 1, '');
INSERT INTO Emoticon VALUES (10, 'Sad', ':(', 1, '');
INSERT INTO Emoticon VALUES (11, 'Cry', ':cry:', 1, '');
INSERT INTO Emoticon VALUES (12, 'Smirk', ';]', 1, '');
INSERT INTO Emoticon VALUES (13, 'Happy sleep', ':sleep:', 1, '');
INSERT INTO Emoticon VALUES (14, 'Very angry', ':x', 1, '');
INSERT INTO Emoticon VALUES (15, 'Geek', ':geek:', 1, '');
INSERT INTO Emoticon VALUES (16, 'Upset', ';(', 1, '');
INSERT INTO Emoticon VALUES (17, 'LOL', ':lol:', 1, '');
INSERT INTO Emoticon VALUES (18, 'Yawn', ':O', 1, '');
INSERT INTO Emoticon VALUES (19, 'Thinking', ':hm:', 1, '');
INSERT INTO Emoticon VALUES (20, 'Secret', ':|', 1, '');
UPDATE Emoticon SET EmotionImage = CONCAT('0_',EmoticonId,'.gif');
-INSERT INTO EmailEvents (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'TOPIC.ADD', NULL, 1, 1, 'In-Bulletin', 'Topic Added', 1, 1, 1);
-INSERT INTO EmailEvents (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'TOPIC.ADD', NULL, 1, 1, 'In-Bulletin', 'Topic Added', 0, 1, 1);
-INSERT INTO EmailEvents (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'TOPIC.ADD.PENDING', NULL, 1, 1, 'In-Bulletin', 'Add Pending Topic', 1, 1, 1);
-INSERT INTO EmailEvents (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'TOPIC.ADD.PENDING', NULL, 1, 1, 'In-Bulletin', 'Add Pending Topic', 0, 1, 1);
-INSERT INTO EmailEvents (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'TOPIC.MODIFY', NULL, 1, 1, 'In-Bulletin', 'Modify Topic', 1, 1, 1);
-INSERT INTO EmailEvents (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'TOPIC.MODIFY', NULL, 1, 1, 'In-Bulletin', 'Modify Topic', 0, 1, 1);
-INSERT INTO EmailEvents (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'TOPIC.MODIFY.PENDING', NULL, 1, 1, 'In-Bulletin', 'Topic Modifications Pending', 1, 1, 1);
-INSERT INTO EmailEvents (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'TOPIC.MODIFY.PENDING', NULL, 1, 1, 'In-Bulletin', 'Topic Modifications Pending', 0, 1, 1);
-INSERT INTO EmailEvents (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'TOPIC.APPROVE', NULL, 1, 0, 'In-Bulletin', 'Approve Topic', 0, 1, 1);
-INSERT INTO EmailEvents (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'POST.ADD', NULL, 1, 1, 'In-Bulletin', 'Post Added', 1, 1, 1);
-INSERT INTO EmailEvents (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'POST.MODIFY', NULL, 1, 1, 'In-Bulletin', 'Post Modified', 1, 1, 1);
-INSERT INTO EmailEvents (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'POST.ADD', NULL, 1, 0, 'In-Bulletin', 'Post Added', 0, 1, 1);
-INSERT INTO EmailEvents (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'PM.ADD', NULL, 1, 0, 'In-Bulletin', 'New Private Message', 0, 1, 1);
-INSERT INTO EmailEvents (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient, BindToSystemEvent) VALUES(DEFAULT, 'POST.ADD.SUB', NULL, 1, 0, 'In-Bulletin', 'Post Added (for subscribers)', 0, 1, 0, 'bb-post:OnCreate');
-INSERT INTO EmailEvents (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient, BindToSystemEvent) VALUES(DEFAULT, 'TOPIC.ADD.SUB', NULL, 1, 0, 'In-Bulletin', 'Topic Added (for subscribers)', 0, 1, 0, 'bb:OnCreate');
+INSERT INTO EmailTemplates (TemplateId, TemplateName, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'TOPIC.ADD', NULL, 1, 1, 'In-Bulletin', 'Topic Added', 1, 1, 1);
+INSERT INTO EmailTemplates (TemplateId, TemplateName, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'TOPIC.ADD', NULL, 1, 1, 'In-Bulletin', 'Topic Added', 0, 1, 1);
+INSERT INTO EmailTemplates (TemplateId, TemplateName, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'TOPIC.ADD.PENDING', NULL, 1, 1, 'In-Bulletin', 'Add Pending Topic', 1, 1, 1);
+INSERT INTO EmailTemplates (TemplateId, TemplateName, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'TOPIC.ADD.PENDING', NULL, 1, 1, 'In-Bulletin', 'Add Pending Topic', 0, 1, 1);
+INSERT INTO EmailTemplates (TemplateId, TemplateName, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'TOPIC.MODIFY', NULL, 1, 1, 'In-Bulletin', 'Modify Topic', 1, 1, 1);
+INSERT INTO EmailTemplates (TemplateId, TemplateName, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'TOPIC.MODIFY', NULL, 1, 1, 'In-Bulletin', 'Modify Topic', 0, 1, 1);
+INSERT INTO EmailTemplates (TemplateId, TemplateName, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'TOPIC.MODIFY.PENDING', NULL, 1, 1, 'In-Bulletin', 'Topic Modifications Pending', 1, 1, 1);
+INSERT INTO EmailTemplates (TemplateId, TemplateName, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'TOPIC.MODIFY.PENDING', NULL, 1, 1, 'In-Bulletin', 'Topic Modifications Pending', 0, 1, 1);
+INSERT INTO EmailTemplates (TemplateId, TemplateName, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'TOPIC.APPROVE', NULL, 1, 0, 'In-Bulletin', 'Approve Topic', 0, 1, 1);
+INSERT INTO EmailTemplates (TemplateId, TemplateName, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'POST.ADD', NULL, 1, 1, 'In-Bulletin', 'Post Added', 1, 1, 1);
+INSERT INTO EmailTemplates (TemplateId, TemplateName, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'POST.MODIFY', NULL, 1, 1, 'In-Bulletin', 'Post Modified', 1, 1, 1);
+INSERT INTO EmailTemplates (TemplateId, TemplateName, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'POST.ADD', NULL, 1, 0, 'In-Bulletin', 'Post Added', 0, 1, 1);
+INSERT INTO EmailTemplates (TemplateId, TemplateName, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'PM.ADD', NULL, 1, 0, 'In-Bulletin', 'New Private Message', 0, 1, 1);
+INSERT INTO EmailTemplates (TemplateId, TemplateName, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient, BindToSystemEvent) VALUES(DEFAULT, 'POST.ADD.SUB', NULL, 1, 0, 'In-Bulletin', 'Post Added (for subscribers)', 0, 1, 0, 'bb-post:OnCreate');
+INSERT INTO EmailTemplates (TemplateId, TemplateName, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient, BindToSystemEvent) VALUES(DEFAULT, 'TOPIC.ADD.SUB', NULL, 1, 0, 'In-Bulletin', 'Topic Added (for subscribers)', 0, 1, 0, 'bb:OnCreate');
INSERT INTO ItemTypes VALUES (3, 'In-Bulletin', 'bb', 'Topic', 'TopicText', 'OwnerId', 'Views', 'CachedRating', 'la_ItemTab_Topics', 1, '', 'clsTopic', 'Topic');
INSERT INTO ItemTypes VALUES (30, 'In-Bulletin', 'posting', 'Posting', 'Subject', 'CreatedById', NULL, NULL, 'la_ItemTab_Posts', 0, '', '', 'Post');
INSERT INTO CategoryPermissionsConfig VALUES (DEFAULT, 'TOPIC.VIEW', 'la_PermName_Topic.View_desc', 'In-Bulletin', 1);
INSERT INTO CategoryPermissionsConfig VALUES (DEFAULT, 'TOPIC.ADD', 'la_PermName_Topic.Add_desc', 'In-Bulletin', 1);
INSERT INTO CategoryPermissionsConfig VALUES (DEFAULT, 'TOPIC.ADD.PENDING', 'la_PermName_Topic.Add.Pending_desc', 'In-Bulletin', 1);
INSERT INTO CategoryPermissionsConfig VALUES (DEFAULT, 'TOPIC.DELETE', 'la_PermName_Topic.Delete_desc', 'In-Bulletin', 1);
INSERT INTO CategoryPermissionsConfig VALUES (DEFAULT, 'TOPIC.MODIFY', 'la_PermName_Topic.Modify_desc', 'In-Bulletin', 1);
INSERT INTO CategoryPermissionsConfig VALUES (DEFAULT, 'TOPIC.REPLY.DELETE', 'la_PermName_Topic.Reply.Delete_desc', 'In-Bulletin', 1);
INSERT INTO CategoryPermissionsConfig VALUES (DEFAULT, 'TOPIC.REPLY.VIEW', 'la_PermName_Topic.Reply.View_desc', 'In-Bulletin', 1);
INSERT INTO CategoryPermissionsConfig VALUES (DEFAULT, 'TOPIC.REPLY.ADD', 'la_PermName_Topic.Reply.Add_desc', 'In-Bulletin', 1);
INSERT INTO CategoryPermissionsConfig VALUES (DEFAULT, 'TOPIC.REPLY.MODIFY', 'la_PermName_Topic.Reply.Modify_desc', 'In-Bulletin', 1);
INSERT INTO CategoryPermissionsConfig VALUES (DEFAULT, 'TOPIC.RATE', 'la_PermName_Topic.Rate_desc', 'In-Bulletin', 1);
INSERT INTO CategoryPermissionsConfig VALUES (DEFAULT, 'TOPIC.REVIEW', 'la_PermName_Topic.Review_desc', 'In-Bulletin', 1);
INSERT INTO CategoryPermissionsConfig VALUES (DEFAULT, 'TOPIC.REPLY.OWNER.MODIFY', 'la_PermName_Topic.Reply.Owner.Modify_desc', 'In-Bulletin', 1);
INSERT INTO CategoryPermissionsConfig VALUES (DEFAULT, 'TOPIC.REPLY.OWNER.DELETE', 'la_PermName_Topic.Reply.Owner.Delete_desc', 'In-Bulletin', 1);
INSERT INTO CategoryPermissionsConfig VALUES (DEFAULT, 'TOPIC.OWNER.DELETE', 'la_PermName_Topic.Owner.Delete_desc', 'In-Bulletin', 1);
INSERT INTO CategoryPermissionsConfig VALUES (DEFAULT, 'TOPIC.MODIFY.PENDING', 'la_PermName_Topic.Modify.Pending_desc', 'In-Bulletin', 1);
INSERT INTO CategoryPermissionsConfig VALUES (DEFAULT, 'TOPIC.OWNER.MODIFY.PENDING', 'la_PermName_Topic.Owner.Modify.Pending_desc', 'In-Bulletin', 1);
INSERT INTO CategoryPermissionsConfig VALUES (DEFAULT, 'TOPIC.OWNER.MODIFY', 'la_PermName_Topic.Owner.Modify_desc', 'In-Bulletin', 1);
INSERT INTO CategoryPermissionsConfig VALUES (DEFAULT, 'TOPIC.LOCK', 'la_PermName_Topic.Lock_desc', 'In-Bulletin', 1);
INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT count(*) FROM <%prefix%>Topic WHERE Status=1', NULL, 'la_prompt_ActiveTopics', 0, 1);
INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT COUNT(*) AS TotalTopics FROM <%prefix%>Topic', NULL, 'la_prompt_TopicsTotal', 0, 2);
INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT COUNT(*) AS ActiveTopics FROM <%prefix%>Topic WHERE Status = 1', NULL, 'la_prompt_TopicsActive', 0, 2);
INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT COUNT(*) AS PendingTopics FROM <%prefix%>Topic WHERE Status = 2', NULL, 'la_prompt_TopicsPending', 0, 2);
INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT COUNT(*) AS DisabledTopics FROM <%prefix%>Topic WHERE Status = 0', NULL, 'la_prompt_TopicsDisabled', 0, 2);
INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT COUNT(*) AS NewTopics FROM <%prefix%>Topic WHERE (NewItem = 1) OR ( (UNIX_TIMESTAMP() - CreatedOn) <= <%m:config name="Topic_NewDays"%>*86400 AND (NewItem = 2) )', NULL, 'la_prompt_NewTopics', 0, 2);
INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT COUNT(*) FROM <%prefix%>Topic WHERE EditorsPick = 1', NULL, 'la_prompt_EditorsPickTopics', 0, 2);
INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT COUNT(*) AS HotTopics FROM <%prefix%>Topic WHERE (HotItem = 1) OR (Posts >= <%m:config name="Topic_MaxHotNumber"%> AND (HotItem = 2) )', NULL, 'la_prompt_HotTopics', 0, 2);
INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT COUNT(*) AS PopularTopics FROM <%prefix%>Topic WHERE (PopItem = 1) OR ( (CachedRating >= <%topic:hit_count type="top"%>) AND <%topic:hit_count type="top"%> AND (PopItem = 2) )', NULL, 'la_prompt_PopularTopics', 0, 2);
INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT <%m:post_format field="AVG(CachedRating)" type="currency" precision="2"%> FROM <%prefix%>Topic WHERE CachedRating > 0', NULL, 'la_prompt_TopicAverageRating', 0, 2);
INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT MAX(Views) AS MaxTopicHits FROM <%prefix%>Topic', NULL, 'la_prompt_MaxTopicHits', 0, 2);
INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT MAX(CachedVotesQty) AS MaxTopicVotes FROM <%prefix%>Topic', NULL, 'la_prompt_MaxTopicVotes', 0, 2);
INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT <%m:post_format field="MAX(CreatedOn)" type="date"%> FROM <%prefix%>Topic', NULL, 'la_prompt_NewestTopicDate', 0, 2);
INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT <%m:post_format field="MAX(CreatedOn)" type="time"%> FROM <%prefix%>Topic', NULL, 'la_prompt_NewestTopicTime', 0, 2);
INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT <%m:post_format field="MAX(Modified)" type="date"%> FROM <%prefix%>Topic', NULL, 'la_prompt_LastUpdatedTopicDate', 0, 2);
INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT <%m:post_format field="MAX(Modified)" type="time"%> FROM <%prefix%>Topic', NULL, 'la_prompt_LastUpdatedTopicTime', 0, 2);
INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT COUNT(*) FROM <%prefix%>CatalogReviews WHERE Module = \'<%modules:get_current%>\'', NULL, 'la_prompt_TopicReviews', 0, 2);
INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT COUNT(*) AS TotalPosts FROM <%prefix%>Posting', NULL, 'la_prompt_PostsTotal', 0, 2);
INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT <%m:post_format field="MAX(CreatedOn)" type="date"%> FROM <%prefix%>Posting', NULL, 'la_prompt_NewestPostDate', 0, 2);
INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT <%m:post_format field="MAX(CreatedOn)" type="time"%> FROM <%prefix%>Posting', NULL, 'la_prompt_NewestPostTime', 0, 2);
INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT <%m:post_format field="MAX(Modified)" type="date"%> FROM <%prefix%>Posting', NULL, 'la_prompt_LastUpdatedPostDate', 0, 2);
INSERT INTO StatItem VALUES (DEFAULT, 'In-Bulletin', 'SELECT <%m:post_format field="MAX(Modified)" type="time"%> FROM <%prefix%>Posting', NULL, 'la_prompt_LastUpdatedPostTime', 0, 2);
INSERT INTO SearchConfig VALUES ('Topic', 'NotifyOwnerOnChanges', 0, 1, 'lu_fielddesc_topic_notifyowneronchanges', 'lc_field_notifyowneronchanges', 'In-Bulletin', 'la_text_topic', 1, DEFAULT, 0, 'boolean', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Topic', 'TopicId', 0, 1, 'lu_fielddesc_topic_topicid', 'lc_field_topicid', 'In-Bulletin', 'la_text_topic', 0, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Topic', 'Priority', 0, 1, 'lu_fielddesc_topic_priority', 'lc_field_priority', 'In-Bulletin', 'la_text_topic', 8, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Topic', 'OwnerId', 0, 1, 'lu_fielddesc_topic_ownerid', 'lc_field_ownerid', 'In-Bulletin', 'la_text_topic', 9, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Topic', 'Modified', 0, 1, 'lu_fielddesc_topic_modified', 'lc_field_modified', 'In-Bulletin', 'la_text_topic', 2, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Topic', 'TopicText', 1, 1, 'lu_fielddesc_topic_topictext', 'lc_field_topictext', 'In-Bulletin', 'la_text_topic', 3, DEFAULT, 1, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Topic', 'Posts', 0, 1, 'lu_fielddesc_topic_posts', 'lu_field_posts', 'In-Bulletin', 'la_text_topic', 4, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Topic', 'Views', 0, 1, 'lu_fielddesc_topic_views', 'lu_field_views', 'In-Bulletin', 'la_text_topic', 5, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Topic', 'EditorsPick', 0, 1, 'lu_fielddesc_topic_editorspick', 'lc_field_EditorsPick', 'In-Bulletin', 'la_text_topic', 6, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Topic', 'Status', 0, 1, 'lu_fielddesc_topic_status', 'lc_field_status', 'In-Bulletin', 'la_text_topic', 7, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Topic', 'ModifiedById', 0, 1, 'lu_fielddesc_topic_modifiedbyid', 'lc_field_modifiedbyid', 'In-Bulletin', 'la_text_topic', 10, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Topic', 'ResourceId', 0, 1, 'lu_fielddesc_topic_resourceid', 'lc_field_resourceid', 'In-Bulletin', 'la_text_topic', 11, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Topic', 'TopicType', 0, 1, 'lu_fielddesc_topic_topictype', 'lu_field_topictype', 'In-Bulletin', 'la_text_topic', 12, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Topic', 'CreatedOn', 0, 1, 'lu_fielddesc_topic_createdon', 'lc_field_createdon', 'In-Bulletin', 'la_text_topic', 13, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Topic', 'CachedReviewsQty', 0, 1, 'lu_fielddesc_topic_cachedreviewsqty', 'lc_field_cachedreviewsqty', 'In-Bulletin', 'la_text_topic', 14, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Topic', 'CachedRating', 0, 1, 'lu_fielddesc_topic_cachedrating', 'lc_field_cachedrating', 'In-Bulletin', 'la_text_topic', 15, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Topic', 'CachedVotesQty', 0, 1, 'lu_fielddesc_topic_cachedvotesqty', 'lc_field_cachedvotesqty', 'In-Bulletin', 'la_text_topic', 16, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Topic', 'NewItem', 0, 1, 'lu_fielddesc_topic_newitem', 'lc_field_newitem', 'In-Bulletin', 'la_text_topic', 17, DEFAULT, 0, 'boolean', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Topic', 'PopItem', 0, 1, 'lu_fielddesc_topic_popitem', 'lc_field_popitem', 'In-Bulletin', 'la_text_topic', 18, DEFAULT, 0, 'boolean', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Topic', 'HotItem', 0, 1, 'lu_fielddesc_topic_hotitem', 'lc_field_hotitem', 'In-Bulletin', 'la_text_topic', 19, DEFAULT, 0, 'boolean', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Topic', 'PostedBy', 0, 1, 'lu_fielddesc_topic_postedby', 'lc_field_postedby', 'In-Bulletin', 'la_text_topic', 20, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Topic', 'OrgId', 0, 1, 'lu_fielddesc_topic_orgid', 'lc_field_orgid', 'In-Bulletin', 'la_text_topic', 21, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Topic', 'LastPostId', 0, 1, 'lu_fielddesc_topic_lastpostid', 'lc_field_lastpostid', 'In-Bulletin', 'la_text_topic', 22, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.VIEW', 14, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.VIEW', 14, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'FAVORITES', 12, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.VIEW', 12, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.VIEW', 12, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.ADD', 12, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.OWNER.MODIFY', 12, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.OWNER.DELETE', 12, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.OWNER.DELETE', 12, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.OWNER.MODIFY.PENDING', 12, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.OWNER.MODIFY', 12, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'FAVORITES', 13, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.VIEW', 13, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.ADD', 13, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.VIEW', 13, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.ADD', 13, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.RATE', 13, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REVIEW', 13, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.OWNER.MODIFY', 13, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.OWNER.DELETE', 13, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.OWNER.MODIFY', 13, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'FAVORITES', 11, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.VIEW', 11, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.ADD', 11, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.DELETE', 11, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.MODIFY', 11, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.DELETE', 11, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.VIEW', 11, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.ADD', 11, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.MODIFY', 11, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.RATE', 11, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REVIEW', 11, 1, 0, {TopicCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.VIEW', 15, 0, 0, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.ADD', 15, 0, 0, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.ADD.PENDING', 15, 0, 0, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.DELETE', 15, 0, 0, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.MODIFY', 15, 0, 0, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.DELETE', 15, 0, 0, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.VIEW', 15, 0, 0, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.ADD', 15, 0, 0, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.MODIFY', 15, 0, 0, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.RATE', 15, 0, 0, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REVIEW', 15, 0, 0, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.OWNER.MODIFY', 15, 0, 0, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.REPLY.OWNER.DELETE', 15, 0, 0, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.OWNER.DELETE', 15, 0, 0, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.MODIFY.PENDING', 15, 0, 0, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.OWNER.MODIFY.PENDING', 15, 0, 0, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.OWNER.MODIFY', 15, 0, 0, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'TOPIC.LOCK', 15, 0, 0, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:topics.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:setting_folder.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_output.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_output.add', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_output.edit', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_search.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_search.edit', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_censorship.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_censorship.add', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_censorship.edit', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_censorship.delete', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_emoticon.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_emoticon.add', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_emoticon.edit', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_custom.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_custom.add', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_custom.edit', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:configuration_custom.delete', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:polls.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:polls.add', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:polls.edit', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-bulletin:polls.delete', 11, 1, 1, 0);
#INSERT INTO ImportScripts VALUES (DEFAULT, 'In-Bulletin', 'phpbb', 'phpbb_import', 'phpBB 2.x', 'phpBB', 'user_regular,init_cat', 1, 'db');
INSERT INTO CustomFields VALUES (DEFAULT, 1, 'bb_ItemTemplate', 'la_fld_cust_bb_ItemTemplate', 0, 'la_title_SystemCF', 'la_fld_cust_bb_ItemTemplate', 'text', NULL, '', 0, 0, 1, 0);
INSERT INTO Modules VALUES ('In-Bulletin', 'modules/in-bulletin/', 'bb', DEFAULT, 1, 3, 'in-bulletin/', {TopicCatId}, NULL, NULL);
Index: branches/5.3.x
===================================================================
--- branches/5.3.x (revision 15669)
+++ branches/5.3.x (revision 15670)
Property changes on: branches/5.3.x
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,2 ##
+.idea
+atlassian-ide-plugin.xml
Modified: svn:mergeinfo
## -0,0 +0,2 ##
Merged /modules/in-bulletin/branches/5.2.x:r15490-15629
Merged /modules/in-bulletin/releases/5.2.1-B1:r15630-15669

Event Timeline