Файловый менеджер - Редактировать - /home/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>