Skip to content

Commit 1804285

Browse files
committed
MC-14937: Complete Page Builder Analytics data collection
- add processing of content type data
1 parent 767c077 commit 1804285

File tree

3 files changed

+91
-14
lines changed

3 files changed

+91
-14
lines changed
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\PageBuilderAnalytics\Model;
8+
9+
use Magento\Analytics\ReportXml\ConnectionFactory;
10+
use Magento\Analytics\ReportXml\QueryFactory;
11+
use Magento\PageBuilder\Model\Config;
12+
13+
/**
14+
* Provides content type data report
15+
*/
16+
class ContentTypeReportProvider
17+
{
18+
/**
19+
* @var Config
20+
*/
21+
private $config;
22+
23+
/**
24+
* @var QueryFactory
25+
*/
26+
private $queryFactory;
27+
28+
/**
29+
* @var ConnectionFactory
30+
*/
31+
private $connectionFactory;
32+
33+
/**
34+
* @param Config $config
35+
* @param QueryFactory $queryFactory
36+
* @param ConnectionFactory $connectionFactory
37+
*/
38+
public function __construct(
39+
Config $config,
40+
QueryFactory $queryFactory,
41+
ConnectionFactory $connectionFactory
42+
) {
43+
$this->config = $config;
44+
$this->queryFactory = $queryFactory;
45+
$this->connectionFactory = $connectionFactory;
46+
}
47+
48+
/**
49+
* Generates report with Page Builder content type counts
50+
*
51+
* @param string $name
52+
* @return \IteratorIterator
53+
*/
54+
public function getReport($name)
55+
{
56+
$typeCounts = [];
57+
$contentTypes = $this->config->getContentTypes();
58+
foreach ($contentTypes as $type) {
59+
$typeCounts[$type] = 0;
60+
}
61+
62+
$query = $this->queryFactory->create($name);
63+
$connection = $this->connectionFactory->getConnection($query->getConnectionName());
64+
$statement = $connection->query($query->getSelect()->limit(1000));
65+
$batchNum = 1;
66+
while ($statement->rowCount() > 0) {
67+
foreach ($statement->fetchAll() as $row) {
68+
$value = $row['content'];
69+
foreach ($contentTypes as $type) {
70+
$typeCounts[$type] += substr_count($value, "data-role=\"" . $type . "\"");
71+
}
72+
}
73+
$statement = $connection->query($query->getSelect()->limit(1000, 1000 * $batchNum));
74+
$batchNum++;
75+
}
76+
77+
$reportData[] = ['Content Type', 'Count'];
78+
foreach ($contentTypes as $type) {
79+
$reportData[] = [$type, $typeCounts[$type]];
80+
}
81+
return new \IteratorIterator(new \ArrayIterator($reportData));
82+
}
83+
}

app/code/Magento/PageBuilderAnalytics/etc/analytics.xml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,38 +8,38 @@
88
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Analytics:etc/analytics.xsd">
99
<file name="pagebuilder_page">
1010
<providers>
11-
<reportProvider name="pagebuilder_page" class="Magento\Analytics\ReportXml\ReportProvider">
11+
<customProvider name="pagebuilder_page" class="Magento\PageBuilderAnalytics\Model\ContentTypeReportProvider">
1212
<parameters>
1313
<name>pagebuilder_page</name>
1414
</parameters>
15-
</reportProvider>
15+
</customProvider>
1616
</providers>
1717
</file>
1818
<file name="pagebuilder_block">
1919
<providers>
20-
<reportProvider name="pagebuilder_block" class="Magento\Analytics\ReportXml\ReportProvider">
20+
<customProvider name="pagebuilder_block" class="Magento\PageBuilderAnalytics\Model\ContentTypeReportProvider">
2121
<parameters>
2222
<name>pagebuilder_block</name>
2323
</parameters>
24-
</reportProvider>
24+
</customProvider>
2525
</providers>
2626
</file>
2727
<file name="pagebuilder_category">
2828
<providers>
29-
<reportProvider name="pagebuilder_category" class="Magento\Analytics\ReportXml\ReportProvider">
29+
<customProvider name="pagebuilder_category" class="Magento\PageBuilderAnalytics\Model\ContentTypeReportProvider">
3030
<parameters>
3131
<name>pagebuilder_category</name>
3232
</parameters>
33-
</reportProvider>
33+
</customProvider>
3434
</providers>
3535
</file>
3636
<file name="pagebuilder_product_attributes">
3737
<providers>
38-
<reportProvider name="pagebuilder_product_attributes" class="Magento\Analytics\ReportXml\ReportProvider">
38+
<customProvider name="pagebuilder_product_attributes" class="Magento\PageBuilderAnalytics\Model\ContentTypeReportProvider">
3939
<parameters>
4040
<name>pagebuilder_product_attributes</name>
4141
</parameters>
42-
</reportProvider>
42+
</customProvider>
4343
</providers>
4444
</file>
4545
</config>

app/code/Magento/PageBuilderAnalytics/etc/reports.xml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@
99
<report name="pagebuilder_page" connection="default">
1010
<source name="cms_page">
1111
<attribute name="content"/>
12-
<attribute name="page_layout"/>
13-
<attribute name="title"/>
14-
<attribute name="is_active"/>
1512
<link-source name="cms_page_store" link-type="inner">
1613
<using glue="and">
1714
<condition attribute="row_id" operator="eq" type="identifier">row_id</condition>
@@ -26,8 +23,6 @@
2623
<report name="pagebuilder_block" connection="default">
2724
<source name="cms_block">
2825
<attribute name="content"/>
29-
<attribute name="title"/>
30-
<attribute name="is_active"/>
3126
<link-source name="cms_block_store" link-type="inner">
3227
<using glue="and">
3328
<condition attribute="row_id" operator="eq" type="identifier">row_id</condition>
@@ -41,7 +36,6 @@
4136
</report>
4237
<report name="pagebuilder_category" connection="default">
4338
<source name="catalog_category_entity_text">
44-
<attribute name="attribute_id"/>
4539
<attribute name="value"/>
4640
<link-source name="eav_attribute" link-type="inner">
4741
<using glue="and">

0 commit comments

Comments
 (0)