*
* @package org.cocur.slugify
* @author Florian Eckerstorfer <florian@eckerstorfer.co>
* @author Marchenko Alexandr
* @copyright 2012-2014 Florian Eckerstorfer
* @license http://www.opensource.org/licenses/MIT The MIT License
*/
interface SlugifyInterface
{
/**
* Return a URL safe version of a string.
*
* @param string $string
* @param string|array|null $options
*
* @return string
*
* @api
*/
public function slugify(string $string, array|string|null $options = null): string;
}
"syntax error, unexpected '|', expecting variable (T_VARIABLE) (View: /home/forge/uat.tfs.staging.poundandgrain.ca/releases/20241113033749/web/app/themes/tfs/resources/views/single.blade.php)"
*
* @param string $__path
* @param array $__data
* @return string
*/
protected function evaluatePath($__path, $__data)
{
$obLevel = ob_get_level();
ob_start();
extract($__data, EXTR_SKIP);
// We'll evaluate the contents of the view inside a try/catch block so we can
// flush out any stray output that might get out before an error occurs or
// an exception is thrown. This prevents any partial views from leaking.
try {
include $__path;
} catch (Throwable $e) {
$this->handleViewException($e, $obLevel);
}
return ltrim(ob_get_clean());
}
/**
* Handle a view exception.
*
* @param \Throwable $e
* @param int $obLevel
* @return void
*
* @throws \Throwable
*/
protected function handleViewException(Throwable $e, $obLevel)
{
while (ob_get_level() > $obLevel) {
ob_end_clean();
}
*
* @package org.cocur.slugify
* @author Florian Eckerstorfer <florian@eckerstorfer.co>
* @author Marchenko Alexandr
* @copyright 2012-2014 Florian Eckerstorfer
* @license http://www.opensource.org/licenses/MIT The MIT License
*/
interface SlugifyInterface
{
/**
* Return a URL safe version of a string.
*
* @param string $string
* @param string|array|null $options
*
* @return string
*
* @api
*/
public function slugify(string $string, array|string|null $options = null): string;
}
"syntax error, unexpected '|', expecting variable (T_VARIABLE)"
public function unregister()
{
spl_autoload_unregister(array($this, 'loadClass'));
if (null !== $this->vendorDir) {
unset(self::$registeredLoaders[$this->vendorDir]);
}
}
/**
* Loads the given class or interface.
*
* @param string $class The name of the class
* @return true|null True if loaded, null otherwise
*/
public function loadClass($class)
{
if ($file = $this->findFile($class)) {
$includeFile = self::$includeFile;
$includeFile($file);
return true;
}
return null;
}
/**
* Finds the path to the file where the class is defined.
*
* @param string $class The name of the class
*
* @return string|false The path if found, false otherwise
*/
public function findFile($class)
{
// class map lookup
if (isset($this->classMap[$class])) {
return $this->classMap[$class];
}
*
* For the full copyright and license information, please view the LICENSE.md
* file that was distributed with this source code.
*
* ------------------------------------------------------------------
*/
declare(strict_types=1);
namespace TOC;
use Cocur\Slugify\Slugify;
use Cocur\Slugify\SlugifyInterface;
/**
* UniqueSlugify creates slugs from text without repeating the same slug twice per instance
*
* @author Casey McLaughlin <caseyamcl@gmail.com>
*/
class UniqueSlugify implements SlugifyInterface
{
/**
* @var SlugifyInterface
*/
private $slugify;
/**
* @var array
*/
private $used;
/**
* Constructor
*
* @param SlugifyInterface|null $slugify
*/
public function __construct(?SlugifyInterface $slugify = null)
{
$this->used = array();
$this->slugify = $slugify ?: new Slugify();
/**
* @return void
*/
private static function initializeIncludeClosure()
{
if (self::$includeFile !== null) {
return;
}
/**
* Scope isolated include.
*
* Prevents access to $this/self from included files.
*
* @param string $file
* @return void
*/
self::$includeFile = \Closure::bind(static function($file) {
include $file;
}, null, null);
}
}
"/home/forge/uat.tfs.staging.poundandgrain.ca/releases/20241113033749/vendor/caseyamcl/toc/src/UniqueSlugify.php"
public function unregister()
{
spl_autoload_unregister(array($this, 'loadClass'));
if (null !== $this->vendorDir) {
unset(self::$registeredLoaders[$this->vendorDir]);
}
}
/**
* Loads the given class or interface.
*
* @param string $class The name of the class
* @return true|null True if loaded, null otherwise
*/
public function loadClass($class)
{
if ($file = $this->findFile($class)) {
$includeFile = self::$includeFile;
$includeFile($file);
return true;
}
return null;
}
/**
* Finds the path to the file where the class is defined.
*
* @param string $class The name of the class
*
* @return string|false The path if found, false otherwise
*/
public function findFile($class)
{
// class map lookup
if (isset($this->classMap[$class])) {
return $this->classMap[$class];
}
/**
* @var HTML5
*/
private $htmlParser;
/**
* @var SlugifyInterface
*/
private $slugifier;
/**
* Constructor
*
* @param HTML5|null $htmlParser
* @param SlugifyInterface|null $slugify
*/
public function __construct(?HTML5 $htmlParser = null, ?SlugifyInterface $slugify = null)
{
$this->htmlParser = $htmlParser ?? new HTML5();
$this->slugifier = $slugify ?? new UniqueSlugify();
}
/**
* Fix markup
*
* @param string $markup
* @param int $topLevel
* @param int $depth
* @return string Markup with added IDs
* @throws RuntimeException
*/
public function fix(string $markup, int $topLevel = 1, int $depth = 6): string
{
if (! $this->isFullHtmlDocument($markup)) {
$partialID = uniqid('toc_generator_');
$markup = sprintf("<body id='%s'>%s</body>", $partialID, $markup);
}
$domDocument = $this->htmlParser->loadHTML($markup);
$domDocument->preserveWhiteSpace = true; // do not clobber whitespace
<?php
namespace App\View\Composers;
use DOMDocument;
use Roots\Acorn\View\Composer;
class BlogPost extends Composer
{
protected static $views = [
'partials.content-single',
];
public function override()
{
$fields = get_fields();
$htmlContent = apply_filters( 'the_content', get_the_content() );
$markupFixer = new \TOC\MarkupFixer();
$tocGenerator = new \TOC\TocGenerator();
$htmlContent = $markupFixer->fix($htmlContent);
$fields['toc'] = $tocGenerator->getOrderedHtmlMenu($htmlContent);
$fields['the_content'] = $htmlContent;
$fields['the_category'] = $this->getCategory();
return $fields;
}
public function getCategory() {
$category = null;
if(get_the_terms(get_the_id(), 'category')) {
foreach(get_the_terms(get_the_id(), 'category') as $term) {
if($term->name !== "Blog" && $term->name !== "Events" && $term->name !== "News") {
$category = $term;
return $category;
}
}
}
*/
public function compose(View $view)
{
$this->view = $view;
$this->data = new Fluent($view->getData());
$view->with($this->merge());
}
/**
* Data to be merged and passed to the view before rendering.
*
* @return array
*/
protected function merge()
{
return array_merge(
$this->with(),
$this->view->getData(),
$this->override()
);
}
/**
* Data to be passed to view before rendering
*
* @return array
*/
protected function with()
{
return [];
}
/**
* Data to be passed to view before rendering
*
* @return array
*/
protected function override()
{
return static::$views;
}
$view = array_slice(explode('\\', static::class), 3);
$view = array_map([Str::class, 'snake'], $view, array_fill(0, count($view), '-'));
return implode('/', $view);
}
/**
* Compose the view before rendering.
*
* @param \Illuminate\View\View $view
* @return void
*/
public function compose(View $view)
{
$this->view = $view;
$this->data = new Fluent($view->getData());
$view->with($this->merge());
}
/**
* Data to be merged and passed to the view before rendering.
*
* @return array
*/
protected function merge()
{
return array_merge(
$this->with(),
$this->view->getData(),
$this->override()
);
}
/**
* Data to be passed to view before rendering
*
* @return array
return $callback;
}
/**
* Build a class based container callback Closure.
*
* @param string $class
* @param string $prefix
* @return \Closure
*/
protected function buildClassEventCallback($class, $prefix)
{
[$class, $method] = $this->parseClassEvent($class, $prefix);
// Once we have the class and method name, we can build the Closure to resolve
// the instance out of the IoC container and call the method on it with the
// given arguments that are passed to the Closure as the composer's data.
return function () use ($class, $method) {
return $this->container->make($class)->{$method}(...func_get_args());
};
}
/**
* Parse a class based composer name.
*
* @param string $class
* @param string $prefix
* @return array
*/
protected function parseClassEvent($class, $prefix)
{
return Str::parseCallback($class, $this->classEventMethodForPrefix($prefix));
}
/**
* Determine the class event method based on the given prefix.
*
* @param string $prefix
* @return string
* @param \Closure|string $listener
* @param bool $wildcard
* @return \Closure
*/
public function makeListener($listener, $wildcard = false)
{
if (is_string($listener)) {
return $this->createClassListener($listener, $wildcard);
}
if (is_array($listener) && isset($listener[0]) && is_string($listener[0])) {
return $this->createClassListener($listener, $wildcard);
}
return function ($event, $payload) use ($listener, $wildcard) {
if ($wildcard) {
return $listener($event, $payload);
}
return $listener(...array_values($payload));
};
}
/**
* Create a class based listener using the IoC container.
*
* @param string $listener
* @param bool $wildcard
* @return \Closure
*/
public function createClassListener($listener, $wildcard = false)
{
return function ($event, $payload) use ($listener, $wildcard) {
if ($wildcard) {
return call_user_func($this->createClassCallable($listener), $event, $payload);
}
$callable = $this->createClassCallable($listener);
return $callable(...array_values($payload));
* @param bool $halt
* @return array|null
*/
public function dispatch($event, $payload = [], $halt = false)
{
// When the given "event" is actually an object we will assume it is an event
// object and use the class as the event name and this event itself as the
// payload to the handler, which makes object based events quite simple.
[$event, $payload] = $this->parseEventAndPayload(
$event, $payload
);
if ($this->shouldBroadcast($payload)) {
$this->broadcastEvent($payload[0]);
}
$responses = [];
foreach ($this->getListeners($event) as $listener) {
$response = $listener($event, $payload);
// If a response is returned from the listener and event halting is enabled
// we will just return this response, and not call the rest of the event
// listeners. Otherwise we will add the response on the response list.
if ($halt && ! is_null($response)) {
return $response;
}
// If a boolean false is returned from a listener, we will stop propagating
// the event to any further listeners down in the chain, else we keep on
// looping through the listeners and firing every one in our sequence.
if ($response === false) {
break;
}
$responses[] = $response;
}
return $halt ? null : $responses;
}
protected function addEventListener($name, $callback)
{
if (Str::contains($name, '*')) {
$callback = function ($name, array $data) use ($callback) {
return $callback($data[0]);
};
}
$this->events->listen($name, $callback);
}
/**
* Call the composer for a given view.
*
* @param \Illuminate\Contracts\View\View $view
* @return void
*/
public function callComposer(ViewContract $view)
{
$this->events->dispatch('composing: '.$view->name(), [$view]);
}
/**
* Call the creator for a given view.
*
* @param \Illuminate\Contracts\View\View $view
* @return void
*/
public function callCreator(ViewContract $view)
{
$this->events->dispatch('creating: '.$view->name(), [$view]);
}
}
} catch (Throwable $e) {
$this->factory->flushState();
throw $e;
}
}
/**
* Get the contents of the view instance.
*
* @return string
*/
protected function renderContents()
{
// We will keep track of the amount of views being rendered so we can flush
// the section after the complete rendering operation is done. This will
// clear out the sections for any separate views that may be rendered.
$this->factory->incrementRender();
$this->factory->callComposer($this);
$contents = $this->getContents();
// Once we've finished rendering the view, we'll decrement the render count
// so that each sections get flushed out next time a view is created and
// no old sections are staying around in the memory of an environment.
$this->factory->decrementRender();
return $contents;
}
/**
* Get the evaluated contents of the view.
*
* @return string
*/
protected function getContents()
{
return $this->engine->get($this->path, $this->gatherData());
}
$this->view = $view;
$this->path = $path;
$this->engine = $engine;
$this->factory = $factory;
$this->data = $data instanceof Arrayable ? $data->toArray() : (array) $data;
}
/**
* Get the string contents of the view.
*
* @param callable|null $callback
* @return array|string
*
* @throws \Throwable
*/
public function render(callable $callback = null)
{
try {
$contents = $this->renderContents();
$response = isset($callback) ? $callback($this, $contents) : null;
// Once we have the contents of the view, we will flush the sections if we are
// done rendering all views so that there is nothing left hanging over when
// another view gets rendered in the future by the application developer.
$this->factory->flushStateIfDoneRendering();
return ! is_null($response) ? $response : $contents;
} catch (Throwable $e) {
$this->factory->flushState();
throw $e;
}
}
/**
* Get the contents of the view instance.
*
* @return string
<?php $__env->startSection('content'); ?>
<?php while(have_posts()): ?> <?php (the_post()); ?>
<?php echo $__env->first(['partials.content-single-' . get_post_type(), 'partials.content-single'], \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path']))->render(); ?>
<?php endwhile; ?>
<?php $__env->stopSection(); ?>
<?php echo $__env->make('layouts.app', \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path']))->render(); ?><?php /**PATH /home/forge/uat.tfs.staging.poundandgrain.ca/releases/20241113033749/web/app/themes/tfs/resources/views/single.blade.php ENDPATH**/ ?>
/**
* Get the evaluated contents of the view at the given path.
*
* @param string $__path
* @param array $__data
* @return string
*/
protected function evaluatePath($__path, $__data)
{
$obLevel = ob_get_level();
ob_start();
extract($__data, EXTR_SKIP);
// We'll evaluate the contents of the view inside a try/catch block so we can
// flush out any stray output that might get out before an error occurs or
// an exception is thrown. This prevents any partial views from leaking.
try {
include $__path;
} catch (Throwable $e) {
$this->handleViewException($e, $obLevel);
}
return ltrim(ob_get_clean());
}
/**
* Handle a view exception.
*
* @param \Throwable $e
* @param int $obLevel
* @return void
*
* @throws \Throwable
*/
protected function handleViewException(Throwable $e, $obLevel)
{
while (ob_get_level() > $obLevel) {
ob_end_clean();
"/home/forge/uat.tfs.staging.poundandgrain.ca/releases/20241113033749/web/app/themes/tfs/storage/framework/views/2bc8d2ea874031e3ddb3a557319b7cad31a2f2d3.php"
*
* @param string $path
* @param array $data
* @return string
*/
public function get($path, array $data = [])
{
$this->lastCompiled[] = $path;
// If this given view has expired, which means it has simply been edited since
// it was last compiled, we will re-compile the views so we can evaluate a
// fresh copy of the view. We'll pass the compiler the path of the view.
if ($this->compiler->isExpired($path)) {
$this->compiler->compile($path);
}
// Once we have the path to the compiled file, we will evaluate the paths with
// typical PHP just like any other templates. We also keep a stack of views
// which have been rendered for right exception messages to be generated.
$results = $this->evaluatePath($this->compiler->getCompiledPath($path), $data);
array_pop($this->lastCompiled);
return $results;
}
/**
* Handle a view exception.
*
* @param \Throwable $e
* @param int $obLevel
* @return void
*
* @throws \Throwable
*/
protected function handleViewException(Throwable $e, $obLevel)
{
$e = new ViewException($this->getMessage($e), 0, 1, $e->getFile(), $e->getLine(), $e);
parent::handleViewException($e, $obLevel);
$this->factory->callComposer($this);
$contents = $this->getContents();
// Once we've finished rendering the view, we'll decrement the render count
// so that each sections get flushed out next time a view is created and
// no old sections are staying around in the memory of an environment.
$this->factory->decrementRender();
return $contents;
}
/**
* Get the evaluated contents of the view.
*
* @return string
*/
protected function getContents()
{
return $this->engine->get($this->path, $this->gatherData());
}
/**
* Get the data bound to the view instance.
*
* @return array
*/
public function gatherData()
{
$data = array_merge($this->factory->getShared(), $this->data);
foreach ($data as $key => $value) {
if ($value instanceof Renderable) {
$data[$key] = $value->render();
}
}
return $data;
}
throw $e;
}
}
/**
* Get the contents of the view instance.
*
* @return string
*/
protected function renderContents()
{
// We will keep track of the amount of views being rendered so we can flush
// the section after the complete rendering operation is done. This will
// clear out the sections for any separate views that may be rendered.
$this->factory->incrementRender();
$this->factory->callComposer($this);
$contents = $this->getContents();
// Once we've finished rendering the view, we'll decrement the render count
// so that each sections get flushed out next time a view is created and
// no old sections are staying around in the memory of an environment.
$this->factory->decrementRender();
return $contents;
}
/**
* Get the evaluated contents of the view.
*
* @return string
*/
protected function getContents()
{
return $this->engine->get($this->path, $this->gatherData());
}
/**
$this->view = $view;
$this->path = $path;
$this->engine = $engine;
$this->factory = $factory;
$this->data = $data instanceof Arrayable ? $data->toArray() : (array) $data;
}
/**
* Get the string contents of the view.
*
* @param callable|null $callback
* @return array|string
*
* @throws \Throwable
*/
public function render(callable $callback = null)
{
try {
$contents = $this->renderContents();
$response = isset($callback) ? $callback($this, $contents) : null;
// Once we have the contents of the view, we will flush the sections if we are
// done rendering all views so that there is nothing left hanging over when
// another view gets rendered in the future by the application developer.
$this->factory->flushStateIfDoneRendering();
return ! is_null($response) ? $response : $contents;
} catch (Throwable $e) {
$this->factory->flushState();
throw $e;
}
}
/**
* Get the contents of the view instance.
*
* @return string
<!doctype html>
<html <?php language_attributes(); ?>>
<?php echo \Roots\view(\Roots\app('sage.view'), \Roots\app('sage.data'))->render(); ?>
</html>
}
break;
}
}
if ( ! $template ) {
$template = get_index_template();
}
/**
* Filters the path of the current template before including it.
*
* @since 3.0.0
*
* @param string $template The path of the template to include.
*/
$template = apply_filters( 'template_include', $template );
if ( $template ) {
include $template;
} elseif ( current_user_can( 'switch_themes' ) ) {
$theme = wp_get_theme();
if ( $theme->errors() ) {
wp_die( $theme->errors() );
}
}
return;
}
"/home/forge/uat.tfs.staging.poundandgrain.ca/releases/20241113033749/web/app/themes/tfs/index.php"
<?php
/**
* Loads the WordPress environment and template.
*
* @package WordPress
*/
if ( ! isset( $wp_did_header ) ) {
$wp_did_header = true;
// Load the WordPress library.
require_once __DIR__ . '/wp-load.php';
// Set up the WordPress query.
wp();
// Load the theme template.
require_once ABSPATH . WPINC . '/template-loader.php';
}
"/home/forge/uat.tfs.staging.poundandgrain.ca/releases/20241113033749/web/wp/wp-includes/template-loader.php"
<?php
/**
* WordPress View Bootstrapper
*/
define('WP_USE_THEMES', true);
require __DIR__ . '/wp/wp-blog-header.php';
"/home/forge/uat.tfs.staging.poundandgrain.ca/releases/20241113033749/web/wp/wp-blog-header.php"
Key | Value |
query_vars | array:3 [ "page" => "" "name" => "toronto-film-school-presents-virtual-stage-production-of-spirited" "category_name" => "blog" ] |
query_string | "name=toronto-film-school-presents-virtual-stage-production-of-spirited&category_name=blog"
|
request | "blog/toronto-film-school-presents-virtual-stage-production-of-spirited"
|
matched_rule | "(.+?)/([^/]+)(?:/([0-9]+))?/?$"
|
matched_query | "category_name=blog&name=toronto-film-school-presents-virtual-stage-production-of-spirited&page="
|
did_permalink | true
|
Key | Value |
query | array:3 [ "page" => "" "name" => "toronto-film-school-presents-virtual-stage-production-of-spirited" "category_name" => "blog" ] |
query_vars | array:66 [ "page" => 0 "name" => "toronto-film-school-presents-virtual-stage-production-of-spirited" "category_name" => "blog" "error" => "" "m" => "" "p" => 0 "post_parent" => "" "subpost" => "" "subpost_id" => "" "attachment" => "" "attachment_id" => 0 "pagename" => "" "page_id" => 0 "second" => "" "minute" => "" "hour" => "" "day" => 0 "monthnum" => 0 "year" => 0 "w" => 0 "tag" => "" "cat" => "" "tag_id" => "" "author" => "" "author_name" => "" "feed" => "" "tb" => "" "paged" => 0 "meta_key" => "" "meta_value" => "" "preview" => "" "s" => "" "sentence" => "" "title" => "" "fields" => "" "menu_order" => "" "embed" => "" "category__in" => [] "category__not_in" => [] "category__and" => [] "post__in" => [] "post__not_in" => [] "post_name__in" => [] "tag__in" => [] "tag__not_in" => [] "tag__and" => [] "tag_slug__in" => [] "tag_slug__and" => [] "post_parent__in" => [] "post_parent__not_in" => [] "author__in" => [] "author__not_in" => [] "search_columns" => [] "ignore_sticky_posts" => false "suppress_filters" => false "cache_results" => true "update_post_term_cache" => true "update_menu_item_cache" => false "lazy_load_term_meta" => true "update_post_meta_cache" => true "post_type" => "" "posts_per_page" => 16 "nopaging" => false "comments_per_page" => "50" "no_found_rows" => false "order" => "DESC" ] |
meta_query | WP_Meta_Query {#2562} |
queried_object | WP_Post {#2563} |
queried_object_id | 21782
|
request | """ SELECT wp_posts.*\n \t\t\t\t\t FROM wp_posts \n \t\t\t\t\t WHERE 1=1 AND wp_posts.post_name = 'toronto-film-school-presents-virtual-stage-production-of-spirited' AND wp_posts.post_type = 'post'\n \t\t\t\t\t \n \t\t\t\t\t ORDER BY wp_posts.post_date DESC\n \t\t\t\t\t """ |
post_count | 1
|
in_the_loop | true
|
current_comment | -1
|
found_posts | 1
|
is_single | true
|
is_singular | true
|
Key | Value |
ID | 21782
|
post_author | "43"
|
post_date | "2020-12-15 14:14:11"
|
post_date_gmt | "2020-12-15 14:14:11"
|
post_content | """ A dorm room. A lockdown. A seance. Unforeseen consequences.\n \n \n \n Toronto Film School’s upcoming production of <em><a href="https://create.torontofilmschool.ca/showcase/spirited/" target="_blank" rel="noopener noreferrer">Spirited</a></em>, directed by <a href="https://www.imdb.com/name/nm0926439/" target="_blank" rel="noopener noreferrer">Jonathan Whittaker</a>, was inspired by a simple scenario put forth to this term’s 5B class of <a href="https://staging.torontofilmschool.ca/programs/acting-for-film-tv-and-the-theatre-diploma/" target="_blank" rel="noopener noreferrer">Acting for Film, TV & the Theatre</a> students: What if you could contact someone from the past? Who would that be?\n \n \n \n [caption id="attachment_21797" align="aligncenter" width="411"]<img class="wp-image-21797 size-medium" src="https://uat.tfs.staging.poundandgrain.ca/app/uploads/2023/03/TFS_ACT_Spirited_PlayPoster_NicoleBelhumeur_1214-411x526-1.jpg" alt="" width="411" height="526" /> Poster Designed by Nicole Belhumeur[/caption]\n \n \n \n “The exercise then became how to fashion a series of vignettes written by the actors into a cohesive story and employ all the skills that they had acquired over the last year or so,” Whittaker explained of the creation process behind the 80-minute play, which was entirely written, produced, designed and soon-to-be performed by a company of fifth-term students over the course of just nine weeks.\n \n \n \n “To that end, <em>Spirited</em> emerged as storytelling, dance, music, ensemble collaboration and a little swordplay for good measure – all devised from the hearts and minds of these fine young actors.”\n \n \n \n The play, which was stage-managed by Cecelia Lee, will take to the virtual stage for a three-performance run on the evenings of Dec. 16, 17 and 18 as follows:\n \n <em> </em>\n <p style="text-align: center;">Wednesday, Dec. 16 – 6:30 to 8 p.m. (EST)</p>\n <p style="text-align: center;">Thursday, Dec. 17 – 8:15 to 9:45 p.m. (EST)</p>\n <p style="text-align: center;">Friday, Dec. 18 - 6:30 to 8 p.m. (EST)</p>\n \n <p style="text-align: center;"><strong>***Click <a href="https://create.torontofilmschool.ca/showcase/spirited/" target="_blank" rel="noopener noreferrer">here</a> to livestream any of the above performances***</strong></p>\n \n \n \n <h3 style="text-align: center;"><strong>The Creative Team Behind <em>Spirited</em>:</strong></h3>\n \n <p style="text-align: center;"><img class="size-medium wp-image-21783 aligncenter" src="https://uat.tfs.staging.poundandgrain.ca/app/uploads/2023/03/TFS_ACT_AhmedAlmokdad_1214-670x393-1.jpg" alt="" width="670" height="393" /></p>\n <p style="text-align: center;"><strong>Ahmed Almokdad – Adam, Barney, Hamilton</strong></p>\n \n <p style="text-align: center;">Ahmed is a Syrian-Canadian performer and writer from Edmonton, Alberta. He started out doing live shows, including a local rendition of the hip-hop musical <em>In the Heights</em>, where he led a group of student actors in the role of Usnavi. His performance earned him a nomination for ‘Best Lead Actor in a Musical’ in the <em>Edmonton Journal</em>’s Youth Critic’s Choice Awards. Furthermore, Ahmed has worked on various professional student films during his time at Toronto Film School. Ahmed is a self-taught piano player. He has years of experience as a lifeguard and teaches swim lessons to people of all ages.</p>\n \n \n \n <p style="text-align: center;"><strong><img class="size-medium wp-image-21784 aligncenter" src="https://uat.tfs.staging.poundandgrain.ca/app/uploads/2023/03/TFS_ACT_ElliotAmmeter_1214-670x393-1.jpg" alt="" width="670" height="393" /></strong></p>\n <p style="text-align: center;"><strong>Elliot Ammeter - Trevor, Ted, Hermione, Burr, Mercutio</strong></p>\n \n <p style="text-align: center;">Elliot is a French-Canadian actor from Brandon, Manitoba. He discovered a love for acting in high school, where he acted in productions such as John Cariani’s <em>Almost, Maine</em>, as well as playing the role of John Proctor in <em>The Crucible</em>, which he also arranged much of the music for. Elliot is now enrolled at Toronto Film School and is enjoying his time there immensely. He has been artistically inclined all his life, having taken up piano at a young age. He steadily moved to prefer guitar and voice, the latter of which he has done several years of training for, including several workshops and studying privately at the university level. Other hobbies of Elliot’s include learning languages, writing and arranging music.</p>\n \n \n \n \n <img class="size-medium wp-image-21785 aligncenter" src="https://uat.tfs.staging.poundandgrain.ca/app/uploads/2023/03/TFS_ACT_MarilynChavela_1214-670x393-1.jpg" alt="" width="670" height="393" />\n <p style="text-align: center;"><strong>Marilyn Chavela – Lilith, Poe</strong></p>\n \n <p style="text-align: center;">Marilyn is a stage actor trained in Mexico City at the National Institute of Fine Arts (INBA) and currently enrolled in the acting program at Toronto Film School. She has landed leading roles in short films such as <em>Raw </em>and <em>Hand to Hand</em>. In addition, she has written and starred in several plays at the Principal Theater in Puebla, Mexico. Being of Hispanic descent, Marilyn grew up with strong values where respect is fundamental. Fully bilingual in Spanish and English, she looks forward to working on projects that promote and encourage diversity and inclusion in the film industry.</p>\n \n \n \n \n <img class="size-medium wp-image-21786 aligncenter" src="https://uat.tfs.staging.poundandgrain.ca/app/uploads/2023/03/TFS_ACT_ChrisChen_1214-670x393-1.jpg" alt="" width="670" height="393" />\n <p style="text-align: center;"><strong>Chris Chen – Bryan, Ron</strong></p>\n \n <p style="text-align: center;">Chris is a young Chinese actor, currently studying in the Acting for Film, TV & the Theatre program at Toronto Film School. He was an actor in a high school drama club, and he acted in the student-led plays <em>Hallows Eve</em> and <em>White Blood</em>. He also participated in fairy tale benefit performances for kids, such as <em>The Lion King, Cinderella</em> and <em>The Wizard of Oz.</em> He has good stage performance experience and improvisational ability. In his acting life, he thought a good script should follow the logic including creation, shooting, background and so on. He likes to add some comedy elements, to make the whole work more relaxed and make the audience more interested at the same time. He said, “Life is the best stage, so as an actor, you should enjoy your life first.”</p>\n \n \n \n <p style="text-align: center;"><strong><img class="size-medium wp-image-21787 aligncenter" src="https://uat.tfs.staging.poundandgrain.ca/app/uploads/2023/03/TFS_ACT_MichaelHopkinson_1214-670x393-1.jpg" alt="" width="670" height="393" /></strong></p>\n <p style="text-align: center;"><strong>Micheal Hopkinson – Arne, Leif, The Darkness, Pops</strong></p>\n \n <p style="text-align: center;">Micheal is an up-and-coming actor in the industry. A fresh face to the business, he approaches acting with the same fervour that he does writing for his fantasy novels. Obsessed with all things fantasy, Micheal has often done writing for such things as in-depth <em>Dungeons and Dragons</em> campaigns for his friends and also for charity, as well as two full-length unpublished fantasy novels, that he aims to one day have published. An avid lover of cartoons, video games and animation, it is his lifelong dream to become a renowned voiceover artist.</p>\n \n \n \n \n <img class="alignnone size-medium wp-image-21788 aligncenter" src="https://uat.tfs.staging.poundandgrain.ca/app/uploads/2023/03/TFS_TigerMa_1214-670x393-1.jpg" alt="" width="670" height="393" />\n <p style="text-align: center;"><strong>Tiger Ma – Ford, Emperor Puyi, Romeo</strong></p>\n \n <p style="text-align: center;">Tiger Ma was born in China. He went to Canada to study when he was 17. Right now, he is studying Acting at Toronto Film School. He has several role experiences in his school period. For example, he acted as the lead role of <em>Angels in America</em>. He knows two types of martial arts, which are Wushu and Taekwondo. He has been self-training in vocal for years. He loves acting and hopes to succeed in his acting career.</p>\n \n \n \n \n <img class="size-medium wp-image-21789 aligncenter" src="https://uat.tfs.staging.poundandgrain.ca/app/uploads/2023/03/TFS_ACT_JuliaMarchenko_1214-670x393-1.jpg" alt="" width="670" height="393" />\n <p style="text-align: center;"><strong>Julia Marchenko – Lexi, Clyde, Tybalt</strong></p>\n \n <p style="text-align: center;">Julia Marchenko, is a Russian-Canadian actress, who was born in Dubai, United Arab Emirates. She moved to Canada at the age of 4 and is fluent in both Russian and English. Julia just started her journey as an actress, but was featured in a music video, <em>Why’d You Wanna End</em>, produced by Kiran Yashwanth. Before her life as an actress, she went to York University for Law & Society for a year. Julia is also a graduate of the award-winning faculty in Toronto Film School. When she’s not focusing on acting, she loves to ski during the winter and builds computers as a hobby.</p>\n \n \n \n \n <img class="size-medium wp-image-21790 aligncenter" src="https://uat.tfs.staging.poundandgrain.ca/app/uploads/2023/03/TFS_ACT_KylaShellyRandall_1214-670x393-1.jpg" alt="" width="670" height="393" />\n <p style="text-align: center;"><strong>Kyla Shelly-Randall – Stephanie, Bonnie</strong></p>\n \n <p style="text-align: center;">From Markham, Ontario, Kyla began as a singer. She was a student at Cosmo School of Music, Michelyn Wright Vocal Studio, and Unionville High School, as a part of the Arts Unionville Music program, and chamber choir. During this time, she participated in vocal masterclasses and performed in competitions. After performing in a school musical, Kyla decided to pursue acting, beginning at Ovation Performing Arts, where she performed leading roles in renditions of <em>Come From Away </em>and <em>The Middle Place</em>. After graduating high school, Kyla began at Toronto Film School, where she is completing her studies, and performing in school productions.</p>\n \n \n \n \n <img class="alignnone size-medium wp-image-21791 aligncenter" src="https://uat.tfs.staging.poundandgrain.ca/app/uploads/2023/03/TFS_ACT_ChristianVandermeer_1214-670x393-1.jpg" alt="" width="670" height="393" />\n <p style="text-align: center;"><strong>Christian Vandermeer – Jimmy, Dillinger, Juliet</strong></p>\n \n <p style="text-align: center;">Born in Paris, France, Christian Vandermeer was raised in Ottawa, Canada, though he spent most of his life travelling around the world before beginning boarding school in Nova Scotia, where his interest in acting began as he performed in many of the onstage school productions. He has been doing photography for the past four years and has been skateboarding since the age of 12. After graduating from high school, Christian moved to Toronto, where he currently attends Toronto Film School and has been a part of several school productions. Upon graduating, Christian seeks to become a dynamic writer and actor, he hopes his future work will inspire others to explore their own passions.</p>\n \n \n \n <p style="text-align: center;"><strong><img class="size-medium wp-image-21792 aligncenter" src="https://uat.tfs.staging.poundandgrain.ca/app/uploads/2023/03/TFS_ACT_MeganVermette_1214-670x393-1.jpg" alt="" width="670" height="393" />\n </strong><strong>Mégane Vermette - Vivianne, Pavlova, Harry, Romeo</strong></p>\n \n <p style="text-align: center;">Mégane is fully bilingual in both French and English, with the ability to perform several dialects. Meg grew up dancing ballet, cheerleading, and acting in stage productions, she also achieved her black- belt in TaeKwon-Do. Meg also participated in several acting workshops; Camera Acting with Robert B`ockstael (Ottawa) and Camera Acting with Jean-Pierre Bergeron (Montréal). Currently attending Toronto Film School’s Acting program, Meg has landed leading roles in numerous short films. Mégane prides herself most in her hard work, keeping herself to the highest standard, constantly having in mind her family’s motto: “Chin up, shoulders back, and get it done.”</p>\n \n \n \n \n <img class="alignnone size-medium wp-image-21793 aligncenter" src="https://uat.tfs.staging.poundandgrain.ca/app/uploads/2023/03/TFS_ACT_SebastianZhang_1214-670x393-1.jpg" alt="" width="670" height="393" />\n <p style="text-align: center;"><strong>Sebastian Zhang - Kendrick, Emperor Zheng, Benvolio</strong></p>\n \n <p style="text-align: center;">Sebastian is a new actor from a city in China called NanJing. He has just started his journey as a professional actor after five years of high school in Canada/USA. He had a chance to participate in a local Chinese TV show when he was a child and discovered his true desire. He went to Toronto Film School to train as a professional actor.</p>\n \n \n \n <p style="text-align: center;"><img class="size-medium wp-image-21794 aligncenter" src="https://uat.tfs.staging.poundandgrain.ca/app/uploads/2023/03/TFS_ACT_JonathanWhittaker_1214-670x393-1.jpg" alt="" width="670" height="393" /></p>\n <p style="text-align: center;"><strong>Jonathan Whittaker – Director</strong></p>\n \n <p style="text-align: center;">Jonathan is a graduate of Ryerson University in Toronto with a Bachelor of Fine Arts with distinction degree in Performance/Acting Program 1978-80 and a 2015 participant of the Banff/Citadel Professional Development Program. He has been an instructor at TFS since 2014. Notable theatre credits include: <em>Beside Myself </em>(World Premiere), <em>Prom Queen </em>(World premiere - Segal Centre), <em>Nigredo Hotel </em>(Tapestry Theatre - World premiere - Dora Award nomination), <em>The Big Sleep </em>(World premiere - Theatre Aquarius), <em>Colours in the Storm, The Team on the Hill, Jake and the Kid </em>(World premiere - Theatre Orangeville), <em>Les Misérables and Dirty Dancing </em>(Mirvish Productions), <em>Man of La Mancha </em>(TBTB), <em>Closer than Ever </em>(Latimer/Follows), <em>12 Angry Men </em>(Drayton) and <em>The Dining Room </em>(Grand Theatre). Television appearances: <em>Murdoch Mysteries, Christmas in Love, Ransom, The Expanse </em>(2 seasons), <em>Open Heart (series lead), Alienated </em>(series lead)<em>, The Kennedys, Lost Girl, Transporter, Flashpoint, Suits, The Avro Arrow and Lucky Girl. </em>Feature films include: <em>Kid Detective, Brotherhood, Chicago, D2K, Blizzard, Land of the Dead, Three Men and a Baby, Virgin Suicides.</em></p>\n \n \n \n \n <img class="size-medium wp-image-21795 aligncenter" src="https://uat.tfs.staging.poundandgrain.ca/app/uploads/2023/03/TFS_ACT_CeceliaLee_1214-670x393-1.jpg" alt="" width="670" height="393" />\n <p style="text-align: center;"><strong>Cecilia Lee – Stage Manager, Assistant Director</strong></p>\n \n <p style="text-align: center;">Cecilia Lee is an Asian-Canadian performer who brings her affinity for the wacky, her zeal for drama, and dramatic zeal to all her work! Having graduated with Honors from Toronto Film School in December 2019, she is now forging her path in the film industry. She appeared in a multitude of short films and theatre productions during her time attending TFS, including Amadeus at the Factory Theatre. Since then, she has hurtled headlong into her creative side, acting, directing, and writing her own work! One of her passions is queer representation in the media, and she hopes to contribute to the current wave of change occurring in the industry. It is with great pleasure that she joins this production as stage manager and assistant director.</p>\n \n \n """ |
post_title | "Toronto Film School Presents Virtual Stage Production of 'Spirited'"
|
post_excerpt | "" |
post_status | "publish"
|
comment_status | "closed"
|
ping_status | "open"
|
post_password | "" |
post_name | "toronto-film-school-presents-virtual-stage-production-of-spirited"
|
to_ping | "" |
pinged | "" |
post_modified | "2023-04-04 19:10:40"
|
post_modified_gmt | "2023-04-04 19:10:40"
|
post_content_filtered | "" |
post_parent | 0
|
guid | "https://uat.tfs.staging.poundandgrain.ca/?p=21782"
|
menu_order | 0
|
post_type | "post"
|
post_mime_type | "" |
comment_count | "0"
|
filter | "raw"
|
Key | Value |
SERVER_SOFTWARE | "nginx/1.22.1"
|
REQUEST_URI | "/blog/toronto-film-school-presents-virtual-stage-production-of-spirited/"
|
USER | "forge"
|
HOME | "/home/forge"
|
HTTP_REFERER | "https://uat.tfs.staging.poundandgrain.ca/blog/toronto-film-school-presents-virtual-stage-production-of-spirited"
|
HTTP_ACCEPT_ENCODING | "gzip, br, zstd, deflate"
|
HTTP_USER_AGENT | "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"
|
HTTP_ACCEPT | "*/*"
|
HTTP_HOST | "uat.tfs.staging.poundandgrain.ca"
|
REDIRECT_STATUS | "200"
|
HTTPS | "on"
|
SERVER_NAME | "uat.tfs.staging.poundandgrain.ca"
|
SERVER_PORT | "443"
|
SERVER_ADDR | "10.0.1.187"
|
REMOTE_PORT | "10943"
|
REMOTE_ADDR | "3.143.17.75"
|
GATEWAY_INTERFACE | "CGI/1.1"
|
SERVER_PROTOCOL | "HTTP/2.0"
|
DOCUMENT_ROOT | "/home/forge/uat.tfs.staging.poundandgrain.ca/releases/20241113033749/web"
|
DOCUMENT_URI | "/index.php"
|
SCRIPT_NAME | "/index.php"
|
SCRIPT_FILENAME | "/home/forge/uat.tfs.staging.poundandgrain.ca/releases/20241113033749/web/index.php"
|
CONTENT_LENGTH | "" |
CONTENT_TYPE | "" |
REQUEST_METHOD | "GET"
|
QUERY_STRING | "" |
FCGI_ROLE | "RESPONDER"
|
PHP_SELF | "/index.php"
|
REQUEST_TIME_FLOAT | 1736361122.3322
|
REQUEST_TIME | 1736361122
|
DB_NAME | "tfs_uat"
|
DB_USER | "***"
|
DB_PASSWORD | "************"
|
WP_ENV | "development"
|
WP_HOME | "https://uat.tfs.staging.poundandgrain.ca"
|
WP_SITEURL | "https://uat.tfs.staging.poundandgrain.ca/wp"
|
WP_DEBUG_LOG | "/path/to/debug.log"
|
AUTH_KEY | "****************************************************************"
|
SECURE_AUTH_KEY | "****************************************************************"
|
LOGGED_IN_KEY | "****************************************************************"
|
NONCE_KEY | "****************************************************************"
|
AUTH_SALT | "****************************************************************"
|
SECURE_AUTH_SALT | "****************************************************************"
|
LOGGED_IN_SALT | "****************************************************************"
|
NONCE_SALT | "****************************************************************"
|
ACF_PRO_KEY | "b3JkZXJfaWQ9NDQxMjV8dHlwZT1kZXZlbG9wZXJ8ZGF0ZT0yMDE0LTExLTEyIDA2OjA0OjE3"
|
MIRROR_URL | "https://dev.tfs.staging.poundandgrain.ca"
|
SOURCE_OF_TRUTH | "false;"
|
BLOG_URL | "https://dev.tfs.staging.poundandgrain.ca"
|
Key | Value |
DB_NAME | "tfs_uat"
|
DB_USER | "***"
|
DB_PASSWORD | "************"
|
WP_ENV | "development"
|
WP_HOME | "https://uat.tfs.staging.poundandgrain.ca"
|
WP_SITEURL | "https://uat.tfs.staging.poundandgrain.ca/wp"
|
WP_DEBUG_LOG | "/path/to/debug.log"
|
AUTH_KEY | "****************************************************************"
|
SECURE_AUTH_KEY | "****************************************************************"
|
LOGGED_IN_KEY | "****************************************************************"
|
NONCE_KEY | "****************************************************************"
|
AUTH_SALT | "****************************************************************"
|
SECURE_AUTH_SALT | "****************************************************************"
|
LOGGED_IN_SALT | "****************************************************************"
|
NONCE_SALT | "****************************************************************"
|
ACF_PRO_KEY | "b3JkZXJfaWQ9NDQxMjV8dHlwZT1kZXZlbG9wZXJ8ZGF0ZT0yMDE0LTExLTEyIDA2OjA0OjE3"
|
MIRROR_URL | "https://dev.tfs.staging.poundandgrain.ca"
|
SOURCE_OF_TRUTH | "false;"
|
BLOG_URL | "https://dev.tfs.staging.poundandgrain.ca"
|