- Refactored fallback submission logic in `class-event-handler.php` to remove `wp_die`/`exit` calls and use redirects for error handling, enabling proper unit testing. - Implemented meta-data saving (dates, venue, organizer) in the fallback logic using `update_post_meta`. - Updated unit tests (`test-event-management.php`) to remove `markTestIncomplete` calls related to handler errors and uncommented meta assertions. Unit tests for fallback logic now pass. - Added Instructions section and Return to Dashboard button to the event form shortcode (`display_event_form_shortcode`). - Applied basic theme styling classes (`ast-container`, `notice`, `ast-button`) to the event form. - Updated `docs/implementation_plan.md` to reflect completion of tasks 4.1-4.5 and set focus to Task 5. Refs: Task 4.1, 4.2, 4.3, 4.4, 4.5
95 lines
1.9 KiB
PHP
95 lines
1.9 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @link http://patchwork2.org/
|
|
* @author Ignas Rudaitis <ignas.rudaitis@gmail.com>
|
|
* @copyright 2010-2018 Ignas Rudaitis
|
|
* @license http://www.opensource.org/licenses/mit-license.html
|
|
*/
|
|
namespace Patchwork\Stack;
|
|
|
|
use Patchwork\Exceptions;
|
|
|
|
function push($offset, $calledClass, ?array $argsOverride = null)
|
|
{
|
|
State::$items[] = [$offset, $calledClass, $argsOverride];
|
|
}
|
|
|
|
function pop()
|
|
{
|
|
array_pop(State::$items);
|
|
}
|
|
|
|
function pushFor($offset, $calledClass, $callback, ?array $argsOverride = null)
|
|
{
|
|
push($offset, $calledClass, $argsOverride);
|
|
try {
|
|
$callback();
|
|
} catch (\Exception $e) {
|
|
$exception = $e;
|
|
}
|
|
pop();
|
|
if (isset($exception)) {
|
|
throw $exception;
|
|
}
|
|
}
|
|
|
|
function top($property = null)
|
|
{
|
|
$all = all();
|
|
$frame = reset($all);
|
|
$argsOverride = topArgsOverride();
|
|
if ($argsOverride !== null) {
|
|
$frame["args"] = $argsOverride;
|
|
}
|
|
if ($property) {
|
|
return isset($frame[$property]) ? $frame[$property] : null;
|
|
}
|
|
return $frame;
|
|
}
|
|
|
|
function topOffset()
|
|
{
|
|
if (empty(State::$items)) {
|
|
throw new Exceptions\StackEmpty;
|
|
}
|
|
list($offset, $calledClass) = end(State::$items);
|
|
return $offset;
|
|
}
|
|
|
|
function topCalledClass()
|
|
{
|
|
if (empty(State::$items)) {
|
|
throw new Exceptions\StackEmpty;
|
|
}
|
|
list($offset, $calledClass) = end(State::$items);
|
|
return $calledClass;
|
|
}
|
|
|
|
function topArgsOverride()
|
|
{
|
|
if (empty(State::$items)) {
|
|
throw new Exceptions\StackEmpty;
|
|
}
|
|
list($offset, $calledClass, $argsOverride) = end(State::$items);
|
|
return $argsOverride;
|
|
}
|
|
|
|
function all()
|
|
{
|
|
$backtrace = debug_backtrace();
|
|
return array_slice($backtrace, count($backtrace) - topOffset());
|
|
}
|
|
|
|
function allCalledClasses()
|
|
{
|
|
return array_map(function($item) {
|
|
list($offset, $calledClass) = $item;
|
|
return $calledClass;
|
|
}, State::$items);
|
|
}
|
|
|
|
class State
|
|
{
|
|
static $items = [];
|
|
}
|