Explorar el Código

Statuses are saving !

logicp hace 7 años
padre
commit
ca9976c2c4
Se han modificado 4 ficheros con 79 adiciones y 15 borrados
  1. 55 7
      src/Form/StatusForm.php
  2. 4 4
      src/Plugin/Block/StatusBlock.php
  3. 16 4
      src/StatusService.php
  4. 4 0
      src/StatusTypeService.php

+ 55 - 7
src/Form/StatusForm.php

@@ -4,6 +4,11 @@ namespace Drupal\statusmessage\Form;
 
 use Drupal\Core\Form\FormBase;
 use Drupal\Core\Form\FormStateInterface;
+use Drupal\statusmessage\Entity\Status;
+use Drupal\statusmessage\StatusService;
+use Drupal\statusmessage\StatusTypeService;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+
 
 /**
  * Form controller for Status edit forms.
@@ -11,6 +16,30 @@ use Drupal\Core\Form\FormStateInterface;
  * @ingroup statusmessage
  */
 class StatusForm extends FormBase {
+
+  protected $statusTypeService;
+
+  protected $statusService;
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container) {
+    return new static(
+      $container->get('status_type_service'),
+      $container->get('statusservice'));
+  }
+
+  /**
+   * StatusForm constructor.
+   * @param StatusTypeService $status_type_service
+   * @param StatusService $status_service
+   */
+  public function __construct(StatusTypeService $status_type_service, StatusService $status_service) {
+    $this->statusTypeService = $status_type_service;
+    $this->statusService = $status_service;
+  }
+
   /**
    * {@inheritdoc}
    */
@@ -41,7 +70,7 @@ class StatusForm extends FormBase {
    */
   public function save(array $form, FormStateInterface $form_state) {
     $entity = $this->entity;
-//    $status = parent::save($form, $form_state);
+    $status = parent::save($form, $form_state);
 
 
     switch ($status) {
@@ -65,9 +94,8 @@ class StatusForm extends FormBase {
    * @return string
    *   The unique string identifying the form.
    */
-  public function getFormId()
-  {
-    // TODO: Implement getFormId() method.
+  public function getFormId() {
+    return 'status_form';
   }
 
   /**
@@ -77,10 +105,30 @@ class StatusForm extends FormBase {
    *   An associative array containing the structure of the form.
    * @param \Drupal\Core\Form\FormStateInterface $form_state
    *   The current state of the form.
+   * @throws \Drupal\Core\Entity\EntityStorageException
+   * @throws \InvalidArgumentException
    */
-  public function submitForm(array &$form, FormStateInterface $form_state)
-  {
-    // TODO: Implement submitForm() method.
+  public function submitForm(array &$form, FormStateInterface $form_state) {
+
+    if (!empty($this->statusTypeService)) {
+      foreach ($this->statusTypeService->loadAll() as $type) {
+        if (!$type->getMedia()) {
+
+          $recipientUid = \Drupal::routeMatch()->getParameters()->get('user')->id();
+
+          $statusEntity = Status::create([
+            'type' => $type->id(),
+            'uid' => \Drupal::currentUser()->id(),
+            'recipient' => $recipientUid ? $recipientUid : \Drupal::currentUser()->id()
+          ]);
+
+          $statusEntity->setMessage($form_state->getValue('message'));
+          $statusEntity->save();
+
+          break;
+        }
+      }
+    }
   }
 }
 

+ 4 - 4
src/Plugin/Block/StatusBlock.php

@@ -3,6 +3,8 @@
 namespace Drupal\statusmessage\Plugin\Block;
 
 use Drupal\Core\Block\BlockBase;
+use Drupal\Core\Block;
+
 
 /**
  * Provides a 'StatusBlock' block.
@@ -12,6 +14,7 @@ use Drupal\Core\Block\BlockBase;
  *  admin_label = @Translation("Status block"),
  * )
  */
+
 class StatusBlock extends BlockBase {
 
 
@@ -19,12 +22,9 @@ class StatusBlock extends BlockBase {
    * {@inheritdoc}
    */
   public function build() {
-    $build = [];
-    $build['status_block']['#markup'] = 'Implement StatusBlock.';
 
-    $form = \Drupal::formBuilder()->getForm('Drupal\statusmessage\Form\StatusForm');
+    return \Drupal::formBuilder()->getForm('Drupal\statusmessage\Form\StatusForm');
 
-    return $form;
   }
 
 }

+ 16 - 4
src/StatusService.php

@@ -21,14 +21,14 @@ class StatusService {
    *
    * @var Drupal\Core\Entity\EntityTypeManager
    */
-  protected $entity_type_manager;
+  protected $entityTypeManager;
 
   /**
    * Drupal\Core\Entity\Query\QueryFactory definition.
    *
    * @var Drupal\Core\Entity\Query\QueryFactory
    */
-  protected $entity_query;
+  protected $entityQuery;
 
   /**
    * Drupal\flag\FlagService definition.
@@ -40,8 +40,8 @@ class StatusService {
    * Constructor.
    */
   public function __construct(EntityTypeManager $entity_type_manager, QueryFactory $entity_query, FlagService $flag) {
-    $this->entity_type_manager = $entity_type_manager;
-    $this->entity_query = $entity_query;
+    $this->entityTypeManager = $entity_type_manager;
+    $this->entityQuery = $entity_query;
     $this->flag = $flag;
   }
 
@@ -50,4 +50,16 @@ class StatusService {
     return ['image/jpeg', 'image/png', 'application/octet-stream', 'video/mp4', 'text/plain', 'application/pdf', 'image/gif'];
   }
 
+  public function getStatuses() {
+    return $this->entityQuery->get('status')->execute();
+  }
+
+  public function load($id) {
+    return $this->entityTypeManager->getStorage('status')->load($id);
+  }
+
+  public function loadAll() {
+    return $this->entityTypeManager->getStorage('status')->loadMultiple($this->getStatuses());
+  }
+
 }

+ 4 - 0
src/StatusTypeService.php

@@ -39,4 +39,8 @@ class StatusTypeService {
   public function load($id) {
     return $this->entityTypeManager->getStorage('status_type')->load($id);
   }
+
+  public function loadAll() {
+    return $this->entityTypeManager->getStorage('status_type')->loadMultiple($this->getTypes());
+  }
 }