*
* @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" => "what-is-the-role-of-executive-producer" "category_name" => "blog" ] |
query_string | "name=what-is-the-role-of-executive-producer&category_name=blog"
|
request | "blog/what-is-the-role-of-executive-producer"
|
matched_rule | "(.+?)/([^/]+)(?:/([0-9]+))?/?$"
|
matched_query | "category_name=blog&name=what-is-the-role-of-executive-producer&page="
|
did_permalink | true
|
Key | Value |
query | array:3 [ "page" => "" "name" => "what-is-the-role-of-executive-producer" "category_name" => "blog" ] |
query_vars | array:66 [ "page" => 0 "name" => "what-is-the-role-of-executive-producer" "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 | 29445
|
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 = 'what-is-the-role-of-executive-producer' 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 | 29445
|
post_author | "2"
|
post_date | "2023-02-17 00:00:00"
|
post_date_gmt | "2023-02-17 00:00:00"
|
post_content | """ <img src="https://dev.tfs.staging.poundandgrain.ca/app/uploads/2023/03/alex-simpson-I9vjpkRB8XE-unsplash-1-scaled.jpg" alt="role of executive producer" width="670" height="447" class="alignnone size-medium wp-image-27722" />\n \n </br>\n \n Of all the positions involved in a film or television production, the most commonly misunderstood also happens to be one of the most important – the executive producer (EP). \n \n If you’ve watched your fair share of movies and shows, you might be familiar with names like <a href="https://www.imdb.com/name/nm0498278/?ref_=fn_al_nm_1" rel="noopener" target="_blank">Stan Lee</a>, <a href="https://www.imdb.com/name/nm0195669/?ref_=fn_al_nm_1" rel="noopener" target="_blank">Louis D'Esposito</a>, <a href="https://www.imdb.com/name/nm0722274/?ref_=fn_al_nm_1" rel="noopener" target="_blank">Shonda Rhimes</a>, and <a href="https://www.imdb.com/name/nm0000988/?ref_=fn_al_nm_1" rel="noopener" target="_blank">Jerry Bruckheimer</a>. These are all world-class EPs whose projects routinely gross millions of dollars. However, if you were asked to explain what they do and how they contribute to the success of their project, would you be able to?\n \n In the simplest terms, executive producers are the money players, the top-level decision-makers, who ensure a project has enough funding and resources to be made. \n \n While this might sound straightforward, actually wrapping your head around the day-to-day duties of an EP can be challenging. This is due to the fact that their involvement in a film or show is simply less visible than that of other positions (e.g. producer or director) and because their responsibilities fluctuate from project to project.\n \n So don’t fret if you’ve ever found yourself asking: \n \n \t<p style="padding-left:25px">• What the heck does an executive producer even do?</p>\n \n \t<p style="padding-left:25px">• What's the difference between them and a regular producer?</p>\n \n \t<p style="padding-left:25px">• How much money does an executive producer make? Is it in royalties or a salary?</p>\n \n \n \n And if these questions still remain a mystery for you, then you’ve come to the right place! In this blog, we’ll provide an all-in-one overview of the executive producer role.\n \n Let’s get started!\n \n \n <h1>What is an Executive Producer?</h1>\n \n The executive producer sits at the top of the production hierarchy as it is their job to source and secure financing for production. Without them, a film or show could never be made as they are the ones who kickstart the project. \n \n Their role goes beyond just getting a project off the ground, however. EPs manage budgets and serve as high-level supervisors throughout the entire lifespan of a project, including its development, production, post-production, and distribution. \n \n What’s more, depending on the project, their role can quickly take on a hybrid quality – EPs often find themselves involved in making key creative decisions, especially if they are personally financing a project.\n \n For an in-depth explanation of the role of an EP, listen to this exclusive interview with Andrew Barnsley, an executive producer on hit shows “Schitt’s Creek” and “Son of a Critch.” \n \n </br>\n https://www.youtube.com/watch?v=G6886s0Fij4\n </br>\n \n <h1>What’s the Difference Between an Executive Producer and a Producer?</h1>\n \n \n In many ways, executive producers are like a company's <a href="https://www.investopedia.com/terms/c/ceo.asp" rel="noopener" target="_blank">Chief Executive Officer</a> (CEO); they’re top-level leaders who manage a project’s resources and are responsible for making major strategic decisions. \n \n Meanwhile, producers are similar to a <a href="https://www.investopedia.com/terms/c/coo.asp" rel="noopener" target="_blank">Chief Operating Officer</a> (COO); they’re hired by EPs and are responsible for managing production operations at the ground level.\n Despite being higher on the pecking order, executive producers typically have fewer day-to-day responsibilities than producers. They also have far less creative control over a project. Really, when it comes down to it, <strong>executive producers deal with big business-related decisions</strong> such as:\n \n \t<p style="padding-left:25px">• What script to acquire</p>\n \n \t<p style="padding-left:25px">• How to finance a project</p>\n \n \t<p style="padding-left:25px">• What distribution strategy to roll out</p>\n \n Producers, on the other hand, are responsible for managing a production’s day-to-day logistics. In comparison to EP’s, they are more creatively connected to a film or show’s material as it is their job to ensure that the creative vision of a project is brought to fruition. Accordingly, <strong>producers handle the daily creative and operational duties of production</strong> such as:\n \n \t<p style="padding-left:25px">• Hiring and managing directors, cast, and crew</p>\n \n \t<p style="padding-left:25px">• Continuously coordinating and collaborating with multiple stakeholders </p>\n \n \t<p style="padding-left:25px">• Overseeing the creative and technical elements of a shoot </p>\n \n For a more in-depth explanation of the role of the executive producer, including their potential career paths and compensation, <a href="https://www.coursecompare.ca/what-is-a-producer/" rel="noopener" target="_blank">check out this blog</a> by Michaelangelo Masangkay, the Director of Production for Toronto Film School’s film production program.\n \n <h1>What are the Duties of an Executive Producer?</h1>\n \n If you really want to understand the role of the executive producer, you’ll have to understand how their duties vary depending on what stage of production a movie or show is in. \n \n A day in an EP’s life would look quite different during the development stage of a film than it would during post-production. \n \n In light of this, we’ve opted to break down an EP’s responsibilities not by individual duties, but by the three main stages of production: development, production, and post-production.\n \n <h1>Responsibilities of an Executive Producer During Development </h1>\n \n Development is the first stage of production and includes a number of highly creative and iterative processes including ideation, pitching, script development, audience analysis, casting, and financing. Without a doubt, for an EP, the development stage is the most important phase of the production process. \n \n An EP’s primary responsibilities during this stage typically include\n \n \t<p style="padding-left:25px">• Sourcing and developing ideas for a film or television show (buying scripts, purchasing rights to IP, hiring writers to develop original concepts)</p>\n \n \t<p style="padding-left:25px">• Raising funds to produce the film or show by reaching out and negotiating with financiers, studios, or other independent sources </p>\n \n \t<p style="padding-left:25px">• Reviewing key creative elements to ensure that the project does not pose any legal or financial risks </p>\n \n \t<p style="padding-left:25px">• Hiring a producer and other key executive personnel</p>\n \n \t<p style="padding-left:25px">• Assessing and approving the budget as proposed by the project’s <a href="https://www.masterclass.com/articles/film-101-what-does-a-line-producer-do" rel="noopener" target="_blank">line producer</a> </p>\n \n \n <h1>Responsibilities of an Executive Producer During Production</h1>\n \n The production phase is when the actual filming or recording of the project takes place. This stage involves the assembly of cast and crew, the setup of equipment and sets, and the recording of scenes. \n \n An EP’s primary responsibilities during this stage typically include\n \n \n \t<p style="padding-left:25px">• Maintaining a bird’s-eye view of the production</p>\n \n \t<p style="padding-left:25px">• Ensuring the project is both on-brand and on-budget </p>\n \n \t<p style="padding-left:25px">• Keeping external stakeholders informed of the production’s progress, including investors, studios, and distribution </p>\n \n \n <h1>Responsibilities of an Executive Producer During Post-Production</h1>\n \n The post-production stage is the final phase of a film or television production. It is when the raw footage is edited and the final product is enhanced with visual effects, sound effects, and music.\n \n An EP’s primary responsibilities during this stage include:\n \n \t<p style="padding-left:25px">• Ensuring the film meets all legal and technical requirements</p>\n \n \t<p style="padding-left:25px">• Overseeing and coordinating the creation of promotional materials </p>\n \n \t<p style="padding-left:25px">• Securing any final distribution deals </p>\n \n <h1>5 Key Skills of an Executive Producer</h1>\n \n To be successful in show biz, an executive producer must have a unique combination of business acumen, creativity, and industry-specific knowledge. \n \n Here are a few skills you’ll need to be a successful EP:\n \n \t<p style="padding-left:25px">1. <strong>Financial Management:</strong> An EP’s most important job is to secure financing and distribution deals. As a result, they must have an expert-level understanding of finance and accounting</p>\n \n \t<p style="padding-left:25px">2. <strong>Market Knowledge:</strong> The best EPs possess a deep understanding of the film and television industry and its trending markets. Because of this, they are able to accurately predict the potential success of a film or show and know exactly where it will make money </p>\n \n \t<p style="padding-left:25px">3. <strong>Leadership and Management:</strong> EP’s must be strong communicators capable of effectively delegating tasks and leading a large, complex team </p>\n \n \t<p style="padding-left:25px">4. <strong>Networking and Negotiation:</strong> Building and maintaining relationships is at the centre of an EP’s job. They must be able to juggle relationships with studios, investors, producers, and other key industry players while negotiating deals and “selling” their projects </p>\n \n \t<p style="padding-left:25px">5. <strong>Creativity and Storytelling:</strong> Although EPs are the money players, they require the creative ability to read scripts and assess the overall vision of a story </p>\n \n <h1>How Does An Executive Producer Make Money?</h1>\n \n Executive producers can be paid in a variety of ways. Some EPs will be paid <em>a salary</em> by a studio, which will vary widely depending on the scale of a given project. \n \n According to <a href="https://www.glassdoor.ca/Salaries/toronto-executive-producer-salary-SRCH_IL.0,7_IM976_KO8,26.htm#:~:text=The%20average%20salary%20for%20Executive,a%20range%20from%20%243%2C830%20%2D%20%2455%2C181." rel="noopener" target="_blank">GlassDoor</a>, the average salary of an EP In Canada in 2023 is <strong>$124,382</strong>. \n \n Of course, this number should be taken with a grain of salt. For instance, if an EP is working on a small-scale indie project, they may be happy to work for much less pay. Alternatively, if they’re hired for a major Hollywood blockbuster, their salary range could reach millions of dollars.\n \n Additionally, EPs can be paid in <em>points</em>, which are payments based on a specific percentage of their film or show’s profits.\n \n <h1>Do executive producers earn royalties?</h1>\n \n Whether or not executive producers earn royalties (payments based on the sales performance of the product) is another commonly posed question. \n \n In film and television “royalties” are referred to as <em>residuals</em>, and they are reserved for the creatives involved in the project. That being said, if an executive producer plays a direct role in the creative development of the script, they may have the right to earn residuals on their film or show. \n \n <h1>The Executive Producer, Demystified</h1>\n \n Although an executive producer is one of the most important positions in a film or television production, their day-to-day responsibilities can remain somewhat elusive. In this blog post, we’ve aimed to demystify the role of the EP by providing a comprehensive overview of their key duties and skills. \n \n If there’s one thing you should remember, it's that EPs are the top-level decision-makers responsible for financing a project. Without them, there would be no movies or shows!\n \n Oh, and one more thing! \n \n If you’re interested in breaking into the film and television industry – as an executive producer, perhaps? – then <a href="https://create.torontofilmschool.ca/newsletter/" rel="noopener" target="_blank">sign up for Toronto Film School’s industry-focused newsletter, Insider Advantage.</a> \n \n Packed with exclusive content and useful industry insights, Insider Advantage is essential reading for anyone looking to make their mark in the world of film and television. """ |
post_title | "What Is the Role of an Executive Producer?"
|
post_excerpt | "" |
post_status | "publish"
|
comment_status | "closed"
|
ping_status | "closed"
|
post_password | "" |
post_name | "what-is-the-role-of-executive-producer"
|
to_ping | "" |
pinged | "" |
post_modified | "2023-03-27 21:06:47"
|
post_modified_gmt | "2023-03-27 21:06:47"
|
post_content_filtered | "" |
post_parent | 0
|
guid | "https://dev.tfs.staging.poundandgrain.ca/what-is-the-role-of-executive-producer-2/"
|
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/what-is-the-role-of-executive-producer/"
|
USER | "forge"
|
HOME | "/home/forge"
|
HTTP_REFERER | "https://dev.tfs.staging.poundandgrain.ca/blog/what-is-the-role-of-executive-producer"
|
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 | "3702"
|
REMOTE_ADDR | "18.220.35.83"
|
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 | 1731832323.1973
|
REQUEST_TIME | 1731832323
|
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"
|