*
* @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-schools-career-services-team-unveils-exciting-slate-of-new-webinars-for-the-spring-term" "category_name" => "news" ] |
query_string | "name=toronto-film-schools-career-services-team-unveils-exciting-slate-of-new-webinars-for-the-spring-term&category_name=news"
|
request | "news/toronto-film-schools-career-services-team-unveils-exciting-slate-of-new-webinars-for-the-spring-term"
|
matched_rule | "(.+?)/([^/]+)(?:/([0-9]+))?/?$"
|
matched_query | "category_name=news&name=toronto-film-schools-career-services-team-unveils-exciting-slate-of-new-webinars-for-the-spring-term&page="
|
did_permalink | true
|
Key | Value |
query | array:3 [ "page" => "" "name" => "toronto-film-schools-career-services-team-unveils-exciting-slate-of-new-webinars-for-the-spring-term" "category_name" => "news" ] |
query_vars | array:66 [ "page" => 0 "name" => "toronto-film-schools-career-services-team-unveils-exciting-slate-of-new-webinars-for-the-spring-term" "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 | 22532
|
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-schools-career-services-team-unveils-exciting-slate-of-new-webinars-for-the-spring-term' 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 | 22532
|
post_author | "43"
|
post_date | "2021-03-19 18:59:16"
|
post_date_gmt | "2021-03-19 18:59:16"
|
post_content | """ Hot off the heels of his historic <a href="https://www.torontofilmschool.ca/blog/andrew-barnsley-celebrates-schitts-creeks-historic-night-at-emmys/" target="_blank" rel="noopener noreferrer">Emmy</a> and <a href="https://www.ctvnews.ca/entertainment/golden-globes-for-schitt-s-creek-and-star-catherine-o-hara-1.5328126" target="_blank" rel="noopener noreferrer">Golden Globe</a> wins, <em><a href="https://www.cbc.ca/schittscreek/m_site/">Schitt’s Creek</a></em> executive producer <a href="http://www.project10.ca/about" target="_blank" rel="noopener noreferrer">Andrew Barnsley</a> took time out of his busy schedule to get candid with Toronto Film School.\n \n \n \n During an hourlong <em>Ask Me Anything </em>Q&A session, which was moderated by Class of 2017 <a href="https://www.torontofilmschool.ca/programs/film-production-diploma/" target="_blank" rel="noopener noreferrer">Film Production</a> grad <a href="https://www.imdb.com/name/nm8731487/" target="_blank" rel="noopener noreferrer">Becky Yeboah</a>, TFS students were encouraged to pepper the school’s <a href="https://www.torontofilmschool.ca/blog/andrew-barnsley-executive-producer-schitts-creek-joins-toronto-film-school-executive-producer-residence/" target="_blank" rel="noopener noreferrer">Executive Producer in Residence</a> with questions on anything and everything.\n \n \n <p style="text-align: center;"><iframe src="https://www.youtube.com/embed/G6886s0Fij4" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>\n \n \n With no subject out of bounds, here are some of the questions asked of Barnsley:\n \n \n \n <strong>What is producing? </strong>\n \n <strong> </strong>\n \n “That is a good question. Producing means different things to different people. In terms of my work, on one side of my work, it’s the relationship with the creative side, which is the writers, the directors, the actors, the stars, the showrunners, that sort of thing. Then, on the other side is the relationship with the business side, so it’s the buyers, the studios, the broadcasters, the distributors, the banks, the lawyers, the agents, the accountants. So, we’re positioned right in the middle between these two big pieces of the business, and it’s our job to kind of connect the dots to pitch the show, to sell the show, to finance the show, to hire everybody. That’s my version of producing – situated between those two great big forces of the creative and the business. And every email, every phone call, we’re on. You look at my inbox in a day, and there’s hundreds and hundreds of emails because every piece of information flows through a production company.”\n \n <strong> </strong>\n \n <strong>How did you get your start as a producer? </strong>\n \n \n \n “I went to Carleton University and I took Film Studies there to kind of get a bit of an educational foundation in the theory of film and that sort of thing, but it wasn’t a production program. So, I had moved to Ottawa right after a federal election, and I was just naïve and didn’t know any better, but where my family lived, there was a new member of parliament in Ottawa. One day, I was, like, let me call the new MPs office and say, ‘Listen, you’re new to Ottawa, I’m new to Ottawa, let’s have a conversation.’ His name was <a href="https://en.wikipedia.org/wiki/Andy_Scott_(politician)" target="_blank" rel="noopener noreferrer">Andy Scott</a>, and he invited me out to lunch. He asked me what I wanted to do, what I was interested in, and I said, ‘I really think I’m interested in being a producer,’ and he looked at me and said, ‘Listen, I’ve just started my job here and one thing we’re going to be doing is starting a weekly television show where we report back to the riding about what’s going on in Ottawa. It’s an interview show and if you want to host and produce it, it’s yours.’ And that was really how it began, and it set me on this path to doing what I’m doing now. That was in 1995…\n \n \n \n “What’s interesting about my story is that I kind of don’t feel like my title has ever changed since the beginning, it’s just sort of the scope of the projects and the size of the budgets that have changed.”\n \n \n \n <strong>What are some ways to break into the industry? </strong>\n \n \n \n “An easy way to (connect) in the industry is to join organizations that are connected to the industry. There aren’t many, but a great one to start with is the <a href="https://www.academy.ca/" target="_blank" rel="noopener noreferrer">Canadian Academy of Film & Television</a>. I think <a href="https://www.academy.ca/members/#fees" target="_blank" rel="noopener noreferrer">student memberships</a> are, like, $50 for the year, and all of a sudden you get invited to receptions, you get invited to panels, and you can start being a part of the industry and having professional conversations and networking. And it can happen in a very organic way. This industry really is about relationships, and part of the strategy when you’re thinking of how to build a career is putting yourself in those positions to build relationships. What’s interesting about that is that it can sound very intimidating and daunting. For me, I was not that person – I was not a schmoozy person who liked to go and hand out business cards and work the room, but what I found was that when I put myself into environments I wanted to be in, you just start talking to other people who also want to be there. When I look at how my professional network evolved, I have great relationships, but none of them were forced. They all happened organically over time by being in places where other people were and talking about things we all wanted to talk about, and that’s how you build that network.”\n \n \n \n <img class="alignnone size-medium wp-image-22409 aligncenter" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2021/03/TFS_ALL_AskMeAnything_BarnsleyYeboah_0305.jpg" alt="" width="670" height="393" />\n \n \n \n <strong>When you had setbacks in your early days, how did you keep yourself motivated to keep moving forward? </strong>\n \n \n \n “You’re right: there are challenging days. Nothing happens overnight. It was important for me, when I had those tough days, to be really committed to achieving success in this business. It was something I didn’t waver on. I kind of lived a philosophy of ‘There can’t be a Plan B,’ because it is really easy to quit and there were lots of moments when I could have…but I never wanted to initiate Plan B. It was just something I couldn’t do, so I figured I just had to work through it…\n \n \n \n “Believe me, there are tough days. It’s about staying on task, keep moving forward and not listening to how other people measure success. It really has to come from within.”\n \n \n \n <strong>\n Have you made any big mistakes in your career? How did they help you in the long run? </strong>\n \n <strong> </strong>\n \n “I’ve made so many mistakes. I’ve made all the mistakes. And I encourage everybody to do that. I’ve made mistakes at every level – from partners I’ve worked with, to how we structure companies, to how money works, to bad pitches. And the truth is that you have to make these mistakes; it’s really the only way. Failure can be very scary and the fear of failure can be paralyzing. But…the path to success is probably, like, 95 per cent failure, and that’s because you’re learning along the way. It’s what you do with that failure, it’s what you learn from those mistakes and how you reorient yourself and how you grow, that’s just how it works.\n \n \n \n “The easy way to answer that is just to look at how many pitches I made before I got traction on anything. I bet I pitched 100 shows before we got a single bit of interest in anything. But every single one of those rejections informed the next pitch. And not only did they inform the next pitch in terms of the creative and how we were presenting it, but every time I was in a pitch room, I had more time with the buyers, more time with the executives, and that’s how relationships evolve, too.”\n \n \n \n <strong>What is your advice on pitching? </strong>\n \n \n \n “To me, there are two parts of a pitch for film and TV. The first piece is creative: you need to know with precision what the world is, who the characters are, what the story engines are, how the mechanics of the world work and what is there. There has to be such precision on that because in a pitch meeting, you don’t know what you’re going to be asked and you need to be able to have some sense of how to answer any creative question. So that’s really one piece, the creative side.\n \n \n \n “The other side is the team. You really have to have a team that is undeniable. You have to work at that, and sometimes, especially early on and as much as it might hurt, it might make sense to bring on a collaborator, a partner who has experience doing what you’re trying to do, to help: a) get the buyers’ confidence that it can be done, and b) it also opens doors for you and your team. So, I recommend, early on, thinking about collaboration and thinking about how you can bolster your team by addition. Because, when weighing it out, I think a good idea with a great team has a much better shot than a great idea with a good team.”\n \n \n \n <strong>What makes a writer appealing to others in the industry these days? </strong>\n \n \n \n “Look at what people are watching now. There was a time, in the era of network TV, where everybody would watch NBC on Thursday night. It was broadcasting because everything was broad. It was meant to get the most amount of viewers possible. The shows that do well now are not broad, they’re narrow and they’re connected to a particular showrunner’s point of view or one writer’s point of view. That’s what we’re looking for: that specificity in voice.”\n \n \n \n <strong>Should an actor try to get a job on set as a production assistant (PA) to learn what that world is like while they’re waiting for their next acting gig? </strong>\n \n \n \n “Yeah, I think the more you learn about the industry and the operational side of it, the better. You’re going to become a better actor if you see what a professional set looks like. I think there’s a lot of value to that. What I wouldn’t do is show up on set and try to corner the director and say, as a PA, that you want to be in the next scene. That would backfire. But, yeah, the more you can learn about the world you want to be in, the better.”\n \n \n \n <img class="aligncenter wp-image-22413 size-medium" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2021/03/TFS_Barnsley_Levys_Emmy_0304.jpg" alt="Emmy night photo of Andrew Barnsley with Schitt's Creek cast members Eugene and Dan Levy, as well as his fellow producers." width="670" height="523" />\n \n \n \n <strong>When did you know <em><a href="https://www.cbc.ca/schittscreek/m_site/" target="_blank" rel="noopener noreferrer">Schitt’s Creek</a></em> was going to be a great show? </strong>\n \n \n \n “We all loved the show from the beginning. I think when we started to get a sense that we might be on to something was in Season 1, the ‘I like the wine, not the label’ episode – that was something where we were, like, ‘Okay, we’ve hit on something in a very interesting way.’ We knew at the script stage and at the table read that there was something there, but it wasn’t until it was kind of out there. That the first moment that landed. But it was still at the beginning and it was just Canada that really had access to the show…but once that went to air in Season 1, we knew we had something and that’s when we started to feel a bit of buzz.\n \n \n \n “But it wasn’t really until Season 4, when the show ended up on Netflix, that it really all of a sudden exploded and there was demand for our cast to go do live events and we started getting calls for people to go on talk shows in the U.S. and that sort of thing. A switch was flipping and it was becoming something bigger than any of us could have predicted. But, I’ll tell you, Netflix didn’t want the show for the longest time. It really had to hit kind of a tipping point where they were, like, ‘Yeah, okay, we can do this’.”\n \n \n \n <strong>How do you create something extraordinary that gets accepted globally? </strong>\n \n \n \n “You can’t manufacture that, it just has to happen. Everybody goes into producing a TV series thinking it’s going to be a hit, but very few of them are. When you’re looking at the network model in the U.S., there’s no guarantee shows are going to last more than one season, there’s no guarantee they’re going to find big audiences. And everybody making those shows thinks that they’re doing it the right way. So there’s no cookie-cutter way to create a hit. It’s a really difficult question to answer. You just have to really believe in it, you have to hire the right way, you have to control the variables you can control and make sure that the standards are high, the writing is where it needs to be, that you’re hiring the right directors and creative team. And then hope that, when you release it to the world, that it finds its audience.”\n \n \n \n <strong>What’s your favourite movie filmed in Toronto? </strong>\n \n \n \n “I would have to say <em><a href="https://www.imdb.com/title/tt0259446/" target="_blank" rel="noopener noreferrer">My Big Fat Greek Wedding</a> </em>because I lived on the Danforth for a long time and it was fun to see – even though the movie wasn’t set in Toronto, it was set in Chicago – it was so cool to recognize restaurants that I went to and various landmarks, and just feel a connection to this movie. It was kind of a real underdog of a movie and it ended up blowing up to be one of the greatest indie films, box office-wise, of all time. So that’s one when I think about a movie and I think about Toronto and what this city can offer, it was a real early-days success story for Toronto. And, like I said, having lived on the Danforth, there was just pride in that neighbourhood and knowing we were part of something great just by living there.”\n \n \n \n <strong>What’s the most important quality of a filmmaker? </strong>\n \n \n \n “For anybody who has a creative drive, it’s important to remember and recognize that what you’re doing is a craft and you have to work those muscles – you have to work very, very hard and commit to your craft. And a big part of that is knowing your voice, understanding your voice, understanding your sensibility. When you look at directors that have had great careers, (the) showrunners who are having great careers, what connects all of their body of work is a sensibility and a confidence…And that doesn’t just happen. It comes from working really hard and figuring out what your voice is…\n \n \n \n “To me, the biggest piece of advice is, if you’re a writer, you need to be writing. You need to be writing every single day, you need to be figuring out what your voice is, what your sensibility is, what your process is. And it’s the same with directing, producing, acting. You need to work at this. Nothing is handed to anybody.”\n \n \n \n \n <p style="text-align: center;"><strong>About the panelists:</strong></p>\n \n <p style="text-align: center;"><img class="alignnone wp-image-22405 size-medium" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2021/03/TFS_FP_BeckyYeboah2_0304.jpg" alt="Becky Yeboah's headshot" width="670" height="393" /></p>\n <p style="text-align: center;"><strong>Becky Yeboah</strong></p>\n \n <p style="text-align: center;">Becky Yeboah is a Toronto-based independent film producer, line producer and production manager from Winnipeg, MB. An alumnus of Toronto Film School's <a href="https://www.torontofilmschool.ca/programs/film-production-diploma/">Film Production</a> program (Class of 2017), Yeboah has since produced, line produced and/or managed more than 50 different projects spanning short films, feature films, and web/broadcast commercials. Past years have also seen Yeboah become a recipient of the <a href="https://www.arts.on.ca/">Ontario Arts Council</a> <a href="https://www.arts.on.ca/grants/media-artists-creation-projects">Media Artists Creation</a> grant, as well as complete an internship with Canadian film financing company<a href="http://jobroproductions.com/"> JoBro Productions</a> through the <a href="https://cmpa.ca/">Canadian Media Producers Association</a>’s <a href="https://cmpa.ca/mentorship/">Ontario Production Mentorship Program</a>.</p>\n <p style="text-align: center;">Since that fruitful internship, Yeboah has gone on to line produce and production manage exciting features with <a href="https://hangar18.media/">Hangar 18</a> (a subsidiary of <a href="https://ravenbannerentertainment.com/">Raven Banner Entertainment</a>, the distribution company of Toronto Film School’s own <a href="https://ravenbannerentertainment.com/index.php/contact/">Michael Paszt</a>), such as <em><a href="https://hangar18.media/project/gone-up-river/">Gone Upriver</a></em>, directed by the <a href="https://www.rue-morgue.com/">Rue Morgue</a>'s <a href="https://www.imdb.com/name/nm1473037/">Rodrigo Gudino</a>, and <em><a href="https://www.hollywoodreporter.com/news/v-h-s-horror-franchise-gets-reboot-v-h-s-94-1299605">V/H/S 94</a></em>, the reboot of the cult-classic horror franchise of the same name. Keeping things in the family, Yeboah has also had the opportunity to line produce alongside current TFS faculty members <a href="https://www.imdb.com/name/nm2617617/">Dusty Mancinelli</a> and <a href="https://www.imdb.com/name/nm3025035/?ref_=fn_al_nm_1">Madeleine Sims-Fewer</a> on their debut feature film <em><a href="https://www.imdb.com/title/tt12801814/?ref_=nm_flmg_prd_3">Violation</a></em>, which recently screened at both the <a href="https://www.tiff.net/">Toronto International Film Festival</a>, as well as the <a href="https://www.sundance.org/festivals/sundance-film-festival/about">Sundance International Film Festival</a>.</p>\n \n \n \n <p style="text-align: center;"><img class="alignnone size-medium wp-image-22406" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2019/11/barnsley_bw-1.jpg" alt="Andrew Barnsley's headshot" width="670" height="447" /></p>\n <p style="text-align: center;"><strong>Andrew Barnsley</strong></p>\n \n <p style="text-align: center;"><u><a href="http://www.project10.ca/about">Andrew Barnsley</a></u> is the Emmy- and Golden Globe-winning executive producer of the CBC’s hit comedy series <u><a href="https://www.cbc.ca/schittscreek/m_site/"><em>Schitt’s Creek</em></a></u>. In addition to <em>Schitt’s Creek</em> historic 2020 Emmy wins, Barnsley’s work on the Eugene Levy and Catherine O’Hara fronted show has also garnered him three Canadian Screen Awards (<u><a href="https://www.cbc.ca/news/entertainment/canadian-screen-awards-1.3487365">2016</a></u>, <u><a href="https://www.academy.ca/2019/schitts-creek-2/">2019</a></u> and 2020) for Best Comedy Series.</p>\n <p style="text-align: center;">As the CEO of <u><a href="http://www.project10.ca/">Project 10 Productions</a></u>, Barnsley splits his time between Toronto and Los Angeles, where his 2020 development and production slate also includes CTV’s <u><a href="https://www.ctv.ca/Jann"><em>Jann</em></a></u>, Amazon Studio’s <em>Kids In The Hall</em> reboot, and the Family Channel tween series, <u><a href="https://www.imdb.com/title/tt10268080/"><em>My Perfect Landing</em></a></u>. He also previously served as the executive producer on CTV’s <u><a href="https://www.imdb.com/title/tt2603568/"><em>Spun Out</em></a></u> starring <u><a href="https://www.imdb.com/name/nm0004929/?ref_=tt_ov_st_sm">Dave Foley</a></u>, the TMN/Movie Central documentary series <u><a href="https://www.crave.ca/en/tv-shows/sports-on-fire"><em>Sports On Fire</em></a></u><em>,</em>and the HBO Canada documentary feature <u><a href="https://www.imdb.com/title/tt5597012/"><em>Spirit Unforgettable</em></a></u>.</p>\n <p style="text-align: center;">Barnsley 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.</p>\n \n \n """ |
post_title | "Career Services Unveils Exciting Slate of New Webinars for the Spring Term"
|
post_excerpt | "" |
post_status | "publish"
|
comment_status | "open"
|
ping_status | "open"
|
post_password | "" |
post_name | "toronto-film-schools-career-services-team-unveils-exciting-slate-of-new-webinars-for-the-spring-term"
|
to_ping | "" |
pinged | "" |
post_modified | "2023-03-27 21:07:31"
|
post_modified_gmt | "2023-03-27 21:07:31"
|
post_content_filtered | "" |
post_parent | 0
|
guid | "https://dev.tfs.staging.poundandgrain.ca/?p=22532"
|
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-schools-career-services-team-unveils-exciting-slate-of-new-webinars-for-the-spring-term/"
|
USER | "forge"
|
HOME | "/home/forge"
|
HTTP_REFERER | "https://dev.tfs.staging.poundandgrain.ca/news/toronto-film-schools-career-services-team-unveils-exciting-slate-of-new-webinars-for-the-spring-term"
|
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 | "15985"
|
REMOTE_ADDR | "13.58.11.140"
|
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 | 1731875445.4139
|
REQUEST_TIME | 1731875445
|
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"
|