'fieldset', '#group' => 'additional_settings', '#title' => 'Paywall configurator', '#description' => 'Select group(s) of subscribers who should have access to this node. All other visitors will be denied. No selection means everybody have access (public node).' ]; $options = mkbh_paywall_node_get_plans($node); $options = $options->mapWithKeys(function ($plan) { return [$plan => $plan]; }); $form['paywall']['paywall_options'] = [ '#type' => 'checkboxes', '#options' => [ MKBH_DONATE_PERSONAL_BASIS_PLAN_ID => 'Medlem Basis', MKBH_DONATE_PERSONAL_PLUS_PLAN_ID => 'Medlem Plus', MKBH_DONATE_BUSINESS_PER_MONTH_PLAN_ID => 'Abonnement / Måned', MKBH_DONATE_BUSINESS_PER_YEAR_PLAN_ID => 'Abonnement / År', ], '#default_value' => $options->toArray(), ]; array_unshift($form['#submit'], 'mkbh_paywall_node_form_submit'); } /** * Save paywall node options. * * @param $form * @param $form_state */ function mkbh_paywall_node_form_submit($form, &$form_state) { $nid = (int)$form_state['values']['nid']; $plans = collect($form_state['values']['paywall_options'])->filter()->values(); database()->table('mkbh_paywall_node_options')->where('nid', '=', $nid)->delete(); $records = $plans->map(function ($plan) use ($nid) { return [ 'nid' => $nid, 'plan_id' => $plan ]; }); database()->table('mkbh_paywall_node_options')->insert($records->toArray()); } /** * @param $form * @param null $form_state * @return mixed */ function mkbh_paywall_settings_form($form, &$form_state = null) { $form['ip'] = [ '#type' => 'fieldset', '#title' => t('IP Whitelist'), '#description' => t('These IP addresses will always have access to paywalled content. One IP per line. CIDRs are supported (i.e. 199.201.64.0/24). Your current IP: @ip', ['@ip' => ip_address()]), '#collapsible' => true, '#collapsed' => false, ]; $form['ip']['ips'] = [ '#type' => 'textarea', '#title' => t('IP Addresses'), '#rows' => 10, '#default_value' => collect(variable_get('paywall_ip_whitelist', []))->implode("\n"), ]; $form['actions']['save'] = [ '#type' => 'submit', '#value' => t('Save'), ]; return $form; } /** * @param $form * @param $form_state */ function mkbh_paywall_settings_form_submit($form, &$form_state) { tap($form_state['values']['ips'], function($ips) { $ips = collect(explode("\n", trim($ips)))->map(function ($value) { return str_ireplace(['"', "'", ','], '', trim($value)); }); variable_set('paywall_ip_whitelist', $ips->toArray()); }); }