Beispiel #1
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;
 }
Beispiel #2
0
 /**
  * adds xref repeats to the database.
  * 
  * @return bool true on success
  */
 function generaterecurrences($recurrence_id = null)
 {
     $db =& JFactory::getDBO();
     $nulldate = '0000-00-00';
     // generate until limit
     $params =& JComponentHelper::getParams('com_redevent');
     $limit = $params->get('recurrence_limit', 30);
     $limit_date_int = time() + $limit * 3600 * 24;
     // get active recurrences
     $query = ' SELECT MAX(rp.xref_id) as xref_id, r.rrule, r.id as recurrence_id ' . ' FROM #__redevent_repeats AS rp ' . ' INNER JOIN #__redevent_recurrences AS r on r.id = rp.recurrence_id ' . ' INNER JOIN #__redevent_event_venue_xref AS x on x.id = rp.xref_id ' . ' WHERE r.ended = 0 ' . '   AND x.dates > 0 ';
     if ($recurrence_id) {
         $query .= ' AND r.id = ' . $db->Quote($recurrence_id);
     }
     $query .= ' GROUP BY rp.recurrence_id ';
     $db->setQuery($query);
     $recurrences = $db->loadObjectList();
     if (empty($recurrences)) {
         return true;
     }
     // get corresponding xrefs
     $rids = array();
     foreach ($recurrences as $r) {
         $rids[] = $r->xref_id;
     }
     $query = ' SELECT x.*, rp.count ' . ' FROM #__redevent_event_venue_xref AS x ' . ' INNER JOIN #__redevent_repeats AS rp ON rp.xref_id = x.id ' . ' WHERE x.id IN (' . implode(",", $rids) . ')';
     $db->setQuery($query);
     $xrefs = $db->loadObjectList('id');
     // now, do the job...
     foreach ($recurrences as $r) {
         $next = RedeventHelperRecurrence::getnext($r->rrule, $xrefs[$r->xref_id]);
         while ($next) {
             if (strtotime($next->dates) > $limit_date_int) {
                 break;
             }
             //record xref
             $object =& JTable::getInstance('RedEvent_eventvenuexref', '');
             $object->bind($next);
             if ($object->store()) {
                 // copy the roles
                 $query = ' INSERT INTO #__redevent_sessions_roles (xref, role_id, user_id) ' . ' SELECT ' . $object->id . ', role_id, user_id ' . ' FROM #__redevent_sessions_roles ' . ' WHERE xref = ' . $db->Quote($r->xref_id);
                 $db->setQuery($query);
                 if (!$db->query()) {
                     RedeventHelperLog::simpleLog('recurrence copying roles error: ' . $db->getErrorMsg());
                 }
                 // copy the prices
                 $query = ' INSERT INTO #__redevent_sessions_pricegroups (xref, pricegroup_id, price) ' . ' SELECT ' . $object->id . ', pricegroup_id, price ' . ' FROM #__redevent_sessions_pricegroups ' . ' WHERE xref = ' . $db->Quote($r->xref_id);
                 $db->setQuery($query);
                 if (!$db->query()) {
                     RedeventHelperLog::simpleLog('recurrence copying prices error: ' . $db->getErrorMsg());
                 }
                 // update repeats table
                 $query = ' INSERT INTO #__redevent_repeats ' . ' SET xref_id = ' . $db->Quote($object->id) . '   , recurrence_id = ' . $db->Quote($r->recurrence_id) . '   , count = ' . $db->Quote($next->count);
                 $db->setQuery($query);
                 if (!$db->query()) {
                     RedeventHelperLog::simpleLog('saving repeat error: ' . $db->getErrorMsg());
                 }
                 //           echo "added xref $object->id / count $next->count";
                 //           echo '<br>';
             } else {
                 RedeventHelperLog::simpleLog('saving recurrence xref error: ' . $db->getErrorMsg());
             }
             $next = RedeventHelperRecurrence::getnext($r->rrule, $next);
         }
         if (!$next) {
             // no more events to generate, we can disable the rule
             $query = ' UPDATE #__redevent_recurrences SET ended = 1 WHERE id = ' . $db->Quote($r->recurrence_id);
             $db->setQuery($query);
             $db->query();
         }
     }
     return true;
 }
Beispiel #3
0
 /**
  * Send e-mail confirmations
  */
 public function sendNotificationEmail()
 {
     $mainframe = JFactory::getApplication();
     $eventsettings = $this->getSessionDetails();
     /**
      * Send a submission mail to the attendee and/or contact person
      * This will only work if the contact person has an e-mail address
      **/
     if (isset($eventsettings->notify) && $eventsettings->notify) {
         /* Load the mailer */
         $mailer = JFactory::getMailer();
         $mailer->isHTML(true);
         $mailer->From = $mainframe->getCfg('mailfrom');
         $mailer->FromName = $mainframe->getCfg('sitename');
         $mailer->AddReplyTo(array($mainframe->getCfg('mailfrom'), $mainframe->getCfg('sitename')));
         $tags = new redEVENT_tags();
         $tags->setXref($this->getXref());
         $tags->addOptions(array('sids' => array($this->load()->sid)));
         $rfcore = new RedFormCore();
         $emails = $rfcore->getSidContactEmails($this->load()->sid);
         /* build activation link */
         // TODO: use the route helper !
         $url = JRoute::_(JURI::root() . 'index.php?option=com_redevent&controller=registration&task=activate' . '&confirmid=' . str_replace(".", "_", $this->_data->uip) . 'x' . $this->_data->xref . 'x' . $this->_data->uid . 'x' . $this->_data->id . 'x' . $this->_data->submit_key);
         $activatelink = '<a href="' . $url . '">' . JText::_('COM_REDEVENT_Activate') . '</a>';
         $cancellink = JRoute::_(JURI::root() . 'index.php?option=com_redevent&task=cancelreg' . '&rid=' . $this->_data->id . '&xref=' . $this->_data->xref . '&submit_key=' . $this->_data->submit_key);
         /* Mail attendee */
         $htmlmsg = '<html><head><title></title></title></head><body>';
         $htmlmsg .= $eventsettings->notify_body;
         $htmlmsg .= '</body></html>';
         $htmlmsg = $tags->ReplaceTags($htmlmsg);
         $htmlmsg = str_replace('[activatelink]', $activatelink, $htmlmsg);
         $htmlmsg = str_replace('[cancellink]', $cancellink, $htmlmsg);
         $htmlmsg = str_replace('[fullname]', $this->getFullname(), $htmlmsg);
         // convert urls
         $htmlmsg = REOutput::ImgRelAbs($htmlmsg);
         $mailer->setBody($htmlmsg);
         $subject = $tags->ReplaceTags($eventsettings->notify_subject);
         $mailer->setSubject($subject);
         foreach ($emails as $email) {
             /* Add the email address */
             $mailer->AddAddress($email['email'], $email['fullname']);
         }
         /* send */
         if (!$mailer->Send()) {
             RedeventHelperLog::simpleLog('Error sending notify message to submitted attendants');
             return false;
         }
     }
     return true;
 }
Beispiel #4
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;
 }
Beispiel #5
0
 /**
  * return full url to thumbnail
  *
  * @param string image path, relative to joomla images folder
  * @return url or false if it doesn't exists
  */
 public static function getThumbUrl($path, $maxdim = null)
 {
     jimport('joomla.filesystem.file');
     $app =& JFactory::getApplication();
     $settings = redEVENTHelper::config();
     if ($maxdim) {
         $width = $maxdim;
         $height = $maxdim;
     } else {
         $width = $settings->get('imagewidth', 100);
         $height = $settings->get('imageheight', 100);
     }
     $base = JURI::root();
     $thumb_name = md5(basename($path)) . $width . '_' . $height . '.png';
     if (dirname($path) != '.') {
         $thumb_path = JPATH_SITE . DS . dirname($path) . DS . 're_thumb' . DS . $thumb_name;
         $thumb_uri = $base . str_replace("\"", "/", dirname($path)) . '/re_thumb/' . $thumb_name;
     } else {
         JError::raisewarning(0, JText::sprintf('COM_REDEVENT_THUMBNAILS_WRONG_BASE_PATH', dirname($thumb_path)));
     }
     if (JFile::exists($thumb_path)) {
         return $thumb_uri;
     } else {
         if (JFile::exists(JPATH_SITE . DS . $path)) {
             //try to generate the thumb
             if (!JFolder::exists(dirname($thumb_path)) && !JFolder::create(dirname($thumb_path))) {
                 RedeventHelperLog::simpleLog(sprintf('Can\'t create path for thumbnail: %s', dirname($thumb_path)));
                 return false;
             }
             if (redEVENTImage::thumb(JPATH_SITE . DS . $path, $thumb_path, $width, $height)) {
                 return $thumb_uri;
             }
         }
     }
     return false;
 }
Beispiel #6
0
 /**
  * Confirms the users request
  */
 function activate()
 {
     $mainframe =& JFactory::getApplication();
     $msgtype = 'message';
     /* Get the confirm ID */
     $confirmid = JRequest::getVar('confirmid', '', 'get');
     /* Get the details out of the confirmid */
     list($uip, $xref, $uid, $register_id, $submit_key) = explode("x", $confirmid);
     /* Confirm sign up via mail */
     $model = $this->getModel('Registration', 'RedEventModel');
     $model->setXref($xref);
     $eventdata = $model->getSessionDetails();
     /* This loads the tags replacer */
     JRequest::setVar('xref', $xref);
     require_once JPATH_COMPONENT_SITE . DS . 'helpers' . DS . 'tags.php';
     $tags = new redEVENT_tags();
     $tags->setXref($xref);
     $tags->setSubmitkey($submit_key);
     /* Check the db if this entry exists */
     $db = JFactory::getDBO();
     $q = ' SELECT r.confirmed ' . ' FROM #__redevent_register r ' . ' WHERE r.uid = ' . $db->Quote($uid) . ' AND r.submit_key = ' . $db->Quote($submit_key) . ' AND r.xref = ' . $db->Quote($xref) . ' AND r.id = ' . $db->Quote($register_id);
     $db->setQuery($q);
     $regdata = $db->loadObject();
     if ($regdata && $regdata->confirmed == 0) {
         $model->confirm($register_id);
         // send activation confirmation email if activated
         if ($eventdata->enable_activation_confirmation) {
             $this->_Mailer();
             $rfcore = new RedFormCore();
             $addresses = $rfcore->getSubmissionContactEmail($submit_key);
             /* Check if there are any addresses to be mailed */
             if (count($addresses) > 0) {
                 /* Start mailing */
                 foreach ($addresses as $key => $sid) {
                     foreach ($sid as $email) {
                         /* Send a off mailinglist mail to the submitter if set */
                         /* Add the email address */
                         $this->mailer->AddAddress($email['email']);
                         /* Mail submitter */
                         $htmlmsg = '<html><head><title></title></title></head><body>' . $tags->ReplaceTags($eventdata->notify_confirm_body) . '</body></html>';
                         // convert urls
                         $htmlmsg = REOutput::ImgRelAbs($htmlmsg);
                         $this->mailer->setBody($htmlmsg);
                         $this->mailer->setSubject($tags->ReplaceTags($eventdata->notify_confirm_subject));
                         /* Send the mail */
                         if (!$this->mailer->Send()) {
                             $mainframe->enqueueMessage(JText::_('COM_REDEVENT_THERE_WAS_A_PROBLEM_SENDING_MAIL'));
                             RedeventHelperLog::simpleLog('Error sending confirm email' . ': ' . $this->mailer->error);
                         }
                         /* Clear the mail details */
                         $this->mailer->ClearAddresses();
                     }
                 }
             }
         }
         $msg = JText::_('COM_REDEVENT_REGISTRATION_ACTIVATION_SUCCESSFULL');
     } else {
         if ($regdata && $regdata->confirmed == 1) {
             $msg = JText::_('COM_REDEVENT_YOUR_SUBMISSION_HAS_ALREADY_BEEN_CONFIRMED');
             $msgtype = 'error';
         } else {
             $msg = JText::_('COM_REDEVENT_YOUR_SUBMISSION_CANNOT_BE_CONFIRMED');
             $msgtype = 'error';
         }
     }
     $this->setRedirect(JRoute::_(RedeventHelperRoute::getDetailsRoute($eventdata->did, $xref)), $msg, $msgtype);
 }