| Current Path : /home/w/u/e/wuectly/www/03cbe/ |
| Current File : /home/w/u/e/wuectly/www/03cbe/tables.tar |
featured.php 0000604 00000001105 15245567010 0007052 0 ustar 00 <?php
/**
* @package Joomla.Administrator
* @subpackage com_content
*
* @copyright (C) 2009 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
/**
* Featured Table class.
*
* @since 1.6
*/
class ContentTableFeatured extends JTable
{
/**
* Constructor
*
* @param JDatabaseDriver $db Database connector object
*
* @since 1.6
*/
public function __construct(&$db)
{
parent::__construct('#__content_frontpage', 'content_id', $db);
}
}
link.php 0000604 00000001122 15245570221 0006205 0 ustar 00 <?php
/**
* @package Joomla.Administrator
* @subpackage com_finder
*
* @copyright (C) 2011 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
/**
* Link table class for the Finder package.
*
* @since 2.5
*/
class FinderTableLink extends JTable
{
/**
* Constructor
*
* @param JDatabaseDriver $db JDatabaseDriver connector object.
*
* @since 2.5
*/
public function __construct(&$db)
{
parent::__construct('#__finder_links', 'link_id', $db);
}
}
map.php 0000604 00000004717 15245570221 0006042 0 ustar 00 <?php
/**
* @package Joomla.Administrator
* @subpackage com_finder
*
* @copyright (C) 2011 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\Utilities\ArrayHelper;
/**
* Map table class for the Finder package.
*
* @since 2.5
*/
class FinderTableMap extends JTable
{
/**
* Constructor
*
* @param JDatabaseDriver $db JDatabaseDriver connector object.
*
* @since 2.5
*/
public function __construct(&$db)
{
parent::__construct('#__finder_taxonomy', 'id', $db);
}
/**
* Method to set the publishing state for a row or list of rows in the database
* table. The method respects checked out rows by other users and will attempt
* to checkin rows that it can after adjustments are made.
*
* @param mixed $pks An array of primary key values to update. If not
* set the instance property value is used. [optional]
* @param integer $state The publishing state. eg. [0 = unpublished, 1 = published] [optional]
* @param integer $userId The user id of the user performing the operation. [optional]
*
* @return boolean True on success.
*
* @since 2.5
*/
public function publish($pks = null, $state = 1, $userId = 0)
{
$k = $this->_tbl_key;
// Sanitize input.
$pks = ArrayHelper::toInteger($pks);
$state = (int) $state;
// If there are no primary keys set check to see if the instance key is set.
if (empty($pks))
{
if ($this->$k)
{
$pks = array($this->$k);
}
// Nothing to set publishing state on, return false.
else
{
$this->setError(JText::_('JLIB_DATABASE_ERROR_NO_ROWS_SELECTED'));
return false;
}
}
// Build the WHERE clause for the primary keys.
$where = $k . '=' . implode(' OR ' . $k . '=', $pks);
// Update the publishing state for rows with the given primary keys.
$query = $this->_db->getQuery(true)
->update($this->_db->quoteName($this->_tbl))
->set($this->_db->quoteName('state') . ' = ' . (int) $state)
->where($where);
$this->_db->setQuery($query);
try
{
$this->_db->execute();
}
catch (RuntimeException $e)
{
$this->setError($e->getMessage());
return false;
}
// If the JTable instance value is in the list of primary keys that were set, set the instance.
if (in_array($this->$k, $pks))
{
$this->state = $state;
}
$this->setError('');
return true;
}
}
filter.php 0000604 00000014731 15245570221 0006547 0 ustar 00 <?php
/**
* @package Joomla.Administrator
* @subpackage com_finder
*
* @copyright (C) 2011 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\Registry\Registry;
use Joomla\Utilities\ArrayHelper;
/**
* Filter table class for the Finder package.
*
* @since 2.5
*/
class FinderTableFilter extends JTable
{
/**
* Constructor
*
* @param JDatabaseDriver $db JDatabaseDriver connector object.
*
* @since 2.5
*/
public function __construct(&$db)
{
parent::__construct('#__finder_filters', 'filter_id', $db);
$this->setColumnAlias('published', 'state');
}
/**
* Method to bind an associative array or object to the JTable instance. This
* method only binds properties that are publicly accessible and optionally
* takes an array of properties to ignore when binding.
*
* @param array $array Named array
* @param mixed $ignore An optional array or space separated list of properties
* to ignore while binding. [optional]
*
* @return mixed Null if operation was satisfactory, otherwise returns an error string
*
* @since 2.5
*/
public function bind($array, $ignore = '')
{
if (isset($array['params']) && is_array($array['params']))
{
$registry = new Registry($array['params']);
$array['params'] = (string) $registry;
}
return parent::bind($array, $ignore);
}
/**
* Method to perform sanity checks on the JTable instance properties to ensure
* they are safe to store in the database. Child classes should override this
* method to make sure the data they are storing in the database is safe and
* as expected before storage.
*
* @return boolean True if the instance is sane and able to be stored in the database.
*
* @since 2.5
*/
public function check()
{
if (trim($this->alias) === '')
{
$this->alias = $this->title;
}
$this->alias = JApplicationHelper::stringURLSafe($this->alias);
if (trim(str_replace('-', '', $this->alias)) === '')
{
$this->alias = JFactory::getDate()->format('Y-m-d-H-i-s');
}
$params = new Registry($this->params);
$nullDate = $this->_db->getNullDate();
$d1 = $params->get('d1', $nullDate);
$d2 = $params->get('d2', $nullDate);
// Check the end date is not earlier than the start date.
if ($d2 > $nullDate && $d2 < $d1)
{
// Swap the dates.
$params->set('d1', $d2);
$params->set('d2', $d1);
$this->params = (string) $params;
}
return true;
}
/**
* Method to set the publishing state for a row or list of rows in the database
* table. The method respects checked out rows by other users and will attempt
* to checkin rows that it can after adjustments are made.
*
* @param mixed $pks An array of primary key values to update. If not
* set the instance property value is used. [optional]
* @param integer $state The publishing state. eg. [0 = unpublished, 1 = published] [optional]
* @param integer $userId The user id of the user performing the operation. [optional]
*
* @return boolean True on success.
*
* @since 2.5
*/
public function publish($pks = null, $state = 1, $userId = 0)
{
$k = $this->_tbl_key;
// Sanitize input.
$pks = ArrayHelper::toInteger($pks);
$userId = (int) $userId;
$state = (int) $state;
// If there are no primary keys set check to see if the instance key is set.
if (empty($pks))
{
if ($this->$k)
{
$pks = array($this->$k);
}
// Nothing to set publishing state on, return false.
else
{
$this->setError(JText::_('JLIB_DATABASE_ERROR_NO_ROWS_SELECTED'));
return false;
}
}
// Build the WHERE clause for the primary keys.
$where = $k . '=' . implode(' OR ' . $k . '=', $pks);
// Determine if there is checkin support for the table.
if (!property_exists($this, 'checked_out') || !property_exists($this, 'checked_out_time'))
{
$checkin = '';
}
else
{
$checkin = ' AND (checked_out = 0 OR checked_out = ' . (int) $userId . ')';
}
// Update the publishing state for rows with the given primary keys.
$query = $this->_db->getQuery(true)
->update($this->_db->quoteName($this->_tbl))
->set($this->_db->quoteName('state') . ' = ' . (int) $state)
->where($where);
$this->_db->setQuery($query . $checkin);
try
{
$this->_db->execute();
}
catch (RuntimeException $e)
{
$this->setError($e->getMessage());
return false;
}
// If checkin is supported and all rows were adjusted, check them in.
if ($checkin && count($pks) === $this->_db->getAffectedRows())
{
// Checkin the rows.
foreach ($pks as $pk)
{
$this->checkIn($pk);
}
}
// If the JTable instance value is in the list of primary keys that were set, set the instance.
if (in_array($this->$k, $pks))
{
$this->state = $state;
}
$this->setError('');
return true;
}
/**
* Method to store a row in the database from the JTable instance properties.
* If a primary key value is set the row with that primary key value will be
* updated with the instance property values. If no primary key value is set
* a new row will be inserted into the database with the properties from the
* JTable instance.
*
* @param boolean $updateNulls True to update fields even if they are null. [optional]
*
* @return boolean True on success.
*
* @since 2.5
*/
public function store($updateNulls = false)
{
$date = JFactory::getDate()->toSql();
$userId = JFactory::getUser()->id;
$this->modified = $date;
if ($this->filter_id)
{
// Existing item
$this->modified_by = $userId;
}
else
{
// New item. A filter's created field can be set by the user,
// so we don't touch it if it is set.
if (!(int) $this->created)
{
$this->created = $date;
}
if (empty($this->created_by))
{
$this->created_by = $userId;
}
}
if (is_array($this->data))
{
$this->map_count = count($this->data);
$this->data = implode(',', $this->data);
}
else
{
$this->map_count = 0;
$this->data = implode(',', array());
}
// Verify that the alias is unique
$table = JTable::getInstance('Filter', 'FinderTable', array('dbo' => $this->_db));
if ($table->load(array('alias' => $this->alias)) && ($table->filter_id != $this->filter_id || $this->filter_id == 0))
{
$this->setError(JText::_('JLIB_DATABASE_ERROR_ARTICLE_UNIQUE_ALIAS'));
return false;
}
return parent::store($updateNulls);
}
}
message.php 0000604 00000006237 15245570224 0006713 0 ustar 00 <?php
/**
* @package Joomla.Administrator
* @subpackage com_messages
*
* @copyright (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\Utilities\ArrayHelper;
/**
* Message Table class
*
* @since 1.5
*/
class MessagesTableMessage extends JTable
{
/**
* Constructor
*
* @param JDatabaseDriver &$db Database connector object
*
* @since 1.5
*/
public function __construct(&$db)
{
parent::__construct('#__messages', 'message_id', $db);
$this->setColumnAlias('published', 'state');
}
/**
* Validation and filtering.
*
* @return boolean
*
* @since 1.5
*/
public function check()
{
// Check the to and from users.
$user = new JUser($this->user_id_from);
if (empty($user->id))
{
$this->setError(JText::_('COM_MESSAGES_ERROR_INVALID_FROM_USER'));
return false;
}
$user = new JUser($this->user_id_to);
if (empty($user->id))
{
$this->setError(JText::_('COM_MESSAGES_ERROR_INVALID_TO_USER'));
return false;
}
if (empty($this->subject))
{
$this->setError(JText::_('COM_MESSAGES_ERROR_INVALID_SUBJECT'));
return false;
}
if (empty($this->message))
{
$this->setError(JText::_('COM_MESSAGES_ERROR_INVALID_MESSAGE'));
return false;
}
return true;
}
/**
* Method to set the publishing state for a row or list of rows in the database
* table. The method respects checked out rows by other users and will attempt
* to checkin rows that it can after adjustments are made.
*
* @param mixed $pks An optional array of primary key values to update. If not
* set the instance property value is used.
* @param integer $state The publishing state. eg. [0 = unpublished, 1 = published]
* @param integer $userId The user id of the user performing the operation.
*
* @return boolean True on success.
*
* @since 1.6
*/
public function publish($pks = null, $state = 1, $userId = 0)
{
$k = $this->_tbl_key;
// Sanitize input.
$pks = ArrayHelper::toInteger($pks);
$state = (int) $state;
// If there are no primary keys set check to see if the instance key is set.
if (empty($pks))
{
if ($this->$k)
{
$pks = array($this->$k);
}
// Nothing to set publishing state on, return false.
else
{
$this->setError(JText::_('JLIB_DATABASE_ERROR_NO_ROWS_SELECTED'));
return false;
}
}
// Build the WHERE clause for the primary keys.
$where = $k . ' IN (' . implode(',', $pks) . ')';
// Update the publishing state for rows with the given primary keys.
$this->_db->setQuery(
'UPDATE ' . $this->_db->quoteName($this->_tbl)
. ' SET ' . $this->_db->quoteName('state') . ' = ' . (int) $state
. ' WHERE (' . $where . ')'
);
try
{
$this->_db->execute();
}
catch (RuntimeException $e)
{
$this->setError($e->getMessage());
return false;
}
// If the JTable instance value is in the list of primary keys that were set, set the instance.
if (in_array($this->$k, $pks))
{
$this->state = $state;
}
$this->setError('');
return true;
}
}
tag.php 0000604 00000014033 15245570227 0006036 0 ustar 00 <?php
/**
* @package Joomla.Administrator
* @subpackage com_tags
*
* @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
/**
* Tags table
*
* @since 3.1
*/
class TagsTableTag extends JTableNested
{
/**
* Constructor
*
* @param JDatabaseDriver $db A database connector object
*/
public function __construct($db)
{
parent::__construct('#__tags', 'id', $db);
JTableObserverContenthistory::createObserver($this, array('typeAlias' => 'com_tags.tag'));
}
/**
* Overloaded bind function
*
* @param array $array Named array
* @param mixed $ignore An optional array or space separated list of properties
* to ignore while binding.
*
* @return mixed Null if operation was satisfactory, otherwise returns an error string
*
* @see JTable::bind
* @since 3.1
*/
public function bind($array, $ignore = '')
{
if (isset($array['params']) && is_array($array['params']))
{
$registry = new Registry($array['params']);
$array['params'] = (string) $registry;
}
if (isset($array['metadata']) && is_array($array['metadata']))
{
$registry = new Registry($array['metadata']);
$array['metadata'] = (string) $registry;
}
if (isset($array['urls']) && is_array($array['urls']))
{
$registry = new Registry($array['urls']);
$array['urls'] = (string) $registry;
}
if (isset($array['images']) && is_array($array['images']))
{
$registry = new Registry($array['images']);
$array['images'] = (string) $registry;
}
return parent::bind($array, $ignore);
}
/**
* Overloaded check method to ensure data integrity.
*
* @return boolean True on success.
*
* @since 3.1
* @throws UnexpectedValueException
*/
public function check()
{
// Check for valid name.
if (trim($this->title) == '')
{
throw new UnexpectedValueException(sprintf('The title is empty'));
}
if (empty($this->alias))
{
$this->alias = $this->title;
}
$this->alias = JApplicationHelper::stringURLSafe($this->alias, $this->language);
if (trim(str_replace('-', '', $this->alias)) == '')
{
$this->alias = JFactory::getDate()->format('Y-m-d-H-i-s');
}
// Check the publish down date is not earlier than publish up.
if ((int) $this->publish_down > 0 && $this->publish_down < $this->publish_up)
{
throw new UnexpectedValueException(sprintf('End publish date is before start publish date.'));
}
// Clean up keywords -- eliminate extra spaces between phrases
// and cr (\r) and lf (\n) characters from string
if (!empty($this->metakey))
{
// Only process if not empty
// Define array of characters to remove
$bad_characters = array("\n", "\r", "\"", '<', '>');
// Remove bad characters
$after_clean = StringHelper::str_ireplace($bad_characters, '', $this->metakey);
// Create array using commas as delimiter
$keys = explode(',', $after_clean);
$clean_keys = array();
foreach ($keys as $key)
{
if (trim($key))
{
// Ignore blank keywords
$clean_keys[] = trim($key);
}
}
// Put array back together delimited by ", "
$this->metakey = implode(', ', $clean_keys);
}
// Clean up description -- eliminate quotes and <> brackets
if (!empty($this->metadesc))
{
// Only process if not empty
$bad_characters = array("\"", '<', '>');
$this->metadesc = StringHelper::str_ireplace($bad_characters, '', $this->metadesc);
}
// Not Null sanity check
$date = JFactory::getDate();
if (empty($this->params))
{
$this->params = '{}';
}
if (empty($this->metadesc))
{
$this->metadesc = '';
}
if (empty($this->metakey))
{
$this->metakey = '';
}
if (empty($this->metadata))
{
$this->metadata = '{}';
}
if (empty($this->urls))
{
$this->urls = '{}';
}
if (empty($this->images))
{
$this->images = '{}';
}
if (!(int) $this->checked_out_time)
{
$this->checked_out_time = $date->toSql();
}
if (!(int) $this->modified_time)
{
$this->modified_time = $date->toSql();
}
if (!(int) $this->modified_time)
{
$this->modified_time = $date->toSql();
}
if (!(int) $this->publish_up)
{
$this->publish_up = $date->toSql();
}
if (!(int) $this->publish_down)
{
$this->publish_down = $date->toSql();
}
return true;
}
/**
* Overriden JTable::store to set modified data and user id.
*
* @param boolean $updateNulls True to update fields even if they are null.
*
* @return boolean True on success.
*
* @since 3.1
*/
public function store($updateNulls = false)
{
$date = JFactory::getDate();
$user = JFactory::getUser();
$this->modified_time = $date->toSql();
if ($this->id)
{
// Existing item
$this->modified_user_id = $user->get('id');
}
else
{
// New tag. A tag created and created_by field can be set by the user,
// so we don't touch either of these if they are set.
if (!(int) $this->created_time)
{
$this->created_time = $date->toSql();
}
if (empty($this->created_user_id))
{
$this->created_user_id = $user->get('id');
}
}
// Verify that the alias is unique
$table = JTable::getInstance('Tag', 'TagsTable', array('dbo' => $this->_db));
if ($table->load(array('alias' => $this->alias)) && ($table->id != $this->id || $this->id == 0))
{
$this->setError(JText::_('COM_TAGS_ERROR_UNIQUE_ALIAS'));
return false;
}
return parent::store($updateNulls);
}
/**
* Method to delete a node and, optionally, its child nodes from the table.
*
* @param integer $pk The primary key of the node to delete.
* @param boolean $children True to delete child nodes, false to move them up a level.
*
* @return boolean True on success.
*
* @since 3.1
*/
public function delete($pk = null, $children = false)
{
$return = parent::delete($pk, $children);
if ($return)
{
$helper = new JHelperTags;
$helper->tagDeleteInstances($pk);
}
return $return;
}
}
contact.php 0000604 00000012555 15245570232 0006721 0 ustar 00 <?php
/**
* @package Joomla.Administrator
* @subpackage com_contact
*
* @copyright (C) 2005 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\Registry\Registry;
use Joomla\String\StringHelper;
/**
* Contact Table class.
*
* @since 1.0
*/
class ContactTableContact extends JTable
{
/**
* Ensure the params and metadata in json encoded in the bind method
*
* @var array
* @since 3.3
*/
protected $_jsonEncode = array('params', 'metadata');
/**
* Constructor
*
* @param JDatabaseDriver $db Database connector object
*
* @since 1.0
*/
public function __construct(&$db)
{
parent::__construct('#__contact_details', 'id', $db);
$this->setColumnAlias('title', 'name');
JTableObserverTags::createObserver($this, array('typeAlias' => 'com_contact.contact'));
JTableObserverContenthistory::createObserver($this, array('typeAlias' => 'com_contact.contact'));
}
/**
* Stores a contact.
*
* @param boolean $updateNulls True to update fields even if they are null.
*
* @return boolean True on success, false on failure.
*
* @since 1.6
*/
public function store($updateNulls = false)
{
// Transform the params field
if (is_array($this->params))
{
$registry = new Registry($this->params);
$this->params = (string) $registry;
}
$date = JFactory::getDate()->toSql();
$userId = JFactory::getUser()->id;
$this->modified = $date;
if ($this->id)
{
// Existing item
$this->modified_by = $userId;
}
else
{
// New contact. A contact created and created_by field can be set by the user,
// so we don't touch either of these if they are set.
if (!(int) $this->created)
{
$this->created = $date;
}
if (empty($this->created_by))
{
$this->created_by = $userId;
}
}
// Set publish_up to null date if not set
if (!$this->publish_up)
{
$this->publish_up = $this->_db->getNullDate();
}
// Set publish_down to null date if not set
if (!$this->publish_down)
{
$this->publish_down = $this->_db->getNullDate();
}
// Set xreference to empty string if not set
if (!$this->xreference)
{
$this->xreference = '';
}
// Store utf8 email as punycode
$this->email_to = JStringPunycode::emailToPunycode($this->email_to);
// Convert IDN urls to punycode
$this->webpage = JStringPunycode::urlToPunycode($this->webpage);
// Verify that the alias is unique
$table = JTable::getInstance('Contact', 'ContactTable', array('dbo' => $this->_db));
if ($table->load(array('alias' => $this->alias, 'catid' => $this->catid)) && ($table->id != $this->id || $this->id == 0))
{
$this->setError(JText::_('COM_CONTACT_ERROR_UNIQUE_ALIAS'));
return false;
}
return parent::store($updateNulls);
}
/**
* Overloaded check function
*
* @return boolean True on success, false on failure
*
* @see JTable::check
* @since 1.5
*/
public function check()
{
$this->default_con = (int) $this->default_con;
if (JFilterInput::checkAttribute(array('href', $this->webpage)))
{
$this->setError(JText::_('COM_CONTACT_WARNING_PROVIDE_VALID_URL'));
return false;
}
// Check for valid name
if (trim($this->name) == '')
{
$this->setError(JText::_('COM_CONTACT_WARNING_PROVIDE_VALID_NAME'));
return false;
}
// Generate a valid alias
$this->generateAlias();
// Check for valid category
if (trim($this->catid) == '')
{
$this->setError(JText::_('COM_CONTACT_WARNING_CATEGORY'));
return false;
}
// Sanity check for user_id
if (!$this->user_id)
{
$this->user_id = 0;
}
// Check the publish down date is not earlier than publish up.
if ((int) $this->publish_down > 0 && $this->publish_down < $this->publish_up)
{
$this->setError(JText::_('JGLOBAL_START_PUBLISH_AFTER_FINISH'));
return false;
}
/*
* Clean up keywords -- eliminate extra spaces between phrases
* and cr (\r) and lf (\n) characters from string.
* Only process if not empty.
*/
if (!empty($this->metakey))
{
// Array of characters to remove.
$badCharacters = array("\n", "\r", "\"", '<', '>');
// Remove bad characters.
$afterClean = StringHelper::str_ireplace($badCharacters, '', $this->metakey);
// Create array using commas as delimiter.
$keys = explode(',', $afterClean);
$cleanKeys = array();
foreach ($keys as $key)
{
// Ignore blank keywords.
if (trim($key))
{
$cleanKeys[] = trim($key);
}
}
// Put array back together delimited by ", "
$this->metakey = implode(', ', $cleanKeys);
}
// Clean up description -- eliminate quotes and <> brackets
if (!empty($this->metadesc))
{
// Only process if not empty
$badCharacters = array("\"", '<', '>');
$this->metadesc = StringHelper::str_ireplace($badCharacters, '', $this->metadesc);
}
return true;
}
/**
* Generate a valid alias from title / date.
* Remains public to be able to check for duplicated alias before saving
*
* @return string
*/
public function generateAlias()
{
if (empty($this->alias))
{
$this->alias = $this->name;
}
$this->alias = JApplicationHelper::stringURLSafe($this->alias, $this->language);
if (trim(str_replace('-', '', $this->alias)) == '')
{
$this->alias = JFactory::getDate()->format('Y-m-d-H-i-s');
}
return $this->alias;
}
}
client.php 0000604 00000006145 15245570242 0006543 0 ustar 00 <?php
/**
* @package Joomla.Administrator
* @subpackage com_banners
*
* @copyright (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\Utilities\ArrayHelper;
/**
* Client table
*
* @since 1.6
*/
class BannersTableClient extends JTable
{
/**
* Constructor
*
* @param JDatabaseDriver $db Database connector object
*
* @since 1.5
*/
public function __construct(&$db)
{
$this->checked_out_time = $db->getNullDate();
parent::__construct('#__banner_clients', 'id', $db);
$this->setColumnAlias('published', 'state');
JTableObserverContenthistory::createObserver($this, array('typeAlias' => 'com_banners.client'));
}
/**
* Method to set the publishing state for a row or list of rows in the database
* table. The method respects checked out rows by other users and will attempt
* to checkin rows that it can after adjustments are made.
*
* @param mixed $pks An optional array of primary key values to update. If not set the instance property value is used.
* @param integer $state The publishing state. eg. [0 = unpublished, 1 = published, 2=archived, -2=trashed]
* @param integer $userId The user id of the user performing the operation.
*
* @return boolean True on success.
*
* @since 1.0.4
*/
public function publish($pks = null, $state = 1, $userId = 0)
{
$k = $this->_tbl_key;
// Sanitize input.
$pks = ArrayHelper::toInteger($pks);
$userId = (int) $userId;
$state = (int) $state;
// If there are no primary keys set check to see if the instance key is set.
if (empty($pks))
{
if ($this->$k)
{
$pks = array($this->$k);
}
// Nothing to set publishing state on, return false.
else
{
$this->setError(JText::_('JLIB_DATABASE_ERROR_NO_ROWS_SELECTED'));
return false;
}
}
// Build the WHERE clause for the primary keys.
$where = $k . '=' . implode(' OR ' . $k . '=', $pks);
// Determine if there is checkin support for the table.
if (!property_exists($this, 'checked_out') || !property_exists($this, 'checked_out_time'))
{
$checkin = '';
}
else
{
$checkin = ' AND (checked_out = 0 OR checked_out = ' . (int) $userId . ')';
}
// Update the publishing state for rows with the given primary keys.
$this->_db->setQuery(
'UPDATE ' . $this->_db->quoteName($this->_tbl)
. ' SET ' . $this->_db->quoteName('state') . ' = ' . (int) $state
. ' WHERE (' . $where . ')'
. $checkin
);
try
{
$this->_db->execute();
}
catch (RuntimeException $e)
{
$this->setError($e->getMessage());
return false;
}
// If checkin is supported and all rows were adjusted, check them in.
if ($checkin && (count($pks) == $this->_db->getAffectedRows()))
{
// Checkin the rows.
foreach ($pks as $pk)
{
$this->checkin($pk);
}
}
// If the JTable instance value is in the list of primary keys that were set, set the instance.
if (in_array($this->$k, $pks))
{
$this->state = $state;
}
$this->setError('');
return true;
}
}
banner.php 0000604 00000017607 15245570242 0006537 0 ustar 00 <?php
/**
* @package Joomla.Administrator
* @subpackage com_banners
*
* @copyright (C) 2005 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\Registry\Registry;
use Joomla\Utilities\ArrayHelper;
/**
* Banner table
*
* @since 1.5
*/
class BannersTableBanner extends JTable
{
/**
* Constructor
*
* @param JDatabaseDriver $db Database connector object
*
* @since 1.5
*/
public function __construct(&$db)
{
parent::__construct('#__banners', 'id', $db);
JTableObserverContenthistory::createObserver($this, array('typeAlias' => 'com_banners.banner'));
$this->created = JFactory::getDate()->toSql();
$this->setColumnAlias('published', 'state');
}
/**
* Increase click count
*
* @return void
*/
public function clicks()
{
$query = 'UPDATE #__banners'
. ' SET clicks = (clicks + 1)'
. ' WHERE id = ' . (int) $this->id;
$this->_db->setQuery($query);
$this->_db->execute();
}
/**
* Overloaded check function
*
* @return boolean
*
* @see JTable::check
* @since 1.5
*/
public function check()
{
// Set name
$this->name = htmlspecialchars_decode($this->name, ENT_QUOTES);
// Set alias
if (trim($this->alias) == '')
{
$this->alias = $this->name;
}
$this->alias = JApplicationHelper::stringURLSafe($this->alias, $this->language);
if (trim(str_replace('-', '', $this->alias)) == '')
{
$this->alias = JFactory::getDate()->format('Y-m-d-H-i-s');
}
// Check the publish down date is not earlier than publish up.
if ($this->publish_down > $this->_db->getNullDate() && $this->publish_down < $this->publish_up)
{
$this->setError(JText::_('JGLOBAL_START_PUBLISH_AFTER_FINISH'));
return false;
}
// Set ordering
if ($this->state < 0)
{
// Set ordering to 0 if state is archived or trashed
$this->ordering = 0;
}
elseif (empty($this->ordering))
{
// Set ordering to last if ordering was 0
$this->ordering = self::getNextOrder($this->_db->quoteName('catid') . '=' . $this->_db->quote($this->catid) . ' AND state>=0');
}
if (empty($this->publish_up))
{
$this->publish_up = $this->getDbo()->getNullDate();
}
if (empty($this->publish_down))
{
$this->publish_down = $this->getDbo()->getNullDate();
}
if (empty($this->modified))
{
$this->modified = $this->getDbo()->getNullDate();
}
return true;
}
/**
* Overloaded bind function
*
* @param mixed $array An associative array or object to bind to the JTable instance.
* @param mixed $ignore An optional array or space separated list of properties to ignore while binding.
*
* @return boolean True on success
*
* @since 1.5
*/
public function bind($array, $ignore = array())
{
if (isset($array['params']) && is_array($array['params']))
{
$registry = new Registry($array['params']);
if ((int) $registry->get('width', 0) < 0)
{
$this->setError(JText::sprintf('JLIB_DATABASE_ERROR_NEGATIVE_NOT_PERMITTED', JText::_('COM_BANNERS_FIELD_WIDTH_LABEL')));
return false;
}
if ((int) $registry->get('height', 0) < 0)
{
$this->setError(JText::sprintf('JLIB_DATABASE_ERROR_NEGATIVE_NOT_PERMITTED', JText::_('COM_BANNERS_FIELD_HEIGHT_LABEL')));
return false;
}
// Converts the width and height to an absolute numeric value:
$width = abs((int) $registry->get('width', 0));
$height = abs((int) $registry->get('height', 0));
// Sets the width and height to an empty string if = 0
$registry->set('width', $width ?: '');
$registry->set('height', $height ?: '');
$array['params'] = (string) $registry;
}
if (isset($array['imptotal']))
{
$array['imptotal'] = abs((int) $array['imptotal']);
}
return parent::bind($array, $ignore);
}
/**
* Method to store a row
*
* @param boolean $updateNulls True to update fields even if they are null.
*
* @return boolean True on success, false on failure.
*/
public function store($updateNulls = false)
{
$db = $this->getDbo();
if (empty($this->id))
{
$purchaseType = $this->purchase_type;
if ($purchaseType < 0 && $this->cid)
{
/** @var BannersTableClient $client */
$client = JTable::getInstance('Client', 'BannersTable', array('dbo' => $db));
$client->load($this->cid);
$purchaseType = $client->purchase_type;
}
if ($purchaseType < 0)
{
$purchaseType = JComponentHelper::getParams('com_banners')->get('purchase_type');
}
switch ($purchaseType)
{
case 1:
$this->reset = $this->_db->getNullDate();
break;
case 2:
$date = JFactory::getDate('+1 year ' . date('Y-m-d'));
$this->reset = $date->toSql();
break;
case 3:
$date = JFactory::getDate('+1 month ' . date('Y-m-d'));
$this->reset = $date->toSql();
break;
case 4:
$date = JFactory::getDate('+7 day ' . date('Y-m-d'));
$this->reset = $date->toSql();
break;
case 5:
$date = JFactory::getDate('+1 day ' . date('Y-m-d'));
$this->reset = $date->toSql();
break;
}
// Store the row
parent::store($updateNulls);
}
else
{
// Get the old row
/** @var BannersTableBanner $oldrow */
$oldrow = JTable::getInstance('Banner', 'BannersTable', array('dbo' => $db));
if (!$oldrow->load($this->id) && $oldrow->getError())
{
$this->setError($oldrow->getError());
}
// Verify that the alias is unique
/** @var BannersTableBanner $table */
$table = JTable::getInstance('Banner', 'BannersTable', array('dbo' => $db));
if ($table->load(array('alias' => $this->alias, 'catid' => $this->catid)) && ($table->id != $this->id || $this->id == 0))
{
$this->setError(JText::_('COM_BANNERS_ERROR_UNIQUE_ALIAS'));
return false;
}
// Store the new row
parent::store($updateNulls);
// Need to reorder ?
if ($oldrow->state >= 0 && ($this->state < 0 || $oldrow->catid != $this->catid))
{
// Reorder the oldrow
$this->reorder($this->_db->quoteName('catid') . '=' . $this->_db->quote($oldrow->catid) . ' AND state>=0');
}
}
return count($this->getErrors()) == 0;
}
/**
* Method to set the sticky state for a row or list of rows in the database
* table. The method respects checked out rows by other users and will attempt
* to checkin rows that it can after adjustments are made.
*
* @param mixed $pks An optional array of primary key values to update. If not set the instance property value is used.
* @param integer $state The sticky state. eg. [0 = unsticked, 1 = sticked]
* @param integer $userId The user id of the user performing the operation.
*
* @return boolean True on success.
*
* @since 1.6
*/
public function stick($pks = null, $state = 1, $userId = 0)
{
$k = $this->_tbl_key;
// Sanitize input.
$pks = ArrayHelper::toInteger($pks);
$userId = (int) $userId;
$state = (int) $state;
// If there are no primary keys set check to see if the instance key is set.
if (empty($pks))
{
if ($this->$k)
{
$pks = array($this->$k);
}
// Nothing to set publishing state on, return false.
else
{
$this->setError(JText::_('JLIB_DATABASE_ERROR_NO_ROWS_SELECTED'));
return false;
}
}
// Get an instance of the table
/** @var BannersTableBanner $table */
$table = JTable::getInstance('Banner', 'BannersTable');
// For all keys
foreach ($pks as $pk)
{
// Load the banner
if (!$table->load($pk))
{
$this->setError($table->getError());
}
// Verify checkout
if ($table->checked_out == 0 || $table->checked_out == $userId)
{
// Change the state
$table->sticky = $state;
$table->checked_out = 0;
$table->checked_out_time = $this->_db->getNullDate();
// Check the row
$table->check();
// Store the row
if (!$table->store())
{
$this->setError($table->getError());
}
}
}
return count($this->getErrors()) == 0;
}
}
category.php 0000604 00000011261 15245570501 0007073 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.4.0 2014-12-04
* @since 1.0
*------------------------------------------------------------------------------
*/
// No direct access to this file
defined('_JEXEC') or die();
/**
* category Table class
*/
class iCagendaTablecategory extends JTable
{
/**
* Constructor
*
* @param JDatabase A database connector object
*/
public function __construct(&$_db)
{
parent::__construct('#__icagenda_category', 'id', $_db);
}
/**
* Overloaded bind function to pre-process the params.
*
* @param array Named array
* @return null|string null is operation was satisfactory, otherwise returns an error
* @see JTable:bind
* @since 1.5
*/
public function bind($array, $ignore = '')
{
if (isset($array['params']) && is_array($array['params'])) {
$registry = new JRegistry();
$registry->loadArray($array['params']);
$array['params'] = (string)$registry;
}
if (isset($array['metadata']) && is_array($array['metadata'])) {
$registry = new JRegistry();
$registry->loadArray($array['metadata']);
$array['metadata'] = (string)$registry;
}
return parent::bind($array, $ignore);
}
/**
* Overloaded check function
*/
public function check()
{
// If there is an ordering column and this is a new row then get the next ordering value
if (property_exists($this, 'ordering') && $this->id == 0)
{
$this->ordering = self::getNextOrder();
}
return parent::check();
}
/**
* Method to set the publishing state for a row or list of rows in the database
* table. The method respects checked out rows by other users and will attempt
* to checkin rows that it can after adjustments are made.
*
* @param mixed An optional array of primary key values to update. If not
* set the instance property value is used.
* @param integer The publishing state. eg. [0 = unpublished, 1 = published]
* @param integer The user id of the user performing the operation.
* @return boolean True on success.
* @since 1.0.4
*/
public function publish($pks = null, $state = 1, $userId = 0)
{
// Initialise variables.
$k = $this->_tbl_key;
// Sanitize input.
JArrayHelper::toInteger($pks);
$userId = (int) $userId;
$state = (int) $state;
// If there are no primary keys set check to see if the instance key is set.
if (empty($pks))
{
if ($this->$k) {
$pks = array($this->$k);
}
// Nothing to set publishing state on, return false.
else {
$this->setError(JText::_('JLIB_DATABASE_ERROR_NO_ROWS_SELECTED'));
return false;
}
}
// Build the WHERE clause for the primary keys.
$where = $k.'='.implode(' OR '.$k.'=', $pks);
// Determine if there is checkin support for the table.
if (!property_exists($this, 'checked_out') || !property_exists($this, 'checked_out_time')) {
$checkin = '';
}
else {
$checkin = ' AND (checked_out = 0 OR checked_out = '.(int) $userId.')';
}
// Update the publishing state for rows with the given primary keys.
$this->_db->setQuery(
'UPDATE `'.$this->_tbl.'`' .
' SET `state` = '.(int) $state .
' WHERE ('.$where.')' .
$checkin
);
$this->_db->query();
// Check for a database error.
if ($this->_db->getErrorNum()) {
$this->setError($this->_db->getErrorMsg());
return false;
}
// If checkin is supported and all rows were adjusted, check them in.
if ($checkin && (count($pks) == $this->_db->getAffectedRows()))
{
// Checkin the rows.
foreach($pks as $pk)
{
$this->checkin($pk);
}
}
// If the JTable instance value is in the list of primary keys that were set, set the instance.
if (in_array($this->$k, $pks)) {
$this->state = $state;
}
$this->setError('');
return true;
}
}
event.php 0000604 00000046062 15245570501 0006406 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.10 2015-08-14
* @since 1.0
*------------------------------------------------------------------------------
*/
// No direct access to this file
defined('_JEXEC') or die();
/**
* event Table class
*/
class iCagendaTableEvent extends JTable
{
/**
* @var array $custom_fields Property for the array of custom fields.
* This needs to be specified because there is no column for features in the events table
*/
protected $custom_fields = array();
/**
* Constructor
*
* @param JDatabase A database connector object
*/
public function __construct(&$_db)
{
parent::__construct('#__icagenda_events', 'id', $_db);
}
/**
* Overloaded bind function to pre-process the params.
*
* @param array Named array
* @return null|string null is operation was satisfactory, otherwise returns an error
* @see JTable:bind
* @since 1.3
*/
public function bind($array, $ignore = '')
{
$lang = JFactory::getLanguage();
// Serialize Single Dates
$dev_option = '0';
// Set Vars
$eventTimeZone = null;
$nodate = '0000-00-00 00:00:00';
$date_today = JHtml::date('now', 'Y-m-d'); // Joomla Time Zone
if (iCString::isSerialized($array['dates']))
{
$dates = unserialize($array['dates']);
}
elseif ($dev_option == '1') // DEV.
{
$dates = $this->setDatesOptions($array['dates']);
}
else
{
$dates = $this->getDates($array['dates']);
if ($lang->getTag() == 'fa-IR'
&& $dates != array('0000-00-00 00:00')
&& $dates != array('')
)
{
$dates_to_sql = array();
foreach ($dates AS $date)
{
if (iCDate::isDate($date))
{
$year = date('Y', strtotime($date));
$month = date('m', strtotime($date));
$day = date('d', strtotime($date));
$time = date('H:i', strtotime($date));
$converted_date = iCGlobalizeConvert::jalaliToGregorian($year, $month, $day, true) . ' ' . $time;
$dates_to_sql[] = date('Y-m-d H:i', strtotime($converted_date));
}
}
$dates = $dates_to_sql;
}
}
$dates = ($dates == array('')) ? array('0000-00-00 00:00') : $dates;
rsort($dates);
if ($dev_option == '1') // DEV.
{
$array['dates'] = $array['dates'];
}
else
{
$array['dates'] = serialize($dates);
}
/**
* Set Week Days
*/
if (!isset($array['weekdays']))
{
$array['weekdays'] = '';
}
elseif (is_array($array['weekdays']))
{
$array['weekdays'] = implode(',', $array['weekdays']);
}
// Return the dates of the period.
$startdate = ($array['startdate'] == NULL) ? $nodate : $array['startdate'];
$enddate = ($array['enddate'] == NULL) ? $nodate : $array['enddate'];
if (($startdate == $nodate) && ($enddate != $nodate))
{
$enddate = $nodate;
}
if (strtotime($startdate) > strtotime($enddate))
{
$errorperiod = '1';
}
else
{
$errorperiod = '';
$period_all_dates_array = iCDatePeriod::listDates($startdate, $enddate, $eventTimeZone);
$WeeksDays = iCDatePeriod::weekdaysToArray($array['weekdays']);
$period_array = array();
foreach ($period_all_dates_array AS $date_in_weekdays)
{
$datetime_period_date = JHtml::date($date_in_weekdays, 'Y-m-d H:i', $eventTimeZone);
if (in_array(date('w', strtotime($datetime_period_date)), $WeeksDays))
{
array_push($period_array, $datetime_period_date);
}
}
}
// Serialize Period Dates
if (($startdate != $nodate) && ($enddate != $nodate))
{
if ($errorperiod != '1')
{
$array['period'] = serialize($period_array);
$period = (iCString::isSerialized($array['period'])) ? unserialize($array['period']) : array();
if ($lang->getTag() == 'fa-IR')
{
$period_to_sql = array();
foreach ($period AS $date)
{
if (iCDate::isDate($date))
{
$year = date('Y', strtotime($date));
$month = date('m', strtotime($date));
$day = date('d', strtotime($date));
$time = date('H:i', strtotime($date));
$converted_date = iCGlobalizeConvert::jalaliToGregorian($year, $month, $day, true) . ' ' . $time;
$period_to_sql[] = date('Y-m-d H:i', strtotime($converted_date));
}
}
$period = $period_to_sql;
}
rsort($period);
$array['period'] = serialize($period);
}
else
{
$array['period'] = '';
}
}
else
{
$array['period'] = '';
}
// Set Next Date
$NextDates = $this->getNextDates($dates);
$NextPeriod = isset($period)
? $this->getNextPeriod($period, $array['weekdays'])
: $this->getNextDates($dates);
$date_NextDates = JHtml::date($NextDates, 'Y-m-d', $eventTimeZone);
$date_NextPeriod = JHtml::date($NextPeriod, 'Y-m-d', $eventTimeZone);
$time_NextDates = JHtml::date($NextDates, 'H:i', $eventTimeZone);
$time_NextPeriod = JHtml::date($NextPeriod, 'H:i', $eventTimeZone);
// $date_NextDates = date('Y-m-d', strtotime($NextDates));
// $date_NextPeriod = date('Y-m-d', strtotime($NextPeriod));
// $time_NextDates = date('H:i', strtotime($NextDates));
// $time_NextPeriod = date('H:i', strtotime($NextPeriod));
// Control the next date
if ((strtotime($date_NextDates) >= strtotime($date_today)) && (strtotime($date_NextPeriod) >= strtotime($date_today)))
{
if (strtotime($date_NextDates) < strtotime($date_NextPeriod))
{
$array['next'] = $this->getNextDates($dates);
}
if (strtotime($date_NextDates) > strtotime($date_NextPeriod))
{
$array['next'] = $this->getNextPeriod($period, $array['weekdays']);
}
if (strtotime($date_NextDates) == strtotime($date_NextPeriod))
{
if (strtotime($time_NextDates) >= strtotime($time_NextPeriod))
{
if (isset($period))
{
$array['next'] = $this->getNextPeriod($period, $array['weekdays']);
}
else
{
$array['next'] = $this->getNextDates($dates);
}
}
else
{
$array['next'] = $this->getNextDates($dates);
}
}
}
elseif ((strtotime($date_NextDates) < strtotime($date_today)) && (strtotime($date_NextPeriod) >= strtotime($date_today)))
{
$array['next'] = $this->getNextPeriod($period, $array['weekdays']);
}
elseif ((strtotime($date_NextDates) >= strtotime($date_today)) && (strtotime($date_NextPeriod) < strtotime($date_today)))
{
$array['next'] = $this->getNextDates($dates);
}
elseif ((strtotime($date_NextDates) < strtotime($date_today)) && (strtotime($date_NextPeriod) < strtotime($date_today)))
{
if (strtotime($date_NextDates) < strtotime($date_NextPeriod))
{
$array['next'] = $this->getNextPeriod($period, $array['weekdays']);
}
else
{
$array['next'] = $this->getNextDates($dates);
}
}
// Control of dates if valid (EDIT SINCE VERSION 3.0 - update 3.1.4)
if (((strtotime($NextDates) >= '943916400')
&& (strtotime($NextDates) <= '944002800'))
&& ($errorperiod == '1'))
{
$array['next'] = '-3600';
}
if (((strtotime($NextDates)=='943916400') || (strtotime($NextDates)=='943920000'))
&& ((strtotime($NextPeriod)=='943916400') || (strtotime($NextPeriod)=='943920000')))
{
$array['next'] = '-3600';
}
if ($array['next'] == '-3600')
{
$state = 0;
$this->_db->setQuery(
'UPDATE `#__icagenda_events`' .
' SET `state` = '.(int) $state .
' WHERE `id` = '. (int) $array['id']
);
if(version_compare(JVERSION, '3.0', 'lt'))
{
$this->_db->query();
}
else
{
$this->_db->execute();
}
}
$return[] = parent::bind($array, $ignore);
// ====================================
// START : HACK FOR A FEW PRO USERS !!!
// ====================================
$mail_new_event = JComponentHelper::getParams('com_icagenda')->get('mail_new_event', '0');
if ($mail_new_event == 1)
{
$title = $array['title'];
$id_event = $array['id'];
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('id AS eventID')
->from('#__icagenda_events')
->order('id DESC');
$db->setQuery($query);
$eventID = $db->loadResult();
$new_event = JRequest::getVar('new_event');
$title = $array['title'];
$description = $array['desc'];
$venue = '';
if ($array['place']) $venue.= $array['place'].' - ';
if ($array['city']) $venue.= $array['city'];
if ($array['city'] && $array['country']) $venue.= ', ';
if ($array['country']) $venue.= $array['country'];
if (strtotime($array['startdate']))
{
$date = 'Du '.$array['startdate'].' au '.$array['startdate'];
}
else
{
$date = $array['next'];
}
$baseURL = JURI::base();
$baseURL = str_replace('/administrator', '', $baseURL);
$baseURL = ltrim($baseURL, '/');
if ($array['image']) $image = '<img src="'.$baseURL.'/'.$array['image'].'" />';
if ($new_event == '1' && $eventID && $array['state'] == '1' && $array['approval'] == '0')
{
$return[] = self::notificationNewEvent(($eventID+1), $title, $description, $venue, $date, $image, $new_event);
}
}
// ====================================
// END : HACK FOR A FEW PRO USERS !!!
// ====================================
return $return;
}
/**
* DEV.
*/
function setDatesOptions($dates) // DEV.
{
$dates = str_replace('day=', '', $dates);
$dates = str_replace('start=', '', $dates);
$dates = str_replace('end=', '', $dates);
// $dates = str_replace('+', ' ', $dates);
$dates = str_replace('%3A', ':', $dates);
$dates = str_replace('&', ',', $dates);
$ex_dates = explode(',stop=stop', $dates);
$singles_dates = array();
foreach ($ex_dates AS $sd)
{
if ($sd != '')
{
array_push($singles_dates, $sd);
}
}
return $singles_dates;
}
/**
* Get Dates for Single Dates Script Input
*/
function getDates($dates)
{
$dates = str_replace('d=', '', $dates);
$dates = str_replace('+', ' ', $dates);
$dates = str_replace('%3A', ':', $dates);
$ex_dates = explode('&', $dates);
return $ex_dates;
}
/**
* Get Next Date from Single Dates
*/
function getNextDates($dates)
{
// Set Vars
$eventTimeZone = null;
$date_today = JHtml::date('now', 'Y-m-d'); // Joomla Time Zone
// Get Next
$next = JRequest::getVar('next');
if (count($dates))
{
while (strtotime($next) <= strtotime($date_today))
{
$nextDate = $dates[0];
foreach ($dates as $d)
{
if (strtotime($d) >= strtotime($date_today))
{
$nextDate = $d;
}
}
// return JHtml::date($nextDate, 'Y-m-d H:i', $eventTimeZone);
return date('Y-m-d H:i', strtotime($nextDate));
}
}
}
/**
* Get Next Date from Period
*/
function getNextPeriod($period, $i_weekdays)
{
// Set Vars
$eventTimeZone = null;
$date_today = JHtml::date('now', 'Y-m-d'); // Joomla Time Zone
$WeeksDays = iCDatePeriod::weekdaysToArray($i_weekdays);
// Set Next Date for Period, if dates exist in Period
if (count($period))
{
$nextPeriod = $period[0];
foreach ($period as $e)
{
if (in_array(date('w', strtotime($e)), $WeeksDays))
{
if (strtotime($e) >= strtotime($date_today)) // if datetime in period >= date today
{
$nextPeriod = $e;
}
}
}
// return JHtml::date($nextPeriod, 'Y-m-d H:i', $eventTimeZone);
return date('Y-m-d H:i', strtotime($nextPeriod));
}
}
/**
* Overloaded check function
*/
public function check()
{
// If there is an ordering column and this is a new row then get the next ordering value
if (property_exists($this, 'ordering') && $this->id == 0)
{
$this->ordering = self::getNextOrder();
}
return parent::check();
}
/**
* Method to set the publishing state for a row or list of rows in the database
* table. The method respects checked out rows by other users and will attempt
* to checkin rows that it can after adjustments are made.
*
* @param mixed An optional array of primary key values to update. If not
* set the instance property value is used.
* @param integer The publishing state. eg. [0 = unpublished, 1 = published]
* @param integer The user id of the user performing the operation.
* @return boolean True on success.
* @since 1.0.4
*/
public function publish($pks = null, $state = 1, $userId = 0)
{
// Initialise variables.
$k = $this->_tbl_key;
// Sanitize input.
JArrayHelper::toInteger($pks);
$userId = (int) $userId;
$state = (int) $state;
// If there are no primary keys set check to see if the instance key is set.
if (empty($pks))
{
if ($this->$k)
{
$pks = array($this->$k);
}
// Nothing to set publishing state on, return false.
else
{
$this->setError(JText::_('JLIB_DATABASE_ERROR_NO_ROWS_SELECTED'));
return false;
}
}
// Build the WHERE clause for the primary keys.
$where = $k.'='.implode(' OR '.$k.'=', $pks);
// Determine if there is checkin support for the table.
if (!property_exists($this, 'checked_out') || !property_exists($this, 'checked_out_time'))
{
$checkin = '';
}
else
{
$checkin = ' AND (checked_out = 0 OR checked_out = '.(int) $userId.')';
}
// Update the publishing state for rows with the given primary keys.
$this->_db->setQuery(
'UPDATE `'.$this->_tbl.'`' .
' SET `state` = '.(int) $state .
' WHERE ('.$where.')' .
$checkin
);
$this->_db->query();
// Check for a database error.
if ($this->_db->getErrorNum())
{
$this->setError($this->_db->getErrorMsg());
return false;
}
// If checkin is supported and all rows were adjusted, check them in.
if ($checkin && (count($pks) == $this->_db->getAffectedRows()))
{
// Checkin the rows.
foreach($pks as $pk)
{
$this->checkin($pk);
}
}
// If the JTable instance value is in the list of primary keys that were set, set the instance.
if (in_array($this->$k, $pks))
{
$this->state = $state;
}
$this->setError('');
return true;
}
/**
* HACK FOR A FEW PRO USERS !!!
*
* Will be removed when creation of a notification plugin
*
*/
function notificationNewEvent ($eventid, $title, $description, $venue, $date, $image, $new_event)
{
// Load iCagenda Global Options
$iCparams = JComponentHelper::getParams('com_icagenda');
// Load Joomla Config
$config = JFactory::getConfig();
// Switch Joomla 3.x / 2.5
if (version_compare(JVERSION, '3.0', 'ge'))
{
// Get the site name
$sitename = $config->get('sitename');
// Get Global Joomla Contact Infos
$mailfrom = $config->get('mailfrom');
$fromname = $config->get('fromname');
// Get default language
$langdefault = $config->get('language');
}
else
{
// Get the site name
$sitename = $config->getValue('config.sitename');
// Get Global Joomla Contact Infos
$mailfrom = $config->getValue('config.mailfrom');
$fromname = $config->getValue('config.fromname');
// Get default language
$langdefault = $config->getValue('config.language');
}
$siteURL = JURI::base();
$siteURL = rtrim($siteURL,'/');
$iCmenuitem = false;
// Itemid Request (automatic detection of the first iCagenda menu-link, by menuID, and depending of current language)
$langFrontend = $langdefault;
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('id AS idm')
->from('#__menu')
->where( "(link = 'index.php?option=com_icagenda&view=list') AND (published > 0) AND (language = '$langFrontend')" );
$db->setQuery($query);
$idm = $db->loadResult();
$mItemid = $idm;
if ($mItemid == NULL)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('id AS noidm')
->from('#__menu')
->where( "(link = 'index.php?option=com_icagenda&view=list') AND (published > 0) AND (language = '*')" );
$db->setQuery($query);
$noidm = $db->loadResult();
}
$nolink = '';
if ($noidm == NULL && $mItemid == NULL)
{
$nolink = 1;
}
if (is_numeric($iCmenuitem))
{
$lien = $iCmenuitem;
}
else
{
if ($mItemid == NULL)
{
$lien = $noidm;
}
else
{
$lien = $mItemid;
}
}
// Set Notification Email to each User groups allowed to receive a notification email when a new event created
$groupid = $iCparams->get('newevent_Groups', array("8"));
jimport( 'joomla.access.access' );
$newevent_Groups_Array = array();
foreach ($groupid AS $gp) {
$GroupUsers = JAccess::getUsersByGroup($gp, False);
$newevent_Groups_Array = array_merge($newevent_Groups_Array, $GroupUsers);
}
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$matches = implode(',', $newevent_Groups_Array);
$query->select('ui.username AS username, ui.email AS email, ui.password AS passw, ui.block AS block, ui.activation AS activation')
->from('#__users AS ui')
->where( "ui.id IN ($matches) ");
$db->setQuery($query);
$users = $db->loadObjectList();
foreach ($users AS $user)
{
// Create Notification Mailer
$new_mailer = JFactory::getMailer();
// Set Sender of Notification Email
$new_mailer->setSender(array( $mailfrom, $fromname ));
$username = $user->username;
$passw = $user->passw;
$email = $user->email;
// Set Recipient of Notification Email
$new_recipient = $email;
$new_mailer->addRecipient($email);
// Set Subject of New Event Notification Email
$new_subject = 'Nouvel évènement, '.$sitename;
$new_mailer->setSubject($new_subject);
// Set Url to preview new event
$baseURL = JURI::base();
$baseURL = str_replace('/administrator', '', $baseURL);
$urlpreview = str_replace('&','&', JRoute::_($baseURL.'index.php?option=com_icagenda&view=list&layout=event&id='.(int)$eventid.'&Itemid='.(int)$lien));
// Set Body of User Notification Email
$new_body_hello = 'Bonjour,';
$new_bodycontent = $new_body_hello.'<br /><br />';
$new_body_text = $sitename.' vous propose un nouvel évènement :';
$new_bodycontent.= $new_body_text.'<br /><br />';
// Event Details
$new_bodycontent.= $title ? 'Titre: '.$title.'<br />' : '';
$new_bodycontent.= $description ? 'Description: '.$description.'<br />' : '';
$new_bodycontent.= $venue ? 'Lieu: '.$venue.'<br />' : '';
$new_bodycontent.= $date ? 'Date: '.$date.'<br /><br />' : '';
$new_bodycontent.= $image.'<br /><br />';
// Link to event details view
$new_bodycontent.= '<a href="'.$urlpreview.'">'.$urlpreview.'</a><br /><br />';
// Footer
$new_body_footer = 'Do not answer to this e-mail notification as it is a generated e-mail. You are receiving this email message because you are registered at '.$sitename.'.';
$new_bodycontent.= '<hr><small>'.$new_body_footer.'<small>';
// Removes spaces (leading, ending) from Body
$new_body = rtrim($new_bodycontent);
// Authorizes HTML
$new_mailer->isHTML(true);
$new_mailer->Encoding = 'base64';
// Set Body
$new_mailer->setBody($new_body);
// Send User Notification Email
if (isset($email)) {
if($user->block == '0' && empty($user->activation)){
$send = $new_mailer->Send();
}
}
}
}
}
icagenda.php 0000604 00000004357 15245570501 0007021 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.4.0 2014-06-29
* @since 1.0
*------------------------------------------------------------------------------
*/
// No direct access to this file
defined('_JEXEC') or die();
// import Joomla table library
jimport('joomla.database.table');
/**
* iCagenda Table class
*/
class iCagendaTableiCagenda extends JTable
{
/**
* Constructor
*
* @param object Database connector object
*/
function __construct(&$db)
{
parent::__construct('#__icagenda_events', 'id', $db);
}
/**
* Overloaded bind function
*
* @param array named array
* @return null|string null is operation was satisfactory, otherwise returns an error
* @see JTable:bind
* @since 1.5
*/
public function bind($array, $ignore = '')
{
if (isset($array['params']) && is_array($array['params']))
{
// Convert the params field to a string.
$parameter = new JRegistry;
$parameter->loadArray($array['params']);
$array['params'] = (string)$parameter;
}
return parent::bind($array, $ignore);
}
/**
* Overloaded load function
*
* @param int $pk primary key
* @param boolean $reset reset data
* @return boolean
* @see JTable:load
*/
public function load($pk = null, $reset = true)
{
if (parent::load($pk, $reset))
{
// Convert the params field to a registry.
$params = new JRegistry;
// loadJSON is @deprecated 12.1 Use loadString passing JSON as the format instead.
// $params->loadString($this->item->params, 'JSON');
// "item" should not be present.
$params->loadJSON($this->params);
$this->params = $params;
return true;
}
else
{
return false;
}
}
}
customfield.php 0000604 00000014075 15245570501 0007602 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.4.0 2014-12-03
* @since 3.4.0
*------------------------------------------------------------------------------
*/
// No direct access to this file
defined('_JEXEC') or die();
/**
* Custom Field Table class
*/
class iCagendaTablecustomfield extends JTable
{
/**
* Constructor
*
* @param JDatabase A database connector object
* @since 3.4.0
*/
public function __construct(&$_db)
{
parent::__construct('#__icagenda_customfields', 'id', $_db);
}
/**
* Overloaded bind function.
*
* @param array Named array
* @return null|string null is operation was satisfactory, otherwise returns an error
* @see JTable:bind
* @since 3.4.0
*/
public function bind($array, $ignore = '')
{
// Set Creator infos
$user = JFactory::getUser();
$userId = $user->get('id');
if ($array['created_by']=='0')
{
$array['created_by'] = (int)$userId;
}
// Set Params
if (isset($array['params']) && is_array($array['params']))
{
$registry = new JRegistry();
$registry->loadArray($array['params']);
$array['params'] = (string)$registry;
}
return parent::bind($array, $ignore);
}
/**
* Overloaded check function
* @since 3.4.0
*/
public function check()
{
// Import Joomla 2.5
jimport( 'joomla.filter.output' );
// If there is an ordering column and this is a new row then get the next ordering value
if (property_exists($this, 'ordering')
&& $this->id == 0)
{
$this->ordering = self::getNextOrder();
}
// URL alias
if (empty($this->alias))
{
$this->alias = $this->title;
}
$this->alias = JFilterOutput::stringURLSafe($this->alias);
// Alias is not generated if non-latin characters, so we fix it by using created date, or title if unicode is activated, as alias
if ($this->alias == null || empty($this->alias))
{
if (JFactory::getConfig()->get('unicodeslugs') == 1)
{
$this->alias = JFilterOutput::stringURLUnicodeSlug($this->title);
}
else
{
$this->alias = JFilterOutput::stringURLSafe($this->created);
}
}
// Slug auto-create
$slug_empty = empty($this->slug) ? true : false;
if ($slug_empty)
{
$this->slug = $this->title;
}
$this->slug = iCFilterOutput::stringToSlug($this->slug);
// Slug is not generated if non-latin characters, so we fix it by using created date as a slug
if ($this->slug == null)
{
$this->slug = iCFilterOutput::stringToSlug($this->created);
}
// Check if Slug already exists
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('slug')
->from($db->qn('#__icagenda_customfields'))
->where($db->qn('slug') . ' = ' . $db->q($this->slug));
if (!empty($this->id))
{
$query->where('id <> ' . (int) $this->id);
}
$db->setQuery($query);
$slug_exists = $db->loadResult();
if ($slug_exists)
{
$error_slug = $slug_empty
? JText::sprintf('COM_ICAGENDA_CUSTOMFIELD_DATABASE_ERROR_AUTO_SLUG',
'<strong>' . $this->title . '</strong>', '<strong>' . $this->slug . '</strong>')
: '<strong>' . JText::_('COM_ICAGENDA_CUSTOMFIELD_DATABASE_ERROR_UNIQUE_SLUG') . '</strong>';
$this->setError($error_slug . '<br /><br /><span class="iCicon-info-circle"></span> <i>'
. JTEXT::_('COM_ICAGENDA_CUSTOMFIELD_SLUG_DESC').'</i>');
return false;
}
return parent::check();
}
/**
* Method to set the publishing state for a row or list of rows in the database
* table. The method respects checked out rows by other users and will attempt
* to checkin rows that it can after adjustments are made.
*
* @param mixed An optional array of primary key values to update. If not
* set the instance property value is used.
* @param integer The publishing state. eg. [0 = unpublished, 1 = published]
* @param integer The user id of the user performing the operation.
* @return boolean True on success.
* @since 3.4.0
*/
public function publish($pks = null, $state = 1, $userId = 0)
{
// Initialise variables.
$k = $this->_tbl_key;
// Sanitize input.
JArrayHelper::toInteger($pks);
$userId = (int) $userId;
$state = (int) $state;
// If there are no primary keys set check to see if the instance key is set.
if (empty($pks))
{
if ($this->$k)
{
$pks = array($this->$k);
}
// Nothing to set publishing state on, return false.
else
{
$this->setError(JText::_('JLIB_DATABASE_ERROR_NO_ROWS_SELECTED'));
return false;
}
}
// Build the WHERE clause for the primary keys.
$where = $k.'='.implode(' OR '.$k.'=', $pks);
// Determine if there is checkin support for the table.
if (!property_exists($this, 'checked_out') || !property_exists($this, 'checked_out_time'))
{
$checkin = '';
}
else
{
$checkin = ' AND (checked_out = 0 OR checked_out = '.(int) $userId.')';
}
// Update the publishing state for rows with the given primary keys.
$this->_db->setQuery(
'UPDATE `'.$this->_tbl.'`' .
' SET `state` = '.(int) $state .
' WHERE ('.$where.')' .
$checkin
);
$this->_db->query();
// Check for a database error.
if ($this->_db->getErrorNum())
{
$this->setError($this->_db->getErrorMsg());
return false;
}
// If checkin is supported and all rows were adjusted, check them in.
if ($checkin && (count($pks) == $this->_db->getAffectedRows()))
{
// Checkin the rows.
foreach($pks as $pk)
{
$this->checkin($pk);
}
}
// If the JTable instance value is in the list of primary keys that were set, set the instance.
if (in_array($this->$k, $pks))
{
$this->state = $state;
}
$this->setError('');
return true;
}
}
registration.php 0000604 00000010001 15245570501 0007757 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-27
* @since 3.3.3
*------------------------------------------------------------------------------
*/
// No direct access to this file
defined('_JEXEC') or die();
/**
* category Table class
*/
class iCagendaTableregistration extends JTable
{
/**
* Constructor
*
* @param JDatabase A database connector object
*/
public function __construct(&$_db)
{
parent::__construct('#__icagenda_registration', 'id', $_db);
}
/**
* Overloaded bind function to pre-process the params.
*
* @param array Named array
* @return null|string null is operation was satisfactory, otherwise returns an error
* @see JTable:bind
* @since 3.3.3
*/
public function bind($array, $ignore = '')
{
if ($array['date'] == 'update')
{
$array['date'] = '';
}
return parent::bind($array, $ignore);
}
/**
* Overloaded check function
*/
public function check()
{
// If there is an ordering column and this is a new row then get the next ordering value
if (property_exists($this, 'ordering') && $this->id == 0)
{
$this->ordering = self::getNextOrder();
}
return parent::check();
}
/**
* Method to set the publishing state for a row or list of rows in the database
* table. The method respects checked out rows by other users and will attempt
* to checkin rows that it can after adjustments are made.
*
* @param mixed An optional array of primary key values to update. If not
* set the instance property value is used.
* @param integer The publishing state. eg. [0 = unpublished, 1 = published]
* @param integer The user id of the user performing the operation.
* @return boolean True on success.
* @since 3.3.3
*/
public function publish($pks = null, $state = 1, $userId = 0)
{
// Initialise variables.
$k = $this->_tbl_key;
// Sanitize input.
JArrayHelper::toInteger($pks);
$userId = (int) $userId;
$state = (int) $state;
// If there are no primary keys set check to see if the instance key is set.
if (empty($pks))
{
if ($this->$k)
{
$pks = array($this->$k);
}
// Nothing to set publishing state on, return false.
else
{
$this->setError(JText::_('JLIB_DATABASE_ERROR_NO_ROWS_SELECTED'));
return false;
}
}
// Build the WHERE clause for the primary keys.
$where = $k.'='.implode(' OR '.$k.'=', $pks);
// Determine if there is checkin support for the table.
if (!property_exists($this, 'checked_out') || !property_exists($this, 'checked_out_time'))
{
$checkin = '';
}
else
{
$checkin = ' AND (checked_out = 0 OR checked_out = '.(int) $userId.')';
}
// Update the publishing state for rows with the given primary keys.
$this->_db->setQuery(
'UPDATE `'.$this->_tbl.'`' .
' SET `state` = '.(int) $state .
' WHERE ('.$where.')' .
$checkin
);
$this->_db->query();
// Check for a database error.
if ($this->_db->getErrorNum())
{
$this->setError($this->_db->getErrorMsg());
return false;
}
// If checkin is supported and all rows were adjusted, check them in.
if ($checkin && (count($pks) == $this->_db->getAffectedRows()))
{
// Checkin the rows.
foreach($pks as $pk)
{
$this->checkin($pk);
}
}
// If the JTable instance value is in the list of primary keys that were set, set the instance.
if (in_array($this->$k, $pks))
{
$this->state = $state;
}
$this->setError('');
return true;
}
}
feature.php 0000604 00000013566 15245570501 0006723 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 doorknob
* @link http://www.joomlic.com
*
* @version 3.4.0 2014-12-05
* @since 3.4.0
*------------------------------------------------------------------------------
*/
// No direct access to this file
defined('_JEXEC') or die();
/**
* feature Table class
*/
class iCagendaTablefeature extends JTable
{
protected $new_icon = null;
/**
* Constructor
*
* @param JDatabase A database connector object
* @since 3.4.0
*/
public function __construct(&$_db)
{
parent::__construct('#__icagenda_feature', 'id', $_db);
}
/**
* Overloaded bind function to pre-process the params.
*
* @param array Named array
* @return null|string null is operation was satisfactory, otherwise returns an error
* @see JTable:bind
* @since 3.4.0
*/
public function bind($array, $ignore = '')
{
if (isset($array['new_icon']))
{
// Get media path
$params_media = JComponentHelper::getParams('com_media');
$image_path = $params_media->get('image_path', 'images');
// Paths to feature icons folder
$thumbsPath = $image_path . '/icagenda/feature_icons';
// Get Image File Infos
$link_image = $array['new_icon'];
$decomposition = explode( '/' , $link_image );
// in each parent
$i = 0;
while ( isset($decomposition[$i]) )
$i++;
$i--;
$imgname = $decomposition[$i];
$fichier = explode( '.', $decomposition[$i] );
$imgtitle = $fichier[0];
$imgextension = strtolower($fichier[1]);
// Check file type if authorized to be generated as feature icon
$authorized_types = array('jpg', 'jpeg', 'png', 'gif');
if (!in_array($imgextension, $authorized_types) && $imgextension)
{
$this->setError('<strong>' . JText::_('COM_ICAGENDA_NOT_AUTHORIZED_IMAGE_TYPE') . '</strong><br />'
. JText::_('COM_ICAGENDA_FORM_FEATURE_MIMETYPE_ERROR'));
return false;
}
elseif ($imgextension)
{
// Clean icon name
jimport( 'joomla.filter.output' );
$icon_name = JFilterOutput::stringURLSafe($imgtitle) . '.' . $imgextension;
// Generate 16_bit if not exist
iCThumbGet::thumbnail($array['new_icon'], $thumbsPath, '16_bit', '16', '16', '100', false, '', '', '', $icon_name);
// Generate 24_bit if not exist
iCThumbGet::thumbnail($array['new_icon'], $thumbsPath, '24_bit', '24', '24', '100', false, '', '', '', $icon_name);
// Generate 32_bit if not exist
iCThumbGet::thumbnail($array['new_icon'], $thumbsPath, '32_bit', '32', '32', '100', false, '', '', '', $icon_name);
// Generate 48_bit if not exist
iCThumbGet::thumbnail($array['new_icon'], $thumbsPath, '48_bit', '48', '48', '100', false, '', '', '', $icon_name);
// Generate 64_bit if not exist
iCThumbGet::thumbnail($array['new_icon'], $thumbsPath, '64_bit', '64', '64', '100', false, '', '', '', $icon_name);
$array['icon'] = $icon_name;
}
}
return parent::bind($array, $ignore);
}
/**
* Overloaded check function
* @since 3.4.0
*/
public function check()
{
// If there is an ordering column and this is a new row then get the next ordering value
if (property_exists($this, 'ordering') && $this->id == 0)
{
$this->ordering = self::getNextOrder();
}
return parent::check();
}
/**
* Method to set the publishing state for a row or list of rows in the database
* table. The method respects checked out rows by other users and will attempt
* to checkin rows that it can after adjustments are made.
*
* @param mixed An optional array of primary key values to update. If not
* set the instance property value is used.
* @param integer The publishing state. eg. [0 = unpublished, 1 = published]
* @param integer The user id of the user performing the operation.
* @return boolean True on success.
* @since 3.4.0
*/
public function publish($pks = null, $state = 1, $userId = 0)
{
// Initialise variables.
$k = $this->_tbl_key;
// Sanitize input.
JArrayHelper::toInteger($pks);
$userId = (int) $userId;
$state = (int) $state;
// If there are no primary keys set check to see if the instance key is set.
if (empty($pks))
{
if ($this->$k)
{
$pks = array($this->$k);
}
// Nothing to set publishing state on, return false.
else
{
$this->setError(JText::_('JLIB_DATABASE_ERROR_NO_ROWS_SELECTED'));
return false;
}
}
// Build the WHERE clause for the primary keys.
$where = $k.'='.implode(' OR '.$k.'=', $pks);
// Determine if there is checkin support for the table.
if (!property_exists($this, 'checked_out') || !property_exists($this, 'checked_out_time'))
{
$checkin = '';
}
else
{
$checkin = ' AND (checked_out = 0 OR checked_out = '.(int) $userId.')';
}
// Update the publishing state for rows with the given primary keys.
$this->_db->setQuery(
'UPDATE `'.$this->_tbl.'`' .
' SET `state` = '.(int) $state .
' WHERE ('.$where.')' .
$checkin
);
$this->_db->query();
// Check for a database error.
if ($this->_db->getErrorNum())
{
$this->setError($this->_db->getErrorMsg());
return false;
}
// If checkin is supported and all rows were adjusted, check them in.
if ($checkin && (count($pks) == $this->_db->getAffectedRows()))
{
// Checkin the rows.
foreach($pks as $pk)
{
$this->checkin($pk);
}
}
// If the JTable instance value is in the list of primary keys that were set, set the instance.
if (in_array($this->$k, $pks))
{
$this->state = $state;
}
$this->setError('');
return true;
}
}
index.html 0000604 00000000032 15245570501 0006534 0 ustar 00 <html><body></body></html>