Version 5.0.13
This commit is contained in:
1 parent
b89858b2ff
commit
5efe744c5f
1407 files changed
+69690
-30177
No files matched your search
@@ -201,10 +201,6 @@ class Application extends SystemApplication
|
||||
$clause = array( $rule['archive_field'] . 's' . $rule['archive_value'] . '?', $rule['archive_text'] );
|
||||
break;
|
||||
|
||||
case 'rating':
|
||||
$clause = array( 'ROUND(topic_rating_total/topic_rating_hits)' . $rule['archive_value'] . '?', $rule['archive_text'] );
|
||||
break;
|
||||
|
||||
case 'member':
|
||||
$clause = array( 'starter_id ' . ( $rule['archive_value'] == '+' ? 'IN' : 'NOT IN' ) . '(' . $rule['archive_text'] . ')' );
|
||||
break;
|
||||
@@ -311,7 +307,7 @@ class Application extends SystemApplication
|
||||
{
|
||||
$url = $url->setQueryString( array( 'do' => 'findComment', 'comment' => Request::i()->p ?: ( Request::i()->findpost ?: Request::i()->comment ) ) );
|
||||
}
|
||||
elseif ( isset( Request::i()->page ) )
|
||||
elseif ( isset( Request::i()->page ) and is_numeric( Request::i()->page ) )
|
||||
{
|
||||
$url = $url->setPage( 'page', Request::i()->page );
|
||||
}
|
||||
|
||||
@@ -19,9 +19,7 @@ use IPS\forums\api\GraphQL\Mutations\ReplyTopic;
|
||||
use IPS\forums\api\GraphQL\Mutations\ReportPost;
|
||||
use IPS\forums\api\GraphQL\Mutations\RevokePostReport;
|
||||
use IPS\forums\api\GraphQL\Mutations\SetBestAnswer;
|
||||
use IPS\forums\api\GraphQL\Mutations\VoteAnswer;
|
||||
use IPS\forums\api\GraphQL\Mutations\VoteInPoll;
|
||||
use IPS\forums\api\GraphQL\Mutations\VoteQuestion;
|
||||
use function defined;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
@@ -51,8 +49,6 @@ abstract class Mutation
|
||||
'markTopicRead' => new MarkTopicRead(),
|
||||
'markTopicSolved' => new MarkTopicSolved(),
|
||||
'voteInPoll' => new VoteInPoll(),
|
||||
'voteQuestion' => new VoteQuestion(),
|
||||
'voteAnswer' => new VoteAnswer(),
|
||||
'setBestAnswer' => new SetBestAnswer(),
|
||||
'reportPost' => new ReportPost(),
|
||||
'revokePostReport' => new RevokePostReport(),
|
||||
|
||||
@@ -1,112 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* @brief GraphQL: Vote on an answer
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Community Suite
|
||||
* @since 02 Jan 2019
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
|
||||
namespace IPS\forums\api\GraphQL\Mutations;
|
||||
use IPS\Api\GraphQL\SafeException;
|
||||
use IPS\Api\GraphQL\TypeRegistry;
|
||||
use IPS\Db;
|
||||
use IPS\forums\api\GraphQL\Types\PostType;
|
||||
use IPS\forums\Topic\Post;
|
||||
use IPS\Member;
|
||||
use OutOfRangeException;
|
||||
use UnderflowException;
|
||||
use function defined;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
{
|
||||
header( ( $_SERVER['SERVER_PROTOCOL'] ?? 'HTTP/1.0' ) . ' 403 Forbidden' );
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Vote on an answer mutation for GraphQL API
|
||||
*/
|
||||
class VoteAnswer
|
||||
{
|
||||
/*
|
||||
* @brief Query description
|
||||
*/
|
||||
public static string $description = "Vote on an answer";
|
||||
|
||||
/*
|
||||
* Mutation arguments
|
||||
*/
|
||||
public function args(): array
|
||||
{
|
||||
return [
|
||||
'id' => TypeRegistry::nonNull( TypeRegistry::id() ),
|
||||
'vote' => TypeRegistry::nonNull( \IPS\forums\api\GraphQL\TypeRegistry::vote() ),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the mutation return type
|
||||
*
|
||||
* @return PostType
|
||||
*/
|
||||
public function type() : PostType
|
||||
{
|
||||
return \IPS\forums\api\GraphQL\TypeRegistry::post();
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolves this mutation
|
||||
*
|
||||
* @param mixed $val Value passed into this resolver
|
||||
* @param array $args Arguments
|
||||
* @return Post
|
||||
*/
|
||||
public function resolve( mixed $val, array $args ) : Post
|
||||
{
|
||||
try
|
||||
{
|
||||
$post = Post::loadAndCheckPerms( $args['id'] );
|
||||
$topic = $post->item();
|
||||
}
|
||||
catch ( OutOfRangeException $e )
|
||||
{
|
||||
throw new SafeException( 'NO_POST', 'GQL/0009/1', 403 );
|
||||
}
|
||||
|
||||
if( !$topic->can('read') )
|
||||
{
|
||||
throw new SafeException( 'INVALID_ID', 'GQL/0009/2', 403 );
|
||||
}
|
||||
|
||||
if( !$post->canVote() )
|
||||
{
|
||||
throw new SafeException( 'CANNOT_VOTE', 'GQL/0009/4', 403 );
|
||||
}
|
||||
|
||||
$rating = $args['vote'] == 'UP' ? 1 : -1;
|
||||
|
||||
/* Have we already rated ? */
|
||||
try
|
||||
{
|
||||
Db::i()->delete( 'forums_answer_ratings', array( 'topic=? AND post=? AND `member`=?', $topic->tid, $post->pid, Member::loggedIn()->member_id ) );
|
||||
}
|
||||
catch ( UnderflowException $e ){}
|
||||
|
||||
Db::i()->insert( 'forums_answer_ratings', array(
|
||||
'post' => $post->pid,
|
||||
'topic' => $topic->tid,
|
||||
'member' => Member::loggedIn()->member_id,
|
||||
'rating' => $rating,
|
||||
'date' => time()
|
||||
), TRUE );
|
||||
|
||||
$post->post_field_int = (int) Db::i()->select( 'SUM(rating)', 'forums_answer_ratings', array( 'post=?', $post->pid ), NULL, NULL, NULL, NULL, Db::SELECT_FROM_WRITE_SERVER )->first();
|
||||
$post->save();
|
||||
|
||||
return $post;
|
||||
}
|
||||
}
|
||||
@@ -1,111 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* @brief GraphQL: Vote on a question
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Community Suite
|
||||
* @since 02 Jan 2019
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
|
||||
namespace IPS\forums\api\GraphQL\Mutations;
|
||||
use IPS\Api\GraphQL\SafeException;
|
||||
use IPS\Api\GraphQL\TypeRegistry;
|
||||
use IPS\Db;
|
||||
use IPS\forums\api\GraphQL\Types\TopicType;
|
||||
use IPS\forums\Topic;
|
||||
use IPS\Member;
|
||||
use OutOfRangeException;
|
||||
use function defined;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
{
|
||||
header( ( $_SERVER['SERVER_PROTOCOL'] ?? 'HTTP/1.0' ) . ' 403 Forbidden' );
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Vote on a question mutation for GraphQL API
|
||||
*/
|
||||
class VoteQuestion
|
||||
{
|
||||
/*
|
||||
* @brief Query description
|
||||
*/
|
||||
public static string $description = "Vote on a question";
|
||||
|
||||
/*
|
||||
* Mutation arguments
|
||||
*/
|
||||
public function args(): array
|
||||
{
|
||||
return [
|
||||
'id' => TypeRegistry::nonNull( TypeRegistry::id() ),
|
||||
'vote' => TypeRegistry::nonNull( \IPS\forums\api\GraphQL\TypeRegistry::vote() ),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the mutation return type
|
||||
*
|
||||
* @return TopicType
|
||||
*/
|
||||
public function type() : TopicType
|
||||
{
|
||||
return \IPS\forums\api\GraphQL\TypeRegistry::topic();
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolves this mutation
|
||||
*
|
||||
* @param mixed $val Value passed into this resolver
|
||||
* @param array $args Arguments
|
||||
* @return Topic
|
||||
*/
|
||||
public function resolve( mixed $val, array $args ) : Topic
|
||||
{
|
||||
try
|
||||
{
|
||||
$topic = Topic::loadAndCheckPerms( $args['id'] );
|
||||
}
|
||||
catch ( OutOfRangeException $e )
|
||||
{
|
||||
throw new SafeException( 'NO_TOPIC', 'GQL/0008/1', 400 );
|
||||
}
|
||||
|
||||
if( !$topic->can('read') )
|
||||
{
|
||||
throw new SafeException( 'INVALID_ID', 'GQL/0008/2', 403 );
|
||||
}
|
||||
|
||||
if( !$topic->canVote() )
|
||||
{
|
||||
throw new SafeException( 'CANNOT_VOTE', 'GQL/0008/4', 403 );
|
||||
}
|
||||
|
||||
$rating = $args['vote'] == 'UP' ? 1 : -1;
|
||||
|
||||
// If we have an existing vote, undo that
|
||||
$ratings = $topic->votes();
|
||||
if ( isset( $ratings[ Member::loggedIn()->member_id ] ) )
|
||||
{
|
||||
Db::i()->delete( 'forums_question_ratings', array( 'topic=? AND member=?', $topic->tid, Member::loggedIn()->member_id ) );
|
||||
}
|
||||
|
||||
Db::i()->insert( 'forums_question_ratings', array(
|
||||
'topic' => $topic->tid,
|
||||
'forum' => $topic->forum_id,
|
||||
'member' => Member::loggedIn()->member_id,
|
||||
'rating' => $rating,
|
||||
'date' => time()
|
||||
), TRUE );
|
||||
|
||||
/* Rebuild count */
|
||||
$topic->question_rating = Db::i()->select( 'SUM(rating)', 'forums_question_ratings', array( 'topic=?', $topic->tid ), NULL, NULL, NULL, NULL, Db::SELECT_FROM_WRITE_SERVER )->first();
|
||||
$topic->save();
|
||||
|
||||
return $topic;
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,6 @@ namespace IPS\forums\api\GraphQL;
|
||||
use IPS\forums\api\GraphQL\Types\ForumType;
|
||||
use IPS\forums\api\GraphQL\Types\PostType;
|
||||
use IPS\forums\api\GraphQL\Types\TopicType;
|
||||
use IPS\forums\api\GraphQL\Types\VoteType;
|
||||
use function defined;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
@@ -51,13 +50,6 @@ class TypeRegistry
|
||||
*/
|
||||
protected static ?TopicType $topic = null;
|
||||
|
||||
/**
|
||||
* Returns the vote instance
|
||||
*
|
||||
* @var VoteType|null
|
||||
*/
|
||||
protected static ?VoteType $vote = null;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
@@ -89,12 +81,4 @@ class TypeRegistry
|
||||
{
|
||||
return self::$topic ?: (self::$topic = new TopicType());
|
||||
}
|
||||
|
||||
/**
|
||||
* @return VoteType
|
||||
*/
|
||||
public static function vote() : VoteType
|
||||
{
|
||||
return self::$vote ?: (self::$vote = new VoteType());
|
||||
}
|
||||
}
|
||||
@@ -69,12 +69,6 @@ class PostType extends CommentType
|
||||
return $post->item();
|
||||
}
|
||||
],
|
||||
'answerVotes' => [
|
||||
'type' => TypeRegistry::int(),
|
||||
'resolve' => function ($post) {
|
||||
return $post->post_field_int;
|
||||
}
|
||||
],
|
||||
'isBestAnswer' => [
|
||||
'type' => TypeRegistry::boolean(),
|
||||
'description' => "Whether this post is the best answer in a question",
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* @brief GraphQL: Vote Type
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Community Suite
|
||||
* @since 25 Jan 2019
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
|
||||
namespace IPS\forums\api\GraphQL\Types;
|
||||
use GraphQL\Type\Definition\EnumType;
|
||||
use function defined;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
{
|
||||
header( ( $_SERVER['SERVER_PROTOCOL'] ?? 'HTTP/1.0' ) . ' 403 Forbidden' );
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* VoteType for GraphQL API
|
||||
*/
|
||||
class VoteType extends EnumType
|
||||
{
|
||||
/**
|
||||
* Get object type
|
||||
*
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$config = [
|
||||
'name' => 'forums_VoteType',
|
||||
'values' => ['UP', 'DOWN']
|
||||
];
|
||||
|
||||
parent::__construct( $config );
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,8 @@
|
||||
"settings": {
|
||||
"settings_access": "settings_access",
|
||||
"forum_settings": "forum_settings",
|
||||
"archive_manage": "archive_manage"
|
||||
"archive_manage": "archive_manage",
|
||||
"autolock_settings": "autolock_settings"
|
||||
},
|
||||
"savedActions": {
|
||||
"savedActions_manage": "savedActions_manage",
|
||||
|
||||
@@ -288,16 +288,6 @@
|
||||
"rss export"
|
||||
]
|
||||
},
|
||||
"app=forums&module=forums&controller=settings&searchResult=form_forums_solved_nudge_experts": {
|
||||
"lang_key": "forums_solved_nudge_experts",
|
||||
"restriction": "settings_access",
|
||||
"keywords": [
|
||||
"email",
|
||||
"experts",
|
||||
"notification",
|
||||
"support"
|
||||
]
|
||||
},
|
||||
"app=forums&module=forums&controller=settings&searchResult=form_forums_topic_activity": {
|
||||
"lang_key": "forums_topic_activity",
|
||||
"restriction": "settings_access",
|
||||
@@ -430,5 +420,13 @@
|
||||
"forum",
|
||||
"solution"
|
||||
]
|
||||
},
|
||||
"app=forums&module=forums&controller=settings&tab=autolock": {
|
||||
"lang_key": "autolock",
|
||||
"restriction": "autolock_settings",
|
||||
"keywords": [
|
||||
"autolock",
|
||||
"lock"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,8 @@
|
||||
<task frequency="P0Y0M0DT6H0M0S">solvedNotifications</task>
|
||||
<task frequency="P0Y0M1DT0H0M0S">solvedStatsAggregation</task>
|
||||
<task frequency="P0Y0M1DT0H0M0S">expertUserNudge</task>
|
||||
<task frequency="P0Y0M0DT3H0M0S">autolock</task>
|
||||
<task frequency="P0Y0M0DT4H0M0S">largeTopics</task>
|
||||
<setting key="archive_last_post_cloud"><![CDATA[{"key":"archive_last_post_cloud","default":"5","report":"full"}]]></setting>
|
||||
<setting key="archive_on"><![CDATA[{"key":"archive_on","default":"0","report":"full"}]]></setting>
|
||||
<setting key="archive_remote_sql_database"><![CDATA[{"key":"archive_remote_sql_database","default":"","report":"none"}]]></setting>
|
||||
@@ -17,6 +19,7 @@
|
||||
<setting key="archive_sql_port"><![CDATA[{"key":"archive_sql_port","default":"","report":"none"}]]></setting>
|
||||
<setting key="archive_sql_socket"><![CDATA[{"key":"archive_sql_socket","default":"","report":"none"}]]></setting>
|
||||
<setting key="archive_sql_tbl_prefix"><![CDATA[{"key":"archive_sql_tbl_prefix","default":"","report":"none"}]]></setting>
|
||||
<setting key="autolock_topic_settings"><![CDATA[{"key":"autolock_topic_settings","default":"","report":"none"}]]></setting>
|
||||
<setting key="email_truncate"><![CDATA[{"key":"email_truncate","default":"1","report":"full"}]]></setting>
|
||||
<setting key="forum_post_use_minimal_editor"><![CDATA[{"key":"forum_post_use_minimal_editor","default":"0","report":"none"}]]></setting>
|
||||
<setting key="forums_fluid_pinned"><![CDATA[{"key":"forums_fluid_pinned","default":"1","report":"full"}]]></setting>
|
||||
@@ -24,7 +27,6 @@
|
||||
<setting key="forums_mod_actions_anon"><![CDATA[{"key":"forums_mod_actions_anon","default":"0","report":"full"}]]></setting>
|
||||
<setting key="forums_posts_per_page"><![CDATA[{"key":"forums_posts_per_page","default":"25","report":"full"}]]></setting>
|
||||
<setting key="forums_rss"><![CDATA[{"key":"forums_rss","default":"1","report":"full"}]]></setting>
|
||||
<setting key="forums_solved_nudge_experts"><![CDATA[{"key":"forums_solved_nudge_experts","default":"5","report":"full"}]]></setting>
|
||||
<setting key="forums_solved_topic_reengage"><![CDATA[{"key":"forums_solved_topic_reengage","default":"14","report":"full"}]]></setting>
|
||||
<setting key="forums_topic_activity"><![CDATA[{"key":"forums_topic_activity","default":"[\"desktop\",\"mobile\"]","report":"full"}]]></setting>
|
||||
<setting key="forums_topic_activity_desktop"><![CDATA[{"key":"forums_topic_activity_desktop","default":"sidebar","report":"full"}]]></setting>
|
||||
@@ -71,7 +73,6 @@
|
||||
<acpsearch key="app=forums&module=forums&controller=settings&searchResult=form_forums_helpful_highlight"><![CDATA[{"lang_key":"forums_helpful_highlight","restriction":"settings_access","keywords":["helpful","solution","solved"]}]]></acpsearch>
|
||||
<acpsearch key="app=forums&module=forums&controller=settings&searchResult=form_forums_posts_per_page"><![CDATA[{"lang_key":"forums_posts_per_page","restriction":"settings_access","keywords":["posts per page"]}]]></acpsearch>
|
||||
<acpsearch key="app=forums&module=forums&controller=settings&searchResult=form_forums_rss"><![CDATA[{"lang_key":"forums_rss","restriction":"settings_access","keywords":["rss export"]}]]></acpsearch>
|
||||
<acpsearch key="app=forums&module=forums&controller=settings&searchResult=form_forums_solved_nudge_experts"><![CDATA[{"lang_key":"forums_solved_nudge_experts","restriction":"settings_access","keywords":["email","experts","notification","support"]}]]></acpsearch>
|
||||
<acpsearch key="app=forums&module=forums&controller=settings&searchResult=form_forums_topic_activity"><![CDATA[{"lang_key":"forums_topic_activity","restriction":"settings_access","keywords":["desktop","topic","topic activity","topic overview"]}]]></acpsearch>
|
||||
<acpsearch key="app=forums&module=forums&controller=settings&searchResult=form_forums_topic_activity_features"><![CDATA[{"lang_key":"forums_topic_activity_features","restriction":"settings_access","keywords":["attachments","top post","topic overview"]}]]></acpsearch>
|
||||
<acpsearch key="app=forums&module=forums&controller=settings&searchResult=form_forums_topics_show_meta"><![CDATA[{"lang_key":"forums_topics_show_meta","restriction":"settings_access","keywords":["comments","posts"]}]]></acpsearch>
|
||||
@@ -88,6 +89,7 @@
|
||||
<acpsearch key="app=forums&module=stats&controller=solved&tab=time"><![CDATA[{"lang_key":"forums_solved_stats_time","restriction":"topics_manage","keywords":["solved"]}]]></acpsearch>
|
||||
<acpsearch key="app=forums&module=stats&controller=topics"><![CDATA[{"lang_key":"menu__forums_stats_topics","restriction":"topics_manage","keywords":["new topic stats","topic statistics","topic stats"]}]]></acpsearch>
|
||||
<acpsearch key="app=forums&module=stats&controller=solvers"><![CDATA[{"lang_key":"menu__forums_stats_solvers","restriction":"topics_manage","keywords":["solve","forum","solution"]}]]></acpsearch>
|
||||
<acpsearch key="app=forums&module=forums&controller=settings&tab=autolock"><![CDATA[{"lang_key":"autolock","restriction":"autolock_settings","keywords":["autolock","lock"]}]]></acpsearch>
|
||||
<themeeditorsetting key="layout_forums_forum"><![CDATA[{"key":"layout_forums_forum","type":"select","name":"Forum Index","desc":"Change the default layout of the forum index.","refresh":true,"options":[["table","Table"],["grid","Grid"],["fluid","Fluid"],["modern","Feed"]],"default":"grid","cat":"pageLayouts"}]]></themeeditorsetting>
|
||||
<themeeditorsetting key="layout_forums_topic"><![CDATA[{"key":"layout_forums_topic","type":"select","name":"Topic list","desc":"Change the default layout of the topic list.","refresh":true,"options":[["list","Classic"],["snippet","Snippet"]],"default":"snippet","cat":"pageLayouts"}]]></themeeditorsetting>
|
||||
<themeeditorsetting key="layout_forums_post"><![CDATA[{"key":"layout_forums_post","type":"select","name":"Topic view","desc":"Change the default layout of topics.","refresh":true,"options":[["classic","Normal"],["modern","Compact"]],"default":"classic","cat":"pageLayouts"}]]></themeeditorsetting>
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
"Permissions": "IPS\\forums\\extensions\\core\\Permissions\\Permissions"
|
||||
},
|
||||
"Queue": {
|
||||
"RebuildHelpfulCount": "IPS\\forums\\extensions\\core\\Queue\\RebuildHelpfulCount",
|
||||
"RebuildSolvedIndex": "IPS\\forums\\extensions\\core\\Queue\\RebuildSolvedIndex",
|
||||
"RebuildSolvedStats": "IPS\\forums\\extensions\\core\\Queue\\RebuildSolvedStats"
|
||||
},
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<javascript app="forums">
|
||||
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.flow.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000100"><![CDATA[/**
|
||||
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.flow.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000100"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -81,7 +81,8 @@
|
||||
$( document ).trigger( 'updateTableURL', { [this.urlParam] : _.uniq( _.values( this._ids ) ).join(',') } );
|
||||
}
|
||||
|
||||
this._button = $('body').find('[data-role="fluidForumMobileDesc"]');
|
||||
this._button = $('body').find("[data-ipsDialog-content='#elFluidFormFilters']");
|
||||
this._buttonText = $('body').find('[data-role="fluidForumMobileDesc"]');
|
||||
this._updateButtonText();
|
||||
},
|
||||
|
||||
@@ -259,20 +260,23 @@
|
||||
}
|
||||
return false;
|
||||
});
|
||||
var text = '';
|
||||
var text = '', buttonClass = '';
|
||||
|
||||
// If the counts are the same, we know we've selected all of them
|
||||
if( blobs.length == selectedBlobRows.length || selectedBlobRows.length === 0 ){
|
||||
text = ips.getString('topicsFromAllForums');
|
||||
buttonClass = 'ipsButton--inherit';
|
||||
} else {
|
||||
text = ips.pluralize( ips.getString( 'topicsFromXForums' ), selectedBlobRows.length );
|
||||
buttonClass = 'ipsButton--secondary';
|
||||
}
|
||||
|
||||
this._button.text( text );
|
||||
this._buttonText.text( text );
|
||||
this._button.removeClass("ipsButton--inherit ipsButton--secondary").addClass(buttonClass);
|
||||
}
|
||||
});
|
||||
}(jQuery, _));]]></file>
|
||||
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.forumList.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000100"><![CDATA[/**
|
||||
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.forumList.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000100"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -340,7 +344,7 @@
|
||||
}
|
||||
});
|
||||
}(jQuery, _));]]></file>
|
||||
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.forumPage.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000100"><![CDATA[/**
|
||||
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.forumPage.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000100"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -397,7 +401,7 @@
|
||||
}
|
||||
});
|
||||
}(jQuery, _));]]></file>
|
||||
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.hovercard.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000100">/**
|
||||
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.hovercard.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000100">/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -447,7 +451,7 @@
|
||||
}
|
||||
});
|
||||
}(jQuery, _));</file>
|
||||
<file javascript_app="forums" javascript_location="admin" javascript_path="controllers/settings" javascript_name="ips.settings.archiveRules.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000050"><![CDATA[/**
|
||||
<file javascript_app="forums" javascript_location="admin" javascript_path="controllers/settings" javascript_name="ips.settings.archiveRules.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000050"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -512,7 +516,7 @@
|
||||
});
|
||||
}(jQuery, _));
|
||||
]]></file>
|
||||
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.activity.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000050">/**
|
||||
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.activity.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000050">/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -534,147 +538,7 @@
|
||||
}
|
||||
});
|
||||
}(jQuery, _));</file>
|
||||
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.answers.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000050"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
* ips.topic.answers.js - Profile body controller
|
||||
*
|
||||
* Author: Rikki Tissier
|
||||
*/
|
||||
;( function($, _, undefined){
|
||||
"use strict";
|
||||
|
||||
ips.controller.register('forums.front.topic.answers', {
|
||||
|
||||
ajaxObj: null,
|
||||
|
||||
/**
|
||||
* Initialize controller events
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
initialize: function () {
|
||||
this.on( 'click', 'a.cAnswerRate', this.rate );
|
||||
},
|
||||
|
||||
/**
|
||||
* Rate answers
|
||||
*
|
||||
* @param {event} e Event object
|
||||
* @returns {void}
|
||||
*/
|
||||
rate: function (e) {
|
||||
e.preventDefault();
|
||||
|
||||
var self = this;
|
||||
var clicked = $( e.currentTarget );
|
||||
|
||||
if( this.scope.find('.cAnswerRate_up').is('.i-color_positive') ) {
|
||||
var currentVote = 'positive';
|
||||
}
|
||||
else if( this.scope.find('.cAnswerRate_down').is('.i-color_negative') ) {
|
||||
var currentVote = 'negative';
|
||||
}
|
||||
else {
|
||||
var currentVote = false;
|
||||
}
|
||||
|
||||
var positive = clicked.hasClass('cAnswerRate_up');
|
||||
var voteCount = this.scope.find('[data-role="voteCount"]');
|
||||
var currentVotes = parseInt( voteCount.attr('data-voteCount') );
|
||||
|
||||
var newVoteCount = 0;
|
||||
var setPositive = false;
|
||||
var setNegative = false;
|
||||
|
||||
// Do we have a current vote?
|
||||
if( currentVote !== false ) {
|
||||
// If our current vote is positive and we clicked it again, we're removing our vote
|
||||
if( positive && currentVote == 'positive' ) {
|
||||
newVoteCount = currentVotes - 1;
|
||||
}
|
||||
// If our current vote is negative and we clicked it again, we're removing our vote
|
||||
else if( !positive && currentVote == 'negative' ) {
|
||||
newVoteCount = currentVotes + 1;
|
||||
}
|
||||
// Otherwise if our current vote is positive and we clicked negative...
|
||||
else if( !positive && currentVote == 'positive' ) {
|
||||
newVoteCount = currentVotes - 2;
|
||||
setNegative = true;
|
||||
}
|
||||
// Or our current vote is negative and we clicked positive
|
||||
else if( positive && currentVote == 'negative' ) {
|
||||
newVoteCount = currentVotes + 2;
|
||||
setPositive = true;
|
||||
}
|
||||
}
|
||||
// Otherwise if we clicked the positive icon...
|
||||
else if( positive ) {
|
||||
newVoteCount = currentVotes + 1;
|
||||
setPositive = true;
|
||||
}
|
||||
// Or we clicked the negative icon
|
||||
else {
|
||||
newVoteCount = currentVotes - 1;
|
||||
setNegative = true;
|
||||
}
|
||||
|
||||
this.setStyles( setPositive, setNegative );
|
||||
|
||||
voteCount
|
||||
.toggleClass( 'i-color_positive', setPositive )
|
||||
.toggleClass( 'i-color_negative', setNegative )
|
||||
.text( newVoteCount )
|
||||
.attr( 'data-voteCount', newVoteCount );
|
||||
|
||||
// Send request
|
||||
if( this.ajaxObj && _.isFunction( this.ajaxObj.abort ) ){
|
||||
this.ajaxObj.abort();
|
||||
}
|
||||
|
||||
this.ajaxObj = ips.getAjax()( clicked.attr('href') )
|
||||
.done( function (response) {
|
||||
|
||||
Debug.log( response );
|
||||
|
||||
voteCount.text( response.votes );
|
||||
self.scope.find('.i-color_soft').text( ips.pluralize( ips.getString( 'votes_no_number' ), response.votes ) );
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Reset CSS classes
|
||||
*
|
||||
* @param {bool} Set positive
|
||||
* @param {bool} Set negative
|
||||
*/
|
||||
setStyles: function( setPositive, setNegative ) {
|
||||
this.scope.find('.cAnswerRate_up').toggleClass( 'i-color_positive', setPositive );
|
||||
this.scope.find('.cAnswerRate_down').toggleClass( 'i-color_negative', setNegative );
|
||||
this.scope.toggleClass( 'cRatingColumn_up', setPositive ).toggleClass( 'cRatingColumn_down', setNegative );
|
||||
|
||||
// Reset tooltips
|
||||
this.scope.find('a.cAnswerRate_up').removeAttr( '_title' );
|
||||
this.scope.find('a.cAnswerRate_down').removeAttr( '_title' );
|
||||
|
||||
if( setPositive ) {
|
||||
this.scope.find('a.cAnswerRate_up').attr( 'title', ips.getString('js_remove_your_vote') );
|
||||
}
|
||||
else {
|
||||
this.scope.find('a.cAnswerRate_up').attr( 'title', ips.getString('js_vote_answer_up') );
|
||||
}
|
||||
|
||||
if( setNegative ) {
|
||||
this.scope.find('a.cAnswerRate_down').attr( 'title', ips.getString('js_remove_your_vote') );
|
||||
}
|
||||
else {
|
||||
this.scope.find('a.cAnswerRate_down').attr( 'title', ips.getString('js_vote_answer_down') );
|
||||
}
|
||||
}
|
||||
});
|
||||
}(jQuery, _));]]></file>
|
||||
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.reply.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000050">/**
|
||||
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.reply.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000050">/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -703,7 +567,7 @@
|
||||
}
|
||||
});
|
||||
}(jQuery, _));</file>
|
||||
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.solved.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000050"><![CDATA[/**
|
||||
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.solved.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000050"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -741,7 +605,7 @@
|
||||
}
|
||||
});
|
||||
}(jQuery, _));]]></file>
|
||||
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.view.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000050">/**
|
||||
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.view.js" javascript_type="controller" javascript_version="5001302" javascript_position="1000050">/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -815,4 +679,19 @@
|
||||
}
|
||||
});
|
||||
}(jQuery, _));</file>
|
||||
<order app="global" path="/dev/js//framework/">templates
|
||||
common/ips.loader.js
|
||||
common/ui
|
||||
common/utils
|
||||
common
|
||||
controllers</order>
|
||||
<order app="global" path="/dev/js//library/">underscore
|
||||
jquery
|
||||
mustache
|
||||
Debug.js
|
||||
app.js</order>
|
||||
<order app="global" path="/dev/js//library//jquery">jquery.js
|
||||
jquery-migrate.js</order>
|
||||
<order app="global" path="/dev/js//library//linkify">linkify.min.js
|
||||
linkify-jquery.min.js</order>
|
||||
</javascript>
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<language>
|
||||
<app key="forums" version="5000074">
|
||||
<app key="forums" version="5001302">
|
||||
<word key="__app_forums" js="0">Forums</word>
|
||||
<word key="frontnavigation_forums" js="0">Forums</word>
|
||||
<word key="__indefart_post" js="0">a post in a topic</word>
|
||||
@@ -12,6 +12,8 @@
|
||||
<word key="topic_container" js="0">Forum</word>
|
||||
<word key="search_contextual_item_forums" js="0">This Forum</word>
|
||||
<word key="search_contextual_item_topic" js="0">This Topic</word>
|
||||
<word key="__defart_nodegroup__forums_pl" js="0">forums</word>
|
||||
<word key="__defart_nodegroup__forums" js="0">forum</word>
|
||||
<word key="module__forums_forums" js="0">Forums</word>
|
||||
<word key="module__forums_stats" js="0">Statistics</word>
|
||||
<word key="filestorage__forums_Icons" js="0">Forum Icons</word>
|
||||
@@ -39,6 +41,7 @@
|
||||
<word key="r__forums_massManageContent" js="0">Can mass move/delete topics in forums?</word>
|
||||
<word key="r__forums_delete" js="0">Can delete forums?</word>
|
||||
<word key="r__archive_manage" js="0">Can manage archive settings?</word>
|
||||
<word key="r__autolock_settings" js="0">Can manage autolock settings?</word>
|
||||
<word key="r__settings_access" js="0">Can access settings?</word>
|
||||
<word key="r__forum_settings" js="0">Can manage forums settings?</word>
|
||||
<word key="r__savedActions" js="0">Saved Actions</word>
|
||||
@@ -85,6 +88,7 @@
|
||||
<word key="can_future_publish_topic" js="0">Can set a future publishing date?</word>
|
||||
<word key="can_view_future_topic" js="0">Can view pending publishing items authored by other members?</word>
|
||||
<word key="can_view_reports_topic" js="0">Can view reported topics/questions?</word>
|
||||
<word key="can_assign_topic" js="0">Can assign topics?</word>
|
||||
<word key="forums" js="0">Forums</word>
|
||||
<word key="forums_sg" js="0">Forum</word>
|
||||
<word key="forums_sg_lc" js="0">forum</word>
|
||||
@@ -213,13 +217,11 @@
|
||||
<word key="poll_with_recent_vote" js="0">Last poll vote: %s</word>
|
||||
<word key="archive_topic_post" js="0">Posts</word>
|
||||
<word key="archive_topic_view" js="0">Views</word>
|
||||
<word key="archive_topic_rating" js="0">Rating</word>
|
||||
<word key="archive_topic_starter" js="0">Started By</word>
|
||||
<word key="archive_topic_starter_not" js="0">Started By</word>
|
||||
<word key="archive_topics_not_where" js="0"><![CDATA[But not when <em>any</em> of the following conditions are true...]]></word>
|
||||
<word key="archive_not_topic_post" js="0">Posts</word>
|
||||
<word key="archive_not_topic_view" js="0">Views</word>
|
||||
<word key="archive_not_topic_rating" js="0">Rating</word>
|
||||
<word key="archive_last_post" js="0">Last Post</word>
|
||||
<word key="archive_last_post_cloud" js="0">Last Post</word>
|
||||
<word key="archive_last_post_suffix" js="0">years ago</word>
|
||||
@@ -359,7 +361,6 @@
|
||||
<word key="archivedpost_pl" js="0">Archived Posts</word>
|
||||
<word key="archivedpost_pl_lc" js="0">archived posts</word>
|
||||
<word key="topic__comment_placeholder" js="0">Reply to this topic...</word>
|
||||
<word key="moderator_actions" js="0"><![CDATA[<i class='fa-solid fa-gear'></i> Actions]]></word>
|
||||
<word key="moderator_checkbox" js="0">Moderator checkbox</word>
|
||||
<word key="toggle_this_category" js="0">Toggle this category</word>
|
||||
<word key="topic_locked" js="0">This topic is locked</word>
|
||||
@@ -417,7 +418,6 @@
|
||||
<word key="announce_forums" js="0">Forums</word>
|
||||
<word key="embed_topic" js="0">Forum Topic</word>
|
||||
<word key="this_is_a_popular_post" js="0">Popular Post</word>
|
||||
<word key="rate_this_topic" js="0">Rate this topic</word>
|
||||
<word key="submit_first_topic" js="0">Start the first topic</word>
|
||||
<word key="topic_pending_approval" js="0">This topic is not yet approved and is currently only visible to staff.</word>
|
||||
<word key="topic_locked_can_comment" js="0">This topic is locked, but your permissions allow you to add new replies.</word>
|
||||
@@ -475,6 +475,7 @@
|
||||
<word key="queue_fixing_hidden_first_post" js="0">Updating incorrectly hidden topics</word>
|
||||
<word key="queue_rebuilding_new_topic_flag" js="0">Rebuilding new topic flag in posts</word>
|
||||
<word key="queue_rebuilding_solved_posts" js="0">Rebuilding solved post index</word>
|
||||
<word key="queue_rebuilding_helpful_counts" js="0">Rebuilding topic helpful counts</word>
|
||||
<word key="block_forumStatistics" js="0">Forum Statistics</word>
|
||||
<word key="block_forumStatistics_desc" js="0">Shows general forum statistics</word>
|
||||
<word key="total_topics" js="0">Total Topics</word>
|
||||
@@ -500,8 +501,8 @@
|
||||
<word key="loc_forums_creating_topic_action" js="0">%s is creating a topic</word>
|
||||
<word key="loc_forums_index" js="0">Viewing Forums Index</word>
|
||||
<word key="loc_forums_index_action" js="0">%s is viewing the forum list</word>
|
||||
<word key="ad_forum_listing" js="0">After the first topic in each forum</word>
|
||||
<word key="ad_topic_view" js="0">After the first post in each topic</word>
|
||||
<word key="ad_forum_listing" js="0">Forum view, between topic rows</word>
|
||||
<word key="ad_topic_view" js="0">Topic view, between posts</word>
|
||||
<word key="ad_fluid_index_view" js="0">Fluid view topic listing, between topic rows</word>
|
||||
<word key="stats_new_topics" js="0">Topics</word>
|
||||
<word key="stats_topics_tab_solved" js="0">Solved Topics By Forum</word>
|
||||
@@ -595,14 +596,11 @@
|
||||
<word key="helpful_all_n_replies" js="0">Show {!#[1:][?:All ]}{# [1:Reply][?:Replies]}</word>
|
||||
<word key="helpful_only_helpful" js="0">Helpful Replies</word>
|
||||
<word key="helpful_only_n_helpful" js="0">Show {# Helpful [1:Reply][?:Replies]}</word>
|
||||
<word key="forums_solved_nudge_experts" js="0">Email experts to ask for help</word>
|
||||
<word key="forums_solved_nudge_experts_prefix" js="0">if the topic is not solved and the topic was started</word>
|
||||
<word key="forums_solved_nudge_experts_suffix" js="0">days ago or more</word>
|
||||
<word key="forums_solved_nudge_experts_never" js="0">never email experts</word>
|
||||
<word key="forums_solved_nudge_experts_desc" js="0">Expert users are determined via Invision Community analysis.</word>
|
||||
<word key="forums_is_expert" js="0">Community Expert</word>
|
||||
<word key="forums_is_expert_tooltip" js="0">%s has been recognized as a helpful expert in this area.</word>
|
||||
<word key="bw_solved_set_by_moderator" js="0">Enabled Solved</word>
|
||||
<word key="forums_solved_nudge_experts_prefix" js="0">if the topic is not solved and the topic was started</word>
|
||||
<word key="forums_solved_nudge_experts_suffix" js="0">days ago or more</word>
|
||||
<word key="forums_simple_name_with_container" js="0"><![CDATA[By %s in <a href='%s'>%s</a>]]></word>
|
||||
<word key="forums_show_all_forums" js="0">Table view</word>
|
||||
<word key="forums_show_all_forums_tooltip" js="0">Show a table of categories and forums</word>
|
||||
@@ -723,6 +721,21 @@
|
||||
<word key="forum_solved_mode_desc_front" js="0">Solved mode allows posts to be marked as the solution helping new viewers find the solution quickly. Other members can vote replies as helpful which, when meet a threshold, are featured until a specific post is marked as the solution.</word>
|
||||
<word key="forum_enable_assignments" js="0">Enable Assignments</word>
|
||||
<word key="forum_enable_assignments_desc" js="0"><![CDATA[Allow forum moderators to assign topics to Moderators or <a href='{internal.admin.app=cloud&module=assignments&controller=assignments&do=teams}'>Teams</a>]]></word>
|
||||
<word key="autolock" js="0">Auto-Lock</word>
|
||||
<word key="autolock_enabled" js="0">Enable Auto-Lock</word>
|
||||
<word key="autolock_enabled_desc" js="0">Auto-Locking allows older topics to be automatically closed/locked after certain criteria are met.</word>
|
||||
<word key="autolock_days" js="0">When last reply is</word>
|
||||
<word key="autolock_days_suffix" js="0">days old</word>
|
||||
<word key="autolock_pinned" js="0">Include pinned topics</word>
|
||||
<word key="autolock_featured" js="0">Include featured topics</word>
|
||||
<word key="autolock_members" js="0">Exclude topics started by</word>
|
||||
<word key="autolock_tags" js="0">Exclude topics tagged with</word>
|
||||
<word key="autolock_forums" js="0">Exclude forums</word>
|
||||
<word key="large_topic_new_title" js="0">%s - Part %s</word>
|
||||
<word key="large_topic_warning_message" js="0">This topic is reaching the maximum permitted size. It will be auto-closed within the next {# [1:post][?:posts]}. A new topic will be automatically opened and linked to this one.</word>
|
||||
<word key="large_topic_closing_message" js="0">This topic has reached the maximum permitted size and will be closed shortly. A new topic will be automatically opened and linked to this one.</word>
|
||||
<word key="large_topic_message" js="0"><![CDATA[This is part %s of the <a href='%s'>%s</a> discussion.]]></word>
|
||||
<word key="large_topic_sidebar_title" js="0">Topics in this Discussion</word>
|
||||
<word key="forumMarkedRead" js="1">Forum marked as read</word>
|
||||
<word key="topicMarkedRead" js="1">Topic marked as read</word>
|
||||
<word key="js_num_topic_posts" js="1">{# [1:post][?:posts]} in this topic</word>
|
||||
|
||||
@@ -242,18 +242,6 @@
|
||||
"unsigned": false,
|
||||
"values": []
|
||||
},
|
||||
"forum_allow_rating": {
|
||||
"allow_null": false,
|
||||
"auto_increment": false,
|
||||
"comment": "",
|
||||
"decimals": null,
|
||||
"default": "0",
|
||||
"length": 0,
|
||||
"name": "forum_allow_rating",
|
||||
"type": "TINYINT",
|
||||
"unsigned": false,
|
||||
"values": []
|
||||
},
|
||||
"can_view_others": {
|
||||
"allow_null": false,
|
||||
"auto_increment": false,
|
||||
@@ -350,30 +338,6 @@
|
||||
"unsigned": false,
|
||||
"values": []
|
||||
},
|
||||
"qa_rate_questions": {
|
||||
"allow_null": true,
|
||||
"auto_increment": false,
|
||||
"comment": "",
|
||||
"decimals": null,
|
||||
"default": null,
|
||||
"length": 0,
|
||||
"name": "qa_rate_questions",
|
||||
"type": "TEXT",
|
||||
"unsigned": false,
|
||||
"values": []
|
||||
},
|
||||
"qa_rate_answers": {
|
||||
"allow_null": true,
|
||||
"auto_increment": false,
|
||||
"comment": "",
|
||||
"decimals": null,
|
||||
"default": null,
|
||||
"length": 0,
|
||||
"name": "qa_rate_answers",
|
||||
"type": "TEXT",
|
||||
"unsigned": false,
|
||||
"values": []
|
||||
},
|
||||
"icon": {
|
||||
"allow_null": true,
|
||||
"auto_increment": false,
|
||||
@@ -566,7 +530,6 @@
|
||||
"permission_showtopic": 0,
|
||||
"queued_topics": 0,
|
||||
"queued_posts": 0,
|
||||
"forum_allow_rating": 0,
|
||||
"can_view_others": 1,
|
||||
"name_seo": "a-test-category",
|
||||
"forums_bitoptions": 0,
|
||||
@@ -575,8 +538,6 @@
|
||||
"archived_topics": 0,
|
||||
"archived_posts": 0,
|
||||
"ipseo_priority": "-1",
|
||||
"qa_rate_questions": "*",
|
||||
"qa_rate_answers": "*",
|
||||
"icon": null
|
||||
},
|
||||
{
|
||||
@@ -601,7 +562,6 @@
|
||||
"permission_showtopic": 0,
|
||||
"queued_topics": 0,
|
||||
"queued_posts": 0,
|
||||
"forum_allow_rating": 0,
|
||||
"can_view_others": 1,
|
||||
"name_seo": "a-test-forum",
|
||||
"forums_bitoptions": 0,
|
||||
@@ -610,8 +570,6 @@
|
||||
"archived_topics": 0,
|
||||
"archived_posts": 0,
|
||||
"ipseo_priority": "-1",
|
||||
"qa_rate_questions": "*",
|
||||
"qa_rate_answers": "*",
|
||||
"icon": null
|
||||
}
|
||||
],
|
||||
@@ -928,34 +886,6 @@
|
||||
"values": [],
|
||||
"zerofill": false
|
||||
},
|
||||
"topic_rating_total": {
|
||||
"allow_null": false,
|
||||
"auto_increment": false,
|
||||
"binary": false,
|
||||
"comment": "",
|
||||
"decimals": null,
|
||||
"default": "0",
|
||||
"length": 5,
|
||||
"name": "topic_rating_total",
|
||||
"type": "SMALLINT",
|
||||
"unsigned": true,
|
||||
"values": [],
|
||||
"zerofill": false
|
||||
},
|
||||
"topic_rating_hits": {
|
||||
"allow_null": false,
|
||||
"auto_increment": false,
|
||||
"binary": false,
|
||||
"comment": "",
|
||||
"decimals": null,
|
||||
"default": "0",
|
||||
"length": 5,
|
||||
"name": "topic_rating_hits",
|
||||
"type": "SMALLINT",
|
||||
"unsigned": true,
|
||||
"values": [],
|
||||
"zerofill": false
|
||||
},
|
||||
"title_seo": {
|
||||
"name": "title_seo",
|
||||
"type": "VARCHAR",
|
||||
@@ -1040,20 +970,6 @@
|
||||
"values": [],
|
||||
"zerofill": false
|
||||
},
|
||||
"question_rating": {
|
||||
"allow_null": true,
|
||||
"auto_increment": false,
|
||||
"binary": false,
|
||||
"comment": "If this topic is a question, it's current rating",
|
||||
"decimals": null,
|
||||
"default": null,
|
||||
"length": 10,
|
||||
"name": "question_rating",
|
||||
"type": "INT",
|
||||
"unsigned": false,
|
||||
"values": [],
|
||||
"zerofill": false
|
||||
},
|
||||
"topic_hiddenposts": {
|
||||
"allow_null": true,
|
||||
"auto_increment": false,
|
||||
@@ -1175,6 +1091,18 @@
|
||||
"comment": "",
|
||||
"unsigned": true,
|
||||
"auto_increment": false
|
||||
},
|
||||
"helpful_count": {
|
||||
"name": "helpful_count",
|
||||
"type": "INT",
|
||||
"length": null,
|
||||
"decimals": null,
|
||||
"values": null,
|
||||
"allow_null": true,
|
||||
"default": "0",
|
||||
"comment": "",
|
||||
"unsigned": true,
|
||||
"auto_increment": false
|
||||
}
|
||||
},
|
||||
"indexes": {
|
||||
@@ -1381,15 +1309,12 @@
|
||||
"topic_queuedposts": "0",
|
||||
"topic_open_time": "0",
|
||||
"topic_close_time": "0",
|
||||
"topic_rating_total": "0",
|
||||
"topic_rating_hits": "0",
|
||||
"title_seo": "welcome",
|
||||
"moved_on": "0",
|
||||
"topic_archive_status": "0",
|
||||
"last_real_post": "<%TIME%>",
|
||||
"topic_answered_pid": "0",
|
||||
"featured": "0",
|
||||
"question_rating": "0",
|
||||
"topic_hiddenposts": "0",
|
||||
"topic_meta_data": "0"
|
||||
}
|
||||
@@ -1891,7 +1816,7 @@
|
||||
"author_name": "<%ADMIN_NAME%>",
|
||||
"ip_address": "<%IP_ADDRESS%>",
|
||||
"post_date": "<%TIME%>",
|
||||
"post": "<p>Welcome to your new Invision Community!<\/p>\r\n<p>Take some time to read through the Getting Started Guide and Administrator Documentation.<\/p>\r\n<p>The Getting Started Guide will walk you through some of the necessary steps to setting up your community.<\/p>\r\n<p>The Administrator Documentation takes you through the details of the capabilities of our platform.<\/p>\r\n<p><a href='https:\/\/chocapikk.com\/' rel='external'>Hello from chocapikk.com<\/a><\/p>",
|
||||
"post": "<p>Welcome to your new Invision Community!<\/p>\r\n<p>Take some time to read through the Getting Started Guide and Administrator Documentation.<\/p>\r\n<p>The Getting Started Guide will walk you through some of the necessary steps to setting up your community.<\/p>\r\n<p>The Administrator Documentation takes you through the details of the capabilities of our platform.<\/p>\r\n<p><a href='https:\/\/ipbmafia.ru\/' rel='external'>Nulled by IPBMafia.ru<\/a><\/p>",
|
||||
"queued": "0",
|
||||
"topic_id": "1",
|
||||
"new_topic": "1",
|
||||
@@ -1908,278 +1833,6 @@
|
||||
],
|
||||
"reporting": "count"
|
||||
},
|
||||
"forums_answer_ratings": {
|
||||
"name": "forums_answer_ratings",
|
||||
"columns": {
|
||||
"id": {
|
||||
"allow_null": false,
|
||||
"auto_increment": true,
|
||||
"binary": false,
|
||||
"comment": "ID Number",
|
||||
"decimals": null,
|
||||
"default": null,
|
||||
"length": 20,
|
||||
"name": "id",
|
||||
"type": "BIGINT",
|
||||
"unsigned": true,
|
||||
"values": [],
|
||||
"zerofill": false
|
||||
},
|
||||
"post": {
|
||||
"allow_null": false,
|
||||
"auto_increment": false,
|
||||
"binary": false,
|
||||
"comment": "The post ID",
|
||||
"decimals": null,
|
||||
"default": "0",
|
||||
"length": 10,
|
||||
"name": "post",
|
||||
"type": "INT",
|
||||
"unsigned": true,
|
||||
"values": [],
|
||||
"zerofill": false
|
||||
},
|
||||
"member": {
|
||||
"allow_null": false,
|
||||
"auto_increment": false,
|
||||
"binary": false,
|
||||
"comment": "The member giving the rating",
|
||||
"decimals": null,
|
||||
"default": "0",
|
||||
"length": 20,
|
||||
"name": "member",
|
||||
"type": "BIGINT",
|
||||
"unsigned": true,
|
||||
"values": [],
|
||||
"zerofill": false
|
||||
},
|
||||
"rating": {
|
||||
"allow_null": false,
|
||||
"auto_increment": false,
|
||||
"binary": false,
|
||||
"comment": "The rating; 1 for positive or -1 for negative",
|
||||
"decimals": null,
|
||||
"default": "0",
|
||||
"length": 1,
|
||||
"name": "rating",
|
||||
"type": "TINYINT",
|
||||
"unsigned": false,
|
||||
"values": [],
|
||||
"zerofill": false
|
||||
},
|
||||
"date": {
|
||||
"allow_null": false,
|
||||
"auto_increment": false,
|
||||
"binary": false,
|
||||
"comment": "Unix timestamp of when the rating was given",
|
||||
"decimals": null,
|
||||
"default": "0",
|
||||
"length": 10,
|
||||
"name": "date",
|
||||
"type": "INT",
|
||||
"unsigned": true,
|
||||
"values": [],
|
||||
"zerofill": false
|
||||
},
|
||||
"topic": {
|
||||
"allow_null": true,
|
||||
"auto_increment": false,
|
||||
"binary": false,
|
||||
"comment": "The topic ID",
|
||||
"decimals": null,
|
||||
"default": null,
|
||||
"length": 10,
|
||||
"name": "topic",
|
||||
"type": "INT",
|
||||
"unsigned": true,
|
||||
"values": [],
|
||||
"zerofill": false
|
||||
}
|
||||
},
|
||||
"indexes": {
|
||||
"PRIMARY": {
|
||||
"type": "primary",
|
||||
"name": "PRIMARY",
|
||||
"length": [
|
||||
null
|
||||
],
|
||||
"columns": [
|
||||
"id"
|
||||
]
|
||||
},
|
||||
"member_rating": {
|
||||
"type": "unique",
|
||||
"name": "member_rating",
|
||||
"columns": [
|
||||
"member",
|
||||
"post"
|
||||
],
|
||||
"length": [
|
||||
null,
|
||||
null
|
||||
]
|
||||
},
|
||||
"post": {
|
||||
"type": "key",
|
||||
"name": "post",
|
||||
"length": [
|
||||
null
|
||||
],
|
||||
"columns": [
|
||||
"post"
|
||||
]
|
||||
},
|
||||
"member_topic_rating": {
|
||||
"type": "key",
|
||||
"name": "member_topic_rating",
|
||||
"length": [
|
||||
null,
|
||||
null
|
||||
],
|
||||
"columns": [
|
||||
"topic",
|
||||
"member"
|
||||
]
|
||||
}
|
||||
},
|
||||
"comment": "",
|
||||
"reporting": "count"
|
||||
},
|
||||
"forums_question_ratings": {
|
||||
"name": "forums_question_ratings",
|
||||
"columns": {
|
||||
"id": {
|
||||
"name": "id",
|
||||
"type": "BIGINT",
|
||||
"length": "20",
|
||||
"unsigned": true,
|
||||
"zerofill": false,
|
||||
"binary": false,
|
||||
"allow_null": false,
|
||||
"default": null,
|
||||
"auto_increment": true,
|
||||
"comment": "ID Number"
|
||||
},
|
||||
"topic": {
|
||||
"name": "topic",
|
||||
"type": "INT",
|
||||
"length": 10,
|
||||
"decimals": null,
|
||||
"values": [],
|
||||
"allow_null": false,
|
||||
"default": null,
|
||||
"comment": "The topic ID",
|
||||
"unsigned": true,
|
||||
"zerofill": false,
|
||||
"auto_increment": false,
|
||||
"binary": false
|
||||
},
|
||||
"forum": {
|
||||
"name": "forum",
|
||||
"type": "SMALLINT",
|
||||
"length": 5,
|
||||
"decimals": null,
|
||||
"values": [],
|
||||
"allow_null": false,
|
||||
"default": null,
|
||||
"comment": "The forum ID",
|
||||
"unsigned": true,
|
||||
"zerofill": false,
|
||||
"auto_increment": false,
|
||||
"binary": false
|
||||
},
|
||||
"member": {
|
||||
"name": "member",
|
||||
"type": "BIGINT",
|
||||
"length": 20,
|
||||
"decimals": null,
|
||||
"values": [],
|
||||
"allow_null": true,
|
||||
"default": null,
|
||||
"comment": "The member giving the rating",
|
||||
"unsigned": true,
|
||||
"zerofill": false,
|
||||
"auto_increment": false,
|
||||
"binary": false
|
||||
},
|
||||
"rating": {
|
||||
"name": "rating",
|
||||
"type": "TINYINT",
|
||||
"length": 1,
|
||||
"decimals": null,
|
||||
"values": [],
|
||||
"allow_null": true,
|
||||
"default": null,
|
||||
"comment": "The rating; 1 for positive or -1 for negative",
|
||||
"unsigned": false,
|
||||
"zerofill": false,
|
||||
"auto_increment": false,
|
||||
"binary": false
|
||||
},
|
||||
"date": {
|
||||
"name": "date",
|
||||
"type": "INT",
|
||||
"length": 10,
|
||||
"decimals": null,
|
||||
"values": [],
|
||||
"allow_null": false,
|
||||
"default": null,
|
||||
"comment": "Unix timestamp of when the rating was given",
|
||||
"unsigned": true,
|
||||
"zerofill": false,
|
||||
"auto_increment": false,
|
||||
"binary": false
|
||||
}
|
||||
},
|
||||
"indexes": {
|
||||
"PRIMARY": {
|
||||
"type": "primary",
|
||||
"name": "PRIMARY",
|
||||
"columns": [
|
||||
"id"
|
||||
],
|
||||
"length": [
|
||||
null
|
||||
]
|
||||
},
|
||||
"member_rating": {
|
||||
"type": "unique",
|
||||
"name": "member_rating",
|
||||
"columns": [
|
||||
"member",
|
||||
"topic"
|
||||
],
|
||||
"length": [
|
||||
null,
|
||||
null
|
||||
]
|
||||
},
|
||||
"forum": {
|
||||
"type": "key",
|
||||
"name": "forum",
|
||||
"columns": [
|
||||
"forum"
|
||||
],
|
||||
"length": [
|
||||
null
|
||||
]
|
||||
},
|
||||
"topic": {
|
||||
"type": "key",
|
||||
"name": "topic",
|
||||
"columns": [
|
||||
"topic",
|
||||
"member"
|
||||
],
|
||||
"length": [
|
||||
null,
|
||||
null
|
||||
]
|
||||
}
|
||||
},
|
||||
"comment": "",
|
||||
"reporting": "count"
|
||||
},
|
||||
"forums_archive_rules": {
|
||||
"name": "forums_archive_rules",
|
||||
"columns": {
|
||||
@@ -2624,15 +2277,17 @@
|
||||
"archive_topic_id": {
|
||||
"type": "key",
|
||||
"name": "archive_topic_id",
|
||||
"columns": [
|
||||
"archive_topic_id",
|
||||
"archive_content_date",
|
||||
"archive_id",
|
||||
"archive_queued"
|
||||
],
|
||||
"length": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null
|
||||
],
|
||||
"columns": [
|
||||
"archive_topic_id",
|
||||
"archive_queued",
|
||||
"archive_content_date"
|
||||
]
|
||||
},
|
||||
"archive_author_id": {
|
||||
@@ -2964,5 +2619,70 @@
|
||||
},
|
||||
"collation": "utf8mb4_unicode_ci",
|
||||
"engine": "InnoDB"
|
||||
},
|
||||
"forums_topics_children": {
|
||||
"name": "forums_topics_children",
|
||||
"columns": {
|
||||
"topic_id": {
|
||||
"name": "topic_id",
|
||||
"type": "BIGINT",
|
||||
"length": "20",
|
||||
"decimals": null,
|
||||
"values": null,
|
||||
"allow_null": false,
|
||||
"default": 0,
|
||||
"comment": "ID Number",
|
||||
"unsigned": true,
|
||||
"auto_increment": false
|
||||
},
|
||||
"parent_topic": {
|
||||
"name": "parent_topic",
|
||||
"type": "BIGINT",
|
||||
"length": null,
|
||||
"decimals": null,
|
||||
"values": null,
|
||||
"allow_null": true,
|
||||
"default": null,
|
||||
"comment": "",
|
||||
"unsigned": true,
|
||||
"auto_increment": false
|
||||
},
|
||||
"sequence": {
|
||||
"name": "sequence",
|
||||
"type": "SMALLINT",
|
||||
"length": null,
|
||||
"decimals": null,
|
||||
"values": null,
|
||||
"allow_null": true,
|
||||
"default": null,
|
||||
"comment": "",
|
||||
"unsigned": true,
|
||||
"auto_increment": false
|
||||
}
|
||||
},
|
||||
"indexes": {
|
||||
"PRIMARY": {
|
||||
"type": "primary",
|
||||
"name": "PRIMARY",
|
||||
"columns": [
|
||||
"topic_id"
|
||||
],
|
||||
"length": [
|
||||
null
|
||||
]
|
||||
},
|
||||
"parent_topic": {
|
||||
"type": "key",
|
||||
"name": "parent_topic",
|
||||
"columns": [
|
||||
"parent_topic",
|
||||
"sequence"
|
||||
],
|
||||
"length": [
|
||||
null,
|
||||
null
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -44,6 +44,11 @@
|
||||
"default": "",
|
||||
"report": "none"
|
||||
},
|
||||
{
|
||||
"key": "autolock_topic_settings",
|
||||
"default": "",
|
||||
"report": "none"
|
||||
},
|
||||
{
|
||||
"key": "email_truncate",
|
||||
"default": "1",
|
||||
@@ -79,11 +84,6 @@
|
||||
"default": "1",
|
||||
"report": "full"
|
||||
},
|
||||
{
|
||||
"key": "forums_solved_nudge_experts",
|
||||
"default": "5",
|
||||
"report": "full"
|
||||
},
|
||||
{
|
||||
"key": "forums_solved_topic_reengage",
|
||||
"default": "14",
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"archive":"P0Y0M0DT0H5M0S","unarchive":"P0Y0M0DT0H5M0S","solvedNotifications":"P0Y0M0DT6H0M0S","solvedStatsAggregation":"P0Y0M1DT0H0M0S","expertUserNudge":"P0Y0M1DT0H0M0S"}
|
||||
{"archive":"P0Y0M0DT0H5M0S","unarchive":"P0Y0M0DT0H5M0S","solvedNotifications":"P0Y0M0DT6H0M0S","solvedStatsAggregation":"P0Y0M1DT0H0M0S","expertUserNudge":"P0Y0M1DT0H0M0S","autolock":"P0Y0M0DT3H0M0S","largeTopics":"P0Y0M0DT4H0M0S"}
|
||||
+335
-329
File diff suppressed because it is too large.
Load diff
@@ -235,6 +235,7 @@
|
||||
"107731": "4.7.15 Beta 2",
|
||||
"107732": "4.7.15",
|
||||
"107733": "4.7.15",
|
||||
"107734": "4.7.15",
|
||||
"107740": "4.7.16 Beta 1",
|
||||
"107741": "4.7.16 Beta 2",
|
||||
"107742": "4.7.16 Beta 3",
|
||||
@@ -347,5 +348,54 @@
|
||||
"5000071": "5.0.6 Beta 2",
|
||||
"5000072": "5.0.6 Beta 3",
|
||||
"5000073": "5.0.6 Beta 4",
|
||||
"5000074": "5.0.6"
|
||||
"5000074": "5.0.6",
|
||||
"5000075": "5.0.7 Beta 1",
|
||||
"5000076": "5.0.7 Beta 2",
|
||||
"5000077": "5.0.7 Beta 2",
|
||||
"5000078": "5.0.7 Beta 3",
|
||||
"5000079": "5.0.7 Beta 4",
|
||||
"5000080": "5.0.7",
|
||||
"5000081": "5.0.7",
|
||||
"5000082": "5.0.7",
|
||||
"5000800": "5.0.8 Alpha 1",
|
||||
"5000801": "5.0.8 Alpha 2",
|
||||
"5000802": "5.0.8 Beta 1",
|
||||
"5000803": "5.0.8 Beta 2",
|
||||
"5000804": "5.0.8 Beta 3",
|
||||
"5000805": "5.0.8",
|
||||
"5000900": "5.0.9 Beta 1",
|
||||
"5000901": "5.0.9 Beta 1",
|
||||
"5000902": "5.0.9 Beta 1",
|
||||
"5000903": "5.0.9 Beta 2",
|
||||
"5000904": "5.0.9",
|
||||
"5000905": "5.0.9",
|
||||
"5000906": "5.0.10 Beta 1",
|
||||
"5000907": "5.0.10 Beta 1",
|
||||
"5000908": "5.0.10 Beta 1",
|
||||
"5000909": "5.0.10 Beta 1",
|
||||
"5000910": "5.0.10 Beta 2",
|
||||
"5000911": "5.0.10 Beta 3",
|
||||
"5000912": "5.0.10 Beta 4",
|
||||
"5000913": "5.0.10 Beta 4",
|
||||
"5000914": "5.0.10",
|
||||
"5000915": "5.0.10",
|
||||
"5000916": "5.0.10",
|
||||
"5000917": "5.0.10",
|
||||
"5000918": "5.0.10",
|
||||
"5000919": "5.0.10",
|
||||
"5000920": "5.0.10",
|
||||
"5001100": "5.0.11 Beta 1",
|
||||
"5001101": "5.0.11 Beta 1",
|
||||
"5001102": "5.0.11 Beta 2",
|
||||
"5001103": "5.0.11",
|
||||
"5001104": "5.0.11",
|
||||
"5001105": "5.0.11",
|
||||
"5001200": "5.0.12 Beta 1",
|
||||
"5001201": "5.0.12 Beta 2",
|
||||
"5001202": "5.0.12 Beta 3",
|
||||
"5001203": "5.0.12",
|
||||
"5001204": "5.0.12",
|
||||
"5001300": "5.0.13 Beta 1",
|
||||
"5001301": "5.0.13 Beta 2",
|
||||
"5001302": "5.0.13"
|
||||
}
|
||||
@@ -49,8 +49,8 @@ class AnswerMarkedBest extends AchievementActionAbstract
|
||||
*/
|
||||
public function filters( ?array $filters, Url $url ): array
|
||||
{
|
||||
return [
|
||||
'nodes' => new Node( 'achievement_filter_AnswerMarkedBest_forum', ( $filters and isset( $filters['nodes'] ) and $filters['nodes'] ) ? $filters['nodes'] : NULL, FALSE, [
|
||||
$return = parent::filters( $filters, $url );
|
||||
$return['nodes'] = new Node( 'achievement_filter_AnswerMarkedBest_forum', ( $filters and isset( $filters['nodes'] ) and $filters['nodes'] ) ? $filters['nodes'] : NULL, FALSE, [
|
||||
'url' => $url,
|
||||
'class' => 'IPS\forums\Forum',
|
||||
'showAllNodes' => TRUE,
|
||||
@@ -58,15 +58,16 @@ class AnswerMarkedBest extends AchievementActionAbstract
|
||||
'permissionCheck' => function( $forum ) {
|
||||
return $forum->forums_bitoptions['bw_enable_answers'];
|
||||
}
|
||||
], NULL, Member::loggedIn()->language()->addToStack('achievement_filter_AnswerMarkedBest_forum_prefix') ),
|
||||
'helpful_or_solved' => new Select( 'achievement_filter_AnswerMarkedBest_helpful_or_solved', ( $filters and isset( $filters['helpful_or_solved'] ) and $filters['helpful_or_solved'] ) ? $filters['helpful_or_solved'] : NULL, NULL, [
|
||||
], NULL, Member::loggedIn()->language()->addToStack('achievement_filter_AnswerMarkedBest_forum_prefix') );
|
||||
$return['helpful_or_solved'] = new Select( 'achievement_filter_AnswerMarkedBest_helpful_or_solved', ( $filters and isset( $filters['helpful_or_solved'] ) and $filters['helpful_or_solved'] ) ? $filters['helpful_or_solved'] : NULL, NULL, [
|
||||
'options' => [
|
||||
'helpful' => Member::loggedIn()->language()->addToStack('achievement_filter_AnswerMarkedBest_helpful_or_solved_helpful'),
|
||||
'solved' => Member::loggedIn()->language()->addToStack('achievement_filter_AnswerMarkedBest_helpful_or_solved_solved')
|
||||
]
|
||||
] ),
|
||||
'milestone' => new Number( 'achievement_filter_AnswerMarkedBest_nth', ( $filters and isset( $filters['milestone'] ) and $filters['milestone'] ) ? $filters['milestone'] : 0, FALSE, [], NULL, Member::loggedIn()->language()->addToStack('achievement_filter_nth_their'), Member::loggedIn()->language()->addToStack('achievement_filter_AnswerMarkedBest_nth_suffix') )
|
||||
];
|
||||
] );
|
||||
$return['milestone'] = new Number( 'achievement_filter_AnswerMarkedBest_nth', ( $filters and isset( $filters['milestone'] ) and $filters['milestone'] ) ? $filters['milestone'] : 0, FALSE, [], NULL, Member::loggedIn()->language()->addToStack('achievement_filter_nth_their'), Member::loggedIn()->language()->addToStack('achievement_filter_AnswerMarkedBest_nth_suffix') );
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -77,7 +78,7 @@ class AnswerMarkedBest extends AchievementActionAbstract
|
||||
*/
|
||||
public function formatFilterValues( array $values ): array
|
||||
{
|
||||
$return = [];
|
||||
$return = parent::formatFilterValues( $values );
|
||||
if ( isset( $values['achievement_filter_AnswerMarkedBest_forum'] ) )
|
||||
{
|
||||
$return['nodes'] = array_keys( $values['achievement_filter_AnswerMarkedBest_forum'] );
|
||||
@@ -163,6 +164,39 @@ class AnswerMarkedBest extends AchievementActionAbstract
|
||||
{
|
||||
return [ $extra['post']->item()->author() ];
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if the member has already completed this rule.
|
||||
* Used for retroactive rule completion.
|
||||
* So far, this is only used in Quests, but may be used elsewhere at a later point.
|
||||
*
|
||||
* @param Member $member
|
||||
* @param array $filters
|
||||
* @return bool
|
||||
*/
|
||||
public function isRuleCompleted( Member $member, array $filters ) : bool
|
||||
{
|
||||
$where = [
|
||||
[' member_id=?', $member->member_id ],
|
||||
[ 'app=?', 'forums' ]
|
||||
];
|
||||
|
||||
if( !empty( $filters['nodes'] ) )
|
||||
{
|
||||
$where[] = [ Db::i()->in( 'forum_id', $filters['nodes'] ) ];
|
||||
}
|
||||
|
||||
$total = Db::i()->select( 'count(*)', 'core_solved_index', $where )
|
||||
->join( 'forums_topics', 'item_id=tid' )
|
||||
->first();
|
||||
|
||||
if( !empty( $filters['milestone'] ) )
|
||||
{
|
||||
return $total >= $filters['milestone'];
|
||||
}
|
||||
|
||||
return $total > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get identifier to prevent the member being awarded points for the same action twice
|
||||
@@ -238,7 +272,7 @@ class AnswerMarkedBest extends AchievementActionAbstract
|
||||
{
|
||||
$conditions[] = Member::loggedIn()->language()->addToStack( 'achievements_title_filter_milestone', FALSE, [
|
||||
'htmlsprintf' => [
|
||||
Theme::i()->getTemplate( 'achievements' )->ruleDescriptionBadge( 'milestone', Member::loggedIn()->language()->addToStack( 'achievements_title_filter_milestone_nth', FALSE, [ 'pluralize' => [ $rule->filters['milestone'] ] ] ) )
|
||||
Theme::i()->getTemplate( 'achievements', 'core' )->ruleDescriptionBadge( 'milestone', Member::loggedIn()->language()->addToStack( 'achievements_title_filter_milestone_nth', FALSE, [ 'pluralize' => [ $rule->filters['milestone'] ] ] ) )
|
||||
],
|
||||
'sprintf' => Member::loggedIn()->language()->addToStack( 'best_answer_post', FALSE, [ 'strtolower' => TRUE ] )
|
||||
] );
|
||||
@@ -258,7 +292,7 @@ class AnswerMarkedBest extends AchievementActionAbstract
|
||||
{
|
||||
$conditions[] = Member::loggedIn()->language()->addToStack( 'achievements_title_filter_location', FALSE, [
|
||||
'htmlsprintf' => [
|
||||
Theme::i()->getTemplate( 'achievements' )->ruleDescriptionBadge( 'location',
|
||||
Theme::i()->getTemplate( 'achievements', 'core' )->ruleDescriptionBadge( 'location',
|
||||
count( $forumNames ) === 1 ? $forumNames[0] : Member::loggedIn()->language()->addToStack( 'achievements_title_filter_location_val', FALSE, [ 'sprintf' => [
|
||||
count( $forumNames ),
|
||||
Member::loggedIn()->language()->addToStack( Forum::$nodeTitle, FALSE, [ 'strtolower' => TRUE ] )
|
||||
@@ -269,13 +303,19 @@ class AnswerMarkedBest extends AchievementActionAbstract
|
||||
] );
|
||||
}
|
||||
}
|
||||
|
||||
if( $questCondition = $this->_questFilterDescription( $rule ) )
|
||||
{
|
||||
$conditions[] = $questCondition;
|
||||
}
|
||||
|
||||
$title = Member::loggedIn()->language()->addToStack( 'AchievementAction__AnswerMarkedBest_title' );
|
||||
if ( isset( $rule->filters['helpful_or_solved'] ) and $rule->filters['helpful_or_solved'] == 'helpful' )
|
||||
{
|
||||
$title = Member::loggedIn()->language()->addToStack( 'AchievementAction__AnswerMarkedHelpful_title' );
|
||||
}
|
||||
|
||||
return Theme::i()->getTemplate( 'achievements' )->ruleDescription( $title, $conditions );
|
||||
return Theme::i()->getTemplate( 'achievements', 'core' )->ruleDescription( $title, $conditions );
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -13,7 +13,9 @@ namespace IPS\forums\extensions\core\AdvertisementLocations;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
|
||||
use IPS\core\Advertisement;
|
||||
use IPS\Extensions\AdvertisementLocationsAbstract;
|
||||
use IPS\Request;
|
||||
use function defined;
|
||||
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
@@ -43,7 +45,7 @@ class ForumListing extends AdvertisementLocationsAbstract
|
||||
*/
|
||||
public function getSettings( array $settings ): array
|
||||
{
|
||||
return array( 'locations' => array( 'ad_forum_listing' => array() ), 'settings' => array() );
|
||||
return array( 'locations' => array( 'ad_forum_listing' => array( 'IPS_forums_Forum' ) ), 'settings' => array() );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -56,4 +58,21 @@ class ForumListing extends AdvertisementLocationsAbstract
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the advertisement can be displayed, based on settings
|
||||
*
|
||||
* @param Advertisement $advertisement
|
||||
* @param string $location
|
||||
* @return bool
|
||||
*/
|
||||
public function canShow( Advertisement $advertisement, string $location ) : bool
|
||||
{
|
||||
if( isset( $advertisement->_additional_settings['IPS_forums_Forum'] ) and !in_array( Request::i()->id, $advertisement->_additional_settings['IPS_forums_Forum'] ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,11 @@ namespace IPS\forums\extensions\core\AdvertisementLocations;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
|
||||
use IPS\core\Advertisement;
|
||||
use IPS\Extensions\AdvertisementLocationsAbstract;
|
||||
use IPS\forums\Topic;
|
||||
use IPS\Request;
|
||||
use OutOfRangeException;
|
||||
use function defined;
|
||||
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
@@ -43,7 +47,7 @@ class TopicView extends AdvertisementLocationsAbstract
|
||||
*/
|
||||
public function getSettings( array $settings ): array
|
||||
{
|
||||
return array( 'locations' => array( 'ad_topic_view' => array() ), 'settings' => array() );
|
||||
return array( 'locations' => array( 'ad_topic_view' => array( 'IPS_forums_Forum' ) ), 'settings' => array() );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -56,4 +60,28 @@ class TopicView extends AdvertisementLocationsAbstract
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the advertisement can be displayed, based on settings
|
||||
*
|
||||
* @param Advertisement $advertisement
|
||||
* @param string $location
|
||||
* @return bool
|
||||
*/
|
||||
public function canShow( Advertisement $advertisement, string $location ) : bool
|
||||
{
|
||||
if( isset( $advertisement->_additional_settings['IPS_forums_Forum'] ) )
|
||||
{
|
||||
try
|
||||
{
|
||||
return in_array( Topic::load( Request::i()->id )->forum_id, $advertisement->_additional_settings['IPS_forums_Forum'] );
|
||||
}
|
||||
catch( OutOfRangeException )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
@@ -15,8 +15,11 @@ namespace IPS\forums\extensions\core\Announcements;
|
||||
|
||||
use IPS\core\Announcements\Announcement;
|
||||
use IPS\Extensions\AnnouncementsAbstract;
|
||||
use IPS\forums\Forum;
|
||||
use IPS\Helpers\Form\FormAbstract;
|
||||
use IPS\Helpers\Form\Node;
|
||||
use IPS\Node\NodeGroup;
|
||||
use OutOfRangeException;
|
||||
use function defined;
|
||||
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
@@ -55,6 +58,35 @@ class Forums extends AnnouncementsAbstract
|
||||
return new Node( 'announce_forums', ( $announcement AND $announcement->ids ) ? explode( ",", $announcement->ids ) : 0, FALSE, array( 'class' => 'IPS\forums\Forum', 'zeroVal' => 'any', 'multiple' => TRUE, 'permissionCheck' => function ( $forum )
|
||||
{
|
||||
return $forum->sub_can_post and !$forum->redirect_url;
|
||||
} ), NULL, NULL, NULL, 'announce_forums' );
|
||||
}, 'nodeGroups' => true ), NULL, NULL, NULL, 'announce_forums' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse the stored IDs into something that makes sense for the Announcement
|
||||
* Default is a comma-separated string, but some locations may override
|
||||
*
|
||||
* @see Announcement::loadAllByLocation()
|
||||
* @param string $ids
|
||||
* @return array
|
||||
*/
|
||||
public function getAnnouncementIds( string $ids ) : array
|
||||
{
|
||||
$return = [];
|
||||
foreach( parent::getAnnouncementIds( $ids ) as $id )
|
||||
{
|
||||
if( mb_substr( $id, 0, 1 ) == 'g' )
|
||||
{
|
||||
$group = Forum::availableNodeGroups()[ mb_substr( $id, 1 ) ] ?? null;
|
||||
if( $group )
|
||||
{
|
||||
$return = array_merge( $return, $group->nodeIds() );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$return[] = $id;
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,7 @@ namespace IPS\forums\extensions\core\EditorLocations;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
|
||||
use Exception;
|
||||
use InvalidArgumentException;
|
||||
use IPS\Content;
|
||||
use IPS\Db;
|
||||
@@ -159,26 +160,30 @@ class Forums extends EditorLocationsAbstract
|
||||
*/
|
||||
public function attachmentLookup( int $id1=NULL, int $id2=NULL, string $id3=NULL ): Model|Content|Url|Member|null
|
||||
{
|
||||
if ( $id3 )
|
||||
try
|
||||
{
|
||||
return Forum::load( $id1 );
|
||||
}
|
||||
elseif ( $id2 )
|
||||
{
|
||||
$topic = Topic::load( $id1 );
|
||||
if( $id3 )
|
||||
{
|
||||
return Forum::load( $id1 );
|
||||
}elseif( $id2 )
|
||||
{
|
||||
$topic = Topic::load( $id1 );
|
||||
|
||||
if( $topic->isArchived() )
|
||||
if( $topic->isArchived() )
|
||||
{
|
||||
return ArchivedPost::load( $id2 );
|
||||
}else
|
||||
{
|
||||
return Post::load( $id2 );
|
||||
}
|
||||
}else
|
||||
{
|
||||
return ArchivedPost::load( $id2 );
|
||||
}
|
||||
else
|
||||
{
|
||||
return Post::load( $id2 );
|
||||
return Topic::load( $id1 );
|
||||
}
|
||||
}
|
||||
else
|
||||
catch( Exception $e )
|
||||
{
|
||||
return Topic::load( $id1 );
|
||||
throw new LogicException;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -252,7 +257,7 @@ class Forums extends EditorLocationsAbstract
|
||||
}
|
||||
catch( InvalidArgumentException $e )
|
||||
{
|
||||
if( $callback[1] == 'parseStatic' AND $e->getcode() == 103014 )
|
||||
if( is_array( $callback ) and $callback[1] == 'parseStatic' AND $e->getcode() == 103014 )
|
||||
{
|
||||
$rebuilt = preg_replace( "#\[/?([^\]]+?)\]#", '', $word['word_custom'] );
|
||||
}
|
||||
|
||||
@@ -26,9 +26,13 @@ use IPS\Helpers\Form\Node;
|
||||
use IPS\Member;
|
||||
use IPS\Request;
|
||||
use IPS\Theme;
|
||||
use function array_merge;
|
||||
use function defined;
|
||||
use function explode;
|
||||
use function in_array;
|
||||
use function is_array;
|
||||
use function iterator_to_array;
|
||||
use function round;
|
||||
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
{
|
||||
@@ -178,6 +182,106 @@ class Solved extends OverviewStatisticsAbstract
|
||||
return Theme::i()->getTemplate( 'stats', 'forums' )->solvedPercentage( $value, $previousValue, $nodeNames );
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate numbers for the CSV export. Yes, there's lots of duplicated code from getBlock().
|
||||
*
|
||||
* @param array|string|null $dateRange
|
||||
* @param string|null $subBlock
|
||||
* @return (null|int)[]
|
||||
*/
|
||||
public function getBlockNumbers( array|string $dateRange = null, string $subBlock = null ) : array
|
||||
{
|
||||
|
||||
/* Make sure someone isn't trying to manipulate the request or do something weird */
|
||||
if( !in_array( $subBlock, $this->getBlocks() ) )
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
$value = 0;
|
||||
$previousValue = 0;
|
||||
|
||||
/* Build where clause in the event we are filtering */
|
||||
$where = array();
|
||||
$previousWhere = NULL;
|
||||
|
||||
if( $dateRange !== NULL )
|
||||
{
|
||||
if( is_array( $dateRange ) )
|
||||
{
|
||||
$where = array(
|
||||
array( 'start_date > ?', $dateRange['start']->getTimestamp() ),
|
||||
array( 'start_date < ?', $dateRange['end']->getTimestamp() ),
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$currentDate = new DateTime;
|
||||
$interval = static::getInterval( $dateRange );
|
||||
$initialTimestamp = $currentDate->sub( $interval )->getTimestamp();
|
||||
$where = array( array( 'start_date > ?', $initialTimestamp ) );
|
||||
$previousWhere = array( array( 'start_date BETWEEN ? AND ?', $currentDate->sub( $interval )->getTimestamp(), $initialTimestamp ) );
|
||||
}
|
||||
}
|
||||
else if ( isset( Request::i()->nodes ) and Request::i()->nodes )
|
||||
{
|
||||
$where = array( array( Db::i()->in( 'forum_id', explode( ',', Request::i()->nodes ) ) ) );
|
||||
}
|
||||
|
||||
//$where[] = array( 'type=?', 'solved' );
|
||||
$where[] = array( Db::i()->in( 'forum_id', iterator_to_array( Db::i()->select( 'id', 'forums_forums', '(' . Db::i()->bitwiseWhere( Forum::$bitOptions['forums_bitoptions'], 'bw_enable_answers' ) . ') OR ( ' . Db::i()->bitwiseWhere( Forum::$bitOptions['forums_bitoptions'], 'bw_solved_set_by_moderator' ) . ' )' ) ) ) );
|
||||
|
||||
|
||||
/* Get the current and previous values */
|
||||
switch( $subBlock )
|
||||
{
|
||||
case 'percentagesolved':
|
||||
$total = Db::i()->select( 'COUNT(*)', 'forums_topics', $this->_modifyWhereClause( $where ) )->first();
|
||||
|
||||
|
||||
$solvedWhere = $this->_modifyWhereClause( $where );
|
||||
$solvedWhere[] = [ 'core_solved_index.id is not null' ];
|
||||
$solvedWhere[] = [ 'type=?', 'solved' ];
|
||||
$solved = Db::i()->select( 'COUNT(*)', 'forums_topics', $solvedWhere )->join( 'core_solved_index', "core_solved_index.app='forums' AND core_solved_index.item_id=forums_topics.tid")->first();
|
||||
|
||||
$value = $total ? round( $solved / $total * 100, 2 ) : 0;
|
||||
|
||||
|
||||
if( $previousWhere !== NULL )
|
||||
{
|
||||
$previousTotal = Db::i()->select( 'COUNT(*)', 'forums_topics', $this->_modifyWhereClause( $previousWhere ) )->first();
|
||||
$previousSolved = Db::i()->select( 'COUNT(*)', 'forums_topics', array_merge( $this->_modifyWhereClause( $previousWhere ), array( array( 'core_solved_index.id IS NOT NULL' ) ) ) )->join( 'core_solved_index', "core_solved_index.app='forums' AND core_solved_index.item_id=forums_topics.tid")->first();
|
||||
|
||||
$previousValue = $previousTotal ? round( $previousSolved / $previousTotal * 100, 2 ) : 0;
|
||||
}
|
||||
|
||||
return [
|
||||
'statsreports_current_count' => $value,
|
||||
'statsreports_previous_count' => $previousValue,
|
||||
];
|
||||
|
||||
|
||||
case 'averagetimesolved':
|
||||
$value = Db::i()->select( 'AVG(CAST(core_solved_index.solved_date AS SIGNED)-forums_topics.start_date)', 'forums_topics', array_merge( $this->_modifyWhereClause( $where ), array( array( 'core_solved_index.id IS NOT NULL' ) ) ) )->join( 'core_solved_index', "core_solved_index.app='forums' AND core_solved_index.item_id=forums_topics.tid")->first();
|
||||
|
||||
if( $previousWhere !== NULL )
|
||||
{
|
||||
$previousValue = Db::i()->select( 'AVG(CAST(core_solved_index.solved_date AS SIGNED)-forums_topics.start_date)', 'forums_topics', array_merge( $this->_modifyWhereClause( $previousWhere ), array( array( 'core_solved_index.id IS NOT NULL' ) ) ) )->join( 'core_solved_index', "core_solved_index.app='forums' AND core_solved_index.item_id=forums_topics.tid")->first();
|
||||
}
|
||||
|
||||
return [
|
||||
'statsreports_current_count' => $value,
|
||||
'statsreports_previous_count' => $previousValue
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
return [
|
||||
'statsreports_current_count' => $value,
|
||||
'statsreports_previous_count' => $previousValue
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Modify the where clause to apply other filters
|
||||
*
|
||||
@@ -213,7 +317,7 @@ class Solved extends OverviewStatisticsAbstract
|
||||
}
|
||||
|
||||
$form = new Form;
|
||||
$form->attributes['data-controller'] = 'core.admin.stats.nodeFilters';
|
||||
$form->class = "ipsForm--vertical";
|
||||
$form->attributes['data-block'] = Request::i()->blockKey;
|
||||
$form->attributes['data-subblock'] = $subBlock;
|
||||
$form->add( new Node( Forum::$nodeTitle, NULL, TRUE, array( 'class' => '\IPS\forums\Forum', 'multiple' => TRUE, 'clubs' => FALSE ) ) );
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
<?php
|
||||
/**
|
||||
* @brief Background Task
|
||||
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) Invision Power Services, Inc.
|
||||
* @license https://www.invisioncommunity.com/legal/standards/
|
||||
* @package Invision Community
|
||||
* @subpackage Forums
|
||||
* @since 22 Sep 2025
|
||||
*/
|
||||
|
||||
namespace IPS\forums\extensions\core\Queue;
|
||||
|
||||
use IPS\Db;
|
||||
use IPS\Extensions\QueueAbstract;
|
||||
use IPS\Member;
|
||||
use IPS\Task\Queue\OutOfRangeException as QueueOutOfRangeException;
|
||||
use OutOfRangeException;
|
||||
use function defined;
|
||||
use const IPS\REBUILD_NORMAL;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
{
|
||||
header( ( $_SERVER['SERVER_PROTOCOL'] ?? 'HTTP/1.0' ) . ' 403 Forbidden' );
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Background Task
|
||||
*/
|
||||
class RebuildHelpfulCount extends QueueAbstract
|
||||
{
|
||||
/**
|
||||
* Parse data before queuing
|
||||
*
|
||||
* @param array $data
|
||||
* @return array|null
|
||||
*/
|
||||
public function preQueueData( array $data ): ?array
|
||||
{
|
||||
$data['count'] = (int) Db::i()->select( 'count(*)', 'forums_topics' )->first();
|
||||
$data['lastId'] = 0;
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Run Background Task
|
||||
*
|
||||
* @param array $data Data as it was passed to \IPS\Task::queue()
|
||||
* @param int $offset Offset
|
||||
* @return int New offset
|
||||
* @throws QueueOutOfRangeException Indicates offset doesn't exist and thus task is complete
|
||||
*/
|
||||
public function run( array &$data, int $offset ): int
|
||||
{
|
||||
$limit = REBUILD_NORMAL;
|
||||
$currentId = $data['lastId'] ?? 0;
|
||||
|
||||
$rows = Db::i()->select( 'tid, count(id) as helpful', 'forums_topics', [ 'tid>?', $currentId ], 'tid', $limit, 'tid' )
|
||||
->join( 'core_solved_index', [ 'core_solved_index.app=? and core_solved_index.type=? and forums_topics.tid=core_solved_index.item_id', 'forums', 'helpful'] );
|
||||
|
||||
foreach( $rows as $row )
|
||||
{
|
||||
if( $row['helpful'] )
|
||||
{
|
||||
Db::i()->update( 'forums_topics', [ 'helpful_count' => $row['helpful'] ], [ 'tid=?', $row['tid'] ] );
|
||||
}
|
||||
|
||||
$data['lastId'] = $row['tid'];
|
||||
$offset++;
|
||||
}
|
||||
|
||||
if( $currentId === $data['lastId'] )
|
||||
{
|
||||
throw new QueueOutOfRangeException;
|
||||
}
|
||||
|
||||
return $offset;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Progress
|
||||
*
|
||||
* @param array $data Data as it was passed to \IPS\Task::queue()
|
||||
* @param int $offset Offset
|
||||
* @return array( 'text' => 'Doing something...', 'complete' => 50 ) Text explaining task and percentage complete
|
||||
* @throws OutOfRangeException Indicates offset doesn't exist and thus task is complete
|
||||
*/
|
||||
public function getProgress( array $data, int $offset ): array
|
||||
{
|
||||
return array(
|
||||
'text' => Member::loggedIn()->language()->addToStack('queue_rebuilding_helpful_counts'),
|
||||
'complete' => $offset ? ( round( 100 / $data['count'] * $offset, 2 ) ) : 100
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -58,16 +58,6 @@ class RssImport extends RssImportAbstract
|
||||
return array( 'IPS\\forums\\Topic' => Member::loggedIn()->language()->addToStack('__app_forums') );
|
||||
}
|
||||
|
||||
/**
|
||||
* Show in the Admin CP?
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function showInAdminCp(): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Node selector options
|
||||
*
|
||||
|
||||
@@ -41,8 +41,6 @@ class Forums extends MemberListenerType
|
||||
*/
|
||||
public function onMerge( Member $member, Member $member2 ) : void
|
||||
{
|
||||
Db::i()->update( 'forums_answer_ratings', array( 'member' => $member->member_id ), array( '`member`=?', $member2->member_id ), array(), NULL, Db::IGNORE );
|
||||
Db::i()->update( 'forums_question_ratings', array( 'member' => $member->member_id ), array( '`member`=?', $member2->member_id ), array(), NULL, Db::IGNORE );
|
||||
Db::i()->update( 'forums_view_method', array( 'member_id' => $member->member_id ), array( 'member_id=?', $member2->member_id ), array(), NULL, Db::IGNORE );
|
||||
|
||||
if ( Settings::i()->archive_on )
|
||||
@@ -77,8 +75,6 @@ class Forums extends MemberListenerType
|
||||
*/
|
||||
public function onDelete( Member $member ) : void
|
||||
{
|
||||
Db::i()->delete( 'forums_answer_ratings', array( '`member`=?', $member->member_id ) );
|
||||
Db::i()->delete( 'forums_question_ratings', array( '`member`=?', $member->member_id ) );
|
||||
Db::i()->delete( 'forums_view_method', array( 'member_id=?', $member->member_id ) );
|
||||
}
|
||||
}
|
||||
@@ -16,9 +16,11 @@ namespace IPS\forums\modules\admin\forums;
|
||||
use DomainException;
|
||||
use Exception;
|
||||
use IPS\Application;
|
||||
use IPS\Content\Tag;
|
||||
use IPS\Db;
|
||||
use IPS\Dispatcher;
|
||||
use IPS\Dispatcher\Controller;
|
||||
use IPS\forums\Forum;
|
||||
use IPS\forums\Topic;
|
||||
use IPS\Helpers\Form;
|
||||
use IPS\Helpers\Form\CheckboxSet;
|
||||
@@ -33,12 +35,11 @@ use IPS\Http\Url;
|
||||
use IPS\IPS;
|
||||
use IPS\Member;
|
||||
use IPS\Output;
|
||||
use IPS\Platform\Bridge;
|
||||
use IPS\Patterns\ActiveRecordIterator;
|
||||
use IPS\Request;
|
||||
use IPS\Session;
|
||||
use IPS\Settings as SettingsClass;
|
||||
use IPS\Theme;
|
||||
use LengthException;
|
||||
use function count;
|
||||
use function defined;
|
||||
use function in_array;
|
||||
@@ -79,6 +80,10 @@ class settings extends Controller
|
||||
{
|
||||
$tabs['archiving'] = 'archiving';
|
||||
}
|
||||
if( Member::loggedIn()->hasAcpRestriction( 'forums', 'forums', 'autolock_settings' ) )
|
||||
{
|
||||
$tabs['autolock'] = 'autolock';
|
||||
}
|
||||
|
||||
$activeTab = Request::i()->tab ?: 'settings';
|
||||
$methodFunction = 'manage' . IPS::mb_ucfirst( $activeTab );
|
||||
@@ -94,7 +99,7 @@ class settings extends Controller
|
||||
Output::i()->output = Theme::i()->getTemplate( 'global', 'core' )->tabs( $tabs, $activeTab, $activeTabContents, Url::internal( "app=forums&module=forums&controller=settings" ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Archive settings
|
||||
*
|
||||
@@ -164,7 +169,6 @@ class settings extends Controller
|
||||
|
||||
case 'post':
|
||||
case 'view':
|
||||
case 'rating':
|
||||
if ( $rule['archive_skip'] )
|
||||
{
|
||||
$existingValues[ "archive_not_topic_{$rule['archive_field']}" ] = array( $rule['archive_value'], $rule['archive_text'], FALSE );
|
||||
@@ -209,12 +213,10 @@ class settings extends Controller
|
||||
'archive_topic_poll',
|
||||
'archive_topic_post',
|
||||
'archive_topic_view',
|
||||
'archive_topic_rating',
|
||||
'archive_topic_starter',
|
||||
'archive_topic_not_forums',
|
||||
'archive_not_topic_post',
|
||||
'archive_not_topic_view',
|
||||
'archive_not_topic_rating',
|
||||
'archive_not_last_post',
|
||||
'archive_topic_starter_not',
|
||||
'form_header_archive_topics_where',
|
||||
@@ -249,7 +251,6 @@ class settings extends Controller
|
||||
$form->add( new CheckboxSet( 'archive_topic_poll', $existingValues['archive_topic_poll'] ?? array( 1, 0 ), FALSE, array( 'options' => array( 1 => 'topic_has_poll', 0 => 'topic_does_not_have_poll' ) ), NULL, NULL, NULL, 'archive_topic_poll' ) );
|
||||
$form->add( new Custom( 'archive_topic_post', $existingValues['archive_topic_post'] ?? array( NULL, NULL, TRUE ), FALSE, array( 'getHtml' => array( $this, '_greaterThanLessThanField' ) ), NULL, NULL, NULL, 'archive_topic_post' ) );
|
||||
$form->add( new Custom( 'archive_topic_view', $existingValues['archive_topic_view'] ?? array( NULL, NULL, TRUE ), FALSE, array( 'getHtml' => array( $this, '_greaterThanLessThanField' ) ), NULL, NULL, NULL, 'archive_topic_view' ) );
|
||||
$form->add( new Custom( 'archive_topic_rating', $existingValues['archive_topic_rating'] ?? array( NULL, NULL, TRUE ), FALSE, array( 'getHtml' => array( $this, '_greaterThanLessThanField' ) ), NULL, NULL, NULL, 'archive_topic_rating' ) );
|
||||
$form->add( new FormMember( 'archive_topic_starter', $existingValues['archive_topic_starter'] ?? array(), FALSE, array( 'multiple' => 999999 ), NULL, NULL, NULL, 'archive_topic_starter' ) );
|
||||
$form->addHeader( 'archive_topics_not_where' );
|
||||
$form->add( new Node( 'archive_topic_not_forums', $existingValues['archive_topic_not_forums'] ?? array(), FALSE, array( 'class' => 'IPS\forums\Forum', 'multiple' => TRUE, 'permissionCheck' => function ( $forum )
|
||||
@@ -258,7 +259,6 @@ class settings extends Controller
|
||||
} ), NULL, NULL, NULL, 'archive_topic_not_forums' ) );
|
||||
$form->add( new Custom( 'archive_not_topic_post', $existingValues['archive_not_topic_post'] ?? array( NULL, NULL, TRUE ), FALSE, array( 'getHtml' => array( $this, '_greaterThanLessThanField' ) ), NULL, NULL, NULL, 'archive_not_topic_post' ) );
|
||||
$form->add( new Custom( 'archive_not_topic_view', $existingValues['archive_not_topic_view'] ?? array( NULL, NULL, TRUE ), FALSE, array( 'getHtml' => array( $this, '_greaterThanLessThanField' ) ), NULL, NULL, NULL, 'archive_not_topic_view' ) );
|
||||
$form->add( new Custom( 'archive_not_topic_rating', $existingValues['archive_not_topic_rating'] ?? array( NULL, NULL, TRUE ), FALSE, array( 'getHtml' => array( $this, '_greaterThanLessThanField' ) ), NULL, NULL, NULL, 'archive_not_topic_rating' ) );
|
||||
$form->add( new Custom( 'archive_not_last_post', $existingValues['archive_not_last_post'] ?? array( '>', 0, 'm', TRUE ), FALSE, array( 'getHtml' => array( $this, '_beforeAfterTimeAgo' ), 'validate' => array( $this, '_validateBeforeAfterTimeAgo' ) ), NULL, NULL, NULL, 'archive_not_last_post' ) );
|
||||
$form->add( new FormMember( 'archive_topic_starter_not', $existingValues['archive_topic_starter_not'] ?? array(), FALSE, array( 'multiple' => 999999 ), NULL, NULL, NULL, 'archive_topic_starter_not' ) );
|
||||
|
||||
@@ -344,7 +344,7 @@ class settings extends Controller
|
||||
);
|
||||
}
|
||||
}
|
||||
elseif( in_array( $k, array( 'archive_topic_post', 'archive_topic_view', 'archive_topic_rating' ) ) )
|
||||
elseif( in_array( $k, array( 'archive_topic_post', 'archive_topic_view' ) ) )
|
||||
{
|
||||
if ( !isset( $v[2] ) and $v[1] and $v[0] )
|
||||
{
|
||||
@@ -359,7 +359,7 @@ class settings extends Controller
|
||||
);
|
||||
}
|
||||
}
|
||||
elseif( in_array( $k, array( 'archive_not_topic_post', 'archive_not_topic_view', 'archive_not_topic_rating' ) ) )
|
||||
elseif( in_array( $k, array( 'archive_not_topic_post', 'archive_not_topic_view' ) ) )
|
||||
{
|
||||
if ( !isset( $v[2] ) and $v[1] and $v[0] )
|
||||
{
|
||||
@@ -641,11 +641,6 @@ class settings extends Controller
|
||||
$form->add( new Number( 'forums_solved_topic_reengage', SettingsClass::i()->forums_solved_topic_reengage , FALSE, array( 'min' => 1, 'max' => 365, 'unlimited' => 0, 'unlimitedLang' => 'forums_solved_topic_reengage_never' ), NULL, Member::loggedIn()->language()->addToStack('forums_solved_nudge_experts_prefix'), Member::loggedIn()->language()->addToStack('forums_solved_nudge_experts_suffix') ) );
|
||||
$form->add( new Number( 'forums_helpful_highlight', SettingsClass::i()->forums_helpful_highlight , FALSE, array( 'min' => 1, 'unlimited' => 0, 'unlimitedLang' => 'forums_helpful_highlight_never' ), NULL, Member::loggedIn()->language()->addToStack('forums_helpful_highlight_prefix'), Member::loggedIn()->language()->addToStack('forums_helpful_highlight_suffix') ) );
|
||||
|
||||
if( Bridge::i()->featureIsEnabled( 'experts' ) )
|
||||
{
|
||||
$form->add( new Number( 'forums_solved_nudge_experts', SettingsClass::i()->forums_solved_nudge_experts, FALSE, array( 'min' => 1, 'max' => 365, 'unlimited' => 0, 'unlimitedLang' => 'forums_solved_nudge_experts_never' ), NULL, Member::loggedIn()->language()->addToStack('forums_solved_topic_reengage_prefix'), Member::loggedIn()->language()->addToStack('forums_solved_topic_reengage_suffix') ) );
|
||||
}
|
||||
|
||||
$form->add( new YesNo( "forum_post_use_minimal_editor", (bool) SettingsClass::i()->forum_post_use_minimal_editor, false ) );
|
||||
|
||||
$form->addHeader('topic_overview_settings');
|
||||
@@ -699,4 +694,93 @@ class settings extends Controller
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
/**
|
||||
* Auto-Lock topics settings
|
||||
*
|
||||
* @return Form|string
|
||||
*/
|
||||
protected function manageAutolock() : Form|string
|
||||
{
|
||||
$settings = SettingsClass::i()->autolock_topic_settings ? json_decode( SettingsClass::i()->autolock_topic_settings, true ) : [];
|
||||
|
||||
$form = new Form;
|
||||
$form->add( new YesNo( 'autolock_enabled', $settings['enabled'] ?? null, false, [
|
||||
'togglesOn' => [ 'autolock_days', 'autolock_pinned', 'autolock_featured', 'autolock_forums', 'autolock_members', 'autolock_tags' ]
|
||||
] ) );
|
||||
$form->add( new Number( 'autolock_days', $settings['days'] ?? 7, null, suffix: Member::loggedIn()->language()->addToStack( 'autolock_days_suffix' ), id: 'autolock_days' ) );
|
||||
$form->add( new YesNo( 'autolock_pinned', $settings['pinned'] ?? false, false, id: 'autolock_pinned' ) );
|
||||
$form->add( new YesNo( 'autolock_featured', $settings['featured'] ?? false, id: 'autolock_featured' ) );
|
||||
|
||||
$form->add( new Node( 'autolock_forums', $settings['forums'] ?? null, false, [
|
||||
'class' => Forum::class,
|
||||
'multiple' => true
|
||||
], id: 'autolock_forums' ) );
|
||||
|
||||
$excludedMembers = [];
|
||||
if( !empty( $settings['members'] ) )
|
||||
{
|
||||
$excludedMembers = iterator_to_array(
|
||||
new ActiveRecordIterator(
|
||||
Db::i()->select( '*', 'core_members', Db::i()->in( 'member_id', $settings['members'] ) ),
|
||||
Member::class
|
||||
)
|
||||
);
|
||||
}
|
||||
$form->add( new FormMember( 'autolock_members', count( $excludedMembers ) ? $excludedMembers : null, false, [ 'multiple' => null ], id: 'autolock_members' ) );
|
||||
|
||||
$form->add( new Text( 'autolock_tags', $settings['tags'] ?? null, false, [
|
||||
'autocomplete' => array(
|
||||
'unique' => TRUE,
|
||||
'source' => Tag::allTags(),
|
||||
'resultItemTemplate' => 'core.autocomplete.tagsResultItem',
|
||||
'freeChoice' => false,
|
||||
'minimized' => false,
|
||||
'alphabetical' => true,
|
||||
'addTokenText' => Member::loggedIn()->language()->get( 'tags_optional' ),
|
||||
)
|
||||
], id: 'autolock_tags' ) );
|
||||
|
||||
if( $values = $form->values() )
|
||||
{
|
||||
if( $values['autolock_enabled'] )
|
||||
{
|
||||
$members = FormMember::stringValue( $values['autolock_members'] );
|
||||
$settings = [
|
||||
'enabled' => true,
|
||||
'days' => $values['autolock_days'],
|
||||
'pinned' => $values['autolock_pinned'],
|
||||
'featured' => $values['autolock_featured'],
|
||||
'members' => ( $members ? explode( "\n", $members ) : null ),
|
||||
'forums' => ( !empty( $values['autolock_forums'] ) ? array_keys( $values['autolock_forums'] ) : null ),
|
||||
'tags' => $values['autolock_tags']
|
||||
];
|
||||
}
|
||||
else
|
||||
{
|
||||
$settings = [ 'enabled' => false ];
|
||||
}
|
||||
|
||||
$form->saveAsSettings([
|
||||
'autolock_topic_settings' => json_encode( $settings )
|
||||
]);
|
||||
|
||||
Session::i()->log( 'acplogs__forums_autolock' );
|
||||
|
||||
/* And disable task if this feaure is disabled */
|
||||
if( !$values['autolock_enabled'] )
|
||||
{
|
||||
Db::i()->update( 'core_tasks', array( 'enabled' => 0 ), array( '`key`=?', 'autolock' ) );
|
||||
}
|
||||
/* Or enable it if necessary */
|
||||
else
|
||||
{
|
||||
Db::i()->update( 'core_tasks', array( 'enabled' => 1 ), array( '`key`=?', 'autolock' ) );
|
||||
}
|
||||
|
||||
Output::i()->redirect( Url::internal( 'app=forums&module=forums&controller=settings&tab=autolock' ), 'saved' );
|
||||
}
|
||||
|
||||
return $form;
|
||||
}
|
||||
}
|
||||
@@ -68,7 +68,8 @@ class forums extends Controller
|
||||
* @return void
|
||||
*/
|
||||
protected function manage() : void
|
||||
{
|
||||
{
|
||||
Output::i()->bodyAttributes['contentClass'] = ForumClass::class;
|
||||
$forum = NULL;
|
||||
try
|
||||
{
|
||||
@@ -538,7 +539,7 @@ class forums extends Controller
|
||||
}
|
||||
|
||||
/* Data Layer Context */
|
||||
if ( !Request::i()->isAjax AND Settings::i()->core_datalayer_enabled )
|
||||
if ( !Request::i()->isAjax AND DataLayer::enabled() )
|
||||
{
|
||||
foreach ( $forum->getDataLayerProperties() as $key => $value )
|
||||
{
|
||||
|
||||
@@ -47,6 +47,7 @@ use function count;
|
||||
use function defined;
|
||||
use function in_array;
|
||||
use function intval;
|
||||
use function is_numeric;
|
||||
use const IPS\LARGE_TOPIC_REPLIES;
|
||||
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
@@ -281,12 +282,12 @@ class topic extends Controller
|
||||
}
|
||||
array_unshift( $paginationKeys, 'queued_posts' );
|
||||
|
||||
$customPaginationWhere[] = array( 'topic_id=? AND queued=1', $topic->id );
|
||||
$customPaginationWhere[] = array( 'topic_id=? AND queued=1', $topic->tid );
|
||||
}
|
||||
$customPaginationWhere = Bridge::i()->modifyTopicCommentFilter( $topic, $customPaginationWhere );
|
||||
if ( !empty( $customPaginationWhere ) )
|
||||
{
|
||||
$customPaginationWhere[] = array( "topic_id=?", $topic->id );
|
||||
$customPaginationWhere[] = array( "topic_id=?", $topic->tid );
|
||||
$authorCol = Post::$databasePrefix . Post::$databaseColumnMap['author'];
|
||||
if ( $topic->canViewHiddenComments() )
|
||||
{
|
||||
@@ -393,9 +394,6 @@ class topic extends Controller
|
||||
/* A convenient hook point to do any further set up */
|
||||
$this->finishManage( $topic );
|
||||
|
||||
$votes = array();
|
||||
$topicVotes = array();
|
||||
|
||||
/* Online User Location */
|
||||
Session::i()->setLocation( $topic->url(), ( $topic->container()->password or !$topic->container()->can_view_others ) ? 0 : $topic->onlineListPermissions(), 'loc_forums_viewing_topic', array( $topic->title => FALSE ) );
|
||||
|
||||
@@ -473,7 +471,6 @@ class topic extends Controller
|
||||
'text' => $truncatedAnswer,
|
||||
'url' => (string) $answer->url(),
|
||||
'dateCreated' => DateTime::ts( $answer->$dateColumn )->format( DateTimeInterface::ATOM ),
|
||||
'upvoteCount' => ( $topic->isArchived() ) ? $answer->field_int : $answer->post_field_int,
|
||||
'author' => array(
|
||||
'@type' => 'Person',
|
||||
'name' => Member::load( $answer->$authorIdColumn )->name,
|
||||
@@ -506,7 +503,6 @@ class topic extends Controller
|
||||
'text' => $lastComment->truncated( TRUE, NULL ),
|
||||
'url' => (string) $lastComment->url(),
|
||||
'dateCreated' => DateTime::ts( $lastComment->$dateColumn )->format( DateTime::ISO8601 ),
|
||||
'upvoteCount' => ( $topic->isArchived() ) ? $lastComment->field_int : $lastComment->post_field_int,
|
||||
'author' => array(
|
||||
'@type' => 'Person',
|
||||
'name' => Member::load( $lastComment->$authorIdColumn )->name,
|
||||
@@ -576,7 +572,11 @@ class topic extends Controller
|
||||
|
||||
if ( $truncatedComment = $comment->truncated( TRUE, NULL ) )
|
||||
{
|
||||
$url = $topic->url()->setPage( 'page', Request::i()->page );
|
||||
$url = $topic->url();
|
||||
if( isset( Request::i()->page ) and is_numeric( Request::i()->page ) )
|
||||
{
|
||||
$url = $url->setPage( 'page', Request::i()->page );
|
||||
}
|
||||
|
||||
$commentJson[$i] = array(
|
||||
'@type' => $isQuestion ? 'Answer' : 'Comment',
|
||||
@@ -597,14 +597,7 @@ class topic extends Controller
|
||||
$commentJson[$i]['author']['url'] = (string)Member::load( $comment->$authorIdColumn )->url();
|
||||
}
|
||||
|
||||
if( $isQuestion )
|
||||
{
|
||||
$commentJson[$i]['upvoteCount'] = ( $topic->isArchived() ) ? $comment->field_int : $comment->post_field_int;
|
||||
}
|
||||
else
|
||||
{
|
||||
$commentJson[$i]['upvoteCount'] = $comment->reactionCount();
|
||||
}
|
||||
$commentJson[$i]['upvoteCount'] = $comment->reactionCount();
|
||||
|
||||
$i++;
|
||||
}
|
||||
@@ -649,6 +642,13 @@ class topic extends Controller
|
||||
$current = $firstPost;
|
||||
}
|
||||
|
||||
/* Set og:image meta tags */
|
||||
if( count( $file = $topic->imageAttachments(1 ) ) )
|
||||
{
|
||||
$object = File::get( 'core_Attachment', $file[0]['attach_location'] );
|
||||
Output::i()->metaTags['og:image'] = (string) $object->url->setScheme( ( mb_substr( Settings::i()->base_url, 0, 5 ) === 'https' ) ? 'https' : 'http' );
|
||||
}
|
||||
|
||||
if( $current )
|
||||
{
|
||||
Output::i()->jsonLd['topic'] = array_merge_recursive( array(
|
||||
@@ -658,8 +658,6 @@ class topic extends Controller
|
||||
'dateCreated' => DateTime::ts( $topic->start_date )->format( DateTimeInterface::ATOM ),
|
||||
'datePublished' => DateTime::ts( $topic->start_date )->format( DateTimeInterface::ATOM ),
|
||||
'dateModified' => DateTime::ts( $topic->last_post )->format( DateTimeInterface::ATOM ),
|
||||
/* Image is required, but we don't have "topic images", so we'll use topic starter's profile photo for now */
|
||||
'image' => (string) Member::load( $topic->starter_id )->get_photo( TRUE, TRUE ),
|
||||
'author' => array(
|
||||
'@type' => 'Person',
|
||||
'name' => Member::load( $topic->starter_id )->name,
|
||||
@@ -678,6 +676,11 @@ class topic extends Controller
|
||||
)
|
||||
)
|
||||
), Output::i()->jsonLd['topic'] );
|
||||
|
||||
if( isset( Output::i()->metaTags['og:image'] ) )
|
||||
{
|
||||
Output::i()->jsonLd['topic']['image'] = Output::i()->metaTags['og:image'];
|
||||
}
|
||||
}
|
||||
|
||||
if( !$topic->isArchived() )
|
||||
@@ -689,13 +692,6 @@ class topic extends Controller
|
||||
];
|
||||
}
|
||||
|
||||
/* Add og:image meta tags */
|
||||
if( count( $file = $topic->imageAttachments(1 ) ) )
|
||||
{
|
||||
$object = File::get( 'core_Attachment', $file[0]['attach_location'] );
|
||||
Output::i()->metaTags['og:image'] = (string) $object->url->setScheme( ( mb_substr( Settings::i()->base_url, 0, 5 ) === 'https' ) ? 'https' : 'http' );
|
||||
}
|
||||
|
||||
/* Noindex if helpful filter applied */
|
||||
if( isset( Request::i()->show ) )
|
||||
{
|
||||
@@ -707,7 +703,7 @@ class topic extends Controller
|
||||
|
||||
/* Show topic */
|
||||
Output::i()->cssFiles = array_merge( Output::i()->cssFiles, Theme::i()->css( 'topics.css', 'forums' ) );
|
||||
Output::i()->output .= Theme::i()->getTemplate( 'topics' )->topic( $topic, $comments, $votes, $nextUnread, $pagination, $topicVotes, $firstPost, $viewerIsFollowingTheseExperts );
|
||||
Output::i()->output .= Theme::i()->getTemplate( 'topics' )->topic( $topic, $comments, $nextUnread, $pagination, $firstPost, $viewerIsFollowingTheseExperts );
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -917,128 +913,6 @@ class topic extends Controller
|
||||
Output::i()->redirect( $topic->url() );
|
||||
}
|
||||
|
||||
/**
|
||||
* Rate Question
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function rateQuestion() : void
|
||||
{
|
||||
/* CSRF Check */
|
||||
Session::i()->csrfCheck();
|
||||
|
||||
/* Get the question */
|
||||
try
|
||||
{
|
||||
$question = TopicClass::loadAndCheckPerms( Request::i()->id );
|
||||
}
|
||||
catch ( OutOfRangeException $e )
|
||||
{
|
||||
Output::i()->error( 'node_error', '2F173/8', 404, '' );
|
||||
}
|
||||
|
||||
/* Voting up or down? */
|
||||
$rating = intval( Request::i()->rating );
|
||||
if ( $rating !== 1 and $rating !== -1 )
|
||||
{
|
||||
Output::i()->error( 'form_bad_value', '2F173/A', 403, '' );
|
||||
}
|
||||
|
||||
/* Check we can cast this vote */
|
||||
if ( !$question->canVote( $rating ) )
|
||||
{
|
||||
Output::i()->error( 'no_module_permission', '2F173/9', 403, '' );
|
||||
}
|
||||
|
||||
/* If we have an existing vote, remove it first */
|
||||
$ratings = $question->votes();
|
||||
if ( isset( $ratings[ Member::loggedIn()->member_id ] ) )
|
||||
{
|
||||
Db::i()->delete( 'forums_question_ratings', array( 'topic=? AND `member`=?', $question->tid, Member::loggedIn()->member_id ) );
|
||||
}
|
||||
|
||||
/* Revoting for the same thing you already voted for should remove your vote - so don't insert if we voted for the same thing we did before */
|
||||
if ( !isset( $ratings[ Member::loggedIn()->member_id ] ) OR $ratings[ Member::loggedIn()->member_id ] != $rating )
|
||||
{
|
||||
Db::i()->insert( 'forums_question_ratings', array(
|
||||
'topic' => $question->tid,
|
||||
'forum' => $question->forum_id,
|
||||
'member' => Member::loggedIn()->member_id,
|
||||
'rating' => $rating,
|
||||
'date' => time()
|
||||
), TRUE );
|
||||
}
|
||||
|
||||
/* Rebuild count */
|
||||
$question->question_rating = Db::i()->select( 'SUM(rating)', 'forums_question_ratings', array( 'topic=?', $question->tid ), NULL, NULL, NULL, NULL, Db::SELECT_FROM_WRITE_SERVER )->first();
|
||||
$question->save();
|
||||
|
||||
/* Redirect back */
|
||||
Output::i()->redirect( $question->url() );
|
||||
}
|
||||
|
||||
/**
|
||||
* Rate Answer
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function rateAnswer() : void
|
||||
{
|
||||
Session::i()->csrfCheck();
|
||||
|
||||
try
|
||||
{
|
||||
$question = TopicClass::loadAndCheckPerms( Request::i()->id );
|
||||
$answer = Post::loadAndCheckPerms( Request::i()->answer );
|
||||
}
|
||||
catch ( Exception $e )
|
||||
{
|
||||
Output::i()->error( 'node_error', '2F173/4', 404, '' );
|
||||
}
|
||||
|
||||
$rating = intval( Request::i()->rating );
|
||||
|
||||
if ( !$answer->item()->can('read') or !$answer->canVote( $rating ) )
|
||||
{
|
||||
Output::i()->error( 'no_module_permission', '2F173/5', 403, '' );
|
||||
}
|
||||
|
||||
$rating = intval( Request::i()->rating );
|
||||
if ( $rating !== 1 and $rating !== -1 )
|
||||
{
|
||||
Output::i()->error( 'form_bad_value', '2F173/6', 403, '' );
|
||||
}
|
||||
|
||||
$ratings = $question->answerVotes( Member::loggedIn() );
|
||||
|
||||
/* If we've already rated the answer, remove that first */
|
||||
Db::i()->delete( 'forums_answer_ratings', array( 'topic=? AND post=? AND `member`=?', $question->tid, $answer->pid, Member::loggedIn()->member_id ) );
|
||||
|
||||
/* Revoting for the same thing you already voted for should remove your vote - so don't insert if we voted for the same thing we did before */
|
||||
if ( !isset( $ratings[ $answer->pid ] ) OR $ratings[ $answer->pid ] != $rating )
|
||||
{
|
||||
Db::i()->insert( 'forums_answer_ratings', array(
|
||||
'post' => $answer->pid,
|
||||
'topic' => $question->tid,
|
||||
'member' => Member::loggedIn()->member_id,
|
||||
'rating' => $rating,
|
||||
'date' => time()
|
||||
), TRUE );
|
||||
}
|
||||
|
||||
$answer->post_field_int = (int) Db::i()->select( 'SUM(rating)', 'forums_answer_ratings', array( 'post=?', $answer->pid ), NULL, NULL, NULL, NULL, Db::SELECT_FROM_WRITE_SERVER )->first();
|
||||
$answer->save();
|
||||
|
||||
if ( Request::i()->isAjax() )
|
||||
{
|
||||
Output::i()->json( array( 'votes' => $answer->post_field_int, 'canVoteUp' => $answer->canVote(1), 'canVoteDown' => $answer->canVote(-1) ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
Output::i()->redirect( $answer->url() );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Best Answer
|
||||
*
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000075,
|
||||
"name": "5.0.7 Beta 1",
|
||||
"steps": {
|
||||
"queries": true,
|
||||
"lang": true,
|
||||
"theme": true,
|
||||
"themeeditor": true,
|
||||
"javascript": true,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"files": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"forums\/front\/controllers\/forum\/ips.forum.flow.js"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"orders": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"normal": {
|
||||
"added": [
|
||||
"can_assign_topic"
|
||||
],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"js": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"1": {
|
||||
"method": "delete",
|
||||
"params": [
|
||||
"core_solved_index",
|
||||
[
|
||||
[
|
||||
"member_id not in (?)",
|
||||
{
|
||||
"query": "SELECT member_id FROM `core_members`",
|
||||
"binds": [],
|
||||
"isUnion": false
|
||||
}
|
||||
]
|
||||
]
|
||||
]
|
||||
},
|
||||
"2": {
|
||||
"method": "delete",
|
||||
"params": [
|
||||
"core_solved_index",
|
||||
[
|
||||
[
|
||||
"member_given not in (?)",
|
||||
{
|
||||
"query": "SELECT member_id FROM `core_members`",
|
||||
"binds": [],
|
||||
"isUnion": false
|
||||
}
|
||||
]
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/forums\/clubForums",
|
||||
"front\/forums\/forumDisplay",
|
||||
"front\/forums\/forumPasswordPopup",
|
||||
"front\/forums\/forumSelector",
|
||||
"front\/forums\/forumTable",
|
||||
"front\/index\/index",
|
||||
"front\/index\/indexButtons",
|
||||
"front\/index\/simplifiedViewForumSidebar",
|
||||
"front\/index\/simplifiedViewSidebar",
|
||||
"front\/submit\/createTopicForm",
|
||||
"front\/topics\/postContainer",
|
||||
"front\/topics\/topic"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/forums.css"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"categories": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"settings": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"layout_forums_forum",
|
||||
"layout_forums_topic",
|
||||
"layout_forums_post",
|
||||
"layout_forum_topic_view_firstpost"
|
||||
],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000076,
|
||||
"name": "5.0.7 Beta 2",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": true,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"categories": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"settings": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"layout_forums_forum",
|
||||
"layout_forums_topic",
|
||||
"layout_forums_post",
|
||||
"layout_forum_topic_view_firstpost"
|
||||
],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000077,
|
||||
"name": "5.0.7 Beta 2",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": true,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"categories": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"settings": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"layout_forums_forum",
|
||||
"layout_forums_topic",
|
||||
"layout_forums_post",
|
||||
"layout_forum_topic_view_firstpost"
|
||||
],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": [
|
||||
"app=forums&module=forums&controller=settings&searchResult=form_forums_solved_nudge_experts"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000078,
|
||||
"name": "5.0.7 Beta 3",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": true,
|
||||
"theme": false,
|
||||
"themeeditor": true,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": true,
|
||||
"settings": true,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"normal": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": [
|
||||
"forums_solved_nudge_experts",
|
||||
"forums_solved_nudge_experts_prefix",
|
||||
"forums_solved_nudge_experts_suffix",
|
||||
"forums_solved_nudge_experts_never",
|
||||
"forums_solved_nudge_experts_desc"
|
||||
]
|
||||
},
|
||||
"js": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": [
|
||||
"forums_solved_nudge_experts"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"categories": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"settings": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"layout_forums_forum",
|
||||
"layout_forums_topic",
|
||||
"layout_forums_post",
|
||||
"layout_forum_topic_view_firstpost"
|
||||
],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000079,
|
||||
"name": "5.0.7 Beta 4",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": true,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"categories": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"settings": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"layout_forums_forum",
|
||||
"layout_forums_topic",
|
||||
"layout_forums_post",
|
||||
"layout_forum_topic_view_firstpost"
|
||||
],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000080,
|
||||
"name": "5.0.7",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": true,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"categories": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"settings": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"layout_forums_forum",
|
||||
"layout_forums_topic",
|
||||
"layout_forums_post",
|
||||
"layout_forum_topic_view_firstpost"
|
||||
],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000081,
|
||||
"name": "5.0.7",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": true,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"categories": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"settings": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"layout_forums_forum",
|
||||
"layout_forums_topic",
|
||||
"layout_forums_post",
|
||||
"layout_forum_topic_view_firstpost"
|
||||
],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000082,
|
||||
"name": "5.0.7",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": true,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"categories": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"settings": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"layout_forums_forum",
|
||||
"layout_forums_topic",
|
||||
"layout_forums_post",
|
||||
"layout_forum_topic_view_firstpost"
|
||||
],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000800,
|
||||
"name": "5.0.8 Alpha 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": true,
|
||||
"themeeditor": true,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/index\/forumGridItem",
|
||||
"front\/index\/forumRow",
|
||||
"front\/index\/forumSummaryRow",
|
||||
"front\/index\/index",
|
||||
"front\/index\/simplifiedViewSidebar",
|
||||
"front\/widgets\/postFeed",
|
||||
"front\/widgets\/topicFeedRow"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"categories": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"settings": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"layout_forums_forum",
|
||||
"layout_forums_topic",
|
||||
"layout_forums_post",
|
||||
"layout_forum_topic_view_firstpost"
|
||||
],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000801,
|
||||
"name": "5.0.8 Alpha 2",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": true,
|
||||
"theme": true,
|
||||
"themeeditor": true,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"normal": {
|
||||
"added": [
|
||||
"__defart_nodegroup__forums_pl",
|
||||
"__defart_nodegroup__forums",
|
||||
"forums_solved_nudge_experts_prefix",
|
||||
"forums_solved_nudge_experts_suffix"
|
||||
],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"js": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/forums\/forumDisplay"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"categories": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"settings": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"layout_forums_forum",
|
||||
"layout_forums_topic",
|
||||
"layout_forums_post",
|
||||
"layout_forum_topic_view_firstpost"
|
||||
],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000802,
|
||||
"name": "5.0.8 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": true,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"categories": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"settings": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"layout_forums_forum",
|
||||
"layout_forums_topic",
|
||||
"layout_forums_post",
|
||||
"layout_forum_topic_view_firstpost"
|
||||
],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000803,
|
||||
"name": "5.0.8 Beta 2",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000804,
|
||||
"name": "5.0.8 Beta 3",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000805,
|
||||
"name": "5.0.8",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000900,
|
||||
"name": "5.0.9 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000901,
|
||||
"name": "5.0.9 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000902,
|
||||
"name": "5.0.9 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000903,
|
||||
"name": "5.0.9 Beta 2",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000904,
|
||||
"name": "5.0.9",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000905,
|
||||
"name": "5.0.9",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000906,
|
||||
"name": "5.0.10 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": true,
|
||||
"theme": true,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"normal": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"ad_forum_listing",
|
||||
"ad_topic_view"
|
||||
],
|
||||
"removed": [
|
||||
"moderator_actions"
|
||||
]
|
||||
},
|
||||
"js": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/submit\/createTopicForm",
|
||||
"front\/submit\/createTopicModOptions",
|
||||
"front\/widgets\/postFeed",
|
||||
"front\/widgets\/topicFeedRow"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000907,
|
||||
"name": "5.0.10 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000908,
|
||||
"name": "5.0.10 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000909,
|
||||
"name": "5.0.10 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000910,
|
||||
"name": "5.0.10 Beta 2",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000911,
|
||||
"name": "5.0.10 Beta 3",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000912,
|
||||
"name": "5.0.10 Beta 4",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000913,
|
||||
"name": "5.0.10 Beta 4",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000914,
|
||||
"name": "5.0.10",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000915,
|
||||
"name": "5.0.10",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000916,
|
||||
"name": "5.0.10",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000917,
|
||||
"name": "5.0.10",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000918,
|
||||
"name": "5.0.10",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000919,
|
||||
"name": "5.0.10",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5000920,
|
||||
"name": "5.0.10",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": true,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": true,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"files": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"orders": {
|
||||
"added": [
|
||||
"global\/\/dev\/js\/\/framework\/",
|
||||
"global\/\/dev\/js\/\/library\/",
|
||||
"global\/\/dev\/js\/\/library\/\/jquery",
|
||||
"global\/\/dev\/js\/\/library\/\/linkify"
|
||||
],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"added": [
|
||||
"app=forums&module=forums&controller=settings&tab=autolock"
|
||||
],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5001100,
|
||||
"name": "5.0.11 Beta 1",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": true,
|
||||
"theme": true,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": true,
|
||||
"settings": true,
|
||||
"tasks": true,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"normal": {
|
||||
"added": [
|
||||
"r__autolock_settings",
|
||||
"autolock",
|
||||
"autolock_enabled",
|
||||
"autolock_enabled_desc",
|
||||
"autolock_days",
|
||||
"autolock_days_suffix",
|
||||
"autolock_pinned",
|
||||
"autolock_featured",
|
||||
"autolock_members",
|
||||
"autolock_tags",
|
||||
"autolock_forums"
|
||||
],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"js": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"added": [
|
||||
"autolock_topic_settings"
|
||||
],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"added": [
|
||||
"autolock"
|
||||
],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/forums\/clubForums",
|
||||
"front\/forums\/topicHover",
|
||||
"front\/topics\/post",
|
||||
"front\/topics\/postContainer",
|
||||
"front\/topics\/postHeader"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5001101,
|
||||
"name": "5.0.11 Beta 1",
|
||||
"steps": {
|
||||
"queries": true,
|
||||
"lang": false,
|
||||
"theme": true,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"1": {
|
||||
"method": "changeIndex",
|
||||
"params": [
|
||||
"forums_archive_posts",
|
||||
"archive_topic_id",
|
||||
{
|
||||
"type": "key",
|
||||
"name": "archive_topic_id",
|
||||
"columns": [
|
||||
"archive_topic_id",
|
||||
"archive_content_date",
|
||||
"archive_id",
|
||||
"archive_queued"
|
||||
],
|
||||
"length": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"html": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/forums\/forumDisplay",
|
||||
"front\/forums\/topicRow",
|
||||
"front\/forums\/topicRowSnippet",
|
||||
"front\/index\/simplifiedTopicRow",
|
||||
"front\/index\/simplifiedTopicRowSnippet",
|
||||
"front\/submit\/createTopicForm",
|
||||
"front\/topics\/topic",
|
||||
"front\/widgets\/postFeed",
|
||||
"front\/widgets\/topicFeedRow"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"css": {
|
||||
"added": [],
|
||||
"edited": [
|
||||
"front\/topics.css"
|
||||
],
|
||||
"removed": []
|
||||
},
|
||||
"resources": {
|
||||
"added": [],
|
||||
"edited": [],
|
||||
"removed": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5001102,
|
||||
"name": "5.0.11 Beta 2",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"id": 5001103,
|
||||
"name": "5.0.11",
|
||||
"steps": {
|
||||
"queries": false,
|
||||
"lang": false,
|
||||
"theme": false,
|
||||
"themeeditor": false,
|
||||
"javascript": false,
|
||||
"emailTemplates": false,
|
||||
"acpSearchKeywords": false,
|
||||
"settings": false,
|
||||
"tasks": false,
|
||||
"modules": false,
|
||||
"widgets": false,
|
||||
"customOptions": false,
|
||||
"customRoutines": false
|
||||
},
|
||||
"forceMainUpgrader": false,
|
||||
"forceManualDownloadNoCiC": false,
|
||||
"forceManualDownloadCiC": false
|
||||
}
|
||||
Loaded 100 of 1407 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user