mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-09-29 18:20:01 +00:00
Model and some basic code for Telemetry (inactive)
This commit is contained in:
38
app/Models/Telemetry.php
Normal file
38
app/Models/Telemetry.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
/**
|
||||
* Telemetry.php
|
||||
* Copyright (c) 2020 thegrumpydictator@gmail.com
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace FireflyIII\Models;
|
||||
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
* Class Telemetry
|
||||
*/
|
||||
class Telemetry extends Model
|
||||
{
|
||||
/** @var string */
|
||||
protected $table = 'telemetry';
|
||||
|
||||
/** @var array */
|
||||
protected $fillable = ['installation_id','submitted','user_id','key','type','value'];
|
||||
|
||||
}
|
@@ -21,6 +21,7 @@
|
||||
|
||||
namespace FireflyIII\Support;
|
||||
|
||||
use FireflyIII\Models\Telemetry as TelemetryModel;
|
||||
use Log;
|
||||
|
||||
/**
|
||||
@@ -47,14 +48,14 @@ class Telemetry
|
||||
*/
|
||||
public function feature(string $flag): void
|
||||
{
|
||||
if (false === config('firefly.send_telemetry')) {
|
||||
if (false === config('firefly.send_telemetry') || false === config('firefly.feature_flags.telemetry')) {
|
||||
// hard stop if not allowed to do telemetry.
|
||||
// do nothing!
|
||||
return;
|
||||
}
|
||||
Log::info(sprintf('Logged telemetry feature flag "%s".', $flag));
|
||||
|
||||
// no storage backend yet, do nothing.
|
||||
$this->storeEntry('flag', $flag, '');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -70,12 +71,33 @@ class Telemetry
|
||||
*/
|
||||
public function string(string $name, string $value): void
|
||||
{
|
||||
if (false === config('firefly.send_telemetry')) {
|
||||
if (false === config('firefly.send_telemetry') || false === config('firefly.feature_flags.telemetry')) {
|
||||
// hard stop if not allowed to do telemetry.
|
||||
// do nothing!
|
||||
return;
|
||||
}
|
||||
Log::info(sprintf('Logged telemetry string "%s" with value "%s".', $name, $value));
|
||||
|
||||
// no storage backend yet, do nothing.
|
||||
$this->storeEntry('string', $name, json_encode($value, JSON_THROW_ON_ERROR, 512));
|
||||
}
|
||||
|
||||
/**
|
||||
* Store new entry in DB.
|
||||
*
|
||||
* @param string $name
|
||||
* @param string $value
|
||||
*/
|
||||
private function storeEntry(string $type, string $name, string $value): void
|
||||
{
|
||||
TelemetryModel::create(
|
||||
[
|
||||
'installation_id' => \FireflyConfig::get('installation_id', '')->data,
|
||||
'key' => $name,
|
||||
'type' => $type,
|
||||
'value' => $value,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
}
|
@@ -18,6 +18,7 @@ class ChangesForV520 extends Migration
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('auto_budgets');
|
||||
Schema::dropIfExists('telemetry');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -40,16 +41,28 @@ class ChangesForV520 extends Migration
|
||||
$table->decimal('amount', 22, 12);
|
||||
$table->string('period', 50);
|
||||
|
||||
//$table->string('password', 60);
|
||||
//$table->string('remember_token', 100)->nullable();
|
||||
//$table->string('reset', 32)->nullable();
|
||||
//$table->tinyInteger('blocked', false, true)->default('0');
|
||||
//$table->string('blocked_code', 25)->nullable();
|
||||
|
||||
$table->foreign('transaction_currency_id')->references('id')->on('transaction_currencies')->onDelete('cascade');
|
||||
$table->foreign('budget_id')->references('id')->on('budgets')->onDelete('cascade');
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
if (!Schema::hasTable('telemetry')) {
|
||||
Schema::create(
|
||||
'telemetry',
|
||||
static function (Blueprint $table) {
|
||||
$table->increments('id');
|
||||
$table->timestamps();
|
||||
$table->dateTime('submitted')->nullable();
|
||||
$table->integer('user_id', false, true)->nullable();
|
||||
$table->string('installation_id', 50);
|
||||
$table->string('key', 50);
|
||||
$table->string('type', 25);
|
||||
$table->text('value');
|
||||
|
||||
$table->foreign('user_id')->references('id')->on('users')->onDelete('set null');
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user