*
* @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" => "february-spotlight-amazing-tfs-alumni-accomplishments" "category_name" => "blog" ] |
query_string | "name=february-spotlight-amazing-tfs-alumni-accomplishments&category_name=blog"
|
request | "blog/february-spotlight-amazing-tfs-alumni-accomplishments"
|
matched_rule | "(.+?)/([^/]+)(?:/([0-9]+))?/?$"
|
matched_query | "category_name=blog&name=february-spotlight-amazing-tfs-alumni-accomplishments&page="
|
did_permalink | true
|
Key | Value |
query | array:3 [ "page" => "" "name" => "february-spotlight-amazing-tfs-alumni-accomplishments" "category_name" => "blog" ] |
query_vars | array:66 [ "page" => 0 "name" => "february-spotlight-amazing-tfs-alumni-accomplishments" "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 | 24865
|
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 = 'february-spotlight-amazing-tfs-alumni-accomplishments' 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 | 24865
|
post_author | "43"
|
post_date | "2022-02-28 20:20:04"
|
post_date_gmt | "2022-02-28 20:20:04"
|
post_content | """ At Toronto Film School, we’re continually astounded by the amazing accomplishments of our awesome alumni – be it working on Oscar-nominated films, appearing in Super Bowl ads, winning screenwriting fellowships, or directing Team Canada Olympic ads.\n \n \n \n Here are some of February’s standout highlights from Toronto Film School’s talented community of graduates:\n \n \n \n <img class="aligncenter wp-image-24866 size-medium" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2022/02/TFS_NightmareAlleyPoster_0225.jpg" alt="Nightmare Alley movie poster" width="360" height="526" />\n \n \n \n A trio of alumni including <a href="https://www.imdb.com/name/nm9318682/?ref_=fn_al_nm_1" target="_blank" rel="noopener noreferrer">Laura Loaiza</a> (<a href="https://www.torontofilmschool.ca/programs/film-production-diploma/" target="_blank" rel="noopener noreferrer">Film Production</a> ’17), <a href="https://www.imdb.com/name/nm3837660/" target="_blank" rel="noopener noreferrer">Spencer Gray</a> (<a href="https://www.torontofilmschool.ca/programs/film-production-diploma/" target="_blank" rel="noopener noreferrer">Film Production</a>’08) and <a href="https://www.imdb.com/name/nm10674871/?ref_=fn_al_nm_1" target="_blank" rel="noopener noreferrer">Kim Janveau</a> (<a href="https://www.torontofilmschool.ca/programs/acting-for-film-tv-and-the-theatre-diploma/" target="_blank" rel="noopener noreferrer">Acting for Film, TV & the Theatre</a> ’19) worked on <a href="https://en.wikipedia.org/wiki/Guillermo_del_Toro" target="_blank" rel="noopener noreferrer">Guillermo del Toro</a>’s Academy Award-nominated film, <em><a href="https://www.imdb.com/title/tt7740496/?ref_=nm_flmg_act_1" target="_blank" rel="noopener noreferrer">Nightmare Alley</a> </em>– Loaiza as a camera trainee, Gray as a data management technician and Janveau as an actor. The film, which stars <a href="https://www.imdb.com/name/nm0000949/?ref_=tt_ov_st" target="_blank" rel="noopener noreferrer">Cate Blanchett</a>, <a href="https://www.imdb.com/name/nm0177896/?ref_=tt_ov_st" target="_blank" rel="noopener noreferrer">Bradley Cooper</a> and <a href="https://www.imdb.com/name/nm0001057/?ref_=tt_ov_st" target="_blank" rel="noopener noreferrer">Toni Collette,</a> has been nominated for four Oscars, including Best Motion Picture, Cinematography, Production Design and Costume Design.\n \n <span data-contrast="auto"> </span>\n \n \n \n \n \n <img class="aligncenter wp-image-24867 size-medium" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2022/02/TFS_FP_ShreeharshaRaoCruella_0225.jpg" alt="Cruella movie poster, Shreeharsha Rao" width="670" height="393" />\n \n \n \n <span data-contrast="none">Class of 2004 <a href="https://www.torontofilmschool.ca/programs/film-production-diploma/" target="_blank" rel="noopener noreferrer">Film Production</a> grad <a href="https://www.torontofilmschool.ca/blog/tfs-alumnus-helps-bring-oscar-nominated-the-one-and-only-ivan-visual-effects-to-life/" target="_blank" rel="noopener noreferrer">Shreeharsha Rao</a> continues his three-year streak of working on Oscar-nominated films for his work on two-time 2022 nominee, <em><a href="https://www.imdb.com/title/tt3228774/" target="_blank" rel="noopener noreferrer">Cruella</a></em>. Rao worked as the Central Production Manager at <a href="https://www.mpcfilm.com/filmography/film/cruella" target="_blank" rel="noopener noreferrer">MPC Film</a>, the company that provided VFX for the film. He also worked on the 2020 Oscar-nominated VFX team behind <em><a href="https://www.uphe.com/movies/1917" target="_blank" rel="noopener noreferrer">1917</a> </em>and 2021-nominated <em><a href="https://disneyplusoriginals.disney.com/movie/the-one-and-only-ivan" target="_blank" rel="noopener noreferrer">The One and Only Ivan</a>. </em><em>Cruella</em> was nominated in two categories for the upcoming 2022 Oscars: Costume Design and Makeup & Hairstyling.</span>\n \n \n \n \n \n \n <p style="text-align: center;"><iframe title="YouTube video player" src="https://www.youtube.com/embed/ATvOK47mslw" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>\n \n \n <a href="https://www.instagram.com/kearstenjohansson/" target="_blank" rel="noopener noreferrer">Kearsten Johansson</a>, who not only teaches <a href="https://www.torontofilmschool.ca/programs/acting-for-film-tv-and-the-theatre-diploma/" target="_blank" rel="noopener noreferrer">Acting for Film, TV & the Theatre</a> at TFS but is also a 2014 graduate of the program, recently appeared in the above Roku commercial during the Super Bowl.\n \n \n \n \n \n \n \n <img class="aligncenter wp-image-24828 size-medium" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2022/02/TFS_ACT_KearstenJohanssonChadTailor_0217.jpg" alt="Kearsten Johansson and Chad Tailor" width="670" height="393" />\n \n \n \n Johansson also teamed up with fellow <a href="https://www.torontofilmschool.ca/programs/acting-for-film-tv-and-the-theatre-diploma/" target="_blank" rel="noopener noreferrer">Acting for Film, TV & the Theatre</a> alumnus-turned instructor <a href="https://www.instagram.com/chadtailor/" target="_blank" rel="noopener noreferrer">Chad Tailor</a> (producer) on her recently wrapped solo directorial debut, <em><a href="https://www.instagram.com/strawman.film/" target="_blank" rel="noopener noreferrer">Straw Man</a> – </em>a short featuring a cast and crew comprising 99 per cent of TFS students and alumni. Read more about that project here: <a href="https://bit.ly/3I1GI7n" target="_blank" rel="noopener noreferrer">https://bit.ly/3I1GI7n</a>\n \n \n \n \n \n \n \n <img class="aligncenter wp-image-24868 size-medium" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2022/02/TFS_FP_CheyenneLynnFellowship_0225.jpg" alt="Work It Out Wombats!, Cheyenne "Casper" Lynn" width="670" height="393" />\n \n \n \n Class of 2019 Film Production grad <a href="https://www.instagram.com/wolfgirl2525/" target="_blank" rel="noopener noreferrer">Cheyenne "Casper" Lynn</a> was recently selected as one of five winners of the <a href="/kidscreen.com/2022/02/23/gbh-kids-picks-five-writers-for-new-scriptwriting-fellowship" target="_blank" rel="noopener noreferrer">GBH Kids Scriptwriting Fellowship</a> – a program created by Boston pubcaster GBH that aims to bring BIPOC creatives into the script development process on kids shows, while providing a hands-on learning experience. Lynn and their fellow winners will now have the opportunity to contribute to the up-and-coming new animated series <em><a href="https://www.pbs.org/about/about-pbs/blogs/news/pbs-kids-announces-new-series-work-it-out-wombats-debuting-winter-2023/" target="_blank" rel="noopener noreferrer">Work It Out Wombats!</a></em> (2023)<span data-ccp-props="{"201341983":0,"335559739":160,"335559740":259}">. Lynn previously won one of five 2020 <a href="https://torontoscreenwritingconference.com/magee-tv-diverse-screenwriters-mentorship-award/" target="_blank" rel="noopener noreferrer">Magee TV Diverse Screenwriters Mentorship Awards</a>. Read more about that experience here: <a href="https://bit.ly/2YK2mYo" target="_blank" rel="noopener noreferrer">https://bit.ly/2YK2mYo</a></span>\n \n \n \n \n <p style="text-align: center;">\</p>\n <p style="text-align: center;"><iframe title="YouTube video player" src="https://www.youtube.com/embed/-uKS1_mvaFg" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>\n \n \n <a href="https://www.instagram.com/tim_myles/?hl=en" target="_blank" rel="noopener noreferrer">Tim Myles</a> (<a href="https://www.torontofilmschool.ca/programs/acting-for-film-tv-and-the-theatre-diploma/" target="_blank" rel="noopener noreferrer">Acting for Film, TV & the Theatre</a> ’16) recently followed up his <a href="https://www.torontofilmschool.ca/blog/tfs-honours-day-for-truth-reconciliation-with-screening-of-little-bird/" target="_blank" rel="noopener noreferrer">TIFF-debuted short film, <em>Little Bird</em></a>, by stepping into the 2<sup>nd</sup> unit director’s chair for the above stunning <a href="https://www.youtube.com/watch?v=63-mthU68eA" target="_blank" rel="noopener noreferrer">Lulu Lemon/Team Canada commercial</a> for the 2022 Winter Olympics.\n \n \n \n \n \n \n \n <img class="aligncenter wp-image-24869 size-medium" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2022/02/TFS_Violation_FangoriaChainsawAward_0225.jpg" alt="Fangoria Chainsaw Awards nominee Violation" width="670" height="393" />\n \n \n \n <em><a href="https://www.imdb.com/title/tt12801814/?ref_=nm_flmg_asst_3" target="_blank" rel="noopener noreferrer">Violation</a></em>, the feature film debut of Toronto Film School instructors <a href="https://www.imdb.com/name/nm3025035/" target="_blank" rel="noopener noreferrer">Madeleine Sims-Fewer</a> and <a href="https://www.imdb.com/name/nm2617617/?ref_=fn_al_nm_1" target="_blank" rel="noopener noreferrer">Dusty Mancinelli</a>, was <a href="https://dailydead.com/nominations-for-fangorias-2022-chainsaw-awards-include-candyman-chucky-the-stylist/" target="_blank" rel="noopener noreferrer">recently nominated in several different categories</a> at <a href="https://www.fangoria.com/" target="_blank" rel="noopener noreferrer">Fangoria magazine</a>’s upcoming <a href="https://www.fangoria.com/original/chainsaw-awards-2022/" target="_blank" rel="noopener noreferrer">Chainsaw Awards</a>, including Best Streaming-Premiere Movie, Best Screenplay and Best Lead Performance for Sims-Fewer. The film’s crew featured several TFS alumni, including <a href="https://www.imdb.com/name/nm9929536/" target="_blank" rel="noopener noreferrer">Marie-Soleil Kielec</a> as 1<sup>st</sup> AD, <a href="https://www.imdb.com/name/nm8731487/" target="_blank" rel="noopener noreferrer">Becky Yeboah</a> as Line Producer, <a href="https://www.imdb.com/name/nm9278350/?ref_=fn_al_nm_1" target="_blank" rel="noopener noreferrer">Artem Mykhailetskyi</a> as Assistant Camera, <a href="https://www.imdb.com/name/nm10810496/?ref_=nv_sr_srsg_2" target="_blank" rel="noopener noreferrer">Noemie Spor</a> as Production Coordinator, as well as Jay Graves and Alex Nicolescu. Read about Kielec’s experience shooting the film here: <a href="https://bit.ly/33zxzjn" target="_blank" rel="noopener noreferrer">https://bit.ly/33zxzjn</a>\n \n \n \n \n \n \n \n <img class="aligncenter wp-image-24870 size-medium" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2022/02/TFS_WFT_AndrewDiPardoMindsEye_0225.jpg" alt="Andrew Di Pardo’s documentary series, The Minds Eye" width="670" height="393" />\n \n \n \n Class of 2015 <a href="https://www.torontofilmschool.ca/programs/writing-for-film-tv-diploma/" target="_blank" rel="noopener noreferrer">Writing for Film & Television</a> grad <a href="http://www.andrewdipardofilms.com/" target="_blank" rel="noopener noreferrer">Andrew Di Pardo</a>’s upcoming, 3-episode limited documentary series, <em><a href="https://www.imdb.com/title/tt12752822/?ref_=nm_flmg_dr_1" target="_blank" rel="noopener noreferrer">The Minds Eye</a></em>, is scheduled to debut on Vimeo in March. Di Pardo was also recently named a <a href="https://www.torontofilmschool.ca/blog/alumnus-lands-job-as-covid-19-set-monitor-on-fox-medical-drama-the-resident/" target="_blank" rel="noopener noreferrer">Key Set Monitor</a> at Walt Disney’s Atlanta studios, and worked as 1<sup>st</sup> AD on a short film called <a href="https://www.imdb.com/title/tt15838138/?ref_=nm_flmg_prd_1" target="_blank" rel="noopener noreferrer">DOXXED</a>, featuring <a href="https://www.imdb.com/name/nm1854211/?ref_=tt_cl_t_2" target="_blank" rel="noopener noreferrer">Charlie Barnett</a> (<a href="https://www.imdb.com/title/tt2193021/?ref_=nm_flmg_act_9" target="_blank" rel="noopener noreferrer">Arrow</a>, <a href="https://www.imdb.com/title/tt9288826/?ref_=nm_flmg_act_3" target="_blank" rel="noopener noreferrer">Ordinary Joe</a>). You can read more about his post-TFS story here: <a href="https://bit.ly/33FlUAr" target="_blank" rel="noopener noreferrer">https://bit.ly/33FlUAr</a>\n \n \n <p style="text-align: center;"><em>***Are you an alumnus or student who would like to share your latest accomplishment with the TFS community? If so, please reach out to our Alumni Relations Coordinator at <u><a href="mailto:alumni@torontofilmschool.ca">alumni@torontofilmschool.ca</a></u></em></p>\n \n \n \n \n \n \n """ |
post_title | "February Spotlight | Amazing TFS Alumni Accomplishments"
|
post_excerpt | "" |
post_status | "publish"
|
comment_status | "closed"
|
ping_status | "open"
|
post_password | "" |
post_name | "february-spotlight-amazing-tfs-alumni-accomplishments"
|
to_ping | "" |
pinged | "" |
post_modified | "2023-03-27 21:07:10"
|
post_modified_gmt | "2023-03-27 21:07:10"
|
post_content_filtered | "" |
post_parent | 0
|
guid | "https://dev.tfs.staging.poundandgrain.ca/?p=24865"
|
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/february-spotlight-amazing-tfs-alumni-accomplishments/"
|
USER | "forge"
|
HOME | "/home/forge"
|
HTTP_REFERER | "https://dev.tfs.staging.poundandgrain.ca/blog/february-spotlight-amazing-tfs-alumni-accomplishments"
|
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 | "44179"
|
REMOTE_ADDR | "18.226.88.141"
|
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 | 1731846956.0835
|
REQUEST_TIME | 1731846956
|
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"
|