Version 3.0.5

This commit is contained in:
Neo committed 2025-12-19 00:31:03 -08:00
1 parent 19b38c7c74
commit 1d4720f3e2
3755 files changed
+508378 -664541

No files matched your search

@@ -0,0 +1,166 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Calendar core extensions
* Last Updated: $LastChangedDate: 2009-07-28 20:26:37 -0400 (Tue, 28 Jul 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Calendar
* @link http://www.iinvisionpower.com
* @since 27th January 2004
* @version $Rev: 4948 $
*
*/
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 calendarPermMappingCalendar
{
/**
* Mapping of keys to columns
*
* @access private
* @var array
*/
private $mapping = array(
'view' => 'perm_view',
'start' => 'perm_2',
'nomod' => 'perm_3',
);
/**
* Mapping of keys to names
*
* @access private
* @var array
*/
private $perm_names = array(
'view' => 'Show Calendar',
'start' => 'Create Events',
'nomod' => 'Bypass Moderation',
);
/**
* Mapping of keys to background colors for the form
*
* @access private
* @var array
*/
private $perm_colors = array(
'view' => '#fff0f2',
'start' => '#effff6',
'nomod' => '#edfaff',
);
/**
* Method to pull the key/column mapping
*
* @access public
* @return array
*/
public function getMapping()
{
return $this->mapping;
}
/**
* Method to pull the key/name mapping
*
* @access public
* @return array
*/
public function getPermNames()
{
return $this->perm_names;
}
/**
* Method to pull the key/color mapping
*
* @access public
* @return array
*/
public function getPermColors()
{
return $this->perm_colors;
}
}
/**
* Invision Power Services
* IP.Board v3.0.5
* Library: Handle public session data
* Last Updated: $Date: 2009-07-28 20:26:37 -0400 (Tue, 28 Jul 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Calendar
* @link http://www.iinvisionpower.com
* @since 12th March 2002
* @version $Revision: 4948 $
*
*/
class publicSessions__calendar
{
/**
* Return session variables for this application
*
* current_appcomponent, current_module and current_section are automatically
* stored. This function allows you to add specific variables in.
*
* @access public
* @author Matt Mecham
* @return array
* @todo [Future] Store which event or calendar a user is viewing?
*/
public function getSessionVariables()
{
return array();
}
/**
* Parse/format the online list data for the records
*
* @access public
* @author Brandon Farber
* @param array Online list rows to check against
* @return array Online list rows parsed
*/
public function parseOnlineEntries( $rows )
{
if( !is_array($rows) OR !count($rows) )
{
return $rows;
}
$final = array();
//-----------------------------------------
// Extract the topic/forum data
//-----------------------------------------
foreach( $rows as $row )
{
if( $row['current_appcomponent'] == 'calendar' )
{
$row['where_line'] = ipsRegistry::getClass( 'class_localization' )->words['WHERE_calendar'];
$row['where_link'] = 'app=calendar&amp;module=calendar&amp;section=calendars';
}
$final[ $row['id'] ] = $row;
}
return $final;
}
}
@@ -0,0 +1,62 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Core variables for calendar
*
* @author $author$
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Calendar
* @link http://www.iinvisionpower.com
* @version $Rev: 5462 $
**/
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();
}
$_LOAD = array();
$_LOAD['calendars'] = 1;
$CACHE['calendars'] = array(
'array' => 1,
'allow_unload' => 0,
'default_load' => 1,
'recache_file' => IPSLib::getAppDir( 'calendar' ) . '/modules_admin/calendar/calendars.php',
'recache_class' => 'admin_calendar_calendar_calendars',
'recache_function' => 'calendarsRebuildCache'
);
$CACHE['birthdays'] = array(
'array' => 1,
'allow_unload' => 0,
'default_load' => 1,
'recache_file' => IPSLib::getAppDir( 'calendar' ) . '/modules_admin/calendar/calendars.php',
'recache_class' => 'admin_calendar_calendar_calendars',
'recache_function' => 'calendarRebuildCache'
);
$CACHE['calendar'] = array(
'array' => 1,
'allow_unload' => 0,
'default_load' => 1,
'recache_file' => IPSLib::getAppDir( 'calendar' ) . '/modules_admin/calendar/calendars.php',
'recache_class' => 'admin_calendar_calendar_calendars',
'recache_function' => 'calendarRebuildCache'
);
$CACHE['rss_calendar'] = array(
'array' => 1,
'allow_unload' => 0,
'default_load' => 1,
'skip_rebuild_when_upgrading' => 1,
'recache_file' => IPSLib::getAppDir( 'calendar' ) . '/modules_admin/calendar/calendars.php',
'recache_class' => 'admin_calendar_calendar_calendars',
'recache_function' => 'calendarRSSCache'
);
@@ -0,0 +1,34 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* BBCode Management : Determines if bbcode can be used in this section
* Last Updated: $LastChangedDate: 2009-07-28 20:26:37 -0400 (Tue, 28 Jul 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Calendar
* @link http://www.iinvisionpower.com
* @since 27th January 2004
* @version $Rev: 4948 $
*
*/
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();
}
/*
* An array of key => value pairs
* When going to parse, the key should be passed to the editor
* to determine which bbcodes should be parsed in the section
*
*/
$BBCODE = array(
'calendar' => ipsRegistry::getClass('class_localization')->words['ctype__calendar'],
);
@@ -0,0 +1,75 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Sets up SEO templates
* Last Updated: $Date$
*
* @author $Author$
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Forums
* @link http://www.iinvisionpower.com
* @version $Rev$
*
*/
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();
}
$_SEOTEMPLATES = array(
'cal_week' => array(
'app' => 'calendar',
'allowRedirect' => 1,
'out' => array( '#app=calendar(?:&|&amp;)module=calendar(?:&|&amp;)cal_id=(\d+?)(?:&|&amp;)do=showweek(?:&|&amp;)week=(\d+?)(?:&|$)#i', 'calendar/\\1/week-\\2' ),
'in' => array(
'regex' => "#/calendar/(\d+?)/week-(\d+?)(/|$)#i",
'matches' => array( array( 'app' , 'calendar' ),
array( 'module' , 'calendar' ),
array( 'do' , 'showweek' ),
array( 'cal_id' , '$1' ),
array( 'week', '$2' ) )
) ),
'event' => array(
'app' => 'calendar',
'allowRedirect' => 1,
'out' => array( '#app=calendar(?:&|&amp;)module=calendar(?:&|&amp;)cal_id=(\d+?)(?:&|&amp;)do=showevent(?:&|&amp;)event_id=(\d+?)(?:&|$)#i', 'calendar/\\1/event-\\2' ),
'in' => array(
'regex' => "#/calendar/(\d+?)/event-(\d+?)(/|$)#i",
'matches' => array( array( 'app' , 'calendar' ),
array( 'module' , 'calendar' ),
array( 'do' , 'showevent' ),
array( 'cal_id' , '$1' ),
array( 'event_id', '$2' ) )
) ),
'cal_day' => array(
'app' => 'calendar',
'allowRedirect' => 1,
'out' => array( '#app=calendar(?:&|&amp;)module=calendar(?:&|&amp;)cal_id=(.+?)(?:&|&amp;)do=showday(?:&|&amp;)y=(.+?)&amp;m=(.+?)&amp;d=(.+?)(?:&|$)#i', 'calendar/\\1/day-\\2-\\3-\\4' ),
'in' => array(
'regex' => "#/calendar/(\d+?)/day-(\d+?)-(\d+?)-(\d+?)(/|$)#i",
'matches' => array( array( 'app' , 'calendar' ),
array( 'module' , 'calendar' ),
array( 'do' , 'showday' ),
array( 'cal_id' , '$1' ),
array( 'y' , '$2' ),
array( 'm' , '$3' ),
array( 'd' , '$4' ) )
) ),
'app=calendar' => array(
'app' => 'calendar',
'allowRedirect' => 1,
'out' => array( '#app=calendar$#i', 'calendar/' ),
'in' => array(
'regex' => "#/calendar/?$#i",
'matches' => array( array( 'app', 'calendar' ) )
)
),
);
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,90 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Calendar core extensions
* Last Updated: $LastChangedDate: 2009-02-23 21:27:51 +0000 (Mon, 23 Feb 2009) $
*
* @author $Author: josh $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Calendar
* @link http://www.iinvisionpower.com
* @since 27th January 2004
* @version $Rev: 4081 $
*
*/
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();
}
/**
* Member Synchronization extensions
*
* @author $author$
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Calendar
* @link http://www.iinvisionpower.com
* @version $Rev: 4081 $
**/
class calendarMemberSync
{
/**
* Registry reference
*
* @access public
* @var object
*/
public $registry;
/**
* CONSTRUCTOR
*
* @access public
* @return void
**/
public function __construct()
{
$this->registry = ipsRegistry::instance();
}
/**
* This method is called after a member account has been removed
*
* @access public
* @param string $ids SQL IN() clause
* @return void
**/
public function onDelete( $mids )
{
if( $this->registry->DB()->checkForTable( 'cal_events' ) )
{
$this->registry->DB()->update( 'cal_events', array( 'event_member_id' => 0 ), 'event_member_id' . $mids );
}
}
/**
* This method is called after a member's account has been merged into another member's account
*
* @access public
* @param array $member Member account being kept
* @param array $member2 Member account being removed
* @return void
**/
public function onMerge( $member, $member2 )
{
IPSDebug::addLogMessage( "Markers init done:", 'merge', $member );
if( $this->registry->DB()->checkForTable( 'cal_events' ) )
{
$this->registry->DB()->update( 'cal_events', array( 'event_member_id' => intval($member['member_id']) ), "event_member_id=" . $member2['member_id'] );
}
}
}
@@ -0,0 +1,75 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Portal plugin: calendar
* Last Updated: $Date: 2009-07-28 20:26:37 -0400 (Tue, 28 Jul 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Calendar
* @link http://www.iinvisionpower.com
* @since 1st march 2002
* @version $Revision: 4948 $
*
*/
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();
}
/**
* This file must be named {file_name_minus_php}-cfg.php
*
* Please see each variable for more information
* $PORTAL_CONFIG is OK for each file, do not change
* this array name.
*/
$PORTAL_CONFIG = array();
/**
* Main plug in title
*
*/
$PORTAL_CONFIG['pc_title'] = 'Календарь';
/**
* Plug in mini description
*
*/
$PORTAL_CONFIG['pc_desc'] = "Блок мини-календаря на текущий месяц";
/**
* Keyword for settings. This is the keyword
* entered into ibf_conf_settings_titles -> conf_title_keyword
* Can be left blank.
* PLEASE stick to the naming convention when entering a setting
* keyword: portal_{file_name_minus_php} This will prevent
* other keyword clashes. Likewise, when creating settings, choose
* NOT to cache them (they will be loaded at run time) and always
* prefix with {file_name_minus_php}_setting_key - for example
* If you had a setting called "export_forums" then please name it
* "recent_topics_export_forums". This will be available in
* $this->settings['recent_topics_export_forums'] in the
* main module.
*/
$PORTAL_CONFIG['pc_settings_keyword'] = "";
/**
* Exportable tags key must be in the naming format of:
* {file_name_minus_php}-tag. The value *MUST* be the function
* which it corresponds to. For example:
* 'recent_topics_last_x' => 'recent_topics_last_x'
* The portal will look for function 'recent_topics_last_x' in
* module "sources/portal_plugins/recent_topics.php" when it parses
* the tag <!--::recent_topics_last_x::-->
*
* @param array[ TAG ] = array( FUNCTION NAME, DESCRIPTION );
*/
$PORTAL_CONFIG['pc_exportable_tags']['calendar_show_current_month'] = array( 'calendar_show_current_month', 'Показать мини-календарь на текущий месяц' );
@@ -0,0 +1,85 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Portal plugin: calendar
* Last Updated: $Date: 2009-10-13 17:40:38 -0400 (Tue, 13 Oct 2009) $
*
* @author $Author: josh $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Calendar
* @link http://www.iinvisionpower.com
* @since 1st march 2002
* @version $Revision: 5228 $
*
*/
if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'.";
exit();
}
class ppi_calendar extends public_portal_portal_portal
{
/**
* Initialize module
*
* @access public
* @return void
*/
public function init()
{
}
/**
* Show the current calendar month on the portal
*
* @access public
* @return string HTML content to replace tag with
*/
public function calendar_show_current_month()
{
/* If the calendar is not installed, just return */
if( ! IPSLib::appIsInstalled( 'calendar' ) )
{
return '';
}
//-----------------------------------------
// Grab calendar class
//-----------------------------------------
require_once( IPSLib::getAppDir( 'calendar', 'calendar' ) . '/calendars.php' );
$calendar = new public_calendar_calendar_calendars();
$calendar->makeRegistryShortcuts( $this->registry );
$calendar->initCalendar(true);
if( ! is_array( $calendar->calendar ) OR ! count( $calendar->calendar ) OR ! $calendar->can_read )
{
return'';
}
//-----------------------------------------
// What now?
//-----------------------------------------
$a = explode( ',', gmdate( 'Y,n,j,G,i,s', time() + ipsRegistry::getClass( 'class_localization')->getTimeOffset() ) );
$now_date = array(
'year' => $a[0],
'mon' => $a[1],
'mday' => $a[2],
'hours' => $a[3],
'minutes' => $a[4],
'seconds' => $a[5]
);
$content = $calendar->getMiniCalendar( $now_date['mon'], $now_date['year'] );
return $this->registry->getClass('output')->getTemplate('portal')->calendarWrap( $content );
}
}
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,153 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* RSS output plugin :: calendar
* Last Updated: $Date: 2009-12-07 21:57:46 -0500 (Mon, 07 Dec 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Calendar
* @link http://www.iinvisionpower.com
* @since 6/24/2008
* @version $Revision: 5529 $
*/
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 rss_output_calendar
{
/**
* Expiration date
*
* @access private
* @var integer Expiration timestamp
*/
private $expires = 0;
/**
* Grab the RSS links
*
* @access public
* @return string RSS document
*/
public function getRssLinks()
{
if( !IPSLib::appIsInstalled('calendar') )
{
return array();
}
$return = array();
$_calendarCache = ipsRegistry::cache()->getCache('calendars');
if( is_array($_calendarCache) AND count($_calendarCache) )
{
foreach( $_calendarCache as $r )
{
/* Got a perm */
if( ! ipsRegistry::getClass( 'permissions' )->check( 'view', $r ) )
{
continue;
}
$return[] = array( 'title' => $r['cal_title'], 'url' => ipsRegistry::getClass('output')->formatUrl( ipsRegistry::$settings['board_url'] . "/index.php?app=core&amp;module=global&amp;section=rss&amp;type=calendar&amp;id=" . $r['cal_id'], '%%' . $r['cal_title'] . '%%', 'section=rss2' ) );
}
}
return $return;
}
/**
* Grab the RSS document content and return it
*
* @access public
* @return string RSS document
*/
public function returnRSSDocument()
{
if( !IPSLib::appIsInstalled('calendar') )
{
return array();
}
//-----------------------------------------
// INIT
//-----------------------------------------
$cal_id = intval( ipsRegistry::$request['id'] );
$rss_data = array();
$to_print = '';
$this->expires = time();
//-----------------------------------------
// Get RSS export
//-----------------------------------------
$rss_data = ipsRegistry::DB()->buildAndFetch( array( 'select' => '*',
'from' => 'cal_calendars',
'where' => 'cal_id=' . $cal_id ) );
//-----------------------------------------
// Got one?
//-----------------------------------------
if ( $rss_data['cal_id'] AND $rss_data['cal_rss_export'] )
{
//-----------------------------------------
// Correct expires time
//-----------------------------------------
$this->expires = $this->expires + ($rss_data['cal_rss_update'] * 60);
//-----------------------------------------
// Need to recache?
//-----------------------------------------
$time_check = time() - ( $rss_data['cal_rss_update'] * 60 );
if ( ( ! $rss_data['cal_rss_cache'] ) OR $time_check > $rss_data['cal_rss_update_last'] )
{
//-----------------------------------------
// Yes
//-----------------------------------------
define( 'IN_ACP', 1 );
require_once( IPSLib::getAppDir( 'calendar' ) . '/modules_admin/calendar/calendars.php' );
$rss_export = new admin_calendar_calendar_calendars();
$rss_export->makeRegistryShortcuts( ipsRegistry::instance() );
return $rss_export->calendarRSSCache( $rss_data['cal_id'], 0 );
}
else
{
//-----------------------------------------
// No
//-----------------------------------------
return $rss_data['cal_rss_cache'];
}
}
}
/**
* Grab the RSS document expiration timestamp
*
* @access public
* @return integer Expiration timestamp
*/
public function grabExpiryDate()
{
return $this->expires ? $this->expires : time();
}
}
@@ -0,0 +1,74 @@
<?php
/**
* Formats calendar search results
*
* @author $author$
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Calendar
* @link http://www.iinvisionpower.com
* @version $Rev: 4948 $
**/
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 calendarSearchDisplay implements iSearchDisplay
{
/**
* The search plugin for this app
*
* @access public
* @var object
*/
public $search_plugin;
/**
* Formats the calendar search result for display
*
* @access public
* @param array $search_row Array of data from search_index
* @return string Formatted content, ready for display
*/
public function formatContent( $search_row )
{
/* Format as a topic */
if( $search_row['misc'] )
{
return ipsRegistry::getClass( 'output' )->getTemplate( 'search' )->calEventRangedSearchResult( $search_row, $this->search_plugin->onlyTitles );
}
/* Format as a forum */
else
{
return ipsRegistry::getClass( 'output' )->getTemplate( 'search' )->calEventSearchResult( $search_row, $this->search_plugin->onlyTitles );
}
}
/**
* Retuns the html for displaying the calendar filter on the advanced search page
*
* @access public
* @return string
*/
public function getFilterHTML()
{
return '';
//return ipsRegistry::getClass( 'output' )->getTemplate( 'search' )->forumAdvancedSearchFilters();
}
/**
* Builds the SQL filter query
*
* @access public
* @param array
* @return array
*/
public function buildFilterSQL( $data )
{
return array();
}
}
@@ -0,0 +1,458 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Basic Calendar Search
* Last Updated: $Date: 2009-01-09 15:37:32 -0500 (Fri, 09 Jan 2009) $
*
* @author $Author: josh $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Calendar
* @link http://www.iinvisionpower.com
* @version $Rev: 3627 $
*/
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 searchCalendarPlugin implements iSearchIndexPlugin
{
/**
* Database object
*
* @access private
* @var object
*/
private $DB;
/**
* Date range restriction start
*
* @access private
* @var integer
*/
private $search_begin_timestamp = 0;
/**
* Date range restriction end
*
* @access private
* @var integer
*/
private $search_end_timestamp = 0;
/**
* Array of conditions for this search
*
* @access private
* @var array
*/
private $whereConditions = array();
/**
* Remoe self from search results
*
* @access public
* @var boolean
*/
public $removeSelf = false;
/**
* Only display title
*
* @access public
* @var boolean
*/
public $onlyTitles = false;
/**
* Setup registry objects
*
* @access public
* @param object ipsRegistry $registry
* @return void
*/
public function __construct( ipsRegistry $registry )
{
$this->DB = $registry->DB();
$this->member = $registry->member();
$this->memberData =& $registry->member()->fetchMemberData();
}
/**
* Performs search and returns an array of results
*
* @access public
* @param string $search_term
* @param array $limit_clause The erray should be array( begin, end )
* @param string $sort_by Column to sort by
* @param string $group_by Column to group by
* @param bool $content_title_only Only search title records
* @return array
*/
public function getSearchResults( $search_term, $limit_clause, $sort_by, $group_by='', $content_title_only=false, $sort_order='' )
{
/* Group By */
if( $group_by )
{
$group_by = 'c.' . $group_by;
}
/* User prefs */
$order_dir = ( $sort_order == 'asc' ) ? 'asc' : 'desc';
/* Do the search */
$this->DB->build( array(
'select' => "c.*",
'from' => array( 'cal_events' => 'c' ),
'where' => $this->_buildWhereStatement( $search_term, $content_title_only ),
'limit' => $limit_clause,
'order' => "c.event_unix_from " . $order_dir,
'group' => $group_by,
'add_join' => array(
array(
'select' => 'i.*',
'from' => array( 'permission_index' => 'i' ),
'where' => "i.perm_type='calendar' AND i.perm_type_id=c.event_calendar_id",
'type' => 'left',
),
array(
'select' => 'mem.members_display_name, mem.member_group_id, mem.mgroup_others',
'from' => array( 'members' => 'mem' ),
'where' => "mem.member_id=c.event_member_id",
'type' => 'left',
),
array(
'from' => array( 'profile_friends' => 'friend' ),
'where' => 'friend.friends_member_id=c.event_member_id AND friend.friends_friend_id=' . $this->memberData['member_id'],
'type' => 'left',
),
)
) );
$this->DB->execute();
/* Build result array */
$rows = array();
while( $r = $this->DB->fetch() )
{
/* Reassign stuff to match the search_index */
$rows[] = $this->formatFieldsForIndex( $r );
}
return $rows;
}
/**
* Performs live search and returns an array of results
* NOT AVAILABLE IN BASIC SEARCH
*
* @access public
* @param string $search_term
* @return array
*/
public function getLiveSearchResults( $search_term )
{
return array();
}
/**
* Returns the total number of results the search will return
*
* @access public
* @param string $search_term Search term
* @param string $group_by Column to group by
* @param bool $content_title_only Only search title records
* @return integer
*/
public function getSearchCount( $search_term, $group_by='', $content_title_only=false )
{
/* Group By */
if( $group_by )
{
$group_by = 'c.' . $group_by;
}
/* Query the count */
$this->DB->build( array(
'select' => 'COUNT(*) as total_results',
'from' => array( 'cal_events' => 'c' ),
'where' => $this->_buildWhereStatement( $search_term, $content_title_only ),
'group' => $group_by,
'add_join' => array(
array(
'from' => array( 'permission_index' => 'i' ),
'where' => "i.perm_type='calendar' AND i.perm_type_id=c.event_calendar_id",
'type' => 'left',
),
array(
'from' => array( 'profile_friends' => 'friend' ),
'where' => 'friend.friends_member_id=c.event_member_id AND friend.friends_friend_id=' . $this->memberData['member_id'],
'type' => 'left',
),
)
) );
$this->DB->execute();
$search = $this->DB->fetch();
/* Return the count */
return $search['total_results'];
}
/**
* Restrict the date range that the search is performed on
*
* @access public
* @param int $begin Start timestamp
* @param int [$end] End timestamp
* @return void
*/
public function setDateRange( $begin, $end=0 )
{
$this->search_begin_timestamp = $begin;
$this->search_end_timestamp = $end;
}
/**
* mySQL function for adding special search conditions
*
* @access public
* @param string $column sql table column for this condition
* @param string $operator Operation to perform for this condition, ex: =, <>, IN, NOT IN
* @param mixed $value Value to check with
* @param string $comp Comparison type
* @return void
*/
public function setCondition( $column, $operator, $value, $comp='AND' )
{
/* Remap */
$column = $column == 'member_id' ? 'event_member_id' : $column;
$column = $column == 'content_title' ? 'event_title' : $column;
if( $column == 'app' OR $column == 'type_id' )
{
return;
}
/* Build the condition based on operator */
switch( strtoupper( $operator ) )
{
case 'IN':
case 'NOT IN':
$this->whereConditions[$comp][] = "c.{$column} {$operator} ( {$value} )";
break;
default:
$this->whereConditions[$comp][] = "c.{$column} {$operator} {$value}";
break;
}
}
/**
* Allows you to specify multiple conditions that are chained together
*
* @access public
* @param array $conditions Array of conditions, each element has 3 keys: column, operator, value, see the setCondition function for information on each
* @param string $inner_comp Comparison operator to use inside the chain
* @param string $outer_comp Comparison operator to use outside the chain
* @return void
*/
public function setMultiConditions( $conditions, $inner_comp='OR', $outer_comp='AND' )
{
/* Loop through the conditions to build the statement */
$_temp = array();
foreach( $conditions as $r )
{
/* REMAP */
$r['column'] = ( $r['column'] == 'type_id' ) ? 'event_calendar_id' : $r['column'];
if( $r['column'] == 'app' )
{
continue;
}
switch( strtoupper( $r['operator'] ) )
{
case 'IN':
case 'NOT IN':
$_temp[] = "c.{$r['column']} {$r['operator']} ( {$r['value']} )";
break;
default:
$_temp[] = "c.{$r['column']} {$r['operator']} {$r['value']}";
break;
}
}
$this->whereConditions[$outer_comp][] = '( ' . implode( $_temp, ' ' . $inner_comp . ' ' ) . ' ) ';
}
/**
* Set search conditions for "View unread content"
*
* @access public
* @return void
*/
public function setUnreadConditions()
{
$this->setDateRange( intval( $this->memberData['last_visit'] ), time() );
}
/**
* Builds the where portion of a search string
*
* @access private
* @param string $search_term The string to use in the search
* @param bool $content_title_only Search only title records
* @return string
**/
private function _buildWhereStatement( $search_term, $content_title_only=false )
{
/* INI */
$where_clause = array();
if( $search_term )
{
if( $content_title_only )
{
$where_clause[] = "c.event_title LIKE '%{$search_term}%'";
}
else
{
$where_clause[] = "c.event_title LIKE '%{$search_term}%' OR c.event_content LIKE '%{$search_term}%'";
}
}
/* Exclude some items */
if( !$this->memberData['g_is_supmod'] )
{
/* Owner only */
$where_clause[] = '(i.owner_only=0 OR c.event_member_id=' . $this->memberData['member_id'] . ')';
/* Friend only */
$where_clause[] = '(i.friend_only=0 OR friend.friends_id ' . $this->DB->buildIsNull( false ) . ')';
/* Authorized users only */
$where_clause[] = '(i.authorized_users ' . $this->DB->buildIsNull() . " OR i.authorized_users='' OR c.event_member_id=" . $this->memberData['member_id'] . " OR i.authorized_users LIKE '%," . $this->memberData['member_id'] . ",%')";
}
/* Date Restrict */
if( $this->search_begin_timestamp && $this->search_end_timestamp )
{
$where_clause[] = $this->DB->buildBetween( "c.event_unix_from", $this->search_begin_timestamp, $this->search_end_timestamp );
}
else
{
if( $this->search_begin_timestamp )
{
$where_clause[] = "c.event_unix_from > {$this->search_begin_timestamp}";
}
if( $this->search_end_timestamp )
{
$where_clause[] = "c.event_unix_from < {$this->search_end_timestamp}";
}
}
/* Add in AND where conditions */
if( isset( $this->whereConditions['AND'] ) && count( $this->whereConditions['AND'] ) )
{
$where_clause = array_merge( $where_clause, $this->whereConditions['AND'] );
}
/* ADD in OR where conditions */
if( isset( $this->whereConditions['OR'] ) && count( $this->whereConditions['OR'] ) )
{
$where_clause[] = '( ' . implode( ' OR ', $this->whereConditions['OR'] ) . ' )';
}
/* Permissions */
$where_clause[] = $this->DB->buildRegexp( "i.perm_view", $this->member->perm_id_array );
/* Event permissions */
$where_clause[] = "((c.event_private=1 AND c.event_member_id=" . $this->memberData['member_id'] . ") OR (c.event_private=0 AND " . $this->DB->buildRegexp( "c.event_perms", $this->member->perm_id_array ) . "))";
/* Build and return the string */
return implode( " AND ", $where_clause );
}
/**
* Reassigns fields in a way the index exepcts
*
* @param array $r
* @return array
**/
public function formatFieldsForIndex( $r )
{
$r['app'] = 'calendar';
$r['content'] = $r['event_content'];
$r['content_title'] = $r['event_title'];
$r['updated'] = $r['event_unix_from'];
$r['type_2'] = 'event';
$r['type_id_2'] = $r['event_id'];
$r['misc'] = $r['event_unix_to'];
$r['member_id'] = $r['event_member_id'];
return $r;
}
/**
* This function grabs the actual results for display
*
* @param array $ids
* @return query result
**/
public function getResultsForSphinx( $ids )
{
$this->DB->build( array(
'select' => "c.*",
'from' => array( 'cal_events' => 'c' ),
'where' => 'c.event_id IN( ' . implode( ',', $ids ) . ')',
'order' => 'c.event_unix_from DESC',
'add_join' => array(
array(
'select' => 'mem.members_display_name, mem.member_group_id, mem.mgroup_others',
'from' => array( 'members' => 'mem' ),
'where' => "mem.member_id=c.event_member_id",
'type' => 'left',
)
)
) );
return $this->DB->execute();
}
/**
* Gets the name of the field this search index uses for dates.... >_<
*
* @return string
**/
public function getDateField()
{
return 'event_unix_from';
}
/**
* Gets field names for other conditions
*
* @param string Column
* @return string
**/
public function getConditionField( $column )
{
switch( $column )
{
case 'member_id':
return 'event_member_id';
break;
}
return $column;
}
}
@@ -0,0 +1,93 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Sphinx template file
* Last Updated: $Date: 2009-07-28 20:26:37 -0400 (Tue, 28 Jul 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Calendar
* @link http://www.iinvisionpower.com
* @version $Rev: 4948 $
* @since 3.0.0
*
*/
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();
}
$appSphinxTemplate = <<<EOF
############################# --- CALENDAR --- ##############################
source calendar_search_main : ipb_source_config
{
# Set our forum PID counter
sql_query_pre = REPLACE INTO <!--SPHINX_DB_PREFIX-->cache_store VALUES( 'sphinx_calendar_counter', (SELECT max(event_id) FROM <!--SPHINX_DB_PREFIX-->cal_events), '', 0, UNIX_TIMESTAMP() )
# Query posts for the main source
sql_query = SELECT e.*, e.event_id as search_id, \
REPLACE( pi.perm_view, '*', 0 ) as perm_view, \
CASE WHEN pi.authorized_users IS NULL THEN 0 ELSE pi.authorized_users END AS authorized_users, \
CASE WHEN pi.friend_only=0 THEN 0 ELSE e.event_member_id END AS friend_only, \
CASE WHEN pi.owner_only=0 THEN 0 ELSE e.event_member_id END AS owner_only \
FROM <!--SPHINX_DB_PREFIX-->cal_events e \
LEFT JOIN <!--SPHINX_DB_PREFIX-->permission_index pi ON ( pi.perm_type_id=e.event_calendar_id AND pi.perm_type='calendar' ) \
WHERE e.event_id <= ( SELECT cs_value FROM <!--SPHINX_DB_PREFIX-->cache_store WHERE cs_key='sphinx_calendar_counter' )
# Fields
sql_attr_uint = search_id
sql_attr_uint = friend_only
sql_attr_uint = owner_only
sql_attr_timestamp = event_unix_from
sql_attr_multi = uint perm_view from field
sql_attr_multi = uint authorized_users from field
sql_attr_uint = event_member_id
sql_ranged_throttle = 0
}
source calendar_search_delta : calendar_search_main
{
# Override the base sql_query_pre
sql_query_pre =
# Query posts for the main source
sql_query = SELECT e.*, e.event_id as search_id, \
REPLACE( pi.perm_view, '*', 0 ) as perm_view, \
CASE WHEN pi.authorized_users IS NULL THEN 0 ELSE pi.authorized_users END AS authorized_users, \
CASE WHEN pi.friend_only=0 THEN 0 ELSE e.event_member_id END AS friend_only, \
CASE WHEN pi.owner_only=0 THEN 0 ELSE e.event_member_id END AS owner_only \
FROM <!--SPHINX_DB_PREFIX-->cal_events e \
LEFT JOIN <!--SPHINX_DB_PREFIX-->permission_index pi ON ( pi.perm_type_id=e.event_calendar_id AND pi.perm_type='calendar' ) \
WHERE e.event_id > ( SELECT cs_value FROM <!--SPHINX_DB_PREFIX-->cache_store WHERE cs_key='sphinx_calendar_counter' )
}
index calendar_search_main
{
source = calendar_search_main
path = <!--SPHINX_BASE_PATH-->/calendar_search_main
docinfo = extern
mlock = 0
morphology = none
min_word_len = 2
charset_type = sbcs
html_strip = 0
}
index calendar_search_delta : calendar_search_main
{
source = calendar_search_delta
path = <!--SPHINX_BASE_PATH-->/calendar_search_delta
}
EOF;
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,845 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Calendar Management
* Last Updated: $LastChangedDate: 2009-10-01 10:02:08 -0400 (Thu, 01 Oct 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Calendar
* @link http://www.iinvisionpower.com
* @since 27th January 2004
* @version $Rev: 5190 $
*/
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_calendar_calendar_calendars extends ipsCommand
{
/**
* Skin file
*
* @access public
* @var object
*/
public $html;
/**
* Main execution method
*
* @access public
* @param object ipsRegistry reference
* @return void
*/
public function doExecute( ipsRegistry $registry )
{
/* Load Skin and Lang */
$this->html = $this->registry->output->loadTemplate( 'cp_skin_calendar' );
$this->html->form_code = 'module=calendar&amp;section=calendars';
$this->html->form_code_js = 'module=calendar&section=calendars';
$this->lang->loadLanguageFile( array( 'admin_calendar' ) );
switch( $this->request['do'] )
{
case 'calendar_delete':
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'calendar_delete' );
$this->calendarDelete();
break;
case 'calendar_add':
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'calendar_manage' );
$this->calendarForm( 'new' );
break;
case 'calendar_add_do':
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'calendar_manage' );
$this->calendarSave( 'new' );
break;
case 'calendar_edit':
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'calendar_manage' );
$this->calendarForm( 'edit' );
break;
case 'calendar_edit_do':
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'calendar_manage' );
$this->calendarSave( 'edit' );
break;
case 'calendar_move':
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'calendar_manage' );
$this->calendarMove();
break;
case 'calendar_rebuildcache':
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'calendar_manage' );
$this->calendarRebuildCache( 1 );
break;
case 'calendar_rss_cache':
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'calendar_manage' );
$this->calendarRSSCache( intval( $this->request['cal_id'] ), 1 );
break;
case 'calendars_list':
default:
$this->calendarsList();
break;
}
/* Output */
$this->registry->output->html_main .= $this->registry->output->global_template->global_frame_wrapper();
$this->registry->output->sendOutput();
}
/**
* Update the calendar position
*
* @access public
* @return void
*/
public function calendarMove()
{
//-----------------------------------------
// INIT
//-----------------------------------------
require_once( IPS_KERNEL_PATH . 'classAjax.php' );
$ajax = new classAjax();
//-----------------------------------------
// Checks...
//-----------------------------------------
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['calendars']) AND count($this->request['calendars']) )
{
foreach( $this->request['calendars'] as $this_id )
{
$this->DB->update( 'cal_calendars', array( 'cal_position' => $position ), 'cal_id=' . $this_id );
$position++;
}
}
$this->calendarsRebuildCache();
$ajax->returnString( 'OK' );
exit();
}
/**
* Delete a calendar
*
* @access public
* @return void
*/
public function calendarDelete()
{
/* INIT */
$cal_id = intval( $this->request['cal_id'] );
if ( ! $cal_id )
{
$this->registry->output->global_message = $this->lang->words['c_noid'];
$this->components_list();
return;
}
/* Delete Calendar Events */
$this->DB->delete( 'cal_events', 'event_calendar_id= ' .$cal_id );
/* Delete Calendar */
$this->DB->delete( 'cal_calendars', 'cal_id=' . $cal_id );
$this->DB->delete( 'permission_index', "app='calendar' AND perm_type='calendar' AND perm_type_id=" . $cal_id );
/* Recache and bounce */
/* Rebuild Caches and Bounce */
$this->calendarsRebuildCache();
$this->calendarRebuildCache( 0 );
$this->calendarRSSCache( 0, 0 );
$this->registry->output->global_message = $this->lang->words['c_removed'];
$this->calendarsList();
}
/**
* Handles the calednar new/edit form
*
* @access public
* @param string $type Either new or edit
* @return void
*/
public function calendarSave( $type='new' )
{
/* INIT */
$cal_id = intval( $this->request['cal_id'] );
$cal_title = trim( IPSText::stripslashes( IPSText::htmlspecialchars( $_POST['cal_title'] ) ) );
$cal_moderate = intval( $this->request['cal_moderate'] );
$cal_event_limit = intval( $this->request['cal_event_limit'] );
$cal_bday_limit = intval( $this->request['cal_bday_limit'] );
$cal_rss_export = intval( $this->request['cal_rss_export'] );
$cal_rss_export_days = intval( $this->request['cal_rss_export_days'] );
$cal_rss_export_max = intval( $this->request['cal_rss_export_max'] );
$cal_rss_update = intval( $this->request['cal_rss_update'] );
$cal_perms = array( 'perm_read' => '', 'perm_post' => '', 'perm_nomod' => '' );
/* Error Checks */
if ( $type == 'edit' )
{
if ( ! $cal_id OR ! $cal_title )
{
$this->registry->output->global_message = $this->lang->words['c_noid'];
$this->calendarsList();
return;
}
}
else
{
if ( ! $cal_title )
{
$this->registry->output->global_message = $this->lang->words['c_completeform'];
$this->calendarForm( $type );
return;
}
}
/* DB Array */
$array = array( 'cal_title' => $cal_title,
'cal_moderate' => $cal_moderate,
'cal_event_limit' => $cal_event_limit,
'cal_bday_limit' => $cal_bday_limit,
'cal_rss_export' => $cal_rss_export,
'cal_rss_export_days' => $cal_rss_export_days,
'cal_rss_export_max' => $cal_rss_export_max,
'cal_rss_update' => $cal_rss_update,
);
/* Create Calendar */
if ( $type == 'new' )
{
$this->DB->insert( 'cal_calendars', $array );
$cal_id = $this->DB->getInsertId();
$this->registry->output->global_message = $this->lang->words['c_added'];
}
/* Modify Calendar */
else
{
$this->DB->update( 'cal_calendars', $array, 'cal_id='.$cal_id );
$this->registry->output->global_message = $this->lang->words['c_edited'];
}
/* Permissions */
require_once( IPS_ROOT_PATH . 'sources/classes/class_public_permissions.php' );
$permissions = new classPublicPermissions( ipsRegistry::instance() );
$permissions->savePermMatrix( $this->request['perms'], $cal_id, 'calendar' );
/* Rebuild Caches and Bounce */
$this->calendarsRebuildCache();
$this->calendarRebuildCache( 0 );
$this->calendarRSSCache( $cal_id, 0 );
$this->cache->rebuildCache( 'rss_output_cache' );
$this->calendarsList();
}
/**
* Add/Edit Calendar Form
*
* @access public
* @param string $type Either new or edit
* @return void
*/
public function calendarForm( $type='new' )
{
//-----------------------------------------
// Init Vars
//-----------------------------------------
$cal_id = $this->request['cal_id'] ? intval( $this->request['cal_id'] ) : 0;
$form = array();
$form['perm_read'] = "";
$form['perm_post'] = "";
$form['perm_nomod'] = "";
$form['perm_read_all'] = "";
$form['perm_post_all'] = "";
$form['perm_nomod_all'] = "";
/* New Calendar */
if ( $type == 'new' )
{
/* Form Bits */
$formcode = 'calendar_add_do';
$title = $this->lang->words['c_addcal'];
$button = $this->lang->words['c_addcal'];
/* Data */
$calendar = array( 'perm_read' => '',
'perm_post' => '',
'perm_nomod' => '',
'cal_title' => '',
'cal_moderate' => '',
'cal_event_limit' => '',
'cal_bday_limit' => '',
'cal_rss_export' => '',
'cal_rss_update' => '',
'cal_rss_export_days' => '',
'cal_rss_export_max' => '',
'cal_id' => 0 );
}
/* Edit Calendar */
else
{
/* Data */
$calendar = $this->DB->buildAndFetch( array(
'select' => 'c.*',
'from' => array( 'cal_calendars' => 'c' ),
'where' => 'c.cal_id=' . $cal_id,
'add_join' => array(
array(
'select' => 'p.*',
'from' => array( 'permission_index' => 'p' ),
'where' => "p.perm_type='calendar' AND perm_type_id=c.cal_id",
'type' => 'left',
)
)
) );
if ( ! $calendar['cal_id'] )
{
$this->registry->output->global_message = $this->lang->words['c_noid'];
$this->calendarsList();
return;
}
/* Form Bits */
$formcode = 'calendar_edit_do';
$title = $this->lang->words['c_editbutton'].$calendar['cal_title'];
$button = $this->lang->words['c_savebutton'];
}
/* Permissions */
require_once( IPS_ROOT_PATH . 'sources/classes/class_public_permissions.php' );
$permissions = new classPublicPermissions( ipsRegistry::instance() );
$form['perm_matrix'] = $permissions->adminPermMatrix( 'calendar', $calendar );
/* Form Elements */
$form['cal_title'] = $this->registry->output->formInput( 'cal_title' ,( isset( $_POST['cal_title'] ) AND $_POST['cal_title'] ) ? $_POST['cal_title'] : $calendar['cal_title'] );
$form['cal_moderate'] = $this->registry->output->formYesNo( 'cal_moderate' , ( isset( $this->request['cal_moderate'] ) AND $this->request['cal_moderate'] ) ? $this->request['cal_moderate'] : $calendar['cal_moderate'] );
$form['cal_event_limit'] = $this->registry->output->formSimpleInput( 'cal_event_limit' , ( isset( $this->request['cal_event_limit'] ) AND $this->request['cal_event_limit'] ) ? $this->request['cal_event_limit'] : $calendar['cal_event_limit'], 5 );
$form['cal_bday_limit'] = $this->registry->output->formSimpleInput( 'cal_bday_limit' , ( isset( $this->request['cal_bday_limit'] ) AND $this->request['cal_bday_limit'] ) ? $this->request['cal_bday_limit'] : $calendar['cal_bday_limit'], 5 );
$form['cal_rss_export'] = $this->registry->output->formYesNo( 'cal_rss_export' , ( isset( $this->request['cal_rss_export'] ) AND $this->request['cal_rss_export'] ) ? $this->request['cal_rss_export'] : $calendar['cal_rss_export'] );
$form['cal_rss_update'] = $this->registry->output->formSimpleInput( 'cal_rss_update' , ( isset( $this->request['cal_rss_update'] ) AND $this->request['cal_rss_update'] ) ? $this->request['cal_rss_update'] : $calendar['cal_rss_update'], 5 );
$form['cal_rss_export_days'] = $this->registry->output->formSimpleInput( 'cal_rss_export_days' , ( isset( $this->request['cal_rss_export_days'] ) AND $this->request['cal_rss_export_days'] ) ? $this->request['cal_rss_export_days'] : $calendar['cal_rss_export_days'], 5 );
$form['cal_rss_export_max'] = $this->registry->output->formSimpleInput( 'cal_rss_export_max' , ( isset( $this->request['cal_rss_export_max'] ) AND $this->request['cal_rss_export_max'] ) ? $this->request['cal_rss_export_max'] : $calendar['cal_rss_export_max'], 5 );
/* Output */
$this->registry->output->html .= $this->html->calendarForm( $form, $title, $formcode, $button, $calendar );
}
/**
* List Calendars
*
* @access public
* @return void
*/
public function calendarsList()
{
/* INIT */
$content = "";
$seen_count = 0;
$total_items = 0;
$rows = array();
/* Query calendars */
$this->DB->build( array( 'select' => '*', 'from' => 'cal_calendars', 'order' => 'cal_position ASC' ) );
$this->DB->execute();
/* Get number of rows */
$total_items = $this->DB->getTotalRows();
/* Loop through the calendars */
while( $r = $this->DB->fetch() )
{
$seen_count++;
$rows[] = $r;
}
/* Output */
$this->registry->output->html .= $this->html->calendarOverviewScreen( $rows );
}
/**
* Rebuild the RSS Cache
*
* @access public
* @param mixed $calendar_id Specify which calendar to rebuild, all is default
* @param bool $return If set to 0, the cache will be output to the browser
* @return mixed void, or the RSS document
*/
public function calendarRSSCache( $calendar_id='all', $return=0 )
{
/* INIT */
$seenids = array();
$calevents = "";
/* Calendar Class */
require_once( IPSLib::getAppDir( 'calendar' ) . '/modules_public/calendar/calendars.php' );
$calendar = new public_calendar_calendar_calendars();
$calendar->makeRegistryShortcuts( $this->registry );
/* RSS Class */
require_once( IPS_KERNEL_PATH . 'classRss.php' );
$class_rss = new classRss();
$class_rss->use_sockets = $this->use_sockets;
$class_rss->doc_type = IPS_DOC_CHAR_SET;
/* Reset the cache */
$cache = array();
/* Get the calendars */
$this->DB->build( array(
'select' => 'c.*',
'from' => array( 'cal_calendars' => 'c' ),
'where' => 'c.cal_rss_export_days > 0 AND c.cal_rss_export_max > 0 AND c.cal_rss_export=1',
'add_join' => array(
array(
'select' => 'p.*',
'from' => array( 'permission_index' => 'p' ),
'where' => "p.perm_type='calendar' AND perm_type_id=c.cal_id",
'type' => 'left',
)
)
) );
$outer = $this->DB->execute();
/* Loop through the calendars */
while( $row = $this->DB->fetch( $outer ) )
{
//print_r($row);exit;
/* Add Calendar to cache */
if ( $row['cal_rss_export'] )
{
$cache[] = array( 'url' => $this->settings['board_url'].'/index.php?app=core&amp;module=global&amp;section=rss&amp;type=calendar&amp;id='.$row['cal_id'], 'title' => $row['cal_title'] );
}
/* Are we including events from this calendar? */
if( $calendar_id == $row['cal_id'] OR $calendar_id == 'all' )
{
/* Create the RSS Channel */
$channel_id = $class_rss->createNewChannel( array( 'title' => $row['cal_title'],
'link' => $this->settings['board_url'].'/index.php?app=calendar&amp;module=calendar&amp;cal_id='.$row['cal_id'],
'pubDate' => $class_rss->formatDate( time() ),
'ttl' => $row['cal_rss_update'] * 60,
'description' => $row['cal_title']
) );
/* Check guest permissions */
if( $row['perm_view'] == '*' OR preg_match( "/(^|,)".$this->settings['guest_group']."(,|$)/", $row['perm_view'] ) )
{
$pass = 1;
}
if ( ! $pass )
{
continue;
}
/* Sort out the dates */
$row['cal_rss_export_days'] = intval ($row['cal_rss_export_days'] ) + 1;
list( $month, $day, $year ) = explode( ',', gmdate('n,j,Y', time()) );
$timenow = gmmktime( 0,0,0, $month, 1, $year );
$timethen = time() + ( $row['cal_rss_export_days'] * 86400 ) + 86400;
$nowtime = time() - 86400;
$items = 0;
/* Get Events */
$calendar->calendarGetEventsSQL( 0, 0, array( 'timenow' => $timenow, 'timethen' => $timethen, 'cal_id' => $row['cal_id'] ), 0 );
/* Check the events */
for( $i = 0 ; $i <= $row['cal_rss_export_days'] ; $i++ )
{
/* Get the month, day, and year */
list( $month, $day, $year ) = explode( ',', gmdate('n,j,Y', $nowtime) );
/* Get the events for this day */
$eventcache = $calendar->calendarGetDayEvents( $month, $day, $year );
/* Loop through the events */
foreach( $eventcache as $event )
{
if ( ! in_array( $event['event_id'], $seenids ) )
{
/* Reached the max? */
if ( $row['cal_rss_export_max'] <= $items )
{
break;
}
/* Get the event info */
if ( $calendar->getInfoEvents( $event, $month, $day, $year, 0 ) )
{
/* Approved */
if ( ! $event['event_approved'] )
{
continue;
}
/* Check Private */
if ( $event['event_private'] )
{
continue;
}
/* Check Permis */
if ( $event['event_perms'] != '*' AND ! preg_match( "/(^|,)".$this->settings['guest_group']."(,|$)/", $event['event_perms'] ) )
{
continue;
}
/* Get Dates */
list( $m , $d , $y ) = explode( ",", gmdate('n,j,Y', $event['event_unix_from'] ) );
list( $m1, $d1, $y1 ) = explode( ",", gmdate('n,j,Y', $event['event_unix_to'] ) );
$event['_from_month'] = $m;
$event['_from_day'] = $d;
$event['_from_year'] = $y;
$event['_to_month'] = $m1;
$event['_to_day'] = $d1;
$event['_to_year'] = $y1;
//-----------------------------------------
// Coming from RSS rebuild?
//-----------------------------------------
if( !$this->html )
{
/* Load Skin and Lang */
$this->html = $this->registry->output->getTemplate( 'calendar' );
$this->lang->loadLanguageFile( array( 'admin_calendar' ) );
}
//-----------------------------------------
// Parse bbcode
//-----------------------------------------
IPSText::getTextClass( 'bbcode' )->parse_html = 0;
IPSText::getTextClass( 'bbcode' )->parse_smilies = intval( $event['event_smilies'] );
IPSText::getTextClass( 'bbcode' )->parse_bbcode = 1;
IPSText::getTextClass( 'bbcode' )->parsing_section = 'calendar';
IPSText::getTextClass( 'bbcode' )->parsing_mgroup = $event['member_group_id'];
IPSText::getTextClass( 'bbcode' )->parsing_mgroup_others = $event['mgroup_others'];
$event['event_content'] = IPSText::getTextClass( 'bbcode' )->preDisplayParse( $event['event_content'] );
if ( $event['recurring'] )
{
$event['event_content'] = $this->html->calendar_rss_recurring( $event );
}
else if ( $event['single'] )
{
$event['event_content'] = $this->html->calendar_rss_single( $event );
}
else
{
$event['event_content'] = $this->html->calendar_rss_range( $event );
}
$event['event_unix_from'] = $event['event_tz'] ? $event['event_unix_from'] : $event['event_unix_from'] + ( $this->settings['time_offset'] * 3600 );
/* Add the item to our channel */
$class_rss->addItemToChannel( $channel_id, array( 'title' => $event['event_title'],
'link' => $this->settings['board_url'].'/index.php?app=calendar&amp;module=calendar&amp;do=showevent&amp;cal_id='.$row['cal_id'].'&amp;event_id='.$event['event_id'],
'description' => $event['event_content'],
'pubDate' => $class_rss->formatDate( $event['event_unix_from'] ),
'guid' => $event['event_id']
) );
}
/* Increment */
$seenids[ $event['event_id'] ] = $event['event_id'];
$items++;
}
}
$nowtime += 86400;
}
/* Create the RSS Document */
$class_rss->createRssDocument();
/* Update the cache */
$this->DB->update( 'cal_calendars', array( 'cal_rss_update_last' => time(), 'cal_rss_cache' => $class_rss->rss_document ), 'cal_id='.$row['cal_id'] );
}
}
/* Update Cache */
$this->cache->setCache( 'rss_calendar', $cache, array( 'donow' => 1, 'array' => 1 ) );
/* Return */
if ( $return )
{
$this->registry->output->global_message = $this->lang->words['c_rssrecached'];
$this->calendarsList();
return;
}
/* Print */
else
{
return $class_rss->rss_document;
}
}
/**
* Rebuild Calendar Cache
*
* @access public
* @param bool Whether to return or not
* @return void
*/
public function calendarRebuildCache( $return=0 )
{
/* INIT */
$this->settings['calendar_limit'] = intval( $this->settings['calendar_limit'] ) < 2 ? 1 : intval( $this->settings['calendar_limit'] );
//--------------------------------------------
// Grab an extra day for the TZ diff
//--------------------------------------------
$this->settings['calendar_limit']++;
list( $month, $day, $year ) = explode( ',', gmdate('n,j,Y', time() ) );
$timenow = gmmktime( 0,0,0, $month, 1, $year );
$timethen = time() + (intval($this->settings['calendar_limit']) * 86400);
$seenids = array();
$nowtime = time() - 86400;
$birthdays = array();
$calevents = array();
$calendars = array();
$a = explode( ',', gmdate( 'Y,n,j,G,i,s', time() ) );
$day = $a[2];
$month = $a[1];
$year = $a[0];
$daysinmonth = date( 't', time() );
//-----------------------------------------
// Get 24hr before and 24hr after to make
// sure we don't break any timezones
//-----------------------------------------
$last_day = $day - 1;
$last_month = $month;
$last_year = $year;
$next_day = $day + 1;
$next_month = $month;
$next_year = $year;
//-----------------------------------------
// Calculate dates..
//-----------------------------------------
if ( $last_day == 0 )
{
$last_month -= 1;
$last_day = gmdate( 't', time() );
}
if ( $last_month == 0 )
{
$last_month = 12;
$last_year -= 1;
}
if ( $next_day > gmdate( 't', time() ) )
{
$next_month += 1;
$next_day = 1;
}
if ( $next_month == 13 )
{
$next_month = 1;
$next_year += 1;
}
//--------------------------------------------
// Get classes
//--------------------------------------------
require_once( IPSLib::getAppDir( 'calendar' ) . '/modules_public/calendar/calendars.php' );
$calendar = new public_calendar_calendar_calendars( $this->registry );
$calendar->makeRegistryShortcuts( $this->registry );
//--------------------------------------------
// Get stuff
//--------------------------------------------
$this->DB->build( array(
'select' => 'c.*',
'from' => array( 'cal_calendars' => 'c' ),
'order' => 'c.cal_position ASC',
'add_join' => array(
array(
'select' => 'p.*',
'from' => array( 'permission_index' => 'p' ),
'where' => "p.perm_type='calendar' AND perm_type_id=c.cal_id",
'type' => 'left',
)
)
) );
$this->DB->execute();
while( $row = $this->DB->fetch() )
{
$row['_perm_read'] = $perms['perm_view'];
$calendars[ $row['cal_id'] ] = $row;
}
$calendar->calendarGetEventsSQL( 0, 0, array('timenow' => $timenow, 'timethen' => $timethen ) );
//--------------------------------------------
// OK.. Go through days and check events
//--------------------------------------------
for( $i = 0 ; $i <= $this->settings['calendar_limit'] ; $i++ )
{
list( $_month, $tday, $year ) = explode( ',', gmdate('n,j,Y', $nowtime) );
$eventcache = $calendar->calendarGetDayEvents( $_month, $tday, $year );
foreach( $eventcache as $event )
{
if ( ! in_array( $event['event_id'], $seenids ) )
{
if ( $calendar->getInfoEvents( $event, $_month, $tday, $year, 0 ) )
{
if ( ! $event['event_approved'] )
{
continue;
}
unset( $event['event_content'], $event['event_smilies'] );
$event['_perm_read'] = $calendars[ $event['event_calendar_id'] ]['perm_view'];
$calevents[ $event['event_id'] ] = $event;
}
$seenids[ $event['event_id'] ] = $event['event_id'];
}
}
$nowtime += 86400;
}
//-----------------------------------------
// Grab birthdays
//-----------------------------------------
$append_string = "";
if( ! date("L") )
{
if( $month == "2" AND ( $day == "28" OR $day == "27" ) )
{
$append_string = " or( bday_month=2 AND bday_day=29 )";
}
}
$this->DB->build( array(
'select' => 'member_id, members_seo_name, members_display_name, member_group_id, bday_day, bday_month, bday_year',
'from' => 'members',
'where' => "( bday_day=$last_day AND bday_month=$last_month )
or ( bday_day=$day AND bday_month=$month )
or ( bday_day=$next_day AND bday_month=$next_month ) {$append_string}"
) );
$this->DB->execute();
$birthdays = array();
while( $r = $this->DB->fetch() )
{
$birthdays[ $r['member_id'] ] = $r;
}
//--------------------------------------------
// Update calendar array
//--------------------------------------------
$this->cache->setCache( 'calendar' , $calevents, array( 'array' => 1 ) );
$this->cache->setCache( 'birthdays', $birthdays, array( 'array' => 1 ) );
if ( $return )
{
$this->registry->output->global_message = $this->lang->words['c_recached'];
$this->calendarsList();
}
}
/**
* Builds a cache of the current calendars
*
* @access public
* @return bool Returns true
*/
public function calendarsRebuildCache()
{
/* INI */
$cache = array();
/* Query Calenar with permissions */
$this->DB->build( array(
'select' => 'c.*',
'from' => array( 'cal_calendars' => 'c' ),
'order' => 'c.cal_position ASC',
'add_join' => array(
array(
'select' => 'p.*',
'from' => array( 'permission_index' => 'p' ),
'where' => "p.perm_type='calendar' AND perm_type_id=c.cal_id",
'type' => 'left',
)
)
) );
$this->DB->execute();
/* Add to cache */
while( $r = $this->DB->fetch() )
{
$cache[ $r['cal_id'] ] = $r;
}
/* Save */
$this->cache->setCache( 'calendars', $cache, array( 'donow' => 1, 'array' => 1 ) );
return TRUE;
}
}
@@ -0,0 +1,27 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Calendar default section
*
* @author $author$
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Calendar
* @link http://www.iinvisionpower.com
* @version $Rev: 4948 $
**/
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();
}
/**
* Very simply returns the default section if one is not
* passed in the URL
*/
$DEFAULT_SECTION = 'calendars';
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<menu>
<tabitems>
<item>
<title>Календарь</title>
<subitems>
<subitem>
<subitemtitle>Управление календарем</subitemtitle>
<subsection>calendars</subsection>
<subitemurl>do=overview</subitemurl>
<subitemrolekey></subitemrolekey>
<subisredirect>0</subisredirect>
</subitem>
</subitems>
</item>
</tabitems>
</menu>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<permissions>
<group>
<grouptitle>Управление календарем</grouptitle>
<items>
<item>
<key>calendar_manage</key>
<string>Может добавлять/изменять календари?</string>
</item>
<item>
<key>calendar_delete</key>
<string>Может удалять календари?</string>
</item>
</items>
</group>
</permissions>
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,27 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Default calendar section
*
* @author $author$
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Calendar
* @link http://www.iinvisionpower.com
* @version $Rev: 4948 $
*/
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();
}
/**
* Very simply returns the default section if one is not
* passed in the URL
*/
$DEFAULT_SECTION = 'calendars';
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,6 @@
<?php
# CALENDARS
$INSERT[] ="INSERT INTO cal_calendars (cal_id, cal_title, cal_moderate, cal_position, cal_event_limit, cal_bday_limit, cal_rss_export, cal_rss_export_days, cal_rss_export_max, cal_rss_update, cal_rss_update_last, cal_rss_cache, cal_permissions) VALUES (1, 'Основной календарь', 1, 0, 2, 1, 1, 14, 20, 1440, UNIX_TIMESTAMP(), '', 'a:3:{s:9:\"perm_read\";s:1:\"*\";s:9:\"perm_post\";s:3:\"4,3\";s:10:\"perm_nomod\";s:0:\"\";}');";
$INSERT[] ="INSERT INTO permission_index VALUES(NULL, 'calendar', 'calendar', 1, ',4,2,3,6,', ',4,3,6,', ',4,6,', '', '', '', '', 0, 0, NULL)";
$INSERT[] = "INSERT INTO rc_classes (onoff, class_title, class_desc, author, author_url, pversion, my_class, group_can_report, mod_group_perm, extra_data, lockd) VALUES(1, 'Плагин календаря', 'Плагин отправки жалоб на события календаря', 'Invision Power Services, Inc', 'http://', 'v1.0', 'calendar', ',1,2,3,4,6,', ',4,6,', 'N;', 1);";
@@ -0,0 +1,43 @@
<?php
/**
* Installation Schematic File
* Generated on Thu, 19 Feb 2009 08:15:47 +0000 GMT
*/
$TABLE[] = "CREATE TABLE cal_calendars (
cal_id int(10) unsigned NOT NULL auto_increment,
cal_title varchar(255) NOT NULL default '0',
cal_moderate tinyint(1) NOT NULL default '0',
cal_position int(3) NOT NULL default '0',
cal_event_limit int(2) unsigned NOT NULL default '0',
cal_bday_limit int(2) unsigned NOT NULL default '0',
cal_rss_export tinyint(1) NOT NULL default '0',
cal_rss_export_days int(3) unsigned NOT NULL default '0',
cal_rss_export_max tinyint(1) NOT NULL default '0',
cal_rss_update int(3) unsigned NOT NULL default '0',
cal_rss_update_last int(10) unsigned NOT NULL default '0',
cal_rss_cache mediumtext,
cal_permissions mediumtext,
PRIMARY KEY (cal_id)
);";
$TABLE[] = "CREATE TABLE cal_events (
event_id int(10) unsigned NOT NULL auto_increment,
event_calendar_id int(10) unsigned NOT NULL default '0',
event_member_id mediumint(8) unsigned NOT NULL default '0',
event_content mediumtext,
event_title varchar(255) NOT NULL default '',
event_smilies tinyint(1) NOT NULL default '0',
event_perms text,
event_private tinyint(1) NOT NULL default '0',
event_approved tinyint(1) NOT NULL default '0',
event_unixstamp int(10) unsigned NOT NULL default '0',
event_recurring int(2) unsigned NOT NULL default '0',
event_tz int(4) NOT NULL default '0',
event_timeset varchar(6) NOT NULL default '0',
event_unix_from int(10) unsigned NOT NULL default '0',
event_unix_to int(10) unsigned NOT NULL default '0',
event_all_day tinyint(1) NOT NULL default '0',
PRIMARY KEY (event_id),
KEY daterange (event_calendar_id,event_approved,event_unix_from,event_unix_to),
KEY approved (event_calendar_id,event_approved)
);";
?>
@@ -0,0 +1,2 @@
<?php
$QUERY[] = "DELETE FROM rc_classes WHERE my_class='calendar';";
@@ -0,0 +1,274 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Calendar skin file
* Last Updated: $Date: 2009-09-30 09:10:12 -0400 (Wed, 30 Sep 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Calendar
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 5182 $
*/
class cp_skin_calendar extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* Form to add/edit a calendar
*
* @access public
* @param array Form elements
* @param string Form title
* @param string Action code
* @param string Button text
* @param array Calendar data
* @return string HTML
*/
public function calendarForm($form, $title, $formcode, $button, $calendar) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$this->lang->words['c_title']}</h2>
</div>
<form id='adminform' action='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=$formcode&amp;cal_id={$calendar['cal_id']}' method='post'>
<input type='hidden' name='_admin_auth_key' value='{$this->registry->getClass('adminFunctions')->_admin_auth_key}' />
<div class='acp-box'>
<h3>$title</h3>
<ul class='acp-form alternate_rows'>
<li>
<label>{$this->lang->words['c_block_title']}</label>
{$form['cal_title']}
</li>
<li>
<label>{$this->lang->words['c_block_mod']}<span class='desctext'>{$this->lang->words['c_block_mod_info']}</span></label>
{$form['cal_moderate']}
</li>
<li>
<label>{$this->lang->words['c_block_limit']}<span class='desctext'>{$this->lang->words['c_block_limi_info']}</span></label>
{$form['cal_event_limit']}
</li>
<li>
<label>{$this->lang->words['c_block_bday']}<span class='desctext'>{$this->lang->words['c_block_bday_info']}</span></label>
{$form['cal_bday_limit']}
</li>
<li><label class='head'>{$this->lang->words['c_block_rss']}</label></li>
<li>
<label>{$this->lang->words['c_block_enable']}<span class='desctext'>{$this->lang->words['c_block_enabled_info']}</span></label>
<td width='60%' class='tablerow2'>{$form['cal_rss_export']}</td>
</li>
<li>
<label>{$this->lang->words['c_block_forthcoming']}</label>
{$form['cal_rss_export_days']}
</li>
<li>
<label>{$this->lang->words['c_block_max']}<span class='desctext'>{$this->lang->words['c_block_max_info']}</span></label>
{$form['cal_rss_export_max']}
</li>
<li>
<label>{$this->lang->words['c_block_freq']}<span class='desctext'>{$this->lang->words['c_block_freq_info']}</span></label>
{$form['cal_rss_update']}
</li>
</ul>
{$form['perm_matrix']}
<div class='acp-actionbar'>
<div class='centeraction'>
<input type='submit' class='button primary' value='$button' />
</div>
</div>
</div>
</form>
HTML;
//--endhtml--//
return $IPBHTML;
}
/**
* Calendar overview screen
*
* @access public
* @param array Calendars
* @return string HTML
*/
public function calendarOverviewScreen( $rows ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<div class='section_title'>
<h2>{$this->lang->words['c_title']}</h2>
<!-- ACPNOTE: Rikki - need these two icons -->
<ul class='context_menu'>
<li>
<a href='{$this->settings['base_url']}{$this->form_code}&amp;do=calendar_add' title='{$this->lang->words['c_addcal']}'>
<img src='{$this->settings['skin_acp_url']}/_newimages/icons/add.png' alt='' />
{$this->lang->words['c_addcal']}
</a>
</li>
<li>
<a href='{$this->settings['base_url']}{$this->form_code}&amp;do=calendar_rebuildcache' title='{$this->lang->words['c_recachecal']}'>
<img src='{$this->settings['skin_acp_url']}/_newimages/icons/arrow_refresh.png' alt='' />
{$this->lang->words['c_recachecal']}
</a>
</li>
</ul>
</div>
<div class='acp-box'>
<h3>{$this->lang->words['c_calendars']}</h3>
<ul id='sortable_handle' class='alternate_rows'>
HTML;
foreach( $rows as $r )
{
$IPBHTML .= <<<HTML
<li id='calendar_{$r['cal_id']}'>
<table style='width: 100%'>
<tr>
<td style='width: 3%'>
<div class='draghandle'><img src='{$this->settings['skin_acp_url']}/_newimages/drag_icon.png' alt='' /></div>
</td>
<td style='width: 93%'>
<strong>{$r['cal_title']}</strong><br />
</td>
<td style='width: 4%'>
<img id="menu{$r['cal_id']}" src='{$this->settings['skin_acp_url']}/_newimages/menu_open.png' border='0' alt='{$this->lang->words['c_options']}' class='ipbmenu' />
<ul class='acp-menu' id='menu{$r['cal_id']}_menucontent'>
<li class='icon edit'><a href='{$this->settings['base_url']}{$this->form_code}&amp;do=calendar_edit&amp;cal_id={$r['cal_id']}'>{$this->lang->words['c_editcal']}</a></li>
<li class='icon refresh'><a href='{$this->settings['base_url']}{$this->form_code}&amp;do=calendar_rss_cache&amp;cal_id={$r['cal_id']}'>{$this->lang->words['c_rebuildcal']}</a></li>
<li class='icon delete'><a href='#' onclick='return acp.confirmDelete("{$this->settings['base_url']}{$this->form_code}&amp;do=calendar_delete&amp;cal_id={$r['cal_id']}");'>{$this->lang->words['c_deletecal']}</a></li>
</ul>
</td>
</tr>
</table>
</li>
HTML;
}
$IPBHTML .= <<<HTML
</ul>
</div>
<script type='text/javascript'>
window.onload = function() {
Sortable.create( 'sortable_handle', { revert: true, format: 'calendar_([0-9]+)', onUpdate: dropItLikeItsHot, handle: 'draghandle' } );
};
dropItLikeItsHot = function( draggableObject, mouseObject )
{
var options = {
method : 'post',
parameters : Sortable.serialize( 'sortable_handle', { tag: 'li', name: 'calendars' } )
};
new Ajax.Request( "{$this->settings['base_url']}&{$this->form_code_js}&do=calendar_move&md5check={$this->registry->adminFunctions->getSecurityKey()}".replace( /&amp;/g, '&' ), options );
return false;
};
</script>
HTML;
//--endhtml--//
return $IPBHTML;
}
/**
* RSS recurring event
*
* @access public
* @param array Event data
* @return string HTML
*/
public function calendar_rss_recurring( $event ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<p>{$event['event_content']}</p>
<br />
<p>{$this->lang->words['c_recurring']}
<br />{$this->lang->words['c_fromcolon']} {$event['_from_month']}/{$event['_from_day']}/{$event['_from_year']}
<br />{$this->lang->words['c_tocolon']} {$event['_to_month']}/{$event['_to_day']}/{$event['_to_year']}</p>
HTML;
//--endhtml--//
return $IPBHTML;
}
/**
* RSS ranged event
*
* @access public
* @param array Event data
* @return string HTML
*/
public function calendar_rss_range( $event ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<p>{$event['event_content']}</p>
<br />
<p>{$this->lang->words['c_ranged']}
<br />{$this->lang->words['c_fromcolon']} {$event['_from_month']}/{$event['_from_day']}/{$event['_from_year']}
<br />{$this->lang->words['c_tocolon']} {$event['_to_month']}/{$event['_to_day']}/{$event['_to_year']}</p>
HTML;
//--endhtml--//
return $IPBHTML;
}
/**
* RSS single day event
*
* @access public
* @param array Event data
* @return string HTML
*/
public function calendar_rss_single( $event ) {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<HTML
<p>{$event['event_content']}</p>
<br />
<p>{$this->lang->words['c_singleday']} {$event['_from_month']}/{$event['_from_day']}/{$event['_from_year']}</p>
HTML;
//--endhtml--//
return $IPBHTML;
}
}
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,128 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Task: Gathers birthday and calendar events for a few days and caches them
* Last Updated: $LastChangedDate: 2009-02-04 15:03:36 -0500 (Wed, 04 Feb 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Calendar
* @link http://www.iinvisionpower.com
* @since 27th January 2004
* @version $Rev: 3887 $
*/
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 task_item
{
/**
* Parent task manager class
*
* @access protected
* @var object
*/
protected $class;
/**
* This task data
*
* @access protected
* @var array
*/
protected $task = array();
/**
* Prevent logging
*
* @access protected
* @var boolean
*/
protected $restrict_log = false;
/**#@+
* Registry Object Shortcuts
*
* @access protected
* @var object
*/
protected $registry;
protected $DB;
protected $settings;
protected $request;
protected $lang;
protected $member;
protected $cache;
/**#@-*/
/**
* Constructor
*
* @access public
* @param object ipsRegistry reference
* @param object Parent task class
* @param array This task data
* @return void
*/
public function __construct( ipsRegistry $registry, $class, $task )
{
/* Make registry objects */
$this->registry = $registry;
$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();
$this->class = $class;
$this->task = $task;
}
/**
* Run this task
*
* @access public
* @return void
*/
public function runTask()
{
$this->registry->getClass('class_localization')->loadLanguageFile( array( 'public_global' ), 'core' );
//-----------------------------------------
// Load and recache info
//-----------------------------------------
define( 'IN_ACP', 1 );
require_once( IPSLib::getAppDir( 'calendar' ) . '/modules_admin/calendar/calendars.php' );
$calendars = new admin_calendar_calendar_calendars();
$calendars->makeRegistryShortcuts( $this->registry );
$calendars->calendarRebuildCache( 0 );
//-----------------------------------------
// Log to log table - modify but dont delete
//-----------------------------------------
if ( ! $this->restrict_log )
{
$this->class->appendTaskLog( $this->task, $this->lang->words['task_calendars'] );
}
//-----------------------------------------
// Unlock Task: DO NOT MODIFY!
//-----------------------------------------
$this->class->unlockTask( $this->task );
}
}
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,408 @@
<?xml version="1.0" encoding="utf-8"?>
<languageexport>
<languagegroup>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_noid</word_key>
<word_default>No ID was passed. Please try again.</word_default>
<word_custom>ID не найден. Попробуйте снова.</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_removed</word_key>
<word_default>Calendar Removed</word_default>
<word_custom>Календарь удален</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_completeform</word_key>
<word_default>You must complete the entire form.</word_default>
<word_custom>Вы не указали название календаря</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_added</word_key>
<word_default>New Calendar Added</word_default>
<word_custom>Календарь добавлен</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_edited</word_key>
<word_default>Calendar Edited</word_default>
<word_custom>Календарь изменен</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_editbutton</word_key>
<word_default>Edit Calendar </word_default>
<word_custom>Изменение календаря </word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_block_mod</word_key>
<word_default><![CDATA[<strong>Calendar: Enable Moderation</strong>]]></word_default>
<word_custom>Включить модерацию</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_block_title</word_key>
<word_default><![CDATA[<strong>Calendar: Title</strong>]]></word_default>
<word_custom>Название календаря</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_recached</word_key>
<word_default>Calendar Events Recached</word_default>
<word_custom>Кеш событий календаря успешно обновлен&#13;
</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_rssrecached</word_key>
<word_default>Calendar Events RSS Recached</word_default>
<word_custom>Кеш RSS календаря успешно обновлен&#13;
</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_title</word_key>
<word_default>Calendar Manager</word_default>
<word_custom>Управление календарем</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_savebutton</word_key>
<word_default>Save Changes</word_default>
<word_custom>Изменить</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_block_limit</word_key>
<word_default><![CDATA[<strong>Calendar: Event Limit</strong>]]></word_default>
<word_custom>Лимит событий</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_block_limit_info</word_key>
<word_default><![CDATA[This is the number of events listed per day before they are replaced by a single link to the day's events]]></word_default>
<word_custom>Число показываемых событий за день, если событий будет больше, то будет отображаться ссылка на все события дня</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_block_bday</word_key>
<word_default><![CDATA[<strong>Calendar: Birthday Limit</strong>]]></word_default>
<word_custom>Лимит именинников</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_block_bday_info</word_key>
<word_default><![CDATA[This is the number of birthdays listed per day before they are replaced by a single link<br />Enter 0 to not show birthdays at all]]></word_default>
<word_custom>Число показываемых именинников за день, если их будет больше, то будет отображаться ссылка на всех именинников&#13;
Введите 0, чтобы не показывать именинников вообще</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_block_rss</word_key>
<word_default><![CDATA[<strong>RSS Options</strong>]]></word_default>
<word_custom>RSS Опции</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_block_max</word_key>
<word_default><![CDATA[<strong>RSS: Export Maximum Events</strong>]]></word_default>
<word_custom>Количество событий</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_block_enable</word_key>
<word_default><![CDATA[<strong>RSS: Enable</strong>]]></word_default>
<word_custom>Включить</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_block_enable_info</word_key>
<word_default><![CDATA[If enabled, all <em>n</em> forthcoming events (based on GMT time) that have guest read permission will be exported]]></word_default>
<word_custom><![CDATA[Если включено, то все <em>n</em> будущих событий (GMT время), которые имеют маску доступа для чтения гостями будут экспортированы в RSS]]></word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_block_forthcoming</word_key>
<word_default><![CDATA[<strong>RSS: Forthcoming Days</strong>]]></word_default>
<word_custom>За сколько дней до события выводить его?</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>perm_calendar_nomod</word_key>
<word_default>Bypass Moderation</word_default>
<word_custom>Публикация без проверки</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>perm_calendar_start</word_key>
<word_default>Create Events</word_default>
<word_custom>Создание событий</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_block_max_info</word_key>
<word_default>The maximum number of events exported</word_default>
<word_custom>Максимальное количество экспортируемых событий</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_block_freq</word_key>
<word_default><![CDATA[<strong>RSS: Update Frequency</strong>]]></word_default>
<word_custom>Частота обновления</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_block_freq_info</word_key>
<word_default>The number of minutes between RSS cache rebuilding</word_default>
<word_custom>Количество минут между обновлением кеша RSS</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_options</word_key>
<word_default>Options</word_default>
<word_custom>Опции</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_calendars</word_key>
<word_default>Calendars</word_default>
<word_custom>Календари</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_rebuildcal</word_key>
<word_default>Rebuild Calendar RSS Export...</word_default>
<word_custom>Обновление RSS кеша</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_editcal</word_key>
<word_default>Edit Calendar...</word_default>
<word_custom>Изменить</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_deletecal</word_key>
<word_default>Delete Calendar...</word_default>
<word_custom>Удалить</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_addcal</word_key>
<word_default>Add New Calendar</word_default>
<word_custom>Добавить календарь</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_recachecal</word_key>
<word_default>Recache Calendar Events</word_default>
<word_custom>Обновление кеша событий</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_block_mod_info</word_key>
<word_default><![CDATA[If enabled, all groups which are not included in the 'Avoid Moderation Queue' will have their events entered into the moderation queue for approval.]]></word_default>
<word_custom>Если включено, события от всех групп пользователей будут попадать на проверку модераторами перед публикацией.</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_recurring</word_key>
<word_default>Recurrent Event</word_default>
<word_custom>Повторяющееся событие</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_fromcolon</word_key>
<word_default>From:</word_default>
<word_custom>От: </word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_ranged</word_key>
<word_default>Ranged Event</word_default>
<word_custom>Многодневное событие</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_tocolon</word_key>
<word_default>To:</word_default>
<word_custom>Кому: </word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>c_singleday</word_key>
<word_default>Single Day Event On:</word_default>
<word_custom>Однодневное событие:</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>admin_calendar</word_pack>
<word_key>perm_calendar_view</word_key>
<word_default>Show Calendar</word_default>
<word_custom>Просмотр календаря</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
</languagegroup>
</languageexport>
@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<export>
<help>
<row>
<title>Календарь</title>
<text><![CDATA[Данный форум имеет собственную встроенную функцию календаря (добавление в него пользователями событий), доступ к которой можно получить при помощи ссылки "Календарь", расположенной в верхней части форума. <br />
<br />
<strong>Навигация календаря</strong><br />
<br />
<em>Быстрый переход</em><br />
В верхней части страниц в меню есть ссылка на календарь, по которой можно быстро попасть в него. С помощью выпадающего меню, расположенного в левой колонке, можно легко просмотреть нужные события за конкретный период.<br />
<br />
Там также есть другие ссылки для быстрого перехода к текущей дате.<br />
<br />
<em>Мини-календари</em><br />
Чуть ниже блока быстрого перехода находятся мини-календари со ссылками на события конкретных дней предыдущего и будущего месяцев. Если вы просматриваете конкретную неделю, вы также будете видеть мини-календарь, на котором текущий день будет отмечен.<br />
<br />
Вы также можете кликнуть на кнопку <img src='{style_image_url}/next.png' /> для просмотра событий по дням выбранной недели.<br />
<br />
<em>Основной календарь</em><br />
В центральной части страницы находится выбранный календарь. Текущая дата выделяется.<br />
<br />
События и дни рождения указываются внутри квадратных блоков. Для просмотра более подробной информации нужно кликнуть на информацию в блоках. Если на один день записано очень много событий, то вместо кучи ссылок, будет одна ссылка на просмотр всех событий за этот день.<br />
<br />
Вы можете передвигаться по месяцам с помощью кнопок "← Предыдущий месяц" и "→ Следующий месяц".<br />
<br />
<br />
<strong>Добавление новых событий</strong><br />
Для добавления новых событий выберите одну из трех кнопок (с разными типами событий) в верхней части календаря:<br />
<ul><li><img src='{style_image_url}/cal_recurring.png' />Повторяющиеся события - однодневные события, которые периодически повторяются в календаре: еженедельно, ежемесячно, ежегодно.</li><li><img src='{style_image_url}/cal_ranged.png' />Многодневное событие - событие, длящееся несколько дней. Чтобы добавить такое событие, кроме даты начала, как и в предыдущем случае, нужно еще выбрать дату окончания события. Также существует опция, позволяющая выделить событие в календаре, ее полезно использовать, когда в календаре за раз отображается несколько длительных событий..</li><li><img src='{style_image_url}/cal_single.png' />Однодневное, единоразовое событие - его можно добавить при помощи первой опции, просто указав дату отображения события.</li></ul><br />
Соответственно, необходимо будет задать заголовок событию. Также у некоторых типов событий нужно будет задать необходимые даты.<br />
Также вы сможете выбирать тип создаваемого события - публичные события видны остальным пользователям, персональные видны только вам.]]></text>
<description>Информация по календарю на форуме.</description>
<position>11</position>
<app>calendar</app>
</row>
</help>
</export>
@@ -0,0 +1,295 @@
<?xml version="1.0" encoding="utf-8"?>
<templates application="calendar" templategroups="a:1:{s:13:&quot;skin_calendar&quot;;s:5:&quot;exact&quot;;}">
<templategroup group="skin_calendar">
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>mini_cal_blank_cell</template_name>
<template_data/>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>mini_cal_date_cell</template_name>
<template_data><![CDATA[$month_day="",$events=""]]></template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>mini_cal_date_cell_today</template_name>
<template_data><![CDATA[$month_day="",$events=""]]></template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>mini_cal_mini_wrap</template_name>
<template_data><![CDATA[$month="",$mid="",$year="",$events="",$day_words=""]]></template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>mini_cal_new_row</template_name>
<template_data><![CDATA[$week=""]]></template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>calendarEventForm</template_name>
<template_data><![CDATA[$code="", $calendar_id="", $formtype="", $event_id='', $event_title='', $form_title='', $event_date='', $event_type='', $groups, $button, $editor]]></template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>calendarEventsList</template_name>
<template_data>$events</template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>cal_week_monthbar</template_name>
<template_data><![CDATA[$month="",$year=""]]></template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>calendarBirthdayList</template_name>
<template_data>$rows</template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>cal_week_events_wrap</template_name>
<template_data><![CDATA[$link="",$text=""]]></template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>cal_week_dayentry</template_name>
<template_data><![CDATA[$wday="",$date="",$month="",$mid="",$year="",$events="",$queued=0]]></template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>cal_approve_button</template_name>
<template_data><![CDATA[$id="",$cal_id="",$event=""]]></template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>cal_blank_cell</template_name>
<template_data/>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>cal_date_cell</template_name>
<template_data><![CDATA[$month_day="",$events="",$cal_date_queued="",$queued=0, $js_id]]></template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>cal_date_cell_today</template_name>
<template_data><![CDATA[$month_day="",$events="",$cal_date_queued="",$queued=0, $js_id]]></template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>cal_day_bit</template_name>
<template_data><![CDATA[$day="", $id='']]></template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>cal_edit_del_button</template_name>
<template_data><![CDATA[$id="",$cal_id=""]]></template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>cal_events_wrap</template_name>
<template_data><![CDATA[$event=""]]></template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>cal_events_wrap_manual</template_name>
<template_data><![CDATA[$url="",$text=""]]></template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>cal_events_wrap_range</template_name>
<template_data><![CDATA[$event=""]]></template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>cal_events_wrap_recurring</template_name>
<template_data><![CDATA[$event=""]]></template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>calendar_rss_recurring</template_name>
<template_data>$event</template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>calendar_rss_range</template_name>
<template_data>$event</template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>calendar_rss_single</template_name>
<template_data>$event</template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>calendarMainContent</template_name>
<template_data><![CDATA[$calendars, $month="",$year="",$prev="",$next="",$cal_jump="",$cal_id="",$day_words=""]]></template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>cal_new_row</template_name>
<template_data><![CDATA[$week=""]]></template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>cal_show_event</template_name>
<template_data><![CDATA[$event="",$member="",$event_type="",$edit_button="",$approve_button="",$type="",$date_ends=""]]></template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>cal_unapprove_button</template_name>
<template_data><![CDATA[$id="",$cal_id="",$event=""]]></template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content/>
<template_name>cal_week_content</template_name>
<template_data><![CDATA[$calendars, $date="",$month="",$year="",$prev="",$next="", $cal_id=1]]></template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
</templategroup>
</templates>
@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<moduleexport>
<modulegroup>
<module>
<sys_module_title>Календарь</sys_module_title>
<sys_module_application>calendar</sys_module_application>
<sys_module_key>calendar</sys_module_key>
<sys_module_description/>
<sys_module_version>1.0.0</sys_module_version>
<sys_module_parent>0</sys_module_parent>
<sys_module_protected>1</sys_module_protected>
<sys_module_visible>1</sys_module_visible>
<sys_module_tables/>
<sys_module_hooks/>
<sys_module_position>0</sys_module_position>
<sys_module_admin>0</sys_module_admin>
</module>
<module>
<sys_module_title>Управление календарем</sys_module_title>
<sys_module_application>calendar</sys_module_application>
<sys_module_key>calendar</sys_module_key>
<sys_module_description/>
<sys_module_version>1.0.0</sys_module_version>
<sys_module_parent>0</sys_module_parent>
<sys_module_protected>1</sys_module_protected>
<sys_module_visible>1</sys_module_visible>
<sys_module_tables/>
<sys_module_hooks/>
<sys_module_position>0</sys_module_position>
<sys_module_admin>1</sys_module_admin>
</module>
</modulegroup>
</moduleexport>
@@ -0,0 +1,196 @@
<?xml version="1.0" encoding="utf-8"?>
<css>
<cssfile>
<css_set_id>0</css_set_id>
<css_updated>1260269066</css_updated>
<css_group>ipb_calendar</css_group>
<css_content>/************************************************************************/
/* IP.Board 3 CSS - By Rikki Tissier - (c)2008 Invision Power Services */
/************************************************************************/
/* ipb_calendar.css - Calendar specific styles */
/************************************************************************/
div#calendar_list {
width: 17%;
padding: 10px;
}
div#calendar_list ol {
margin-top: 10px;
margin-bottom: 15px;
}
#calendar_list li {
margin: 2px 0;
text-align: left;
}
#calendar_list li a {
background: #d5dde5;
text-decoration: none;
padding: 5px 7px;
display: block;
}
div#current_calendar {
width: 77%;
margin-top: -20px;
}
/* div#current_calendar .maintitle {
margin-right: -2px !important;
}*/
div#current_calendar table {
border-collapse: collapse;
border-top: 0;
margin-bottom: 10px;
clear: both;
}
div#current_calendar table td {
font-size: 0.9em;
vertical-align: top;
border: 1px solid #d8d8d8;
padding: 5px;
height: 85px;
width: 14%;
}
div#current_calendar table td.selected {
background-color: #e1e7ee;
}
div#current_calendar table td ul {
margin: 5px;
}
#current_calendar table th,
#mini_calendars table th {
border: 1px solid #b6c7db; /* Fixes Firefoxs overlapping pixel thing with collapsed borders */
}
.calendar_wrap table td.blank {
background-color: #e7e7e7;
}
#ipboard_body .calendar_wrap table td.today {
border: 2px solid #6f8f52;
color: #6f8f52;
background-color: #f1f6ec;
}
.calendar_wrap table td strong {
font-size: 0.9em;
font-weight: bold;
}
#ipboard_body table th.head_week {
width: 2% !important;
}
#ipboard_body table th.view_week {
background-color: #b6c7db;
text-align: center;
border: 1px solid #b6c7db;
}
/* Week view */
div#current_calendar ol#week_view li.day {
margin-bottom: 2px;
}
div#current_calendar ol#week_view li.day div {
padding: 4px 10px 4px 75px;
min-height: 60px;
position: relative;
}
div#current_calendar ol#week_view li.day .date {
color: #1d3652;
font-size: 1.2em;
text-align: center;
padding-top: 10px;
top: 0px;
bottom: 0px;
left: 0px;
width: 65px;
display: block;
position: absolute;
}
div#mini_calendars {
margin: 20px 0 15px 0;
width: 20%;
}
div#mini_calendars table,
.mini_cal {
border-top: 0;
}
div#mini_calendars th.view_week {
padding: 6px 2px;
}
div#mini_calendars th, div#mini_calendars td,
.mini_cal th, .mini_cal td {
font-size: 0.85em;
text-align: center;
padding: 6px;
}
div#mini_calendars td,
.mini_cal td {
border: 1px solid #f1f4f7;
padding: 6px 0;
}
.cal_color {
margin-right: 8px;
padding: 0 7px;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
}
.cal {
background-color: #d5dde5;
color: #fff;
font-size: 0.8em;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
padding: 2px 5px;
margin-bottom: 3px;
}
#ipboard_body .cal a {
text-decoration: underline;
}
.today .cal {
background-color: #6f8f52;
}
.today .cal a {
color: #fff;
}
.cal_1 {
background-color: #971a48;
}
.cal_2 {
background-color: #3fa711;
}
.cal_3 {
background-color: #cd8b24;
}</css_content>
<css_position>1</css_position>
<css_app>calendar</css_app>
<css_app_hide>1</css_app_hide>
<css_attributes><![CDATA[title="Main" media="screen"]]></css_attributes>
<css_removed>0</css_removed>
<css_modules/>
<css_user_added>0</css_user_added>
<css_user_edited>0</css_user_edited>
</cssfile>
</css>
@@ -0,0 +1,715 @@
<?xml version="1.0" encoding="utf-8"?>
<templates application="calendar" templategroups="a:1:{s:13:&quot;skin_calendar&quot;;s:5:&quot;exact&quot;;}">
<templategroup group="skin_calendar">
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<h2>{$this->lang->words['cal_birthdays']}</h2>
<div class='general_box'>
{parse striping="bday" classes="row1,row2"}
<ul>
<foreach loop="birthdays:$rows as $r">
<li class='{parse striping="bday"}'><a href="{parse url="showuser={$r['uid']}" template="showuser" seotitle="{$r['seoname']}" base="public"}">{$r['uname']}</a> <if test="age:|:$r['age']">(<strong>{$r['age']}</strong>)</if></li>
</foreach>
</ul>
</div>]]></template_content>
<template_name>calendarBirthdayList</template_name>
<template_data>$rows</template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[{parse js_module="calendar"}
<script type='text/javascript'>
ipb.calendar.inSection = 'form';
</script>
<div class='post_form'>
<form id='postingform' action="{parse url="app=calendar&module=calendar&amp;do={$code}&amp;cal_id={$calendar_id}&amp;formtype={$formtype}&amp;event_id={$event_id}" base="public"}" method="post">
<input type="hidden" name="removeattachid" value="" />
<h2 class='maintitle'>{$form_title}</h2>
<div class='generic_bar'></div>
<fieldset>
<h3 class='bar'>{$this->lang->words['event_details']}</h3>
<ul>
<li class='field'>
<label for='event_title'>{$this->lang->words['calendar_title']}</label>
<input type='text' id='event_title' class='input_text' name='event_title' value="{$event_title}" size='50' maxlength='50' />
</li>
<if test="single:|:$formtype == 'single'">
<li class='field'>
<label for='e_day'>{$this->lang->words['fv_single']}</label>
<!-- SKINNOTE: Update this to use the calendar picker? -->
<select class='input_select' name="e_day" id='e_day'>{$event_date['nd']}</select>&nbsp;&nbsp;
<select class='input_select' name="e_month">{$event_date['nm']}</select>&nbsp;&nbsp;
<select class='input_select' name="e_year">{$event_date['ny']}</select>
</li>
</if>
<if test="range:|:$formtype == 'range'">
<li class='field'>
<label for='e_day'>{$this->lang->words['fv_single']}</label>
<select class='input_select' name="e_day" id='e_day'>{$event_date['nd']}</select>&nbsp;&nbsp;
<select class='input_select' name="e_month">{$event_date['nm']}</select>&nbsp;&nbsp;
<select class='input_select' name="e_year">{$event_date['ny']}</select>
</li>
<li class='field'>
<label for='end_day'>{$this->lang->words['fv_range_ends']}</label>
<select class='input_select' name="end_day" id='end_day'>{$event_date['fd']}</select>&nbsp;&nbsp;
<select class='input_select' name="end_month">{$event_date['fm']}</select>&nbsp;&nbsp;
<select class='input_select' name="end_year">{$event_date['fy']}</select>
</li>
</if>
<if test="recur:|:$formtype == 'recur'">
<li class='field'>
<label for='e_day'>{$this->lang->words['fv_single']}</label>
<select class='input_select' name="e_day" id='e_day'>{$event_date['nd']}</select>&nbsp;&nbsp;
<select class='input_select' name="e_month">{$event_date['nm']}</select>&nbsp;&nbsp;
<select class='input_select' name="e_year">{$event_date['ny']}</select>
</li>
<li class='field'>
<label for='recur_unit'>{$this->lang->words['fv_recur']}</label>
{$this->lang->words['fv_recur_every']}
<select class='input_select' name="recur_unit" id='recur_unit'>{$event_date['recur_unit']}</select>
{$this->lang->words['fv_until']}
<select class='input_select' name="end_day">{$event_date['fd']}</select>&nbsp;&nbsp;
<select class='input_select' name="end_month">{$event_date['fm']}</select>&nbsp;&nbsp;
<select class='input_select' name="end_year">{$event_date['fy']}</select>
</li>
</if>
<if test="settimes:|:$event_type['timestuff']['formtype'] != 'range'">
<li class='field checkbox'>
<input class='input_check' type='checkbox' id='set_times' name='set_times' {$event_type['timestuff']['checked']} value='1' />
<label for='set_times'>{$this->lang->words['form_set_times']}</label>
</li>
<li class='field time_setting'>
<label for='timezone'>{$this->lang->words['form_tz']}</label>
{$event_type['timezone']}
</li>
<li class='field time_setting'>
<label for='tz_start'>{$this->lang->words['form_timestart']}</label>
<input class='input_text' type='text' size='8' id='tz_start' name='event_timestart' value='{$event_type['timestuff']['timestart']}' />
</li>
</if>
</ul>
<h3 class='bar'>{$this->lang->words['event_options']}</h3>
<ul>
<li class='field'>
<label for='event_calendar_id'>{$this->lang->words['form_whichcal']}</label>
<select name='event_calendar_id' id='event_calendar_id'>{$event_type['dropdown']}</select>
</li>
<li class='field'>
<label for='e_type'>{$this->lang->words['calendar_event_type']}</label>
<select name="e_type" id='e_type'>
<option value="public"{$event_type['pub_select']}>{$this->lang->words['calendar_type_public']}</option>
<option value="private"{$event_type['priv_select']}>{$this->lang->words['calendar_type_private']}</option>
</select>
</li>
<if test="acpaccess:|:$this->memberData['g_access_cp']">
<li class='field type_setting'>
<label for='e_groups'>{$this->lang->words['calendar_group_filter']}</label>
<select name="e_groups[]" id='e_groups' size="5" multiple='multiple'>{$groups}</select>
</li>
<li class='field checkbox type_setting'>
<input type='checkbox' id='all_groups' value='1' class='input_check' />
<label for='all_groups'>{$this->lang->words['all_groups']}</label>
</if>
</ul>
<script type='text/javascript'>
<if test="hidetime:|:$event_type['timestuff']['divhide'] == 'none'">
$$('.time_setting').invoke('hide');
</if>
<if test="adminoptions:|:$this->memberData['g_access_cp']">
ipb.calendar.hideAdminOptions();
</if>
</script>
<h3 class='bar'>{$this->lang->words['event']}</h3>
<ul>
<li>{$editor}</li>
<li class='field checkbox'>
<input type="checkbox" name="enableemo" class="input_check" value="yes" <if test="hassmilies:|:$event_type['smilies'] == 1">checked='checked'</if> />
<label for='enableemo'>{$this->lang->words['enable_emo']}</label>
</li>
</ul>
</fieldset>
<fieldset class='submit'>
<input class='input_submit' type="submit" value="{$button}" tabindex="4" /> {$this->lang->words['or']} <a href='{parse url="app=calendar&amp;module=calendar&amp;cal_id={$calendar_id}" base="public"}' title='{$this->lang->words['cancel']}' class='cancel'>{$this->lang->words['cancel']}</a>
</fieldset>
</form>
</div>]]></template_content>
<template_name>calendarEventForm</template_name>
<template_data><![CDATA[$code="", $calendar_id="", $formtype="", $event_id='', $event_title='', $form_title='', $event_date='', $event_type='', $groups, $button, $editor]]></template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[{parse js_module="topic"}
<script type="text/javascript">
//<!#^#|CDATA|
function calendar_event_delete(id, cal_id)
{
if (confirm('{$this->lang->words['js_del_1']}'))
{
window.location.href = "{$this->settings['base_url']}app=calendar&amp;module=calendar&amp;do=delete&md5check={$this->member->form_hash}&event_id=" + id + "&cal_id=" + cal_id;
}
else {
alert ('{$this->lang->words['js_del_2']}');
}
}
//|#^#]>
</script>
<!--SKINNOTE: I commented this out because we need to show event titles, and this seemed "prettiest", but feel free to change -->
<!--<h2>{$this->lang->words['cal_title_events']}</h2>
<div class='generic_bar'></div>-->
{$events}]]></template_content>
<template_name>calendarEventsList</template_name>
<template_data>$events</template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[{parse js_module="calendar"}
<h2>{$this->lang->words['calendars']}</h2>
<div id='calendar_list' class='left general_box'>
<if test="gotcalendars:|:is_array( $calendars ) && count( $calendars )">
<p><strong>{$this->lang->words['select_calendar']}</strong></p>
<ol>
<foreach loop="calendars:$calendars as $cid => $cal">
<li><a href='{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cid}&amp;m={$this->request['m']}&amp;y={$this->request['y']}" base="public"}' title="{$this->lang->words['view_this_calendar']}" class='rounded'>{$cal['cal_title']}</a></li>
</foreach>
</ol>
</if>
<strong>{$this->lang->words['jump_to']}</strong><br />
<form action="{parse url="app=calendar&amp;module=calendar" base="public"}" method="post">
<fieldset>
<input type='hidden' name='cal_id' value='{$this->request['cal_id']}' />
<label for='m' class='hide'>{$this->lang->words['fv_months']}:</label>
<select name="m" class='input_select'><!--IBF.MONTH_BOX--></select>&nbsp;
<label for='year' class='hide'>{$this->lang->words['fv_years']}:</label>
<select name="year" class='input_select'><!--IBF.YEAR_BOX--></select>&nbsp;
<input type='submit' class='input_submit' value='{$this->lang->words['jmp_go']}' />
</fieldset>
</form>
</div>
<div id='current_calendar' class='right calendar_wrap'>
<div class='topic_controls'>
<ul class='pagination'>
<li><a href="{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cal_id}&amp;m={$prev['month_id']}&amp;y={$prev['year_id']}" base="public"}" title="{$prev['month_name']} {$prev['year_id']}">&larr; {$this->lang->words['month_previous']}</a></li>
<li><a href="{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cal_id}&amp;m={$next['month_id']}&amp;y={$next['year_id']}" base="public"}" title="{$next['month_name']} {$next['year_id']}">{$this->lang->words['month_next']} &rarr;</a></li>
</ul>
<ul class='topic_buttons'>
<li><a href='{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cal_id}&amp;do=newevent&amp;formtype=single" base="public"}' title='{$this->lang->words['se_normal']}'>{parse replacement="cal_single"} {$this->lang->words['event_add_single']}</a></li>
<li><a href='{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cal_id}&amp;do=newevent&amp;formtype=range" base="public"}' title='{$this->lang->words['se_range']}'>{parse replacement="cal_ranged"} {$this->lang->words['event_add_ranged']}</a></li>
<li><a href='{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cal_id}&amp;do=newevent&amp;formtype=recur" base="public"}' title='{$this->lang->words['se_recur']}'>{parse replacement="cal_recurring"} {$this->lang->words['event_add_recurring']}</a></li>
</ul>
</div>
<br />
<table id='calendar_table' class='ipb_table' summary="{$this->lang->words['calendar_for']} {$month} {$year}">
<caption class='maintitle'>{$month} {$year}</caption>
<tr class='header'>
<th class='head_week' scope='col'>&nbsp;</th>
<foreach loop="days:$day_words as $day">
<th scope='col'>{$day}</th>
</foreach>
<!--IBF.DAYS_CONTENT-->
</tr>
</table>
<ul class='pagination'>
<li><a href="{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cal_id}&amp;do=find&amp;what=thismonth" base="public"}">{$this->lang->words['aa_cur_month']}</a></li>
<li><a href="{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cal_id}&amp;do=find&amp;what=thisweek" base="public"}">{$this->lang->words['aa_view_week']}</a></li>
</ul>
</div>
<div id='mini_calendars' class='left calendar_wrap'>
<!--PREV.MONTH-->
<br />
<!--NEXT.MONTH-->
</div>
<br />]]></template_content>
<template_name>calendarMainContent</template_name>
<template_data><![CDATA[$calendars, $month="",$year="",$prev="",$next="",$cal_jump="",$cal_id="",$day_words=""]]></template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<p>{$event['event_content']}</p>
<br />
<p>{$this->lang->words['c_ranged']}
<br />{$this->lang->words['c_fromcolon']} {$event['_from_month']}/{$event['_from_day']}/{$event['_from_year']}
<br />{$this->lang->words['c_tocolon']} {$event['_to_month']}/{$event['_to_day']}/{$event['_to_year']}</p>]]></template_content>
<template_name>calendar_rss_range</template_name>
<template_data>$event</template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<p>{$event['event_content']}</p>
<br />
<p>{$this->lang->words['c_recurring']}
<br />{$this->lang->words['c_fromcolon']} {$event['_from_month']}/{$event['_from_day']}/{$event['_from_year']}
<br />{$this->lang->words['c_tocolon']} {$event['_to_month']}/{$event['_to_day']}/{$event['_to_year']}</p>]]></template_content>
<template_name>calendar_rss_recurring</template_name>
<template_data>$event</template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<p>{$event['event_content']}</p>
<br />
<p>{$this->lang->words['c_singleday']} {$event['_from_month']}/{$event['_from_day']}/{$event['_from_year']}</p>]]></template_content>
<template_name>calendar_rss_single</template_name>
<template_data>$event</template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<li class='post_approve'><a href="{parse url="app=calendar&amp;module=calendar&amp;do=calendarEventApprove&amp;modfilter={$this->request['modfilter']}&amp;qt={$event['_quicktime']}&amp;approve=1&amp;md5check={$this->member->form_hash}&amp;cal_id={$cal_id}&amp;event_id=$id" base="public"}" title='{$this->lang->words['approve_event']}'>{parse replacement="edit_post_icon"} {$this->lang->words['approve_event']}</a></li>]]></template_content>
<template_name>cal_approve_button</template_name>
<template_data><![CDATA[$id="",$cal_id="",$event=""]]></template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<td class="blank"><!-- no content --></td>]]></template_content>
<template_name>cal_blank_cell</template_name>
<template_data/>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<!--Day-->
<if test="datecellqueued:|:$queued != 0">
<td id='{$js_id}' class="moderated">
<strong>{$month_day}</strong><a href="{$cal_date_queued}">{parse replacement="t_queued"}</a>
<else />
<td id='{$js_id}'>
<strong>{$month_day}</strong>
</if>
{$events}
</td>]]></template_content>
<template_name>cal_date_cell</template_name>
<template_data><![CDATA[$month_day="",$events="",$cal_date_queued="",$queued=0, $js_id]]></template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<!--Day-->
<if test="todayqueued:|:$queued != 0">
<td id='{$js_id}' class="today moderated">
<strong>{$month_day}: {$this->lang->words['today_title']}</strong> <a href="{$cal_date_queued}">{parse replacement="t_queued"}</a>
<else />
<td id='{$js_id}' class="today">
<strong>{$month_day}: {$this->lang->words['today_title']}</strong>
</if>
{$events}
</td>]]></template_content>
<template_name>cal_date_cell_today</template_name>
<template_data><![CDATA[$month_day="",$events="",$cal_date_queued="",$queued=0, $js_id]]></template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<td id='{$id}'><strong>{$day}</strong></td>]]></template_content>
<template_name>cal_day_bit</template_name>
<template_data><![CDATA[$day="", $id='']]></template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<li class='post_del'><a href='{parse url="app=calendar&amp;module=calendar&amp;do=delete&amp;md5check={$this->member->form_hash}&amp;event_id={$id}&amp;cal_id={$cal_id}" base="public"}' title='{$this->lang->words['calendar_delete_title']}'>{parse replacement="delete_post_icon"} {$this->lang->words['calendar_delete_button']}</a></li>
<li class='post_edit'><a href='{parse url="app=calendar&amp;module=calendar&amp;do=edit&amp;cal_id={$cal_id}&amp;event_id={$id}" base="public"}' title='{$this->lang->words['calendar_edit_title']}'>{parse replacement="edit_post_icon"} {$this->lang->words['calendar_edit_button']}</a></li>]]></template_content>
<template_name>cal_edit_del_button</template_name>
<template_data><![CDATA[$id="",$cal_id=""]]></template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[</ul>]]></template_content>
<template_name>cal_events_end</template_name>
<template_data/>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<ul>]]></template_content>
<template_name>cal_events_start</template_name>
<template_data/>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<li class='cal'>
<a href="{parse url="app=calendar&amp;module=calendar&amp;cal_id={$event['event_calendar_id']}&amp;do=showevent&amp;event_id={$event['event_id']}" seotitle="false" template="event" base="public"}" title='{$this->lang->words['view_event']}'>{$event['event_title']}</a>
</li>]]></template_content>
<template_name>cal_events_wrap</template_name>
<template_data><![CDATA[$event=""]]></template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<if test="strpos( $url, "do=showevent" ) !== false">
<li class='cal'><a href="{parse url="app=calendar&amp;module=calendar&amp;{$url}" template="event" seotitle="false" base="public"}" title='{$this->lang->words['view_event']}'>{$text}</a></li>
<else />
<li class='cal'><a href="{parse url="app=calendar&amp;module=calendar&amp;{$url}" base="public"}" title='{$this->lang->words['view_event']}'>{$text}</a></li>
</if>]]></template_content>
<template_name>cal_events_wrap_manual</template_name>
<template_data><![CDATA[$url="",$text=""]]></template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<li class='cal'>
<a href="{parse url="app=calendar&amp;module=calendar&amp;cal_id={$event['event_calendar_id']}&amp;do=showevent&amp;event_id={$event['event_id']}" template="event" seotitle="false" base="public"}" title='{$this->lang->words['view_event']}'>{$event['event_title']}</a>
</li>]]></template_content>
<template_name>cal_events_wrap_range</template_name>
<template_data><![CDATA[$event=""]]></template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<li class='cal'>
<a href="{parse url="app=calendar&amp;module=calendar&amp;cal_id={$event['event_calendar_id']}&amp;do=showevent&amp;event_id={$event['event_id']}" base="public"}" title="{$this->lang->words['tbt_recur']}">{$event['event_title']}</a>
</li>]]></template_content>
<template_name>cal_events_wrap_recurring</template_name>
<template_data><![CDATA[$event=""]]></template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[</tr>
<!-- NEW ROW-->
<php>
$this->row_class = ( $this->row_class == 'row1' ) ? 'row2' : 'row1';
</php>
<tr class='{$this->row_class}'>
<th class='view_week header' scope='row'>
<a href="{parse url="app=calendar&amp;module=calendar&amp;cal_id={$this->request['_cal_id']}&amp;do=showweek&amp;week={$week}" seotitle="false" template="cal_week" base="public"}" title="{$this->lang->words['view_this_week']}"><img src="{$this->settings['img_url']}/next.png" alt='{$this->lang->words['icon']}' /></a>
</th>]]></template_content>
<template_name>cal_new_row</template_name>
<template_data><![CDATA[$week=""]]></template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<if test="disablelightbox:|:!$this->settings['disable_lightbox']">
{parse template="include_lightbox" group="global" params=""}
</if>
{parse template="include_highlighter" group="global" params="1"}
<h2 class='maintitle'>{$this->lang->words['event_prefix']} {$event['event_title']}</h2>
<div class='generic_bar'></div>
<div class='post_block <if test="eventnotapproved:|:$event['event_approved']==0">moderated</if>' id='event_id_{$event['event_id']}'>
<div class='post_wrap'>
<if test="eventmember:|:$member['member_id']">
<h3>
<else />
<h3 class='guest'>
</if>
<if test="onlineoffline:|:$member['member_id']">
<if test="online:|:$member['_online']">
{parse replacement="user_online"}
<else />
{parse replacement="user_offline"}
</if> &nbsp;
<span class="author vcard"><a class="url fn" href='{parse url="showuser={$member['member_id']}" template="showuser" seotitle="{$member['members_seo_name']}" base="public"}' title='{$this->lang->words['view_profile']}'>{$member['members_display_name']}</a>{parse template="user_popup" group="global" params="$member['member_id'],$member['members_seo_name']"}</span>
<else />
{$member['members_display_name']}
</if>
</h3>
<div class='author_info'>
{parse template="userInfoPane" group="global" params="$member, $event['event_id'], array()"}
</div>
<div class='post_body'>
<p class='posted_info'>
<if test="posticonid:|:$post['post']['icon_id']">
<img src="{$this->settings['public_dir']}/style_extra/post_icons/icon{$post['post']['icon_id']}.gif" alt="{$this->lang->words['icon']}" />&nbsp;
</if>
<strong class='event'>{$this->lang->words['event_date']} {$event['_start_date']} {$date_ends} {$event['time']} ({$type})</strong>
</p>
<div class='post entry-content'>
{$event['event_content']}
</div>
</div>
<ul class='post_controls'>
<if test="reportpost:|:($this->settings['disable_reportpost'] != 1) and ( $this->memberData['member_id'] )">
<li class='report'><a href='{parse url="app=core&amp;module=reports&amp;rcom=calendar&amp;event_id={$event['event_id']}" base="public"}' title='{$this->lang->words['report_event']}'>{parse replacement="report_post_icon"} {$this->lang->words['report']}</a></li>
</if>
<!-- SKINNOTE: Add report link back in -->
{$approve_button} {$edit_button}
</ul>
</div>
</div>]]></template_content>
<template_name>cal_show_event</template_name>
<template_data><![CDATA[$event="",$member="",$event_type="",$edit_button="",$approve_button="",$type="",$date_ends=""]]></template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<li class='post_unapprove'><a href="{parse url="app=calendar&amp;module=calendar&amp;do=calendarEventApprove&amp;modfilter={$this->request['modfilter']}&amp;qt={$event['_quicktime']}&amp;approve=0&amp;md5check={$this->member->form_hash}&amp;cal_id={$cal_id}&amp;event_id={$id}" base="public"}" title='{$this->lang->words['unapprove_event']}'>{parse replacement="edit_post_icon"} {$this->lang->words['unapprove_event']}</a></li>]]></template_content>
<template_name>cal_unapprove_button</template_name>
<template_data><![CDATA[$id="",$cal_id="",$event=""]]></template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[{parse js_module="calendar"}
<h2>{$this->lang->words['calendars']}</h2>
<div id='calendar_list' class='left general_box'>
<if test="calendarsforweek:|:is_array( $calendars ) && count( $calendars )">
<p><strong>{$this->lang->words['select_calendar']}</strong></p>
<ol>
<foreach loop="weekcalendars:$calendars as $cid => $cal">
<li><a href='{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cid}&amp;do=showweek&amp;week={$this->request['week']}" seotitle="false" template="cal_week" base="public"}' title="{$this->lang->words['view_this_calendar']}" class='rounded'>{$cal['cal_title']}</a></li>
</foreach>
</ol>
</if>
<strong>{$this->lang->words['jump_to']}</strong><br />
<form action="{parse url="app=calendar&amp;module=calendar&amp;cal_id={$this->request['_cal_id']}" base="public"}" method="post">
<fieldset>
<label for='m' class='hide'>{$this->lang->words['fv_months']}:</label>
<select name="m" class='input_select'><!--IBF.MONTH_BOX--></select>&nbsp;
<label for='year' class='hide'>{$this->lang->words['fv_years']}:</label>
<select name="year" class='input_select'><!--IBF.YEAR_BOX--></select>&nbsp;
<input type='submit' class='input_submit' value='{$this->lang->words['jmp_go']}' />
</fieldset>
</form>
</div>
<div id='current_calendar' class='right calendar_wrap'>
<div class='topic_controls'>
<ul class='pagination'>
<li><a href="{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cal_id}&amp;do=showweek&amp;week={$prev['0']}" seotitle="false" template="cal_week" base="public"}" title="{$prev['month_name']} {$prev['year_id']}">&larr; {$this->lang->words['week_previous']}</a></li>
<li><a href="{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cal_id}&amp;do=showweek&amp;week={$next['0']}" seotitle="false" template="cal_week" base="public"}" title="{$next['month_name']} {$next['year_id']}">{$this->lang->words['week_next']} &rarr;</a></li>
</ul>
<ul class='topic_buttons'>
<li><a href='{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cal_id}&amp;do=newevent&amp;formtype=single" base="public"}' title='{$this->lang->words['se_normal']}'>{parse replacement="cal_single"} {$this->lang->words['event_add_single']}</a></li>
<li><a href='{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cal_id}&amp;do=newevent&amp;formtype=range" base="public"}' title='{$this->lang->words['se_range']}'>{parse replacement="cal_ranged"} {$this->lang->words['event_add_ranged']}</a></li>
<li><a href='{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cal_id}&amp;do=newevent&amp;formtype=recur" base="public"}' title='{$this->lang->words['se_recur']}'>{parse replacement="cal_recurring"} {$this->lang->words['event_add_recurring']}</a></li>
</ul>
</div>
<br />
<h2 class='maintitle'>{$this->lang->words['week_beginning']} {$date} {$month} {$year}</h2>
<ol id='week_view' class='clear'>
<!--IBF.DAYS_CONTENT-->
</ol>
</div>
<div id='mini_calendars' class='left calendar_wrap'>
<!--PREV.MONTH-->
<br />
<!--THIS.MONTH-->
<br />
<!--NEXT.MONTH-->
</div>]]></template_content>
<template_name>cal_week_content</template_name>
<template_data><![CDATA[$calendars, $date="",$month="",$year="",$prev="",$next="", $cal_id=1]]></template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<php>
$this->week_view = ( $this->week_view == 'row1' ) ? 'row2' : 'row1';
</php>
<li id='day-{$year}_{$mid}_{$date}' class='day {$this->week_view} <if test="weekdayentryqueued:|:$queued != 0">{$this->lang->words['moderated']}</if>'>
<h3 class='bar'>{$wday}</h3>
<div>
<span class='date altrow'>{$date}</span>
<ul>
{$events}
</ul>
</div>
</li>]]></template_content>
<template_name>cal_week_dayentry</template_name>
<template_data><![CDATA[$wday="",$date="",$month="",$mid="",$year="",$events="",$queued=0]]></template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<li class='cal'>
<a href="{parse url="app=calendar&amp;module=calendar&amp;$link" base="public"}" title='{$this->lang->words['view_event']}'>{$text}</a>
</li>]]></template_content>
<template_name>cal_week_events_wrap</template_name>
<template_data><![CDATA[$link="",$text=""]]></template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<div style="background-color: $bg; color: $ft; padding: 3px; border: 1px outset $bg; width: 50%;">
<a href='{parse url="app=calendar&amp;module=calendar&amp;$link" base="public"}' style="color: $ft;">$text</a>
</div>]]></template_content>
<template_name>cal_week_events_wrap_range</template_name>
<template_data><![CDATA[$link="",$text="",$ft="",$bg=""]]></template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<li class='month_bar header'>
{$month} {$year}
</li>]]></template_content>
<template_name>cal_week_monthbar</template_name>
<template_data><![CDATA[$month="",$year=""]]></template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<td class='blank'><!-- no content --></td>]]></template_content>
<template_name>mini_cal_blank_cell</template_name>
<template_data/>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<td>
{$month_day}
</td>]]></template_content>
<template_name>mini_cal_date_cell</template_name>
<template_data><![CDATA[$month_day="",$events=""]]></template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<td class="today">
<strong>{$month_day}</strong>
</td>]]></template_content>
<template_name>mini_cal_date_cell_today</template_name>
<template_data><![CDATA[$month_day="",$events=""]]></template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<!-- <a href="{parse url="app=calendar&module=calendar&amp;cal_id={$this->request['_cal_id']}&amp;m={$mid}&amp;y=$year" base="public"}"> -->
<php>
$this->mini_cal = 'row2';
</php>
<h3 class='maintitle'>{$month} {$year}</h3>
<table class='mini_cal'>
<tr class='header'>
<th class='head_week'>&nbsp;</th>
<foreach loop="minidays:$day_words as $day">
<th>{parse expression="IPSText::mbsubstr( $day, 0, 1 )"}</th>
</foreach>
{$events}
</tr>
</table>]]></template_content>
<template_name>mini_cal_mini_wrap</template_name>
<template_data><![CDATA[$month="",$mid="",$year="",$events="",$day_words=""]]></template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[</tr>
<!-- NEW ROW-->
<php>
$this->mini_cal = ( $this->mini_cal == 'row1' ) ? 'row2' : 'row1';
$this->request['_cal_id'] = ( $this->request['_cal_id'] ) ? $this->request['_cal_id'] : 1;
</php>
<tr class='{$this->mini_cal}'>
<th class='view_week header'>
<a href="{parse url="app=calendar&amp;module=calendar&amp;cal_id={$this->request['_cal_id']}&amp;do=showweek&amp;week={$week}" seotitle="false" template="cal_week" base="public"}" title='{$this->lang->words['view_this_week']}' ><img src="{$this->settings['img_url']}/next.png" alt='{$this->lang->words['icon']}' /></a>
</th>]]></template_content>
<template_name>mini_cal_new_row</template_name>
<template_data><![CDATA[$week=""]]></template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
</templategroup>
</templates>
@@ -0,0 +1,176 @@
<?xml version="1.0" encoding="utf-8"?>
<settingexport>
<settinggroup>
<setting>
<conf_is_title>1</conf_is_title>
<conf_title_keyword>calendar</conf_title_keyword>
<conf_title_title>Календарь и дни рождения</conf_title_title>
<conf_title_desc>Настройка опций календаря и отображение на форуме именинников</conf_title_desc>
<conf_title_tab>IPS Apps</conf_title_tab>
<conf_title_app>calendar</conf_title_app>
<conf_title_noshow>0</conf_title_noshow>
</setting>
<setting>
<conf_title>Показывать именинников на главной странице календаря?</conf_title>
<conf_description>Если опция включена, календарь будет показывать количество именинников в данный день.</conf_description>
<conf_group>28</conf_group>
<conf_type>yes_no</conf_type>
<conf_key>show_bday_calendar</conf_key>
<conf_default>1</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>1</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>calendar</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Показывать сегодняшние дни рождения на главной странице форума?</conf_title>
<conf_description>Если опция включена, на главной странице форума будут отображены все дни рождения на сегодняшний день.</conf_description>
<conf_group>28</conf_group>
<conf_type>yes_no</conf_type>
<conf_key>show_birthdays</conf_key>
<conf_default>1</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>2</conf_position>
<conf_start_group>Сегодняшние именинники</conf_start_group>
<conf_end_group>0</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>calendar</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Автоматически скрывать блок при отсутствии именинников?</conf_title>
<conf_description><![CDATA[Если опция включена и дней рождения в текущий день нет, то блок "Сегодняшние именинники" будет скрыт на главной странице форума.]]></conf_description>
<conf_group>28</conf_group>
<conf_type>yes_no</conf_type>
<conf_key>autohide_bday</conf_key>
<conf_default>1</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>3</conf_position>
<conf_start_group/>
<conf_end_group>1</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>calendar</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Показывать предстоящие календарные события?</conf_title>
<conf_description>Предстоящие события в календаре будут отображаться на главной странице форума. Повторяющиеся события или длительные события не отображаются.</conf_description>
<conf_group>28</conf_group>
<conf_type>yes_no</conf_type>
<conf_key>show_calendar</conf_key>
<conf_default>1</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>4</conf_position>
<conf_start_group>Предстоящие события календаря</conf_start_group>
<conf_end_group>0</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>calendar</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Автоматически скрывать блок событий, если их нет?</conf_title>
<conf_description>Блок предстоящих календарных событий будет скрыт на главной странице форума, если предстоящих событий нет.</conf_description>
<conf_group>28</conf_group>
<conf_type>yes_no</conf_type>
<conf_key>autohide_calendar</conf_key>
<conf_default>1</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>5</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>calendar</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title><![CDATA[Показывать предстоящие события на следующие [x] дней]]></conf_title>
<conf_description>Показывает события, которые произойдут в течение указанного количества дней после текущего дня.</conf_description>
<conf_group>28</conf_group>
<conf_type>input</conf_type>
<conf_key>calendar_limit</conf_key>
<conf_default>5</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>6</conf_position>
<conf_start_group/>
<conf_end_group>1</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>calendar</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title><![CDATA[Начальный год в выпадающем меню &quot;Год&quot; календаря]]></conf_title>
<conf_description>Относится к просмотру календаря/добавлению событий.</conf_description>
<conf_group>28</conf_group>
<conf_type>input</conf_type>
<conf_key>start_year</conf_key>
<conf_default>2008</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>7</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>calendar</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title><![CDATA[Конечный год в выпадающем меню &quot;Год&quot; календаря]]></conf_title>
<conf_description><![CDATA[Относится к просмотру календаря/добавлению событий.<br />Например: если в данный момент начальный год выбран 2008, и если вы введете в эту опцию 5, то можно выбрать любой год календаря на 5 лет вперед с 2008 до 2013 года.]]></conf_description>
<conf_group>28</conf_group>
<conf_type>input</conf_type>
<conf_key>year_limit</conf_key>
<conf_default>5</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>8</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>calendar</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Начать календарь с понедельника?</conf_title>
<conf_description>В некоторых странах неделя начинается с воскресенья, тогда эту опцию можно выключить. В противном случае просто оставьте ее включенной.</conf_description>
<conf_group>28</conf_group>
<conf_type>yes_no</conf_type>
<conf_key>ipb_calendar_mon</conf_key>
<conf_default>1</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>9</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>calendar</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
</settinggroup>
</settingexport>
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<export>
<group>
<row>
<task_id>4</task_id>
<task_title>Кеширование дней рождения и событий</task_title>
<task_file>calendarevents.php</task_file>
<task_next_run>1246348010</task_next_run>
<task_week_day>-1</task_week_day>
<task_month_day>-1</task_month_day>
<task_hour>12</task_hour>
<task_minute>-1</task_minute>
<task_cronkey>90eda65c70d48ffcbb91ac6a693bb001</task_cronkey>
<task_log>1</task_log>
<task_description><![CDATA[Кеширование событий в календаре и дней рождения]]></task_description>
<task_enabled>1</task_enabled>
<task_key>calendarevents</task_key>
<task_safemode>1</task_safemode>
<task_locked>0</task_locked>
<task_application>calendar</task_application>
</row>
</group>
</export>
@@ -0,0 +1,599 @@
<?xml version="1.0" encoding="utf-8"?>
<templates application="calendar" templategroups="a:1:{s:13:&quot;skin_calendar&quot;;s:5:&quot;exact&quot;;}">
<templategroup group="skin_calendar">
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<div class="formsubtitle">{$this->lang->words['cal_birthdays']}</div>
<div class="tablepad">
<ul>
<foreach loop="birthdays:$rows as $r">
<li><a href="{parse url="showuser={$r['uid']}" base="public"}">{$r['uname']}</a> ({$r['age']})</li>
</foreach>
</ul>
</div>]]></template_content>
<template_name>calendarBirthdayList</template_name>
<template_data>$rows</template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[{parse js_module="calendar"}
<script type='text/javascript'>
ipb.calendar.inSection = 'form';
</script>
<div class='post_form'>
<form id='postingform' action="{parse url="app=calendar&module=calendar&amp;do={$code}&amp;cal_id={$calendar_id}&amp;formtype={$formtype}&amp;event_id={$event_id}" base="public"}" method="post" name="REPLIER">
<input type="hidden" name="removeattachid" value="" />
<h2>{$form_title}</h2>
<ul class='topic_options'></ul>
<fieldset>
<h3 class='bar'>{$this->lang->words['event_details']}</h3>
<ul>
<li class='field'>
<label for='event_title'>{$this->lang->words['calendar_title']}</label>
<input type='text' id='event_title' class='input_text' name='event_title' value="{$event_title}" size='50' maxlength='50' />
</li>
<if test="$formtype == 'single'">
<li class='field'>
<label for='e_day'>{$this->lang->words['fv_single']}</label>
<!-- SKINNOTE: Update this to use the calendar picker? -->
<select class='input_select' name="e_day" id='e_day'>{$event_date['nd']}</select>&nbsp;&nbsp;
<select class='input_select' name="e_month">{$event_date['nm']}</select>&nbsp;&nbsp;
<select class='input_select' name="e_year">{$event_date['ny']}</select>
</li>
</if>
<if test="$formtype == 'range'">
<li class='field'>
<label for='e_day'>{$this->lang->words['fv_single']}</label>
<select class='input_select' name="e_day" id='e_day'>{$event_date['nd']}</select>&nbsp;&nbsp;
<select class='input_select' name="e_month">{$event_date['nm']}</select>&nbsp;&nbsp;
<select class='input_select' name="e_year">{$event_date['ny']}</select>
</li>
<li class='field'>
<label for='end_day'>{$this->lang->words['fv_range_ends']}</label>
<select class='input_select' name="end_day" id='end_day'>{$event_date['fd']}</select>&nbsp;&nbsp;
<select class='input_select' name="end_month">{$event_date['fm']}</select>&nbsp;&nbsp;
<select class='input_select' name="end_year">{$event_date['fy']}</select>
</li>
</if>
<if test="$formtype == 'recur'">
<li class='field'>
<label for='e_day'>{$this->lang->words['fv_single']}</label>
<select class='input_select' name="e_day" id='e_day'>{$event_date['nd']}</select>&nbsp;&nbsp;
<select class='input_select' name="e_month">{$event_date['nm']}</select>&nbsp;&nbsp;
<select class='input_select' name="e_year">{$event_date['ny']}</select>
</li>
<li class='field'>
<label for='recur_unit'>{$this->lang->words['fv_recur']}</label>
{$this->lang->words['fv_recur_every']}
<select class='input_select' name="recur_unit" id='recur_unit'>{$event_date['recur_unit']}</select>
{$this->lang->words['fv_until']}
<select class='input_select' name="end_day">{$event_date['fd']}</select>&nbsp;&nbsp;
<select class='input_select' name="end_month">{$event_date['fm']}</select>&nbsp;&nbsp;
<select class='input_select' name="end_year">{$event_date['fy']}</select>
</li>
</if>
<if test="$event_type['timestuff']['formtype'] != 'range'">
<li class='field checkbox'>
<input class='input_check' type='checkbox' id='set_times' name='set_times' {$event_type['timestuff']['checked']} value='1' />
<label for='set_times'>{$this->lang->words['form_set_times']}</label>
</li>
<li class='field time_setting'>
<label for='timezone'>{$this->lang->words['form_tz']}</label>
{$event_type['timezone']}
</li>
<li class='field time_setting'>
<label for='tz_start'>{$this->lang->words['form_timestart']}</label>
<input class='input_text' type='text' size='8' id='tz_start' name='event_timestart' value='{$event_type['timestuff']['timestart']}' />
</li>
</if>
</ul>
<h3 class='bar'>{$this->lang->words['event_options']}</h3>
<ul>
<li class='field'>
<label for='event_calendar_id'>{$this->lang->words['form_whichcal']}</label>
<select name='event_calendar_id' id='event_calendar_id'>{$event_type['dropdown']}</select>
</li>
<li class='field'>
<label for='e_type'>{$this->lang->words['calendar_event_type']}</label>
<select name="e_type" id='e_type'>
<option value="public"{$event_type['pub_select']}>{$this->lang->words['calendar_type_public']}</option>
<option value="private"{$event_type['priv_select']}>{$this->lang->words['calendar_type_private']}</option>
</select>
</li>
<if test="$this->memberData['g_access_cp']">
<li class='field type_setting'>
<label for='e_groups'>{$this->lang->words['calendar_group_filter']}</label>
<select name="e_groups[]" id='e_groups' size="5" multiple='multiple'>{$groups}</select>
</li>
<li class='field checkbox type_setting'>
<input type='checkbox' id='all_groups' value='1' class='input_check' />
<label for='all_groups'>{$this->lang->words['all_groups']}</label>
</if>
</ul>
<script type='text/javascript'>
<if test="$event_type['timestuff']['divhide'] == 'none'">
$$('.time_setting').invoke('hide');
</if>
<if test="$this->memberData['g_access_cp']">
ipb.calendar.hideAdminOptions();
</if>
</script>
<h3 class='bar'>{$this->lang->words['event']}</h3>
<ul>
<li>{$editor}</li>
<li class='field checkbox'>
<input type="checkbox" name="enableemo" class="input_check" value="yes" {$formData['checkBoxes']['emo']} />
<label for='enableemo'>{$this->lang->words['enable_emo']}</label>
</li>
</ul>
</fieldset>
<fieldset class='submit'>
<input class='input_submit' type="submit" value="{$button}" tabindex="4" /> {$this->lang->words['or']} <a href='{parse url="app=calendar&amp;module=calendar&amp;cal_id={$calendar_id}" base="public"}' title='{$this->lang->words['cancel']}' class='cancel'>{$this->lang->words['cancel']}</a>
</fieldset>
</form>
</div>]]></template_content>
<template_name>calendarEventForm</template_name>
<template_data><![CDATA[$code="", $calendar_id="", $formtype="", $event_id='', $event_title='', $form_title='', $event_date='', $event_type='', $groups, $button, $editor]]></template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[{parse js_module="topic"}
<script type="text/javascript">
function calendar_event_delete(id, cal_id)
{
if (confirm('{$this->lang->words['js_del_1']}'))
{
window.location.href = "{$this->settings['base_url']}app=calendar&amp;module=calendar&amp;do=delete&md5check={$this->member->form_hash}&event_id=" + id + "&cal_id=" + cal_id;
}
else {
alert ('{$this->lang->words['js_del_2']}');
}
}
</script>
<!--SKINNOTE: I commented this out because we need to show event titles, and this seemed "prettiest", but feel free to change -->
<!--<h2>{$this->lang->words['cal_title_events']}</h2>
<ul class='topic_options'></ul>-->
{$events}]]></template_content>
<template_name>calendarEventsList</template_name>
<template_data>$events</template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[{parse js_module="calendar"}
<h2>{$this->lang->words['calendars']}</h2>
<div id='calendar_list' class='general_box'>
<if test="is_array( $calendars ) && count( $calendars )">
<p><strong>{$this->lang->words['select_calendar']}</strong></p>
<ol>
<foreach loop="$calendars as $cid => $cal">
<li><a href='{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cid}" base="public"}' title="{$this->lang->words['view_this_calendar']}">{$cal['cal_title']}</a></li>
</foreach>
</ol>
</if>
<form action="{parse url="app=calendar&amp;module=calendar" base="public"}" method="post">
<strong>{$this->lang->words['jump_to']}</strong><br />
<fieldset>
<label for='m' class='hide'>{$this->lang->words['fv_months']}:</label>
<select name="m" class='input_select'><!--IBF.MONTH_BOX--></select>&nbsp;
<label for='year' class='hide'>{$this->lang->words['fv_years']}:</label>
<select name="year" class='input_select'><!--IBF.YEAR_BOX--></select>&nbsp;
<input type='submit' class='input_submit' value='{$this->lang->words['jmp_go']}' />
</fieldset>
</form>
</div>
<div id='current_calendar'>
<div class='topic_controls'>
<ul class='pagination'>
<li><a href="{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cal_id}&amp;m={$prev['month_id']}&amp;y={$prev['year_id']}" base="public"}" title="{$prev['month_name']} {$prev['year_id']}">&larr; {$this->lang->words['month_previous']}</a></li>
<li><a href="{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cal_id}&amp;m={$next['month_id']}&amp;y={$next['year_id']}" base="public"}" title="{$next['month_name']} {$next['year_id']}">{$this->lang->words['month_next']} &rarr;</a></li>
</ul>
<ul class='topic_buttons'>
<li><a href='{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cal_id}&amp;do=newevent&amp;formtype=single" base="public"}' title='{$this->lang->words['se_normal']}'>{parse replacement="cal_single"} {$this->lang->words['event_add_single']}</a></li>
<li><a href='{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cal_id}&amp;do=newevent&amp;formtype=range" base="public"}' title='{$this->lang->words['se_range']}'>{parse replacement="cal_ranged"} {$this->lang->words['event_add_ranged']}</a></li>
<li><a href='{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cal_id}&amp;do=newevent&amp;formtype=recur" base="public"}' title='{$this->lang->words['se_recur']}'>{parse replacement="cal_recurring"} {$this->lang->words['event_add_recurring']}</a></li>
</ul>
</div>
<br />
<table id='calendar_table' class='ipb_table' summary="{$this->lang->words['calendar_for']} $month $year">
<caption>$month $year</caption>
<tr class='header'>
<th class='head_week' scope='col'>&nbsp;</th>
<foreach loop="days:$day_words as $day">
<th scope='col'>{$day}</th>
</foreach>
<!--IBF.DAYS_CONTENT-->
</tr>
</table>
<ul class='pagination'>
<li><a href="{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cal_id}&amp;do=find&amp;what=thismonth" base="public"}">{$this->lang->words['aa_cur_month']}</a></li>
<li><a href="{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cal_id}&amp;do=find&amp;what=thisweek" base="public"}">{$this->lang->words['aa_view_week']}</a></li>
</ul>
</div>
<div id='mini_calendars'>
<!--PREV.MONTH-->
<br />
<!--NEXT.MONTH-->
</div>
<br />]]></template_content>
<template_name>calendarMainContent</template_name>
<template_data><![CDATA[$calendars, $month="",$year="",$prev="",$next="",$cal_jump="",$cal_id="",$day_words=""]]></template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<!--Day-->
<if test="$queued != 0">
<td id='{$js_id}' class="moderated">
<strong>$month_day</strong><a href="{$cal_date_queued}">{parse replacement="t_queued"}</a>
<else />
<td id='{$js_id}'>
<strong>$month_day</strong>
</if>
$events
</td>]]></template_content>
<template_name>cal_date_cell</template_name>
<template_data><![CDATA[$month_day="",$events="",$cal_date_queued="",$queued=0, $js_id]]></template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<!--Day-->
<if test="$queued != 0">
<td id='{$js_id}' class="today moderated">
<strong>$month_day: {$this->lang->words['today_title']}</strong> <a href="{$cal_date_queued}">{parse replacement="t_queued"}</a>
<else />
<td id='{$js_id}' class="today">
<strong>$month_day: {$this->lang->words['today_title']}</strong>
</if>
$events
</td>]]></template_content>
<template_name>cal_date_cell_today</template_name>
<template_data><![CDATA[$month_day="",$events="",$cal_date_queued="",$queued=0, $js_id]]></template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<td id='{$id}'><strong>$day</strong></td>]]></template_content>
<template_name>cal_day_bit</template_name>
<template_data><![CDATA[$day="", $id='']]></template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<li class='post_del'><a href='{parse url="app=calendar&amp;module=calendar&amp;do=delete&amp;md5check={$this->member->form_hash}&amp;event_id=$id&amp;cal_id={$cal_id}" base="public"}' title='{$this->lang->words['calendar_delete_title']}'>{parse replacement="delete_post_icon"} {$this->lang->words['calendar_delete_button']}</a></li>
<li class='post_edit'><a href='{parse url="app=calendar&amp;module=calendar&amp;do=edit&amp;cal_id={$cal_id}&amp;event_id=$id" base="public"}' title='{$this->lang->words['calendar_edit_title']}'>{parse replacement="edit_post_icon"} {$this->lang->words['calendar_edit_button']}</a></li>]]></template_content>
<template_name>cal_edit_del_button</template_name>
<template_data><![CDATA[$id="",$cal_id=""]]></template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<li class='cal'><a href="{parse url="app=calendar&amp;module=calendar&amp;cal_id={$event['event_calendar_id']}&amp;do=showevent&amp;event_id={$event['event_id']}" base="public"}" title='{$this->lang->words['view_event']}'>{$event['event_title']}</a></li>]]></template_content>
<template_name>cal_events_wrap</template_name>
<template_data><![CDATA[$event=""]]></template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<li class='cal'><a href="{parse url="app=calendar&amp;module=calendar&amp;{$url}" base="public"}" title='{$this->lang->words['view_event']}'>{$text}</a></li>]]></template_content>
<template_name>cal_events_wrap_manual</template_name>
<template_data><![CDATA[$url="",$text=""]]></template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<div class="calranged">
<a href="{parse url="app=calendar&amp;module=calendar&amp;cal_id={$event['event_calendar_id']}&amp;do=showevent&amp;event_id={$event['event_id']}" base="public"}" title='{$this->lang->words['view_event']}'>{$event['event_title']}</a>
</div>]]></template_content>
<template_name>cal_events_wrap_range</template_name>
<template_data><![CDATA[$event=""]]></template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<div class="calitem">
<a href="{parse url="app=calendar&amp;module=calendar&amp;cal_id={$event['event_calendar_id']}&amp;do=showevent&amp;event_id={$event['event_id']}" base="public"}" title="{$this->lang->words['tbt_recur']}">{$event['event_title']}</a>
</div>]]></template_content>
<template_name>cal_events_wrap_recurring</template_name>
<template_data><![CDATA[$event=""]]></template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[</tr>
<!-- NEW ROW-->
<php>
$this->row_class = ( $this->row_class == 'row1' ) ? 'row2' : 'row1';
</php>
<tr class='{$this->row_class}'>
<th class='view_week' scope='row'>
<a href="{parse url="app=calendar&amp;module=calendar&amp;cal_id={$this->request['_cal_id']}&amp;do=showweek&amp;week=$week" base="public"}" title="{$this->lang->words['view_this_week']}"><img src="{$this->settings['img_url']}/next.png" alt='{$this->lang->words['icon']}' /></a>
</th>]]></template_content>
<template_name>cal_new_row</template_name>
<template_data><![CDATA[$week=""]]></template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<h2>Event: {$event['event_title']}</h2>
<ul class='topic_options'></ul>
<div class='post_block <if test="$event['event_approved']==0">moderated</if> id='event_id_{$event['event_id']}'>
<div class='post_wrap'>
<if test="$member['member_id']">
<h3>
<else />
<h3 class='guest'>
</if>
<if test="$member['member_id']">
<if test="$member['_online']">
{parse replacement="user_online"}
<else />
{parse replacement="user_offline"}
</if> &nbsp;
<address class="author vcard"><a class="url fn" href='{parse url="showuser={$member['member_id']}" base="public"}' title='{$this->lang->words['view_profile']}'>{$member['members_display_name']}</a>{parse template="user_popup" group="global" params="$member['member_id']"}</address>
<else />
{$member['members_display_name']}
</if>
</h3>
<p class='posted_info'>
<if test="$post['post']['icon_id']">
<img src="{$this->settings['public_dir']}/style_extra/post_icons/icon{$post['post']['icon_id']}.gif" alt="{$this->lang->words['icon']}" />&nbsp;
</if>
<strong class='event'>{$this->lang->words['event_date']} {$event['_start_date']} $date_ends</b> {$event['time']} ($type)</strong>
</p>
<div class='author_info'>
{parse template="userInfoPane" group="global" params="$member, $event['event_id'], array()"}
<!--{$post['author']['warn_text']} {$post['author']['warn_minus']}{$post['author']['warn_add']}-->
</div>
<div class='post_body'>
<div class='post entry-content'>
{$event['event_content']}
</div>
</div>
<ul class='post_controls'>
<if test="($this->settings['disable_reportpost'] != 1) and ( $this->memberData['member_id'] )">
<li class='report'><a href='{parse url="app=core&amp;module=reports&amp;rcom=calendar&amp;event_id={$event['event_id']}" base="public"}' title='{$this->lang->words['report_event']}'>{parse replacement="report_post_icon"} {$this->lang->words['report']}</a></li>
</if>
<!-- SKINNOTE: Add report link back in -->
{$approve_button} {$edit_button}
</ul>
</div>
</div>]]></template_content>
<template_name>cal_show_event</template_name>
<template_data><![CDATA[$event="",$member="",$event_type="",$edit_button="",$approve_button="",$type="",$date_ends=""]]></template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<li class='post_unapprove'><a href="{parse url="app=calendar&amp;module=calendar&amp;do=calendarEventApprove&amp;modfilter={$this->request['modfilter']}&amp;qt={$event['_quicktime']}&amp;approve=0&amp;md5check={$this->member->form_hash}&amp;cal_id={$cal_id}&amp;event_id=$id" base="public"}" title='{$this->lang->words['unapprove_event']}'>{parse replacement="edit_post_icon"} {$this->lang->words['unapprove_event']}</a></li>]]></template_content>
<template_name>cal_unapprove_button</template_name>
<template_data><![CDATA[$id="",$cal_id="",$event=""]]></template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[{parse js_module="calendar"}
<h2>{$this->lang->words['calendars']}</h2>
<div id='calendar_list' class='general_box'>
<if test="is_array( $calendars ) && count( $calendars )">
<p><strong>{$this->lang->words['select_calendar']}</strong></p>
<ol>
<foreach loop="$calendars as $cid => $cal">
<li><a href='{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cid}&amp;do=showweek&amp;week={$this->request['week']}" base="public"}' title="{$this->lang->words['view_this_calendar']}">{$cal['cal_title']}</a></li>
</foreach>
</ol>
</if>
<p>
<form action="{parse url="app=calendar&amp;module=calendar&amp;cal_id={$this->request['_cal_id']}" base="public"}" method="post">
<strong>{$this->lang->words['jump_to']}</strong><br />
<fieldset>
<label for='m' class='hide'>{$this->lang->words['fv_months']}:</label>
<select name="m" class='input_select'><!--IBF.MONTH_BOX--></select>&nbsp;
<label for='year' class='hide'>{$this->lang->words['fv_years']}:</label>
<select name="year" class='input_select'><!--IBF.YEAR_BOX--></select>&nbsp;
<input type='submit' class='input_submit' value='{$this->lang->words['jmp_go']}' />
</fieldset>
</form>
</p>
</div>
<div id='current_calendar'>
<div class='topic_controls'>
<ul class='pagination'>
<li><a href="{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cal_id}&amp;do=showweek&amp;week={$prev['0']}" base="public"}" title="{$prev['month_name']} {$prev['year_id']}">&larr; {$this->lang->words['week_previous']}</a></li>
<li><a href="{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cal_id}&amp;do=showweek&amp;week={$next['0']}" base="public"}" title="{$next['month_name']} {$next['year_id']}">{$this->lang->words['week_next']} &rarr;</a></li>
</ul>
<ul class='topic_buttons'>
<li><a href='{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cal_id}&amp;do=newevent&amp;formtype=single" base="public"}' title='{$this->lang->words['se_normal']}'>{parse replacement="cal_single"} {$this->lang->words['event_add_single']}</a></li>
<li><a href='{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cal_id}&amp;do=newevent&amp;formtype=range" base="public"}' title='{$this->lang->words['se_range']}'>{parse replacement="cal_ranged"} {$this->lang->words['event_add_ranged']}</a></li>
<li><a href='{parse url="app=calendar&amp;module=calendar&amp;cal_id={$cal_id}&amp;do=newevent&amp;formtype=recur" base="public"}' title='{$this->lang->words['se_recur']}'>{parse replacement="cal_recurring"} {$this->lang->words['event_add_recurring']}</a></li>
</ul>
</div>
<br />
<h2>{$this->lang->words['week_beginning']} $date $month $year</h2>
<ol id='week_view'>
<!--IBF.DAYS_CONTENT-->
</ol>
</div>
<div id='mini_calendars'>
<!--PREV.MONTH-->
<br />
<!--THIS.MONTH-->
<br />
<!--NEXT.MONTH-->
</div>]]></template_content>
<template_name>cal_week_content</template_name>
<template_data><![CDATA[$calendars, $date="",$month="",$year="",$prev="",$next="", $cal_id=1]]></template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<php>
$this->week_view = ( $this->week_view == 'row1' ) ? 'row2' : 'row1';
</php>
<li id='day-{$year}_{$mid}_{$date}' class='day {$this->week_view} <if test="$queued != 0">{$this->lang->words['moderated']}</if>'>
<h3 class='bar'>$wday</h3>
<div>
<span class='date altrow'>$date</span>
{$events}
</div>
</li>]]></template_content>
<template_name>cal_week_dayentry</template_name>
<template_data><![CDATA[$wday="",$date="",$month="",$mid="",$year="",$events="",$queued=0]]></template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<div class="divpad">
<b><a href="{parse url="app=calendar&amp;module=calendar&amp;$link" base="public"}">$text</a></b>
</div>]]></template_content>
<template_name>cal_week_events_wrap</template_name>
<template_data><![CDATA[$link="",$text=""]]></template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<li class='month_bar'>
$month $year
</li>]]></template_content>
<template_name>cal_week_monthbar</template_name>
<template_data><![CDATA[$month="",$year=""]]></template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<td>
$month_day
</td>]]></template_content>
<template_name>mini_cal_date_cell</template_name>
<template_data><![CDATA[$month_day="",$events=""]]></template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<td class="today">
<strong>$month_day</strong>
</td>]]></template_content>
<template_name>mini_cal_date_cell_today</template_name>
<template_data><![CDATA[$month_day="",$events=""]]></template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[<!-- <a href="{parse url="app=calendar&module=calendar&amp;cal_id={$this->request['_cal_id']}&amp;m={$mid}&amp;y=$year" base="public"}"> -->
<php>
$this->mini_cal = 'row2';
</php>
<h3>{$month} {$year}</h3>
<table class='mini_cal'>
<tr class='header'>
<th class='head_week'>&nbsp;</th>
<foreach loop="days:$day_words as $day">
<th>{parse expression="IPSText::mbsubstr( $day, 0, 1 )"}</th>
</foreach>
</tr>
{$events}
</table>]]></template_content>
<template_name>mini_cal_mini_wrap</template_name>
<template_data><![CDATA[$month="",$mid="",$year="",$events="",$day_words=""]]></template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_calendar</template_group>
<template_content><![CDATA[</tr>
<!-- NEW ROW-->
<php>
$this->mini_cal = ( $this->mini_cal == 'row1' ) ? 'row2' : 'row1';
</php>
<tr class='{$this->mini_cal}'>
<th class='view_week'>
<a href="{parse url="app=calendar&amp;module=calendar&amp;cal_id={$this->request['_cal_id']}&amp;do=showweek&amp;week=$week" base="public"}" title='{$this->lang->words['view_this_week']}' ><img src="{$this->settings['img_url']}/next.png" alt='{$this->lang->words['icon']}' /></a>
</th>]]></template_content>
<template_name>mini_cal_new_row</template_name>
<template_data><![CDATA[$week=""]]></template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
</templategroup>
</templates>
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<hooks>
<hook>
<file>board_index_calendar.xml</file>
<enabled>0</enabled>
</hook>
</hooks>
@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<hookexport>
<hookdata>
<config>
<hook_name>Календарь</hook_name>
<hook_desc>Выводит на главной странице мини-календарь</hook_desc>
<hook_author>Invision Power Services, Inc.</hook_author>
<hook_email/>
<hook_website>http://</hook_website>
<hook_update_check/>
<hook_requirements><![CDATA[a:4:{s:20:"hook_ipb_version_min";i:3;s:20:"hook_ipb_version_max";i:0;s:20:"hook_php_version_min";s:0:"";s:20:"hook_php_version_max";s:0:"";}]]></hook_requirements>
<hook_version_human>1.0.0</hook_version_human>
<hook_version_long/>
<hook_extra_data><![CDATA[a:1:{s:7:"display";N;}]]></hook_extra_data>
<hook_key>calendar</hook_key>
</config>
</hookdata>
<hookfiles>
<file>
<hook_file_real>boardIndexCalendar.php</hook_file_real>
<hook_type>templateHooks</hook_type>
<hook_classname>boardIndexCalendar</hook_classname>
<hook_data><![CDATA[a:6:{s:15:"classToOverload";N;s:9:"skinGroup";s:11:"skin_boards";s:12:"skinFunction";s:18:"boardIndexTemplate";s:4:"type";s:7:"foreach";s:2:"id";s:11:"side_blocks";s:8:"position";s:9:"outer.pre";}]]></hook_data>
<hooks_source><![CDATA[<?php
class boardIndexCalendar
{
public $registry;
public function __construct()
{
/* Make registry objects */
$this->registry = ipsRegistry::instance();
$this->DB = $this->registry->DB();
$this->settings =& $this->registry->fetchSettings();
$this->lang = $this->registry->getClass('class_localization');
}
public function getOutput()
{
/* Load language */
$this->registry->class_localization->loadLanguageFile( array( 'public_calendar' ) );
/* Load calendar library */
require_once( IPSLib::getAppDir( 'calendar' ) .'/modules_public/calendar/calendars.php' );
$cal = new public_calendar_calendar_calendars( $this->registry );
$cal->makeRegistryShortcuts( $this->registry );
$cal->initCalendar();
/* Return calendar */
return "<div id='mini_calendars' class='calendar_wrap'>". $cal->getMiniCalendar( date('n'), date('Y') ) . '</div><br />';
}
}]]></hooks_source>
</file>
</hookfiles>
<hookextras_settings/>
<hookextras_language/>
<hookextras_modules/>
<hookextras_help/>
<hookextras_templates/>
<hookextras_tasks/>
<hookextras_database_create/>
<hookextras_database_alter/>
<hookextras_database_update/>
<hookextras_database_insert/>
</hookexport>
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<information>
<data>
<name>Календарь</name>
<public_name>Календарь</public_name>
<author>Invision Power Services, Inc.</author>
<description></description>
<ipskey>fa038db69fa627d8e8e034d65f554d1f</ipskey>
<templategroups>
<template match="exact">skin_calendar</template>
</templategroups>
</data>
</information>
@@ -0,0 +1,726 @@
<?xml version="1.0" encoding="utf-8"?>
<languageexport>
<languagegroup>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>calendar_delete_title</word_key>
<word_default>Delete Event</word_default>
<word_custom>Удалить событие</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>event_prefix</word_key>
<word_default>Event:</word_default>
<word_custom>Событие:</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>approve_event</word_key>
<word_default>Approve Event</word_default>
<word_custom>Опубликовать</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>today_title</word_key>
<word_default>TODAY</word_default>
<word_custom>СЕГОДНЯ</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>calendar_delete_button</word_key>
<word_default>Delete</word_default>
<word_custom>Удалить</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>calendar_edit_title</word_key>
<word_default>Edit Event</word_default>
<word_custom>Изменить</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>calendars</word_key>
<word_default>Calendars</word_default>
<word_custom>Календари</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>select_calendar</word_key>
<word_default>Select a calendar to view</word_default>
<word_custom>Выберите календарь</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>view_event</word_key>
<word_default>View event</word_default>
<word_custom>Просмотр события</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>calendar_edit_button</word_key>
<word_default>Edit</word_default>
<word_custom>Изменить</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>view_this_calendar</word_key>
<word_default>View this calendar</word_default>
<word_custom>Просмотр</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>jump_to</word_key>
<word_default>Jump to</word_default>
<word_custom>Перейти к</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>month_previous</word_key>
<word_default>Previous Month</word_default>
<word_custom>Предыдущий месяц</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>month_next</word_key>
<word_default>Next Month</word_default>
<word_custom>Следующий месяц</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>week_previous</word_key>
<word_default>Previous Week</word_default>
<word_custom>Предыдущая неделя</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>week_next</word_key>
<word_default>Next Week</word_default>
<word_custom>Следующая неделя</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>event_add_single</word_key>
<word_default>Add Single Event</word_default>
<word_custom>Однодневное событие</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>event_add_ranged</word_key>
<word_default>Add Ranged Event</word_default>
<word_custom>Многодневное событие</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>event_add_recurring</word_key>
<word_default>Add Recurring Event</word_default>
<word_custom>Повторяющееся событие</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>calendar_for</word_key>
<word_default>Calendar for</word_default>
<word_custom>Календарь для </word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>report_event</word_key>
<word_default>Report event</word_default>
<word_custom>Жалоба</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>view_this_week</word_key>
<word_default>View this week</word_default>
<word_custom>Просмотреть неделю</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>unapprove_event</word_key>
<word_default>Unapprove Event</word_default>
<word_custom>Скрыть</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>week_beginning</word_key>
<word_default>Week beginning</word_default>
<word_custom>Начало недели:</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>event_details</word_key>
<word_default>Event Details</word_default>
<word_custom>Детали</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>event_options</word_key>
<word_default>Event Options</word_default>
<word_custom>Опции</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>form_set_times</word_key>
<word_default><![CDATA[If this is not an all-day event, do you wish to specify a 'start' time?]]></word_default>
<word_custom>Если это событие не действует весь день, вы можете указать начальное время</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>event</word_key>
<word_default>Event</word_default>
<word_custom>Событие</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>form_timestart</word_key>
<word_default>Start Time (HH:MM)</word_default>
<word_custom>Начальное время (ЧЧ:ММ)</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>show_n_events</word_key>
<word_default>(%s) Events</word_default>
<word_custom>(%s) событий</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>form_whichcal</word_key>
<word_default>Add to Calendar</word_default>
<word_custom>Добавить в</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>form_tz</word_key>
<word_default>Event Time Zone</word_default>
<word_custom>Временная зона события</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>all_groups</word_key>
<word_default>All Groups</word_default>
<word_custom>Все группы</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>calendar_group_filter</word_key>
<word_default><![CDATA[Can be viewed by<br /><em>(Admin option)</em>]]></word_default>
<word_custom>Опция администраторов&#13;
(доступна только для публичных событий)</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>calendar_title</word_key>
<word_default>Event Title</word_default>
<word_custom>Заголовок события</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>new_event_mod</word_key>
<word_default><![CDATA[Your event has been posted to the moderation queue and will require approval before it's shown]]></word_default>
<word_custom>Опубликованное вами событие добавлено в список на проверку модератором, только после его одобрения оно будет опубликовано</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>cal_event_delete</word_key>
<word_default>Calendar event removed</word_default>
<word_custom>Календарное событие было удалено</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>calendar_type_public</word_key>
<word_default>Public Event (Viewable by all)</word_default>
<word_custom>Публичное событие (видно всем)</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>calendar_type_private</word_key>
<word_default>Personal Event (Viewable by you only)</word_default>
<word_custom>Приватное событие (видно только вам)</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>calendar_event_type</word_key>
<word_default>Type of Event</word_default>
<word_custom>Тип события</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>calendar_submit</word_key>
<word_default>Add Calendar Event</word_default>
<word_custom>Добавить событие</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>calendar_edit_submit</word_key>
<word_default>Edit Event</word_default>
<word_custom>Изменить событие</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>entry_birthdays</word_key>
<word_default>(%s) Birthdays</word_default>
<word_custom>Именинников: %s</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>post_new_event</word_key>
<word_default>Manage Calendar Event</word_default>
<word_custom>Управление событиями календаря</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>bd_birthday</word_key>
<word_default><![CDATA['s Birthday]]></word_default>
<word_custom>день рождения</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>aa_cur_month</word_key>
<word_default>View Current Month</word_default>
<word_custom>Текущий месяц</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>aa_view_week</word_key>
<word_default>View Current Week</word_default>
<word_custom>Текущая неделя</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>fv_single</word_key>
<word_default>Event On/Starts</word_default>
<word_custom>Дата события</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>fv_range_ends</word_key>
<word_default>Ends</word_default>
<word_custom>Завершить</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>fv_recur</word_key>
<word_default>Recurring Event</word_default>
<word_custom>Повторяющееся событие</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>fv_recur_every</word_key>
<word_default>Every</word_default>
<word_custom> </word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>fv_months</word_key>
<word_default>Month</word_default>
<word_custom>Ежемесячно</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>fv_days</word_key>
<word_default>Week</word_default>
<word_custom>Еженедельно</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>fv_years</word_key>
<word_default>Year</word_default>
<word_custom>Ежегодно</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>fv_until</word_key>
<word_default>Until</word_default>
<word_custom>до</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>tbt_recur</word_key>
<word_default>Recurring Event</word_default>
<word_custom>Повторяющееся событие</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>se_recur</word_key>
<word_default>Recurring Event</word_default>
<word_custom>Повторяющееся событие</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>se_range</word_key>
<word_default>Ranged Event</word_default>
<word_custom>Многодневное событие</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>se_normal</word_key>
<word_default>Single Day Event</word_default>
<word_custom>Событие на один день</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>js_del_2</word_key>
<word_default>Action cancelled</word_default>
<word_custom>Действие отменено</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>se_ends</word_key>
<word_default>ends</word_default>
<word_custom>до</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>js_del_1</word_key>
<word_default>Are you sure you want to delete this event?</word_default>
<word_custom>Вы точно хотите удалить это событие?</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>page_title</word_key>
<word_default>Calendar</word_default>
<word_custom>Календарь</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>cal_birthdays</word_key>
<word_default>Birthdays</word_default>
<word_custom>Дни рождения</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>cal_title_events</word_key>
<word_default>Calendar Events</word_default>
<word_custom>Календарные события</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>new_event_redirect</word_key>
<word_default>Your calendar event has been posted</word_default>
<word_custom>Ваше календарное событие успешно добавлено</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>private_event</word_key>
<word_default>Private Event</word_default>
<word_custom>Приватное событие</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>public_event</word_key>
<word_default>Public Event</word_default>
<word_custom>Публичное событие</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>restricted_event</word_key>
<word_default>Restricted Event</word_default>
<word_custom>Ограниченное событие</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>edit_event_redirect</word_key>
<word_default>the calendar event has been edited</word_default>
<word_custom>календарное событие отредактировано</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>event_date</word_key>
<word_default>Event Date:</word_default>
<word_custom>Дата события:</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>calendar</word_app>
<word_pack>public_calendar</word_pack>
<word_key>moderated</word_key>
<word_default>moderated</word_default>
<word_custom>отмодерирован</word_custom>
<word_default_version>30007</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
</languagegroup>
</languageexport>
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<versions>
<version>
<human>3.0.5</human>
<long>30012</long>
</version>
</versions>
@@ -0,0 +1,81 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Library: Handle public session data
* Last Updated: $Date: 2009-08-31 20:32:10 -0400 (Mon, 31 Aug 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Chat
* @link http://www.iinvisionpower.com
* @since 12th March 2002
* @version $Revision: 5066 $
*
*/
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 publicSessions__chat
{
/**
* Return session variables for this application
*
* current_appcomponent, current_module and current_section are automatically
* stored. This function allows you to add specific variables in.
*
* @access public
* @author Matt Mecham
* @return array
*/
public function getSessionVariables()
{
return array( '1_type' => 'chat',
'1_id' => 1 );
}
/**
* Parse/format the online list data for the records
*
* @access public
* @author Brandon Farber
* @param array Online list rows to check against
* @return array Online list rows parsed
*/
public function parseOnlineEntries( $rows )
{
ipsRegistry::getClass( 'class_localization')->loadLanguageFile( array( 'public_chatsigma' ), 'chat' );
ipsRegistry::getClass( 'class_localization')->loadLanguageFile( array( 'public_chatpara' ), 'chat' );
if( !is_array($rows) OR !count($rows) )
{
return $rows;
}
$final = $rows;
//-----------------------------------------
// Extract the chat data
//-----------------------------------------
foreach( $rows as $row )
{
if( $row['current_appcomponent'] == 'chat' )
{
$row['where_line'] = ipsRegistry::getClass( 'class_localization' )->words['chat_online'];
$row['where_link'] = 'app=chat';
$final[ $row['id'] ] = $row;
}
}
return $final;
}
}
@@ -0,0 +1,28 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Chat core variables
* Last Updated: $LastChangedDate: 2009-07-28 20:26:37 -0400 (Tue, 28 Jul 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Chat
* @link http://www.iinvisionpower.com
* @since 27th January 2004
* @version $Rev: 4948 $
*
*/
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();
}
$_LOAD = array();
$_LOAD['chatting'] = 1;
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,179 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Chat services
* Last Updated: $Date: 2009-02-25 18:07:38 -0500 (Wed, 25 Feb 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Chat
* @link http://www.iinvisionpower.com
* @since 17 February 2003
* @version $Revision: 4106 $
*
*/
if ( ! defined( 'IN_ACP' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly.";
exit();
}
class admin_chat_addonchat_chat extends ipsCommand
{
/**
* Main class entry point
*
* @access public
* @param object ipsRegistry reference
* @return void [Outputs to screen]
*/
public function doExecute( ipsRegistry $registry )
{
//-----------------------------------------
// Load HTML
//-----------------------------------------
$this->html = $this->registry->output->loadTemplate( 'cp_skin_chat' );
$this->registry->class_localization->loadLanguageFile( array( 'admin_chat' ) );
//-----------------------------------------
// Set up stuff
//-----------------------------------------
$this->form_code = $this->html->form_code = 'module=addonchat&amp;section=chat';
$this->form_code_js = $this->html->form_code_js = 'module=addonchat&section=chat';
switch($this->request['do'])
{
case 'chatsettings':
$this->_chatConfig();
break;
case 'chatsave':
$this->_chatSave();
break;
default:
$this->_chatSplash();
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();
}
/**
* Chat splash page
*
* @access private
* @return void [Outputs to screen]
*/
private function _chatSplash()
{
//-----------------------------------------
// Do we have an order number
//-----------------------------------------
if ( $this->settings['chat_account_no'] )
{
$this->_chatConfig();
}
else
{
$this->registry->output->html = $this->html->addonchatKey();
$this->registry->output->showInsideIframe( '' );
}
}
/**
* Save your key to enable chat
*
* @access private
* @return void [Outputs to screen]
*/
private function _chatSave()
{
$acc_number = $this->request['account_no'];
if ( $acc_number == "" )
{
$this->registry->output->showError( $this->lang->words['addon_invalid_key'], 1190 );
}
//-----------------------------------------
// Load libby-do-dah
//-----------------------------------------
require_once( IPSLib::getAppDir( 'core' ).'/modules_admin/tools/settings.php' );
$settings = new admin_core_tools_settings();
$settings->makeRegistryShortcuts( $this->registry );
$settings->html = $this->registry->output->loadTemplate( 'cp_skin_tools', 'core' );
ipsRegistry::getClass('class_localization')->loadLanguageFile( array( 'admin_tools' ), 'core' );
$settings->form_code = $settings->html->form_code = 'module=tools&amp;section=settings';
$settings->form_code_js = $settings->html->form_code_js = 'module=tools&section=settings';
$this->DB->update( 'core_sys_conf_settings', array( 'conf_value' => $acc_number ), "conf_key='chat_account_no'" );
$this->DB->update( 'core_sys_conf_settings', array( 'conf_value' => '' ) , "conf_key='chat04_account_no'" );
$settings->settingsRebuildCache();
$this->DB->update( 'core_sys_module', array( 'sys_module_position' => 2 ), "sys_module_key='parachat'" );
$this->DB->update( 'core_sys_module', array( 'sys_module_position' => 1 ), "sys_module_key='addonchat'" );
$this->cache->rebuildCache( 'module_cache', 'global' );
//-----------------------------------------
// Show config
//-----------------------------------------
$this->_chatConfig();
}
/**
* Show the configuration page
*
* @access private
* @return void [Outputs to screen]
*/
private function _chatConfig()
{
//-----------------------------------------
// Load libby-do-dah
//-----------------------------------------
require_once( IPSLib::getAppDir( 'core' ).'/modules_admin/tools/settings.php' );
$settings = new admin_core_tools_settings();
$settings->makeRegistryShortcuts( $this->registry );
$settings->html = $this->registry->output->loadTemplate( 'cp_skin_tools', 'core' );
ipsRegistry::getClass('class_localization')->loadLanguageFile( array( 'admin_tools' ), 'core' );
$settings->form_code = $settings->html->form_code = 'module=tools&amp;section=settings';
$settings->form_code_js = $settings->html->form_code_js = 'module=tools&section=settings';
//-----------------------------------------
// Did we reset the component?
//-----------------------------------------
if ( ! $this->settings['chat_account_no'] )
{
$this->_chatSplash();
}
$this->request['conf_title_keyword'] = 'chat';
$settings->return_after_save = $this->settings['base_url'] . $this->form_code . '&do=chatsettings';
$settings->_viewSettings();
}
}
@@ -0,0 +1,30 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Chat default section
* Last Updated: $LastChangedDate: 2009-07-28 20:26:37 -0400 (Tue, 28 Jul 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Chat
* @link http://www.iinvisionpower.com
* @since 27th January 2004
* @version $Rev: 4948 $
*
*/
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();
}
/**
* Very simply returns the default section if one is not
* passed in the URL
*/
$DEFAULT_SECTION = 'chat';
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<menu>
<tabitems>
<item>
<title>Manage AddonChat</title>
<subitems>
<subitem>
<subitemtitle>Manage AddonChat</subitemtitle>
<subsection>chat</subsection>
<subitemurl></subitemurl>
<subitemrolekey></subitemrolekey>
<subisredirect>0</subisredirect>
</subitem>
</subitems>
</item>
</tabitems>
</menu>
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,197 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Chat services
* Last Updated: $Date: 2009-02-25 18:07:38 -0500 (Wed, 25 Feb 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Chat
* @link http://www.iinvisionpower.com
* @since 17 February 2003
* @version $Revision: 4106 $
*/
if ( ! defined( 'IN_ACP' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly.";
exit();
}
class admin_chat_parachat_chat extends ipsCommand
{
/**
* Main class entry point
*
* @access public
* @param object ipsRegistry reference
* @return void [Outputs to screen]
*/
public function doExecute( ipsRegistry $registry )
{
//-----------------------------------------
// Load HTML
//-----------------------------------------
$this->html = $this->registry->output->loadTemplate( 'cp_skin_chat' );
$this->registry->class_localization->loadLanguageFile( array( 'admin_chat' ) );
//-----------------------------------------
// Set up stuff
//-----------------------------------------
$this->form_code = $this->html->form_code = 'module=parachat&amp;section=chat';
$this->form_code_js = $this->html->form_code_js = 'module=parachat&section=chat';
switch($this->request['do'])
{
case 'chatsettings':
$this->_chatConfig();
break;
case 'chatsave':
$this->_chatSave();
break;
default:
case 'ipchat04':
$this->request[ 'code'] = 'show' ;
$this->_chatSplash();
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();
}
/**
* Chat splash page
*
* @access private
* @return void [Outputs to screen]
*/
private function _chatSplash()
{
//-----------------------------------------
// Do we have an order number
//-----------------------------------------
if ( $this->settings['chat04_account_no'] )
{
$this->_chatConfig();
}
else
{
$this->registry->output->html = $this->html->parachatKey();
$this->registry->output->showInsideIframe( '' );
}
}
/**
* Save your key to enable chat
*
* @access private
* @return void [Outputs to screen]
*/
private function _chatSave()
{
$acc_number = $this->request['account_no'];
if ( $acc_number == "" )
{
$this->registry->output->showError( $this->lang->words['para_invalid_key'], 1193 );
}
//-----------------------------------------
// Load libby-do-dah
//-----------------------------------------
require_once( IPSLib::getAppDir( 'core' ).'/modules_admin/tools/settings.php' );
$settings = new admin_core_tools_settings();
$settings->makeRegistryShortcuts( $this->registry );
$settings->html = $this->registry->output->loadTemplate( 'cp_skin_tools', 'core' );
ipsRegistry::getClass('class_localization')->loadLanguageFile( array( 'admin_tools' ), 'core' );
$settings->form_code = $settings->html->form_code = 'module=tools&amp;section=settings';
$settings->form_code_js = $settings->html->form_code_js = 'module=tools&section=settings';
$this->DB->update( 'core_sys_conf_settings', array( 'conf_value' => $acc_number ), "conf_key='chat04_account_no'" );
$this->DB->update( 'core_sys_conf_settings', array( 'conf_value' => '' ) , "conf_key='chat_account_no'" );
$settings->settingsRebuildCache();
$this->DB->update( 'core_sys_module', array( 'sys_module_position' => 1 ), "sys_module_key='parachat'" );
$this->DB->update( 'core_sys_module', array( 'sys_module_position' => 2 ), "sys_module_key='addonchat'" );
$this->cache->rebuildCache( 'module_cache', 'global' );
//-----------------------------------------
// Show config
//-----------------------------------------
$this->_chatConfig();
}
/**
* Show the configuration page
*
* @access private
* @return void [Outputs to screen]
*/
private function _chatConfig()
{
//-----------------------------------------
// Load libby-do-dah
//-----------------------------------------
require_once( IPSLib::getAppDir( 'core' ).'/modules_admin/tools/settings.php' );
$settings = new admin_core_tools_settings();
$settings->makeRegistryShortcuts( $this->registry );
$settings->html = $this->registry->output->loadTemplate( 'cp_skin_tools', 'core' );
ipsRegistry::getClass('class_localization')->loadLanguageFile( array( 'admin_tools' ), 'core' );
$settings->form_code = $settings->html->form_code = 'module=tools&amp;section=settings';
$settings->form_code_js = $settings->html->form_code_js = 'module=tools&section=settings';
//-----------------------------------------
// Did we reset the component?
//-----------------------------------------
if ( ! $this->settings['chat04_account_no'] )
{
$this->_chatSplash();
}
else
{
//-----------------------------------------
// Update version 6 or 7
//-----------------------------------------
if ( preg_match( "#^\d#", $this->settings['chat04_account_no'] ) )
{
$this->DB->update( 'core_sys_conf_settings', array( 'conf_value' => 7 ), "conf_key='parachat_version'" );
}
else
{
$this->DB->update( 'core_sys_conf_settings', array( 'conf_value' => 6 ), "conf_key='parachat_version'" );
}
$settings->settingsRebuildCache();
}
$this->request['conf_title_keyword'] = 'chat04';
$settings->return_after_save = $this->settings['base_url'] . $this->form_code . '&do=chatsettings';
$settings->_viewSettings();
}
}
@@ -0,0 +1,30 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Chat default section
* Last Updated: $LastChangedDate: 2009-07-28 20:26:37 -0400 (Tue, 28 Jul 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Chat
* @link http://www.iinvisionpower.com
* @since 27th January 2004
* @version $Rev: 4948 $
*
*/
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();
}
/**
* Very simply returns the default section if one is not
* passed in the URL
*/
$DEFAULT_SECTION = 'chat';
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<menu>
<tabitems>
<item>
<title>Manage ParaChat</title>
<subitems>
<subitem>
<subitemtitle>Manage ParaChat</subitemtitle>
<subsection>chat</subsection>
<subitemurl></subitemurl>
<subitemrolekey></subitemrolekey>
<subisredirect>0</subisredirect>
</subitem>
</subitems>
</item>
</tabitems>
</menu>
@@ -0,0 +1,136 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Chat services
* Last Updated: $Date: 2009-05-12 10:54:26 -0400 (Tue, 12 May 2009) $
*
* @author $Author: josh $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Chat
* @link http://www.iinvisionpower.com
* @since Fir 12th Aug 2005
* @version $Revision: 4634 $
*/
if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'.";
exit();
}
class public_chat_addonchat_chat extends ipsCommand
{
/**
* Main class entry point
*
* @access public
* @param object ipsRegistry reference
* @return void [Outputs to screen]
*/
public function doExecute( ipsRegistry $registry )
{
//-----------------------------------------
// Load HTML and LANG
//-----------------------------------------
ipsRegistry::getClass( 'class_localization')->loadLanguageFile( array( 'public_chataddon' ) );
if ( ! $this->settings['chat_account_no'] )
{
$this->registry->output->showError( 'no_chat_account_number', 1090 );
}
//-----------------------------------------
// Get extra settings
//-----------------------------------------
$this->DB->build( array( 'select' => 'conf_key,conf_value,conf_default', 'from' => 'core_sys_conf_settings', 'where' => "conf_key LIKE 'chat%'" ) );
$this->DB->execute();
while( $r = $this->DB->fetch() )
{
$value = $r['conf_value'] != "" ? $r['conf_value'] : $r['conf_default'];
$this->settings[ $r['conf_key']] = $value ;
}
//-----------------------------------------
// Can this group access chat?
//-----------------------------------------
if( $this->settings['chat_access_groups'] )
{
$access_groups = explode( ",", $this->settings['chat_access_groups'] );
$my_groups = array( $this->memberData['member_group_id'] );
if( $this->memberData['mgroup_others'] )
{
$my_groups = array_merge( $my_groups, explode( ",", IPSText::cleanPermString( $this->memberData['mgroup_others'] ) ) );
}
$access_allowed = 0;
foreach( $my_groups as $group_id )
{
if( in_array( $group_id, $access_groups ) )
{
$access_allowed = 1;
}
}
if( !$access_allowed )
{
$this->registry->output->showError( 'no_chat_access', 1091 );
}
}
//-----------------------------------------
// Got address?
//-----------------------------------------
if ( ! $this->settings['chat_server_addr'] )
{
$this->settings['chat_server_addr'] = '';
}
//-----------------------------------------
// Server
//-----------------------------------------
$this->settings['chat_server_addr'] = str_replace( 'http://', '', $this->settings['chat_server_addr'] );
//-----------------------------------------
// Details
//-----------------------------------------
$width = $this->settings['chat_width'] ? $this->settings['chat_width'] : 600;
$height = $this->settings['chat_height'] ? $this->settings['chat_height'] : 350;
$lang = $this->settings['chat_language'] ? $this->settings['chat_language'] : 'en';
$user = "";
$pass = "";
//-----------------------------------------
// Got ID?
//-----------------------------------------
if ( $this->memberData['member_id'] )
{
$user = $this->memberData['members_display_name'];
$member = IPSMember::load( $this->memberData['email'] );
$pass = $member['members_pass_hash'];
}
$this->output .= $this->registry->getClass('output')->getTemplate('chatsigma')->chat_inline( $this->settings['chat_server_addr'], preg_replace( "/.+?\-(\d+)$/", "\\1", $this->settings['chat_account_no'] ), $lang, $width, $height, $user, $pass);
$this->registry->output->addNavigation( $this->lang->words['live_chat'], '' );
$this->registry->output->setTitle( $this->lang->words['live_chat'] );
$this->registry->output->addContent( $this->output );
$this->registry->output->sendOutput();
}
}
@@ -0,0 +1,30 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Chat default section
* Last Updated: $LastChangedDate: 2009-02-04 15:03:59 -0500 (Wed, 04 Feb 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Chat
* @link http://www.iinvisionpower.com
* @since 27th January 2004
* @version $Rev: 3887 $
*
*/
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();
}
/**
* Very simply returns the default section if one is not
* passed in the URL
*/
$DEFAULT_SECTION = 'chat';
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,30 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Chat default section
* Last Updated: $LastChangedDate: 2009-02-04 15:03:59 -0500 (Wed, 04 Feb 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Chat
* @link http://www.iinvisionpower.com
* @since 27th January 2004
* @version $Rev: 3887 $
*
*/
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();
}
/**
* Very simply returns the default section if one is not
* passed in the URL
*/
$DEFAULT_SECTION = 'update';
@@ -0,0 +1,101 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Chat services
* Last Updated: $Date: 2009-02-04 15:03:59 -0500 (Wed, 04 Feb 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Chat
* @link http://www.iinvisionpower.com
* @since Fir 12th Aug 2005
* @version $Revision: 3887 $
*/
if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'.";
exit();
}
class public_chat_ajax_update extends ipsAjaxCommand
{
/**
* Main class entry point
*
* @access public
* @param object ipsRegistry reference
* @return void [Outputs to screen]
*/
public function doExecute( ipsRegistry $registry )
{
//-----------------------------------------
// Got sess ID and mem ID?
//-----------------------------------------
if ( ! $this->member->getProperty('member_id') )
{
$this->returnString( "no" );
}
//-----------------------------------------
// Two hours of not doing anything...
//-----------------------------------------
if ( $this->member->getProperty('last_activity') < ( time() - 7200 ) )
{
$this->returnString( "no" );
}
$tmp_cache = $this->cache->getCache('chatting');
$new_cache = array();
//-----------------------------------------
// Goforit
//-----------------------------------------
if ( is_array( $tmp_cache ) and count( $tmp_cache ) )
{
foreach( $tmp_cache as $id => $data )
{
//-----------------------------------------
// Not hit in 2 mins?
//-----------------------------------------
if ( $data['updated'] < ( time() - 120 ) )
{
continue;
}
if ( $id == $this->member->getProperty('member_id') )
{
continue;
}
$new_cache[ $id ] = $data;
}
}
//-----------------------------------------
// Add in us
//-----------------------------------------
$new_cache[ $this->member->getProperty('member_id') ] = array( 'updated' => time(), 'name' => $this->member->getProperty('members_display_name') );
//-----------------------------------------
// Update cache
//-----------------------------------------
$this->cache->setCache( 'chatting', $new_cache, array( 'donow' => 1, 'array' => 1 ) );
//-----------------------------------------
// Something to return
//-----------------------------------------
$this->returnString( "ok" );
}
}
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,273 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Chat services
* Last Updated: $Date: 2009-10-09 17:54:39 -0400 (Fri, 09 Oct 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Chat
* @link http://www.iinvisionpower.com
* @since Fir 12th Aug 2005
* @version $Revision: 5219 $
*/
if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'.";
exit();
}
class public_chat_parachat_chat extends ipsCommand
{
/**
* Main class entry point
*
* @access public
* @param object ipsRegistry reference
* @return void [Outputs to screen]
*/
public function doExecute( ipsRegistry $registry )
{
//-----------------------------------------
// Load HTML and LANG
//-----------------------------------------
ipsRegistry::getClass( 'class_localization')->loadLanguageFile( array( 'public_chatpara' ) );
if ( ! $this->settings['chat04_account_no'] )
{
$this->registry->output->showError( 'no_chat_account_number', 1092 );
}
//-----------------------------------------
// Get extra settings
//-----------------------------------------
$this->DB->build( array( 'select' => 'conf_key,conf_value,conf_default', 'from' => 'core_sys_conf_settings', 'where' => "conf_key LIKE 'chat04%'" ) );
$this->DB->execute();
while( $r = $this->DB->fetch() )
{
$value = $r['conf_value'] != "" ? $r['conf_value'] : $r['conf_default'];
$this->settings[ $r['conf_key']] = $value ;
}
if( $this->settings['chat04_access_groups'] )
{
$access_groups = explode( ",", $this->settings['chat04_access_groups'] );
$my_groups = array( $this->memberData['member_group_id'] );
if( $this->memberData['mgroup_others'] )
{
$my_groups = array_merge( $my_groups, explode( ",", IPSText::cleanPermString( $this->memberData['mgroup_others'] ) ) );
}
$access_allowed = 0;
foreach( $my_groups as $group_id )
{
if( in_array( $group_id, $access_groups ) )
{
$access_allowed = 1;
}
}
if( !$access_allowed )
{
$this->registry->output->showError( 'no_chat_access', 1093 );
}
}
//-----------------------------------------
// Width and Height
//-----------------------------------------
$width = $this->settings['chat04_width'] ? $this->settings['chat04_width'] : 600;
$height = $this->settings['chat04_height'] ? $this->settings['chat04_height'] : 350;
//-----------------------------------------
// v6 < specifics
//-----------------------------------------
if ( intval($this->settings['parachat_version']) < 7 )
{
//-----------------------------------------
// Got room?
//-----------------------------------------
if ( ! $this->settings['chat04_default_room'] )
{
$this->registry->output->showError( 'no_chat_default_room', 1094 );
}
//-----------------------------------------
// Got service type?
//-----------------------------------------
if ( ! $this->settings['chat04_servicetype'] )
{
$this->registry->output->showError( 'no_chat_service_type', 1095 );
}
//-----------------------------------------
// Make sure it has #
//-----------------------------------------
$this->settings[ 'chat04_default_room'] = '#' . str_replace( '#', '', $this->settings['chat04_default_room'] );
//-----------------------------------------
// Get service library
//-----------------------------------------
$CHAT_SERVER = array(
'advanced' => '',
'premium' => '',
);
$CHAT_FOLDER = array(
'advanced' => 'pca',
'premium' => 'pcp',
);
$CHAT_ONLINELIST = array(
'advanced' => 'cgi-bin/userlist/advanced/group.cgi?group=',
'premium' => 'cgi-bin/userlist/premium/group.cgi?group=',
);
$server = $this->settings['parachat_codebase_url'] ? $this->settings['parachat_codebase_url'] : 'http://'. $CHAT_SERVER[ $this->settings['chat04_servicetype'] ].'/'. $CHAT_FOLDER[ $this->settings['chat04_servicetype'] ];
//-----------------------------------------
// Lang?
//-----------------------------------------
$this->settings[ 'chat04_default_lang'] = ( $this->settings['chat04_default_lang'] == "" ? 'english.conf' : $this->settings['chat04_default_lang'] );
//-----------------------------------------
// Text mode
//-----------------------------------------
$this->settings[ 'chat04_plainmode'] = ( $this->settings['chat04_plainmode'] ? 'PlainText' : 'MegaText' );
//-----------------------------------------
// Style options..
//-----------------------------------------
$style = array(
'applet_bg' => $this->settings['chat04_style_applet_bg'] ? str_replace( '#', '', $this->settings['chat04_style_applet_bg'] ) : 'BCD0ED',
'applet_fg' => $this->settings['chat04_style_applet_fg'] ? str_replace( '#', '', $this->settings['chat04_style_applet_fg'] ) : '345487',
'window_bg' => $this->settings['chat04_style_window_bg'] ? str_replace( '#', '', $this->settings['chat04_style_window_bg'] ) : 'F5F9FD',
'window_fg' => $this->settings['chat04_style_window_fg'] ? str_replace( '#', '', $this->settings['chat04_style_window_fg'] ) : '345487',
'font_size' => $this->settings['chat04_style_font_size'] ? str_replace( '#', '', $this->settings['chat04_style_font_size'] ) : '11',
);
//-----------------------------------------
// Show chat..
//-----------------------------------------
$template = 'legacy';
$options = array(
'server' => $server,
'account' => $this->settings['chat04_account_no'],
'room' => $this->settings['chat04_default_room'],
'width' => $width,
'height' => $height,
'language' => $this->settings['chat04_default_lang'],
'plainmode' => $this->settings['chat04_plainmode'],
'style' => $style,
);
}
else
{
//-----------------------------------------
// Show chat..
//-----------------------------------------
$server = $this->settings['parachat_codebase_url'] ? $this->settings['parachat_codebase_url'] : "";
$room = $this->settings['chat04_default_room'] ? $this->settings['chat04_default_room'] : "Lobby";
if ( strstr( strtolower( $this->settings['chat04_default_room'] ), 'lobby_' ) )
{
$room = 'Lobby';
}
$template = 'current';
$options = array(
'server' => $server,
'account' => $this->settings['chat04_account_no'],
'room' => $room,
'width' => $width,
'height' => $height,
);
}
$this->output .= $this->registry->getClass('output')->getTemplate('chatpara')->chat_inline( $template, $options );
//-----------------------------------------
// Show chat..
//-----------------------------------------
$this->output = str_replace( '<!--AUTOLOGIN-->' , $this->_autoLogin(), $this->output );
$this->output = str_replace( '<!--CUSTOMPARAM-->', $this->settings['chat04_customparams'], $this->output );
$this->registry->output->addNavigation( $this->lang->words['live_chat'], '' );
$this->registry->output->setTitle( $this->lang->words['live_chat'] );
$this->registry->output->addContent( $this->output );
$this->registry->output->sendOutput();
}
/**
* Autologin
*
* @access private
* @return string HTML autologin content
*/
private function _autoLogin()
{
if ( $this->memberData['member_id'] )
{
$member = IPSMember::load( $this->memberData['email'] );
$pass = $member['members_pass_hash'];
$tmpname = $this->memberData['members_display_name'];
$namearray = array();
$name = "";
//-----------------------------------------
// Okay, we need to safe format this name
//-----------------------------------------
$tmpname = preg_replace( "#\s#", "_", $tmpname );
$tmpname = preg_replace( "#(?:[^\w\d\_])#is", "-", $tmpname );
if ( intval( $this->settings['parachat_version'] ) > 6 )
{
$return ="<param name=\"Ctrl.AutoLogin\" value=\"true\">
<param name=\"Net.User\" value=\"".$tmpname."\">
<param name=\"Net.UserPass\" value=\"".urlencode("md5pass({$pass})" . $this->memberData['member_id'] . "")."\">\n";
}
else
{
$return = "<param name='ctrl.LoginOnLoad' value='true'>\n".
"<param name='ctrl.Nickname' value='".$tmpname."'>\n".
"<param name='ctrl.RealName' value='".$this->memberData['members_display_name']."'>\n".
"<param name='ctrl.Password' value='".urlencode("md5pass({$pass})" . $this->memberData['member_id'] . "")."'>\n";
}
return $return;
}
else
{
return '';
}
}
}
@@ -0,0 +1,30 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Chat default section
* Last Updated: $LastChangedDate: 2009-02-04 15:03:59 -0500 (Wed, 04 Feb 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Chat
* @link http://www.iinvisionpower.com
* @since 27th January 2004
* @version $Rev: 3887 $
*
*/
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();
}
/**
* Very simply returns the default section if one is not
* passed in the URL
*/
$DEFAULT_SECTION = 'chat';
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,97 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Chat skin file
* Last Updated: $Date: 2009-09-30 10:45:37 -0400 (Wed, 30 Sep 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Chat
* @link http://www.iinvisionpower.com
* @since Friday 19th May 2006 17:33
* @version $Revision: 5183 $
*/
class cp_skin_chat extends output
{
/**
* Prevent our main destructor being called by this class
*
* @access public
* @return void
*/
public function __destruct()
{
}
/**
* Enter parachat key
*
* @access public
* @return string HTML
*/
public function parachatKey() {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<div class='section_title'>
<h2>{$this->lang->words['para_help_title']}</h2>
</div>
<form action='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=chatsave' method='post'>
<table style='background:#005' width='100%' cellpadding=4 cellspacing=0 border=0 align='center'>
<tr>
<td valign='middle' align='left' width='45%'>
<b style='color:white'>{$this->lang->words['ordered_ipchat']}</b>
<input type='text' size=35 name='account_no' value='{$this->lang->words['enter_siteid']}' onclick="this.value='';">
<input type='submit' class='realdarkbutton' value='{$this->lang->words['btn_continue']}'>
</td>
<td valign='middle' align='left'><a style='color:white' href='' target='_blank'>{$this->lang->words['free_evaluation']}</a></td>
</tr>
</table>
</form>
EOF;
//--endhtml--//
return $IPBHTML;
}
/**
* Enter addonchat key
*
* @access public
* @return string HTML
*/
public function addonchatKey() {
$IPBHTML = "";
//--starthtml--//
$IPBHTML .= <<<EOF
<div class='section_title'>
<h2>{$this->lang->words['addon_help_title']}</h2>
</div>
<form action='{$this->settings['base_url']}&amp;{$this->form_code}&amp;do=chatsave' method='post'>
<table style='background:#005' width='100%' cellpadding=4 cellspacing=0 border=0 align='center'>
<tr>
<td valign='middle' align='left'><b style='color:white'>{$this->lang->words['own_addonchat']}</b></td>
<td valign='middle' align='left'><input type='text' size=35 name='account_no' value='{$this->lang->words['enter_chatid']}' onclick="this.value='';"></td>
<td valign='middle' align='left'><input type='submit' class='realdarkbutton' value='{$this->lang->words['btn_continue']}'></td>
</tr>
</table>
</form>
EOF;
//--endhtml--//
return $IPBHTML;
}
}
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,105 @@
<?xml version="1.0" encoding="utf-8"?>
<languageexport>
<languagegroup>
<lang>
<word_app>chat</word_app>
<word_pack>admin_chat</word_pack>
<word_key>enter_chatid</word_key>
<word_default>enter your AddonChat Account ID here...</word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>chat</word_app>
<word_pack>admin_chat</word_pack>
<word_key>free_evaluation</word_key>
<word_default>Free Instant Evaluation</word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>chat</word_app>
<word_pack>admin_chat</word_pack>
<word_key>ordered_ipchat</word_key>
<word_default>Ordered IP Chat?</word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>chat</word_app>
<word_pack>admin_chat</word_pack>
<word_key>enter_siteid</word_key>
<word_default>enter your Site ID here...</word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>chat</word_app>
<word_pack>admin_chat</word_pack>
<word_key>btn_continue</word_key>
<word_default>Continue...</word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>chat</word_app>
<word_pack>admin_chat</word_pack>
<word_key>own_addonchat</word_key>
<word_default>Own AddOn Chat?</word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>chat</word_app>
<word_pack>admin_chat</word_pack>
<word_key>para_help_title</word_key>
<word_default>Invision Power Chat (ParaChat)</word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>chat</word_app>
<word_pack>admin_chat</word_pack>
<word_key>para_invalid_key</word_key>
<word_default>Sorry, that is not a valid IP Chat account number</word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>chat</word_app>
<word_pack>admin_chat</word_pack>
<word_key>addon_invalid_key</word_key>
<word_default>Sorry, that is not a valid IP Chat account number</word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>chat</word_app>
<word_pack>admin_chat</word_pack>
<word_key>addon_help_title</word_key>
<word_default>Invision Power Chat (AddonChat)</word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
</languagegroup>
</languageexport>
@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="utf-8"?>
<templates application="chat" templategroups="a:1:{s:9:&quot;skin_chat&quot;;s:8:&quot;contains&quot;;}">
<templategroup group="skin_chatsigma">
<template>
<template_group>skin_chatsigma</template_group>
<template_content><![CDATA[<script type="text/javascript">
//<!#^#|CDATA|
<!-- // Hide JS from HTML Validator
// Added like this to allow those without JS to still function nicely.
var chat_display = "{$this->settings['chat_display']}";
var chat_pad = parseInt( "{$this->settings['chat_poppad']}" );
var chat_height = parseInt( "{$this->settings['chat_height']}" );
var chat_width = parseInt( "{$this->settings['chat_width']}" );
var popped = parseInt( "{$this->request['pop']}" );
var chat_tol;
var chat_tol_time = 60 * 1000; // 60 seconds
chat_pad = chat_pad ? chat_pad : 50;
chat_height += chat_pad;
chat_width += chat_pad;
if ( chat_display != 'self' && popped != 1 )
{
window.open( ipb_var_base_url + 'autocom=chatsigma&pop=1','Chat','width='+chat_width+',height='+chat_height+',resizable=yes,scrollbars=yes');
// Bounce back to board index
locationjump();
}
//|#^#]>
//-->
</script>
<div class="borderwrap">
<div class="maintitle"><{CAT_IMG}>&nbsp;{$this->lang->words['chat_title']}</div>
<div class="tablepad" align="center">
<div style='border:8px outset #BCD0ED;width:{$w}px;' id="chatwrap">
<applet codebase="http://{$server}/current/" code="Client.class" archive="scclient_$lang.zip" width="$w" height="$h" MAYSCRIPT>
<param name="room" value="$acc_no">
<param name="cabbase" value="scclient_$lang.cab">
<param name="username" value="$user">
<param name="password" value="$pass">
<param name="autologin" value="yes">
</applet>
</div>
</div>
</div>
<br />
<div class="borderwrap">
<div class="maintitle"><{CAT_IMG}>&nbsp;{$this->lang->words['chat_help']}</div>
<div class="tablepad">
{$this->lang->words['chat_help_text']}
</div>
</div>
<script type="text/javascript">
//<!#^#|CDATA|
// Set timeout loop to update session's table.
if ( use_enhanced_js )
{
chat_ping_session();
}
function chat_ping_session()
{
do_request_function = function()
{
if ( ! xmlobj.readystate_ready_and_ok() )
{
return;
}
var returned = xmlobj.xmlhandler.responseText;
if ( returned == 'ok' )
{
chat_tol = setTimeout( 'chat_ping_session()', chat_tol_time );
}
}
xmlobj = new ajax_request();
xmlobj.onreadystatechange( do_request_function );
xmlobj.process( ipb_var_base_url + 'autocom=chatsigma&do=update' );
}
//|#^#]>
</script>]]></template_content>
<template_name>chat_inline</template_name>
<template_data><![CDATA[$server="",$acc_no="",$lang="",$w="",$h="",$user="",$pass=""]]></template_data>
<template_updated>1260269079</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
</templategroup>
</templates>
@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="utf-8"?>
<moduleexport>
<modulegroup>
<module>
<sys_module_title>ParaChat</sys_module_title>
<sys_module_application>chat</sys_module_application>
<sys_module_key>parachat</sys_module_key>
<sys_module_description>Use the ParaChat chat service</sys_module_description>
<sys_module_version>1.0.0</sys_module_version>
<sys_module_parent/>
<sys_module_protected>0</sys_module_protected>
<sys_module_visible>1</sys_module_visible>
<sys_module_tables/>
<sys_module_hooks/>
<sys_module_position>0</sys_module_position>
<sys_module_admin>0</sys_module_admin>
</module>
<module>
<sys_module_title>Addon Chat</sys_module_title>
<sys_module_application>chat</sys_module_application>
<sys_module_key>addonchat</sys_module_key>
<sys_module_description>Use the Addon Chat chat service</sys_module_description>
<sys_module_version>1.0.0</sys_module_version>
<sys_module_parent/>
<sys_module_protected>0</sys_module_protected>
<sys_module_visible>1</sys_module_visible>
<sys_module_tables/>
<sys_module_hooks/>
<sys_module_position>0</sys_module_position>
<sys_module_admin>0</sys_module_admin>
</module>
<module>
<sys_module_title>ParaChat</sys_module_title>
<sys_module_application>chat</sys_module_application>
<sys_module_key>parachat</sys_module_key>
<sys_module_description/>
<sys_module_version>1.0.0</sys_module_version>
<sys_module_parent/>
<sys_module_protected>1</sys_module_protected>
<sys_module_visible>1</sys_module_visible>
<sys_module_tables/>
<sys_module_hooks/>
<sys_module_position>0</sys_module_position>
<sys_module_admin>1</sys_module_admin>
</module>
<module>
<sys_module_title>AddonChat</sys_module_title>
<sys_module_application>chat</sys_module_application>
<sys_module_key>addonchat</sys_module_key>
<sys_module_description/>
<sys_module_version>1.0.0</sys_module_version>
<sys_module_parent/>
<sys_module_protected>1</sys_module_protected>
<sys_module_visible>1</sys_module_visible>
<sys_module_tables/>
<sys_module_hooks/>
<sys_module_position>0</sys_module_position>
<sys_module_admin>1</sys_module_admin>
</module>
<module>
<sys_module_title>AddonChat</sys_module_title>
<sys_module_application>chat</sys_module_application>
<sys_module_key>addonchat</sys_module_key>
<sys_module_description/>
<sys_module_version>1.0.0</sys_module_version>
<sys_module_parent/>
<sys_module_protected>1</sys_module_protected>
<sys_module_visible>1</sys_module_visible>
<sys_module_tables/>
<sys_module_hooks/>
<sys_module_position>0</sys_module_position>
<sys_module_admin>1</sys_module_admin>
</module>
</modulegroup>
</moduleexport>
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<css>
<cssfile>
<css_set_id>0</css_set_id>
<css_updated>1260269066</css_updated>
<css_group>ipchat</css_group>
<css_content>#parachat, #parachat_help
{
background: #eef3f8;
padding: 4px;
}
#parachat {
padding-top: 10px;
padding-bottom: 10px;
text-align: center;
}
#parachat_help {
}</css_content>
<css_position>1</css_position>
<css_app>chat</css_app>
<css_app_hide>1</css_app_hide>
<css_attributes><![CDATA[title="Main" media="screen"]]></css_attributes>
<css_removed>0</css_removed>
<css_modules/>
<css_user_added>0</css_user_added>
<css_user_edited>0</css_user_edited>
</cssfile>
</css>
@@ -0,0 +1,178 @@
<?xml version="1.0" encoding="utf-8"?>
<templates application="chat" templategroups="a:1:{s:9:&quot;skin_chat&quot;;s:8:&quot;contains&quot;;}">
<templategroup group="skin_chatpara">
<template>
<template_group>skin_chatpara</template_group>
<template_content><![CDATA[{parse js_module="chat"}
<h2>{$this->lang->words['parachat_title']}</h2>
<div class='generic_bar'></div>
<div id='parachat'>
{parse template="$template" group="chatpara" params="$options"}
</div>
<h2>{$this->lang->words['parachat_help']}</h2>
<div class='generic_bar'></div>
<div id='parachat_help'>
{$this->lang->words['parachat_help_text']}
</div>]]></template_content>
<template_name>chat_inline</template_name>
<template_data>$template, $options</template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_chatpara</template_group>
<template_content><![CDATA[<script type="text/javascript">
//<!#^#|CDATA|
// Added like this to allow those without JS to still function nicely.
var chat_display = "{$this->settings['chat04_display']}";
var chat_pad = parseInt( "{$this->settings['chat04_poppad']}" );
var chat_height = parseInt( "{$this->settings['chat04_height']}" );
var chat_width = parseInt( "{$this->settings['chat04_width']}" );
var popped = parseInt( "{$this->request['pop']}" );
var chat_tol;
var chat_tol_time = 60 * 1000; // 60 seconds
chat_pad = chat_pad ? chat_pad : 50;
chat_height += chat_pad;
chat_width += chat_pad;
if ( chat_display != 'self' && popped != 1 )
{
if ( window.open( ipb_var_base_url + 'autocom=chatpara&pop=1','Chat','width='+chat_width+',height='+chat_height+',resizable=yes,scrollbars=yes') )
{
// Bounce back to board index
locationjump();
}
}
//|#^#]>
</script>
<div class="borderwrap">
<div class="maintitle"><{CAT_IMG}>&nbsp;{$this->lang->words['chat_title']}</div>
<div class="tablepad" align="center">
<div style='border:8px outset #BCD0ED;width:{$w}px;' id="chatwrap">
<!-- Begin ParaChat v7.0 Applet Code -->
<applet codebase="$server" archive="papplet.jar" code="pclient.main.ChatClient.class" width="$w" height="$h">
<param name="Net.Site" value="$siteid">
<param name="Net.Room" value="$room">
<param name="cabbase" value="papplet.cab">
<!--CUSTOMPARAM-->
<!--AUTOLOGIN-->
{$this->lang->words['para_java_err_start']}
{$this->lang->words['para_err_java_end']}
</applet>
<!-- End ParaChat v7.0 Applet Code -->
</div>
</div>
</div>
<br />
<div class="borderwrap">
<div class="maintitle"><{CAT_IMG}>&nbsp;{$this->lang->words['chat_help']}</div>
<div class="tablepad">
{$this->lang->words['chat_help_text']}
</div>
</div>
<script type="text/javascript">
//<!#^#|CDATA|
// Set timeout loop to update session's table.
if ( use_enhanced_js )
{
chat_ping_session();
}
function chat_ping_session()
{
do_request_function = function()
{
if ( ! xmlobj.readystate_ready_and_ok() )
{
return;
}
var returned = xmlobj.xmlhandler.responseText;
if ( returned == 'ok' )
{
chat_tol = setTimeout( 'chat_ping_session()', chat_tol_time );
}
}
xmlobj = new ajax_request();
xmlobj.onreadystatechange( do_request_function );
xmlobj.process( ipb_var_base_url + 'autocom=chatpara&do=update' );
}
//|#^#]>
</script>]]></template_content>
<template_name>chat_inline_v7</template_name>
<template_data><![CDATA[$server="",$siteid="",$w="",$h="", $room='']]></template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_chatpara</template_group>
<template_content><![CDATA[<applet codebase="{$options['server']}" archive="papplet.jar" code="pclient.main.ChatClient.class" width="{$options['width']}" height="{$options['height']}">
<param name="Net.Site" value="{$options['account']}">
<param name="Net.Room" value="{$options['room']}">
<param name="cabbase" value="papplet.cab">
<!--CUSTOMPARAM-->
<!--AUTOLOGIN-->
{$this->lang->words['para_java_err_start']}{$this->lang->words['para_err_java_end']}
</applet>]]></template_content>
<template_name>current</template_name>
<template_data>$options</template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
<template>
<template_group>skin_chatpara</template_group>
<template_content><![CDATA[<applet codebase="{$options['server']}" archive="pchat.zip" code="ParaChat.class" width="{$options['width']}" height="{$options['height']}">
<param name=cabbase value="pchat.cab">
<param name=roam.Group value="{$options['account']}">
<param name=Channel value="{$options['room']}">
<param name="ctrl.Language" value="{$options['language']}">
<param name="ui.ChatWindow" value="{$options['plainmode']}">
<param name="ui.BgColor" value="{$options['style']['applet_bg']}">
<param name="ui.FgColor" value="{$options['style']['applet_fg']}">
<param name="cmd.ChatBg" value="{$options['style']['window_bg']}">
<param name="cmd.ChatFg" value="{$options['style']['window_fg']}">
<param name="cmd.FontSize" value="{$options['style']['font_size']}">
<!--CUSTOMPARAM-->
<!--AUTOLOGIN-->
{$this->lang->words['para_error_java_start']} {$this->lang->words['para_err_java_end']}
</applet>]]></template_content>
<template_name>legacy</template_name>
<template_data>$options</template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
</templategroup>
<templategroup group="skin_chatsigma">
<template>
<template_group>skin_chatsigma</template_group>
<template_content><![CDATA[{parse js_module="chat"}
<h2>{$this->lang->words['sigmachat_title']}</h2>
<div class='generic_bar'></div>
<div id='parachat'>
<applet codebase="http://{$server}/current/" code="Client.class" archive="scclient_{$lang}.zip" width="{$w}" height="{$h}" MAYSCRIPT>
<param name="room" value="{$acc_no}">
<param name="cabbase" value="scclient_{$lang}.cab">
<param name="username" value="{$user}">
<param name="password" value="{$pass}">
<param name="autologin" value="yes">
</applet>
</div>
<h2>{$this->lang->words['sigmachat_help']}</h2>
<div class='generic_bar'></div>
<div id='parachat_help'>
{$this->lang->words['sigmachat_help_text']}
</div>]]></template_content>
<template_name>chat_inline</template_name>
<template_data><![CDATA[$server="",$acc_no="",$lang="",$w="",$h="",$user="",$pass=""]]></template_data>
<template_updated>1260269067</template_updated>
<template_removable>0</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
</templategroup>
</templates>
@@ -0,0 +1,667 @@
<?xml version="1.0" encoding="utf-8"?>
<settingexport>
<settinggroup>
<setting>
<conf_is_title>1</conf_is_title>
<conf_title_keyword>chat</conf_title_keyword>
<conf_title_title>AddonChat Settings</conf_title_title>
<conf_title_desc>This will allow you to customize your AddonChat chat room</conf_title_desc>
<conf_title_tab>IPS Apps</conf_title_tab>
<conf_title_app>chat</conf_title_app>
<conf_title_noshow>1</conf_title_noshow>
</setting>
<setting>
<conf_title>Chat Room Account Number?</conf_title>
<conf_description>Removing this number will remove all links / chat functionality within IPB.
</conf_description>
<conf_group>51</conf_group>
<conf_type>input</conf_type>
<conf_key>chat_account_no</conf_key>
<conf_default/>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>1</conf_position>
<conf_start_group>Account Specifics</conf_start_group>
<conf_end_group>0</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Chat Room Server?</conf_title>
<conf_description><![CDATA[<!--SERVER-->]]></conf_description>
<conf_group>51</conf_group>
<conf_type>input</conf_type>
<conf_key>chat_server_addr</conf_key>
<conf_default/>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>2</conf_position>
<conf_start_group/>
<conf_end_group>1</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title><![CDATA[Enable &#39;Who&#39;s Chatting?&#39;]]></conf_title>
<conf_description><![CDATA[If enabled, this will show who's chatting in the chat room on your forums home page underneath the active users list.]]></conf_description>
<conf_group>51</conf_group>
<conf_type>yes_no</conf_type>
<conf_key>chat_who_on</conf_key>
<conf_default>1</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>3</conf_position>
<conf_start_group><![CDATA[Who&#39;s Chatting]]></conf_start_group>
<conf_end_group>0</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title><![CDATA[Hide Who&#39;s Chatting when no members are logged into chat?]]></conf_title>
<conf_description/>
<conf_group>51</conf_group>
<conf_type>yes_no</conf_type>
<conf_key>chat_hide_whoschatting</conf_key>
<conf_default>1</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>4</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Chat Room Dimensions (WIDTH)?</conf_title>
<conf_description/>
<conf_group>51</conf_group>
<conf_type>input</conf_type>
<conf_key>chat_width</conf_key>
<conf_default>600</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>5</conf_position>
<conf_start_group>Showing the chat room</conf_start_group>
<conf_end_group>0</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Chat Room Dimensions (HEIGHT)?</conf_title>
<conf_description/>
<conf_group>51</conf_group>
<conf_type>input</conf_type>
<conf_key>chat_height</conf_key>
<conf_default>350</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>6</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Default Chat Room Interface Language?</conf_title>
<conf_description/>
<conf_group>51</conf_group>
<conf_type>dropdown</conf_type>
<conf_key>chat_language</conf_key>
<conf_default>en</conf_default>
<conf_extra>en=English
ar=Arabic
de=German
es=Spanish
fr=French
hr=Croation
it=Italian
iw=Hebrew
nl=Dutch
pl=Polish
pt=Portuguese</conf_extra>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>7</conf_position>
<conf_start_group/>
<conf_end_group>1</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Allow bbcode and color formatting</conf_title>
<conf_description>Do you wish to allow bbcode and color formatting?</conf_description>
<conf_group>51</conf_group>
<conf_type>yes_no</conf_type>
<conf_key>chat_allow_bbcode</conf_key>
<conf_default>1</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>8</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Allow chat access to these groups</conf_title>
<conf_description>You may select more than one</conf_description>
<conf_group>51</conf_group>
<conf_type>multi</conf_type>
<conf_key>chat_access_groups</conf_key>
<conf_default/>
<conf_extra>#show_groups#</conf_extra>
<conf_evalphp><![CDATA[if ( $save == 1)
{
if ( is_array($_POST['chat_access_groups']) )
{
$_POST['chat_access_groups'] = implode(",",$_POST['chat_access_groups']);
}
else
{
$_POST['chat_access_groups'] = "";
}
$key = 'chat_access_groups';
}
if ( $show == 1 )
{
$key='chat_access_groups[]';
}]]></conf_evalphp>
<conf_protected>1</conf_protected>
<conf_position>9</conf_position>
<conf_start_group>Access Permissions</conf_start_group>
<conf_end_group>0</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Allow moderator access to these groups</conf_title>
<conf_description>You may select more than one - please choose carefully!</conf_description>
<conf_group>51</conf_group>
<conf_type>multi</conf_type>
<conf_key>chat_mod_groups</conf_key>
<conf_default/>
<conf_extra>#show_groups#</conf_extra>
<conf_evalphp><![CDATA[if ( $save == 1)
{
if ( is_array($_POST['chat_mod_groups']) )
{
$_POST['chat_mod_groups'] = implode(",",$_POST['chat_mod_groups']);
}
else
{
$_POST['chat_mod_groups'] = "";
}
$key = 'chat_mod_groups';
}
if ( $show == 1 )
{
$key='chat_mod_groups[]';
}]]></conf_evalphp>
<conf_protected>1</conf_protected>
<conf_position>10</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Allow admin access to these groups</conf_title>
<conf_description>You may select more than one - please choose carefully!</conf_description>
<conf_group>51</conf_group>
<conf_type>multi</conf_type>
<conf_key>chat_admin_groups</conf_key>
<conf_default/>
<conf_extra>#show_groups#</conf_extra>
<conf_evalphp><![CDATA[if ( $save == 1)
{
if ( is_array($_POST['chat_admin_groups']) )
{
$_POST['chat_admin_groups'] = implode(",",$_POST['chat_admin_groups']);
}
else
{
$_POST['chat_admin_groups'] = "";
}
$key = 'chat_admin_groups';
}
if ( $show == 1 )
{
$key='chat_admin_groups[]';
}]]></conf_evalphp>
<conf_protected>1</conf_protected>
<conf_position>11</conf_position>
<conf_start_group/>
<conf_end_group>1</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_is_title>1</conf_is_title>
<conf_title_keyword>chat04</conf_title_keyword>
<conf_title_title>ParaChat Settings</conf_title_title>
<conf_title_desc>This will allow you to customize your Invision Chat integration settings for the new 2004 edition</conf_title_desc>
<conf_title_tab>IPS Apps</conf_title_tab>
<conf_title_app>chat</conf_title_app>
<conf_title_noshow>1</conf_title_noshow>
</setting>
<setting>
<conf_title>Chat Site ID / Account No.</conf_title>
<conf_description>If you are using Parachat v8 or greater, enter your site ID (1234, for example). If you are using an older version of Parachat please enter your group number (ip0000, for example)</conf_description>
<conf_group>11</conf_group>
<conf_type>input</conf_type>
<conf_key>chat04_account_no</conf_key>
<conf_default/>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>1</conf_position>
<conf_start_group>Account Specifics</conf_start_group>
<conf_end_group>0</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat04</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Custom Applet Codebase URL</conf_title>
<conf_description>This should be left blank during an evaluation.</conf_description>
<conf_group>11</conf_group>
<conf_type>input</conf_type>
<conf_key>parachat_codebase_url</conf_key>
<conf_default/>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>2</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat04</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Chat Room Version</conf_title>
<conf_description><![CDATA[The version of the Parachat chat software you're using]]></conf_description>
<conf_group>11</conf_group>
<conf_type>dropdown</conf_type>
<conf_key>parachat_version</conf_key>
<conf_default>6</conf_default>
<conf_extra>6=Parachat v6 or below&#13;
7=Parachat v8 or greater</conf_extra>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>3</conf_position>
<conf_start_group/>
<conf_end_group>1</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat04</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title><![CDATA[Enable &#39;Who&#39;s Chatting?&#39;]]></conf_title>
<conf_description><![CDATA[If enabled, this will show who's chatting in the chat room on your forums home page underneath the active users list.]]></conf_description>
<conf_group>11</conf_group>
<conf_type>yes_no</conf_type>
<conf_key>chat04_who_on</conf_key>
<conf_default>1</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>4</conf_position>
<conf_start_group><![CDATA[Who&#39;s Chatting]]></conf_start_group>
<conf_end_group>0</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat04</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title><![CDATA[Hide Who&#39;s Chatting when no members are logged into chat?]]></conf_title>
<conf_description/>
<conf_group>11</conf_group>
<conf_type>yes_no</conf_type>
<conf_key>chat04_hide_whoschatting</conf_key>
<conf_default>1</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>5</conf_position>
<conf_start_group/>
<conf_end_group>1</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat04</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Chat Room Dimensions (WIDTH)?</conf_title>
<conf_description/>
<conf_group>11</conf_group>
<conf_type>input</conf_type>
<conf_key>chat04_width</conf_key>
<conf_default>600</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>8</conf_position>
<conf_start_group>Showing the chat room</conf_start_group>
<conf_end_group>0</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat04</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Chat Room Dimensions (HEIGHT)?</conf_title>
<conf_description/>
<conf_group>11</conf_group>
<conf_type>input</conf_type>
<conf_key>chat04_height</conf_key>
<conf_default>350</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>9</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat04</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Load the chat room in...?</conf_title>
<conf_description/>
<conf_group>11</conf_group>
<conf_type>dropdown</conf_type>
<conf_key>chat04_display</conf_key>
<conf_default>self</conf_default>
<conf_extra>self=Normal IPB Page</conf_extra>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>12</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat04</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Additional PARAM information</conf_title>
<conf_description><![CDATA[Use this field to enter any custom param tags for the chat applet.
Example:<br />
&lt;param name="cmd.BeepEnter" value="true"&gt;
<br />&lt;param name="cmd.BeepLeave" value="true"&gt;
<br />Please refer to the Invision Chat documentation for more info.]]></conf_description>
<conf_group>11</conf_group>
<conf_type>textarea</conf_type>
<conf_key>chat04_customparams</conf_key>
<conf_default/>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>13</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>0</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat04</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Chat Room Pop-up Window Padding? (in px)</conf_title>
<conf_description>Allows window to open without scrollbars</conf_description>
<conf_group>11</conf_group>
<conf_type>input</conf_type>
<conf_key>chat04_poppad</conf_key>
<conf_default>50</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>14</conf_position>
<conf_start_group/>
<conf_end_group>1</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat04</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Allow chat access to these groups</conf_title>
<conf_description>You may select more than one</conf_description>
<conf_group>11</conf_group>
<conf_type>multi</conf_type>
<conf_key>chat04_access_groups</conf_key>
<conf_default/>
<conf_extra>#show_groups#</conf_extra>
<conf_evalphp><![CDATA[if ( $save == 1)
{
if ( is_array($_POST['chat04_access_groups']) )
{
$_POST['chat04_access_groups'] = implode(",",$_POST['chat04_access_groups']);
}
else
{
$_POST['chat04_access_groups'] = "";
}
$key = 'chat04_access_groups';
}
if ( $show == 1 )
{
$key = 'chat04_access_groups[]';
}]]></conf_evalphp>
<conf_protected>1</conf_protected>
<conf_position>25</conf_position>
<conf_start_group>Access Permissions</conf_start_group>
<conf_end_group>1</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat04</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Default Chat Room Language</conf_title>
<conf_description>This is the default language used for the chat user inteface (buttons and labels, etc)</conf_description>
<conf_group>11</conf_group>
<conf_type>dropdown</conf_type>
<conf_key>chat04_default_lang</conf_key>
<conf_default>english.conf</conf_default>
<conf_extra>english.conf=English&#13;
spanish.conf=Spanish&#13;
portuguese.conf=Portuguese&#13;
italian.conf=Italian&#13;
french.conf=French&#13;
german.conf=German</conf_extra>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>99</conf_position>
<conf_start_group>Version 6 Settings (Not required for v8)</conf_start_group>
<conf_end_group>0</conf_end_group>
<conf_add_cache>0</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat04</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Chat Room Type</conf_title>
<conf_description>This is the type of chat service you purchased</conf_description>
<conf_group>11</conf_group>
<conf_type>dropdown</conf_type>
<conf_key>chat04_servicetype</conf_key>
<conf_default/>
<conf_extra>advanced=Advanced
premium=Premium</conf_extra>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>100</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat04</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Default Chat Room</conf_title>
<conf_description>This is the room that your chat users will be logged into first</conf_description>
<conf_group>11</conf_group>
<conf_type>input</conf_type>
<conf_key>chat04_default_room</conf_key>
<conf_default/>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>101</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>1</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat04</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title><![CDATA[Enable &quot;Plain Mode&quot;?]]></conf_title>
<conf_description><![CDATA["Plain mode" removes the colored chat text from your Invision Power Chat Advanced room(s), and implements single-colored (non-GUI) chat text. This will disable the graphic emoticons and click-able URLs.]]></conf_description>
<conf_group>11</conf_group>
<conf_type>yes_no</conf_type>
<conf_key>chat04_plainmode</conf_key>
<conf_default>0</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>102</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>0</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat04</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Applet: Background Color</conf_title>
<conf_description>To change your chat applet background color select any RGB value.</conf_description>
<conf_group>11</conf_group>
<conf_type>input</conf_type>
<conf_key>chat04_style_applet_bg</conf_key>
<conf_default>#BCD0ED</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>130</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>0</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat04</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Applet: Foreground Color</conf_title>
<conf_description>To change your chat applet foreground color select any RGB value.</conf_description>
<conf_group>11</conf_group>
<conf_type>input</conf_type>
<conf_key>chat04_style_applet_fg</conf_key>
<conf_default>#345487</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>131</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>0</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat04</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Chat Window: Background Color</conf_title>
<conf_description>To change your chat window background color select any RGB value.</conf_description>
<conf_group>11</conf_group>
<conf_type>input</conf_type>
<conf_key>chat04_style_window_bg</conf_key>
<conf_default>#F5F9FD</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>132</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>0</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat04</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Chat Window: Foreground Color</conf_title>
<conf_description>To change your chat window foreground color select any RGB value.</conf_description>
<conf_group>11</conf_group>
<conf_type>input</conf_type>
<conf_key>chat04_style_window_fg</conf_key>
<conf_default>#345487</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>133</conf_position>
<conf_start_group/>
<conf_end_group>0</conf_end_group>
<conf_add_cache>0</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat04</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
<setting>
<conf_title>Chat Room Font Size</conf_title>
<conf_description><![CDATA[To customize your font size replace "10" to whatever numeric value you wish.]]></conf_description>
<conf_group>11</conf_group>
<conf_type>input</conf_type>
<conf_key>chat04_style_font_size</conf_key>
<conf_default>10</conf_default>
<conf_extra/>
<conf_evalphp/>
<conf_protected>1</conf_protected>
<conf_position>135</conf_position>
<conf_start_group/>
<conf_end_group>1</conf_end_group>
<conf_add_cache>0</conf_add_cache>
<conf_keywords/>
<conf_title_keyword>chat04</conf_title_keyword>
<conf_is_title>0</conf_is_title>
</setting>
</settinggroup>
</settingexport>
@@ -0,0 +1,183 @@
<?xml version="1.0" encoding="utf-8"?>
<templates application="chat" templategroups="a:1:{s:9:&quot;skin_chat&quot;;s:8:&quot;contains&quot;;}">
<templategroup group="skin_chatpara">
<template>
<template_group>skin_chatpara</template_group>
<template_content><![CDATA[<script type="text/javascript">
//<!#^#|CDATA|
<!-- // Hide JS from HTML validator
// Added like this to allow those without JS to still function nicely.
var chat_display = "{$this->settings['chat04_display']}";
var chat_pad = parseInt( "{$this->settings['chat04_poppad']}" );
var chat_height = parseInt( "{$this->settings['chat04_height']}" );
var chat_width = parseInt( "{$this->settings['chat04_width']}" );
var popped = parseInt( "{$this->request['pop']}" );
var chat_tol;
var chat_tol_time = 60 * 1000; // 60 seconds
chat_pad = chat_pad ? chat_pad : 50;
chat_height += chat_pad;
chat_width += chat_pad;
if ( chat_display != 'self' && popped != 1 )
{
if ( window.open( ipb_var_base_url + 'autocom=chatpara&pop=1','Chat','width='+chat_width+',height='+chat_height+',resizable=yes,scrollbars=yes') )
{
// Bounce back to board index
locationjump();
}
}
//|#^#]>
//-->
</script>
<div class="borderwrap">
<div class="maintitle"><{CAT_IMG}>&nbsp;{$this->lang->words['chat_title']}</div>
<div class="tablepad" align="center">
<div style='border:8px outset #BCD0ED;width:{$w}px;' id="chatwrap">
<applet codebase="$server" archive="pchat.zip" code="ParaChat.class" width="$w" height="$h">
<param name=cabbase value="pchat.cab">
<param name=roam.Group value="$group">
<param name=Channel value="$room">
<param name="ctrl.Language" value="$lang">
<param name="ui.ChatWindow" value="$textmode">
<param name="ui.BgColor" value="{$style['applet_bg']}">
<param name="ui.FgColor" value="{$style['applet_fg']}">
<param name="cmd.ChatBg" value="{$style['window_bg']}">
<param name="cmd.ChatFg" value="{$style['window_fg']}">
<param name="cmd.FontSize" value="{$style['font_size']}">
<!--CUSTOMPARAM-->
<!--AUTOLOGIN-->
{$this->lang->words['para_error_java_start']} {$this->lang->words['para_err_java_end']}
</applet>
</div>
</div>
</div>
<br />
<div class="borderwrap">
<div class="maintitle"><{CAT_IMG}>&nbsp;{$this->lang->words['chat_help']}</div>
<div class="tablepad">
{$this->lang->words['chat_help_text']}
</div>
</div>
<script type="text/javascript">
//<!#^#|CDATA|
// Set timeout loop to update session's table.
if ( use_enhanced_js )
{
chat_ping_session();
}
function chat_ping_session()
{
do_request_function = function()
{
if ( ! xmlobj.readystate_ready_and_ok() )
{
return;
}
var returned = xmlobj.xmlhandler.responseText;
if ( returned == 'ok' )
{
chat_tol = setTimeout( 'chat_ping_session()', chat_tol_time );
}
}
xmlobj = new ajax_request();
xmlobj.onreadystatechange( do_request_function );
xmlobj.process( ipb_var_base_url + 'autocom=chatpara&do=update' );
}
//|#^#]>
</script>]]></template_content>
<template_name>chat_inline</template_name>
<template_data><![CDATA[$server="",$group="",$room="",$w="",$h="",$lang="",$textmode="",$style=""]]></template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
</templategroup>
<templategroup group="skin_chatsigma">
<template>
<template_group>skin_chatsigma</template_group>
<template_content><![CDATA[<script type="text/javascript">
//<!#^#|CDATA|
<!-- // Hide JS from HTML Validator
// Added like this to allow those without JS to still function nicely.
var chat_display = "{$this->settings['chat_display']}";
var chat_pad = parseInt( "{$this->settings['chat_poppad']}" );
var chat_height = parseInt( "{$this->settings['chat_height']}" );
var chat_width = parseInt( "{$this->settings['chat_width']}" );
var popped = parseInt( "{$this->request['pop']}" );
var chat_tol;
var chat_tol_time = 60 * 1000; // 60 seconds
chat_pad = chat_pad ? chat_pad : 50;
chat_height += chat_pad;
chat_width += chat_pad;
if ( chat_display != 'self' && popped != 1 )
{
window.open( ipb_var_base_url + 'autocom=chatsigma&pop=1','Chat','width='+chat_width+',height='+chat_height+',resizable=yes,scrollbars=yes');
// Bounce back to board index
locationjump();
}
//|#^#]>
//-->
</script>
<div class="borderwrap">
<div class="maintitle"><{CAT_IMG}>&nbsp;{$this->lang->words['chat_title']}</div>
<div class="tablepad" align="center">
<div style='border:8px outset #BCD0ED;width:{$w}px;' id="chatwrap">
<applet codebase="http://{$server}/current/" code="Client.class" archive="scclient_$lang.zip" width="$w" height="$h" MAYSCRIPT>
<param name="room" value="$acc_no">
<param name="cabbase" value="scclient_$lang.cab">
<param name="username" value="$user">
<param name="password" value="$pass">
<param name="autologin" value="yes">
</applet>
</div>
</div>
</div>
<br />
<div class="borderwrap">
<div class="maintitle"><{CAT_IMG}>&nbsp;{$this->lang->words['chat_help']}</div>
<div class="tablepad">
{$this->lang->words['chat_help_text']}
</div>
</div>
<script type="text/javascript">
//<!#^#|CDATA|
// Set timeout loop to update session's table.
if ( use_enhanced_js )
{
chat_ping_session();
}
function chat_ping_session()
{
do_request_function = function()
{
if ( ! xmlobj.readystate_ready_and_ok() )
{
return;
}
var returned = xmlobj.xmlhandler.responseText;
if ( returned == 'ok' )
{
chat_tol = setTimeout( 'chat_ping_session()', chat_tol_time );
}
}
xmlobj = new ajax_request();
xmlobj.onreadystatechange( do_request_function );
xmlobj.process( ipb_var_base_url + 'autocom=chatsigma&do=update' );
}
//|#^#]>
</script>]]></template_content>
<template_name>chat_inline</template_name>
<template_data><![CDATA[$server="",$acc_no="",$lang="",$w="",$h="",$user="",$pass=""]]></template_data>
<template_updated>1260269070</template_updated>
<template_removable>1</template_removable>
<template_user_added>0</template_user_added>
<template_user_edited>0</template_user_edited>
</template>
</templategroup>
</templates>
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<hooks>
<hook>
<file>board_whos_chatting.xml</file>
<enabled>0</enabled>
</hook>
</hooks>
@@ -0,0 +1,190 @@
<?xml version="1.0" encoding="utf-8"?>
<hookexport>
<hookdata>
<config>
<hook_name><![CDATA[Who&#39;s Chatting]]></hook_name>
<hook_desc>Shows who is in chat if installed and enabled</hook_desc>
<hook_author>Invision Power Services, Inc</hook_author>
<hook_email>dont@mail.me</hook_email>
<hook_website>http://</hook_website>
<hook_update_check/>
<hook_requirements><![CDATA[a:4:{s:20:"hook_ipb_version_min";i:3;s:20:"hook_ipb_version_max";i:0;s:20:"hook_php_version_min";s:1:"0";s:20:"hook_php_version_max";s:1:"0";}]]></hook_requirements>
<hook_version_human>1.0.0</hook_version_human>
<hook_version_long>10000</hook_version_long>
<hook_extra_data/>
<hook_key>chat_whos_chatting</hook_key>
</config>
</hookdata>
<hookfiles>
<file>
<hook_file_real>boardIndexWhosChatting.php</hook_file_real>
<hook_type>templateHooks</hook_type>
<hook_classname>boardIndexWhosChatting</hook_classname>
<hook_data><![CDATA[a:6:{s:15:"classToOverload";N;s:9:"skinGroup";s:11:"skin_boards";s:12:"skinFunction";s:18:"boardIndexTemplate";s:4:"type";s:2:"if";s:2:"id";s:10:"showActive";s:8:"position";s:10:"post.endif";}]]></hook_data>
<hooks_source><![CDATA[<?php
class boardIndexWhosChatting
{
/**#@+
* Registry Object Shortcuts
*
* @access protected
* @var object
*/
protected $registry;
protected $DB;
protected $settings;
protected $request;
protected $lang;
protected $member;
protected $memberData;
protected $cache;
protected $caches;
/**#@-*/
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();
}
public function getOutput()
{
//-----------------------------------------
// INIT
//-----------------------------------------
$member_ids = array();
$to_load = array();
//-----------------------------------------
// Check module/app
//-----------------------------------------
$module = '';
if( !IPSLib::appIsInstalled('chat') )
{
return '';
}
if( IPSLib::moduleIsEnabled( 'addonchat', 'chat' ) )
{
$_hide_whoschatting = $this->settings['chat_hide_whoschatting'];
$_who_on = $this->settings['chat_who_on'];
}
else if( IPSLib::moduleIsEnabled( 'parachat', 'chat' ) )
{
$_hide_whoschatting = $this->settings['chat04_hide_whoschatting'];
$_who_on = $this->settings['chat04_who_on'];
}
else
{
return '';
}
//-----------------------------------------
// Check
//-----------------------------------------
if ( ! $_who_on )
{
return;
}
//-----------------------------------------
// Sort and show :D
//-----------------------------------------
if ( is_array( $this->caches['chatting'] ) AND count( $this->caches['chatting'] ) )
{
foreach( $this->caches['chatting'] as $id => $data )
{
if ( $data['updated'] < ( time() - 120 ) )
{
continue;
}
$to_load[ $id ] = $id;
}
}
//-----------------------------------------
// Got owt?
//-----------------------------------------
if ( count($to_load) )
{
$this->DB->build( array( 'select' => 'm.member_id, m.members_display_name, m.member_group_id, m.members_seo_name',
'from' => array( 'members' => 'm' ),
'where' => "m.member_id IN(" . implode( ",", $to_load ) . ")",
'add_join' => array( 0 => array( 'select' => 's.login_type, s.current_appcomponent',
'from' => array( 'sessions' => 's' ),
'where' => 's.member_id=m.member_id',
'type' => 'left' ) ),
'order' => 'm.members_display_name' ) );
$this->DB->execute();
while ( $m = $this->DB->fetch() )
{
if( $m['member_id'] == $this->memberData['member_id'] )
{
continue;
}
$m['members_display_name'] = IPSLib::makeNameFormatted( $m['members_display_name'], $m['member_group_id'] );
if( $m['login_type'] )
{
if ( $this->memberData['g_access_cp'] and ($this->settings['disable_admin_anon'] != 1) )
{
$member_ids[] = "<a href='" . $this->registry->getClass('output')->buildSEOUrl( "showuser={$m['member_id']}", 'public', $m['seo_name'], 'showuser' ) . "'>{$m['members_display_name']}</a>";
}
}
else
{
$member_ids[] = "<a href='" . $this->registry->getClass('output')->buildSEOUrl( "showuser={$m['member_id']}", 'public', $m['seo_name'], 'showuser' ) . "'>{$m['members_display_name']}</a>";
}
}
}
//-----------------------------------------
// Got owt?
//-----------------------------------------
if ( count( $member_ids ) )
{
$this->html = $this->registry->getClass('output')->getTemplate('boards')->whoschatting_show( intval(count($member_ids)), $member_ids );
}
else
{
if ( ! $_hide_whoschatting )
{
$this->html = $this->registry->getClass('output')->getTemplate('boards')->whoschatting_empty();
}
}
return $this->html;
}
}]]></hooks_source>
</file>
</hookfiles>
<hookextras_settings/>
<hookextras_language/>
<hookextras_modules/>
<hookextras_help/>
<hookextras_templates/>
<hookextras_tasks/>
<hookextras_database_create/>
<hookextras_database_alter/>
<hookextras_database_update/>
<hookextras_database_insert/>
</hookexport>
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<information>
<data>
<name>Chat Services</name>
<public_name>Chat</public_name>
<author>Invision Power Services, Inc.</author>
<description></description>
<ipskey>08198fd56e656d80c69841a289166b2f</ipskey>
<disabledatinstall>1</disabledatinstall>
<templategroups>
<template match="contains">skin_chat</template>
</templategroups>
</data>
</information>
@@ -0,0 +1,205 @@
<?xml version="1.0" encoding="utf-8"?>
<languageexport>
<languagegroup>
<lang>
<word_app>chat</word_app>
<word_pack>public_chataddon</word_pack>
<word_key>sigmachat_chatsigma</word_key>
<word_default>1</word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>chat</word_app>
<word_pack>public_chataddon</word_pack>
<word_key>sigmachat_help_text</word_key>
<word_default><![CDATA[If you are running a version of a Microsoft Windows&#153; and see only a broken link icon, you will need to download a copy of the Java&#153; Virtual Machine in order to run our application. You may download Java&#153; Support for your browser from one of the following links below:<br />
<br />
* <a href='http://www.microsoft.com/Java/vm/dl_vm40.htm?FinishURL=%2Fdownloads%2Frelease%2Easp%3Frelease'>Microsoft Virtual Machine (for MSIE)</a><br />
* <a href='http://java.sun.com/getjava/'>Sun Java&#153; Plugin (for Netscape, Opera, MSIE, etc..)</a><br />
<br />
Older versions of Netscape (on certain platforms) such as v4.08, and v4.7x may not run the software. We strongly recommend upgrading to a newer version of Netscape (v6.xx or better) if this is the case. Certain browsers running on Macintosh platforms are not capable of running our software due to problems outside of our control. As WebTV does not support Java&#153;, WebTV users will not be able to access the live chat rooms.<br />
<br />
Users behind firewalls may need to inform their local IT/network administrator to allow TCP connections on ports 9000-9009 at client.invisionchat.com.<br />
<br />
AOL Members: Some users have reported that the built-in AOL browser has difficulty connecting to our service, or does not load colors/emoticons properly. To resolve this, minimize your AOL connection, and use the Internet Explorer browser that came with your computer to access our chat rooms.<br />
<br />]]></word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>chat</word_app>
<word_pack>public_chataddon</word_pack>
<word_key>chat_online</word_key>
<word_default>Chatting in live chat</word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>chat</word_app>
<word_pack>public_chataddon</word_pack>
<word_key>sigmachat_help</word_key>
<word_default>Live Chat Help</word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>chat</word_app>
<word_pack>public_chataddon</word_pack>
<word_key>sigmachat_title</word_key>
<word_default>Live Chat Main Window</word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>chat</word_app>
<word_pack>public_chatpara</word_pack>
<word_key>chat_online</word_key>
<word_default>Chatting in live chat</word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>chat</word_app>
<word_pack>public_chatpara</word_pack>
<word_key>para_err_java_start</word_key>
<word_default>Sorry, your browser is not Java enabled, please visit</word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>chat</word_app>
<word_pack>public_chatpara</word_pack>
<word_key>para_err_java_end</word_key>
<word_default>our Java support pages</word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>chat</word_app>
<word_pack>public_chatpara</word_pack>
<word_key>parachat_help_text</word_key>
<word_default><![CDATA[If you are running a version of a Microsoft Windows&#153; and see only a broken link icon, you will need to download a copy of the Java&#153; Virtual Machine in order to run our application. You may download Java&#153; Support for your browser from one of the following links below:<br />
<br />
* <a href='http://www.microsoft.com/Java/vm/dl_vm40.htm?FinishURL=%2Fdownloads%2Frelease%2Easp%3Frelease'>Microsoft Virtual Machine (for MSIE)</a><br />
* <a href='http://java.sun.com/getjava/'>Sun Java&#153; Plugin (for Netscape, Opera, MSIE, etc..)</a><br />
<br />
Older versions of Netscape (on certain platforms) such as v4.08, and v4.7x may not run the software. We strongly recommend upgrading to a newer version of Netscape (v6.xx or better) if this is the case. Certain browsers running on Macintosh platforms are not capable of running our software due to problems outside of our control. As WebTV does not support Java&#153;, WebTV users will not be able to access the live chat rooms.<br />
<br />
Users behind firewalls may need to inform their local IT/network administrator to allow TCP connections on ports 9000-9009 at client.invisionchat.com.<br />
<br />
AOL Members: Some users have reported that the built-in AOL browser has difficulty connecting to our service, or does not load colors/emoticons properly. To resolve this, minimize your AOL connection, and use the Internet Explorer browser that came with your computer to access our chat rooms.<br />
<br />]]></word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>chat</word_app>
<word_pack>public_chatpara</word_pack>
<word_key>parachat_chatpara</word_key>
<word_default>1</word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>chat</word_app>
<word_pack>public_chatpara</word_pack>
<word_key>parachat_help</word_key>
<word_default>Live Chat Help</word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>chat</word_app>
<word_pack>public_chatpara</word_pack>
<word_key>parachat_title</word_key>
<word_default>Live Chat Main Window</word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>chat</word_app>
<word_pack>public_chatsigma</word_pack>
<word_key>sigmachat_title</word_key>
<word_default>Live Chat Main Window</word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>chat</word_app>
<word_pack>public_chatsigma</word_pack>
<word_key>sigmachat_help</word_key>
<word_default>Live Chat Help</word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>chat</word_app>
<word_pack>public_chatsigma</word_pack>
<word_key>sigmachat_online</word_key>
<word_default>Chatting in live chat</word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>chat</word_app>
<word_pack>public_chatsigma</word_pack>
<word_key>sigmachat_help_text</word_key>
<word_default><![CDATA[If you are running a version of a Microsoft Windows&#153; and see only a broken link icon, you will need to download a copy of the Java&#153; Virtual Machine in order to run our application. You may download Java&#153; Support for your browser from one of the following links below:<br />
<br />
* <a href='http://www.microsoft.com/Java/vm/dl_vm40.htm?FinishURL=%2Fdownloads%2Frelease%2Easp%3Frelease'>Microsoft Virtual Machine (for MSIE)</a><br />
* <a href='http://java.sun.com/getjava/'>Sun Java&#153; Plugin (for Netscape, Opera, MSIE, etc..)</a><br />
<br />
Older versions of Netscape (on certain platforms) such as v4.08, and v4.7x may not run the software. We strongly recommend upgrading to a newer version of Netscape (v6.xx or better) if this is the case. Certain browsers running on Macintosh platforms are not capable of running our software due to problems outside of our control. As WebTV does not support Java&#153;, WebTV users will not be able to access the live chat rooms.<br />
<br />
Users behind firewalls may need to inform their local IT/network administrator to allow TCP connections on ports 9000-9009 at client.invisionchat.com.<br />
<br />
AOL Members: Some users have reported that the built-in AOL browser has difficulty connecting to our service, or does not load colors/emoticons properly. To resolve this, minimize your AOL connection, and use the Internet Explorer browser that came with your computer to access our chat rooms.<br />
<br />]]></word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
<lang>
<word_app>chat</word_app>
<word_pack>public_chatsigma</word_pack>
<word_key>sigmachat_chatsigma</word_key>
<word_default>1</word_default>
<word_custom/>
<word_default_version>30012</word_default_version>
<word_custom_version/>
<word_js>0</word_js>
</lang>
</languagegroup>
</languageexport>
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<versions>
<version>
<human>3.0.5</human>
<long>30012</long>
</version>
</versions>
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,77 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Library: Handle public session data
* Last Updated: $Date: 2009-08-10 17:08:53 -0400 (Mon, 10 Aug 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Portal
* @link http://www.iinvisionpower.com
* @since 12th March 2002
* @version $Revision: 5009 $
*
*/
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 publicSessions__portal
{
/**
* Return session variables for this application
*
* current_appcomponent, current_module and current_section are automatically
* stored. This function allows you to add specific variables in.
*
* @access public
* @author Matt Mecham
* @return array
*/
public function getSessionVariables()
{
return array();
}
/**
* Parse/format the online list data for the records
*
* @access public
* @author Brandon Farber
* @param array Online list rows to check against
* @return array Online list rows parsed
*/
public function parseOnlineEntries( $rows )
{
if( !is_array($rows) OR !count($rows) )
{
return $rows;
}
$final = array();
//-----------------------------------------
// Extract the topic/forum data
//-----------------------------------------
foreach( $rows as $row )
{
if( $row['current_appcomponent'] == 'portal' )
{
$row['where_line'] = ipsRegistry::getClass( 'class_localization' )->words['WHERE_portal'];
}
$final[ $row['id'] ] = $row;
}
return $final;
}
}
@@ -0,0 +1,57 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Core variables for portal
* Last Updated: $LastChangedDate: 2009-12-07 21:57:46 -0500 (Mon, 07 Dec 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Portal
* @link http://www.iinvisionpower.com
* @since 27th January 2004
* @version $Rev: 5529 $
*
*/
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();
}
/**
* Array for holding reset information
*
* Populate the $_RESET array and ipsRegistry will do the rest
*/
$_RESET = array();
###### Redirect requests... ######
if( ! $_REQUEST['module'] AND $_REQUEST['app'] == 'portal' )
{
$_RESET['module'] = 'portal';
}
$_LOAD = array();
$_LOAD['portal'] = 1;
$_LOAD['emoticons'] = 1;
$_LOAD['bbcode'] = 1;
$_LOAD['badwords'] = 1;
$_LOAD['calendars'] = 1;
$CACHE['portal'] = array(
'array' => 1,
'allow_unload' => 0,
'default_load' => 1,
'recache_file' => IPSLib::getAppDir( 'portal' ) . '/modules_admin/portal/portal.php',
'recache_class' => 'admin_portal_portal_portal',
'recache_function' => 'portalRebuildCache'
);
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,76 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Portal plugin: portal
* Last Updated: $Date: 2009-07-28 20:26:37 -0400 (Tue, 28 Jul 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Portal
* @link http://www.iinvisionpower.com
* @since 1st march 2002
* @version $Revision: 4948 $
*
*/
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();
}
/**
* This file must be named {file_name_minus_php}-cfg.php
*
* Please see each variable for more information
* $PORTAL_CONFIG is OK for each file, do not change
* this array name.
*/
$PORTAL_CONFIG = array();
/**
* Main plug in title
*
*/
$PORTAL_CONFIG['pc_title'] = 'Плагин портала';
/**
* Plug in mini description
*
*/
$PORTAL_CONFIG['pc_desc'] = "Блок навигации и дружественных сайтов";
/**
* Keyword for settings. This is the keyword
* entered into ibf_conf_settings_titles -> conf_title_keyword
* Can be left blank.
* PLEASE stick to the naming convention when entering a setting
* keyword: portal_{file_name_minus_php} This will prevent
* other keyword clashes. Likewise, when creating settings, choose
* NOT to cache them (they will be loaded at run time) and always
* prefix with {file_name_minus_php}_setting_key - for example
* If you had a setting called "export_forums" then please name it
* "recent_topics_export_forums". This will be available in
* $this->settings['recent_topics_export_forums'] in the
* main module.
*/
$PORTAL_CONFIG['pc_settings_keyword'] = "ipbportal";
/**
* Exportable tags key must be in the naming format of:
* {file_name_minus_php}-tag. The value *MUST* be the function
* which it corresponds to. For example:
* 'recent_topics_last_x' => 'recent_topics_last_x'
* The portal will look for function 'recent_topics_last_x' in
* module "sources/portal_plugins/recent_topics.php" when it parses
* the tag <!--::recent_topics_last_x::-->
*
* @param array[ TAG ] = array( FUNCTION NAME, DESCRIPTION );
*/
$PORTAL_CONFIG['pc_exportable_tags']['portal_sitenav'] = array( 'portal_sitenav', 'Вывести блок навигации' );
$PORTAL_CONFIG['pc_exportable_tags']['portal_affiliates'] = array( 'portal_affiliates', 'Вывести блок дружественных сайтов' );
@@ -0,0 +1,101 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Portal plugin: portal
* Last Updated: $Date: 2009-02-04 15:03:36 -0500 (Wed, 04 Feb 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Portal
* @link http://www.iinvisionpower.com
* @since 1st march 2002
* @version $Revision: 3887 $
*
*/
if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'.";
exit();
}
class ppi_portal extends public_portal_portal_portal
{
/**
* Initialize module
*
* @access public
* @return void
*/
public function init()
{
}
/**
* Show the site navgiational block
*
* @access public
* @return string HTML content to replace tag with
*/
public function portal_sitenav()
{
if ( ! $this->settings['csite_nav_show'] )
{
return;
}
$links = array();
$raw_nav = $this->settings['csite_nav_contents'];
foreach( explode( "\n", $raw_nav ) as $l )
{
$l = str_replace( "&#039;", "'", $l );
$l = str_replace( "&quot;", '"', $l );
$l = str_replace( '{board_url}', $this->settings['base_url'], $l );
preg_match( "#^(.+?)\[(.+?)\]$#is", trim($l), $matches );
$matches[1] = trim($matches[1]);
$matches[2] = trim($matches[2]);
if ( $matches[1] and $matches[2] )
{
$matches[1] = str_replace( '&', '&amp;', str_replace( '&amp;', '&', $matches[1] ) );
$links[] = $matches;
}
}
if( !count($links) )
{
return;
}
return $this->registry->getClass('output')->getTemplate('portal')->siteNavigation( $links );
}
/**
* Show the affiliates block
*
* @access public
* @return string HTML content to replace tag with
*/
public function portal_affiliates()
{
if ( ! $this->settings['csite_fav_show'] )
{
return;
}
$this->settings['csite_fav_contents'] = str_replace( "&#039;", "'", $this->settings['csite_fav_contents'] );
$this->settings['csite_fav_contents'] = str_replace( "&quot;", '"', $this->settings['csite_fav_contents'] );
$this->settings['csite_fav_contents'] = str_replace( '{board_url}', $this->settings['base_url'], $this->settings['csite_fav_contents'] );
return $this->registry->getClass('output')->getTemplate('portal')->affiliates();
}
}
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,27 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Portal default section
*
* @author $author$
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Portal
* @link http://www.iinvisionpower.com
* @version $Rev: 4948 $
**/
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();
}
/**
* Very simply returns the default section if one is not
* passed in the URL
*/
$DEFAULT_SECTION = 'portal';
@@ -0,0 +1 @@
<html>␍<head><title>IP.Board - Bulletin Board System</title></head>␍<body>␍<h1>403: IP.Board -> Forbidden</h1>␍<hr>␍You have reached this page in error, please use your back button to return to the forum.␍<hr>␍<a href="http://www.invisionboard.com/">IP.Board</a>␍</body>␍</html>␍
@@ -0,0 +1,353 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* IP.Portal
* Last Updated: $Date: 2009-10-01 10:02:08 -0400 (Thu, 01 Oct 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @subpackage Portal
* @link http://www.iinvisionpower.com
* @since 1st April 2004
* @version $Revision: 5190 $
*/
if ( ! defined( 'IN_ACP' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly.";
exit();
}
class admin_portal_portal_portal extends ipsCommand
{
/**
* Portal objects
*
* @access private
* @var array
*/
private $portal_objects = array();
/**
* Skin object
*
* @access private
* @var object Skin templates
*/
private $html;
/**
* Shortcut for url
*
* @access private
* @var string URL shortcut
*/
private $form_code;
/**
* Shortcut for url (javascript)
*
* @access private
* @var string JS URL shortcut
*/
private $form_code_js;
/**
* Main class entry point
*
* @access public
* @param object ipsRegistry reference
* @return void [Outputs to screen]
*/
public function doExecute( ipsRegistry $registry )
{
//-----------------------------------------
// Load HTML
//-----------------------------------------
$this->html = $this->registry->output->loadTemplate( 'cp_skin_portal' );
//-----------------------------------------
// Set up stuff
//-----------------------------------------
$this->form_code = $this->html->form_code = 'module=portal&amp;section=portal';
$this->form_code_js = $this->html->form_code_js = 'module=portal&section=portal';
//-----------------------------------------
// Load Language
//-----------------------------------------
ipsRegistry::getClass( 'class_localization')->loadLanguageFile( array( 'admin_portal' ) );
//-------------------------------
// Get portal objects
//-------------------------------
$this->_getPortalObjects();
//-----------------------------------------
// What to do?
//-----------------------------------------
switch($this->request['do'])
{
case 'portal_settings':
$this->_portalSettings();
break;
case 'portal_viewtags':
$this->_portalViewTags();
break;
case 'manage':
default:
$this->_portalList();
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();
}
/**
* Rebuild portal cache
*
* @access public
* @return void
*/
public function portalRebuildCache()
{
$cache = array();
if ( ! is_array( $this->portal_objects ) or ! count( $this->portal_objects ) )
{
$this->_getPortalObjects();
}
$cache = $this->portal_objects;
$this->cache->setCache( 'portal', $cache, array( 'array' => 1 ) );
}
/**
* View portal tags (settings)
*
* @access private
* @return void [Outputs to screen]
*/
private function _portalViewTags()
{
//-------------------------------
// INIT
//-------------------------------
$pc_key = IPSText::alphanumericalClean( $this->request['pc_key'] );
foreach( $this->portal_objects as $key => $data )
{
if( $key == $pc_key )
{
$file = $data['_cfg_location'];
}
}
//-------------------------------
// Check
//-------------------------------
if ( ! $pc_key OR ! file_exists( $file ) )
{
$this->registry->output->global_message = $this->lang->words['error_no_key'];
$this->_portalList();
return;
}
//-------------------------------
// Grab config file
//-------------------------------
require( $file );
$this->registry->output->html .= $this->html->portal_pop_overview( $PORTAL_CONFIG['pc_title'], $PORTAL_CONFIG['pc_exportable_tags'] );
//-------------------------------
// Print
//-------------------------------
$this->registry->output->printPopupWindow();
}
/**
* Show settings for the portal
*
* @access private
* @return void [Outputs to screen]
*/
private function _portalSettings()
{
//-------------------------------
// INIT
//-------------------------------
$pc_key = IPSText::alphanumericalClean( $this->request['pc_key'] );
foreach( $this->portal_objects as $key => $data )
{
if( $key == $pc_key )
{
$file = $data['_cfg_location'];
}
}
//-------------------------------
// Check
//-------------------------------
if ( ! $pc_key OR ! file_exists( $file ) )
{
$this->registry->output->global_message = $this->lang->words['error_no_key'];
$this->_portalList();
return;
}
//-------------------------------
// Grab config file
//-------------------------------
require ( $file );
if ( ! $PORTAL_CONFIG['pc_settings_keyword'] )
{
$this->registry->output->global_message = $this->lang->words['error_no_settings'];
$this->_portalList();
return;
}
//-------------------------------
// Grab, init and load settings
//-------------------------------
require_once( IPSLib::getAppDir( 'core' ).'/modules_admin/tools/settings.php' );
$settings = new admin_core_tools_settings();
$settings->makeRegistryShortcuts( $this->registry );
ipsRegistry::getClass('class_localization')->loadLanguageFile( array( 'admin_tools' ), 'core' );
$settings->html = $this->registry->output->loadTemplate( 'cp_skin_tools', 'core' );
$settings->form_code = $settings->html->form_code = 'module=tools&amp;section=settings';
$settings->form_code_js = $settings->html->form_code_js = 'module=tools&section=settings';
$this->request['conf_title_keyword'] = $PORTAL_CONFIG['pc_settings_keyword'];
$settings->return_after_save = $this->settings['base_url'] . $this->form_code . '&do=portal_settings&pc_key='.$pc_key;
$settings->base_nav_url = $this->settings['base_url'] . $this->form_code . '&do=portal_settings&pc_key='.$pc_key;
$settings->_viewSettings();
}
/**
* List the portal objects
*
* @access private
* @return void [Outputs to screen]
*/
private function _portalList()
{
$this->registry->output->html .= $this->html->portal_overview( $this->portal_objects );
//-------------------------------
// Update cache
//-------------------------------
$this->portalRebuildCache();
}
/**
* Get the portal objects from disk
*
* @access private
* @return void [Outputs to screen]
*/
private function _getPortalObjects()
{
//-------------------------------
// Loop over each application
//-------------------------------
foreach( ipsRegistry::$applications as $_app_dir => $app_data )
{
//-------------------------------
// Get the path to the plugins
//-------------------------------
$path = IPSLib::getAppDir( $_app_dir ) . '/extensions/portalPlugins';
//-------------------------------
// Does it exist?
//-------------------------------
if( !is_dir($path) OR !file_exists($path) )
{
continue;
}
//-------------------------------
// Open the dir and grab configs
//-------------------------------
try
{
foreach( new DirectoryIterator($path) as $file )
{
if( $file->isDot() OR $file->isDir() )
{
continue;
}
//-------------------------------
// This is a file...
//-------------------------------
if( $file->isFile() )
{
preg_match( "#^(.*)-cfg\.php$#", $file->getFilename(), $matches );
//-------------------------------
// And it's a conf file, yahhh!
//-------------------------------
if ( $matches[0] AND $matches[1] )
{
$PORTAL_CONFIG = array();
require_once( $file->getPathname() );
if ( is_array( $PORTAL_CONFIG ) AND count( $PORTAL_CONFIG ) )
{
$PORTAL_CONFIG['pc_key'] = $matches[1];
$PORTAL_CONFIG['_cfg_location'] = str_replace( '\\', '/', $file->getPathname() );
$PORTAL_CONFIG['_file_location'] = str_replace( '\\', '/', str_replace( '-cfg', '', $file->getPathname() ) );
$this->portal_objects[ $matches[1] ] = $PORTAL_CONFIG;
}
}
}
}
} catch ( Exception $e ) {}
}
if ( ! count($this->portal_objects) )
{
$this->registry->output->global_message = $this->lang->words['error_no_dir'];
return;
}
}
}
Loaded 100 of 3755 files, more files were not shown because too many files have changed in this diff. Show more