*
* @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" => "tfs-faculty-and-alumni-celebrate-contributions-to-canadian-screen-award-winning-projects" "category_name" => "blog" ] |
query_string | "name=tfs-faculty-and-alumni-celebrate-contributions-to-canadian-screen-award-winning-projects&category_name=blog"
|
request | "blog/tfs-faculty-and-alumni-celebrate-contributions-to-canadian-screen-award-winning-projects"
|
matched_rule | "(.+?)/([^/]+)(?:/([0-9]+))?/?$"
|
matched_query | "category_name=blog&name=tfs-faculty-and-alumni-celebrate-contributions-to-canadian-screen-award-winning-projects&page="
|
did_permalink | true
|
Key | Value |
query | array:3 [ "page" => "" "name" => "tfs-faculty-and-alumni-celebrate-contributions-to-canadian-screen-award-winning-projects" "category_name" => "blog" ] |
query_vars | array:66 [ "page" => 0 "name" => "tfs-faculty-and-alumni-celebrate-contributions-to-canadian-screen-award-winning-projects" "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 | 25223
|
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 = 'tfs-faculty-and-alumni-celebrate-contributions-to-canadian-screen-award-winning-projects' 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 | 25223
|
post_author | "43"
|
post_date | "2022-04-11 16:31:39"
|
post_date_gmt | "2022-04-11 16:31:39"
|
post_content | """ <p style="font-weight: 400;">The <a href="https://www.academy.ca/nominees/" target="_blank" rel="noopener noreferrer">2022 Canadian Screen Awards</a> were held from April 4-10, and several of the projects Toronto Film School faculty and alumni worked on walked away with trophies.</p>\n \n <p style="font-weight: 400;">Presented annually by the <a href="https://www.academy.ca/" target="_blank" rel="noopener noreferrer">Academy of Canadian Cinema & Television</a>, the Canadian Screen Awards recognize artistic and technical excellence in Canadian film, television and digital media.</p>\n \n \n <img class="aligncenter wp-image-25224 size-medium" src="https://uat.tfs.staging.poundandgrain.ca/app/uploads/2023/03/TFS_MercedesCardellaKyishaWilliams_Scarborough_0401-1-670x393-1.jpg" alt="Toronto Film School's Mercedes Cardella and Kyisha Williams had acting roles in Scarborough" width="670" height="393" />\n \n \n <p style="font-weight: 400;">On the film side of things, the big winner of 2022 was <a href="https://www.imdb.com/title/tt12890988/" target="_blank" rel="noopener noreferrer"><em>Scarborough</em></a>, which took home awards in eight of the 11 categories it was nominated for, including <a href="https://www.academy.ca/2022/scarborough/" target="_blank" rel="noopener noreferrer">Best Motion Picture</a>, <a href="https://www.academy.ca/2022/shasha-nakhai/" target="_blank" rel="noopener noreferrer">Achievement in Direction,</a> <a href="https://www.academy.ca/2022/catherine-hernandez/" target="_blank" rel="noopener noreferrer">Adapted Screenplay</a>, <a href="https://www.academy.ca/2022/liam-diaz/" target="_blank" rel="noopener noreferrer">Performance by an Actor in a Leading Role</a> (<a href="https://www.imdb.com/name/nm12383977/" target="_blank" rel="noopener noreferrer">Liam Diaz</a>), and the <a href="https://www.academy.ca/2022/shasha-nakhai-3/" target="_blank" rel="noopener noreferrer">John Dunning Best First Feature Film Award</a>, among others.</p>\n \n <p style="font-weight: 400;"><a href="https://variety.com/2021/film/global/scarborough-catherine-hernandez-tiff-discovery-1235059803/" target="_blank" rel="noopener noreferrer"><em>Lauded by Variety</em></a> magazine as giving a "ground-breaking voice" to an ignored community, <em>Scarborough </em>is based on the likewise <a href="https://www.chapters.indigo.ca/en-ca/books/scarborough/9781551526775-item.html" target="_blank" rel="noopener noreferrer">critically acclaimed 2017 novel</a> of the same name by <a href="https://www.catherinehernandezcreates.com/" target="_blank" rel="noopener noreferrer">Catherine Hernandez</a>, which tells the story of three low-income families struggling to endure within a system that's set them up for failure.</p>\n \n <p style="font-weight: 400;">Both Toronto Film School's Curriculum Development Specialist <a href="https://staging.torontofilmschool.ca/blog/mercedes-cardella-celebrates-theatrical-release-of-critically-acclaimed-film-scarborough/" target="_blank" rel="noopener noreferrer">Mercedes Cardella</a> and Class of 2021 <a href="https://staging.torontofilmschool.ca/programs/film-production-diploma/" target="_blank" rel="noopener noreferrer">Film Production</a> alum <a href="https://www.kyishawilliams.com/about" target="_blank" rel="noopener noreferrer">Kyisha Williams</a> had acting roles in <em>Scarborough</em>. While Williams plays a character named Star, Cardella played the supporting role of Ms. Finnegan, whom she describes as a "passionate inner-city school educator" with a keen eye for identifying talent in her classroom.</p>\n \n \n "So proud of the entire <em>Scarborough</em> cast, crew and everyone involved to make this happen," Cardella said in a celebratory Instagram post in which she thanked the film's screenwriter, Hernandez, as well its co-directors <a href="https://www.imdb.com/name/nm4365701/?ref_=tt_ov_dr" target="_blank" rel="noopener noreferrer">Shasha Nakhai </a>and <a href="https://www.imdb.com/name/nm3083808/?ref_=ttfc_fc_dr2" target="_blank" rel="noopener noreferrer">Rich Williamson</a>, and associate producer <a href="https://www.imdb.com/name/nm11814274/?ref_=ttfc_fc_cr4" target="_blank" rel="noopener noreferrer">Kenya-Jade Pinto</a>.\n \n \n \n "You are all such beautiful people and it was a real blessing to be able to share the magic we all created on set together. I can't thank you all enough to saying yes and giving me the opportunity to be part of a film that highlighted my community. Scarborough is and will forever be HOME."\n \n \n <p style="font-weight: 400;">On the television side of things, Toronto Film School faculty and alumni are celebrating seven big wins.</p>\n \n \n <img class="aligncenter wp-image-25225 size-medium" src="https://uat.tfs.staging.poundandgrain.ca/app/uploads/2023/03/TFS_AndrewBarnsley_Jann_0401-1-670x458-1.jpg" alt="Jann, TV show produced by Andrew Barnsley" width="670" height="458" />\n \n \n \n <a href="https://www.imdb.com/title/tt9080978/?ref_=fn_al_tt_1" target="_blank" rel="noopener noreferrer"><em>Jann</em></a>, the hit CTV comedy executive produced by <a href="https://staging.torontofilmschool.ca/blog/andrew-barnsley-celebrates-schitts-creeks-historic-night-at-emmys/" target="_blank" rel="noopener noreferrer">TFS's Emmy-winning</a> President <a href="https://staging.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">Andrew Barnsley</a>, took home the award for <a href="https://www.academy.ca/2022/michael-buble-2/" target="_blank" rel="noopener noreferrer">Best Guest Performance in a Comedy</a> (<a href="https://www.imdb.com/name/nm0117826?ref_=ttawd_awd_9" target="_blank" rel="noopener noreferrer">Michael Bublé</a>). The show, which stars Canadian singer-songwriter <a href="https://www.imdb.com/name/nm0033989?ref_=ttawd_awd_5" target="_blank" rel="noopener noreferrer">Jann Arden</a> as a fictionalized version of herself, was also nominated for: <a href="https://www.academy.ca/2022/jann-2/" target="_blank" rel="noopener noreferrer">Best Comedy Series</a>, <a href="https://www.academy.ca/2022/jann-arden-6/" target="_blank" rel="noopener noreferrer">Best Lead Actress in Comedy</a>,<a href="https://www.academy.ca/2022/jennica-harper-3/" target="_blank" rel="noopener noreferrer"> Best Writing in a Comedy</a>, and <a href="https://www.academy.ca/2022/lisa-parasyn-3/" target="_blank" rel="noopener noreferrer">Best Achievement in Casting</a>.\n \n \n \n \n \n <img class="aligncenter wp-image-25226 size-full" src="https://uat.tfs.staging.poundandgrain.ca/app/uploads/2022/04/TFS_WFT_MaxineClement_0404-1.jpg" alt="Sort Of, new CBC series" width="650" height="450" />\n \n \n \n <a href="https://www.imdb.com/title/tt15221950/?ref_=nm_flmg_dr_1" target="_blank" rel="noopener noreferrer"><em>Sort Of</em></a>, the "big-hearted" new CBC series about a gender-fluid millennial who straddles various identities, took home three Canadian Screen Award trophies – <a href="https://www.academy.ca/2022/sort-of/" target="_blank" rel="noopener noreferrer">Best Comedy Series</a>, <a href="https://www.academy.ca/2022/bilal-baig/" target="_blank" rel="noopener noreferrer">Best Writing in a Comedy</a> and <a href="https://www.academy.ca/2022/jessica-carter/" target="_blank" rel="noopener noreferrer">Best Achievement in Make-up</a>. Class of 2018 <a href="https://staging.torontofilmschool.ca/programs/writing-for-film-tv-diploma/" target="_blank" rel="noopener noreferrer">Writing for Film & Television</a> grad <a href="https://www.imdb.com/name/nm9588953/?ref_=fn_al_nm_1" target="_blank" rel="noopener noreferrer">Maxine Clement</a> currently works on the show as an assistant to <a href="https://www.imdb.com/name/nm0277116/" target="_blank" rel="noopener noreferrer">Fab Filippo</a>, one of <em>Sort Of's</em> co-creators, writers, directors and producers.\n \n \n \n \n \n <img class="aligncenter wp-image-25160 size-full" src="https://uat.tfs.staging.poundandgrain.ca/app/uploads/2022/04/TFS_FP_MousaWorkinMoms_0401.jpg" alt="Working Moms poster and Mousa Ghodratifard" width="650" height="450" />\n \n \n \n <a href="https://www.imdb.com/name/nm5730287/?ref_=fn_al_nm_1" target="_blank" rel="noopener noreferrer">Mousa Ghodratifard,</a> who graduated from TFS's <a href="https://staging.torontofilmschool.ca/programs/film-production-diploma/" target="_blank" rel="noopener noreferrer">Film Production</a> program in 2013, worked as a 3rd Assistant Director on <a href="https://www.imdb.com/title/tt6143796/?ref_=fn_al_tt_1" target="_blank" rel="noopener noreferrer"><em>Workin' Moms</em></a>, which won the 2022 Canadian Screen Award for <a href="https://www.academy.ca/2022/aleysa-young-4/" target="_blank" rel="noopener noreferrer">Best Direction of a Comedy</a> – one of seven nominations the CBC show was nominated for this year.\n \n \n \n \n \n <img class="aligncenter wp-image-25244 size-medium" src="https://uat.tfs.staging.poundandgrain.ca/app/uploads/2023/03/TFS_JhanikBullard_GarimaSood_Coroner_0411-670x393-1.jpg" alt="Coroner, TV series" width="670" height="393" />\n \n \n \n <a href="https://www.imdb.com/title/tt8593252/" target="_blank" rel="noopener noreferrer"><em>Coroner</em></a>, which was nominated in 10 different categories this year, won the 2022 Canadian Screen Award for <a href="https://www.academy.ca/2022/tamara-podemski-3/" target="_blank" rel="noopener noreferrer">Best Guest Performance</a> (<a href="https://www.imdb.com/name/nm0687947/?ref_=fn_al_nm_1" target="_blank" rel="noopener noreferrer">Tamara Podemski</a>). Both Class of 2018 <a href="https://staging.torontofilmschool.ca/programs/writing-for-film-tv-diploma/" target="_blank" rel="noopener noreferrer">Writing for Film & Television</a> alum <a href="https://www.imdb.com/name/nm9544818/?ref_=nv_sr_srsg_0" target="_blank" rel="noopener noreferrer">Jhanik Bullard</a> and <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> grad Garima Sood worked on the set of the CBC procedural crime drama – Sood as the 2<sup>nd</sup> Assistant Camera and Bullard as the Showrunner's Assistant.\n \n \n \n \n \n <img class="aligncenter wp-image-25228 size-medium" src="https://uat.tfs.staging.poundandgrain.ca/app/uploads/2023/03/TFS_ACT_ChrisKellyHeadshot_0708-copy-670x393-1.jpg" alt="Chris Kelly, 2018 Acting Grad" width="670" height="393" />\n \n \n \n Toronto Film School alumnus <a href="https://pro.imdb.com/name/nm9544484?s=92b9132a-4d72-b787-ecc5-423f5e68625f&site_preference=normal" target="_blank" rel="noopener noreferrer">Chris Kelly</a>, who graduated from the <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>program in 2018, worked as an Associate Producer for the CBC's four-time Canadian Screen Award-nominated coverage of the <a href="https://www.cbc.ca/sports/olympics/summer" target="_blank" rel="noopener noreferrer">2020 Tokyo Summer Games</a>, which won the award for <a href="https://www.academy.ca/2022/andi-petrillo-3/" target="_blank" rel="noopener noreferrer">Best Sports Host</a> (Andi Petrillo).\n \n \n \n \n \n """ |
post_title | "TFS Faculty and Alumni Celebrate Contributions to Canadian Screen Award Winning Projects"
|
post_excerpt | "" |
post_status | "publish"
|
comment_status | "closed"
|
ping_status | "open"
|
post_password | "" |
post_name | "tfs-faculty-and-alumni-celebrate-contributions-to-canadian-screen-award-winning-projects"
|
to_ping | "" |
pinged | "" |
post_modified | "2023-04-04 19:08:33"
|
post_modified_gmt | "2023-04-04 19:08:33"
|
post_content_filtered | "" |
post_parent | 0
|
guid | "https://uat.tfs.staging.poundandgrain.ca/?p=25223"
|
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/tfs-faculty-and-alumni-celebrate-contributions-to-canadian-screen-award-winning-projects/"
|
USER | "forge"
|
HOME | "/home/forge"
|
HTTP_REFERER | "https://uat.tfs.staging.poundandgrain.ca/blog/tfs-faculty-and-alumni-celebrate-contributions-to-canadian-screen-award-winning-projects"
|
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 | "57556"
|
REMOTE_ADDR | "216.73.216.146"
|
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 | 1755097220.0624
|
REQUEST_TIME | 1755097220
|
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"
|