| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 | 
							- <?php
 
- /**
 
-  *
 
-  * Cube Framework $Id$ DM2KFGhyJjGoqYCfWghrv8gG1/c3mQiYRPKqQ+iPHkQ=
 
-  *
 
-  * @link        http://codecu.be/framework
 
-  * @copyright   Copyright (c) 2014 CodeCube SRL
 
-  * @license     http://codecu.be/framework/license Commercial License
 
-  *
 
-  * @version     1.1
 
-  */
 
- /**
 
-  * create head meta html tags
 
-  */
 
- namespace Cube\View\Helper;
 
- class HeadMeta extends AbstractHelper
 
- {
 
-     /**
 
-      * title operation types
 
-      */
 
-     const SET = 'set';
 
-     const APPEND = 'append';
 
-     const PREPEND = 'prepend';
 
-     /**
 
-      *
 
-      * page container container
 
-      *
 
-      * @var array
 
-      */
 
-     protected $_container = array();
 
-     /**
 
-      *
 
-      * head meta method
 
-      * only a proxy to the class - all calls are done through the magic method
 
-      *
 
-      * @return $this
 
-      */
 
-     public function headMeta()
 
-     {
 
-         return $this;
 
-     }
 
-     /**
 
-      *
 
-      * call magic method, enables the calling of the following methods:
 
-      * append|prepend - Name|HttpEquiv|Charset
 
-      *
 
-      * @param string $method
 
-      * @param array  $args
 
-      *
 
-      * @throws \InvalidArgumentException
 
-      * @return $this
 
-      */
 
-     public function __call($method, $args)
 
-     {
 
-         if (preg_match('/^(?P<action>set|(pre|ap)pend)(?P<type>Name|HttpEquiv|Property|Charset)$/', $method, $matches)
 
-         ) {
 
-             $action = '_' . $matches['action'];
 
-             $type = strtolower(
 
-                 preg_replace("/([a-z])([A-Z])/", '$1-$2', $matches['type']));
 
-             $nbArgs = count($args);
 
-             if ($nbArgs < 1 || $nbArgs > 2) {
 
-                 throw new \InvalidArgumentException("Invalid number of arguments given in headMeta function call.");
 
-             }
 
-             if (!isset($args[1])) {
 
-                 $args[1] = null;
 
-             }
 
-             $data = $this->_createData($type, $args[0], $args[1]);
 
-             $this->$action($data);
 
-         }
 
-         return $this;
 
-     }
 
-     /**
 
-      *
 
-      * append data to meta tags container
 
-      *
 
-      * @param array $data
 
-      *
 
-      * @return $this
 
-      */
 
-     protected function _append($data)
 
-     {
 
-         array_push($this->_container, $data);
 
-         return $this;
 
-     }
 
-     /**
 
-      *
 
-      * prepend data to meta tags container
 
-      *
 
-      * @param string $data
 
-      *
 
-      * @return $this
 
-      */
 
-     protected function _prepend($data)
 
-     {
 
-         array_unshift($this->_container, $data);
 
-         return $this;
 
-     }
 
-     /**
 
-      *
 
-      * set data to meta tags container - will first remove all tags that have the same key name
 
-      *
 
-      * @param array $data
 
-      *
 
-      * @return $this
 
-      */
 
-     protected function _set($data)
 
-     {
 
-         foreach ($this->_container as $key => $item) {
 
-             if (strcmp($item['value'], $data['value']) === 0 && strcmp($item['key'], $data['key']) === 0) {
 
-                 unset($this->_container[$key]);
 
-             }
 
-         }
 
-         return $this->_append($data);
 
-     }
 
-     /**
 
-      *
 
-      * clear meta tags container
 
-      *
 
-      * @return $this
 
-      */
 
-     public function clearContainer()
 
-     {
 
-         $this->_container = array();
 
-         return $this;
 
-     }
 
-     /**
 
-      *
 
-      * format data to add to the container
 
-      *
 
-      * @param string $keyName
 
-      * @param string $keyValue
 
-      * @param string $content
 
-      *
 
-      * @return array
 
-      */
 
-     protected function _createData($keyName, $keyValue, $content)
 
-     {
 
-         return array(
 
-             'key'     => $keyName,
 
-             'value'   => $keyValue,
 
-             'content' => $content,
 
-         );
 
-     }
 
-     /**
 
-      *
 
-      * to string magic method
 
-      * only outputs meta tags with key/value/content if content is not empty
 
-      *
 
-      * enables <code>echo $this->headMeta(); </code>
 
-      *
 
-      * @return string
 
-      */
 
-     public function __toString()
 
-     {
 
-         $output = null;
 
-         foreach ($this->_container as $item) {
 
-             if (isset($item['content'])) {
 
-                 if (!empty($item['content'])) {
 
-                     $output .= sprintf('<meta %s="%s" content="%s">', $item['key'], $item['value'],
 
-                             str_ireplace('"', '', $item['content'])) . "\n";
 
-                 }
 
-             }
 
-             else {
 
-                 $output .= sprintf('<meta %s="%s">', $item['key'], $item['value']) . "\n";
 
-             }
 
-         }
 
-         return strval($output);
 
-     }
 
-     /**
 
-      *
 
-      * normalize head meta type call
 
-      *
 
-      * @param string $type
 
-      *
 
-      * @return string
 
-      * @throws \InvalidArgumentException
 
-      */
 
-     protected function _normalizeType($type)
 
-     {
 
-         switch ($type) {
 
-             case 'Name':
 
-                 return 'name';
 
-             case 'HttpEquiv':
 
-                 return 'http-equiv';
 
-             default:
 
-                 throw new \InvalidArgumentException("Invalid headMeta type function called.");
 
-         }
 
-     }
 
- }
 
 
  |