Q&A: PBS Chief Digital and Marketing Officer Ira Rubenstein

Ira Rubenstein is Chief Digital and Marketing Officer at PBS and since he joined the network in 2014, he's led the expansion of PBS’ general audience and children’s content to mobile devices, over-the-top (OTT) services, and other digital platforms. Before he came to PBS, he spent more than 12 years at Sony, most recently as Executive Vice President, Content Strategy and Acquisitions. He also led the establishment of Movielink, a first-of-its-kind online, video-on-demand service, and he managed the digital growth of the studio’s most important brands, including Wheel of FortuneJEOPARDY!, and Seinfeld.

After he left Sony, he was Executive Vice President of Marvel Entertainment’s Global Digital Media Group. During his tenure there, he led strategic global digital initiatives related to websites, digital comics, games, digital video distribution, and launched the award-winning Marvel Digital Comics iPad app. He later served as Executive Vice President, Digital Marketing for 20th Century Fox where he established the Digital Marketing organization and led the team behind groundbreaking social and mobile campaigns for PrometheusChronicleRise of the Planet of the ApesX-Men: First Class, and other major motion pictures.

Given his wide range of experience, I was interested in speaking with him about how he sees the streaming and digital world, along with finding out more about PBS' approach to the current multi-platform world.

You started at PBS in 2014 and I'm curious what it looked like when you got there. Because my impression from reading other interviews you've done is that it was a bit chaotic. You told one interviewer that you would meet station managers back then and they wouldn't even have the PBS logo on their business card.

That's true. It was interesting coming from the commercial world to this world. And this is probably something you will hear me say a lot. I realized that while we were in the same industry, we have a different business model. And so it's learning to adapt to the needs of what I knew from a consumer-centric approach and the business model that I came from, which was very much profit-driven revenue, to this business model of public media, where we're here to serve the public good. And so it has different challenges. It requires a shift in mindset of how you approach certain things. 

But getting back to your question of what did I walk into from the digital side?

There were two different websites. One focused on video, one focused on promotional stuff. There was, I believe, an Apple app. But that was it. I don't think we had launched on Roku yet, and there was no live linear streaming at all, which also kind of shocked me even ten years ago.

And then, of course, what you mentioned, the branding.

I was really just trying to understand how stations took advantage of this very powerful brand that people love, but yet it wasn't part of them. Because as you mentioned, I would take these business cards and the logo wasn't anywhere.

I just didn't understand. I didn't understand why you wouldn't want to leverage this brand. And so that kicked off the brand refresh we did, and that enabled stations to embrace the brand. And now we have a very consistent brand strategy package, look and feel.

I want to say that 85% of the system, if not 90%, have adapted it, the latest being Nashville PBS.

Because when you think about it, the station has a call sign. In Nashville, it's WNPT. So what does WNPT mean to someone who is under 40? We just don't watch content that way anymore. But when you call it Nashville PBS, audiences understand what PBS is, and they understand what Nashville is because that's their community. 

And what makes us different and what our superpower really is, it's that no one else can do what we do. We're in 300 local communities across America. And our member stations matter in those communities based on the content that they're doing and the services they're offering. And they are doing this in communities that have less and less local media, be it radio or television.

But you know, it was a very interesting exercise, because almost half of our stations are joint licensees between NPR and PBS. So how do you adopt a name that means something locally that can be both? One of them is right here in Virginia, VPM. And they have both NPR and PBS.

And when you look at their logo, you'll see both. So we built an architecture to enable stations to do that, so that as they make content for any platform, they get credited for it. And the broadcast call sign just doesn't really translate.


You've been talking about the process of bringing new stations onto this plan. And I'm curious - particularly from the Passport side, but also just in general - what is the conversation that has to happen to convince them? What are local stations typically concerned about that you have to say, "No, this is not an issue," or "We have figured this out for other stations, we can figure this out for you?"

It's like a pressure point almost, this give and take over localization and customization, because that's where the strength is with our local stations. They've always, going back to broadcast, customized the content that came to their market. And we're trying to offer as much localization and customization on a digital platform, but also doing it at scale, right? So that there's one app and there's one website, but we allow for a lot of branding, localization, and customization at the station level.

So if you were to go to, I'll pick the simple one, pbs.org, it asks you to localize. I don't know what market you're in, Rick, what market are you in?

I'm in Twin Cities.

Oh, okay.
Well, that's an easy one because there's only one, TPT. So when you log into the site for TPT, for example, it will localize. Show you TPT's branding at the top. You will see that there's a row of programming that will include shows like Almanac in TPT's case.

And we're building the backend. So you can think about how complicated this is, right? But that's the customization that I'm talking about that we enable at scale because, with all this scale, we can drive down our technology hosting costs, cloud costs, and all those costs at a much cheaper rate than if each station tried to do this themselves.

But that pressure, as I was talking about as well, how much customization enablement are you working on versus how much AI-driven recommendation engines and things like that on the other side? And so it's all very, very complicated. We do it with an in-house team.

And frankly, we do it with an in-house team because of all of the platforms that are out there, when we start talking about the level of customization that we're doing at a local level, their eyes kind of roll in the back of their head and say, yeah, we can do it, but you'd have to take our platform. It's going to cost you millions and you're not going to get that scale efficiency. So that is probably one of the biggest challenges, but we do a lot of this for stations.

We have a product called Curate, which enables them to program out how our work looks on the app, how it looks on .org. We also enable them in our emails. They can have a section of the email where they can program it out. Again, those emails that come from us that people sign up for, like the best of PBS, if you sign up for it, you will see that it's co-branded TPT because we know you're there.

And if TPT is customizing it, they might add a little blurb about, again, I'll bring Almanac as an example or some other priority. Maybe it's a symphony. I know I'm a member of TPT too, so I know what they're doing going back to my early days.

But those are the things that we do just in that customization, because what we want to do is offer stations the ability to be on these platforms at a scale and for them to then leverage their internal resources for creating local content and local services that matter in their community.


Another component of this from the streaming side is kids programming. You have a PBS Kids app, but as I don't have to tell you, YouTube is a big part of kids watching TV now or watching TV programming. So how do you determine what works best on YouTube? What works best in the app? How do you hold the station's hand and reassure them," No, no, no. YouTube is good. You want kids watching it on YouTube because that's also your audience."

So I want to separate out kids because we have a very robust kids platform. It's the number one destination on the web by far from a streaming standpoint alone. I believe they're doing 350 million streams a month. It's super large, but you hit it on the head. YouTube is the number one streaming platform and it's the number one streaming platform on connected TVs.

We absolutely want to be there and we have been there. We have digital studios, which has been around now for about 10 years. That was one of the first things I was put in charge of when I got to PBS.

It gets a much younger audience and we are constantly figuring out what public media content works for that platform.

We've talked a bit about PBS Kids and YouTube. But how does YouTube fit in with the content strategy for PBS' news programming and documentaries?

The most effective approach is to get content up and have it stay up. NewsHour is particularly aggressive. They're constantly going live on a lot of social platforms, including YouTube, when there's some sort of press conference at the White House or whatever.

Aa an example, before this last debate, they did an after show that was only on YouTube. And so I do know from an audience perspective, both Frontline and NewsHour, their largest audiences might be on those platforms. And they benefit from the YouTube algorithm.

I'll give Frontline for an example. There's a lot of docs on Putin. And every time Putin's in the news, that YouTube algorithm kicks in, and YouTube has a whole news initiative where they're trying to elevate trusted, factual content.

So we get elevated, and it just kind of self-runs and you get these bumps. On shows like Antiques Roadshow, Nova, Ken Burns. I think we're doing a lot experimenting with those shows.

It's a little harder because to do YouTube well, you really need to leave it up for awhile. And sometimes we don't have the rights for months and months and months for those shows. And also the way the algorithm works, an Antiques Roadshow, which is covering lots of topics, might be better if it was re-jiggered to a specific type of content.

So if you watch the Roadshow, here's all the baseball stuff. And you kind of fed it in that way. But get back to your first point.

YouTube is definitely a priority for us. We're working with a system now where we're in the process of bringing everyone onto a single CMS so that everyone can benefit from the algorithm and lift all boats.

We have a few stations who are on our pilot group, and they're already seeing a 30% lift. So I'm fairly confident as we get more stations onto our single CMS, which is basically kind of those multi-channel networks that used to be in the past, we're going to be able to leverage everybody. The real trick is, how does that help a station monetize? How do they tie that together? And if anyone from Google, YouTube is reading this, I will once again ask for donations.

My hope is that at some point they can tie into our one-click donation platform that we have running today on Amazon and soon to be running on Xfinity, which basically ties into the wallet system on the Amazon Fire platform. So as you're watching the show, you can click yes to donate, charges your credit card, the money goes right to the station. And that has a 12% conversion rate.

So I'm pretty optimistic that these platforms get more and more sophisticated as they tie in their wallets to their platforms and enable us to tie in ours, that there's a bright future for public media. Because again, going back to the past, it used to be a pledge show, call this number and donate. And you can just think about, if all they have to do is click a button on their remote and they can donate, I think there's a much cleaner path to supporting stations.

But the key is really educating people what that local station does for their community, what it means for the country, and getting that kind of messaging to drive that support across all these different platforms. Especially given that younger people don't watch any TV. They're barely on broadcast TV.



I have a teenager, so I understand completely. So where does the PBS Masterpiece Amazon Channels app fit into this?

So that is part of PBS distribution. And PBS distribution is a joint venture between us and WGBH. I believe it's been around about 15 years. It started in the era of the DVD era when they were trying to, again, bring scale and efficiency to that business and not be fighting over shelf space. And it transitioned into the digital era.

I want to be really careful because this is really Andrea Downing's area. She's the
 president.
I serve on the board, but I'm not the president day-to-day. But at a high level, what we started to notice was there was a period of time, probably about seven years ago, when the Netflix's and Amazons of the world were less interested in licensing content. Some of our most popular content, and I won't name names.

It became obvious that we were going to have to have our own SVOD service to generate revenue for our producers. So to take a step back even further, PBS doesn't own any of our content. They partner with our station producers.

We fund a lot of the costs, but we don't fund 100% of it. And so that producing partner has to make up the deficit through underwriting. And it used to be DVD and VHS sales. Obviously those have gone not away, but they're a lot lower. And SVOD was becoming a critical component. So by having PBSD step into that space and run this channel on Amazon, they're enabling key revenue to come back to our producers, as well as come back to PBS to make the content in the first place.

It's really no different than what they used to do in DVD. It's now in SVOD. I would say the only other difference is we leverage a lot of those shows that they're licensing for their channel into Passport. So with that, we've been able to increase Passport hours from a little over 1,200 to 1,500 to now over 4,000. And a lot of that's done in partnership with PBS distribution. When they're securing the rights for SVOD, they're also securing rights for Passport, which is not a subscription service.

I want to be clear. It's not a subscription service. It is a member benefit.

You talked about the Google algorithm, and that really brings in the whole idea of content discovery. I mean, it's tough for anybody, no matter whether you're Netflix or CBS. Getting people who don't watch you to watch you is a tough thing, particularly on the video side. So how is PBS approaching that? And how are the member stations approaching that to try and improve people just to say, oh, you know what? Maybe I'll check out this show I've never seen before. 

Gosh, it is the hardest thing we deal with. F
rom a publicity standpoint, we still participate in the TCA press tours where we generate a lot of publicity for our shows. Which I really appreciate, by the way. It's critical for us to help get our word out. And the fundamental challenge is our content living on our app is competing with a lot of larger apps.

And what you're seeing is more and more consumers are consolidating among a few. And so what we try to do is we try to improve our Google search, our SEO, which we have. So when you search for a PBS show, we're popping at the top.

When you're searching for any sort of thematic show, call it African American History Month, our content pops to the top. I know our content popped to the top during the last solar eclipse because Nova had a show.

So we're focused on that.
 But also, it's just getting the live linear streams out there. So we're now on YouTube TV.
We're on Hulu Live. We're on Local Now. We're on DirecTV Now.

They all have our live linear streams. We're bringing more live linear streams to our app because people are tired of trying to program things themselves. And so if we can enable more linear streams, they'll come to our app.

They'll discover the breadth of the content. Last May, we announced NHK - which many stations carry - will be coming in a live linear feed 24/7 to our app. We're also enabling stations to bring second and third local multicast channels.

In Minnesota, for example, I know they have the Minnesota channel
 along with TPT. So TPT will be enabling both their main feed as well as the Minnesota feed if they decide to. I don't want to speak for them.

But that's an example of a linear channel that is very specific that stations will be able to enable. A lot of stations have a state feed. Some stations have local sports on that secondary feed.

So I'm pretty excited about that. But to me, that discovery is bringing in more of these live linear channels that we can help for stations, bringing people to use the app because that really is the challenge. And you only have so much time.

You're a consumer. You probably go, oh, I'm going to YouTube first, Netflix, maybe Disney. And then it's like the rest of us are fighting it out.

I mean, there's a reason why Disney combined Hulu and ESPN into one, right? Yeah. They're trying to aggregate it all. And then I recently read that Disney Plus is going to try to bring a linear feed into Disney Plus, I believe. It's basically what we're doing, which I feel good about. But I think that's what's going to help bring people to the platform. And then, of course, we have our general marketing, but it's hard to cut through.

But the other thing that helps is exciting programming. What usually happens is that one show lifts all boats.
We saw it with Leonardo da Vinci. And we saw it with Ben FranklinWe saw it with American Buffalo. It lifts all boats. A drama will lift all boats.

The All Creatures Great and Small that comes in January, the next season, lifts all boats. And when I mean all boats, I mean all shows. 

Again, that comes back to my first point. Same industry, different business model. When I worked in film, when you start having hits in film, your other films got trailer exposure, it kind of snowballed. And when you didn't, it kind of snowballed the other way. And then in TV, it's the same. Because you have more eyeballs coming to you, you can show them your other content, and it lifts all boats.

I also wanted to mention that I have an incredible team. And I really want to make sure they get credit. Because what we're able to accomplish across all the platforms is remarkable.

Especially when you look at some of the other major media companies who continue to struggle, because they don't have have scale to cover all the costs. And I just find that, you know, what we deliver, our satisfaction scores continue to grow, we continue to add new features and the new recommendation engine we've rolled out surfaces content we believe you'll be interested in seeing. Hold our app up to any of the other media companies and I think we compare very well. 



9.346MBMemory Usage246msRequest Duration
Joomla! Version4.4.4
PHP Version8.1.31
Identityguest
Response200
Templateja_blockk
Database
Server
mysql
Version
8.0.39-cll-lve
Collation
utf8mb4_unicode_ci
Conn Collation
utf8mb4_0900_ai_ci
$_GET
[]
$_POST
[]
$_SESSION
array:1 [ "joomla" => "***redacted***" ]
$_COOKIE
[]
$_SERVER
array:48 [ "PATH" => "/usr/local/bin:/bin:/usr/bin" "HTTP_ACCEPT" => "text/html,application/xhtm...
session
array:3 [ "counter" => 1 "timer" => array:3 [ "start" => 1743344064 "last" => 1743344064...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:18 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (528.29KB) (7.4ms)
  • afterInitialise (1.27MB) (37.5ms)
  • afterRoute (254.49KB) (10.92ms)
  • beforeRenderComponent com_content (38.27KB) (1.53ms)
  • Before Access::preloadComponents (all components) (34.7KB) (1.34ms)
  • After Access::preloadComponents (all components) (109.3KB) (1.19ms)
  • Before Access::preloadPermissions (com_content) (3.91KB) (22μs)
  • After Access::preloadPermissions (com_content) (2.38MB) (12.75ms)
  • Before Access::getAssetRules (id:3353 name:com_content.article.2520) (130.8KB) (291μs)
  • After Access::getAssetRules (id:3353 name:com_content.article.2520) (8.47KB) (359μs)
  • beforeRenderRawModule mod_related_items (Read More) (1.21MB) (59.01ms)
  • Before Access::getAssetRules (id:8 name:com_content) (80.32KB) (8.86ms)
  • After Access::getAssetRules (id:8 name:com_content) (1.59KB) (23μs)
  • afterRenderRawModule mod_related_items (Read More) (39.11KB) (4.5ms)
  • beforeRenderModule mod_related_items (Read More) (704B) (10μs)
  • afterRenderModule mod_related_items (Read More) (3.07KB) (226μs)
  • beforeRenderRawModule mod_articles_latest (Recent Post) (17.12KB) (202μs)
  • afterRenderRawModule mod_articles_latest (Recent Post) (168.38KB) (34.12ms)
  • beforeRenderModule mod_articles_latest (Recent Post) (704B) (12μs)
  • afterRenderModule mod_articles_latest (Recent Post) (9.93KB) (170μs)
  • beforeRenderRawModule mod_jacontentlisting (Press Releases) (6.23KB) (50μs)
  • afterRenderRawModule mod_jacontentlisting (Press Releases) (279.39KB) (16.39ms)
  • beforeRenderModule mod_jacontentlisting (Press Releases) (736B) (8μs)
  • afterRenderModule mod_jacontentlisting (Press Releases) (9.93KB) (160μs)
  • afterRenderComponent com_content (38.09KB) (169μs)
  • afterDispatch (2.28KB) (252μs)
  • beforeRenderRawModule mod_menu (Newsletters) (156.63KB) (22.96ms)
  • afterRenderRawModule mod_menu (Newsletters) (15.28KB) (511μs)
  • beforeRenderModule mod_menu (Newsletters) (720B) (6μs)
  • afterRenderModule mod_menu (Newsletters) (1.89KB) (215μs)
  • beforeRenderRawModule mod_menu (Other Content) (712B) (42μs)
  • afterRenderRawModule mod_menu (Other Content) (944B) (137μs)
  • beforeRenderModule mod_menu (Other Content) (720B) (5μs)
  • afterRenderModule mod_menu (Other Content) (3.8KB) (100μs)
  • beforeRenderRawModule mod_finder (Head Search) (1.94KB) (72μs)
  • afterRenderRawModule mod_finder (Head Search) (77.59KB) (3.71ms)
  • beforeRenderModule mod_finder (Head Search) (720B) (6μs)
  • afterRenderModule mod_finder (Head Search) (3.3KB) (180μs)
  • beforeRenderRawModule mod_custom ([Offcanvas] Custom banner) (864B) (68μs)
  • afterRenderRawModule mod_custom ([Offcanvas] Custom banner) (3.88KB) (343μs)
  • beforeRenderModule mod_custom ([Offcanvas] Custom banner) (736B) (5μs)
  • afterRenderModule mod_custom ([Offcanvas] Custom banner) (2.32KB) (98μs)
  • beforeRenderRawModule mod_custom ([Offcanvas] Social media) (24B) (22μs)
  • afterRenderRawModule mod_custom ([Offcanvas] Social media) (1.05KB) (90μs)
  • beforeRenderModule mod_custom ([Offcanvas] Social media) (736B) (4μs)
  • afterRenderModule mod_custom ([Offcanvas] Social media) (2.93KB) (87μs)
  • beforeRenderRawModule mod_menu (Off Canvas) (2.23KB) (21μs)
  • afterRenderRawModule mod_menu (Off Canvas) (944B) (123μs)
  • beforeRenderModule mod_menu (Off Canvas) (720B) (4μs)
  • afterRenderModule mod_menu (Off Canvas) (1.28KB) (89μs)
  • beforeRenderRawModule mod_menu (magazine-menu-3) (55.45KB) (1.22ms)
  • afterRenderRawModule mod_menu (magazine-menu-3) (115.92KB) (2.54ms)
  • beforeRenderModule mod_menu (magazine-menu-3) (720B) (6μs)
  • afterRenderModule mod_menu (magazine-menu-3) (6.28KB) (88μs)
  • afterRender (785.13KB) (14.22ms)
  • 1 x beforeRenderRawModule mod_related_items (Read More) (1.21MB) (24.03%)
    59.01ms
    1 x afterInitialise (1.27MB) (15.28%)
    37.50ms
    1 x afterRenderRawModule mod_articles_latest (Recent Post) (168.38KB) (13.9%)
    34.12ms
    1 x beforeRenderRawModule mod_menu (Newsletters) (156.63KB) (9.35%)
    22.96ms
    1 x afterRenderRawModule mod_jacontentlisting (Press Releases) (279.39KB) (6.68%)
    16.39ms
    1 x afterRender (785.13KB) (5.79%)
    14.22ms
    1 x After Access::preloadPermissions (com_content) (2.38MB) (5.19%)
    12.75ms
    1 x afterRoute (254.49KB) (4.45%)
    10.92ms
    1 x Before Access::getAssetRules (id:8 name:com_content) (80.32KB) (3.61%)
    8.86ms
    1 x afterLoad (528.29KB) (3.01%)
    7.40ms
    1 x afterRenderRawModule mod_related_items (Read More) (39.11KB) (1.83%)
    4.50ms
    1 x afterRenderRawModule mod_finder (Head Search) (77.59KB) (1.51%)
    3.71ms
    1 x afterRenderRawModule mod_menu (magazine-menu-3) (115.92KB) (1.04%)
    2.54ms
    1 x beforeRenderComponent com_content (38.27KB) (0.63%)
    1.53ms
    1 x Before Access::preloadComponents (all components) (34.7KB) (0.55%)
    1.34ms
    1 x beforeRenderRawModule mod_menu (magazine-menu-3) (55.45KB) (0.5%)
    1.22ms
    1 x After Access::preloadComponents (all components) (109.3KB) (0.49%)
    1.19ms
    1 x afterRenderRawModule mod_menu (Newsletters) (15.28KB) (0.21%)
    511μs
    1 x After Access::getAssetRules (id:3353 name:com_content.article.2520) (8.47KB) (0.15%)
    359μs
    1 x afterRenderRawModule mod_custom ([Offcanvas] Custom banner) (3.88KB) (0.14%)
    343μs
    1 x Before Access::getAssetRules (id:3353 name:com_content.article.2520) (130.8KB) (0.12%)
    291μs
    1 x afterDispatch (2.28KB) (0.1%)
    252μs
    1 x afterRenderModule mod_related_items (Read More) (3.07KB) (0.09%)
    226μs
    1 x afterRenderModule mod_menu (Newsletters) (1.89KB) (0.09%)
    215μs
    1 x beforeRenderRawModule mod_articles_latest (Recent Post) (17.12KB) (0.08%)
    202μs
    1 x afterRenderModule mod_finder (Head Search) (3.3KB) (0.07%)
    180μs
    1 x afterRenderModule mod_articles_latest (Recent Post) (9.93KB) (0.07%)
    170μs
    1 x afterRenderComponent com_content (38.09KB) (0.07%)
    169μs
    1 x afterRenderModule mod_jacontentlisting (Press Releases) (9.93KB) (0.07%)
    160μs
    1 x afterRenderRawModule mod_menu (Other Content) (944B) (0.06%)
    137μs
    1 x afterRenderRawModule mod_menu (Off Canvas) (944B) (0.05%)
    123μs
    1 x afterRenderModule mod_menu (Other Content) (3.8KB) (0.04%)
    100μs
    1 x afterRenderModule mod_custom ([Offcanvas] Custom banner) (2.32KB) (0.04%)
    98μs
    1 x afterRenderRawModule mod_custom ([Offcanvas] Social media) (1.05KB) (0.04%)
    90μs
    1 x afterRenderModule mod_menu (Off Canvas) (1.28KB) (0.04%)
    89μs
    1 x afterRenderModule mod_menu (magazine-menu-3) (6.28KB) (0.04%)
    88μs
    1 x afterRenderModule mod_custom ([Offcanvas] Social media) (2.93KB) (0.04%)
    87μs
    1 x beforeRenderRawModule mod_finder (Head Search) (1.94KB) (0.03%)
    72μs
    1 x beforeRenderRawModule mod_custom ([Offcanvas] Custom banner) (864B) (0.03%)
    68μs
    1 x beforeRenderRawModule mod_jacontentlisting (Press Releases) (6.23KB) (0.02%)
    50μs
    1 x beforeRenderRawModule mod_menu (Other Content) (712B) (0.02%)
    42μs
    1 x After Access::getAssetRules (id:8 name:com_content) (1.59KB) (0.01%)
    23μs
    1 x beforeRenderRawModule mod_custom ([Offcanvas] Social media) (24B) (0.01%)
    22μs
    1 x Before Access::preloadPermissions (com_content) (3.91KB) (0.01%)
    22μs
    1 x beforeRenderRawModule mod_menu (Off Canvas) (2.23KB) (0.01%)
    21μs
    1 x beforeRenderModule mod_articles_latest (Recent Post) (704B) (0%)
    12μs
    1 x beforeRenderModule mod_related_items (Read More) (704B) (0%)
    10μs
    1 x beforeRenderModule mod_jacontentlisting (Press Releases) (736B) (0%)
    8μs
    1 x beforeRenderModule mod_finder (Head Search) (720B) (0%)
    6μs
    1 x beforeRenderModule mod_menu (Newsletters) (720B) (0%)
    6μs
    1 x beforeRenderModule mod_menu (magazine-menu-3) (720B) (0%)
    6μs
    1 x beforeRenderModule mod_menu (Other Content) (720B) (0%)
    5μs
    1 x beforeRenderModule mod_custom ([Offcanvas] Custom banner) (736B) (0%)
    5μs
    1 x beforeRenderModule mod_custom ([Offcanvas] Social media) (736B) (0%)
    4μs
    1 x beforeRenderModule mod_menu (Off Canvas) (720B) (0%)
    4μs
63 statements were executed, 8 of which were duplicates, 55 unique97.87ms816.16KB
  • SELECT @@SESSION.sql_mode;106μs1.57KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:334Copy
  • SELECT `data` FROM `tvlfg_session` WHERE `session_id` = ?191μs1.61KBParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:261Copy
  • SELECT `session_id` FROM `tvlfg_session` WHERE `session_id` = :session_id LIMIT 1531μs1.61KBParams/libraries/src/Session/MetadataManager.php:187Copy
  • INSERT INTO `tvlfg_session` (`session_id`,`guest`,`time`,`userid`,`username`,`client_id`) VALUES (:session_id, :guest, :time, :user_id, :username, :client_id)3.4ms944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `extension_id` AS `id`,`element` AS `option`,`params`,`enabled` FROM `tvlfg_extensions` WHERE `type` = 'component' AND `state` = 0 AND `enabled` = 1324μs2.23KB/libraries/src/Component/ComponentHelper.php:399Copy
  • SELECT `id`,`rules` FROM `tvlfg_viewlevels`209μs976B/libraries/src/Access/Access.php:955Copy
  • SELECT `b`.`id` FROM `tvlfg_usergroups` AS `a` LEFT JOIN `tvlfg_usergroups` AS `b` ON `b`.`lft` <= `a`.`lft` AND `b`.`rgt` >= `a`.`rgt` WHERE `a`.`id` = :guest215μs1.64KBParams/libraries/src/Access/Access.php:868Copy
  • SELECT `folder` AS `type`,`element` AS `name`,`params` AS `params`,`extension_id` AS `id` FROM `tvlfg_extensions` WHERE `enabled` = 1 AND `type` = 'plugin' AND `state` IN (0,1) AND `access` IN (:preparedArray1,:preparedArray2) ORDER BY `ordering`738μs3.8KBParams/libraries/src/Plugin/PluginHelper.php:294Copy
  • UPDATE tvlfg_extensions SET enabled=1 WHERE `type`='plugin' AND `element`='jacontenttype' AND `folder`='ajax'2.42ms1.3KB/plugins/system/jacontenttype/jacontenttype.php:62Copy
  • SELECT * FROM `tvlfg_languages` WHERE `published` = 1 ORDER BY `ordering` ASC187μs2.17KB/libraries/src/Language/LanguageHelper.php:142Copy
  • SELECT * FROM tvlfg_menu WHERE alias ='latest-news' AND published=1226μs4.09KB/plugins/system/t4/src/t4/MVC/Router/T4.php:352Copy
  • SELECT `m`.`id`,`m`.`menutype`,`m`.`title`,`m`.`alias`,`m`.`note`,`m`.`link`,`m`.`type`,`m`.`level`,`m`.`language`,`m`.`browserNav`,`m`.`access`,`m`.`params`,`m`.`home`,`m`.`img`,`m`.`template_style_id`,`m`.`component_id`,`m`.`parent_id`,`m`.`path` AS `route`,`e`.`element` AS `component` FROM `tvlfg_menu` AS `m` LEFT JOIN `tvlfg_extensions` AS `e` ON `m`.`component_id` = `e`.`extension_id` WHERE ( (`m`.`published` = 1 AND `m`.`parent_id` > 0 AND `m`.`client_id` = 0) AND (`m`.`publish_up` IS NULL OR `m`.`publish_up` <= :currentDate1)) AND (`m`.`publish_down` IS NULL OR `m`.`publish_down` >= :currentDate2) ORDER BY `m`.`lft`578μs20.92KBParams/libraries/src/Menu/SiteMenu.php:166Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `tvlfg_categories` AS `s` INNER JOIN `tvlfg_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`714μs5.23KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `id`,`home`,`template`,`s`.`params`,`inheritable`,`parent` FROM `tvlfg_template_styles` AS `s` LEFT JOIN `tvlfg_extensions` AS `e` ON `e`.`element` = `s`.`template` AND `e`.`type` = 'template' AND `e`.`client_id` = `s`.`client_id` WHERE `s`.`client_id` = 0 AND `e`.`enabled` = 1249μs1.16KB/administrator/components/com_templates/src/Model/StyleModel.php:773Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `tvlfg_assets` WHERE `name` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4,:preparedArray5,:preparedArray6,:preparedArray7,:preparedArray8,:preparedArray9,:preparedArray10,:preparedArray11,:preparedArray12,:preparedArray13,:preparedArray14,:preparedArray15,:preparedArray16,:preparedArray17,:preparedArray18,:preparedArray19,:preparedArray20,:preparedArray21,:preparedArray22,:preparedArray23,:preparedArray24,:preparedArray25,:preparedArray26,:preparedArray27,:preparedArray28,:preparedArray29,:preparedArray30,:preparedArray31,:preparedArray32,:preparedArray33,:preparedArray34,:preparedArray35,:preparedArray36,:preparedArray37,:preparedArray38,:preparedArray39)704μs7.75KBParams/libraries/src/Access/Access.php:357Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `tvlfg_assets` WHERE `name` LIKE :asset OR `name` = :extension OR `parent_id` = 04.5ms225.8KBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `tvlfg_content`1.74ms4.89KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:625Copy
  • UPDATE `tvlfg_content` SET `hits` = (`hits` + 1) WHERE `id` = '2520'7.94ms48B/libraries/src/Table/Table.php:1325Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `tvlfg_content` AS `a` INNER JOIN `tvlfg_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `tvlfg_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `tvlfg_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `tvlfg_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `tvlfg_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)877μs120.63KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `tvlfg_categories` AS `s` INNER JOIN `tvlfg_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`520μs5.19KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `m`.`tag_id`,`t`.* FROM `tvlfg_contentitem_tag_map` AS `m` INNER JOIN `tvlfg_tags` AS `t` ON `m`.`tag_id` = `t`.`id` WHERE `m`.`type_alias` = :contentType AND `m`.`content_item_id` = :id AND `t`.`published` = 1 AND `t`.`access` IN (:preparedArray1,:preparedArray2)1.55ms5.23KBParams/libraries/src/Helper/TagsHelper.php:388Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `tvlfg_categories` AS `s` INNER JOIN `tvlfg_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`689μs5.19KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT DISTINCT a.id, a.title, a.name, a.checked_out, a.checked_out_time, a.note, a.state, a.access, a.created_time, a.created_user_id, a.ordering, a.language, a.fieldparams, a.params, a.type, a.default_value, a.context, a.group_id, a.label, a.description, a.required, a.only_use_in_subform,l.title AS language_title, l.image AS language_image,uc.name AS editor,ag.title AS access_level,ua.name AS author_name,g.title AS group_title, g.access as group_access, g.state AS group_state, g.note as group_note FROM tvlfg_fields AS a LEFT JOIN `tvlfg_languages` AS l ON l.lang_code = a.language LEFT JOIN tvlfg_users AS uc ON uc.id=a.checked_out LEFT JOIN tvlfg_viewlevels AS ag ON ag.id = a.access LEFT JOIN tvlfg_users AS ua ON ua.id = a.created_user_id LEFT JOIN tvlfg_fields_groups AS g ON g.id = a.group_id LEFT JOIN `tvlfg_fields_categories` AS fc ON fc.field_id = a.id WHERE ( (`a`.`context` = :context AND (`fc`.`category_id` IS NULL OR `fc`.`category_id` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4)) AND `a`.`access` IN (:preparedArray5,:preparedArray6)) AND (`a`.`group_id` = 0 OR `g`.`access` IN (:preparedArray7,:preparedArray8)) AND `a`.`state` = :state) AND (`a`.`group_id` = 0 OR `g`.`state` = :gstate) AND `a`.`only_use_in_subform` = :only_use_in_subform ORDER BY a.ordering ASC507μs6.06KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:166Copy
  • SELECT `a`.`id`,`a`.`title`,`a`.`catid`,`a`.`language`, CASE WHEN CHAR_LENGTH(`a`.`alias`) != 0 THEN CONCAT_WS(':', `a`.`id`, `a`.`alias`) ELSE a.id END AS `slug`, CASE WHEN CHAR_LENGTH(`cc`.`alias`) != 0 THEN CONCAT_WS(':', `cc`.`id`, `cc`.`alias`) ELSE cc.id END AS `catslug` FROM `tvlfg_content` AS `a` LEFT JOIN `tvlfg_categories` AS `cc` ON `cc`.`id` = `a`.`catid` WHERE `a`.`catid` = :catid AND `a`.`state` = :state AND `a`.`access` IN (:preparedArray1,:preparedArray2) AND (`publish_up` IS NULL OR `publish_up` <= :nowDate1) AND (`publish_down` IS NULL OR `publish_down` >= :nowDate2) ORDER BY CASE WHEN `a`.`publish_up` IS NULL THEN `a`.`created` ELSE `a`.`publish_up` END DESC1.79ms2.47KBParams/plugins/content/pagenavigation/src/Extension/PageNavigation.php:188Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `tvlfg_categories` AS `s` INNER JOIN `tvlfg_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`896μs5.19KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT u.id, u.name, u.username, u.params FROM tvlfg_users AS u LEFT JOIN tvlfg_user_usergroup_map AS g ON g.user_id = u.id WHERE u.id = '51' GROUP BY u.id206μs1KB/plugins/system/t4/src/t4/MVC/Model/AuthorModel.php:279Copy
  • SELECT enabled FROM tvlfg_extensions WHERE `type` = 'plugin' AND `element` = 'profile'167μs856B/plugins/system/t4/src/t4/MVC/Model/AuthorModel.php:467Copy
  • SELECT profile_key, profile_value FROM tvlfg_user_profiles WHERE user_id = 51 AND profile_key LIKE 'profile.%' ORDER BY ordering1.48ms1.09KB/plugins/system/t4/src/t4/MVC/Model/AuthorModel.php:420Copy
  • SHOW FULL COLUMNS FROM `tvlfg_users`1.2ms2.2KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:625Copy
  • SELECT * FROM `tvlfg_users` WHERE `id` = :userid154μs4.41KBParams/libraries/src/Table/User.php:104Copy
  • SELECT `g`.`id`,`g`.`title` FROM `tvlfg_usergroups` AS `g` INNER JOIN `tvlfg_user_usergroup_map` AS `m` ON `m`.`group_id` = `g`.`id` WHERE `m`.`user_id` = :muserid180μs1.7KBParams/libraries/src/Table/User.php:132Copy
  • SELECT DISTINCT a.id, a.title, a.name, a.checked_out, a.checked_out_time, a.note, a.state, a.access, a.created_time, a.created_user_id, a.ordering, a.language, a.fieldparams, a.params, a.type, a.default_value, a.context, a.group_id, a.label, a.description, a.required, a.only_use_in_subform,l.title AS language_title, l.image AS language_image,uc.name AS editor,ag.title AS access_level,ua.name AS author_name,g.title AS group_title, g.access as group_access, g.state AS group_state, g.note as group_note FROM tvlfg_fields AS a LEFT JOIN `tvlfg_languages` AS l ON l.lang_code = a.language LEFT JOIN tvlfg_users AS uc ON uc.id=a.checked_out LEFT JOIN tvlfg_viewlevels AS ag ON ag.id = a.access LEFT JOIN tvlfg_users AS ua ON ua.id = a.created_user_id LEFT JOIN tvlfg_fields_groups AS g ON g.id = a.group_id WHERE ( (`a`.`context` = :context AND `a`.`access` IN (:preparedArray1,:preparedArray2)) AND (`a`.`group_id` = 0 OR `g`.`access` IN (:preparedArray3,:preparedArray4)) AND `a`.`state` = :state) AND (`a`.`group_id` = 0 OR `g`.`state` = :gstate) AND `a`.`only_use_in_subform` = :only_use_in_subform ORDER BY a.ordering ASC377μs5.31KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:166Copy
  • SELECT `name` FROM `tvlfg_users` WHERE id = '51'102μs11.84KB/plugins/system/t4/src/t4/MVC/Router/Content/Router.php:66Copy
  • SELECT username FROM tvlfg_users WHERE id=5190μs856B/plugins/system/t4/src/t4/MVC/Router/T4.php:288Copy
  • SELECT `m`.`id`,`m`.`title`,`m`.`module`,`m`.`position`,`m`.`content`,`m`.`showtitle`,`m`.`params`,`mm`.`menuid` FROM `tvlfg_modules` AS `m` LEFT JOIN `tvlfg_modules_menu` AS `mm` ON `mm`.`moduleid` = `m`.`id` LEFT JOIN `tvlfg_extensions` AS `e` ON `e`.`element` = `m`.`module` AND `e`.`client_id` = `m`.`client_id` WHERE ( ( (`m`.`published` = 1 AND `e`.`enabled` = 1 AND `m`.`client_id` = :clientId AND `m`.`access` IN (:preparedArray1,:preparedArray2)) AND (`m`.`publish_up` IS NULL OR `m`.`publish_up` <= :publishUp)) AND (`m`.`publish_down` IS NULL OR `m`.`publish_down` >= :publishDown)) AND (`mm`.`menuid` = :itemId OR `mm`.`menuid` <= 0) ORDER BY `m`.`position`,`m`.`ordering`997μs2.44KBParams/libraries/src/Cache/Controller/CallbackController.php:51Copy
  • SELECT `metakey` FROM `tvlfg_content` WHERE `id` = :id148μs1.63KBParams/modules/mod_related_items/src/Helper/RelatedItemsHelper.php:88Copy
  • SELECT `a`.`id` FROM `tvlfg_content` AS `a` WHERE ( ( (`a`.`id` != :id AND `a`.`state` = 1 AND `a`.`access` IN (:preparedArray1,:preparedArray2)) AND (`a`.`metakey` LIKE :preparedArray3)) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :nowDate1)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :nowDate2) LIMIT 56.64ms1.76KBParams/modules/mod_related_items/src/Helper/RelatedItemsHelper.php:152Copy
  • SELECT `a`.`id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,CASE WHEN `a`.`publish_up` IS NULL THEN `a`.`created` ELSE `a`.`publish_up` END AS `publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`metadata`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`featured`,`a`.`language`,LENGTH(`a`.`fulltext`) AS `readmore`,`a`.`ordering`,`fp`.`featured_up`,`fp`.`featured_down`,CASE WHEN `c`.`published` = 2 AND `a`.`state` > 0 THEN 2 WHEN `c`.`published` != 1 THEN 0 ELSE `a`.`state` END AS `state`,`c`.`title` AS `category_title`,`c`.`path` AS `category_route`,`c`.`access` AS `category_access`,`c`.`alias` AS `category_alias`,`c`.`language` AS `category_language`,`c`.`published`,`c`.`published` AS `parents_published`,`c`.`lft`,CASE WHEN `a`.`created_by_alias` > ' ' THEN `a`.`created_by_alias` ELSE `ua`.`name` END AS `author`,`ua`.`email` AS `author_email`,`uam`.`name` AS `modified_by_name`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language` FROM `tvlfg_content` AS `a` LEFT JOIN `tvlfg_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `tvlfg_users` AS `ua` ON `ua`.`id` = `a`.`created_by` LEFT JOIN `tvlfg_users` AS `uam` ON `uam`.`id` = `a`.`modified_by` LEFT JOIN `tvlfg_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `tvlfg_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` WHERE `a`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`access` IN (:preparedArray3,:preparedArray4) AND `c`.`published` = 1 AND `a`.`state` = :condition AND `a`.`id` IN (:preparedArray5) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) ORDER BY a.ordering ASC681μs48.8KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:166Copy
  • SELECT `m`.`tag_id`,`m`.`content_item_id`,`t`.* FROM `tvlfg_contentitem_tag_map` AS `m` INNER JOIN `tvlfg_tags` AS `t` ON `m`.`tag_id` = `t`.`id` WHERE `m`.`type_alias` = :contentType AND `t`.`published` = 1 AND `m`.`content_item_id` IN (:preparedArray1) AND `t`.`access` IN (:preparedArray2,:preparedArray3)1.59ms5.28KBParams/libraries/src/Helper/TagsHelper.php:448Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `tvlfg_categories` AS `s` INNER JOIN `tvlfg_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`429μs5.19KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `a`.`id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,CASE WHEN `a`.`publish_up` IS NULL THEN `a`.`created` ELSE `a`.`publish_up` END AS `publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`metadata`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`featured`,`a`.`language`,LENGTH(`a`.`fulltext`) AS `readmore`,`a`.`ordering`,`fp`.`featured_up`,`fp`.`featured_down`,CASE WHEN `c`.`published` = 2 AND `a`.`state` > 0 THEN 2 WHEN `c`.`published` != 1 THEN 0 ELSE `a`.`state` END AS `state`,`c`.`title` AS `category_title`,`c`.`path` AS `category_route`,`c`.`access` AS `category_access`,`c`.`alias` AS `category_alias`,`c`.`language` AS `category_language`,`c`.`published`,`c`.`published` AS `parents_published`,`c`.`lft`,CASE WHEN `a`.`created_by_alias` > ' ' THEN `a`.`created_by_alias` ELSE `ua`.`name` END AS `author`,`ua`.`email` AS `author_email`,`uam`.`name` AS `modified_by_name`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language` FROM `tvlfg_content` AS `a` LEFT JOIN `tvlfg_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `tvlfg_users` AS `ua` ON `ua`.`id` = `a`.`created_by` LEFT JOIN `tvlfg_users` AS `uam` ON `uam`.`id` = `a`.`modified_by` LEFT JOIN `tvlfg_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `tvlfg_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` WHERE `a`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`access` IN (:preparedArray3,:preparedArray4) AND `c`.`published` = 1 AND `a`.`state` = :condition AND `a`.`catid` IN (:preparedArray5,:preparedArray6,:preparedArray7,:preparedArray8,:preparedArray9,:preparedArray10,:preparedArray11,:preparedArray12,:preparedArray13,:preparedArray14,:preparedArray15,:preparedArray16,:preparedArray17,:preparedArray18,:preparedArray19) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) ORDER BY a.publish_up DESC LIMIT 527.55ms195.17KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:166Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `tvlfg_categories` AS `s` INNER JOIN `tvlfg_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`653μs5.17KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `tvlfg_categories` AS `s` INNER JOIN `tvlfg_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`377μs5.19KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `tvlfg_categories` AS `s` INNER JOIN `tvlfg_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`545μs5.17KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `tvlfg_categories` AS `s` INNER JOIN `tvlfg_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`451μs5.19KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug`,( SELECT COUNT(`i`.`id`) FROM `tvlfg_content` AS `i` WHERE `i`.`catid` = `c`.`id` AND `i`.`state` = 1) AS `numitems` FROM `tvlfg_categories` AS `s` INNER JOIN `tvlfg_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`1.25ms5.22KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `a`.`id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,CASE WHEN `a`.`publish_up` IS NULL THEN `a`.`created` ELSE `a`.`publish_up` END AS `publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`metadata`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`featured`,`a`.`language`,LENGTH(`a`.`fulltext`) AS `readmore`,`a`.`ordering`,`fp`.`featured_up`,`fp`.`featured_down`,CASE WHEN `c`.`published` = 2 AND `a`.`state` > 0 THEN 2 WHEN `c`.`published` != 1 THEN 0 ELSE `a`.`state` END AS `state`,`c`.`title` AS `category_title`,`c`.`path` AS `category_route`,`c`.`access` AS `category_access`,`c`.`alias` AS `category_alias`,`c`.`language` AS `category_language`,`c`.`published`,`c`.`published` AS `parents_published`,`c`.`lft`,CASE WHEN `a`.`created_by_alias` > ' ' THEN `a`.`created_by_alias` ELSE `ua`.`name` END AS `author`,`ua`.`email` AS `author_email`,`uam`.`name` AS `modified_by_name`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language` FROM `tvlfg_content` AS `a` LEFT JOIN `tvlfg_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `tvlfg_users` AS `ua` ON `ua`.`id` = `a`.`created_by` LEFT JOIN `tvlfg_users` AS `uam` ON `uam`.`id` = `a`.`modified_by` LEFT JOIN `tvlfg_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `tvlfg_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` WHERE `a`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`access` IN (:preparedArray3,:preparedArray4) AND `c`.`published` = 1 AND `a`.`state` = :condition AND `a`.`catid` IN (:preparedArray5) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) ORDER BY a.created DESC LIMIT 32.47ms24.83KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:166Copy
  • SELECT `m`.`tag_id`,`m`.`content_item_id`,`t`.* FROM `tvlfg_contentitem_tag_map` AS `m` INNER JOIN `tvlfg_tags` AS `t` ON `m`.`tag_id` = `t`.`id` WHERE `m`.`type_alias` = :contentType AND `t`.`published` = 1 AND `m`.`content_item_id` IN (:preparedArray1,:preparedArray2,:preparedArray3) AND `t`.`access` IN (:preparedArray4,:preparedArray5)2.59ms5.36KBParams/libraries/src/Helper/TagsHelper.php:448Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `tvlfg_categories` AS `s` INNER JOIN `tvlfg_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`509μs5.19KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `tvlfg_categories` AS `s` INNER JOIN `tvlfg_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`397μs5.19KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT DISTINCT a.id, a.title, a.name, a.checked_out, a.checked_out_time, a.note, a.state, a.access, a.created_time, a.created_user_id, a.ordering, a.language, a.fieldparams, a.params, a.type, a.default_value, a.context, a.group_id, a.label, a.description, a.required, a.only_use_in_subform,l.title AS language_title, l.image AS language_image,uc.name AS editor,ag.title AS access_level,ua.name AS author_name,g.title AS group_title, g.access as group_access, g.state AS group_state, g.note as group_note FROM tvlfg_fields AS a LEFT JOIN `tvlfg_languages` AS l ON l.lang_code = a.language LEFT JOIN tvlfg_users AS uc ON uc.id=a.checked_out LEFT JOIN tvlfg_viewlevels AS ag ON ag.id = a.access LEFT JOIN tvlfg_users AS ua ON ua.id = a.created_user_id LEFT JOIN tvlfg_fields_groups AS g ON g.id = a.group_id WHERE ( (`a`.`context` = :context AND `a`.`access` IN (:preparedArray1,:preparedArray2)) AND (`a`.`group_id` = 0 OR `g`.`access` IN (:preparedArray3,:preparedArray4)) AND `a`.`state` = :state) AND (`a`.`group_id` = 0 OR `g`.`state` = :gstate) AND `a`.`only_use_in_subform` = :only_use_in_subform ORDER BY a.ordering ASC346μs5.31KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:166Copy
  • SELECT username FROM tvlfg_users WHERE id = 51 AND block = 094μs856B/modules/mod_jacontentlisting/tmpl/elements/info_block/author.php:29Copy
  • SELECT username FROM tvlfg_users WHERE id = 51 AND block = 063μs856B/modules/mod_jacontentlisting/tmpl/elements/info_block/author.php:29Copy
  • SELECT username FROM tvlfg_users WHERE id = 51 AND block = 076μs856B/modules/mod_jacontentlisting/tmpl/elements/info_block/author.php:29Copy
  • SELECT `name`,`element` FROM `tvlfg_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1520μs976B/administrator/components/com_finder/src/Helper/LanguageHelper.php:135Copy
  • SELECT `title` FROM `tvlfg_finder_taxonomy` WHERE `parent_id` = 1 AND `state` = 1 AND `access` IN (1,5)180μs904B/administrator/components/com_finder/src/Indexer/Taxonomy.php:314Copy
  • SELECT * FROM tvlfg_acym_configuration362μs2.88KB/administrator/components/com_acym/libraries/joomla/database.php:32Copy
  • SELECT * FROM tvlfg_acym_list WHERE type = 'standard'138μs2.28KB/administrator/components/com_acym/libraries/joomla/database.php:32Copy
  • SELECT * FROM tvlfg_acym_field119μs2.31KB/administrator/components/com_acym/libraries/joomla/database.php:32Copy
  • SELECT * FROM tvlfg_acym_form WHERE active = 1 AND type != 'shortcode'101μs1.2KB/administrator/components/com_acym/libraries/joomla/database.php:32Copy
  • SELECT SUM(CASE WHEN `a`.`next_execution` <= :now THEN 1 ELSE 0 END) AS due_count,SUM(CASE WHEN `a`.`locked` IS NULL THEN 0 ELSE 1 END) AS locked_count FROM `tvlfg_scheduler_tasks` AS `a` WHERE `a`.`state` = 1188μs1.68KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:466Copy
  • SELECT `session_id` FROM `tvlfg_session` WHERE `session_id` = ?259μs1.63KBParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:291Copy
  • UPDATE `tvlfg_session` SET `data` = ? , `time` = ? WHERE `session_id` = ?12.4ms912BParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:318Copy