Version 3.3.4

This commit is contained in:
Neo committed 2025-12-19 00:35:52 -08:00
1 parent 78706903a2
commit fb6b5baabc
1567 files changed
+135664 -108820

No files matched your search

Binary file not shown.
+2 -2
View File
@@ -3,11 +3,11 @@
* @file api_core.php Core functions for the API classes
*~TERABYTE_DOC_READY~
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
* $License: This is NULLED!
* $License: http://www.invisionpower.com/company/standards.php#license$
* $Author: ips_terabyte $
* @since -
* $LastChangedDate: 2011-03-18 17:34:15 -0400 (Fri, 18 Mar 2011) $
* @version v3.2.3
* @version v3.3.4
* $Revision: 8129 $
*/
+5 -5
View File
@@ -3,12 +3,12 @@
* @file api_topic_view.php Forums topic view API
*~TERABYTE_DOC_READY~
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
* $License: This is NULLED!
* $Author: ips_terabyte $
* $License: http://www.invisionpower.com/company/standards.php#license$
* $Author: mark $
* @since 2.2.0
* $LastChangedDate: 2011-03-18 17:34:15 -0400 (Fri, 18 Mar 2011) $
* @version v3.2.3
* $Revision: 8129 $
* $LastChangedDate: 2011-12-20 11:14:05 -0500 (Tue, 20 Dec 2011) $
* @version v3.3.4
* $Revision: 10035 $
*/
if ( ! class_exists( 'apiCore' ) )
@@ -3,11 +3,11 @@
* @file group_form.php Core group editing form
*~TERABYTE_DOC_READY~
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
* $License: This is NULLED!
* $License: http://www.invisionpower.com/company/standards.php#license$
* $Author: bfarber $
* @since -
* $LastChangedDate: 2011-07-20 20:19:22 -0400 (Wed, 20 Jul 2011) $
* @version v3.2.3
* @version v3.3.4
* $Revision: 9296 $
*/
@@ -3,19 +3,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Member property updater (AJAX)
* Last Updated: $Date: 2010-12-17 07:40:13 -0500 (Fri, 17 Dec 2010) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: ips_terabyte $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since 1st march 2002
* @version $Revision: 7442 $
* @version $Revision: 10914 $
*
*/
@@ -4,10 +4,10 @@
*
* @author $author$
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Downloads
* @link http://hatynka.in
* @version $Rev: 9229 $
* @link http://www.invisionpower.com
* @version $Rev: 10914 $
*/
if ( ! defined( 'IN_IPB' ) )
@@ -45,16 +45,6 @@ class comments_core_reports extends classes_comments_renderer
'parent_seo_title' => 'seoname',
'parent_date' => 'date_created' );
/**
* Parent SEO template
*
* @return string
*/
public function seoTemplate()
{
return '';
}
/**
* Who am I?
*
@@ -139,14 +129,21 @@ class comments_core_reports extends classes_comments_renderer
* Pre save
* Accepts an array of GENERIC data and allows manipulation before it's added to DB
*
* @param string Type of save (edit/add)
* @param array Array of GENERIC data (comment_xxxx)
* @param int Comment id (if available)
* @param int Parent id
* @return array Array of GENERIC data
* @param string $type Type of save (edit/add)
* @param array $array Array of GENERIC data (comment_xxxx)
* @param integer $commentId Comment ID (only for edits)
* @param integer $parentId Parent content ID
* @return @e array Array of GENERIC data
*/
public function preSave( $type, array $array, $commentId=0, $parentId=0 )
{
/**
* Always approve comments in report center
*
* @link http://community.invisionpower.com/tracker/issue-36632-report-comments-cant-be-approved/
*/
$array['comment_approved'] = 1;
return $array;
}
@@ -163,10 +160,7 @@ class comments_core_reports extends classes_comments_renderer
public function postSave( $type, array $array, $commentId=0, $parentId=0 )
{
$_cnt = $this->DB->buildAndFetch( array( 'select' => 'count(*) as total', 'from' => 'rc_comments', 'where' => 'rid=' . $parentId ) );
$this->DB->update( 'rc_reports_index', array( 'num_comments' => $_cnt['total'], 'date_updated' => time(), 'updated_by' => $array['comment_author_id'] ), "id=" . $parentId );
//$this->DB->setDataType( 'num_comments', 'int' );
//$this->DB->update( 'rc_reports_index', array( 'num_comments' => 'plus:1', 'date_updated' => time(), 'updated_by' => $array['comment_author_id'] ), "id=" . $parentId );
$this->DB->update( 'rc_reports_index', array( 'num_comments' => intval($_cnt['total']), 'date_updated' => IPS_UNIX_TIME_NOW, 'updated_by' => $array['comment_author_id'] ), "id=" . $parentId );
//-----------------------------------------
// Notify other moderators
@@ -235,22 +229,7 @@ class comments_core_reports extends classes_comments_renderer
}
$_cnt = $this->DB->buildAndFetch( array( 'select' => 'count(*) as total', 'from' => 'rc_comments', 'where' => 'rid=' . $parentId ) );
$this->DB->update( 'rc_reports_index', array( 'num_comments' => $_cnt['total'], 'date_updated' => $_date_updated, 'updated_by' => $_updated_by ), "id=" . $parentId );
//$this->DB->setDataType( 'num_comments', 'int' );
//$this->DB->update( 'rc_reports_index', array( 'num_comments' => 'minus:' . count($commentIds) ), "id=" . $parentId );
}
/**
* Toggles visibility
*
* @param string on/off
* @param array Array of comment IDs to be deleted
* @param int Parent ID
* @return void
*/
public function postVisibility( $toggle, $commentIds, $parentId )
{
$this->DB->update( 'rc_reports_index', array( 'num_comments' => intval($_cnt['total']), 'date_updated' => $_date_updated, 'updated_by' => $_updated_by ), "id=" . $parentId );
}
/**
@@ -3,19 +3,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Core Sessions
* Last Updated: $Date: 2011-09-15 17:04:35 -0400 (Thu, 15 Sep 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since 20th February 2002
* @version $Rev: 9495 $
* @version $Rev: 10914 $
*
*/
@@ -28,17 +28,17 @@ if ( ! defined( 'IN_IPB' ) )
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Item Marking
* Last Updated: $Date: 2011-09-15 17:04:35 -0400 (Thu, 15 Sep 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Downloads
* @link http://hatynka.in
* @version $Rev: 9495 $
* @link http://www.invisionpower.com
* @version $Rev: 10914 $
*
*/
@@ -2,19 +2,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Core registered caches, redirect resets and bitwise settings
* Last Updated: $Date: 2011-03-15 18:03:09 -0400 (Tue, 15 Mar 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since 20th February 2002
* @version $Rev: 8085 $
* @version $Rev: 10914 $
*
*/
@@ -2,17 +2,17 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Dashboard Notifications
* Last Updated: $Date
* Last Updated: 11.07.2012
*
* @author $Author: ips_terabyte $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @version $Rev: 9551 $
* @link http://www.invisionpower.com
* @version $Rev: 11026 $
*/
if ( ! defined( 'IN_IPB' ) )
@@ -23,6 +23,7 @@ if ( ! defined( 'IN_IPB' ) )
/**
* Main loader class
* DO NOT MODIFY!
*/
class dashboardNotifications__core
{
@@ -48,110 +49,13 @@ class dashboardNotifications__core
public function get()
{
/* INIT */
/* INIT! */
$entries = array();
if( ! $this->settings['ipb_reg_number'] )
{
$entries[] = array( $this->lang->words['lc_title_nokey'], sprintf( $this->lang->words['lc_msg_nokey'], "{$this->settings['base_url']}module=tools&amp;section=licensekey" ) );
}
else
{
/* We need a classFileManagement object */
$classToLoad = IPSLib::loadLibrary( IPS_KERNEL_PATH . 'classFileManagement.php', 'classFileManagement' );
$classFileManagement = new $classToLoad();
/* Try to automatically update if expired */
$licenseData = $this->cache->getCache( 'licenseData' );
if( ! $licenseData || ( $licenseData['key']['_expires'] != 9999999999 AND $licenseData['key']['_expires'] < IPS_UNIX_TIME_NOW ) )
{
/* Query the api */
$response = $classFileManagement->getFileContents( "http://myipb.in/license.php?lk={$this->settings['ipb_reg_number']}&url={$this->settings['board_url']}&flush=1" );
/* Get License Data */
$licenseData = json_decode( $response, true );
/* Copyright Removal? */
if ( $licenseData['cr'] )
{
IPSLib::updateSettings( array( 'ipb_copy_number' => $licenseData['cr'], 'ips_cp_purchase' => 1 ) );
}
elseif ( $this->settings['ips_cp_purchase'] )
{
IPSLib::updateSettings( array( 'ips_cp_purchase' => 0 ) );
}
/* Save to cache */
$licenseData['_cached_date'] = time();
$licenseData['key']['_expires'] = $licenseData['key']['_expires'] ? $licenseData['key']['_expires'] : 9999999999;
$licenseData['key']['expires'] = $licenseData['key']['expires'] ? $licenseData['key']['expires'] : 9999999999;
$this->cache->setCache( 'licenseData', $licenseData, array( 'array' => 1 ) );
}
/* Query the api */
$response = $classFileManagement->getFileContents("http://myipb.in/license.php?api=checkService&service=ipb&lk={$this->settings['ipb_reg_number']}&domain={$this->settings['board_url']}" );
/* Get License Data */
$response = json_decode( $response, true );
/* Is the Spam Service Working? */
if ( $this->settings['spam_service_enabled'] )
{
//$lastLog = $this->DB->buildAndFetch( array( 'select' => 'log_code', 'from' => 'spam_service_log', 'order' => 'id DESC', 'limit' => 1 ) ); // Order on ID since log_date has no index
//if ( $lastLog['log_code'] === '0' )
/* Get last 5 logs, and if all 5 are errors, show message */
$_errors = 0;
$_entries = 0;
$_lastError = '';
$this->DB->build( array( 'select' => 'log_code, log_msg', 'from' => 'spam_service_log', 'order' => 'id DESC', 'limit' => 5 ) );
$this->DB->execute();
while( $_r = $this->DB->fetch() )
{
$_entries++;
if( $_r['log_code'] === '0' )
{
$_errors++;
if( !$_lastError )
{
$_lastError = $_r['log_msg'];
}
}
}
if( $_entries > 0 && $_errors == $_entries )
{
$entries[] = array( $this->lang->words['spam_service_error'], sprintf( $this->lang->words['spam_service_error_msg'], $_lastError ) );
}
}
/* If it's disabled, are we entitiled to it? */
else
{
$licenseData = $this->cache->getCache( 'licenseData' );
if ( is_array( $licenseData['ipbMain'] ) && count( $licenseData['ipbMain'] ) )
{
foreach ( $licenseData['ipbMain'] as $data )
{
if ( $data['name'] == 'Spam Monitoring Service' && $data['status'] == 'Ok' )
{
$entries[] = array( $this->lang->words['spam_service_disabled'], $this->lang->words['spam_service_disabled_msg'] );
break;
}
}
}
}
}
/* FURL cache OOD? */
if ( is_file( IPS_CACHE_PATH . 'cache/furlCache.php' ) )
@@ -222,8 +126,12 @@ class dashboardNotifications__core
$entries[] = array( $this->lang->words['cp_unfinishedupgrade'], $this->lang->words['cp_upgrade_warning'] );
}
/* PHP Version Check */
if( PHP_VERSION < '5.1.0' )
/**
* PHP Version Check
*
* @todo Remove this for 4.0? Installer/upgrader already do check for this anyway...
*/
if( PHP_VERSION < '5.2.0' )
{
$entries[] = array( sprintf( $this->lang->words['cp_yourphpversion'], PHP_VERSION ), $this->lang->words['cp_php_warning'] );
}
@@ -1,25 +0,0 @@
<?php
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* Define data hook locations (core)
* Last Updated: $Date: 2011-05-18 04:49:10 -0400 (Wed, 18 May 2011) $
* </pre>
*
* @author $Author: ips_terabyte $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @version $Rev: 8812 $
*/
$dataHookLocations = array(
/* POSTING LIBRARY DATA LOCATIONS */
array( 'warnLogs', 'Insert Warn Log' ),
);
@@ -3,18 +3,18 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* BBCode Management : Determines if bbcode can be used in this section
* Last Updated: $LastChangedDate: 2011-04-20 18:01:37 -0400 (Wed, 20 Apr 2011) $
* Last Updated: $LastChangedDate: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @version $Rev: 8419 $
* @link http://www.invisionpower.com
* @version $Rev: 10914 $
*
*/
@@ -1,70 +0,0 @@
<?php
/**
* <pre>
* Invision Power Services
* IP.Board v3.1.2
* Sets up SEO templates
* Last Updated: $Date: 2010-07-01 18:13:46 -0400 (Thu, 01 Jul 2010) $
* </pre>
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @since 20th February 2002
* @version $Rev: 6596 $
*
*/
if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files.";
exit();
}
/**
* SEO templates
*
* 'allowRedirect' is a flag to tell IP.Board whether to check the incoming link and if not formatted correctly, redirect the correct one
*
* OUT FORMAT REGEX:
* First array element is a regex to run to see if we've a match for the URL
* The second array element is the template to use the results of the parenthesis capture
*
* Special variable #{__title__} is replaced with the $title data passed to output->formatUrl( $url, $title)
*
* IMPORTANT: Remember that when these regex are used, the output has not been fully parsed so you will get:
* showuser={$data['member_id']} NOT showuser=1 so do not try and match numerics only!
*
* IN FORMAT REGEX
*
* This allows the registry to piece back together a URL based on the template regex
* So, for example: "/user/(\d+?)/", 'matches' => array( array( 'showuser' => '$1' ) )tells IP.Board to populate 'showuser' with the result
* of the parenthesis capture #1
*/
$_SEOTEMPLATES = array(
'section=register' => array( 'app' => 'core',
'allowRedirect' => 0,
'out' => array( '#app=core(&amp;|&)module=global(&amp;|&)section=register(&amp;|&|$)#i', 'register/$3' ),
'in' => array( 'regex' => "#/register(/|$|\?)#i",
'matches' => array( array( 'app', 'core' ), array( 'module', 'global' ), array( 'section', 'register' ) ) ) ),
'section=rss' => array( 'app' => 'core',
'allowRedirect' => 0,
'out' => array( '#app=core(&amp;|&)module=global(&amp;|&)section=rss(&amp;|&)type=(\w+?)$#i', 'rss/$4/' ),
'in' => array( 'regex' => "#/rss/(\w+?)/$#i",
'matches' => array( array( 'app', 'core' ), array( 'module', 'global' ), array( 'section', 'rss' ), array( 'type', '$1' ) ) ) ),
'section=rss2' => array( 'app' => 'core',
'allowRedirect' => 0,
'out' => array( '#app=core(&amp;|&)module=global(&amp;|&)section=rss(&amp;|&)type=(\w+?)(&amp;|&)id=(\w+?)$#i', 'rss/$4/$6-#{__title__}/' ),
'in' => array( 'regex' => "#/rss/(\w+?)/(\w+?)-#i",
'matches' => array( array( 'app', 'core' ), array( 'module', 'global' ), array( 'section', 'rss' ), array( 'type', '$1' ), array( 'id', '$2' ) ) ) ),
# Changed section=rss2 id matching to use \w for more flexibility
);
@@ -2,19 +2,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Sets up SEO templates
* Last Updated: $Date: 2011-09-16 07:16:26 -0400 (Fri, 16 Sep 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: mmecham $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since 20th February 2002
* @version $Rev: 9496 $
* @version $Rev: 10914 $
*
*/
@@ -51,11 +51,29 @@ $_SEOTEMPLATES = array(
'out' => array( '#app=core(&amp;|&)module=global(&amp;|&)section=register(&amp;|&|$)#i', 'register/$3' ),
'in' => array( 'regex' => "#/register(/|$|\?)#i",
'matches' => array( array( 'app', 'core' ), array( 'module', 'global' ), array( 'section', 'register' ) ) ) ),
'tags' => array( 'app' => 'core',
'allowRedirect' => 0,
'out' => array( '#app=core(&amp;|&)module=search(&amp;|&)do=search(&amp;|&)search_tags=(\S+?)(&amp;|&)search_app=(\S+?)(&amp;|&|$)#i', 'tags/$6/$4/$7' ),
'in' => array( 'regex' => "#/tags/(\S+?)/(\S+?)/#i",
'matches' => array( array( 'app', 'core' ), array( 'module', 'search' ), array( 'do', 'search' ), array( 'search_tags', '$2' ), array( 'search_app', '$1' ) ) ) ),
'privacy' => array( 'app' => 'core',
'allowRedirect' => 0,
'out' => array( '#app=core(&amp;|&)module=global(&amp;|&)section=privacy(&amp;|&|$)#i', 'privacypolicy/$4/' ),
'in' => array( 'regex' => "#/privacypolicy/#i",
'matches' => array( array( 'app', 'core' ), array( 'module', 'global' ), array( 'section', 'privacy' ) ) ) ),
'likeunsubscribe' => array( 'app' => 'core',
'allowRedirect' => 0,
'out' => array( '#app=core(&amp;|&)module=global(&amp;|&)section=like(&amp;|&)do=unsubscribe(&amp;|&)key=(\S+?)(&amp;|&|$)#i', 'unsubscribe/$5/' ),
'in' => array( 'regex' => "#/unsubscribe/(\S+?)/$#i",
'matches' => array( array( 'app', 'core' ), array( 'module', 'global' ), array( 'section', 'like' ), array( 'do', 'unsubscribe' ), array( 'key', '$1' ) ) ) ),
'findcomment' => array( 'app' => 'core',
'allowRedirect' => 0,
'out' => array( '#app=core(&amp;|&)module=global(&amp;|&)section=comments(&amp;|&)do=findComment(&amp;|&)fromApp=(\S+?)(&amp;|&)parentId=(\d+?)(&amp;|&)commentId=(\d+?)(&amp;|&|$)#i', 'findComment/$5/$7-$9' ),
'in' => array( 'regex' => "#/findComment/(\S+?-\S+?)/(\d+?)-(\d+?)$#i",
'matches' => array( array( 'app', 'core' ), array( 'module', 'global' ), array( 'section', 'comments' ), array( 'do', 'findComment' ), array( 'fromApp', '$1' ), array( 'parentId', '$2' ), array( 'commentId', '$3' ) ) ) ),
'section=rss' => array( 'app' => 'core',
'allowRedirect' => 0,
'out' => array( '#app=core(&amp;|&)module=global(&amp;|&)section=rss(&amp;|&)type=(\w+?)$#i', 'rss/$4/' ),
@@ -0,0 +1,69 @@
<?php
/**
* @file default.php Core like class (Core application)
*~TERABYTE_DOC_READY~
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
* $License: http://www.invisionpower.com/company/standards.php#license$
* $Author: mark $
* $LastChangedDate: 2011-12-08 16:43:34 +0000 (Thu, 08 Dec 2011) $
* @version v3.3.4
* $Revision: 9971 $
*/
if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files.";
exit();
}
/**
*
* @class like_core_default_composite
* @brief Core default like class (core application)
*/
class like_core_composite extends classes_like_composite
{
/**
* Registry Object Shortcuts
*
* @var $registry
* @var $DB
* @var $settings
* @var $request
* @var $lang
* @var $member
* @var $memberData
* @var $cache
* @var $caches
*/
protected $registry;
protected $DB;
protected $settings;
protected $request;
protected $lang;
protected $member;
protected $memberData;
protected $cache;
protected $caches;
/**
* Constructor
*
* @return @e void
*/
public function __construct()
{
/* Make registry objects */
$this->registry = ipsRegistry::instance();
$this->DB = $this->registry->DB();
$this->settings =& $this->registry->fetchSettings();
$this->request =& $this->registry->fetchRequest();
$this->lang = $this->registry->getClass('class_localization');
$this->member = $this->registry->member();
$this->memberData =& $this->registry->member()->fetchMemberData();
$this->cache = $this->registry->cache();
$this->caches =& $this->registry->cache()->fetchCaches();
}
}
@@ -3,11 +3,11 @@
* @file generate.php Navigation plugin: attachments
*~TERABYTE_DOC_READY~
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
* $License: This is NULLED!
* $License: http://www.invisionpower.com/company/standards.php#license$
* $Author: bfarber $
* @since 3/8/2011
* $LastChangedDate: 2011-05-12 22:28:10 -0400 (Thu, 12 May 2011) $
* @version v3.2.3
* @version v3.3.4
* $Revision: 8754 $
*/
@@ -3,19 +3,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Define the core notification types
* Last Updated: $Date: 2011-03-11 06:59:39 -0500 (Fri, 11 Mar 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: ips_terabyte $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since 20th February 2002
* @version $Rev: 8031 $
* @version $Rev: 10914 $
*
*/
@@ -2,19 +2,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Report Center :: Default plugin
* Last Updated: $LastChangedDate: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $
* Last Updated: $LastChangedDate: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: ips_terabyte $
* @author $Author: bfarber $
* @author Based on original "Report Center" by Luke Scott
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @version $Rev: 8644 $
* @link http://www.invisionpower.com
* @version $Rev: 10914 $
*/
if ( ! defined( 'IN_IPB' ) )
@@ -2,19 +2,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* RSS output plugin :: report center
* Last Updated: $Date: 2011-03-10 16:00:38 -0500 (Thu, 10 Mar 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since 6/24/2008
* @version $Revision: 8021 $
* @version $Revision: 10914 $
*/
if ( ! defined( 'IN_IPB' ) )
@@ -3,18 +3,18 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Config file
* Last Updated: $Date: 2011-04-13 23:15:13 -0400 (Wed, 13 Apr 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $author$
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Forums
* @link http://hatynka.in
* @version $Rev: 8333 $
* @link http://www.invisionpower.com
* @version $Rev: 10914 $
*/
if ( ! defined( 'IN_IPB' ) )
@@ -2,18 +2,18 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Basic Forum Search
* Last Updated: $Date: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: ips_terabyte $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Forums
* @link http://hatynka.in
* @version $Rev: 8644 $
* @link http://www.invisionpower.com
* @version $Rev: 10914 $
*/
if ( ! defined( 'IN_IPB' ) )
@@ -3,18 +3,18 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Returns HTML for the form (optional class, not required)
* Last Updated: $Date: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $author$
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Forums
* @link http://hatynka.in
* @version $Rev: 8644 $
* @link http://www.invisionpower.com
* @version $Rev: 10914 $
*/
if ( ! defined( 'IN_IPB' ) )
@@ -3,18 +3,18 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Formats forum search results
* Last Updated: $Date: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $author$
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Forums
* @link http://hatynka.in
* @version $Rev: 8644 $
* @link http://www.invisionpower.com
* @version $Rev: 10914 $
*/
if ( ! defined( 'IN_IPB' ) )
@@ -2,11 +2,11 @@
/**
* @file plugin_attachments.php Shared media plugin: attachments
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
* $License: This is NULLED!
* $License: http://www.invisionpower.com/company/standards.php#license$
* $Author: rtissier $
* @since 3/8/2011
* $LastChangedDate: 2011-03-16 19:10:59 -0400 (Wed, 16 Mar 2011) $
* @version v3.2.3
* @version v3.3.4
* $Revision: 8108 $
*/
@@ -3,18 +3,18 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Sphinx template file
* Last Updated: $Date: 2011-08-31 20:57:38 -0400 (Wed, 31 Aug 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Forums
* @link http://hatynka.in
* @version $Rev: 9438 $
* @link http://www.invisionpower.com
* @version $Rev: 10914 $
* @since 3.0.0
*
*/
@@ -32,14 +32,14 @@ $appSphinxTemplate = <<<EOF
source <!--SPHINX_CONF_PREFIX-->core_tags_search_main : <!--SPHINX_CONF_PREFIX-->ipb_source_config
{
# Set our forum PID counter
<!--SPHINX_DB_SET_NAMES-->
sql_query_pre = REPLACE INTO <!--SPHINX_DB_PREFIX-->cache_store VALUES( 'sphinx_core_tags_counter', (SELECT max(tag_id) FROM <!--SPHINX_DB_PREFIX-->core_tags), 0, UNIX_TIMESTAMP(), 0 )
# Query posts for the main source
sql_query = SELECT t.tag_id, t.tag_id as search_id, t.tag_added, t.tag_member_id, t.tag_meta_id, t.tag_meta_parent_id, t.tag_text, t.tag_meta_app, t.tag_meta_area, \
p.tag_perm_text, p.tag_perm_visible \
sql_query = SELECT t.tag_id, t.tag_id as search_id, t.tag_added, t.tag_member_id, t.tag_meta_id, t.tag_meta_parent_id, t.tag_text, t.tag_meta_app, REPLACE( t.tag_meta_area, '-', '_' ) as tag_meta_area, \
CONCAT( ',', p.tag_perm_text, ',') as tag_perm_text ,p.tag_perm_visible \
FROM <!--SPHINX_DB_PREFIX-->core_tags t \
LEFT JOIN <!--SPHINX_DB_PREFIX-->core_tags_perms p ON ( t.tag_aai_lookup=p.tag_perm_aai_lookup ) \
WHERE t.tag_id <= ( SELECT cs_value FROM <!--SPHINX_DB_PREFIX-->cache_store WHERE cs_key='sphinx_core_tags_counter' )
LEFT JOIN <!--SPHINX_DB_PREFIX-->core_tags_perms p ON ( t.tag_aai_lookup=p.tag_perm_aai_lookup )
# Fields
sql_attr_uint = search_id
@@ -54,11 +54,12 @@ source <!--SPHINX_CONF_PREFIX-->core_tags_search_main : <!--SPHINX_CONF_PREFIX--
source <!--SPHINX_CONF_PREFIX-->core_tags_search_delta : <!--SPHINX_CONF_PREFIX-->core_tags_search_main
{
# Override the base sql_query_pre
<!--SPHINX_DB_SET_NAMES-->
sql_query_pre =
# Query posts for the main source
sql_query = SELECT t.tag_id, t.tag_id as search_id, t.tag_added, t.tag_member_id, t.tag_meta_id, t.tag_meta_parent_id, t.tag_text, t.tag_meta_app, t.tag_meta_area, \
p.tag_perm_text, p.tag_perm_visible \
sql_query = SELECT t.tag_id, t.tag_id as search_id, t.tag_added, t.tag_member_id, t.tag_meta_id, t.tag_meta_parent_id, t.tag_text, t.tag_meta_app, REPLACE( t.tag_meta_area, '-', '_' ) as tag_meta_area, \
CONCAT( ',', p.tag_perm_text, ',') as tag_perm_text ,p.tag_perm_visible \
FROM <!--SPHINX_DB_PREFIX-->core_tags t \
LEFT JOIN <!--SPHINX_DB_PREFIX-->core_tags_perms p ON ( t.tag_aai_lookup=p.tag_perm_aai_lookup ) \
WHERE t.tag_id > ( SELECT cs_value FROM <!--SPHINX_DB_PREFIX-->cache_store WHERE cs_key='sphinx_core_tags_counter' )
@@ -73,7 +74,7 @@ index <!--SPHINX_CONF_PREFIX-->core_tags_search_main
mlock = 0
morphology = none
min_word_len = 2
charset_type = utf-8
charset_type = sbcs
html_strip = 0
#infix_fields = tag_text
#min_infix_len = 3
@@ -3,19 +3,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Core user control panel plugin
* Last Updated: $Date: 2011-10-10 16:21:29 -0400 (Mon, 10 Oct 2011) $
* Last Updated: $Date: 2012-06-13 14:36:10 -0400 (Wed, 13 Jun 2012) $
* </pre>
*
* @author $Author: bfarber $
* @author $Author: AndyMillne $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since 20th February 2002
* @version $Rev: 9590 $
* @version $Rev: 10917 $
*
*/
@@ -34,7 +34,7 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
*
* @var string
*/
public $tab_name = "Настройки";
public $tab_name = "Settings";
/**
* Default area code
@@ -137,7 +137,7 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
'area' => 'email'
);
if ( $this->settings['auth_allow_dnames'] == 1 AND $this->memberData['g_dname_changes'] > 0 )
if ( $this->settings['auth_allow_dnames'] == 1 AND $this->memberData['g_dname_changes'] != 0 )
{
$array[] = array( 'url' => 'area=displayname',
'title' => ipsRegistry::instance()->getClass('class_localization')->words['ucp_change_name'],
@@ -181,15 +181,6 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
);
}
if ( IPSLib::vkontakte_enabled() === TRUE )
{
$array[] = array( 'url' => 'area=vkontakte',
'title' => ipsRegistry::instance()->getClass('class_localization')->words['m_vkontakte'],
'active' => $this->request['tab'] == 'core' && $this->request['area'] == 'vkontakte' ? 1 : 0,
'area' => 'vkontakte'
);
}
if ( $this->memberData['g_attach_max'] != -1 )
{
$array[] = array(
@@ -257,9 +248,6 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
case 'facebookRemove':
$html = $this->customEvent_facebookRemove();
break;
case 'vkontakteRemove':
$html = $this->customEvent_vkontakteRemove();
break;
case 'twitterRemove':
$html = $this->customEvent_twitterRemove();
break;
@@ -615,39 +603,6 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
$this->registry->getClass('output')->silentRedirect( $this->settings['base_url']."app=core&module=global&section=login&do=logout&k=" . $this->member->form_hash );
}
/**
* Custom Event: Remove facebook link
*
* @return @e void
*/
public function customEvent_vkontakteRemove()
{
//-----------------------------------------
// Check secure hash...
//-----------------------------------------
if ( $this->request['secure_key'] != $this->member->form_hash )
{
$this->registry->output->showError( 'authorization_error', 100, true, null, 403 );
}
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/vkontakte/connect.php', 'vkontakte_connect' );
$vkontakte = new $classToLoad( $this->registry );
//-----------------------------------------
// Okay...
//-----------------------------------------
if ( $this->memberData['vk_uid'] )
{
/* Remove the link */
IPSMember::save( $this->memberData['member_id'], array( 'core' => array( 'vk_uid' => 0, 'vk_token' => '' ) ) );
}
/* Log the user out */
$this->registry->getClass('output')->silentRedirect( $this->settings['base_url']."app=core&module=global&section=login&do=logout&k=" . $this->member->form_hash );
}
/**
* Custom Event: Create facebook link
*
@@ -884,9 +839,6 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
case 'twitter':
return $this->formTwitter();
break;
case 'vkontakte':
return $this->formVkontakte();
break;
case 'customize':
return $this->formCustomize();
break;
@@ -950,64 +902,6 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
return $this->registry->getClass('output')->getTemplate('ucp')->membersProfileCustomize( $options, $input, $inlineMsg );
}
/**
* Show the vkontakte form
*
* @author Matt Mecham
* @param string Any inline message to show
* @return string Processed HTML
*/
public function formVkontakte( $inlineMsg='' )
{
//-----------------------------------------
// INIT
//-----------------------------------------
if( !IPSLib::vkontakte_enabled() )
{
$this->registry->getClass('output')->showError( 'twitter_disabled', 1005.1 );
}
//-----------------------------------------
// Twitter user logged in?
//-----------------------------------------
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/vkontakte/connect.php', 'vkontakte_connect' );
$vkontakte = new $classToLoad( $this->registry, $this->memberData['vk_token'], $this->memberData['vk_uid'] );
//-----------------------------------------
// Thaw bitfield options
//-----------------------------------------
$bwOptions = IPSBWOptions::thaw( $this->memberData['vk_bwoptions'], 'vkontakte' );
//-----------------------------------------
// Merge..
//-----------------------------------------
if ( is_array( $bwOptions ) )
{
foreach( $bwOptions as $k => $v )
{
$this->memberData[ $k ] = $v;
}
}
$this->hide_form_and_save_button = 1;
$userData = $vkontakte->fetchUserData();
if ( isset( $userData['status']['text'] ) )
{
if ( IPS_DOC_CHAR_SET != 'UTF-8' )
{
$userData['status']['text'] = IPSText::utf8ToEntities( $userData['status']['text'] );
}
}
return $this->registry->getClass('output')->getTemplate('vkontakte')->membersVkontakteConnect( $this->memberData['vk_uid'], $userData );
}
/**
* Show the twitter form
*
@@ -1214,7 +1108,22 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
// Get ignored users
//-----------------------------------------
$this->DB->build( array( 'select' => '*', 'from' => 'ignored_users', 'where' => 'ignore_owner_id=' . $this->memberData['member_id'] ) );
$perPage = 25;
/* Count */
$count = $this->DB->buildAndFetch( array( 'select' => 'count(*) as dracula', 'from' => 'ignored_users', 'where' => 'ignore_owner_id=' . $this->memberData['member_id'] ) );
/* Sort out pagination */
$st = intval($this->request['st']) >=0 ? intval($this->request['st']) : 0;
$pagination = $this->registry->output->generatePagination( array(
'totalItems' => $count['dracula'],
'itemsPerPage' => $perPage,
'currentStartValue' => $st,
'baseUrl' => 'app=core&module=usercp&tab=core&area=ignoredusers',
) );
/* Get em */
$this->DB->build( array( 'select' => '*', 'from' => 'ignored_users', 'where' => 'ignore_owner_id=' . $this->memberData['member_id'], 'limit' => array( $st, $perPage ) ) );
$this->DB->execute();
while( $row = $this->DB->fetch() )
@@ -1251,7 +1160,7 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
$this->request['newbox_1'] = $this->request['newbox_1'] ? $this->request['newbox_1'] : '';
return $this->registry->getClass('output')->getTemplate('ucp')->membersIgnoredUsersForm( $final_users );
return $this->registry->getClass('output')->getTemplate('ucp')->membersIgnoredUsersForm( $final_users, $pagination );
}
@@ -1314,20 +1223,22 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
$t_sig = '';
/* Set content in editor */
$this->editor->setContent( $this->memberData['signature'] );
$this->editor->setAllowBbcode( true );
$this->editor->setAllowSmilies( false );
$this->editor->setAllowHtml( $this->memberData['g_dohtml'] );
$this->editor->setContent( $this->memberData['signature'], 'signatures' );
/* Current signature preview */
IPSText::getTextClass('bbcode')->parse_bbcode = 1;
IPSText::getTextClass('bbcode')->parse_smilies = 0;
IPSText::getTextClass('bbcode')->parse_html = $this->caches['group_cache'][ $this->memberData['member_group_id'] ]['g_dohtml'];
IPSText::getTextClass('bbcode')->parse_html = $this->memberData['g_dohtml'];
IPSText::getTextClass('bbcode')->parse_nl2br = 1;
IPSText::getTextClass('bbcode')->parsing_section = 'signatures';
IPSText::getTextClass( 'bbcode' )->parsing_mgroup = $this->memberData['member_group_id'];
IPSText::getTextClass( 'bbcode' )->parsing_mgroup_others = $this->memberData['mgroup_others'];
IPSText::getTextClass('bbcode')->parsing_mgroup = $this->memberData['member_group_id'];
IPSText::getTextClass('bbcode')->parsing_mgroup_others = $this->memberData['mgroup_others'];
$signature = IPSText::getTextClass('bbcode')->preDisplayParse( $this->memberData['signature'] );
return $this->registry->getClass('output')->getTemplate('ucp')->membersSignatureForm( $this->editor->show( 'Post', array( 'noSmilies' => true ) ), $sig_restrictions, $signature );
}
@@ -1426,12 +1337,9 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
}
/* About me */
$aboutme = $this->DB->buildAndFetch( array( 'select' => 'pp_about_me', 'from' => 'profile_portal', 'where' => 'pp_member_id=' . $this->memberData['member_id'] ) );
$this->editor->setContent( $this->memberData['pp_about_me'] );
/* Set content in editor */
$this->editor->setContent( $aboutme['pp_about_me'] );
$amEditor = $this->editor->show( 'Post', array( 'noSmilies' => true, 'delayInit' => 1 ) );
$amEditor = $this->editor->show( 'Post', array( 'delayInit' => 1 ) );
/* Times */
foreach ( $this->lang->words as $k => $v )
@@ -1466,7 +1374,6 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
{
/* Init */
$start = intval( $this->request['st'] );
$clear = trim( $this->request['clear'] );
$perPage = 50;
//-----------------------------------------
@@ -1477,6 +1384,14 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
$notifyLibrary = new $classToLoad( $this->registry );
$notifyLibrary->setMember( $this->memberData );
/* Clear them? - used in mobile skin */
if ( isset($this->request['clear']) && trim($this->request['clear']) == 'true' )
{
$this->DB->update( 'inline_notifications', array( 'notify_read' => 1 ), 'notify_to_id=' . $this->memberData['member_id'] );
$notifyLibrary->rebuildUnreadCount();
}
//-----------------------------------------
// Turn off normal form
//-----------------------------------------
@@ -1494,6 +1409,8 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
'from' => 'inline_notifications',
'where' => 'notify_to_id=' . $this->memberData['member_id'] ) );
if ( $count['er'] )
{
$this->DB->build( array( 'select' => '*',
'from' => 'inline_notifications',
'where' => 'notify_to_id=' . $this->memberData['member_id'],
@@ -1519,26 +1436,20 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
{
foreach( $_notifications as $key => $data )
{
if ( in_array( $data['notify_from_id'], array_keys( $members ) ) )
if ( isset($members[ $data['notify_from_id'] ]) )
{
$_notifications[ $key ]['member'] = IPSMember::buildProfilePhoto( $members[ $data['notify_from_id'] ] );
}
}
}
}
}
$pages = $this->registry->getClass('output')->generatePagination( array( 'totalItems' => $count['er'],
'itemsPerPage' => $perPage,
'currentStartValue' => $start,
'baseUrl' => "app=core&amp;module=usercp&amp;tab=core&amp;area=notificationlog" ) );
/* Clear them? - used in mobile skin */
if ( $clear == 'true' )
{
$this->DB->update( 'inline_notifications', array( 'notify_read' => 1 ), 'notify_to_id=' . $this->memberData['member_id'] );
$notifyLibrary->rebuildUnreadCount();
}
'baseUrl' => "app=core&amp;module=usercp&amp;tab=core&amp;area=notificationlog"
) );
//-----------------------------------------
// Send to template
@@ -1552,6 +1463,8 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
*
* @author Brandon Farber
* @return string Processed HTML
*
* @note Updating this function update also mobileApiRequest::_handleNotificationTypes()
*/
public function showFormNotifications()
{
@@ -1567,7 +1480,7 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
// Show the form
//-----------------------------------------
$_basicOptions = array( array( 'email', $this->lang->words['notopt__email'] ), array( 'pm', $this->lang->words['notopt__pm'] ), array( 'inline', $this->lang->words['notopt__inline'] ), array( 'mobile', $this->lang->words['notopt__mobile'] ) );
$_basicOptions = array( array( 'email', $this->lang->words['notopt__email'] ), array( 'inline', $this->lang->words['notopt__inline'] ), array( 'mobile', $this->lang->words['notopt__mobile'] ) );
$_configOptions = $notifyLibrary->getNotificationData( TRUE );
$_notifyConfig = $notifyLibrary->getMemberNotificationConfig( $this->memberData );
$_defaultConfig = $notifyLibrary->getDefaultNotificationConfig();
@@ -1575,7 +1488,7 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
foreach( $_configOptions as $option )
{
$_thisConfig = $_notifyConfig[ $option['key'] ];
$_thisConfig = isset($_notifyConfig[ $option['key'] ]) ? $_notifyConfig[ $option['key'] ] : $_defaultConfig[ $option['key'] ];
//-----------------------------------------
// Determine available options
@@ -1619,7 +1532,7 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
//$_formOptions[ $option['key'] ]['options'] = $_available;
$_formOptions[ $option['key'] ]['defaults'] = $_thisConfig['selected'];
$_formOptions[ $option['key'] ]['defaults'] = is_array($_thisConfig['selected']) ? $_thisConfig['selected'] : array();
$_formOptions[ $option['key'] ]['disabled'] = 0;
//-----------------------------------------
@@ -1630,7 +1543,7 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
if( $_defaultConfig[ $option['key'] ]['disable_override'] )
{
$_formOptions[ $option['key'] ]['disabled'] = 1;
$_formOptions[ $option['key'] ]['defaults'] = $_defaultConfig[ $option['key'] ]['selected'];
$_formOptions[ $option['key'] ]['defaults'] = is_array($_defaultConfig[ $option['key'] ]['selected']) ? $_defaultConfig[ $option['key'] ]['selected'] : array();
}
}
@@ -1892,7 +1805,7 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
// CHECK (please)
//-----------------------------------------
if ( ! $this->settings['auth_allow_dnames'] OR $this->memberData['g_dname_changes'] < 1 OR $this->memberData['g_dname_date'] < 1 )
if ( ! $this->settings['auth_allow_dnames'] OR $this->memberData['g_dname_changes'] == 0 OR $this->memberData['g_dname_date'] == 0 )
{
$this->registry->getClass('output')->showError( 'no_permission_for_display_names', 1011 );
}
@@ -1912,7 +1825,7 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
$time_check = $this->memberData['joined'];
}
$name_count = $this->DB->buildAndFetch( array( 'select' => 'COUNT(*) as count, MIN(dname_date) as min_date', 'from' => 'dnames_change', 'where' => "dname_member_id=" . $this->memberData['member_id'] . " AND dname_date > $time_check" ) );
$name_count = $this->DB->buildAndFetch( array( 'select' => 'COUNT(*) as count, MIN(dname_date) as min_date', 'from' => 'dnames_change', 'where' => "dname_member_id=" . $this->memberData['member_id'] . " AND dname_date > $time_check AND dname_discount=0" ) );
$name_count['count'] = intval( $name_count['count'] );
$name_count['min_date'] = intval( $name_count['min_date'] ) ? intval( $name_count['min_date'] ) : $time_check;
@@ -1947,6 +1860,12 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
}
if( !$form['_noPerm'] )
{
if ( $this->memberData['g_dname_changes'] == -1 )
{
$form['_lang_string'] = $this->lang->words['dname_string2'];
}
else
{
$form['_changes_left'] = $this->memberData['g_dname_changes'] - $name_count['count'];
$form['_changes_done'] = $name_count['count'];
@@ -1963,7 +1882,8 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
$form['_lang_string'] = sprintf( $this->lang->words['dname_string'],
$form['_changes_done'], $this->memberData['g_dname_changes'],
$form['_first_change'], $this->memberData['g_dname_changes'],
$this->memberData['g_dname_date'] );
$this->memberData['g_dname_date'] ) . $this->lang->words['dname_string2'];
}
}
//-----------------------------------------
@@ -2346,6 +2266,7 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
IPSText::getTextClass( 'bbcode' )->parsing_section = 'signatures';
$signature = IPSText::getTextClass('bbcode')->preDbParse( $signature );
$testSignature = IPSText::getTextClass('bbcode')->preDisplayParse( $signature );
if ( IPSText::getTextClass( 'bbcode' )->error )
@@ -2367,7 +2288,7 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
if( isset($sig_restrictions[1]) and $sig_restrictions[1] !== '' )
{
if( mb_substr_count( mb_strtolower($signature), "[img]" ) > $sig_restrictions[1] )
if( substr_count( strtolower($signature), "[img]" ) > $sig_restrictions[1] )
{
$sig_errors[] = sprintf( $this->lang->words['sig_toomanyimages'], $sig_restrictions[1] );
}
@@ -2379,7 +2300,7 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
if( isset($sig_restrictions[4]) and $sig_restrictions[4] !== '' )
{
if( mb_substr_count( mb_strtolower($signature), "[url" ) > $sig_restrictions[4] )
if( substr_count( strtolower($signature), "[url" ) > $sig_restrictions[4] )
{
$sig_errors[] = sprintf( $this->lang->words['sig_toomanyurls'], $sig_restrictions[4] );
}
@@ -2404,6 +2325,10 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
$testSig = wordwrap( $signature, $this->settings['signature_line_length'], '<br />' );
// http://community.invisionpower.com/tracker/issue-35105-signature-restriction-minor-bug
$testSig = preg_replace( '#^\s*(<br />)+#i', '', $testSig );
$testSig = preg_replace( '#(<br />)+?\s*$#i', '', $testSig );
if( substr_count( $testSig, "<br />" ) >= $sig_restrictions[5] )
{
$sig_errors[] = sprintf( $this->lang->words['sig_toomanylines'], $sig_restrictions[5] );
@@ -2509,7 +2434,7 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
// Make sure it's a legal date
//-----------------------------------------
$_year = $this->request['year'] ? $this->request['year'] : 1999;
$_year = $this->request['year'] ? $this->request['year'] : 2000;
if ( ! checkdate( $this->request['month'], $this->request['day'], $_year ) )
{
@@ -2565,7 +2490,7 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
if( $website_field && $fields->out_fields[ 'field_' . $website_field ] )
{
if( ! stristr( $fields->out_fields[ 'field_' . $website_field ], 'http://' ) )
if( stristr( $fields->out_fields[ 'field_' . $website_field ], 'http://' ) === FALSE && stristr( $fields->out_fields[ 'field_' . $website_field ], 'https://' ) === FALSE )
{
$fields->out_fields[ 'field_' . $website_field ] = 'http://' . $fields->out_fields[ 'field_' . $website_field ];
}
@@ -2597,30 +2522,10 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
$timeZone = IPSText::alphanumericalClean( $this->request['timeZone'], '+.' );
$dst_correct = intval( $this->request['dst_correct'] );
/* Ensure 1 account per openID */
if ( $this->request['identity_url'] )
{
$account = $this->DB->buildAndFetch( array( 'select' => 'member_id', 'from' => 'members', 'where' => "identity_url='" . trim($this->request['identity_url']) . "' AND member_id<>" . $this->memberData['member_id'] ) );
if( $account['member_id'] )
{
return array( 0 => $this->lang->words['identity_url_assoc'] );
}
$identityUrl = trim($this->request['identity_url']);
$identityUrl = rtrim( $identityUrl, "/" );
if( !strpos( $identityUrl, 'http://' ) === 0 AND !strpos( $identityUrl, 'https://' ) === 0 )
{
$identityUrl = 'http://' . $identityUrl;
}
}
/* Add into array */
$core['time_offset'] = $timeZone;
$core['dst_in_use'] = $this->settings['time_dst_auto_correction'] ? ( ( $this->request['dstOption'] AND intval($this->request['dstCheck']) == 0 ) ? intval($this->request['dstOption']) : 0 ) : $this->memberData['dst_in_use'];
$core['members_auto_dst'] = $this->settings['time_dst_auto_correction'] ? intval($this->request['dstCheck']) : $this->memberData['members_auto_dst'];
$core['identity_url'] = isset($identityUrl) ? $identityUrl : $this->memberData['identity_url'];
//-----------------------------------------
// Update the DB
@@ -2666,11 +2571,10 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
// Show the form
//-----------------------------------------
$_basicOptions = array( array( 'email', $this->lang->words['notopt__email'] ), array( 'pm', $this->lang->words['notopt__pm'] ), array( 'inline', $this->lang->words['notopt__inline'] ), array( 'mobile' => $this->lang->words['notopt__mobile'] ) );
$_basicOptions = array( array( 'email', $this->lang->words['notopt__email'] ), array( 'inline', $this->lang->words['notopt__inline'] ), array( 'mobile' => $this->lang->words['notopt__mobile'] ) );
$_configOptions = $notifyLibrary->getNotificationData();
$_notifyConfig = $notifyLibrary->getMemberNotificationConfig( $this->memberData );
$_defaultConfig = $notifyLibrary->getDefaultNotificationConfig();
$_noPrivateMessage = array( 'new_private_message', 'reply_private_message' );
$_saveConfig = array();
foreach( $_configOptions as $option )
@@ -2699,50 +2603,6 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
{
$_saveConfig[ $option['key'] ]['selected'] = $_defaultConfig[ $option['key'] ]['selected'];
}
/**
* @link http://community.invisionpower.com/tracker/issue-23453-notification-defaults/
*/
if( in_array( $option['key'], $_noPrivateMessage ) AND in_array( 'pm', $_saveConfig[ $option['key'] ]['selected'] ) )
{
$_newSelected = array();
foreach( $_saveConfig[ $option['key'] ]['selected'] as $_v )
{
if( $_v != 'pm' )
{
$_newSelected[] = $_v;
}
}
$_saveConfig[ $option['key'] ]['selected'] = $_newSelected;
}
//-----------------------------------------
// Nothing selected, default to inline/email/pm
// based on availability, or inline if none are available
// Decided to allow nothing selected to be 'no notification'
//-----------------------------------------
//if( !count($_saveConfig[ $option['key'] ]['selected']) )
//{
// if( !in_array( 'inline', $_defaultConfig[ $option['key'] ]['disabled'] ) )
// {
// $_saveConfig[ $option['key'] ]['selected'][] = 'inline';
// }
// else if( !in_array( 'email', $_defaultConfig[ $option['key'] ]['disabled'] ) )
// {
// $_saveConfig[ $option['key'] ]['selected'][] = 'email';
// }
// else if( !in_array( 'pm', $_defaultConfig[ $option['key'] ]['disabled'] ) )
// {
// $_saveConfig[ $option['key'] ]['selected'][] = 'pm';
// }
// else
// {
// $_saveConfig[ $option['key'] ]['selected'][] = 'inline';
// }
//}
}
//-----------------------------------------
@@ -3172,7 +3032,7 @@ class usercpForms_core extends public_core_usercp_manualResolver implements inte
IPSText::getTextClass( 'email' )->sendMail();
$this->registry->getClass('output')->redirectScreen( $this->lang->words['ce_redirect'], $this->settings['base_url'] . 'app=core&amp;module=global&amp;section=register&amp;do=07' );
$this->registry->getClass('output')->silentRedirect( $this->settings['base_url'] . 'app=core&amp;module=global&amp;section=register&amp;do=07' );
}
else
{
@@ -0,0 +1,62 @@
<?php
/**
* @file warnings.php Warnings extension for core
*~TERABYTE_DOC_READY~
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
* $License: http://www.invisionpower.com/company/standards.php#license$
* $Author: bfarber $ (Original: Mark)
* @since -
* $LastChangedDate: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* @version v3.3.4
* $Revision: 10914 $
*/
if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files.";
exit();
}
/**
* @class warnings_core
* @brief Warnings Extension for core
*/
class warnings_core
{
/**
* Get Content URL
*
* @param array $warning Row from members_warn_logs
* @return @e array array( url => URL to the content the warning came from, title => Title )
*/
public function getContentUrl( $warning )
{
ipsRegistry::getClass('class_localization')->loadLanguageFile( array( 'public_profile' ), 'members' );
if ( $warning['wl_content_id1'] == 'mreport' )
{
$report = ipsRegistry::DB()->buildAndFetch( array( 'select' => '*', 'from' => 'rc_reports_index', 'where' => "id=" . intval( $warning['wl_content_id2'] ) ) );
if ( ! empty($report['id']) )
{
return array( 'url' => ipsRegistry::getClass('output')->buildUrl( "app=core&module=reports&do=show_report&rid={$report['id']}" ), 'title' => $report['title'] );
}
}
elseif ( $warning['wl_content_id1'] == 'core-reports' )
{
$exploded = explode( '-', $warning['wl_content_id2'] );
require_once( IPS_ROOT_PATH . 'sources/classes/comments/bootstrap.php' );/*noLibHook*/
$comments = classes_comments_bootstrap::controller( $warning['wl_content_id1'] );
$parent = $comments->remapFromLocal( $comments->fetchParent( $exploded[0] ), 'parent' );
if ( ! empty($parent['parent_id']) )
{
return array( 'url' => ipsRegistry::getClass('output')->buildUrl( "app=core&module=global&section=comments&fromApp={$warning['wl_content_id1']}&do=findComment&parentId={$exploded[0]}&comment_id={$exploded[1]}" ), 'title' => $parent['parent_title'] );
}
}
return NULL;
}
}
@@ -253,17 +253,17 @@ function IPB3TemplateDiffResults()
{
if ( json['data_type'] == 'css' )
{
content = '<div class="acp-box"><h3>' + _text + ': ' + json['data_title'] + '.css</h3><div style="padding:4px;line-height:125%;overflow:auto"><pre>' + json['data_content'] + '</pre></div></div>';
content = '<div class="acp-box"><h3>' + _text + ': ' + json['data_title'] + '.css</h3><div style="padding:4px;line-height:125%;overflow:auto;max-height: 575px;"><pre>' + json['data_content'] + '</pre></div></div>';
}
else
{
content = '<div class="acp-box"><h3>' + _text + ': ' + json['data_group'] + ' &gt; ' + json['data_title'] + '</h3><div style="padding:4px;line-height:125%;overflow:auto"><pre>' + json['data_content'] + '</pre></div></div>';
content = '<div class="acp-box"><h3>' + _text + ': ' + json['data_group'] + ' &gt; ' + json['data_title'] + '</h3><div style="padding:4px;line-height:125%;overflow:auto;max-height: 575px;"><pre>' + json['data_content'] + '</pre></div></div>';
}
max = document.viewport.getHeight();
max = ( max < 600 ) ? max : 600;
popup = new ipb.Popup('VPopUp', { type: 'pane', modal: false, hideAtStart: true, w: '600px', h: max + 'px', initial: content } );
popup = new ipb.Popup('VPopUp', { type: 'pane', modal: false, hideAtStart: true, w: '600px', h: max, initial: content } );
popup.show();
}
},
@@ -335,17 +335,17 @@ function IPB3TemplateDiffResults()
if ( json['change_data_type'] == 'css' )
{
content = '<div class="acp-box"><h3>'+ _text + ': ' + json['change_data_title'] + '.css</h3><div style="padding:4px;line-height:125%;"><pre>' + json['change_data_content'] + '</pre></div>' + _qb + "</div>";
content = '<div class="acp-box"><h3>'+ _text + ': ' + json['change_data_title'] + '.css</h3><div style="padding:4px;line-height:125%;overflow: auto;max-height: 575px;"><pre>' + json['change_data_content'] + '</pre></div>' + _qb + "</div>";
}
else
{
content = '<div class="acp-box"><h3>'+ _text + ': ' + json['change_data_group'] + ' &gt; ' + json['change_data_title'] + '</h3><div style="padding:4px;line-height:125%;"><pre>' + json['change_data_content'] + '</pre></div>' + _qb + "</div>";
content = '<div class="acp-box"><h3>'+ _text + ': ' + json['change_data_group'] + ' &gt; ' + json['change_data_title'] + '</h3><div style="padding:4px;line-height:125%;overflow: auto;max-height: 575px;"><pre>' + json['change_data_content'] + '</pre></div>' + _qb + "</div>";
}
max = document.viewport.getHeight();
max = ( max < 600 ) ? max : 600;
IPB3TemplateDiffResults.popUps['preview-' + changeId ] = new ipb.Popup('diffPopUp', { type: 'pane', modal: false, hideAtStart: true, w: '800px', h: max + 'px', initial: content } );
IPB3TemplateDiffResults.popUps['preview-' + changeId ] = new ipb.Popup('diffPopUp', { type: 'pane', modal: false, hideAtStart: true, w: '800px', h: max, initial: content } );
IPB3TemplateDiffResults.popUps['preview-' + changeId ].show();
/* Observe */
@@ -411,7 +411,7 @@ function IPB3TemplateDiffResults()
var _tmp = Math.floor( Math.random() * 1001 );
_qb = "<div style='float:left; margin-top:6px'><input type='button' id='mergeResolveCustom_" + _tmp + "' class='button __rc" + changeId + "' value='" + ipb.lang['resolveall_button'] + "' />&nbsp;<input type='button' id='mergeResolveNew_" + _tmp + "' class='button __rn" + changeId + "' value='" + ipb.lang['resolveall_newwin'] + "' /></div>";
_tb = '<textarea name="content" id="mergeContent" style="width:100%; height:700px; line-height:150%">' + json['change_merge_content'] + '</textarea>' + _qb + '<div style="text-align:right" class="acp-actionbar"><input type="button" id="mergeSubmit" value="' + ipb.lang['save_button'] + '" class="button primary __i' + changeId + '" /></div>';
_tb = '<textarea name="content" id="mergeContent" style="width:100%; height:500px; line-height:150%">' + json['change_merge_content'] + '</textarea>' + _qb + '<div style="text-align:right" class="acp-actionbar"><input type="button" id="mergeSubmit" value="' + ipb.lang['save_button'] + '" class="button primary __i' + changeId + '" /></div>';
if ( json['change_data_type'] == 'css' )
{
@@ -422,7 +422,7 @@ function IPB3TemplateDiffResults()
content = '<div class="acp-box"><h3>' + json['change_data_group'] + ' &gt; ' + json['change_data_title'] + '</h3><div style="padding:4px;">' + _tb + '</div></div>';
}
IPB3TemplateDiffResults.popUps['edit-' + changeId ] = new ipb.Popup('diffEditPopUp_' + _tmp, { type: 'pane', modal: false, hideAtStart: true, w: '800px', h: '600px', initial: '<div style="height:750px">&nbsp;</div>' } );
IPB3TemplateDiffResults.popUps['edit-' + changeId ] = new ipb.Popup('diffEditPopUp_' + _tmp, { type: 'pane', modal: false, hideAtStart: true, w: '800px', h: 650, initial: '<div style="height:590px">&nbsp;</div>' } );
IPB3TemplateDiffResults.popUps['edit-' + changeId ].show();
$('diffEditPopUp_' + _tmp + '_inner').update( content );
@@ -611,8 +611,8 @@ function IPB3TemplateDiffResults()
alert( ipb.lang['oops'] + t.responseText );
}
},
onException: function( f,e ){ alert( "Исключение: " + e ); },
onFailure: function( t ){ alert( "Ошибка: " + t.responseText ); }
onException: function( f,e ){ alert( "Exception: " + e ); },
onFailure: function( t ){ alert( "Failure: " + t.responseText ); }
} );
}
};
@@ -20,7 +20,7 @@ ACPHomepage = {
{
if ( $('members_display_name').value == "" )
{
alert("Нужно ввести имя пользователя!");
alert("You must enter a username!");
return false;
}
@@ -0,0 +1,55 @@
/************************************************/
/* IPB3 Javascript */
/* -------------------------------------------- */
/* acp.hooksList.js - Hooks listing */
/* (c) IPS, Inc 2011 */
/* -------------------------------------------- */
/* Author: Terabyte */
/************************************************/
var _hooksList = window.IPBACP;
_hooksList.prototype.hooksList = {
popups: [],
/*
* Init function
*/
init: function()
{
Debug.write("Initializing acp.hooksList.js");
document.observe("dom:loaded", function(){
acp.hooksList.initPage();
});
},
initPage: function()
{
$('install_new_hook').observe('click', acp.hooksList.addFolder);
},
addFolder: function( e, elem )
{
Event.stop(e);
if ( ! Object.isUndefined(acp.hooksList.popups['install']) )
{
acp.hooksList.popups['install'].show();
}
else
{
// Make a new popup
acp.hooksList.popups['install'] = new ipb.Popup( 'install', {
type: 'modal',
initial: ipb.templates['install_new_hook'].evaluate(),
w: '550px',
stem: false,
hideAtStart: false
});
}
}
};
acp.hooksList.init();
@@ -0,0 +1,55 @@
/************************************************/
/* IPB3 Javascript */
/* -------------------------------------------- */
/* acp.mmobileimages.js */
/* (c) IPS, Inc 2011 */
/* -------------------------------------------- */
/* Author: Matt Mecham */
/************************************************/
var _mobileImages = window.IPBACP;
_mobileImages.prototype.mobileImages = {
popups: [],
/*
* Init function
*/
init: function()
{
Debug.write("Initializing acp.mobileImages.js");
document.observe("dom:loaded", function(){
acp.mobileImages.initPage();
});
},
initPage: function()
{
$('importXml').observe('click', acp.mobileImages.importPop);
},
importPop: function( e, elem )
{
Event.stop(e);
if ( ! Object.isUndefined(acp.mobileImages.popups['install']) )
{
acp.mobileImages.popups['install'].show();
}
else
{
// Make a new popup
acp.mobileImages.popups['install'] = new ipb.Popup( 'install', {
type: 'modal',
initial: ipb.templates['import_xml'].evaluate(),
w: '550px',
stem: false,
hideAtStart: false
});
}
}
};
acp.mobileImages.init();
+17 -17
View File
@@ -85,11 +85,11 @@ function IPBCSS()
}
else
{
alert( "Похоже у нас проблемы: " + t.responseText );
alert( "Ooops. Something went wrong. Does this help?: " + t.responseText );
}
},
onException: function( f,e ){ alert( "Исключение: " + e ); },
onFailure: function( t ){ alert( "Ошибка: " + t.responseText ); }
onException: function( f,e ){ alert( "Exception: " + e ); },
onFailure: function( t ){ alert( "Failure: " + t.responseText ); }
} );
};
@@ -133,21 +133,21 @@ function IPBCSS()
if ( json['errors'] )
{
/* Something inline would be very nice here.. rather than this ugly alert */
alert("Ошибка: " + json['errors'] );
alert("Message: " + json['errors'] );
}
else
{
alert("Сохранено!");
alert("Error:: Saved!");
}
}
}
else
{
alert( "Похоже у нас проблемы: " + t.responseText );
alert( "Ooops. Something went wrong. Does this help?: " + t.responseText );
}
},
onException: function( f,e ){ alert( "Исключение: " + e ); },
onFailure: function( t ){ alert( "Ошибка: " + t.responseText ); }
onException: function( f,e ){ alert( "Exception: " + e ); },
onFailure: function( t ){ alert( "Failure: " + t.responseText ); }
} );
};
@@ -159,14 +159,14 @@ function IPBCSS()
/* Make sure we're mean it... */
if ( $('tplate_cssRow_' + css_id ).hasClassName( 'tplateRow_new') )
{
if ( ! confirm( "Удалить CSS файл ?\nФайл будет удален из ВСЕХ стилей!" ) )
if ( ! confirm( "REMOVE CSS file?\n This will remove this template bit in ALL skins!" ) )
{
return false;
}
}
else
{
if ( ! confirm( "Отменить изменения в CSS файле ?\nВсе изменения будут утеряны!" ) )
if ( ! confirm( "Revert CSS file?\n All changes WILL be lost!" ) )
{
return false;
}
@@ -196,17 +196,17 @@ function IPBCSS()
if ( json['errors'] )
{
/* Something inline would be very nice here.. rather than this ugly alert */
alert("Ошибка: " + json['errors'] );
alert("Error:: " + json['errors'] );
}
}
}
else
{
alert( "Похоже у нас проблемы: " + t.responseText );
alert( "Ooops. Something went wrong. Does this help?: " + t.responseText );
}
},
onException: function( f,e ){ alert( "Исключение: " + e ); },
onFailure: function( t ){ alert( "Ошибка: " + t.responseText ); }
onException: function( f,e ){ alert( "Exception: " + e ); },
onFailure: function( t ){ alert( "Failure: " + t.responseText ); }
} );
};
@@ -239,11 +239,11 @@ function IPBCSS()
}
else
{
alert( "Похоже у нас проблемы: " + t.responseText );
alert( "Ooops. Something went wrong. Does this help?: " + t.responseText );
}
},
onException: function( f,e ){ alert( "Исключение: " + e ); },
onFailure: function( t ){ alert( "Ошибка: " + t.responseText ); }
onException: function( f,e ){ alert( "Exception: " + e ); },
onFailure: function( t ){ alert( "Failure: " + t.responseText ); }
} );
};
+30 -1
View File
@@ -29,6 +29,34 @@ function addAnotherRequirement()
} );
}
function getAppVersions( getIndex )
{
getIndex = parseInt(getIndex);
indexValue = $F('requireApp[' + getIndex + ']');
// Show the versions dropdowns now
if ( indexValue == 0 )
{
$('requirementRow_' + getIndex + '_versions').update('');
}
else
{
url = ipb.vars['base_url'] + "app=core&amp;module=ajax&amp;section=hooks&amp;do=getAppVersions&amp;secure_key=" + ipb.vars['md5_hash'] + "&i=" + getIndex + "&chosenApp=" + indexValue;
url = url.replace( /&amp;/g, '&' );
new Ajax.Request( url,
{
method: 'GET',
onSuccess: function ( t )
{
$('requirementRow_' + getIndex + '_versions').update( t.responseText );
},
onException: function( f,e ){ alert( "Exception: " + e ); },
onFailure: function( t ){ alert( "Failure: " + t.responseText ); }
} );
}
}
function removeRequirement( idToRemove )
{
idToRemove = parseInt(idToRemove);
@@ -305,6 +333,7 @@ function getHookIds( elementIndex )
{
var template = $F('skinFunction[' + elementIndex + ']');
var type = $F('type[' + elementIndex + ']');
var group = $F('skinGroup[' + elementIndex + ']');
if( $('tr_id[' + elementIndex + ']') != null )
{
@@ -319,7 +348,7 @@ function getHookIds( elementIndex )
/* Got a type? */
if( type != '0' )
{
url = ipb.vars['base_url'] + "app=core&amp;module=ajax&amp;section=hooks&amp;do=getHookIds&amp;secure_key=" + ipb.vars['md5_hash'] + "&i=" + elementIndex + "&type=" + type + "&template=" + template;
url = ipb.vars['base_url'] + "app=core&amp;module=ajax&amp;section=hooks&amp;do=getHookIds&amp;secure_key=" + ipb.vars['md5_hash'] + "&i=" + elementIndex + "&type=" + type + "&template=" + template + "&group=" + group;
url = url.replace( /&amp;/g, '&' );
new Ajax.Request( url,
@@ -217,14 +217,14 @@ function IPBTemplateDiff()
*/
this.timeOutAjax = function( t )
{
if ( confirm( "Нет ответа от сервера.\nХотите подождать?" ) )
if ( confirm( "No response from the webserver.\nDo you wish to continue waiting?" ) )
{
return true;
}
else
{
t.transport.abort();
alert( "Запрос отменен" );
alert( "Request Cancelled" );
}
};
@@ -233,7 +233,7 @@ function IPBTemplateDiff()
*/
this.failureAjax = function( t )
{
alert( "Ошибка: " + t.responseText );
alert( "Failure: " + t.responseText );
};
/**
@@ -241,7 +241,7 @@ function IPBTemplateDiff()
*/
this.exceptionAjax = function( t )
{
alert( "Исключение: " + t.responseText );
alert( "Exception: " + t.responseText );
};
/**
@@ -255,7 +255,7 @@ function IPBTemplateDiff()
/* Not a JSON response? */
if ( ! t.responseText.match( /^(\s+?)?\{/ ) )
{
alert( "Ошибка:\n" + t.responseText );
alert( "Error:\n" + t.responseText );
Debug.write( t );
return;
}
@@ -265,7 +265,7 @@ function IPBTemplateDiff()
if ( json['error'] )
{
alert( "Ошибка: " . json['error'] );
alert( "An error occurred: " . json['error'] );
return false;
}
@@ -102,11 +102,11 @@ function IPBTemplateSandR()
}
else
{
alert( "Галектеко ОПАСНОСТЕ! ПЫЩПЫЩ!11: " + t.responseText );
alert( "Ooops. Something went wrong. Does this help?: " + t.responseText );
}
},
onException: function( f,e ){ alert( "Исключение: " + e ); },
onFailure: function( t ){ alert( "Ошибка: " + t.responseText ); }
onException: function( f,e ){ alert( "Exception: " + e ); },
onFailure: function( t ){ alert( "Failure: " + t.responseText ); }
} );
};
@@ -161,22 +161,22 @@ function IPBTemplateSandR()
if ( json['errors'] )
{
/* Something inline would be very nice here.. rather than this ugly alert */
alert("Ошибка: " + json['errors'] );
alert("Message: " + json['errors'] );
}
else
{
$('replaceButton').disabled = false;
$('replaceButton').value = "Заменить выбранные";
$('replaceButton').value = "Replace Selected";
}
}
}
else
{
alert( "Галектеко ОПАСНОСТЕ! ПЫЩПЫЩ!11: " + t.responseText );
alert( "Ooops. Something went wrong. Does this help?: " + t.responseText );
}
},
onException: function( f,e ){ alert( "Исключение: " + e ); },
onFailure: function( t ){ alert( "Ошибка: " + t.responseText ); }
onException: function( f,e ){ alert( "Exception: " + e ); },
onFailure: function( t ){ alert( "Failure: " + t.responseText ); }
} );
};
@@ -218,7 +218,7 @@ function IPBTemplateSandR()
if ( json['errors'] )
{
/* Something inline would be very nice here.. rather than this ugly alert */
alert("Ошибка: " + json['errors'] );
alert("Message: " + json['errors'] );
}
else
{
@@ -228,11 +228,11 @@ function IPBTemplateSandR()
}
else
{
alert( "Галектеко ОПАСНОСТЕ! ПЫЩПЫЩ!11: " + t.responseText );
alert( "Ooops. Something went wrong. Does this help?: " + t.responseText );
}
},
//onException: function( f,e ){ alert( "Исключение: " + e ) },
onFailure: function( t ){ alert( "Ошибка: " + t.responseText ); }
//onException: function( f,e ){ alert( "Exception: " + e ) },
onFailure: function( t ){ alert( "Failure: " + t.responseText ); }
} );
};
@@ -303,7 +303,7 @@ function IPBTemplateSandR()
for( i = 0 ; i < json['templates'].length; i++ )
{
_output += _tplate.evaluate( json['templates'][i] );
};
}
/* Clear out any current listing */
$$( '#groupRowTemplates_' + groupName + " table.ipsTable" ).each( function(elem) {
@@ -328,7 +328,7 @@ function IPBTemplateSandR()
/* Checked, please? */
IPB3TemplatesSandR.toggleGroupBox( json['templates'][i]['template_group'] );
}
};
}
};
/**
@@ -103,11 +103,11 @@ function IPBTemplates()
}
else
{
alert( "Ошибка: " + t.responseText );
alert( "Ooops. Something went wrong. Does this help?: " + t.responseText );
}
},
onException: function( f,e ){ alert( "Исключение: " + e ); },
onFailure: function( t ){ alert( "Ошибка: " + t.responseText ); }
onException: function( f,e ){ alert( "Exception: " + e ); },
onFailure: function( t ){ alert( "Failure: " + t.responseText ); }
} );
};
@@ -169,11 +169,11 @@ function IPBTemplates()
}
else
{
alert( "Ошибка: " + t.responseText );
alert( "Ooops. Something went wrong. Does this help?: " + t.responseText );
}
},
onException: function( f,e ){ alert( "Исключение: " + e ); },
onFailure: function( t ){ alert( "Ошибка: " + t.responseText ); }
onException: function( f,e ){ alert( "Exception: " + e ); },
onFailure: function( t ){ alert( "Failure: " + t.responseText ); }
} );
};
@@ -222,21 +222,21 @@ function IPBTemplates()
if ( json['errors'] )
{
/* Something inline would be very nice here.. rather than this ugly alert */
alert("Ошибка: " + json['errors'] );
alert("Error:: " + json['errors'] );
}
else
{
alert("Сохранено!");
alert("Error:: Saved!");
}
}
}
else
{
alert( "Ошибка: " + t.responseText );
alert( "Ooops. Something went wrong. Does this help?: " + t.responseText );
}
},
onException: function( f,e ){ alert( "Исключение: " + e ); },
onFailure: function( t ){ alert( "Ошибка: " + t.responseText ); }
onException: function( f,e ){ alert( "Exception: " + e ); },
onFailure: function( t ){ alert( "Failure: " + t.responseText ); }
} );
};
@@ -248,14 +248,14 @@ function IPBTemplates()
/* Make sure we're mean it... */
if ( $('tplate_templaterow_' + template_id ).hasClassName( 'tplateRow_new') )
{
if ( ! confirm( "Удалить шаблон?\n Произойдет удаление шаблона из ВСЕХ стилей!" ) )
if ( ! confirm( "REMOVE template bit?\n This will remove this template bit in ALL skins!" ) )
{
return false;
}
}
else
{
if ( ! confirm( "Откатить изменения?\n Все изменения БУДУТ УТРАЧЕНЫ!" ) )
if ( ! confirm( "Revert template bit?\n All changes WILL be lost!" ) )
{
return false;
}
@@ -295,17 +295,17 @@ function IPBTemplates()
if ( json['errors'] )
{
/* Something inline would be very nice here.. rather than this ugly alert */
alert("Ошибка: " + json['errors'] );
alert("Error:: " + json['errors'] );
}
}
}
else
{
alert( "Ошибка: " + t.responseText );
alert( "Ooops. Something went wrong. Does this help?: " + t.responseText );
}
},
onException: function( f,e ){ alert( "Исключение: " + e ); },
onFailure: function( t ){ alert( "Ошибка: " + t.responseText ); }
onException: function( f,e ){ alert( "Exception: " + e ); },
onFailure: function( t ){ alert( "Failure: " + t.responseText ); }
} );
};
@@ -338,11 +338,11 @@ function IPBTemplates()
}
else
{
alert( "Ошибка: " + t.responseText );
alert( "Ooops. Something went wrong. Does this help?: " + t.responseText );
}
},
onException: function( f,e ){ alert( "Исключение: " + e ); },
onFailure: function( t ){ alert( "Ошибка: " + t.responseText ); }
onException: function( f,e ){ alert( "Exception: " + e ); },
onFailure: function( t ){ alert( "Failure: " + t.responseText ); }
} );
};
@@ -499,7 +499,7 @@ function IPBTemplates()
}
_output += _tplate.evaluate( json['templates'][i] );
};
}
/* Write it out */
$('tplate_bitList').update( _output );
@@ -124,11 +124,11 @@ function IPBUAgents()
if ( json['errors'] )
{
/* Something inline would be very nice here.. rather than this ugly alert */
alert("Ошибка: " + json['errors'] );
alert("Error:: " + json['errors'] );
}
else
{
alert("Сохранено!");
alert("Error:: Saved!");
}
}
}
@@ -179,7 +179,7 @@ function IPBUAgents()
if ( json['errors'] )
{
/* Something inline would be very nice here.. rather than this ugly alert */
alert("Ошибка: " + json['errors'] );
alert("Error:: " + json['errors'] );
}
}
}
@@ -249,7 +249,7 @@ function IPBUAgents()
{
_box.selectedIndex = i;
}
};
}
ipb.positionCenter( 'tplate_editor_' + uagent_id );
};
@@ -2,19 +2,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Template comparison
* Last Updated: $Date: 2011-07-12 10:53:25 -0400 (Tue, 12 Jul 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 9208 $
* @version $Revision: 10914 $
*/
@@ -132,7 +132,6 @@ class admin_core_ajax_compare extends ipsAjaxCommand
$classDifference = new classDifference();
$classDifference->method = 'PHP';
$difference = $classDifference->getDifferences( $original['css_content'], $current['css_content'] );
if( $classDifference->diff_found )
@@ -201,8 +200,28 @@ class admin_core_ajax_compare extends ipsAjaxCommand
$classDifference->method = 'PHP';
$difference = $classDifference->getDifferences( $original['template_content'], $current['template_content'] );
$difference = $classDifference->getDifferences( $original['template_content'], $current['template_content'], 'unified' );
if ( 1 == 1 )
{
$difference = str_replace( array( "\r\n", "\r" ), "\n", $difference );
$difference = preg_replace( '#(^|\n)(\-|\+)([^\n]+?)\n#', "\n\\1\\2\\3\n\n", $difference );
$difference = htmlspecialchars( $difference );
$difference = preg_replace( '#^@@([^@]+?)@@#m', '', $difference );
$difference = preg_replace( '#(^|\n)\-([^\n]+?)\n#', "\\1<del>\\2</del>\n", $difference );
$difference = preg_replace( '#(^|\n)\+([^\n]+?)\n#', "\\1<ins>\\2</ins>\n", $difference );
$difference = str_replace( "</ins>\n\n", "</ins>\n", $difference );
$difference = str_replace( "</del>\n", '</del>', $difference );
$difference = str_replace( "\n\n<ins>", "\n<ins>", $difference );
$difference = str_replace( "\n\n<del>", "\n<del>", $difference );
$difference = '<pre>' . $difference . '</pre>';
}
else
{
if( $classDifference->diff_found )
{
$difference = str_replace( "\n", "<br>", $difference );
@@ -219,6 +238,7 @@ class admin_core_ajax_compare extends ipsAjaxCommand
$difference = str_replace( "&gt;&lt;", "&gt;\n&lt;" ,$difference );
$difference = str_replace( "\t", "&nbsp; &nbsp; ", $difference );
}
}
$this->returnHtml( $this->html->differenceResult( $difference ) );
}
@@ -3,19 +3,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* AJAX Functions For applications/core/js/ipb3CSS.js file
* Last Updated: $Date: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: ips_terabyte $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 8644 $
* @version $Revision: 10914 $
*/
@@ -3,19 +3,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Login handler abstraction : AJAX Find Names functions
* Last Updated: $Date: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: ips_terabyte $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since Tuesday 1st March 2005 (11:52)
* @version $Revision: 8644 $
* @version $Revision: 10914 $
* @see public_core_ajax_findnames
*
*/
@@ -55,7 +55,8 @@ class admin_core_ajax_findnames extends ipsAjaxCommand
// INIT
//-----------------------------------------
$name = IPSText::convertUnicode( $this->convertAndMakeSafe( ipsRegistry::$request['name'], 0 ) );
$name = IPSText::convertUnicode( $this->convertAndMakeSafe( $this->request['name'], 0 ), true );
$name = IPSText::convertCharsets( $name, 'utf-8', IPS_DOC_CHAR_SET );
//-----------------------------------------
// Check length
@@ -72,7 +73,7 @@ class admin_core_ajax_findnames extends ipsAjaxCommand
$this->DB->build( array( 'select' => 'm.members_display_name, m.name, m.member_id, m.member_group_id',
'from' => array( 'members' => 'm' ),
'where' => "m.members_l_display_name LIKE '" . $this->DB->addSlashes( mb_strtolower( $name ) ) . "%'",
'where' => "m.members_l_display_name LIKE '" . $this->DB->addSlashes( strtolower( $name ) ) . "%'",
'order' => $this->DB->buildLength( 'm.members_display_name' ) . ' ASC',
'limit' => array( 0, 15 ),
'add_join' => array( array( 'select' => 'p.*',
@@ -2,19 +2,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Hooks (AJAX)
* Last Updated: $Date: 2011-10-07 22:31:51 -0400 (Fri, 07 Oct 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since 1st march 2002
* @version $Revision: 9588 $
* @version $Revision: 10914 $
*/
if ( ! defined( 'IN_IPB' ) )
@@ -72,7 +72,7 @@ class admin_core_ajax_hooks extends ipsAjaxCommand
// Load skin
//-----------------------------------------
$this->html = ipsRegistry::getClass('output')->loadTemplate('cp_skin_hooks_export');
$this->html = ipsRegistry::getClass('output')->loadTemplate( 'cp_skin_hooks_export', 'core' );
//-----------------------------------------
// Load hooks library
@@ -126,6 +126,10 @@ class admin_core_ajax_hooks extends ipsAjaxCommand
$this->_getApplications();
break;
case 'getAppVersions':
$this->_getAppVersions();
break;
case 'save':
$this->save();
break;
@@ -147,6 +151,7 @@ class admin_core_ajax_hooks extends ipsAjaxCommand
/* Init vars */
$i = intval($this->request['i']);
$name = empty($this->request['name']) ? 'libApplication' : trim($this->request['name']);
$js = '';
$apps = array();
foreach( ipsRegistry::$applications as $dir => $appdata )
@@ -160,13 +165,54 @@ class admin_core_ajax_hooks extends ipsAjaxCommand
if ( $name != 'libApplication' )
{
array_unshift( $apps, array( 0, $this->lang->words['a_selectone'] ) );
$js = "onchange='getAppVersions({$i})'";
}
$output = $this->registry->output->formDropdown( "{$name}[{$i}]", $apps );
$output = $this->registry->output->formDropdown( "{$name}[{$i}]", $apps, '', '', $js );
$this->returnHtml( $output );
}
/**
* Get application versions
*
* @return @e void [Outputs to screen]
*/
protected function _getAppVersions()
{
/* Init vars */
$i = intval($this->request['i']);
$app = trim($this->request['chosenApp']);
$versions = array();
/* Load setup library & get versions */
require_once( IPS_ROOT_PATH . 'setup/sources/base/setup.php' );/*noLibHook*/
$_versions = IPSSetUp::fetchXmlAppVersions( $app );
krsort($_versions);
/* Setup our default 'no version' value */
$versions[] = array( 0, $this->lang->words['h_any_version'] );
foreach( $_versions as $long => $human )
{
if ( $long < 30000 && in_array( $app, array( 'core', 'forums', 'members' ) ) )
{
continue;
}
$versions[] = array( $long, $human );
}
/* Return data ;o */
$minVersions = $this->registry->output->formDropdown( "minVersion[{$i}]", $versions );
$maxVersions = $this->registry->output->formDropdown( "minVersion[{$i}]", $versions );
$this->returnHtml( "{$this->lang->words['a_min']}: {$minVersions}<br /><br />{$this->lang->words['a_max']}: {$maxVersions}" );
}
/**
* Get data hook locations
*
@@ -189,9 +235,10 @@ class admin_core_ajax_hooks extends ipsAjaxCommand
protected function _getHookIds()
{
$i = intval( $this->request['i'] );
$group = IPSText::alphanumericalClean( $this->request['group'] );
$template = IPSText::alphanumericalClean( $this->request['template'] );
$type = IPSText::alphanumericalClean( $this->request['type'] );
$return = $this->hooksFunctions->getHookIds( $template, $type );
$return = $this->hooksFunctions->getHookIds( $template, $type, $group );
$output = ( count($return) > 1 ) ? $this->registry->output->formDropdown( "id[{$i}]", $return, '', "id[{$i}]", "onchange='getHookEntryPoints({$i});'" ) : $this->lang->words['hook_no_hook_ids_found'];
@@ -325,7 +372,7 @@ class admin_core_ajax_hooks extends ipsAjaxCommand
$name = trim( IPSText::alphanumericalClean( $this->request['name'] ) );
$this->hookId = intval( $this->request['id'] );
$this->hook = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'core_hooks', 'where' => 'hook_id=' . $this->hookId ) );
$this->data = unserialize($this->hook['hook_extra_data']);
$this->data = IPSLib::isSerialized($this->hook['hook_extra_data']) ? unserialize($this->hook['hook_extra_data']) : array( 'display' => array() );
$output = '';
@@ -417,15 +464,13 @@ class admin_core_ajax_hooks extends ipsAjaxCommand
$this->data['display']['settings'] = $output;
}
else
{
$output = $this->lang->words['hook_no_settings'];
if ( isset($this->data['display']['settings']) )
{
unset($this->data['display']['settings']);
}
$this->DB->update( 'core_hooks', array( 'hook_extra_data' => serialize($this->data) ), 'hook_id=' . $this->hookId );
if( !$output )
{
$output = $this->lang->words['hook_no_settings'];
}
break;
@@ -456,7 +501,7 @@ class admin_core_ajax_hooks extends ipsAjaxCommand
}
}
if( !count($this->data['language']) )
if( ! count($this->data['language']) )
{
unset($this->data['language']);
}
@@ -471,15 +516,13 @@ class admin_core_ajax_hooks extends ipsAjaxCommand
$this->data['display']['language'] = $output;
}
else
{
$output = $this->lang->words['hook_no_language'];
if ( isset($this->data['display']['language']) )
{
unset($this->data['display']['language']);
}
$this->DB->update( 'core_hooks', array( 'hook_extra_data' => serialize($this->data) ), 'hook_id=' . $this->hookId );
if( !$output )
{
$output = $this->lang->words['hook_no_language'];
}
break;
@@ -520,15 +563,13 @@ class admin_core_ajax_hooks extends ipsAjaxCommand
$this->data['display']['modules'] = $output;
}
else
{
$output = $this->lang->words['hook_no_modules'];
if ( isset($this->data['display']['modules']) )
{
unset($this->data['display']['modules']);
}
$this->DB->update( 'core_hooks', array( 'hook_extra_data' => serialize($this->data) ), 'hook_id=' . $this->hookId );
if( !$output )
{
$output = $this->lang->words['hook_no_modules'];
}
break;
@@ -569,15 +610,13 @@ class admin_core_ajax_hooks extends ipsAjaxCommand
$this->data['display']['help'] = $output;
}
else
{
$output = $this->lang->words['hook_no_help'];
if ( isset($this->data['display']['help']) )
{
unset($this->data['display']['help']);
}
$this->DB->update( 'core_hooks', array( 'hook_extra_data' => serialize($this->data) ), 'hook_id=' . $this->hookId );
if( !$output )
{
$output = $this->lang->words['hook_no_help'];
}
break;
@@ -633,15 +672,13 @@ class admin_core_ajax_hooks extends ipsAjaxCommand
$this->data['display']['templates'] = $output;
}
else
{
$output = $this->lang->words['hook_no_skin'];
if ( isset($this->data['display']['templates']) )
{
unset($this->data['display']['templates']);
}
$this->DB->update( 'core_hooks', array( 'hook_extra_data' => serialize($this->data) ), 'hook_id=' . $this->hookId );
if( !$output )
{
$output = $this->lang->words['hook_no_skin'];
}
break;
@@ -686,16 +723,64 @@ class admin_core_ajax_hooks extends ipsAjaxCommand
$this->data['display']['css'] = $output;
}
else
{
$output = $this->lang->words['hook_no_css'];
if ( isset($this->data['display']['css']) )
{
unset($this->data['display']['css']);
}
}
break;
$this->DB->update( 'core_hooks', array( 'hook_extra_data' => serialize( $this->data ) ), 'hook_id=' . $this->hookId );
case 'replacements':
/* INIT */
$_replacements = $this->hooksFunctions->getSkinReplacements();
$toSave = array();
$toDisplay = array();
/* None found? */
if( ! $output )
/* Check to see if any were selected */
if( is_array( $this->request['replacements'] ) && count( $this->request['replacements'] ) )
{
$output = $this->lang->words['hook_no_css'];
$toSave = $this->request['replacements'];
}
/* Output */
foreach( $_replacements as $data )
{
if( in_array( $data[0], $toSave ) )
{
$toDisplay[] = $data[1];
}
}
if( count( $toDisplay ) )
{
$output .= "{$this->lang->words['hook_replacements']} " . implode( ', ', $toDisplay );
}
/* Save */
if( count($toSave) )
{
$this->data['replacements'] = $toSave;
}
else
{
unset($this->data['replacements']);
}
if( $output )
{
$this->data['display']['replacements'] = $output;
}
else
{
$output = $this->lang->words['hook_no_replacements'];
if ( isset($this->data['display']['replacements']) )
{
unset($this->data['display']['replacements']);
}
}
break;
@@ -736,15 +821,13 @@ class admin_core_ajax_hooks extends ipsAjaxCommand
$this->data['display']['tasks'] = $output;
}
else
{
$output = $this->lang->words['hook_no_tasks'];
if ( isset($this->data['display']['tasks']) )
{
unset($this->data['display']['tasks']);
}
$this->DB->update( 'core_hooks', array( 'hook_extra_data' => serialize($this->data) ), 'hook_id=' . $this->hookId );
if( !$output )
{
$output = $this->lang->words['hook_no_tasks'];
}
break;
@@ -937,6 +1020,11 @@ class admin_core_ajax_hooks extends ipsAjaxCommand
}
}
if( ! count($this->data['database']) )
{
unset($this->data['database']);
}
if( count($toDisplay) )
{
$output .= implode( '<br />', $toDisplay );
@@ -947,22 +1035,14 @@ class admin_core_ajax_hooks extends ipsAjaxCommand
$this->data['display']['database'] = $output;
}
else
{
$output = $this->lang->words['hook_no_db'];
if ( isset($this->data['display']['database']) )
{
unset($this->data['display']['database']);
}
if( !count($this->data['database']) )
{
unset($this->data['database']);
}
$this->DB->update( 'core_hooks', array( 'hook_extra_data' => serialize($this->data) ), 'hook_id=' . $this->hookId );
if( !$output )
{
$output = $this->lang->words['hook_no_db'];
}
break;
case 'custom':
@@ -994,19 +1074,25 @@ class admin_core_ajax_hooks extends ipsAjaxCommand
$this->data['display']['custom'] = $output;
}
else
{
$output = $this->lang->words['hook_no_custom'];
if ( isset($this->data['display']['custom']) )
{
unset($this->data['display']['custom']);
}
$this->DB->update( 'core_hooks', array( 'hook_extra_data' => serialize($this->data) ), 'hook_id=' . $this->hookId );
if( !$output )
{
$output = $this->lang->words['hook_no_custom'];
}
break;
}
/* Handle array data and save to DB */
if ( empty($this->data['display']) )
{
unset($this->data['display']);
}
$this->DB->update( 'core_hooks', array( 'hook_extra_data' => count($this->data) ? serialize($this->data) : '' ), 'hook_id=' . $this->hookId );
//-----------------------------------------
// Print...
//-----------------------------------------
@@ -1135,6 +1221,15 @@ class admin_core_ajax_hooks extends ipsAjaxCommand
$output = $this->html->inline_css( $this->hook, $form );
break;
case 'replacements':
$_replacements = $this->hooksFunctions->getSkinReplacements();
$form = array();
$form['replacements'] = $this->registry->output->formMultiDropdown( "replacements[]", $_replacements, $this->data['replacements'], 5, "replacements" );
$output = $this->html->inline_replacements( $this->hook, $form );
break;
case 'tasks':
$_tasks = $this->hooksFunctions->getTasks();
@@ -1174,7 +1269,7 @@ class admin_core_ajax_hooks extends ipsAjaxCommand
case 'create':
$form['field_1_' . $i ] = $this->registry->output->formInput( "name_{$i}", $change['name'] );
$form['description_1_' . $i ] = $this->lang->words['desc_newtable'];
$form['field_2_' . $i ] = $this->registry->output->formTextarea( "fields_{$i}", htmlspecialchars($change['fields']) );
$form['field_2_' . $i ] = $this->registry->output->formTextarea( "fields_{$i}", htmlspecialchars( $change['fields'], ENT_QUOTES ) );
$form['description_2_' . $i ] = $this->lang->words['desc_fieldnames'];
$form['field_3_' . $i ] = $this->registry->output->formInput( "tabletype_{$i}", $change['tabletype'] );
$form['description_4_' . $i ] = $this->lang->words['desc_tabletype'];
@@ -1191,7 +1286,7 @@ class admin_core_ajax_hooks extends ipsAjaxCommand
$form['description_4_' . $i ] = $this->lang->words['desc_changefield'];
$form['field_5_' . $i ] = $this->registry->output->formInput( "fieldtype_{$i}", $change['fieldtype'] );
$form['description_5_' . $i ] = $this->lang->words['desc_definition'];
$form['field_6_' . $i ] = $this->registry->output->formInput( "default_{$i}", htmlspecialchars($change['default']) );
$form['field_6_' . $i ] = $this->registry->output->formInput( "default_{$i}", htmlspecialchars( $change['default'], ENT_QUOTES ) );
$form['description_6_' . $i ] = $this->lang->words['desc_defaultvalue'];
break;
@@ -1200,20 +1295,20 @@ class admin_core_ajax_hooks extends ipsAjaxCommand
$form['description_1_' . $i ] = $this->lang->words['desc_newtable'];
$form['field_2_' . $i ] = $this->registry->output->formInput( "field_{$i}", $change['field'] );
$form['description_2_' . $i ] = $this->lang->words['desc_field'];
$form['field_3_' . $i ] = $this->registry->output->formInput( "newvalue_{$i}", htmlspecialchars($change['newvalue']) );
$form['field_3_' . $i ] = $this->registry->output->formInput( "newvalue_{$i}", htmlspecialchars( $change['newvalue'], ENT_QUOTES ) );
$form['description_3_' . $i ] = $this->lang->words['desc_newvalue'];
$form['field_4_' . $i ] = $this->registry->output->formInput( "oldvalue_{$i}", htmlspecialchars($change['oldvalue']) );
$form['field_4_' . $i ] = $this->registry->output->formInput( "oldvalue_{$i}", htmlspecialchars( $change['oldvalue'], ENT_QUOTES ) );
$form['description_4_' . $i ] = $this->lang->words['desc_oldvalue'];
$form['field_5_' . $i ] = $this->registry->output->formInput( "where_{$i}", htmlspecialchars($change['where']) );
$form['field_5_' . $i ] = $this->registry->output->formInput( "where_{$i}", htmlspecialchars( $change['where'], ENT_QUOTES ) );
$form['description_5_' . $i ] = $this->lang->words['desc_where'];
break;
case 'insert':
$form['field_1_' . $i ] = $this->registry->output->formInput( "table_{$i}", $change['table'] );
$form['description_1_' . $i ] = $this->lang->words['desc_newtable'];
$form['field_2_' . $i ] = $this->registry->output->formTextarea( "updates_{$i}", htmlspecialchars($change['updates']) );
$form['field_2_' . $i ] = $this->registry->output->formTextarea( "updates_{$i}", htmlspecialchars( $change['updates'], ENT_QUOTES ) );
$form['description_2_' . $i ] = $this->lang->words['desc_data'];
$form['field_3_' . $i ] = $this->registry->output->formInput( "fordelete_{$i}", htmlspecialchars($change['fordelete']) );
$form['field_3_' . $i ] = $this->registry->output->formInput( "fordelete_{$i}", htmlspecialchars( $change['fordelete'], ENT_QUOTES ) );
$form['description_3_' . $i ] = $this->lang->words['desc_revert'];
break;
}
@@ -3,18 +3,18 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Live Search
* Last Updated: $Date: 2011-08-23 10:24:47 -0400 (Tue, 23 Aug 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: mark $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @version $Rev: 9404 $
* @link http://www.invisionpower.com
* @version $Rev: 10914 $
*
*/
@@ -60,7 +60,7 @@ class admin_core_ajax_livesearch extends ipsAjaxCommand
// Init
//-----------------------------------------
$search_term = $this->request['search_term'];
$search_term = IPSText::convertCharsets( $this->request['search_term'], 'utf-8', IPS_DOC_CHAR_SET );
$results = array();
$results = array( 'members' => array(), 'groups' => array(), 'groupLangs' => false, 'settings' => array(), 'forums' => array(), 'location' => array() );
@@ -100,7 +100,13 @@ class admin_core_ajax_livesearch extends ipsAjaxCommand
*/
protected function _getMembers( $term, $results )
{
$term = mb_strtolower($term);
if ( !$this->registry->getClass('class_permissions')->checkPermission( 'member_edit', 'members', 'members' ) )
{
$results['members'] = array();
return $results;
}
$term = strtolower($term);
$this->DB->build( array('select' => 'm.*, pp.*, g.g_title',
'from' => array('members' => 'm'),
@@ -122,11 +128,11 @@ class admin_core_ajax_livesearch extends ipsAjaxCommand
$member = $r = IPSMember::buildProfilePhoto( $member );
$r = array();
if( $member['members_l_display_name'] AND mb_strpos( $term, $member['members_l_display_name'] ) !== false )
if( $member['members_l_display_name'] AND strpos( $term, $member['members_l_display_name'] ) !== false )
{
$r['_matched'] = 'members_display_name';
}
else if( $member['members_l_username'] AND mb_strpos( $term, $member['members_l_username'] ) !== false )
else if( $member['members_l_username'] AND strpos( $term, $member['members_l_username'] ) !== false )
{
$r['_matched'] = 'name';
}
@@ -157,7 +163,13 @@ class admin_core_ajax_livesearch extends ipsAjaxCommand
*/
protected function _checkGroups( $term, $results )
{
$term = mb_strtolower($term);
if ( !$this->registry->getClass('class_permissions')->checkPermission( 'groups_edit', 'members', 'groups' ) )
{
$results['groups'] = array();
return $results;
}
$term = strtolower($term);
$this->registry->class_localization->loadLanguageFile( array( 'admin_groups' ), 'members' );
$this->registry->class_localization->loadLanguageFile( array( 'admin_forums' ), 'forums' );
@@ -167,7 +179,7 @@ class admin_core_ajax_livesearch extends ipsAjaxCommand
foreach( $this->lang->words as $k => $v )
{
if( strpos( $k, 'gf_' ) !== false AND mb_strpos( $v, $term ) !== false )
if( strpos( $k, 'gf_' ) !== false AND strpos( $v, $term ) !== false )
{
IPSDebug::fireBug( 'info', array( 'Group key found: ' . $k . ': ' . $v ) );
@@ -185,7 +197,7 @@ class admin_core_ajax_livesearch extends ipsAjaxCommand
{
$_term = preg_quote( $term, '#' );
if ( preg_match( "#" . $_term . "#iu", $data['g_title'] ) )
if ( preg_match( "#" . $_term . "#i", $data['g_title'] ) )
{
$results['groups'][] = array(
'name' => IPSMember::makeNameFormatted( $data['g_title'], $data['g_id'] ),
@@ -207,7 +219,13 @@ class admin_core_ajax_livesearch extends ipsAjaxCommand
*/
protected function _checkForums( $term, $results )
{
$term = mb_strtolower($term);
if ( !$this->registry->getClass('class_permissions')->checkPermission( 'forums_edit', 'forums', 'forums' ) )
{
$results['forums'] = array();
return $results;
}
$term = strtolower($term);
$results['forums'] = false;
/* Fetch forums lib */
@@ -221,9 +239,9 @@ class admin_core_ajax_livesearch extends ipsAjaxCommand
{
$_term = preg_quote( $term, '#' );
if ( preg_match( "#" . $_term . "#iu", $data['name'] ) )
if ( preg_match( "#" . $_term . "#i", $data['name'] ) )
{
$data['extra'] = ( ( $data['posts'] == null ) ? 0 : $data['posts'] ) . " сообщений";
$data['extra'] = ( ( $data['posts'] == null ) ? 0 : $data['posts'] ) . " posts";
$data['url'] = $this->settings['_base_url']."&amp;app=forums&amp;module=forums&amp;section=forums&amp;do=edit&amp;f=".$data['id'];
$results['forums'][] = $data;
}
@@ -241,7 +259,13 @@ class admin_core_ajax_livesearch extends ipsAjaxCommand
*/
protected function _getSettings( $term, $results )
{
$term = mb_strtolower($term);
if ( !$this->registry->getClass('class_permissions')->checkPermission( 'settings_manage', 'core', 'settings' ) )
{
$results['settings'] = array();
return $results;
}
$term = strtolower($term);
if( !IN_DEV )
{
@@ -283,7 +307,13 @@ class admin_core_ajax_livesearch extends ipsAjaxCommand
*/
protected function _checkNexus( $term, $results )
{
$textTerm = $this->DB->addSlashes( mb_strtolower( $term ) );
if ( !$this->registry->getClass('class_permissions')->checkForAppAccess('nexus') )
{
$results['nexus'] = array();
return $results;
}
$textTerm = $this->DB->addSlashes( strtolower( $term ) );
$intTerm = intval( $term );
$encodedTerm = urlencode( $encodedTerm );
@@ -298,27 +328,38 @@ class admin_core_ajax_livesearch extends ipsAjaxCommand
if ( (string) $term == (string) $intTerm )
{
/* Invoice? */
if ( $this->registry->getClass('class_permissions')->checkPermission( 'invoices_manage', 'nexus', 'payments' ) )
{
$invoice = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'nexus_invoices', 'where' => "i_id={$intTerm}" ) );
if ( $invoice['i_id'] )
{
$tempResults['invoice'] = array( 'name' => $invoice['i_title'], 'url' => $this->settings['_base_url']."&amp;app=nexus&amp;module=payments&amp;section=invoices&amp;do=view_invoice&amp;id={$invoice['i_id']}", 'img' => $this->settings['base_acp_url'] . '/applications_addon/ips/nexus/skin_cp/images/customers/invoice.png' );
}
}
/* Purchase? */
if ( $this->registry->getClass('class_permissions')->checkPermission( 'purchases_view', 'nexus', 'payments' ) )
{
$purchase = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'nexus_purchases', 'where' => "ps_id={$intTerm}" ) );
if ( $purchase['ps_id'] )
{
$tempResults['purchase'] = array( 'name' => $purchase['ps_name'], 'url' => $this->settings['_base_url']."&amp;app=nexus&amp;module=payments&amp;section=purchases&amp;id={$purchase['ps_id']}", 'img' => $this->settings['base_acp_url'] . '/applications_addon/ips/nexus/skin_cp/images/customers/purchase.png' );
}
}
/* Support */
if ( $this->registry->getClass('class_permissions')->checkPermission( 'sr_view', 'nexus', 'tickets' ) )
{
$support = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'nexus_support_requests', 'where' => "r_id={$intTerm}" ) );
if ( $support['r_id'] )
{
$tempResults['support'] = array( 'name' => $support['r_title'], 'url' => $this->settings['_base_url']."&amp;app=nexus&amp;module=tickets&amp;section=view&amp;id={$support['r_id']}", 'img' => $this->settings['base_acp_url'] . '/applications_addon/ips/nexus/skin_cp/images/customers/support.png' );
}
}
/* Customer */
if ( $this->registry->getClass('class_permissions')->checkForModuleAccess( 'nexus', 'customers' ) )
{
$customer = $this->DB->buildAndFetch( array( 'select' => 'member_id, members_display_name', 'from' => 'members', 'where' => "member_id={$intTerm}" ) );
if ( $customer['member_id'] )
{
@@ -329,6 +370,17 @@ class admin_core_ajax_livesearch extends ipsAjaxCommand
$tempResults['member'] = array( 'name' => $customer['members_display_name'], 'url' => $this->settings['_base_url']."&amp;app=nexus&amp;module=customers&amp;section=view&amp;id={$customer['member_id']}", 'img' => $this->settings['base_acp_url'] . '/applications_addon/ips/nexus/skin_cp/images/customers/info.png' );
}
}
/* Transaction? */
if ( $this->registry->getClass('class_permissions')->checkPermission( 'transactions_manage', 'nexus', 'payments' ) )
{
$transaction = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'nexus_transactions', 'where' => "t_id={$intTerm}" ) );
if ( $transaction['t_id'] )
{
$tempResults['transactions'] = array( 'name' => $transaction['t_id'], 'url' => $this->settings['_base_url']."&amp;app=nexus&amp;module=payments&amp;section=transactions&amp;do=view&amp;id={$transaction['i_id']}", 'img' => $this->settings['base_acp_url'] . '/applications_addon/ips/nexus/skin_cp/images/customers/transaction.png' );
}
}
}
@@ -339,13 +391,18 @@ class admin_core_ajax_livesearch extends ipsAjaxCommand
else
{
/* License Key */
if ( $this->registry->getClass('class_permissions')->checkPermission( 'purchases_view', 'nexus', 'payments' ) )
{
$lkey = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'nexus_licensekeys', 'where' => $this->DB->buildLower('lkey_key') ."='{$textTerm}'" ) );
if ( $lkey['lkey_key'] )
{
$tempResults['lkey'] = array( 'name' => $lkey['lkey_key'], 'url' => $this->settings['_base_url']."&amp;app=nexus&amp;module=payments&amp;section=purchases&amp;id={$lkey['lkey_purchase']}", 'img' => $this->settings['base_acp_url'] . '/applications_addon/ips/nexus/skin_cp/images/customers/lkey.png' );
}
}
/* Customers */
if ( $this->registry->getClass('class_permissions')->checkForModuleAccess( 'nexus', 'customers' ) )
{
$customer = $this->DB->buildAndFetch( array( 'select' => 'count(*) as count', 'from' => 'members', 'where' => $this->DB->buildLower('email') ." LIKE '%{$textTerm}%'" ) );
if ( $customer['count'] )
{
@@ -383,8 +440,11 @@ class admin_core_ajax_livesearch extends ipsAjaxCommand
}
}
}
}
/* Hosting Accounts */
if ( $this->registry->getClass('class_permissions')->checkPermission( 'purchases_view', 'nexus', 'payments' ) )
{
if ( strpos( $textTerm, '.' ) === FALSE )
{
$hosting = $this->DB->buildAndFetch( array( 'select' => 'count(*) as count', 'from' => 'nexus_hosting_accounts', 'where' => $this->DB->buildLower('account_username') . " LIKE '%{$textTerm}%'" ) );
@@ -428,13 +488,14 @@ class admin_core_ajax_livesearch extends ipsAjaxCommand
}
}
}
}
//-----------------------------------------
// Return results
//-----------------------------------------
foreach ( array( 'invoice', 'purchase', 'lkey', 'support', 'member', 'hosting' ) as $k )
foreach ( array( 'invoice', 'purchase', 'transactions', 'lkey', 'support', 'member', 'hosting' ) as $k )
{
if ( isset( $tempResults[ $k ] ) )
{
@@ -466,26 +527,28 @@ class admin_core_ajax_livesearch extends ipsAjaxCommand
{
foreach( $this->cache->getCache('app_menu_cache') as $app => $cache )
{
if( IPSLib::appIsInstalled( $app ) )
if( IPSLib::appIsInstalled( $app ) and $this->registry->getClass('class_permissions')->checkForAppAccess( $app ) )
{
foreach( $cache as $entry )
{
if( count($entry['items']) )
{
foreach( $entry['items'] as $item )
{
if ( $this->registry->getClass('class_permissions')->checkForModuleAccess( $app, $item['module'] ) and ( !$item['rolekey'] or $this->registry->getClass('class_permissions')->checkPermission( $item['rolekey'], $app, $item['module'] ) ) )
{
if( $item['section'] )
{
$item['url'] = "section={$item['section']}&amp;" . $item['url'];
}
if( isset($item['keywords']) AND mb_stripos( $item['keywords'], $term ) !== false )
if( isset($item['keywords']) AND stripos( $item['keywords'], $term ) !== false )
{
$item['name'] = $item['title'];
$item['url'] = $this->settings['_base_url']."&amp;app={$app}&amp;module={$item['module']}&amp;{$item['url']}";
$results['location'][] = $item;
}
else if( mb_stripos( $item['title'], $term ) !== false )
else if( stripos( $item['title'], $term ) !== false )
{
$item['name'] = $item['title'];
$item['url'] = $this->settings['_base_url']."&amp;app={$app}&amp;module={$item['module']}&amp;{$item['url']}";
@@ -496,6 +559,7 @@ class admin_core_ajax_livesearch extends ipsAjaxCommand
}
}
}
}
return $results;
}
@@ -3,21 +3,21 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* AJAX Functions For applications/core/js/ipb3CSS.js file
* Last Updated: $Date: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* Author: Matt Mecham
*
* @author $Author: ips_terabyte $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 8644 $
* @version $Revision: 10914 $
*/
@@ -3,17 +3,17 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* AJAX Functions For applications/core/js/ipb3CSS.js file
* Last Updated: $Date: 2011-05-05 12:03:47 +0100 (Thu, 05 May 2011) $
* </pre>
*
* @author $Author: ips_terabyte $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 8644 $
*/
@@ -3,11 +3,11 @@
* @file tabs.php AJAX storage of tab order preference
*~TERABYTE_DOC_READY~
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
* $License: This is NULLED!
* $License: http://www.invisionpower.com/company/standards.php#license$
* $Author: bfarber $
* @since 8th Feb 2011
* $LastChangedDate: 2011-03-10 16:00:38 -0500 (Thu, 10 Mar 2011) $
* @version v3.2.3
* @version v3.3.4
* $Revision: 8021 $
*/
@@ -3,21 +3,21 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* AJAX Functions For applications/core/js/ipb3Templates.js file
* Last Updated: $Date: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* Author: Matt Mecham
*
* @author $Author: ips_terabyte $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 8644 $
* @version $Revision: 10914 $
*/
@@ -251,16 +251,16 @@ class admin_core_ajax_templatediff extends ipsAjaxCommand
{
if ( $item['change_final_content'] )
{
$_desc .= ', <strong>' . $item['_conflicts'] . '</strong>' . $this->lang->words['ajax_resolvedconflicts'];
$_desc .= ', <strong>' . $item['_conflicts'] . '</strong>' . ' ' . $this->lang->words['ajax_resolvedconflicts'];
}
else
{
$_desc .= ', <strong>' . $item['_conflicts'] . '</strong>' . $this->lang->words['ajax_mergeconflicts'];
$_desc .= ', <strong>' . $item['_conflicts'] . '</strong>' . ' ' . $this->lang->words['ajax_mergeconflicts'];
}
}
else
{
$_desc .= ',' . $this->lang->words['ajax_noconflicts'];
$_desc .= ',' . ' ' . $this->lang->words['ajax_noconflicts'];
}
if ( $item['change_changes_applied'] )
@@ -3,21 +3,21 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* AJAX Functions For applications/core/js/ipb3Templates.js file
* Last Updated: $Date: 2011-07-12 17:54:40 -0400 (Tue, 12 Jul 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* Author: Matt Mecham
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 9218 $
* @version $Revision: 10914 $
*/
@@ -3,21 +3,21 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* AJAX Functions For applications/core/js/ipb3Templates.js file
* Last Updated: $Date: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* Author: Matt Mecham
*
* @author $Author: ips_terabyte $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 8644 $
* @version $Revision: 10914 $
*/
@@ -3,21 +3,21 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* AJAX Functions For applications/core/js/ipb3CSS.js file
* Last Updated: $Date: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* Author: Matt Mecham
*
* @author $Author: ips_terabyte $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 8644 $
* @version $Revision: 10914 $
*/
@@ -1,20 +1,14 @@
<?php
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* Group management
* Last Updated: $Date: 2011-09-09 19:44:48 -0400 (Fri, 09 Sep 2011) $
* </pre>
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @since Monday 15th January 2007 (15:01)
* @version $Revision: 9476 $
* @file applications.php Applications management
*~TERABYTE_DOC_READY~
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
* $License: http://www.invisionpower.com/company/standards.php#license$
* $Author: bfarber $
* @since 15 January 2007
* $LastChangedDate: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* @version v3.3.4
* $Revision: 10914 $
*/
if ( ! defined( 'IN_ACP' ) )
@@ -23,34 +17,39 @@ if ( ! defined( 'IN_ACP' ) )
exit();
}
/**
*
* @class admin_core_applications_applications
* @brief Applications management
*/
class admin_core_applications_applications extends ipsCommand
{
/**
* Skin object
* Skin object shortcut
*
* @var object Skin templates
* @var $html
*/
public $html;
/**
* Shortcut for url
* String for the screen url bit
*
* @var string URL shortcut
* @var $form_code
*/
public $form_code;
public $form_code = '';
/**
* Shortcut for url (javascript)
* String for the JS url bit
*
* @var string JS URL shortcut
* @var $form_code_js
*/
public $form_code_js;
public $form_code_js = '';
/**
* Main class entry point
* Main function executed automatically by the controller
*
* @param object ipsRegistry reference
* @return @e void [Outputs to screen]
* @param object $registry Registry object
* @return @e void
*/
public function doExecute( ipsRegistry $registry )
{
@@ -58,15 +57,9 @@ class admin_core_applications_applications extends ipsCommand
// Load skin
//-----------------------------------------
$this->html = $this->registry->output->loadTemplate( 'cp_skin_applications' );
$this->registry->class_localization->loadLanguageFile( array( 'admin_applications' ) );
//-----------------------------------------
// Set up stuff
//-----------------------------------------
$this->form_code = $this->html->form_code = 'module=applications&amp;section=applications&amp;';
$this->form_code_js = $this->html->form_code_js = 'module=applications&section=applications&';
@@ -82,6 +75,9 @@ class admin_core_applications_applications extends ipsCommand
$this->request['do'] = 'applications_overview';
$this->applicationsOverview();
break;
case 'application_details' :
$this->applicationViewDetails();
break;
case 'application_manage_position' :
$this->registry->getClass( 'class_permissions' )->checkPermissionAutoMsg( 'app_manage' );
$this->applicationManagePosition();
@@ -194,17 +190,8 @@ class admin_core_applications_applications extends ipsCommand
*/
public function applicationToggle()
{
//--------------------------------------------
// INIT
//--------------------------------------------
$app_id = intval( $this->request['app_id'] );
//-----------------------------------------
// Got an application?
//-----------------------------------------
$application = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'core_applications', 'where' => 'app_id=' . $app_id ) );
/* Get application */
$application = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'core_applications', 'where' => 'app_id=' . intval( $this->request['app_id'] ) ) );
if ( ! $application['app_id'] )
{
@@ -216,8 +203,20 @@ class admin_core_applications_applications extends ipsCommand
$this->registry->output->showError( $this->lang->words['cannot_toggle_defaults'], 111161.1 );
}
$this->DB->update( 'core_applications', array( 'app_enabled' => $application['app_enabled'] ? 0 : 1 ), 'app_id=' . $app_id );
/* We're disabling the app? */
if ( $application['app_enabled'] )
{
$this->DB->update( 'core_applications', array( 'app_enabled' => 0, 'app_position' => 0 ), 'app_id=' . $application['app_id'] );
}
else
{
$appsCount = $this->DB->buildAndFetch( array( 'select' => 'COUNT(*) as total', 'from' => 'core_applications', 'where' => 'app_enabled=1' ) );
$appsCount['total'] = intval($appsCount['total']) + 1;
$this->DB->update( 'core_applications', array( 'app_enabled' => 1, 'app_position' => $appsCount['total'] ), 'app_id=' . $application['app_id'] );
}
/* Recache */
$this->moduleRecacheAll( 1 );
//-----------------------------------------
@@ -360,7 +359,6 @@ class admin_core_applications_applications extends ipsCommand
// Replace out the SQL details
//-----------------------------------------
$sphinxTemplate = str_replace( "<!--SPHINX_CONF_HOST-->", ipsRegistry::$settings['sql_host'], $sphinxTemplate );
$sphinxTemplate = str_replace( "<!--SPHINX_CONF_USER-->", ipsRegistry::$settings['sql_user'], $sphinxTemplate );
$sphinxTemplate = str_replace( "<!--SPHINX_CONF_PASS-->", ipsRegistry::$settings['sql_pass'], $sphinxTemplate );
@@ -393,6 +391,8 @@ class admin_core_applications_applications extends ipsCommand
}
}
$appSphinxTemplate = str_replace( "<!--SPHINX_DB_SET_NAMES-->", ( ! empty( ipsRegistry::$settings['sql_charset'] ) ) ? 'sql_query_pre = SET NAMES ' . ipsRegistry::$settings['sql_charset'] : '', $appSphinxTemplate );
$sphinxCompiled .= $appSphinxTemplate;
}
}
@@ -855,6 +855,8 @@ class admin_core_applications_applications extends ipsCommand
// Done...
//-----------------------------------------
/* Recache menu */
$this->applicationsMenuDataRecache();
if ( $return )
{
@@ -1204,13 +1206,11 @@ class admin_core_applications_applications extends ipsCommand
if ( ! $app_id )
{
$ajax->returnString( $this->lang->words['postform_badmd5'] );
exit();
}
if ( $this->registry->adminFunctions->checkSecurityKey( $this->request['md5check'], true ) === false )
{
$ajax->returnString( $this->lang->words['postform_badmd5'] );
exit();
}
//-----------------------------------------
@@ -1248,10 +1248,15 @@ class admin_core_applications_applications extends ipsCommand
//-----------------------------------------
// Load known modules
//-----------------------------------------
$this->DB->build( array( 'select' => 'm.*', 'from' => array( 'core_sys_module' => 'm' ), 'where' => 'm.sys_module_visible=1', 'order' => 'a.app_position, m.sys_module_position ASC', 'add_join' => array( array( 'select' => 'a.*', 'from' => array( 'core_applications' => 'a' ), 'where' => 'm.sys_module_application=a.app_directory', 'type' => 'inner' ) ) ) );
$this->DB->build( array( 'select' => 'm.*',
'from' => array( 'core_sys_module' => 'm' ),
'where' => 'm.sys_module_visible=1',
'order' => 'a.app_position, m.sys_module_position ASC',
'add_join' => array( array( 'select' => 'a.*',
'from' => array( 'core_applications' => 'a' ),
'where' => 'm.sys_module_application=a.app_directory',
'type' => 'inner' ) )
) );
$this->DB->execute();
while ( $row = $this->DB->fetch() )
@@ -1266,7 +1271,7 @@ class admin_core_applications_applications extends ipsCommand
}
}
$modules[$row['sys_module_application']][] = $_row;
$modules[ $row['sys_module_application'] ][] = $_row;
}
$this->cache->setCache( 'module_cache', $modules, array( 'array' => 1 ) );
@@ -1462,6 +1467,31 @@ class admin_core_applications_applications extends ipsCommand
$this->DB->delete( 'core_sys_settings_titles', "conf_title_app='{$application['app_directory']}'" );
$settingsFile = IPSLib::getAppDir( $application['app_directory'] ) . '/xml/' . $application['app_directory'] . '_settings.xml';
if( is_file( $settingsFile ) )
{
require_once( IPS_KERNEL_PATH.'classXML.php' );/*noLibHook*/
$xml = new classXML( IPS_DOC_CHAR_SET );
$xml->load( $settingsFile );
$keys = array();
foreach( $xml->fetchElements('setting') as $setting )
{
$entry = $xml->fetchElementsFromRecord( $setting );
if ( $entry['conf_is_title'] )
{
continue;
}
$keys[] = "'{$entry['conf_key']}'";
}
if ( !empty( $keys ) )
{
$this->DB->delete( 'core_sys_conf_settings', 'conf_key IN(' . implode( ',', $keys ) . ')' );
}
}
//-----------------------------------------
// Remove Application Caches
//-----------------------------------------
@@ -1487,7 +1517,6 @@ class admin_core_applications_applications extends ipsCommand
// Remove tables
//-----------------------------------------
$_file = IPSLib::getAppDir( $application['app_directory'] ) . '/setup/versions/install/sql/' . $application['app_directory'] . '_' . ipsRegistry::dbFunctions()->getDriverType() . '_tables.php';
if ( is_file( $_file ) )
@@ -1501,7 +1530,6 @@ class admin_core_applications_applications extends ipsCommand
// Capture create tables first
//-----------------------------------------
preg_match( "/CREATE TABLE (\S+)(\s)?\(/", $q, $match );
if ( $match[1] )
@@ -1514,7 +1542,6 @@ class admin_core_applications_applications extends ipsCommand
// Then capture alter tables
//-----------------------------------------
preg_match( "/ALTER TABLE (\S+)\sADD\s(\S+)\s/i", $q, $match );
if ( $match[1] and $match[2] )
@@ -1529,7 +1556,6 @@ class admin_core_applications_applications extends ipsCommand
// Check for uninstall sql
//-----------------------------------------
/* Any "extra" configs required for this driver? */
if ( is_file( IPS_ROOT_PATH . 'setup/sql/' . $this->settings['sql_driver'] . '_install.php' ) )
{
@@ -1569,7 +1595,7 @@ class admin_core_applications_applications extends ipsCommand
$this->DB->delete( 'permission_index', "app='{$application['app_directory']}'" );
$this->DB->delete( 'reputation_index', "app='{$application['app_directory']}'" );
$this->DB->delete( 'reputation_cache', "app='{$application['app_directory']}'" );
$this->DB->delete( 'tags_index', "app='{$application['app_directory']}'" );
$this->DB->delete( 'core_tags', "tag_meta_app='{$application['app_directory']}'" );
$this->DB->delete( 'faq', "app='{$application['app_directory']}'" );
$this->DB->delete( 'custom_bbcode', "bbcode_app='{$application['app_directory']}'" );
$this->DB->delete( 'upgrade_history', "upgrade_app='{$application['app_directory']}'" );
@@ -2037,9 +2063,11 @@ XML;
{
/* Init vars */
$app_title = trim( $this->request['app_title'] );
$app_public = trim( $this->request['app_public_title'] );
$app_directory = trim( $this->request['app_directory'] );
$app_enabled = intval( $this->request['app_enabled'] );
$application = array();
$sphinxRebuild = false;
/* Editing? */
if ( $type == 'edit' )
@@ -2071,13 +2099,24 @@ XML;
return;
}
if ( ! $app_enabled && in_array( $app_directory, array( 'core', 'forums', 'members' ) ) )
if ( ( empty($app_enabled) || empty($app_public) ) && in_array( $app_directory, array( 'core', 'forums', 'members' ) ) )
{
$this->registry->output->showError( $this->lang->words['cannot_toggle_defaults'], 111161.2 );
}
/* $setup update array */
$array = array( 'app_title' => $app_title, 'app_public_title' => trim( $this->request['app_public_title'] ), 'app_enabled' => $app_enabled, 'app_hide_tab' => intval( $this->request['app_hide_tab'] ), 'app_description' => trim( $this->request['app_description'] ), 'app_author' => trim( $this->request['app_author'] ), 'app_version' => trim( $this->request['app_version'] ), 'app_directory' => $app_directory, 'app_website' => trim( $this->request['app_website'] ), 'app_update_check' => trim( $this->request['app_update_check'] ), 'app_global_caches' => ( is_array( $this->request['app_global_caches'] ) && count( $this->request['app_global_caches'] ) ) ? implode( ',', $this->request['app_global_caches'] ) : '', 'app_tab_groups' => ( is_array( $this->request['app_tab_groups'] ) && count( $this->request['app_tab_groups'] ) ) ? implode( ',', $this->request['app_tab_groups'] ) : '' );
/* $etup update array */
$array = array( 'app_title' => $app_title,
'app_public_title' => $app_public,
'app_enabled' => $app_enabled,
'app_hide_tab' => intval( $this->request['app_hide_tab'] ),
'app_description' => trim( $this->request['app_description'] ),
'app_author' => trim( $this->request['app_author'] ),
'app_version' => trim( $this->request['app_version'] ),
'app_directory' => $app_directory,
'app_website' => trim( $this->request['app_website'] ),
'app_update_check' => trim( $this->request['app_update_check'] ),
'app_global_caches' => ( is_array( $this->request['app_global_caches'] ) && count( $this->request['app_global_caches'] ) ) ? implode( ',', $this->request['app_global_caches'] ) : '',
'app_tab_groups' => ( is_array( $this->request['app_tab_groups'] ) && count( $this->request['app_tab_groups'] ) ) ? implode( ',', $this->request['app_tab_groups'] ) : '' );
//-----------------------------------------
// IN DEV?
@@ -2096,24 +2135,41 @@ XML;
if ( $type == 'add' )
{
$array['app_added'] = time();
$array['app_added'] = IPS_UNIX_TIME_NOW;
$array['app_location'] = 'other';
$max = $this->DB->buildAndFetch( array( 'select' => 'MAX(app_position) as position', 'from' => 'core_applications' ) );
$array['app_position'] = $max['position'] + 1;
$array['app_position'] = intval($max['position']) + 1;
$this->DB->insert( 'core_applications', $array );
$this->registry->output->global_message = $this->lang->words['a_newapp'];
}
else
{
/* We're disabling the app? */
if ( empty($app_enabled) )
{
$array['app_position'] = 0;
}
else
{
if ( empty($application['app_enabled']) )
{
$appsCount = $this->DB->buildAndFetch( array( 'select' => 'COUNT(*) as total', 'from' => 'core_applications', 'where' => 'app_enabled=1' ) );
$array['app_position'] = $appsCount['total'] + 1;
}
}
/* Update the application record */
$this->DB->update( 'core_applications', $array, 'app_id=' . $application['app_id'] );
/* Update modules and tasks, if the application directory changed */
if ( $application['app_directory'] != $app_directory )
{
$sphinxRebuild = true;
$this->DB->update( 'task_manager', array( 'task_application' => $app_directory ), "task_application='{$application['app_directory']}'" );
$this->DB->update( 'core_sys_module', array( 'sys_module_application' => $app_directory ), "sys_module_application='{$application['app_directory']}'" );
$this->DB->update( 'admin_logs', array( 'appcomponent' => $app_directory ), "appcomponent='{$application['app_directory']}'" );
@@ -2134,7 +2190,6 @@ XML;
$this->DB->update( 'reputation_index', array( 'app' => $app_directory ), "app='{$application['app_directory']}'" );
$this->DB->update( 'skin_css', array( 'css_app' => $app_directory ), "css_app='{$application['app_directory']}'" );
$this->DB->update( 'skin_css_previous', array( 'p_css_app' => $app_directory ), "p_css_app='{$application['app_directory']}'" );
$this->DB->update( 'tags_index', array( 'app' => $app_directory ), "app='{$application['app_directory']}'" );
$this->DB->update( 'upgrade_history', array( 'upgrade_app' => $app_directory ), "upgrade_app='{$application['app_directory']}'" );
}
@@ -2142,6 +2197,12 @@ XML;
$this->registry->output->global_message = $this->lang->words['a_editappdone'];
}
/* Have we toggled this? */
if ( $app_enabled != $application['app_enabled'] )
{
$sphinxRebuild = true;
}
//-----------------------------------------
// Recache
//-----------------------------------------
@@ -2180,8 +2241,7 @@ XML;
// Sphinx involved?
//-----------------------------------------
if ( $this->settings['search_method'] == 'sphinx' )
if ( $sphinxRebuild AND $this->settings['search_method'] == 'sphinx' && is_file( IPSLib::getAppDir( $app_directory ) . '/extensions/sphinxTemplate.php' ) )
{
$this->registry->output->global_message .= sprintf( $this->lang->words['rebuild_sphinx'], $this->settings['_base_url'] );
}
@@ -2201,12 +2261,12 @@ XML;
/* Init vars */
$application = array();
$form = array();
$defaultTab = '';
//-----------------------------------------
// Add or edit?
//-----------------------------------------
if ( $type == 'add' )
{
$formcode = 'application_add_do';
@@ -2273,8 +2333,14 @@ XML;
$form['app_global_caches'] = $this->registry->output->formMultiDropdown( 'app_global_caches[]', $_caches, isset( $_POST['app_global_caches'] ) ? $_POST['app_global_caches'] : explode( ',', $application['app_global_caches'] ), 15 );
/* Got a default tab specified? */
if ( !empty($this->request['_tab']) )
{
$defaultTab = trim($this->request['_tab']);
}
/* Output */
$this->registry->output->html .= $this->html->application_form( $form, $title, $formcode, $button, $application );
$this->registry->output->html .= $this->html->application_form( $form, $title, $formcode, $button, $application, $defaultTab );
}
/**
@@ -2300,32 +2366,31 @@ XML;
if ( $this->registry->adminFunctions->checkSecurityKey( $this->request['md5check'], true ) === false )
{
$ajax->returnString( $this->lang->words['postform_badmd5'] );
exit();
}
//-----------------------------------------
// Save new position
//-----------------------------------------
$position = 1;
if ( is_array( $this->request['apps'] ) and count( $this->request['apps'] ) )
if ( is_array($this->request['apps']) && count($this->request['apps']) )
{
/* Reset all apps to 0 temporarily */
$this->DB->update( 'core_applications', array( 'app_position' => 0 ) );
foreach( $this->request['apps'] as $this_id )
{
$location = $this->DB->buildAndFetch( array( 'select' => 'app_location', 'from' => 'core_applications', 'where' => 'app_id=' . $this_id ) );
$buffer = array( 'root' => 0, 'ips' => 100, 'other' => 200 );
$this->DB->update( 'core_applications', array( 'app_position' => $position + $buffer[$location['app_location']] ), 'app_id=' . $this_id );
$this->DB->update( 'core_applications', array( 'app_position' => $position ), 'app_id=' . intval($this_id) );
$position ++;
$position++;
}
}
$this->applicationsRecache();
$this->applicationsMenuDataRecache();
$ajax->returnString( 'OK' );
$ajax->returnString('OK');
}
/**
@@ -2337,19 +2402,26 @@ XML;
{
/* Init vars */
$folders = array();
$application = array();
$applications = array( 'enabled' => array( 'core' => array() ), 'disabled' => array() );
$_apps = array();
$uninstalled = array();
$checkUpdates = false;
$appsUpdates = 0;
$checkUpdates = ! empty( $this->request['checkUpdates'] ) ? true : false;
$message = '';
/* Get the setup class */
require_once ( IPS_ROOT_PATH . "setup/sources/base/setup.php" );/*noLibHook*/
/* Checking for updates? */
if ( !empty( $this->request['checkUpdates'] ) )
{
$checkUpdates = true;
/* Get hooks file for update check */
$classToLoad = IPSLib::loadActionOverloader( IPSLib::getAppDir( 'core' ) . '/modules_admin/applications/hooks.php', 'admin_core_applications_hooks' );
$hooksClass = new $classToLoad();
$hooksClass->makeRegistryShortcuts( $this->registry );
}
//-----------------------------------------
// Get DB applications
@@ -2375,7 +2447,7 @@ XML;
$row['app_update_available'] = array( 0 );
}
$_apps[IPSLib::getAppFolder( $row['app_directory'] ) . '/' . $row['app_directory']] = $row;
$_apps[ IPSLib::getAppFolder( $row['app_directory'] ) . '/' . $row['app_directory'] ] = $row;
}
//-----------------------------------------
@@ -2412,12 +2484,6 @@ XML;
{
$app_dir = $row['app_directory'];
//-----------------------------------------
// Enabled?
//-----------------------------------------
$row['_app_enabled'] = ( $row['app_enabled'] ) ? 'tick.png' : 'cross.png';
/* Version numbers */
$_a = ( $app_dir == 'forums' or $app_dir == 'members' ) ? 'core' : $app_dir;
$numbers = IPSSetUp::fetchAppVersionNumbers( $_a );
@@ -2441,7 +2507,7 @@ XML;
$phpVersion = str_replace( substr( $phpVersion, strrpos( $phpVersion, '.' ) ), '', $phpVersion );
$encoding = "Zend {$phpVersion}";
}
elseif ( substr( $file, 36, 7 ) == 'ionCube' )
elseif ( substr( $file, 36, 7 ) == 'ionCube' or substr( $file, 37, 7 ) == 'ionCube' )
{
$encoding = 'Ioncube';
}
@@ -2449,17 +2515,15 @@ XML;
$row['_human_current'] .= " ({$encoding})";
}
$application[$row['app_location']][] = $row;
if ( $row['app_enabled'] )
{
$applications['enabled'][ $row['app_directory'] ] = $row;
}
else
{
$applications['disabled'][ $row['app_directory'] ] = $row;
}
}
/* Make sure they are in the proper order, hacky but it works :) */
$__apps = array();
$__apps['root'] = $application['root'] ? $application['root'] : array();
$__apps['ips'] = $application['ips'] ? $application['ips'] : array();
$__apps['other'] = $application['other'] ? $application['other'] : array();
$application = $__apps;
//-----------------------------------------
// Uninstalled
@@ -2499,14 +2563,115 @@ XML;
}
/* Got updates to show? */
$message = NULL;
if ( $checkUpdates === true )
{
$message = ( $appsUpdates == 1 ) ? $this->lang->words['updates_string_single'] : sprintf( $this->lang->words['updates_string_more'], $appsUpdates );
}
/* Output */
$this->registry->output->html .= $this->html->applications_list( $application, $uninstalled, $message );
$this->registry->output->html .= $this->html->applications_list( $applications, $uninstalled, $message );
}
/**
* View details about an application
*
* @return @e void [Outputs to screen]
*/
protected function applicationViewDetails()
{
$id = intval($this->request['app_id']);
if( !$id )
{
$this->registry->output->showError( $this->lang->words['a_noid'], 11110.1 );
}
$appData = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'core_applications', 'where' => 'app_id=' . $id ) );
if( !$appData['app_id'] )
{
$this->registry->output->showError( $this->lang->words['a_nodetails'], 11111.1 );
}
/* Format dates */
$lastUpdate = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'upgrade_history', 'where' => "upgrade_app='{$appData['app_directory']}'", 'order' => 'upgrade_version_id DESC', 'limit' => array( 1 ) ) );
$appData['_installed'] = $this->registry->getClass('class_localization')->getDate( $appData['app_added'], 'DATE' );
$appData['_updated'] = ( $lastUpdate['upgrade_date'] > $appData['app_added'] ) ? $this->registry->getClass('class_localization')->getDate( $lastUpdate['upgrade_date'], 'DATE' ) : '--';
/* Get the setup class */
require_once ( IPS_ROOT_PATH . "setup/sources/base/setup.php" );/*noLibHook*/
/* Version numbers */
$_a = in_array( $appData['app_directory'], array( 'forums', 'members' ) ) ? 'core' : $appData['app_directory'];
$numbers = IPSSetUp::fetchAppVersionNumbers( $_a );
$appData['_human_version'] = $numbers['latest'][1];
$appData['_long_version'] = $numbers['latest'][0];
$appData['_human_current'] = $numbers['current'][1];
$appData['_long_current'] = $numbers['current'][0];
/* Got updates? */
if ( $appData['app_update_check'] )
{
/* Get hooks file for update check */
$classToLoad = IPSLib::loadActionOverloader( IPSLib::getAppDir( 'core' ) . '/modules_admin/applications/hooks.php', 'admin_core_applications_hooks' );
$hooksClass = new $classToLoad();
$hooksClass->makeRegistryShortcuts( $this->registry );
$appData['app_update_available'] = $hooksClass->_updateAvailable( $appData['app_update_check'], $appData['app_long_version'] );
}
else
{
$appData['app_update_available'] = array( 0 );
}
/* Get related hooks */
$hooks = array();
$this->DB->build( array( 'select' => '*',
'from' => 'core_hooks',
//This is a bit hackish but there's no way around...
'where' => 'hook_requirements LIKE \'%:"' . $this->DB->addSlashes( $appData['app_directory'] ) . '";a:%\'',
'order' => 'hook_id ASC'
) );
$outer = $this->DB->execute();
/* Got results? */
if ( $this->DB->getTotalRows( $outer ) )
{
/* Get hooks file for update check */
$classToLoad = IPSLib::loadActionOverloader( IPSLib::getAppDir( 'core' ) . '/modules_admin/applications/hooks.php', 'admin_core_applications_hooks' );
$hooksClass = new $classToLoad();
$hooksClass->makeRegistryShortcuts( $this->registry );
/* Loop */
while ( $rh = $this->DB->fetch( $outer ) )
{
/* Check requirements */
if( $rh['hook_enabled'] )
{
$rh['_require_errors'] = $hooksClass->checkHookRequirements( $rh );
}
$hooks[] = $rh;
}
}
/* Upgrade history */
$upgradeHistory = array();
$this->DB->build( array( 'select' => '*', 'from' => 'upgrade_history', 'where' => "upgrade_app='" . $this->DB->addSlashes( $appData['app_directory'] ) . "'", 'order' => 'upgrade_version_id DESC' ) );
$this->DB->execute();
while( $r = $this->DB->fetch() )
{
$upgradeHistory[] = $r;
}
/* Output */
$this->registry->output->html .= $this->html->application_details( $appData, $upgradeHistory, $hooks );
}
/**
@@ -2582,6 +2747,7 @@ XML;
}
$this->cache->setCache( 'app_cache', $apps, array( 'array' => 1 ) );
ipsRegistry::$applications = $apps;
/* Do we have an incomingEmails extension anywhere? */
$systemvars = $this->cache->getCache( 'systemvars' );
@@ -2592,11 +2758,12 @@ XML;
$tabs = array();
foreach( $apps as $dir => $data )
{
if ( ! $data['app_hide_tab'] )
{
# app_hide_tab is already checked in the output class
#if ( ! $data['app_hide_tab'] )
#{
$tabs[] = array( 'app' => $dir, 'groups' => $data['app_tab_groups'], 'module' => '', // Can't use IPSLib::getAppTitle() because of the IN_ACP check in it
'title' => $this->lang->words[$data['app_public_title']] ? $this->lang->words[$data['app_public_title']] : $data['app_public_title'] );
}
#}
if ( is_file( IPSLib::getAppDir( $dir ) . '/extensions/coreVariables.php' ) )
{
@@ -2648,11 +2815,11 @@ XML;
*/
protected function _getHasExtensionItemMarking( $appDir )
{
if ( is_file( IPSLib::getAppDir( $appDir ) . '/extensions/coreExtensions.php' ) )
$_file = IPSLib::getAppDir( $appDir ) . '/extensions/coreExtensions.php';
if ( is_file( $_file ) )
{
require_once( IPSLib::getAppDir( $appDir ) . '/extensions/coreExtensions.php' );/*noLibHook*/
if ( class_exists( 'itemMarking__' . $appDir ) )
$classToLoad = IPSLib::loadLibrary( $_file, 'itemMarking__'.$appDir, $appDir );
if ( class_exists( $classToLoad ) )
{
return true;
}
@@ -2794,7 +2961,7 @@ XML;
//-----------------------------------------
$this->DB->build( array( 'select' => '*', 'from' => 'core_sys_module', 'order' => 'sys_module_position ASC' ) );
$this->DB->build( array( 'select' => '*', 'from' => 'core_sys_module', 'where' => 'sys_module_visible=1 AND sys_module_admin=1', 'order' => 'sys_module_position ASC' ) );
$this->DB->execute();
while ( $module = $this->DB->fetch() )
@@ -3,19 +3,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Blog Application
* Last Updated: $Date: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: ips_terabyte $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since 27th Aug 2004
* @version $Revision: 8644 $
* @version $Revision: 10914 $
*
*/
@@ -37,6 +37,6 @@ class admin_core_applications_blog extends ipsCommand
{
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'purchase_app' );
$this->registry->output->showInsideIframe("http://myipb.in/products/blog/");
$this->registry->output->showInsideIframe("http://external.ipslink.com/ipboard30/landing/?p=blog");
}
}
@@ -2,18 +2,18 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Blog Application
* Last Updated: $Date: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: ips_terabyte $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @version $Revision: 8644 $
* @link http://www.invisionpower.com
* @version $Revision: 10914 $
*/
if ( ! defined( 'IN_ACP' ) )
@@ -34,6 +34,6 @@ class admin_core_applications_ccs extends ipsCommand
{
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'purchase_app' );
$this->registry->output->showInsideIframe("http://myipb.in/products/content/");
$this->registry->output->showInsideIframe("http://www.invisionpower.com/products/content/");
}
}
@@ -3,19 +3,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Download Manager Application
* Last Updated: $Date: 2011-05-11 12:57:46 -0400 (Wed, 11 May 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: ips_terabyte $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since 17 February 2003
* @version $Revision: 8727 $
* @version $Revision: 10914 $
*
*/
@@ -3,11 +3,11 @@
* @file defaultSection.php Define the default section for the 'applications' module
*~TERABYTE_DOC_READY~
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
* $License: This is NULLED!
* $License: http://www.invisionpower.com/company/standards.php#license$
* $Author: ips_terabyte $
* @since 20th February 2002
* $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $
* @version v3.2.3
* @version v3.3.4
* $Revision: 8655 $
*/
@@ -3,19 +3,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Download Manager Application
* Last Updated: $Date: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: ips_terabyte $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since Who knows...
* @version $Revision: 8644 $
* @version $Revision: 10914 $
*
*/
@@ -37,6 +37,6 @@ class admin_core_applications_downloads extends ipsCommand
{
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'purchase_app' );
$this->registry->output->showInsideIframe("http://myipb.in/products/downloads/");
$this->registry->output->showInsideIframe("http://www.invisionpower.com/products/downloads/");
}
}
@@ -3,19 +3,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Gallery Application
* Last Updated: $Date: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: ips_terabyte $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since Who knows...
* @version $Revision: 8644 $
* @version $Revision: 10914 $
*
*/
@@ -37,6 +37,6 @@ class admin_core_applications_gallery extends ipsCommand
{
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'purchase_app' );
$this->registry->output->showInsideIframe("http://myipb.in/products/gallery/");
$this->registry->output->showInsideIframe("http://www.invisionpower.com/products/gallery/");
}
}
@@ -2,19 +2,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Hooks Management
* Last Updated: $Date: 2011-10-07 22:31:51 -0400 (Fri, 07 Oct 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since 3.0.0
* @version $Revision: 9588 $
* @version $Revision: 10914 $
*/
if ( ! defined( 'IN_ACP' ) )
@@ -305,7 +305,6 @@ class admin_core_applications_hooks extends ipsCommand
if( $this->registry->adminFunctions->checkSecurityKey( $this->request['md5check'], true ) === false )
{
$ajax->returnString( $this->lang->words['postform_badmd5'] );
exit();
}
//-----------------------------------------
@@ -329,8 +328,7 @@ class admin_core_applications_hooks extends ipsCommand
$this->rebuildHooksCache();
$ajax->returnString( 'OK' );
exit();
$ajax->returnString('OK');
}
/**
@@ -373,10 +371,7 @@ class admin_core_applications_hooks extends ipsCommand
$skinCaching->flagSetForRecache();
/* Redirect */
$_msg = $this->registry->output->global_message;
$this->registry->output->global_message = '';
$this->registry->output->redirect( $this->settings['base_url'] . $this->form_code . '&amp;do=hooks_overview', $_msg );
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . $this->form_code . '&amp;do=hooks_overview' );
}
/**
@@ -576,6 +571,7 @@ class admin_core_applications_hooks extends ipsCommand
//-----------------------------------------
$custom = array();
$customClass = null;
foreach( $xml->fetchElements('hookextras_custom') as $node )
{
@@ -592,6 +588,26 @@ class admin_core_applications_hooks extends ipsCommand
}
}
/* Got any custom file to initialize? */
if ( $custom['filename'] && $custom['source'] )
{
# Our dirty trick to avoid saving the file on disk just yet...
$_custom = preg_replace( '#^(\s*)<\?(php)+#i', '', $custom['source'] );
eval($_custom);
$classname = str_replace( '.php', '', $custom['filename'] );
if( class_exists( $classname ) )
{
$customClass = new $classname( $this->registry );
if( method_exists( $customClass, 'pre_install' ) )
{
$customClass->pre_install();
}
}
}
//-----------------------------------------
// Set the settings
//-----------------------------------------
@@ -655,7 +671,7 @@ class admin_core_applications_hooks extends ipsCommand
'word_key' => $langbit['word_key'],
'word_default' => $langbit['word_default'],
'word_custom' => $langbit['word_custom'],
'word_js' => $langbit['word_js'],
'word_js' => intval($langbit['word_js']),
);
}
}
@@ -759,6 +775,24 @@ class admin_core_applications_hooks extends ipsCommand
}
}
//-----------------------------------------
// Set the Replacements
//-----------------------------------------
$replacements = array();
foreach( $xml->fetchElements('hookextras_replacements') as $node )
{
foreach( $xml->fetchElements('replacements', $node) as $_r )
{
$_r = $xml->fetchElementsFromRecord( $_r );
$replacements[] = array(
'replacement_key' => $_r['replacement_key'],
'replacement_content' => $_r['replacement_content'],
);
}
}
//-----------------------------------------
// Set the tasks
//-----------------------------------------
@@ -882,19 +916,8 @@ class admin_core_applications_hooks extends ipsCommand
$insertQueries = 0;
$cssInserted = 0;
$cssUpdated = 0;
//-----------------------------------------
// Need to recache skins?
//-----------------------------------------
foreach( $files as $_f )
{
if ( $_f['hook_type'] AND $_f['hook_type'] == 'templateHooks' )
{
$templateHooks = true;
break;
}
}
$replacementsInserted = 0;
$replacementsUpdated = 0;
//-----------------------------------------
// Insert/update DB records
@@ -965,6 +988,12 @@ class admin_core_applications_hooks extends ipsCommand
$this->DB->insert( 'core_hooks_files', $file );
$filesInserted++;
/* Need to recache skins? */
if ( $file['hook_type'] == 'templateHooks' )
{
$templateHooks = true;
}
}
}
@@ -972,10 +1001,12 @@ class admin_core_applications_hooks extends ipsCommand
// Put custom install/uninstall file
//-----------------------------------------
if( $custom['source'] AND $custom['filename'] )
if( is_object($customClass) )
{
file_put_contents( IPS_HOOKS_PATH . "install_" . $custom['filename'], $custom['source'] );
chmod( IPS_HOOKS_PATH . "install_" . $custom['filename'], IPS_FILE_PERMISSION );
$extra_data['display']['custom'] = $custom['filename'];
file_put_contents( IPS_HOOKS_PATH . 'install_' . $custom['filename'], $custom['source'] );
chmod( IPS_HOOKS_PATH . 'install_' . $custom['filename'], IPS_FILE_PERMISSION );
}
//-----------------------------------------
@@ -1199,7 +1230,7 @@ class admin_core_applications_hooks extends ipsCommand
{
$this->DB->insert( 'core_sys_module', $module );
$modulesInserted++;
$module_id = $this->DB->getInsertId();
$extra_data['modules'][] = ( $module['sys_module_admin'] ? 'admin' : 'public' ) . '-' . $module['sys_module_application'] . '-' . $module['sys_module_key'];
}
}
@@ -1348,6 +1379,44 @@ class admin_core_applications_hooks extends ipsCommand
}
}
//-----------------------------------------
// Skin Replacements
//-----------------------------------------
if( count( $replacements ) )
{
$bits = array();
$this->DB->build( array( 'select' => 'replacement_master_key, replacement_key', 'from' => 'skin_replacements' ) );
$this->DB->execute();
while( $r = $this->DB->fetch() )
{
$bits[ $r['replacement_master_key'] ][ $r['replacement_key'] ] = $r['replacement_key'];
}
foreach( $replacements as $entry )
{
if ( !isset( $bits[ $entry['replacement_master_key'] ] ) )
{
$entry['replacement_master_key'] = 'root';
}
if( in_array( $entry['replacement_key'], $bits[ $entry['replacement_master_key'] ] ) )
{
$this->DB->update( 'skin_replacements', $entry, "replacement_master_key='{$entry['replacement_master_key']}' AND replacement_key='{$entry['replacement_key']}'" );
$replacementsUpdated++;
}
else
{
$this->DB->insert( 'skin_replacements', $entry );
$replacementsInserted++;
$extra_data['replacements'][ $entry['replacement_key'] ] = $entry['replacement_key'];
}
}
}
//-----------------------------------------
// (7) Tasks
//-----------------------------------------
@@ -1491,25 +1560,15 @@ class admin_core_applications_hooks extends ipsCommand
}
// }
if( $custom['filename'] AND is_file( IPS_HOOKS_PATH . 'install_' . $custom['filename'] ) )
/* Got an install function to run too? */
if( is_object($customClass) )
{
require_once( IPS_HOOKS_PATH . 'install_' . $custom['filename'] );/*noLibHook*/
$classname = str_replace( '.php', '', $custom['filename'] );
if( class_exists( $classname ) )
if( method_exists( $customClass, 'install' ) )
{
$install = new $classname( $this->registry );
if( method_exists( $install, 'install' ) )
{
$install->install();
$customClass->install();
}
}
$extra_data['display']['custom'] = $custom['filename'];
}
if( count($extra_data) )
{
$this->DB->update( 'core_hooks', array( 'hook_extra_data' => serialize( $extra_data ) ), 'hook_id=' . $hook_id );
@@ -1530,9 +1589,8 @@ class admin_core_applications_hooks extends ipsCommand
if ( $addMessage )
{
$_tempMsg = <<<EOF
{$this->lang->words['h_followacts']}
<strong>{$this->lang->words['h_newhookin']}</strong>
<ul>
<li>{$this->lang->words['h_newhookin']}</li>
<li>{$filesInserted} {$this->lang->words['h_filesin']}</li>
<li>{$settingGroupsInserted} {$this->lang->words['h_settinggin']}</li>
<li>{$settingsInserted} {$this->lang->words['h_settingin']}</li>
@@ -1547,6 +1605,8 @@ class admin_core_applications_hooks extends ipsCommand
<li>{$templatesUpdated} {$this->lang->words['h_tempup']}</li>
<li>{$cssInserted} {$this->lang->words['h_cssin']}</li>
<li>{$cssUpdated} {$this->lang->words['h_cssup']}</li>
<li>{$replacementsInserted} {$this->lang->words['h_replacementsin']}</li>
<li>{$replacementsUpdated} {$this->lang->words['h_replacementsup']}</li>
<li>{$tasksInserted} {$this->lang->words['h_taskin']}</li>
<li>{$tasksUpdated} {$this->lang->words['h_taskup']}</li>
<li>{$createQueries} {$this->lang->words['h_dbcreated']}</li>
@@ -1640,7 +1700,7 @@ EOF;
$files = array();
$index = 1;
$this->DB->build( array( 'select' => '*', 'from' => 'core_hooks_files', 'where' => 'hook_hook_id=' . $id ) );
$this->DB->build( array( 'select' => '*', 'from' => 'core_hooks_files', 'where' => 'hook_hook_id=' . $id, 'order' => 'hook_file_id ASC' ) );
$this->DB->execute();
while( $r = $this->DB->fetch() )
@@ -1701,7 +1761,7 @@ EOF;
$source = is_file( IPS_HOOKS_PATH . $r['hook_file_stored'] ) ? file_get_contents( IPS_HOOKS_PATH . $r['hook_file_stored'] ) : '';
if( $r['hook_type'] == 'commandHooks' || $r['hook_type'] == 'libraryHooks' )
if ( !empty($source) && in_array( $r['hook_type'], array( 'skinHooks', 'commandHooks', 'libraryHooks' ) ) )
{
$source = $this->_cleanSource( $source );
}
@@ -1960,6 +2020,27 @@ EOF;
}
}
//-----------------------------------------
// Replacements
//-----------------------------------------
$xml->addElement( 'hookextras_replacements', 'hookexport' );
if( is_array( $extra_data['replacements'] ) AND count ( $extra_data['replacements'] ) )
{
$this->DB->build( array( 'select' => '*', 'from' => 'skin_replacements', 'where' => "replacement_key IN('" . implode( "','", $extra_data['replacements'] ) . "')", 'group' => 'replacement_key' ) );
$this->DB->execute();
while( $r = $this->DB->fetch() )
{
unset($r['replacement_id']);
unset($r['replacement_set_id']);
$xml->addElementAsRecord( 'hookextras_replacements', 'replacements', $r );
}
}
//-----------------------------------------
// Tasks
//-----------------------------------------
@@ -2139,6 +2220,24 @@ EOF;
return ( strpos( $return, '0' ) === 0 || strpos( $return, '1' ) === 0 ) ? explode( '|', $return ) : array( 0 );
}
/**
* Sorts hooks by their position
* (this is used to avoid a mysql filesort)
*
* @param array $a First hook data
* @param array $b Second hook data
* @return @e integer
*/
protected function sortHooksByPosition( $a, $b )
{
if ( $a['hook_position'] == $b['hook_position'] )
{
return 0;
}
return ( $a['hook_position'] < $b['hook_position'] ) ? -1 : 1;
}
/**
* Hooks overview
*
@@ -2147,14 +2246,16 @@ EOF;
public function _hooksOverview()
{
/* INI */
$installedHooks = array();
$uninstalledHooks = array();
$hooksFound = array( 'installed' => array(), 'uninstalled' => array() );
$hookwarnings = 0;
$hookUpdates = 0;
$checkUpdates = !empty( $this->request['checkUpdates'] ) ? true : false;
$message = '';
$confGroupIdsToLoad = array();
$confGroupKeysToLoad= array();
/* Get current hooks */
$this->DB->build( array( 'select' => '*', 'from' => 'core_hooks', 'order' => 'hook_position ASC' ) );
$this->DB->build( array( 'select' => '*', 'from' => 'core_hooks' ) );
$outer = $this->DB->execute();
while( $r = $this->DB->fetch($outer) )
@@ -2178,6 +2279,33 @@ EOF;
$r['hook_update_available'] = array( 0 );
}
/* Got some setting groups to take care of? */
$r['_has_setting_links'] = null;
$r['_hook_extra_data'] = IPSLib::isSerialized($r['hook_extra_data']) ? unserialize($r['hook_extra_data']) : array();
if ( is_array($r['_hook_extra_data']['settingGroups']) && count($r['_hook_extra_data']['settingGroups']) )
{
$r['_has_setting_links'] = array();
foreach( $r['_hook_extra_data']['settingGroups'] as $_group )
{
$confGroupKeysToLoad[ $_group ] = $_group;
}
}
if ( is_array($r['_hook_extra_data']['settings']) && count($r['_hook_extra_data']['settings']) )
{
$r['_has_setting_links'] = array();
$this->DB->build( array( 'select' => 'conf_group, conf_key', 'from' => 'core_sys_conf_settings', 'where' => "conf_key IN ('" . implode( "','", $r['_hook_extra_data']['settings'] ) . "')" ) );
$this->DB->execute();
while( $hsg = $this->DB->fetch() )
{
$confGroupIdsToLoad[ $hsg['conf_key'] ] = $hsg['conf_group'];
}
}
/* Check requirements */
$r['_require_errors'] = $this->checkHookRequirements( $r );
@@ -2189,23 +2317,89 @@ EOF;
$hookwarnings++;
}
$installedHooks[ $r['hook_id'] ] = $r;
$hooksFound['installed'][ $r['hook_id'] ] = $r;
}
else
{
$uninstalledHooks[ $r['hook_id'] ] = $r;
$hooksFound['uninstalled'][ $r['hook_id'] ] = $r;
}
}
/* Got groups to load? */
$where = array();
if ( count($confGroupKeysToLoad) )
{
$where[] = "conf_title_keyword IN ('" . implode( "','", $confGroupKeysToLoad ) . "')";
}
if ( count($confGroupIdsToLoad) )
{
$where[] = "conf_title_id IN (" . implode( ",", $confGroupIdsToLoad ) . ")";
}
if ( count($where) )
{
$confGroupsLoaded = array();
$this->DB->build( array( 'select' => '*', 'from' => 'core_sys_settings_titles', 'where' => implode( ' OR ', $where ) ) );
$this->DB->execute();
while( $gr = $this->DB->fetch() )
{
if ( empty($gr['conf_title_noshow']) )
{
$confGroupsLoaded['ids'][ $gr['conf_title_id'] ] = $gr;
$confGroupsLoaded['keys'][ $gr['conf_title_keyword'] ] = & $confGroupsLoaded['ids'][ $gr['conf_title_id'] ];
}
}
/* Merge back the data */
foreach( $hooksFound as $rk => $rt )
{
foreach( $rt as $sk => $st )
{
if ( is_array($st['_has_setting_links']) )
{
if ( is_array($st['_hook_extra_data']['settingGroups']) && count($st['_hook_extra_data']['settingGroups']) )
{
foreach( $st['_hook_extra_data']['settingGroups'] as $_group )
{
if ( isset($confGroupsLoaded['keys'][ $_group ]) )
{
$hooksFound[ $rk ][ $sk ]['_has_setting_links'][ $confGroupsLoaded['keys'][ $_group ]['conf_title_id'] ] = $confGroupsLoaded['keys'][ $_group ]['conf_title_title'];
}
}
}
if ( is_array($st['_hook_extra_data']['settings']) && count($st['_hook_extra_data']['settings']) )
{
foreach( $st['_hook_extra_data']['settings'] as $_id )
{
if ( isset($confGroupsLoaded['ids'][ $confGroupIdsToLoad[ $_id ] ]) )
{
$hooksFound[ $rk ][ $sk ]['_has_setting_links'][ $confGroupIdsToLoad[ $_id ] ] = $confGroupsLoaded['ids'][ $confGroupIdsToLoad[ $_id ] ]['conf_title_title'];
}
}
}
}
}
}
}
/* Got updates to show? */
$message = NULL;
if ( $checkUpdates === true )
{
$message = ( $hookUpdates == 1 ) ? $this->lang->words['updates_string_single'] : sprintf( $this->lang->words['updates_string_more'], $hookUpdates );
}
if ( count($hooksFound['installed']) )
{
uasort( $hooksFound['installed'], array( $this, 'sortHooksByPosition' ) );
}
/* Output */
$this->registry->output->html .= $this->html->hooksOverview( $installedHooks, $uninstalledHooks, $hookwarnings, $message );
$this->registry->output->html .= $this->html->hooksOverview( $hooksFound, $hookwarnings, $message );
}
/**
@@ -2230,7 +2424,7 @@ EOF;
/* Make sure there were active hooks */
if( ! count( $activeHookIds ) )
{
$this->registry->output->global_message = $this->lang->words['hook_disable_all_none'];;
$this->registry->output->global_message = $this->lang->words['hook_disable_all_none'];
$this->_hooksOverview();
return;
}
@@ -2262,7 +2456,7 @@ EOF;
/* Make sure there were active hooks */
if( ! count( $activeHookIds ) )
{
$this->registry->output->global_message = $this->lang->words['hook_disable_all_none'];
$this->registry->output->global_message = $this->lang->words['hook_enable_all_none'];
$this->_hooksOverview();
return;
}
@@ -2312,7 +2506,7 @@ EOF;
}
/* Do update */
$this->DB->update( 'core_hooks', array( 'hook_enabled' => 0 ), "hook_id={$hookData['hook_id']}" );
$this->DB->update( 'core_hooks', array( 'hook_enabled' => 0, 'hook_position' => 0 ), "hook_id={$hookData['hook_id']}" );
/* Rebuild cache */
$this->rebuildHooksCache();
@@ -2331,7 +2525,7 @@ EOF;
$skinCaching->flagSetForRecache();
/* Redirect */
$this->registry->output->global_message = $this->lang->words['hook_disabled'];
$this->registry->output->setMessage( $this->lang->words['h_hasbeendisabled'] );
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . $this->form_code . '&amp;do=hooks_overview' );
}
@@ -2399,7 +2593,7 @@ EOF;
*/
protected function _uninstallHook()
{
/* INI */
/* Init vars */
$hook_id = intval( $this->request['id'] );
$hook = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'core_hooks', 'where' => 'hook_id=' . $hook_id ) );
@@ -2411,6 +2605,32 @@ EOF;
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . $this->form_code . '&amp;do=hooks_overview' );
}
/* Got any custom file to initialize? */
$_customFile = '';
$customClass = null;
if ( $extra_data['display']['custom'] )
{
$_customFile = IPS_HOOKS_PATH . 'install_' . $extra_data['display']['custom'];
if( is_file( $_customFile ) )
{
require_once( $_customFile );/*noLibHook*/
$classname = str_replace( '.php', '', $extra_data['display']['custom'] );
if( class_exists( $classname ) )
{
$customClass = new $classname( $this->registry );
if( method_exists( $customClass, 'pre_uninstall' ) )
{
$customClass->pre_uninstall();
}
}
}
}
/* Get associated files */
$this->DB->build( array( 'select' => 'hook_file_stored', 'from' => 'core_hooks_files', 'where' => 'hook_hook_id=' . $hook_id ) );
$this->DB->execute();
@@ -2607,26 +2827,14 @@ EOF;
// Custom install/uninstall script?
//-----------------------------------------
if( $extra_data['display']['custom'] )
if ( $_customFile )
{
if( is_file( IPS_HOOKS_PATH . 'install_' . $extra_data['display']['custom'] ) )
if( is_object($customClass) && method_exists( $customClass, 'uninstall' ) )
{
require_once( IPS_HOOKS_PATH . 'install_' . $extra_data['display']['custom'] );/*noLibHook*/
$classname = str_replace( '.php', '', $extra_data['display']['custom'] );
if( class_exists( $classname ) )
{
$uninstall = new $classname( $this->registry );
if( method_exists( $uninstall, 'uninstall' ) )
{
$uninstall->uninstall();
}
$customClass->uninstall();
}
@unlink( IPS_HOOKS_PATH . 'install_' . $extra_data['display']['custom'] );
}
@unlink( $_customFile );
}
/* Delete main hook entry */
@@ -2696,8 +2904,35 @@ EOF;
if ( is_array($hookData['hook_requirements']['required_applications']) && count($hookData['hook_requirements']['required_applications']) )
{
/* Get the setup class */
require_once( IPS_ROOT_PATH . 'setup/sources/base/setup.php' );/*noLibHook*/
foreach( $hookData['hook_requirements']['required_applications'] as $appKey => $versionData )
{
/* Fetch and check versions */
if ( !isset($this->cachedVersions[ $appKey ]) )
{
$this->cachedVersions[ $appKey ] = IPSSetUp::fetchXmlAppVersions( $appKey );
}
$_versions = $this->cachedVersions[ $appKey ];
krsort($_versions);
/* Setup our default 'no version' value */
$versions = array( array( 0, $this->lang->words['h_any_version'] ) );
foreach( $_versions as $long => $human )
{
if ( $long < 30000 && in_array( $appKey, array( 'core', 'forums', 'members' ) ) )
{
continue;
}
$versions[] = array( $long, $human );
}
$versionData['_versions'] = $versions;
$requirements[ $appKey ] = $versionData;
}
}
@@ -2741,30 +2976,19 @@ EOF;
}
else
{
/* Format data for adding an hook.. */
/*foreach( array( 'hook_name', 'hook_desc', 'hook_key', 'hook_version_human', 'hook_version_long', 'hook_author', 'hook_email', 'hook_website', 'hook_update_check' ) as $_hook )
{
$hookData[ $_hook ] = $this->request[ $_hook ];
}
foreach( array( 'hook_php_version_min', 'hook_php_version_max' ) as $_version )
{
$hookData['hook_requirements'][ $_version ] = $this->request[ $_version ];
}*/
$action = 'do_create_hook';
}
/* Info */
foreach( array( 'hook_name', 'hook_desc', 'hook_key', 'hook_version_human', 'hook_version_long', 'hook_author', 'hook_email', 'hook_website', 'hook_update_check' ) as $_hook_key )
{
$form[ $_hook_key ] = $this->registry->output->formSimpleInput( $_hook_key , isset($_POST[ $_hook_key ]) ? $_POST[ $_hook_key ] : $hookData[ $_hook_key ], 60 );
$form[ $_hook_key ] = $this->registry->output->formSimpleInput( $_hook_key , isset($this->request[ $_hook_key ]) ? $this->request[ $_hook_key ] : $hookData[ $_hook_key ], 60 );
}
/* Requirements */
foreach( array( 'hook_php_version_min', 'hook_php_version_max' ) as $_version_key )
{
$form[ $_version_key ] = $this->registry->output->formSimpleInput( $_version_key , isset($_POST[ $_version_key ]) ? $_POST[ $_version_key ] : $hookData['hook_requirements'][ $_version_key ], 20 );
$form[ $_version_key ] = $this->registry->output->formSimpleInput( $_version_key , isset($this->request[ $_version_key ]) ? $this->request[ $_version_key ] : $hookData['hook_requirements'][ $_version_key ], 20 );
}
/* Setup the global caches DD */
@@ -2807,6 +3031,7 @@ EOF;
$newFiles = array();
$requireApp = array();
$_hookFiles = array();
$extraKey = '';
/* Get data if we are editing */
if( $type == 'edit' )
@@ -2824,6 +3049,8 @@ EOF;
{
$this->registry->output->showError( $this->lang->words['h_noedit'], 1119 );
}
$extraKey = ' AND hook_id != ' . $hookData['hook_id'];
}
/* Error Checking */
@@ -2832,13 +3059,30 @@ EOF;
$errors[] = $this->lang->words['hook_form_no_title'];
}
if( ! $this->request['hook_key'] )
if( empty( $this->request['hook_key'] ) )
{
$errors[] = $this->lang->words['hook_form_no_key'];
}
else
{
$keyCheck = $this->DB->buildAndFetch( array( 'select' => 'count(*) as found', 'from' => 'core_hooks', 'where' => "hook_key='" . $this->DB->addSlashes( $this->request['hook_key'] ) . "'" . $extraKey ) );
if ( $keyCheck['found'] > 0 )
{
$errors[] = $this->lang->words['hook_form_dupe_key'];
}
}
/* Got any errors? */
if ( is_array( $errors ) && count( $errors ) )
{
$this->registry->output->global_error = implode( '<br />', $errors );
$this->_hookForm();
return;
}
/* Not IN_DEV? */
if( !IN_DEV )
if ( ! IN_DEV )
{
$this->DB->build( array( 'select' => '*', 'from' => 'core_hooks_files', 'where' => 'hook_hook_id=' . intval($this->request['hook_id']) ) );
$this->DB->execute();
@@ -2850,33 +3094,29 @@ EOF;
}
/* Check for requirements */
if( is_array( $this->request['requireApp'] ) AND count( $this->request['requireApp'] ) )
if ( is_array( $this->request['requireApp'] ) AND count( $this->request['requireApp'] ) )
{
foreach( $this->request['requireApp'] as $_index => $require )
foreach( $this->request['requireApp'] as $_index => $app_key )
{
if( $require )
if ( $app_key )
{
$minVersion = intval($this->request['minVersion'][ $_index ]);/*noLibHook*/
$minVersion = intval($this->request['minVersion'][ $_index ]);
$maxVersion = intval($this->request['maxVersion'][ $_index ]);
// Let's not require a version, we can simply force an app to be installed regardless this way
//if ( $minVersion > 0 || $maxVersion > 0 )
//{
$requireApp[ $require ] = array( 'app_name' => ipsRegistry::$applications[ $require ]['app_title'],
$requireApp[ $app_key ] = array( 'app_name' => ipsRegistry::$applications[ $app_key ]['app_title'],
'min_version' => $minVersion,
'max_version' => $maxVersion
);/*noLibHook*/
//}
);
}
}
}
/* Check for files */
if( is_array( $this->request['file'] ) AND count( $this->request['file'] ) )
if ( is_array( $this->request['file'] ) AND count( $this->request['file'] ) )
{
foreach( $this->request['file'] as $index => $file )
{
if( $file )
if ( $file )
{
$newFiles[ $index ] = array('hook_file_real' => $file,
'hook_type' => $this->request['hook_type'][ $index ],
@@ -2897,7 +3137,7 @@ EOF;
* @link http://community.invisionpower.com/tracker/issue-22084-hook-edit-does-not-preserve-correct-name/
* We don't want to reset the stored name if you are not in developer mode
*/
if( IN_DEV )
if ( IN_DEV )
{
$newFiles[ $index ]['hook_file_stored'] = $file; // During import this is a random name, but for devs it's actual file
}
@@ -2909,16 +3149,18 @@ EOF;
}
}
if( is_array( $errors ) )
/* Get position */
if ( $type == 'add' )
{
$this->registry->output->global_message = implode( '<br>', $errors );
$this->_hookForm();
return;
}
/* Get new position */
$position = $this->DB->buildAndFetch( array( 'select' => 'MAX(hook_position) as newPos', 'from' => 'core_hooks' ) );
$position['newPos'] = intval($position['newPos']) + 1;
}
else
{
$position['newPos'] = $hookData['hook_position'];
}
$mainHookRecord = array('hook_name' => trim($this->request['hook_name']),
'hook_key' => substr( trim($this->request['hook_key']), 0, 32 ),
'hook_global_caches' => ( is_array($this->request['hook_global_caches']) && count($this->request['hook_global_caches']) ) ? implode(',', $this->request['hook_global_caches']) : '',
@@ -2932,7 +3174,7 @@ EOF;
'hook_enabled' => $type == 'add' ? 1 : $hookData['hook_enabled'],
'hook_installed' => $type == 'add' ? IPS_UNIX_TIME_NOW : $hookData['hook_installed'],
'hook_updated' => $type == 'add' ? 0 : IPS_UNIX_TIME_NOW,
'hook_position' => $type == 'add' ? $position['newPos'] + 1 : $hookData['hook_position'],
'hook_position' => $position['newPos'],
'hook_requirements' => serialize( array('required_applications' => $requireApp,
'hook_php_version_min' => trim($this->request['hook_php_version_min']),
'hook_php_version_max' => trim($this->request['hook_php_version_max'])
@@ -3061,7 +3303,7 @@ EOF;
}
/* Requirements are still serialized? */
if ( !is_array($hookData['hook_requirements']) )
if ( IPSLib::isSerialized($hookData['hook_requirements']) )
{
$hookData['hook_requirements'] = unserialize($hookData['hook_requirements']);
}
@@ -3110,7 +3352,7 @@ EOF;
$errors[ $appKey.'_app' ] = sprintf( $this->lang->words['hook_require_appnotfound'], $appData['app_name'] );
}
/* App not installed/enabled? */
elseif( !IPSLib::appIsInstalled( $appKey ) )
elseif ( !IPSLib::appIsInstalled( $appKey ) )
{
$errors[ $appKey.'_app' ] = sprintf( $this->lang->words['hook_require_appdisabled'], ipsRegistry::$applications[ $appKey ]['app_title'] );
}
@@ -3126,7 +3368,7 @@ EOF;
if ( is_array($versions) && count($versions) )
{
if( !isset($this->cachedUpgradeInfo[ $appKey ]) )
if ( !isset($this->cachedUpgradeInfo[ $appKey ]) )
{
$_key = in_array( $appKey, array( 'forums', 'members' ) ) ? 'core' : $appKey;
$this->cachedUpgradeInfo[ $_key ] = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'upgrade_history', 'where' => "upgrade_app='{$_key}'", 'order' => 'upgrade_version_id DESC', 'limit' => array( 1 ) ) );
@@ -3141,12 +3383,12 @@ EOF;
}
/* Do we meet tha requirements? */
if( $appData['min_version'] AND $this->cachedUpgradeInfo[ $appKey ]['upgrade_version_id'] < $appData['min_version'] )
if ( $appData['min_version'] AND $this->cachedUpgradeInfo[ $appKey ]['upgrade_version_id'] < $appData['min_version'] )
{
$errors[ $appKey.'_min' ] = sprintf( $this->lang->words['hook_require_tooold'], isset($versions[ $appData['min_version'] ]) ? $versions[ $appData['min_version'] ] : $appData['min_version'] );
}
if( $appData['max_version'] AND $this->cachedUpgradeInfo[ $appKey ]['upgrade_version_id'] > $appData['max_version'] )
if ( $appData['max_version'] AND $this->cachedUpgradeInfo[ $appKey ]['upgrade_version_id'] > $appData['max_version'] )
{
$errors[ $appKey.'_max' ] = sprintf( $this->lang->words['hook_require_toonew'], isset($versions[ $appData['max_version'] ]) ? $versions[ $appData['max_version'] ] : $appData['max_version'] );
}
@@ -2,18 +2,18 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Nexus Application
* Last Updated: $Date: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: ips_terabyte $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @version $Revision: 8644 $
* @link http://www.invisionpower.com
* @version $Revision: 10914 $
*/
if ( ! defined( 'IN_ACP' ) )
@@ -34,6 +34,6 @@ class admin_core_applications_nexus extends ipsCommand
{
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'purchase_app' );
$this->registry->output->showInsideIframe("http://myipb.in/products/nexus/");
$this->registry->output->showInsideIframe("http://www.invisionpower.com/products/nexus/");
}
}
@@ -2,18 +2,18 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Application Installation
* Last Updated: $Date: 2011-08-01 09:21:24 -0400 (Mon, 01 Aug 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: ips_terabyte $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @version $Rev: 9340 $
* @link http://www.invisionpower.com
* @version $Rev: 10914 $
*/
if ( ! defined( 'IN_ACP' ) )
@@ -598,7 +598,7 @@ class admin_core_applications_setup extends ipsCommand
if( preg_match( "#(.+?)_language_pack.xml#", $f->getFileName() ) )
{
$this->request['file_location'] = $_PATH . $f->getFileName();
$lang->imprtFromXML( true, true, true, $vars['app_directory'], false, 1 );
$lang->imprtFromXML( true, true, true, $vars['app_directory'] );
}
}
} catch ( Exception $e ) {}
@@ -2,10 +2,10 @@
<menu>
<tabitems>
<item>
<title>Управление модулями</title>
<title>Manage Applications &amp; Modules</title>
<subitems>
<subitem>
<subitemtitle>Список модулей</subitemtitle>
<subitemtitle>Manage Applications &amp; Modules</subitemtitle>
<subitemlang>manage_apps_modules</subitemlang>
<subsection>applications</subsection>
<subitemurl>do=applications_overview</subitemurl>
@@ -14,12 +14,11 @@
</subitem>
</subitems>
</item>
<item>
<title>Управление хуками (hooks)</title>
<item>
<title>Manage Hooks</title>
<subitems>
<subitem>
<subitemtitle>Список хуков</subitemtitle>
<subitemtitle>Manage Hooks</subitemtitle>
<subitemlang>manage_hooks</subitemlang>
<subsection>hooks</subsection>
<subitemurl>do=hooks_overview</subitemurl>
@@ -1,62 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<permissions>
<group>
<grouptitle>Управление приложениями</grouptitle>
<grouptitle>Manage Applications</grouptitle>
<grouplang>core_manage_apps</grouplang>
<items>
<item>
<key>app_manage</key>
<string>Может изменять/добавлять приложения?</string>
<string>Can manage applications?</string>
</item>
<item>
<key>app_delete</key>
<string>Может удалять приложения?</string>
<string>Can delete applications?</string>
</item>
<item>
<key>app_install</key>
<string>Может устанавливать новые приложения?</string>
<string>Can install new applications?</string>
</item>
<item>
<key>build_sphinx</key>
<string>Может создавать sphinx.conf? ВНИМАНИЕ: будут доступны данные для соединения с базой данных</string>
<string>Can build sphinx.conf? WARNING: Exposes database login details</string>
</item>
</items>
</group>
<group>
<grouptitle>Управление модулями</grouptitle>
<grouptitle>Manage Modules</grouptitle>
<grouplang>core_manage_modules</grouplang>
<items>
<item>
<key>module_manage</key>
<string>Может изменять/добавлять модули?</string>
<string>Can edit/add application modules?</string>
</item>
<item>
<key>module_delete</key>
<string>Может удалять модули приложений?</string>
<string>Can delete application modules?</string>
</item>
</items>
</group>
<group>
<grouptitle>Покупка приложений</grouptitle>
<grouptitle>Purchase Applications</grouptitle>
<grouplang>core_purchase_app</grouplang>
<items>
<item>
<key>purchase_app</key>
<string>Может просматривать страницу с платными приложениями?</string>
<string>Can view pages to purchase additional applications?</string>
</item>
</items>
</group>
<group>
<grouptitle>Управление модификациями</grouptitle>
<grouptitle>Manage Hooks</grouptitle>
<grouplang>core_manage_hooks</grouplang>
<items>
<item>
<key>hooks_manage</key>
<string>Может добавлять/изменять модификации?</string>
<string>Can manage hooks?</string>
</item>
<item>
<key>hooks_delete</key>
<string>Может удалять модификации?</string>
<string>Can remove hooks?</string>
</item>
</items>
</group>
@@ -3,11 +3,11 @@
* @file defaultSection.php Define the default section for the 'diagnostics' module
*~TERABYTE_DOC_READY~
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
* $License: This is NULLED!
* $License: http://www.invisionpower.com/company/standards.php#license$
* $Author: ips_terabyte $
* @since 20th February 2002
* $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $
* @version v3.2.3
* @version v3.3.4
* $Revision: 8655 $
*/
@@ -2,19 +2,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Diagnostic tools
* Last Updated: $Date: 2011-09-13 21:55:41 -0400 (Tue, 13 Sep 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since 1st march 2002
* @version $Revision: 9487 $
* @version $Revision: 10914 $
*/
if ( ! defined( 'IN_ACP' ) )
@@ -110,20 +110,11 @@ class admin_core_diagnostics_diagnostics extends ipsCommand
$this->_permissionsCheck();
break;
case 'fileversions':
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'version_checker' );
$this->_versionCheck();
case 'email':
$this->_emailCheckerForm();
break;
/* Topic Marking */
case 'tm_index':
$this->_tmIndex();
break;
case 'tm_memberindex':
$this->_tmMemberIndex();
break;
case 'tm_viewLog':
$this->_tmViewLog();
case 'doemail':
$this->_emailCheckerGo();
break;
default:
@@ -156,140 +147,15 @@ class admin_core_diagnostics_diagnostics extends ipsCommand
$classToLoad = IPSLib::loadLibrary( IPS_KERNEL_PATH . 'classFileManagement.php', 'classFileManagement' );
$_files = new $classToLoad();
$_test = $_files->getFileContents( "http://www.google.com/" );
$_test = $_files->getFileContents( "http://www.invisionpower.com/connection-checker.html" );
$_headers = $_files->raw_headers;
$_test1 = $_files->getFileContents( "https://www.google.com/" );
$_test1 = $_files->getFileContents( "https://www.invisionpower.com/connection-checker.html" );
$_headers1 = $_files->raw_headers;
$this->registry->output->html .= $this->html->connectionCheckerResult( $_headers, $_test, $_headers1, $_test1 );
}
/**
* Check file versions
*
* @return @e void [Outputs to screen]
*/
public function _versionCheck()
{
$file_versions = array();
$upgrade_history = array();
$latest_version = array( 'upgrade_version_id' => '' );
$file_versions = $this->_versionDirRecurse( rtrim( DOC_IPS_ROOT_PATH, '/\\' ) );
$this->DB->build( array( 'select' => '*', 'from' => 'upgrade_history', 'where' => "upgrade_app='core'", 'order' => 'upgrade_version_id DESC', 'limit' => array(0, 5) ) );
$this->DB->execute();
while( $r = $this->DB->fetch() )
{
if ( $r['upgrade_version_id'] > $latest_version['upgrade_version_id'] )
{
$latest_version = $r;
}
$upgrade_history[] = $r;
}
//-----------------------------------------
// Got real version number?
//-----------------------------------------
$version['version'] = ( IPB_VERSION == '3.2.3' ) ? $latest_version['upgrade_version_human'] : IPB_VERSION;
$version['version_full'] = ( IPB_LONG_VERSION == '32006' ) ? $latest_version['upgrade_version_id'] : IPB_LONG_VERSION;
//-----------------------------------------
// Version History
//-----------------------------------------
if( count($upgrade_history) )
{
foreach( $upgrade_history as $r )
{
$r['_date'] = ipsRegistry::getClass( 'class_localization')->getDate( $r['upgrade_date'], 'SHORT' );
$thiscontent .= $this->html->acp_version_history_row( $r );
}
}
$this->registry->output->html .= $this->html->versionCheckerResults( $version, $thiscontent, $file_versions );
}
/**
* Check file versions
*
* @param string Directory to check
* @return array Files => Versions
*/
public function _versionDirRecurse($dir)
{
/* Init some vars */
$files = array();
$skip_dirs = array( PUBLIC_DIRECTORY,
'cache',
'uploads',
'images',
'i18n',
'PEAR',
rtrim( str_replace( DOC_IPS_ROOT_PATH, '', IPS_HOOKS_PATH ), '/\\' ),
'facebook-client',
'FirePHPCore',
'facebook',
'resources',
'applications_addon',
'js',
'skin_cp',
'install',
'upgrade',
'Auth'
);
$skip_files = array('conf_global.php',
'conf.php',
$this->settings['sql_driver'] . '_updates.php',
$this->settings['sql_driver'] . '_install.php',
$this->settings['sql_driver'] . '_fulltext.php',
'classGraph.php', // This is Wizzy's
);
/* Check files */
try
{
foreach( new DirectoryIterator( $dir ) as $directory )
{
if( $directory->isDot() )
{
continue;
}
if ( strpos( $directory->getFilename(), '_' ) === 0 OR strpos( $directory->getFilename(), '.' ) === 0 )
{
continue;
}
$newpath = $dir . '/' . $directory->getFilename();
$level = explode( '/', $newpath );
if ( is_dir($newpath) && !in_array( $directory->getFilename(), $skip_dirs ) )
{
$files = array_merge( $files, $this->_versionDirRecurse($newpath) );
}
else
{
if ( strpos( $directory->getFilename(), ".php" ) !== false && !is_dir( $newpath ) && !in_array( $directory->getFilename(), $skip_files ) )
{
$file = file_get_contents($newpath);
preg_match( "#@version\s+?v(.+?)\\n#i", $file, $matches );
$files[ $newpath ] = isset($matches[1]) ? $matches[1] : '';
}
}
}
} catch ( Exception $e ) {}
return $files;
}
/**
* Check file permissions
*
@@ -304,7 +170,6 @@ class admin_core_diagnostics_diagnostics extends ipsCommand
'cache/skin_cache',
'cache/lang_cache',
'cache/tmp',
'cache/openid',
'uploads',
'uploads/profile',
rtrim( str_replace( DOC_IPS_ROOT_PATH, '', IPS_HOOKS_PATH ), '/\\' ),
@@ -445,7 +310,7 @@ class admin_core_diagnostics_diagnostics extends ipsCommand
}
else
{
$output[] = ( is_writable( DOC_IPS_ROOT_PATH . '/' . $dir_to_check ) ) ? "<span style='color:green;'>" . rtrim( DOC_IPS_ROOT_PATH, '/\\' ) . "/{$dir_to_check} {$this->lang->words['d_pyes']}</span>" : "<span style='color:red;font-weight:bold;'>{$this->lang->words['d_pno']} ". rtrim( DOC_IPS_ROOT_PATH, '/\\' ) . "/{$dir_to_check}</span>";;
$output[] = ( is_writable( DOC_IPS_ROOT_PATH . '/' . $dir_to_check ) ) ? "<span style='color:green;'>" . rtrim( DOC_IPS_ROOT_PATH, '/\\' ) . "/{$dir_to_check} {$this->lang->words['d_pyes']}</span>" : "<span style='color:red;font-weight:bold;'>{$this->lang->words['d_pno']} ". rtrim( DOC_IPS_ROOT_PATH, '/\\' ) . "/{$dir_to_check}</span>";
}
}
@@ -589,6 +454,7 @@ class admin_core_diagnostics_diagnostics extends ipsCommand
$errors_array = array();
$tables_array = array();
$queriesRan = array();
foreach( $sql_table_files as $app_title => $sql_file )
{
@@ -604,6 +470,12 @@ class admin_core_diagnostics_diagnostics extends ipsCommand
continue;
}
if ( isset( $output['results']['ran'] ) )
{
$queriesRan = array_merge( $queriesRan, $output['results']['ran'] );
unset( $output['results']['ran'] );
}
if( $output['error_count'] > 0 )
{
$errors_array[] = $app_title;
@@ -614,7 +486,7 @@ class admin_core_diagnostics_diagnostics extends ipsCommand
}
/* Output */
$this->registry->output->html .= $this->html->indexChecker( $errors_array, $tables_array );
$this->registry->output->html .= $this->html->indexChecker( $errors_array, $tables_array, $queriesRan );
}
/**
@@ -637,6 +509,7 @@ class admin_core_diagnostics_diagnostics extends ipsCommand
$errors_array = array();
$tables_array = array();
$queriesRan = array();
foreach( $sql_table_files as $app_title => $sql_file )
{
@@ -650,6 +523,12 @@ class admin_core_diagnostics_diagnostics extends ipsCommand
continue;
}
if ( isset( $output['results']['ran'] ) )
{
$queriesRan = array_merge( $queriesRan, $output['results']['ran'] );
unset( $output['results']['ran'] );
}
if( $output['error_count'] > 0 )
{
$errors_array[] = $app_title;
@@ -662,7 +541,7 @@ class admin_core_diagnostics_diagnostics extends ipsCommand
// And output
//-----------------------------------------
$this->registry->output->html .= $this->html->dbChecker( $errors_array, $tables_array );
$this->registry->output->html .= $this->html->dbChecker( $errors_array, $tables_array, $queriesRan );
}
/**
@@ -672,6 +551,40 @@ class admin_core_diagnostics_diagnostics extends ipsCommand
*/
public function _listFunctions()
{
//-----------------------------------------
// PHP INFO?
//-----------------------------------------
if ( $this->request['phpinfo'] AND $this->request['phpinfo'] )
{
@ob_start();
phpinfo();
$parsed = @ob_get_contents();
@ob_end_clean();
preg_match( "#<body>(.*)</body>#is" , $parsed, $match1 );
$php_body = $match1[1];
# PREVENT WRAP: Most cookies
$php_body = str_replace( "; " , ";<br />" , $php_body );
# PREVENT WRAP: Very long string cookies
$php_body = str_replace( "%3B", "<br />" , $php_body );
# PREVENT WRAP: Serialized array string cookies
$php_body = str_replace( ";i:", ";<br />i:" , $php_body );
# PREVENT WRAP: LS_COLORS env
$php_body = str_replace( ":*.", "<br />:*." , $php_body );
# PREVENT WRAP: PATH env
$php_body = str_replace( "bin:/", "bin<br />:/" , $php_body );
# PREVENT WRAP: Cookie %2C split
$php_body = str_replace( "%2C", "%2C<br />" , $php_body );
#PREVENT WRAP: Cookie , split
$php_body = preg_replace( "#,(\d+),#", ",<br />\\1," , $php_body );
$this->registry->output->html .= $this->html->phpInfo( $php_body );
return;
}
//-----------------------------------------
// Stats
//-----------------------------------------
@@ -717,40 +630,6 @@ class admin_core_diagnostics_diagnostics extends ipsCommand
'ipb_version' => ipsRegistry::$version,
'ipb_id' => ipsRegistry::$vn_full ) );
//-----------------------------------------
// PHP INFO?
//-----------------------------------------
if ( $this->request['phpinfo'] AND $this->request['phpinfo'] )
{
@ob_start();
phpinfo();
$parsed = @ob_get_contents();
@ob_end_clean();
preg_match( "#<body>(.*)</body>#is" , $parsed, $match1 );
$php_body = $match1[1];
# PREVENT WRAP: Most cookies
$php_body = str_replace( "; " , ";<br />" , $php_body );
# PREVENT WRAP: Very long string cookies
$php_body = str_replace( "%3B", "<br />" , $php_body );
# PREVENT WRAP: Serialized array string cookies
$php_body = str_replace( ";i:", ";<br />i:" , $php_body );
# PREVENT WRAP: LS_COLORS env
$php_body = str_replace( ":*.", "<br />:*." , $php_body );
# PREVENT WRAP: PATH env
$php_body = str_replace( "bin:/", "bin<br />:/" , $php_body );
# PREVENT WRAP: Cookie %2C split
$php_body = str_replace( "%2C", "%2C<br />" , $php_body );
#PREVENT WRAP: Cookie , split
$php_body = preg_replace( "#,(\d+),#", ",<br />\\1," , $php_body );
$this->registry->output->html .= $this->html->phpInfo( $php_body );
return;
}
//-----------------------------------------
// Server stuff
//-----------------------------------------
@@ -823,51 +702,13 @@ class admin_core_diagnostics_diagnostics extends ipsCommand
$extensions = array_combine( $extensions, $extensions );
sort( $extensions, SORT_STRING );
//-----------------------------------------
// Upgrade history?
//-----------------------------------------
$upgrade_history = array();
$latest_version = array( 'upgrade_version_id' => NULL );
$this->DB->build( array( 'select' => '*', 'from' => 'upgrade_history', 'where' => "upgrade_app='core'", 'order' => 'upgrade_version_id DESC', 'limit' => array( 0, 5 ) ) );
$this->DB->execute();
while( $r = $this->DB->fetch() )
{
if ( $r['upgrade_version_id'] > $latest_version['upgrade_version_id'] )
{
$latest_version = $r;
}
$upgrade_history[] = $r;
}
//-----------------------------------------
// Got real version number?
//-----------------------------------------
$version['version'] = (IPB_VERSION == '3.0.0 RC 1') ? $latest_version['upgrade_version_human'] : IPB_VERSION;
$version['version_full'] = (IPB_LONG_VERSION == '30005') ? $latest_version['upgrade_version_id'] : IPB_LONG_VERSION;
//-----------------------------------------
// Version History
//-----------------------------------------
foreach( $upgrade_history as $r )
{
$r['_date'] = ipsRegistry::getClass( 'class_localization')->getDate( $r['upgrade_date'], 'SHORT' );
$thiscontent .= $this->html->acp_version_history_row( $r );
}
//-----------------------------------------
// Set variables and pass to skin
//-----------------------------------------
$data = array(
'version' => 'v' . $version['version'],
'version_full' => $version['version_full'],
'version' => 'v' . IPB_VERSION,
'version_full' => IPB_LONG_VERSION,
'version_sql' => $sql_version,
'driver_type' => strtoupper($this->settings['sql_driver']),
'version_php' => $php_version,
@@ -915,7 +756,56 @@ class admin_core_diagnostics_diagnostics extends ipsCommand
$data['tasks'] = $tasks;
$this->registry->output->html .= $this->html->diagnosticsOverview( $data, $statsbox );
}
$this->registry->output->html .= $this->html->acp_version_history_wrapper( $thiscontent );
/**
* Show the email tester page
*
* @param sring Error message
* @return @e void [Outputs to screen]
*/
public function _emailCheckerForm( $error='' )
{
$this->registry->output->html .= $this->html->emailChecker( $error );
}
/**
* Send a test email
*
* @return @e void [Outputs to screen]
*/
public function _emailCheckerGo()
{
//-----------------------------------------
// Send it
//-----------------------------------------
IPSText::getTextClass('email')->to = $this->request['to'];
IPSText::getTextClass('email')->from = $this->request['from'];
IPSText::getTextClass('email')->subject = $this->request['subject'];
IPSText::getTextClass('email')->message = $this->request['message'];
IPSText::getTextClass('email')->sendMail();
//-----------------------------------------
// Check the error log
//-----------------------------------------
$error = '';
$lastLog = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'mail_error_logs', 'order' => 'mlog_date DESC', 'limit' => 1 ) );
if ( $lastLog['mlog_date'] >= ( time() - 2 ) and $lastLog['mlog_subject'] == $this->request['subject'] )
{
$error = $lastLog['mlog_msg'];
}
else
{
$this->registry->output->global_message = $this->lang->words['email_tester_ok'];
}
//-----------------------------------------
// Show
//-----------------------------------------
$this->_emailCheckerForm( $error );
}
}
@@ -2,10 +2,10 @@
<menu>
<tabitems>
<item>
<title>Состояние системы</title>
<title>Overview</title>
<subitems>
<subitem>
<subitemtitle>Обзор системы</subitemtitle>
<subitemtitle>Overview</subitemtitle>
<subitemlang>diag_overview</subitemlang>
<subsection>diagnostics</subsection>
<subitemurl></subitemurl>
@@ -15,23 +15,10 @@
</subitems>
</item>
<item>
<title>Проверка версий файлов</title>
<title>Whitespace Checker</title>
<subitems>
<subitem>
<subitemtitle>Проверка версий файлов</subitemtitle>
<subitemlang>version_checker</subitemlang>
<subsection>diagnostics</subsection>
<subitemurl>do=fileversions</subitemurl>
<subitemrolekey>version_checker</subitemrolekey>
<subisredirect>0</subisredirect>
</subitem>
</subitems>
</item>
<item>
<title>Проверка лишних пробелов</title>
<subitems>
<subitem>
<subitemtitle>Поиск файлов содержащих лишние пробелы</subitemtitle>
<subitemtitle>Whitespace Checker</subitemtitle>
<subitemlang>whitespace_checker</subitemlang>
<subsection>diagnostics</subsection>
<subitemurl>do=whitespace</subitemurl>
@@ -41,10 +28,10 @@
</subitems>
</item>
<item>
<title>Проверка прав файлов</title>
<title>Permissions Checker</title>
<subitems>
<subitem>
<subitemtitle>Проверка прав доступа к файлам</subitemtitle>
<subitemtitle>Permissions Checker</subitemtitle>
<subitemlang>permissions_checker</subitemlang>
<subsection>diagnostics</subsection>
<subitemurl>do=filepermissions</subitemurl>
@@ -54,10 +41,10 @@
</subitems>
</item>
<item>
<title>Проверка сетевых соединений</title>
<title>Connection Checker</title>
<subitems>
<subitem>
<subitemtitle>Проверка сетевых соединений</subitemtitle>
<subitemtitle>Connection Checker</subitemtitle>
<subitemlang>connection_checker</subitemlang>
<subsection>diagnostics</subsection>
<subitemurl>do=connections</subitemurl>
@@ -67,10 +54,10 @@
</subitems>
</item>
<item>
<title>Проверка структуры базы</title>
<title>Database Checker</title>
<subitems>
<subitem>
<subitemtitle>Проверка структуры базы данных</subitemtitle>
<subitemtitle>Database Checker</subitemtitle>
<subitemlang>db_checker</subitemlang>
<subsection>diagnostics</subsection>
<subitemurl>do=dbchecker</subitemurl>
@@ -80,10 +67,10 @@
</subitems>
</item>
<item>
<title>Проверка индексов базы</title>
<title>Database Index Checker</title>
<subitems>
<subitem>
<subitemtitle>Проверка индексов базы данных</subitemtitle>
<subitemtitle>Database Index Checker</subitemtitle>
<subitemlang>dbi_checker</subitemlang>
<subsection>diagnostics</subsection>
<subitemurl>do=dbindex</subitemurl>
@@ -92,5 +79,18 @@
</subitem>
</subitems>
</item>
<item>
<title>Email Tester</title>
<subitems>
<subitem>
<subitemtitle>Email Tester</subitemtitle>
<subitemlang>email_checker</subitemlang>
<subsection>diagnostics</subsection>
<subitemurl>do=email</subitemurl>
<subitemrolekey>email_checker</subitemrolekey>
<subisredirect>0</subisredirect>
</subitem>
</subitems>
</item>
</tabitems>
</menu>
@@ -1,32 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<permissions>
<group>
<grouptitle>Инструменты диагностики</grouptitle>
<grouptitle>Diagnostic Tools</grouptitle>
<grouplang>core_diag_tools</grouplang>
<items>
<item>
<key>index_checker</key>
<string>Может проверять индексы таблиц базы? Внимание: позволяет выполнять запросы к базе.</string>
<string>Can use the database index checker? Warning: Allows ability to run database queries indirectly.</string>
</item>
<item>
<key>database_checker</key>
<string>Может использовать проверку базы данных? Внимание: позволяет выполнять запросы к базе.</string>
<string>Can use the database checker? Warning: Allows ability to run database queries indirectly.</string>
</item>
<item>
<key>whitespace_checker</key>
<string>Может проверять файлы на лишние пробелы?</string>
</item>
<item>
<key>version_checker</key>
<string>Может проверять файлы на правильность версии?</string>
<string>Can use the whitespace checker?</string>
</item>
<item>
<key>connection_checker</key>
<string>Может использовать проверку сетевых соединений?</string>
<string>Can use the connection checker?</string>
</item>
<item>
<key>permission_checker</key>
<string>Может проверять файлы и директории на правильность расстановки прав доступа?</string>
<string>Can use the permissions checker?</string>
</item>
<item>
<key>email_checker</key>
<string>Can use the email tester?</string>
</item>
</items>
</group>
@@ -3,11 +3,11 @@
* @file defaultSection.php Define the default section for the 'help' module
*~TERABYTE_DOC_READY~
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
* $License: This is NULLED!
* $License: http://www.invisionpower.com/company/standards.php#license$
* $Author: ips_terabyte $
* @since 20th February 2002
* $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $
* @version v3.2.3
* @version v3.3.4
* $Revision: 8655 $
*/
@@ -3,19 +3,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Quick help - shows popups with help information
* Last Updated: $Date: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: ips_terabyte $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since 1st march 2002
* @version $Revision: 8644 $
* @version $Revision: 10914 $
*
*/
@@ -115,28 +115,28 @@ class admin_core_help_quickhelp extends ipsCommand
switch( $id )
{
case 'docs':
$url = "http://myipb.in/docs-ipb";
$url = "http://external.ipslink.com/ipboard30/landing/?p=docs-ipb";
break;
case 'resources':
$url = "http://myipb.in/forums";
$url = "http://external.ipslink.com/ipboard30/landing/?p=resources";
break;
case 'contact':
$url = "http://myipb.in/contact";
$url = "http://external.ipslink.com/ipboard30/landing/?p=contact";
break;
case 'features':
$url = "http://myipb.in/suggestfeatures";
$url = "http://external.ipslink.com/ipboard30/landing/?p=suggestfeatures";
break;
case 'bugs':
$url = "http://myipb.in/bugtrack";
$url = "http://external.ipslink.com/ipboard30/landing/?p=bugs";
break;
default:
case 'support':
$url = "http://myipb.in/clientarea";
$url = "http://external.ipslink.com/ipboard30/landing/?p=support";
break;
}
@@ -2,10 +2,10 @@
<menu>
<tabitems>
<item>
<title>Документация</title>
<title>Documentation</title>
<subitems>
<subitem>
<subitemtitle>Документация</subitemtitle>
<subitemtitle>Documentation</subitemtitle>
<subitemlang>help_documentation</subitemlang>
<subsection>quickhelp</subsection>
<subitemurl>do=redirect&amp;id=docs</subitemurl>
@@ -13,12 +13,11 @@
</subitem>
</subitems>
</item>
<item>
<title>Тех. поддержка</title>
<item>
<title>Technical Support</title>
<subitems>
<subitem>
<subitemtitle>Техническая поддержка</subitemtitle>
<subitemtitle>Technical Support</subitemtitle>
<subitemlang>help_support</subitemlang>
<subsection>quickhelp</subsection>
<subitemurl>do=redirect&amp;id=support</subitemurl>
@@ -27,10 +26,10 @@
</subitems>
</item>
<item>
<title>Форумы</title>
<title>Additional Resources</title>
<subitems>
<subitem>
<subitemtitle>Форумы IBResource</subitemtitle>
<subitemtitle>Additional Resources</subitemtitle>
<subitemlang>help_resources</subitemlang>
<subsection>quickhelp</subsection>
<subitemurl>do=redirect&amp;id=resources</subitemurl>
@@ -39,10 +38,10 @@
</subitems>
</item>
<item>
<title>Контакты</title>
<title>IPS Contact Information</title>
<subitems>
<subitem>
<subitemtitle>Контактная информация</subitemtitle>
<subitemtitle>IPS Contact Information</subitemtitle>
<subitemlang>help_contact</subitemlang>
<subsection>quickhelp</subsection>
<subitemurl>do=redirect&amp;id=contact</subitemurl>
@@ -51,10 +50,22 @@
</subitems>
</item>
<item>
<title>Сообщить об ошибке</title>
<title>Feature Requests</title>
<subitems>
<subitem>
<subitemtitle>Сообщить об ошибке</subitemtitle>
<subitemtitle>Feature Requests</subitemtitle>
<subitemlang>help_features</subitemlang>
<subsection>quickhelp</subsection>
<subitemurl>do=redirect&amp;id=features</subitemurl>
<subisredirect>1</subisredirect>
</subitem>
</subitems>
</item>
<item>
<title>Report a Bug</title>
<subitems>
<subitem>
<subitemtitle>Report a Bug</subitemtitle>
<subitemlang>help_bugs</subitemlang>
<subsection>quickhelp</subsection>
<subitemurl>do=redirect&amp;id=bugs</subitemurl>
@@ -3,11 +3,11 @@
* @file defaultSection.php Define the default section for the 'languages' module
*~TERABYTE_DOC_READY~
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
* $License: This is NULLED!
* $License: http://www.invisionpower.com/company/standards.php#license$
* $Author: ips_terabyte $
* @since 20th February 2002
* $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $
* @version v3.2.3
* @version v3.3.4
* $Revision: 8655 $
*/
@@ -3,18 +3,18 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Language Pack Management
* Last Updated: $LastChangedDate: 2011-09-19 20:56:02 -0400 (Mon, 19 Sep 2011) $
* Last Updated: $LastChangedDate: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @version $Rev: 9511 $
* @link http://www.invisionpower.com
* @version $Rev: 10914 $
*/
if ( ! defined( 'IN_ACP' ) )
@@ -178,7 +178,7 @@ class admin_core_languages_manage_languages extends ipsCommand
$this->languageExportToXML( 1, 1 );
}
$this->registry->output->global_message = $this->lang->words['indev_lang_export_done'];
$this->registry->output->setMessage( $this->lang->words['indev_lang_export_done'], 1 );
$this->languagesList();
break;
@@ -357,8 +357,7 @@ class admin_core_languages_manage_languages extends ipsCommand
$lang = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'core_sys_lang', 'where' => 'lang_id=' . $langId ) );
/* Get current session if one */
$session = $this->DB->buildandFetch( array( 'select' => '*', 'from' => 'cache_store', 'where' => "cs_key='translate_session'" ) );
$sessionData = ( strstr( $session['cs_value'], 'a:' ) ) ? unserialize( $session['cs_value'] ) : array();
$sessionData = $this->cache->getCache('translate_session');
/* Check */
if ( empty( $sessionData['lang_id'] ) OR ! count( $sessionData['files'] ) OR !$fileCount )
@@ -391,13 +390,13 @@ class admin_core_languages_manage_languages extends ipsCommand
/* Update session data */
$sessionData['files'][ $file ]['dbtime'] = time();
$this->registry->output->global_message = sprintf( $this->lang->words['ext_file_written'], $file, intval( $data['inserts'] ), intval( $data['updates'] ) );;
$this->registry->output->global_message = sprintf( $this->lang->words['ext_file_written'], $file, intval( $data['inserts'] ), intval( $data['updates'] ) );
}
$this->registry->output->global_message .= '<br />' . sprintf( $this->lang->words['ext_recache'], "{$this->settings['base_url']}&{$this->form_code}&do=recache_lang_pack&id={$sessionData['lang_id']}" );
/* Update session */
$this->DB->update( 'cache_store', array( 'cs_value' => serialize( $sessionData ) ), "cs_key='translate_session'" );
$this->cache->setCache( 'translate_session', $sessionData, array( 'array' => 1, 'donow' => 1 ) );
$this->translateExtSplash();
return;
@@ -622,7 +621,7 @@ class admin_core_languages_manage_languages extends ipsCommand
continue;
}
if ( preg_match( "#^\S+?_\S+?\.php$#", $f ) )
if ( preg_match( '#^\S+?_\S+?\.php$#', $f ) )
{
//-----------------------------------------
// INIT
@@ -630,8 +629,8 @@ class admin_core_languages_manage_languages extends ipsCommand
$updated = 0;
$inserted = 0;
$app = preg_replace( "#^([^_]+?)_(\S+?)\.php$#", "\\1", $f );
$word_pack = preg_replace( "#^([^_]+?)_(\S+?)\.php$#", "\\2", $f );
$app = preg_replace( '#^([^_]+?)_(\S+?)\.php$#', "\\1", $f );
$word_pack = preg_replace( '#^([^_]+?)_(\S+?)\.php$#', "\\2", $f );
$lang = array();
$db_lang = array();
@@ -794,7 +793,7 @@ class admin_core_languages_manage_languages extends ipsCommand
// preg_match what we want
//-----------------------------------------
preg_match( "#ipb\.lang\['(.+?)'\](.+?)= [\"'](.+?)[\"'];#", $r, $matches );
preg_match( '#ipb\.lang\[\'(.+?)\'\](.+?)= ["\'](.+?)["\'];#', $r, $matches );
//-----------------------------------------
// Valid?
@@ -1004,7 +1003,7 @@ class admin_core_languages_manage_languages extends ipsCommand
if ( preg_match( "#" . $_word . "_(.+?)_language_pack.xml#", $f->getFileName() ) )
{
$this->request['file_location'] = $_PATH . $f->getFileName();
$this->imprtFromXML( 1, true, true, $next['key'], false, 1 );
$this->imprtFromXML( 1, true, true, $next['key'] );
}
}
} catch ( Exception $e ) {}
@@ -1274,8 +1273,8 @@ class admin_core_languages_manage_languages extends ipsCommand
return;
}
$this->request['word_app'] = mb_strtolower($this->request['word_app']);
$this->request['word_pack_db'] = str_replace( '/', '_', mb_strtolower($this->request['word_pack_db']) );
$this->request['word_app'] = strtolower($this->request['word_app']);
$this->request['word_pack_db'] = str_replace( '/', '_', strtolower($this->request['word_pack_db']) );
if( $this->request['word_pack_db'] == 'admin_js' OR $this->request['word_pack_db'] == 'public_js' )
{
@@ -1464,8 +1463,7 @@ class admin_core_languages_manage_languages extends ipsCommand
{
/* Tab Button */
$js = ( $this->tab_js_action[$i] ) ? 'onmousedown="'.$this->tab_js_action[$i].'"' : '';
$class = ( $i == 0 ) ? 'mini_tab_on' : 'mini_tab_off';
$tabs[] = array( 'id' => $i, 'class' => $class, 'text' => $button, 'js' => $js );
$tabs[] = array( 'id' => $i, 'text' => $button, 'js' => $js );
}
/* Tab Contents */
@@ -1499,7 +1497,7 @@ class admin_core_languages_manage_languages extends ipsCommand
/* Fix up for search */
$keywordForPageLinks = $this->request['search'];
$this->request['search'] = str_replace( "&#39;", "\'", $this->request['search'] );
$this->request['search'] = str_replace( "&#39;", "\\'", $this->request['search'] );
$id = intval( $this->request['id'] );
$pack = explode( '/', $this->request['word_pack'] );
@@ -1879,8 +1877,7 @@ class admin_core_languages_manage_languages extends ipsCommand
public function languagesList()
{
/* Do we have a valid translation session? */
$session = $this->DB->buildandFetch( array( 'select' => '*', 'from' => 'cache_store', 'where' => "cs_key='translate_session'" ) );
$sessionData = IPSLib::isSerialized($session['cs_value']) ? unserialize( $session['cs_value'] ) : array();
$sessionData = $this->cache->getCache('translate_session');
$hasTranslate = false;
/* Check */
@@ -1978,9 +1975,10 @@ class admin_core_languages_manage_languages extends ipsCommand
* Updates the cached language files from the database
*
* @param integer ID of the language pack to export
* @param string Just cache one app?
* @return @e void
*/
public function cacheToDisk( $lang_id )
public function cacheToDisk( $lang_id, $app_override='' )
{
/* Generate cached warning */
$warnString = "/*******************************************************\nNOTE: This is a cache file generated by IP.Board on " . date( "r" ) . " by " . $this->memberData['members_display_name'] . "\nDo not translate this file as you will lose your translations next time you edit via the ACP\nPlease translate via the ACP\n*******************************************************/\n\n";
@@ -2013,16 +2011,38 @@ class admin_core_languages_manage_languages extends ipsCommand
mkdir( IPS_CACHE_PATH . 'cache/lang_cache/' . $lang_id . '/', IPS_FOLDER_PERMISSION );
}
/* Loop over apps */
$this->DB->build( array( 'select' => 'DISTINCT(word_app) as word_app',
'from' => 'core_sys_lang_words',
'limit' => array(0, 100 ) ) ); # Because you never know.
$o = $this->DB->execute();
while( $langApps = $this->DB->fetch( $o ) )
{
if ( $app_override )
{
if ( $app_override != $langApps['word_app'] )
{
continue;
}
}
//-----------------------------------------
// Get the words
//-----------------------------------------
$this->DB->build( array( 'select' => '*', 'from' => 'core_sys_lang_words', 'where' => $where, 'order' => 'word_key ASC' ) );
$this->DB->execute();
$this->DB->build( array( 'select' => 'word_custom, word_default, word_app, word_pack, word_key',
'from' => 'core_sys_lang_words',
'where' => $where . " AND word_app='" . $langApps['word_app'] . "'",
'order' => 'word_key ASC' ) );
$i = $this->DB->execute();
$words_by_file = array();
while( $r = $this->DB->fetch() )
while( $r = $this->DB->fetch( $i ) )
{
$_text = ( $r['word_custom'] ) ? $r['word_custom'] : $r['word_default'];
$words_by_file[$r['word_app']][$r['word_pack']][] = array( $r['word_key'], $_text );
@@ -2111,6 +2131,7 @@ class admin_core_languages_manage_languages extends ipsCommand
}
}
}
}
/**
* Imports language packs from an xml file and updates the database and recaches the languages
@@ -2122,7 +2143,7 @@ class admin_core_languages_manage_languages extends ipsCommand
* @param bool $skip_charset Skips charset conversion in the XML file (useful during upgrade routine as strings don't need to be converted)
* @return mixed
*/
public function imprtFromXML( $lang_id=0, $in_dev=0, $no_return=0, $app_override='', $skip_charset=false, $ru = '' )
public function imprtFromXML( $lang_id=0, $in_dev=0, $no_return=0, $app_override='', $skip_charset=false )
{
//-----------------------------------------
// Set version..
@@ -2167,7 +2188,7 @@ class admin_core_languages_manage_languages extends ipsCommand
return;
}
if ( preg_match( "#\.gz$#", $this->request['file_location'] ) )
if ( preg_match( '#\.gz$#', $this->request['file_location'] ) )
{
if ( $FH = @gzopen( $this->request['file_location'], 'rb' ) )
{
@@ -2236,7 +2257,7 @@ class admin_core_languages_manage_languages extends ipsCommand
//-----------------------------------------
$tmp_name = $_FILES['FILE_UPLOAD']['name'];
$tmp_name = preg_replace( "#\.gz$#", "", $tmp_name );
$tmp_name = preg_replace( '#\.gz$#', "", $tmp_name );
if( $_FILES['FILE_UPLOAD']['error'] )
{
@@ -2260,7 +2281,14 @@ class admin_core_languages_manage_languages extends ipsCommand
// Get content
//-----------------------------------------
try
{
$uploadedContent = $this->registry->adminFunctions->importXml( $tmp_name );
}
catch ( Exception $e )
{
$this->registry->output->showError( $e->getMessage() );
}
//-----------------------------------------
// Extract archive
@@ -2430,16 +2458,14 @@ class admin_core_languages_manage_languages extends ipsCommand
if( $app_override )
{
$this->DB->build( array(
'select' => '*',
$this->DB->build( array( 'select' => "MD5( CONCAT( lang_id, '-', word_app, '-', word_pack, '-', word_key ) ) as word_lookup, word_id, md5(word_default) as word_default, word_default_version",
'from' => 'core_sys_lang_words',
'where' => "word_app='{$app_override}'"
) );
'where' => "word_app='{$app_override}' AND lang_id IN(" . implode( ",", $lang_ids ) . ")" ) );
$this->DB->execute();
while( $r = $this->DB->fetch() )
{
$lang_entries[ $r['lang_id'] ][ $r['word_app'] ][ $r['word_pack'] ][ $r['word_key'] ] = $r;
$lang_entries[ $r['word_lookup'] ] = $r;
}
}
@@ -2465,19 +2491,28 @@ class admin_core_languages_manage_languages extends ipsCommand
'word_pack' => $lang['word_pack'],
'word_key' => $lang['word_key'],
'word_default' => $lang['word_default'],
'word_custom' => $in_dev && !$ru ? '' : $lang['word_custom'],
'word_custom' => $in_dev ? '' : $lang['word_custom'],
'word_js' => intval($lang['word_js']),
'word_default_version' => $lang['word_default_version'] ? $lang['word_default_version'] : $LATESTVERSION['long'],
'word_custom_version' => $lang['word_custom_version'],
);
$dbKey = md5( $db_array['lang_id'] . '-' . $db_array['word_app'] . '-' . $db_array['word_pack'] . '-' . $db_array['word_key'] );
$langIdKey = md5( $_lang_id . '-' . $db_array['word_app'] . '-' . $db_array['word_pack'] . '-' . $db_array['word_key'] );
// If the default value hasn't changed, we don't need to update the word_default_version (see bug report 19172)
if ( md5( $lang['word_default'] ) == $lang_entries[ $dbKey ]['word_default'] )
{
$db_array['word_default_version'] = $lang_entries[ $dbKey ]['word_default_version'];
}
//-----------------------------------------
// If cached, get from cache
//-----------------------------------------
if( $lang_entries[ $_lang_id ][ $db_array['word_app'] ][ $db_array['word_pack'] ] )
if ( $lang_entries[ $langIdKey ] )
{
$lang_entry = $lang_entries[ $_lang_id ][ $db_array['word_app'] ][ $db_array['word_pack'] ][ $db_array['word_key'] ];
$lang_entry = $lang_entries[ $langIdKey ];
}
//-----------------------------------------
@@ -2496,12 +2531,12 @@ class admin_core_languages_manage_languages extends ipsCommand
while( $r = $this->DB->fetch() )
{
$lang_entries[ $r['lang_id'] ][ $r['word_app'] ][ $r['word_pack'] ][ $r['word_key'] ] = $r;
$lang_entries[ md5( $r['lang_id'] . '-' . $r['word_app'] . '-' . $r['word_pack'] . '-' . $r['word_key'] ) ] = $r;
}
if( $lang_entries[ $_lang_id ][ $db_array['word_app'] ][ $db_array['word_pack'] ][ $db_array['word_key'] ] )
if ( $lang_entries[ $langIdKey ] )
{
$lang_entry = $lang_entries[ $_lang_id ][ $db_array['word_app'] ][ $db_array['word_pack'] ][ $db_array['word_key'] ];
$lang_entry = $lang_entries[ $langIdKey ];
}
}
@@ -2566,16 +2601,21 @@ class admin_core_languages_manage_languages extends ipsCommand
$counts['inserts']++;
$this->DB->insert( 'core_sys_lang_words', $db_array );
}
unset( $lang_entry, $db_array );
}
}
/* Save some memory */
unset( $lang_entries );
//-----------------------------------------
// Recache all our lang packs
//-----------------------------------------
foreach( $lang_ids as $_lang_id )
{
$this->cacheToDisk( $_lang_id );
$this->cacheToDisk( $_lang_id, $app_override );
}
//-----------------------------------------
@@ -2845,7 +2885,7 @@ class admin_core_languages_manage_languages extends ipsCommand
continue;
}
if ( preg_match( "#^" . $app . "_\S+?\.php$#", $f ) )
if ( preg_match( "#^" . $app . '_\S+?\.php$#', $f ) )
{
//-----------------------------------------
// INIT
@@ -2853,7 +2893,7 @@ class admin_core_languages_manage_languages extends ipsCommand
$updated = 0;
$inserted = 0;
$word_pack = preg_replace( "#^" . $app . "_(\S+?)\.php$#", "\\1", $f );
$word_pack = preg_replace( "#^" . $app . '_(\S+?)\.php$#', "\\1", $f );
$lang = array();
$db_lang = array();
@@ -2937,7 +2977,7 @@ class admin_core_languages_manage_languages extends ipsCommand
// preg_match what we want
//-----------------------------------------
preg_match( "#ipb\.lang\['(.+?)'\](.+?)= [\"'](.+?)[\"'];#", $r, $matches );
preg_match( '#ipb\.lang\[\'(.+?)\'\](.+?)= ["\'](.+?)["\'];#', $r, $matches );
//-----------------------------------------
// Valid?
@@ -1,7 +1,7 @@
<html>
<head><title>IP.Board - Bulletin Board System</title></head>
<body>
<h1>403: IP.Board -> Forbidden</h1>
<h1>403: IP.Board -&gt; Forbidden</h1>
<hr>
You have reached this page in error, please use your back button to return to the forum.
<hr>
@@ -2,10 +2,10 @@
<menu>
<tabitems>
<item>
<title>Языки</title>
<title>Manage Languages</title>
<subitems>
<subitem>
<subitemtitle>Языки системы</subitemtitle>
<subitemtitle>Manage Languages</subitemtitle>
<subitemlang>languages</subitemlang>
<subsection>manage_languages</subsection>
<subitemurl></subitemurl>
@@ -1,20 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<permissions>
<group>
<grouptitle>Управление языками</grouptitle>
<grouptitle>Manage Languages</grouptitle>
<grouplang>core_languages</grouplang>
<items>
<item>
<key>lang_words</key>
<string>Может добавлять/изменять слова?</string>
<string>Can add/edit the language bit texts?</string>
</item>
<item>
<key>lang_packs</key>
<string>Может добавлять/изменять языковые наборы?</string>
<string>Can add/edit language packs?</string>
</item>
<item>
<key>lang_pack_info</key>
<string>Может изменять настройки и информацию языковых наборов?</string>
<string>Can alter the language pack properties and information?</string>
</item>
</items>
</group>
@@ -2,19 +2,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* ACP Login/Logout Routines
* Last Updated: $Date: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: ips_terabyte $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since Tuesday 17th August 2004
* @version $Revision: 8644 $
* @version $Revision: 10914 $
*/
if ( ! defined( 'IN_ACP' ) )
@@ -118,6 +118,10 @@ class admin_core_login_manualResolver extends ipsCommand
*/
public function loginComplete()
{
/* Fetch sessions API */
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/session/api.php', 'session_api' );
$publicApi = new $classToLoad( $this->registry );
//-----------------------------------------
// Check form details.
//-----------------------------------------
@@ -207,10 +211,10 @@ class admin_core_login_manualResolver extends ipsCommand
$extra_query = str_replace( $this->settings['_original_base_url'] , "" , $extra_query );
$extra_query = str_ireplace( "?index." . $this->settings['php_ext'] , "" , $extra_query );
$extra_query = ltrim( $extra_query, '?' );
$extra_query = preg_replace( "!adsess=(\w){32}!" , "" , $extra_query );
$extra_query = preg_replace( '!adsess=(\w){32}!' , "" , $extra_query );
$extra_query = str_replace( "adsess=x" , "" , $extra_query );
$extra_query = str_replace( array( 'old_&', 'old_&amp;' ) , "" , $extra_query );
$extra_query = preg_replace( "!s=(\w){32}!" , "" , $extra_query );
$extra_query = preg_replace( '!s=(\w){32}!' , "" , $extra_query );
$extra_query = str_replace( "module=login" , "" , $extra_query );
$extra_query = str_replace( "do=login-complete" , "" , $extra_query );
$extra_query = str_replace( "/admin" , "" , $extra_query );
@@ -230,8 +234,7 @@ class admin_core_login_manualResolver extends ipsCommand
/* Grab user agent */
$uAgent = array();
$this->DB->insert( 'core_sys_cp_sessions', array (
'session_id' => $sess_id,
$this->DB->insert( 'core_sys_cp_sessions', array( 'session_id' => $sess_id,
'session_ip_address' => $this->member->ip_address,
'session_member_name' => $mem['members_display_name'],
'session_member_id' => $mem['member_id'],
@@ -240,11 +243,13 @@ class admin_core_login_manualResolver extends ipsCommand
'session_log_in_time' => time(),
'session_running_time' => time(),
'session_app_data' => serialize( $uAgent ),
'session_url' => '',
) );
'session_url' => '' ) );
$this->request['adsess'] = $sess_id;
/* Log them in public side if not already */
$publicApi->logGuestInAsMember( $mem['member_id'] );
//-----------------------------------------
// Redirect...
//-----------------------------------------
@@ -275,7 +280,7 @@ class admin_core_login_manualResolver extends ipsCommand
// Redirect...
//-----------------------------------------
ipsRegistry::getClass('output')->redirect( $this->settings['base_url'] . '/' . CP_DIRECTORY . '/index.php', $this->lang->words['logout_complete'] );
ipsRegistry::getClass('output')->silentRedirect( $this->settings['_admin_link'] );
}
/**
@@ -3,19 +3,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Admin logs
* Last Updated: $LastChangedDate: 2011-06-01 22:13:27 -0400 (Wed, 01 Jun 2011) $
* Last Updated: $LastChangedDate: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since 27th January 2004
* @version $Rev: 8938 $
* @version $Rev: 10914 $
*/
if ( ! defined( 'IN_ACP' ) )
@@ -60,16 +60,6 @@ class admin_core_logs_adminlogs extends ipsCommand
$this->registry->getClass('class_localization')->loadLanguageFile( array( 'admin_logs' ) );
//-----------------------------------------
// Fix up navigation bar
//-----------------------------------------
$this->registry->output->core_nav = array();
$this->registry->output->ignoreCoreNav = true;
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=tools', $this->lang->words['nav_toolsmodule'] );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=tools&section=logsSplash', $this->lang->words['nav_logssplash'] );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=logs&section=adminlogs', $this->lang->words['alog_adminlogs'] );
///----------------------------------------
// What to do...
//-----------------------------------------
@@ -77,19 +67,26 @@ class admin_core_logs_adminlogs extends ipsCommand
switch( $this->request['do'] )
{
case 'view':
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=logs&section=adminlogs', $this->lang->words['alog_adminlogs'] );
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'adminlogs_view' );
$this->_view();
break;
case 'remove':
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=logs&section=adminlogs', $this->lang->words['alog_adminlogs'] );
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'adminlogs_delete' );
$this->_remove();
break;
default:
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=logs&section=adminlogs', $this->lang->words['alog_adminlogs'] );
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'adminlogs_view' );
$this->_listCurrent();
break;
case 'showArchived':
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=logs&section=adminlogs&do=showArchived', $this->lang->words['archiver_title'] );
$this->_listArchiver();
break;
}
/* Output */
@@ -97,6 +94,41 @@ class admin_core_logs_adminlogs extends ipsCommand
$this->registry->output->sendOutput();
}
/**
* View archive logs
*
* @return @e void [Outputs to screen]
*/
protected function _listArchiver()
{
$data = array();
$start = intval( $this->request['st'] );
/* Get count */
$count = $this->DB->buildAndFetch( array( 'select' => 'count(*) as count', 'from' => 'core_archive_log' ) );
$this->DB->build( array( 'select' => '*',
'from' => 'core_archive_log',
'order' => 'archlog_date DESC',
'limit' => array( $start, 50 ) ) );
$this->DB->execute();
while( $row = $this->DB->fetch() )
{
$data[] = $row;
}
/* Pagination */
$links = $this->registry->output->generatePagination( array( 'totalItems' => $count['count'],
'itemsPerPage' => 50,
'currentStartValue' => $start,
'baseUrl' => $this->settings['base_url'] . $this->form_code . '&amp;do=showArchived' ) );
/* Show output */
$this->registry->output->html .= $this->html->archiverlogsView( $data, $links );
}
/**
* View all logs for a given admin
*
@@ -289,7 +321,7 @@ class admin_core_logs_adminlogs extends ipsCommand
$this->DB->build( array(
'select' => 'count(l.member_id) as act_count, l.member_id',
'from' => array( 'admin_logs' => 'l' ),
'group' => 'l.member_id',
'group' => 'l.member_id, m.members_display_name',
'order' => 'act_count DESC',
'add_join' => array(
array(
@@ -3,12 +3,12 @@
* @file defaultSection.php Define the default section for the 'logs' module
*~TERABYTE_DOC_READY~
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
* $License: This is NULLED!
* $Author: ips_terabyte $
* $License: http://www.invisionpower.com/company/standards.php#license$
* $Author: bfarber $
* @since 20th February 2002
* $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $
* @version v3.2.3
* $Revision: 8655 $
* $LastChangedDate: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* @version v3.3.4
* $Revision: 10914 $
*/
$DEFAULT_SECTION = 'adminlogs';
$DEFAULT_SECTION = 'logsSplash';
@@ -3,19 +3,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Email error logs
* Last Updated: $LastChangedDate: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $
* Last Updated: $LastChangedDate: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: ips_terabyte $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since 27th January 2004
* @version $Rev: 8644 $
* @version $Rev: 10914 $
*/
if ( ! defined( 'IN_ACP' ) )
@@ -60,14 +60,6 @@ class admin_core_logs_emailerrorlogs extends ipsCommand
$this->registry->getClass('class_localization')->loadLanguageFile( array( 'admin_logs' ) );
//-----------------------------------------
// Fix up navigation bar
//-----------------------------------------
$this->registry->output->core_nav = array();
$this->registry->output->ignoreCoreNav = true;
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=tools', $this->lang->words['nav_toolsmodule'] );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=tools&section=logsSplash', $this->lang->words['nav_logssplash'] );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=logs&section=emailerrorlogs', $this->lang->words['elog_email_err_logs'] );
///----------------------------------------
@@ -3,19 +3,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Error logs
* Last Updated: $LastChangedDate: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $
* Last Updated: $LastChangedDate: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: ips_terabyte $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since 27th January 2004
* @version $Rev: 8644 $
* @version $Rev: 10914 $
*/
if ( ! defined( 'IN_ACP' ) )
@@ -60,14 +60,6 @@ class admin_core_logs_errorlogs extends ipsCommand
$this->registry->getClass('class_localization')->loadLanguageFile( array( 'admin_logs' ) );
//-----------------------------------------
// Fix up navigation bar
//-----------------------------------------
$this->registry->output->core_nav = array();
$this->registry->output->ignoreCoreNav = true;
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=tools', $this->lang->words['nav_toolsmodule'] );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=tools&section=logsSplash', $this->lang->words['nav_logssplash'] );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=logs&section=errorlogs', $this->lang->words['error_log_thelogs'] );
///----------------------------------------
@@ -2,18 +2,18 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Admin Login Logs
* Last Updated: $LastChangedDate: 2011-09-01 08:16:37 -0400 (Thu, 01 Sep 2011) $
* Last Updated: $LastChangedDate: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: ips_terabyte $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @version $Rev: 9439 $
* @link http://www.invisionpower.com
* @version $Rev: 10914 $
*/
if ( ! defined( 'IN_ACP' ) )
@@ -22,7 +22,7 @@ if ( ! defined( 'IN_ACP' ) )
exit();
}
class admin_core_system_loginlog extends ipsCommand
class admin_core_logs_loginlog extends ipsCommand
{
/**
* Main class entry point
@@ -39,15 +39,9 @@ class admin_core_system_loginlog extends ipsCommand
$this->registry->getClass('class_localization')->loadLanguageFile( array( 'admin_logs', 'admin_system' ) );
/* URLs */
$this->form_code = 'module=system&amp;section=loginlog';
$this->form_code_js = 'module=system&section=loginlog';
/* Navigation */
$this->registry->output->core_nav = array();
$this->registry->output->ignoreCoreNav = true;
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=tools', $this->lang->words['nav_toolsmodule'] );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=tools&section=logsSplash', $this->lang->words['nav_logssplash'] );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=system&section=loginlog', $this->lang->words['al_error_logs'] );
$this->form_code = 'module=logs&amp;section=loginlog';
$this->form_code_js = 'module=logs&section=loginlog';
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=logs&section=loginlog', $this->lang->words['al_error_logs'] );
/* Load skin */
$this->html = $this->registry->output->loadTemplate('cp_skin_system');
@@ -101,6 +95,17 @@ class admin_core_system_loginlog extends ipsCommand
$log['_admin_time'] = $this->registry->class_localization->getDate( $log['admin_time'], 'LONG' );
$log['_admin_post_details'] = unserialize( $log['admin_post_details'] );
foreach( array( 'get', 'post' ) as $r )
{
if ( is_array( $log['_admin_post_details'][ $r ] ) )
{
foreach( $log['_admin_post_details'][ $r ] as $k => $v )
{
$log['_admin_post_details'][ $r ][ $k ] = htmlspecialchars( $v );
}
}
}
//-----------------------------------------
// Show...
//-----------------------------------------
@@ -3,11 +3,11 @@
* @file logsSplash.php Logs splash screen
*~TERABYTE_DOC_READY~
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
* $License: This is NULLED!
* $License: http://www.invisionpower.com/company/standards.php#license$
* $Author: bfarber $
* @since 8th Feb 2011
* $LastChangedDate: 2011-09-12 20:59:05 -0400 (Mon, 12 Sep 2011) $
* @version v3.2.3
* @version v3.3.4
* $Revision: 9483 $
*/
@@ -3,18 +3,18 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Mobile Notification logs
* Last Updated: $LastChangedDate: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $
* Last Updated: $LastChangedDate: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: ips_terabyte $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @version $Rev: 8644 $
* @link http://www.invisionpower.com
* @version $Rev: 10914 $
*/
if ( ! defined( 'IN_ACP' ) )
@@ -59,14 +59,6 @@ class admin_core_logs_mobilelogs extends ipsCommand
$this->registry->getClass('class_localization')->loadLanguageFile( array( 'admin_logs' ) );
//-----------------------------------------
// Fix up navigation bar
//-----------------------------------------
$this->registry->output->core_nav = array();
$this->registry->output->ignoreCoreNav = true;
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=tools', $this->lang->words['nav_toolsmodule'] );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=tools&section=logsSplash', $this->lang->words['nav_logssplash'] );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=logs&section=mobilelogs', $this->lang->words['mlog_mobilelogs'] );
///----------------------------------------
@@ -3,19 +3,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Moderator logs
* Last Updated: $LastChangedDate: 2011-09-15 17:04:35 -0400 (Thu, 15 Sep 2011) $
* Last Updated: $LastChangedDate: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since 27th January 2004
* @version $Rev: 9495 $
* @version $Rev: 10914 $
*/
if ( ! defined( 'IN_ACP' ) )
@@ -60,14 +60,6 @@ class admin_core_logs_modlogs extends ipsCommand
$this->registry->getClass('class_localization')->loadLanguageFile( array( 'admin_logs' ) );
//-----------------------------------------
// Fix up navigation bar
//-----------------------------------------
$this->registry->output->core_nav = array();
$this->registry->output->ignoreCoreNav = true;
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=tools', $this->lang->words['nav_toolsmodule'] );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=tools&section=logsSplash', $this->lang->words['nav_logssplash'] );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=logs&section=modlogs', $this->lang->words['mlog_modlogs'] );
///----------------------------------------
@@ -312,7 +304,7 @@ class admin_core_logs_modlogs extends ipsCommand
$this->DB->build( array(
'select' => 'count(l.member_id) as act_count, l.member_id',
'from' => array( 'moderator_logs' => 'l' ),
'group' => 'l.member_id',
'group' => 'l.member_id, m.members_display_name',
'order' => 'act_count DESC',
'add_join' => array(
array(
@@ -3,18 +3,18 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Admin logs
* Last Updated: $LastChangedDate: 2011-05-12 22:28:10 -0400 (Thu, 12 May 2011) $
* Last Updated: $LastChangedDate: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @version $Rev: 8754 $
* @link http://www.invisionpower.com
* @version $Rev: 10914 $
*/
if ( ! defined( 'IN_ACP' ) )
@@ -59,14 +59,6 @@ class admin_core_logs_spamlogs extends ipsCommand
$this->registry->getClass('class_localization')->loadLanguageFile( array( 'admin_logs' ) );
//-----------------------------------------
// Fix up navigation bar
//-----------------------------------------
$this->registry->output->core_nav = array();
$this->registry->output->ignoreCoreNav = true;
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=tools', $this->lang->words['nav_toolsmodule'] );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=tools&section=logsSplash', $this->lang->words['nav_logssplash'] );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=logs&section=spamlogs', $this->lang->words['slog_spamlogs'] );
///----------------------------------------
@@ -3,19 +3,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Search Engine Spider logs
* Last Updated: $LastChangedDate: 2011-05-11 22:11:30 -0400 (Wed, 11 May 2011) $
* Last Updated: $LastChangedDate: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since 27th January 2004
* @version $Rev: 8734 $
* @version $Rev: 10914 $
*/
if ( ! defined( 'IN_ACP' ) )
@@ -76,14 +76,6 @@ class admin_core_logs_spiderlogs extends ipsCommand
$this->registry->getClass('class_localization')->loadLanguageFile( array( 'admin_logs' ) );
//-----------------------------------------
// Fix up navigation bar
//-----------------------------------------
$this->registry->output->core_nav = array();
$this->registry->output->ignoreCoreNav = true;
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=tools', $this->lang->words['nav_toolsmodule'] );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=tools&section=logsSplash', $this->lang->words['nav_logssplash'] );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=logs&section=spiderlogs', $this->lang->words['slog_spider_logs'] );
///----------------------------------------
@@ -161,7 +153,7 @@ class admin_core_logs_spiderlogs extends ipsCommand
}
else
{
$this->request[ 'search_string'] = IPSText::parseCleanValue( urldecode($this->request['search_string'] ) );
$this->request['search_string'] = IPSText::parseCleanValue( urldecode($this->request['search_string'] ) );
$row = $this->DB->buildAndFetch( array( 'select' => 'COUNT(sid) as count', 'from' => 'spider_logs', 'where' => "query_string LIKE '%" . $this->request['search_string'] . "%'" ) );
@@ -214,7 +206,7 @@ class admin_core_logs_spiderlogs extends ipsCommand
$query_string_html = "<a href='http://" . $_SERVER['HTTP_HOST'] . "{$row['request_addr']}' target='_blank'>" . IPSText::truncate($row['request_addr']) . "</a>";
}
$row['_bot_name'] = $this->bot_map[ mb_strtolower($row['bot']) ];
$row['_bot_name'] = $this->bot_map[ strtolower($row['bot']) ];
$row['_query_string'] = $query_string_html;
$row['_time'] = $this->registry->getClass('class_localization')->getDate( $row['entry_date'], 'LONG' );
@@ -273,7 +265,7 @@ class admin_core_logs_spiderlogs extends ipsCommand
while ( $r = $this->DB->fetch() )
{
$r['_bot_name'] = $this->bot_map[ mb_strtolower($r['bot']) ];
$r['_bot_name'] = $this->bot_map[ strtolower($r['bot']) ];
$r['_time'] = $this->registry->getClass('class_localization')->getDate( $r['entry_date'], 'SHORT' );
$r['_bot_url'] = urlencode($r['bot']);
@@ -2,19 +2,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* SQL error logs
* Last Updated: $LastChangedDate: 2011-07-26 04:00:17 -0400 (Tue, 26 Jul 2011) $
* Last Updated: $LastChangedDate: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: mmecham $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since 27th January 2004
* @version $Rev: 9317 $
* @version $Rev: 10914 $
*/
if ( ! defined( 'IN_ACP' ) )
@@ -59,15 +59,7 @@ class admin_core_logs_sqlerror extends ipsCommand
$this->registry->getClass('class_localization')->loadLanguageFile( array( 'admin_logs' ) );
//-----------------------------------------
// Fix up navigation bar
//-----------------------------------------
$this->registry->output->core_nav = array();
$this->registry->output->ignoreCoreNav = true;
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=tools', $this->lang->words['nav_toolsmodule'] );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=tools&section=logsSplash', $this->lang->words['nav_logssplash'] );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=logs&section=sqlerror', $this->lang->words['mlog_sqlerrors'] );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=logs&section=sqlerror', $this->lang->words['sqllog_title'] );
///----------------------------------------
// What to do...
@@ -236,13 +228,15 @@ class admin_core_logs_sqlerror extends ipsCommand
if ( preg_match( "#^sql_error_log_(\d+)_(\d+)_(\d+).cgi$#", $file->getFilename(), $matches ) )
{
$rows[] = array( 'name' => $file->getFilename(),
$rows[ $file->getFilename() ] = array( 'name' => $file->getFilename(),
'mtime' => $file->getMTime(),
'size' => $file->getSize() );
}
}
} catch ( Exception $e ) {}
ksort( $rows );
//-----------------------------------------
// And output
//-----------------------------------------
@@ -0,0 +1,213 @@
<?php
/**
* @file taskmanager.php Task manager
*~TERABYTE_DOC_READY~
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
* $License: http://www.invisionpower.com/company/standards.php#license$
* $Author: bfarber $
* $LastChangedDate: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* @version v3.3.4
* $Revision: 10914 $
*/
if ( ! defined( 'IN_ACP' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'.";
exit();
}
/**
*
* @class admin_core_system_taskmanager
* @brief Task manager
*/
class admin_core_logs_tasklogs extends ipsCommand
{
/**
* Skin object shortcut
*
* @var $html
*/
public $html;
/**
* String for the screen url bit
*
* @var $form_code
*/
public $form_code = '';
/**
* String for the JS url bit
*
* @var $form_code_js
*/
public $form_code_js = '';
/**
* Main function executed automatically by the controller
*
* @param object $registry Registry object
* @return @e void
*/
public function doExecute( ipsRegistry $registry )
{
/* Load Class */
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . '/sources/classes/class_taskmanager.php', 'class_taskmanager' );
$this->func_taskmanager = new $classToLoad( $registry );
/* Load Skin and Language */
$this->html = $this->registry->output->loadTemplate('cp_skin_system');
$this->registry->class_localization->loadLanguageFile( array( 'admin_system' ) );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=logs&section=tasklogs', $this->lang->words['sched_error_logs'] );
/* URLs */
$this->form_code = $this->html->form_code = 'module=logs&amp;section=tasklogs';
$this->form_code_js = $this->html->form_code_js = 'module=logs&section=tasklogs';
switch( $this->request['do'] )
{
default:
case 'task_logs':
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'tasklogs_view' );
$this->taskLogsOverview();
break;
case 'task_log_show':
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'tasklogs_view' );
$this->taskLogsShow();
break;
case 'task_log_delete':
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'tasklogs_delete' );
$this->taskLogsDelete();
break;
}
/* Output */
$this->registry->output->html_main .= $this->registry->output->global_template->global_frame_wrapper();
$this->registry->output->sendOutput();
}
/**
* Remove logs for a specific task or all
*
* @return @e void
*/
public function taskLogsDelete()
{
/* INIT */
$prune = intval( $this->request['task_prune'] ) ? intval( $this->request['task_prune'] ) : 30;
$prune = time() - ( $prune * 86400 );
if( $this->request['task_title'] != -1 )
{
$where = "log_title='{$this->request['task_title']}' AND log_date > {$prune}";
}
else
{
$where = "log_date > {$prune}";
}
/* Delete */
$this->DB->delete( 'task_logs', $where );
/* Bounce */
$this->registry->output->global_message = $this->lang->words['t_removed'];
$this->taskLogsOverview();
}
/**
* Show task logs
*
* @return @e void
*/
public function taskLogsShow()
{
$this->registry->getClass('class_localization')->loadLanguageFile( array( 'admin_logs' ) );
/* INIT */
$limit = intval( $this->request['task_count'] ) ? intval( $this->request['task_count'] ) : 30;
$limit = $limit > 150 ? 150 : $limit;
/* Query the tasks */
if ( $this->request['task_title'] != -1 )
{
$this->DB->build( array( 'select' => '*', 'from' => 'task_logs', 'where' => "log_title='".$this->request['task_title']."'", 'order' => 'log_date DESC', 'limit' => array(0,$limit) ) );
}
else
{
$this->DB->build( array( 'select' => '*', 'from' => 'task_logs', 'order' => 'log_date DESC', 'limit' => array(0,$limit) ) );
}
$this->DB->execute();
/* Loop through the tasks */
$rows = array();
while( $row = $this->DB->fetch() )
{
$row['log_date'] = ipsRegistry::getClass( 'class_localization')->getDate( $row['log_date'], 'TINY' );
$rows[] = $row;
}
$this->registry->output->html .= $this->html->taskManagerLogsShowWrapper( $rows );
}
/**
* Builds the task log overview screen
*
* @return @e void
*/
public function taskLogsOverview()
{
//-----------------------------------------
// Fix up navigation bar
//-----------------------------------------
$this->registry->getClass('class_localization')->loadLanguageFile( array( 'admin_logs' ) );
$this->registry->output->core_nav = array();
$this->registry->output->ignoreCoreNav = true;
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=tools', $this->lang->words['nav_toolsmodule'] );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=tools&section=logsSplash', $this->lang->words['nav_logssplash'] );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=system&section=taskmanager&do=task_logs', $this->lang->words['sched_error_logs'] );
/* INIT */
$tasks = array( 0 => array( -1, 'All tasks' ) );
$last5 = "";
$form = array();
/* Get thet ask titles */
$this->DB->build( array( 'select' => '*', 'from' => 'task_manager', 'order' => 'task_title' ) );
$this->DB->execute();
while ( $r = $this->DB->fetch() )
{
$tasks[] = array( $r['task_title'], $r['task_title'] );
}
/* Get the last 5 logs */
$this->DB->build( array( 'select' => '*', 'from' => 'task_logs', 'order' => 'log_date DESC', 'limit' => array(0,5) ) );
$this->DB->execute();
$last5 = array();
while ( $row = $this->DB->fetch() )
{
//$row['log_desc'] = IPSText::truncate( $row['log_desc'] );
$row['log_date'] = $this->registry->class_localization->getDate( $row['log_date'], 'TINY' );
$last5[] = $row;
}
/* Build the form elements */
$form['task_title'] = $this->registry->output->formDropdown( 'task_title', $tasks, $this->request['task_title'] );
$form['task_title_delete'] = $this->registry->output->formDropdown( 'task_title', $tasks, $this->request['task_title_delete'] );
$form['task_count'] = $this->registry->output->formInput( 'task_count', $this->request['task_count'] ? $this->request['task_count'] : 30 );
$form['task_prune'] = $this->registry->output->formInput( 'task_prune', $this->request['task_prune'] ? $this->request['task_prune'] : 30 );
/* Output */
$this->registry->output->html .= $this->html->taskManagerLogsOverview( $last5, $form );
}
}
@@ -1,21 +1,14 @@
<?php
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* Warn logs
* Last Updated: $LastChangedDate: 2011-05-12 17:45:20 -0400 (Thu, 12 May 2011) $
* </pre>
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @file warnlogs.php Warn logs
*~TERABYTE_DOC_READY~
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
* $License: http://www.invisionpower.com/company/standards.php#license$
* $Author: bfarber $
* @since 27th January 2004
* @version $Rev: 8752 $
* $LastChangedDate: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* @version v3.3.4
* $Revision: 10914 $
*/
if ( ! defined( 'IN_ACP' ) )
@@ -24,20 +17,38 @@ if ( ! defined( 'IN_ACP' ) )
exit();
}
/**
* @class admin_core_logs_warnlogs
* @brief Warn logs
*/
class admin_core_logs_warnlogs extends ipsCommand
{
/**
* Skin object
* Skin object shortcut
*
* @var object Skin templates
* @var $html
*/
protected $html;
public $html;
/**
* Main class entry point
* String for the screen url bit
*
* @param object ipsRegistry reference
* @return @e void [Outputs to screen]
* @var $form_code
*/
public $form_code = '';
/**
* String for the JS url bit
*
* @var $form_code_js
*/
public $form_code_js = '';
/**
* Main function executed automatically by the controller
*
* @param object $registry Registry object
* @return @e void
*/
public function doExecute( ipsRegistry $registry )
{
@@ -60,14 +71,6 @@ class admin_core_logs_warnlogs extends ipsCommand
$this->registry->getClass('class_localization')->loadLanguageFile( array( 'admin_logs' ) );
//-----------------------------------------
// Fix up navigation bar
//-----------------------------------------
$this->registry->output->core_nav = array();
$this->registry->output->ignoreCoreNav = true;
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=tools', $this->lang->words['nav_toolsmodule'] );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=tools&section=logsSplash', $this->lang->words['nav_logssplash'] );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=logs&section=warnlogs', $this->lang->words['wlog_warn_logs'] );
///----------------------------------------
@@ -81,11 +84,6 @@ class admin_core_logs_warnlogs extends ipsCommand
$this->_view();
break;
case 'viewcontact':
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'warnlogs_view' );
$this->_viewContact();
break;
case 'viewnote':
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'warnlogs_view' );
$this->_viewNote();
@@ -110,7 +108,7 @@ class admin_core_logs_warnlogs extends ipsCommand
/**
* View all logs for a given moderator
*
* @return @e void [Outputs to screen]
* @return @e void
*/
protected function _view()
{
@@ -120,6 +118,16 @@ class admin_core_logs_warnlogs extends ipsCommand
$start = intval($this->request['st']) >= 0 ? intval($this->request['st']) : 0;
/* Load reasons */
$reasons = array();
$this->DB->build( array( 'select' => '*', 'from' => 'members_warn_reasons', 'order' => 'wr_order' ) );
$this->DB->execute();
while ( $row = $this->DB->fetch() )
{
$reasons[ $row['wr_id'] ] = $row;
}
///----------------------------------------
// No mid or search string?
//-----------------------------------------
@@ -137,24 +145,24 @@ class admin_core_logs_warnlogs extends ipsCommand
if ( !$this->request['search_string'] )
{
$row = $this->DB->buildAndFetch( array( 'select' => 'COUNT(wlog_id) as count', 'from' => 'warn_logs', 'where' => "wlog_mid=".intval($this->request['mid']) ) );
$row = $this->DB->buildAndFetch( array( 'select' => 'COUNT(wl_id) as count', 'from' => 'members_warn_logs', 'where' => "wl_member=".intval($this->request['mid']) ) );
$query = "{$this->form_code}&amp;mid=" . $this->request['mid'] . "&amp;do=view";
$this->DB->build( array( 'select' => 'l.*',
'from' => array( 'warn_logs' => 'l' ),
'where' => 'l.wlog_mid=' . intval($this->request['mid']),
'order' => 'l.wlog_date DESC',
'from' => array( 'members_warn_logs' => 'l' ),
'where' => 'l.wl_member=' . intval($this->request['mid']),
'order' => 'l.wl_date DESC',
'limit' => array( $start, 30 ),
'add_join' => array(
array( 'select' => 'm.member_id as a_id, m.members_display_name as a_name',
'from' => array( 'members' => 'm' ),
'where' => 'm.member_id=l.wlog_mid',
'where' => 'm.member_id=l.wl_member',
'type' => 'left'
),
array( 'select' => 'p.member_id as p_id, p.members_display_name as p_name',
'from' => array( 'members' => 'p' ),
'where' => 'p.member_id=l.wlog_addedby',
'where' => 'p.member_id=l.wl_moderator',
'type' => 'left'
),
)
@@ -165,33 +173,26 @@ class admin_core_logs_warnlogs extends ipsCommand
{
$this->request[ 'search_string'] = IPSText::parseCleanValue( urldecode($this->request['search_string'] ) );
if ( ($this->request['search_type'] == 'notes') )
{
$dbq = "l.wlog_notes LIKE '%" . $this->request['search_string'] . "%'";
}
else
{
$dbq = "l.wlog_contact_content LIKE '%" . $this->request['search_string'] . "%'";
}
$dbq = "l.wl_note_member LIKE '%" . $this->request['search_string'] . "%' OR l.wl_note_mods LIKE '%" . $this->request['search_string'] . "%'";
$row = $this->DB->buildAndFetch( array( 'select' => 'COUNT(l.wlog_id) as count', 'from' => 'warn_logs l', 'where' => $dbq ) );
$row = $this->DB->buildAndFetch( array( 'select' => 'COUNT(l.wl_id) as count', 'from' => 'members_warn_logs l', 'where' => $dbq ) );
$query = "{$this->form_code}&amp;do=view&amp;search_type=" . $this->request['search_type'] . "&amp;search_string=" . urlencode($this->request['search_string']);
$this->DB->build( array( 'select' => 'l.*',
'from' => array( 'warn_logs' => 'l' ),
'from' => array( 'members_warn_logs' => 'l' ),
'where' => $dbq,
'order' => 'l.wlog_date DESC',
'order' => 'l.wl_date DESC',
'limit' => array( $start, 30 ),
'add_join' => array(
array( 'select' => 'm.member_id as a_id, m.members_display_name as a_name',
'from' => array( 'members' => 'm' ),
'where' => 'm.member_id=l.wlog_mid',
'where' => 'm.member_id=l.wl_member',
'type' => 'left'
),
array( 'select' => 'p.member_id as p_id, p.members_display_name as p_name',
'from' => array( 'members' => 'p' ),
'where' => 'p.member_id=l.wlog_addedby',
'where' => 'p.member_id=l.wl_moderator',
'type' => 'left'
),
)
@@ -204,7 +205,7 @@ class admin_core_logs_warnlogs extends ipsCommand
//-----------------------------------------
$links = $this->registry->output->generatePagination( array( 'totalItems' => $row['count'],
'itemsPerPage' => 20,
'itemsPerPage' => 30,
'currentStartValue' => $start,
'baseUrl' => $this->settings['base_url'] . $query,
)
@@ -218,58 +219,12 @@ class admin_core_logs_warnlogs extends ipsCommand
while ( $row = $this->DB->fetch() )
{
///----------------------------------------
// Basics
//-----------------------------------------
$row['_a_name'] = $row['a_name'] ? $row['a_name'] : sprintf( $this->lang->words['wlog_deleted'], $row['wlog_mid'] );
$row['_date'] = $this->registry->class_localization->getDate( $row['wlog_date'], 'LONG' );
$row['_type'] = ( $row['wlog_type'] == 'pos' ) ? '<span style="color:green;font-weight:bold">-</span>' : '<span style="color:red;font-weight:bold">+</span>';
$row['_type'] = ( $row['wlog_type'] == 'custom' ) ? '<span style="color:grey;font-weight:bold">C</span>' : $row['_type'];
$row['_cont'] = ( $row['wlog_contact'] != 'none' ) ? "<a href='#' onclick='return acp.openWindow(\"{$this->settings['base_url']}&{$this->form_code}&do=viewcontact&id={$row['wlog_id']}\", 400,400, \"{$this->lang->words['wlog_log']}\"); return false;'>{$this->lang->words['wlog_view']}</a>" : '&nbsp;';
///----------------------------------------
// Mod Q
//-----------------------------------------
if ( strstr( $row['wlog_notes'], '<content>' ) )
{
$mod = preg_match( "#<mod>(.+?)</mod>#is" , $row['wlog_notes'], $mm );
$mod = trim($mm[1]);
list($v, $u, $i) = explode( ',', $mod);
$row['_mod'] = ( $i == 1 ) ? $this->lang->words['wlog_indef'] : ( $v == "" ? $this->lang->words['wlog_none'] : $v . ' ' . $days[$u] );
///----------------------------------------
// Susp
//-----------------------------------------
$susp = preg_match( "#<susp>(.+?)</susp>#is" , $row['wlog_notes'], $sm );
$susp = trim($sm[1]);
list($v, $u) = explode( ',', $susp );
$row['_susp'] = $v == '' ? $this->lang->words['wlog_none'] : $v . ' ' . $days[$u];
///----------------------------------------
// Posting Susp
//-----------------------------------------
$post = preg_match( "#<post>(.+?)</post>#is" , $row['wlog_notes'], $pm );
$post = trim($pm[1]);
list($v, $u, $i) = explode( ',', $post );
$row['_post'] = ( $i == 1 ) ? $this->lang->words['wlog_indef'] : ( $v == "" ? $this->lang->words['wlog_none'] : $v . ' ' . $days[$u] );
}
else
{
$_wlog = unserialize( $row['wlog_notes'] );
$row['_mod'] = $_wlog['mod_indef'] ? $this->lang->words['wlog_indef'] : ( $_wlog['mod'] == 0 ? $this->lang->words['wlog_none'] : $_wlog['mod'] . ' ' . $days[ $_wlog['mod_unit'] ? $_wlog['mod_unit'] : 'd' ] );
$row['_susp'] = $_wlog['ban'] ? $this->lang->words['wlog_indef'] : ( $_wlog['susp'] == 0 ? $this->lang->words['wlog_none'] : $_wlog['susp'] . ' ' . $days[ $_wlog['susp_unit'] ? $_wlog['susp_unit'] : 'd' ] );
$row['_post'] = $_wlog['post_indef'] ? $this->lang->words['wlog_indef'] : ( $_wlog['post'] == 0 ? $this->lang->words['wlog_none'] : $_wlog['post'] . ' ' . $days[ $_wlog['post_unit'] ? $_wlog['post_unit'] : 'd' ] );
}
//-----------------------------------------
$row['_a_name'] = $row['a_name'] ? $row['a_name'] : sprintf( $this->lang->words['wlog_deleted'], $row['wl_member'] );
$row['_date'] = $this->registry->class_localization->getDate( $row['wl_date'], 'LONG' );
$row['wl_reason'] = $row['wl_reason'] ? $reasons[ $row['wl_reason'] ]['wr_name'] : '--';
$row['_mod'] = $row['wl_mq'] == -1 ? $this->lang->words['wlog_indef'] : ( $row['wl_mq'] == 0 ? $this->lang->words['wlog_none'] : $row['wl_mq'] . ' ' . $days[ $row['wl_mq_unit'] ? $row['wl_mq_unit'] : 'd' ] );
$row['_susp'] = $row['wl_suspend'] == -1 ? $this->lang->words['wlog_indef'] : ( $row['wl_suspend'] == 0 ? $this->lang->words['wlog_none'] : $row['wl_suspend'] . ' ' . $row[ $row['wl_suspend_unit'] ? $row['wl_suspend_unit'] : 'd' ] );
$row['_post'] = $row['wl_rpa'] == -1 ? $this->lang->words['wlog_indef'] : ( $row['wl_rpa'] == 0 ? $this->lang->words['wlog_none'] : $row['wl_rpa'] . ' ' . $days[ $row['wl_rpa_unit'] ? $row['wl_rpa_unit'] : 'd' ] );
$rows[] = $row;
}
@@ -284,7 +239,7 @@ class admin_core_logs_warnlogs extends ipsCommand
/**
* Remove logs by a moderator
*
* @return @e void [Outputs to screen]
* @return @e void
*/
protected function _remove()
{
@@ -293,7 +248,7 @@ class admin_core_logs_warnlogs extends ipsCommand
$this->registry->output->showError( $this->lang->words['wlog_nofind'], 11133 );
}
$this->DB->delete( 'warn_logs', "wlog_mid=" . intval($this->request['mid']) );
$this->DB->delete( 'members_warn_logs', "wl_member=" . intval($this->request['mid']) );
$this->registry->getClass('adminFunctions')->saveAdminLog( sprintf( $this->lang->words['wlog_removelogs'], $this->request['mid'] ) );
@@ -303,10 +258,11 @@ class admin_core_logs_warnlogs extends ipsCommand
/**
* List the current logs with links to view per-admin
*
* @return @e void [Outputs to screen]
* @return @e void
*/
protected function _listCurrent()
{
/* Init vars */
$rows = array();
$members = array();
@@ -315,18 +271,18 @@ class admin_core_logs_warnlogs extends ipsCommand
//-----------------------------------------
$this->DB->build( array( 'select' => 'l.*',
'from' => array( 'warn_logs' => 'l' ),
'order' => 'l.wlog_date DESC',
'from' => array( 'members_warn_logs' => 'l' ),
'order' => 'l.wl_date DESC',
'limit' => array( 0, 10 ),
'add_join' => array(
array( 'select' => 'm.member_id as a_id, m.members_display_name as a_name',
'from' => array( 'members' => 'm' ),
'where' => 'm.member_id=l.wlog_mid',
'where' => 'm.member_id=l.wl_member',
'type' => 'left'
),
array( 'select' => 'p.member_id as p_id, p.members_display_name as p_name',
'from' => array( 'members' => 'p' ),
'where' => 'p.member_id=l.wlog_addedby',
'where' => 'p.member_id=l.wl_moderator',
'type' => 'left'
),
)
@@ -335,11 +291,8 @@ class admin_core_logs_warnlogs extends ipsCommand
while ( $row = $this->DB->fetch() )
{
$row['_a_name'] = $row['a_name'] ? $row['a_name'] : sprintf( $this->lang->words['wlog_deleted'], $row['wlog_mid'] );
$row['_date'] = $this->registry->class_localization->getDate( $row['wlog_date'], 'LONG' );
$row['_type'] = ( $row['wlog_type'] == 'pos' ) ? '<span style="color:green;font-weight:bold">-</span>' : '<span style="color:red;font-weight:bold">+</span>';
$row['_type'] = ( $row['wlog_type'] == 'custom' ) ? '<span style="color:grey;font-weight:bold">C</span>' : $row['_type'];
$row['_cont'] = ( $row['wlog_contact'] != 'none' ) ? "<a title='{$this->lang->words['wlog_showmessage']}' href='#' onclick='return acp.openWindow(\"{$this->settings['base_url']}&{$this->form_code}&do=viewcontact&id={$row['wlog_id']}\",400,400,\"{$this->lang->words['wlog_log']}\"); return false;'><img src='{$this->settings['skin_acp_url']}/images/icons/tick.png' alt='{$this->lang->words['wlog_contacted']}'></a>" : '&nbsp;';
$row['_a_name'] = $row['a_name'] ? $row['a_name'] : sprintf( $this->lang->words['wlog_deleted'], $row['wl_member'] );
$row['_date'] = $this->registry->class_localization->getDate( $row['wl_date'], 'LONG' );
$rows[] = $row;
}
@@ -348,19 +301,26 @@ class admin_core_logs_warnlogs extends ipsCommand
// All members
//-----------------------------------------
$st = intval( $this->request['st'] );
$perpage = 15;
$count = $this->DB->buildAndFetch( array( 'select' => 'count( ' .$this->DB->buildDistinct( 'wl_member' ) . ') as count', 'from' => 'members_warn_logs' ) );
if ( $count['count'] )
{
$this->DB->build( array(
'select' => 'count(l.wlog_mid) as act_count',
'from' => array( 'warn_logs' => 'l' ),
'group' => 'l.wlog_mid',
'select' => 'count(l.wl_member) as act_count',
'from' => array( 'members_warn_logs' => 'l' ),
'group' => 'l.wl_member, m.member_id, m.members_display_name',
'order' => 'act_count DESC',
'add_join' => array(
array(
'select' => 'm.member_id, m.members_display_name',
'from' => array( 'members' => 'm' ),
'where' => 'm.member_id=l.wlog_mid',
'where' => 'm.member_id=l.wl_member',
'type' => 'left',
),
),
'limit' => array( $st, $perpage ),
) );
$this->DB->execute();
@@ -368,18 +328,26 @@ class admin_core_logs_warnlogs extends ipsCommand
{
$members[ $r['member_id'] ] = $r;
}
}
$pagination = $this->registry->output->generatePagination( array( 'totalItems' => $count['count'],
'itemsPerPage' => $perpage,
'currentStartValue' => $st,
'baseUrl' => $this->settings['base_url'] . $this->form_code,
) );
//-----------------------------------------
// Output
//-----------------------------------------
$this->registry->output->html .= $this->html->warnlogsWrapper( $rows, $members );
$this->registry->output->html .= $this->html->warnlogsWrapper( $rows, $members, $pagination );
}
/**
* Popup window to view a note
*
* @return @e void [Outputs to screen]
* @return @e void
*/
protected function _viewNote()
{
@@ -391,45 +359,29 @@ class admin_core_logs_warnlogs extends ipsCommand
$id = intval($this->request['id']);
$row = $this->DB->buildAndFetch( array( 'select' => 'l.*',
'from' => array( 'warn_logs' => 'l' ),
'where' => 'l.wlog_id=' . $id,
'from' => array( 'members_warn_logs' => 'l' ),
'where' => 'l.wl_id=' . $id,
'add_join' => array(
array( 'select' => 'm.member_id as a_id, m.members_display_name as a_name',
'from' => array( 'members' => 'm' ),
'where' => 'm.member_id=l.wlog_mid',
'where' => 'm.member_id=l.wl_member',
'type' => 'left'
),
array( 'select' => 'p.member_id as p_id, p.members_display_name as p_name, p.member_group_id, p.mgroup_others',
'from' => array( 'members' => 'p' ),
'where' => 'p.member_id=l.wlog_addedby',
'where' => 'p.member_id=l.wl_moderator',
'type' => 'left'
),
)
) );
if ( ! $row['wlog_id'] )
if ( ! $row['wl_id'] )
{
$this->registry->output->showError( $this->lang->words['wlog_cantresolve'], 11135 );
}
$cont = array();
if ( strstr( $row['wlog_notes'], '<content>' ) )
{
preg_match( "#<content>(.+?)</content>#is", $row['wlog_notes'], $cont );
}
else
{
$_array = unserialize( $row['wlog_notes'] );
if ( is_array( $_array ) AND $_array['content'] )
{
$cont[1] = $_array['content'];
}
}
$row['_date'] = $this->registry->class_localization->getDate( $row['wlog_date'], 'LONG' );
$row['a_name'] = $row['a_name'] ? $row['a_name'] : sprintf( $this->lang->words['deleted_member_warnlog'], $row['wlog_mid'] );
$row['_date'] = $this->registry->class_localization->getDate( $row['wl_date'], 'LONG' );
$row['a_name'] = $row['a_name'] ? $row['a_name'] : sprintf( $this->lang->words['deleted_member_warnlog'], $row['wl_member'] );
IPSText::getTextClass('bbcode')->parse_bbcode = 1;
IPSText::getTextClass('bbcode')->parse_smilies = 1;
@@ -439,79 +391,11 @@ class admin_core_logs_warnlogs extends ipsCommand
IPSText::getTextClass( 'bbcode' )->parsing_mgroup = $row['member_group_id'];
IPSText::getTextClass( 'bbcode' )->parsing_mgroup_others = $row['mgroup_others'];
$row['_text'] = IPSText::getTextClass('bbcode')->preDisplayParse( $cont[1] );
$row['wl_note_member'] = IPSText::getTextClass('bbcode')->preDisplayParse( $row['wl_note_member'] );
$row['wl_note_mods'] = IPSText::getTextClass('bbcode')->preDisplayParse( $row['wl_note_mods'] );
$this->registry->output->html .= $this->html->warnlogsNote( $row );
$this->registry->output->printPopupWindow();
}
/**
* Popup window to view a contact
*
* @return @e void [Outputs to screen]
*/
protected function _viewContact()
{
if ( !$this->request['id'] )
{
$this->registry->output->showError( $this->lang->words['wlog_nologs'], 11136 );
}
$id = intval($this->request['id']);
$row = $this->DB->buildAndFetch( array( 'select' => 'l.*',
'from' => array( 'warn_logs' => 'l' ),
'where' => 'l.wlog_id=' . $id,
'add_join' => array(
array( 'select' => 'm.member_id as a_id, m.members_display_name as a_name',
'from' => array( 'members' => 'm' ),
'where' => 'm.member_id=l.wlog_mid',
'type' => 'left'
),
array( 'select' => 'p.member_id as p_id, p.members_display_name as p_name, p.member_group_id, p.mgroup_others',
'from' => array( 'members' => 'p' ),
'where' => 'p.member_id=l.wlog_addedby',
'type' => 'left'
),
)
) );
if ( ! $row['wlog_id'] )
{
$this->registry->output->showError( $this->lang->words['wlog_nologs'], 11137 );
}
if( strpos( $row['wlog_contact_content'], '<content>' ) )
{
$subject = preg_match( "#<subject>(.+?)</subject>#is", $row['wlog_contact_content'], $subj );
$content = preg_match( "#<content>(.+?)</content>#is", $row['wlog_contact_content'], $cont );
$row['_subject'] = $subj[1];
$row['_text'] = $cont[1];
}
else
{
$row['_subject'] = $this->lang->words['subj_not_avail'];
$row['_text'] = $row['wlog_contact_content'];
}
$row['_type'] = $row['wlog_contact'] == 'pm' ? $this->lang->words['wlog_pm'] : $this->lang->words['wlog_email'];
$row['_date'] = $this->registry->class_localization->getDate( $row['wlog_date'], 'LONG' );
$row['a_name'] = $row['a_name'] ? $row['a_name'] : sprintf( $this->lang->words['wlog_deleted'], $row['wlog_mid'] );
IPSText::getTextClass( 'bbcode' )->parse_smilies = 1;
IPSText::getTextClass( 'bbcode' )->parse_html = 1;
IPSText::getTextClass( 'bbcode' )->parse_bbcode = 1;
IPSText::getTextClass( 'bbcode' )->parsing_section = 'warn';
IPSText::getTextClass( 'bbcode' )->parsing_mgroup = $row['member_group_id'];
IPSText::getTextClass( 'bbcode' )->parsing_mgroup_others = $row['mgroup_others'];
$row['_text'] = IPSText::getTextClass( 'bbcode' )->preDisplayParse( $row['_text'] );
$row['_text'] = $this->registry->output->replaceMacros( $row['_text'] );
$this->registry->output->html .= $this->html->warnlogsContact( $row );
$this->registry->output->printPopupWindow();
}
}
@@ -1,86 +1,96 @@
<?xml version="1.0" encoding="UTF-8"?>
<permissions>
<group>
<grouptitle>Журнал администраторских действий</grouptitle>
<grouptitle>Admin Logs</grouptitle>
<grouplang>core_adminlogs</grouplang>
<items>
<item>
<key>adminlogs_view</key>
<string>Может просматривать журнал?</string>
<string>Can view admin logs?</string>
</item>
<item>
<key>adminlogs_delete</key>
<string>Может удлаять записи?</string>
<string>Can delete admin logs?</string>
</item>
</items>
</group>
<group>
<grouptitle>Журнал модераторских действий</grouptitle>
<grouptitle>Admin Login Logs</grouptitle>
<grouplang>core_acp_loginlogs</grouplang>
<items>
<item>
<key>acplogin_log</key>
<string>Can view admin login logs?</string>
</item>
</items>
</group>
<group>
<grouptitle>Moderator Logs</grouptitle>
<grouplang>core_modlogs</grouplang>
<items>
<item>
<key>modlogs_view</key>
<string>Может просматривать журнал?</string>
<string>Can view moderator logs?</string>
</item>
<item>
<key>modlogs_delete</key>
<string>Может удлаять записи?</string>
<string>Can delete moderator logs?</string>
</item>
</items>
</group>
<group>
<grouptitle>Журнал ошибок Email</grouptitle>
<grouptitle>Email Error Logs</grouptitle>
<grouplang>core_eelogs</grouplang>
<items>
<item>
<key>emailerrorlogs_view</key>
<string>Может просматривать журнал?</string>
<string>Can view email error logs?</string>
</item>
<item>
<key>emailerrorlogs_delete</key>
<string>Может удлаять записи?</string>
<string>Can delete email error logs?</string>
</item>
</items>
</group>
<group>
<grouptitle>Журнал действий поисковых роботов</grouptitle>
<grouptitle>Spider Logs</grouptitle>
<grouplang>core_spiderlogs</grouplang>
<items>
<item>
<key>spiderlogs_view</key>
<string>Может просматривать журнал?</string>
<string>Can view spider logs?</string>
</item>
<item>
<key>spiderlogs_delete</key>
<string>Может удлаять записи?</string>
<string>Can delete spider logs?</string>
</item>
</items>
</group>
<group>
<grouptitle>Журнал пользовательских предупреждений</grouptitle>
<grouptitle>Warn Logs</grouptitle>
<grouplang>core_warnlogs</grouplang>
<items>
<item>
<key>warnlogs_view</key>
<string>Может просматривать журнал?</string>
<string>Can view warn logs?</string>
</item>
<item>
<key>warnlogs_delete</key>
<string>Может удлаять записи?</string>
<string>Can delete warn logs?</string>
</item>
</items>
</group>
<group>
<grouptitle>Журнал ошибок системы</grouptitle>
<grouptitle>Error Logs</grouptitle>
<grouplang>core_errorlogs</grouplang>
<items>
<item>
<key>errorlogs_view</key>
<string>Может просматривать журнал?</string>
<string>Can view error logs?</string>
</item>
<item>
<key>errorlogs_delete</key>
<string>Может удлаять записи?</string>
<string>Can delete error logs?</string>
</item>
</items>
</group>
@@ -0,0 +1,210 @@
<?php
/**
* <pre>
* Invision Power Services
* IP.Board v3.3.4
* API Users
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: bfarber $
* @copyright © 2001 - 2009 Invision Power Services, Inc.
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://www.invisionpower.com
* @since 1st march 2002
* @version $Revision: 10914 $
*
*/
if ( ! defined( 'IN_ACP' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'.";
exit();
}
class admin_core_logs_xmlrpclogs extends ipsCommand
{
/**
* Skin object
*
* @var object Skin templates
*/
protected $html;
/**
* Shortcut for url
*
* @var string URL shortcut
*/
protected $form_code;
/**
* Shortcut for url (javascript)
*
* @var string JS URL shortcut
*/
protected $form_code_js;
/**
* Main class entry point
*
* @param object ipsRegistry reference
* @return @e void [Outputs to screen]
*/
public function doExecute( ipsRegistry $registry )
{
//-----------------------------------------
// Load skin...
//-----------------------------------------
$this->registry->getClass('class_localization')->loadLanguageFile( array( 'admin_tools' ) );
$this->html = $this->registry->output->loadTemplate('cp_skin_api');
//-----------------------------------------
// Set up stuff
//-----------------------------------------
$this->form_code = $this->html->form_code = 'module=logs&amp;section=xmlrpclogs';
$this->form_code_js = $this->html->form_code_js = 'module=logs&section=xmlrpclogs';
//-----------------------------------------
// What are we to do, today?
//-----------------------------------------
switch( $this->request['do'] )
{
default:
case 'log_list':
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'api_logs' );
$this->logList();
break;
case 'log_view_detail':
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'api_logs' );
$this->logViewDetail();
break;
}
//-----------------------------------------
// Pass to CP output hander
//-----------------------------------------
$this->registry->getClass('output')->html_main .= $this->registry->getClass('output')->global_template->global_frame_wrapper();
$this->registry->getClass('output')->sendOutput();
}
/**
* API Logs View
* View API Log
*
* @return @e void [Outputs]
* @author Matt Mecham
* @since 2.3.2
*/
public function logViewDetail()
{
//-----------------------------------------
// Fix up navigation bar
//-----------------------------------------
$this->registry->getClass('class_localization')->loadLanguageFile( array( 'admin_logs' ) );
$this->registry->output->core_nav = array();
$this->registry->output->ignoreCoreNav = true;
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=logs&section=logsSplash', $this->lang->words['nav_logssplash'] );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=logs&section=xmlrpclogs', $this->lang->words['api_error_logs'] );
//-----------------------------------------
// Get data from the deebee
//-----------------------------------------
$log = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'api_log', 'where' => 'api_log_id=' . intval( $this->request['api_log_id'] ) ) );
if ( ! $log['api_log_id'] )
{
$this->registry->output->global_message = $this->lang->words['a_lognoid'];
$this->logList();
return;
}
//-----------------------------------------
// Display...
//-----------------------------------------
$log['_api_log_date'] = ipsRegistry::getClass( 'class_localization')->getDate( $log['api_log_date'], 'LONG' );
$log['_api_log_allowed'] = $log['api_log_allowed'] ? 'tick.png' : 'cross.png';
$log['_api_log_query'] = htmlspecialchars( $log['api_log_query'] );
//-----------------------------------------
// Show...
//-----------------------------------------
$this->registry->output->html .= $this->html->api_log_detail( $log );
$this->registry->output->printPopupWindow();
}
/**
* API Logs List
* List API Logs
*
* @return @e void [Outputs]
* @author Matt Mecham
* @since 2.3.2
*/
public function logList()
{
//-----------------------------------------
// Fix up navigation bar
//-----------------------------------------
$this->registry->getClass('class_localization')->loadLanguageFile( array( 'admin_logs' ) );
$this->registry->output->core_nav = array();
$this->registry->output->ignoreCoreNav = true;
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=logs&section=logsSplash', $this->lang->words['nav_logssplash'] );
$this->registry->output->core_nav[] = array( $this->settings['base_url'] . 'module=logs&section=xmlrpclogs', $this->lang->words['api_error_logs'] );
//-----------------------------------------
// INIT
//-----------------------------------------
$start = intval( $this->request['st'] );
$perpage = 50;
$logs = array();
//-----------------------------------------
// Get log count
//-----------------------------------------
$count = $this->DB->buildAndFetch( array( 'select' => 'count(*) as count', 'from' => 'api_log' ) );
$links = $this->registry->output->generatePagination( array( 'totalItems' => intval( $count['count'] ),
'itemsPerPage' => $perpage,
'currentStartValue' => $start,
'baseUrl' => $this->settings['base_url'] . $this->form_code . '&amp;do=log_list' ) );
//-----------------------------------------
// Get from DB
//-----------------------------------------
$this->DB->build( array( 'select' => '*', 'from' => 'api_log', 'order' => 'api_log_date DESC', 'limit' => array( $start, $perpage ) ) );
$this->DB->execute();
while( $row = $this->DB->fetch() )
{
$row['_api_log_date'] = ipsRegistry::getClass('class_localization')->getDate( $row['api_log_date'], 'LONG' );
$row['_api_log_allowed'] = $row['api_log_allowed'] ? 'tick.png' : 'cross.png';
$logs[] = $row;
}
//-----------------------------------------
// Print...
//-----------------------------------------
$this->registry->output->html .= $this->html->api_login_view( $logs, $links );
}
}
@@ -0,0 +1,14 @@
<?php
/**
* @file defaultSection.php Define the default section for the 'mobileapp' module
*~TERABYTE_DOC_READY~
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
* $License: http://www.invisionpower.com/company/standards.php#license$
* $Author: ips_terabyte $
* @since 20th February 2002
* $LastChangedDate: 2010-10-14 13:11:17 -0400 (Thu, 14 Oct 2010) $
* @version v3.3.4
* $Revision: 477 $
*/
$DEFAULT_SECTION = 'images';
@@ -0,0 +1,224 @@
<?php
/**
* <pre>
* Invision Power Services
* IP.Board v3.3.4
* Manage mobile app images
* Last Updated: $Date: 2012-03-30 16:23:27 +0100 (Fri, 30 Mar 2012) $
* </pre>
*
* @author $Author: mark $
* @copyright (c) 2001 - 2011 Invision Power Services, Inc.
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://www.invisionpower.com
* @since 2012-04-20
* @version $Revision: 10526 $
*
*/
if ( ! defined( 'IN_ACP' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'.";
exit();
}
class admin_core_mobileapp_images extends ipsCommand
{
/**
* Skin Functions Class
*
* @var object
*/
protected $skinFunctions;
/**
* Recursive depth guide
*
* @var array
*/
protected $_depthGuide = array();
/**
* Skin object
*
* @var object Skin templates
*/
protected $html;
/**#@+
* URL bits
*
* @var string
*/
public $form_code = '';
public $form_code_js = '';
/**#@-*/
/**
* Main class entry point
*
* @param object ipsRegistry reference
* @return @e void [Outputs to screen]
*/
public function doExecute( ipsRegistry $registry )
{
//-----------------------------------------
// Load skin
//-----------------------------------------
$this->html = $this->registry->output->loadTemplate('cp_skin_mobileapp');
//-----------------------------------------
// Set up stuff
//-----------------------------------------
$this->form_code = $this->html->form_code = 'module=mobileapp&amp;section=images&amp;';
$this->form_code_js = $this->html->form_code_js = 'module=mobileapp&section=images&';
//-----------------------------------------
// Load lang
//-----------------------------------------
$this->registry->getClass('class_localization')->loadLanguageFile( array( 'admin_mobileapp' ) );
/* Load up iOS class */
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/mobile/iosImages.php', 'classes_mobile_iosImages' );
$this->images = new $classToLoad();
///----------------------------------------
// What to do...
//-----------------------------------------
switch( $this->request['do'] )
{
case 'overview':
default:
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'app_images' );
$this->_overview();
break;
case 'exportXml':
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'app_images' );
$this->_export();
break;
case 'importXml':
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'app_images' );
$this->_import();
break;
case 'refresh':
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'app_images' );
$this->_refresh();
break;
}
/* Output */
$this->registry->output->html_main .= $this->registry->output->global_template->global_frame_wrapper();
$this->registry->output->sendOutput();
}
/**
* Refresh stuffs
*/
protected function _refresh()
{
$dirErrors = $this->images->checkDirectories();
$imgErrors = $this->images->checkImages();
if ( count( $dirErrors ) || $imgErrors['missing'] !== false OR $imgErrors['dimensions'] !== false OR $imgErrors['writeable'] !== false )
{
$this->images->setStyleLastUpdated( time() );
$this->registry->output->global_message = $this->lang->words['mi_recache_done'];
}
else
{
$this->registry->output->global_error = $this->lang->words['mi_error_refresh_failed'];
}
$this->_overview();
}
/**
* Export as XML archive
*/
protected function _export()
{
$xml = $this->images->getXmlArchive();
if ( ! $xml )
{
$this->registry->output->global_error = $this->lang->words['mi_error_no_export'];
$this->_overview();
return;
}
$this->registry->output->showDownload( $xml, 'mobileiOsImages.xml' );
}
/**
* Import an XML archive
*/
protected function _import()
{
try
{
$xml = $this->registry->adminFunctions->importXml();
}
catch ( Exception $e )
{
$this->registry->output->showError( $e->getMessage() );
}
$result = $this->images->importXmlArchive( $xml );
if ( ! $result )
{
$this->registry->output->global_error = $this->lang->words['mi_import_failed'];
}
$this->_overview();
}
/**
* List the import form
*
* @return @e void
*/
protected function _overview()
{
$dirErrors = $this->images->checkDirectories();
$imgErrors = $this->images->checkImages();
$currentImages = $this->images->getImageDirContents();
$defaultImages = $this->images->getDefaultImageDirContents();
$canImport = true;
if ( $dirErrors !== false )
{
$canImport = false;
foreach( $dirErrors as $error )
{
$this->registry->output->global_error .= sprintf( $this->lang->words['mi_error_' . $error['key'] ], $error['extra'] ) . '<br />';
}
}
if ( $imgErrors['writeable'] !== false )
{
$canImport = false;
$this->registry->output->global_error .= $this->lang->words['mi_error_images_writeable'] . '<br />';
}
if ( $imgErrors['missing'] !== false )
{
foreach( $imgErrors['missing'] as $img )
{
$this->registry->output->global_error .= sprintf( $this->lang->words['mi_error_missing_img'], '<a href="' . $this->images->getDefaultImageUrl() . $img . '" target="_blank">' . $img . '</a>' ) . '<br />';
}
}
$this->registry->output->html .= $this->html->overview( $currentImages, $defaultImages, $this->images->getImageDir(), $imgErrors, $canImport );
}
}
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<menu>
<tabitems>
<item>
<title>Mobile App</title>
<subitems>
<subitem>
<subitemtitle>Mobile App</subitemtitle>
<subitemlang>skins_manage_app_images</subitemlang>
<subsection>images</subsection>
<subitemurl>do=overview</subitemurl>
<subitemrolekey>app_images</subitemrolekey>
<subisredirect>0</subisredirect>
</subitem>
</subitems>
</item>
</tabitems>
</menu>
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<permissions>
<group>
<grouptitle>Manage App Images</grouptitle>
<grouplang>core_templates</grouplang>
<items>
<item>
<key>app_images</key>
<string>Can view and manage app images?</string>
</item>
</items>
</group>
</permissions>
@@ -2,19 +2,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Dashboard
* Last Updated: $Date: 2011-10-14 13:58:18 -0400 (Fri, 14 Oct 2011) $
* Last Updated: $Date: 2012-07-03 12:20:08 -0400 (Tue, 03 Jul 2012) $
* </pre>
*
* @author $Author: ips_terabyte $
* @author $Author: AndyMillne $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since 5th January 2005
* @version $Revision: 9623 $
* @version $Revision: 11029 $
*/
if ( ! defined( 'IN_ACP' ) )
@@ -115,20 +115,56 @@ class admin_core_mycp_dashboard extends ipsCommand
$this->form_code_js = $this->html->form_code_js = 'module=mycp&section=dashboard';
//-----------------------------------------
// INIT
// Hang on, do we need the upgrader?
//-----------------------------------------
define( 'IPS_VERSION_CHECK_URL' , 'http://myipb.in/latestversioncheck/ipb30x.php' );
if ( !IN_DEV AND ( !defined('SKIP_UPGRADE_CHECK') OR !SKIP_UPGRADE_CHECK ) )
{
require_once( IPS_ROOT_PATH . 'setup/sources/base/setup.php' );/*noLibHook*/
foreach( ipsRegistry::$applications as $app_dir => $app )
{
$_a = ( $app_dir == 'forums' or $app_dir == 'members' ) ? 'core' : $app_dir;
$numbers = IPSSetUp::fetchAppVersionNumbers( $_a );
if ( $numbers['latest'][0] and $numbers['latest'][0] > $numbers['current'][0] )
{
$this->registry->output->silentRedirect( $this->settings['base_acp_url'] . '/upgrade/index.php?_acpRedirect=1' );
return;
}
}
}
//-----------------------------------------
// Get external data
//-----------------------------------------
$content = array();
$thiscontent = "";
$latest_version = array();
$reg_end = "";
$unfinished_upgrade = 0;
$urls = array( 'news' => '',
'keiths_bits' => '',
'version_check' => IPS_VERSION_CHECK_URL,
'blogs' => '' );
$ipsNewsData = $this->cache->getCache( 'ipsNewsData' );
if ( !isset( $ipsNewsData['time'] ) or $ipsNewsData['time'] < ( time() - 43200 ) ) // 12 hour cache
{
$classToLoad = IPSLib::loadLibrary( IPS_KERNEL_PATH . 'classFileManagement.php', 'classFileManagement' );
$classFileManagement = new $classToLoad();
if( strpos( $this->settings['base_url'], 'https://' ) !== false )
{
$ipsNewsData['news'] = $classFileManagement->getFileContents( 'https://external.ipslink.com/ipboard33/dashboard/index.php?v=' . ipsRegistry::$vn_full );
$ipsNewsData['vcheck'] = $classFileManagement->getFileContents( 'https://www.invisionpower.com/latestversioncheck/ipb30x.php?' . base64_encode( ipsRegistry::$vn_full.'|^|'.$this->settings['board_url'] ) );
}
else
{
$ipsNewsData['news'] = $classFileManagement->getFileContents( 'http://external.ipslink.com/ipboard33/dashboard/index.php?v=' . ipsRegistry::$vn_full );
$ipsNewsData['vcheck'] = $classFileManagement->getFileContents( 'http://www.invisionpower.com/latestversioncheck/ipb30x.php?' . base64_encode( ipsRegistry::$vn_full.'|^|'.$this->settings['board_url'] ) );
}
$ipsNewsData['time'] = time();
$this->cache->setCache( 'ipsNewsData', $ipsNewsData, array( 'array' => 1 ) );
}
//-----------------------------------------
// Get MySQL & PHP Version
@@ -173,12 +209,6 @@ class admin_core_mycp_dashboard extends ipsCommand
ipsRegistry::$version = 'v'.$latest_version['upgrade_version_human'];
ipsRegistry::$vn_full = !empty($latest_version['upgrade_notes']) ? $latest_version['upgrade_notes'] : ipsRegistry::$vn_full;
//-----------------------------------------
// Licensed?
//-----------------------------------------
$urls['keiths_bits'] = IPS_BULLETINS_URL . '?v=' . ipsRegistry::$vn_full;
//-----------------------------------------
// Notepad
//-----------------------------------------
@@ -242,20 +272,20 @@ class admin_core_mycp_dashboard extends ipsCommand
if ( ($r['_log_in'] / 60) < 1 )
{
$r['_log_in'] = sprintf("%0d", $r['_log_in']) . $this->lang->words['cp_secondsago'];
$r['_log_in'] = sprintf("%0d", $r['_log_in']) . ' ' . $this->lang->words['cp_secondsago'];
}
else
{
$r['_log_in'] = sprintf("%0d", ($r['_log_in'] / 60) ) . $this->lang->words['cp_minutesago'];
$r['_log_in'] = sprintf("%0d", ($r['_log_in'] / 60) ) . ' ' . $this->lang->words['cp_minutesago'];
}
if ( ($r['_click'] / 60) < 1 )
{
$r['_click'] = sprintf("%0d", $r['_click']) . $this->lang->words['cp_secondsago'];
$r['_click'] = sprintf("%0d", $r['_click']) . ' ' . $this->lang->words['cp_secondsago'];
}
else
{
$r['_click'] = sprintf("%0d", ($r['_click'] / 60) ) . $this->lang->words['cp_minutesago'];
$r['_click'] = sprintf("%0d", ($r['_click'] / 60) ) . ' ' . $this->lang->words['cp_minutesago'];
}
$r['session_location'] = $r['session_location'] ? $r['session_location'] : $this->lang->words['cp_index'];
@@ -320,28 +350,6 @@ class admin_core_mycp_dashboard extends ipsCommand
}
}
//-----------------------------------------
// Forum and group dropdowns
//-----------------------------------------
$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'forums' ) . '/sources/classes/forums/class_forums.php', 'class_forums', 'forums' );
$this->registry->setClass( 'class_forums', new $classToLoad($this->registry) );
$this->registry->getClass('class_forums')->forumsInit();
$forums = $this->registry->getClass('class_forums')->forumsForumJump( 1 );
$groups = array();
$groups_html = '';
foreach( $this->cache->getCache('group_cache') as $k => $v )
{
$groups[ $v['g_title'] ] = "<option value='{$k}'>{$v['g_title']}</option>";
}
ksort( $groups );
$groups_html = implode( "\n", $groups );
//-----------------------------------------
// Info for the stats bar
//-----------------------------------------
@@ -371,8 +379,7 @@ class admin_core_mycp_dashboard extends ipsCommand
// Piece it together
//-----------------------------------------
$urls['version_check'] = IPS_VERSION_CHECK_URL . '?' . base64_encode( ipsRegistry::$vn_full.'|^|'.$this->settings['board_url'] );
$this->registry->output->html .= $this->html->mainTemplate( $content, $forums, $groups_html, $urls, $this->getNotificationPanelEntries(), $stats );
$this->registry->output->html .= $this->html->mainTemplate( $content, $ipsNewsData, $this->getNotificationPanelEntries(), $stats );
//-----------------------------------------
// Left log all on?
@@ -518,7 +525,7 @@ class admin_core_mycp_dashboard extends ipsCommand
$this->registry->getClass('class_permissions')->return = true;
if( $this->registry->getClass('class_permissions')->checkPermission( 'acplogin_log', 'core', 'system' ) )
if( $this->registry->getClass('class_permissions')->checkPermission( 'acplogin_log', 'core', 'logs' ) )
{
$this->DB->build( array(
'select' => '*',
@@ -3,11 +3,11 @@
* @file defaultSection.php Define the default section for the 'mycp' module
*~TERABYTE_DOC_READY~
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
* $License: This is NULLED!
* $License: http://www.invisionpower.com/company/standards.php#license$
* $Author: ips_terabyte $
* @since 20th February 2002
* $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $
* @version v3.2.3
* @version v3.3.4
* $Revision: 8655 $
*/
@@ -2,19 +2,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Admin change email/password
* Last Updated: $Date: 2011-05-31 16:58:52 -0400 (Tue, 31 May 2011) $
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since 5th January 2005
* @version $Revision: 8932 $
* @version $Revision: 10914 $
*/
if ( ! defined( 'IN_ACP' ) )
@@ -131,7 +131,7 @@ class admin_core_mycp_details extends ipsCommand
return;
}
$email_check = IPSMember::load( mb_strtolower($email) );
$email_check = IPSMember::load( strtolower($email) );
if ( $email_check['member_id'] )
{
@@ -155,11 +155,11 @@ class admin_core_mycp_details extends ipsCommand
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/handlers/han_login.php', 'han_login' );
$han_login = new $classToLoad( $this->registry );
$han_login->init();
$han_login->changeEmail( trim( mb_strtolower( $this->memberData['email'] ) ), trim( mb_strtolower( $email ) ), $this->memberData );
$han_login->changeEmail( trim( strtolower( $this->memberData['email'] ) ), trim( strtolower( $email ) ), $this->memberData );
IPSLib::runMemberSync( 'onEmailChange', $this->memberData['member_id'], mb_strtolower( $email ), $this->memberData['email'] );
IPSLib::runMemberSync( 'onEmailChange', $this->memberData['member_id'], strtolower( $email ), $this->memberData['email'] );
IPSMember::save( $this->memberData['member_id'], array( 'core' => array( 'email' => mb_strtolower( $email ) ) ) );
IPSMember::save( $this->memberData['member_id'], array( 'core' => array( 'email' => strtolower( $email ) ) ) );
ipsRegistry::getClass('adminFunctions')->saveAdminLog( sprintf( $this->lang->words['changed_email'], $email ) );
}
@@ -2,10 +2,10 @@
<menu>
<tabitems>
<item>
<title>Панель управления</title>
<title>My Dashboard</title>
<subitems>
<subitem>
<subitemtitle>Панель управления</subitemtitle>
<subitemtitle>My Dashboard</subitemtitle>
<subitemlang>dashboard</subitemlang>
<subsection>dashboard</subsection>
<subitemurl></subitemurl>
@@ -15,10 +15,10 @@
</subitems>
</item>
<item>
<title>Изменить свои данные</title>
<title>Change My Details</title>
<subitems>
<subitem>
<subitemtitle>Изменение своих данных</subitemtitle>
<subitemtitle>Change My Details</subitemtitle>
<subitemlang>mydetails</subitemlang>
<subsection>details</subsection>
<subitemurl></subitemurl>
@@ -2,19 +2,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* Bad Word Filters
* Last Updated: $LastChangedDate: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $
* Last Updated: $LastChangedDate: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: ips_terabyte $
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since 27th January 2004
* @version $Rev: 8644 $
* @version $Rev: 10914 $
*/
if ( ! defined( 'IN_ACP' ) )
@@ -145,8 +145,8 @@ class admin_core_posts_badwords extends ipsCommand
$this->DB->setDataType( array( 'type', 'swop' ), 'string' );
$this->DB->update( 'badwords', array(
'type' => trim( $this->request['before'] ),
'swop' => trim( $this->request['after'] ),
'type' => $this->request['before'], // do not trim - see bug report 34433
'swop' => $this->request['after'], // do not trim - see bug report 34433
'm_exact' => $this->request['match']
), "wid=" . $id );
@@ -210,8 +210,8 @@ class admin_core_posts_badwords extends ipsCommand
$this->DB->setDataType( array( 'type', 'swop' ), 'string' );
$this->DB->insert( 'badwords', array(
'type' => trim( $this->request['before'] ),
'swop' => trim( $this->request['after'] ),
'type' => $this->request['before'], // do not trim - see bug report 34433
'swop' => $this->request['after'], // do not trim - see bug report 34433
'm_exact' => $this->request['match']
)
);
@@ -268,7 +268,14 @@ class admin_core_posts_badwords extends ipsCommand
public function badwordsImport()
{
/* Get Badwords XML */
try
{
$content = $this->registry->adminFunctions->importXml( 'ipb_badwords.xml' );
}
catch ( Exception $e )
{
$this->registry->output->showError( $e->getMessage() );
}
/* Check for content */
if ( ! $content )
@@ -2,19 +2,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.2.3
* IP.Board v3.3.4
* BBCode Management
* Last Updated: $LastChangedDate: 2011-08-23 18:01:24 -0400 (Tue, 23 Aug 2011) $
* Last Updated: $LastChangedDate: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* </pre>
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license This is NULLED!
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Core
* @link http://hatynka.in
* @link http://www.invisionpower.com
* @since 27th January 2004
* @version $Rev: 9407 $
* @version $Rev: 10914 $
*/
if ( ! defined( 'IN_ACP' ) )
@@ -203,7 +203,7 @@ class admin_core_posts_bbcode extends ipsCommand
if ( is_file( $file ) )
{
$content = @file_get_contents( $file );
$content = file_get_contents( $file );
if ( $content )
{
@@ -264,6 +264,20 @@ class admin_core_posts_bbcode extends ipsCommand
*/
public function bbcodeImportDo( $content, $app='core' )
{
/* Init vars */
$tags = array();
$return = array( 'updated' => 0, 'inserted' => 0 );
//-----------------------------------------
// Got anything?
//-----------------------------------------
$content = trim( $content );
if ( empty( $content ) )
{
return $return;
}
//-----------------------------------------
// Get xml class
//-----------------------------------------
@@ -277,9 +291,6 @@ class admin_core_posts_bbcode extends ipsCommand
// Get current custom bbcodes
//-----------------------------------------
$tags = array();
$return = array( 'updated' => 0, 'inserted' => 0 );
$this->DB->build( array( 'select' => '*', 'from' => 'custom_bbcode' ) );
$this->DB->execute();
Loaded 100 of 1567 files, more files were not shown because too many files have changed in this diff. Show more