예제 #1
0
 /**
  * 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;
 }
예제 #2
0
파일: helper.php 프로젝트: JKoelman/JEM-3
 /**
  * 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;
 }