civictechro/website-alba-iulia-smart-city

View on GitHub
site/web/app/themes/smart-city/app/controllers/Solutii.php

Summary

Maintainability
B
5 hrs
Test Coverage
<?php

namespace App;

use Sober\Controller\Controller;

class Solutii extends Controller {
  public static function proiecte(): array {
    $projects = get_posts(array(
      'post_type' => \AppConstants::POST_TYPE_PROJECT,
      'posts_per_page' => 100,
    ));

    $ret = array();
    foreach ($projects as $project) {
      $ret[] = self::projectData($project);
    }

    return $ret;
  }

  // TODO: Should log bad projects
  public static function projectData(\WP_Post $project): array {
    $verticala = get_field('verticala', $project->ID);
    if ($verticala) {
      $verticala = $verticala[0];
    } else {
      return array();
    }

    $etapa = get_field('etapa_implementare', $project->ID);
    if ($etapa) {
      $etapa = $etapa[0];
    } else {
      return array();
    }

    $partner = \Proiect::parseCompanies(get_field('partener', $project->ID));
    if ($partner) {
      $partner = $partner[0];
    } else {
      return array('partener' => array('name' => null));
    }

    return array(
      'name' => $project->post_title,
      'verticala' => array(
        'label' => $verticala->post_title,
        'pictograma' => get_field('pictograma_upload', $verticala->ID),
        'color' => get_field('culoare', $verticala->ID),
      ),
      'etapa' => array(
        'label' => $etapa->post_title,
        'icon' => get_field('pictograma', $etapa->ID)->element,
      ),
      'thumb' => \Proiect::featuredThumbForID($project->ID),
      'image' => \Proiect::featuredImageForID($project->ID),
      'status' => get_field('etapa_implementare', $project->ID),
      'partener' => $partner,
      'permalink' => get_permalink($project->ID),
    );

  }
}