Files
adsPRO/autoload/controls/class.Campaigns.php
Jacek Pyziak 5e491d626c feat: Dodaj moduł grup i fraz, oznaczanie wykluczonych na czerwono, CLAUDE.md
- Nowy moduł CampaignTerms z widokiem grup reklam, fraz wyszukiwanych i fraz wykluczających
- Frazy wyszukiwane dodane do wykluczonych oznaczane czerwonym kolorem w tabeli
- Instalator migracji (install.php) z obsługą schema_migrations
- Migracja 003 dla tabel campaign_ad_groups, campaign_search_terms, campaign_negative_keywords
- CLAUDE.md z dokumentacją architektury projektu
- Aktualizacja layoutu, stylów i konfiguracji

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 23:44:30 +01:00

171 lines
4.4 KiB
PHP

<?php
namespace controls;
class Campaigns
{
static public function main_view()
{
return \Tpl::view( 'campaigns/main_view', [
'clients' => \factory\Campaigns::get_clients(),
] );
}
static public function get_campaigns_list()
{
echo json_encode( [ 'campaigns' => \factory\Campaigns::get_campaigns_list( \S::get( 'client_id' ) ) ] );
exit;
}
static public function get_campaign_history_data_table()
{
$campaign_id = \S::get( 'campaign_id' );
$start = \S::get( 'start' );
$length = \S::get( 'length' );
$db_results = \factory\Campaigns::get_campaign_history_data( $campaign_id, $start, $length );
$recordsTotal = \factory\Campaigns::get_records_total_campaign_history_data( $campaign_id );
$result = [
'draw' => \S::get( 'draw' ),
'recordsTotal' => $recordsTotal,
'recordsFiltered' => $recordsTotal
];
foreach ( $db_results as $row )
{
$result['data'][] = [
$row['date_add'],
number_format( $row['roas_30_days'], 0, '', ' ' ),
number_format( $row['roas_all_time'], 0, '', ' ' ),
\S::number_display( $row['conversion_value'] ),
\S::number_display( $row['money_spent'] ),
'',
$row['bidding_strategy'],
\S::number_display( $row['budget'] ),
'<button type="button" class="btn btn-danger btn-sm delete-history-entry" data-id="' . $row['id'] . '" data-date="' . $row['date_add'] . '"><i class="fa fa-trash"></i></button>',
];
}
echo json_encode( $result );
exit;
}
static public function get_campaign_history_data_table_chart()
{
$campaign_id = \S::get( 'campaign_id' );
$db_result = \factory\Campaigns::get_campaign_history_data( $campaign_id, 0, 1000, true );
$roas30 = [];
$roasAllTime = [];
$budget = [];
$moneySpent = [];
$conversionValue = [];
$dates = [];
foreach ( $db_result as $row )
{
$roas30[] = (float)$row['roas_30_days'];
$roasAllTime[] = (float)$row['roas_all_time'];
$budget[] = (float)$row['budget'];
$moneySpent[] = (float)$row['money_spent'];
$dates[] = $row['date_add'];
$conversionValue[] = (float)$row['conversion_value'];
}
$chart_data = [
[
'name' => 'Roas 30 dni',
'data' => $roas30,
'visible' => true
], [
'name' => 'Roas cały okres',
'data' => $roasAllTime,
'visible' => true
], [
'name' => 'Budżet',
'data' => $budget,
'visible' => false
], [
'name' => 'Wydatki',
'data' => $moneySpent,
'visible' => false
], [
'name' => 'Wartość konwersji',
'data' => $conversionValue,
'visible' => false
]
];
echo json_encode( [
'chart_data' => $chart_data,
'dates' => $dates,
'comments' => []
] );
exit;
}
static public function get_campaign_ad_groups()
{
$campaign_id = (int) \S::get( 'campaign_id' );
if ( $campaign_id <= 0 )
{
echo json_encode( [ 'ad_groups' => [] ] );
exit;
}
echo json_encode( [ 'ad_groups' => \factory\Campaigns::get_campaign_ad_groups( $campaign_id ) ] );
exit;
}
static public function get_campaign_phrase_details()
{
$campaign_id = (int) \S::get( 'campaign_id' );
$ad_group_id = (int) \S::get( 'ad_group_id' );
if ( $campaign_id <= 0 )
{
echo json_encode( [ 'search_terms' => [], 'negative_keywords' => [] ] );
exit;
}
echo json_encode( [
'search_terms' => \factory\Campaigns::get_campaign_search_terms( $campaign_id, $ad_group_id ),
'negative_keywords' => \factory\Campaigns::get_campaign_negative_keywords( $campaign_id, $ad_group_id )
] );
exit;
}
static public function delete_campaign()
{
$campaign_id = \S::get( 'campaign_id' );
if ( !$campaign_id )
{
echo json_encode( [ 'success' => false, 'message' => 'Nie wybrano kampanii' ] );
exit;
}
$result = \factory\Campaigns::delete_campaign( $campaign_id );
echo json_encode( [ 'success' => $result ? true : false ] );
exit;
}
static public function delete_history_entry()
{
$history_id = \S::get( 'history_id' );
if ( !$history_id )
{
echo json_encode( [ 'success' => false, 'message' => 'Nie podano wpisu do usunięcia' ] );
exit;
}
$result = \factory\Campaigns::delete_history_entry( $history_id );
echo json_encode( [ 'success' => $result ? true : false ] );
exit;
}
}