*
* @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" => "toronto-film-school-celebrates-class-of-2021-with-virtual-graduation-celebration" "category_name" => "news" ] |
query_string | "name=toronto-film-school-celebrates-class-of-2021-with-virtual-graduation-celebration&category_name=news"
|
request | "news/toronto-film-school-celebrates-class-of-2021-with-virtual-graduation-celebration"
|
matched_rule | "(.+?)/([^/]+)(?:/([0-9]+))?/?$"
|
matched_query | "category_name=news&name=toronto-film-school-celebrates-class-of-2021-with-virtual-graduation-celebration&page="
|
did_permalink | true
|
Key | Value |
query | array:3 [ "page" => "" "name" => "toronto-film-school-celebrates-class-of-2021-with-virtual-graduation-celebration" "category_name" => "news" ] |
query_vars | array:66 [ "page" => 0 "name" => "toronto-film-school-celebrates-class-of-2021-with-virtual-graduation-celebration" "category_name" => "news" "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 | 24345
|
request | """ SELECT wp_posts.*\n \t\t\t\t\t FROM wp_posts \n \t\t\t\t\t WHERE 1=1 AND wp_posts.post_name = 'toronto-film-school-celebrates-class-of-2021-with-virtual-graduation-celebration' 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 | 24345
|
post_author | "43"
|
post_date | "2021-12-03 14:31:21"
|
post_date_gmt | "2021-12-03 14:31:21"
|
post_content | """ “Be bold! Don’t hold back! Make opportunities happen for yourself!”\n \n \n \n Those were just a few of the motivational messages imparted on the nearly 500 graduates who took part in Toronto Film School’s 2021 virtual convocation ceremony, which was recently live-streamed to an audience of more than 500 people from all around the world.\n \n \n <p style="text-align: center;"><iframe title="YouTube video player" src="https://www.youtube.com/embed/Dy_LFO6dx2w" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>\n \n \n “This year, we are celebrating your achievements virtually. We are rolling with the punches, staying safe, and hoping that opportunities to gather together are not long off,” Toronto Film School’s <a href="https://www.torontofilmschool.ca/blog/andrew-barnsley-celebrates-schitts-creeks-historic-night-at-emmys/" target="_blank" rel="noopener noreferrer">Emmy-winning</a> President <a href="https://www.torontofilmschool.ca/blog/toronto-film-school-poised-for-global-greatness-with-andrew-barnsley-at-the-helm-as-newly-named-president/" target="_blank" rel="noopener noreferrer">Andrew Barnsley</a> told graduates in his opening remarks.\n \n \n \n “Important matters remain, though. You have graduated, and my colleagues and I are excited to greet you and celebrate your achievements with you…You have graduated, and you are now equipped to build your careers in your chosen fields. And we are all very proud of you.”\n \n \n \n In total, Toronto Film School’s 2021 virtual graduation saw 475 graduates mark their convocation from Toronto Film School’s array of on-campus and online programs, including: <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>; <a href="https://www.torontofilmschool.ca/programs/fashion-design-diploma/" target="_blank" rel="noopener noreferrer">Fashion Design</a>; <a href="https://www.torontofilmschool.ca/programs/film-production-diploma/" target="_blank" rel="noopener noreferrer">Film Production</a>; <a href="https://www.torontofilmschool.ca/programs/graphic-design-interactive-media-diploma/" target="_blank" rel="noopener noreferrer">Graphic Design & Interactive Media</a>; <a href="https://www.torontofilmschool.ca/programs/marketing-fashion-entertainment/" target="_blank" rel="noopener noreferrer">Marketing for Fashion & Entertainment</a>; <a href="https://www.torontofilmschool.ca/programs/video-game-design-animation/" target="_blank" rel="noopener noreferrer">Video Game Design & Animation</a>; <a href="https://www.torontofilmschool.ca/programs/video-game-design-development/" target="_blank" rel="noopener noreferrer">Video Game Design & Development</a>; <a href="https://online.torontofilmschool.ca/programs/video-production-diploma/" target="_blank" rel="noopener noreferrer">Video Production</a>; <a href="https://www.torontofilmschool.ca/programs/writing-for-film-tv-diploma/" target="_blank" rel="noopener noreferrer">Writing for Film & Television</a>; and <a href="https://www.yorkvilleu.ca/programs/interior-decorating-associate-diploma-online/" target="_blank" rel="noopener noreferrer">Interior Decorating</a> (offered through Yorkville University).\n \n \n \n Over the course of the 90-minute celebration, Toronto Film School recognized the hard work and dedication demonstrated by each and every member of its Class of 2021 in many ways – perhaps most notably with a special surprise keynote address from Canadian Screen Award-nominated actor, writer, director and producer <a href="https://www.imdb.com/name/nm0369935/" target="_blank" rel="noopener noreferrer">Allan Hawco</a>.\n \n \n <p style="text-align: center;"><iframe title="YouTube video player" src="https://www.youtube.com/embed/dKk75A9m8Qo" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>\n \n \n Known for his work on <em><a href="https://www.imdb.com/title/tt1297754/" target="_blank" rel="noopener noreferrer">Republic of Doyle</a></em> – the hit CBC series on which he not only served as star, but also as creator, writer, and executive producer – Hawco is also recognized for his acting roles on series such as Amazon Prime’s <em><a href="https://www.imdb.com/title/tt5057054/" target="_blank" rel="noopener noreferrer">Tom Clancy’s Jack Ryan</a></em>, Netflix’s <em><a href="https://www.imdb.com/title/tt4686698/" target="_blank" rel="noopener noreferrer">Frontier</a></em>, and CBC’s <em><a href="https://www.imdb.com/title/tt1495950/?ref_=fn_al_tt_1" target="_blank" rel="noopener noreferrer">The Book of Negroes</a>. </em>\n \n <em> </em>\n \n During his address, Hawco hearkened back to a time when he, too, was starting in the television industry – and the dedication and drive it took to get him to the enviable position he enjoys today.\n \n \n \n “Long before I created and produced, wrote and starred in <em>Republic of Doyle</em> or <em>Caught</em> or any of the big things I was lucky to be a part of, I was just another hoping-to-be-working, struggling actor auditioning as much as I could, booking whatever I was able, taking part-time Joe jobs to pay my rent,” he said.\n \n \n \n “I can tell you, I was pretty ambitious. And I still am. I’ve always known what I deeply, truly wanted…It wasn’t to be famous or to be wealthy or whatever. No, what I wanted more than anything was to have control over my own story.”\n \n \n \n To get himself into the driver’s seat of his career, Hawco said he partnered up with some friends to found <a href="https://companytheatre.ca/" target="_blank" rel="noopener noreferrer">The Company Theatre</a> in 2004 at age 24. For the independent company’s ambitious first show, Tom Murphy’s <em><a href="https://en.wikipedia.org/wiki/A_Whistle_in_the_Dark" target="_blank" rel="noopener noreferrer">A Whistle in the Dark</a>, </em>he and his fellow founders raised nearly $250,000 in a single year.\n \n \n \n “In the end, it was received with enormous commercial and critical acclaim. It was a hit, and so was I. It was the role of a lifetime for me, and that experience changed me forever. I showed myself and whomever else that I could play whatever role I wanted,” he recalled.\n \n \n \n “But the big lesson I took away from that experience was that, unless you’re willing to put yourself out there, and actually go after what you want, you’ll never, ever know what could have been possible.”\n \n \n <p style="text-align: center;"><iframe title="YouTube video player" src="https://www.youtube.com/embed/P6_Mv-u9_m4" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>\n \n \n That was precisely the approach <a href="https://bit.ly/30Ye6eq" target="_blank" rel="noopener noreferrer">Jessica Angelevski</a> – this year’s Davisville Campus valedictorian – took when it came to tackling her 12 months of study in the <a href="https://www.torontofilmschool.ca/programs/graphic-design-interactive-media-diploma/" target="_blank" rel="noopener noreferrer">Graphic Design & Interactive Media</a> program.\n \n \n \n “Ever since orientation day at TFS, I knew I would take whatever it took to become valedictorian. I knew I wanted to put as much as I could into my time here and excel to my highest potential,” she recalled during her valedictory address to her fellow graduates.\n \n \n \n “After all, I figured the work you put in shows in the work you put out, and my goal was to ensure my portfolio was strong enough to present to employers by the end of the year.”\n \n \n \n Just a month after wrapping her studies at TFS, Angelevski did just that when she landed a full-time job as an in-house graphic designer at a medium-sized industrial company.\n \n \n \n “It was such an exciting moment that I literally screamed once getting off the call after my last interview…It felt so nice that things came full circle from starting the program with the goal of being prepared for a job right out of school – and then having it happen.”\n \n \n <p style="text-align: center;"><iframe title="YouTube video player" src="https://www.youtube.com/embed/3pV30ZwQ80c" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>\n \n \n For <a href="https://bit.ly/3nJCgT1" target="_blank" rel="noopener noreferrer">Aiman Abdo Al-Shargabi</a>, this year’s Toronto Film School Online valedictorian, filmmaking emerged as a passion at a time he needed it most. Living in civil war-torn Yemen and battling a deep depression at the time, he credits stories with keeping him alive.\n \n \n \n “My only pleasure was fiction: I read novels and watched films and wrote short stories,” he recalled during his address from Cairo, Egypt, noting that it wasn’t long before he began attempting to bring his stories to life on film.\n \n \n \n “The first time I was filming, and I saw my imagined story fleshing out before my very eyes…at this moment, I felt connected to the world again. I knew from my deep heart that this was the thing I wanted to spend my life doing.”\n \n \n \n After fleeing to Egypt, Al-Shargabi began his self-studies in filmmaking, oftentimes translating English textbooks word by word, sentence by sentence. Still, his thirst for more knowledge only grew stronger. In Toronto Film School’s Online <a href="https://online.torontofilmschool.ca/programs/video-production-diploma/" target="_blank" rel="noopener noreferrer">Video Production</a> program, he finally found the mentorship he had been craving.\n \n \n \n “My professors were thousands of miles away, but closer to me than anyone else,” he said, noting that he now works as a writer and director for a production company in Cairo and hopes to own his own business within the next year.\n \n \n \n “I know this is just the start – and there is much more to do in the future, but I don’t care…When you find your passion, when pleasure is in the struggle and in the pain, success may be waiting down the road.\n \n \n \n “Goals are not everything – it’s the path that matters.”\n \n \n <p style="text-align: center;"><iframe title="YouTube video player" src="https://www.youtube.com/embed/eVPz-saSfXI" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>\n \n \n That sentiment was echoed by Dundas Campus valedictorian <a href="https://bit.ly/3Dr4VSh" target="_blank" rel="noopener noreferrer">Sunmin Oh</a>, who quoted Henry Miller during her address to Toronto Film School’s Class of 2021.\n \n \n \n “One’s destination is never a place, but a new way of seeing things.’ If this teaches us anything, we’re continuously moving forward as resilient beings who are here to celebrate our evolution as artists, and most importantly, as humans,” said Oh, an <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> graduate who immigrated to Vancouver from Seoul, South Korea at age five.\n \n \n \n “My journey to, (at) and from TFS is only one voice and one story out of so many. However, I believe that is what makes TFS so diverse and so special. Toronto Film School is a mosaic of storytellers, all wanting to share and give the gift of stories. And I am humbled and honoured to have the opportunity to share mine.”\n \n \n \n <img class="alignnone size-medium wp-image-24356 aligncenter" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2021/12/TFS_VirtualGradScreenshot1_1202.jpg" alt="" width="670" height="393" />\n \n \n <p style="text-align: center;"><strong>2021 Program Valedictorians:</strong><strong> </strong></p>\n <p style="text-align: center;">– Acting for Film, TV & the Theatre | <a href="https://bit.ly/3Dr4VSh" target="_blank" rel="noopener noreferrer">Sunmin Oh</a></p>\n <p style="text-align: center;">– Fashion Design | <a href="https://bit.ly/3Ec3JTa" target="_blank" rel="noopener noreferrer">Marlon Mendoza</a></p>\n <p style="text-align: center;">– Film Production | <a href="https://bit.ly/3D3Ghqp" target="_blank" rel="noopener noreferrer">Jessica Pfamzelt</a></p>\n <p style="text-align: center;">– Graphic Design & Interactive Media | <a href="https://bit.ly/30Ye6eq" target="_blank" rel="noopener noreferrer">Jessica Angelevski</a></p>\n <p style="text-align: center;">– Interior Decorating | <a href="https://bit.ly/3FHEqsm" target="_blank" rel="noopener noreferrer">Meredith Arnold</a></p>\n <p style="text-align: center;">– Marketing for Fashion & Entertainment | <a href="https://bit.ly/3mUHdry" target="_blank" rel="noopener noreferrer">Andrew Mukama</a></p>\n <p style="text-align: center;">– Online Designing for Fashion | <a href="https://bit.ly/30R75Mq" target="_blank" rel="noopener noreferrer">Dominique Levesque</a></p>\n <p style="text-align: center;">– Online Graphic Design & Interactive Media | <a href="https://bit.ly/3plkntl" target="_blank" rel="noopener noreferrer">Carolina Balderas</a></p>\n <p style="text-align: center;">– Online Video Game Animation | <a href="https://bit.ly/3G3LaRt" target="_blank" rel="noopener noreferrer">Elena Schulz</a></p>\n <p style="text-align: center;">– Online Video Production | Aiman Abdo Al-Shargabi</p>\n <p style="text-align: center;">– Online Writing for Film & Television | <a href="https://www.torontofilmschool.ca/blog/discovering-his-creative-path-francesco-borrellis-screenwriting-story/">Francesco Borrelli</a></p>\n <p style="text-align: center;">– Video Game Design & Animation | <a href="https://bit.ly/3CLnEGU" target="_blank" rel="noopener noreferrer">Maria Gabriela Tapia Nieto</a></p>\n <p style="text-align: center;">– Video Game Design & Development | <a href="https://bit.ly/3l8sc4b" target="_blank" rel="noopener noreferrer">Cameron Clark</a></p>\n <p style="text-align: center;">– Writing for Film & Television | <a href="https://bit.ly/31PZ0rZ" target="_blank" rel="noopener noreferrer">Melissa Zbozny</a></p>\n \n <p style="text-align: center;"><strong>2021 TFS Program Awards:</strong><strong> </strong></p>\n <p style="text-align: center;">– Best Video Game Developer | <a href="https://bit.ly/3l8sc4b" target="_blank" rel="noopener noreferrer">Cameron Clark</a></p>\n <p style="text-align: center;">– Best Video Game Animator | <a href="https://bit.ly/3CLnEGU" target="_blank" rel="noopener noreferrer">Maria Gabriela Tapia Nieto</a></p>\n <p style="text-align: center;">– Creativity & Business (Fashion Design)| <a href="https://bit.ly/3Ec3JTa" target="_blank" rel="noopener noreferrer">Marlon Mendoza</a></p>\n <p style="text-align: center;">– Creativity in Business (Marketing for Fashion) | <a href="https://bit.ly/3mUHdry" target="_blank" rel="noopener noreferrer">Andrew Mukama</a></p>\n <p style="text-align: center;">– Excellence in Graphic Design | Anthony Pingitore</p>\n <p style="text-align: center;">– Best Actor | <a href="https://bit.ly/3Dr4VSh" target="_blank" rel="noopener noreferrer">Sunmin Oh</a></p>\n <p style="text-align: center;">– Distinguished Filmmaker | Mario Freitas</p>\n <p style="text-align: center;">– Best Screenwriter | Amber Matin</p>\n \n <p style="text-align: center;"><strong>2021 TFSO Program Awards:</strong></p>\n <p style="text-align: center;">– Academic & Creative Achievement (Video Production) | Peter Collins</p>\n <p style="text-align: center;">– Excellence in Graphic Design | Kathryn Beunder</p>\n <p style="text-align: center;">– Best Video Game Animator | <a href="https://bit.ly/3G3LaRt" target="_blank" rel="noopener noreferrer">Elena Schulz</a></p>\n <p style="text-align: center;">– Best Screenwriter | <a href="https://www.torontofilmschool.ca/blog/online-writing-student-wins-screenwriting-fellowship-for-comedy-pilot-about-time-travelling-hustlers/" target="_blank" rel="noopener noreferrer">Andrew Hopps</a></p>\n <p style="text-align: center;">– Creativity & Business (Designing for Fashion) | <a href="https://bit.ly/30R75Mq" target="_blank" rel="noopener noreferrer">Dominique Levesque</a></p>\n <p style="text-align: center;">– Creativity in Design (Interior Decorating) | <a href="https://bit.ly/3FHEqsm" target="_blank" rel="noopener noreferrer">Meredith Arnold</a></p>\n \n <p style="text-align: center;"><strong>2021 TFS President’s Awards (graduating student with highest cumulative average):</strong><strong> </strong></p>\n <p style="text-align: center;">– Video Game Design & Animation | <a href="https://bit.ly/3CLnEGU" target="_blank" rel="noopener noreferrer">Maria Gabriela Tapia Nieto</a></p>\n <p style="text-align: center;">– Video Game Design & Development | Joshua Smith</p>\n <p style="text-align: center;">– Fashion Design | Monette Kuittinen-Dhaoui</p>\n <p style="text-align: center;">– Marketing for Fashion & Entertainment | Kristen Tassiopoulos</p>\n <p style="text-align: center;">– Graphic Design & Interactive Media | Batul Moiz</p>\n <p style="text-align: center;">– Acting for Film, TV & the Theatre | <a href="https://bit.ly/3Dr4VSh" target="_blank" rel="noopener noreferrer">Sunmin Oh</a></p>\n <p style="text-align: center;">– Film Production | Jamie Norrie</p>\n <p style="text-align: center;">– Writing for Film & Television | Stacey Jansen & <a href="https://bit.ly/31PZ0rZ" target="_blank" rel="noopener noreferrer">Melissa Zbozny</a></p>\n \n <p style="text-align: center;"><strong>2021 TFSO President’s Awards (graduating student with highest cumulative average):</strong></p>\n <p style="text-align: center;"> – Video Production Online | Jillian Scrimger</p>\n <p style="text-align: center;">– Graphic Design & Interactive Media Online | Shane Hitchcock</p>\n <p style="text-align: center;">– Video Game Animation Online | Kyle Charman</p>\n <p style="text-align: center;">– Writing for Film & Television Online | Monica Tourond</p>\n <p style="text-align: center;">– Designing for Fashion Online | <a href="https://bit.ly/30R75Mq" target="_blank" rel="noopener noreferrer">Dominique Levesque</a></p>\n <p style="text-align: center;">– Interior Decorating Online | <a href="https://bit.ly/3FHEqsm" target="_blank" rel="noopener noreferrer">Meredith Arnold</a></p>\n \n \n <img class="alignnone size-medium wp-image-24346 aligncenter" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2021/12/TFS_2021VirtualGrad_AndrewBarnsley_1202.jpg" alt="" width="670" height="393" />\n \n \n \n To close out the night, Barnsley took one last chance to congratulate Toronto Film School’s newly minted alumni and to encourage them to stay connected to the school and to each other.\n \n \n \n “By virtue of your new status as graduates, you are all members of the Toronto Film School alumni community. As a TFS graduate, this means that you have access to an active community online for sharing resources, ideas, advice, career development strategies and job postings,” he said.\n \n \n \n “You’ve graduated from a very special place. Toronto Film School is recognized as a prestigious school that delivers world-class graduates to the creative industries….Be proud of what you’ve already achieved and know that the Toronto Film School community will be watching with pride as you build your careers.”\n \n \n \n """ |
post_title | "Toronto Film School Celebrates Class of 2021 with Virtual Graduation Celebration"
|
post_excerpt | "" |
post_status | "publish"
|
comment_status | "open"
|
ping_status | "open"
|
post_password | "" |
post_name | "toronto-film-school-celebrates-class-of-2021-with-virtual-graduation-celebration"
|
to_ping | "" |
pinged | "" |
post_modified | "2023-03-27 21:07:14"
|
post_modified_gmt | "2023-03-27 21:07:14"
|
post_content_filtered | "" |
post_parent | 0
|
guid | "https://dev.tfs.staging.poundandgrain.ca/?p=24345"
|
menu_order | 0
|
post_type | "post"
|
post_mime_type | "" |
comment_count | "0"
|
filter | "raw"
|
Key | Value |
SERVER_SOFTWARE | "nginx/1.22.1"
|
REQUEST_URI | "/news/toronto-film-school-celebrates-class-of-2021-with-virtual-graduation-celebration/"
|
USER | "forge"
|
HOME | "/home/forge"
|
HTTP_REFERER | "https://dev.tfs.staging.poundandgrain.ca/news/toronto-film-school-celebrates-class-of-2021-with-virtual-graduation-celebration"
|
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 | "39751"
|
REMOTE_ADDR | "3.145.180.189"
|
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 | 1731861396.909
|
REQUEST_TIME | 1731861396
|
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"
|