*
* @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" => "jason-priestleys-transformation-from-teen-heartthrob-to-acclaimed-actor-director-impresses-in-conversation-audience" "category_name" => "blog" ] |
query_string | "name=jason-priestleys-transformation-from-teen-heartthrob-to-acclaimed-actor-director-impresses-in-conversation-audience&category_name=blog"
|
request | "blog/jason-priestleys-transformation-from-teen-heartthrob-to-acclaimed-actor-director-impresses-in-conversation-audience"
|
matched_rule | "(.+?)/([^/]+)(?:/([0-9]+))?/?$"
|
matched_query | "category_name=blog&name=jason-priestleys-transformation-from-teen-heartthrob-to-acclaimed-actor-director-impresses-in-conversation-audience&page="
|
did_permalink | true
|
Key | Value |
query | array:3 [ "page" => "" "name" => "jason-priestleys-transformation-from-teen-heartthrob-to-acclaimed-actor-director-impresses-in-conversation-audience" "category_name" => "blog" ] |
query_vars | array:66 [ "page" => 0 "name" => "jason-priestleys-transformation-from-teen-heartthrob-to-acclaimed-actor-director-impresses-in-conversation-audience" "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 | 19756
|
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 = 'jason-priestleys-transformation-from-teen-heartthrob-to-acclaimed-actor-director-impresses-in-conversation-audience' 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 | 19756
|
post_author | "43"
|
post_date | "2020-04-28 20:28:51"
|
post_date_gmt | "2020-04-28 20:28:51"
|
post_content | """ “You can't wait for permission to be in this industry...You cannot wait for the phone to ring – I think you have to call yourself.”\n \n \n \n That was just one of many pearls of wisdom Academy Award-nominated screenwriter, actor, director and producer <a href="https://en.wikipedia.org/wiki/Nia_Vardalos" target="_blank" rel="noopener noreferrer">Nia Vardalos</a> shared with Toronto Film School students during her special guest appearance as part of the school’s ongoing <em>In Conversation </em>speaker series.\n \n \n \n The motivational 90-minute Zoom session, hosted by Toronto Film 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> <a href="http://www.project10.ca/about" target="_blank" rel="noopener noreferrer">Andrew Barnsley</a> and <a href="https://www.torontofilmschool.ca/programs/writing-for-film-tv-diploma/" target="_blank" rel="noopener noreferrer">Writing for Film & TV</a> Program Director <a href="https://www.imdb.com/name/nm1733337/" target="_blank" rel="noopener noreferrer">Adam Till</a>, covered all aspects of Vardalos’ career from her days on stage at <a href="https://www.secondcity.com/toronto/" target="_blank" rel="noopener noreferrer">Second City Toronto</a>, to her meteoric rise to fame and critical acclaim with <a href="https://en.wikipedia.org/wiki/My_Big_Fat_Greek_Wedding" target="_blank" rel="noopener noreferrer"><em>My Big Fat Greek Wedding</em></a><em>, </em>to her recent string of sold-out stage runs of <a href="https://www.concordtheatricals.com/p/62781/tiny-beautiful-things" target="_blank" rel="noopener noreferrer"><em>Tiny Beautiful Things, </em></a>and everything in between.\n \n \n <p style="text-align: center;"><iframe src="https://www.youtube.com/embed/HMZPQ_S9UT4" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>\n \n \n <strong>On going against her parents’ wishes to pursue her passion for acting </strong>\n \n <strong> </strong>\n \n “The most supported children rarely have anything to prove. So, if you have ethnic parents saying ‘No, you’re not going to be a stand-up comic. No, you’re not going to be a screenwriter. No, you’re not going to be a ballerina,’ you’re going to work pretty hard…\n \n \n \n “When I told my dad I wanted to be an actress, he said ‘Okay, you can go to school, you can learn acting, and then you can be a teacher and teach acting’…But I applied for Ryerson and when I got in, I inflated the numbers and told him: ‘Dad, a thousand kids auditioned from all across Canada and they only take 15 kids. And I’m the only Greek!’ And he was, like, ‘What???’ Haha, and then, of course, he wanted me to go. And now my parents have been in all my movies. They are hams.”\n \n \n \n <img class="alignnone size-medium wp-image-19650 aligncenter" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2020/04/TFS_ALL_NiaVardalosPanel_0415.jpg" alt="" width="670" height="393" />\n \n \n \n <strong>On her early days at Second City</strong>\n \n <strong> </strong>\n \n “Really my entire career was built on just leaping and being a fearless idiot. When I was auditioning for <a href="https://www.secondcity.com/toronto/" target="_blank" rel="noopener noreferrer">Second City</a>, I was at Ryerson Theatre School. I kept trying to get into Second City and I didn’t even get a callback. Someone told me if you work there, you can take the classes for free, so I took a job at the box office, took the Saturday classes for free, and learned how to improvise. And I auditioned, didn’t get a callback. Auditioned, didn’t get a callback.\n \n \n \n “And then one night – March 29, to be exact – one of the actresses got ill and was rushed to the hospital with an inner ear infection, and the stage manager came running to the box office where I worked, and was flipping through the rolodex trying to find an understudy…When the understudy didn’t answer the phone, the stage manager was, like, ‘Ugh!’ and went backstage – and I followed her. I walked up to her backstage and I said ‘Hi, my name is Nia, I work in the box office, I am a member of Actor’s Equity and I know your show.’ The reason I knew the show so well was because I was the worst box office person at Second City ever. I would take people’s tickets, and then as soon as everyone was in the theatre, I would take the phone off the hook and go in and watch the show myself. So, I had watched it for three weeks. I knew that show.\n \n \n \n “Having no other choice, they put me on. I did the show, and then the next day I showed up for my box-office shift, and all the producers were there, so I thought I was fired. But they hired me, instead, and I was in the cast all of a sudden. From there, they sent me to London, Ontario… then the producers from Chicago Second City came up to look at me, and they hired me to come down to Chicago.\n \n \n \n “So, all those adages are true: Opportunity knocks. Just be ready, be ready, because you never know what’s going to happen. Even if I never got the chance to go on stage, I still had comedy coursing through me every night just by getting to watch.”\n \n \n \n <strong>On how she came to write and launch <em>My Big Fat Greek Wedding as a one-woman stage production </em>after being dropped by her agent</strong>\n \n <strong> </strong>\n \n “After five years at Second City, I moved to Los Angeles thinking I would get a TV pilot as soon as I crossed the border into California. Alas, that did not happen, so I made my living doing voiceover work and I kept trying to break into the industry, but I wasn’t getting auditions. So, I went in to talk to my agent, and I said ‘What could I be doing? Could I maybe go in and have some generals with casting directors?’ And she said, ‘Here’s the deal, I’ve been thinking about this, and you’re not pretty enough to be a leading lady, and you’re not fat enough to be a character actress.’ I just remember waiting for her to go ‘Just kidding!’ and high five me across the table, but she didn’t. She didn’t at all. She said ‘I’ve been sending out your picture, and I can’t get you an audition, because you’re not Hispanic, and you’re not really white. What are you, anyway?’ And I said, ‘I’m Greek.’ And she said, ‘Yeah, that’s the problem. There are no Greek roles.’ And then she dropped me…\n \n \n \n “As I drove home, I thought about what she’d said was the problem: That I was Greek and there weren’t any Greek roles. So, I decided, ‘Well, I’m going to write one, then.’ So, I borrowed a friend’s computer and I wrote it…Not knowing what to do with it (when it was done), I sent it off to the Library of Congress to get it copyrighted, because I didn’t know about the Writer’s Guild or anything.\n \n \n \n “Then, while I sort of waited, I saw (fellow Second City Chicago alum) <a href="https://en.wikipedia.org/wiki/Jeff_Garlin" target="_blank" rel="noopener noreferrer">Jeff Garlin</a>’s stage show, <a href="https://en.wikipedia.org/wiki/I_Want_Someone_to_Eat_Cheese_With" target="_blank" rel="noopener noreferrer"><em>I Want Someone to Eat Cheese With</em></a>, and I saw <a href="https://en.wikipedia.org/wiki/Julia_Sweeney" target="_blank" rel="noopener noreferrer">Julia Sweeney</a>’s show, <a href="https://en.wikipedia.org/wiki/God_Said_Ha!" target="_blank" rel="noopener noreferrer"><em>God Said Ha!</em></a> and those are two formats of storytelling that are not necessarily stand-up, and that’s when I thought ‘That’s what I’m going to do!’\n \n \n \n “So, I rented a theatre with the last of my voiceover money and I jumped on stage, and I did the material from the script as a one-woman show, playing all the characters myself. There were no costumes, much in the style of Second City. The set was a typical ethnic parents’ living room that I’d gotten from the resale shop. It was a couch with lace doilies on it and some Greek bric-a-brac all over the place, and that was it. I had one single light, and I hired my stage manager from Second City for $50 a show.”\n \n \n \n <img class="alignnone size-medium wp-image-19651 aligncenter" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2020/04/TFS_ALL_NiaVardalos2_0415.jpg" alt="" width="670" height="393" />\n \n \n \n <strong>On being taken under Tom Hanks and Rita Wilson’s wings</strong>\n \n <strong> </strong>\n \n “When the show started to sell out, it was unbelievable. I mean, I went to church and handed out fliers, and the Greeks came, and then they came back with their non-Greek neighbours. And that’s when I decided I had to push my luck a little bit. I placed an ad in the <em>Los Angeles Times</em> for $500 and it was little. It was an ad for the play with my home phone number on it.\n \n \n \n “<a href="https://en.wikipedia.org/wiki/Tom_Hanks" target="_blank" rel="noopener noreferrer">Tom Hanks</a> and <a href="https://en.wikipedia.org/wiki/Rita_Wilson" target="_blank" rel="noopener noreferrer">Rita Wilson</a>, meanwhile, had just come back from New York. That morning, Rita had said, ‘Tom, let’s see some Los Angeles theatre’….and she opened the paper on the one day my ad had run, and she said ‘Oh!’ Being Greek herself, she said, ‘Let’s go see this.’ So, Rita Wilson came to the show, and she brought her mom and nieces, and she waited for me after the show. The very first thing she said to me was ‘I love you!’ and then she said, ‘This should be a movie,’ and I handed her my screenplay so fast that her hair flew back.\n \n \n \n “She sent Tom to the very next show, then he called me and he said ‘Hey, it’s Tom Hanks. I’m forming a company with my partner <a href="https://en.wikipedia.org/wiki/Gary_Goetzman" target="_blank" rel="noopener noreferrer">Gary Goetzman</a>, it’s called <a href="https://en.wikipedia.org/wiki/Playtone" target="_blank" rel="noopener noreferrer">Playtone</a> and we’d like to make your movie our first movie. And then I said the craziest thing I think I’ve ever said in my whole life, I said ‘I’m not really a writer…I’m an actor, and I’d like to play the bride.’ And he went, ‘Yeah, yeah, we’ve talked about it, you’re going to play the bride.’ And I was, like, ‘Oh my God, this guy is such a sucker’…\n \n \n \n “I will never get used to the fact that we work together and know each other, and Rita Wilson is my fairy god-sister…they’re the greatest people. I’ll never get used to it, but at the same time, they are actually extremely normal human beings, and that’s what makes them so approachable and great.”\n \n \n \n <strong>On leaps of faith</strong>\n \n <strong> </strong>\n \n “What I think is indicative of the three times I’ve been happiest in my life, is when I’m, what I call, a fearless idiot. When I went on stage from the box office at Second City, when I knew Tom Hanks was in the audience and was absolutely terrified to walk out from the wings, and the third time, when I adopted my daughter from American foster care with 14 hours notice…those are the three times in my life that have lead to the three happiest experiences of my life.”\n \n \n \n <strong>On her Academy Award nomination for the <em>My Big Fat Greek Wedding</em> screenplay</strong>\n \n <strong> </strong>\n \n “I was on a huge press tour at the time. That movie didn’t close…it was in theatres for 365 days, if not longer. So, it was just wave after wave. I’d done the <a href="https://en.wikipedia.org/wiki/The_Tonight_Show" target="_blank" rel="noopener noreferrer"><em>Tonight Show</em></a>, I think, three times for the same movie, so it was just unbelievable and I was tired. I’d been nominated at that point for a <a href="https://www.goldenglobes.com/person/nia-vardalos" target="_blank" rel="noopener noreferrer">Golden Globe for Best Actress</a> and we’d been nominated for <a href="https://www.goldenglobes.com/film/my-big-fat-greek-wedding" target="_blank" rel="noopener noreferrer">Best Comedy</a>, so really, my cup ranneth over, so I slept in the morning of the nominations. The phone rang, and it was my best friend <a href="https://en.wikipedia.org/wiki/Kathy_Greenwood" target="_blank" rel="noopener noreferrer">Kathy Greenwood</a>, and she was crying, and in my sleep haze, I didn’t know what was happening and I got scared. I went, ‘What’s wrong?’ and she said ‘You got nominated for an <a href="https://www.imdb.com/name/nm0889522/awards" target="_blank" rel="noopener noreferrer">Academy Award</a>, you a**hole!’ And then call-waiting from that phone call was my parents, and then call-waiting from that call was Tom Hanks and Rita Wilson…And Tom had said very early on, ‘I think you’re going to get nominated for an Academy Award.’”\n \n \n \n <strong>On her writing process</strong>\n \n <strong> </strong>\n \n “I write through improvisation. I do not know where I’m going to go as I write, which means that my scripts come out big and fat and ugly and ungainly. They’re a mess. But I don’t judge it, I just get it out, write it – typos and all – and keep going, keep going. And then when it’s finished, I’ll usually go back, take a look at it, try and adjust big chunks of it. But I always print it to read it – because I believe we process information differently by turning a page. Then I put it away. I’ll go for coffee with my girlfriends, I’ll go shoe shopping if there’s a sale, I’ll do anything but look at that screenplay. Because I believe everything, like a good sauce, needs to marinate. Then I’ll go back and I’ll read the screenplay the same way, turning the pages, again. And that’s when the whole story will pop out at you. All of a sudden, you’ll go ‘Ahh! It’s not about her, it’s about the sister and it’s about the cousin’, and that’s when I’ll go back and do the rewrite, because I love rewriting. I hate writing, it’s hard. Rewriting is much, much easier. So, that’s my process.”\n \n \n \n <strong>On lines she won’t cross when it comes to portraying her family on screen</strong>\n \n <strong> </strong>\n \n “First of all, everyone’s funny in my family. Everyone. I don’t know why I’m the only person in my family who gets paid to do it, because it is honestly a super funny family. And we’re not mean. None of us are mean humour, we will joke and poke at each other and be super funny. So, they take it really well and they’ve been to all my premieres…\n \n \n \n “However, yes, there are things that I will not put into my screenplays. My mom reads all my screenplays that are about my family and we discuss things to make sure that I haven’t crossed the line. One of the things I did not do, which I can talk about now, is, the night before my wedding, my cousin came out, because he knew it was the perfect time. In all the pandemonium of the wedding, he came out and…none of the older Greek parents freaked out, it was great. It was ingenious. But I didn’t put that into my (<em>My Big Fat Greek Wedding</em>) movie, because that’s not my story to tell. It’s his story. So, that’s an example.”\n \n \n \n <img class="alignnone size-medium wp-image-19652 aligncenter" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2020/04/TFS_ALL_NiaVardalosCher_0415.jpg" alt="" width="670" height="391" />\n \n \n \n <strong>On when she knew she wanted to pursue a career in show business</strong>\n \n <strong> </strong>\n \n “This is another name drop, but I’m just going to say it: I’m friends with <a href="https://en.wikipedia.org/wiki/Cher" target="_blank" rel="noopener noreferrer">Cher</a>. I’m just going to hold there. It’s crazy, right? And one of the things that she said that really, really stayed with me is that she always knew she was going to be famous, which is an amazing thing to say, right? She always knew. She knew she could sing. Her mom was hugely supportive of her, but how did she know she was going to be, not just successful, but famous? I didn’t have that.\n \n \n \n “What I did know is I that I wanted to act. And if I’d stayed in Winnipeg and done <a href="https://www.rainbowstage.ca/" target="_blank" rel="noopener noreferrer">Rainbow Stage</a> and the <a href="https://royalmtc.ca/" target="_blank" rel="noopener noreferrer">Manitoba Theatre Centre</a>, I would’ve been super happy. Really happy. It doesn’t matter the level of the playing field. It does not matter.\n \n \n \n “If you are in this film school and ultimately you decide you want to be a baker who writes screenplays or does community theatre on the side, and you get that itch scratched, that’s still a life fulfilled. I’m equally happy as when I was at Rainbow Stage doing <em>Kismet</em>. I’m a theatre geek. I’m just happy when I’m making something, creating something.”\n \n \n \n <strong>On how feeling ‘othered’ can lead to great comedy</strong>\n \n <strong> </strong>\n \n “I think anybody who’s a little bit brown, like me, we felt like we didn’t fit in...Being othered, while painful at the time, leads to great comedy. And I think <a href="https://en.wikipedia.org/wiki/Russell_Peters" target="_blank" rel="noopener noreferrer">Russell Peters</a> grew up the same way, the way his parents were so strict. All of that is horrifying and makes you so mad at the time, but it’s great to laugh at later. And I wonder now about the trans community, and I wonder now about being marginalized if you are gay, or if you are in any way feeling like you’re outside of society. I do think that that lends itself to great stories.”\n \n \n \n <strong>On identifying opportunity and seizing upon it</strong>\n \n <strong> </strong>\n \n “You cannot wait for permission to be in this industry and you cannot wait for the phone to ring – you have to make that call yourself. There are more opportunities than ever now, in that we have iPhones, we can film things, and we can put them on YouTube, or any form from Instagram to Snapchat, to anywhere else you can just be creative and you can make a name for yourself.\n \n \n \n “But if fame is the goal, you’re creatively dead, and please don’t. But if being creative is important to you, then you can do it – you don’t have to wait for the opportunity to get hired. I did not make a living, for a really long time, being an actor, but I still called myself an actor.” <strong> </strong>\n \n \n \n """ |
post_title | "Jason Priestley's Transformation From Teen Heartthrob to Acclaimed Actor/Director Impresses 'In Conversation' Audience"
|
post_excerpt | "" |
post_status | "publish"
|
comment_status | "closed"
|
ping_status | "open"
|
post_password | "" |
post_name | "jason-priestleys-transformation-from-teen-heartthrob-to-acclaimed-actor-director-impresses-in-conversation-audience"
|
to_ping | "" |
pinged | "" |
post_modified | "2023-03-27 21:07:58"
|
post_modified_gmt | "2023-03-27 21:07:58"
|
post_content_filtered | "" |
post_parent | 0
|
guid | "https://dev.tfs.staging.poundandgrain.ca/?p=19756"
|
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/jason-priestleys-transformation-from-teen-heartthrob-to-acclaimed-actor-director-impresses-in-conversation-audience/"
|
USER | "forge"
|
HOME | "/home/forge"
|
HTTP_REFERER | "https://dev.tfs.staging.poundandgrain.ca/blog/jason-priestleys-transformation-from-teen-heartthrob-to-acclaimed-actor-director-impresses-in-conversation-audience"
|
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 | "18398"
|
REMOTE_ADDR | "18.225.117.1"
|
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 | 1731850631.8729
|
REQUEST_TIME | 1731850631
|
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"
|