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 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 
<?php
namespace Tev\Field\Model;

use ArrayAccess, Iterator, Countable;
use Tev\Field\Factory as FieldFactory,
    Tev\Field\Util\FieldGroup;

/**
 * Repeater field.
 *
 * An iterable field which provides access to underlying grouped sets of
 * fields.
 */
class RepeaterField extends AbstractField implements ArrayAccess, Iterator, Countable
{
    /**
     * Field factory.
     *
     * @var \Tev\Field\Factory
     */
    protected $fieldFactory;

    /**
     * Current iteration position.
     *
     * @var int
     */
    protected $position;

    /**
     * Constructor.
     *
     * @param  array              $base         Repeater field data
     * @param  \Tev\Field\Factory $fieldFactory Field factory
     * @return void
     */
    public function __construct(array $base, FieldFactory $fieldFactory)
    {
        parent::__construct($base);

        $this->fieldFactory = $fieldFactory;
        $this->position     = 0;
    }

    /**
     * Shows the number of items in the repeater.
     *
     * @return int
     */
    public function getValue()
    {
        return $this->count();
    }

    /**
     * Get the number of items in the repeater.
     *
     * @return int
     */
    public function count()
    {
        if (is_array($this->base['value'])) {
            return count($this->base['value']);
        }

        return 0;
    }

    /**
     * Get the current repeater item.
     *
     * @return \Tev\Field\Util\FieldGroup
     */
    public function current()
    {
        return new FieldGroup(
            $this->base['sub_fields'],
            $this->base['value'][$this->position],
            $this,
            $this->fieldFactory
        );
    }

    /**
     * Get the current iteration key.
     *
     * @return int
     */
    public function key()
    {
        return $this->position;
    }

    /**
     * Advance to the next position.
     *
     * @return void
     */
    public function next()
    {
        $this->position++;
    }

    /**
     * Rewind to the beginning.
     *
     * @return void
     */
    public function rewind()
    {
        $this->position = 0;
    }

    /**
     * Check if current position is valid.
     *
     * @return boolean
     */
    public function valid()
    {
        return isset($this->base['value'][$this->position]) && is_array($this->base['value'][$this->position]);
    }

    /**
     * Required for `\ArrayAccess`.
     *
     * @param  mixed   $offset Array offset
     * @return boolean
     */
    public function offsetExists($offset)
    {
        return isset($this->base['value'][$offset]) && is_array($this->base['value'][$offset]);
    }

    /**
     * Required for `\ArrayAccess`.
     *
     * @param  mixed $offset Array offset
     * @return mixed
     */
    public function offsetGet($offset)
    {
        if (isset($this->base['value'][$offset]) && is_array($this->base['value'][$offset])) {
            return new FieldGroup(
                $this->base['sub_fields'],
                $this->base['value'][$offset],
                $this,
                $this->fieldFactory
            );
        }

        return null;
    }

    /**
     * Required for `\ArrayAccess`.
     *
     * @param  mixed $offset Array offset
     * @param  mixed $value  Value to set
     * @return void
     */
    public function offsetSet($offset, $value)
    {
        if (is_null($offset)) {
            $this->base['value'][] = $value;
        } else {
            $this->base['value'][$offset] = $value;
        }
    }

    /**
     * Required for `\ArrayAccess`.
     *
     * @param  mixed $offset Array offset
     * @return void
     */
    public function offsetUnset($offset)
    {
        unset($this->base['value'][$offset]);
    }
}
3ev Core Wordpress library API API documentation generated by ApiGen