*
* @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" => "conceptualizing-his-future-in-art-laurent-auguste-tougas-online-video-game-animation-story" "category_name" => "blog" ] |
query_string | "name=conceptualizing-his-future-in-art-laurent-auguste-tougas-online-video-game-animation-story&category_name=blog"
|
request | "blog/conceptualizing-his-future-in-art-laurent-auguste-tougas-online-video-game-animation-story"
|
matched_rule | "(.+?)/([^/]+)(?:/([0-9]+))?/?$"
|
matched_query | "category_name=blog&name=conceptualizing-his-future-in-art-laurent-auguste-tougas-online-video-game-animation-story&page="
|
did_permalink | true
|
Key | Value |
query | array:3 [ "page" => "" "name" => "conceptualizing-his-future-in-art-laurent-auguste-tougas-online-video-game-animation-story" "category_name" => "blog" ] |
query_vars | array:66 [ "page" => 0 "name" => "conceptualizing-his-future-in-art-laurent-auguste-tougas-online-video-game-animation-story" "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 | 20632
|
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 = 'conceptualizing-his-future-in-art-laurent-auguste-tougas-online-video-game-animation-story' 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 | 20632
|
post_author | "43"
|
post_date | "2020-09-11 14:07:43"
|
post_date_gmt | "2020-09-11 14:07:43"
|
post_content | """ What is the current state of production in the film and television industry?\n \n \n \n What will the new on-set “normal” look like as production crews get back to work in the midst of the ongoing COVID-19 pandemic?\n \n \n \n And, given all the recent changes, what are the job prospects out there for emerging young filmmakers?\n \n \n \n Those are just a few of the burning questions Toronto Film School tackled during an insightful panel discussion moderated by Toronto Film School’s <a href="https://www.emmys.com/awards/nominees-winners/2020/outstanding-comedy-series">Emmy-nominated </a>Executive Producer in Residence <a href="http://www.project10.ca/about">Andrew Barnsley</a>, and featuring special faculty guest <a href="https://www.linkedin.com/in/masangkay/?originalSubdomain=ca">Michaelangelo Masangkay </a>and alumnus <a href="https://www.imdb.com/name/nm10376921/?ref_=tt_ov_dr">Will Falks</a>.\n \n \n \n [embed]https://www.youtube.com/watch?v=WxYJShEEneE&feature=youtu.be[/embed]\n \n \n \n “We’re all professionals navigating this and it’s uncharted territory for many of us. So, to have the opportunity to talk to students who also feel like they had to kind of hit the pause button, I think it’s a really important discussion to give some greater context to what’s really happened here,” said Barnsley.\n \n \n \n “When we talk through it, I’d like to think we’re all still feeling positive about where this is all going to go. It really does seem that it’s not as dire a situation as we thought it could be when this started and that we’re in a good place.”\n \n \n \n Here are more insights from the panel discussion:\n \n \n \n <strong>Barnsley on the industry’s initial reaction when the pandemic shut down productions across the country/world</strong>\n \n \n \n “We have a production company (<a href="http://www.project10.ca/">Project 10 Productions</a>) here in Toronto and we had two series that were slated to be produced in 2020 (CTV’s <a href="https://www.bellmedia.ca/the-lede/tv/ctv/jann/"><em>Jann </em></a>and Amazon’s <em><a href="https://www.torontofilmschool.ca/blog/andrew-barnsley-set-to-produce-amazons-revival-of-kids-in-the-hall/">Kids in the Hall</a></em>). When COVID hit and we went to the self-isolation kind of quarantine scenario at the beginning, there was a lot of industry panic at not really knowing what the future held, or how long we would be in this situation, or what the industry would look like when we came out of it…\n \n \n \n “All of the stakeholders began working very hard thinking about what the industry would look like in the absence of a vaccine, in the absence of a flip being switched and everything going back to normal. There was a lot of time, energy and resources dedicated and determined to find ways to get the industry back online. There was a lot of negotiation between producers, unions, broadcasting studios and postgraduate facilities – all for these stakeholders to come up with protocols that really were designed to a) get the industry back online, but also b) make sure that when it does go back online, that it’s safe for all participants.\n \n \n \n “So, over the period of the first two or three months, it was about figuring out what that could look like, and now those protocols are in place and we’re starting to see things get back online.”\n \n \n \n <strong>Masangkay o</strong><strong>n what the new on-set “normal” looks like</strong>\n \n \n \n “I’ve been on set. We were working on the <a href="https://ccma.org/">Canadian Country Music Awards</a>, and it was shot in a field up in Orillia. It was a big, open space and they would have the bands play in different locations all across the <a href="https://www.burlscreek.com/">Burl’s Creek Event Grounds</a>, where they have a lot of concerts, usually. And each was kind of a unit location, so one band would play in a field, and one band would play in the middle of pickup trucks and cars in a circle with their headlights beaming in the middle…\n \n \n \n “When it came to signing into set, there was a first responder set up at a station and when people arrived and they would basically check your temperature, ask you a series of questions, and then you leave your name, phone number and who you’re affiliated with for contact tracing.\n \n \n \n “With sanitation being so important now, all the departments were also grouped – production design would come in and set up, then there was a period of sanitation when they vacated the space. Then you’d have your G&E (grips and electrics) come and set up, then there was sanitation after that. Then your camera operators, then you bring your talent in, and your talent would only engage with makeup and wardrobe, for instance, face-to-face in a closed setting, and those people would be masked and have face shields…\n \n \n \n “The thing that really struck me was that this whole situation really compels you to be even more creative as to how you’re going to accomplish the production.”\n \n \n \n <strong> Masangkay on some of the ways productions are getting creative, yet stringent, in the time of COVID</strong>\n \n \n \n “I had a conversation recently with some sound guys I know that are sent out to productions like, for instance, <em>The Bold and the Beautiful </em>in the U.S. They’re back in production and they were using sex dolls as stand-ins for the intimate scenes in that soap opera. And now it’s at a point where they’ve gotten the spouses of the actors into hair and wardrobe to make them resemble their co-stars so that they can film the intimate scenes. So, the creativity is really there.\n \n \n \n “But it has also been stringent. For instance, on the production of <em>Jurassic World</em> in the UK, their COVID protocol handbook that everyone has to sign off on it 107 pages – and it has to be read thoroughly, understood and signed off on by each and every person on that production. I think that speaks to the stringent measures that are being put in place, but at the same time, the creativity that’s involved now…\n \n \n \n “It’s really provided people with an opportunity to show how detailed oriented they can be and show the level of pre-production that goes into keeping the safety of others in mind. The more your crew feels they’re being taken care of, the more that they have a platform to perform.”\n \n \n \n <strong>Barnsley on the increasing calls from U.S. studios wanting to produce their projects here in Canada</strong>\n \n \n \n “From my end, one thing that we’re seeing as a production company is that we’re getting calls from U.S. studios and producers now saying, ‘We need to shoot and we don’t want to shoot in the U.S.’ They look to Canada as a country and a jurisdiction that has done very well at managing the outbreak and keeping it contained, which says a lot about Canadians and how we can come together and, really, how it hasn’t been politicized and split along political lines. The people we’re talking to are dealing with outbreak after outbreak and they’re in positions where they cannot comfortably and safely pull the trigger on going into production in the U.S…\n \n \n \n “We’re getting calls from Hulu, Netflix, Quibi – all this big U.S. players saying, ‘How can you help us?’ And it’s so different to be on the receiving end of those calls. Before, we were always trying to get their attention, now they’re trying to get ours. So it’s kind of interesting, and it really is a testament to how the industry really came together and how the country and the province came together to kind of figure out the best way to handle this.”\n \n <strong> </strong>\n \n <strong>Masangkay on the increased demand for content on digital platforms during the pandemic</strong>\n \n \n \n “Content sellers and content buyers are still doing business because of the increased amount of appetite on the digital platforms. If you look at Disney and platforms like Shudder and Hulu, these streaming platforms are really trying to pack in their offerings, because anything they’ve already purchased to program has already accelerated and been released, when they planned to do it 18 months or two years out…Therefore there’s this vacuum that needs to be satisfied with content that they need to fill on the programming side – and that’s not going away with that appetite continuing to grow.”\n \n \n \n <strong>Barnsley on the what these new COVID-induced industry trends mean for the job prospects of newly graduated TFS filmmakers</strong>\n \n \n \n “From the point of view of someone who’s graduating as a student from TFS, you might sort of worry that opportunities might diminish in a situation like this. But what we’re seeing is, in fact, the opposite. There’s actually more opportunities because of the way Canada managed it and Ontario managed it, differently than they did in California and Florida…\n \n \n \n “It’s going to lead to opportunities for established professionals, but, I think also, new and emerging professionals, as well. The more volume there is, the more opportunity.”\n \n \n \n <strong>Masangkay on the best way for young Film Production graduates can get their foot in the door as PAs</strong>\n \n \n \n “When it comes to PAing, it is tough right now, just because people like working with known quantities right now, so they’re reluctant to bring in an unknown quantity from whatever background. People are used to working together, so there’s a level of comfort there, and the moment you bring someone from the outside in, that’s the tough part.\n \n \n \n “But one of the suggestions I’ve been giving students is to really get involved in the unions, because they’ve been reaching out very much so. I know we have a great relationship right now with <a href="http://www.nabet700.com/">NABET</a>, for instance, and they’re trying to be very proactive in terms of bringing people into the industry to be able to get some experience.\n \n \n \n “If you have an organization such as a union that can provide you as an option for PAing on a production, I think that’s where you get an initial filter for production companies. To be able to say you’ve been vetted by this union as a member or apprentice, I think that would be your best avenue right now. But things will start calming down, and those opportunities will start presenting themselves again.”\n \n \n \n <strong>Masangkay on his longer-term outlook for the state of the film industry</strong>\n \n \n \n “From my end, just because I get to see from A to Z the whole process from development, finding financing, preproduction, postproduction, through to marketing and distribution – seeing that whole cycle and seeing the development that’s being done now can only mean that a lot of stuff is going to filter through to production.\n \n \n \n “We currently have a lot of stuff in the cooker that’s going to provide a lot of jobs for people who are out there – and that’s just us. There’s thousands of companies out there that are doing this, as well, and they’re feeling the same thing.\n \n \n \n "So, there’s is definitely an appetite from a distribution standpoint, on all these digital platforms that are becoming more and more prominent, so therefore there’s a need for that programming that we’re developing and that’s why we’re developing it. So, that provides so much opportunity for so many people. We’ve never been this busy, actually…so, for me, I feel very bullish and optimistic about the opportunities that are going to present themselves here, and I feel very confident that a lot of people are going to be able to get out there and really find those opportunities if they really bear down now and figure out what it is they want to do in this industry.”\n \n \n \n For more insights, watch highlights from the panel discussion here.\n \n \n \n <strong>About the panel:</strong>\n \n \n \n <img class="alignnone size-medium wp-image-20402 aligncenter" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2020/07/TFS_AndrewBarnsleyHeadshot_0728.jpg" alt="" width="670" height="393" />\n \n <strong><a href="http://www.project10.ca/about">Andrew Barnsley</a> </strong>is the <a href="https://www.emmys.com/awards/nominees-winners/2020/outstanding-comedy-series">Emmy-nominated</a> executive producer of the CBC hit comedy series <a href="https://www.cbc.ca/schittscreek/m_site/"><em>Schitt’s Creek</em></a>. In addition to his 2019 and 2020 Outstanding Comedy Series Emmy nominations, Andrew’s work on the Eugene Levy and Catherine O’Hara fronted show has also garnered him three Canadian Screen Awards (2016, 2019, 2020) for Best Comedy Series, as well as a <a href="https://www.cnn.com/2019/01/12/entertainment/critics-choice-awards-nominees-2019/index.html">2019 Critic’s Choice Television Award </a>nomination. As the CEO of <a href="http://www.project10.ca/">Project 10 Productions</a>, Andrew currently splits his time between Toronto and Los Angeles, where his 2019 development and production slate also includes CTV’s <a href="https://www.bellmedia.ca/the-lede/tv/ctv/jann/"><em>Jann</em></a>, and the Family Channel tween series, <a href="https://www.family.ca/shows/my-perfect-landing/"><em>My Perfect Landing</em></a>. Andrew is Toronto Film School’s current Executive Producer in Residence, as well as a member of the Canadian Media Producers Association, the Academy of Television Arts and Sciences (USA) and the Academy of Canadian Film & Television.\n \n \n \n <img class="size-medium wp-image-17585 aligncenter" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2019/09/TFS_FP_MichaelangeloMasangky_0925.jpg" alt="" width="670" height="393" />\n \n <strong><a href="https://www.linkedin.com/in/masangkay/?originalSubdomain=ca">Michaelangelo Masangkay</a></strong>, director of Toronto Film School’s Film Production Work Placement Program, brings extensive experience in film distribution during the new era of digital content consumption to the classroom. As general manager of <a href="https://ravenbannerentertainment.com/">Raven Banner Entertainment</a>, the Filipino-Canadian distributor has represented the Canadian distribution market all over the world – from Berlin to Los Angeles to Hong Kong to Cannes. Ciro Guerra’s <em><a href="https://www.imdb.com/title/tt4285496/">Embrace of the Serpent</a></em>, which was nominated for a <a href="https://oscar.go.com/news/nominations/foreign-language-film-nominations-2016-oscars">Best Foreign Language Film Oscar in 2016</a>, is just one among an impressive slate of innovate and compelling genre films Masangkay has had a hand in distributing.\n \n \n \n <img class="size-medium wp-image-16897 aligncenter" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2019/08/TFS_ALL_WillFalksFestival_0822.jpg" alt="" width="670" height="393" />\n \n <strong><a href="https://www.imdb.com/name/nm10376921/?ref_=tt_ov_dr">Will Falks</a></strong>, who originally hails from Brazil, is a Class of 2018 Film Production alumnus. Throughout his career, he has directed and produced two music videos, one short documentary, and five short films – including <a href="https://www.imdb.com/title/tt10294470/"><em>About Mermaids and Sailors</em></a><em>, which </em>won <a href="https://www.torontofilmschool.ca/blog/poly-wins-trio-of-awards-at-2019-toronto-film-school-festival-of-films/">Best Producer </a>at Toronto Film School’s 2019 Festival of Films. He currently works as the Video On Demand Coordinator at <a href="https://www.drcvideo.com/">DRC Video Productions</a> and is working on his sixth short film.\n \n \n \n """ |
post_title | "Online Video Game Student Shares Time Lapse of Portfolio Project"
|
post_excerpt | "" |
post_status | "publish"
|
comment_status | "closed"
|
ping_status | "open"
|
post_password | "" |
post_name | "conceptualizing-his-future-in-art-laurent-auguste-tougas-online-video-game-animation-story"
|
to_ping | "" |
pinged | "" |
post_modified | "2023-03-27 21:07:51"
|
post_modified_gmt | "2023-03-27 21:07:51"
|
post_content_filtered | "" |
post_parent | 0
|
guid | "https://dev.tfs.staging.poundandgrain.ca/?p=20632"
|
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/conceptualizing-his-future-in-art-laurent-auguste-tougas-online-video-game-animation-story/"
|
USER | "forge"
|
HOME | "/home/forge"
|
HTTP_REFERER | "https://dev.tfs.staging.poundandgrain.ca/blog/conceptualizing-his-future-in-art-laurent-auguste-tougas-online-video-game-animation-story"
|
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 | "33906"
|
REMOTE_ADDR | "18.189.182.160"
|
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 | 1731854496.5393
|
REQUEST_TIME | 1731854496
|
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"
|