/**
  *		get_question_groups
  *
  * 		@access		public
  * 		@param		int $EVT_ID
  * 		@param		EE_Registration 	$registration
  *		@return 		array
  */
 public function get_question_groups_for_event($EVT_ID = 0, EE_Registration $registration)
 {
     if (!isset($EVT_ID) || !absint($EVT_ID)) {
         EE_Error::add_error(__('An error occurred. No Question Groups could be retrieved because an Event ID was not received.', 'event_espresso'), __FILE__, __FUNCTION__, __LINE__);
         return FALSE;
     }
     $where_params = array('Event_Question_Group.EVT_ID' => $EVT_ID, 'Event_Question_Group.EQG_primary' => $registration->count() == 1 ? TRUE : FALSE, 'QSG_deleted' => FALSE);
     return EE_Registry::instance()->load_model('Question_Group')->get_all(array($where_params, 'order_by' => array('QSG_order' => 'ASC')));
 }
 /**
  * @param EE_Registration $registration
  * @return EE_Form_Section_Proper
  */
 public function registrations_reg_form(EE_Registration $registration)
 {
     EE_Registry::instance()->load_helper('Template');
     static $attendee_nmbr = 1;
     // array of params to pass to parent constructor
     $form_args = array('html_id' => 'ee-registration-' . $registration->reg_url_link(), 'html_class' => 'ee-reg-form-attendee-dv', 'html_style' => $this->checkout->admin_request ? 'padding:0em 2em 1em; margin:3em 0 0; border:1px solid #ddd;' : '', 'subsections' => array(), 'layout_strategy' => new EE_Fieldset_Section_Layout(array('legend_class' => 'spco-attendee-lgnd smaller-text lt-grey-text', 'legend_text' => sprintf(__('Attendee %d', 'event_espresso'), $attendee_nmbr))));
     // verify that registration has valid event
     if ($registration->event() instanceof EE_Event) {
         $query_params = array(array('Event.EVT_ID' => $registration->event()->ID(), 'Event_Question_Group.EQG_primary' => $registration->count() == 1 ? TRUE : FALSE), 'order_by' => array('QSG_order' => 'ASC'));
         $question_groups = $registration->event()->question_groups($query_params);
         if ($question_groups) {
             foreach ($question_groups as $question_group) {
                 if ($question_group instanceof EE_Question_Group) {
                     $form_args['subsections'][$question_group->identifier()] = $this->question_group_reg_form($registration, $question_group);
                     // add hidden input
                     $form_args['subsections']['additional_attendee_reg_info'] = $this->additional_attendee_reg_info_input($registration);
                 }
             }
             // if we have question groups for additional attendees, then display the copy options
             $this->_print_copy_info = $attendee_nmbr > 1 ? TRUE : $this->_print_copy_info;
         } else {
             $form_args['subsections']['attendee_info_not_required_' . $registration->reg_url_link()] = new EE_Form_Section_HTML(EEH_Template::locate_template(SPCO_TEMPLATES_PATH . 'attendee_information' . DS . 'attendee_info_not_required.template.php', apply_filters('FHEE__EE_SPCO_Reg_Step_Attendee_Information__registrations_reg_form__attendee_info_not_required_template_args', array()), TRUE, TRUE));
             // add hidden input
             $form_args['subsections']['additional_attendee_reg_info'] = $this->additional_attendee_reg_info_input($registration, FALSE);
         }
     }
     if ($registration->is_primary_registrant()) {
         // generate hidden input
         $form_args['subsections']['primary_registrant'] = $this->additional_primary_registrant_inputs($registration);
     }
     $attendee_nmbr++;
     return new EE_Form_Section_Proper($form_args);
 }
 /**
  * sorts registrations by REG_count
  *
  * @access public
  * @param EE_Registration $reg_A
  * @param EE_Registration $reg_B
  * @return array()
  */
 public static function sort_registrations_by_REG_count(EE_Registration $reg_A, EE_Registration $reg_B)
 {
     // this shouldn't ever happen within the same TXN, but oh well
     if ($reg_A->count() == $reg_B->count()) {
         return 0;
     }
     return $reg_A->count() > $reg_B->count() ? 1 : -1;
 }
    /**
     * 		column_TXN_paid
     */
    function column_TXN_paid(EE_Registration $item)
    {
        if ($item->count() == 1) {
            if ($item->transaction()->paid() >= $item->transaction()->total()) {
                return '<span class="reg-pad-rght"><div class="dashicons dashicons-yes green-icon"></div></span>';
            } else {
                $view_txn_lnk_url = EE_Admin_Page::add_query_args_and_nonce(array('action' => 'view_transaction', 'TXN_ID' => $item->transaction_ID()), TXN_ADMIN_URL);
                return EE_Registry::instance()->CAP->current_user_can('ee_read_transaction', 'espresso_transactions_view_transaction') ? '
				<span class="reg-pad-rght">
					<a class="status-' . $item->transaction()->status_ID() . '" href="' . $view_txn_lnk_url . '"  title="' . esc_attr__('View Transaction', 'event_espresso') . '">
						' . $item->transaction()->pretty_paid() . '
					</a>
				<span>' : '<span class="reg-pad-rght">' . $item->transaction()->pretty_paid() . '</span>';
            }
        } else {
            return '<span class="reg-pad-rght"></span>';
        }
    }
 /**
  * 		column_TXN_paid
  */
 function column_TXN_paid(EE_Registration $item)
 {
     if ($item->count() == 1) {
         $transaction = $item->transaction() ? $item->transaction() : EE_Transaction::new_instance();
         if ($transaction->paid() >= $transaction->total()) {
             return '<span class="reg-pad-rght"><div class="dashicons dashicons-yes green-icon"></div></span>';
         } else {
             $view_txn_lnk_url = EE_Admin_Page::add_query_args_and_nonce(array('action' => 'view_transaction', 'TXN_ID' => $item->transaction_ID()), TXN_ADMIN_URL);
             return '<span class="reg-pad-rght"><a class="status-' . $transaction->status_ID() . '" href="' . $view_txn_lnk_url . '"  title="' . __('View Transaction', 'event_espresso') . '">' . $item->transaction()->pretty_paid() . '</a><span>';
         }
     }
     return '&nbsp;';
 }
 /**
  * sort_registrations_by_reg_count_callback
  *
  * @access protected
  * @param \EE_Registration $registration_A
  * @param \EE_Registration $registration_B
  * @return int
  */
 protected static function sort_registrations_by_reg_count_callback(EE_Registration $registration_A, EE_Registration $registration_B)
 {
     // send any registrations that don't already have the count set to the end of the array
     if (!$registration_A->count()) {
         return 1;
     }
     if ($registration_A->count() == $registration_B->count()) {
         return 0;
     }
     return $registration_A->count() > $registration_B->count() ? 1 : -1;
 }