bound($abstract) ? $container->makeWith($abstract, $parameters) : $container->makeWith("sage.{$abstract}", $parameters); } /** * Get / set the specified configuration value. * * If an array is passed as the key, we will assume you want to set an array of values. * * @param array|string $key * @param mixed $default * @return mixed|\Roots\Sage\Config * @copyright Taylor Otwell * @link https://github.com/laravel/framework/blob/c0970285/src/Illuminate/Foundation/helpers.php#L254-L265 */ function config($key = null, $default = null) { if (is_null($key)) { return sage('config'); } if (is_array($key)) { return sage('config')->set($key); } return sage('config')->get($key, $default); } /** * @param string $file * @param array $data * @return string */ function template($file, $data = []) { if (remove_action('wp_head', 'wp_enqueue_scripts', 1)) { wp_enqueue_scripts(); } return sage('blade')->render($file, $data); } /** * Retrieve path to a compiled blade view * @param $file * @param array $data * @return string */ function template_path($file, $data = []) { return sage('blade')->compiledPath($file, $data); } /** * @param $asset * @return string */ function asset_path($asset) { return fix_path(sage('assets')->getUri('/' . $asset)); } /** * @param $asset * @return string */ function asset_dir($asset) { return fix_path(sage('assets')->get('/' . $asset)); } /** * @param string|string[] $templates Possible template files * @return array */ function filter_templates($templates) { $paths = apply_filters('sage/filter_templates/paths', [ 'views', 'resources/views' ]); $paths_pattern = "#^(" . implode('|', $paths) . ")/#"; return collect($templates) ->map(function ($template) use ($paths_pattern) { /** Remove .blade.php/.blade/.php from template names */ $template = preg_replace('#\.(blade\.?)?(php)?$#', '', ltrim($template)); /** Remove partial $paths from the beginning of template names */ if (strpos($template, '/')) { $template = preg_replace($paths_pattern, '', $template); } return $template; }) ->flatMap(function ($template) use ($paths) { return collect($paths) ->flatMap(function ($path) use ($template) { return [ "{$path}/{$template}.blade.php", "{$path}/{$template}.php", "{$template}.blade.php", "{$template}.php", ]; }); }) ->filter() ->unique() ->all(); } /** * @param string|string[] $templates Relative path to possible template files * @return string Location of the template */ function locate_template($templates) { return \locate_template(filter_templates($templates)); } /** * * Catch a contact form submission. * * @return false | array */ function contact_form_submission() { if (isset($_POST['submitted'])) { $output = []; $name = (isset($_POST['visitor_name'])) ? $_POST['visitor_name'] : false; $email = (isset($_POST['visitor_email'])) ? $_POST['visitor_email'] : false; $institution = (isset($_POST['visitor_institution'])) ? $_POST['visitor_institution'] : false; $message = (isset($_POST['message'])) ? $_POST['message'] : false; if (!$name) { $output['message'] = __('Name is required.', 'aldine'); $output['status'] = 'error'; $output['field'] = 'visitor_name'; } elseif (!$email) { $output['message'] = __('Email is required.', 'aldine'); $output['status'] = 'error'; $output['field'] = 'visitor_email'; } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $output['message'] = __('Email is invalid.', 'aldine'); $output['status'] = 'error'; $output['field'] = 'visitor_email'; } elseif (!$institution) { $output['message'] = __('Institution is required.', 'aldine'); $output['status'] = 'error'; $output['field'] = 'visitor_institution'; } elseif (!$message) { $output['message'] = __('Message is required.', 'aldine'); $output['status'] = 'error'; $output['field'] = 'message'; } else { $sent = wp_mail( get_option('admin_email'), sprintf(__('Contact Form Submission from %s', 'aldine'), $name), sprintf( "From: %1\$s <%2\$s>\n%3\$s", $name, $email, strip_tags($message) ), "From: ${email}\r\nReply-To: ${email}\r\n" ); if ($sent) { $output['message'] = __('Your message was sent!', 'aldine'); $output['status'] = 'success'; } else { $output['message'] = __('Your message could not be sent.', 'aldine'); $output['status'] = 'error'; } } return $output; } return false; } function fix_path($path) { return str_replace('/dist//', '/dist/', $path); }