*
* @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" => "april-spotlight-amazing-tfs-alumni-accomplishments" "category_name" => "blog" ] |
query_string | "name=april-spotlight-amazing-tfs-alumni-accomplishments&category_name=blog"
|
request | "blog/april-spotlight-amazing-tfs-alumni-accomplishments"
|
matched_rule | "(.+?)/([^/]+)(?:/([0-9]+))?/?$"
|
matched_query | "category_name=blog&name=april-spotlight-amazing-tfs-alumni-accomplishments&page="
|
did_permalink | true
|
Key | Value |
query | array:3 [ "page" => "" "name" => "april-spotlight-amazing-tfs-alumni-accomplishments" "category_name" => "blog" ] |
query_vars | array:66 [ "page" => 0 "name" => "april-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 | 25322
|
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 = 'april-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 | 25322
|
post_author | "43"
|
post_date | "2022-04-29 13:10:52"
|
post_date_gmt | "2022-04-29 13:10:52"
|
post_content | """ <p style="font-weight: 400;">At Toronto Film School, we’re continually astounded by the amazing accomplishments of our awesome alumni – be it landing roles on Epix new television shows, working on blockbuster video games, or being hired to work for a Major League Baseball team.</p>\n \n <p style="font-weight: 400;">Here are some of April’s standout highlights from Toronto Film School’s talented community of graduates:</p>\n \n \n <img class="alignnone size-medium wp-image-25323 aligncenter" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2022/04/TFS_ACT_AdrianaVasquez_BillyTheKid_0424.jpg" alt="" width="670" height="393" />\n \n \n <p style="font-weight: 400;">Class of 2015 <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 <strong><a href="https://www.imdb.com/name/nm6969724/?ref_=ttfc_fc_cl_t47" target="_blank" rel="noopener noreferrer">Adriana Vasquez</a></strong> booked a role in an episode of the first season <a href="https://www.epix.com/" target="_blank" rel="noopener noreferrer">Epix</a>’s new original series, <a href="https://www.imdb.com/title/tt14586544/?ref_=nm_flmg_act_2" target="_blank" rel="noopener noreferrer"><em>Billy the Kid.</em></a></p>\n \n <p style="font-weight: 400;">Described as an epic romantic adventure series based on the life of the infamous American outlaw, Vasquez plays ‘Juliana’ in the show – one of two Mexican sisters the title character has a very interesting encounter with in Episode 5.</p>\n \n <p style="font-weight: 400;">Vasquez characterized her experience working on <em>Billy the Kid</em> with such production companies as <a href="https://www.mgm.com/" target="_blank" rel="noopener noreferrer">MGM</a>, <a href="https://amblin.com/" target="_blank" rel="noopener noreferrer">Amblin</a> and <a href="https://www.epix.com/" target="_blank" rel="noopener noreferrer">Epix</a> as “a dream come true.”</p>\n \n <p style="font-weight: 400;">“Everyone in the cast and crew was a delight to work with, and it was a real pleasure for me to have brought to life a character written by the very same genius mind that created the series Vikings, Michel Hirst,” she added.</p>\n \n <p style="font-weight: 400;">“I also loved to see how much Latinx representation there was on that episode. You’ll hear lots of Spanish in it and, as a Latina actress, that adds a whole different meaning.”</p>\n \n <p style="font-weight: 400;">In addition to Billy the Kid, Vasquez has also written, produced and starred in three short films since graduating from TFS – two of which, <em>Self-Exile and </em><a href="https://www.imdb.com/title/tt16348466/?ref_=nm_flmg_act_1" target="_blank" rel="noopener noreferrer"><em>A Severe Case of Prudery</em></a><em><u>,</u></em> are soon to be released at various festivals around the world.</p>\n \n \n \n \n <img class="alignnone size-medium wp-image-25347" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2022/04/TFS_FP_TaliaFaubert_McGillivrayGroup_0426.jpg" alt="" width="670" height="393" />\n \n \n <p style="font-weight: 400;"><strong><a href="https://www.linkedin.com/in/talia-faubert-97008218b/?originalSubdomain=ca" target="_blank" rel="noopener noreferrer">Talia Faubert</a></strong>, who graduated from the <a href="https://www.torontofilmschool.ca/programs/film-production-diploma/" target="_blank" rel="noopener noreferrer">Film Production</a> program in 2020, recently parlayed a part-time production coordinating contract with the <a href="https://scottmcgillivray.com/mcgillivray-group/" target="_blank" rel="noopener noreferrer">McGillivray Group</a> into a full-time gig as a Branded Content Coordinatorfor the company.</p>\n \n <p style="font-weight: 400;">Founded by HGTV host <a href="https://en.wikipedia.org/wiki/Scott_McGillivray" target="_blank" rel="noopener noreferrer">Scott McGillivray</a>, the McGillivray Group is a collective of expert marketers, producers, and entrepreneurs who build and elevate brands through talent development and marketing, media production services, and strategic branded partnerships and programs.</p>\n \n <p style="font-weight: 400;">In her new role, Faubert will be working on commercials, web series and podcasts, as well as providing casting assistance, doing some post-production coordinating, assisting with podcast and social media tasks, and helping with the project development and pre-production stages of McGillivray’s slate of projects.</p>\n \n <p style="font-weight: 400;">“Working with the McGillivray Group has been a lovely experience and having the opportunity to learn and grow as a filmmaker in such a supportive and collaborative team environment has been incredible,” Faubert said of her experience so far.</p>\n \n <p style="font-weight: 400;">“I have immensely enjoyed the opportunity to collaborate with such a well-versed team and am looking forward to seeing and experiencing future endeavors.”</p>\n \n <p style="font-weight: 400;">Faubert said the training she received at TFS has been helpful in allowing her to have a well-rounded point of view and understanding of the many aspects and niches of filmmaking – whether it be film, television, commercial, or lifestyle.</p>\n \n <p style="font-weight: 400;">“Having this understanding is not only an asset. but also allows me to adapt to various situations,” she said. “Specifically for my interest in production, TFS really helped me understand the workflow of the 5 stages of production, as well as the various paperwork and planning and preparedness, which was a great asset when entering the workforce.”</p>\n \n <p style="font-weight: 400;">In addition to her work at McGillivray Group, Faubert is also keeping busy with a number of side projects, including a documentary she’s directing and producing that’s currently in post-production.</p>\n \n <p style="font-weight: 400;">“I enjoy continuing to explore new opportunities and continuously growing as a filmmaker,” she said. “I’m lucky to have the opportunity to do so, and to be surrounded by so many talented friends and filmmakers.”</p>\n \n \n \n \n <img class="alignnone size-medium wp-image-25353" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2022/04/TFS_VGD_GarrettMayFarCry6_0428.jpg" alt="" width="670" height="393" />\n \n \n <p style="font-weight: 400;">2018 <a href="https://www.torontofilmschool.ca/programs/video-game-design-development/">Video Game Design & Development</a> graduates <strong><a href="https://www.linkedin.com/in/garrett-may-406138113/?originalSubdomain=ca">Garrett May</a></strong> and <strong><a href="https://www.linkedin.com/in/tobias-bauer/?originalSubdomain=ca">Tobias Bauer</a></strong> both worked on <a href="https://www.ubisoft.com/en-ca/game/far-cry/far-cry-6"><em>Far Cry 6</em></a>– the sixth instalment in <a href="https://www.ubisoft.com/en-us/">Ubisoft</a>’s popular action-adventure, first-person shooter game. May worked as an Associate DevTest Team Lead on the game, while Bauer worked as an AI DevTester.</p>\n \n <p style="font-weight: 400;">As the Associate DevTest Team Lead, May said he helped lead the content DevTest teams, getting the chance to influence the world, missions, and cinematics of the game, and helped to push for higher quality and bug-free content.</p>\n \n <p style="font-weight: 400;">“I had an excellent experience working on <em>Far Cry 6</em>. I got into games to work on the biggest and most ambitious projects in the industry and I was fortunate enough to land a role at Ubisoft Toronto with the talented <em>Far Cry 6</em> team,” he said of the experience.</p>\n \n <p style="font-weight: 400;">“We definitely missed out on the in-person celebrations when the game launched, but I’m very proud of what the team was able to produce.”</p>\n \n <p style="font-weight: 400;">May is now currently working as Assistant Producer on <em><a href="https://www.theofficesomehowwemanagegame.com/">The Office: Somehow We Manage</a></em> – a mobile game based on of the hit NBC show.</p>\n \n \n \n \n <img class="alignnone size-medium wp-image-25324 aligncenter" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2022/04/TFS_FP_FrancescoPetitti_BacktoBasketball_0424.jpg" alt="" width="670" height="393" />\n <p style="font-weight: 400;"><em> </em></p>\n <p style="font-weight: 400;"><strong><a href="https://www.linkedin.com/in/francescopetitti/?originalSubdomain=it" target="_blank" rel="noopener noreferrer">Francesco Petitti</a></strong>, a 2017 <a href="https://www.torontofilmschool.ca/programs/film-production-diploma/" target="_blank" rel="noopener noreferrer">Film Production</a> graduate, recently worked as a camera operator on <a href="https://www.euroleaguebasketball.net/" target="_blank" rel="noopener noreferrer">EuroLeague Basketball’</a>s Amazon Prime docu-series<a href="https://www.primevideo.com/detail/Back-to-Basketball/0KKK42KWJ2ISYWLHCERZM7GZRL" target="_blank" rel="noopener noreferrer"> <em>Back to Basketball</em></a>.</p>\n \n <p style="font-weight: 400;">Released earlier this year, the two-episode series follows Europe’s top teams from the cancellation of the competition in March 2020 due to the COVID-19 pandemic, to the crowning of the 2020-21 champion at the Turkish Airlines EuroLeague Final Four. Congratulations, Francesco!</p>\n \n \n \n \n <img class="alignnone size-medium wp-image-25326 aligncenter" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2022/04/TFS_VGD_GarrettMay_BlueJays_0424.jpg" alt="" width="670" height="393" />\n \n \n <p style="font-weight: 400;"><a href="https://www.linkedin.com/in/wynandvanl/?originalSubdomain=ca" target="_blank" rel="noopener noreferrer"><strong>Wynand vanLuttikhuizen</strong></a>, who graduated from the <a href="https://www.torontofilmschool.ca/programs/graphic-design-interactive-media-diploma/" target="_blank" rel="noopener noreferrer">Graphic Design & Interactive Media</a> program in 2019, was recently hired as a graphic designer for the <a href="https://www.mlb.com/bluejays" target="_blank" rel="noopener noreferrer">Toronto Blue Jays</a> baseball team. Congratulations, Wynand!</p>\n \n \n \n \n <img class="alignnone size-medium wp-image-25327 aligncenter" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2022/04/TFS_FP_GoodSam_0425.jpg" alt="" width="670" height="393" />\n \n \n <p style="font-weight: 400;">Class of 2012 <a href="https://www.torontofilmschool.ca/programs/film-production-diploma/" target="_blank" rel="noopener noreferrer">Film Production</a> alumnus <strong><a href="https://www.imdb.com/name/nm5052063/?ref_=ttfc_fc_cr41" target="_blank" rel="noopener noreferrer">Heather Young</a></strong> works as the Assistant Production Manager on CBS’s new medical drama, <em><a href="https://www.imdb.com/title/tt11055882/" target="_blank" rel="noopener noreferrer">Good Sam</a></em>. The show follows Dr. Sam Griffith (<a href="https://www.imdb.com/name/nm0124208/?ref_=tt_ov_st" target="_blank" rel="noopener noreferrer">Sophia Bush</a>), a gifted heart surgeon who excels in her new leadership role as chief of surgery after her renowned boss, Dr. Rob "Griff" Griffith (<a href="https://www.imdb.com/name/nm0005042/?ref_=tt_ov_st" target="_blank" rel="noopener noreferrer">Jason Isaacs</a>), falls into a coma.</p>\n \n \n \n <p style="font-weight: 400;"><img class="alignnone size-medium wp-image-25328 aligncenter" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2022/04/Jean.jpg" alt="" width="670" height="425" /></p>\n \n <p style="font-weight: 400;"><a href="https://www.torontofilmschool.ca/programs/film-production-diploma/" target="_blank" rel="noopener noreferrer">Film Production</a> graduates <strong><a href="https://www.imdb.com/name/nm9633445/?ref_=ttfc_fc_cr18" target="_blank" rel="noopener noreferrer">Cesar Karraa</a> </strong>(2018) and <strong><a href="https://www.imdb.com/name/nm9323253/?ref_=ttfc_fc_cr19" target="_blank" rel="noopener noreferrer">Mandie Kingsbury</a> </strong>(2017) worked as camera operators on <a href="https://www.imdb.com/title/tt19389270/" target="_blank" rel="noopener noreferrer"><em>Steadfast: The Jean Augustine Story</em></a><em>, </em>an upcoming documentary film telling the story of the Honourable Jean Augustine. Augustine was the first African-Canadian woman to be elected to Canada’s House of Commons as a Member of Parliament, and brought forward the motion to officially recognize February as Black History Month in Canada.</p>\n \n <p style="text-align: center;"><strong>Faculty News</strong></p>\n \n \n <img class="alignnone size-full wp-image-25334 aligncenter" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2022/04/TFS_FP_JeffreyStJules_CinemaOfSleep_0425.jpg" alt="" width="650" height="450" />\n \n \n <p style="font-weight: 400;">Film Production professor <strong><a href="https://www.imdb.com/name/nm1729218/" target="_blank" rel="noopener noreferrer">Jeffrey St. Jules</a></strong> recently took home the top prize from the 21st annual <a href="https://whistlerfilmfestival.com/" target="_blank" rel="noopener noreferrer">Whistler Film Festival</a>.</p>\n \n <p style="font-weight: 400;">St. Jules’ psychological thriller, <em><a href="https://www.imdb.com/title/tt10293932/?ref_=nm_flmg_wr_1" target="_blank" rel="noopener noreferrer">Cinema of Sleep</a>,</em> won the vaunted Borsos Award for <a href="https://en.wikipedia.org/wiki/Borsos_Competition" target="_blank" rel="noopener noreferrer">Best Canadian Feature Film</a> – along with its $15,000 cash prize and a $20,000 post-production prize.</p>\n \n <p style="font-weight: 400;">Written and directed by St. Jules, <em>Cinema of Sleep </em>is a psychological thriller about a Nigerian refugee whose plans to reunite with his family in the United States is threatened when a mysterious woman in need of help shows up at the hotel room where he’s waiting for his asylum claim to be processed.</p>\n \n \n \n <p style="font-weight: 400; 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 </em><em><u><a href="mailto:alumni@torontofilmschool.ca">alumni@torontofilmschool.ca</a></u></em></p>\n \n <h1></h1>\n """ |
post_title | "April Spotlight | Amazing TFS Alumni Accomplishments"
|
post_excerpt | "" |
post_status | "publish"
|
comment_status | "closed"
|
ping_status | "open"
|
post_password | "" |
post_name | "april-spotlight-amazing-tfs-alumni-accomplishments"
|
to_ping | "" |
pinged | "" |
post_modified | "2023-03-27 21:07:05"
|
post_modified_gmt | "2023-03-27 21:07:05"
|
post_content_filtered | "" |
post_parent | 0
|
guid | "https://dev.tfs.staging.poundandgrain.ca/?p=25322"
|
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/april-spotlight-amazing-tfs-alumni-accomplishments/"
|
USER | "forge"
|
HOME | "/home/forge"
|
HTTP_REFERER | "https://dev.tfs.staging.poundandgrain.ca/blog/april-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 | "34851"
|
REMOTE_ADDR | "3.147.63.2"
|
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 | 1731845981.0569
|
REQUEST_TIME | 1731845981
|
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"
|