*
* @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/dev.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/dev.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/dev.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/dev.tfs.staging.poundandgrain.ca/releases/20241113033749/web/app/themes/tfs/storage/framework/views/eb422c8beb3d93cfa2fe08ce3b438f23bc0fae21.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/dev.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/dev.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/dev.tfs.staging.poundandgrain.ca/releases/20241113033749/web/wp/wp-blog-header.php"
Key | Value |
query_vars | array:3 [ "page" => "" "name" => "toxic-shock-and-the-zoo-emerge-as-big-winners-at-2022-tfs-film-fest" "category_name" => "blog" ] |
query_string | "name=toxic-shock-and-the-zoo-emerge-as-big-winners-at-2022-tfs-film-fest&category_name=blog"
|
request | "blog/toxic-shock-and-the-zoo-emerge-as-big-winners-at-2022-tfs-film-fest"
|
matched_rule | "(.+?)/([^/]+)(?:/([0-9]+))?/?$"
|
matched_query | "category_name=blog&name=toxic-shock-and-the-zoo-emerge-as-big-winners-at-2022-tfs-film-fest&page="
|
did_permalink | true
|
Key | Value |
query | array:3 [ "page" => "" "name" => "toxic-shock-and-the-zoo-emerge-as-big-winners-at-2022-tfs-film-fest" "category_name" => "blog" ] |
query_vars | array:66 [ "page" => 0 "name" => "toxic-shock-and-the-zoo-emerge-as-big-winners-at-2022-tfs-film-fest" "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" => 10 "nopaging" => false "comments_per_page" => "50" "no_found_rows" => false "order" => "DESC" ] |
meta_query | WP_Meta_Query {#2559} |
queried_object | WP_Post {#2560} |
queried_object_id | 25432
|
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 = 'toxic-shock-and-the-zoo-emerge-as-big-winners-at-2022-tfs-film-fest' 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 | 25432
|
post_author | "43"
|
post_date | "2022-05-17 19:32:05"
|
post_date_gmt | "2022-05-17 19:32:05"
|
post_content | """ <p style="font-weight: 400">After two years of online screenings, the 2022 TFS Film Festival returned live this year in style – rolling out the red carpet at the <a href="https://tiff.net/visit" target="_blank" rel="noopener noreferrer">TIFF Bell Lightbox</a>.</p>\n \n <p style="font-weight: 400">“It’s so great to be here in person celebrating you, your films, and all you’ve achieved in the last two years, which has just been so unprecedented and so challenging,” TFS’s <a href="https://www.torontofilmschool.ca/blog/andrew-barnsley-celebrates-schitts-creeks-historic-night-at-emmys/" target="_blank" rel="noopener noreferrer">Emmy-winning</a> <a href="https://www.torontofilmschool.ca/blog/toronto-film-school-poised-for-global-greatness-with-andrew-barnsley-at-the-helm-as-newly-named-president/" target="_blank" rel="noopener noreferrer">President</a>, <a href="https://www.imdb.com/name/nm2367266/?ref_=nv_sr_srsg_0" target="_blank" rel="noopener noreferrer">Andrew Barnsley</a>, told nominees during the evening awards ceremony.</p>\n \n \n <img class="aligncenter wp-image-25437 size-medium" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2022/05/TFS_FP_AndrewBarnsley_0513.jpg" alt="President Andrew Barnsley on stage" width="670" height="523" />\n \n \n <p style="font-weight: 400">“And to be able to do that this year at the TIFF Bell Lightbox for the first time is very, very special…When you think about this space, the films that have been screened here and who’s sat in these seats – and now the fact that we’re a part of it now – it’s pretty great.”</p>\n \n <p style="font-weight: 400">In total, 53 different student projects – including 33 short films, 11 documentaries, nine music videos and six commercials – were screened over the course of the day-long TFS Film Fest. Following a more than five-hour daytime screening, the event culminated in an evening awards ceremony during which trophies were handed out in 18 different categories.</p>\n \n <p style="font-weight: 400">In the end, two films walked away as the biggest winners of the night – <a href="https://www.imdb.com/name/nm12283242/" target="_blank" rel="noopener noreferrer">Jamie Norrie</a>’s <a href="https://www.imdb.com/title/tt14557652/?ref_=nm_flmg_dr_1" target="_blank" rel="noopener noreferrer"><em>Toxic Shock</em></a> and <a href="https://www.imdb.com/name/nm7114503/?ref_=fn_al_nm_1" target="_blank" rel="noopener noreferrer">Kyisha Williams</a>’ <a href="https://www.canva.com/design/DAEfx1Plg4E/BxLb8XOC129y6T4o4cM9Eg/view?utm_campaign=designshare&utm_content=DAEfx1Plg4E&utm_medium=link&utm_source=publishsharelink" target="_blank" rel="noopener noreferrer"><em>The Zoo</em></a>, which not only shared the Best Picture honours, but also snagged an additional award each.</p>\n \n <p style="font-weight: 400"><strong>The Zoo</strong></p>\n \n <p style="font-weight: 400"><em>The Zoo</em>, which also took home the award for Best Screenplay, is an 11-minute short that follows a mother named Magi as they attempt to repair their bond with their 12-year-old child, Kik, and partner, Anaelle, after two years of navigating the carceral system.</p>\n \n \n <img class="aligncenter wp-image-25438 size-medium" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2022/05/TFS_FP_KyishaWilliamsTwoAwards_0513.jpg" alt="Kyisha Williams writer and director of The Zoo" width="670" height="442" />\n \n \n <p style="font-weight: 400">In their acceptance speeches, Williams – who wrote, directed and co-produced <em>The Zoo</em> – dedicated their awards to “all the moms out there who are working so hard to make ends meet and to bring love and safety into this world.”</p>\n \n <p style="font-weight: 400">“This award is for all of the incarcerated women and trans people out there, and all of the incarcerated people, really, who are really misunderstood a lot of the time,” Williams said.</p>\n \n <p style="font-weight: 400">“I just want to say thank you for teaching me, thank you for letting me support you and amplify your voices.”</p>\n \n <p style="font-weight: 400"><strong>Toxic Shock</strong></p>\n \n <p style="font-weight: 400">During her Best Picture and Best Editing acceptance speeches for <em>Toxic Shock</em>, Norrie thanked her “superstar” cast and crew for bringing her second-term script about a young woman who does everything she can to hide the evidence of her post-one-night-stand period stain to the big screen.</p>\n \n \n <img class="aligncenter wp-image-25439 size-medium" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2022/05/TFS_FP_ToxicShockBestPictureTie_0513.jpg" alt="Jamie Norrie accepting award for Toxic Shock" width="670" height="523" />\n \n \n <p style="font-weight: 400">“I came to TFS for editing, so writing really wasn’t part of the plan. But then I found myself coming up with fun ideas in script writing class, and suddenly we were making pitch packages, and then we were greenlit,” Norrie said of the nine-minute comedy short, for which she served as writer, director and editor.</p>\n \n <p style="font-weight: 400">“Toronto Film School has quite literally changed my life, and I’m so, so grateful and thankful to everyone at TFS – the faculty, the teachers, and the amazing friends that I made along the way, who I now get to make movies with.”</p>\n \n <p style="font-weight: 400"><strong>Best Director</strong></p>\n \n <p style="font-weight: 400">The 2022 Best Director award went to <a href="https://www.imdb.com/name/nm11489732/?ref_=fn_al_nm_1" target="_blank" rel="noopener noreferrer">Dimphy van Vilsteren</a> for <a href="https://www.imdb.com/title/tt18076560/?ref_=nm_knf_i2" target="_blank" rel="noopener noreferrer"><em>Outcast</em></a>, a six-minute short about a teenage girl who feels alone and needs to summon the courage to take that first step and bond with people.</p>\n \n \n <img class="alignnone size-medium wp-image-25440 aligncenter" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2022/05/TFS_FP_Dimphyvanvilsteren_0513.jpg" alt="" width="670" height="491" />\n \n \n <p style="font-weight: 400">Van Vilsteren, who shot the film in her native Netherlands, thanked TFS for moulding her into a filmmaker during her studies.</p>\n \n <p style="font-weight: 400">“You taught me, in two years’ time, to make a movie, to make a documentary, to do everything – and I kind of want to have an applause for all the teachers that are involved here and who organized this for us,” she said.</p>\n \n <p style="font-weight: 400">“Secondly, as a director, you do have a vision, you do want to make a lot of things, but you can’t do it without other filmmakers – and that’s all of you in this room, all the nominees, all the filmmakers. We cannot do any of this without you.”</p>\n \n <p style="font-weight: 400"><strong>Best Producers</strong></p>\n \n <p style="font-weight: 400">Sharing the award for Best Producer this year was <a href="https://www.imdb.com/name/nm13223246/?ref_=fn_al_nm_1" target="_blank" rel="noopener noreferrer">Ana Maria Lopez Martinez</a> and Mario Aguilera, co-producers of the mind-bending and visually stunning 10-minute short, <em>Three of Swords.</em></p>\n \n \n <img class="aligncenter wp-image-25441 size-medium" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2022/05/TFS_FP_MarioAguileraAnaMariaLopezMartinez_0513.jpg" alt="Ana Maria Lopez Martinez and Mario Aguilera at TFS Film Awards" width="670" height="393" />\n <p style="font-weight: 400"><em> </em></p>\n <p style="font-weight: 400">“I want to thank my cast and especially my crew who took on this ambitious project with me. It took a lot of work, a lot of preparation, a lot of planning. We wanted to make something special and something that would stand out, and I could not have done it without them,” Aguilera said.</p>\n \n <p style="font-weight: 400">“I love cinema with all of my heart – it is my biggest passion in the world and I dedicate this award to more ambitious projects. You can all do it: strive to be the best and you might just win an award.”</p>\n \n <p style="font-weight: 400"><strong>TFSO Best Canadian Film</strong></p>\n \n <p style="font-weight: 400">For the first time this year, film submissions from Toronto Film School’s Online Video Production program were also screened at the TFS Film Fest, and awards given out in three different categories – most notably for Best Canadian Short Film.</p>\n \n \n <img class="aligncenter wp-image-25442 size-medium" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2022/05/TFSO_VP_ShelbyMitchell_0513.jpg" alt="Shelby Mitchell’s Radio Bingo" width="670" height="393" />\n \n \n <p style="font-weight: 400">In announcing the award’s inaugural winner, Steven Hoffner, the coordinator of the Video Production program, admitted he was “really moved” by the winning film – Shelby Mitchell’s <em> Radio Bingo</em>.</p>\n \n <p style="font-weight: 400">“It’s films like these that make you go, ‘This is why we do this. This is why we’re here. These are the types of stories that we need to hear,’” he said, about the film, which chronicles Mitchell’s experience in the Indian Residential Day School system on the <a href="https://en.wikipedia.org/wiki/Akwesasne" target="_blank" rel="noopener noreferrer">Akwesasne</a> reserve and the Mohawk language that was stolen from her.</p>\n <p style="font-weight: 400">“It’s a story about a people taking back the language that belongs to them, that was unjustly taken away by our own very government. Who would have thought that the game of Bingo would have so much effect on helping people preserve such an important dialogue between people?”</p>\n \n <p style="font-weight: 400">In her acceptance speech, Mitchell thanked Hoffner for his steadfast belief in the project, and dedicated her award to her family, friends and neighbours back home at <a href="https://en.wikipedia.org/wiki/Akwesasne" target="_blank" rel="noopener noreferrer">Akwesasne</a>.</p>\n \n <p style="font-weight: 400">“I want to give a shout out to my community, because this story doesn’t belong to me – it belongs to <a href="https://en.wikipedia.org/wiki/Akwesasne" target="_blank" rel="noopener noreferrer">Akwesasne</a>; it belongs to the players, it belongs to everyone on my reserve,’ she said. “This is your story and I’m just so grateful that I got to tell it.”</p>\n \n <p style="font-weight: 400"><strong>Other Big Winners</strong></p>\n \n <p style="font-weight: 400">The TFS Film Fest’s other big winners of the night were Ralph Pineda’s documentary, <em>To Those We Left Behind</em>, and <a href="https://www.imdb.com/name/nm13445745/?ref_=fn_al_nm_1" target="_blank" rel="noopener noreferrer">Obi D’meano</a>’s <a href="https://www.imdb.com/title/tt19119750/?ref_=nm_knf_t1" target="_blank" rel="noopener noreferrer"><em>Walking the Grey</em></a>, which also snagged two trophies each.</p>\n \n \n <img class="aligncenter wp-image-25443 size-medium" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2022/05/TFS_FP_RalphPineda_0513.jpg" alt="Ralph Pineda’s documentary, To Those We Left Behind" width="670" height="458" />\n \n \n <p style="font-weight: 400">Pineda’s six-minute doc, which he dedicated to all his fellow international students, won for Best Documentary and Best Cinematography.</p>\n \n <p style="font-weight: 400">“I used to not like making documentaries…but lecture after lecture, I saw that you can actually make a voice for yourself being a documentarian,” he said.</p>\n \n <p style="font-weight: 400">“Making this film really, really meant a lot to me, because…I realized the whole secret to being a filmmaker is making from the heart.”</p>\n \n \n <img class="aligncenter wp-image-25444 size-medium" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2022/05/TFS_FP_ObiDmeanoAliceBlondeu_0513.jpg" alt="Obi D’meano and Alice Blondeau in Walking the Grey." width="670" height="393" />\n \n \n <p style="font-weight: 400">D’meano and <a href="https://www.imdb.com/name/nm13523266/?ref_=tt_ov_st" target="_blank" rel="noopener noreferrer">Alice Blondeau</a> both snagged acting awards for their turns as a quarreling couple in <a href="https://www.imdb.com/title/tt19119750/?ref_=nm_knf_t1" target="_blank" rel="noopener noreferrer"><em>Walking the Grey</em></a>.</p>\n \n <p style="font-weight: 400">“Honestly, this was one of the hardest things I’ve ever done in my life,” D’meano said of the film, which he also wrote and directed. “Thank you to my team. Alice, you were amazing – I couldn’t have acted this without you.”</p>\n \n <p style="font-weight: 400;text-align: center"><strong><em>The full list of winners from the 2022 TFS Film Festival is as follows:</em></strong></p>\n \n <p style="font-weight: 400;text-align: center"><strong>Best Picture</strong></p>\n <p style="font-weight: 400;text-align: center"><a href="https://www.imdb.com/title/tt14557652/?ref_=nm_flmg_dr_1"><em>Toxic Shock</em></a> – <a href="https://www.imdb.com/name/nm12283242/">Jamie Norrie</a></p>\n <p style="font-weight: 400;text-align: center">and</p>\n <p style="font-weight: 400;text-align: center"><a href="https://www.canva.com/design/DAEfx1Plg4E/BxLb8XOC129y6T4o4cM9Eg/view?utm_campaign=designshare&utm_content=DAEfx1Plg4E&utm_medium=link&utm_source=publishsharelink"><em>The Zoo</em></a> – <a href="https://www.imdb.com/name/nm7114503/?ref_=fn_al_nm_1">Kyisha Williams</a></p>\n <p style="font-weight: 400;text-align: center"><strong> </strong></p>\n <p style="font-weight: 400;text-align: center"><strong>Best Director</strong><strong> </strong></p>\n <p style="font-weight: 400;text-align: center"><a href="https://www.imdb.com/name/nm11489732/?ref_=fn_al_nm_1">Dimphy van Vilsteren</a> – <a href="https://www.imdb.com/title/tt18076560/?ref_=nm_knf_i2"><em>Outcast</em></a></p>\n <p style="font-weight: 400;text-align: center"><em> </em><strong> </strong></p>\n <p style="font-weight: 400;text-align: center"><strong>Best Producer</strong></p>\n <p style="font-weight: 400;text-align: center"><a href="https://www.imdb.com/name/nm13223246/?ref_=fn_al_nm_1">Ana Maria Lopez Martinez</a> & Mario Aguilera – <em>Three of Swords</em></p>\n <p style="font-weight: 400;text-align: center"><strong> </strong><strong> </strong></p>\n <p style="font-weight: 400;text-align: center"><strong>Best Cinematography</strong><strong> </strong></p>\n <p style="font-weight: 400;text-align: center">Ralph Pineda – <em>To Those We Left Behind</em></p>\n \n <p style="font-weight: 400;text-align: center"><strong>Best Female Performance</strong></p>\n <p style="font-weight: 400;text-align: center"><a href="https://www.imdb.com/name/nm13523266/?ref_=tt_ov_st">Alice Blondeau</a> – <a href="https://www.imdb.com/title/tt19119750/?ref_=nm_knf_t1"><em>Walking the Grey</em></a></p>\n <p style="font-weight: 400;text-align: center"><strong> </strong></p>\n <p style="font-weight: 400;text-align: center"><strong>Best Male Performance</strong><strong> </strong></p>\n <p style="font-weight: 400;text-align: center"><a href="https://www.imdb.com/name/nm13445745/?ref_=fn_al_nm_1">Obi D’meano</a> – <a href="https://www.imdb.com/title/tt19119750/?ref_=nm_knf_t1"><em>Walking the Grey</em></a></p>\n <p style="font-weight: 400;text-align: center"><em> </em></p>\n <p style="font-weight: 400;text-align: center"><strong>Best Screenplay</strong></p>\n <p style="font-weight: 400;text-align: center"><a href="https://www.imdb.com/name/nm7114503/?ref_=fn_al_nm_1">Kyisha Williams</a> – <a href="https://www.canva.com/design/DAEfx1Plg4E/BxLb8XOC129y6T4o4cM9Eg/view?utm_campaign=designshare&utm_content=DAEfx1Plg4E&utm_medium=link&utm_source=publishsharelink"><em>The Zoo</em></a></p>\n <p style="font-weight: 400;text-align: center"><em> </em></p>\n <p style="font-weight: 400;text-align: center"><strong>Best Sound</strong></p>\n <p style="font-weight: 400;text-align: center"><a href="https://www.imdb.com/title/tt14533810/?ref_=nm_knf_i1"><em>Bongos</em></a> – <a href="https://www.imdb.com/name/nm12522165/?ref_=fn_al_nm_1">Justin Maradin</a></p>\n <p style="font-weight: 400;text-align: center"><strong>Best Film Editing</strong><strong> </strong></p>\n <p style="font-weight: 400;text-align: center"><a href="https://www.imdb.com/title/tt14557652/?ref_=nm_flmg_dr_1"><em>Toxic Shock</em></a> – <a href="https://www.imdb.com/name/nm12283242/">Jamie Norrie</a></p>\n <p style="font-weight: 400;text-align: center"><strong> </strong></p>\n <p style="font-weight: 400;text-align: center"><strong>Best Production Design</strong><strong> </strong></p>\n <p style="font-weight: 400;text-align: center"><em>Three of Swords</em> – Sam Grady</p>\n <p style="font-weight: 400;text-align: center"><strong> </strong></p>\n <p style="font-weight: 400;text-align: center"><strong>Best Documentary</strong><strong> </strong></p>\n <p style="font-weight: 400;text-align: center"><em>To Those We Left Behind</em> – Ralph Pineda</p>\n <p style="font-weight: 400;text-align: center"><strong>Best Music Video</strong><strong> </strong></p>\n <p style="font-weight: 400;text-align: center"><em>The Mask</em> – Shafigh Hadavi</p>\n \n <p style="font-weight: 400;text-align: center"><strong>Best Commercial</strong><strong> </strong></p>\n <p style="font-weight: 400;text-align: center">Giorgio Armani | <em>Stonger with You</em> – <a href="https://www.imdb.com/name/nm11983919/?ref_=fn_al_nm_1">Olayinka Jinmi-Ahisu</a></p>\n <p style="font-weight: 400;text-align: center"><strong> </strong></p>\n <p style="font-weight: 400;text-align: center"><strong>Best Canadian Short Film (TFSO)</strong></p>\n <p style="font-weight: 400;text-align: center"><em>Radio Bingo</em> – Shelby Mitchell</p>\n <p style="font-weight: 400;text-align: center"><strong> </strong><strong> </strong></p>\n <p style="font-weight: 400;text-align: center"><strong>Best International Short Film (TFSO)</strong><strong> </strong></p>\n <p style="font-weight: 400;text-align: center"><em>Sirius</em> – Dominic Alexander</p>\n <p style="font-weight: 400;text-align: center"><strong> </strong><strong> </strong></p>\n <p style="font-weight: 400;text-align: center"><strong>Best Music Video (TFSO)</strong><strong> </strong></p>\n <p style="font-weight: 400;text-align: center"><em>Harder, Better, Faster, Stronger</em> – Justin Riley</p>\n <p style="font-weight: 400;text-align: center"><strong> </strong></p>\n <p style="font-weight: 400;text-align: center"><strong>Best Graduating Video Game</strong><strong> </strong></p>\n <p style="font-weight: 400;text-align: center"><em>Rust Bucket </em>– Graduating Class of Winter 2022</p>\n <p style="font-weight: 400;text-align: center"><strong> </strong></p>\n <p style="font-weight: 400;text-align: center"><strong>Best Motion Graphic Award</strong><strong> </strong></p>\n <p style="font-weight: 400;text-align: center">Christopher Wakefield</p> """ |
post_title | "'Toxic Shock' and 'The Zoo' Emerge as Big Winners at 2022 TFS Film Fest"
|
post_excerpt | "" |
post_status | "publish"
|
comment_status | "closed"
|
ping_status | "open"
|
post_password | "" |
post_name | "toxic-shock-and-the-zoo-emerge-as-big-winners-at-2022-tfs-film-fest"
|
to_ping | "" |
pinged | "" |
post_modified | "2023-03-27 21:07:04"
|
post_modified_gmt | "2023-03-27 21:07:04"
|
post_content_filtered | "" |
post_parent | 0
|
guid | "https://dev.tfs.staging.poundandgrain.ca/?p=25432"
|
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/toxic-shock-and-the-zoo-emerge-as-big-winners-at-2022-tfs-film-fest/"
|
USER | "forge"
|
HOME | "/home/forge"
|
HTTP_REFERER | "https://dev.tfs.staging.poundandgrain.ca/blog/toxic-shock-and-the-zoo-emerge-as-big-winners-at-2022-tfs-film-fest"
|
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 | "dev.tfs.staging.poundandgrain.ca"
|
REDIRECT_STATUS | "200"
|
HTTPS | "on"
|
SERVER_NAME | "dev.tfs.staging.poundandgrain.ca"
|
SERVER_PORT | "443"
|
SERVER_ADDR | "10.0.1.187"
|
REMOTE_PORT | "38034"
|
REMOTE_ADDR | "18.191.34.169"
|
GATEWAY_INTERFACE | "CGI/1.1"
|
SERVER_PROTOCOL | "HTTP/2.0"
|
DOCUMENT_ROOT | "/home/forge/dev.tfs.staging.poundandgrain.ca/releases/20241113033749/web"
|
DOCUMENT_URI | "/index.php"
|
SCRIPT_NAME | "/index.php"
|
SCRIPT_FILENAME | "/home/forge/dev.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 | 1731849580.7908
|
REQUEST_TIME | 1731849580
|
DB_NAME | "tfs_dev"
|
DB_USER | "***"
|
DB_PASSWORD | "************"
|
WP_ENV | "development"
|
WP_HOME | "https://dev.tfs.staging.poundandgrain.ca"
|
WP_SITEURL | "https://dev.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"
|
Key | Value |
DB_NAME | "tfs_dev"
|
DB_USER | "***"
|
DB_PASSWORD | "************"
|
WP_ENV | "development"
|
WP_HOME | "https://dev.tfs.staging.poundandgrain.ca"
|
WP_SITEURL | "https://dev.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"
|