Exemplo n.º 1
0
 /**
  * Method to get a single record.
  *
  * @param	integer	The id of the primary key.
  *
  * @return	mixed	Object on success, false on failure.
  */
 public function getItem($pk = null)
 {
     $jemsettings = JEMAdmin::config();
     if ($item = parent::getItem($pk)) {
         $files = JEMAttachment::getAttachments('venue' . $item->id);
         $item->attachments = $files;
     }
     $item->author_ip = $jemsettings->storeip ? JemHelper::retrieveIP() : false;
     if (empty($item->id)) {
         $item->country = $jemsettings->defaultCountry;
     }
     if (!empty($item->locimage)) {
         if (strpos($item->locimage, 'images/') !== false) {
             # the image selected contains the images path
         } else {
             # the image selected doesn't have the /images/ path
             # we're looking at the locimage so we'll append the venues folder
             $item->locimage = 'images/jem/venues/' . $item->locimage;
         }
     }
     return $item;
 }
Exemplo n.º 2
0
 /**
  * Method to get a specific Venue
  *
  * @access public
  * @return array
  */
 function getVenue()
 {
     $user = JFactory::getUser();
     $db = JFactory::getDbo();
     $query = $db->getQuery(true);
     $_venue = array();
     $query->select('id, venue, published, city, state, url, street, custom1, custom2, custom3, custom4, custom5, ' . ' custom6, custom7, custom8, custom9, custom10, phone, fax, email, locimage, meta_keywords, meta_description, ' . ' created, locdescription, country, map, latitude, longitude, postalCode, checked_out AS vChecked_out, checked_out_time AS vChecked_out_time, ' . ' CASE WHEN CHAR_LENGTH(alias) THEN CONCAT_WS(\':\', id, alias) ELSE id END as slug');
     $query->from($db->quoteName('#__jem_venues'));
     $query->where('id = ' . $this->_id);
     $db->setQuery($query);
     $_venue = $db->loadObject();
     if (empty($_venue)) {
         return JError::raiseError(404, JText::_('COM_JEM_VENUE_NOTFOUND'));
     }
     $_venue->attachments = JEMAttachment::getAttachments('venue' . $_venue->id);
     return $_venue;
 }
Exemplo n.º 3
0
 /**
  * Method to get event data.
  *
  * @param integer	The id of the event.
  *
  * @return mixed item data object on success, false on failure.
  */
 public function getItem($itemId = null)
 {
     $jemsettings = JemHelper::config();
     // Initialise variables.
     $itemId = (int) (!empty($itemId)) ? $itemId : $this->getState('event.id');
     // Get a row instance.
     $table = $this->getTable();
     // Attempt to load the row.
     $return = $table->load($itemId);
     // Check for a table object error.
     if ($return === false && $table->getError()) {
         $this->setError($table->getError());
         return false;
     }
     $properties = $table->getProperties(1);
     $value = JArrayHelper::toObject($properties, 'JObject');
     // Backup current recurrence values
     if ($value->id) {
         $value->recurr_bak = new stdClass();
         foreach (get_object_vars($value) as $k => $v) {
             if (strncmp('recurrence_', $k, 11) === 0) {
                 $value->recurr_bak->{$k} = $v;
             }
         }
     }
     // Convert attrib field to Registry.
     $registry = new JRegistry();
     $registry->loadString($value->attribs);
     $globalregistry = JEMHelper::globalattribs();
     $value->params = clone $globalregistry;
     $value->params->merge($registry);
     // Compute selected asset permissions.
     $user = JFactory::getUser();
     $userId = $user->get('id');
     //$asset = 'com_jem.event.' . $value->id;
     $asset = 'com_jem';
     $db = JFactory::getDbo();
     $query = $db->getQuery(true);
     $query->select(array('count(id)'));
     $query->from('#__jem_register');
     $query->where(array('event= ' . $db->quote($itemId), 'waiting= 0'));
     $db->setQuery($query);
     $res = $db->loadResult();
     $value->booked = $res;
     $files = JEMAttachment::getAttachments('event' . $itemId);
     $value->attachments = $files;
     // Check general edit permission first.
     if ($user->authorise('core.edit', $asset)) {
         $value->params->set('access-edit', true);
     } elseif (!empty($userId) && $user->authorise('core.edit.own', $asset)) {
         // Check for a valid user and that they are the owner.
         if ($userId == $value->created_by) {
             $value->params->set('access-edit', true);
         }
     }
     // Check edit state permission.
     if ($itemId) {
         // Existing item
         $value->params->set('access-change', $user->authorise('core.edit.state', $asset));
     } else {
         // New item.
         $catId = (int) $this->getState('event.catid');
         if ($catId) {
             $value->params->set('access-change', $user->authorise('core.edit.state', 'com_jem.category.' . $catId));
             $value->catid = $catId;
         } else {
             $value->params->set('access-change', $user->authorise('core.edit.state', 'com_jem'));
         }
     }
     ////////////////
     $venueQuery = $db->getQuery(true);
     $venueQuery->select(array('alias'));
     $venueQuery->from('#__jem_venues');
     $venueQuery->where(array('id= ' . $db->quote($value->locid)));
     $db->setQuery($venueQuery);
     $venueResult = $db->loadResult();
     $value->localias = $venueResult;
     ////////////////
     $value->author_ip = $jemsettings->storeip ? JemHelper::retrieveIP() : false;
     $value->articletext = $value->introtext;
     if (!empty($value->fulltext)) {
         $value->articletext .= '<hr id="system-readmore" />' . $value->fulltext;
     }
     return $value;
 }
Exemplo n.º 4
0
 /**
  * Method to get event data.
  *
  * @param integer	The id of the event.
  * @return mixed item data object on success, false on failure.
  */
 public function &getItem($pk = null)
 {
     // Initialise variables.
     $pk = !empty($pk) ? $pk : (int) $this->getState('event.id');
     if ($this->_item === null) {
         $this->_item = array();
     }
     if (!isset($this->_item[$pk])) {
         try {
             $settings = JEMHelper::globalattribs();
             $db = $this->getDbo();
             $query = $db->getQuery(true);
             $query->select($this->getState('item.select', 'a.id, a.access, a.attribs, a.metadata, a.registra, a.custom1, a.custom2, a.custom3, a.custom4, a.custom5, a.custom6, a.custom7, a.custom8, a.custom9, a.custom10, a.times, a.endtimes, a.dates, a.enddates, a.id AS did, a.title, a.alias, ' . 'a.created, a.unregistra, a.published, a.created_by, ' . 'CASE WHEN a.modified = 0 THEN a.created ELSE a.modified END as modified, ' . 'a.modified_by, a.checked_out, a.checked_out_time, ' . 'a.datimage,  a.version, ' . 'a.meta_keywords, a.created_by_alias, a.introtext, a.fulltext, a.maxplaces, a.waitinglist, a.meta_description, a.hits, a.language, a.recurrence_group,' . 'a.recurrence_type, a.recurrence_first_id'));
             $query->from('#__jem_events AS a');
             // Join on user table.
             $name = $settings->get('global_regname', '1') ? 'u.name' : 'u.username';
             $query->select(array($name . ' AS author', 'u.name', 'u.username'));
             $query->join('LEFT', '#__users AS u on u.id = a.created_by');
             // Join on contact-user table.
             $query->select('con.id AS conid, con.name AS conname, con.telephone AS contelephone, con.email_to AS conemail');
             $query->join('LEFT', '#__contact_details AS con ON con.id = a.contactid');
             // Join on venue table.
             $query->select('l.custom1 AS venue1, l.custom2 AS venue2, l.custom3 AS venue3, l.custom4 AS venue4, l.custom5 AS venue5, l.custom6 AS venue6, l.custom7 AS venue7, l.custom8 AS venue8, l.custom9 AS venue9, l.custom10 AS venue10, ' . 'l.id AS locid, l.alias AS localias, l.venue, l.city, l.state, l.url, l.locdescription, l.locimage, l.city, l.postalCode, l.street, l.country,l.phone,l.fax,l.email,l.map, l.created_by AS venueowner, l.latitude, l.longitude, l.timezone, l.checked_out AS vChecked_out, l.checked_out_time AS vChecked_out_time');
             $query->join('LEFT', '#__jem_venues AS l ON a.locid = l.id');
             # join over the category-tables
             $query->join('LEFT', '#__jem_cats_event_relations AS rel ON rel.itemid = a.id');
             $query->join('LEFT', '#__jem_categories AS c ON c.id = rel.catid');
             // Filter by language
             /* commented out yet because it's incomplete
             			if ($this->getState('filter.language')) {
             				$query->where('a.language in (' . $db->quote(JFactory::getLanguage()->getTag()) . ',' . $db->quote('*') . ')');
             			}
             			*/
             $query->where('a.id = ' . (int) $pk);
             // Filter by start and end dates.
             $nullDate = $db->Quote($db->getNullDate());
             $date = JFactory::getDate();
             $nowDate = $db->Quote($date->toSql());
             // Filter by published state.
             $published = $this->getState('filter.published');
             $archived = $this->getState('filter.archived');
             if (is_numeric($published)) {
                 $query->where('(a.published = ' . (int) $published . ' OR a.published =' . (int) $archived . ')');
             }
             #####################
             ### FILTER - BYCAT ##
             #####################
             $cats = $this->getCategories('all');
             $query->where('c.id  IN (' . implode(',', $cats) . ')');
             //$query->group('a.id');
             $db->setQuery($query);
             $data = $db->loadObject();
             if ($error = $db->getErrorMsg()) {
                 throw new Exception($error);
             }
             if (empty($data)) {
                 throw new Exception(JText::_('COM_JEM_EVENT_ERROR_EVENT_NOT_FOUND'), 404);
             }
             // Convert parameter fields to objects.
             $registry = new JRegistry();
             $registry->loadString($data->attribs);
             $globalattribs = JEMHelper::globalattribs();
             $globalregistry = new JRegistry();
             $globalregistry->loadString($globalattribs);
             $data->params = clone $globalregistry;
             $data->params->merge($registry);
             $registry = new JRegistry();
             $registry->loadString($data->metadata);
             $data->metadata = $registry;
             // Compute selected asset permissions.
             $user = JFactory::getUser();
             // Technically guest could edit an event, but lets not check
             // that to improve performance a little.
             if (!$user->get('guest')) {
                 $userId = $user->get('id');
                 $asset = 'com_jem.event.' . $data->id;
                 // Check general edit permission first.
                 if ($user->authorise('core.edit', $asset)) {
                     $data->params->set('access-edit', true);
                 } elseif (!empty($userId) && $user->authorise('core.edit.own', $asset)) {
                     // Check for a valid user and that they are the owner.
                     if ($userId == $data->created_by) {
                         $data->params->set('access-edit', true);
                     }
                 }
             }
             // Compute view access permissions.
             if ($access = $this->getState('filter.access')) {
                 // If the access filter has been set, we already know this
                 // user can view.
                 $data->params->set('access-view', true);
             } else {
                 # retrieve category's that the user is able to see
                 # if there is no category the event should not be displayed
                 $user = JFactory::getUser();
                 $groups = $user->getAuthorisedViewLevels();
                 $category_viewable = $this->getCategories($pk);
                 if ($category_viewable) {
                     $data->params->set('access-view', true);
                 }
             }
             $this->_item[$pk] = $data;
         } catch (JException $e) {
             if ($e->getCode() == 404) {
                 // Need to go thru the error handler to allow Redirect to work.
                 JError::raiseError(404, $e->getMessage());
                 return false;
             } else {
                 $this->setError($e);
                 $this->_item[$pk] = false;
                 return false;
             }
         }
     }
     // Define Attachments
     $user = JFactory::getUser();
     $this->_item[$pk]->attachments = JEMAttachment::getAttachments('event' . $this->_item[$pk]->did);
     // Define Venue-Attachments
     $this->_item[$pk]->vattachments = JEMAttachment::getAttachments('venue' . $this->_item[$pk]->locid);
     // Define Booked
     $db = $this->getDbo();
     $query = $db->getQuery(true);
     $query->select(array('COUNT(*)'));
     $query->from('#__jem_register');
     $query->where(array('event= ' . $db->quote($this->_item[$pk]->did), 'waiting= 0'));
     $db->setQuery($query);
     $res = $db->loadResult();
     $this->_item[$pk]->booked = $res;
     // Define Waiters
     $db = $this->getDbo();
     $query = $db->getQuery(true);
     $query->select(array('COUNT(*)'));
     $query->from('#__jem_register');
     $query->where(array('event= ' . $db->quote($this->_item[$pk]->did), 'waiting= 1'));
     $db->setQuery($query);
     $res2 = $db->loadResult();
     $this->_item[$pk]->waiters = $res2;
     return $this->_item[$pk];
 }
Exemplo n.º 5
0
	/**
	 * Method to get a single record.
	 *
	 * @param	integer	The id of the primary key.
	 *
	 * @return	mixed	Object on success, false on failure.
	 */
	public function getItem($pk = null)
	{
		$jemsettings = JEMAdmin::config();

		if ($item = parent::getItem($pk)) {
			$files = JEMAttachment::getAttachments('venue'.$item->id);
			$item->attachments = $files;
		}

		$item->author_ip = $jemsettings->storeip ? JemHelper::retrieveIP() : false;

		if (empty($item->id)) {
			$item->country = $jemsettings->defaultCountry;
		}

		return $item;
	}
Exemplo n.º 6
0
 /**
  * Method to get event data.
  *
  * @param integer	The id of the event.
  *
  * @return mixed item data object on success, false on failure.
  */
 public function getItem($itemId = null)
 {
     $jemsettings = JemHelper::config();
     // Initialise variables.
     $itemId = (int) (!empty($itemId)) ? $itemId : $this->getState('event.id');
     // Get a row instance.
     $table = $this->getTable();
     // Attempt to load the row.
     $return = $table->load($itemId);
     // Check for a table object error.
     if ($return === false && $table->getError()) {
         $this->setError($table->getError());
         return false;
     }
     $properties = $table->getProperties(1);
     $value = JArrayHelper::toObject($properties, 'JObject');
     // Convert attrib field to Registry.
     $registry = new JRegistry();
     $registry->loadString($value->attribs);
     $globalsettings = JEMHelper::globalattribs();
     $globalregistry = new JRegistry();
     $globalregistry->loadString($globalsettings);
     $value->params = clone $globalregistry;
     $value->params->merge($registry);
     // Compute selected asset permissions.
     $user = JFactory::getUser();
     $userId = $user->get('id');
     //$asset = 'com_jem.event.' . $value->id;
     $asset = 'com_jem';
     $db = JFactory::getDbo();
     $query = $db->getQuery(true);
     $query->select(array('count(id)'));
     $query->from('#__jem_register');
     $query->where(array('event= ' . $db->quote($itemId), 'waiting= 0'));
     $db->setQuery($query);
     $res = $db->loadResult();
     $value->booked = $res;
     $files = JEMAttachment::getAttachments('event' . $itemId);
     $value->attachments = $files;
     ################
     ## RECURRENCE ##
     ################
     # check recurrence
     if ($value->recurrence_group) {
         # this event is part of a recurrence-group
         #
         # check for groupid & groupid_ref (recurrence_table)
         # - groupid		= $item->recurrence_group
         # - groupid_ref	= $item->recurrence_group
         # - Itemid		= $item->id
         $db = JFactory::getDbo();
         $query = $db->getQuery(true);
         $query->select(array('count(id)'));
         $query->from('#__jem_recurrence');
         $query->where(array('groupid= ' . $value->recurrence_group, 'itemid= ' . $value->id, 'groupid = groupid_ref'));
         $db->setQuery($query);
         $rec_groupset_check = $db->loadResult();
         if ($rec_groupset_check == '1') {
             $value->recurrence_groupcheck = true;
         } else {
             $value->recurrence_groupcheck = false;
         }
     } else {
         $value->recurrence_groupcheck = false;
     }
     ##############
     ## HOLIDAYS ##
     ##############
     # Retrieve dates that are holidays and enabled.
     $db = JFactory::getDbo();
     $query = $db->getQuery(true);
     $query->select('holiday');
     $query->from('#__jem_dates');
     $query->where(array('enabled = 1', 'holiday = 1'));
     $db->setQuery($query);
     $holidays = $db->loadColumn();
     if ($holidays) {
         $value->recurrence_country_holidays = true;
     } else {
         $value->recurrence_country_holidays = false;
     }
     // Check general edit permission first.
     if ($user->authorise('core.edit', $asset)) {
         $value->params->set('access-edit', true);
     } elseif (!empty($userId) && $user->authorise('core.edit.own', $asset)) {
         // Check for a valid user and that they are the owner.
         if ($userId == $value->created_by) {
             $value->params->set('access-edit', true);
         }
     }
     // Check edit state permission.
     if ($itemId) {
         // Existing item
         $value->params->set('access-change', $user->authorise('core.edit.state', $asset));
     } else {
         // New item.
         $catId = (int) $this->getState('event.catid');
         if ($catId) {
             $value->params->set('access-change', $user->authorise('core.edit.state', 'com_jem.category.' . $catId));
             $value->catid = $catId;
         } else {
             $access_change = $user->authorise('core.edit.state', 'com_jem');
             $value->params->set('access-change', $access_change);
         }
     }
     $value->author_ip = $jemsettings->storeip ? JemHelper::retrieveIP() : false;
     $value->articletext = $value->introtext;
     if (!empty($value->fulltext)) {
         $value->articletext .= '<hr id="system-readmore" />' . $value->fulltext;
     }
     if (!empty($value->datimage)) {
         if (strpos($value->datimage, 'images/') !== false) {
             # the image selected contains the images path
         } else {
             # the image selected doesn't have the /images/ path
             # we're looking at the locimage so we'll append the venues folder
             $value->datimage = 'images/jem/events/' . $value->datimage;
         }
     }
     $admin = JFactory::getUser()->authorise('core.manage', 'com_jem');
     if ($admin) {
         $value->admin = true;
     } else {
         $value->admin = false;
     }
     return $value;
 }
Exemplo n.º 7
0
	/**
	 * Method to get a specific Venue
	 *
	 * @access public
	 * @return array
	 */
	function getVenue()
	{
		$user  = JemFactory::getUser();

		$db    = JFactory::getDbo();
		$query = $db->getQuery(true);
		$_venue = array();

		$query->select('id, venue, published, city, state, url, street, custom1, custom2, custom3, custom4, custom5, '.
				' custom6, custom7, custom8, custom9, custom10, locimage, meta_keywords, meta_description, '.
				' created, created_by, locdescription, country, map, latitude, longitude, postalCode, checked_out AS vChecked_out, checked_out_time AS vChecked_out_time, '.
				' CASE WHEN CHAR_LENGTH(alias) THEN CONCAT_WS(\':\', id, alias) ELSE id END as slug');
		$query->from($db->quoteName('#__jem_venues'));
		$query->where('id = '.(int)$this->_id);

		// all together: if published or the user is creator of the venue or allowed to edit or publish venues
		if (empty($user->id)) {
			$query->where('published = 1');
		}
		// no limit if user can publish or edit foreign venues
		elseif ($user->can(array('edit', 'publish'), 'venue')) {
			$query->where('published IN (0,1)');
		}
		// user maybe creator
		else {
			$query->where('(published = 1 OR (published = 0 AND created_by = ' . $this->_db->Quote($user->id) . '))');
		}

		$db->setQuery($query);
		$_venue = $db->loadObject();

		if (empty($_venue)) {
			//return JError::raiseError(404, JText::_('COM_JEM_VENUE_NOTFOUND'));
			$this->setError(JText::_('COM_JEM_VENUE_ERROR_VENUE_NOT_FOUND'));
			return false;
		}

		$_venue->attachments = JEMAttachment::getAttachments('venue'.$_venue->id);

		return $_venue;
	}
Exemplo n.º 8
0
	/**
	 * Method to get event data.
	 *
	 * @param integer	The id of the event.
	 * @return mixed item data object on success, false on failure.
	 */
	public function &getItem($pk = null)
	{
		// Initialise variables.
		$pk = (!empty($pk)) ? $pk : (int) $this->getState('event.id');
		$user = JemFactory::getUser();

		if ($this->_item === null) {
			$this->_item = array();
		}

		if (!isset($this->_item[$pk])) {

			try {
				$settings = JEMHelper::globalattribs();

				$db = $this->getDbo();
				$query = $db->getQuery(true);

				$query->select(
						$this->getState('item.select',
								'a.id, a.access, a.attribs, a.metadata, a.registra, a.custom1, a.custom2, a.custom3, a.custom4, a.custom5, a.custom6, a.custom7, a.custom8, a.custom9, a.custom10, a.times, a.endtimes, a.dates, a.enddates, a.id AS did, a.title, a.alias, ' .
										'a.created, a.unregistra, a.published, a.created_by, ' .
										'CASE WHEN a.modified = 0 THEN a.created ELSE a.modified END as modified, ' . 'a.modified_by, a.checked_out, a.checked_out_time, ' . 'a.datimage,  a.version, ' .
										'a.meta_keywords, a.created_by_alias, a.introtext, a.fulltext, a.maxplaces, a.waitinglist, a.meta_description, a.hits, a.language, ' .
										'a.recurrence_type, a.recurrence_first_id'));
				$query->from('#__jem_events AS a');

				// Join on user table.
				$name = $settings->get('global_regname','1') ? 'u.name' : 'u.username';
				$query->select($name.' AS author');
				$query->join('LEFT', '#__users AS u on u.id = a.created_by');

				// Join on contact-user table.
				$query->select('con.id AS conid, con.name AS conname, con.telephone AS contelephone, con.email_to AS conemail');
				$query->join('LEFT', '#__contact_details AS con ON con.id = a.contactid');

				// Join on venue table.
				$query->select('l.custom1 AS venue1, l.custom2 AS venue2, l.custom3 AS venue3, l.custom4 AS venue4, l.custom5 AS venue5, l.custom6 AS venue6, l.custom7 AS venue7, l.custom8 AS venue8, l.custom9 AS venue9, l.custom10 AS venue10, ' .
				               'l.id AS locid, l.alias AS localias, l.venue, l.city, l.state, l.url, l.locdescription, l.locimage, l.city, l.postalCode, l.street, l.country, l.map, l.created_by AS venueowner, l.latitude, l.longitude, l.checked_out AS vChecked_out, l.checked_out_time AS vChecked_out_time');
				$query->join('LEFT', '#__jem_venues AS l ON a.locid = l.id');

				# join over the category-tables
				$query->join('LEFT', '#__jem_cats_event_relations AS rel ON rel.itemid = a.id');
				$query->join('LEFT', '#__jem_categories AS c ON c.id = rel.catid');

				// Get contact id
				$subQuery = $db->getQuery(true);
				$subQuery->select('MAX(contact.id) AS id');
				$subQuery->from('#__contact_details AS contact');
				$subQuery->where('contact.published = 1');
				$subQuery->where('contact.user_id = a.created_by');

				// Filter by language
				if ($this->getState('filter.language')) {
					$subQuery->where('(contact.language in (' . $db->quote(JFactory::getLanguage()->getTag()) . ',' . $db->quote('*') . ') OR contact.language IS NULL)');
				}

				$query->select('(' . $subQuery . ') as contactid2');

				// Filter by language
				/* commented out yet because it's incomplete
				if ($this->getState('filter.language')) {
					$query->where('a.language in (' . $db->quote(JFactory::getLanguage()->getTag()) . ',' . $db->quote('*') . ')');
				}
				*/

				$query->where('a.id = ' . (int) $pk);

				// Filter by start and end dates.
				$nullDate = $db->Quote($db->getNullDate());
				$date = JFactory::getDate();

				$nowDate = $db->Quote($date->toSql());


				// Filter by published state ==> later.
				//  It would result in too complicated query.
				//  It's easier to get data and check then e.g. for event owner etc.


				#####################
				### FILTER - BYCAT ##
				#####################

				$cats = $this->getCategories('all');
				if (!empty($cats)) {
					$query->where('c.id  IN (' . implode(',', $cats) . ')');
				}

				//$query->group('a.id');
				$db->setQuery($query);
				$data = $db->loadObject();

				if ($error = $db->getErrorMsg()) {
					throw new Exception($error);
				}

				if (empty($data)) {
					throw new Exception(JText::_('COM_JEM_EVENT_ERROR_EVENT_NOT_FOUND'), 404);
				}

				// Convert parameter fields to objects.
				$registry = new JRegistry;
				$registry->loadString($data->attribs);

				$data->params = JEMHelper::globalattribs(); // returns JRegistry object
				$data->params->merge($registry);

				$registry = new JRegistry;
				$registry->loadString($data->metadata);
				$data->metadata = $registry;

				$data->categories = $this->getCategories($pk);

				// Compute selected asset permissions.
				$viewLevels  = $user->getAuthorisedViewLevels();

				$access_edit = $user->can('edit', 'event', $data->id, $data->created_by);
				$access_view = (($data->published == 1) || ($data->published == 2) ||          // published and archived event
				                (($data->published == 0) && $access_edit) ||                   // unpublished for editors,
				                $user->can('publish', 'event', $data->id, $data->created_by)); // all for publishers

				$data->params->set('access-edit', $access_edit);

				// Compute view access permissions.

				# event can be shown if
				#  - user has matching view access level and
				#  - there is at least one category attached user can see and
				#  - publishing state and user permissions allow that (e.g. unpublished event but user is editor, owner, or publisher)
				$data->params->set('access-view', $access_view && !empty($data->categories) && in_array($data->access, $viewLevels));

				$this->_item[$pk] = $data;
			}
			catch (JException $e) {
				if ($e->getCode() == 404) {
					// Need to go thru the error handler to allow Redirect to
					// work.
					JError::raiseError(404, $e->getMessage());
					return false;
				}
				else {
					$this->setError($e);
					$this->_item[$pk] = false;
					return false;
				}
			}
		}

		// Define Attachments
		$this->_item[$pk]->attachments = JEMAttachment::getAttachments('event' . $this->_item[$pk]->did);

		// Define Venue-Attachments
		$this->_item[$pk]->vattachments = JEMAttachment::getAttachments('venue' . $this->_item[$pk]->locid);

		// Define Booked
		$db = $this->getDbo();
		$query = $db->getQuery(true);
		$query->select(array('COUNT(*)'));
		$query->from('#__jem_register');
		$query->where(array(
				'event= ' . $db->quote($this->_item[$pk]->did),
				'waiting= 0'
		));
		$db->setQuery($query);
		$res = $db->loadResult();
		$this->_item[$pk]->booked = $res;


		return $this->_item[$pk];
	}
Exemplo n.º 9
0
 /**
  * Method to get a single record.
  *
  * @param	integer	The id of the primary key.
  *
  * @return	mixed	Object on success, false on failure.
  */
 public function getItem($pk = null)
 {
     $jemsettings = JEMAdmin::config();
     if ($item = parent::getItem($pk)) {
         // Convert the params field to an array.
         $registry = new JRegistry();
         $registry->loadString($item->attribs);
         $item->attribs = $registry->toArray();
         // Convert the metadata field to an array.
         $registry = new JRegistry();
         $registry->loadString($item->metadata);
         $item->metadata = $registry->toArray();
         $item->articletext = trim($item->fulltext) != '' ? $item->introtext . "<hr id=\"system-readmore\" />" . $item->fulltext : $item->introtext;
         $db = JFactory::getDbo();
         $query = $db->getQuery(true);
         $query->select(array('count(id)'));
         $query->from('#__jem_register');
         $query->where(array('event= ' . $db->quote($item->id), 'waiting= 0'));
         $db->setQuery($query);
         $res = $db->loadResult();
         $item->booked = $res;
         $files = JEMAttachment::getAttachments('event' . $item->id);
         $item->attachments = $files;
         ################
         ## RECURRENCE ##
         ################
         # check recurrence
         if ($item->recurrence_group) {
             # this event is part of a recurrence-group
             #
             # check for groupid & groupid_ref (recurrence_table)
             # - groupid		= $item->recurrence_group
             # - groupid_ref	= $item->recurrence_group
             # - Itemid		= $item->id
             $db = JFactory::getDbo();
             $query = $db->getQuery(true);
             $query->select(array('count(id)'));
             $query->from('#__jem_recurrence');
             $query->where(array('groupid= ' . $item->recurrence_group, 'itemid= ' . $item->id, 'groupid = groupid_ref'));
             $db->setQuery($query);
             $rec_groupset_check = $db->loadResult();
             if ($rec_groupset_check == '1') {
                 $item->recurrence_groupcheck = true;
             } else {
                 $item->recurrence_groupcheck = false;
             }
         } else {
             $item->recurrence_groupcheck = false;
         }
         ##############
         ## HOLIDAYS ##
         ##############
         # Retrieve dates that are holidays and enabled.
         $db = JFactory::getDbo();
         $query = $db->getQuery(true);
         $query->select('holiday');
         $query->from('#__jem_dates');
         $query->where(array('enabled = 1', 'holiday = 1'));
         $db->setQuery($query);
         $holidays = $db->loadColumn();
         if ($holidays) {
             $item->recurrence_country_holidays = true;
         } else {
             $item->recurrence_country_holidays = false;
         }
         $item->author_ip = $jemsettings->storeip ? JemHelper::retrieveIP() : false;
         if (empty($item->id)) {
             $item->country = $jemsettings->defaultCountry;
         }
         if (!empty($item->datimage)) {
             if (strpos($item->datimage, 'images/') !== false) {
                 # the image selected contains the images path
             } else {
                 # the image selected doesn't have the /images/ path
                 # we're looking at the locimage so we'll append the venues folder
                 $item->datimage = 'images/jem/events/' . $item->datimage;
             }
         }
         $admin = JFactory::getUser()->authorise('core.manage', 'com_jem');
         if ($admin) {
             $item->admin = true;
         } else {
             $item->admin = false;
         }
     }
     return $item;
 }
Exemplo n.º 10
0
	/**
	 * Method to get a single record.
	 *
	 * @param	integer	The id of the primary key.
	 *
	 * @return	mixed	Object on success, false on failure.
	 */
	public function getItem($pk = null)
	{
		$jemsettings = JEMAdmin::config();

		if ($item = parent::getItem($pk)){
			// Convert the params field to an array.
			$registry = new JRegistry;
			$registry->loadString($item->attribs);
			$item->attribs = $registry->toArray();

			// Convert the metadata field to an array.
			$registry = new JRegistry;
			$registry->loadString($item->metadata);
			$item->metadata = $registry->toArray();

			$item->articletext = trim($item->fulltext) != '' ? $item->introtext . "<hr id=\"system-readmore\" />" . $item->fulltext : $item->introtext;

			$db = JFactory::getDbo();

			$query = $db->getQuery(true);
			$query->select(array('count(id)'));
			$query->from('#__jem_register');
			$query->where(array('event= '.$db->quote($item->id), 'waiting= 0'));

			$db->setQuery($query);
			$res = $db->loadResult();
			$item->booked = $res;

			$files = JEMAttachment::getAttachments('event'.$item->id);
			$item->attachments = $files;

			if ($item->id){
				// Store current recurrence values
				$item->recurr_bak = new stdClass;
				foreach (get_object_vars($item) as $k => $v) {
					if (strncmp('recurrence_', $k, 11) === 0) {
						$item->recurr_bak->$k = $v;
					}
				}

				$item->recurrence_type 			= '';
				$item->recurrence_number 		= '';
				$item->recurrence_byday 		= '';
				$item->recurrence_counter 		= '';
				$item->recurrence_first_id 		= '';
				$item->recurrence_limit 		= '';
				$item->recurrence_limit_date	= '';
			}

			$item->author_ip = $jemsettings->storeip ? JemHelper::retrieveIP() : false;

			if (empty($item->id)){
				$item->country = $jemsettings->defaultCountry;
			}
		}

		return $item;
	}