<?php

module_load_include('inc', 'mkbh_general', 'includes/mkbh_general.stripe');

define('MKBH_DONATE_ORGANISATIONS_NID', 3123);
define('MKBH_DONATE_BUSINESS_NID', 3963);
define('MKBH_DONATE_PERSONAL_NID', 3962);

define('MKBH_DONATE_PERSONAL_BASIS_LIVE_PLAN_ID', 'basis');
define('MKBH_DONATE_PERSONAL_BASIS_SANDBOX_PLAN_ID', 'plan_FjkK7O8dP9A2MC');
define('MKBH_DONATE_PERSONAL_BASIS_YEAR_LIVE_PLAN_ID', 'basis-year');
define('MKBH_DONATE_PERSONAL_BASIS_YEAR_SANDBOX_PLAN_ID', 'plan_GL6eUhFC1cEnYh');
define('MKBH_DONATE_PERSONAL_PLUS_LIVE_PLAN_ID', 'plus');
define('MKBH_DONATE_PERSONAL_PLUS_SANDBOX_PLAN_ID', 'plan_FjkLCtg2OgjGPF');
define('MKBH_DONATE_PERSONAL_PLUS_YEAR_LIVE_PLAN_ID', 'plus-year');
define('MKBH_DONATE_PERSONAL_PLUS_YEAR_SANDBOX_PLAN_ID', 'plan_GL6fpJI5nSG2Sg');
define('MKBH_DONATE_BUSINESS_PER_MONTH_LIVE_PLAN_ID', 'abon_month');
define('MKBH_DONATE_BUSINESS_PER_MONTH_SANDBOX_PLAN_ID', 'plan_FjkTtCPIGVnQz5');
define('MKBH_DONATE_BUSINESS_PER_YEAR_LIVE_PLAN_ID', 'abon_year');
define('MKBH_DONATE_BUSINESS_PER_YEAR_SANDBOX_PLAN_ID', 'plan_FjkU3lLIs4DYuV');

if (MKBH_STRIPE_IS_LIVE) {
    define('MKBH_DONATE_PERSONAL_BASIS_PLAN_ID', MKBH_DONATE_PERSONAL_BASIS_LIVE_PLAN_ID);
    define('MKBH_DONATE_PERSONAL_BASIS_YEAR_PLAN_ID', MKBH_DONATE_PERSONAL_BASIS_YEAR_LIVE_PLAN_ID);
    define('MKBH_DONATE_PERSONAL_PLUS_PLAN_ID', MKBH_DONATE_PERSONAL_PLUS_LIVE_PLAN_ID);
    define('MKBH_DONATE_PERSONAL_PLUS_YEAR_PLAN_ID', MKBH_DONATE_PERSONAL_PLUS_YEAR_LIVE_PLAN_ID);
    define('MKBH_DONATE_BUSINESS_PER_MONTH_PLAN_ID', MKBH_DONATE_BUSINESS_PER_MONTH_LIVE_PLAN_ID);
    define('MKBH_DONATE_BUSINESS_PER_YEAR_PLAN_ID', MKBH_DONATE_BUSINESS_PER_YEAR_LIVE_PLAN_ID);
} else {
    define('MKBH_DONATE_PERSONAL_BASIS_PLAN_ID', MKBH_DONATE_PERSONAL_BASIS_SANDBOX_PLAN_ID);
    define('MKBH_DONATE_PERSONAL_BASIS_YEAR_PLAN_ID', MKBH_DONATE_PERSONAL_BASIS_YEAR_SANDBOX_PLAN_ID);
    define('MKBH_DONATE_PERSONAL_PLUS_PLAN_ID', MKBH_DONATE_PERSONAL_PLUS_SANDBOX_PLAN_ID);
    define('MKBH_DONATE_PERSONAL_PLUS_YEAR_PLAN_ID', MKBH_DONATE_PERSONAL_PLUS_YEAR_SANDBOX_PLAN_ID);
    define('MKBH_DONATE_BUSINESS_PER_MONTH_PLAN_ID', MKBH_DONATE_BUSINESS_PER_MONTH_SANDBOX_PLAN_ID);
    define('MKBH_DONATE_BUSINESS_PER_YEAR_PLAN_ID', MKBH_DONATE_BUSINESS_PER_YEAR_SANDBOX_PLAN_ID);
}

define('MKBH_DONATE_BUSINESS_PLANS_UNITS_OPTIONS', [
    MKBH_DONATE_BUSINESS_PER_MONTH_PLAN_ID => [
        1 => '1 medarbejder (85,- kr. / medarbejder / md.)',
        2 => '2 medarbejder (79,- kr. / medarbejder / md.)',
        3 => '3 medarbejder (69,- kr. / medarbejder / md.)',
        4 => '4 medarbejder (69,- kr. / medarbejder / md.)',
        5 => '5 medarbejder (59,- kr. / medarbejder / md.)',
    ],
    MKBH_DONATE_BUSINESS_PER_YEAR_PLAN_ID => [
        1 => '1 medarbejder (900,- kr. / medarbejder / år.)',
        2 => '2 medarbejder (828,- kr. / medarbejder / år.)',
        3 => '3 medarbejder (708,- kr. / medarbejder / år.)',
        4 => '4 medarbejder (708,- kr. / medarbejder / år.)',
        5 => '5 medarbejder (588,- kr. / medarbejder / år.)',
    ],
]);

define('MKBH_DONATE_BUSINESS_MASTER_ROLE_NAME', 'business master subscriber');
define('MKBH_DONATE_BUSINESS_EMPLOYEE_ROLE_NAME', 'business employee subscriber');

/**
 * Implements hook_menu().
 */
function mkbh_donate_page_menu()
{
    $items['admin/people/kbh-subscribers'] = [
        'title' => 'KBH Subscribers',
        'description' => 'Get report on all (Stripe/MobilePay) subscribers.',
        'page callback' => 'views_embed_view',
        'page arguments' => ['administration_people_subscribers'],
        'access arguments' => ['administer site configuration'],
        'file' => 'mkbh_donate_page.pages.inc',
        'file path' => drupal_get_path('module', 'mkbh_donate_page'),
        'type' => MENU_LOCAL_TASK,
        'weight' => 50,
    ];

    $items['stripe/api/checkout/session/one-time/create'] = [
        'page callback' => 'mkbh_donate_page_stripe_api_checkout_session_one_time_create',
        'access callback' => TRUE,
        'file' => 'mkbh_donate_page.pages.inc',
        'file path' => drupal_get_path('module', 'mkbh_donate_page'),
    ];

    $items['stripe/api/checkout/session/subscription/create'] = [
        'page callback' => 'mkbh_donate_page_stripe_api_checkout_session_subscription_create',
        'access callback' => TRUE,
        'file' => 'mkbh_donate_page.pages.inc',
        'file path' => drupal_get_path('module', 'mkbh_donate_page'),
    ];

    $items['stripe/api/checkout/session/setup/create'] = [
        'page callback' => 'mkbh_donate_page_stripe_api_checkout_session_setup_create',
        'access callback' => TRUE,
        'file' => 'mkbh_donate_page.pages.inc',
        'file path' => drupal_get_path('module', 'mkbh_donate_page'),
    ];

    $items['stripe/pages/thank-you'] = [
        'title' => 'Mange tak',
        'page callback' => 'mkbh_donate_page_stripe_pages_thank_you',
        'access callback' => TRUE,
        'file' => 'mkbh_donate_page.pages.inc',
        'file path' => drupal_get_path('module', 'mkbh_donate_page'),
    ];

    $items['stripe/pages/cancel'] = [
        'title' => 'Error',
        'page callback' => 'mkbh_donate_page_stripe_pages_cancel',
        'access callback' => TRUE,
        'file' => 'mkbh_donate_page.pages.inc',
        'file path' => drupal_get_path('module', 'mkbh_donate_page'),
    ];

    $items['medlem/kassen'] = [
        'title' => 'Medlem Kassen',
        'page callback' => 'mkbh_donate_page_member_subscribe_checkout_flow',
        'page arguments' => [],
        'access arguments' => ['access content'],
        'file' => 'mkbh_donate_page.pages.inc',
        'file path' => drupal_get_path('module', 'mkbh_donate_page'),
        'type' => MENU_CALLBACK,
    ];

    $items['medlem/kassen/mobile-pay/callback'] = [
        'title' => 'Medlem Kassen',
        'page callback' => 'mkbh_donate_page_mobile_pay_merchant_redirect_callback',
        'page arguments' => [],
        'access arguments' => ['access content'],
        'file' => 'mkbh_donate_page.pages.inc',
        'file path' => drupal_get_path('module', 'mkbh_donate_page'),
        'type' => MENU_CALLBACK,
    ];

    $items['medlem/kassen/api/do-login'] = [
        'page callback' => 'mkbh_donate_page_member_subscribe_checkout_flow_api_do_login',
        'page arguments' => [],
        'access arguments' => ['access content'],
        'file' => 'mkbh_donate_page.pages.inc',
        'file path' => drupal_get_path('module', 'mkbh_donate_page'),
        'type' => MENU_CALLBACK,
    ];

    $items['medlem/kassen/api/do-register'] = [
        'page callback' => 'mkbh_donate_page_member_subscribe_checkout_flow_api_do_register',
        'page arguments' => [],
        'access arguments' => ['access content'],
        'file' => 'mkbh_donate_page.pages.inc',
        'file path' => drupal_get_path('module', 'mkbh_donate_page'),
        'type' => MENU_CALLBACK,
    ];

    $items['medlem/kassen/api/mobile-pay/agreements/create'] = [
        'page callback' => 'mkbh_donate_page_api_mobile_pay_agreements_create',
        'page arguments' => [],
        'access arguments' => ['access content'],
        'file' => 'mkbh_donate_page.pages.inc',
        'file path' => drupal_get_path('module', 'mkbh_donate_page'),
        'type' => MENU_CALLBACK,
    ];

    $items['medlem/kassen/api/mobile-pay/agreements/activate'] = [
        'page callback' => 'mkbh_donate_page_api_mobile_pay_agreements_activate',
        'page arguments' => [],
        'access arguments' => ['access content'],
        'file' => 'mkbh_donate_page.pages.inc',
        'file path' => drupal_get_path('module', 'mkbh_donate_page'),
        'type' => MENU_CALLBACK,
    ];

    $items['admin/reports/mobile-pay/logs'] = [
        'title' => 'Mobile Pay Logs',
        'description' => 'Get report on MobilePay logs.',
        'page callback' => 'views_embed_view',
        'page arguments' => ['administration_mobile_pay_logs'],
        'access arguments' => ['administer site configuration'],
        'file' => 'mkbh_donate_page.pages.inc',
        'file path' => drupal_get_path('module', 'mkbh_donate_page'),
        'type' => MENU_LOCAL_TASK,
        'weight' => 50,
    ];

    return $items;
}

/**
 * Implements hook_block_info().
 *
 * @see mkbh_donate_page_block_view()
 * @see mkbh_donate_page_block_configure()
 * @see mkbh_donate_page_block_save()
 */
function mkbh_donate_page_block_info()
{
    return [
        'mkbh_donate_page_total_number' => [
            'info' => t('[Donate] Total number'),
            'cache' => DRUPAL_NO_CACHE,
        ],
        'mkbh_donate_page_donate_block' => [
            'info' => t('[Donate] Donate block'),
            'cache' => DRUPAL_NO_CACHE,
        ],
    ];
}

/**
 * Implements hook_theme().
 *
 * @param $existing
 * @param $type
 * @param $theme
 * @param $path
 *
 * @return array
 *
 * @see mkbh_donate_page_block_view()
 */
function mkbh_donate_page_theme($existing, $type, $theme, $path)
{
    return [
        'mkbh_donate_page_total_number' => [
            'variables' => [
                'total' => NULL,
            ],
            'path' => $path . '/templates',
            'template' => 'mkbh-donate-page--total-number',
        ],
        'mkbh_donate_page_donate_block' => [
            'variables' => [
                'image' => NULL,
                'title' => NULL,
                'body' => NULL,
                'second_title' => NULL,
                'bottom_text' => NULL,
                'button' => NULL,
            ],
            'path' => $path . '/templates',
            'template' => 'mkbh-donate-page--donate-block',
        ],
        'mkbh_donate_page_donate_second_block' => [
            'variables' => [],
            'path' => $path . '/templates',
            'template' => 'mkbh-donate-page--donate-second-block',
        ],
        'mkbh_donate_page_member_subscribe_checkout_flow' => [
            'variables' => [],
            'path' => $path . '/templates',
            'template' => 'mkbh-donate-page--member-subscribe-checkout-flow',
        ],
        'mkbh_donate_page_mobile_pay_merchant_redirect_callback' => [
            'variables' => [],
            'path' => $path . '/templates',
            'template' => 'mkbh-donate-page--mobile-pay-merchant-redirect-callback',
        ],
        'mkbh_donate_page_modal_business_info' => [
            'variables' => [],
            'path' => $path . '/templates/modals',
            'template' => 'mkbh-donate-page--modal-business-info',
        ],
        'mkbh_donate_page_stripe_pages_thank_you' => [
            'variables' => ['type' => null],
            'path' => $path . '/templates',
            'template' => 'mkbh-donate-page--stripe-pages--thank-you',
        ],
        'mkbh_donate_page_stripe_pages_cancel' => [
            'variables' => [],
            'path' => $path . '/templates',
            'template' => 'mkbh-donate-page--stripe-pages--cancel',
        ],
    ];
}

/**
 * Implements hook_block_view().
 *
 * @param string $delta
 *
 * @return array
 *
 * @throws Exception
 * @see mkbh_donate_page_block_info()
 * @see mkbh_donate_page_block_view()
 * @see mkbh_donate_page_block_save()
 * @see mkbh_donate_page_theme()
 */
function mkbh_donate_page_block_view($delta = '')
{
    $block = [];
    switch ($delta) {
        case 'mkbh_donate_page_total_number':
            $block['content'] = [
                '#theme' => 'mkbh_donate_page_total_number',
                '#total' => mkbh_general_stripe_get_total_number_of_subscriptions(),
            ];
            break;
        case 'mkbh_donate_page_donate_block':
            $image = [
                '#type' => 'html_tag',
                '#tag' => 'i',
                '#value' => '',
                '#attributes' => ['class' => 'icon-money fa-money donate-money-image'],
            ];

            $block['subject'] = '';
            $second_block = [
                '#theme' => 'mkbh_donate_page_donate_second_block',
                '#attached' => [
                    'js' => [
                        drupal_get_path('module', 'mkbh_donate_page') . '/assets/javascript/donate-page-manual-donate.js',
                    ],
                ],
            ];
            $block['content'] = [
                '#theme' => 'mkbh_donate_page_donate_block',
                '#image' => render($image),
                '#title' => variable_get('mkbh_donate_page_donate_block_title'),
                '#body' => variable_get('mkbh_donate_page_donate_block_body'),
                '#second_title' => variable_get('mkbh_donate_page_donate_block_block_2'),
                '#bottom_text' => variable_get('mkbh_donate_page_donate_block_bottom_text'),
                '#button' => render($second_block),
            ];
            break;
    }

    return $block;
}

/**
 * Implements hook_block_configure().
 *
 * @param string $delta
 *
 * @return array
 *
 * @see mkbh_donate_page_block_info()
 * @see mkbh_donate_page_block_view()
 * @see mkbh_donate_page_block_save()
 */
function mkbh_donate_page_block_configure($delta = '')
{
    $form = [];
    if ($delta == 'mkbh_donate_page_donate_block') {
        $form['mkbh_donate_page_donate_block_title'] = [
            '#type' => 'textfield',
            '#title' => t('Title'),
            '#default_value' => variable_get('mkbh_donate_page_donate_block_title'),
        ];
        $form['mkbh_donate_page_donate_block_body'] = [
            '#type' => 'textarea',
            '#title' => t('Body'),
            '#default_value' => variable_get('mkbh_donate_page_donate_block_body'),
        ];
        $form['mkbh_donate_page_donate_block_block_2'] = [
            '#type' => 'textfield',
            '#title' => t('Block 2 title'),
            '#default_value' => variable_get('mkbh_donate_page_donate_block_block_2'),
        ];
        $form['mkbh_donate_page_donate_block_bottom_text'] = [
            '#type' => 'textarea',
            '#title' => t('Bottom text'),
            '#default_value' => variable_get('mkbh_donate_page_donate_block_bottom_text'),
        ];
    }

    return $form;
}

/**
 * Implements hook_block_save().
 *
 * @param string $delta
 * @param array $edit
 *
 * @see mkbh_donate_page_block_info()
 * @see mkbh_donate_page_block_view()
 * @see mkbh_donate_page_block_configure()
 */
function mkbh_donate_page_block_save($delta = '', $edit = [])
{
    if ($delta == 'mkbh_donate_page_donate_block') {
        // Array of variables to set.
        $keys = [
            'mkbh_donate_page_donate_block_title',
            'mkbh_donate_page_donate_block_body',
            'mkbh_donate_page_donate_block_block_2',
            'mkbh_donate_page_donate_block_bottom_text',
        ];
        foreach ($keys as $key) {
            variable_set($key, $edit[$key]);
        }
    }
}

/**
 * Implements hook_form_FORM_ID_alter().
 * Do not allow to create new "donate page", redirect to old node edit page.
 *
 * @param $form
 * @param $form_state
 */
function mkbh_donate_page_form_donate_page_node_form_alter(&$form, &$form_state)
{
    if (!isset($form['#node']->nid)) {
        // User is trying to create new donate page node. Check if it exist already.
        $q = db_select('node', 'n')->fields('n', ['nid'])->condition('type', 'donate_page')->condition('status', 1)->range(0, 1)->execute()->fetchCol();

        if (!empty($q)) {
            // Redirect to that node.
            drupal_goto('/node/' . $q[0] . '/edit');
            return;
        }
    }
}

/**
 * Donate Page: Business info form.
 *
 * @param $form
 * @param $form_state
 *
 * @return mixed
 */
function mkbh_donate_page_business_info_form($form, &$form_state)
{
    global $user;

    $account = user_load($user->uid);
    $formRenderedInAccountPage = $form_state['storage']['rendered_in_account_page'] = str_is(['user', 'user/*', 'members/*'], current_path());

    $form['#attributes']['autocomplete'] = 'new-password';
    $form['#attributes']['class'][] = 'mkbh-donate-page-business-info-form';

    if ($formRenderedInAccountPage) {
        $form['#attributes']['class'][] = 'form-rendered-in-account-page';
    }

    $form['messages'] = [
        '#markup' => '<div id="mkbh-donate-page-business-info-form-messages"></div>',
    ];

    $businessInfo = database()->table('mkbh_business_info')->where('master_uid', '=', $user->uid)->first();

    $form['stripe_button_id'] = [
        '#type' => 'hidden',
    ];

    $form['name'] = [
        '#type' => 'textfield',
        '#title' => 'Navn',
        '#required' => false,
        '#default_value' => data_get($businessInfo, 'name', mkbh_general_user_full_name($account)),
        '#attributes' => [
            'placeholder' => 'Navn',
            'autocomplete' => 'new-password'
        ]
    ];

    $form['business'] = [
        '#type' => 'textfield',
        '#title' => 'Virksomhed',
        '#required' => false,
        '#default_value' => data_get($businessInfo, 'business'),
        '#attributes' => [
            'placeholder' => 'Virksomhed',
            'autocomplete' => 'new-password'
        ]
    ];

    $form['address'] = [
        '#type' => 'textfield',
        '#title' => 'Adresse',
        '#required' => false,
        '#default_value' => data_get($businessInfo, 'address'),
        '#attributes' => [
            'placeholder' => 'Adresse',
            'autocomplete' => 'new-password'
        ]
    ];

    $form['city_and_postal_code'] = [
        '#type' => 'container',
        '#attributes' => [
            'class' => ['city-and-postal-code-wrapper']
        ]
    ];

    $form['city_and_postal_code']['postal_code'] = [
        '#type' => 'textfield',
        '#title' => 'Postnummer',
        '#required' => false,
        '#default_value' => data_get($businessInfo, 'postal_code'),
        '#attributes' => [
            'placeholder' => 'Postnummer',
            'autocomplete' => 'new-password'
        ]
    ];

    $form['city_and_postal_code']['city'] = [
        '#type' => 'textfield',
        '#title' => 'By',
        '#required' => false,
        '#default_value' => data_get($businessInfo, 'city'),
        '#attributes' => [
            'placeholder' => 'By',
            'autocomplete' => 'new-password'
        ]
    ];

    $form['cvr'] = [
        '#type' => 'textfield',
        '#title' => 'CVR-nummer',
        '#required' => false,
        '#default_value' => data_get($businessInfo, 'cvr'),
        '#attributes' => [
            'placeholder' => 'CVR-nummer',
            'autocomplete' => 'new-password'
        ]
    ];

    $form['security']['actions'] = [
        '#type' => 'actions',
    ];

    $form['security']['actions']['save'] = [
        '#type' => 'submit',
        '#value' => $formRenderedInAccountPage ? 'gem ændringer' : 'fortsæt til betaling',
        '#submit' => ['mkbh_donate_page_business_info_form_submit'],
        '#validate' => ['mkbh_donate_page_business_info_form_validate'],
        '#name' => 'mkbh_donate_page_business_info_form_submit',
        '#asaf_target_area' => 'form',
    ];

    if (module_exists('asaf')) {
        asaf_prepare_form($form, $form_state);
    }

    return $form;
}

/**
 * Donate Page: Business info form validation.
 *
 * @param $form
 * @param $form_state
 *
 * @throws Exception
 */
function mkbh_donate_page_business_info_form_validate($form, &$form_state)
{
    $requiredFields = [
        'name' => 255,
        'business' => 255,
        'address' => 512,
        'postal_code' => 255,
        'city' => 255,
        'cvr' => 255
    ];

    $values = collect($form_state['values'])->only(array_keys($requiredFields));

    $emptyValues = $values->filter(function ($value) {
        return trim($value) === '';
    });

    $values->each(function ($value, $key) use ($requiredFields) {
        if (mb_strlen($value) > $requiredFields[$key]) {
            form_set_error($key, 'Nogle felter er for lange eller indeholder ugyldige data. Tjek venligst din indtastning.');
        }
    });

    if ($emptyValues->isNotEmpty()) {
        form_set_error('', 'Nødvendig information mangler. Sørg for at du har udfyldt alle felter.');

        $emptyValues->each(function ($value, $key) {
            form_set_error($key);
        });
    }

    $form_state['asaf_ajax_commands'][] = ajax_command_html('#mkbh-donate-page-business-info-form-messages', theme('status_messages'));
}

/**
 * Donate Page: Business info form submit.
 *
 * @param $form
 * @param $form_state
 *
 * @throws Exception
 */
function mkbh_donate_page_business_info_form_submit($form, &$form_state)
{
    global $user;

    $form_state['rebuild'] = true;

    $fields = [
        'name',
        'business',
        'address',
        'postal_code',
        'city',
        'cvr'
    ];

    $values = collect($form_state['values'])->only($fields)->filter(function ($value) {
        return trim($value) !== '';
    });

    database()->table('mkbh_business_info')->updateOrInsert(
        [
            'master_uid' => $user->uid,
        ],
        [
            'master_uid' => $user->uid,

            'name' => $values->get('name'),
            'business' => $values->get('business'),
            'address' => $values->get('address'),
            'postal_code' => $values->get('postal_code'),
            'city' => $values->get('city'),
            'cvr' => $values->get('cvr'),
        ]
    );

    if ($form_state['storage']['rendered_in_account_page'] === true) {
        drupal_set_message('Virksomhedsoplysninger er blevet gemt.');
    } else {
        drupal_set_message('Virksomhedsoplysninger er blevet gemt, du vil snart gå videre til betaling.');

        $form_state['asaf_ajax_commands'][] = [
            'command' => 'mkbh_donate_business_info_filled',
            'buttonId' => $form_state['values']['stripe_button_id'],
        ];
    }

    $form_state['asaf_ajax_commands'][] = ajax_command_html('#mkbh-donate-page-business-info-form-messages', theme('status_messages'));
}

/**
 * Implements hook_default_rules_configuration().
 */
function mkbh_donate_page_default_rules_configuration()
{
    $rules = [];

    foreach (glob(__DIR__ . '/rules/*.rule') as $ruleFile) {
        $rules[basename($ruleFile, '.rule')] = rules_import(file_get_contents($ruleFile));
    }

    return $rules;
}

/**
 * Implements hook_rules_event_info().
 */
function mkbh_donate_page_rules_event_info()
{
    $items = [
        'mkbh_donate_business_employee_created' => [
            'label' => t('After employee account has been created through business subscription management.'),
            'group' => t('MKBH: Donate'),
            'variables' => [
                'master_email' => [
                    'type' => 'text',
                    'label' => t('Business master\'s email address.'),
                ],
                'email' => [
                    'type' => 'text',
                    'label' => t('Business employee\'s email address.'),
                ],
                'password' => [
                    'type' => 'text',
                    'label' => t('Generated password in plain text.'),
                ],
                'password_reset_link' => [
                    'type' => 'text',
                    'label' => t('Password reset link.'),
                ],
            ],
        ],
        'mkbh_donate_business_employee_attached' => [
            'label' => t('After employee account has been attached to the business master account.'),
            'group' => t('MKBH: Donate'),
            'variables' => [
                'master_email' => [
                    'type' => 'text',
                    'label' => t('Business master\'s email address.'),
                ],
                'email' => [
                    'type' => 'text',
                    'label' => t('Business employee\'s email address.'),
                ],
            ],
        ],
        'mkbh_donate_business_employee_detached' => [
            'label' => t('After employee account has been detached from the business master account.'),
            'group' => t('MKBH: Donate'),
            'variables' => [
                'master_email' => [
                    'type' => 'text',
                    'label' => t('Business master\'s email address.'),
                ],
                'email' => [
                    'type' => 'text',
                    'label' => t('Business employee\'s email address.'),
                ],
            ],
        ],
    ];

    return $items;
}

/**
 * Implements hook_cronapi().
 */
function mkbh_donate_page_cronapi()
{
    $concurrency = 4;

    $items['mkbh_donate_page_aggregate_subscribers'] = [
        'title' => t('MKBH: Aggregate KBH Subscribers'),
        'file' => 'mkbh_donate_page.jobs.inc',
        'file path' => drupal_get_path('module', 'mkbh_donate_page'),
        'callback' => 'mkbh_donate_page_aggregate_subscribers_job',
        'enabled' => TRUE,
        'tags' => ['mobile-pay', 'oauth'],
        'scheduler' => [
            'name' => 'crontab',
            'crontab' => [
                'rules' => ['0 */3 * * *'],
            ],
        ],
    ];

    for ($i = 0; $i < $concurrency; $i++) {
        $items["mkbh_donate_page_mobile_pay_sync_agreements_worker_$i"] = [
            'title' => t("MKBH: MobilePay: Sync Agreements Worker @i", [
                '@i' => $i,
            ]),
            'file' => 'mkbh_donate_page.jobs.inc',
            'file path' => drupal_get_path('module', 'mkbh_donate_page'),
            'callback' => 'mkbh_donate_page_mobile_pay_sync_agreements_job',
            'callback arguments' => [$i, $concurrency],
            'enabled' => TRUE,
            'tags' => ['mobile-pay'],
            'scheduler' => [
                'name' => 'crontab',
                'crontab' => [
                    'rules' => ["* * * * *"],
                ],
            ],
        ];
    }


    return $items;
}

/**
 * Implements hook_views_api().
 */
function mkbh_donate_page_views_api()
{
    return [
        'api' => 3,
        'path' => drupal_get_path('module', 'mkbh_donate_page'),
    ];
}
