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 
<?php
namespace Tev\Field\Model;

use WP_User;
use Tev\Author\Factory as AuthorFactory;

/**
 * Author field.
 *
 * Returns a single Author object or array of Author objects.
 */
class AuthorField extends AbstractField
{
    /**
     * Author factory.
     *
     * @var \Tev\Author\Factory
     */
    private $authorFactory;

    /**
     * Constructor.
     *
     * @param  array               $base          Base field data
     * @param  \Tev\Author\Factory $authorFactory Author factory
     * @return void
     */
    public function __construct(array $base, AuthorFactory $authorFactory)
    {
        parent::__construct($base);

        $this->authorFactory = $authorFactory;
    }

    /**
     * Get a single author object or array of author objects.
     *
     * If no authors are configured, returned will result will be an empty array
     * if this is a mutli-select, or null if not.
     *
     * @return \Tev\Author\Model\Author|\Tev\Author\Model\Author[]|null
     */
    public function getValue()
    {
        $val = $this->base['value'];

        if (is_array($val)) {
            if (isset($val['ID'])) {
                return $this->authorFactory->create($val['ID']);
            } else {
                $authors = array();

                foreach ($val as $a) {
                    $authors[] = $this->authorFactory->create($a['ID']);
                }

                return $authors;
            }
        } else {
            if (isset($this->base['multiple']) && $this->base['multiple']) {
                return array();
            } else {
                return null;
            }
        }
    }

    /**
     * Get a string representation of this field.
     *
     * Author display name or names, comma-space separated.
     *
     * @return string
     */
    public function __toString()
    {
        $author = $this->getValue();

        if (is_array($author)) {
            return array_reduce($author, function ($string, $a) {
                return $string . (strlen($string) ? ', ' : '') . $a->getDisplayName();
            }, '');
        } elseif ($author !== null) {
            return $author->getDisplayName();
        } else {
            return '';
        }
    }
}
3ev Core Wordpress library API API documentation generated by ApiGen