Version 4.1.19
This commit is contained in:
1 parent
28bd025b35
commit
2bd5025018
2674 files changed
+233518
-77766
No files matched your search
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Core Application Class
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 18 Feb 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
@@ -47,35 +47,15 @@ class _Application extends \IPS\Application
|
||||
*/
|
||||
public function get__badge()
|
||||
{
|
||||
/* Is there an update to show? */
|
||||
$badge = NULL;
|
||||
|
||||
if( $this->update_version )
|
||||
$return = parent::get__badge();
|
||||
|
||||
if ( $return )
|
||||
{
|
||||
$data = json_decode( $this->update_version, TRUE );
|
||||
|
||||
if( !empty($data['longversion']) AND $data['longversion'] > $this->long_version )
|
||||
{
|
||||
$released = NULL;
|
||||
|
||||
if( $data['released'] AND intval($data['released']) == $data['released'] AND \strlen($data['released']) == 10 )
|
||||
{
|
||||
$released = (string) \IPS\DateTime::ts( $data['released'] )->localeDate();
|
||||
}
|
||||
else if( $data['released'] )
|
||||
{
|
||||
$released = $data['released'];
|
||||
}
|
||||
|
||||
$badge = array(
|
||||
0 => 'new',
|
||||
1 => '',
|
||||
2 => \IPS\Theme::i()->getTemplate( 'global', 'core' )->updatebadge( $data['version'], \IPS\Http\Url::internal( 'app=core&module=system&controller=upgrade', 'admin' ), $released, FALSE )
|
||||
);
|
||||
}
|
||||
$availableUpgrade = $this->availableUpgrade( TRUE, FALSE );
|
||||
$return[2] = \IPS\Theme::i()->getTemplate( 'global', 'core' )->updatebadge( $availableUpgrade['version'], \IPS\Http\Url::internal( 'app=core&module=system&controller=upgrade', 'admin' ), $availableUpgrade['released'], FALSE );
|
||||
}
|
||||
|
||||
return $badge;
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -109,4 +89,139 @@ class _Application extends \IPS\Application
|
||||
$module->key == 'contact' and $controller == 'contact'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Can view page even when site is offline
|
||||
*
|
||||
* @param \IPS\Application\Module $module The module
|
||||
* @param string $controller The controller
|
||||
* @param string|NULL $do To "do" parameter
|
||||
* @return bool
|
||||
*/
|
||||
public function allowOfflineAccess( \IPS\Application\Module $module, $controller, $do )
|
||||
{
|
||||
return (
|
||||
$module->key == 'system'
|
||||
and
|
||||
(
|
||||
in_array( $controller, array(
|
||||
'login', // Because you can login when offline
|
||||
'embed', // Because the offline message can contain embedded media
|
||||
'lostpass',
|
||||
'register'
|
||||
) )
|
||||
or
|
||||
(
|
||||
$controller === 'ajax' and $do === 'states' // Makes sure address input still works within the ACP otherwise the form to turn site back online is broken
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Default front navigation
|
||||
*
|
||||
* @code
|
||||
|
||||
// Each item...
|
||||
array(
|
||||
'key' => 'Example', // The extension key
|
||||
'app' => 'core', // [Optional] The extension application. If ommitted, uses this application
|
||||
'config' => array(...), // [Optional] The configuration for the menu item
|
||||
'title' => 'SomeLangKey', // [Optional] If provided, the value of this language key will be copied to menu_item_X
|
||||
'children' => array(...), // [Optional] Array of child menu items for this item. Each has the same format.
|
||||
)
|
||||
|
||||
return array(
|
||||
'rootTabs' => array(), // These go in the top row
|
||||
'browseTabs' => array(), // These go under the Browse tab on a new install or when restoring the default configuraiton; or in the top row if installing the app later (when the Browse tab may not exist)
|
||||
'browseTabsEnd' => array(), // These go under the Browse tab after all other items on a new install or when restoring the default configuraiton; or in the top row if installing the app later (when the Browse tab may not exist)
|
||||
'activityTabs' => array(), // These go under the Activity tab on a new install or when restoring the default configuraiton; or in the top row if installing the app later (when the Activity tab may not exist)
|
||||
)
|
||||
* @endcode
|
||||
* @return array
|
||||
*/
|
||||
public function defaultFrontNavigation()
|
||||
{
|
||||
$activityTabs = array(
|
||||
array( 'key' => 'AllActivity' ),
|
||||
array( 'key' => 'YourActivityStreams' ),
|
||||
);
|
||||
|
||||
foreach ( array( 1, 2 ) as $k )
|
||||
{
|
||||
try
|
||||
{
|
||||
\IPS\core\Stream::load( $k );
|
||||
$activityTabs[] = array(
|
||||
'key' => 'YourActivityStreamsItem',
|
||||
'config' => array( 'menu_stream_id' => $k )
|
||||
);
|
||||
}
|
||||
catch ( \Exception $e ) { }
|
||||
}
|
||||
|
||||
$activityTabs[] = array( 'key' => 'Search' );
|
||||
|
||||
return array(
|
||||
'rootTabs' => array(),
|
||||
'browseTabsEnd' => array(
|
||||
array( 'key' => 'Guidelines' ),
|
||||
array( 'key' => 'StaffDirectory' ),
|
||||
array( 'key' => 'OnlineUsers' ),
|
||||
array( 'key' => 'Leaderboard' )
|
||||
),
|
||||
'activityTabs' => $activityTabs
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Perform some legacy URL parameter conversions
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function convertLegacyParameters()
|
||||
{
|
||||
/* Convert §ion= to &controller= */
|
||||
if ( isset( \IPS\Request::i()->section ) AND !isset( \IPS\Request::i()->controller ) )
|
||||
{
|
||||
\IPS\Request::i()->controller = \IPS\Request::i()->section;
|
||||
}
|
||||
|
||||
/* Convert &showuser= */
|
||||
if ( isset( \IPS\Request::i()->showuser ) and is_numeric( \IPS\Request::i()->showuser ) )
|
||||
{
|
||||
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=members&controller=profile&id=' . \IPS\Request::i()->showuser ) );
|
||||
}
|
||||
|
||||
/* Redirect ?app=core&module=attach§ion=attach&attach_rel_module=post&attach_id= */
|
||||
if ( isset( \IPS\Request::i()->app ) AND \IPS\Request::i()->app == 'core' AND isset( \IPS\Request::i()->controller ) AND \IPS\Request::i()->controller == 'attach' AND isset( \IPS\Request::i()->attach_id ) AND is_numeric( \IPS\Request::i()->attach_id ) )
|
||||
{
|
||||
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( "applications/core/interface/file/attachment.php?id=" . \IPS\Request::i()->attach_id, 'none' ) );
|
||||
}
|
||||
|
||||
/* redirect vnc to new streams */
|
||||
if( isset( \IPS\Request::i()->app ) AND \IPS\Request::i()->app == 'core' AND isset( \IPS\Request::i()->controller ) AND \IPS\Request::i()->controller == 'vnc' )
|
||||
{
|
||||
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=discover&controller=streams' ) );
|
||||
}
|
||||
|
||||
/* redirect 4.0 activity page to streams */
|
||||
if( isset( \IPS\Request::i()->app ) AND \IPS\Request::i()->app == 'core' AND isset( \IPS\Request::i()->module ) AND (\IPS\Request::i()->module == 'activity' ) AND isset( \IPS\Request::i()->controller ) AND \IPS\Request::i()->controller == 'activity' )
|
||||
{
|
||||
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=discover&controller=streams' ) );
|
||||
}
|
||||
|
||||
/* redirect old messenger link */
|
||||
if( isset( \IPS\Request::i()->app ) AND \IPS\Request::i()->app == 'members' AND isset( \IPS\Request::i()->module ) AND (\IPS\Request::i()->module == 'messaging' ) )
|
||||
{
|
||||
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=messaging&controller=messenger', 'front', 'messaging' ) );
|
||||
}
|
||||
|
||||
/* redirect old messenger link */
|
||||
if( isset( \IPS\Request::i()->module ) AND \IPS\Request::i()->module == 'global' AND isset( \IPS\Request::i()->controller ) AND (\IPS\Request::i()->controller == 'register' ) )
|
||||
{
|
||||
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=system&controller=register', 'front', 'register', NULL, \IPS\Settings::i()->logins_over_https ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
/**
|
||||
* @brief Hello API
|
||||
* @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 3 Dec 2015
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
|
||||
namespace IPS\core\api;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
{
|
||||
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Hello API
|
||||
*/
|
||||
class _hello extends \IPS\Api\Controller
|
||||
{
|
||||
/**
|
||||
* GET /core/hello
|
||||
* Get basic information about the community.
|
||||
*
|
||||
* @return array
|
||||
* @apiresponse string communityName The name of the community
|
||||
* @apiresponse string communityUrl The community URL
|
||||
* @apiresponse string ipsVersion The IPS Community Suite version number
|
||||
*/
|
||||
public function GETindex()
|
||||
{
|
||||
return new \IPS\Api\Response( 200, array(
|
||||
'communityName' => \IPS\Settings::i()->board_name,
|
||||
'communityUrl' => \IPS\Settings::i()->base_url,
|
||||
'ipsVersion' => \IPS\Application::load('core')->version
|
||||
) );
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,281 @@
|
||||
<?php
|
||||
/**
|
||||
* @brief Members API
|
||||
* @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 3 Dec 2015
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
|
||||
namespace IPS\core\api;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
{
|
||||
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Members API
|
||||
*/
|
||||
class _members extends \IPS\Api\Controller
|
||||
{
|
||||
/**
|
||||
* GET /core/members
|
||||
* Get list of members
|
||||
*
|
||||
* @apiparam string sortBy What to sort by. Can be 'joined', 'name' or leave unspecified for ID
|
||||
* @apiparam string sortDir Sort direction. Can be 'asc' or 'desc' - defaults to 'asc'
|
||||
* @apiparam int page Page number
|
||||
* @return \IPS\Api\PaginatedResponse<IPS\Member>
|
||||
*/
|
||||
public function GETindex()
|
||||
{
|
||||
/* Where clause */
|
||||
$where = array();
|
||||
|
||||
/* Sort */
|
||||
$sortBy = ( isset( \IPS\Request::i()->sortBy ) and in_array( \IPS\Request::i()->sortBy, array( 'name', 'joined' ) ) ) ? \IPS\Request::i()->sortBy : 'member_id';
|
||||
$sortDir = ( isset( \IPS\Request::i()->sortDir ) and in_array( mb_strtolower( \IPS\Request::i()->sortDir ), array( 'asc', 'desc' ) ) ) ? \IPS\Request::i()->sortDir : 'asc';
|
||||
|
||||
/* Return */
|
||||
return new \IPS\Api\PaginatedResponse(
|
||||
200,
|
||||
\IPS\Db::i()->select( '*', 'core_members', $where, "{$sortBy} {$sortDir}", NULL, NULL, NULL, \IPS\Db::SELECT_SQL_CALC_FOUND_ROWS ),
|
||||
isset( \IPS\Request::i()->page ) ? \IPS\Request::i()->page : 1,
|
||||
'IPS\Member',
|
||||
\IPS\Db::i()->select( 'COUNT(*)', 'core_members', $where )->first()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* GET /core/members/{id}
|
||||
* Get information about a specific member
|
||||
*
|
||||
* @param int $id ID Number
|
||||
* @throws 1C292/2 INVALID_ID The member ID does not exist
|
||||
* @return \IPS\Member
|
||||
*/
|
||||
public function GETitem( $id )
|
||||
{
|
||||
try
|
||||
{
|
||||
$member = \IPS\Member::load( $id );
|
||||
if ( !$member->member_id )
|
||||
{
|
||||
throw new \OutOfRangeException;
|
||||
}
|
||||
|
||||
return new \IPS\Api\Response( 200, $member->apiOutput() );
|
||||
}
|
||||
catch ( \OutOfRangeException $e )
|
||||
{
|
||||
throw new \IPS\Api\Exception( 'INVALID_ID', '1C292/2', 404 );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create or update member
|
||||
*
|
||||
* @param \IPS\Member $member The member
|
||||
* @apiparam int group Group ID number
|
||||
* @throws 1C292/4 USERNAME_EXISTS The username provided is already in use
|
||||
* @throws 1C292/5 EMAIL_EXISTS The email address provided is already in use
|
||||
* @throws 1C292/6 INVALID_GROUP The group ID provided is not valid
|
||||
* @return \IPS\Member
|
||||
*/
|
||||
protected function _createOrUpdate( $member )
|
||||
{
|
||||
if ( isset( \IPS\Request::i()->name ) and \IPS\Request::i()->name != $member->name )
|
||||
{
|
||||
$existingUsername = \IPS\Member::load( \IPS\Request::i()->name, 'name' );
|
||||
if ( !$existingUsername->member_id )
|
||||
{
|
||||
$member->name = \IPS\Request::i()->name;
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new \IPS\Api\Exception( 'USERNAME_EXISTS', '1C292/4', 403 );
|
||||
}
|
||||
}
|
||||
|
||||
if ( isset( \IPS\Request::i()->email ) and \IPS\Request::i()->email != $member->email )
|
||||
{
|
||||
$existingEmail = \IPS\Member::load( \IPS\Request::i()->email, 'email' );
|
||||
if ( !$existingEmail->member_id )
|
||||
{
|
||||
$member->email = \IPS\Request::i()->email;
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new \IPS\Api\Exception( 'EMAIL_EXISTS', '1C292/5', 403 );
|
||||
}
|
||||
}
|
||||
|
||||
if ( isset( \IPS\Request::i()->group ) )
|
||||
{
|
||||
try
|
||||
{
|
||||
$group = \IPS\Member\Group::load( \IPS\Request::i()->group );
|
||||
$member->member_group_id = $group->g_id;
|
||||
}
|
||||
catch ( \OutOfRangeException $e )
|
||||
{
|
||||
throw new \IPS\Api\Exception( 'INVALID_GROUP', '1C292/6', 403 );
|
||||
}
|
||||
}
|
||||
|
||||
if ( isset( \IPS\Request::i()->password ) )
|
||||
{
|
||||
foreach ( \IPS\Login::handlers( TRUE ) as $handler )
|
||||
{
|
||||
try
|
||||
{
|
||||
$handler->changePassword( $member, \IPS\Request::i()->password );
|
||||
}
|
||||
catch( \BadMethodCallException $e ){}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$member->save();
|
||||
}
|
||||
|
||||
/* Any custom fields? */
|
||||
if( isset( \IPS\Request::i()->customFields ) )
|
||||
{
|
||||
/* Profile Fields */
|
||||
try
|
||||
{
|
||||
$profileFields = \IPS\Db::i()->select( '*', 'core_pfields_content', array( 'member_id=?', $member->member_id ) )->first();
|
||||
}
|
||||
catch( \UnderflowException $e )
|
||||
{
|
||||
$profileFields = array();
|
||||
}
|
||||
|
||||
/* If \IPS\Db::i()->select()->first() has only one column, then the contents of that column is returned. We do not want this here. */
|
||||
if ( !is_array( $profileFields ) )
|
||||
{
|
||||
$profileFields = array();
|
||||
}
|
||||
|
||||
$profileFields['member_id'] = $member->member_id;
|
||||
|
||||
foreach ( \IPS\Request::i()->customFields as $k => $v )
|
||||
{
|
||||
$profileFields[ 'field_' . $k ] = $v;
|
||||
}
|
||||
|
||||
\IPS\Db::i()->replace( 'core_pfields_content', $profileFields );
|
||||
|
||||
$member->changedCustomFields = $profileFields;
|
||||
}
|
||||
|
||||
return $member;
|
||||
}
|
||||
|
||||
/**
|
||||
* POST /core/members
|
||||
* Create a member
|
||||
*
|
||||
* @apiparam string name Username
|
||||
* @apiparam string email Email address
|
||||
* @apiparam string password Password
|
||||
* @apiparam int group Group ID number
|
||||
* @apiparam object customFields Array of custom fields as fieldId => fieldValue
|
||||
* @throws 1C292/4 USERNAME_EXISTS The username provided is already in use
|
||||
* @throws 1C292/5 EMAIL_EXISTS The email address provided is already in use
|
||||
* @throws 1C292/6 INVALID_GROUP The group ID provided is not valid
|
||||
* @throws 1C292/8 NO_USERNAME_OR_EMAIL No Username or Email Address was provided for the account
|
||||
* @throws 1C292/9 NO_PASSWORD No password was provided for the account
|
||||
* @return \IPS\Member
|
||||
*/
|
||||
public function POSTindex()
|
||||
{
|
||||
/* One of these must be provided to ensure user can log in. */
|
||||
if ( !isset( \IPS\Request::i()->name ) AND !isset( \IPS\Request::i()->email ) )
|
||||
{
|
||||
throw new \IPS\Api\Exception( 'NO_USERNAME_OR_EMAIL', '1C292/8', 403 );
|
||||
}
|
||||
|
||||
/* This is required as there is no other way to allow the account to be authenticated when it is created via the API */
|
||||
if ( !isset( \IPS\Request::i()->password ) )
|
||||
{
|
||||
throw new \IPS\Api\Exception( 'NO_PASSWORD', '1C292/9', 403 );
|
||||
}
|
||||
|
||||
$member = new \IPS\Member;
|
||||
$member->member_group_id = \IPS\Settings::i()->member_group;
|
||||
|
||||
$member = $this->_createOrUpdate( $member );
|
||||
|
||||
return new \IPS\Api\Response( 201, $member->apiOutput() );
|
||||
}
|
||||
|
||||
/**
|
||||
* POST /core/members/{id}
|
||||
* Edit a member
|
||||
*
|
||||
* @apiparam string name Username
|
||||
* @apiparam string email Email address
|
||||
* @apiparam string password Password
|
||||
* @apiparam int group Group ID number
|
||||
* @apiparam object customFields Array of custom fields as fieldId => fieldValue
|
||||
* @param int $id ID Number
|
||||
* @throws 2C292/7 INVALID_ID The member ID does not exist
|
||||
* @throws 1C292/4 USERNAME_EXISTS The username provided is already in use
|
||||
* @throws 1C292/5 EMAIL_EXISTS The email address provided is already in use
|
||||
* @return \IPS\Member
|
||||
*/
|
||||
public function POSTitem( $id )
|
||||
{
|
||||
try
|
||||
{
|
||||
$member = \IPS\Member::load( $id );
|
||||
if ( !$member->member_id )
|
||||
{
|
||||
throw new \OutOfRangeException;
|
||||
}
|
||||
|
||||
$member = $this->_createOrUpdate( $member );
|
||||
|
||||
return new \IPS\Api\Response( 200, $member->apiOutput() );
|
||||
}
|
||||
catch ( \OutOfRangeException $e )
|
||||
{
|
||||
throw new \IPS\Api\Exception( 'INVALID_ID', '2C292/7', 404 );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* DELETE /core/members/{id}
|
||||
* Deletes a member
|
||||
*
|
||||
* @param int $id ID Number
|
||||
* @throws 1C292/3 INVALID_ID The member ID does not exist
|
||||
* @return void
|
||||
*/
|
||||
public function DELETEitem( $id )
|
||||
{
|
||||
try
|
||||
{
|
||||
$member = \IPS\Member::load( $id );
|
||||
if ( !$member->member_id )
|
||||
{
|
||||
throw new \OutOfRangeException;
|
||||
}
|
||||
|
||||
$member->delete();
|
||||
|
||||
return new \IPS\Api\Response( 200, NULL );
|
||||
}
|
||||
catch ( \OutOfRangeException $e )
|
||||
{
|
||||
throw new \IPS\Api\Exception( 'INVALID_ID', '1C292/2', 404 );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -43,6 +43,12 @@
|
||||
"controller": "menu",
|
||||
"do": "",
|
||||
"restriction": "menu_manage"
|
||||
},
|
||||
"api": {
|
||||
"tab": "core",
|
||||
"controller": "api",
|
||||
"do": "",
|
||||
"restriction": "api_manage"
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -82,6 +88,18 @@
|
||||
"do": "",
|
||||
"restriction": "login_manage"
|
||||
},
|
||||
"contactus": {
|
||||
"tab": "core",
|
||||
"controller": "contactus",
|
||||
"do": "",
|
||||
"restriction": "contactus_manage"
|
||||
},
|
||||
"mfa": {
|
||||
"tab": "core",
|
||||
"controller": "mfa",
|
||||
"do": "",
|
||||
"restriction": "mfa_manage"
|
||||
},
|
||||
"advanced": {
|
||||
"tab": "core",
|
||||
"controller": "advanced",
|
||||
@@ -101,6 +119,12 @@
|
||||
"controller": "streams",
|
||||
"do": "",
|
||||
"restriction": "streams_manage"
|
||||
},
|
||||
"rss": {
|
||||
"tab": "core",
|
||||
"controller": "rss",
|
||||
"do": "",
|
||||
"restriction": "rss_manage"
|
||||
}
|
||||
},
|
||||
"promotion": {
|
||||
@@ -116,6 +140,12 @@
|
||||
"do": "",
|
||||
"restriction": "seo_manage"
|
||||
},
|
||||
"analytics": {
|
||||
"tab": "core",
|
||||
"controller": "analytics",
|
||||
"do": "",
|
||||
"restriction": "analytics_manage"
|
||||
},
|
||||
"sharelinks": {
|
||||
"tab": "core",
|
||||
"controller": "sharelinks",
|
||||
@@ -260,7 +290,7 @@
|
||||
"tab": "customization",
|
||||
"controller": "languages",
|
||||
"do": "",
|
||||
"restriction": "lang_packs"
|
||||
"restriction": "lang_words"
|
||||
}
|
||||
},
|
||||
"support": {
|
||||
@@ -276,13 +306,15 @@
|
||||
"tab": "stats",
|
||||
"controller": "registrationstats",
|
||||
"do": "",
|
||||
"restriction": "registrations_manage"
|
||||
"restriction": "registrations_manage",
|
||||
"restriction_module": "members"
|
||||
},
|
||||
"pmstats": {
|
||||
"tab": "stats",
|
||||
"controller": "pmstats",
|
||||
"do": "",
|
||||
"restriction": null
|
||||
"restriction": "messages_manage",
|
||||
"restriction_module": "members"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,16 @@
|
||||
},
|
||||
"menu": {
|
||||
"menu_manage": "menu_manage"
|
||||
},
|
||||
"api": {
|
||||
"api_manage": "api_manage",
|
||||
"api_add": "api_add",
|
||||
"api_edit": "api_edit",
|
||||
"api_delete": "api_delete",
|
||||
"api_reference": "api_reference",
|
||||
"api_logs": "api_logs",
|
||||
"api_logs_settings": "api_logs_settings",
|
||||
"api_logs_delete": "api_logs_delete"
|
||||
}
|
||||
},
|
||||
"promotion": {
|
||||
@@ -31,6 +41,9 @@
|
||||
"advertisements_add": "advertisements_add",
|
||||
"advertisements_edit": "advertisements_edit",
|
||||
"advertisements_delete": "advertisements_delete"
|
||||
},
|
||||
"analytics": {
|
||||
"analytics_manage": "analytics_manage"
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@@ -73,6 +86,12 @@
|
||||
"advanced_manage_tasks": "advanced_manage_tasks",
|
||||
"advanced_manage_furls": "advanced_manage_furls",
|
||||
"datastore": "datastore"
|
||||
},
|
||||
"contactus": {
|
||||
"contactus_manage": "contactus_manage"
|
||||
},
|
||||
"mfa": {
|
||||
"mfa_manage": "mfa_manage"
|
||||
}
|
||||
},
|
||||
"discovery": {
|
||||
@@ -81,15 +100,18 @@
|
||||
},
|
||||
"streams": {
|
||||
"streams_manage": "streams_manage"
|
||||
},
|
||||
"rss_exports": {
|
||||
"rss_export_manage": "rss_export_manage"
|
||||
}
|
||||
},
|
||||
"members": {
|
||||
"members": {
|
||||
"member_view": "member_view",
|
||||
"member_add": "member_add",
|
||||
"member_add_admin": "member_add_admin",
|
||||
"member_edit": "member_edit",
|
||||
"member_edit_admin": "member_edit_admin",
|
||||
"member_mfa": "member_mfa",
|
||||
"member_delete": "member_delete",
|
||||
"member_delete_admin": "member_delete_admin",
|
||||
"member_login": "member_login",
|
||||
@@ -104,7 +126,8 @@
|
||||
"membertools_locked": "membertools_locked",
|
||||
"membertools_delete": "membertools_delete",
|
||||
"membertools_ip": "membertools_ip",
|
||||
"member_recount_content": "member_recount_content"
|
||||
"member_recount_content": "member_recount_content",
|
||||
"member_export": "member_export"
|
||||
},
|
||||
"groups": {
|
||||
"groups_manage": "groups_manage",
|
||||
@@ -207,7 +230,7 @@
|
||||
"emoticons_manage": "emoticons_manage",
|
||||
"emoticons_add": "emoticons_add",
|
||||
"emoticons_edit": "emoticons_edit",
|
||||
"delete": "emoticons_delete"
|
||||
"emoticons_delete": "emoticons_delete"
|
||||
},
|
||||
"settings": {
|
||||
"settings_manage": "settings_manage"
|
||||
@@ -259,7 +282,7 @@
|
||||
"files_settings": "files_settings",
|
||||
"orphaned_files": "orphaned_files"
|
||||
},
|
||||
"upgrade": {
|
||||
"upgrade": {
|
||||
"upgrade_manage": "upgrade_manage"
|
||||
}
|
||||
},
|
||||
@@ -267,7 +290,8 @@
|
||||
"support": {
|
||||
"get_support": "get_support",
|
||||
"diagnostic_log_settings": "diagnostic_log_settings",
|
||||
"sql_toolbox": "sql_toolbox"
|
||||
"sql_toolbox": "sql_toolbox",
|
||||
"system_logs_view": "system_logs_view"
|
||||
}
|
||||
}
|
||||
}
|
||||
+2692
-1485
File diff suppressed because it is too large.
Load diff
@@ -3,7 +3,7 @@
|
||||
* @brief {subpackage} Application Class
|
||||
* @author <a href='{website}'>{author}</a>
|
||||
* @copyright (c) {year} {author}
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @subpackage {subpackage}
|
||||
* @since {date}
|
||||
* @version
|
||||
@@ -16,5 +16,5 @@ namespace IPS\{app};
|
||||
*/
|
||||
class _Application extends \IPS\Application
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief {controller}
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief {controller}
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief {controller}
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
//<?php
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
{abstract}class {classname} extends _HOOK_CLASS_
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief {key} Task
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief {version_human} Upgrade Code
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
/**
|
||||
* @brief {version_human} Upgrade Code
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief {key} Widget
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Advertisement locations extension
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Announcements Extension
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
/**
|
||||
* @brief BBCode Tag
|
||||
* @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
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
|
||||
namespace IPS\{app}\extensions\core\BBCode;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
{
|
||||
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* BBCode Tag
|
||||
*/
|
||||
class _{class}
|
||||
{
|
||||
/**
|
||||
* Permission Check
|
||||
*
|
||||
* @param \IPS\Member $member The member
|
||||
* @param string $area The Editor area
|
||||
* @return bool
|
||||
*/
|
||||
public function permissionCheck( \IPS\Member $member, $area )
|
||||
{
|
||||
return \IPS\Text\Parser::canUse( $member, 'ipsLink', $area );
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Configuration
|
||||
*
|
||||
* @code
|
||||
return array(
|
||||
'tag' => 'span', // The HTML tag to use
|
||||
'attributes' => array( ... ) // Key/Value pairs of attributes to use (optional) - can use {option} to get the [tag=option] value
|
||||
'callback' => function( $node, $matches, $document ) // A callback to modify the DOMNode object
|
||||
{
|
||||
...
|
||||
},
|
||||
'block' => FALSE, // If this is a block-level tag (optional, default false)
|
||||
'single' => FALSE, // If this is a single tag, with no content (optional, default false)
|
||||
)
|
||||
* @endcode
|
||||
* @return array
|
||||
*/
|
||||
public function getConfiguration()
|
||||
{
|
||||
return array( 'tag' => 'span', 'attributes' => array( 'class' => 'example' ) );
|
||||
}
|
||||
}
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Build process plugin
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
@@ -36,7 +36,6 @@ class _{class}
|
||||
|
||||
/**
|
||||
* Finish Build
|
||||
* Moved the pbckcode acs.js file over from development as CKEditor's build routine seems to break it
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<?php
|
||||
/**
|
||||
* @brief Bulk mail extension
|
||||
* @brief Bulk Mail Extension
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
@@ -20,54 +20,34 @@ if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
}
|
||||
|
||||
/**
|
||||
* Bulk mail extension
|
||||
* Bulk Mail Extension
|
||||
*/
|
||||
class _{class}
|
||||
{
|
||||
/**
|
||||
* Get Setting Field
|
||||
* Get tags that can be used in bulk mail
|
||||
*
|
||||
* @param mixed $criteria Value returned from the save() method
|
||||
* @return array Array of form elements
|
||||
* @return array
|
||||
*/
|
||||
public function getSettingField( $criteria )
|
||||
public function getTags()
|
||||
{
|
||||
return array();
|
||||
return array(
|
||||
'{some_tag}' => 'Explanation of tag',
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the filter data
|
||||
/**
|
||||
* Get value for tags
|
||||
*
|
||||
* @param array $post Form values
|
||||
* @return mixed False, or an array of data to use later when filtering the members
|
||||
* @throws \LogicException
|
||||
* @param string $content Bulk Mail Content (passed in case a particular tag is computationally expensive so that the extension may "sniff" for it and elect not to perform the computation if it is not used)
|
||||
* @param int $type 0=All, 1=Global, 2=Member-specific
|
||||
* @param NULL|\IPS\Member $member Member object if $type is 0 or 2
|
||||
* @return array
|
||||
*/
|
||||
public function save( $post )
|
||||
public function returnTagValues( $content, $type, $member )
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get where clause to add to the member retrieval database query
|
||||
*
|
||||
* @param mixed $data The array returned from the save() method
|
||||
* @return string|array|NULL Where clause
|
||||
*/
|
||||
public function getQueryWhereClause( $data )
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback for member retrieval database query
|
||||
* Can be used to set joins
|
||||
*
|
||||
* @param mixed $data The array returned from the save() method
|
||||
* @param \IPS\Db\Query $query The query
|
||||
* @return void
|
||||
*/
|
||||
public function queryCallback( &$query )
|
||||
{
|
||||
return NULL;
|
||||
return array(
|
||||
'{some_tag}' => 'Value',
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Community Enhancements
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
/**
|
||||
* @brief Contact Us extension
|
||||
* @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
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
|
||||
namespace IPS\{app}\extensions\core\ContactUs;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
{
|
||||
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Contact Us extension
|
||||
*/
|
||||
class _{class}
|
||||
{
|
||||
/**
|
||||
* Process Form
|
||||
*
|
||||
* @param \IPS\Helpers\Form $form The form
|
||||
* @param array $formFields Additional Configuration Formfields
|
||||
* @param array $options Type Radio Form Options
|
||||
* @param array $toggles Type Radio Form Toggles
|
||||
* @param array $disabled Type Radio Form Disabled Options
|
||||
* @return void
|
||||
*/
|
||||
public function process( &$form, &$formFields, &$options, &$toggles, &$disabled )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Allows extensions to do something before the form is shown... e.g. add your own custom fields, or redirect the page
|
||||
*
|
||||
* @param \IPS\Helpers\Form $form The form
|
||||
* @return void
|
||||
*/
|
||||
public function runBeforeFormOutput( &$form )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the Form
|
||||
*
|
||||
* @param array $values Values from form
|
||||
* @return void
|
||||
*/
|
||||
public function handleForm( array $values )
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Content Router extension: {class}
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Create Menu Extension : {class}
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Dashboard extension: {class}
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Editor Extension: {class}
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Editor Media: {class}
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
@@ -27,11 +27,12 @@ class _{class}
|
||||
/**
|
||||
* Get Counts
|
||||
*
|
||||
* @param \IPS\Member $member The member
|
||||
* @param bool $images TRUE = Images. FALSE = other attachments.
|
||||
* @return int array( 'Title' => 0 )
|
||||
* @param \IPS\Member $member The member
|
||||
* @param string $postKey The post key
|
||||
* @param string|null $search The search term (or NULL for all)
|
||||
* @return int
|
||||
*/
|
||||
public function count( $member, $images )
|
||||
public function count( $member, $postKey, $search=NULL )
|
||||
{
|
||||
return array();
|
||||
}
|
||||
@@ -40,14 +41,13 @@ class _{class}
|
||||
* Get Files
|
||||
*
|
||||
* @param \IPS\Member $member The member
|
||||
* @param bool $images TRUE = Images. FALSE = other attachments.
|
||||
* @param string|null $search The search term (or NULL for all)
|
||||
* @param string $postKey The post key
|
||||
* @param int $page Page
|
||||
* @param int $limit Number to get
|
||||
* @return array array( 'Title' => array( (IPS\File, \IPS\File, ... ), ... )
|
||||
* @return array array( 'Title' => array( 'http://www.example.com/file1.txt' => \IPS\File, 'http://www.example.com/file2.txt' => \IPS\File, ... ), ... )
|
||||
*/
|
||||
public function get( $member, $images, $search, $postKey, $page, $limit )
|
||||
public function get( $member, $search, $postKey, $page, $limit )
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief File Storage Extension: {class}
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Front Navigation Extension: {class}
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
@@ -35,11 +35,23 @@ class _{class} extends \IPS\core\FrontNavigation\FrontNavigationAbstract
|
||||
}
|
||||
|
||||
/**
|
||||
* Can access?
|
||||
* Can this item be used at all?
|
||||
* For example, if this will link to a particular feature which has been diabled, it should
|
||||
* not be available, even if the user has permission
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function canView()
|
||||
public static function isEnabled()
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Can the currently logged in user access the content this item links to?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function canAccessContent()
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
@@ -73,14 +85,15 @@ class _{class} extends \IPS\core\FrontNavigation\FrontNavigationAbstract
|
||||
{
|
||||
return \IPS\Dispatcher::i()->application->directory === '{app}';
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Children
|
||||
*
|
||||
* @param bool $noStore If true, will skip datastore and get from DB (used for ACP preview)
|
||||
* @return array
|
||||
*/
|
||||
public function children()
|
||||
public function children( $noStore=FALSE )
|
||||
{
|
||||
return array();
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Admin CP Group Form
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Group Limits
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Incoming Email Handler
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief IP Address Lookup extension
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
@@ -24,6 +24,28 @@ if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
*/
|
||||
class _{class}
|
||||
{
|
||||
/**
|
||||
* Supported in the ACP IP address lookup tool?
|
||||
*
|
||||
* @return bool
|
||||
* @note If the method does not exist in an extension, the result is presumed to be TRUE
|
||||
*/
|
||||
public function supportedInAcp()
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Supported in the ModCP IP address lookup tool?
|
||||
*
|
||||
* @return bool
|
||||
* @note If the method does not exist in an extension, the result is presumed to be TRUE
|
||||
*/
|
||||
public function supportedInModCp()
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find Records by IP
|
||||
*
|
||||
@@ -36,12 +58,12 @@ class _{class}
|
||||
/* Return count */
|
||||
if ( $baseUrl === NULL )
|
||||
{
|
||||
return \IPS\Db::i()->select( 'COUNT(*)', 'database_table_name', array( "ip_address LIKE CONCAT( ?, '%' )", $ip ) )->first();
|
||||
return \IPS\Db::i()->select( 'COUNT(*)', 'database_table_name', array( "ip_address LIKE ?", $ip ) )->first();
|
||||
}
|
||||
|
||||
/* Init Table */
|
||||
// Replace database_table_name with the database table
|
||||
$table = new \IPS\Helpers\Table\Db( 'database_table_name', $baseUrl, array( "ip_address LIKE CONCAT( ?, '%' )", $ip ) );
|
||||
$table = new \IPS\Helpers\Table\Db( 'database_table_name', $baseUrl, array( "ip_address LIKE ?", $ip ) );
|
||||
|
||||
/* Return */
|
||||
return (string) $table;
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief ACP Live Search Extension
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
@@ -45,14 +45,24 @@ class _{class}
|
||||
return array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check we have access
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasAccess()
|
||||
{
|
||||
/* Check Permissions */
|
||||
return TRUE;
|
||||
}
|
||||
/**
|
||||
* Check we have access
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasAccess()
|
||||
{
|
||||
/* Check Permissions */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Is default for current page?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isDefault()
|
||||
{
|
||||
return \IPS\Dispatcher::i()->application->directory == 'myapp';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
/**
|
||||
* @brief Multi-Factor Authentication Area
|
||||
* @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
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
|
||||
namespace IPS\{app}\extensions\core\MFAArea;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
{
|
||||
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Multi-Factor Authentication Area
|
||||
*/
|
||||
class _{class}
|
||||
{
|
||||
/**
|
||||
* Is this area available and should show in the ACP configuration?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isEnabled()
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
/**
|
||||
* @brief Member Filter Extension
|
||||
* @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
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
|
||||
namespace IPS\{app}\extensions\core\MemberFilter;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
{
|
||||
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Member Filter Extension
|
||||
*/
|
||||
class _{class}
|
||||
{
|
||||
/**
|
||||
* Get Setting Field
|
||||
*
|
||||
* @param mixed $criteria Value returned from the save() method
|
||||
* @return array Array of form elements
|
||||
*/
|
||||
public function getSettingField( $criteria )
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the filter data
|
||||
*
|
||||
* @param array $post Form values
|
||||
* @return mixed False, or an array of data to use later when filtering the members
|
||||
* @throws \LogicException
|
||||
*/
|
||||
public function save( $post )
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get where clause to add to the member retrieval database query
|
||||
*
|
||||
* @param mixed $data The array returned from the save() method
|
||||
* @return string|array|NULL Where clause
|
||||
*/
|
||||
public function getQueryWhereClause( $data )
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback for member retrieval database query
|
||||
* Can be used to set joins
|
||||
*
|
||||
* @param mixed $data The array returned from the save() method
|
||||
* @param \IPS\Db\Query $query The query
|
||||
* @return void
|
||||
*/
|
||||
public function queryCallback( $data, &$query )
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Admin CP Member Form
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Member Sync
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
@@ -124,5 +124,31 @@ class _{class}
|
||||
*/
|
||||
public function onDelete( $member )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Email address is changed
|
||||
*
|
||||
* @param \IPS\Member $member The member
|
||||
* @param string $new New email address
|
||||
* @param string $old Old email address
|
||||
* @return void
|
||||
*/
|
||||
public function onEmailChange( $member, $new, $old )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Password is changed
|
||||
*
|
||||
* @param \IPS\Member $member The member
|
||||
* @param string $new New password
|
||||
* @return void
|
||||
*/
|
||||
public function onPassChange( $member, $new )
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Moderator Control Panel Extension: {class}
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
@@ -27,7 +27,7 @@ class _{class}
|
||||
/**
|
||||
* Returns the primary tab key for the navigation bar
|
||||
*
|
||||
* @return string
|
||||
* @return string|null
|
||||
*/
|
||||
public function getTab()
|
||||
{
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Moderator Control Panel Member Management Extension: {class}
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
@@ -27,7 +27,7 @@ class _{class}
|
||||
/**
|
||||
* Returns the tab key for the navigation bar
|
||||
*
|
||||
* @return string
|
||||
* @return string|null
|
||||
*/
|
||||
public function getTab()
|
||||
{
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Moderator Permissions
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Notification Options
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
@@ -52,7 +52,7 @@ class _{class}
|
||||
* @code
|
||||
return array(
|
||||
'title' => "Mark has replied to A Topic", // The notification title
|
||||
'url' => new \IPS\Http\Url( ... ), // The URL the notification should link to
|
||||
'url' => \IPS\Http\Url::internal( ... ), // The URL the notification should link to
|
||||
'content' => "Lorem ipsum dolar sit", // [Optional] Any appropriate content. Do not format this like an email where the text
|
||||
// explains what the notification is about - just include any appropriate content.
|
||||
// For example, if the notification is about a post, set this as the body of the post.
|
||||
@@ -64,7 +64,7 @@ class _{class}
|
||||
{
|
||||
return array(
|
||||
'title' => "Mark has replied to A Topic", // The notification title
|
||||
'url' => new \IPS\Http\Url( ... ), // The URL the notification should link to
|
||||
'url' => \IPS\Http\Url::internal( ... ), // The URL the notification should link to
|
||||
'content' => "Lorem ipsum dolar sit", // [Optional] Any appropriate content. Do not format this like an email where the text
|
||||
// explains what the notification is about - just include any appropriate content.
|
||||
// For example, if the notification is about a post, set this as the body of the post.
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Template Plugin
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Permissions
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Profile extension: {class}
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Background Task
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
@@ -24,13 +24,24 @@ if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
*/
|
||||
class _{class}
|
||||
{
|
||||
/**
|
||||
* Parse data before queuing
|
||||
*
|
||||
* @param array $data
|
||||
* @return array
|
||||
*/
|
||||
public function preQueueData( $data )
|
||||
{
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Run Background Task
|
||||
*
|
||||
* @param mixed $data Data as it was passed to \IPS\Task::queue()
|
||||
* @param int $offset Offset
|
||||
* @return int|null New offset or NULL if complete
|
||||
* @throws \OutOfRangeException Indicates offset doesn't exist and thus task is complete
|
||||
* @param mixed $data Data as it was passed to \IPS\Task::queue()
|
||||
* @param int $offset Offset
|
||||
* @return int New offset
|
||||
* @throws \IPS\Task\Queue\OutOfRangeException Indicates offset doesn't exist and thus task is complete
|
||||
*/
|
||||
public function run( $data, $offset )
|
||||
{
|
||||
@@ -42,11 +53,22 @@ class _{class}
|
||||
*
|
||||
* @param mixed $data Data as it was passed to \IPS\Task::queue()
|
||||
* @param int $offset Offset
|
||||
* @return array( 'text' => 'Doing something...', 'complete' => 50 ) Text explaning task and percentage complete
|
||||
* @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( $data, $offset )
|
||||
{
|
||||
return array( 'text' => 'Doing something...', 'complete' => 50 );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Perform post-completion processing
|
||||
*
|
||||
* @param array $data
|
||||
* @return void
|
||||
*/
|
||||
public function postComplete( $data )
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Support {class} in sitemaps
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Uninstall callback
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
{subpackage}
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
@@ -43,4 +43,27 @@ class _{class}
|
||||
public function postUninstall( $application )
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Code to execute when other applications are uninstalled
|
||||
*
|
||||
* @param string $application Application directory
|
||||
* @return void
|
||||
* @deprecated This is here for backwards-compatibility - all new code should go in onOtherUninstall
|
||||
*/
|
||||
public function onOtherAppUninstall( $application )
|
||||
{
|
||||
return $this->onOtherUninstall( $application );
|
||||
}
|
||||
|
||||
/**
|
||||
* Code to execute when other applications or plugins are uninstalled
|
||||
*
|
||||
* @param string $application Application directory
|
||||
* @param int $plugin Plugin ID
|
||||
* @return void
|
||||
*/
|
||||
public function onOtherUninstall( $application=NULL, $plugin=NULL )
|
||||
{
|
||||
}
|
||||
}
|
||||
+247
-114
@@ -6,7 +6,7 @@
|
||||
<table width="100%" cellpadding="15" cellspacing="0" border="0" bgcolor="#f9f9f9" style='color: #5b5b5b; font-size: 13px'>
|
||||
<tr>
|
||||
<td dir='{dir}' width="80" valign="top" class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<img src='{$member->photo}' width='80' height='80' style='border: 1px solid #d7d7d7; vertical-align: middle;'>
|
||||
<img src='{$member->get_photo( true, true )}' width='80' height='80' style='border: 1px solid #d7d7d7; vertical-align: middle;'>
|
||||
</td>
|
||||
<td dir='{dir}'>
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" class='responsive_table'>
|
||||
@@ -121,12 +121,12 @@
|
||||
<tr>
|
||||
<td dir='{dir}' width='20' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'> </td>
|
||||
<td dir='{dir}' width='100' valign='top' align='center' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<img src='{$message->author()->photo}' width='100' height='100' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
<img src='{$message->author()->get_photo( true, true )}' width='100' height='100' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
</td>
|
||||
<td dir='{dir}' width='20' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'> </td>
|
||||
<td dir='{dir}' valign='top'>
|
||||
<div style='line-height: 1.5'>
|
||||
{$email->parseTextForEmail( $message->post )|raw}
|
||||
{$email->parseTextForEmail( $message->post, $email->language )|raw}
|
||||
</div>
|
||||
<br />
|
||||
<hr style='height: 0px; border-top: 1px solid #f0f0f0;' />
|
||||
@@ -220,7 +220,7 @@
|
||||
{{if $warning->mq == -1}}
|
||||
{$email->language->addToStack("indefinitely", FALSE)}
|
||||
{{else}}
|
||||
{expression="\IPS\DateTime::formatInterval( new \DateInterval( $warning->mq ), 2 )"}
|
||||
{expression="\IPS\DateTime::formatInterval( new \DateInterval( $warning->mq ), 2, $email->language )"}
|
||||
{{endif}}
|
||||
</li>
|
||||
{{endif}}
|
||||
@@ -230,7 +230,7 @@
|
||||
{{if $warning->rpa == -1}}
|
||||
{$email->language->addToStack("indefinitely", FALSE)}
|
||||
{{else}}
|
||||
{expression="\IPS\DateTime::formatInterval( new \DateInterval( $warning->rpa ), 2 )"}
|
||||
{expression="\IPS\DateTime::formatInterval( new \DateInterval( $warning->rpa ), 2, $email->language )"}
|
||||
{{endif}}
|
||||
</li>
|
||||
{{endif}}
|
||||
@@ -240,7 +240,7 @@
|
||||
{{if $warning->suspend == -1}}
|
||||
{$email->language->addToStack("indefinitely", FALSE)}
|
||||
{{else}}
|
||||
{expression="\IPS\DateTime::formatInterval( new \DateInterval( $warning->suspend ), 2 )"}
|
||||
{expression="\IPS\DateTime::formatInterval( new \DateInterval( $warning->suspend ), 2, $email->language )"}
|
||||
{{endif}}
|
||||
</li>
|
||||
{{endif}}
|
||||
@@ -251,13 +251,13 @@
|
||||
{{if $warning->note_member}}
|
||||
<tr class='responsive_row'>
|
||||
<td dir='{dir}' width='150' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px;" valign='top'><strong>{$email->language->addToStack("email_warn_note_member", FALSE)}:</strong></td>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px;">{$email->parseTextForEmail( $warning->note_member )|raw}</td>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px;">{$email->parseTextForEmail( $warning->note_member, $email->language )|raw}</td>
|
||||
</tr>
|
||||
{{endif}}
|
||||
{{if $warning->note_mods and member.modPermission('mod_see_warn')}}
|
||||
<tr class='responsive_row'>
|
||||
<td dir='{dir}' width='150' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px;" valign='top'><strong>{$email->language->addToStack("email_warn_note_moderator", FALSE)}:</strong></td>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px;">{$email->parseTextForEmail( $warning->note_mods )|raw}</td>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px;">{$email->parseTextForEmail( $warning->note_mods, $email->language )|raw}</td>
|
||||
</tr>
|
||||
{{endif}}
|
||||
</table>
|
||||
@@ -299,13 +299,13 @@
|
||||
{{endif}}
|
||||
{{endif}}
|
||||
{{if $warning->mq}}
|
||||
{$email->language->addToStack("moderation_modq", FALSE)} - {{if $warning->mq == -1}}{$email->language->addToStack("indefinitely", FALSE)}{{else}}{expression="\IPS\DateTime::formatInterval( new \DateInterval( $warning->mq ), 2 )"}{{endif}}
|
||||
{$email->language->addToStack("moderation_modq", FALSE)} - {{if $warning->mq == -1}}{$email->language->addToStack("indefinitely", FALSE)}{{else}}{expression="\IPS\DateTime::formatInterval( new \DateInterval( $warning->mq ), 2, $email->language )"}{{endif}}
|
||||
{{endif}}
|
||||
{{if $warning->rpa}}
|
||||
{$email->language->addToStack("moderation_nopost", FALSE)} - {{if $warning->rpa == -1}}{$email->language->addToStack("indefinitely", FALSE)}{{else}}{expression="\IPS\DateTime::formatInterval( new \DateInterval( $warning->rpa ), 2 )"}{{endif}}
|
||||
{$email->language->addToStack("moderation_nopost", FALSE)} - {{if $warning->rpa == -1}}{$email->language->addToStack("indefinitely", FALSE)}{{else}}{expression="\IPS\DateTime::formatInterval( new \DateInterval( $warning->rpa ), 2, $email->language )"}{{endif}}
|
||||
{{endif}}
|
||||
{{if $warning->suspend}}
|
||||
{$email->language->addToStack("moderation_banned", FALSE)} - {{if $warning->suspend == -1}}{$email->language->addToStack("indefinitely", FALSE)}{{else}}{expression="\IPS\DateTime::formatInterval( new \DateInterval( $warning->suspend ), 2 )"}{{endif}}
|
||||
{$email->language->addToStack("moderation_banned", FALSE)} - {{if $warning->suspend == -1}}{$email->language->addToStack("indefinitely", FALSE)}{{else}}{expression="\IPS\DateTime::formatInterval( new \DateInterval( $warning->suspend ), 2, $email->language )"}{{endif}}
|
||||
{{endif}}
|
||||
{{endif}}
|
||||
=====
|
||||
@@ -386,12 +386,12 @@
|
||||
<tr>
|
||||
<td dir='{dir}' width='20' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'> </td>
|
||||
<td dir='{dir}' width='100' valign='top' align='center' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<img src='{$message->author()->photo}' width='100' height='100' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
<img src='{$message->author()->get_photo( true, true )}' width='100' height='100' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
</td>
|
||||
<td dir='{dir}' width='20' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'> </td>
|
||||
<td dir='{dir}' valign='top'>
|
||||
<div style='line-height: 1.5'>
|
||||
{$email->parseTextForEmail( $message->post )|raw}
|
||||
{$email->parseTextForEmail( $message->post, $email->language )|raw}
|
||||
</div>
|
||||
<br />
|
||||
<hr style='height: 0px; border-top: 1px solid #f0f0f0;' />
|
||||
@@ -409,8 +409,10 @@
|
||||
-- {setting="board_name"}]]></template_content_plaintext></template><template><template_app>core</template_app><template_name>notification_unapproved_content</template_name><template_content_html><![CDATA[
|
||||
{{if $content->author()->member_id}}
|
||||
{$email->language->addToStack("email_new_content_unapproved", FALSE, array( 'sprintf' => array( $content->author()->url(), $content->author()->name, $content->indefiniteArticle( $email->language ) ) ) )} <a href='{$content->url()}'>{{if $content instanceof \IPS\Content\Comment OR $content instanceof \IPS\Content\Review}}{$content->item()->mapped('title')}{{else}}{$content->mapped('title')}{{endif}}</a>
|
||||
{{elseif $content->author()->real_name}}
|
||||
{$email->language->addToStack("email_new_content_unapproved_guest", FALSE, array( 'sprintf' => array( $email->language->addToStack( 'guest_name_shown', NULL, array( 'sprintf' => array( $content->author()->real_name ) ) ), $content->indefiniteArticle( $email->language ) ) ) )} <a href='{$content->url()}'>{{if $content instanceof \IPS\Content\Comment OR $content instanceof \IPS\Content\Review}}{$content->item()->mapped('title')}{{else}}{$content->mapped('title')}{{endif}}</a>
|
||||
{{else}}
|
||||
{$email->language->addToStack("email_new_content_unapproved_guest", FALSE, array( 'sprintf' => array( $content->author()->name, $content->indefiniteArticle( $email->language ) ) ) )} <a href='{$content->url()}'>{{if $content instanceof \IPS\Content\Comment OR $content instanceof \IPS\Content\Review}}{$content->item()->mapped('title')}{{else}}{$content->mapped('title')}{{endif}}</a>
|
||||
{$email->language->addToStack("email_new_content_unapproved_guest", FALSE, array( 'sprintf' => array( $email->language->addToStack( 'guest_name_shown', NULL, array( 'sprintf' => array( $email->language->addToStack('guest') ) ) ), $content->indefiniteArticle( $email->language ) ) ) )} <a href='{$content->url()}'>{{if $content instanceof \IPS\Content\Comment OR $content instanceof \IPS\Content\Review}}{$content->item()->mapped('title')}{{else}}{$content->mapped('title')}{{endif}}</a>
|
||||
{{endif}}
|
||||
|
||||
<br />
|
||||
@@ -419,7 +421,7 @@
|
||||
<table width='100%' cellpadding='0' cellspacing='0' border='0'>
|
||||
<tr>
|
||||
<td dir='{dir}' width='40' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<img src='{$content->author()->photo}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
<img src='{$content->author()->get_photo( true, true )}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
</td>
|
||||
<td dir='{dir}' width='30' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<br />
|
||||
@@ -433,13 +435,13 @@
|
||||
{{if ( ( $content instanceof \IPS\Content\Comment or $content instanceof \IPS\Content\Review ) and $container = $content->item()->containerWrapper() ) or ( $content instanceof \IPS\Content\Item and $container = $content->containerWrapper() )}}
|
||||
<tr>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; line-height: 1.5; font-size: 14px; color: #8d8d8d">
|
||||
{$email->language->addToStack("email_posted_in", FALSE, array( 'sprintf' => array( $container->_title ) ) )}
|
||||
{$email->language->addToStack("email_posted_in", FALSE, array( 'sprintf' => array( $email->language->addToStack( $container->_titleLanguageKey ) ) ) )}
|
||||
</td>
|
||||
</tr>
|
||||
{{endif}}
|
||||
<tr>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; line-height: 1.5; font-size: 14px;">
|
||||
{$email->parseTextForEmail( $content->content() )|raw}
|
||||
{$email->parseTextForEmail( $content->content(), $email->language )|raw}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -456,18 +458,52 @@
|
||||
</table>
|
||||
<br /><br />
|
||||
<em style='color: #8c8c8c'>— {setting="board_name"}</em>]]></template_content_html><template_data>$content, $member, $email</template_data><template_content_plaintext><![CDATA[
|
||||
{$email->language->addToStack("email_new_content_unapproved_plain", FALSE, array( 'sprintf' => array( $content->author()->name, $content->indefiniteArticle( $email->language ) ) ) )} {$content->mapped('title')}
|
||||
{$email->language->addToStack("email_new_content_unapproved_plain", FALSE, array( 'sprintf' => array( $content->author()->real_name ? $email->language->addToStack( 'guest_name_shown', NULL, array( 'sprintf' => array( $content->author()->real_name ) ) ) : $email->language->addToStack( 'guest_name_shown', NULL, array( 'sprintf' => array( $email->language->addToStack('guest') ) ) ), $content->indefiniteArticle( $email->language ) ) ) )} {$content->mapped('title')}
|
||||
|
||||
{$email->language->addToStack("go_to_this_x", FALSE, array( 'sprintf' => array( mb_strtolower( $email->language->addToStack( $content::$title, FALSE ) ) ) ) )}: {$content->url()}
|
||||
|
||||
-- {setting="board_name"}]]></template_content_plaintext></template><template><template_app>core</template_app><template_name>digests__areaWrapper</template_name><template_content_html><![CDATA[<!-- Add item counts and link to remaining items on site -->
|
||||
-- {setting="board_name"}]]></template_content_plaintext></template><template><template_app>core</template_app><template_name>account_locked</template_name><template_content_html><![CDATA[<br />
|
||||
{$email->language->addToStack("email_account_locked", FALSE, array( 'sprintf' => array( \IPS\Settings::i()->ipb_bruteforce_attempts, $location ) ) )}
|
||||
<br /><br />
|
||||
{$email->language->addToStack("email_account_locked_change_password")}
|
||||
<br /><br />
|
||||
{{if $unlockTime}}
|
||||
{$email->language->addToStack("email_account_locked_safely_ignore", FALSE, array( 'sprintf' => $unlockTime ) )}
|
||||
{{else}}
|
||||
{$email->language->addToStack("email_account_locked_no_unlock")}
|
||||
{{endif}}
|
||||
<br /><br />
|
||||
<table width='100%' cellpadding='15' cellspacing='0' border='0' style='background: #f9f9f9;'>
|
||||
<tr>
|
||||
<td dir='{dir}' align='center'>
|
||||
<a href='{url="app=core&module=system&controller=settings&area=password" seoTemplate="settings_password" base="front"}' style="color: #ffffff; font-family: 'Helvetica Neue', helvetica, sans-serif; text-decoration: none; font-size: 14px; background: {setting="email_color"}; line-height: 32px; padding: 0 10px; display: inline-block; border-radius: 3px;">{$email->language->addToStack("email_reset_password", FALSE)}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>]]></template_content_html><template_data>$member, $location, $unlockTime=NULL, $email</template_data><template_content_plaintext><![CDATA[{$email->language->addToStack("email_account_locked", FALSE, array( 'sprintf' => array( \IPS\Settings::i()->ipb_bruteforce_attempts, $location ) ) )}
|
||||
|
||||
{$email->language->addToStack("email_account_locked_change_password")}
|
||||
{{if $unlockTime}}
|
||||
{$email->language->addToStack("email_account_locked_safely_ignore", FALSE, array( 'sprintf' => $unlockTime ) )}
|
||||
{{else}}
|
||||
{$email->language->addToStack("email_account_locked_no_unlock")}
|
||||
{{endif}}
|
||||
|
||||
{$email->language->addToStack("change_password", FALSE)}: {url="app=core&module=system&controller=settings&area=password" seoTemplate="settings_password" base="front"}
|
||||
]]></template_content_plaintext></template><template><template_app>core</template_app><template_name>unsubscribeDigest</template_name><template_content_html><![CDATA[<tr>
|
||||
<td dir='{dir}' valign="top"><img src='{setting="base_url"}applications/core/interface/email/spacer.png' width='1' height='1' alt=''></td>
|
||||
<td dir='{dir}' valign='middle' align='center' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 12px; line-height: 18px; padding-left: 10px;">
|
||||
{$email->language->addToStack("unsubscribe_blurb", FALSE)} <a href="{url="app=core&module=system&controller=followed&filter=digest" base="front" seoTemplate="followed_content"}" style='color: #4a8aca; text-decoration: none; display: inline-block'>{$email->language->addToStack( 'adjust_digest_prefs', FALSE )}</a>.
|
||||
<br />
|
||||
</td>
|
||||
</tr>]]></template_content_html><template_data>$member, $email</template_data><template_content_plaintext><![CDATA[{$email->language->addToStack("unsubscribe_blurb", FALSE)} {$email->language->addToStack( 'adjust_digest_prefs', FALSE )}: {url="app=core&module=system&controller=followed&filter=digest" base="front" seoTemplate="followed_content"}]]></template_content_plaintext></template><template><template_app>core</template_app><template_name>digests__areaWrapper</template_name><template_content_html><![CDATA[<!-- Add item counts and link to remaining items on site -->
|
||||
<table width='100%' cellpadding='15' cellspacing='0' border='0' style='background: #f5f5f5'>
|
||||
<tr>
|
||||
<td dir='{dir}'>
|
||||
<h2 style='font-family: "Helvetica Neue", helvetica, sans-serif; margin: 0; font-size: 18px; font-weight: 500'>{$email->language->addToStack("digest_area_$area", FALSE)}</h2>
|
||||
{{$langKey = "digest_area_{$app}_{$area}";}}
|
||||
<h2 style='font-family: "Helvetica Neue", helvetica, sans-serif; margin: 0; font-size: 18px; font-weight: 500'>{$email->language->addToStack( $langKey, FALSE)}</h2>
|
||||
</td>
|
||||
<td dir='{dir}' width='30%' align='right' style='font-family: "Helvetica Neue", helvetica, sans-serif; color: #8c8c8c; font-size: 12px'>
|
||||
{{if $count < $total}}{$email->language->addToStack("digest_showing_first_x", FALSE, array( 'pluralize' => array( $count ) ) )}{{else}}{$email->language->addToStack("digest_showing_x", FALSE, array( 'pluralize' => array( $count ) ) )}{{endif}} (<a href='{url="app=core&module=system&controller=followed&type={$app}_{$area}" seoTemplate="followed_content" base="front"}' style='text-decoration: none'>{$email->language->addToStack("digest_see_all", FALSE)}</a>)
|
||||
{$email->language->addToStack("digest_showing_x", FALSE, array( 'pluralize' => array( $count ) ) )} (<a href='{url="app=core&module=system&controller=followed&type={$app}_{$area}" seoTemplate="followed_content" base="front"}' style='text-decoration: none'>{$email->language->addToStack("digest_see_all", FALSE)}</a>)
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -475,7 +511,7 @@
|
||||
<table width='100%' cellpadding='15' cellspacing='0' border='0'>
|
||||
{$output|raw}
|
||||
</table>
|
||||
<br /><br />]]></template_content_html><template_data>$output, $app, $area, $max, $count, $total, $email</template_data><template_content_plaintext>{$output|raw}
|
||||
<br /><br />]]></template_content_html><template_data>$output, $app, $area, $max, $count, $email</template_data><template_content_plaintext>{$output|raw}
|
||||
</template_content_plaintext></template><template><template_app>core</template_app><template_name>upgrade</template_name><template_content_html><![CDATA[
|
||||
{$email->language->addToStack("dashboard_version_info", FALSE, array( 'sprintf' => $version ))}
|
||||
<br />
|
||||
@@ -509,14 +545,14 @@
|
||||
{$email->language->addToStack("upgrade_now")}: {url="&app=core&module=system&controller=upgrade" base="admin"}]]></template_content_plaintext></template><template><template_app>core</template_app><template_name>notification_new_likes</template_name><template_content_html><![CDATA[
|
||||
{{$item = ( $comment instanceof \IPS\Content\Item ) ? $comment : $comment->item();}}
|
||||
|
||||
{$email->language->addToStack("notification__new_likes", FALSE, array( 'sprintf' => array( ( $comment->author()->group['gbw_view_reps'] ) ? $member->name : $email->language->get( 'notifications_anonymous' ), $comment->indefiniteArticle( $email->language ) ) ) )} <a href='{$item->url()}'>{$item->mapped('title')}</a>
|
||||
{$email->language->addToStack("email_new_likes", FALSE, array( 'sprintf' => array( ( $comment->author()->group['gbw_view_reps'] ) ? $member->name : $email->language->get( 'notifications_anonymous' ), $comment->indefiniteArticle( $email->language ) ) ) )} <a href='{$item->url()}'>{$item->mapped('title')}</a>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
<table width='100%' cellpadding='0' cellspacing='0' border='0'>
|
||||
<tr>
|
||||
<td dir='{dir}' width='40' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<img src='{$item->author()->photo}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
<img src='{$comment->author()->get_photo( true, true )}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
</td>
|
||||
<td dir='{dir}' width='30' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<br />
|
||||
@@ -529,7 +565,7 @@
|
||||
<table width='100%' cellpadding='5' cellspacing='0' border='0'>
|
||||
<tr>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; line-height: 1.5; font-size: 14px;">
|
||||
{$email->parseTextForEmail( $comment->content() )|raw}
|
||||
{$email->parseTextForEmail( $comment->content(), $email->language )|raw}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -546,10 +582,53 @@
|
||||
</table>
|
||||
<br /><br />
|
||||
<em style='color: #8c8c8c'>— {setting="board_name"}</em>]]></template_content_html><template_data>$comment, $member, $email</template_data><template_content_plaintext><![CDATA[
|
||||
{{$item = ( $comment instanceof \IPS\Content\Item ) ? $comment : $comment->item();}}{$email->language->addToStack("notification__new_likes", FALSE, array( 'sprintf' => array( ( $comment->author()->group['gbw_view_reps'] ) ? $member->name : $email->language->get( 'notifications_anonymous' ), $item->indefiniteArticle( $email->language ) ) ) )} {$item->mapped('title')}
|
||||
{{$item = ( $comment instanceof \IPS\Content\Item ) ? $comment : $comment->item();}}{$email->language->addToStack("email_new_likes", FALSE, array( 'sprintf' => array( ( $comment->author()->group['gbw_view_reps'] ) ? $member->name : $email->language->get( 'notifications_anonymous' ), $item->indefiniteArticle( $email->language ) ) ) )} {$item->mapped('title')}
|
||||
|
||||
{$email->language->addToStack("go_to_this_x", FALSE, array( 'sprintf' => array( mb_strtolower( $email->language->addToStack( $item::$title, FALSE ) ) ) ) )}: {$item->url()}
|
||||
|
||||
-- {setting="board_name"}]]></template_content_plaintext></template><template><template_app>core</template_app><template_name>email_address_changed</template_name><template_content_html><![CDATA[
|
||||
{$email->language->addToStack("email_email_address_changed", FALSE, array( 'sprintf' => \IPS\Settings::i()->board_name ) )}
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<table width='100%' cellpadding='0' cellspacing='0' border='0' style='background: #f9f9f9;'>
|
||||
<tr>
|
||||
<td dir='{dir}' height='20' style='line-height: 20px'><img src="{setting="base_url"}applications/core/interface/email/spacer.png" alt='' width="1" height="1" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td dir='{dir}' align='center' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 17px;"><strong>{$email->language->addToStack("email_new_email", FALSE)}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td dir='{dir}' height='6' style='line-height: 6px'><img src="{setting="base_url"}applications/core/interface/email/spacer.png" alt='' width="1" height="1" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td dir='{dir}' align='center' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 22px;">{$member->email}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td dir='{dir}' height='20' style='line-height: 20px'><img src="{setting="base_url"}applications/core/interface/email/spacer.png" alt='' width="1" height="1" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td dir='{dir}' align='center' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 17px;"><strong>{$email->language->addToStack("email_old_email", FALSE)}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td dir='{dir}' height='6' style='line-height: 6px'><img src="{setting="base_url"}applications/core/interface/email/spacer.png" alt='' width="1" height="1" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td dir='{dir}' align='center' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 22px;">{$oldEmail}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td dir='{dir}' height='6' style='line-height: 6px'><img src="{setting="base_url"}applications/core/interface/email/spacer.png" alt='' width="1" height="1" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br /><br />
|
||||
<em style='color: #8c8c8c'>— {setting="board_name"}</em>]]></template_content_html><template_data>$member, $oldEmail, $email</template_data><template_content_plaintext><![CDATA[{$email->language->addToStack("email_email_address_changed", FALSE, array( 'sprintf' => \IPS\Settings::i()->board_name ) )}
|
||||
|
||||
=====
|
||||
{$email->language->addToStack("email_new_email", FALSE)}: {$member->email}
|
||||
{$email->language->addToStack("email_old_email", FALSE)}: {$oldEmail}
|
||||
=====
|
||||
|
||||
-- {setting="board_name"}]]></template_content_plaintext></template><template><template_app>core</template_app><template_name>notification_unapproved_content_bulk</template_name><template_content_html><![CDATA[
|
||||
{{if $member->member_id}}
|
||||
{$email->language->addToStack("email_new_content_unapproved_bulk", FALSE, array( 'sprintf' => array( $member->url(), $member->name, $email->language->addToStack( $contentClass::$title . '_pl', FALSE ) ) ) )} <a href='{$container->url()}'>{$container->_title}</a>
|
||||
@@ -568,7 +647,7 @@
|
||||
<table width='100%' cellpadding='0' cellspacing='0' border='0'>
|
||||
<tr>
|
||||
<td dir='{dir}' width='40' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<img src='{$member->photo}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
<img src='{$member->get_photo( true, true )}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
</td>
|
||||
<td dir='{dir}' width='30' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<br />
|
||||
@@ -581,12 +660,12 @@
|
||||
<table width='100%' cellpadding='5' cellspacing='0' border='0'>
|
||||
<tr>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; line-height: 1.5; font-size: 14px;">
|
||||
<strong>{$email->language->addToStack("email_said", FALSE, array( 'sprintf' => array( $name ) ) )}</strong>
|
||||
<strong>{$email->language->addToStack("email_contact_said", FALSE, array( 'sprintf' => array( $name, $fromEmail ) ) )}</strong>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; line-height: 1.5; font-size: 14px;">
|
||||
{$email->parseTextForEmail( $message )|raw}
|
||||
{$email->parseTextForEmail( $message, $email->language )|raw}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -597,12 +676,12 @@
|
||||
</tr>
|
||||
</table>
|
||||
<br /><br />
|
||||
<em style='color: #8c8c8c'>— {setting="board_name"}</em>]]></template_content_html><template_data>$member, $name, $message, $email</template_data><template_content_plaintext><![CDATA[
|
||||
<em style='color: #8c8c8c'>— {setting="board_name"}</em>]]></template_content_html><template_data>$member, $name, $fromEmail, $message, $email</template_data><template_content_plaintext><![CDATA[
|
||||
{$email->language->addToStack("email_contact_form", FALSE)}
|
||||
|
||||
----
|
||||
|
||||
{$email->language->addToStack("email_said", FALSE, array( 'sprintf' => array( $name ) ) )}
|
||||
{$email->language->addToStack("email_contact_said", FALSE, array( 'sprintf' => array( $name, $fromEmail ) ) )}
|
||||
|
||||
{expression="\IPS\Email::buildPlaintextBody( $message )"}]]></template_content_plaintext></template><template><template_app>core</template_app><template_name>notification_profile_comment</template_name><template_content_html><![CDATA[
|
||||
{$email->language->addToStack("email_new_profile_comment", FALSE, array( 'sprintf' => array( $comment->author()->url(), $comment->author()->name ) ) )}
|
||||
@@ -614,7 +693,7 @@
|
||||
<table width='100%' cellpadding='0' cellspacing='0' border='0'>
|
||||
<tr>
|
||||
<td dir='{dir}' width='40' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<img src='{$comment->author()->photo}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
<img src='{$comment->author()->get_photo( true, true )}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
</td>
|
||||
<td dir='{dir}' width='30' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<br />
|
||||
@@ -632,7 +711,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; line-height: 1.5; font-size: 14px;">
|
||||
{$email->parseTextForEmail( $comment->content() )|raw}
|
||||
{$email->parseTextForEmail( $comment->content(), $email->language )|raw}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -657,11 +736,21 @@
|
||||
|
||||
{$email->language->addToStack("email_ignore_user_pm", FALSE, array( 'sprintf' => array( $comment->author()->name ) ) )}
|
||||
|
||||
-- {setting="board_name"}]]></template_content_plaintext></template><template><template_app>core</template_app><template_name>notification_new_content</template_name><template_content_html><![CDATA[
|
||||
-- {setting="board_name"}]]></template_content_plaintext></template><template><template_app>core</template_app><template_name>unsubscribeNotification</template_name><template_content_html><![CDATA[{{if $member instanceof \IPS\Member}}
|
||||
<tr>
|
||||
<td dir='{dir}' valign="top"><img src='{setting="base_url"}applications/core/interface/email/spacer.png' width='1' height='1' alt=''></td>
|
||||
<td dir='{dir}' valign='middle' align='center' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 12px; line-height: 18px; padding-left: 10px;">
|
||||
{$email->language->addToStack("unsubscribe_blurb", FALSE)} <a href="{url="app=core&module=system&controller=notifications&do=options&type={$key}" seoTemplate="notifications_options"}" style='color: #4a8aca; text-decoration: none; display: inline-block'>{$email->language->addToStack( 'adjust_notification_prefs', FALSE )}</a>.
|
||||
<br />
|
||||
</td>
|
||||
</tr>
|
||||
{{endif}}]]></template_content_html><template_data>$key, $member, $email</template_data><template_content_plaintext><![CDATA[{$email->language->addToStack("unsubscribe_blurb", FALSE)} {$email->language->addToStack( 'adjust_notification_prefs', FALSE )}: {url="app=core&module=system&controller=notifications&do=options&type={$key}" seoTemplate="notifications_options"}]]></template_content_plaintext></template><template><template_app>core</template_app><template_name>notification_new_content</template_name><template_content_html><![CDATA[
|
||||
{{if $content->author()->member_id}}
|
||||
{$email->language->addToStack("email_new_content", FALSE, array( 'sprintf' => array( $content->author()->url(), $content->author()->name, $content->indefiniteArticle( $email->language ) ) ) )} <a href='{$content->url()}'>{$content->mapped('title')}</a>
|
||||
{{elseif $content->author()->real_name}}
|
||||
{$email->language->addToStack("email_new_content_guest", FALSE, array( 'sprintf' => array( $email->language->addToStack( 'guest_name_shown', NULL, array( 'sprintf' => array( $content->author()->real_name ) ) ), $content->author()->name, $content->indefiniteArticle( $email->language ) ) ) )} <a href='{$content->url()}'>{$content->mapped('title')}</a>
|
||||
{{else}}
|
||||
{$email->language->addToStack("email_new_content_guest", FALSE, array( 'sprintf' => array( $content->author()->name, $content->indefiniteArticle( $email->language ) ) ) )} <a href='{$content->url()}'>{$content->mapped('title')}</a>
|
||||
{$email->language->addToStack("email_new_content_guest", FALSE, array( 'sprintf' => array( $email->language->addToStack( 'guest_name_shown', NULL, array( 'sprintf' => array( $email->language->addToStack('guest') ) ) ), $content->indefiniteArticle( $email->language ) ) ) )} <a href='{$content->url()}'>{$content->mapped('title')}</a>
|
||||
{{endif}}
|
||||
|
||||
<br />
|
||||
@@ -670,7 +759,7 @@
|
||||
<table width='100%' cellpadding='0' cellspacing='0' border='0'>
|
||||
<tr>
|
||||
<td dir='{dir}' width='40' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<img src='{$content->author()->photo}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
<img src='{$content->author()->get_photo( true, true )}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
</td>
|
||||
<td dir='{dir}' width='30' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<br />
|
||||
@@ -683,12 +772,12 @@
|
||||
<table width='100%' cellpadding='5' cellspacing='0' border='0'>
|
||||
<tr>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; line-height: 1.5; font-size: 14px; color: #8d8d8d">
|
||||
{$email->language->addToStack("email_posted_in", FALSE, array( 'sprintf' => array( $content->container()->_title ) ) )}
|
||||
{$email->language->addToStack("email_posted_in", FALSE, array( 'sprintf' => array( $email->language->addToStack( $content->container()->_titleLanguageKey ) ) ) )}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; line-height: 1.5; font-size: 14px;">
|
||||
{$email->parseTextForEmail( $content->content() )|raw}
|
||||
{$email->parseTextForEmail( $content->content(), $email->language )|raw}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -756,13 +845,13 @@
|
||||
<table width='100%' cellpadding='15' cellspacing='0' border='0' style='background: #f9f9f9;'>
|
||||
<tr>
|
||||
<td dir='{dir}' align='center'>
|
||||
<a href='{url="app=core&module=system&controller=lostpass&do=validate&vid={$vid}&mid={$member->member_id}" seoTemplate="lost_password" base="front"}' style="color: #ffffff; font-family: 'Helvetica Neue', helvetica, sans-serif; text-decoration: none; font-size: 14px; background: {setting="email_color"}; line-height: 32px; padding: 0 10px; display: inline-block; border-radius: 3px;">{$email->language->addToStack("email_reset_password", FALSE)}</a>
|
||||
<a href='{url="app=core&module=system&controller=lostpass&do=validate&vid={$vid}&mid={$member->member_id}" seoTemplate="lostpassword" base="front"}' style="color: #ffffff; font-family: 'Helvetica Neue', helvetica, sans-serif; text-decoration: none; font-size: 14px; background: {setting="email_color"}; line-height: 32px; padding: 0 10px; display: inline-block; border-radius: 3px;">{$email->language->addToStack("email_reset_password", FALSE)}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>]]></template_content_html><template_data>$member, $vid, $email</template_data><template_content_plaintext><![CDATA[{$email->language->addToStack("email_lost_pass_plain", FALSE)}
|
||||
|
||||
=====
|
||||
{$email->language->addToStack("email_reset_password", FALSE)}: {url="app=core&module=system&controller=lostpass&do=validate&vid={$vid}&mid={$member->member_id}" seoTemplate="lost_password" plain="true" base="front"}
|
||||
{$email->language->addToStack("email_reset_password", FALSE)}: {url="app=core&module=system&controller=lostpass&do=validate&vid={$vid}&mid={$member->member_id}" seoTemplate="lostpassword" plain="true" base="front"}
|
||||
=====
|
||||
|
||||
-- {setting="board_name"}]]></template_content_plaintext></template><template><template_app>core</template_app><template_name>admin_reg</template_name><template_content_html><![CDATA[
|
||||
@@ -773,26 +862,35 @@
|
||||
<tr>
|
||||
<td dir='{dir}'>
|
||||
<table width='100%' cellpadding='0' cellspacing='0' border='0' style='background: #f9f9f9;' class='responsive_table'>
|
||||
<tr class='responsive_row'>
|
||||
<td dir='{dir}' width='150' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px;"><strong>{$email->language->addToStack("username", FALSE)}:</strong></td>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px;">{$member->name}</td>
|
||||
</tr>
|
||||
<tr class='responsive_row'>
|
||||
<td dir='{dir}' width='150' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px;"><strong>{$email->language->addToStack("email_address", FALSE)}:</strong></td>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px;">{$member->email}</td>
|
||||
</tr>
|
||||
<tr class='responsive_row'>
|
||||
<td dir='{dir}' width='150' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px;"><strong>{$email->language->addToStack("password", FALSE)}:</strong></td>
|
||||
<td dir='{dir}' style="font-family: monaco, 'Courier New', courier, monospace; font-size: 14px;">{$password}</td>
|
||||
</tr>
|
||||
{{if $member->name}}
|
||||
<tr class='responsive_row'>
|
||||
<td dir='{dir}' width='150' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px;"><strong>{$email->language->addToStack("username", FALSE)}:</strong></td>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px;">{$member->name}</td>
|
||||
</tr>
|
||||
{{endif}}
|
||||
{{if $member->email}}
|
||||
<tr class='responsive_row'>
|
||||
<td dir='{dir}' width='150' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px;"><strong>{$email->language->addToStack("email_address", FALSE)}:</strong></td>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px;">{$member->email}</td>
|
||||
</tr>
|
||||
{{endif}}
|
||||
{{if $password}}
|
||||
<tr class='responsive_row'>
|
||||
<td dir='{dir}' width='150' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px;"><strong>{$email->language->addToStack("password", FALSE)}:</strong></td>
|
||||
<td dir='{dir}' style="font-family: monaco, 'Courier New', courier, monospace; font-size: 14px;">{$password}</td>
|
||||
</tr>
|
||||
{{endif}}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
|
||||
{$email->language->addToStack("email_plz_change_password", FALSE)}
|
||||
<br />
|
||||
{{if $password}}
|
||||
{$email->language->addToStack("email_plz_change_password", FALSE)}
|
||||
<br />
|
||||
{{endif}}
|
||||
|
||||
<br />
|
||||
|
||||
<a href='{setting="base_url"}' style="color: #ffffff; font-family: 'Helvetica Neue', helvetica, sans-serif; text-decoration: none; font-size: 12px; background: {setting="email_color"}; line-height: 32px; padding: 0 10px; display: inline-block; border-radius: 3px;">{expression="$email->language->addToStack( 'email_go_to_site', FALSE, array( 'sprintf' => array( \IPS\Settings::i()->board_name ) ) )"}</a>
|
||||
@@ -801,15 +899,15 @@
|
||||
<em style='color: #8c8c8c'>— {setting="board_name"}</em>]]></template_content_html><template_data>$member, $password, $email</template_data><template_content_plaintext><![CDATA[{expression="$email->language->addToStack( 'email_admin_reg', FALSE, array( 'sprintf' => array( \IPS\Settings::i()->board_name ) ) )"}
|
||||
|
||||
=====
|
||||
{$email->language->addToStack("username", FALSE)}: {$member->name}
|
||||
{$email->language->addToStack("email_address", FALSE)}: {$member->email}
|
||||
{$email->language->addToStack("password", FALSE)}: {$password}
|
||||
{{if $member->name}}{$email->language->addToStack("username", FALSE)}: {$member->name}{{endif}}
|
||||
{{if $member->email}}{$email->language->addToStack("email_address", FALSE)}: {$member->email}{{endif}}
|
||||
{{if $password}}{$email->language->addToStack("password", FALSE)}: {$password}{{endif}}
|
||||
=====
|
||||
|
||||
{expression="$email->language->addToStack( 'email_go_to_site', FALSE, array( 'sprintf' => array( \IPS\Settings::i()->board_name ) ) )"}: {setting="base_url"}
|
||||
|
||||
-- {setting="board_name"}]]></template_content_plaintext></template><template><template_app>core</template_app><template_name>notification_quote</template_name><template_content_html><![CDATA[
|
||||
{{$item = $comment->item();}}
|
||||
{{$item = $comment instanceof \IPS\Content\Item ? $comment : $comment->item();}}
|
||||
|
||||
{$email->language->addToStack("email_quoted_you", FALSE, array( 'sprintf' => array( $comment->author()->url(), $comment->author()->name, $item->indefiniteArticle( $email->language ) ) ) )}
|
||||
|
||||
@@ -818,7 +916,7 @@
|
||||
<table width='100%' cellpadding='0' cellspacing='0' border='0'>
|
||||
<tr>
|
||||
<td dir='{dir}' width='40' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<img src='{$comment->author()->photo}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
<img src='{$comment->author()->get_photo( true, true )}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
</td>
|
||||
<td dir='{dir}' width='30' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<br />
|
||||
@@ -836,7 +934,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; line-height: 1.5; font-size: 14px; -ms-word-break: break-all; word-break: break-all; word-break: break-word; -webkit-hyphens: auto; -moz-hyphens: auto; -ms-hyphens: auto; hyphens: auto;">
|
||||
{$email->parseTextForEmail( $comment->content() )|raw}
|
||||
{$email->parseTextForEmail( $comment->content(), $email->language )|raw}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -853,24 +951,24 @@
|
||||
</table>
|
||||
<br /><br />
|
||||
<em style='color: #8c8c8c'>— {setting="board_name"}</em>]]></template_content_html><template_data>$comment, $email</template_data><template_content_plaintext><![CDATA[
|
||||
{{$item = $comment->item();}}{$email->language->addToStack("email_quoted_you_plain", FALSE, array( 'sprintf' => array( $comment->author()->name, $item->indefiniteArticle( $email->language ) ) ) )}
|
||||
{{$item = $comment instanceof \IPS\Content\Item ? $comment : $comment->item();}}{$email->language->addToStack("email_quoted_you_plain", FALSE, array( 'sprintf' => array( $comment->author()->name, $item->indefiniteArticle( $email->language ) ) ) )}
|
||||
|
||||
{$email->language->addToStack("go_to_this_x", FALSE, array( 'sprintf' => array( mb_strtolower( $email->language->addToStack( $comment::$title, FALSE ) ) ) ) )}: {$comment->url()}
|
||||
|
||||
-- {setting="board_name"}]]></template_content_plaintext></template><template><template_app>core</template_app><template_name>notification_new_content_bulk</template_name><template_content_html><![CDATA[{{if $member->member_id}}
|
||||
{$email->language->addToStack("email_new_content_bulk", FALSE, array( 'sprintf' => array( $member->url(), $member->name, $email->language->addToStack( $contentClass::$title . '_pl', FALSE ) ) ) )} <a href='{$container->url()}'>{$container->_title}</a>
|
||||
{$email->language->addToStack("email_new_content_bulk", FALSE, array( 'sprintf' => array( $member->url(), $member->name, $email->language->addToStack( $contentClass::$title . '_pl_lc', FALSE ) ) ) )} <a href='{$container->url()}'>{$container->_title}</a>
|
||||
{{else}}
|
||||
{$email->language->addToStack("email_new_content_bulk_guest", FALSE, array( 'sprintf' => array( $member->name, $email->language->addToStack( $contentClass::$title . '_pl', FALSE ) ) ) )} <a href='{$container->url()}'>{$container->_title}</a>
|
||||
{$email->language->addToStack("email_new_content_bulk_guest", FALSE, array( 'sprintf' => array( $member->name, $email->language->addToStack( $contentClass::$title . '_pl_lc', FALSE ) ) ) )} <a href='{$container->url()}'>{$container->_title}</a>
|
||||
{{endif}}
|
||||
|
||||
<br /><br />
|
||||
<em style='color: #8c8c8c'>— {setting="board_name"}</em>]]></template_content_html><template_data>$container, $member, $contentClass, $email</template_data><template_content_plaintext><![CDATA[{$email->language->addToStack("email_new_content_bulk_plain", FALSE, array( 'sprintf' => array( $member->name, $email->language->addToStack( $contentClass::$title . '_pl', FALSE ) ) ) )} {$container->_title}
|
||||
<em style='color: #8c8c8c'>— {setting="board_name"}</em>]]></template_content_html><template_data>$container, $member, $contentClass, $email</template_data><template_content_plaintext><![CDATA[{$email->language->addToStack("email_new_content_bulk_plain", FALSE, array( 'sprintf' => array( $member->name, $email->language->addToStack( $contentClass::$title . '_pl_lc', FALSE ) ) ) )} {$container->_title}
|
||||
|
||||
-- {setting="board_name"}]]></template_content_plaintext></template><template><template_app>core</template_app><template_name>registration_notify</template_name><template_content_html><![CDATA[
|
||||
{$email->language->addToStack("email_registration_notify", FALSE, array( 'sprintf' => array( \IPS\Settings::i()->board_name ) ) )}
|
||||
<br />
|
||||
<br />
|
||||
{{if \IPS\Settings::i()->reg_auth_type == 'admin'}}
|
||||
{{if \IPS\Settings::i()->reg_auth_type == 'admin' or \IPS\Settings::i()->reg_auth_type == 'admin_user'}}
|
||||
<strong style="color: #a72336; font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px;">{$email->language->addToStack("email_admin_approval_msg", FALSE)}</strong>
|
||||
<br /><br />
|
||||
{{endif}}
|
||||
@@ -894,7 +992,7 @@
|
||||
{{foreach $fields as $field => $data}}
|
||||
<tr class='responsive_row'>
|
||||
<td dir='{dir}' width='150' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px;" valign='top'><strong>{$email->language->addToStack("core_p" . $field, FALSE)}:</strong></td>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px;">{$email->parseTextForEmail( $data )|raw}</td>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px;">{$email->parseTextForEmail( $data, $email->language )|raw}</td>
|
||||
</tr>
|
||||
{{endforeach}}
|
||||
{{endif}}
|
||||
@@ -910,7 +1008,7 @@
|
||||
<em style='color: #8c8c8c'>— {setting="board_name"}</em>]]></template_content_html><template_data>$member, $fields, $email</template_data><template_content_plaintext><![CDATA[
|
||||
{$email->language->addToStack("email_registration_notify", FALSE, array( 'sprintf' => array( \IPS\Settings::i()->board_name ) ) )}
|
||||
|
||||
{{if \IPS\Settings::i()->reg_auth_type == 'admin'}}**{$email->language->addToStack("email_admin_approval_msg", FALSE)}**{{endif}}
|
||||
{{if \IPS\Settings::i()->reg_auth_type == 'admin' or \IPS\Settings::i()->reg_auth_type == 'admin_user'}}**{$email->language->addToStack("email_admin_approval_msg", FALSE)}**{{endif}}
|
||||
|
||||
{$email->language->addToStack("go_to_this_user", FALSE, array( 'sprintf' => array( $member->name ) ) )}: {setting="base_url"}
|
||||
|
||||
@@ -1037,7 +1135,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td dir='{dir}' valign="top"><img src='{setting="base_url"}applications/core/interface/email/spacer.png' width='1' height='1' alt=''></td>
|
||||
<td dir='{dir}' valign='middle' align='left' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 30px; font-weight: 300; color: #262e33; line-height: 48px; padding-left: 10px;">
|
||||
<td dir='{dir}' valign='middle' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 30px; font-weight: 300; color: #262e33; line-height: 48px; padding-left: 10px;">
|
||||
<a href='{setting="base_url"}' style='text-decoration: none; color: #262e33; border: 0;'>
|
||||
{{$imgDims=NULL;}}
|
||||
{{if \IPS\Settings::i()->email_logo}}
|
||||
@@ -1071,7 +1169,7 @@
|
||||
<strong style='font-size: 17px'>{$email->language->addToStack("email_greeting_member", FALSE, array( 'sprintf' => array( $member->name ) ) )}</strong>
|
||||
<br />
|
||||
{{elseif $placeholderRecipient}}
|
||||
<strong style='font-size: 17px'>{$email->language->addToStack("email_greeting_member", FALSE, array( 'sprintf' => array( '*|recipient_name|*' ) ) )}</strong>
|
||||
<strong style='font-size: 17px'>{$email->language->addToStack("email_greeting_member", FALSE, array( 'sprintf' => array( '*|member_name|*' ) ) )}</strong>
|
||||
<br />
|
||||
{{endif}}
|
||||
|
||||
@@ -1087,15 +1185,8 @@
|
||||
<td dir='{dir}'><img src='{setting="base_url"}applications/core/interface/email/spacer.png' width='1' height='1' alt=''></td>
|
||||
<td dir='{dir}'><img src='{setting="base_url"}applications/core/interface/email/spacer.png' width='1' height='1' alt=''></td>
|
||||
</tr>
|
||||
{{if isset( $unsubscribe['link'] ) and $unsubscribe['link']}}
|
||||
<tr>
|
||||
<td dir='{dir}' valign="top"><img src='{setting="base_url"}applications/core/interface/email/spacer.png' width='1' height='1' alt=''></td>
|
||||
<td dir='{dir}' valign='middle' align='center' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 12px; line-height: 18px; padding-left: 10px;">
|
||||
{{if isset( $unsubscribe['blurb'] ) and $unsubscribe['blurb']}}{$unsubscribe['blurb']}<br>{{endif}}
|
||||
{$email->language->addToStack("unsubscribe_blurb", FALSE)} {{if $unsubscribe['link']}}<a href="{$unsubscribe['link']}" style='color: #4a8aca; text-decoration: none; display: inline-block'>{{endif}}{{if $unsubscribe['text']}}{$email->language->addToStack($unsubscribe['text'], FALSE)}{{else}}{$email->language->addToStack("unsubscribe", FALSE)}{{endif}}{{if $unsubscribe['link']}}</a>{{endif}}{{if isset( $unsubscribe['orlink'] ) and $unsubscribe['orlink']}} {$email->language->addToStack("or", FALSE)} <a href="{$unsubscribe['orlink']}" style='color: #4a8aca; text-decoration: none; display: inline-block'>{$email->language->addToStack($unsubscribe['ortext'], FALSE)}</a>{{endif}}.
|
||||
<br />
|
||||
</td>
|
||||
</tr>
|
||||
{{if $unsubscribe}}
|
||||
{$unsubscribe|raw}
|
||||
{{endif}}
|
||||
{{if \IPS\Settings::i()->privacy_type != "none"}}
|
||||
<tr>
|
||||
@@ -1119,11 +1210,11 @@
|
||||
</body>
|
||||
</html>
|
||||
]]></template_content_html><template_data>$subject, $member, $content, $unsubscribe, $placeholderRecipient=FALSE, $introText='', $email</template_data><template_content_plaintext><![CDATA[
|
||||
{{if $member->member_id }}{$email->language->addToStack("email_greeting_member", FALSE, array( 'sprintf' => array( $member->name ) ) )}{{elseif $placeholderRecipient}}{$email->language->addToStack("email_greeting_member", FALSE, array( 'sprintf' => array( '*|recipient_name|*' ) ) )}{{endif}}
|
||||
{{if $member->member_id }}{$email->language->addToStack("email_greeting_member", FALSE, array( 'sprintf' => array( $member->name ) ) )}{{elseif $placeholderRecipient}}{$email->language->addToStack("email_greeting_member", FALSE, array( 'sprintf' => array( '*|member_name|*' ) ) )}{{endif}}
|
||||
{$content|raw}
|
||||
|
||||
-----
|
||||
{{if $unsubscribe['link']}}{{if isset( $unsubscribe['blurb'] ) and $unsubscribe['blurb']}}{$unsubscribe['blurb']}\n{{endif}}{$email->language->addToStack("unsubscribe_blurb", FALSE)} {{if $unsubscribe['text'] != ''}}{$email->language->addToStack($unsubscribe['text'], FALSE)}{{endif}} {{if $unsubscribe['link'] != ''}}({$unsubscribe['link']}){{endif}}{{if isset( $unsubscribe['orlink'] ) and $unsubscribe['orlink']}} {$email->language->addToStack("or", FALSE)} {$email->language->addToStack($unsubscribe['ortext'], FALSE)} ({$unsubscribe['orlink']}){{endif}}{{endif}}
|
||||
{{if $unsubscribe}}{$unsubscribe}{{endif}}
|
||||
|
||||
{{if \IPS\Settings::i()->privacy_type != "none"}}{{if \IPS\Settings::i()->privacy_type == "internal"}}{url="app=core&module=system&controller=privacy" seoTemplate="privacy" base="front" plain="true"}{{else}}{setting="privacy_link"}){{endif}}{{endif}}
|
||||
|
||||
@@ -1137,7 +1228,7 @@
|
||||
<table width='100%' cellpadding='0' cellspacing='0' border='0'>
|
||||
<tr>
|
||||
<td dir='{dir}' width='40' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<img src='{$comment->author()->photo}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
<img src='{$comment->author()->get_photo( true, true )}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
</td>
|
||||
<td dir='{dir}' width='30' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<br />
|
||||
@@ -1155,7 +1246,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; line-height: 1.5; font-size: 14px;">
|
||||
{$email->parseTextForEmail( $comment->content() )|raw}
|
||||
{$email->parseTextForEmail( $comment->content(), $email->language )|raw}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -1186,7 +1277,7 @@
|
||||
<table width='100' cellpadding='15' cellspacing='0' border='0' style='background: #f9f9f9;'>
|
||||
<tr>
|
||||
<td dir='{dir}'>
|
||||
<img src='{$member->photo}' width='100' height='100' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
<img src='{$member->get_photo( true, true )}' width='100' height='100' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -1238,7 +1329,7 @@
|
||||
<table width='100%' cellpadding='0' cellspacing='0' border='0'>
|
||||
<tr>
|
||||
<td dir='{dir}' width='40' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<img src='{$content->author()->photo}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
<img src='{$content->author()->get_photo( true, true )}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
</td>
|
||||
<td dir='{dir}' width='30' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<br />
|
||||
@@ -1256,7 +1347,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; line-height: 1.5; font-size: 14px;">
|
||||
{$email->parseTextForEmail( $content->content() )|raw}
|
||||
{$email->parseTextForEmail( $content->content(), $email->language )|raw}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -1287,13 +1378,21 @@
|
||||
|
||||
{$email->language->addToStack("email_go_to_site", FALSE, array( 'sprintf' => array( \IPS\Settings::i()->board_name ) ) )}: {setting="base_url"}
|
||||
|
||||
-- {setting="board_name"}]]></template_content_plaintext></template><template><template_app>core</template_app><template_name>notification_new_review</template_name><template_content_html><![CDATA[
|
||||
-- {setting="board_name"}]]></template_content_plaintext></template><template><template_app>core</template_app><template_name>unsubscribeBulk</template_name><template_content_html><![CDATA[<tr>
|
||||
<td dir='{dir}' valign="top"><img src='{setting="base_url"}applications/core/interface/email/spacer.png' width='1' height='1' alt=''></td>
|
||||
<td dir='{dir}' valign='middle' align='center' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 12px; line-height: 18px; padding-left: 10px;">
|
||||
{$email->language->addToStack("unsubscribe_blurb", FALSE)} <a href="{{if $member instanceof \IPS\Member}}{url="app=core&module=system&controller=unsubscribe&email=" seoTemplate="unsubscribe" base="front"}{$member->email}&key={expression="md5( $member->email . ':' . $member->members_pass_hash )"}{{else}}{url="app=core&module=system&controller=unsubscribe&email=" seoTemplate="unsubscribe" base="front"}*|member_email|*&key=*|unsubscribe_key|*{{endif}}" style='color: #4a8aca; text-decoration: none; display: inline-block'>{$email->language->addToStack( 'unsubscribe', FALSE )}</a>.
|
||||
<br />
|
||||
</td>
|
||||
</tr>]]></template_content_html><template_data>$member, $email</template_data><template_content_plaintext><![CDATA[{$email->language->addToStack("unsubscribe_blurb", FALSE)} {$email->language->addToStack( 'unsubscribe', FALSE )}: {{if $member instanceof \IPS\Member}}{url="app=core&module=system&controller=unsubscribe&email=" seoTemplate="unsubscribe" base="front"}{$member->email}&key={expression="md5( $member->email . ':' . $member->members_pass_hash )"}{{else}}*|unsubscribe_url|*{{endif}}]]></template_content_plaintext></template><template><template_app>core</template_app><template_name>notification_new_review</template_name><template_content_html><![CDATA[
|
||||
{{$item = $comment->item();}}
|
||||
|
||||
{{if $comment->author()->member_id}}
|
||||
{$email->language->addToStack("email_new_review", FALSE, array( 'sprintf' => array( $comment->author()->url(), $comment->author()->name, $item->indefiniteArticle( $email->language ) ) ) )} <a href='{$comment->item()->url()}'>{$comment->item()->mapped('title')}</a>
|
||||
{{elseif $comment->author()->real_name}}
|
||||
{$email->language->addToStack("email_new_review_guest", FALSE, array( 'sprintf' => array( $email->language->addToStack( 'guest_name_shown', NULL, array( 'sprintf' => array( $comment->author()->real_name ) ) ), $comment->author()->name, $item->indefiniteArticle( $email->language ) ) ) )} <a href='{$comment->item()->url()}'>{$comment->item()->mapped('title')}</a>
|
||||
{{else}}
|
||||
{$email->language->addToStack("email_new_review_guest", FALSE, array( 'sprintf' => array( $comment->author()->name, $item->indefiniteArticle( $email->language ) ) ) )} <a href='{$comment->item()->url()}'>{$comment->item()->mapped('title')}</a>
|
||||
{$email->language->addToStack("email_new_review_guest", FALSE, array( 'sprintf' => array( $email->language->addToStack( 'guest_name_shown', NULL, array( 'sprintf' => array( $email->language->addToStack('guest') ) ) ), $item->indefiniteArticle( $email->language ) ) ) )} <a href='{$comment->item()->url()}'>{$comment->item()->mapped('title')}</a>
|
||||
{{endif}}
|
||||
|
||||
<br />
|
||||
@@ -1302,7 +1401,7 @@
|
||||
<table width='100%' cellpadding='0' cellspacing='0' border='0'>
|
||||
<tr>
|
||||
<td dir='{dir}' width='40' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<img src='{$comment->author()->photo}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
<img src='{$comment->author()->get_photo( true, true )}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
</td>
|
||||
<td dir='{dir}' width='30' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<br />
|
||||
@@ -1316,13 +1415,13 @@
|
||||
<tr>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; line-height: 1.5; font-size: 14px;">
|
||||
{{foreach range( 1, 5 ) as $i}}
|
||||
{{if $comment->mapped('rating') >= $i}}<img src='{setting="base_url"}applications/core/interface/email/rating_on.png' width='14' height='13' alt='*'>{{else}}<img src='{setting="base_url"}applications/core/interface/email/rating_off.png' width='14' height='13' alt=''>{{endif}}
|
||||
{{if $i <= $comment->mapped('rating')}}<img src='{resource="email/rating_on.png" location="interface" app="core"}' width='14' height='13' alt='*'>{{elseif ( $i - 0.5 ) <= $comment->mapped('rating')}}<img src='{resource="email/rating_half.png" location="interface" app="core"}' width='14' height='13' alt='*'>{{else}}<img src='{resource="email/rating_off.png" location="interface" app="core"}' width='14' height='13' alt=''>{{endif}}
|
||||
{{endforeach}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; line-height: 1.5; font-size: 14px;">
|
||||
{$email->parseTextForEmail( $comment->content() )|raw}
|
||||
{$email->parseTextForEmail( $comment->content(), $email->language )|raw}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -1357,7 +1456,7 @@
|
||||
<table width='100%' cellpadding='0' cellspacing='0' border='0'>
|
||||
<tr>
|
||||
<td dir='{dir}' width='40' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<img src='{$item->author()->photo}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
<img src='{$item->author()->get_photo( true, true )}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
</td>
|
||||
<td dir='{dir}' width='30' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<br />
|
||||
@@ -1374,7 +1473,7 @@
|
||||
<table width='100%' cellpadding='5' cellspacing='0' border='0'>
|
||||
<tr>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; line-height: 1.5; font-size: 14px;">
|
||||
{$email->parseTextForEmail( $item->content() )|raw}
|
||||
{$email->parseTextForEmail( $item->content(), $email->language )|raw}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -1394,7 +1493,7 @@
|
||||
<tr>
|
||||
<td dir='{dir}' width='40'> </td>
|
||||
<td dir='{dir}' width='40' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<img src='{$comment->author()->photo}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
<img src='{$comment->author()->get_photo( true, true )}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
</td>
|
||||
<td dir='{dir}' width='30' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<br />
|
||||
@@ -1412,7 +1511,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; line-height: 1.5; font-size: 14px;">
|
||||
{$email->parseTextForEmail( $comment->content() )|raw}
|
||||
{$email->parseTextForEmail( $comment->content(), $email->language )|raw}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -1444,8 +1543,7 @@
|
||||
<%digest%>]]></template_content_html><template_data>$member, $frequency, $email</template_data><template_content_plaintext><![CDATA[{$email->language->addToStack("digest_$frequency", FALSE)}
|
||||
|
||||
<%digest%>]]></template_content_plaintext></template><template><template_app>core</template_app><template_name>notification_report_center</template_name><template_content_html><![CDATA[{{$item = $reportedContent instanceof \IPS\Content\Item ? $reportedContent : $reportedContent->item();}}
|
||||
{{$link = "<a href='{$reportedContent->url()}'>{$item->mapped('title')}</a>";}}
|
||||
{$email->language->addToStack("email_content_reported", FALSE, array( 'sprintf' => array( \IPS\Member::load( $latestReport['report_by'] )->name, $reportedContent->indefiniteArticle( $email->language ) ), 'htmlsprintf' => array( $link ) ) )}
|
||||
{$email->language->addToStack("email_content_reported", FALSE, array( 'sprintf' => array( \IPS\Member::load( $latestReport['report_by'] )->name, $reportedContent->indefiniteArticle( $email->language ), $reportedContent->url(), $item->mapped('title') ) ) )}
|
||||
|
||||
<br />
|
||||
<br />
|
||||
@@ -1453,7 +1551,7 @@
|
||||
<table width='100%' cellpadding='0' cellspacing='0' border='0'>
|
||||
<tr>
|
||||
<td dir='{dir}' width='40' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<img src='{$report->author()->photo}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
<img src='{$report->author()->get_photo( true, true )}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
</td>
|
||||
<td dir='{dir}' width='30' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<br />
|
||||
@@ -1466,7 +1564,7 @@
|
||||
<table width='100%' cellpadding='5' cellspacing='0' border='0'>
|
||||
<tr>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; line-height: 1.5; font-size: 14px;">
|
||||
{$email->parseTextForEmail( $latestReport['report'] )|raw}
|
||||
{$email->parseTextForEmail( $latestReport['report'], $email->language )|raw}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -1483,18 +1581,29 @@
|
||||
</table>
|
||||
<br /><br />
|
||||
<em style='color: #8c8c8c'>— {setting="board_name"}</em>]]></template_content_html><template_data>$report, $latestReport, $reportedContent, $email</template_data><template_content_plaintext><![CDATA[{{$item = $reportedContent instanceof \IPS\Content\Item ? $reportedContent : $reportedContent->item();}}
|
||||
{$email->language->addToStack("email_content_reported", FALSE, array( 'sprintf' => array( \IPS\Member::load( $latestReport['report_by'] )->name, $reportedContent->indefiniteArticle( $email->language ), $item->mapped('title') ) ) )}
|
||||
{$email->language->addToStack("email_content_reported_plain", FALSE, array( 'sprintf' => array( \IPS\Member::load( $latestReport['report_by'] )->name, $reportedContent->indefiniteArticle( $email->language ), $item->mapped('title') ) ) )}
|
||||
|
||||
{$email->language->addToStack("go_to_the_report", FALSE)}: {$report->url()}
|
||||
{$email->language->addToStack("go_to_this_x", FALSE, array( 'sprintf' => array( mb_strtolower( $email->language->addToStack( $reportedContent::$title, FALSE ) ) ) ) )}: {$reportedContent->url()}
|
||||
|
||||
-- {setting="board_name"}]]></template_content_plaintext></template><template><template_app>core</template_app><template_name>notification_new_comment</template_name><template_content_html><![CDATA[
|
||||
-- {setting="board_name"}]]></template_content_plaintext></template><template><template_app>core</template_app><template_name>unsubscribeFollow</template_name><template_content_html><![CDATA[<tr>
|
||||
<td dir='{dir}' valign="top"><img src='{setting="base_url"}applications/core/interface/email/spacer.png' width='1' height='1' alt=''></td>
|
||||
<td dir='{dir}' valign='middle' align='center' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 12px; line-height: 18px; padding-left: 10px;">
|
||||
*|unsubscribe_blurb|*<br>
|
||||
{$email->language->addToStack("unsubscribe_blurb", FALSE)} <a href="*|unfollow_link|*" style='color: #4a8aca; text-decoration: none; display: inline-block'>{$email->language->addToStack( 'unfollow', FALSE )}</a> {$email->language->addToStack("or", FALSE)} <a href="{url="app=core&module=system&controller=notifications&do=options&type={$key}" base="front" seoTemplate="notifications_options"}" style='color: #4a8aca; text-decoration: none; display: inline-block'>{$email->language->addToStack( 'adjust_notification_prefs', FALSE)}</a>.
|
||||
<br />
|
||||
</td>
|
||||
</tr>
|
||||
]]></template_content_html><template_data>$key, $member, $email</template_data><template_content_plaintext><![CDATA[*|unsubscribe_blurb|*
|
||||
{$email->language->addToStack("unsubscribe_blurb", FALSE)} {$email->language->addToStack( 'unfollow', FALSE )} ( *|unfollow_link|* ) {$email->language->addToStack( 'or', FALSE )} {$email->language->addToStack( 'adjust_notification_prefs', FALSE )} ( {url="app=core&module=system&controller=notifications&do=options&type={$key}" base="front" seoTemplate="notifications_options"} )]]></template_content_plaintext></template><template><template_app>core</template_app><template_name>notification_new_comment</template_name><template_content_html><![CDATA[
|
||||
{{$item = $comment->item();}}
|
||||
|
||||
{{if $comment->author()->member_id}}
|
||||
{$email->language->addToStack("email_new_comment", FALSE, array( 'sprintf' => array( $comment->author()->url(), $comment->author()->name, $item->indefiniteArticle( $email->language ) ) ) )} <a href='{$comment->item()->url()}'>{$comment->item()->mapped('title')}</a>
|
||||
{{elseif $comment->author()->real_name}}
|
||||
{$email->language->addToStack("email_new_comment_guest", FALSE, array( 'sprintf' => array( $email->language->addToStack( 'guest_name_shown', NULL, array( 'sprintf' => array( $comment->author()->real_name ) ) ), $comment->author()->name, $item->indefiniteArticle( $email->language ) ) ) )} <a href='{$comment->item()->url()}'>{$comment->item()->mapped('title')}</a>
|
||||
{{else}}
|
||||
{$email->language->addToStack("email_new_comment_guest", FALSE, array( 'sprintf' => array( $comment->author()->name, $item->indefiniteArticle( $email->language ) ) ) )} <a href='{$comment->item()->url()}'>{$comment->item()->mapped('title')}</a>
|
||||
{$email->language->addToStack("email_new_comment_guest", FALSE, array( 'sprintf' => array( $email->language->addToStack( 'guest_name_shown', NULL, array( 'sprintf' => array( $email->language->addToStack('guest') ) ) ), $item->indefiniteArticle( $email->language ) ) ) )} <a href='{$comment->item()->url()}'>{$comment->item()->mapped('title')}</a>
|
||||
{{endif}}
|
||||
|
||||
<br />
|
||||
@@ -1503,7 +1612,7 @@
|
||||
<table width='100%' cellpadding='0' cellspacing='0' border='0'>
|
||||
<tr>
|
||||
<td dir='{dir}' width='40' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<img src='{$comment->author()->photo}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
<img src='{$comment->author()->get_photo( true, true )}' width='40' height='40' style='border: 1px solid #777777; vertical-align: middle;'>
|
||||
</td>
|
||||
<td dir='{dir}' width='30' valign='top' class='hidePhone' style='width: 0; max-height: 0; overflow: hidden; float: left;'>
|
||||
<br />
|
||||
@@ -1521,7 +1630,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; line-height: 1.5; font-size: 14px;">
|
||||
{$email->parseTextForEmail( $comment->content() )|raw}
|
||||
{$email->parseTextForEmail( $comment->content(), $email->language )|raw}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -1601,7 +1710,7 @@
|
||||
{{if $warning->mq == -1}}
|
||||
{$email->language->addToStack("indefinitely", FALSE)}
|
||||
{{else}}
|
||||
{expression="\IPS\DateTime::formatInterval( new \DateInterval( $warning->mq ), 2 )"}
|
||||
{expression="\IPS\DateTime::formatInterval( new \DateInterval( $warning->mq ), 2, $email->language )"}
|
||||
{{endif}}
|
||||
</li>
|
||||
{{endif}}
|
||||
@@ -1611,7 +1720,7 @@
|
||||
{{if $warning->rpa == -1}}
|
||||
{$email->language->addToStack("indefinitely", FALSE)}
|
||||
{{else}}
|
||||
{expression="\IPS\DateTime::formatInterval( new \DateInterval( $warning->rpa ), 2 )"}
|
||||
{expression="\IPS\DateTime::formatInterval( new \DateInterval( $warning->rpa ), 2, $email->language )"}
|
||||
{{endif}}
|
||||
</li>
|
||||
{{endif}}
|
||||
@@ -1621,7 +1730,7 @@
|
||||
{{if $warning->suspend == -1}}
|
||||
{$email->language->addToStack("indefinitely", FALSE)}
|
||||
{{else}}
|
||||
{expression="\IPS\DateTime::formatInterval( new \DateInterval( $warning->suspend ), 2 )"}
|
||||
{expression="\IPS\DateTime::formatInterval( new \DateInterval( $warning->suspend ), 2, $email->language )"}
|
||||
{{endif}}
|
||||
</li>
|
||||
{{endif}}
|
||||
@@ -1636,7 +1745,7 @@
|
||||
</tr>
|
||||
<tr class='responsive_row'>
|
||||
<td dir='{dir}' width='150' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px; vertical-align: top;"><strong>{$email->language->addToStack("email_warn_note", FALSE)}:</strong></td>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px;">{$email->parseTextForEmail( $warning->note_member )|raw}</td>
|
||||
<td dir='{dir}' style="font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px;">{$email->parseTextForEmail( $warning->note_member, $email->language )|raw}</td>
|
||||
</tr>
|
||||
{{endif}}
|
||||
</table>
|
||||
@@ -1645,9 +1754,9 @@
|
||||
</table>
|
||||
<br />
|
||||
|
||||
{{if \IPS\Settings::i()->warnings_acknowledge && !$warning->acknowledged && $warning->canAcknowledge()}}
|
||||
<strong style="color: #a72336; font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px;">{$email->language->addToStack("email_warn_acknowledge", FALSE)}</strong><br />
|
||||
<a href='{$warning->url('acknowledge')}' style="color: #ffffff; font-family: 'Helvetica Neue', helvetica, sans-serif; text-decoration: none; font-size: 14px; background: {setting="email_color"}; line-height: 32px; padding: 0 10px; display: inline-block; border-radius: 3px;">{$email->language->addToStack("email_warn_acknowledge_button", FALSE)}</a>
|
||||
{{if \IPS\Settings::i()->warnings_acknowledge && !$warning->acknowledged && $warning->canAcknowledge( \IPS\Member::load($warning->member))}}
|
||||
<strong style="color: #a72336; font-family: 'Helvetica Neue', helvetica, sans-serif; font-size: 14px;">{$email->language->addToStack("email_warn_acknowledge", FALSE)}</strong><br />
|
||||
<a href='{$warning->url('acknowledge')}' style="color: #ffffff; font-family: 'Helvetica Neue', helvetica, sans-serif; text-decoration: none; font-size: 14px; background: {setting="email_color"}; line-height: 32px; padding: 0 10px; display: inline-block; border-radius: 3px;">{$email->language->addToStack("email_warn_acknowledge_button", FALSE)}</a>
|
||||
{{endif}}
|
||||
|
||||
<br /><br />
|
||||
@@ -1683,18 +1792,18 @@
|
||||
{{endif}}
|
||||
{{endif}}
|
||||
{{if $warning->mq}}
|
||||
{$email->language->addToStack("moderation_modq", FALSE)} - {{if $warning->mq == -1}}{$email->language->addToStack("indefinitely", FALSE)}{{else}}{expression="\IPS\DateTime::formatInterval( new \DateInterval( $warning->mq ), 2 )"}{{endif}}
|
||||
{$email->language->addToStack("moderation_modq", FALSE)} - {{if $warning->mq == -1}}{$email->language->addToStack("indefinitely", FALSE)}{{else}}{expression="\IPS\DateTime::formatInterval( new \DateInterval( $warning->mq ), 2, $email->language )"}{{endif}}
|
||||
{{endif}}
|
||||
{{if $warning->rpa}}
|
||||
{$email->language->addToStack("moderation_nopost", FALSE)} - {{if $warning->rpa == -1}}{$email->language->addToStack("indefinitely", FALSE)}{{else}}{expression="\IPS\DateTime::formatInterval( new \DateInterval( $warning->rpa ), 2 )"}{{endif}}
|
||||
{$email->language->addToStack("moderation_nopost", FALSE)} - {{if $warning->rpa == -1}}{$email->language->addToStack("indefinitely", FALSE)}{{else}}{expression="\IPS\DateTime::formatInterval( new \DateInterval( $warning->rpa ), 2, $email->language )"}{{endif}}
|
||||
{{endif}}
|
||||
{{if $warning->suspend}}
|
||||
{$email->language->addToStack("moderation_banned", FALSE)} - {{if $warning->suspend == -1}}{$email->language->addToStack("indefinitely", FALSE)}{{else}}{expression="\IPS\DateTime::formatInterval( new \DateInterval( $warning->suspend ), 2 )"}{{endif}}
|
||||
{$email->language->addToStack("moderation_banned", FALSE)} - {{if $warning->suspend == -1}}{$email->language->addToStack("indefinitely", FALSE)}{{else}}{expression="\IPS\DateTime::formatInterval( new \DateInterval( $warning->suspend ), 2, $email->language )"}{{endif}}
|
||||
{{endif}}
|
||||
{{endif}}
|
||||
=====
|
||||
|
||||
{{if \IPS\Settings::i()->warnings_acknowledge && !$warning->acknowledged && $warning->canAcknowledge()}}
|
||||
{{if \IPS\Settings::i()->warnings_acknowledge && !$warning->acknowledged && $warning->canAcknowledge(\IPS\Member::load($warning->member))}}
|
||||
**{$email->language->addToStack("email_warn_acknowledge", FALSE)}**
|
||||
{$email->language->addToStack("email_warn_acknowledge_button", FALSE)}: {$warning->url('acknowledge')}
|
||||
{{endif}}
|
||||
@@ -1751,4 +1860,28 @@
|
||||
|
||||
{$email->language->addToStack("email_error_log_info", FALSE)}
|
||||
|
||||
-- {setting="board_name"}]]></template_content_plaintext></template><template><template_app>core</template_app><template_name>mfaRecovery</template_name><template_content_html><![CDATA[
|
||||
{$email->language->addToStack("mfa_recovery_email_html", FALSE)}
|
||||
<br /><br />
|
||||
|
||||
<table width='100%' cellpadding='15' cellspacing='0' border='0' style='background: #f9f9f9;'>
|
||||
<tr>
|
||||
<td dir='{dir}' align='center'>
|
||||
<a href='{url="app=core&module=system&controller=settings&do=mfarecoveryvalidate&vid={$vid}&mid={$member->member_id}" seoTemplate="mfarecoveryvalidate" base="front"}' style="color: #ffffff; font-family: 'Helvetica Neue', helvetica, sans-serif; text-decoration: none; font-size: 14px; background: {setting="email_color"}; line-height: 32px; padding: 0 10px; display: inline-block; border-radius: 3px;">{$email->language->addToStack("mfa_recovery_email_confirm", FALSE)}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>]]></template_content_html><template_data>$member, $vid, $email</template_data><template_content_plaintext><![CDATA[{$email->language->addToStack("mfa_recovery_email_plain", FALSE)}
|
||||
|
||||
=====
|
||||
{$email->language->addToStack("mfa_recovery_email_confirm", FALSE)}: {url="app=core&module=system&controller=settings&do=mfarecoveryvalidate&vid={$vid}&mid={$member->member_id}" seoTemplate="mfarecoveryvalidate" plain="true" base="front"}
|
||||
=====
|
||||
|
||||
-- {setting="board_name"}]]></template_content_plaintext></template><template><template_app>core</template_app><template_name>password_changed</template_name><template_content_html><![CDATA[
|
||||
{$email->language->addToStack("email_password_changed", FALSE, array( 'sprintf' => \IPS\Settings::i()->board_name ) )}
|
||||
|
||||
|
||||
<br /><br />
|
||||
<em style='color: #8c8c8c'>— {setting="board_name"}</em>]]></template_content_html><template_data>$email</template_data><template_content_plaintext><![CDATA[{$email->language->addToStack("email_password_changed", FALSE, array( 'sprintf' => \IPS\Settings::i()->board_name ) )}
|
||||
|
||||
|
||||
-- {setting="board_name"}]]></template_content_plaintext></template></emails>
|
||||
@@ -48,6 +48,18 @@
|
||||
"friendly": "settings/password",
|
||||
"real": "app=core&module=system&controller=settings&area=password"
|
||||
},
|
||||
"settings_mfa": {
|
||||
"friendly": "settings/account-security",
|
||||
"real": "app=core&module=system&controller=settings&area=mfa"
|
||||
},
|
||||
"mfarecovery": {
|
||||
"friendly": "account-recovery",
|
||||
"real": "app=core&module=system&controller=settings&do=mfarecovery"
|
||||
},
|
||||
"mfarecoveryvalidate": {
|
||||
"friendly": "account-recovery/validate",
|
||||
"real": "app=core&module=system&controller=settings&do=mfarecoveryvalidate"
|
||||
},
|
||||
"settings_username": {
|
||||
"friendly": "settings/username",
|
||||
"real": "app=core&module=system&controller=settings&area=username"
|
||||
@@ -64,7 +76,7 @@
|
||||
"friendly": "settings/google",
|
||||
"real": "app=core&module=system&controller=settings&area=profilesync&service=Google"
|
||||
},
|
||||
"settings_LinkedIn": {
|
||||
"settings_Linkedin": {
|
||||
"friendly": "settings/linkedin",
|
||||
"real": "app=core&module=system&controller=settings&area=profilesync&service=LinkedIn"
|
||||
},
|
||||
@@ -288,10 +300,6 @@
|
||||
"friendly": "notifications/options",
|
||||
"real": "app=core&module=system&controller=notifications&do=options"
|
||||
},
|
||||
"notifications_rss": {
|
||||
"friendly": "notifications.xml",
|
||||
"real": "app=core&module=system&controller=notifications&format=rss"
|
||||
},
|
||||
"notifications": {
|
||||
"friendly": "notifications",
|
||||
"real": "app=core&module=system&controller=notifications"
|
||||
@@ -344,6 +352,10 @@
|
||||
"friendly": "discover/{#id}",
|
||||
"real": "app=core&module=discover&controller=streams"
|
||||
},
|
||||
"discover_rss_all_activity": {
|
||||
"friendly": "discover/all.xml",
|
||||
"real": "app=core&module=discover&controller=streams&rss=1"
|
||||
},
|
||||
"discover_rss": {
|
||||
"friendly": "discover/{#id}.xml",
|
||||
"real": "app=core&module=discover&controller=streams&rss=1"
|
||||
@@ -352,6 +364,13 @@
|
||||
"friendly": "discover",
|
||||
"real": "app=core&module=discover&controller=streams"
|
||||
},
|
||||
|
||||
/* RSS */
|
||||
"rss_feed": {
|
||||
"friendly": "rss/{#id}-{?}.xml",
|
||||
"real": "app=core&module=discover&controller=rss",
|
||||
"verify": "\\IPS\\core\\Rss"
|
||||
},
|
||||
|
||||
/* Language Selector */
|
||||
"language": {
|
||||
@@ -369,6 +388,36 @@
|
||||
"mark_site_as_read": {
|
||||
"friendly": "markallread",
|
||||
"real": "app=core&module=system&controller=markread"
|
||||
}
|
||||
},
|
||||
|
||||
/* Tags */
|
||||
"tags": {
|
||||
"friendly": "tags/{@tags}",
|
||||
"real": "app=core&module=search&controller=search"
|
||||
},
|
||||
|
||||
/* Legacy */
|
||||
"activity": {
|
||||
"friendly": "activity",
|
||||
"real": "app=core&module=activity&controller=activity"
|
||||
},
|
||||
"vnc": {
|
||||
"friendly": "new-content",
|
||||
"real": "app=core&module=discover&controller=vnc"
|
||||
},
|
||||
|
||||
/* Leaderboard */
|
||||
"leaderboard_leaderboard": {
|
||||
"friendly": "leaderboard",
|
||||
"real": "app=core&module=discover&controller=popular&tab=leaderboard"
|
||||
},
|
||||
"leaderboard_history": {
|
||||
"friendly": "pastleaders",
|
||||
"real": "app=core&module=discover&controller=popular&tab=history"
|
||||
},
|
||||
"leaderboard_members": {
|
||||
"friendly": "topmembers",
|
||||
"real": "app=core&module=discover&controller=popular&tab=members"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -25,7 +25,7 @@
|
||||
<div id='strip'>
|
||||
<div id='logo'>
|
||||
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAZCAYAAAAv3j5gAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZZJREFUeNq8lr9Lw0AUx2OETAUhIAiZBMFBKLg4+R8IroKbWCgOxY7+GYIiWAKCjl0rZHKJ4CqCg3RyKBWhQqmLgRK/py/hcn13TWzqFz5D837de7xcasdxbP0HtvWraxDPCZE7LfRozU8/uRdEW5ADnsB6yUVeQBVESUcRqIFxiUVErgPKnY5O6B6cl1hI5HpIfynbUQHdeHZ1KdfE1iX6BPUSuqlTrlQ243QHWjMUaVGOjJKtU7UEnoFXsEgPbICharA1AcM/jrDGFTEVEroFNwWKCN9Aa51yR7mgn2PL+uQ79a7b1pzjAzRydNMgX05bckchODGcqG3opm2IO6bcmUJfYE0TsAIGTJEB2biYVTBKCsnLIC7WK037b6DJPG+SjZMPKuoyhNIpjwyj6Eh+HYPfoeQ3MbpEol3PMMJ3QjcyTxlzyN11FrV7aRjhJqEb2QVw876wO2DfcM30NLY9sGu6GSLGdsadzCCXYlRlPnxBgUCdTsEy8zyQt84BPvOuvILFHH+nHPJV3zGfbNrPROn6FmAANAMI1RO30/8AAAAASUVORK5CYII=" width="26" height="25" />
|
||||
IPS Social Suite
|
||||
IPS Community Suite
|
||||
</div>
|
||||
</div>
|
||||
<div id='wrapper'>
|
||||
|
||||
+14302
-4454
File diff suppressed because it is too large.
Load diff
+1364
-246
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -52,10 +52,6 @@
|
||||
"default_controller": null,
|
||||
"protected": null
|
||||
},
|
||||
"dashboard": {
|
||||
"default_controller": null,
|
||||
"protected": 1
|
||||
},
|
||||
"stats": {
|
||||
"default_controller": null,
|
||||
"protected": null
|
||||
@@ -91,8 +87,8 @@
|
||||
"protected": 0
|
||||
},
|
||||
"search": {
|
||||
"default_controller": null,
|
||||
"protected": null
|
||||
"default_controller": "search",
|
||||
"protected": 0
|
||||
},
|
||||
"messaging": {
|
||||
"default_controller": "messenger",
|
||||
@@ -124,12 +120,19 @@
|
||||
},
|
||||
"discover": {
|
||||
"default_controller": "streams",
|
||||
"protected": 0,
|
||||
"default": true
|
||||
"protected": 0
|
||||
},
|
||||
"staffdirectory": {
|
||||
"default_controller": "directory",
|
||||
"protected": 0
|
||||
},
|
||||
"activity": {
|
||||
"default_controller": "",
|
||||
"protected": 0
|
||||
},
|
||||
"discovery": {
|
||||
"default_controller": "",
|
||||
"protected": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"php": {
|
||||
"required": "5.6.0",
|
||||
"recommended": "7.0.0"
|
||||
},
|
||||
"mysql": {
|
||||
"required": "5.1.3",
|
||||
"recommended": "5.6.2"
|
||||
}
|
||||
}
|
||||
+3312
-575
File diff suppressed because it is too large.
Load diff
@@ -11,6 +11,10 @@
|
||||
"key": "acp_notes_updated",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"key": "activity_stream_rss",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"key": "ads_circulation",
|
||||
"default": "random"
|
||||
@@ -63,6 +67,14 @@
|
||||
"key": "allow_result_view",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"key": "announcements_exist",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "api_log_prune",
|
||||
"default": "30"
|
||||
},
|
||||
{
|
||||
"key": "attach_allowed_extensions",
|
||||
"default": ""
|
||||
@@ -79,6 +91,14 @@
|
||||
"key": "attachment_resample_size",
|
||||
"default": "0x0"
|
||||
},
|
||||
{
|
||||
"key": "auto_follow_new_content",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "auto_follow_replied_to",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "auto_polling_enabled",
|
||||
"default": "1"
|
||||
@@ -105,12 +125,32 @@
|
||||
},
|
||||
{
|
||||
"key": "ckeditor_toolbars",
|
||||
"default": "{\"desktop\":[{\"name\":\"row1\",\"items\":[\"Bold\",\"Italic\",\"Underline\",\"-\",\"ipsLink\",\"Ipsquote\",\"ipsCode\",\"ipsEmoticon\",\"-\",\"BulletedList\",\"NumberedList\",\"-\",\"JustifyLeft\",\"JustifyCenter\",\"JustifyRight\",\"-\",\"Strike\",\"Superscript\",\"Subscript\",\"-\",\"TextColor\",\"FontSize\"]}],\"tablet\":[{\"name\":\"row1\",\"items\":[\"Bold\",\"Italic\",\"Underline\",\"-\",\"ipsLink\",\"Ipsquote\",\"ipsEmoticon\",\"-\",\"BulletedList\",\"NumberedList\"]}],\"phone\":[{\"name\":\"row1\",\"items\":[\"Bold\",\"Italic\",\"Underline\",\"-\",\"ipsEmoticon\",\"-\",\"ipsLink\"]}]}"
|
||||
"default": "{\"desktop\":[{\"name\":\"row1\",\"items\":[\"Bold\",\"Italic\",\"Underline\",\"Strike\",\"-\",\"ipsLink\",\"Ipsquote\",\"ipsCode\",\"ipsEmoticon\",\"-\",\"BulletedList\",\"NumberedList\",\"-\",\"JustifyLeft\",\"JustifyCenter\",\"JustifyRight\",\"-\",\"TextColor\",\"FontSize\",\"-\",\"ipsPreview\"]},\"\\\/\"],\"tablet\":[{\"name\":\"row1\",\"items\":[\"Bold\",\"Italic\",\"Underline\",\"-\",\"ipsLink\",\"Ipsquote\",\"ipsEmoticon\",\"-\",\"BulletedList\",\"NumberedList\",\"-\",\"ipsPreview\"]},\"\\\/\"],\"phone\":[{\"name\":\"row1\",\"items\":[\"Bold\",\"Italic\",\"Underline\",\"-\",\"ipsEmoticon\",\"-\",\"ipsLink\",\"-\",\"ipsPreview\"]},\"\\\/\"]}"
|
||||
},
|
||||
{
|
||||
"key": "connect_slaves",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "contact_access",
|
||||
"default": "*"
|
||||
},
|
||||
{
|
||||
"key": "contact_emails",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"key": "contact_nexus_department",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"key": "contact_redirect",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"key": "contact_type",
|
||||
"default": "contact_internal"
|
||||
},
|
||||
{
|
||||
"key": "coppa_address",
|
||||
"default": ""
|
||||
@@ -131,6 +171,10 @@
|
||||
"key": "diagnostics",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"key": "diagnostics_reporting",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"key": "disable_all_plugins",
|
||||
"default": ""
|
||||
@@ -163,6 +207,10 @@
|
||||
"key": "editor_allowed_iframe_bases",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"key": "editor_embeds",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"key": "editor_paragraph_padding",
|
||||
"default": "1"
|
||||
@@ -207,6 +255,10 @@
|
||||
"key": "fbc_bot_group",
|
||||
"default": "2"
|
||||
},
|
||||
{
|
||||
"key": "file_log_pruning",
|
||||
"default": "90"
|
||||
},
|
||||
{
|
||||
"key": "flood_control",
|
||||
"default": "0"
|
||||
@@ -227,6 +279,18 @@
|
||||
"key": "gl_type",
|
||||
"default": "none"
|
||||
},
|
||||
{
|
||||
"key": "google_maps_api_key",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"key": "googleauth_enabled",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "googleauth_groups",
|
||||
"default": "*"
|
||||
},
|
||||
{
|
||||
"key": "googlemaps",
|
||||
"default": "1"
|
||||
@@ -239,17 +303,21 @@
|
||||
"key": "guest_captcha",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"key": "guest_terms_bar",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "htaccess_mod_rewrite",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "image_jpg_quality",
|
||||
"default": "75"
|
||||
"default": "85"
|
||||
},
|
||||
{
|
||||
"key": "image_png_quality_gd",
|
||||
"default": "8"
|
||||
"default": "9"
|
||||
},
|
||||
{
|
||||
"key": "image_proxy_cache_period",
|
||||
@@ -257,7 +325,7 @@
|
||||
},
|
||||
{
|
||||
"key": "image_suite",
|
||||
"default": "gd"
|
||||
"default": "imagemagick"
|
||||
},
|
||||
{
|
||||
"key": "ipb_bruteforce_attempts",
|
||||
@@ -281,7 +349,67 @@
|
||||
},
|
||||
{
|
||||
"key": "ipb_reg_number",
|
||||
"default": ""
|
||||
"default": "LICENSE KEY GOES HERE!-123456789"
|
||||
},
|
||||
{
|
||||
"key": "ipb_license_active",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"key": "ipb_license_cloud",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "ipb_license_url",
|
||||
"default": "https:\/\/www.invisionpower.com\/buy\/self-hosted"
|
||||
},
|
||||
{
|
||||
"key": "ipb_license_test_url",
|
||||
"default": "http:\/\/community.invisionpower.com"
|
||||
},
|
||||
{
|
||||
"key": "ipb_license_expires",
|
||||
"default": "09 MAR 2037"
|
||||
},
|
||||
{
|
||||
"key": "ipb_license_product_forums",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"key": "ipb_license_product_calendar",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"key": "ipb_license_product_blog",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"key": "ipb_license_product_gallery",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"key": "ipb_license_product_downloads",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"key": "ipb_license_product_cms",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"key": "ipb_license_product_nexus",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"key": "ipb_license_product_copyright",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"key": "ipb_license_chat_limit",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "ipb_license_support",
|
||||
"default": "N/A"
|
||||
},
|
||||
{
|
||||
"key": "ipb_url_blacklist",
|
||||
@@ -299,6 +427,14 @@
|
||||
"key": "ipbseo_ga_enabled",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"key": "ipbseo_ga_paginatecode",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"key": "ipbseo_ga_provider",
|
||||
"default": "none"
|
||||
},
|
||||
{
|
||||
"key": "ips_cp_purchase",
|
||||
"default": "0"
|
||||
@@ -309,12 +445,16 @@
|
||||
},
|
||||
{
|
||||
"key": "ipsgeoip",
|
||||
"default": "1"
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "keycaptcha_privatekey",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"key": "last_data_store_update",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"key": "links_external",
|
||||
"default": "1"
|
||||
@@ -331,18 +471,6 @@
|
||||
"key": "mail_method",
|
||||
"default": "php"
|
||||
},
|
||||
{
|
||||
"key": "mandrill_api_key",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"key": "mandrill_use_for",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "mandrill_username",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"key": "match_browser",
|
||||
"default": "0"
|
||||
@@ -375,10 +503,46 @@
|
||||
"key": "max_video_width_css",
|
||||
"default": "none"
|
||||
},
|
||||
{
|
||||
"key": "member_menu_create_key",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"key": "merge_concurrent_posts",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "mfa_forgot_behaviour",
|
||||
"default": "email"
|
||||
},
|
||||
{
|
||||
"key": "mfa_lockout_behaviour",
|
||||
"default": "lock"
|
||||
},
|
||||
{
|
||||
"key": "mfa_lockout_time",
|
||||
"default": "60"
|
||||
},
|
||||
{
|
||||
"key": "mfa_optional_prompt",
|
||||
"default": "none"
|
||||
},
|
||||
{
|
||||
"key": "mfa_required_groups",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"key": "mfa_required_prompt",
|
||||
"default": "immediate"
|
||||
},
|
||||
{
|
||||
"key": "min_user_name_length",
|
||||
"default": "3"
|
||||
},
|
||||
{
|
||||
"key": "minimum_age",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "most_online",
|
||||
"default": "{\"count\":0,\"time\":0}"
|
||||
@@ -387,6 +551,18 @@
|
||||
"key": "new_reg_notify",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "password_strength_meter",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"key": "password_strength_meter_enforce",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "password_strength_option",
|
||||
"default": "3"
|
||||
},
|
||||
{
|
||||
"key": "php_mail_extra",
|
||||
"default": ""
|
||||
@@ -443,6 +619,10 @@
|
||||
"key": "privacy_type",
|
||||
"default": "none"
|
||||
},
|
||||
{
|
||||
"key": "profile_birthday_type",
|
||||
"default": "public"
|
||||
},
|
||||
{
|
||||
"key": "profile_comment_approval",
|
||||
"default": "0"
|
||||
@@ -481,7 +661,7 @@
|
||||
},
|
||||
{
|
||||
"key": "prune_log_system",
|
||||
"default": "0"
|
||||
"default": "30"
|
||||
},
|
||||
{
|
||||
"key": "prune_log_tasks",
|
||||
@@ -499,10 +679,6 @@
|
||||
"key": "recaptcha2_public_key",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"key": "recaptcha2_theme",
|
||||
"default": "light"
|
||||
},
|
||||
{
|
||||
"key": "recaptcha_private_key",
|
||||
"default": "6LcpWAMAAAAAAETX5jHd9NlPtIHJA4G-ra3X2RQB"
|
||||
@@ -511,10 +687,6 @@
|
||||
"key": "recaptcha_public_key",
|
||||
"default": "6LcpWAMAAAAAAA4klDtDNuDH6LsGgBX5mBoJ3naK"
|
||||
},
|
||||
{
|
||||
"key": "recaptcha_theme",
|
||||
"default": "white"
|
||||
},
|
||||
{
|
||||
"key": "reg_auth_type",
|
||||
"default": "user"
|
||||
@@ -523,6 +695,10 @@
|
||||
"key": "reg_rules",
|
||||
"default": "<p>Please take a moment to review these rules.<\/p><p>Please remember that we are not responsible for any messages posted. We do not vouch for or warrant the accuracy, completeness or usefulness of any message, and are not responsible for the contents of any message.<\/p><p>The messages express the views of the author of the message, not necessarily the views of this website. Any user who feels that a posted message is objectionable is encouraged to contact us immediately by email. We have the ability to remove objectionable messages and we will make every effort to do so, within a reasonable time frame, if we determine that removal is necessary.<\/p><p>You agree, through your use of this service, that you will not use this website to post any material which is knowingly false and\/or defamatory, inaccurate, abusive, vulgar, hateful, harassing, obscene, profane, sexually oriented, threatening, invasive of a person's privacy, or otherwise violative of any law.<\/p><p>You agree not to post any copyrighted material unless the copyright is owned by you or by this website.<\/p><p>Our software uses cookies to distinguish you from other users of our website. This helps us to provide you with a personalized experience when you browse this site.<\/p>"
|
||||
},
|
||||
{
|
||||
"key": "remote_image_cache",
|
||||
"default": "7"
|
||||
},
|
||||
{
|
||||
"key": "remote_image_proxy",
|
||||
"default": "0"
|
||||
@@ -539,6 +715,18 @@
|
||||
"key": "reputation_highlight",
|
||||
"default": "50"
|
||||
},
|
||||
{
|
||||
"key": "reputation_leaderboard_default_tab",
|
||||
"default": "leaderboard"
|
||||
},
|
||||
{
|
||||
"key": "reputation_leaderboard_on",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"key": "reputation_max_members",
|
||||
"default": "48"
|
||||
},
|
||||
{
|
||||
"key": "reputation_point_types",
|
||||
"default": "like"
|
||||
@@ -551,10 +739,18 @@
|
||||
"key": "reputation_show_content",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"key": "reputation_show_days_won_trophy",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"key": "reputation_show_profile",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"key": "reputation_timezone",
|
||||
"default": "UTC"
|
||||
},
|
||||
{
|
||||
"key": "reviews_rating_out_of",
|
||||
"default": "5"
|
||||
@@ -563,10 +759,54 @@
|
||||
"key": "search_index_timeframe",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "security_questions_areas",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"key": "security_questions_enabled",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "security_questions_groups",
|
||||
"default": "*"
|
||||
},
|
||||
{
|
||||
"key": "security_questions_number",
|
||||
"default": "3"
|
||||
},
|
||||
{
|
||||
"key": "security_questions_prompt",
|
||||
"default": "access"
|
||||
},
|
||||
{
|
||||
"key": "security_questions_timer",
|
||||
"default": "30"
|
||||
},
|
||||
{
|
||||
"key": "security_questions_tries",
|
||||
"default": "3"
|
||||
},
|
||||
{
|
||||
"key": "security_remove_acp_link",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "sendgrid_api_key",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"key": "sendgrid_click_tracking",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "sendgrid_ip_pool",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"key": "sendgrid_use_for",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "seo_r_on",
|
||||
"default": "1"
|
||||
@@ -577,7 +817,7 @@
|
||||
},
|
||||
{
|
||||
"key": "signatures_enabled",
|
||||
"default": "0"
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"key": "site_address",
|
||||
@@ -591,6 +831,10 @@
|
||||
"key": "site_online",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"key": "site_secret_key",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"key": "sitemap_content_settings",
|
||||
"default": "{}"
|
||||
@@ -609,7 +853,7 @@
|
||||
},
|
||||
{
|
||||
"key": "sitemap_profiles_priority",
|
||||
"default": "-1"
|
||||
"default": "0.6"
|
||||
},
|
||||
{
|
||||
"key": "sitemap_url",
|
||||
@@ -667,6 +911,22 @@
|
||||
"key": "spam_service_send_to_ips",
|
||||
"default": "1"
|
||||
},
|
||||
{
|
||||
"key": "sparkpost_api_key",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"key": "sparkpost_click_tracking",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "sparkpost_ip_pool",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"key": "sparkpost_use_for",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "spm_notify",
|
||||
"default": "0"
|
||||
@@ -741,12 +1001,20 @@
|
||||
},
|
||||
{
|
||||
"key": "task_use_cron",
|
||||
"default": "0"
|
||||
"default": "normal"
|
||||
},
|
||||
{
|
||||
"key": "theme_designers_mode",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "theme_disk_cache_path",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"key": "theme_disk_cache_templates",
|
||||
"default": "0"
|
||||
},
|
||||
{
|
||||
"key": "topic_redirect_prune",
|
||||
"default": "30"
|
||||
@@ -759,10 +1027,22 @@
|
||||
"key": "upgrade_email",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"key": "upgrade_ftp_details",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"key": "upload_settings",
|
||||
"default": ""
|
||||
},
|
||||
{
|
||||
"key": "url_filter_action",
|
||||
"default": "block"
|
||||
},
|
||||
{
|
||||
"key": "url_filter_any_action",
|
||||
"default": "allow"
|
||||
},
|
||||
{
|
||||
"key": "use_coppa",
|
||||
"default": "0"
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"profilesync":"P0Y0M0DT1H0M0S","bulkmail":"P0Y0M0DT0H10M0S","updatecheck":"P0Y0M1DT0H0M0S","cleanup":"P0Y0M1DT0H0M0S","sitemapgenerator":"P0Y0M0DT1H0M0S","connect":"P0Y0M0DT1H0M0S","queue":"P0Y0M0DT0H1M0S","pop":"P0Y0M0DT0H10M0S","digest":"P0Y0M0DT0H10M0S","publish":"P0Y0M0DT0H10M0S","clearcache":"P0Y0M0DT0H10M0S","clearsessions":"P0Y0M0DT0H30M0S"}
|
||||
{"profilesync":"P0Y0M0DT1H0M0S","updatecheck":"P0Y0M1DT0H0M0S","cleanup":"P0Y0M1DT0H0M0S","sitemapgenerator":"P0Y0M0DT0H15M0S","connect":"P0Y0M0DT1H0M0S","queue":"P0Y0M0DT0H1M0S","pop":"P0Y0M0DT0H10M0S","digest":"P0Y0M0DT0H10M0S","publish":"P0Y0M0DT0H10M0S","clearcache":"P0Y0M0DT0H10M0S","clearsessions":"P0Y0M0DT0H30M0S","viewupdates":"P0Y0M0DT0H5M0S","imageproxy":"P0Y0M0DT0H30M0S","cleanupattachments":"P0Y0M0DT12H0M0S","cleanupfiles":"P0Y0M1DT0H0M0S","grouppromote":"P0Y0M1DT0H0M0S","unlockmembers":"P0Y0M0DT1H0M0S","leaderboard":"P0Y0M0DT6H0M0S"}
|
||||
+6225
-1787
File diff suppressed because it is too large.
Load diff
@@ -9,7 +9,8 @@
|
||||
"sc_tab_key": "custom",
|
||||
"sc_show_in_vse": 1,
|
||||
"sc_title": "themesetting_ajax_pagination",
|
||||
"sc_order": 9
|
||||
"sc_order": 9,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "alternate_button",
|
||||
@@ -21,7 +22,8 @@
|
||||
"sc_tab_key": "buttoncolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_alternate_button",
|
||||
"sc_order": 3
|
||||
"sc_order": 3,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "alternate_button_font",
|
||||
@@ -33,7 +35,8 @@
|
||||
"sc_tab_key": "buttoncolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_alternate_button_font",
|
||||
"sc_order": 4
|
||||
"sc_order": 4,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "area_background",
|
||||
@@ -45,7 +48,8 @@
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_area_background",
|
||||
"sc_order": 8
|
||||
"sc_order": 10,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "area_background_dark",
|
||||
@@ -57,7 +61,8 @@
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_area_background_dark",
|
||||
"sc_order": 9
|
||||
"sc_order": 11,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "area_background_light",
|
||||
@@ -69,7 +74,8 @@
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_area_background_light",
|
||||
"sc_order": 10
|
||||
"sc_order": 12,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "area_background_reset",
|
||||
@@ -81,7 +87,8 @@
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_area_background_reset",
|
||||
"sc_order": 11
|
||||
"sc_order": 13,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "button_bar",
|
||||
@@ -93,7 +100,8 @@
|
||||
"sc_tab_key": "buttoncolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_button_bar",
|
||||
"sc_order": 13
|
||||
"sc_order": 13,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "enable_fluid_width",
|
||||
@@ -105,7 +113,8 @@
|
||||
"sc_tab_key": "custom",
|
||||
"sc_show_in_vse": 1,
|
||||
"sc_title": "themesetting_enable_fluid_width",
|
||||
"sc_order": 6
|
||||
"sc_order": 6,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "fluid_width_size",
|
||||
@@ -117,7 +126,21 @@
|
||||
"sc_tab_key": "custom",
|
||||
"sc_show_in_vse": 1,
|
||||
"sc_title": "themesetting_fluid_width_size",
|
||||
"sc_order": 7
|
||||
"sc_order": 7,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "footer_text",
|
||||
"sc_type": "Color",
|
||||
"sc_multiple": 0,
|
||||
"sc_content": "[]",
|
||||
"sc_app": "core",
|
||||
"sc_default": "#333333",
|
||||
"sc_tab_key": "textcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_footer_text",
|
||||
"sc_order": 9,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "header",
|
||||
@@ -129,7 +152,8 @@
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_header",
|
||||
"sc_order": 2
|
||||
"sc_order": 2,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "important_button",
|
||||
@@ -141,7 +165,8 @@
|
||||
"sc_tab_key": "buttoncolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_important_button",
|
||||
"sc_order": 7
|
||||
"sc_order": 7,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "important_button_font",
|
||||
@@ -153,7 +178,8 @@
|
||||
"sc_tab_key": "buttoncolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_important_button_font",
|
||||
"sc_order": 8
|
||||
"sc_order": 8,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "item_status",
|
||||
@@ -163,9 +189,10 @@
|
||||
"sc_app": "core",
|
||||
"sc_default": "#3c6994",
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 1,
|
||||
"sc_title": "Item Status Badges Active",
|
||||
"sc_order": 22
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_item_status_active",
|
||||
"sc_order": 24,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "js_include",
|
||||
@@ -176,8 +203,9 @@
|
||||
"sc_default": "head",
|
||||
"sc_tab_key": "custom",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "Javascript include location",
|
||||
"sc_order": 8
|
||||
"sc_title": "themesetting_js_location",
|
||||
"sc_order": 8,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "light_button",
|
||||
@@ -189,7 +217,8 @@
|
||||
"sc_tab_key": "buttoncolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_light_button",
|
||||
"sc_order": 9
|
||||
"sc_order": 9,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "light_button_font",
|
||||
@@ -201,7 +230,8 @@
|
||||
"sc_tab_key": "buttoncolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_light_button_font",
|
||||
"sc_order": 10
|
||||
"sc_order": 10,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "link",
|
||||
@@ -213,7 +243,8 @@
|
||||
"sc_tab_key": "textcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_link",
|
||||
"sc_order": 3
|
||||
"sc_order": 3,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "link_hover",
|
||||
@@ -225,7 +256,8 @@
|
||||
"sc_tab_key": "textcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_link_hover",
|
||||
"sc_order": 4
|
||||
"sc_order": 4,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "main_nav",
|
||||
@@ -237,7 +269,21 @@
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_main_nav",
|
||||
"sc_order": 3
|
||||
"sc_order": 3,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "main_nav_font",
|
||||
"sc_type": "Color",
|
||||
"sc_multiple": 0,
|
||||
"sc_content": "[]",
|
||||
"sc_app": "core",
|
||||
"sc_default": "#ffffff",
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_main_nav_font",
|
||||
"sc_order": 4,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "main_nav_tab",
|
||||
@@ -247,9 +293,23 @@
|
||||
"sc_app": "core",
|
||||
"sc_default": "#f5f5f5",
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 1,
|
||||
"sc_title": "Main Navigation Active Tab",
|
||||
"sc_order": 4
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_main_nav_active",
|
||||
"sc_order": 5,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "main_nav_tab_font",
|
||||
"sc_type": "Color",
|
||||
"sc_multiple": 0,
|
||||
"sc_content": "[]",
|
||||
"sc_app": "core",
|
||||
"sc_default": "#333333",
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_main_nav_active_font",
|
||||
"sc_order": 6,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "mentions",
|
||||
@@ -259,9 +319,36 @@
|
||||
"sc_app": "core",
|
||||
"sc_default": "#3084c4",
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 1,
|
||||
"sc_title": "Mentions",
|
||||
"sc_order": 24
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_mentions",
|
||||
"sc_order": 26,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "mobile_back",
|
||||
"sc_type": "Color",
|
||||
"sc_multiple": 0,
|
||||
"sc_content": "[]",
|
||||
"sc_app": "core",
|
||||
"sc_default": "#222222",
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_mobile_back",
|
||||
"sc_order": 30,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "mobile_back_font",
|
||||
"sc_type": "Color",
|
||||
"sc_multiple": 0,
|
||||
"sc_content": "[]",
|
||||
"sc_app": "core",
|
||||
"sc_default": "#ffffff",
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_mobile_back_font",
|
||||
"sc_order": 31,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "moderated",
|
||||
@@ -273,7 +360,8 @@
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_moderated",
|
||||
"sc_order": 13
|
||||
"sc_order": 15,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "moderated_light",
|
||||
@@ -285,7 +373,8 @@
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_moderated_light",
|
||||
"sc_order": 14
|
||||
"sc_order": 16,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "moderated_text",
|
||||
@@ -297,7 +386,8 @@
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_moderated_text",
|
||||
"sc_order": 15
|
||||
"sc_order": 17,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "moderated_text_light",
|
||||
@@ -309,7 +399,8 @@
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_moderated_text_light",
|
||||
"sc_order": 16
|
||||
"sc_order": 18,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "normal_button",
|
||||
@@ -321,7 +412,8 @@
|
||||
"sc_tab_key": "buttoncolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_normal_button",
|
||||
"sc_order": 5
|
||||
"sc_order": 5,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "normal_button_font",
|
||||
@@ -333,7 +425,8 @@
|
||||
"sc_tab_key": "buttoncolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_normal_button_font",
|
||||
"sc_order": 6
|
||||
"sc_order": 6,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "notification_bubble",
|
||||
@@ -343,9 +436,10 @@
|
||||
"sc_app": "core",
|
||||
"sc_default": "#ad1457",
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 1,
|
||||
"sc_title": "Notification Bubble",
|
||||
"sc_order": 23
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_notification_bubble",
|
||||
"sc_order": 25,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "page_background",
|
||||
@@ -357,7 +451,8 @@
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_page_background",
|
||||
"sc_order": 1
|
||||
"sc_order": 1,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "poll_bar",
|
||||
@@ -367,9 +462,36 @@
|
||||
"sc_app": "core",
|
||||
"sc_default": "#2a94de",
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 1,
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_poll_bar",
|
||||
"sc_order": 17
|
||||
"sc_order": 19,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "post_highlight",
|
||||
"sc_type": "Color",
|
||||
"sc_multiple": 0,
|
||||
"sc_content": "[]",
|
||||
"sc_app": "core",
|
||||
"sc_default": "#fcf9f0",
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_post_highlight",
|
||||
"sc_order": 28,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "post_highlight_border",
|
||||
"sc_type": "Color",
|
||||
"sc_multiple": 0,
|
||||
"sc_content": "[]",
|
||||
"sc_app": "core",
|
||||
"sc_default": "#f7df97",
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesettings_post_highlight_border",
|
||||
"sc_order": 29,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "prefix",
|
||||
@@ -379,9 +501,10 @@
|
||||
"sc_app": "core",
|
||||
"sc_default": "#ad1457",
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 1,
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_prefix",
|
||||
"sc_order": 6
|
||||
"sc_order": 8,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "price",
|
||||
@@ -391,9 +514,10 @@
|
||||
"sc_app": "core",
|
||||
"sc_default": "#c62828",
|
||||
"sc_tab_key": "textcolors",
|
||||
"sc_show_in_vse": 1,
|
||||
"sc_title": "Price",
|
||||
"sc_order": 9
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_price",
|
||||
"sc_order": 10,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "primary_button",
|
||||
@@ -405,7 +529,8 @@
|
||||
"sc_tab_key": "buttoncolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_primary_button",
|
||||
"sc_order": 1
|
||||
"sc_order": 1,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "primary_button_font",
|
||||
@@ -417,7 +542,8 @@
|
||||
"sc_tab_key": "buttoncolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_primary_button_font",
|
||||
"sc_order": 2
|
||||
"sc_order": 2,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "profile_header",
|
||||
@@ -429,7 +555,8 @@
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_profile_header",
|
||||
"sc_order": 5
|
||||
"sc_order": 7,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "rating_hover",
|
||||
@@ -439,9 +566,10 @@
|
||||
"sc_app": "core",
|
||||
"sc_default": "#2a94de",
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 1,
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_rating_hover",
|
||||
"sc_order": 18
|
||||
"sc_order": 20,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "rating_on",
|
||||
@@ -449,11 +577,38 @@
|
||||
"sc_multiple": 0,
|
||||
"sc_content": "[]",
|
||||
"sc_app": "core",
|
||||
"sc_default": "#ad1457",
|
||||
"sc_default": "#ff9800",
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 1,
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_rating_on",
|
||||
"sc_order": 19
|
||||
"sc_order": 21,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "recaptcha_theme",
|
||||
"sc_type": "other",
|
||||
"sc_multiple": 0,
|
||||
"sc_content": "return new \\IPS\\Helpers\\Form\\Radio( \"core_theme_setting_title_{$row['sc_id']}\", $value, FALSE, array( 'options' => array(\r\n\t\t\t'clean'\t\t\t=> \"<img src='\" . $theme->resource( 'recaptcha\/clean.png', 'core' ) . \"' alt='clean'>\",\r\n\t\t\t'red'\t\t\t=> \"<img src='\" . $theme->resource( 'recaptcha\/red.png', 'core' ) . \"' alt='clean'>\",\r\n\t\t\t'white'\t\t\t=> \"<img src='\" . $theme->resource( 'recaptcha\/white.png', 'core' ) . \"' alt='clean'>\",\r\n\t\t\t'blackglass'\t=> \"<img src='\" . $theme->resource( 'recaptcha\/blackglass.png', 'core' ) . \"' alt='clean'>\",\r\n\t\t\t), 'parse' => 'raw' ), NULL, NULL, NULL, 'theme_setting_' . $row['sc_key'] );",
|
||||
"sc_app": "core",
|
||||
"sc_default": "white",
|
||||
"sc_tab_key": "custom",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "recaptcha_theme",
|
||||
"sc_order": 12,
|
||||
"sc_condition": "return \\IPS\\Settings::i()->bot_antispam_type === 'recaptcha';"
|
||||
},
|
||||
{
|
||||
"sc_key": "recaptcha2_theme",
|
||||
"sc_type": "other",
|
||||
"sc_multiple": 0,
|
||||
"sc_content": "return new \\IPS\\Helpers\\Form\\Radio( \"core_theme_setting_title_{$row['sc_id']}\", $value, FALSE, array( 'options' => array(\r\n\t\t\t'light'\t\t\t=> \"<img src='\" . $theme->resource( 'recaptcha2\/light.png', 'core' ) . \"' alt='light'>\",\r\n\t\t\t'dark'\t\t\t=> \"<img src='\" . $theme->resource( 'recaptcha2\/dark.png', 'core' ) . \"' alt='dark'>\",\r\n\t\t\t), 'parse' => 'raw' ), NULL, NULL, NULL, 'theme_setting_' . $row['sc_key'] );",
|
||||
"sc_app": "core",
|
||||
"sc_default": "light",
|
||||
"sc_tab_key": "custom",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "recaptcha2_theme",
|
||||
"sc_order": 11,
|
||||
"sc_condition": "return \\IPS\\Settings::i()->bot_antispam_type === 'recaptcha2';"
|
||||
},
|
||||
{
|
||||
"sc_key": "responsive",
|
||||
@@ -465,7 +620,8 @@
|
||||
"sc_tab_key": "custom",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_responsive",
|
||||
"sc_order": 1
|
||||
"sc_order": 1,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "rounded_photos",
|
||||
@@ -477,7 +633,8 @@
|
||||
"sc_tab_key": "custom",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_rounded_photos",
|
||||
"sc_order": 2
|
||||
"sc_order": 2,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "secondary_title",
|
||||
@@ -489,7 +646,8 @@
|
||||
"sc_tab_key": "textcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_secondary_title",
|
||||
"sc_order": 7
|
||||
"sc_order": 7,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "secondary_title_font",
|
||||
@@ -501,7 +659,8 @@
|
||||
"sc_tab_key": "textcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_secondary_title_font",
|
||||
"sc_order": 8
|
||||
"sc_order": 8,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "section_title",
|
||||
@@ -513,7 +672,8 @@
|
||||
"sc_tab_key": "textcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_section_title",
|
||||
"sc_order": 5
|
||||
"sc_order": 5,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "section_title_font",
|
||||
@@ -525,7 +685,8 @@
|
||||
"sc_tab_key": "textcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_section_title_font",
|
||||
"sc_order": 6
|
||||
"sc_order": 6,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "selected",
|
||||
@@ -535,9 +696,10 @@
|
||||
"sc_app": "core",
|
||||
"sc_default": "#ebf4f9",
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 1,
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_selected",
|
||||
"sc_order": 7
|
||||
"sc_order": 9,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "sidebar_position",
|
||||
@@ -549,7 +711,8 @@
|
||||
"sc_tab_key": "custom",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_sidebar_position",
|
||||
"sc_order": 3
|
||||
"sc_order": 3,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "sidebar_responsive",
|
||||
@@ -561,7 +724,8 @@
|
||||
"sc_tab_key": "custom",
|
||||
"sc_show_in_vse": 1,
|
||||
"sc_title": "themesetting_sidebar_responsive",
|
||||
"sc_order": 4
|
||||
"sc_order": 4,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "step_background",
|
||||
@@ -571,9 +735,23 @@
|
||||
"sc_app": "core",
|
||||
"sc_default": "#ad1457",
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 1,
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_step_background",
|
||||
"sc_order": 20
|
||||
"sc_order": 22,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "tab_background",
|
||||
"sc_type": "Color",
|
||||
"sc_multiple": 0,
|
||||
"sc_content": "[{\"key\":\"\",\"value\":\"\"}]",
|
||||
"sc_app": "core",
|
||||
"sc_default": "#3d648a",
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_tabs_background",
|
||||
"sc_order": 27,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "text_color",
|
||||
@@ -585,7 +763,8 @@
|
||||
"sc_tab_key": "textcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_text_color",
|
||||
"sc_order": 1
|
||||
"sc_order": 1,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "text_light",
|
||||
@@ -597,7 +776,8 @@
|
||||
"sc_tab_key": "textcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_text_light",
|
||||
"sc_order": 2
|
||||
"sc_order": 2,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "timeline_color",
|
||||
@@ -607,9 +787,62 @@
|
||||
"sc_app": "core",
|
||||
"sc_default": "#4d4d4d",
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 1,
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "activity_stream_timeline",
|
||||
"sc_order": 21
|
||||
"sc_order": 23,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "trophy_first",
|
||||
"sc_type": "Color",
|
||||
"sc_multiple": 0,
|
||||
"sc_content": "[]",
|
||||
"sc_app": "core",
|
||||
"sc_default": "#fac746",
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 1,
|
||||
"sc_title": "themesetting_trophy_first",
|
||||
"sc_order": 32,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "trophy_first_font",
|
||||
"sc_type": "Color",
|
||||
"sc_multiple": 0,
|
||||
"sc_content": "[]",
|
||||
"sc_app": "core",
|
||||
"sc_default": "#704926",
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 1,
|
||||
"sc_title": "themesetting_trophy_first_font",
|
||||
"sc_order": 35,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "trophy_second",
|
||||
"sc_type": "Color",
|
||||
"sc_multiple": 0,
|
||||
"sc_content": "[]",
|
||||
"sc_app": "core",
|
||||
"sc_default": "#c0c0c0",
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 1,
|
||||
"sc_title": "themesetting_trophy_second",
|
||||
"sc_order": 33,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "trophy_third",
|
||||
"sc_type": "Color",
|
||||
"sc_multiple": 0,
|
||||
"sc_content": "[]",
|
||||
"sc_app": "core",
|
||||
"sc_default": "#cd7f32",
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_trophy_third",
|
||||
"sc_order": 34,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "very_light_button",
|
||||
@@ -621,7 +854,8 @@
|
||||
"sc_tab_key": "buttoncolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_very_light_button",
|
||||
"sc_order": 11
|
||||
"sc_order": 11,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "very_light_button_font",
|
||||
@@ -633,7 +867,8 @@
|
||||
"sc_tab_key": "buttoncolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_very_light_button_font",
|
||||
"sc_order": 12
|
||||
"sc_order": 12,
|
||||
"sc_condition": null
|
||||
},
|
||||
{
|
||||
"sc_key": "widget_title_bar",
|
||||
@@ -645,6 +880,7 @@
|
||||
"sc_tab_key": "frontendcolors",
|
||||
"sc_show_in_vse": 0,
|
||||
"sc_title": "themesetting_widget_title_bar",
|
||||
"sc_order": 12
|
||||
"sc_order": 14,
|
||||
"sc_condition": null
|
||||
}
|
||||
]
|
||||
@@ -111,5 +111,79 @@
|
||||
"101009": "4.1.0 Beta 10",
|
||||
"101010": "4.1.0",
|
||||
"101011": "4.1.1",
|
||||
"101012": "4.1.2"
|
||||
"101012": "4.1.2",
|
||||
"101013": "4.1.3",
|
||||
"101014": "4.1.3.1",
|
||||
"101015": "4.1.3.2",
|
||||
"101016": "4.1.4",
|
||||
"101017": "4.1.4.1",
|
||||
"101018": "4.1.5",
|
||||
"101019": "4.1.5.1",
|
||||
"101020": "4.1.5.2",
|
||||
"101021": "4.1.6",
|
||||
"101022": "4.1.6.1",
|
||||
"101023": "4.1.7",
|
||||
"101024": "4.1.8",
|
||||
"101025": "4.1.8.1",
|
||||
"101026": "4.1.9",
|
||||
"101027": "4.1.10",
|
||||
"101028": "4.1.11",
|
||||
"101029": "4.1.11.1",
|
||||
"101030": "4.1.12",
|
||||
"101031": "4.1.12.1",
|
||||
"101032": "4.1.12.2",
|
||||
"101033": "4.1.12.3",
|
||||
"101034": "4.1.13 Beta 1",
|
||||
"101035": "4.1.13 Beta 2",
|
||||
"101036": "4.1.13",
|
||||
"101037": "4.1.13",
|
||||
"101038": "4.1.13.1",
|
||||
"101040": "4.1.13.2",
|
||||
"101041": "4.1.13.2",
|
||||
"101042": "4.1.14 Beta 1",
|
||||
"101043": "4.1.14 Beta 2",
|
||||
"101044": "4.1.14 Beta 3",
|
||||
"101045": "4.1.14 Beta 4",
|
||||
"101046": "4.1.14 Beta 5",
|
||||
"101049": "4.1.14 Beta 6",
|
||||
"101050": "4.1.14 Beta 7",
|
||||
"101051": "4.1.14 RC",
|
||||
"101052": "4.1.14",
|
||||
"101053": "4.1.14.1",
|
||||
"101054": "4.1.14.2",
|
||||
"101055": "4.1.14.3",
|
||||
"101056": "4.1.15",
|
||||
"101057": "4.1.15 Beta 1",
|
||||
"101058": "4.1.15 Beta 2",
|
||||
"101059": "4.1.15 Beta 2a",
|
||||
"101060": "4.1.15 Beta 3",
|
||||
"101061": "4.1.15",
|
||||
"101062": "4.1.15",
|
||||
"101063": "4.1.15",
|
||||
"101064": "4.1.16 Beta 1",
|
||||
"101065": "4.1.16 Beta 2",
|
||||
"101066": "4.1.16 Beta 3",
|
||||
"101067": "4.1.16 Beta 4",
|
||||
"101068": "4.1.16 Beta 5",
|
||||
"101069": "4.1.16",
|
||||
"101070": "4.1.16.1",
|
||||
"101071": "4.1.17 Beta 1",
|
||||
"101072": "4.1.17 Beta 1a",
|
||||
"101073": "4.1.17 Beta 1b",
|
||||
"101074": "4.1.17 Beta 2",
|
||||
"101075": "4.1.17 Beta 3",
|
||||
"101076": "4.1.17 Beta 3",
|
||||
"101077": "4.1.17",
|
||||
"101078": "4.1.17.1",
|
||||
"101079": "4.1.18 Beta 1",
|
||||
"101082": "4.1.18 Beta 1b",
|
||||
"101083": "4.1.18 Beta 2",
|
||||
"101084": "4.1.18 Beta 3",
|
||||
"101085": "4.1.18",
|
||||
"101088": "4.1.18.1",
|
||||
"101089": "4.1.18.2",
|
||||
"101090": "4.1.19 Beta 1",
|
||||
"101091": "4.1.19 Beta 2",
|
||||
"101092": "4.1.19 Beta 3",
|
||||
"101093": "4.1.19"
|
||||
}
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Build CKEditor for release
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 19 Apr 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
@@ -50,9 +50,14 @@ class _Ckeditor
|
||||
/* This can take a while.... */
|
||||
set_time_limit(0);
|
||||
|
||||
$command = "rm -R \"{$path}/applications/core/interface/ckeditor/ckeditor\" 2>&1";
|
||||
$output = array();
|
||||
\exec( $command, $output );
|
||||
if( mb_strtolower( mb_substr( PHP_OS, 0, 3 ) ) === 'win' )
|
||||
{
|
||||
\exec( "rmdir \"{$path}/applications/core/interface/ckeditor/ckeditor\" /S /Q" );
|
||||
}
|
||||
else
|
||||
{
|
||||
\exec( "rm -R \"{$path}/applications/core/interface/ckeditor/ckeditor\" 2>&1" );
|
||||
}
|
||||
|
||||
if ( is_dir( "{$path}/applications/core/interface/ckeditor/ckeditor" ) )
|
||||
{
|
||||
@@ -62,26 +67,33 @@ class _Ckeditor
|
||||
$command = "{$_javaPath}java -jar \"{$path}/applications/core/dev/ckbuilder.jar\" --build \"{$path}/applications/core/dev/ckeditor\" \"{$path}/applications/core/interface/ckeditor\" --build-config \"{$path}/applications/core/dev/ckeditor/build-config.js\" --no-zip --no-tar --overwrite 2>&1";
|
||||
$output = array();
|
||||
\exec( $command, $output );
|
||||
|
||||
foreach ( $output as $line )
|
||||
{
|
||||
if ( $line === 'Release process completed:' )
|
||||
{
|
||||
$this->finish();
|
||||
return;
|
||||
}
|
||||
|
||||
if( mb_strtolower( mb_substr( PHP_OS, 0, 3 ) ) === 'win' )
|
||||
{
|
||||
\exec( "rmdir \"{$path}/applications/core/interface/ckeditor/ckeditor/samples\" /S /Q" );
|
||||
}
|
||||
else
|
||||
{
|
||||
\exec( "rm -R \"{$path}/applications/core/interface/ckeditor/ckeditor/samples\"" );
|
||||
}
|
||||
|
||||
if( in_array( 'Release process completed:', $output ) )
|
||||
{
|
||||
$this->finish();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
throw new \UnexpectedValueException( \IPS\Member::loggedIn()->language()->addToStack('dev_build_ckeditor_err', FALSE, array( 'sprintf' => array( $command ) ) ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Finish Build
|
||||
* Moved the pbckcode acs.js file over from development as CKEditor's build routine seems to break it
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function finish()
|
||||
{
|
||||
//@copy( \IPS\ROOT_PATH . '/applications/core/dev/ckeditor/plugins/pbckcode/dialogs/ace/ace.js', \IPS\ROOT_PATH . '/applications/core/interface/ckeditor/ckeditor/plugins/pbckcode/dialogs/ace/ace.js' );
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
/**
|
||||
* @brief Build CodeMirror for release
|
||||
* @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 21 Nov 2016
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
|
||||
namespace IPS\core\extensions\core\Build;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
{
|
||||
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Build CodeMirror for release
|
||||
*/
|
||||
class _Codemirror
|
||||
{
|
||||
/**
|
||||
* Build
|
||||
*
|
||||
* @return void
|
||||
* @throws \RuntimeException
|
||||
* @note You can define JAVA_PATH in constants.php if you need to specify the path to your java executable
|
||||
*/
|
||||
public function build()
|
||||
{
|
||||
/* Copy the CSS file */
|
||||
$css = file_get_contents( \IPS\ROOT_PATH . '/applications/core/dev/codemirror/lib/codemirror.css' );
|
||||
|
||||
/* Copy the JS files */
|
||||
$js = ";";
|
||||
$js .= file_get_contents( \IPS\ROOT_PATH . '/applications/core/dev/codemirror/lib/codemirror.js' );
|
||||
foreach ( array( 'clike', 'css', 'htmlmixed', 'javascript', 'lua', 'perl', 'php', 'python', 'ruby', 'sql', 'stex', 'swift', 'xml' ) as $mode )
|
||||
{
|
||||
$js .= ';' . file_get_contents( \IPS\ROOT_PATH . "/applications/core/dev/codemirror/mode/{$mode}/{$mode}.js" );
|
||||
}
|
||||
|
||||
/* Add our addons */
|
||||
foreach ( array( 'merge/merge', 'search/search', 'search/searchcursor' ) as $addon )
|
||||
{
|
||||
if ( file_exists( \IPS\ROOT_PATH . "/applications/core/dev/codemirror/addon/{$addon}.js" ) )
|
||||
{
|
||||
$js .= ';' . file_get_contents( \IPS\ROOT_PATH . "/applications/core/dev/codemirror/addon/{$addon}.js" );
|
||||
}
|
||||
if ( file_exists( \IPS\ROOT_PATH . "/applications/core/dev/codemirror/addon/{$addon}.css" ) )
|
||||
{
|
||||
$css .= file_get_contents( \IPS\ROOT_PATH . "/applications/core/dev/codemirror/addon/{$addon}.css" );
|
||||
}
|
||||
}
|
||||
|
||||
/* Minify and write */
|
||||
require_once( \IPS\ROOT_PATH . '/system/3rd_party/JShrink/Minifier.php' );
|
||||
\file_put_contents( \IPS\ROOT_PATH . '/applications/core/interface/codemirror/codemirror.css', $css );
|
||||
$css = \IPS\Theme::minifyCss( $css );
|
||||
$js = \JShrink\Minifier::minify( $js, array( 'flaggedComments' => false ) );
|
||||
\file_put_contents( \IPS\ROOT_PATH . '/applications/core/interface/codemirror/codemirror.js', $js );
|
||||
|
||||
/* Finish */
|
||||
$this->finish();
|
||||
}
|
||||
|
||||
/**
|
||||
* Finish Build
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function finish()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Community Enhancements: IPS GeoIP Service
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 19 Apr 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
@@ -80,7 +80,7 @@ class _GeoIP
|
||||
*/
|
||||
public function toggle( $enabled )
|
||||
{
|
||||
\IPS\Db::i()->update( 'core_sys_conf_settings', array( 'conf_value' => $enabled ), array( 'conf_key=?', 'ipsgeoip' ) );
|
||||
\IPS\Db::i()->update( 'core_sys_conf_settings', array( 'conf_value' => 0 ), array( 'conf_key=?', 'ipsgeoip' ) );
|
||||
unset( \IPS\Data\Store::i()->settings );
|
||||
}
|
||||
}
|
||||
@@ -1,113 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* @brief Google Analytics Community Enhancements
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @since 22 Aug 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
|
||||
namespace IPS\core\extensions\core\CommunityEnhancements;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
{
|
||||
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Google Analytics Community Enhancement
|
||||
*/
|
||||
class _GoogleAnalytics
|
||||
{
|
||||
/**
|
||||
* @brief Enhancement is enabled?
|
||||
*/
|
||||
public $enabled = FALSE;
|
||||
|
||||
/**
|
||||
* @brief IPS-provided enhancement?
|
||||
*/
|
||||
public $ips = FALSE;
|
||||
|
||||
/**
|
||||
* @brief Enhancement has configuration options?
|
||||
*/
|
||||
public $hasOptions = TRUE;
|
||||
|
||||
/**
|
||||
* @brief Icon data
|
||||
*/
|
||||
public $icon = "google_analytics.png";
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->enabled = \IPS\Settings::i()->ipbseo_ga_enabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function edit()
|
||||
{
|
||||
$form = new \IPS\Helpers\Form;
|
||||
$form->add( new \IPS\Helpers\Form\YesNo( 'ipbseo_ga_enabled', \IPS\Settings::i()->ipbseo_ga_enabled, TRUE, array( 'togglesOn' => array( 'ipseo_ga' ) ) ) );
|
||||
$form->add( new \IPS\Helpers\Form\Codemirror( 'ipseo_ga', \IPS\Settings::i()->ipseo_ga, FALSE, array(), NULL, NULL, NULL, 'ipseo_ga' ) );
|
||||
|
||||
if ( $form->values() )
|
||||
{
|
||||
$this->testSettings();
|
||||
$form->saveAsSettings();
|
||||
|
||||
\IPS\Session::i()->log( 'acplog__enhancements_edited', array( 'enhancements__core_GoogleAnalytics' => TRUE ) );
|
||||
\IPS\Output::i()->inlineMessage = \IPS\Member::loggedIn()->language()->addToStack('saved');
|
||||
}
|
||||
|
||||
\IPS\Output::i()->sidebar['actions'] = array(
|
||||
'help' => array(
|
||||
'title' => 'signup_googleanalytics',
|
||||
'icon' => 'external-link-square',
|
||||
'link' => \IPS\Http\Url::ips( 'docs/googleanalytics' ),
|
||||
'target' => '_blank'
|
||||
),
|
||||
);
|
||||
|
||||
\IPS\Output::i()->output = \IPS\Theme::i()->getTemplate( 'global' )->block( 'enhancements__core_GoogleAnalytics', $form );
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable/Disable
|
||||
*
|
||||
* @param $enabled bool Enable/Disable
|
||||
* @return void
|
||||
*/
|
||||
public function toggle( $enabled )
|
||||
{
|
||||
if ( $enabled )
|
||||
{
|
||||
$this->testSettings();
|
||||
}
|
||||
|
||||
\IPS\Db::i()->update( 'core_sys_conf_settings', array( 'conf_value' => $enabled ), array( 'conf_key=?', 'ipbseo_ga_enabled' ) );
|
||||
unset( \IPS\Data\Store::i()->settings );
|
||||
}
|
||||
|
||||
/**
|
||||
* Test Settings
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function testSettings()
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Community Enhancement: Google Maps
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 19 Apr 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
@@ -50,7 +50,7 @@ class _GoogleMaps
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->enabled = \IPS\Settings::i()->googlemaps or \IPS\Settings::i()->googleplacesautocomplete;
|
||||
$this->enabled = ( \IPS\Settings::i()->google_maps_api_key and ( \IPS\Settings::i()->googlemaps or \IPS\Settings::i()->googleplacesautocomplete ) );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -60,9 +60,59 @@ class _GoogleMaps
|
||||
*/
|
||||
public function edit()
|
||||
{
|
||||
$validation = function( $val ) {
|
||||
if ( $val and !\IPS\Request::i()->google_maps_api_key )
|
||||
{
|
||||
throw new \DomainException('google_maps_api_key_req');
|
||||
}
|
||||
};
|
||||
|
||||
$form = new \IPS\Helpers\Form;
|
||||
$form->add( new \IPS\Helpers\Form\YesNo( 'googlemaps', \IPS\Settings::i()->googlemaps ) );
|
||||
$form->add( new \IPS\Helpers\Form\YesNo( 'googleplacesautocomplete', \IPS\Settings::i()->googleplacesautocomplete ) );
|
||||
$form->add( new \IPS\Helpers\Form\Text( 'google_maps_api_key', \IPS\Settings::i()->google_maps_api_key, FALSE, array(), function( $val ) {
|
||||
if ( $val )
|
||||
{
|
||||
/* Check Geocoding API */
|
||||
try
|
||||
{
|
||||
$response = \IPS\Http\Url::external( "https://maps.googleapis.com/maps/api/geocode/json" )->setQueryString( array(
|
||||
'latlng' => '40.714224,-73.961452',
|
||||
'sensor' => 'false',
|
||||
'key' => $val
|
||||
) )->request()->get()->decodeJson();
|
||||
}
|
||||
catch ( \Exception $e )
|
||||
{
|
||||
throw new \DomainException('google_maps_api_error');
|
||||
}
|
||||
if ( !isset( $response['status'] ) or $response['status'] !== 'OK' )
|
||||
{
|
||||
throw new \DomainException('google_maps_api_key_invalid');
|
||||
}
|
||||
|
||||
/* Check Static Maps API */
|
||||
try
|
||||
{
|
||||
$response = \IPS\Http\Url::external( 'https://maps.googleapis.com/maps/api/staticmap' )->setQueryString( array(
|
||||
'center' => '40.714224,-73.961452',
|
||||
'zoom' => NULL,
|
||||
'size' => "100x100",
|
||||
'sensor' => 'false',
|
||||
'markers' => '40.714224,-73.961452',
|
||||
'key' => $val,
|
||||
) )->request()->get();
|
||||
}
|
||||
catch ( \Exception $e )
|
||||
{
|
||||
throw new \DomainException('google_maps_api_error');
|
||||
}
|
||||
if ( $response->httpResponseCode != 200 )
|
||||
{
|
||||
throw new \DomainException('google_maps_api_key_invalid');
|
||||
}
|
||||
}
|
||||
} ) );
|
||||
$form->add( new \IPS\Helpers\Form\YesNo( 'googlemaps', \IPS\Settings::i()->googlemaps, FALSE, array(), $validation ) );
|
||||
$form->add( new \IPS\Helpers\Form\YesNo( 'googleplacesautocomplete', \IPS\Settings::i()->googleplacesautocomplete, FALSE, array(), $validation ) );
|
||||
if ( $form->values() )
|
||||
{
|
||||
$form->saveAsSettings();
|
||||
@@ -90,7 +140,22 @@ class _GoogleMaps
|
||||
*/
|
||||
public function toggle( $enabled )
|
||||
{
|
||||
\IPS\Db::i()->update( 'core_sys_conf_settings', array( 'conf_value' => $enabled ), array( 'conf_key=?', 'googlemaps' ) );
|
||||
unset( \IPS\Data\Store::i()->settings );
|
||||
if ( $enabled )
|
||||
{
|
||||
if ( \IPS\Settings::i()->google_maps_api_key )
|
||||
{
|
||||
\IPS\Db::i()->update( 'core_sys_conf_settings', array( 'conf_value' => 1 ), array( '( conf_key=? OR conf_key=? )', 'googlemaps', 'googleplacesautocomplete' ) );
|
||||
unset( \IPS\Data\Store::i()->settings );
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new \DomainException;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
\IPS\Db::i()->update( 'core_sys_conf_settings', array( 'conf_value' => 0 ), array( '( conf_key=? OR conf_key=? )', 'googlemaps', 'googleplacesautocomplete' ) );
|
||||
unset( \IPS\Data\Store::i()->settings );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,216 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* @brief Community Enhancements: Mandrill integration
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @since 20 June 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
|
||||
namespace IPS\core\extensions\core\CommunityEnhancements;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
{
|
||||
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Community Enhancements: Mandrill integration
|
||||
*/
|
||||
class _Mandrill
|
||||
{
|
||||
/**
|
||||
* @brief IPS-provided enhancement?
|
||||
*/
|
||||
public $ips = FALSE;
|
||||
|
||||
/**
|
||||
* @brief Enhancement is enabled?
|
||||
*/
|
||||
public $enabled = FALSE;
|
||||
|
||||
/**
|
||||
* @brief Enhancement has configuration options?
|
||||
*/
|
||||
public $hasOptions = TRUE;
|
||||
|
||||
/**
|
||||
* @brief Icon data
|
||||
*/
|
||||
public $icon = "mandrill.png";
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->enabled = ( \IPS\Settings::i()->mandrill_api_key && \IPS\Settings::i()->mandrill_use_for );
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function edit()
|
||||
{
|
||||
$form = new \IPS\Helpers\Form;
|
||||
$form->add( new \IPS\Helpers\Form\Radio( 'mandrill_use_for', \IPS\Settings::i()->mandrill_use_for, TRUE, array(
|
||||
'options' => array(
|
||||
'0' => 'mandrill_donot_use',
|
||||
'1' => 'mandrill_bulkmail_use',
|
||||
'2' => 'mandrill_all_use'
|
||||
),
|
||||
'toggles' => array(
|
||||
'0' => array(),
|
||||
'1' => array('mandrill_api_key','mandrill_username'),
|
||||
'2' => array('mandrill_api_key','mandrill_username'),
|
||||
)
|
||||
) ) );
|
||||
$form->add( new \IPS\Helpers\Form\Text( 'mandrill_username', \IPS\Settings::i()->mandrill_username, FALSE, array(), NULL, NULL, NULL, 'mandrill_username' ) );
|
||||
$form->add( new \IPS\Helpers\Form\Text( 'mandrill_api_key', \IPS\Settings::i()->mandrill_api_key, FALSE, array(), NULL, NULL, NULL, 'mandrill_api_key' ) );
|
||||
|
||||
if ( $form->values() )
|
||||
{
|
||||
try
|
||||
{
|
||||
$this->testSettings( $form->values() );
|
||||
}
|
||||
catch ( \DomainException $e )
|
||||
{
|
||||
\IPS\Output::i()->error( $e->getMessage(), '4S123/1', 500 );
|
||||
}
|
||||
catch ( \InvalidArgumentException $e )
|
||||
{
|
||||
\IPS\Output::i()->error( $e->getMessage(), '', 500 ); //@todo check errorcode
|
||||
}
|
||||
|
||||
$form->saveAsSettings();
|
||||
\IPS\Session::i()->log( 'acplog__enhancements_edited', array( 'enhancements__core_Mandrill' => TRUE ) );
|
||||
\IPS\Output::i()->inlineMessage = \IPS\Member::loggedIn()->language()->addToStack('saved');
|
||||
}
|
||||
|
||||
\IPS\Output::i()->sidebar['actions'] = array(
|
||||
'help' => array(
|
||||
'title' => 'learn_more',
|
||||
'icon' => 'question-circle',
|
||||
'link' => \IPS\Http\Url::ips( 'docs/mandrill' ),
|
||||
'target' => '_blank'
|
||||
),
|
||||
'signup' => array(
|
||||
'title' => 'mandril_signup',
|
||||
'icon' => 'external-link-square',
|
||||
'link' => \IPS\Http\Url::ips( 'docs/mandrill_signup' ),
|
||||
'target' => '_blank'
|
||||
),
|
||||
);
|
||||
|
||||
\IPS\Output::i()->output = $form;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable/Disable
|
||||
*
|
||||
* @param $enabled bool Enable/Disable
|
||||
* @return void
|
||||
* @throws \DomainException
|
||||
*/
|
||||
public function toggle( $enabled )
|
||||
{
|
||||
/* If we're disabling, just disable */
|
||||
if( !$enabled )
|
||||
{
|
||||
\IPS\Db::i()->update( 'core_sys_conf_settings', array( 'conf_value' => 0 ), array( 'conf_key=?', 'mandrill_use_for' ) );
|
||||
unset( \IPS\Data\Store::i()->settings );
|
||||
}
|
||||
|
||||
/* Otherwise if we already have an API key, just toggle bulk mail on */
|
||||
if( $enabled && \IPS\Settings::i()->mandrill_api_key )
|
||||
{
|
||||
\IPS\Db::i()->update( 'core_sys_conf_settings', array( 'conf_value' => 1 ), array( 'conf_key=?', 'mandrill_use_for' ) );
|
||||
unset( \IPS\Data\Store::i()->settings );
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Otherwise we need to let them enter an API key before we can enable. Throwing an exception causes you to be redirected to the settings page. */
|
||||
throw new \DomainException;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test Settings
|
||||
*
|
||||
* @param array $values Form values
|
||||
* @return void
|
||||
* @throws \LogicException
|
||||
*/
|
||||
protected function testSettings( $values )
|
||||
{
|
||||
/* If we've disabled, just shut off */
|
||||
if( (int) $values['mandrill_use_for'] === 0 )
|
||||
{
|
||||
if( \IPS\Settings::i()->smtp_host == 'smtp.mandrillapp.com' && \IPS\Settings::i()->mail_method == 'smtp' )
|
||||
{
|
||||
\IPS\Db::i()->update( 'core_sys_conf_settings', array( 'conf_value' => 'mail' ), array( 'conf_key=?', 'mail_method' ) );
|
||||
unset( \IPS\Data\Store::i()->settings );
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/* If we enable Mandrill but do not supply an API key or username, this is a problem */
|
||||
if( !$values['mandrill_username'] OR !$values['mandrill_api_key'] )
|
||||
{
|
||||
throw new \InvalidArgumentException( "mandrill_enable_need_details" );
|
||||
}
|
||||
|
||||
/* Test Mandrill settings */
|
||||
try
|
||||
{
|
||||
$info = \IPS\Email::mandrill( 'users_info', $values['mandrill_api_key'] );
|
||||
if ( $info === NULL or $info->username != $values['mandrill_username'] )
|
||||
{
|
||||
throw new \DomainException('mandrill_bad_credentials');
|
||||
}
|
||||
}
|
||||
catch ( \IPS\Http\Request\Exception $e )
|
||||
{
|
||||
throw new \DomainException( 'mandrill_bad_credentials' );
|
||||
}
|
||||
|
||||
/* Tell IPS */
|
||||
$response = NULL;
|
||||
try
|
||||
{
|
||||
$response = \IPS\Http\Url::ips( 'mandrill' )->request()->post( array(
|
||||
'key' => $values['mandrill_api_key'],
|
||||
'username' => $values['mandrill_username'],
|
||||
'lkey' => \IPS\Settings::i()->ipb_reg_number,
|
||||
'version' => \IPS\Application::load('core')->long_version
|
||||
) )->decodeJson();
|
||||
}
|
||||
catch ( \IPS\Http\Request\Exception $e ) { }
|
||||
|
||||
/* If we want to use Mandrill for "everything", we need to update our local SMTP settings with the values returned from the API call */
|
||||
if( $values['mandrill_use_for'] == 2 )
|
||||
{
|
||||
foreach( $response as $settingKey => $settingValue )
|
||||
{
|
||||
\IPS\Db::i()->update( 'core_sys_conf_settings', array( 'conf_value' => $settingValue ), array( 'conf_key=?', $settingKey ) );
|
||||
unset( \IPS\Data\Store::i()->settings );
|
||||
}
|
||||
}
|
||||
/* Else if we don't want to use Mandrill for everything but we're currently configured to, update our email settings to fall back to standard PHP mail */
|
||||
else if( $values['mandrill_use_for'] == 1 && \IPS\Settings::i()->smtp_host == 'smtp.mandrillapp.com' && \IPS\Settings::i()->mail_method == 'smtp' )
|
||||
{
|
||||
\IPS\Db::i()->update( 'core_sys_conf_settings', array( 'conf_value' => 'mail' ), array( 'conf_key=?', 'mail_method' ) );
|
||||
unset( \IPS\Data\Store::i()->settings );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,180 @@
|
||||
<?php
|
||||
/**
|
||||
* @brief Community Enhancements: SendGrid integration
|
||||
* @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 17 October 2016
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
|
||||
namespace IPS\core\extensions\core\CommunityEnhancements;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
{
|
||||
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Community Enhancements: SendGrid integration
|
||||
*/
|
||||
class _SendGrid
|
||||
{
|
||||
/**
|
||||
* @brief IPS-provided enhancement?
|
||||
*/
|
||||
public $ips = FALSE;
|
||||
|
||||
/**
|
||||
* @brief Enhancement is enabled?
|
||||
*/
|
||||
public $enabled = FALSE;
|
||||
|
||||
/**
|
||||
* @brief Enhancement has configuration options?
|
||||
*/
|
||||
public $hasOptions = TRUE;
|
||||
|
||||
/**
|
||||
* @brief Icon data
|
||||
*/
|
||||
public $icon = "sendgrid.png";
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->enabled = ( \IPS\Settings::i()->sendgrid_api_key && \IPS\Settings::i()->sendgrid_use_for );
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function edit()
|
||||
{
|
||||
$form = new \IPS\Helpers\Form;
|
||||
$form->add( new \IPS\Helpers\Form\Radio( 'sendgrid_use_for', \IPS\Settings::i()->sendgrid_use_for, TRUE, array(
|
||||
'options' => array(
|
||||
'0' => 'sendgrid_donot_use',
|
||||
'1' => 'sendgrid_bulkmail_use',
|
||||
'2' => 'sendgrid_all_use'
|
||||
),
|
||||
'toggles' => array(
|
||||
'0' => array(),
|
||||
'1' => array( 'sendgrid_api_key', 'sendgrid_click_tracking', 'sendgrid_ip_pool' ),
|
||||
'2' => array( 'sendgrid_api_key', 'sendgrid_click_tracking', 'sendgrid_ip_pool' ),
|
||||
)
|
||||
) ) );
|
||||
$form->add( new \IPS\Helpers\Form\Text( 'sendgrid_api_key', \IPS\Settings::i()->sendgrid_api_key, FALSE, array(), NULL, NULL, \IPS\Member::loggedIn()->language()->addToStack('sendgrid_api_key_suffix'), 'sendgrid_api_key' ) );
|
||||
$form->add( new \IPS\Helpers\Form\YesNo( 'sendgrid_click_tracking', \IPS\Settings::i()->sendgrid_click_tracking, FALSE, array(), NULL, NULL, NULL, 'sendgrid_click_tracking' ) );
|
||||
$form->add( new \IPS\Helpers\Form\Text( 'sendgrid_ip_pool', \IPS\Settings::i()->sendgrid_ip_pool ?: NULL, FALSE, array( 'nullLang' => 'sendgrid_ip_pool_none' ), NULL, NULL, NULL, 'sendgrid_ip_pool' ) );
|
||||
|
||||
if ( $form->values() )
|
||||
{
|
||||
try
|
||||
{
|
||||
$this->testSettings( $form->values() );
|
||||
}
|
||||
catch ( \Exception $e )
|
||||
{
|
||||
\IPS\Output::i()->error( $e->getMessage(), '2C339/1', 500 );
|
||||
}
|
||||
|
||||
$form->saveAsSettings();
|
||||
\IPS\Session::i()->log( 'acplog__enhancements_edited', array( 'enhancements__core_SendGrid' => TRUE ) );
|
||||
\IPS\Output::i()->inlineMessage = \IPS\Member::loggedIn()->language()->addToStack('saved');
|
||||
}
|
||||
|
||||
\IPS\Output::i()->sidebar['actions'] = array(
|
||||
'help' => array(
|
||||
'title' => 'learn_more',
|
||||
'icon' => 'question-circle',
|
||||
'link' => \IPS\Http\Url::ips( 'docs/sendgrid' ),
|
||||
'target' => '_blank'
|
||||
),
|
||||
);
|
||||
|
||||
\IPS\Output::i()->output = $form;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable/Disable
|
||||
*
|
||||
* @param $enabled bool Enable/Disable
|
||||
* @return void
|
||||
* @throws \DomainException
|
||||
*/
|
||||
public function toggle( $enabled )
|
||||
{
|
||||
/* If we're disabling, just disable */
|
||||
if( !$enabled )
|
||||
{
|
||||
\IPS\Db::i()->update( 'core_sys_conf_settings', array( 'conf_value' => 0 ), array( 'conf_key=?', 'sendgrid_use_for' ) );
|
||||
unset( \IPS\Data\Store::i()->settings );
|
||||
}
|
||||
|
||||
/* Otherwise if we already have an API key, just toggle bulk mail on */
|
||||
if( $enabled && \IPS\Settings::i()->sendgrid_api_key )
|
||||
{
|
||||
\IPS\Db::i()->update( 'core_sys_conf_settings', array( 'conf_value' => 1 ), array( 'conf_key=?', 'sendgrid_use_for' ) );
|
||||
unset( \IPS\Data\Store::i()->settings );
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Otherwise we need to let them enter an API key before we can enable. Throwing an exception causes you to be redirected to the settings page. */
|
||||
throw new \DomainException;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test Settings
|
||||
*
|
||||
* @param array $values Form values
|
||||
* @return void
|
||||
* @throws \LogicException
|
||||
*/
|
||||
protected function testSettings( $values )
|
||||
{
|
||||
/* If we've disabled, just shut off */
|
||||
if( (int) $values['sendgrid_use_for'] === 0 )
|
||||
{
|
||||
if( \IPS\Settings::i()->mail_method == 'sendgrid' )
|
||||
{
|
||||
\IPS\Db::i()->update( 'core_sys_conf_settings', array( 'conf_value' => 'mail' ), array( 'conf_key=?', 'mail_method' ) );
|
||||
unset( \IPS\Data\Store::i()->settings );
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/* If we enable SendGrid but do not supply an API key, this is a problem */
|
||||
if( !$values['sendgrid_api_key'] )
|
||||
{
|
||||
throw new \InvalidArgumentException( "sendgrid_enable_need_details" );
|
||||
}
|
||||
|
||||
/* Test SendGrid settings */
|
||||
try
|
||||
{
|
||||
$sendgrid = new \IPS\Email\Outgoing\SendGrid( $values['sendgrid_api_key'] );
|
||||
$scopes = $sendgrid->scopes();
|
||||
|
||||
if ( !in_array( 'mail.send', $scopes['scopes'] ) )
|
||||
{
|
||||
throw new \DomainException( 'sendgrid_bad_scopes' );
|
||||
}
|
||||
}
|
||||
catch ( \Exception $e )
|
||||
{
|
||||
throw new \DomainException( 'sendgrid_bad_credentials' );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Community Enhancements: Spam Monitoring Service
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 17 Apr 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
@@ -78,7 +78,7 @@ class _SpamMonitoring
|
||||
}
|
||||
catch ( \LogicException $e )
|
||||
{
|
||||
\IPS\Output::i()->error( $e->getMessage(), '2C116/2', 403, '' );
|
||||
//Do not show error message. We will see error message in Settings
|
||||
}
|
||||
|
||||
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=membersettings&controller=spam&tab=service' ) );
|
||||
|
||||
@@ -0,0 +1,199 @@
|
||||
<?php
|
||||
/**
|
||||
* @brief Community Enhancements: Sparkpost integration
|
||||
* @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 29 March 2016
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
|
||||
namespace IPS\core\extensions\core\CommunityEnhancements;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
{
|
||||
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Community Enhancements: Sparkpost integration
|
||||
*/
|
||||
class _Sparkpost
|
||||
{
|
||||
/**
|
||||
* @brief IPS-provided enhancement?
|
||||
*/
|
||||
public $ips = FALSE;
|
||||
|
||||
/**
|
||||
* @brief Enhancement is enabled?
|
||||
*/
|
||||
public $enabled = FALSE;
|
||||
|
||||
/**
|
||||
* @brief Enhancement has configuration options?
|
||||
*/
|
||||
public $hasOptions = TRUE;
|
||||
|
||||
/**
|
||||
* @brief Icon data
|
||||
*/
|
||||
public $icon = "sparkpost.png";
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->enabled = ( \IPS\Settings::i()->sparkpost_api_key && \IPS\Settings::i()->sparkpost_use_for );
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function edit()
|
||||
{
|
||||
$form = new \IPS\Helpers\Form;
|
||||
$form->add( new \IPS\Helpers\Form\Radio( 'sparkpost_use_for', \IPS\Settings::i()->sparkpost_use_for, TRUE, array(
|
||||
'options' => array(
|
||||
'0' => 'sparkpost_donot_use',
|
||||
'1' => 'sparkpost_bulkmail_use',
|
||||
'2' => 'sparkpost_all_use'
|
||||
),
|
||||
'toggles' => array(
|
||||
'0' => array(),
|
||||
'1' => array( 'sparkpost_api_key', 'sparkpost_click_tracking', 'sparkpost_ip_pool' ),
|
||||
'2' => array( 'sparkpost_api_key', 'sparkpost_click_tracking', 'sparkpost_ip_pool' ),
|
||||
)
|
||||
) ) );
|
||||
$form->add( new \IPS\Helpers\Form\Text( 'sparkpost_api_key', \IPS\Settings::i()->sparkpost_api_key, FALSE, array(), NULL, NULL, \IPS\Member::loggedIn()->language()->addToStack('sparkpost_api_key_suffix'), 'sparkpost_api_key' ) );
|
||||
$form->add( new \IPS\Helpers\Form\YesNo( 'sparkpost_click_tracking', \IPS\Settings::i()->sparkpost_click_tracking, FALSE, array(), NULL, NULL, NULL, 'sparkpost_click_tracking' ) );
|
||||
$form->add( new \IPS\Helpers\Form\Text( 'sparkpost_ip_pool', \IPS\Settings::i()->sparkpost_ip_pool ?: NULL, FALSE, array( 'nullLang' => 'sparkpost_ip_pool_none' ), NULL, NULL, NULL, 'sparkpost_ip_pool' ) );
|
||||
|
||||
if ( $form->values() )
|
||||
{
|
||||
try
|
||||
{
|
||||
$this->testSettings( $form->values() );
|
||||
}
|
||||
catch ( \Exception $e )
|
||||
{
|
||||
\IPS\Output::i()->error( $e->getMessage(), '2S123/1', 500 );
|
||||
}
|
||||
|
||||
$form->saveAsSettings();
|
||||
\IPS\Session::i()->log( 'acplog__enhancements_edited', array( 'enhancements__core_Sparkpost' => TRUE ) );
|
||||
\IPS\Output::i()->inlineMessage = \IPS\Member::loggedIn()->language()->addToStack('saved');
|
||||
}
|
||||
|
||||
\IPS\Output::i()->sidebar['actions'] = array(
|
||||
'help' => array(
|
||||
'title' => 'learn_more',
|
||||
'icon' => 'question-circle',
|
||||
'link' => \IPS\Http\Url::ips( 'docs/sparkpost' ),
|
||||
'target' => '_blank'
|
||||
),
|
||||
);
|
||||
|
||||
\IPS\Output::i()->output = $form;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable/Disable
|
||||
*
|
||||
* @param $enabled bool Enable/Disable
|
||||
* @return void
|
||||
* @throws \DomainException
|
||||
*/
|
||||
public function toggle( $enabled )
|
||||
{
|
||||
/* If we're disabling, just disable */
|
||||
if( !$enabled )
|
||||
{
|
||||
\IPS\Db::i()->update( 'core_sys_conf_settings', array( 'conf_value' => 0 ), array( 'conf_key=?', 'sparkpost_use_for' ) );
|
||||
unset( \IPS\Data\Store::i()->settings );
|
||||
}
|
||||
|
||||
/* Otherwise if we already have an API key, just toggle bulk mail on */
|
||||
if( $enabled && \IPS\Settings::i()->sparkpost_api_key )
|
||||
{
|
||||
\IPS\Db::i()->update( 'core_sys_conf_settings', array( 'conf_value' => 1 ), array( 'conf_key=?', 'sparkpost_use_for' ) );
|
||||
unset( \IPS\Data\Store::i()->settings );
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Otherwise we need to let them enter an API key before we can enable. Throwing an exception causes you to be redirected to the settings page. */
|
||||
throw new \DomainException;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test Settings
|
||||
*
|
||||
* @param array $values Form values
|
||||
* @return void
|
||||
* @throws \LogicException
|
||||
*/
|
||||
protected function testSettings( $values )
|
||||
{
|
||||
/* If we've disabled, just shut off */
|
||||
if( (int) $values['sparkpost_use_for'] === 0 )
|
||||
{
|
||||
if( \IPS\Settings::i()->mail_method == 'sparkpost' )
|
||||
{
|
||||
\IPS\Db::i()->update( 'core_sys_conf_settings', array( 'conf_value' => 'mail' ), array( 'conf_key=?', 'mail_method' ) );
|
||||
unset( \IPS\Data\Store::i()->settings );
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/* If we enable Sparkpost but do not supply an API key, this is a problem */
|
||||
if( !$values['sparkpost_api_key'] )
|
||||
{
|
||||
throw new \InvalidArgumentException( "sparkpost_enable_need_details" );
|
||||
}
|
||||
|
||||
/* Test Sparkpost settings */
|
||||
try
|
||||
{
|
||||
$domain = mb_substr( \IPS\Settings::i()->email_out, mb_strpos( \IPS\Settings::i()->email_out, '@' ) + 1 );
|
||||
$sparkpost = new \IPS\Email\Outgoing\SparkPost( $values['sparkpost_api_key'] );
|
||||
$sendingDomains = $sparkpost->sendingDomains();
|
||||
if ( isset( $sendingDomains['errors'] ) )
|
||||
{
|
||||
throw new \DomainException('sparkpost_bad_credentials');
|
||||
}
|
||||
$isOkay = FALSE;
|
||||
foreach ( $sendingDomains['results'] as $sendingDomain )
|
||||
{
|
||||
if ( $sendingDomain['domain'] == $domain )
|
||||
{
|
||||
if ( $sendingDomain['status']['ownership_verified'] )
|
||||
{
|
||||
$isOkay = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new \DomainException('sparkpost_domain_not_verified');
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( !$isOkay )
|
||||
{
|
||||
throw new \DomainException('sparkpost_domain_not_registered');
|
||||
}
|
||||
}
|
||||
catch ( \IPS\Http\Request\Exception $e )
|
||||
{
|
||||
throw new \DomainException( 'sparkpost_bad_credentials' );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Community Enhancements: Viglink integration
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 20 June 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
@@ -80,7 +80,7 @@ class _Viglink
|
||||
$form->add( new \IPS\Helpers\Form\Text( 'viglink_api_key', \IPS\Settings::i()->viglink_api_key, FALSE, array(), NULL, NULL, NULL, 'viglink_api_key' ) );
|
||||
}
|
||||
|
||||
$form->add( new \IPS\Helpers\Form\Select( 'viglink_groups', explode( ',', \IPS\Settings::i()->viglink_groups ), FALSE, array( 'options' => \IPS\Member\Group::groups(), 'parse' => 'normal', 'multiple' => true, 'unlimited' => 'all', 'unlimitedLang' => 'all_groups' ), NULL, NULL, NULL, 'viglink_groups' ) );
|
||||
$form->add( new \IPS\Helpers\Form\Select( 'viglink_groups', ( \IPS\Settings::i()->viglink_groups == 'all' ) ? 'all' : explode( ',', \IPS\Settings::i()->viglink_groups ), FALSE, array( 'options' => \IPS\Member\Group::groups(), 'parse' => 'normal', 'multiple' => true, 'unlimited' => 'all', 'unlimitedLang' => 'all_groups' ), NULL, NULL, NULL, 'viglink_groups' ) );
|
||||
$form->add( new \IPS\Helpers\Form\Select( 'viglink_norewrite', explode( ',', \IPS\Settings::i()->viglink_norewrite ), FALSE, array( 'options' => \IPS\Member\Group::groups(), 'parse' => 'normal', 'multiple' => true ), NULL, NULL, NULL, 'viglink_norewrite' ) );
|
||||
|
||||
if ( $values = $form->values( TRUE ) )
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
<?php
|
||||
/**
|
||||
* @brief Contact Us extension
|
||||
* @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
|
||||
{subpackage}
|
||||
* @since 29 Sep 2016
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
|
||||
namespace IPS\core\extensions\core\ContactUs;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
{
|
||||
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Contact Us extension
|
||||
*/
|
||||
class _Email
|
||||
{
|
||||
/**
|
||||
* Process Form
|
||||
*
|
||||
* @param \IPS\Helpers\Form $form The form
|
||||
* @param array $formFields Additional Configuration Formfields
|
||||
* @param array $options Type Radio Form Options
|
||||
* @param array $toggles Type Radio Form Toggles
|
||||
* @param array $disabled Type Radio Form Disabled Options
|
||||
* @return void
|
||||
*/
|
||||
public function process( &$form, &$formFields, &$options, &$toggles, &$disabled )
|
||||
{
|
||||
$options['contact_internal'] = 'contact_internal';
|
||||
$options['contact_emails'] = 'contact_emails';
|
||||
$toggles['contact_emails'] = array( 'contact_emails' );
|
||||
|
||||
$formFields[] = new \IPS\Helpers\Form\Stack( 'contact_emails', explode( ',', \IPS\Settings::i()->contact_emails ), FALSE, array( 'stackFieldType' => 'Email', 'maxItems' => 5 ),NULL ,NULL ,NULL, 'contact_emails' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Allows extensions to do something before the form is shown... e.g. add your own custom fields, or redirect the page
|
||||
*
|
||||
* @param \IPS\Helpers\Form $form The form
|
||||
* @return void
|
||||
*/
|
||||
public function runBeforeFormOutput( &$form )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the Form
|
||||
*
|
||||
* @param array $values Values from form
|
||||
* @return bool
|
||||
*/
|
||||
public function handleForm( array $values )
|
||||
{
|
||||
if ( \IPS\Settings::i()->contact_type == 'contact_internal' OR \IPS\Settings::i()->contact_type == 'contact_emails' )
|
||||
{
|
||||
$fromName = ( \IPS\Member::loggedIn()->member_id ) ? \IPS\Member::loggedIn()->name : $values['contact_name'];
|
||||
$fromEmail = ( \IPS\Member::loggedIn()->member_id ) ? \IPS\Member::loggedIn()->email : $values['email_address'];
|
||||
$content = $values['contact_text'];
|
||||
|
||||
if ( \IPS\Settings::i()->contact_type == 'contact_internal' )
|
||||
{
|
||||
$sender = \IPS\Settings::i()->email_in;
|
||||
}
|
||||
else
|
||||
{
|
||||
$sender = explode( ',', \IPS\Settings::i()->contact_emails );
|
||||
}
|
||||
$mail = \IPS\Email::buildFromTemplate( 'core', 'contact_form', array( \IPS\Member::loggedIn(), $fromName, $fromEmail, $content ), \IPS\Email::TYPE_TRANSACTIONAL );
|
||||
$mail->send( $sender , array(), array(), NULL, $fromName, array( 'Reply-To' => \IPS\Email::encodeHeader( $fromName, ( \IPS\Member::loggedIn()->member_id ? \IPS\Member::loggedIn()->email : $values['email_address'] ) ) ) );
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
/**
|
||||
* @brief Contact Us extension
|
||||
* @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
|
||||
{subpackage}
|
||||
* @since 29 Sep 2016
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
|
||||
namespace IPS\core\extensions\core\ContactUs;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
{
|
||||
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Contact Us extension
|
||||
*/
|
||||
class _RedirectForm
|
||||
{
|
||||
/**
|
||||
* Process Form
|
||||
*
|
||||
* @param \IPS\Helpers\Form $form The form
|
||||
* @param array $formFields Additional Configuration Formfields
|
||||
* @param array $options Type Radio Form Options
|
||||
* @param array $toggles Type Radio Form Toggles
|
||||
* @param array $disabled Type Radio Form Disabled Options
|
||||
* @return void
|
||||
*/
|
||||
public function process( &$form, &$formFields, &$options, &$toggles, &$disabled )
|
||||
{
|
||||
$formFields[] = new \IPS\Helpers\Form\Url( 'contact_redirect', \IPS\Settings::i()->contact_redirect, FALSE, array( ),NULL ,NULL ,NULL, 'contact_redirect' );
|
||||
$options['contact_redirect'] = 'contact_redirect';
|
||||
$toggles['contact_redirect'] = array( 'contact_redirect' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Allows extensions to do something before the form is shown... e.g. add your own custom fields, or redirect the page
|
||||
*
|
||||
* @param \IPS\Helpers\Form $form The form
|
||||
* @return void
|
||||
*/
|
||||
public function runBeforeFormOutput( \IPS\Helpers\Form &$form )
|
||||
{
|
||||
if ( \IPS\Settings::i()->contact_type == 'contact_redirect' AND \IPS\Settings::i()->contact_redirect != '' )
|
||||
{
|
||||
\IPS\Output::i()->redirect( \IPS\Settings::i()->contact_redirect );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the Form
|
||||
*
|
||||
* @param array $values Values from form
|
||||
* @return bool
|
||||
*/
|
||||
public function handleForm( $values )
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Content Router extension: Status
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @subpackage Core
|
||||
* @since 24 Feb 2014
|
||||
* @version SVN_VERSION_NUMBER
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Create Menu Extension : Announcement
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 23 Jun 2015
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Create Menu Extension : Status
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 21 Sep 2014
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
@@ -30,7 +30,7 @@ class _Status
|
||||
*/
|
||||
public function getItems()
|
||||
{
|
||||
if ( \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'status' ) ) and \IPS\core\Statuses\Status::canCreateFromCreateMenu() )
|
||||
if ( \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'status' ) ) and \IPS\core\Statuses\Status::canCreateFromCreateMenu() and \IPS\Settings::i()->profile_comments )
|
||||
{
|
||||
return array(
|
||||
'member_status' => array(
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Dashboard extension: Admin notes
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 23 Jul 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
@@ -24,10 +24,10 @@ if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
class _AdminNotes
|
||||
{
|
||||
/**
|
||||
* Can the current user view this dashboard item?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
* Can the current user view this dashboard item?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function canView()
|
||||
{
|
||||
return TRUE;
|
||||
@@ -45,15 +45,13 @@ class _AdminNotes
|
||||
|
||||
if( $values = $form->values() )
|
||||
{
|
||||
$updated = new \IPS\DateTime;
|
||||
|
||||
\IPS\Db::i()->update( 'core_sys_conf_settings', array( 'conf_value' => $values['admin_notes'] ), array( 'conf_key=?', 'acp_notes' ) );
|
||||
\IPS\Db::i()->update( 'core_sys_conf_settings', array( 'conf_value' => $updated->getTimestamp() ), array( 'conf_key=?', 'acp_notes_updated' ) );
|
||||
\IPS\Db::i()->update( 'core_sys_conf_settings', array( 'conf_value' => time() ), array( 'conf_key=?', 'acp_notes_updated' ) );
|
||||
unset( \IPS\Data\Store::i()->settings );
|
||||
|
||||
if( \IPS\Request::i()->isAjax() )
|
||||
{
|
||||
return (string) $updated;
|
||||
return (string) \IPS\DateTime::ts( intval( \IPS\Settings::i()->acp_notes_updated ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Dashboard extension: Users Awaiting Validation
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 13 Aug 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
@@ -55,7 +55,7 @@ class _AwaitingValidation
|
||||
) as $user
|
||||
)
|
||||
{
|
||||
$users[] = \IPS\Member::constructFromData( $user );
|
||||
$users[ $user['member_id'] ] = \IPS\Member::constructFromData( $user );
|
||||
}
|
||||
|
||||
return \IPS\Theme::i()->getTemplate( 'dashboard' )->awaitingValidation( $users );
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Dashboard extension: Background Queue Progress
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 27 May 2014
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Dashboard extension: Failed Admin Logins
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 13 Aug 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Dashboard extension: Show a notice if there are failed IPS Connect communications
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 03 Dec 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
@@ -30,7 +30,8 @@ class _IpsconnectMaster
|
||||
*/
|
||||
public function canView()
|
||||
{
|
||||
return TRUE;
|
||||
$handlers = \IPS\Login::handlers( TRUE );
|
||||
return (bool) ( array_key_exists( 'Ipsconnect', $handlers ) and $handlers['Ipsconnect']->enabled );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -49,7 +50,7 @@ class _IpsconnectMaster
|
||||
|
||||
\IPS\Db::i()->delete( 'core_ipsconnect_queue', array( 'slave_id=?', intval( \IPS\Request::i()->deleteSlave ) ) );
|
||||
\IPS\Db::i()->delete( 'core_ipsconnect_slaves', array( 'slave_id=?', intval( \IPS\Request::i()->deleteSlave ) ) );
|
||||
\IPS\Db::i()->update( 'core_sys_conf_settings', array( 'conf_value' => \IPS\Db::i()->select( 'COUNT(*)', 'core_ipsconnect_slaves' )->first() ), array( 'conf_key=?', 'connect_slaves' ) );
|
||||
\IPS\Db::i()->update( 'core_sys_conf_settings', array( 'conf_value' => \IPS\Db::i()->select( 'COUNT(*)', 'core_ipsconnect_slaves', array( 'slave_enabled=?', 1 ) )->first() ), array( 'conf_key=?', 'connect_slaves' ) );
|
||||
unset( \IPS\Data\Store::i()->settings );
|
||||
|
||||
\IPS\Output::i()->inlineMessage = \IPS\Member::loggedIn()->language()->addToStack('connect_slave_deleted');
|
||||
@@ -67,7 +68,7 @@ class _IpsconnectMaster
|
||||
{
|
||||
try
|
||||
{
|
||||
$slave = \IPS\Db::i()->select( '*', 'core_ipsconnect_slaves', array( 'slave_id=?', $slave ) )->first();
|
||||
$slave = \IPS\Db::i()->select( '*', 'core_ipsconnect_slaves', array( 'slave_id=? AND slave_enabled=?', $slave, 1 ) )->first();
|
||||
$fails = count( \IPS\Db::i()->select( 'id', 'core_ipsconnect_queue', array( 'slave_id=?', $slave['slave_id'] ) ) );
|
||||
|
||||
$failures[] = array(
|
||||
@@ -77,11 +78,14 @@ class _IpsconnectMaster
|
||||
}
|
||||
catch( \UnderflowException $e )
|
||||
{
|
||||
/* This means that the slave record doesn't actually exist which would only happen in theory if someone played with the URL */
|
||||
/* This means that the slave record doesn't actually exist or is disabled */
|
||||
}
|
||||
}
|
||||
|
||||
return \IPS\Theme::i()->getTemplate( 'dashboard' )->connectFailures( $failures, count($failures) );
|
||||
if( count( $failures ) )
|
||||
{
|
||||
return \IPS\Theme::i()->getTemplate( 'dashboard' )->connectFailures( $failures, count($failures) );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Dashboard extension: Latest News
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 13 Aug 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
@@ -65,9 +65,6 @@ class _LatestNews
|
||||
*/
|
||||
protected function refreshNews()
|
||||
{
|
||||
\IPS\Data\Store::i()->ips_news = json_encode( array(
|
||||
'content' => \IPS\Http\Url::ips( 'news' )->request()->get()->decodeJson(),
|
||||
'time' => time()
|
||||
) );
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Dashboard extension: Current online admins
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 14 Jul 2014
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Dashboard extension: Online Users
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 23 Jul 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
@@ -48,23 +48,28 @@ class _OnlineUsers
|
||||
$chart->addHeader( \IPS\Member::loggedIn()->language()->get('chart_members'), "number" );
|
||||
|
||||
/* Add Rows */
|
||||
$online = \IPS\Db::i()->select( "COUNT(*) AS count, current_appcomponent",
|
||||
'core_sessions',
|
||||
array( 'running_time>?', \IPS\DateTime::create()->sub( new \DateInterval('PT15M') )->getTimestamp() ),
|
||||
NULL,
|
||||
NULL,
|
||||
'current_appcomponent'
|
||||
);
|
||||
$online = array();
|
||||
$seen = array();
|
||||
foreach( \IPS\Db::i()->select( "*", 'core_sessions', array( 'running_time>?', \IPS\DateTime::create()->sub( new \DateInterval('PT30M') )->getTimestamp() ), 'running_time DESC' ) as $row )
|
||||
{
|
||||
$key = ( $row['member_id'] ? $row['member_id'] : $row['id'] );
|
||||
|
||||
if ( ! isset( $seen[ $key ] ) )
|
||||
{
|
||||
$online[ $row['current_appcomponent'] ][ $key ] = $row['id'];
|
||||
$seen[ $key ] = true;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ( $online as $row )
|
||||
foreach ( $online as $app => $data )
|
||||
{
|
||||
/* Only show if the application is still installed and enabled */
|
||||
if( !\IPS\Application::appIsEnabled( $row['current_appcomponent'] ) )
|
||||
if( !\IPS\Application::appIsEnabled( $app ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$chart->addRow( array( \IPS\Member::loggedIn()->language()->addToStack( "__app_" . $row['current_appcomponent']), $row['count'] ) );
|
||||
$chart->addRow( array( \IPS\Member::loggedIn()->language()->addToStack( "__app_" . $app), count( $data ) ) );
|
||||
}
|
||||
|
||||
/* Output */
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Dashboard extension: Registrations
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 23 Jul 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
@@ -48,26 +48,49 @@ class _Registrations
|
||||
$chart->addHeader( \IPS\Member::loggedIn()->language()->addToStack('members'), 'number' );
|
||||
|
||||
$data = array();
|
||||
$date = \IPS\DateTime::create()->sub( new \DateInterval( 'P7D' ) );
|
||||
|
||||
/* We use midnight as a basis so we can include todays registrations */
|
||||
$date = new \IPS\DateTime( 'tomorrow', new \DateTimeZone( \IPS\Member::loggedIn()->timezone ) );
|
||||
|
||||
/* We need to clone $date here for use in the query later */
|
||||
$today = clone $date;
|
||||
|
||||
/* And we do this over a period of seven days - the query will also do this on the cloned object later. */
|
||||
$date->sub( new \DateInterval( 'P7D' ) );
|
||||
|
||||
while ( $date->getTimestamp() < time() )
|
||||
{
|
||||
$data[ $date->format( 'j n Y' ) ] = 0;
|
||||
$data[ $date->format( 'Y-n-j' ) ] = 0;
|
||||
$date->add( new \DateInterval( 'P1D' ) );
|
||||
}
|
||||
|
||||
|
||||
/* fetch only successful registered members ; if this needs to be changed, please review the other areas where we have the name<>? AND email<>? condition */
|
||||
$where = array( 'joined>? AND name<>? AND email<>?', $today->sub( new \DateInterval( 'P7D' ) )->getTimestamp(), '', '' );
|
||||
|
||||
/* Add Rows */
|
||||
foreach ( \IPS\Db::i()->select( "COUNT(*) AS count, DATE_FORMAT( FROM_UNIXTIME( joined ), '%e %c %Y' ) as joined_date", 'core_members', array( 'joined>? AND name<>? AND email<>?', \IPS\DateTime::create()->sub( new \DateInterval( 'P7D' ) )->getTimestamp(), '', '' ), 'joined_date DESC', NULL, 'joined_date' ) as $row )
|
||||
foreach( \IPS\Db::i()->select( 'joined', 'core_members', $where, 'joined DESC' ) AS $joined )
|
||||
{
|
||||
$data[$row['joined_date']] = $row['count'];
|
||||
$time = \IPS\DateTime::ts( $joined )->format( 'Y-n-j' );
|
||||
|
||||
/* Occasionally, timezone differences mean that we fall just over the beginning or end, which results in an undefined index. We can
|
||||
ignore any registrations for dates that haven't been initialized. */
|
||||
if( isset( $data[ $time ] ) )
|
||||
{
|
||||
$data[ $time ] += 1;
|
||||
}
|
||||
}
|
||||
|
||||
uksort( $data, function( $a, $b )
|
||||
{
|
||||
return strnatcmp( $a, $b );
|
||||
} );
|
||||
|
||||
/* Add to graph */
|
||||
foreach ( $data as $time => $d )
|
||||
{
|
||||
$datetime = new \IPS\DateTime;
|
||||
$exploded = explode( ' ', $time );
|
||||
$datetime->setDate( $exploded[2], $exploded[1], $exploded[0] );
|
||||
$exploded = explode( '-', $time );
|
||||
$datetime->setDate( $exploded[0], $exploded[1], $exploded[2] );
|
||||
|
||||
$chart->addRow( array( $datetime->format( 'j M Y' ), $d ) );
|
||||
}
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Editor Extension: Admin CP Settings, etc.
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 2 Aug 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
@@ -56,7 +56,7 @@ class _Admin
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Permission check for attachments
|
||||
*
|
||||
@@ -64,9 +64,10 @@ class _Admin
|
||||
* @param int|null $id1 Primary ID
|
||||
* @param int|null $id2 Secondary ID
|
||||
* @param string|null $id3 Arbitrary data
|
||||
* @param array $attachment The attachment data
|
||||
* @return bool
|
||||
*/
|
||||
public function attachmentPermissionCheck( $member, $id1, $id2, $id3 )
|
||||
public function attachmentPermissionCheck( $member, $id1, $id2, $id3, $attachment )
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Editor Extension: Announcements
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 08 Dec 2014
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
@@ -46,7 +46,7 @@ class _Announcement
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Permission check for attachments
|
||||
*
|
||||
@@ -54,9 +54,10 @@ class _Announcement
|
||||
* @param int|null $id1 Primary ID
|
||||
* @param int|null $id2 Secondary ID
|
||||
* @param string|null $id3 Arbitrary data
|
||||
* @param array $attachment The attachment data
|
||||
* @return bool
|
||||
*/
|
||||
public function attachmentPermissionCheck( $member, $id1, $id2, $id3 )
|
||||
public function attachmentPermissionCheck( $member, $id1, $id2, $id3, $attachment )
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Editor Extension: Contact Form
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 12 Nov 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Editor Extension: CustomField
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 25 Apr 2014
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
@@ -45,7 +45,7 @@ class _CustomField
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Permission check for attachments
|
||||
*
|
||||
@@ -53,9 +53,10 @@ class _CustomField
|
||||
* @param int|null $id1 Primary ID
|
||||
* @param int|null $id2 Secondary ID
|
||||
* @param string|null $id3 Arbitrary data
|
||||
* @param array $attachment The attachment data
|
||||
* @return bool
|
||||
*/
|
||||
public function attachmentPermissionCheck( $member, $id1, $id2, $id3 )
|
||||
public function attachmentPermissionCheck( $member, $id1, $id2, $id3, $attachment )
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Editor Extension: Status Reply
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 10 Feb 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
@@ -45,7 +45,7 @@ class _Members
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Permission check for attachments
|
||||
*
|
||||
@@ -53,9 +53,10 @@ class _Members
|
||||
* @param int|null $id1 Primary ID
|
||||
* @param int|null $id2 Secondary ID
|
||||
* @param string|null $id3 Arbitrary data
|
||||
* @param array $attachment The attachment data
|
||||
* @return bool
|
||||
*/
|
||||
public function attachmentPermissionCheck( $member, $id1, $id2, $id3 )
|
||||
public function attachmentPermissionCheck( $member, $id1, $id2, $id3, $attachment )
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Editor Extension: Messenger
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 05 Jul 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
@@ -45,16 +45,18 @@ class _Messaging
|
||||
{
|
||||
return (bool) \IPS\Member::loggedIn()->group['g_can_msg_attach'];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Permission check for attachments
|
||||
*
|
||||
* @param \IPS\Member $member The member
|
||||
* @param int|null $id1 Primary ID
|
||||
* @param int|null $id2 Secondary ID
|
||||
* @param string|null $id3 Arbitrary data
|
||||
* @param array $attachment The attachment data
|
||||
* @return bool
|
||||
*/
|
||||
public function attachmentPermissionCheck( $member, $id1, $id2, $id3 )
|
||||
public function attachmentPermissionCheck( $member, $id1, $id2, $id3, $attachment )
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Editor Extension: Mod CP
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 17 Jul 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
@@ -45,7 +45,7 @@ class _Modcp
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Permission check for attachments
|
||||
*
|
||||
@@ -53,9 +53,10 @@ class _Modcp
|
||||
* @param int|null $id1 Primary ID
|
||||
* @param int|null $id2 Secondary ID
|
||||
* @param string|null $id3 Arbitrary data
|
||||
* @param array $attachment The attachment data
|
||||
* @return bool
|
||||
*/
|
||||
public function attachmentPermissionCheck( $member, $id1, $id2, $id3 )
|
||||
public function attachmentPermissionCheck( $member, $id1, $id2, $id3, $attachment )
|
||||
{
|
||||
if ( $member->modPermission( 'mod_see_warn' ) )
|
||||
{
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Editor Extension: Reports
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 15 Jul 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
@@ -45,7 +45,7 @@ class _Reports
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Permission check for attachments
|
||||
*
|
||||
@@ -53,9 +53,10 @@ class _Reports
|
||||
* @param int|null $id1 Primary ID
|
||||
* @param int|null $id2 Secondary ID
|
||||
* @param string|null $id3 Arbitrary data
|
||||
* @param array $attachment The attachment data
|
||||
* @return bool
|
||||
*/
|
||||
public function attachmentPermissionCheck( $member, $id1, $id2, $id3 )
|
||||
public function attachmentPermissionCheck( $member, $id1, $id2, $id3, $attachment )
|
||||
{
|
||||
return $member->modPermission( 'can_view_reports' );
|
||||
}
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Editor Extension: Share Links
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 17 Jul 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
@@ -43,9 +43,9 @@ class _ShareLinks
|
||||
*/
|
||||
public function canAttach( $member, $field )
|
||||
{
|
||||
return NULL;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Permission check for attachments
|
||||
*
|
||||
@@ -53,9 +53,10 @@ class _ShareLinks
|
||||
* @param int|null $id1 Primary ID
|
||||
* @param int|null $id2 Secondary ID
|
||||
* @param string|null $id3 Arbitrary data
|
||||
* @param array $attachment The attachment data
|
||||
* @return bool
|
||||
*/
|
||||
public function attachmentPermissionCheck( $member, $id1, $id2, $id3 )
|
||||
public function attachmentPermissionCheck( $member, $id1, $id2, $id3, $attachment )
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Editor Extension: Signatures
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 07 Jun 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
@@ -45,7 +45,7 @@ class _Signatures
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Permission check for attachments
|
||||
*
|
||||
@@ -53,9 +53,10 @@ class _Signatures
|
||||
* @param int|null $id1 Primary ID
|
||||
* @param int|null $id2 Secondary ID
|
||||
* @param string|null $id3 Arbitrary data
|
||||
* @param array $attachment The attachment data
|
||||
* @return bool
|
||||
*/
|
||||
public function attachmentPermissionCheck( $member, $id1, $id2, $id3 )
|
||||
public function attachmentPermissionCheck( $member, $id1, $id2, $id3, $attachment )
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Editor Extension: Staff directory
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 18 Sep 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
@@ -45,7 +45,7 @@ class _Staffdirectory
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Permission check for attachments
|
||||
*
|
||||
@@ -53,8 +53,10 @@ class _Staffdirectory
|
||||
* @param int|null $id1 Primary ID
|
||||
* @param int|null $id2 Secondary ID
|
||||
* @param string|null $id3 Arbitrary data
|
||||
* @param array $attachment The attachment data
|
||||
* @return bool
|
||||
*/
|
||||
public function attachmentPermissionCheck( $member, $id1, $id2, $id3 )
|
||||
public function attachmentPermissionCheck( $member, $id1, $id2, $id3, $attachment )
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
@@ -70,7 +72,7 @@ class _Staffdirectory
|
||||
*/
|
||||
public function attachmentLookup( $id1, $id2, $id3 )
|
||||
{
|
||||
return \IPS\Http\Url::internal( "app=core&module=members&controller=directory", 'front', 'staffdirectory' );
|
||||
return \IPS\Http\Url::internal( "app=core&module=staffdirectory&controller=directory", 'front', 'staffdirectory' );
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief Editor Media: Attachment
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since {date}
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
@@ -77,8 +77,8 @@ class _Attachment
|
||||
{
|
||||
$url = \IPS\Settings::i()->base_url . "applications/core/interface/file/attachment.php?id={$row['attach_id']}";
|
||||
$obj = \IPS\File::get( 'core_Attachment', $row['attach_location'] );
|
||||
$obj->contextInfo = static::getLocations( $row['attach_id'] );
|
||||
|
||||
$obj->originalFilename = $row['attach_file'];
|
||||
|
||||
if( $row['attach_thumb_location'] )
|
||||
{
|
||||
$obj->attachmentThumbnailUrl = \IPS\File::get( 'core_Attachment', $row['attach_thumb_location'] )->url;
|
||||
@@ -128,6 +128,7 @@ class _Attachment
|
||||
}
|
||||
}
|
||||
catch ( \OutOfRangeException $e ) { }
|
||||
catch ( \UnexpectedValueException $e ) { }
|
||||
}
|
||||
|
||||
if ( isset( static::$loadedExtensions[ $map['location_key'] ] ) )
|
||||
@@ -135,9 +136,19 @@ class _Attachment
|
||||
try
|
||||
{
|
||||
$url = static::$loadedExtensions[ $map['location_key'] ]->attachmentLookup( $map['id1'], $map['id2'], $map['id3'] );
|
||||
|
||||
/* Test url() method to prevent BadMethodCallException from the template below - an attachment may be
|
||||
located within a Node class that doesn't support urls, such as CMS Blocks. */
|
||||
|
||||
if( $url instanceof \IPS\Content or $url instanceof \IPS\Node\Model )
|
||||
{
|
||||
$url->url();
|
||||
}
|
||||
|
||||
static::$locations[ $attachId ][] = $url;
|
||||
}
|
||||
catch ( \LogicException $e ) { }
|
||||
catch ( \BadMethodCallException $e ){ }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief File Storage Extension: Advertisements
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 23 Sep 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
/**
|
||||
* @brief File Storage Extension: Attachment
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @package IPS Community Suite
|
||||
* @since 23 Sep 2013
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
|
||||
Loaded 100 of 2674 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user