| Current Path : /home/w/u/e/wuectly/www/03cbe/ |
| Current File : /home/w/u/e/wuectly/www/03cbe/events.tar |
view.html.php 0000604 00000016450 15245622216 0007201 0 ustar 00 <?php
/**
*------------------------------------------------------------------------------
* iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
*------------------------------------------------------------------------------
* @package com_icagenda
* @copyright Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
*
* @license GNU General Public License version 3 or later; see LICENSE.txt
* @author Cyril Rezé (Lyr!C)
* @link http://www.joomlic.com
*
* @version 3.5.6 2015-06-22
* @since 1.0
*------------------------------------------------------------------------------
*/
// No direct access to this file
defined('_JEXEC') or die();
/**
* View class Admin - List of Events - iCagenda.
*/
class iCagendaViewEvents extends JViewLegacy
{
protected $params;
protected $state;
protected $items;
protected $pagination;
protected $categories;
protected $upcoming;
/**
* Display the view
*/
public function display($tpl = null)
{
$app = JFactory::getApplication();
// Joomla 2.5
if (version_compare(JVERSION, '3.0', 'lt'))
{
jimport( 'joomla.environment.request' );
JHtml::stylesheet( 'com_icagenda/icagenda-back.j25.css', false, true );
}
$this->params = JComponentHelper::getParams('com_icagenda');
$this->state = $this->get('State');
$this->items = $this->get('Items');
$this->pagination = $this->get('Pagination');
$this->categories = $this->get('Categories');
$this->upcoming = $this->get('Upcoming');
$this->itemids = $this->get('MenuItemID');
// Check for errors.
if (count($errors = $this->get('Errors')))
{
JError::raiseError(500, implode("\n", $errors));
return false;
}
$icagenda_categories = class_exists('icagendaCategories') ? icagendaCategories::getList('1') : false;
if ( ! $icagenda_categories)
{
$app->enqueueMessage( JText::_('COM_ICAGENDA_ALERT_NO_CATEGORY_PUBLISHED')
. '<br /><br /><a class="btn btn-success" href="index.php?option=com_icagenda&view=category&layout=edit" >'
. JText::_('COM_ICAGENDA_LEGEND_NEW_CATEGORY') . '</a>'
. ' <a class="btn btn-inverse btn-mini" href="index.php?option=com_icagenda&view=categories" >'
. JText::_('ICCATEGORIES')
. '</a>', 'warning' );
}
// We don't need toolbar in the modal window.
if ($this->getLayout() !== 'modal')
{
$this->addToolbar();
if (version_compare(JVERSION, '3.0', 'ge'))
{
$this->sidebar = JHtmlSidebar::render();
}
}
$canDo = iCagendaHelper::getActions();
if (defined('IC_LIBRARY')
&& $canDo->get('icagenda.access.events'))
{
parent::display($tpl);
}
else
{
if (defined('IC_LIBRARY')) $app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR'), 'warning');
$app->redirect(htmlspecialchars_decode('index.php?option=com_icagenda&view=icagenda'));
}
}
/**
* Add the page title and toolbar.
*
* @since 1.6
*/
protected function addToolbar()
{
require_once JPATH_COMPONENT . '/helpers/icagenda.php';
$state = $this->get('State');
$user = JFactory::getUser();
$userId = $user->get('id');
$canDo = iCagendaHelper::getActions();
$icagenda_categories = class_exists('icagendaCategories') ? icagendaCategories::getList() : false;
// Set Title
if (version_compare(JVERSION, '3.0', 'lt'))
{
JToolBarHelper::title('iCagenda - ' . JText::_('COM_ICAGENDA_TITLE_EVENTS'), 'events.png');
}
else
{
JToolBarHelper::title('iCagenda <span style="font-size:14px;">- ' . JText::_('COM_ICAGENDA_TITLE_EVENTS') . '</span>', 'calendar');
}
$icTitle = JText::_('COM_ICAGENDA_TITLE_EVENTS');
$document = JFactory::getDocument();
$app = JFactory::getApplication();
$sitename = $app->getCfg('sitename');
$title = $app->getCfg('sitename') . ' - ' . JText::_('JADMINISTRATION') . ' - iCagenda: ' . $icTitle;
$document->setTitle($title);
//Check if the form exists before showing the add/edit buttons
$formPath = JPATH_COMPONENT_ADMINISTRATOR . '/views/event';
if (file_exists($formPath)
&& $icagenda_categories
)
{
if ($canDo->get('core.create'))
{
JToolBarHelper::addNew('event.add','JTOOLBAR_NEW');
}
if ($canDo->get('core.edit') || $canDo->get('core.edit.own'))
{
JToolBarHelper::editList('event.edit');
}
}
if ($canDo->get('core.edit.state')
&& $icagenda_categories
)
{
if (isset($this->items[0]->state))
{
JToolBarHelper::divider();
JToolBarHelper::custom('events.publish', 'publish.png', 'publish_f2.png','JTOOLBAR_PUBLISH', true);
JToolBarHelper::custom('events.unpublish', 'unpublish.png', 'unpublish_f2.png', 'JTOOLBAR_UNPUBLISH', true);
}
else
{
// If this component does not use state then show a direct delete button as we can not trash
JToolBarHelper::deleteList('', 'events.delete','JTOOLBAR_DELETE');
}
if (isset($this->items[0]->state))
{
JToolBarHelper::divider();
JToolBarHelper::archiveList('events.archive','JTOOLBAR_ARCHIVE');
}
if (isset($this->items[0]->checked_out))
{
JToolBarHelper::custom('events.checkin', 'checkin.png', 'checkin_f2.png', 'JTOOLBAR_CHECKIN', true);
}
}
// Show trash and delete for components that uses the state field
if (isset($this->items[0]->state)
&& $icagenda_categories
)
{
if ($state->get('filter.state') == -2 && $canDo->get('core.delete'))
{
JToolBarHelper::deleteList('', 'events.delete','JTOOLBAR_EMPTY_TRASH');
JToolBarHelper::divider();
}
elseif ($canDo->get('core.edit.state'))
{
JToolBarHelper::trash('events.trash','JTOOLBAR_TRASH');
JToolBarHelper::divider();
}
}
if ($canDo->get('core.admin'))
{
JToolBarHelper::preferences('com_icagenda');
}
if (version_compare(JVERSION, '3.0', 'ge'))
{
JHtmlSidebar::setAction('index.php?option=com_icagenda&view=events');
JHtmlSidebar::addFilter(
JText::_('COM_ICAGENDA_SELECT_STATE'),
'filter_published',
JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.state'), true)
);
JHtmlSidebar::addFilter(
JText::_('COM_ICAGENDA_SELECT_CATEGORY'),
'filter_category',
JHtml::_('select.options', $this->get('Categories'), 'value', 'text', $this->state->get('filter.category'), true)
);
JHtmlSidebar::addFilter(
JText::_('COM_ICAGENDA_SELECT_DATES'),
'filter_upcoming',
JHtml::_('select.options', $this->get('Upcoming'), 'value', 'text', $this->state->get('filter.upcoming'), true)
);
JHtmlSidebar::addFilter(
JText::_('COM_ICAGENDA_SELECT_SITE_ITEMID'),
'filter_site_itemid',
JHtml::_('select.options', $this->get('MenuItemID'), 'value', 'text', $this->state->get('filter.site_itemid'), true)
);
}
}
/**
* Method to save the submitted ordering values for records via AJAX.
*
* @return void
*
* @since 3.0
*/
public function saveOrderAjax()
{
// Get the input
$input = JFactory::getApplication()->input;
$pks = $input->post->get('cid', array(), 'array');
$order = $input->post->get('order', array(), 'array');
// Sanitize the input
JArrayHelper::toInteger($pks);
JArrayHelper::toInteger($order);
// Get the model
$model = $this->getModel();
// Save the ordering
$return = $model->saveorder($pks, $order);
if ($return)
{
echo "1";
}
// Close the application
JFactory::getApplication()->close();
}
}
tmpl/default.php 0000604 00000064400 15245622216 0007662 0 ustar 00 <?php
/**
*------------------------------------------------------------------------------
* iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
*------------------------------------------------------------------------------
* @package com_icagenda
* @copyright Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
*
* @license GNU General Public License version 3 or later; see LICENSE.txt
* @author Cyril Rezé (Lyr!C)
* @link http://www.joomlic.com
*
* @version 3.5.6 2015-06-29
* @since 1.0
*------------------------------------------------------------------------------
*/
// No direct access to this file
defined('_JEXEC') or die();
JHtml::_('behavior.modal');
JHtml::_('behavior.multiselect');
$app = JFactory::getApplication();
$user = JFactory::getUser();
$userId = $user->get('id');
$listOrder = $this->state->get('list.ordering');
$listDirn = $this->state->get('list.direction');
$canOrder = $user->authorise('core.edit.state', 'com_icagenda');
$saveOrder = $listOrder == 'a.ordering';
// Switch Joomla 2.5 / 3.x
if (version_compare(JVERSION, '3.0', 'lt'))
{
JHtml::_('behavior.tooltip');
}
else
{
// Include the component HTML helpers.
JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html');
JHtml::_('bootstrap.tooltip');
JHtml::_('formbehavior.chosen', 'select');
JHtml::_('dropdown.init');
$archived = $this->state->get('filter.published') == 2 ? true : false;
$trashed = $this->state->get('filter.published') == -2 ? true : false;
if ($saveOrder)
{
$saveOrderingUrl = 'index.php?option=com_icagenda&task=events.saveOrderAjax&tmpl=component';
JHtml::_('sortablelist.sortable', 'eventsList', 'adminForm', strtolower($listDirn), $saveOrderingUrl);
}
}
// Check if GD is enabled
if (extension_loaded('gd') && function_exists('gd_info'))
{
$thumb_generator = $this->params->get('thumb_generator', 1);
// echo "It looks like GD is installed";
}
else
{
$thumb_generator = 0;
JError::raiseWarning('101', JText::_('COM_ICAGENDA_PHP_ERROR_GD'));
}
// Check if fopen is allowed
$fopen = true;
$result = ini_get('allow_url_fopen');
if (empty($result))
{
JError::raiseWarning('101', JText::_('COM_ICAGENDA_PHP_ERROR_FOPEN'));
$fopen = false;
}
// 3.3.3
$sortFields = array();
?>
<form action="<?php echo JRoute::_('index.php?option=com_icagenda&view=events'); ?>" method="post" name="adminForm" id="adminForm">
<?php if (!empty($this->sidebar)) : ?>
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<?php else : ?>
<div id="j-main-container">
<?php endif;?>
<!-- Filters Joomla 2.5 (DEPRECATED iCagenda 3.7.x and after) -->
<?php if (version_compare(JVERSION, '3.0', 'lt')) : ?>
<fieldset id="filter-bar">
<div class="filter-search fltlft">
<label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label>
<input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('Search'); ?>" />
<button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button>
<button type="button" onclick="document.id('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button>
</div>
<div class="filter-select fltrt">
<select name="filter_published" class="inputbox" onchange="this.form.submit()">
<option value=""><?php echo JText::_('COM_ICAGENDA_SELECT_STATE');?></option>
<?php echo JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), "value", "text", $this->state->get('filter.state'), true);?>
</select>
<select name="filter_category" class="inputbox" onchange="this.form.submit()">
<option value=""><?php echo JText::_('COM_ICAGENDA_SELECT_CATEGORY');?></option>
<?php echo JHtml::_('select.options', $this->categories, 'value', 'text', $this->state->get('filter.category'));?>
</select>
<select name="filter_upcoming" class="inputbox" onchange="this.form.submit()">
<option value=""><?php echo JText::_('COM_ICAGENDA_SELECT_DATES');?></option>
<?php echo JHtml::_('select.options', $this->upcoming, 'value', 'text', $this->state->get('filter.upcoming'));?>
</select>
<select name="filter_site_itemid" class="inputbox" onchange="this.form.submit()">
<option value=""><?php echo JText::_('COM_ICAGENDA_SELECT_SITE_ITEMID');?></option>
<?php echo JHtml::_('select.options', $this->itemids, 'value', 'text', $this->state->get('filter.site_itemid'));?>
</select>
</div>
</fieldset>
<div class="clr"> </div>
<!-- Search Tools Joomla 3 -->
<?php else : ?>
<div id="filter-bar" class="btn-toolbar">
<div class="filter-search btn-group pull-left">
<label for="filter_search" class="element-invisible"><?php echo JText::_('COM_ICAGENDA_FILTER_SEARCH_EVENTS_DESC'); ?></label>
<input type="text" name="filter_search" placeholder="<?php echo JText::_('COM_ICAGENDA_FILTER_SEARCH_EVENTS_DESC'); ?>" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_ICAGENDA_FILTER_SEARCH_EVENTS_DESC'); ?>" />
</div>
<div class="btn-group pull-left">
<button class="btn tip hasTooltip" type="submit" title="<?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?>"><i class="icon-search"></i></button>
<button class="btn tip hasTooltip" type="button" onclick="document.id('filter_search').value='';this.form.submit();" title="<?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?>"><i class="icon-remove"></i></button>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC'); ?></label>
<?php echo $this->pagination->getLimitBox(); ?>
</div>
</div>
<div class="clearfix"> </div>
<?php endif;?>
<?php if(version_compare(JVERSION, '3.0', 'lt')) : ?>
<table class="adminlist">
<?php else : ?>
<table class="table table-striped" id="eventsList">
<?php endif; ?>
<!-- START HEAD -->
<thead>
<tr>
<?php if(version_compare(JVERSION, '3.0', 'ge')) : ?>
<!-- Ordering HEADER Joomla 3.x -->
<th width="1%" class="nowrap center hidden-phone">
<?php echo JHtml::_('grid.sort', '<i class="icon-menu-2"></i>', 'a.ordering', $listDirn, $listOrder, null, 'asc', 'JGRID_HEADING_ORDERING'); ?>
</th>
<?php endif; ?>
<!-- CheckBox HEADER -->
<th width="1%" class="hidden-phone">
<input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" />
</th>
<!-- Status HEADER -->
<th width="1%" style="min-width:55px" class="nowrap center">
<?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?>
</th>
<!-- Approval HEADER -->
<th width="1%" style="min-width:55px" class="nowrap center">
<?php echo JHtml::_('grid.sort', 'COM_ICAGENDA_EVENTS_APPROVAL', 'a.approval', $listDirn, $listOrder); ?>
</th>
<!-- Image HEADER -->
<th width="130px" class="nowrap center hidden-phone">
<?php echo JHtml::_('grid.sort', 'COM_ICAGENDA_EVENTS_IMAGE', 'a.image', $listDirn, $listOrder); ?>
</th>
<!-- Title HEADER -->
<th>
<?php echo JHtml::_('grid.sort', 'COM_ICAGENDA_EVENTS_TITLE', 'a.title', $listDirn, $listOrder); ?> |
<?php echo JHtml::_('grid.sort', 'COM_ICAGENDA_TITLE_CATEGORY', 'category', $listDirn, $listOrder); ?>
<?php //echo JHtml::_('grid.sort', 'COM_ICAGENDA_FORM_FRONTEND_SUBMIT_ITEMID_LBL', 'a.site_itemid', $listDirn, $listOrder); ?>
</th>
<!-- Image HEADER -->
<th width="15%" class="nowrap hidden-phone">
<?php echo JHtml::_('grid.sort', 'COM_ICAGENDA_EVENTS_NEXT', 'a.next', $listDirn, $listOrder); ?>
</th>
<?php if(version_compare(JVERSION, '3.0', 'lt')) : ?>
<!-- Ordering HEADER Joomla 2.5 -->
<?php if (isset($this->items[0]->ordering)) { ?>
<th width="10%">
<?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ORDERING', 'a.ordering', $listDirn, $listOrder); ?>
<?php if ($canOrder && $saveOrder) :?>
<?php echo JHtml::_('grid.order', $this->items, 'filesave.png', 'events.saveorder'); ?>
<?php endif; ?>
</th>
<?php } ?>
<?php endif; ?>
<!-- Access HEADER -->
<th width="10%" class="nowrap hidden-phone">
<?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'access', $listDirn, $listOrder); ?>
</th>
<!-- Author HEADER -->
<th width="10%" class="nowrap hidden-phone">
<?php echo JHtml::_('grid.sort', 'JAUTHOR', 'a.username', $listDirn, $listOrder); ?>
</th>
<!-- Language HEADER -->
<th width="5%" class="nowrap hidden-phone">
<?php echo JHtml::_('grid.sort', 'JGRID_HEADING_LANGUAGE', 'language', $listDirn, $listOrder); ?>
</th>
<!-- ID HEADER -->
<th width="1%" class="nowrap hidden-phone">
<?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?>
</th>
</tr>
</thead>
<!-- END HEAD -->
<!-- START FOOT -->
<tfoot>
<tr>
<td colspan="12">
<?php echo $this->pagination->getListFooter(); ?>
</td>
</tr>
</tfoot>
<!-- END FOOT -->
<!-- START BODY -->
<tbody valign="top">
<?php foreach ($this->items as $i => $item) : ?>
<?php
$ordering = ($listOrder == 'a.ordering');
$canCreate = $user->authorise('core.create', 'com_icagenda');
$canEdit = $user->authorise('core.edit', 'com_icagenda');
$canCheckin = $user->authorise('core.manage', 'com_icagenda') || $item->checked_out == $userId || $item->checked_out == 0;
$canChange = $user->authorise('core.edit.state', 'com_icagenda') && $canCheckin;
$canEditOwn = $user->authorise('core.edit.own', 'com_icagenda') && $item->created_by == $userId;
// $canEditOwn = $user->authorise('core.edit.own', 'com_icagenda.events.'.$item->id) && $item->created_by == $userId;
// Get Access Names
$db = JFactory::getDBO();
$db->setQuery(
'SELECT `title`' .
' FROM `#__viewlevels`' .
' WHERE `id` = '. (int) $item->access
);
$access_title = $db->loadObject()->title;
// Get Today and Next Date (Y-m-d)
$eventTimeZone = null;
$today = JHtml::date('now', 'Y-m-d');
$nextdate = JHtml::date($item->next, 'Y-m-d', $eventTimeZone);
$isDate = iCDate::isDate($item->next);
?>
<tr class="row<?php echo $i % 2; ?>" sortable-group-id="<?php echo $item->catid?>">
<!-- Ordering Joomla 3.x -->
<?php if(version_compare(JVERSION, '3.0', 'ge')) : ?>
<td class="order nowrap center hidden-phone">
<?php if ($canChange) :
$disableClassName = '';
$disabledLabel = '';
if ( ! $saveOrder) :
$disabledLabel = JText::_('JORDERINGDISABLED');
$disableClassName = 'inactive tip-top';
endif; ?>
<span class="sortable-handler hasTooltip <?php echo $disableClassName; ?>" title="<?php echo $disabledLabel; ?>">
<i class="icon-menu"></i>
</span>
<input type="text" style="display:none" name="order[]" size="5" value="<?php echo $item->ordering; ?>" class="width-20 text-area-order " />
<?php else : ?>
<span class="sortable-handler inactive" >
<i class="icon-menu"></i>
</span>
<?php endif; ?>
</td>
<?php endif; ?>
<!-- CheckBox Joomla -->
<td class="center hidden-phone">
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
</td>
<!-- Status Joomla -->
<?php if (isset($this->items[0]->state)) : ?>
<td class="center">
<?php
// Control of dates if valid (EDIT SINCE VERSION 3.0)
if ( ! $isDate)
{
echo '<br/><i class="icon-warning"></i><br/>';
echo '<span style="color:red;"><strong>' . JText::_('COM_ICAGENDA_NO_VALID_DATE') . '</strong></span>';
if ($item->state == '1')
{
//$state = 0;
$db = Jfactory::getDbo();
$query = $db->getQuery(true);
$query->clear();
$query->update(' #__icagenda_events ');
$query->set(' state = 0 ' );
$query->where(' id = ' . (int) $item->id );
$db->setQuery((string)$query);
$db->query($query);
}
}
else
{
echo JHtml::_('jgrid.published', $item->state, $i, 'events.', $canChange, 'cb');
}
?>
</td>
<td class="center">
<?php
require_once JPATH_COMPONENT .'/helpers/html/events.php';
$approved = empty( $item->approval ) ? 0 : 1;
echo JHtml::_('jgrid.state', JHtmlEvents::approveEvents(), $approved, $i, 'events.', (boolean) $approved);
?>
<?php
//require_once JPATH_COMPONENT .'/helpers/approved.php';
//echo JHtml::_('approved.approved', $item->approval, $i, 'events.'); ?>
<?php //echo JHtml::_('approved.approved', $item->approval, $i); ?>
<?php //echo icHtmlHelper::approveEvent($item->approval, $i, 'events', $canChange, 'cb'); ?>
</td>
<?php endif; ?>
<!-- Image Joomla -->
<td class="small hidden-phone">
<div style="background:#F4F4F4; padding:5px; width:120px; text-align:center; overflow:hidden;">
<?php
// Set if run iCthumb
if (($item->image) && ($thumb_generator == 1))
{
// Get media path
$params_media = JComponentHelper::getParams('com_media');
$image_path = $params_media->get('image_path', 'images');
// Paths to thumbs folder
$thumbsPath = $image_path.'/icagenda/thumbs';
// Large Size Options
$l_thumbOptions = $this->params->get('thumb_large');
$l_width = is_numeric($l_thumbOptions[0]) ? $l_thumbOptions[0] : '900';
$l_height = is_numeric($l_thumbOptions[1]) ? $l_thumbOptions[1] : '600';
$l_quality = is_numeric($l_thumbOptions[2]) ? $l_thumbOptions[2] : '100';
$l_crop = ! empty($l_thumbOptions[3]) ? true : false;
// Medium Size Options
$m_thumbOptions = $this->params->get('thumb_medium');
$m_width = is_numeric($m_thumbOptions[0]) ? $l_thumbOptions[0] : '300';
$m_height = is_numeric($m_thumbOptions[1]) ? $l_thumbOptions[1] : '300';
$m_quality = is_numeric($m_thumbOptions[2]) ? $l_thumbOptions[2] : '100';
$m_crop = ! empty($m_thumbOptions[3]) ? true : false;
// Small Size Options
$s_thumbOptions = $this->params->get('thumb_small');
$s_width = is_numeric($s_thumbOptions[0]) ? $s_thumbOptions[0] : '100';
$s_height = is_numeric($s_thumbOptions[1]) ? $s_thumbOptions[1] : '100';
$s_quality = is_numeric($s_thumbOptions[2]) ? $s_thumbOptions[2] : '100';
$s_crop = ! empty($s_thumbOptions[3]) ? true : false;
// XSmall Size Options
$xs_thumbOptions = $this->params->get('thumb_xsmall');
$xs_width = is_numeric($xs_thumbOptions[0]) ? $xs_thumbOptions[0] : '48';
$xs_height = is_numeric($xs_thumbOptions[1]) ? $xs_thumbOptions[1] : '48';
$xs_quality = is_numeric($xs_thumbOptions[2]) ? $xs_thumbOptions[2] : '80';
$xs_crop = ! empty($xs_thumbOptions[3]) ? true : false;
// Generate large thumb if not exist
iCThumbGet::thumbnail($item->image, $thumbsPath, 'themes',
$l_width, $l_height, $l_quality, $l_crop, 'ic_large', null, true);
// Generate medium thumb if not exist
iCThumbGet::thumbnail($item->image, $thumbsPath, 'themes',
$m_width, $m_height, $m_quality, $m_crop, 'ic_medium');
// Generate small thumb if not exist
iCThumbGet::thumbnail($item->image, $thumbsPath, 'themes',
$s_width, $s_height, $s_quality, $s_crop, 'ic_small');
// Generate x-small thumb if not exist
iCThumbGet::thumbnail($item->image, $thumbsPath, 'themes',
$xs_width, $xs_height, $xs_quality, $xs_crop, 'ic_xsmall');
// Sub-folder Destination ($thumbsPath / 'subfolder' /)
$subFolder = 'system';
// Display thumbnail in admin events list
echo iCThumbGet::thumbnailImgTagLinkModal($item->image, $thumbsPath, $subFolder, '120', '100', '100', false);
}
elseif ($item->image
&& $thumb_generator == 0)
{
if (filter_var($item->image, FILTER_VALIDATE_URL))
{
echo '<a href="' . $item->image . '" class="modal">';
echo '<img src="' . $item->image . '" alt="" /></a>';
}
else
{
echo '<a href="../' . $item->image . '" class="modal">';
echo '<img src="../' . $item->image . '" alt="" /></a>';
}
}
else
{
echo '<img style="max-width:120px; max-height:100px;" src="../media/com_icagenda/images/nophoto.jpg" alt="" />';
}
// END iCthumb
?>
</div>
</td>
<!-- Title & Category -->
<td class="has-context">
<div class="pull-left">
<?php if ($item->checked_out) : ?>
<?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'events.', $canCheckin); ?>
<?php endif; ?>
<?php if ($item->language == '*'):?>
<?php $language = JText::alt('JALL', 'language'); ?>
<?php else:?>
<?php $language = $item->language ? $this->escape($item->language) : JText::_('JUNDEFINED'); ?>
<?php endif;?>
<?php if ($canEdit || $canEditOwn) : ?>
<a href="<?php echo JRoute::_('index.php?option=com_icagenda&task=event.edit&id=' . $item->id); ?>" title="<?php echo JText::_('JACTION_EDIT'); ?>">
<?php echo $this->escape($item->title); ?></a>
<?php else : ?>
<span title="<?php echo JText::sprintf('JFIELD_ALIAS_LABEL', $this->escape($item->alias)); ?>"><?php echo $this->escape($item->title); ?></span>
<?php endif; ?>
<div class="small">
<?php echo JText::_('JCATEGORY') . ": " . $this->escape($item->category); ?>
</div>
<?php if (($item->place) OR ($item->city) OR ($item->country)) : ?>
<p>
<?php if ($item->place) : ?>
<div class="small iC-italic-grey">
<?php echo JText::_('COM_ICAGENDA_TITLE_LOCATION') . ": " . $this->escape($item->place); ?>
</div>
<?php endif; ?>
<?php if ($item->city) : ?>
<div class="small iC-italic-grey">
<?php echo JText::_('COM_ICAGENDA_FORM_LBL_EVENT_CITY') . ": " . $this->escape($item->city); ?>
</div>
<?php endif; ?>
<?php if ($item->country) : ?>
<div class="small iC-italic-grey">
<?php echo JText::_('COM_ICAGENDA_FORM_LBL_EVENT_COUNTRY') . ": " . $this->escape($item->country); ?>
</div>
</p>
<?php endif; ?>
<?php endif; ?>
<?php if (!empty($item->site_itemid)) : ?>
<a class="hasTooltip" href="<?php echo JURI::root() . 'index.php?option=com_icagenda&view=submit&Itemid=' . $item->site_itemid; ?>" title="<?php echo JText::_('COM_ICAGENDA_FORM_FRONTEND_SUBMIT_ITEMID_DESC'); ?>" target="_blank">
<div class="btn btn-primary btn-mini">
<?php echo JText::_('COM_ICAGENDA_FORM_FRONTEND_SUBMIT_ITEMID_LBL') . ": " . $this->escape($item->site_itemid); ?>
</div>
</a>
<?php endif; ?>
</div>
<?php if(version_compare(JVERSION, '3.0', 'ge')) : ?>
<!-- DropDown Edit Joomla 3 -->
<div class="pull-left">
<?php
if ($canChange || $canEditOwn)
{
// Create dropdown items
JHtml::_('dropdown.edit', $item->id, 'event.');
JHtml::_('dropdown.divider');
if ($item->state) :
JHtml::_('dropdown.unpublish', 'cb' . $i, 'events.');
else :
JHtml::_('dropdown.publish', 'cb' . $i, 'events.');
endif;
// if ($item->featured) :
// JHtml::_('dropdown.unfeatured', 'cb' . $i, 'events.');
// else :
// JHtml::_('dropdown.featured', 'cb' . $i, 'events.');
// endif;
JHtml::_('dropdown.divider');
if ($archived) :
JHtml::_('dropdown.unarchive', 'cb' . $i, 'events.');
else :
JHtml::_('dropdown.archive', 'cb' . $i, 'events.');
endif;
if ($item->checked_out) :
JHtml::_('dropdown.checkin', 'cb' . $i, 'events.');
endif;
if ($trashed) :
JHtml::_('dropdown.untrash', 'cb' . $i, 'events.');
else :
JHtml::_('dropdown.trash', 'cb' . $i, 'events.');
endif;
// Render dropdown list
echo JHtml::_('dropdown.render');
}
?>
</div>
<?php endif; ?>
</td>
<!-- Dates -->
<td class="small hidden-phone">
<?php
$date_format_global = $this->params->get('date_format_global', 'Y - m - d');
$separator = $this->params->get('date_separator', ' ');
$eventDate = iCGlobalize::dateFormat($item->next, $date_format_global, $separator);
$eventTime = $item->displaytime ? ' - ' . JHtml::date($item->next, 'H:i', null) : '';
$eventDate = $eventDate ? $eventDate : date('Y-m-d', strtotime($item->next));
$dateshow = $eventDate . $eventTime;
// Upcoming Next Date
if (iCDate::isDate($item->next))
{
if ($nextdate > $today)
{
echo '<div class="ic-nextdate ic-upcoming">';
echo JText::_('COM_ICAGENDA_EVENTS_NEXT_FUTUR') . '<br />';
echo '<center>' . $dateshow . '</center>';
echo '</div>';
}
// Next Date is today
elseif ($nextdate == $today)
{
echo '<div class="ic-nextdate ic-today">';
echo JText::_('COM_ICAGENDA_EVENTS_NEXT_TODAY') . '<br />';
echo '<center>' . $dateshow . '</center>';
echo '</div>';
}
elseif ($nextdate < $today)
{
echo '<div class="ic-nextdate ic-past">';
echo JText::_('COM_ICAGENDA_EVENTS_NEXT_PAST') . '<br />';
echo '<center>' . $dateshow . '</center>';
echo '</div>';
}
}
else
{
echo '<div class="ic-nextdate ic-no-date">';
echo JText::_('COM_ICAGENDA_EVENTS_NEXT_ALERT');
echo '</div>';
}
?>
</td>
<?php if(version_compare(JVERSION, '3.0', 'lt')) : ?>
<!-- Ordering Joomla 2.5 -->
<?php if (isset($this->items[0]->ordering)) : ?>
<td class="order">
<?php if ($canChange) : ?>
<?php if ($saveOrder) :?>
<?php if ($listDirn == 'asc') : ?>
<span><?php echo $this->pagination->orderUpIcon($i, true, 'events.orderup', 'JLIB_HTML_MOVE_UP', $ordering); ?></span>
<span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, true, 'events.orderdown', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span>
<?php elseif ($listDirn == 'desc') : ?>
<span><?php echo $this->pagination->orderUpIcon($i, true, 'events.orderdown', 'JLIB_HTML_MOVE_UP', $ordering); ?></span>
<span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, true, 'events.orderup', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span>
<?php endif; ?>
<?php endif; ?>
<?php $disabled = $saveOrder ? '' : 'disabled="disabled"'; ?>
<input type="text" name="order[]" size="5" value="<?php echo $item->ordering;?>" <?php echo $disabled ?> class="text-area-order" />
<?php else : ?>
<?php echo $item->ordering; ?>
<?php endif; ?>
</td>
<?php endif; ?>
<?php endif; ?>
<!-- Access -->
<td class="small hidden-phone">
<?php echo $this->escape($access_title); ?>
</td>
<!-- Username -->
<td class="small hidden-phone">
<?php
if ($item->username == '' && ! $item->created_by)
{
$undefined = '<i>' . JText::_('JUNDEFINED') . '</i>';
echo $undefined;
}
elseif ( ! $item->created_by || ! $item->author_name)
{
echo $this->escape($item->username);
}
else
{
echo $this->escape($item->author_name);
echo ' [' . $this->escape($item->author_username) . ']';
}
?>
<?php //echo JText::_('JGLOBAL_USERNAME').': '.$this->escape($username); ?>
<?php if ($item->created_by_alias) : ?>
<p class="smallsub">
<?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->created_by_alias)); ?>
</p>
<?php endif; ?>
</td>
<!-- Language -->
<td class="small hidden-phone">
<?php if ($item->language == '*'):?>
<?php echo JText::alt('JALL', 'language'); ?>
<?php else:?>
<?php echo $item->language ? $this->escape($item->language) : JText::_('JUNDEFINED'); ?>
<?php endif; ?>
</td>
<!-- ID -->
<?php if (isset($this->items[0]->id)) : ?>
<td class="center hidden-phone">
<?php echo (int) $item->id; ?>
</td>
<?php endif; ?>
</tr>
<?php endforeach;
// Old Joomla versions asset_id issue. (all Joomla 2.5.x versions, and Joomla 3 NOT updated!)
$asset_issue = version_compare(JVERSION, '3.0', 'lt') ? true : false;
if ($asset_issue)
{
$ia = '0';
unset($msg);
unset($type);
$msg = $type = $front_submit = '';
$edittx = '<b>' . JText::_( 'JACTION_EDIT' ) . '</b>';
$savetx = '<b>' . JText::_( 'JSAVE' ) . '</b>';
foreach ($this->items as $i => $item)
{
if (($item->asset_id == '0') && ($item->state == '-2'))
{
$ia = $ia+1;
$front_submit = '1';
}
}
if ($front_submit == 1 && $ia == 1)
{
$app->enqueueMessage(JText::sprintf( 'COM_ICAGENDA_TRASH_FRONTEND_SUBMITTED_1', $edittx, $savetx ), 'notice');
}
elseif ($front_submit == 1 && $ia > 1)
{
$app->enqueueMessage(JText::sprintf( 'COM_ICAGENDA_TRASH_FRONTEND_SUBMITTED', $edittx, $savetx ), 'notice');
}
foreach ($this->items as $i => $item)
{
if ($item->asset_id == '0' && $item->state == '-2')
{
$editLink = 'index.php?option=com_icagenda&task=event.edit&id=' . $item->id;
$msg = '- ' . $item->title . ' [' . $item->id . '] : <a href="' . $editLink . '"><b>'.JText::_( 'JACTION_EDIT' ).'</b></a>';
$type = JText::_( 'JGLOBAL_LIST' ).' :';
}
if ( ! empty($msg))
{
$app->enqueueMessage($msg, $type);
}
}
}
?>
</tbody>
<!-- END BODY -->
</table>
<div>
<input type="hidden" name="task" value="" />
<input type="hidden" name="boxchecked" value="0" />
<input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" />
<input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" />
<?php echo JHtml::_('form.token'); ?>
</div>
</div>
</form>
tmpl/index.html 0000604 00000000122 15245622216 0007511 0 ustar 00 <html><body>
<img src="thumb.php?src=nophoto.jpg&x=50&y=50&f=0">
</body></html>
index.html 0000604 00000000037 15245622216 0006542 0 ustar 00 <!DOCTYPE html><title></title>
events.php 0000604 00000037135 15245723404 0006574 0 ustar 00 <?php
/**
*------------------------------------------------------------------------------
* iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
*------------------------------------------------------------------------------
* @package iCagenda
* @subpackage utilities
* @copyright Copyright (c)2014-2015 Cyril Rezé, Jooml!C - All rights reserved
*
* @license GNU General Public License version 3 or later; see LICENSE.txt
* @author Cyril Rezé (Lyr!C)
* @link http://www.joomlic.com
*
* @version 3.5.12 2015-10-01
* @since 3.4.0
*------------------------------------------------------------------------------
*/
// No direct access to this file
defined('_JEXEC') or die();
/**
* class icagendaEvents
*/
class icagendaEvents
{
/**
* Function to return event access (access levels, approval and event access status)
*
* @access public static
* @param $id - id of the event
* @return list array of access levels, approval and event access status
*
* @since 3.4.0
*/
static public function eventAccess($id = null)
{
// Preparing connection to db
$db = Jfactory::getDbo();
// Preparing the query
$query = $db->getQuery(true);
$query->select('e.state AS evtState, e.approval AS evtApproval, e.access AS evtAccess')
->from($db->qn('#__icagenda_events').' AS e')
->where($db->qn('e.id').' = '.$db->q($id));
$query->select('v.title AS accessName')
->join('LEFT', $db->quoteName('#__viewlevels') . ' AS v ON v.id = e.access');
$db->setQuery($query);
$eventAccess = $db->loadObject();
if ($eventAccess)
{
return $eventAccess;
}
else
{
return false;
}
}
/**
* Function to return feature Icons for an event
*
* @access public static
* @param $id - id of the event
* @return list array of feature icons
*
* @since 3.4.0
*/
public static function featureIcons($id = null)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('DISTINCT f.icon, f.icon_alt');
$query->from('`#__icagenda_feature_xref` AS fx');
$query->innerJoin("`#__icagenda_feature` AS f ON fx.feature_id=f.id AND f.state=1 AND f.icon<>'-1'");
$query->where('fx.event_id=' . $id);
$query->order('f.ordering DESC'); // Order descending because the icons are floated right
$db->setQuery($query);
$feature_icons = $db->loadObjectList();
return $feature_icons;
}
/**
* Function to return footer list of events
*
* @since 3.4.0
*/
public static function isListOfEvents()
{
$app = JFactory::getApplication();
$params = $app->getParams();
$list_of_events = $params->get('copy', '');
$core = $params->get('icsys');
$string = '<a href="ht';
$string.= 'tp://icag';
$string.= 'enda.jooml';
$string.= 'ic.com" target="_blank" style="font-weight: bold; text-decoration: none !important;">';
$string.= 'iCagenda';
$string.= '</a>';
$icagenda = JText::sprintf('ICAGENDA_THANK_YOU_NOT_TO_REMOVE', $string);
$default = 'Powered by ';
$footer = '<div style="text-align: center; font-size: 10px; text-decoration: none"><p>';
$footer.= preg_match('/iCagenda/',$icagenda) ? $icagenda : $default . $string;
$footer.= '</p></div>';
if ($list_of_events || $core == 'core')
{
echo $footer;
}
}
/**
* DAY in Date Box (list of events)
*
* @since 3.5.0
*/
public static function day($date, $item = null)
{
$eventTimeZone = null;
$this_date = JHtml::date($date, 'Y-m-d H:i', $eventTimeZone);
$day_date = JHtml::date($date, 'd', $eventTimeZone);
$day_today = JHtml::date('now', 'd');
$date_today = JHtml::date('now', 'Y-m-d');
if ($item)
{
$weekdays = $item->weekdays;
$period = unserialize($item->period);
$period = is_array($period) ? $period : array();
$is_in_period = (in_array($this_date, $period)) ? true : false;
$startdate = $item->startdatetime;
$day_startdate = JHtml::date($startdate, 'd', $eventTimeZone);
$enddate = $item->enddatetime;
$day_enddate = JHtml::date($enddate, 'd', $eventTimeZone);
}
if ($item && $is_in_period
&& $weekdays == ''
&& strtotime($startdate) <= strtotime($date_today)
&& strtotime($enddate) >= strtotime($date_today)
)
{
$day = '';
if ($day_today > $day_startdate)
{
// $day.= '<span style="font-size: 14px; vertical-align: middle">' . $day_startdate . ' </span>';
// $day.= '<span style="font-size: 16px; vertical-align: middle">⇤</span>';
}
else
{
// $day.= '<span style="font-size: 14px; vertical-align: middle; color: transparent; text-shadow: none; text-decoration: none;">' . $day_startdate . ' </span>';
// $day.= '<span style="font-size: 16px; vertical-align: middle; color: transparent; text-shadow: none; text-decoration: none;">⇤</span>';
}
// $day.= '<span style="border-radius: 10px; padding: 0 5px; border: 2px dotted gray;">' . $day_today . '</span>';
$day.= '<span class="ic-current-period">' . $day_today . '</span>';
// $day.= $day_today;
if ($day_today < $day_enddate)
{
// $day.= '<span style="font-size: 16px; vertical-align: middle">⇥</span>';
// $day.= '<span style="font-size: 14px; vertical-align: middle"> ' . $day_enddate . '</span>';
}
else
{
// $day.= '<span style="font-size: 16px; vertical-align: middle; color: transparent; text-shadow: none; text-decoration: none;">⇥</span>';
// $day.= '<span style="font-size: 14px; vertical-align: middle; color: transparent; text-shadow: none; text-decoration: none;">' . $day_enddate . ' </span>';
}
return $day;
}
else
{
return $day_date;
}
}
/**
* MONTH SHORT in Date Box (list of events)
*
* @since 3.5.0
*/
public static function dateBox($date, $type, $ongoing = null)
{
$datetime_today = JHtml::date('now', 'Y-m-d H:i');
$monthshort_date = iCDate::monthShortJoomla($date);
$monthshort_today = iCDate::monthShortJoomla($datetime_today);
$year_date = JHtml::date($date, 'Y', null);
// $year_date = date('Y', strtotime($date));
$year_today = JHtml::date('now', 'Y');
if ($ongoing)
{
switch($type)
{
case 'monthshort': $value = $monthshort_today; break;
case 'year': $value = $year_today; break;
}
}
else
{
switch($type)
{
case 'monthshort': $value = $monthshort_date; break;
case 'year': $value = $year_date; break;
}
}
return $value;
}
// DEPRECATED 3.6
/**
* Function to return time formated depending on AM/PM option
* Format Time (eg. 00:00 (AM/PM))
* $oldtime to be removed (not used since 2.0.0)
*
* @since 3.4.1
*/
public static function dateToTimeFormat($evt, $oldtime = null)
{
$app = JFactory::getApplication();
$params = $app->getParams();
$timeformat = $params->get('timeformat', 1);
$eventTimeZone = null;
$date_time = strtotime(JHtml::date($evt, 'Y-m-d H:i', $eventTimeZone));
$t_time = date('H:i', $date_time);
$time_format = ($timeformat == 1) ? '%H:%M' : '%I:%M %p';
$lang_time = strftime($time_format, strtotime($t_time));
$time = ($oldtime != NULL && $t_time == '00:00') ? $oldtime : JText::_($lang_time);
return $time;
}
/**
* Function to return Auto Short Description (Full Description > Short)
*
* @since 3.5.6
*/
public static function shortDescription($text, $isModule = null, $option = null, $limit = null)
{
$descdata = $text;
$desc_full = self::deleteAllBetween('{', '}', $descdata);
// Menu Options
$app = JFactory::getApplication();
$params = $app->getParams();
// $limitGlobal = ! $isModule ? $params->get('limitGlobal', 0) : 1;
// $customlimit = ! $isModule ? $params->get('limit', '100') : false;
$limitGlobal = ! $isModule ? $params->get('limitGlobal', 0) : 0;
$customlimit = ! $isModule ? $params->get('limit', '100') : $limit;
// Global Options Component iCagenda
$iCparams = JComponentHelper::getParams('com_icagenda');
if ($limitGlobal == 1)
{
$limit = $params->get('ShortDescLimit', '100');
}
else
{
$limit_global_option = $iCparams->get('ShortDescLimit', '100');
$limit = is_numeric($customlimit) ? $customlimit : $limit_global_option;
}
// Html tags removal Global Option (component iCagenda) - Short Description
$Filtering_ShortDesc_Global = $iCparams->get('Filtering_ShortDesc_Global', '');
$HTMLTags_ShortDesc_Global = $iCparams->get('HTMLTags_ShortDesc_Global', array());
// Get Module Option
$Filtering_ShortDesc_Module = $isModule ? $option : '';
/**
* START Filtering HTML method
*/
$limit = is_numeric($limit) ? $limit : false;
// Gets length of the short desc, when not filtered
$limit_not_filtered = substr($desc_full, 0, $limit);
$text_length = strlen($limit_not_filtered);
// Gets length of the short desc, after html filtering
$limit_filtered = preg_replace('/[\p{Z}\s]{2,}/u', ' ', $limit_not_filtered);
$limit_filtered = strip_tags($limit_filtered);
$text_short_length = strlen($limit_filtered);
// Sets Limit + special tags authorized
$limit_short = $limit + ($text_length - $text_short_length);
// Replaces all authorized html tags with tag strings
if (empty($Filtering_ShortDesc_Module)
&& ($Filtering_ShortDesc_Global == '1') )
{
$desc_full = str_replace('+', '@@', $desc_full);
$desc_full = in_array('1', $HTMLTags_ShortDesc_Global) ? str_replace('<br>', '+@br@', $desc_full) : $desc_full;
$desc_full = in_array('1', $HTMLTags_ShortDesc_Global) ? str_replace('<br/>', '+@br@', $desc_full) : $desc_full;
$desc_full = in_array('1', $HTMLTags_ShortDesc_Global) ? str_replace('<br />', '+@br@', $desc_full) : $desc_full;
$desc_full = in_array('2', $HTMLTags_ShortDesc_Global) ? str_replace('<b>', '+@b@', $desc_full) : $desc_full;
$desc_full = in_array('2', $HTMLTags_ShortDesc_Global) ? str_replace('</b>', '@bc@', $desc_full) : $desc_full;
$desc_full = in_array('3', $HTMLTags_ShortDesc_Global) ? str_replace('<strong>', '@strong@', $desc_full) : $desc_full;
$desc_full = in_array('3', $HTMLTags_ShortDesc_Global) ? str_replace('</strong>', '@strongc@', $desc_full) : $desc_full;
$desc_full = in_array('4', $HTMLTags_ShortDesc_Global) ? str_replace('<i>', '@i@', $desc_full) : $desc_full;
$desc_full = in_array('4', $HTMLTags_ShortDesc_Global) ? str_replace('</i>', '@ic@', $desc_full) : $desc_full;
$desc_full = in_array('5', $HTMLTags_ShortDesc_Global) ? str_replace('<em>', '@em@', $desc_full) : $desc_full;
$desc_full = in_array('5', $HTMLTags_ShortDesc_Global) ? str_replace('</em>', '@emc@', $desc_full) : $desc_full;
$desc_full = in_array('6', $HTMLTags_ShortDesc_Global) ? str_replace('<u>', '@u@', $desc_full) : $desc_full;
$desc_full = in_array('6', $HTMLTags_ShortDesc_Global) ? str_replace('</u>', '@uc@', $desc_full) : $desc_full;
}
elseif ( $Filtering_ShortDesc_Module == '2'
|| (($Filtering_ShortDesc_Global == '') && empty($Filtering_ShortDesc_Module)) )
{
$desc_full = '@i@'.$desc_full.'@ic@';
$limit_short = $limit_short + 7;
}
else
{
$desc_full = $desc_full;
}
// Removes HTML tags
$desc_nohtml = strip_tags($desc_full);
// Replaces all sequences of two or more spaces, tabs, and/or line breaks with a single space
$desc_nohtml = preg_replace('/[\p{Z}\s]{2,}/u', ' ', $desc_nohtml);
// Replaces all spaces with a single +
$desc_nohtml = str_replace(' ', '+', $desc_nohtml);
if (strlen($desc_nohtml) > $limit_short)
{
// Cuts full description, to get short description
$string_cut = substr($desc_nohtml, 0, $limit_short);
// Detects last space of the short description
$last_space = strrpos($string_cut, '+');
// Cuts the short description after last space
$string_ok = substr($string_cut, 0, $last_space);
// Counts number of tags converted to string, and returns lenght
$nb_br = substr_count($string_ok, '+@br@');
$nb_plus = substr_count($string_ok, '@@');
$nb_bopen = substr_count($string_ok, '@b@');
$nb_bclose = substr_count($string_ok, '@bc@');
$nb_strongopen = substr_count($string_ok, '@strong@');
$nb_strongclose = substr_count($string_ok, '@strongc@');
$nb_iopen = substr_count($string_ok, '@i@');
$nb_iclose = substr_count($string_ok, '@ic@');
$nb_emopen = substr_count($string_ok, '@em@');
$nb_emclose = substr_count($string_ok, '@emc@');
$nb_uopen = substr_count($string_ok, '@u@');
$nb_uclose = substr_count($string_ok, '@uc@');
// Replaces tag strings with html tags
$string_ok = str_replace('@br@', '<br />', $string_ok);
$string_ok = str_replace('@b@', '<b>', $string_ok);
$string_ok = str_replace('@bc@', '</b>', $string_ok);
$string_ok = str_replace('@strong@', '<strong>', $string_ok);
$string_ok = str_replace('@strongc@', '</strong>', $string_ok);
$string_ok = str_replace('@i@', '<i>', $string_ok);
$string_ok = str_replace('@ic@', '</i>', $string_ok);
$string_ok = str_replace('@em@', '<em>', $string_ok);
$string_ok = str_replace('@emc@', '</em>', $string_ok);
$string_ok = str_replace('@u@', '<u>', $string_ok);
$string_ok = str_replace('@uc@', '</u>', $string_ok);
$string_ok = str_replace('+', ' ', $string_ok);
$string_ok = str_replace('@@', '+', $string_ok);
$text = $string_ok;
// Close html tags if not closed
if ($nb_bclose < $nb_bopen) $text = $string_ok.'</b>';
if ($nb_strongclose < $nb_strongopen) $text = $string_ok.'</strong>';
if ($nb_iclose < $nb_iopen) $text = $string_ok.'</i>';
if ($nb_emclose < $nb_emopen) $text = $string_ok.'</em>';
if ($nb_uclose < $nb_uopen) $text = $string_ok.'</u>';
$return_text = $text.' ';
$descShort = $limit ? $return_text : '';
}
else
{
$desc_full = $desc_nohtml;
$desc_full = str_replace('@br@', '<br />', $desc_full);
$desc_full = str_replace('@b@', '<b>', $desc_full);
$desc_full = str_replace('@bc@', '</b>', $desc_full);
$desc_full = str_replace('@strong@', '<strong>', $desc_full);
$desc_full = str_replace('@strongc@', '</strong>', $desc_full);
$desc_full = str_replace('@i@', '<i>', $desc_full);
$desc_full = str_replace('@ic@', '</i>', $desc_full);
$desc_full = str_replace('@em@', '<em>', $desc_full);
$desc_full = str_replace('@emc@', '</em>', $desc_full);
$desc_full = str_replace('@u@', '<u>', $desc_full);
$desc_full = str_replace('@uc@', '</u>', $desc_full);
$desc_full = str_replace('+', ' ', $desc_full);
$desc_full = str_replace('@@', '+', $desc_full);
$descShort = $limit ? $desc_full : '';
}
/** END Filtering HTML function */
return $descShort;
}
/**
* Function to check if user has access rights to defined access
*
* $accessLevel Access level of the item to check User Permissions
*
* If in super user group, always allowed
*/
static public function accessLevels($accessLevel)
{
// Get User Access Levels
$user = JFactory::getUser();
$userLevels = $user->getAuthorisedViewLevels();
$userGroups = version_compare(JVERSION, '3.0', 'ge') ? $user->groups : $user->getAuthorisedGroups();
// Control: if access level, or Super User
if (in_array($accessLevel, $userLevels)
|| in_array('8', $userGroups))
{
return true;
}
return false;
}
/**
* Process a string in a JOOMLA_TRANSLATION_STRING standard.
* This method processes a string and replaces all accented UTF-8 characters by unaccented
* ASCII-7 "equivalents" and the string is uppercase. Spaces replaced by underscore.
*
* @param string $string String to process
*
* @return string Processed string
*
* @since 3.3.3
*/
public static function deleteAllBetween($start, $end, $string)
{
$startPos = strpos($string, $start);
$endPos = strpos($string, $end);
if (!$startPos || !$endPos)
{
return $string;
}
$textToDelete = substr($string, $startPos, ($endPos + strlen($end)) - $startPos);
return str_replace($textToDelete, '', $string);
}
}
data.php 0000604 00000106353 15245723404 0006200 0 ustar 00 <?php
/**
*------------------------------------------------------------------------------
* iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
*------------------------------------------------------------------------------
* @package iCagenda
* @subpackage utilities
* @copyright Copyright (c)2014-2015 Cyril Rezé, Jooml!C - All rights reserved
*
* @license GNU General Public License version 3 or later; see LICENSE.txt
* @author Cyril Rezé (Lyr!C)
* @link http://www.joomlic.com
*
* @version 3.5.7 2015-07-14
* @since 3.5.0
*------------------------------------------------------------------------------
*/
// No direct access to this file
defined('_JEXEC') or die();
/**
* class icagendaEventsData
* Transitional class and functions
*
* DEPRECATED and TO BE REMOVED in 3.7.x
*/
class icagendaEventsData
{
/**
* ALL DATES
*
* @since 3.5.0
*/
public static function getAllDates($filterTime = null, $datesDisplay = null, $orderby = null, $mcatid = null, $module = null)
{
$app = JFactory::getApplication();
$jinput = $app->input;
$params = $app->getParams();
// Get Settings
$filterTime = ($filterTime == 'no') ? '0' : $filterTime;
$filterTime = (isset($filterTime) || $filterTime == '0') ? $filterTime : $params->get('time', 1);
$datesDisplay = $datesDisplay ? $datesDisplay : $params->get('datesDisplay', 1);
$orderby = $orderby ? $orderby : $params->get('orderby', 2);
$mcatid = ($mcatid == 'no') ? array() : $params->get('mcatid');
// $module = ($module == 'calendar') ? $module : false;
// Set vars
$nodate = '0000-00-00 00:00:00';
$ic_nodate = '0000-00-00 00:00';
$eventTimeZone = null;
$datetime_today = JHtml::date('now', 'Y-m-d H:i'); // Joomla Time Zone
$date_today = JHtml::date('now', 'Y-m-d'); // Joomla Time Zone
// $datetime_today = date('Y-m-d H:i');
// $date_today = date('Y-m-d');
// Get Data
$db = Jfactory::getDbo();
$query = $db->getQuery(true);
$query->select('e.next, e.dates, e.startdate, e.enddate, e.period, e.weekdays, e.displaytime, e.id, e.catid');
$query->from('#__icagenda_events AS e');
$query->leftJoin('`#__icagenda_category` AS c ON c.id = e.catid');
// CATEGORY STATE Filtering
$query->where('c.state = 1');
// EVENT STATE Filtering
$query->where('e.state = 1');
// CATEGORY Filtering
// $mcatid = is_array($mcatid) ? $mcatid : array();
// $selcat = implode(', ', $mcatid);
// if ( ! in_array('0', $mcatid)
// && count($mcatid)
// )
// {
// $query->where('e.catid IN (' . $selcat . ')');
// }
// Filter by categories.
$categoryId = $mcatid;
if (is_numeric($categoryId) && ! empty($categoryId))
{
$query->where('e.catid = ' . $categoryId . '');
}
elseif (is_array($categoryId) && ! empty($categoryId)
&& ! in_array('0', $categoryId))
{
JArrayHelper::toInteger($categoryId);
$categoryId = implode(',', $categoryId);
$query->where('e.catid IN (' . $categoryId . ')');
}
// FRONTEND FILTERS
// Filter by published state
$published = $jinput->get('filter_state');
// $published = $this->state->get('filter.state');
if (is_numeric($published))
{
$query->where('e.state = '.(int) $published);
}
elseif ($published === '')
{
$query->where('(e.state IN (0, 1))');
}
// Filter by category
$category = $jinput->get('filter_category');
// $category = $this->state->get('filter.category');
if (is_numeric($category))
{
$query->where('e.catid = '.(int) $category);
}
$filter_startdate = $jinput->get('filter_startdate');
$filter_enddate = $jinput->get('filter_enddate');
$filter_year = $jinput->get('filter_year');
// FEATURES Filtering
$query->where(self::getFeaturesFilter());
// LANGUAGE Filtering
$query->where('e.language IN (' . $db->q(JFactory::getLanguage()->getTag()) . ',' . $db->q('*') . ')');
// ACCESS Filtering
$user = JFactory::getUser();
$userID = $user->id;
$userLevels = $user->getAuthorisedViewLevels();
$userGroups = $user->groups;
$groupid = JComponentHelper::getParams('com_icagenda')->get('approvalGroups', array("8"));
$groupid = is_array($groupid) ? $groupid : array($groupid);
if (!in_array('8', $userGroups) )
{
$useraccess = implode(', ', $userLevels);
$query->where('e.access IN (' . $useraccess . ')');
}
// APPROVAL RIGHTS Filtering
if (!array_intersect($userGroups, $groupid)
&& !in_array('8', $userGroups))
{
$query->where('e.approval <> 1');
}
else
{
$query->where('e.approval < 2');
}
$db->setQuery($query);
$list = $db->loadObjectList();
$list_all_dates = array();
foreach ($list AS $i)
{
$i_id = $i->id;
$i_startdate = $i->startdate;
$i_enddate = $i->enddate;
$i_weekdays = $i->weekdays;
$i_dates = $i->dates;
$i_displaytime = $i->displaytime;
// Declare AllDates array
$AllDatesDisplay = array();
// Get WeekDays Array
$WeeksDays = iCDatePeriod::weekdaysToArray($i_weekdays);
// If Single Dates, added each one to All Dates for this event
$singledates = iCString::isSerialized($i_dates) ? unserialize($i_dates) : array();
$singleDatesArray = array();
$no_filtering = '0';
foreach ($singledates as $sd)
{
$isValid = iCDate::isDate($sd);
if ($isValid)
{
$date_Dat = JHtml::date($sd, 'Y-m-d', $eventTimeZone);
$SingleDate = JHtml::date($sd, 'Y-m-d H:i', $eventTimeZone);
$data_SingleDate = date('Y-m-d H:i', strtotime($sd));
// Frontend Filtering
if ( ! empty($filter_year))
{
if (date('Y', strtotime($date_Dat)) == $filter_year)
{
$singleDatesArray[] = $data_SingleDate . '_' . $i_id;
}
}
elseif ( ! empty($filter_startdate) && ! empty($filter_enddate))
{
if (strtotime($date_Dat) >= strtotime($filter_startdate)
&& strtotime($date_Dat) <= strtotime($filter_enddate)
)
{
$singleDatesArray[] = $data_SingleDate . '_' . $i_id;
}
}
// All Dates for each event
elseif ($datesDisplay == 1)
{
$singleDatesArray[] = $data_SingleDate . '_' . $i_id;
}
// Current Today
elseif ($filterTime == 4
&& strtotime($SingleDate) >= strtotime($date_today)
)
{
$singleDatesArray[] = $data_SingleDate . '_' . $i_id;
}
// Upcoming Events
elseif ($filterTime == 3
&& strtotime($SingleDate) > strtotime($datetime_today)
)
{
$singleDatesArray[] = $data_SingleDate . '_' . $i_id;
}
// Past event
elseif ($filterTime == 2
&& strtotime($SingleDate) < strtotime($datetime_today)
)
{
$singleDatesArray[] = $data_SingleDate . '_' . $i_id;
}
// Current and Upcoming Events
elseif ($filterTime == 1
&& strtotime($SingleDate) > strtotime($datetime_today)
)
{
$singleDatesArray[] = $data_SingleDate . '_' . $i_id;
}
// All Dates
elseif (!$filterTime)
{
// All Upcoming dates
if (strtotime($SingleDate) >= strtotime($datetime_today))
{
$no_filtering = $no_filtering + 1;
$singleDatesArray[] = $data_SingleDate . '_' . $i_id;
}
// If no Upcoming dates, get the last date
elseif ($no_filtering == 0
&& strtotime($SingleDate) < strtotime($datetime_today))
{
$no_filtering = $no_filtering + 1;
$singleDatesArray[] = $data_SingleDate . '_' . $i_id;
}
}
}
}
if ($datesDisplay == 2
&& $filterTime == 2
&& count($singleDatesArray) > 0) // Past Events
{
$AllDatesDisplay[] = max($singleDatesArray);
}
elseif ($datesDisplay == 2
&& count($singleDatesArray) > 0)
{
$AllDatesDisplay[] = min($singleDatesArray);
}
else
{
$AllDatesDisplay = array_merge($AllDatesDisplay, $singleDatesArray);
}
// If Period Dates, added each one to All Dates for this event (filter week Days, and if date not null)
// $perioddates = iCDatePeriod::listDates($i_startdate, $i_enddate, $eventTimeZone);
$perioddates = iCDatePeriod::listDates($i_startdate, $i_enddate);
$period_array = array();
foreach ($perioddates AS $date_in_weekdays)
{
// $datetime_period_date = JHtml::date($date_in_weekdays, 'Y-m-d H:i', $eventTimeZone);
// $datetime_period_date = date('Y-m-d H:i', strtotime($date_in_weekdays));
// $datetime_period_date = $date_in_weekdays;
if (in_array(date('w', strtotime($date_in_weekdays)), $WeeksDays)
&& iCDate::isDate($date_in_weekdays))
{
$period_array[] = $date_in_weekdays;
}
}
$only_startdate = ($i_weekdays || $i_weekdays == '0') ? false : true;
// $only_startdate = ! $module ? $only_startdate : false;
$StDate = JHtml::date($i_startdate, 'Y-m-d H:i', $eventTimeZone);
$EnDate = JHtml::date($i_enddate, 'Y-m-d H:i', $eventTimeZone);
$date_startdate = JHtml::date($i_startdate, 'Y-m-d', $eventTimeZone);
$date_enddate = JHtml::date($i_enddate, 'Y-m-d', $eventTimeZone);
$time_startdate = JHtml::date($i_startdate, 'H:i', $eventTimeZone);
$time_enddate = JHtml::date($i_enddate, 'H:i', $eventTimeZone);
$data_StDate = date('Y-m-d H:i', strtotime($i_startdate));
$data_time_startdate = date('H:i', strtotime($i_startdate));
// $StDate = date('Y-m-d H:i', strtotime($i_startdate));
// $EnDate = date('Y-m-d H:i', strtotime($i_enddate));
// $date_startdate = date('Y-m-d', strtotime($i_startdate));
// $date_enddate = date('Y-m-d', strtotime($i_enddate));
// $time_startdate = date('H:i', strtotime($i_startdate));
// $time_enddate = date('H:i', strtotime($i_enddate));
if (isset($period_array)
&& ($period_array != NULL && $period_array)
)
{
if ($only_startdate)
{
$AllDatesDisplay[] = $data_StDate . '_' . $i_id;
}
else
{
$dp = 0;
$count_period = count($period_array);
$cp = 0;
$no_filtering = 0;
foreach ($period_array as $Dat)
{
$date_Dat = JHtml::date($Dat, 'Y-m-d', $eventTimeZone);
$SingleDate = JHtml::date($Dat, 'Y-m-d H:i', $eventTimeZone);
$data_date_Dat = date('Y-m-d', strtotime($Dat));
$data_SingleDate = date('Y-m-d H:i', strtotime($Dat));
// $date_Dat = date('Y-m-d', strtotime($Dat));
// $SingleDate = date('Y-m-d H:i', strtotime($Dat));
if (in_array(date('w', strtotime($Dat)), $WeeksDays)
&& $dp == 0
)
{
// Frontend Filtering
if ( ! empty($filter_year))
{
if (date('Y', strtotime($date_Dat)) == $filter_year)
{
$AllDatesDisplay[] = $data_SingleDate . '_' . $i_id;
}
}
elseif ( ! empty($filter_startdate) && ! empty($filter_enddate))
{
if (strtotime($date_Dat) >= strtotime($filter_startdate)
&& strtotime($date_Dat) <= strtotime($filter_enddate)
)
{
$AllDatesDisplay[] = $data_SingleDate . '_' . $i_id;
}
}
// Current Today and Upcoming Today
elseif ($filterTime == 4
&& strtotime($date_Dat) == strtotime($date_today))
{
if ($i_displaytime == 1
&& strtotime($date_Dat . ' ' . $time_enddate) >= strtotime($datetime_today))
{
$dp = ($datesDisplay == 2) ? $dp+1 : 0;
$AllDatesDisplay[] = $data_SingleDate . '_' . $i_id;
}
else
{
$dp = ($datesDisplay == 2) ? $dp+1 : 0;
$AllDatesDisplay[] = $data_SingleDate . '_' . $i_id;
}
}
// Upcoming
elseif ($filterTime == 3
&& strtotime($SingleDate) > strtotime($datetime_today))
{
$dp = ($datesDisplay == 2) ? $dp+1 : 0;
$AllDatesDisplay[] = $data_SingleDate . '_' . $i_id;
}
// Past
elseif ($filterTime == 2
&& strtotime($date_Dat) < strtotime($date_today))
{
$dp = ($datesDisplay == 2) ? $dp+1 : 0;
$AllDatesDisplay[] = $data_SingleDate . '_' . $i_id;
}
// Current Today and Upcoming
elseif ($filterTime == 1)
{
if ($i_displaytime == 1
&& strtotime($date_Dat . ' ' . $time_enddate) >= strtotime($datetime_today))
{
$dp = ($datesDisplay == 2) ? $dp+1 : 0;
$AllDatesDisplay[] = $data_SingleDate . '_' . $i_id;
}
elseif ($i_displaytime != 1
&& strtotime($date_Dat) >= strtotime($date_today))
{
$dp = ($datesDisplay == 2) ? $dp+1 : 0;
$AllDatesDisplay[] = $data_SingleDate . '_' . $i_id;
}
}
// No Filtering
elseif ( ! $filterTime)
{
// All Upcoming dates
if (strtotime($SingleDate) >= strtotime($datetime_today))
{
$dp = ($datesDisplay == 2) ? $dp+1 : 0;
$no_filtering = ($datesDisplay == 2) ? $no_filtering+1 : 0;
$AllDatesDisplay[] = $data_SingleDate . '_' . $i_id;
}
// If no Upcoming dates, get the last date
elseif ($no_filtering == 0 && $datesDisplay == 2
&& strtotime($SingleDate) < strtotime($datetime_today))
{
$dp = $dp+1;
$AllDatesDisplay[] = $data_SingleDate . '_' . $i_id;
}
// If display All Dates, get the last dates
elseif ( $datesDisplay == 1
&& strtotime($SingleDate) < strtotime($datetime_today))
{
$dp = 0;
$AllDatesDisplay[] = $data_SingleDate . '_' . $i_id;
}
}
}
}
}
}
// If not All Dates display (select only one date for each event)
if ( $datesDisplay == 2
&& count($AllDatesDisplay) > 0 )
{
$ex_min = explode('_', min($AllDatesDisplay));
// $min_date = $ex_min[0];
$min_date = JHtml::date($ex_min[0], 'Y-m-d H:i', null);
$ex_max = explode('_', max($AllDatesDisplay));
// $max_date = $ex_max[0];
$max_date = JHtml::date($ex_max[0], 'Y-m-d H:i', null);
if ($filterTime != '4')
{
// min date is upcoming
if ( $min_date >= $datetime_today )
{
$AllDatesDisplay = array(min($AllDatesDisplay));
}
// All events
elseif ($filterTime == '0')
{
// min date in Period and upcoming
if (in_array($min_date, $period_array)
&& $min_date >= $datetime_today )
{
$AllDatesDisplay = array(min($AllDatesDisplay));
}
// min date is Single date and not past
elseif ( ! in_array($min_date, $period_array)
&& ($min_date > $datetime_today) )
{
$AllDatesDisplay = array(min($AllDatesDisplay));
}
// min date is Single date and past
else
{
$AllDatesDisplay = array(max($AllDatesDisplay));
}
}
else
{
$AllDatesDisplay = array(max($AllDatesDisplay));
}
}
else
{
$AllDatesDisplay = array(min($AllDatesDisplay));
}
}
$AllDatesFilterTime = array();
foreach ($AllDatesDisplay as $fD)
{
$ex_date = explode('_', $fD);
$get_date = $ex_date['0'];
$date_get_date = JHtml::date($get_date, 'Y-m-d', $eventTimeZone);
$data_date_get_date = date('Y-m-d', strtotime($get_date));
// Frontend Filtering
if ( ! empty($filter_year))
{
if (date('Y', strtotime($get_date)) == $filter_year)
{
$AllDatesFilterTime[] = $fD;
}
}
elseif ( ! empty($filter_startdate) && ! empty($filter_enddate))
{
if (strtotime($get_date) >= strtotime($filter_startdate)
&& strtotime($get_date) <= strtotime($filter_enddate)
)
{
$AllDatesFilterTime[] = $fD;
}
}
// (0) Filter Dates : All Dates
elseif ($filterTime == 0)
{
// Period with no weekdays selected
if ( in_array($get_date, $perioddates)
&& $only_startdate
&& ! in_array($StDate . '_' . $i_id, $AllDatesFilterTime)
)
{
$AllDatesFilterTime[] = $data_StDate . '_' . $i_id;
}
// Period with weekdays selected
elseif ( in_array($get_date, $perioddates)
&& ! $only_startdate
)
{
$AllDatesFilterTime[] = $fD;
}
// Single Dates
elseif ( ! in_array($get_date, $perioddates) )
{
$AllDatesFilterTime[] = $fD;
}
}
// (1) Filter Dates : Ongoing and Upcoming
elseif ($filterTime == 1)
{
// Period with no weekdays selected
if (in_array($get_date, $perioddates)
&& $only_startdate
&& strtotime($EnDate) >= strtotime($datetime_today)
&& !in_array($StDate . '_' . $i_id, $AllDatesFilterTime)
)
{
$AllDatesFilterTime[] = $data_StDate . '_' . $i_id;
}
// Period with weekdays selected
elseif (in_array($get_date, $perioddates)
&& !$only_startdate
)
{
// If display time, control end time of the day
if ($i_displaytime == 1
&& strtotime($date_get_date . ' ' . $time_enddate) >= strtotime($datetime_today))
{
$AllDatesFilterTime[] = $fD;
}
// If do not display time, control start time of the day
elseif ($i_displaytime != 1
&& strtotime($date_get_date) >= strtotime($date_today))
{
$AllDatesFilterTime[] = $fD;
}
}
// Single Dates
elseif (!in_array($get_date, $perioddates)
// && strtotime($get_date) >= strtotime($datetime_today)
// Changed because single dates have no end time, so admitted end time is midnight.
&& strtotime($get_date) >= strtotime($date_today)
)
{
$AllDatesFilterTime[] = $fD;
}
}
// (2) Filter Dates : Past Dates
elseif ($filterTime == 2)
{
// Period with no weekdays selected
if ( in_array($get_date, $perioddates)
&& $only_startdate
&& (strtotime($EnDate) < strtotime($datetime_today))
)
{
$AllDatesFilterTime[] = $fD;
}
// Period with weekdays selected
elseif ( in_array($get_date, $perioddates)
&& !$only_startdate
&& strtotime($get_date) < strtotime($datetime_today)
&& strtotime($date_get_date . ' ' . $time_enddate) < strtotime($datetime_today)
)
{
$AllDatesFilterTime[] = $fD;
}
// Single Dates
elseif ( !in_array($get_date, $perioddates)
&& strtotime($get_date) < strtotime($datetime_today)
)
{
$AllDatesFilterTime[] = $fD;
}
}
// (3) Filter Dates : Upcoming
elseif ($filterTime == 3)
{
// Period with no weekdays selected
if (in_array($get_date, $perioddates)
&& $only_startdate
&& (strtotime($StDate) > strtotime($datetime_today))
)
{
$AllDatesFilterTime[] = $fD;
}
// Period with weekdays selected
elseif (in_array($get_date, $perioddates)
&& ! $only_startdate
&& strtotime($get_date) > strtotime($datetime_today)
&& strtotime($date_get_date . ' ' . $time_startdate) > strtotime($datetime_today)
)
{
$AllDatesFilterTime[] = $fD;
}
// Single Dates
elseif ( ! in_array($get_date, $perioddates)
&& strtotime($get_date) > strtotime($datetime_today)
)
{
$AllDatesFilterTime[] = $fD;
}
}
// (4) Filter Dates : Ongoing Events today
elseif ($filterTime == 4)
{
// Period with no weekdays selected
if (in_array($get_date, $perioddates)
&& $only_startdate
&& strtotime($EnDate) > strtotime($datetime_today)
&& strtotime($StDate) < (strtotime($date_today) + 86400)
)
{
$AllDatesFilterTime[] = $data_date_get_date . ' ' . $data_time_startdate . '_' . $i_id;
}
// Period with weekdays selected
elseif ( in_array($get_date, $perioddates)
&& ! $only_startdate
&& ( strtotime($date_get_date) == strtotime($date_today)
&& strtotime($date_get_date . ' ' . $time_enddate) < (strtotime($date_today) + 86400) )
)
{
$AllDatesFilterTime[] = $fD;
}
// Single Dates
elseif ( !in_array($get_date, $perioddates)
// && ( strtotime($get_date) >= strtotime($datetime_today)
// Changed because single dates have no end time, so admitted end time is midnight.
&& ( strtotime($get_date) >= strtotime($date_today)
&& strtotime($get_date) < (strtotime($date_today) + 86400) )
)
{
$AllDatesFilterTime[] = $fD;
}
}
}
$list_all_dates = array_merge($list_all_dates, $AllDatesFilterTime);
}
if ($orderby == 2)
{
sort($list_all_dates);
}
else
{
rsort($list_all_dates);
}
return $list_all_dates;
}
/**
* Get and update NEXT DATE
*
* @since 3.5.4
*/
public static function getNext()
{
$app = JFactory::getApplication();
$params = $app->getParams();
// Get Settings
$filterTime = $params->get('time', 1);
// Set vars
$nodate = '0000-00-00 00:00:00';
$eventTimeZone = null;
$datetime_today = JHtml::date('now', 'Y-m-d H:i:s'); // Joomla Time Zone
$date_today = JHtml::date('now', 'Y-m-d'); // Joomla Time Zone
$time_today = JHtml::date('now', 'H:i:s'); // Joomla Time Zone
// $datetime_today = date('Y-m-d H:i:s');
// $date_today = date('Y-m-d');
// $time_today = date('H:i:s');
// Preparing connection to db
$db = Jfactory::getDbo();
// Preparing the query
$query = $db->getQuery(true);
$query->select('next AS tNext, dates AS tDates, startdate AS tStartdate, enddate AS tEnddate,
weekdays AS tWeekdays, id AS tId, state AS tState, access AS tAccess');
$query->from('`#__icagenda_events` AS e');
$query->where(' e.state = 1 OR e.state = 0 ');
$db->setQuery($query);
$all_next_dates = $db->loadObjectList();
foreach ($all_next_dates as $nd)
{
$nd_next = $nd->tNext;
$nd_id = $nd->tId;
$nd_state = $nd->tState;
$nd_dates = $nd->tDates;
$nd_startdate = $nd->tStartdate;
$nd_enddate = $nd->tEnddate;
$nd_weekdays = $nd->tWeekdays;
// If Single Dates, added to all dates for this event
$singleDates = iCString::isSerialized($nd_dates) ? unserialize($nd_dates) : array();
$AllDates = array();
// Get WeekDays Array
$WeeksDays = iCDatePeriod::weekdaysToArray($nd_weekdays);
if (isset ($singleDates)
&& $singleDates != NULL
&& !in_array($nodate, $singleDates)
&& !in_array('', $singleDates)
)
{
$AllDates = array_merge($AllDates, $singleDates);
}
elseif (in_array('', $singleDates))
{
$datesarray = array();
$nodate = array('0000-00-00 00:00');
$datesmerger = array_push($datesarray, $nodate);
$DatesUpdate = serialize($nodate);
$query = $db->getQuery(true);
$query->update('#__icagenda_events');
$query->set("`dates`='" . (string)$DatesUpdate . "'");
$query->where('`id`=' . (int)$nd_id);
$db->setQuery($query);
$db->query($query);
$nosingledates = unserialize($DatesUpdate);
$AllDates = array_merge($AllDates, $nosingledates);
}
// $StDate = JHtml::date($nd_startdate, 'Y-m-d H:i', $eventTimeZone);
// $EnDate = JHtml::date($nd_enddate, 'Y-m-d H:i', $eventTimeZone);
// $date_enddate = JHtml::date($nd_enddate, 'Y-m-d', $eventTimeZone);
// $time_enddate = JHtml::date($nd_enddate, 'H:i', $eventTimeZone);
// $date_startdate = JHtml::date($nd_startdate, 'Y-m-d', $eventTimeZone);
// $time_startdate = JHtml::date($nd_startdate, 'H:i', $eventTimeZone);
$StDate = date('Y-m-d H:i', strtotime($nd_startdate));
$EnDate = date('Y-m-d H:i', strtotime($nd_enddate));
$date_enddate = date('Y-m-d', strtotime($nd_enddate));
$time_enddate = date('H:i', strtotime($nd_enddate));
$date_startdate = date('Y-m-d', strtotime($nd_startdate));
$time_startdate = date('H:i', strtotime($nd_startdate));
// $perioddates = iCDatePeriod::listDates($nd_startdate, $nd_enddate, $eventTimeZone);
$perioddates = iCDatePeriod::listDates($nd_startdate, $nd_enddate);
$only_startdate = ($nd_weekdays || $nd_weekdays == '0') ? false : true;
if (isset($perioddates)
&& $perioddates != NULL
)
{
// Period with no weekdays in Upcoming and Past options
if ($only_startdate
&& ($filterTime == '3' || $filterTime == '2')
)
{
array_push($AllDates, $StDate);
}
else
{
foreach ($perioddates as $Dat)
{
if (in_array(date('w', strtotime($Dat)), $WeeksDays))
{
$date_Dat = date('Y-m-d', strtotime($Dat));
$SingleDate = date('Y-m-d H:i', strtotime($Dat));
if ( $date_Dat == $date_today && $filterTime != 3 )
{
// Next in Period is today, so set end time
array_push($AllDates, $date_Dat . ' ' .$time_startdate);
}
else
{
array_push($AllDates, $SingleDate);
}
}
}
}
}
rsort($AllDates);
if ($AllDates == NULL)
{
$next ='0000-00-00 00:00:00';
}
else
{
$date_lastdate = date('Y-m-d', strtotime($AllDates[0]));
$datetime_lastdate = date('Y-m-d H:i:s', strtotime($AllDates[0]));
$date_startdate = date('Y-m-d', strtotime($nd_startdate));
$date_enddate = date('Y-m-d', strtotime($nd_enddate));
$time_startdate = date('H:i:s', strtotime($nd_startdate));
$time_enddate = date('H:i:s', strtotime($nd_enddate));
$returnNext = $nd_next;
$next_is_set = '0';
// $today_SD = '0';
$today_upcoming_SD = '0';
$upcoming_SD = '0';
foreach ($AllDates as $a)
{
$tsdate_a = date('Y-m-d', strtotime($a));
if ($tsdate_a == $date_today)
{
// All single dates today
// $today_SD = $today_SD + 1;
// All single dates today and not yet started
$today_upcoming_SD = (strtotime($a) > strtotime($datetime_today)) ? ($today_upcoming_SD + 1) : $today_upcoming_SD;
}
if ($tsdate_a >= $datetime_today)
{
// All upcoming single dates
$upcoming_SD = $upcoming_SD + 1;
}
}
$total_today_SD = $today_upcoming_SD;
foreach ($AllDates as $a)
{
$tsdatetime_a = date('Y-m-d H:i:s', strtotime($a));
$tsdate_a = date('Y-m-d', strtotime($a));
// Only past single dates
if ($datetime_lastdate < $datetime_today
&& $date_lastdate != $date_today
&& $next_is_set == '0')
{
$returnNext = date('Y-m-d H:i:s', strtotime($AllDates[0]));
$next_is_set = $next_is_set + 1;
}
// The last date is today
elseif ($date_lastdate == $date_today
&& $next_is_set == '0'
&& $total_today_SD == 1)
{
// Period divided into days
if ($nd_startdate != $nodate
&& $nd_enddate != $nodate
&& in_array($a, $perioddates)
&& !$only_startdate
)
{
$returnNext = date('Y-m-d', strtotime($nd_enddate)) . ' ' . $time_startdate;
$next_is_set = $next_is_set + 1;
}
// Full period (from ... to ...)
elseif ($nd_startdate != $nodate
&& $nd_enddate != $nodate
&& in_array($a, $perioddates)
&& $only_startdate
)
{
$returnNext = date('Y-m-d', strtotime($nd_startdate)) . ' ' . $time_startdate;
$next_is_set = $next_is_set + 1;
}
// Single date
else
{
if ($datetime_lastdate > $datetime_today)
{
$today_upcoming_SD = $today_upcoming_SD - 1;
}
if ($datetime_lastdate > $datetime_today
&& $today_upcoming_SD == '0')
{
$returnNext = date('Y-m-d H:i:s', strtotime($AllDates[0]));
$next_is_set = $next_is_set + 1;
}
}
}
// Multiple upcoming single dates
// elseif ($tsdatetime_a > $datetime_today)
// Changed because single dates have no end time, so admitted end time is midnight.
elseif ($tsdatetime_a > $date_today
&& $next_is_set == '0')
{
// Remaining Today's upcoming dates
if ($tsdate_a == $date_today)
{
if ($tsdatetime_a > $datetime_today)
{
$today_upcoming_SD = $today_upcoming_SD - 1;
}
}
// Remaining Upcoming dates
if ($tsdate_a >= $datetime_today)
{
$upcoming_SD = $upcoming_SD - 1;
}
if ($today_upcoming_SD == '0'
&& $upcoming_SD == '0')
{
$returnNext = date('Y-m-d H:i:s', strtotime($a));
$next_is_set = $next_is_set + 1;
}
}
}
// Test End Date if Next Date or Last Date (3.1.5)
$date_returnNext = date('Y-m-d', strtotime($returnNext));
$time_returnNext = date('H:i:s', strtotime($returnNext));
if ( ($date_enddate != '0000-00-00')
&& ( $date_today == $date_enddate || $date_today == $date_returnNext) )
{
$time_LastTime = $time_startdate;
}
else
{
$time_LastTime = $time_returnNext;
}
// Fix 3.1.12 (removed isset($tPeriod))
if ( ($nd_enddate != $nodate)
&& ($date_startdate < $date_today)
&& ($date_enddate == $date_today)
&& ($time_LastTime >= $time_today) )
{
// $returnNextPediod = JHtml::date($nd_enddate, 'Y-m-d', $eventTimeZone) . ' ' . $time_startdate;
$returnNextPediod = date('Y-m-d', strtotime($nd_enddate)) . ' ' . $time_startdate;
}
else
{
$returnNextPediod = $returnNext;
}
// Set next var
if ( ($date_returnNext == $date_enddate)
&& ($date_enddate == $date_today) )
{
$next = $returnNextPediod;
}
elseif (strtotime($date_startdate) < strtotime($date_today)
&& strtotime($date_enddate) >= strtotime($date_today)
&& strtotime($time_enddate) != strtotime($time_returnNext)
&& strtotime($time_LastTime) > strtotime($time_today)
)
{
$next = $date_returnNext . ' ' . date('H:i:s', strtotime($time_LastTime));
}
else
{
$next = $returnNext;
}
}
// 3.1.12 Fixed and update events with bug
if ($nd_next == $nodate
&& $nd_state == 0
&& $nd_startdate != $nodate
&& $nd_enddate != $nodate
&& strtotime($nd_enddate) >= strtotime($nd_startdate)
)
{
$next = $returnNext;
$query = $db->getQuery(true);
$query->update('#__icagenda_events');
$query->set('`state`=1');
$query->where('`id`='.(int)$nd_id);
$db->setQuery($query);
$db->query($query);
}
if ($next != $nd_next)
{
$query = $db->getQuery(true);
$query->update('#__icagenda_events');
$query->set("`next`='".$next."'");
$query->where('`id`='.(int)$nd_id);
$db->setQuery($query);
$db->query($query);
}
}
}
/**
* Returns the element of a SQL query WHERE clause to support filtering the selection of Events using Event Features
*
* Controlled by menu parameters:
* features_filter - array of Feature IDs
* features_incl_excl - indicates whether the Feature IDs are to be used to include or exclude Events
* features_any_all - indicates whether any Feature ID or all Feature IDs required to include or exclude an Event
*
* One or more sub-queries is referenced in a WHERE clause with IN() or NOT IN() to include or exclude Events.
*
* If any Feature ID in isolation is to include or exclude Event records then a single sub-query is used that
* uses a simple inner join between the feature and feature_xref tables to identify the distinct set of Event IDs
* linked to any one of the spacific Feature IDs.
*
* If all Feature IDs combined are required to include or exclude Events then separate sub-queries are used for
* each of the spacific Feature IDs. For this case, a more efficient option is available involving a direct join
* with either an inner or outer join, according to whether records are being included or excluded but this
* puts an unreasonable constraint on the overall syntax of the query.
*/
public static function getFeaturesFilter()
{
// get the application object
$app = JFactory::getApplication();
$params = $app->getParams();
// Initialise a return value that can be included harmlessly in a WHERE clause, if necessary
$filter = ' TRUE ';
$featureids = $params->get('features_filter', '');
if (is_array($featureids) && !empty($featureids))
{
$db = Jfactory::getDbo();
$incl_excl = $params->get('features_incl_excl', '1') == '1' ? '' : 'NOT';
if ($params->get('features_any_all', '1') == '1')
{
// Any single Feature ID will include or exclude events
// Create comma separated list of Feature IDs
$featureids = implode(',', $featureids);
// Create a single sub-query
$sub_query = $db->getQuery(true);
$sub_query->select('fx.event_id')
->from('#__icagenda_feature_xref AS fx')
->innerJoin("#__icagenda_feature AS f ON fx.feature_id=f.id AND f.state=1 AND f.show_filter=1 AND f.id IN($featureids)");
// Join the sub-query to the main query
$filter = "(e.id $incl_excl IN(" . (string) $sub_query . '))';
}
else
{
// All Feature IDs combined will include or exclude events
// Create a separate sub-query for each of the Feature IDs
$sub_queries = array();
foreach ($featureids as $featureid)
{
$sub_query = $db->getQuery(true);
$sub_query->select('fx.event_id')
->from('#__icagenda_feature_xref AS fx')
->innerJoin("#__icagenda_feature AS f ON fx.feature_id=f.id AND f.state=1 AND f.show_filter=1 AND f.id=$featureid");
$sub_queries[] = "e.id $incl_excl IN(" . (string) $sub_query . ')';
}
// Combine the sub-queries depending on inclusion or exclusion of events
$filter = "(" . implode($incl_excl == 'NOT' ? " \nOR " : " \nAND ", $sub_queries) . ')';
}
}
return $filter;
}
/**
* Return Array of all registrations from an event (date@@people)
* date : registered date
* people : nb of tickets for this registration
*
* @since 3.5.0
*/
public static function registeredList($id = null)
{
// Registrations total
$db = Jfactory::getDbo();
$query = $db->getQuery(true);
$query->select('r.date AS date, r.eventid AS eventid, r.people AS people');
$query->from('`#__icagenda_registration` AS r');
$query->where('r.state = 1');
if ($id)
{
$query->where('r.eventid = ' . $db->q($id));
}
$db->setQuery($query);
$result = $db->loadObjectList();
$registeredList = array();
foreach ($result AS $r)
{
$reg_date = $r->date ? $r->date : 'period';
$registeredList[] = $r->eventid . '@@' . $reg_date . '@@' . $r->people;
}
return $registeredList;
}
/**
* Return list of all dates (singles and period) from an event
*
* @since 3.5.0 (Not Yet Used)
*/
public static function thisEventDates($id)
{
// Set vars
$nodate = '0000-00-00 00:00:00';
$ic_nodate = '0000-00-00 00:00';
$eventTimeZone = null;
// Get Data
$db = Jfactory::getDbo();
$query = $db->getQuery(true);
$query->select('e.next, e.dates, e.startdate, e.enddate, e.period, e.weekdays, e.displaytime, e.id');
$query->from('#__icagenda_events AS e');
$query->leftJoin('`#__icagenda_category` AS c ON c.id = e.catid');
$query->where('c.state = 1');
$query->where('e.id = ' . $db->q($id));
$db->setQuery($query);
$result = $db->loadObjectList();
// Get Data
$tId = $id;
$tDates = $result->dates;
$tStartdate = $result->startdate;
$tEnddate = $result->enddate;
$tWeekdays = $result->weekdays;
// Declare AllDates array
$thisEventDates = array();
// Get WeekDays Array
$WeeksDays = iCDatePeriod::weekdaysToArray($tWeekdays);
// If Single Dates, added each one to All Dates for this event
$singledates = unserialize($tDates);
foreach ($singledates as $sd)
{
$isValid = iCDate::isDate($sd);
if ($isValid)
{
array_push($thisEventDates, $sd);
}
}
$perioddates = iCDatePeriod::listDates($tStartdate, $tEnddate, $eventTimeZone);
if (isset ($perioddates)
&& $perioddates != NULL)
{
foreach ($perioddates as $Dat)
{
if (in_array(date('w', strtotime($Dat)), $WeeksDays))
{
$isValid = iCDate::isDate($Dat);
if ($isValid)
{
// $SingleDate = JHtml::date($Dat, 'Y-m-d H:i:s', $eventTimeZone);
$SingleDate = date('Y-m-d H:i:s', strtotime($Dat));
array_push($thisEventDates, $SingleDate);
}
}
}
}
return $thisEventDates;
}
}