Example #1
0
 /**
  * unconfirm attendees
  * 
  * @param $cid array of attendees id to unconfirm
  * @return boolean true on success
  */
 function unconfirmattendees($cid = array())
 {
     if (count($cid)) {
         $ids = implode(',', $cid);
         $query = 'UPDATE #__redevent_register SET confirmed = 0 WHERE id IN (' . $ids . ') ';
         $this->_db->setQuery($query);
         if (!$this->_db->query()) {
             RedeventError::raiseError(1001, $this->_db->getErrorMsg());
             return false;
         }
     }
     return true;
 }
 /**
  * Method to remove a venues category
  *
  * @access	public
  * @return	string $msg
  * @since	0.9
  */
 function delete($cid)
 {
     $cids = implode(',', $cid);
     $query = 'SELECT c.id, c.name, COUNT( xv.category_id ) AS numvenues' . ' FROM #__redevent_venues_categories AS c' . ' LEFT JOIN #__redevent_venue_category_xref AS xv ON xv.category_id = c.id' . ' WHERE c.id IN (' . $cids . ')' . ' GROUP BY c.id';
     $this->_db->setQuery($query);
     if (!($rows = $this->_db->loadObjectList())) {
         RedeventError::raiseError(500, $this->_db->stderr());
         return false;
     }
     $err = array();
     $cid = array();
     foreach ($rows as $row) {
         if ($row->numvenues == 0) {
             $cid[] = $row->id;
         } else {
             $err[] = $row->name;
         }
     }
     if (count($cid)) {
         $cids = implode(',', $cid);
         $query = 'DELETE FROM #__redevent_venues_categories' . ' WHERE id IN (' . $cids . ')';
         $this->_db->setQuery($query);
         if (!$this->_db->query()) {
             $this->setError($this->_db->getErrorMsg());
             return false;
         }
         $table = JTable::getInstance('redevent_venues_categories', '');
         $table->rebuildTree();
     }
     if (count($err)) {
         $cids = implode(', ', $err);
         $msg = JText::sprintf('COM_REDEVENT_VENUES_ASSIGNED_CATEGORY_S', $cids);
         return $msg;
     } else {
         $total = count($cid);
         $msg = $total . ' ' . JText::_('COM_REDEVENT_CATEGORIES_DELETED');
         return $msg;
     }
 }
Example #3
0
 /**
  * Method to get event data for the Detailsview
  *
  * @access public
  * @return array
  * @since 0.9
  */
 public function getData()
 {
     /*
      * Load the Category data
      */
     if ($this->_loadDetails()) {
         $user =& JFactory::getUser();
         // Is the category published?
         if (!count($this->_event->categories)) {
             RedeventError::raiseError(404, JText::_("COM_REDEVENT_CATEGORY_NOT_PUBLISHED"));
         }
         // Do we have access to any category ?
         $access = false;
         foreach ($this->_details->categories as $cat) {
             if ($cat->access <= max($user->getAuthorisedViewLevels())) {
                 $access = true;
                 break;
             }
         }
         if (!$access) {
             JError::raiseError(403, JText::_("COM_REDEVENT_ALERTNOTAUTH"));
         }
     }
     return $this->_event;
 }
Example #4
0
 /**
  * Method to store the venue
  *
  * @access	public
  * @return	boolean	True on success
  * @since	1.5
  */
 function store($data)
 {
     $elsettings = JComponentHelper::getParams('com_redevent');
     $user =& JFactory::getUser();
     $config =& JFactory::getConfig();
     $tzoffset = $config->getValue('config.offset');
     $row =& $this->getTable('redevent_venues', '');
     // triggers for smart search
     $dispatcher = JDispatcher::getInstance();
     JPluginHelper::importPlugin('finder');
     // bind it to the table
     if (!$row->bind($data)) {
         RedeventError::raiseError(500, $this->_db->getErrorMsg());
         return false;
     }
     // Check if image was selected
     jimport('joomla.filesystem.file');
     $format = strtolower(JFile::getExt($row->locimage));
     $allowable = array('gif', 'jpg', 'png');
     if (in_array($format, $allowable)) {
         $row->locimage = $row->locimage;
     } else {
         $row->locimage = '';
     }
     // sanitise id field
     $row->id = (int) $row->id;
     $nullDate = $this->_db->getNullDate();
     // Are we saving from an item edit?
     if ($row->id) {
         $row->modified = gmdate('Y-m-d H:i:s');
         $row->modified_by = $user->get('id');
         $isNew = false;
     } else {
         $row->modified = $nullDate;
         $row->modified_by = '';
         //get IP, time and userid
         $row->created = gmdate('Y-m-d H:i:s');
         $row->author_ip = $elsettings->get('storeip', '1') ? getenv('REMOTE_ADDR') : 'DISABLED';
         $row->created_by = $user->get('id');
         $isNew = true;
     }
     //uppercase needed by mapservices
     if ($row->country) {
         $row->country = JString::strtoupper($row->country);
     }
     //update item order
     if (!$row->id) {
         $row->ordering = $row->getNextOrder();
     }
     // Make sure the data is valid
     if (!$row->check($elsettings)) {
         $this->setError($row->getError());
         return false;
     }
     // Trigger the onFinderBeforeSave event.
     $results = $dispatcher->trigger('onFinderBeforeSave', array($this->option . '.' . $this->name, $row, $isNew));
     // Store it in the db
     if (!$row->store()) {
         RedeventError::raiseError(500, $this->_db->getErrorMsg());
         return false;
     }
     // update the venue category xref
     // first, delete current rows for this event
     $query = ' DELETE FROM #__redevent_venue_category_xref WHERE venue_id = ' . $this->_db->Quote($row->id);
     $this->_db->setQuery($query);
     if (!$this->_db->query()) {
         $this->setError($this->_db->getErrorMsg());
         return false;
     }
     // insert new ref
     if (isset($data['categories'])) {
         foreach ((array) $data['categories'] as $cat_id) {
             $query = ' INSERT INTO #__redevent_venue_category_xref (venue_id, category_id) VALUES (' . $this->_db->Quote($row->id) . ', ' . $this->_db->Quote($cat_id) . ')';
             $this->_db->setQuery($query);
             if (!$this->_db->query()) {
                 $this->setError($this->_db->getErrorMsg());
                 return false;
             }
         }
     }
     // attachments
     REAttach::store('venue' . $row->id);
     // Trigger the onFinderAfterSave event.
     $results = $dispatcher->trigger('onFinderAfterSave', array($this->option . '.' . $this->name, $row, $isNew));
     return $row->id;
 }
Example #5
0
 /**
  * Method to store the venue
  *
  * @access	public
  * @return	id
  * @since	0.9
  */
 function store($data, $file)
 {
     $mainframe =& JFactory::getApplication();
     $user =& JFactory::getUser();
     $elsettings =& redEVENTHelper::config();
     //Get mailinformation
     $SiteName = $mainframe->getCfg('sitename');
     $MailFrom = $mainframe->getCfg('mailfrom');
     $FromName = $mainframe->getCfg('fromname');
     $tzoffset = $mainframe->getCfg('offset');
     $params = $mainframe->getParams('com_redevent');
     $row =& JTable::getInstance('redevent_venues', '');
     //bind it to the table
     if (!$row->bind($data)) {
         RedeventError::raiseError(500, $this->_db->stderr());
         return false;
     }
     //Are we saving from an item edit?
     if ($row->id) {
         $row->modified = gmdate('Y-m-d H:i:s');
         $row->modified_by = $user->get('id');
     } else {
         //get IP, time and userid
         $row->created = gmdate('Y-m-d H:i:s');
         $row->author_ip = $elsettings->get('storeip', '1') ? getenv('REMOTE_ADDR') : 'DISABLED';
         $row->created_by = $user->get('id');
     }
     //Image upload
     //If image upload is required we will stop here if no file was attached
     if (empty($file['name']) && $params->get('edit_image', 1) == 2) {
         $this->setError(JText::_('COM_REDEVENT_IMAGE_EMPTY'));
         return false;
     }
     if (($params->get('edit_image', 1) == 2 || $params->get('edit_image', 1) == 1) && !empty($file['name'])) {
         jimport('joomla.filesystem.file');
         if ($params->get('default_image_path', 'redevent')) {
             $reldirpath = $params->get('default_image_path', 'redevent') . DS . 'venues' . DS;
         } else {
             $reldirpath = '';
         }
         $base_Dir = JPATH_SITE . DS . 'images' . DS . $reldirpath;
         //check the image
         $check = redEVENTImage::check($file, $elsettings);
         if ($check === false) {
             $mainframe->redirect($_SERVER['HTTP_REFERER']);
         }
         //sanitize the image filename
         $filename = redEVENTImage::sanitize($base_Dir, $file['name']);
         $filepath = $base_Dir . $filename;
         if (!JFile::upload($file['tmp_name'], $filepath)) {
             $this->setError(JText::_('COM_REDEVENT_UPLOAD_FAILED'));
             return false;
         } else {
             $row->locimage = 'images' . DS . $reldirpath . $filename;
         }
     } else {
         //keep image if edited and left blank
         $row->locimage = $row->curimage;
     }
     //end image upload if
     //Check description
     $editoruser = ELUser::editoruser();
     if (!$editoruser) {
         //check description --> wipe out code
         $row->locdescription = strip_tags($row->locdescription, '<br><br/>');
         //convert the linux \n (Mac \r, Win \r\n) to <br /> linebreaks
         $row->locdescription = str_replace(array("\r\n", "\r", "\n"), "<br />", $row->locdescription);
         //cut too long words
         $row->locdescription = wordwrap($row->locdescription, 75, " ", 1);
         //check length
         $length = JString::strlen($row->locdescription);
         if ($length > $params->get('max_description', 1000)) {
             // if required shorten it
             $row->locdescription = JString::substr($row->locdescription, 0, $params->get('max_description', 1000));
             //if shortened add ...
             $row->locdescription = $row->locdescription . '...';
         }
     }
     $row->venue = trim(JFilterOutput::ampReplace($row->venue));
     //Make sure the data is valid
     if (!$row->check($elsettings)) {
         $this->setError($row->getError());
         return false;
     }
     //is this an edited venue or not?
     //after store we allways have an id
     $edited = $row->id ? $row->id : false;
     //store it in the db
     if (!$row->store()) {
         $this->setError($this->_db->getErrorMsg());
         return false;
     }
     // update the event category xref
     // first, delete current rows for this event
     $query = ' DELETE FROM #__redevent_venue_category_xref WHERE venue_id = ' . $this->_db->Quote($row->id);
     $this->_db->setQuery($query);
     if (!$this->_db->query()) {
         $this->setError($this->_db->getErrorMsg());
         return false;
     }
     // insert new ref
     foreach ((array) $data['categories'] as $cat_id) {
         $query = ' INSERT INTO #__redevent_venue_category_xref (venue_id, category_id) VALUES (' . $this->_db->Quote($row->id) . ', ' . $this->_db->Quote($cat_id) . ')';
         $this->_db->setQuery($query);
         if (!$this->_db->query()) {
             $this->setError($this->_db->getErrorMsg());
             return false;
         }
     }
     // attachments
     if ($params->get('allow_attachments', 1)) {
         REAttach::store('venue' . $row->id);
     }
     jimport('joomla.utilities.mail');
     $link = JRoute::_(JURI::base() . RedeventHelperRoute::getVenueEventsRoute($row->id), false);
     //create mail
     if ($params->get('mailinform') == 2 || $params->get('mailinform') == 3) {
         $mail = JFactory::getMailer();
         $state = $row->published ? JText::sprintf('COM_REDEVENT_MAIL_VENUE_PUBLISHED', $link) : JText::_('COM_REDEVENT_MAIL_VENUE_UNPUBLISHED');
         if ($edited) {
             $modified_ip = getenv('REMOTE_ADDR');
             $edited = JHTML::Date($row->modified, JText::_('DATE_FORMAT_LC2'));
             $mailbody = JText::sprintf('COM_REDEVENT_MAIL_EDIT_VENUE', $user->name, $user->username, $user->email, $modified_ip, $edited, $row->venue, $row->url, $row->street, $row->plz, $row->city, $row->country, $row->locdescription, $state);
             $mail->setSubject($SiteName . JText::_('COM_REDEVENT_EDIT_VENUE_MAIL'));
         } else {
             $created = JHTML::Date($row->modified, JText::_('DATE_FORMAT_LC2'));
             $mailbody = JText::sprintf('COM_REDEVENT_MAIL_NEW_VENUE', $user->name, $user->username, $user->email, $row->author_ip, $created, $row->venue, $row->url, $row->street, $row->plz, $row->city, $row->country, $row->locdescription, $state);
             $mail->setSubject($SiteName . JText::_('COM_REDEVENT_NEW_VENUE_MAIL'));
         }
         $receivers = explode(',', trim($params->get('mailinformrec')));
         $mail->addRecipient($receivers);
         $mail->setSender(array($MailFrom, $FromName));
         $mail->setBody($mailbody);
         if (!$mail->Send()) {
             RedeventHelperLog::simpleLog('Error sending created/edited venue notification to site owner');
         }
     }
     //create the mail for the user
     if ($params->get('mailinformuser') == 2 || $params->get('mailinformuser') == 3) {
         $usermail = JFactory::getMailer();
         $state = $row->published ? JText::sprintf('COM_REDEVENT_USER_MAIL_VENUE_PUBLISHED', $link) : JText::_('COM_REDEVENT_USER_MAIL_VENUE_UNPUBLISHED');
         if ($edited) {
             $edited = JHTML::Date($row->modified, JText::_('DATE_FORMAT_LC2'));
             $mailbody = JText::sprintf('COM_REDEVENT_USER_MAIL_EDIT_VENUE', $user->name, $user->username, $edited, $row->venue, $row->url, $row->street, $row->plz, $row->city, $row->country, $row->locdescription, $state);
             $usermail->setSubject($SiteName . JText::_('COM_REDEVENT_EDIT_USER_VENUE_MAIL'));
         } else {
             $created = JHTML::Date($row->modified, JText::_('DATE_FORMAT_LC2'));
             $mailbody = JText::sprintf('COM_REDEVENT_USER_MAIL_NEW_VENUE', $user->name, $user->username, $created, $row->venue, $row->url, $row->street, $row->plz, $row->city, $row->country, $row->locdescription, $state);
             $usermail->setSubject($SiteName . JText::_('COM_REDEVENT_NEW_USER_VENUE_MAIL'));
         }
         $usermail->addRecipient($user->email);
         $usermail->setSender(array($MailFrom, $FromName));
         $usermail->setBody($mailbody);
         if (!$usermail->Send()) {
             RedeventHelperLog::simpleLog('Error sending created/edited venue notification to venue owner');
         }
     }
     //update item order
     $row->reorder();
     return $row->id;
 }
Example #6
0
 /**
  * Method to store the event
  *
  * @access	public
  * @return	id
  * @since	0.9
  */
 function store($data, $file)
 {
     $mainframe =& JFactory::getApplication();
     $user =& JFactory::getUser();
     $elsettings =& redEVENTHelper::config();
     $params = $mainframe->getParams();
     $acl = UserAcl::getInstance();
     //Get mailinformation
     $SiteName = $mainframe->getCfg('sitename');
     $MailFrom = $mainframe->getCfg('mailfrom');
     $FromName = $mainframe->getCfg('fromname');
     $tzoffset = $mainframe->getCfg('offset');
     $row =& JTable::getInstance('redevent_events', '');
     if ($data['id']) {
         $row->load((int) $data['id']);
     } else {
         $category_ids = isset($data['categories']) ? $data['categories'] : array();
         $template_event = $this->_getEventTemplate($category_ids);
         $template_event = $template_event ? $template_event : $params->get('event_template', 0);
         if ($template_event) {
             $row->load($template_event);
             $row->id = null;
             $row->alias = null;
             $row->checked_out = null;
             $row->checked_out_time = null;
         } else {
             JError::raiseWarning(0, JText::_('COM_REDEVENT_MISSING_FRONTEND_SUBMISSION_EVENT_TEMPLATE'));
             return false;
         }
     }
     //Sanitize
     $data['datdescription'] = JRequest::getVar('datdescription', $row->datdescription, 'post', 'string', JREQUEST_ALLOWRAW);
     $curimage = JRequest::getVar('curimage', '', 'post', 'string');
     // published state
     if (!$acl->canPublishEvent($this->_id)) {
         // use default state
         $row->published = $params->get('default_submit_published_state', 0);
     }
     //bind it to the table
     if (!$row->bind($data)) {
         RedeventError::raiseError(500, $this->_db->stderr());
         return false;
     }
     //Are we saving from an item edit?
     if ($row->id) {
         //check if user is allowed to edit events
         if (!$acl->canEditEvent($this->_id)) {
             JError::raiseError(403, JText::_('COM_REDEVENT_NO_ACCESS'));
         }
         $row->modified = gmdate('Y-m-d H:i:s');
         $row->modified_by = $user->get('id');
     } else {
         //check if user is allowed to submit new events
         if (!$acl->canAddEvent()) {
             JError::raiseError(403, JText::_('COM_REDEVENT_NO_ACCESS'));
         }
         //get IP, time and userid
         $row->created = gmdate('Y-m-d H:i:s');
         $row->author_ip = $elsettings->get('storeip', '1') ? getenv('REMOTE_ADDR') : 'DISABLED';
         $row->created_by = $user->get('id');
     }
     //Image upload
     //If image upload is required we will stop here if no file was attached
     if (empty($file['name']) && $params->get('edit_image', 1) == 2) {
         $this->setError(JText::_('COM_REDEVENT_IMAGE_EMPTY'));
         return false;
     }
     if (($params->get('edit_image', 1) == 2 || $params->get('edit_image', 1) == 1) && !empty($file['name'])) {
         jimport('joomla.filesystem.file');
         $base_Dir = JPATH_SITE . '/images/redevent/events/';
         //check the image
         $check = redEVENTImage::check($file, $elsettings);
         if ($check === false) {
             JError::raiseWarning(0, JText::_('COM_REDEVENT_EDITEVENT_IMAGE_CHECKFAILED'));
         } else {
             //sanitize the image filename
             $filename = redEVENTImage::sanitize($base_Dir, $file['name']);
             $filepath = $base_Dir . $filename;
             if (!JFile::upload($file['tmp_name'], $filepath)) {
                 JError::raiseWarning(0, JText::_('COM_REDEVENT_UPLOAD_FAILED'));
             } else {
                 $row->datimage = '/images/redevent/events/' . $filename;
             }
         }
     } else {
         //keep image if edited and left blank
         $row->datimage = $curimage;
     }
     //end image if
     //Make sure the table is valid
     if (!$row->check($elsettings)) {
         $this->setError($row->getError());
         return false;
     }
     //is this an edited event or not?
     //after store we allways have an id
     $edited = $row->id ? $row->id : false;
     //store it in the db
     if (!$row->store(true)) {
         JError::raiseError(500, $this->_db->stderr());
         return false;
     }
     // update the event category xref
     if (isset($data['categories'])) {
         // first, delete current rows for this event
         $query = ' DELETE FROM #__redevent_event_category_xref WHERE event_id = ' . $this->_db->Quote($row->id);
         $this->_db->setQuery($query);
         if (!$this->_db->query()) {
             $this->setError($this->_db->getErrorMsg());
             return false;
         }
         // insert new ref
         foreach ((array) $data['categories'] as $cat_id) {
             $query = ' INSERT INTO #__redevent_event_category_xref (event_id, category_id) VALUES (' . $this->_db->Quote($row->id) . ', ' . $this->_db->Quote($cat_id) . ')';
             $this->_db->setQuery($query);
             if (!$this->_db->query()) {
                 $this->setError($this->_db->getErrorMsg());
                 return false;
             }
         }
     } else {
         if (!$edited) {
             // copy category from template event
             $query = ' INSERT INTO #__redevent_event_category_xref (event_id, category_id) ' . ' SELECT ' . $this->_db->Quote($row->id) . ', category_id ' . '       FROM #__redevent_event_category_xref ' . '       WHERE event_id = ' . $this->_db->Quote($template_event);
             $this->_db->setQuery($query);
             if (!$this->_db->query()) {
                 $this->setError($this->_db->getErrorMsg());
                 JError::raiseWarning(0, JText::_('COM_REDEVENT_copying_categories_failed') . ': ' . $xref->getError());
             }
         }
     }
     // is there a date ?
     if (isset($data['dates']) && strlen($data['dates'])) {
         $xref =& JTable::getInstance('redevent_eventvenuexref', '');
         if (isset($data['xref'])) {
             $xref->load($data['xref']);
         }
         $xref->bind($data);
         $xref->id = isset($data['xref']) ? $data['xref'] : null;
         $xref->eventid = $row->id;
         $xref->published = $row->published;
         if (isset($data['session_title'])) {
             $xref->title = $data['session_title'];
         }
         if (!($xref->check() && $xref->store())) {
             JError::raiseWarning(0, JText::_('COM_REDEVENT_Saving_event_session_failed') . ': ' . $xref->getError());
         }
         $row->xref = $xref->id;
         if ($params->get('edit_roles', 0)) {
             /** roles **/
             // first remove current rows
             $query = ' DELETE FROM #__redevent_sessions_roles ' . ' WHERE xref = ' . $this->_db->Quote($xref->id);
             $this->_db->setQuery($query);
             if (!$this->_db->query()) {
                 $this->setError($this->_db->getErrorMsg());
                 return false;
             }
             // then recreate them if any
             foreach ((array) $data['rrole'] as $k => $r) {
                 if (!($data['rrole'][$k] && $data['urole'][$k])) {
                     continue;
                 }
                 $new =& JTable::getInstance('RedEvent_sessions_roles', '');
                 $new->set('xref', $xref->id);
                 $new->set('role_id', $r);
                 $new->set('user_id', $data['urole'][$k]);
                 if (!($new->check() && $new->store())) {
                     $this->setError($recurrence->getError());
                     return false;
                 }
             }
         }
         /** prices **/
         if ($params->get('edit_price', 0)) {
             // first remove current rows
             $query = ' DELETE FROM #__redevent_sessions_pricegroups ' . ' WHERE xref = ' . $this->_db->Quote($xref->id);
             $this->_db->setQuery($query);
             if (!$this->_db->query()) {
                 $this->setError($this->_db->getErrorMsg());
                 return false;
             }
             // then recreate them if any
             foreach ((array) $data['pricegroup'] as $k => $r) {
                 if (!$data['pricegroup'][$k]) {
                     continue;
                 }
                 $new =& JTable::getInstance('RedEvent_sessions_pricegroups', '');
                 $new->set('xref', $xref->id);
                 $new->set('pricegroup_id', $r);
                 $new->set('price', $data['price'][$k]);
                 if (!($new->check() && $new->store())) {
                     $this->setError($new->getError());
                     return false;
                 }
             }
         }
         /** prices END **/
         // we need to save the recurrence too
         $recurrence =& JTable::getInstance('RedEvent_recurrences', '');
         if (!isset($data['recurrenceid']) || !$data['recurrenceid']) {
             $rrule = RedeventHelperRecurrence::parsePost($data);
             if (!empty($rrule)) {
                 // new recurrence
                 $recurrence->rrule = $rrule;
                 if (!$recurrence->store()) {
                     $this->setError($recurrence->getError());
                     return false;
                 }
                 // add repeat record
                 $repeat =& JTable::getInstance('RedEvent_repeats', '');
                 $repeat->set('xref_id', $xref->id);
                 $repeat->set('recurrence_id', $recurrence->id);
                 $repeat->set('count', 0);
                 if (!$repeat->store()) {
                     $this->setError($repeat->getError());
                     return false;
                 }
             }
         } else {
             if ($data['repeat'] == 0) {
                 $recurrence->load($data['recurrenceid']);
                 // reset the status
                 $recurrence->ended = 0;
                 // TODO: maybe add a check to have a choice between updating rrule or not...
                 $rrule = RedeventHelperRecurrence::parsePost($data);
                 $recurrence->rrule = $rrule;
                 if (!$recurrence->store()) {
                     $this->setError($recurrence->getError());
                     return false;
                 }
             }
         }
         if ($recurrence->id) {
             redEVENTHelper::generaterecurrences($recurrence->id);
         }
     }
     /** session end **/
     // attachments
     if ($params->get('allow_attachments', 1)) {
         REAttach::store('event' . $row->id);
     }
     // MAIL HANDLING
     $this->_db->setQuery('SELECT * FROM #__redevent_venues AS v LEFT JOIN #__redevent_event_venue_xref AS x ON x.venueid = v.id WHERE x.eventid = ' . (int) $row->id);
     $rowloc = $this->_db->loadObject();
     jimport('joomla.utilities.mail');
     $link = JRoute::_(JURI::base() . RedeventHelperRoute::getDetailsRoute($row->id), isset($xref) ? $xref->id : false);
     //create the mail for the site owner
     if ($params->get('mailinform') == 1 || $params->get('mailinform') == 3) {
         $receivers = explode(',', trim($params->get('mailinformrec')));
         if (!count($receivers) || !JMailHelper::isEmailAddress($receivers[0])) {
             $mainframe->enqueueMessage(JText::_('COM_REDEVENT_EDIT_EVENT_NOTIFICATION_MISSING_RECIPIENT'), 'notice');
         } else {
             $mail = JFactory::getMailer();
             $state = $row->published ? JText::sprintf('COM_REDEVENT_MAIL_EVENT_PUBLISHED', $link) : JText::_('COM_REDEVENT_MAIL_EVENT_UNPUBLISHED');
             if ($edited) {
                 $modified_ip = getenv('REMOTE_ADDR');
                 $edited = JHTML::Date($row->modified, JText::_('DATE_FORMAT_LC2'));
                 $mailbody = JText::sprintf('COM_REDEVENT_MAIL_EDIT_EVENT', $user->name, $user->username, $user->email, $modified_ip, $edited, $row->title, $xref->dates, $xref->times, $rowloc->venue, $rowloc->city, $row->datdescription, $state);
                 $mail->setSubject($SiteName . JText::_('COM_REDEVENT_EDIT_EVENT_MAIL'));
             } else {
                 $created = JHTML::Date($row->created, JText::_('DATE_FORMAT_LC2'));
                 $mailbody = JText::sprintf('COM_REDEVENT_MAIL_NEW_EVENT', $user->name, $user->username, $user->email, $row->author_ip, $created, $row->title, $xref->dates, $xref->times, $rowloc->venue, $rowloc->city, $row->datdescription, $state);
                 $mail->setSubject($SiteName . JText::_('COM_REDEVENT_NEW_EVENT_MAIL'));
             }
             $mail->addRecipient($receivers);
             $mail->setSender(array($MailFrom, $FromName));
             $mail->setBody($mailbody);
             $sent = $mail->Send();
             if (!$sent) {
                 RedeventHelperLog::simpleLog('Error sending created/edited event notification to site owner');
             }
         }
     }
     //mail end
     //create the mail for the user
     if ($params->get('mailinformuser') == 1 || $params->get('mailinformuser') == 3) {
         $usermail = JFactory::getMailer();
         $state = $row->published ? JText::sprintf('COM_REDEVENT_USER_MAIL_EVENT_PUBLISHED', $link) : JText::_('COM_REDEVENT_USER_MAIL_EVENT_UNPUBLISHED');
         if ($edited) {
             $edited = JHTML::Date($row->modified, JText::_('DATE_FORMAT_LC2'));
             $mailbody = JText::sprintf('COM_REDEVENT_USER_MAIL_EDIT_EVENT', $user->name, $user->username, $edited, $row->title, $xref->dates, $xref->times, $rowloc->venue, $rowloc->city, $row->datdescription, $state);
             $usermail->setSubject($SiteName . JText::_('COM_REDEVENT_EDIT_USER_EVENT_MAIL'));
         } else {
             $created = JHTML::Date($row->created, JText::_('DATE_FORMAT_LC2'));
             $mailbody = JText::sprintf('COM_REDEVENT_USER_MAIL_NEW_EVENT', $user->name, $user->username, $created, $row->title, $xref->dates, $xref->times, $rowloc->venue, $rowloc->city, $row->datdescription, $state);
             $usermail->setSubject($SiteName . JText::_('COM_REDEVENT_NEW_USER_EVENT_MAIL'));
         }
         $usermail->addRecipient($user->email);
         $usermail->setSender(array($MailFrom, $FromName));
         $usermail->setBody($mailbody);
         $sent = $usermail->Send();
         if (!$sent) {
             RedeventHelperLog::simpleLog('Error sending created/edited event notification to event owner');
         }
     }
     return $row;
 }
 /**
  * Delete registered users
  *
  * @access public
  * @return true on success
  * @since 2.5
  */
 public function remove($cid = array())
 {
     if (!count($cid)) {
         return true;
     }
     /**
      * track xrefs attendees are being cancelled from
      * @var array
      */
     $xrefs = array();
     foreach ($cid as $register_id) {
         $db =& JFactory::getDbo();
         $query = $db->getQuery(true);
         $query->select('e.redform_id,r.xref AS xref_id');
         $query->from('#__redevent_register AS r');
         $query->join('INNER', '#__redevent_event_venue_xref AS x ON x.id = r.xref');
         $query->join('INNER', '#__redevent_events AS e ON e.id = x.eventid');
         $query->where('r.id = ' . (int) $register_id);
         $db->setQuery($query);
         $res = $db->loadObject();
         $xrefs[] = $res->xref_id;
         $query = ' DELETE s, f, r ' . ' FROM #__redevent_register AS r ' . ' LEFT JOIN #__rwf_submitters AS s ON r.sid = s.id ' . ' LEFT JOIN #__rwf_forms_' . $res->redform_id . ' AS f ON f.id = s.answer_id ' . ' WHERE r.id = ' . $register_id . '   AND r.cancelled = 1 ';
         $this->_db->setQuery($query);
         if (!$this->_db->query()) {
             RedeventError::raiseError(1001, $this->_db->getErrorMsg());
             return false;
         }
     }
     // now update waiting list for all updated sessions
     foreach ($xrefs as $xref) {
         $model_wait = JModel::getInstance('waitinglist', 'RedeventModel');
         $model_wait->setXrefId($xref);
         if (!$model_wait->UpdateWaitingList()) {
             $this->setError($model_wait->getError());
             return false;
         }
     }
     return true;
 }
Example #8
0
 /**
  * Method to remove a venue
  *
  * @access	public
  * @return	boolean	True on success
  * @since	0.9
  */
 function delete($cid)
 {
     $cids = implode(',', $cid);
     $query = 'SELECT v.id, v.venue, COUNT( x.venueid ) AS numcat' . ' FROM #__redevent_venues AS v' . ' LEFT JOIN #__redevent_event_venue_xref AS x ON x.venueid = v.id' . ' WHERE v.id IN (' . $cids . ')' . ' GROUP BY v.id';
     $this->_db->setQuery($query);
     if (!($rows = $this->_db->loadObjectList())) {
         RedeventError::raiseError(500, $this->_db->stderr());
         return false;
     }
     $err = array();
     $cid = array();
     foreach ($rows as $row) {
         if ($row->numcat == 0) {
             $cid[] = $row->id;
         } else {
             $err[] = $row->venue;
         }
     }
     if (count($cid)) {
         $cids = implode(',', $cid);
         $query = 'DELETE FROM #__redevent_venues' . ' WHERE id IN (' . $cids . ')';
         $this->_db->setQuery($query);
         if (!$this->_db->query()) {
             $this->setError($this->_db->getErrorMsg());
             return false;
         }
     }
     if (count($err)) {
         $cids = implode(', ', $err);
         $msg = JText::sprintf('COM_REDEVENT_VENUE_ASSIGNED_EVENT_S', $cids);
         return $msg;
     }
     // for finder plugins
     $dispatcher = JDispatcher::getInstance();
     JPluginHelper::importPlugin('finder');
     foreach ($cid as $row_id) {
         $obj = new stdclass();
         $obj->id = $row_id;
         // Trigger the onFinderAfterDelete event.
         $dispatcher->trigger('onFinderAfterDelete', array('com_redevent.venue', $obj));
     }
     $total = count($cid);
     $msg = $total . ' ' . JText::_('COM_REDEVENT_VENUES_DELETED');
     return $msg;
 }
 /**
  * Method to store the category
  *
  * @access	public
  * @return	boolean	True on success
  * @since	1.5
  */
 function store($data)
 {
     $row =& $this->getTable('redevent_venues_categories', '');
     // bind it to the table
     if (!$row->bind($data)) {
         RedeventError::raiseError(500, $this->_db->getErrorMsg());
         return false;
     }
     if (!$row->id) {
         $row->ordering = $row->getNextOrder();
     }
     // Make sure the data is valid
     if (!$row->check()) {
         $this->setError($row->getError());
         return false;
     }
     // Store it in the db
     if (!$row->store()) {
         RedeventError::raiseError(500, $this->_db->getErrorMsg());
         return false;
     }
     return $row->id;
 }
Example #10
0
 /**
  * Method to store the category
  *
  * @access	public
  * @return	boolean	True on success
  * @since	1.5
  */
 function store($data)
 {
     // triggers for smart search
     $dispatcher = JDispatcher::getInstance();
     JPluginHelper::importPlugin('finder');
     $row =& $this->getTable('redevent_categories', '');
     // bind it to the table
     if (!$row->bind($data)) {
         RedeventError::raiseError(500, $this->_db->getErrorMsg());
         return false;
     }
     $isNew = false;
     if (!$row->id) {
         $row->ordering = $row->getNextOrder();
         $isNew = true;
     }
     // Make sure the data is valid
     if (!$row->check()) {
         $this->setError($row->getError());
         return false;
     }
     // Trigger the onFinderBeforeSave event.
     $results = $dispatcher->trigger('onFinderBeforeSave', array($this->option . '.' . $this->name, $row, $isNew));
     // Store it in the db
     if (!$row->store()) {
         RedeventError::raiseError(500, $this->_db->getErrorMsg());
         return false;
     }
     // attachments
     REAttach::store('category' . $row->id);
     // Trigger the onFinderAfterSave event.
     $results = $dispatcher->trigger('onFinderAfterSave', array($this->option . '.' . $this->name, $row, $isNew));
     return $row->id;
 }