3 namespace Drupal\fontyourface\Entity;
5 use Drupal\Core\Field\BaseFieldDefinition;
6 use Drupal\Core\Entity\ContentEntityBase;
7 use Drupal\Core\Entity\EntityChangedTrait;
8 use Drupal\Core\Entity\EntityTypeInterface;
9 use Drupal\fontyourface\FontInterface;
12 * Defines the Font entity.
14 * @ingroup fontyourface
18 * label = @Translation("Font"),
20 * "storage_schema" = "Drupal\fontyourface\FontStorageSchema",
21 * "view_builder" = "Drupal\Core\Entity\EntityViewBuilder",
22 * "list_builder" = "Drupal\fontyourface\FontListBuilder",
23 * "views_data" = "Drupal\fontyourface\Entity\FontViewsData",
26 * "default" = "Drupal\fontyourface\Form\FontForm",
27 * "edit" = "Drupal\fontyourface\Form\FontForm",
29 * "access" = "Drupal\fontyourface\FontAccessControlHandler",
30 * "route_provider" = {
31 * "html" = "Drupal\fontyourface\FontHtmlRouteProvider",
34 * base_table = "fontyourface_font",
35 * admin_permission = "administer font entities",
44 * "canonical" = "/admin/appearance/font/{font}",
45 * "enable" = "/admin/appearance/font/{font}/{js}/enable",
46 * "disable" = "/admin/appearance/font/{font}/{js}/disable",
47 * "collection" = "/admin/appearance/font",
49 * field_ui_base_route = "font.settings",
50 * render_cache = FALSE
53 class Font extends ContentEntityBase implements FontInterface {
54 use EntityChangedTrait;
59 public function getProvider() {
60 return $this->get('pid')->value;
66 public function setProvider($provider) {
67 $this->set('pid', $provider);
74 public function getMetadata() {
75 return unserialize($this->get('metadata')->value);
81 public function setMetadata($metadata) {
82 $this->set('metadata', serialize($metadata));
89 public function getCreatedTime() {
90 return $this->get('created')->value;
96 public function setCreatedTime($timestamp) {
97 $this->set('created', $timestamp);
104 public function getChangedTime() {
105 return $this->get('changed')->value;
111 public function setChangedTime($timestamp) {
112 $this->set('changed', $timestamp);
119 public function isActivated() {
120 $config = \Drupal::config('fontyourface.settings');
121 $enabled_fonts = $config->get('enabled_fonts');
122 return in_array($this->url->value, $enabled_fonts);
128 public function isDeactivated() {
129 return !$this->isActivated();
135 public function activate() {
136 $config = \Drupal::configFactory()->getEditable('fontyourface.settings');
137 if (!$this->isActivated()) {
138 $enabled_fonts = $config->get('enabled_fonts');
139 $enabled_fonts[] = $this->url->value;
140 $config->set('enabled_fonts', $enabled_fonts)
143 $this->status->value = TRUE;
145 return $this->isActivated();
151 public function deactivate() {
152 $config = \Drupal::configFactory()->getEditable('fontyourface.settings');
153 $enabled_fonts = $config->get('enabled_fonts');
154 $enabled_fonts = array_diff($enabled_fonts, [$this->url->value]);
155 $config->set('enabled_fonts', $enabled_fonts)
157 $this->status->value = FALSE;
159 return $this->isDeactivated();
165 public static function loadActivatedFonts() {
166 $config = \Drupal::config('fontyourface.settings');
167 $enabled_fonts = $config->get('enabled_fonts');
169 foreach ($enabled_fonts as $enabled_font_url) {
170 $font = self::loadByUrl($enabled_font_url);
172 $fonts[$font->url->value] = $font;
181 public static function loadByUrl($font_url) {
182 $fonts = \Drupal::entityManager()->getStorage('font')->loadByProperties(['url' => $font_url]);
183 return reset($fonts);
189 public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
190 $fields['fid'] = BaseFieldDefinition::create('integer')
192 ->setDescription(t('The ID of the Font entity.'))
194 $fields['uuid'] = BaseFieldDefinition::create('uuid')
195 ->setLabel(t('UUID'))
196 ->setDescription(t('The UUID of the Font entity.'))
198 $fields['pid'] = BaseFieldDefinition::create('string')
199 ->setLabel(t('Provider ID'))
200 ->setDescription(t('The font provider ID.'))
203 'text_processing' => 0,
205 ->setDefaultValue('')
206 ->setDisplayOptions('view', [
211 ->setDisplayOptions('form', [
212 'type' => 'string_textfield',
215 ->setDisplayConfigurable('form', TRUE)
216 ->setDisplayConfigurable('view', TRUE);
218 $fields['url'] = BaseFieldDefinition::create('string')
219 ->setLabel(t('Font URL'))
220 ->setDescription(t('A URL for the font.'))
223 'text_processing' => 0,
225 ->setDefaultValue('')
226 ->setDisplayOptions('view', [
231 ->setDisplayOptions('form', [
232 'type' => 'string_textfield',
235 ->setDisplayConfigurable('form', TRUE)
236 ->setDisplayConfigurable('view', TRUE);
238 $fields['name'] = BaseFieldDefinition::create('string')
239 ->setLabel(t('Name'))
240 ->setDescription(t('The name of the Font entity.'))
243 'text_processing' => 0,
245 ->setDefaultValue('')
246 ->setDisplayOptions('view', [
251 ->setDisplayOptions('form', [
252 'type' => 'string_textfield',
255 ->setDisplayConfigurable('form', TRUE)
256 ->setDisplayConfigurable('view', TRUE);
258 $fields['css_family'] = BaseFieldDefinition::create('string')
259 ->setLabel(t('CSS Family'))
260 ->setDescription(t('CSS family for the font.'))
263 'text_processing' => 0,
265 ->setDefaultValue('')
266 ->setDisplayOptions('view', [
271 ->setDisplayOptions('form', [
272 'type' => 'string_textfield',
275 ->setDisplayConfigurable('form', TRUE)
276 ->setDisplayConfigurable('view', TRUE);
278 $fields['css_style'] = BaseFieldDefinition::create('string')
279 ->setLabel(t('CSS Style'))
280 ->setDescription(t('CSS style for the font.'))
283 'text_processing' => 0,
285 ->setDefaultValue('')
286 ->setDisplayOptions('view', [
291 ->setDisplayOptions('form', [
292 'type' => 'string_textfield',
295 ->setDisplayConfigurable('form', TRUE)
296 ->setDisplayConfigurable('view', TRUE);
298 $fields['css_weight'] = BaseFieldDefinition::create('string')
299 ->setLabel(t('CSS Weight'))
300 ->setDescription(t('CSS weight for the font.'))
303 'text_processing' => 0,
305 ->setDefaultValue('')
306 ->setDisplayOptions('view', [
311 ->setDisplayOptions('form', [
312 'type' => 'string_textfield',
315 ->setDisplayConfigurable('form', TRUE)
316 ->setDisplayConfigurable('view', TRUE);
318 $fields['foundry'] = BaseFieldDefinition::create('string')
319 ->setLabel(t('Foundry'))
320 ->setDescription(t('Foundry for the font.'))
323 'text_processing' => 0,
325 ->setDefaultValue('')
326 ->setDisplayOptions('view', [
331 ->setDisplayOptions('form', [
332 'type' => 'string_textfield',
335 ->setDisplayConfigurable('form', TRUE)
336 ->setDisplayConfigurable('view', TRUE);
338 $fields['foundry_url'] = BaseFieldDefinition::create('string')
339 ->setLabel(t('Foundry URL'))
340 ->setDescription(t('Foundry URL.'))
343 'text_processing' => 0,
345 ->setDefaultValue('')
346 ->setDisplayOptions('view', [
351 ->setDisplayOptions('form', [
352 'type' => 'string_textfield',
355 ->setDisplayConfigurable('form', TRUE)
356 ->setDisplayConfigurable('view', TRUE);
358 $fields['license'] = BaseFieldDefinition::create('string')
359 ->setLabel(t('License'))
360 ->setDescription(t('Font License.'))
363 'text_processing' => 0,
365 ->setDefaultValue('')
366 ->setDisplayOptions('view', [
371 ->setDisplayOptions('form', [
372 'type' => 'string_textfield',
375 ->setDisplayConfigurable('form', TRUE)
376 ->setDisplayConfigurable('view', TRUE);
378 $fields['license_url'] = BaseFieldDefinition::create('string')
379 ->setLabel(t('License URL'))
380 ->setDescription(t('License URL.'))
383 'text_processing' => 0,
385 ->setDefaultValue('')
386 ->setDisplayOptions('view', [
391 ->setDisplayOptions('form', [
392 'type' => 'string_textfield',
395 ->setDisplayConfigurable('form', TRUE)
396 ->setDisplayConfigurable('view', TRUE);
398 $fields['designer'] = BaseFieldDefinition::create('string')
399 ->setLabel(t('Designer'))
400 ->setDescription(t('Font Designer'))
403 'text_processing' => 0,
405 ->setDefaultValue('')
406 ->setDisplayOptions('view', [
411 ->setDisplayOptions('form', [
412 'type' => 'string_textfield',
415 ->setDisplayConfigurable('form', TRUE)
416 ->setDisplayConfigurable('view', TRUE);
418 $fields['designer_url'] = BaseFieldDefinition::create('string')
419 ->setLabel(t('Designer URL'))
420 ->setDescription(t('Designer URL.'))
423 'text_processing' => 0,
425 ->setDefaultValue('')
426 ->setDisplayOptions('view', [
431 ->setDisplayOptions('form', [
432 'type' => 'string_textfield',
435 ->setDisplayConfigurable('form', TRUE)
436 ->setDisplayConfigurable('view', TRUE);
438 $fields['metadata'] = BaseFieldDefinition::create('string_long')
439 ->setLabel(t('Font Metadata'))
440 ->setDescription(t('Additional Font Metadata'))
441 ->setDisplayConfigurable('form', TRUE)
442 ->setDisplayConfigurable('view', TRUE);
444 $fields['created'] = BaseFieldDefinition::create('created')
445 ->setLabel(t('Created'))
446 ->setDescription(t('The time that the entity was created.'));
448 $fields['changed'] = BaseFieldDefinition::create('changed')
449 ->setLabel(t('Changed'))
450 ->setDescription(t('The time that the entity was last edited.'));
452 $fields['status'] = BaseFieldDefinition::create('boolean')
453 ->setLabel(t('Font status'))
454 ->setDescription(t('A boolean indicating whether the font is enabled. Mostly used for views.'))
455 ->setTranslatable(TRUE)
456 ->setDefaultValue(FALSE);