--- /dev/null
+<?php
+
+namespace App\Fields;
+
+use Cubist\Backpack\Magic\Fields\SelectFromModel;
+
+class Badge extends SelectFromModel
+{
+ public function __construct($attributes)
+ {
+ $attributes['optionsmodel'] = \App\Models\Badges\BadgeClass::class;
+ $attributes['attribute'] = 'name';
+ $attributes['optionsmodel_orderby'] = 'id';
+ $attributes['optionsmodel_orderby_way'] = 'desc';
+
+ parent::__construct($attributes);
+ }
+}
namespace App\Models\Badges;
-class Assertion
+use App\Fields\Badge;
+use Cubist\Backpack\Magic\Fields\Code;
+use Cubist\Backpack\Magic\Fields\Datetime;
+use Cubist\Backpack\Magic\Fields\Email;
+use Cubist\Backpack\Magic\Fields\Text;
+use Cubist\Util\Files\Files;
+
+class Assertion extends Base
{
+ protected $table = 'badges_assertion';
+ protected $_options = ['name' => 'badge-assertion',
+ 'singular' => 'assertion',
+ 'plural' => 'assertions'];
+
+ protected static $_permissionBase = 'badge-assertion';
+
+
+ protected static $_ownerAttribute = null;
+
+ public function setFields()
+ {
+ parent::setFields();
+
+ $this->addField('firstname', Text::class, __('Prénom'));
+ $this->addField('lastname', Text::class, __('Nom'));
+ $this->addField('email', Email::class, __('E-mail'), ['column' => true]);
+ $this->addField('created_at', Datetime::class, __('Délivré le'), ['column' => true]);
+ $this->addField('badge', Badge::class, __('Badge'), ['column' => true]);
+ }
+
+ public function getAssertionJSON()
+ {
+
+ }
+
+ public function onSaved(): bool
+ {
+ $res = parent::onSaved();
+ /** @var BadgeClass $badge */
+ $badge = BadgeClass::withoutGlobalScopes()->find($this->badge);
+ $d = $badge->getPreviewData();
+ $d['earner'] = $this->firstname . ' ' . $this->lastname;
+ $d['date'] = (new \DateTime($this->created_at))->format('Y-m-d');
+ $image = BadgeClass::generateImage($d);
+
+ $dest = Files::mkdir(protected_path('badge/assertions')) . $this->uid . '.png';
+
+ $im = new \Imagick($image);
+ $im->setImageProperty('openbadges', 'https://toolbox.fluidbook.com/ob/assertion/' . $this->uid);
+ $im->writeImage($dest);
+
+ return $res;
+ }
}
use App\Models\Base\ToolboxModel;
use Cubist\Backpack\Magic\Fields\HiddenVisible;
-use hollodotme\FastCGI\SocketConnections\Defaults;
class Base extends ToolboxModel
{
{
parent::setFields();
$this->addField('uid', HiddenVisible::class, __('UID'), ['column' => true, 'unique' => true]);
- $this->addOwnerField();
+ if(null!==static::$_ownerAttribute) {
+ $this->addOwnerField();
+ }
}
public function onSaving(): bool