<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage View
 * @copyright  Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

namespace Core\Helper;

use Eva\Api;

/**
 * View helper for rendering Form objects
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage View
 * @copyright  Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Tagging extends \Zend\Form\View\Helper\AbstractHelper
{
    protected $tags;

    protected $splitMark = ',';

    protected $nameKey = 'tagName';

    public function setNameKey($nameKey)
    {
        $this->nameKey = $nameKey;
        return $this;
    }

    public function setSplitMark($splitMark)
    {
        $this->splitMark = $splitMark;
        return $this;
    }

    /**
     * Invoke helper as functor
     *
     * Proxies to {@link render()}.
     * 
     * @param  ElementInterface $element 
     * @return string
     */
    public function __invoke(array $tagSourceArray = array())
    {
        $this->tags = $tagSourceArray;
        return $this;
    }

    public function toNameArray()
    {
        $tagNameArray = array();
        $tags = $this->tags;
        if(!$tags){
            return array();
        }
        $nameKey = $this->nameKey;
        foreach($tags as $key => $tag){
            if(isset($tag[$nameKey])){
                $tagNameArray[] = $tag[$nameKey];
            }
        }

        return $tagNameArray;
    }

    public function toNameString()
    {
        $tagNameArray = $this->toNameArray();
        $splitMark = $this->splitMark;
        return implode($splitMark, $tagNameArray);
    }
}
