*
* @package org.cocur.slugify
* @author Florian Eckerstorfer <florian@eckerstorfer.co>
* @author Marchenko Alexandr
* @copyright 2012-2014 Florian Eckerstorfer
* @license http://www.opensource.org/licenses/MIT The MIT License
*/
interface SlugifyInterface
{
/**
* Return a URL safe version of a string.
*
* @param string $string
* @param string|array|null $options
*
* @return string
*
* @api
*/
public function slugify(string $string, array|string|null $options = null): string;
}
"syntax error, unexpected '|', expecting variable (T_VARIABLE) (View: /home/forge/dev.tfs.staging.poundandgrain.ca/releases/20241113033749/web/app/themes/tfs/resources/views/single.blade.php)"
*
* @param string $__path
* @param array $__data
* @return string
*/
protected function evaluatePath($__path, $__data)
{
$obLevel = ob_get_level();
ob_start();
extract($__data, EXTR_SKIP);
// We'll evaluate the contents of the view inside a try/catch block so we can
// flush out any stray output that might get out before an error occurs or
// an exception is thrown. This prevents any partial views from leaking.
try {
include $__path;
} catch (Throwable $e) {
$this->handleViewException($e, $obLevel);
}
return ltrim(ob_get_clean());
}
/**
* Handle a view exception.
*
* @param \Throwable $e
* @param int $obLevel
* @return void
*
* @throws \Throwable
*/
protected function handleViewException(Throwable $e, $obLevel)
{
while (ob_get_level() > $obLevel) {
ob_end_clean();
}
*
* @package org.cocur.slugify
* @author Florian Eckerstorfer <florian@eckerstorfer.co>
* @author Marchenko Alexandr
* @copyright 2012-2014 Florian Eckerstorfer
* @license http://www.opensource.org/licenses/MIT The MIT License
*/
interface SlugifyInterface
{
/**
* Return a URL safe version of a string.
*
* @param string $string
* @param string|array|null $options
*
* @return string
*
* @api
*/
public function slugify(string $string, array|string|null $options = null): string;
}
"syntax error, unexpected '|', expecting variable (T_VARIABLE)"
public function unregister()
{
spl_autoload_unregister(array($this, 'loadClass'));
if (null !== $this->vendorDir) {
unset(self::$registeredLoaders[$this->vendorDir]);
}
}
/**
* Loads the given class or interface.
*
* @param string $class The name of the class
* @return true|null True if loaded, null otherwise
*/
public function loadClass($class)
{
if ($file = $this->findFile($class)) {
$includeFile = self::$includeFile;
$includeFile($file);
return true;
}
return null;
}
/**
* Finds the path to the file where the class is defined.
*
* @param string $class The name of the class
*
* @return string|false The path if found, false otherwise
*/
public function findFile($class)
{
// class map lookup
if (isset($this->classMap[$class])) {
return $this->classMap[$class];
}
*
* For the full copyright and license information, please view the LICENSE.md
* file that was distributed with this source code.
*
* ------------------------------------------------------------------
*/
declare(strict_types=1);
namespace TOC;
use Cocur\Slugify\Slugify;
use Cocur\Slugify\SlugifyInterface;
/**
* UniqueSlugify creates slugs from text without repeating the same slug twice per instance
*
* @author Casey McLaughlin <caseyamcl@gmail.com>
*/
class UniqueSlugify implements SlugifyInterface
{
/**
* @var SlugifyInterface
*/
private $slugify;
/**
* @var array
*/
private $used;
/**
* Constructor
*
* @param SlugifyInterface|null $slugify
*/
public function __construct(?SlugifyInterface $slugify = null)
{
$this->used = array();
$this->slugify = $slugify ?: new Slugify();
/**
* @return void
*/
private static function initializeIncludeClosure()
{
if (self::$includeFile !== null) {
return;
}
/**
* Scope isolated include.
*
* Prevents access to $this/self from included files.
*
* @param string $file
* @return void
*/
self::$includeFile = \Closure::bind(static function($file) {
include $file;
}, null, null);
}
}
"/home/forge/dev.tfs.staging.poundandgrain.ca/releases/20241113033749/vendor/caseyamcl/toc/src/UniqueSlugify.php"
public function unregister()
{
spl_autoload_unregister(array($this, 'loadClass'));
if (null !== $this->vendorDir) {
unset(self::$registeredLoaders[$this->vendorDir]);
}
}
/**
* Loads the given class or interface.
*
* @param string $class The name of the class
* @return true|null True if loaded, null otherwise
*/
public function loadClass($class)
{
if ($file = $this->findFile($class)) {
$includeFile = self::$includeFile;
$includeFile($file);
return true;
}
return null;
}
/**
* Finds the path to the file where the class is defined.
*
* @param string $class The name of the class
*
* @return string|false The path if found, false otherwise
*/
public function findFile($class)
{
// class map lookup
if (isset($this->classMap[$class])) {
return $this->classMap[$class];
}
/**
* @var HTML5
*/
private $htmlParser;
/**
* @var SlugifyInterface
*/
private $slugifier;
/**
* Constructor
*
* @param HTML5|null $htmlParser
* @param SlugifyInterface|null $slugify
*/
public function __construct(?HTML5 $htmlParser = null, ?SlugifyInterface $slugify = null)
{
$this->htmlParser = $htmlParser ?? new HTML5();
$this->slugifier = $slugify ?? new UniqueSlugify();
}
/**
* Fix markup
*
* @param string $markup
* @param int $topLevel
* @param int $depth
* @return string Markup with added IDs
* @throws RuntimeException
*/
public function fix(string $markup, int $topLevel = 1, int $depth = 6): string
{
if (! $this->isFullHtmlDocument($markup)) {
$partialID = uniqid('toc_generator_');
$markup = sprintf("<body id='%s'>%s</body>", $partialID, $markup);
}
$domDocument = $this->htmlParser->loadHTML($markup);
$domDocument->preserveWhiteSpace = true; // do not clobber whitespace
<?php
namespace App\View\Composers;
use DOMDocument;
use Roots\Acorn\View\Composer;
class BlogPost extends Composer
{
protected static $views = [
'partials.content-single',
];
public function override()
{
$fields = get_fields();
$htmlContent = apply_filters( 'the_content', get_the_content() );
$markupFixer = new \TOC\MarkupFixer();
$tocGenerator = new \TOC\TocGenerator();
$htmlContent = $markupFixer->fix($htmlContent);
$fields['toc'] = $tocGenerator->getOrderedHtmlMenu($htmlContent);
$fields['the_content'] = $htmlContent;
$fields['the_category'] = $this->getCategory();
return $fields;
}
public function getCategory() {
$category = null;
if(get_the_terms(get_the_id(), 'category')) {
foreach(get_the_terms(get_the_id(), 'category') as $term) {
if($term->name !== "Blog" && $term->name !== "Events" && $term->name !== "News") {
$category = $term;
return $category;
}
}
}
*/
public function compose(View $view)
{
$this->view = $view;
$this->data = new Fluent($view->getData());
$view->with($this->merge());
}
/**
* Data to be merged and passed to the view before rendering.
*
* @return array
*/
protected function merge()
{
return array_merge(
$this->with(),
$this->view->getData(),
$this->override()
);
}
/**
* Data to be passed to view before rendering
*
* @return array
*/
protected function with()
{
return [];
}
/**
* Data to be passed to view before rendering
*
* @return array
*/
protected function override()
{
return static::$views;
}
$view = array_slice(explode('\\', static::class), 3);
$view = array_map([Str::class, 'snake'], $view, array_fill(0, count($view), '-'));
return implode('/', $view);
}
/**
* Compose the view before rendering.
*
* @param \Illuminate\View\View $view
* @return void
*/
public function compose(View $view)
{
$this->view = $view;
$this->data = new Fluent($view->getData());
$view->with($this->merge());
}
/**
* Data to be merged and passed to the view before rendering.
*
* @return array
*/
protected function merge()
{
return array_merge(
$this->with(),
$this->view->getData(),
$this->override()
);
}
/**
* Data to be passed to view before rendering
*
* @return array
return $callback;
}
/**
* Build a class based container callback Closure.
*
* @param string $class
* @param string $prefix
* @return \Closure
*/
protected function buildClassEventCallback($class, $prefix)
{
[$class, $method] = $this->parseClassEvent($class, $prefix);
// Once we have the class and method name, we can build the Closure to resolve
// the instance out of the IoC container and call the method on it with the
// given arguments that are passed to the Closure as the composer's data.
return function () use ($class, $method) {
return $this->container->make($class)->{$method}(...func_get_args());
};
}
/**
* Parse a class based composer name.
*
* @param string $class
* @param string $prefix
* @return array
*/
protected function parseClassEvent($class, $prefix)
{
return Str::parseCallback($class, $this->classEventMethodForPrefix($prefix));
}
/**
* Determine the class event method based on the given prefix.
*
* @param string $prefix
* @return string
* @param \Closure|string $listener
* @param bool $wildcard
* @return \Closure
*/
public function makeListener($listener, $wildcard = false)
{
if (is_string($listener)) {
return $this->createClassListener($listener, $wildcard);
}
if (is_array($listener) && isset($listener[0]) && is_string($listener[0])) {
return $this->createClassListener($listener, $wildcard);
}
return function ($event, $payload) use ($listener, $wildcard) {
if ($wildcard) {
return $listener($event, $payload);
}
return $listener(...array_values($payload));
};
}
/**
* Create a class based listener using the IoC container.
*
* @param string $listener
* @param bool $wildcard
* @return \Closure
*/
public function createClassListener($listener, $wildcard = false)
{
return function ($event, $payload) use ($listener, $wildcard) {
if ($wildcard) {
return call_user_func($this->createClassCallable($listener), $event, $payload);
}
$callable = $this->createClassCallable($listener);
return $callable(...array_values($payload));
* @param bool $halt
* @return array|null
*/
public function dispatch($event, $payload = [], $halt = false)
{
// When the given "event" is actually an object we will assume it is an event
// object and use the class as the event name and this event itself as the
// payload to the handler, which makes object based events quite simple.
[$event, $payload] = $this->parseEventAndPayload(
$event, $payload
);
if ($this->shouldBroadcast($payload)) {
$this->broadcastEvent($payload[0]);
}
$responses = [];
foreach ($this->getListeners($event) as $listener) {
$response = $listener($event, $payload);
// If a response is returned from the listener and event halting is enabled
// we will just return this response, and not call the rest of the event
// listeners. Otherwise we will add the response on the response list.
if ($halt && ! is_null($response)) {
return $response;
}
// If a boolean false is returned from a listener, we will stop propagating
// the event to any further listeners down in the chain, else we keep on
// looping through the listeners and firing every one in our sequence.
if ($response === false) {
break;
}
$responses[] = $response;
}
return $halt ? null : $responses;
}
protected function addEventListener($name, $callback)
{
if (Str::contains($name, '*')) {
$callback = function ($name, array $data) use ($callback) {
return $callback($data[0]);
};
}
$this->events->listen($name, $callback);
}
/**
* Call the composer for a given view.
*
* @param \Illuminate\Contracts\View\View $view
* @return void
*/
public function callComposer(ViewContract $view)
{
$this->events->dispatch('composing: '.$view->name(), [$view]);
}
/**
* Call the creator for a given view.
*
* @param \Illuminate\Contracts\View\View $view
* @return void
*/
public function callCreator(ViewContract $view)
{
$this->events->dispatch('creating: '.$view->name(), [$view]);
}
}
} catch (Throwable $e) {
$this->factory->flushState();
throw $e;
}
}
/**
* Get the contents of the view instance.
*
* @return string
*/
protected function renderContents()
{
// We will keep track of the amount of views being rendered so we can flush
// the section after the complete rendering operation is done. This will
// clear out the sections for any separate views that may be rendered.
$this->factory->incrementRender();
$this->factory->callComposer($this);
$contents = $this->getContents();
// Once we've finished rendering the view, we'll decrement the render count
// so that each sections get flushed out next time a view is created and
// no old sections are staying around in the memory of an environment.
$this->factory->decrementRender();
return $contents;
}
/**
* Get the evaluated contents of the view.
*
* @return string
*/
protected function getContents()
{
return $this->engine->get($this->path, $this->gatherData());
}
$this->view = $view;
$this->path = $path;
$this->engine = $engine;
$this->factory = $factory;
$this->data = $data instanceof Arrayable ? $data->toArray() : (array) $data;
}
/**
* Get the string contents of the view.
*
* @param callable|null $callback
* @return array|string
*
* @throws \Throwable
*/
public function render(callable $callback = null)
{
try {
$contents = $this->renderContents();
$response = isset($callback) ? $callback($this, $contents) : null;
// Once we have the contents of the view, we will flush the sections if we are
// done rendering all views so that there is nothing left hanging over when
// another view gets rendered in the future by the application developer.
$this->factory->flushStateIfDoneRendering();
return ! is_null($response) ? $response : $contents;
} catch (Throwable $e) {
$this->factory->flushState();
throw $e;
}
}
/**
* Get the contents of the view instance.
*
* @return string
<?php $__env->startSection('content'); ?>
<?php while(have_posts()): ?> <?php (the_post()); ?>
<?php echo $__env->first(['partials.content-single-' . get_post_type(), 'partials.content-single'], \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path']))->render(); ?>
<?php endwhile; ?>
<?php $__env->stopSection(); ?>
<?php echo $__env->make('layouts.app', \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path']))->render(); ?><?php /**PATH /home/forge/dev.tfs.staging.poundandgrain.ca/releases/20241113033749/web/app/themes/tfs/resources/views/single.blade.php ENDPATH**/ ?>
/**
* Get the evaluated contents of the view at the given path.
*
* @param string $__path
* @param array $__data
* @return string
*/
protected function evaluatePath($__path, $__data)
{
$obLevel = ob_get_level();
ob_start();
extract($__data, EXTR_SKIP);
// We'll evaluate the contents of the view inside a try/catch block so we can
// flush out any stray output that might get out before an error occurs or
// an exception is thrown. This prevents any partial views from leaking.
try {
include $__path;
} catch (Throwable $e) {
$this->handleViewException($e, $obLevel);
}
return ltrim(ob_get_clean());
}
/**
* Handle a view exception.
*
* @param \Throwable $e
* @param int $obLevel
* @return void
*
* @throws \Throwable
*/
protected function handleViewException(Throwable $e, $obLevel)
{
while (ob_get_level() > $obLevel) {
ob_end_clean();
"/home/forge/dev.tfs.staging.poundandgrain.ca/releases/20241113033749/web/app/themes/tfs/storage/framework/views/eb422c8beb3d93cfa2fe08ce3b438f23bc0fae21.php"
*
* @param string $path
* @param array $data
* @return string
*/
public function get($path, array $data = [])
{
$this->lastCompiled[] = $path;
// If this given view has expired, which means it has simply been edited since
// it was last compiled, we will re-compile the views so we can evaluate a
// fresh copy of the view. We'll pass the compiler the path of the view.
if ($this->compiler->isExpired($path)) {
$this->compiler->compile($path);
}
// Once we have the path to the compiled file, we will evaluate the paths with
// typical PHP just like any other templates. We also keep a stack of views
// which have been rendered for right exception messages to be generated.
$results = $this->evaluatePath($this->compiler->getCompiledPath($path), $data);
array_pop($this->lastCompiled);
return $results;
}
/**
* Handle a view exception.
*
* @param \Throwable $e
* @param int $obLevel
* @return void
*
* @throws \Throwable
*/
protected function handleViewException(Throwable $e, $obLevel)
{
$e = new ViewException($this->getMessage($e), 0, 1, $e->getFile(), $e->getLine(), $e);
parent::handleViewException($e, $obLevel);
$this->factory->callComposer($this);
$contents = $this->getContents();
// Once we've finished rendering the view, we'll decrement the render count
// so that each sections get flushed out next time a view is created and
// no old sections are staying around in the memory of an environment.
$this->factory->decrementRender();
return $contents;
}
/**
* Get the evaluated contents of the view.
*
* @return string
*/
protected function getContents()
{
return $this->engine->get($this->path, $this->gatherData());
}
/**
* Get the data bound to the view instance.
*
* @return array
*/
public function gatherData()
{
$data = array_merge($this->factory->getShared(), $this->data);
foreach ($data as $key => $value) {
if ($value instanceof Renderable) {
$data[$key] = $value->render();
}
}
return $data;
}
throw $e;
}
}
/**
* Get the contents of the view instance.
*
* @return string
*/
protected function renderContents()
{
// We will keep track of the amount of views being rendered so we can flush
// the section after the complete rendering operation is done. This will
// clear out the sections for any separate views that may be rendered.
$this->factory->incrementRender();
$this->factory->callComposer($this);
$contents = $this->getContents();
// Once we've finished rendering the view, we'll decrement the render count
// so that each sections get flushed out next time a view is created and
// no old sections are staying around in the memory of an environment.
$this->factory->decrementRender();
return $contents;
}
/**
* Get the evaluated contents of the view.
*
* @return string
*/
protected function getContents()
{
return $this->engine->get($this->path, $this->gatherData());
}
/**
$this->view = $view;
$this->path = $path;
$this->engine = $engine;
$this->factory = $factory;
$this->data = $data instanceof Arrayable ? $data->toArray() : (array) $data;
}
/**
* Get the string contents of the view.
*
* @param callable|null $callback
* @return array|string
*
* @throws \Throwable
*/
public function render(callable $callback = null)
{
try {
$contents = $this->renderContents();
$response = isset($callback) ? $callback($this, $contents) : null;
// Once we have the contents of the view, we will flush the sections if we are
// done rendering all views so that there is nothing left hanging over when
// another view gets rendered in the future by the application developer.
$this->factory->flushStateIfDoneRendering();
return ! is_null($response) ? $response : $contents;
} catch (Throwable $e) {
$this->factory->flushState();
throw $e;
}
}
/**
* Get the contents of the view instance.
*
* @return string
<!doctype html>
<html <?php language_attributes(); ?>>
<?php echo \Roots\view(\Roots\app('sage.view'), \Roots\app('sage.data'))->render(); ?>
</html>
}
break;
}
}
if ( ! $template ) {
$template = get_index_template();
}
/**
* Filters the path of the current template before including it.
*
* @since 3.0.0
*
* @param string $template The path of the template to include.
*/
$template = apply_filters( 'template_include', $template );
if ( $template ) {
include $template;
} elseif ( current_user_can( 'switch_themes' ) ) {
$theme = wp_get_theme();
if ( $theme->errors() ) {
wp_die( $theme->errors() );
}
}
return;
}
"/home/forge/dev.tfs.staging.poundandgrain.ca/releases/20241113033749/web/app/themes/tfs/index.php"
<?php
/**
* Loads the WordPress environment and template.
*
* @package WordPress
*/
if ( ! isset( $wp_did_header ) ) {
$wp_did_header = true;
// Load the WordPress library.
require_once __DIR__ . '/wp-load.php';
// Set up the WordPress query.
wp();
// Load the theme template.
require_once ABSPATH . WPINC . '/template-loader.php';
}
"/home/forge/dev.tfs.staging.poundandgrain.ca/releases/20241113033749/web/wp/wp-includes/template-loader.php"
<?php
/**
* WordPress View Bootstrapper
*/
define('WP_USE_THEMES', true);
require __DIR__ . '/wp/wp-blog-header.php';
"/home/forge/dev.tfs.staging.poundandgrain.ca/releases/20241113033749/web/wp/wp-blog-header.php"
Key | Value |
query_vars | array:3 [ "page" => "" "name" => "toronto-film-school-presents-virtual-stage-production-of-al-one" "category_name" => "blog" ] |
query_string | "name=toronto-film-school-presents-virtual-stage-production-of-al-one&category_name=blog"
|
request | "blog/toronto-film-school-presents-virtual-stage-production-of-al-one"
|
matched_rule | "(.+?)/([^/]+)(?:/([0-9]+))?/?$"
|
matched_query | "category_name=blog&name=toronto-film-school-presents-virtual-stage-production-of-al-one&page="
|
did_permalink | true
|
Key | Value |
query | array:3 [ "page" => "" "name" => "toronto-film-school-presents-virtual-stage-production-of-al-one" "category_name" => "blog" ] |
query_vars | array:66 [ "page" => 0 "name" => "toronto-film-school-presents-virtual-stage-production-of-al-one" "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 | 22451
|
request | """ SELECT wp_posts.*\n \t\t\t\t\t FROM wp_posts \n \t\t\t\t\t WHERE 1=1 AND wp_posts.post_name = 'toronto-film-school-presents-virtual-stage-production-of-al-one' 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 | 22451
|
post_author | "43"
|
post_date | "2021-03-09 22:25:30"
|
post_date_gmt | "2021-03-09 22:25:30"
|
post_content | """ Confront your insecurities. Step into your power. Live unapologetically you.\n \n \n \n That was the personal checklist Toronto Film School graduate <a href="https://www.facebook.com/jamiefennphotography" target="_blank" rel="noopener noreferrer">Jamie Fenn</a> had to tick off for herself before launching her empowering new photography/video project that celebrates body positivity.\n \n \n <p style="text-align: center;"><iframe src="https://www.youtube.com/embed/JF79SuEH-pQ" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>\n \n \n “I started this project because I wanted to help people realize just how beautiful they are inside and out,” the actor-turned-photographer said of <a href="https://www.youtube.com/watch?v=g6D6jSGLHHw&list=PL30cIG1f7FtmIBy80KdPTUwGssAKZehJT" target="_blank" rel="noopener noreferrer"><em>Unapologetically Me</em></a>, whose goal is to help people ‘truly embrace’ themselves like Fenn learned to embrace herself, stretch marks and all.\n \n \n \n “I hope with every fibre of my being that the photos I share will help everyone who sees them realize just how beautiful they are.”\n \n \n \n For the project – which is showcased on her professional <a href="https://www.instagram.com/jamiefenn_photography/" target="_blank" rel="noopener noreferrer">Instagram</a>, <a href="https://www.facebook.com/jamiefennphotography" target="_blank" rel="noopener noreferrer">Facebook</a> and <a href="https://www.youtube.com/channel/UCJsPzNOYpiW4ajjc_M5TZrw" target="_blank" rel="noopener noreferrer">YouTube</a> pages – Fenn teamed up with fellow <a href="https://www.torontofilmschool.ca/programs/acting-for-film-tv-and-the-theatre-diploma/" target="_blank" rel="noopener noreferrer">Acting for Film, TV & the Theatre</a> graduate <a href="https://www.instagram.com/melie_br/" target="_blank" rel="noopener noreferrer">Mélie B. Rondeau</a> to recruit a diverse group of individuals willing to share their stories on camera.\n \n \n \n Luckily for Fenn and Rondeau, they needed to look no further than the Toronto Film School community to fill out seven of the eight spots on the <em>Unapologetically Me</em> roster of models – including <a href="https://www.instagram.com/maxineclement/" target="_blank" rel="noopener noreferrer">Maxine Clement</a>, <a href="https://www.instagram.com/itsjewelstarr/" target="_blank" rel="noopener noreferrer">Jewel Starr</a>, <a href="https://www.instagram.com/chriskellymediatv/" target="_blank" rel="noopener noreferrer">Chris Kelly</a>, <a href="https://www.instagram.com/alex.miguel.a/" target="_blank" rel="noopener noreferrer">Alex Almeida</a>, and <a href="https://www.instagram.com/iamcydneytheartistofficial/" target="_blank" rel="noopener noreferrer">Cydney Cochrane</a>, as well as Fenn and Rondeau themselves.\n \n \n \n <img class="aligncenter wp-image-22377 size-medium" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2021/03/TFS_ACT_UnapologeticallyMeBehindScenes1_0218.jpg" alt="Behind the scenes photo of Jewel Starr during the Unapologetically me shoot" width="411" height="526" />\n \n \n \n “Most of the participants are alumni of the Toronto Film School…They were all so enthusiastic about it and they all wanted to participate,” said Rondeau, who not only teaches at, but also serves as the alumni relations coordinator for the school.\n \n \n \n “They come from all sorts of backgrounds – they look different, they speak differently, their energy is different. I just think that says a lot about this wonderful community we have at the Toronto Film School, and also how important it is to stay connected and keep creating together…even during a pandemic.”\n \n \n \n Shot in-studio over the course of a single weekend back in November 2020, the <em>Unapologetically Me </em>shoot was originally scheduled for last summer, but had to be postponed due to the COVID-19 lockdown.\n \n \n \n For both Fenn and Rondeau, the shoot weekend was “like a breath of fresh air” – both spiritually and emotionally.\n \n \n \n <img class="aligncenter wp-image-22376 size-medium" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2021/03/TFS_ACT_UnapologeticallyMeBehindScenes2_0218.jpg" alt="Behind the scenes photo of Jamie Fenn and Alex Almeida during the Unapologetically me shoot" width="670" height="523" />\n \n \n \n “It was a really, really great weekend to just be together, create something, talk about body positivity, self-love and self-care…I just felt so inspired by everybody,” said Rondeau, who, along with Fenn, took the opportunity to step in front of the camera herself to share her own story that weekend.\n \n \n \n “Listening to everyone’s stories, you get to realize that, yes, we’re all different – we have different body types, different skin colours, religions, sexual preferences – but ultimately, everybody has insecurities about their appearance and, in a way, we’re all connected.”\n \n \n \n While Fenn didn’t initially think she wanted to participate in the project herself, she eventually decided it was only right to come forward and share her own eating issues and body positivity struggles.\n \n \n \n “Originally, I just wanted to be behind the camera, but then I thought how hypocritical of me to ask a bunch of strangers to get up in front of the camera and share their deepest, darkest secrets, while I just sit back behind the camera,” she said, calling the experience a “terrifying” yet ultimately “empowering” one.\n \n \n <p style="text-align: center;"> <img class="alignnone wp-image-22387 size-medium" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2021/03/TFS_ACT_UnapologeticallyMeBehindScenesJamie_0303.jpg" alt="Behind the scenes photo of Jamie Fenn during the Unapologetically me shoot" width="411" height="526" /></p>\n \n \n “It really was wonderful to finally share those things, and I think it really helped my mental health in the long-term. When you have something like that that’s been bottled up for so long…you’re constantly thinking about it. But now that I know it’s out there, it’s done. I’ve said what I needed to say, and I can move on. I can get over that mountain.”\n \n \n \n In the weeks between the <em>Unapologetically Me</em> shoot and the project’s January 2021 launch, Fenn and Rondeau were kept busy editing all the footage from each of the eight interviews down into 15- to 20-minute profile videos, selecting the best photos from each participant’s shoot and pulling their most meaningful quotes to highlight for the project.\n \n \n \n On Jan. 11, <em>Unapologetically Me</em> officially launched on Fenn’s <a href="https://www.instagram.com/jamiefenn_photography/" target="_blank" rel="noopener noreferrer">Instagram</a> and <a href="https://www.facebook.com/jamiefennphotography" target="_blank" rel="noopener noreferrer">Facebook</a> – with the first of what would become twice-weekly photo drops on Mondays and Wednesdays, followed by the weekly Friday unveiling of the participants’ video profiles on her <a href="https://www.youtube.com/watch?v=g6D6jSGLHHw&list=PL30cIG1f7FtmIBy80KdPTUwGssAKZehJT" target="_blank" rel="noopener noreferrer">YouTube</a> page.\n \n \n \n “So far, the response has honestly been amazing. I’ve had so many people reach out in private,” Fenn said of the eight-week project, which recently wrapped with the release of Rondeau’s story.\n \n \n \n “We would love to do this again with more people post-COVID, so we can do fun things like group photos. I have a lot of friends who have some wonderful stories to tell, and I would love to meet new people through this project and do it all again.”\n \n \n \n Until the second edition of <em>Unapologetically Me</em> can become a reality, Fenn and Rondeau are hopeful their efforts will prove as meaningful to others as the experience of creating it was to them.\n \n \n \n “(<em>Unapologetically Me</em>) gave me a new purpose, and I’m really hoping people get to enjoy what we’re sharing and love themselves a little more,” Rondeau said.\n \n \n \n “If we manage to help just one individual out there smile and look at themselves in a different, more positive way, we’re going to have succeeded.”\n \n \n <p style="text-align: center;"><strong>Here's a sneak peek of Toronto Film School's <em>Unapologetically Me</em> participants: </strong></p>\n \n \n \n <p style="text-align: center;"> <img class="alignnone wp-image-22379 size-medium" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2021/03/TFS_ACT_UnapologeticallyMeJamieFenn_0218.jpg" alt="Photo of Jamie Fenn" width="670" height="393" /></p>\n <p style="text-align: center;"><a href="https://www.instagram.com/jamiefenn_photography/" target="_blank" rel="noopener noreferrer"><strong>Jamie Fenn</strong></a></p>\n <p style="text-align: center;"><a href="https://www.torontofilmschool.ca/programs/acting-for-film-tv-and-the-theatre-diploma/" target="_blank" rel="noopener noreferrer">Acting for Film, TV & the Theatre</a> alumnus</p>\n <p style="text-align: center;">“When you look up the definition of stretch marks this is what you get: ‘streaks or stripes on the skin, especially on the abdomen, caused by distention of skin from obesity or during pregnancy.’ This definition really pisses me off. We have to stop correlating stretch marks with fatness/obesity. Stretch marks are a sign of growth and change that your body has gone through throughout your life. I love my stretch marks and every other part of my body. Every mark on your body tells a story.”</p>\n <p style="text-align: center;">To hear more of Jamie’s story, watch her full <em>Unapologetically Me </em>video <a href="https://www.youtube.com/watch?v=g6D6jSGLHHw&t=3s" target="_blank" rel="noopener noreferrer"><strong>here</strong>.</a></p>\n \n \n \n <p style="text-align: center;"><img class="alignnone wp-image-22380 size-medium" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2021/03/TFS_ACT_UnapologeticallyMeMaxine_0218.jpg" alt="Photo of Maxine Clement" width="411" height="526" /></p>\n <p style="text-align: center;"><a href="https://www.instagram.com/maxineclement/" target="_blank" rel="noopener noreferrer"><strong>Maxine Clement</strong></a></p>\n <p style="text-align: center;"><a href="https://www.torontofilmschool.ca/programs/writing-for-film-tv-diploma/" target="_blank" rel="noopener noreferrer">Writing for Film & TV</a> alumnus<strong> </strong></p>\n <p style="text-align: center;">“Growing up, I never really had a word for who I thought I was. I really only had bad, negative representations. A lot of trans people will say the same thing where they grew up with <em>Jerry Springer</em>, <em>Silence of the Lambs</em>, <em>Ace Ventura</em>...Just very negative representations…We didn’t even know who we were!” \n \n To hear more of Maxine’s story, watch her full <em>Unapologetically Me </em>video <a href="https://www.youtube.com/watch?v=v-CrFqmn-wU" target="_blank" rel="noopener noreferrer"><strong>here</strong></a>.</p>\n \n \n \n <p style="text-align: center;"><img class="alignnone wp-image-22381 size-medium" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2021/03/TFS_ACT_UnapologeticallyMeJewel_0218.jpg" alt="Photo of Jewel Starr" width="411" height="526" /></p>\n <p style="text-align: center;"><a href="https://www.instagram.com/itsjewelstarr/" target="_blank" rel="noopener noreferrer"><strong>Jewel Starr</strong></a></p>\n <p style="text-align: center;"><a href="https://www.torontofilmschool.ca/programs/acting-for-film-tv-and-the-theatre-diploma/" target="_blank" rel="noopener noreferrer">Acting for Film, TV & the Theatre</a> alumnus<strong> </strong></p>\n <p style="text-align: center;">“One thing that I started doing for myself that really helps is that I pick one thing I really love about myself and I admire that. And when I think, you know, I'm confident enough in that area, then I will move on to something else that I don't feel as much love toward, but I'll start to give it more love. Yes, I have stretch marks but, you know, it's a design. It's art! It's a tattoo. It's like my own personal tattoo from God.”</p>\n <p style="text-align: center;">To hear more of Jewel’s story, watch her full <em>Unapologetically Me </em>video <a href="https://www.youtube.com/watch?v=dOqM96H8eLA"><strong>here</strong></a>.</p>\n \n \n \n \n <img class="aligncenter wp-image-22382 size-medium" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2021/03/TFS_ACT_UnapologeticallyMeChris_0218.jpg" alt="Photo of Chris Kelly" width="411" height="526" />\n <p style="text-align: center;"><a href="https://www.instagram.com/chriskellymediatv/" target="_blank" rel="noopener noreferrer"><strong>Chris Kelly</strong></a></p>\n <p style="text-align: center;"><a href="https://www.torontofilmschool.ca/programs/acting-for-film-tv-and-the-theatre-diploma/" target="_blank" rel="noopener noreferrer">Acting for Film, TV & the Theatre</a> alumnus</p>\n <p style="text-align: center;">”What I would tell myself if I was able to speak to my inner child…I would say, ‘The world isn't as scary as you think it is.’ It can be, but again you just have to be able to trust your gut instinct, build yourself a support system and ...trust.”</p>\n <p style="text-align: center;">To hear more of Chris’s story, watch his full <em>Unapologetically Me </em>video <a href="https://www.youtube.com/watch?v=o6qS_e2Cu0U"><strong>here</strong></a>.</p>\n \n \n \n <p style="text-align: center;"><img class="alignnone wp-image-22383 size-medium" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2021/03/TFS_ACT_UnapologeticallyMeAlexAlmeida_0218.jpg" alt="Photo of Alex Almeida" width="411" height="526" /></p>\n <p style="text-align: center;"><a href="https://www.instagram.com/alex.miguel.a/" target="_blank" rel="noopener noreferrer"><strong>Alex Almeida</strong></a></p>\n <p style="text-align: center;"><a href="https://www.torontofilmschool.ca/programs/acting-for-film-tv-and-the-theatre-diploma/" target="_blank" rel="noopener noreferrer">Acting for Film, TV & the Theatre</a> student</p>\n <p style="text-align: center;">“Wear whatever you want. It's so strange that this opinion still lasts that men can't wear a dress. I work at a restaurant downtown and we wear uniforms. The girls can wear dresses and they're encouraged to wear makeup, which is so strange. Men have to do dress shirts and dress pants. I asked my manager, ‘If I were to come in a dress tomorrow, what would happen?’ I work in the gay village and they still said, ‘You know...I guess, technically, you could still wear it.’ But that's not the response it should be!” </p>\n <p style="text-align: center;">To hear more of Alex’s story, watch his full <em>Unapologetically Me </em>video <a href="https://www.youtube.com/watch?v=kSDQDAsUr5I" target="_blank" rel="noopener noreferrer"><strong>here</strong></a>.</p>\n \n \n \n <p style="text-align: center;"><img class="alignnone wp-image-22384 size-medium" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2021/03/TFS_ACT_UnapologeticallyMeCydneyCochrane_0218.jpg" alt="Photo of Cydney Cochrane" width="411" height="526" /></p>\n <p style="text-align: center;"><a href="https://www.instagram.com/iamcydneytheartistofficial/" target="_blank" rel="noopener noreferrer"><strong>Cydney Cochrane</strong></a></p>\n <p style="text-align: center;"><a href="https://www.torontofilmschool.ca/programs/acting-for-film-tv-and-the-theatre-diploma/" target="_blank" rel="noopener noreferrer">Acting for Film, TV & the Theatre</a> alumnus</p>\n <p style="text-align: center;">“I know it’s more appropriate to say ‘plus-size’, but I like using the word ‘fat’ because it’s not a bad word to me.I think it’s still controversial. When you look at a fat woman or a fat man and they’re totally confident and comfortable and happy, people are like ‘But you’re fat! You should be angry about that. You should want to change that! That’s not right!’ Yes, you’re fat, but just because society deemed it as wrong, doesn’t mean that it actually is.”</p>\n <p style="text-align: center;">To hear more of Cydney’s story, watch her full <em>Unapologetically Me </em>video <a href="https://www.youtube.com/watch?v=7THgmM4fVus" target="_blank" rel="noopener noreferrer"><strong>here</strong>.</a></p>\n \n \n \n <p style="text-align: center;"><img class="alignnone wp-image-22385 size-medium" src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2021/03/TFS_ACT_UnapologeticallyMeMelieBRondeau_0218.jpg" alt="Photo of Melie B. Rondeau" width="411" height="526" /></p>\n <p style="text-align: center;"><strong><a href="https://www.instagram.com/melie_br/" target="_blank" rel="noopener noreferrer">Mélie B. Rondeau</a></strong></p>\n <p style="text-align: center;"><a href="https://www.torontofilmschool.ca/programs/acting-for-film-tv-and-the-theatre-diploma/" target="_blank" rel="noopener noreferrer">Acting for Film, TV & the Theatre</a> alumnus</p>\n <p style="text-align: center;">“My roommate said something really interesting. She said, ‘My good friend calls her body her Adventure Suit.’ I like that! It’s a suit that you get from the moment you are born. It envelops your soul and it allows you to go through all these activities. You know, hike a mountain, have sex, eat great food, go to the gym… It resonated with me! Now, when I feel bad in my own skin, I try to think about that. It’s my Adventure Suit! It was given to me. I didn’t ask for it, but I’m grateful I have one.”</p>\n <p style="text-align: center;">To hear more of Mélie’s story, watch her full <em>Unapologetically Me </em>video <a href="https://www.youtube.com/watch?v=OE9YKvlZTSg&list=PL30cIG1f7FtmIBy80KdPTUwGssAKZehJT&index=11" target="_blank" rel="noopener noreferrer"><strong>here</strong></a>.</p>\n \n \n """ |
post_title | "Toronto Film School Presents Virtual Stage Production of AL/ONE"
|
post_excerpt | "" |
post_status | "publish"
|
comment_status | "closed"
|
ping_status | "open"
|
post_password | "" |
post_name | "toronto-film-school-presents-virtual-stage-production-of-al-one"
|
to_ping | "" |
pinged | "" |
post_modified | "2023-03-27 21:07:34"
|
post_modified_gmt | "2023-03-27 21:07:34"
|
post_content_filtered | "" |
post_parent | 0
|
guid | "https://dev.tfs.staging.poundandgrain.ca/?p=22451"
|
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/toronto-film-school-presents-virtual-stage-production-of-al-one/"
|
USER | "forge"
|
HOME | "/home/forge"
|
HTTP_REFERER | "https://dev.tfs.staging.poundandgrain.ca/blog/toronto-film-school-presents-virtual-stage-production-of-al-one"
|
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 | "9741"
|
REMOTE_ADDR | "3.15.141.221"
|
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 | 1731850038.0692
|
REQUEST_TIME | 1731850038
|
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"
|