3ev Core Wordpress library API
  • Namespace
  • Class

Namespaces

  • Tev
    • Application
      • Bootstrap
    • Author
      • Model
    • Contracts
    • Database
      • CustomTables
    • Field
      • Model
      • Util
    • Plugin
      • Action
      • Shortcode
    • Post
      • Model
      • Repository
    • Taxonomy
      • Model
      • Repository
    • Term
      • Model
      • Repository
    • Util
    • View
      • Exception
  • None

Classes

  • Tev\Application\Application
  • Tev\Application\Bootstrap\AuthorFactory
  • Tev\Application\Bootstrap\FieldFactory
  • Tev\Application\Bootstrap\PluginLoader
  • Tev\Application\Bootstrap\Post
  • Tev\Application\Bootstrap\Taxonomy
  • Tev\Application\Bootstrap\Term
  • Tev\Application\Bootstrap\Util
  • Tev\Author\Factory
  • Tev\Author\Model\Author
  • Tev\Database\CustomTables\AbstractInstaller
  • Tev\Database\Utils
  • Tev\Field\Factory
  • Tev\Field\Model\AbstractField
  • Tev\Field\Model\AuthorField
  • Tev\Field\Model\BasicField
  • Tev\Field\Model\DateField
  • Tev\Field\Model\FileField
  • Tev\Field\Model\FlexibleContentField
  • Tev\Field\Model\GoogleMapField
  • Tev\Field\Model\ImageField
  • Tev\Field\Model\NullField
  • Tev\Field\Model\NumberField
  • Tev\Field\Model\PostField
  • Tev\Field\Model\RepeaterField
  • Tev\Field\Model\SelectField
  • Tev\Field\Model\TaxonomyField
  • Tev\Field\Util\FieldGroup
  • Tev\Field\Util\LayoutFieldGroup
  • Tev\Plugin\Action\AbstractProvider
  • Tev\Plugin\Loader
  • Tev\Plugin\Shortcode\AbstractProvider
  • Tev\Post\Factory
  • Tev\Post\Model\AbstractPost
  • Tev\Post\Model\Attachment
  • Tev\Post\Model\Page
  • Tev\Post\Model\Post
  • Tev\Post\Repository\PostRepository
  • Tev\Taxonomy\Factory
  • Tev\Taxonomy\Model\Taxonomy
  • Tev\Taxonomy\Repository\TaxonomyRepository
  • Tev\Term\Factory
  • Tev\Term\Model\Term
  • Tev\Term\Repository\TermRepository
  • Tev\Util\TemplateExtras
  • Tev\View\Renderer

Interfaces

  • Tev\Contracts\BootstrapperInterface
  • Tev\Contracts\WordpressWrapperInterface

Exceptions

  • Tev\View\Exception\NotFoundException
  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 
<?php
namespace Tev\Field\Model;

use Tev\Taxonomy\Factory as TaxonomyFactory,
    Tev\Term\Factory as TermFactory;

/**
 * Taxonomy field.
 *
 * Gives a single Taxonomy Term, or array of Taxonomy Terms.
 */
class TaxonomyField extends AbstractField
{
    /**
     * Taxonomy factory
     *
     * @var \Tev\Taxonomy\Factory
     */
    private $taxonomyFactory;

    /**
     * Term factory
     *
     * @var \Tev\Term\Factory
     */
    private $termFactory;

    /**
     * Term taxonomy.
     *
     * @var \Tev\Taxonomy\Model\Taxonomy
     */
    private $_taxonomy;

    /**
     * Constructor.
     *
     * @param  array                 $base            Base field data
     * @param  \Tev\Taxonomy\Factory $taxonomyFactory Taxonomy factory
     * @param  \Tev\Term\Factory     $termFactory     Term factory
     * @return void
     */
    public function __construct(array $base,
                                TaxonomyFactory $taxonomyFactory,
                                TermFactory $termFactory)
    {
        parent::__construct($base);

        $this->taxonomyFactory = $taxonomyFactory;
        $this->termFactory     = $termFactory;
        $this->_taxonomy       = null;
    }

    /**
     * Get Term or array of Terms.
     *
     * @return \Tev\Term\Model\Term|\Tev\Term\Model\Term[]|null
     */
    public function getValue()
    {
        $terms = $this->base['value'];

        if (is_array($terms)) {
            $ret = array();

            foreach ($terms as $t) {
                $ret[] = $this->termFactory->create($t, $this->taxonomy());
            }

            return $ret;
        } elseif (is_object($terms)) {
            return $this->termFactory->create($terms, $this->taxonomy());
        } else {
            if ($this->base['multiple'] || $this->base['field_type'] === 'multi_select' || $this->base['field_type'] === 'checkbox') {
                return array();
            } else {
                return null;
            }
        }
    }

    /**
     * Get Term Taxonomy.
     *
     * @return \Tev\Taxonomy\Model\Taxonomy
     */
    public function taxonomy()
    {
        if ($this->_taxonomy === null) {
            $this->_taxonomy = $this->taxonomyFactory->create($this->base['taxonomy']);
        }

        return $this->_taxonomy;
    }

    /**
     * Get a string representation of the terms.
     *
     * Term name, or list of comma-separated term names.
     *
     * @return string
     */
    public function __toString()
    {
        $terms = $this->getValue();

        if (is_array($terms)) {
            return array_reduce($terms, function ($string, $t) {
                return $string . (strlen($string) ? ', ' : '') . $t->getName();
            }, '');
        } else {
            return $terms->getName();
        }
    }
}
3ev Core Wordpress library API API documentation generated by ApiGen