feat: Add campaign comments functionality with API support and database migration

This commit is contained in:
2026-03-06 20:07:11 +01:00
parent 5524324bea
commit 5dc2a89748
6 changed files with 244 additions and 26 deletions

View File

@@ -103,7 +103,7 @@ class Campaigns
echo json_encode( [
'chart_data' => $chart_data,
'dates' => $dates,
'comments' => []
'comments' => \factory\Campaigns::get_campaign_comments( $campaign_id )
] );
exit;
}
@@ -221,4 +221,38 @@ class Campaigns
echo json_encode( [ 'success' => true, 'deleted' => $deleted ] );
exit;
}
static public function comment_add()
{
$campaign_id = (int) \S::get( 'campaign_id' );
$comment = trim( \S::get( 'comment' ) );
$date = \S::get( 'date' );
if ( !$campaign_id || !$comment )
{
echo json_encode( [ 'success' => false, 'message' => 'Brak wymaganych parametrów' ] );
exit;
}
$result = \factory\Campaigns::add_campaign_comment( $campaign_id, $comment, $date ?: null );
echo json_encode( [ 'success' => $result ? true : false ] );
exit;
}
static public function comment_delete()
{
$comment_id = (int) \S::get( 'comment_id' );
if ( !$comment_id )
{
echo json_encode( [ 'success' => false, 'message' => 'Nie podano komentarza' ] );
exit;
}
$result = \factory\Campaigns::delete_campaign_comment( $comment_id );
echo json_encode( [ 'success' => $result ? true : false ] );
exit;
}
}

View File

@@ -415,4 +415,31 @@ class Campaigns
$mdb -> delete( 'campaigns_history', [ 'id' => $ids ] );
return count( $ids );
}
static public function get_campaign_comments( $campaign_id )
{
global $mdb;
return $mdb -> query( 'SELECT id, comment, date_add FROM campaigns_comments WHERE campaign_id = \'' . (int) $campaign_id . '\' ORDER BY date_add DESC' ) -> fetchAll( \PDO::FETCH_ASSOC );
}
static public function add_campaign_comment( $campaign_id, $comment, $date = null )
{
global $mdb;
if ( !$date )
$date = date( 'Y-m-d' );
else
$date = date( 'Y-m-d', strtotime( $date ) );
if ( $mdb -> count( 'campaigns_comments', [ 'AND' => [ 'campaign_id' => $campaign_id, 'date_add' => $date ] ] ) )
return $mdb -> update( 'campaigns_comments', [ 'comment' => $comment ], [ 'AND' => [ 'campaign_id' => $campaign_id, 'date_add' => $date ] ] );
else
return $mdb -> insert( 'campaigns_comments', [ 'campaign_id' => $campaign_id, 'comment' => $comment, 'date_add' => $date ] );
}
static public function delete_campaign_comment( $comment_id )
{
global $mdb;
return $mdb -> delete( 'campaigns_comments', [ 'id' => $comment_id ] );
}
}