/** * loads answers of specified submitter * * @param int $submitter_id * * @return true on success */ function getSubmitterAnswers($submitter_id) { $db =& JFactory::getDBO(); $sid = (int) $submitter_id; // get submission details first, to get the fieds $query = ' SELECT s.* FROM #__rwf_submitters AS s WHERE s.id = ' . $db->quote($sid); $db->setQuery($query); $submitter = $db->loadObject(); if (!$submitter) { Jerror::raisewarning(0, JText::_('COM_REDFORM_unknown_submitter')); return false; } // get fields $query = ' SELECT f.* FROM #__rwf_fields AS f ' . ' WHERE f.form_id = ' . $db->quote($submitter->form_id) . ' AND f.published = 1 ' . ' ORDER BY f.ordering '; $db->setQuery($query); $fields = $db->loadObjectList('id'); $fnames = array(); foreach ($fields as $f) { $fnames[] = $db->namequote('f.field_' . $f->id); } // get values $query = ' SELECT ' . implode(',', $fnames) . ' FROM #__rwf_forms_' . $submitter->form_id . ' AS f ' . ' WHERE f.id = ' . $db->quote($submitter->answer_id); $db->setQuery($query); $answers = $db->loadObject(); if (!$answers) { Jerror::raisewarning(0, JText::_('COM_REDFORM_error_getting_submitter_answers')); return false; } foreach ($fields as $id => $f) { $property = 'field_' . $f->id; if (isset($answers->{$property})) { $fields[$id]->answer = $answers->{$property}; } } return $fields; }
/** * updates waiting list of specified event * * @param int event id * @param boolean bump users off/to waiting list * @return bool */ static function updateWaitingList($event) { $db = Jfactory::getDBO(); // get event details for registration $query = $db->getQuery(true); $query->select(array('maxplaces', 'waitinglist')); $query->from('#__jem_events'); $query->where('id = ' . $db->Quote($event)); $db->setQuery($query); $event_places = $db->loadObject(); // get attendees after deletion, and their status $query = $db->getQuery(true); $query->select(array('r.id, r.waiting')); $query->from('#__jem_register AS r'); $query->where('r.event = ' . $db->Quote($event)); $query->order('r.uregdate ASC'); $db->SetQuery($query); $res = $db->loadObjectList(); $registered = 0; $waiting = array(); foreach ((array) $res as $r) { if ($r->waiting) { $waiting[] = $r->id; } else { $registered++; } } if ($registered < $event_places->maxplaces && count($waiting)) { // need to bump users to attending status $bumping = array_slice($waiting, 0, $event_places->maxplaces - $registered); $query = $db->getQuery(true); $query->update('#__jem_register'); $query->set('waiting = 0'); $query->where('id IN (' . implode(',', $bumping) . ')'); $db->setQuery($query); if (!$db->execute()) { $this->setError(JText::_('COM_JEM_FAILED_BUMPING_USERS_FROM_WAITING_TO_CONFIRMED_LIST')); Jerror::raisewarning(0, JText::_('COM_JEM_FAILED_BUMPING_USERS_FROM_WAITING_TO_CONFIRMED_LIST') . ': ' . $db->getErrorMsg()); } else { foreach ($bumping as $register_id) { JPluginHelper::importPlugin('jem'); $dispatcher = JEventDispatcher::getInstance(); $res = $dispatcher->trigger('onUserOnOffWaitinglist', array($register_id)); } } } return true; }