/**
     * Initialisation method
     * @return NULL
     */
    public function init()
    {
        // Only run when Admin page is loaded
        if (Input::uri(false) == '/wp-admin/admin.php' && Input::request('page') == 'membership-reporting') {
            $templateData = \CPFCMembers\TemplateData::getInstance();
            $form = \CPFCMembers\ReportingFilter::getInstance();
            $export = Input::post('cpfc_filter_export') || Input::post('cpfc_filter_see_tickets_account_holder_export') || Input::post('cpfc_logged_in_filter_export');
            $filterResultsSample = false;
            $filterResultsCount = false;
            $exportLink = '';
            $dataType = '';

            // Define which tab to show in admin
            switch (true) {
                case Input::post('cpfc_logged_in_filter_submit'):
                    $showTab = '2';
                    break;
                case Input::post('cpfc_filter_see_tickets_account_holder_submit'):
                    $showTab = '1';
                    break;
                default:
                    $showTab = '0';
            }

            if (Input::request('cpfc_member_export')) {
                $this->memberExport();
            } elseif (Input::request('cpfc_login_export')) {
                $this->loginExport();
            } elseif (Input::isPost()) {
                $form->setValues(Input::post());
                $form->validate();

                if ($form->isValid()) {
                    $whereConditions = array();
                    $whereConditionsFriendly = array();

                    switch (true) {
                        case Input::post('cpfc_filter_member_submit'):
                        case Input::post('cpfc_filter_member_export'):
                        case Input::post('cpfc_filter_see_tickets_account_holder_submit'):
                        case Input::post('cpfc_filter_see_tickets_account_holder_export'):

                            list($whereConditions, $whereConditionsFriendly) = $this->buildWhereConditions();

                            $filterResultsSample = $this->fetchRegistrations($whereConditions, 0, $export ? false : $this->_sampleCount);

                            $filterResultsCount = $this->fetchRegistrations($whereConditions, 0, false, 'count');

                            $exportLink = home_url(CPFC_MEMBERS_REPORTING_ADMIN_URL, CPFC_MEMBERS_HTTP_MODE) . '&' . http_build_query(Input::post() + array('cpfc_member_export'=>true));

                            $dataType = 'member';

                            break;
                        case Input::post('cpfc_logged_in_filter_submit'):
                        case Input::post('cpfc_logged_in_filter_export'):

                            list($whereConditions, $whereConditionsFriendly) = $this->buildWhereConditions();

                            $filterResultsSample = $this->fetchLogins($whereConditions, 0, $export ? false : $this->_sampleCount);

                            $filterResultsCount = $this->fetchLogins($whereConditions, 0, false, 'count');

                            $exportLink = home_url(CPFC_MEMBERS_REPORTING_ADMIN_URL, CPFC_MEMBERS_HTTP_MODE) . '&' . http_build_query(Input::post() + array('cpfc_login_export'=>true));

                            $dataType = 'logins';

                            break;
                        default: // Reset
                            wp_redirect(home_url(CPFC_MEMBERS_REPORTING_ADMIN_URL, CPFC_MEMBERS_HTTP_MODE), 301);
                            exit();
                    }
                }

            } else {
                $form->setValues($this->defaultFilters);
            }

            $templateData->set('exportLink', $exportLink);
            $templateData->set('filterResultsCount', $filterResultsCount);
            $templateData->set('filterResultsSample', $filterResultsSample);
            $templateData->set('atAGlanceData', $this->fetchAtAGlance());
            $templateData->set('whereConditionsFriendly', $whereConditionsFriendly);
            $templateData->set('dataType', $dataType);
            $templateData->set('showTab', $showTab);
        }
    }
Ejemplo n.º 2
0
    /**
     * Data Capture
     */
    protected function _dataCapture()
    {
        $details = Input::request('details', false);
        $templateData = \CPFCMembers\TemplateData::getInstance();
        $User = \CPFCMembers\Auth::getUser();

        $template = '';
        $status = '';
        // Can't access if not logged in as Member
        if (\CPFCMembers\Auth::isLoggedIn()) {

            switch($details) {
                case 'address':
                    $form = \CPFCMembers\DataCaptureAddressForm::getInstance();
                    $template = 'partials/data_capture/address_form';
                    break;
                case 'contact':
                    $form = \CPFCMembers\DataCaptureContactForm::getInstance();
                    $template = 'partials/data_capture/contact_form';
                    break;
                case 'preferences':
                    $form = \CPFCMembers\DataCapturePreferencesForm::getInstance();
                    $template = 'partials/data_capture/preferences_form';
                    break;
                case 'see_tickets':
                    $form = \CPFCMembers\DataCaptureSeeTicketsForm::getInstance();
                    $template = 'partials/data_capture/see_tickets_form';
                    break;
                default:
                    $status = 'INVALID_DETAIL';
                    $template = 'partials/data_capture/error';
                    $templateData->set('error_type', 'invalid_form_chosen');
            }

            $notification = \CPFCMembers\MemberNotificationModel::loadByUserIdAndDetail($User->getId(), $details);

            if ($notification->getStatus() == 'complete') {
                $status = 'ALREADY_COMPLETED';
                $template = 'partials/data_capture/error';
                $templateData->set('error_type', 'already_completed');
            }

        } else {
            $status = 'NOT_LOGGED_IN';
            $template = 'partials/data_capture/error';
            $templateData->set('error_type', 'not_logged_in');
        }

        if ($status == '') {
            if (Input::isPost()) {
                $form->setValues(Input::post());
                $form->validate();

                if ($form->isValid()) {
                    switch($details) {
                        case 'address':
                            $User->setHouseNameNumber(Input::post('house_name_number'));
                            $User->setStreet(Input::post('street'));
                            $User->setTown(Input::post('town'));
                            $User->setCounty(Input::post('county'));
                            $User->setPostcode(Input::post('postcode'));
                            $User->setCountry(Input::post('country'));
                            break;
                        case 'contact':
                            $User->setMobilePhone(Input::post('mobile_phone'));
                            $User->setDaytimePhone(Input::post('daytime_phone'));
                            break;
                        case 'preferences':
                            $User->setPreferenceRegularNewsletter(Input::post('preference_regular_newsletter'));
                            $User->setPreferenceBreakingNews(Input::post('preference_breaking_news'));
                            $User->setPreferencePartners(Input::post('preference_partners'));
                            $User->setPreferenceSMS(Input::post('preference_sms'));
                            break;
                        case 'see_tickets':
                            $User->setSeeTicketsAccountNumber(Input::post('see_tickets_account_number'));
                            break;
                    }

                    if ($User->save(true)) {
                        $status = 'SUCCESS';

                        $notification->setUserId($User->getId())
                            ->setDetail($details)
                            ->setStatus('complete');
                        $notification->save(true);
                    } else {
                        $status = 'NOT_SAVED';
                        $template = 'partials/data_capture/error';
                    }
                }
            } else {
                $form->setValues($User->toArray(false, false));
            }
        }

        $templateData->set('template', $template);
        $templateData->set('status', $status);
        $templateData->set('message', $message);
    }