attributes[$name] ) ) { // Let's check if it's an array $this->attributes[$name] = array_unique( array_merge( $this->attributes[$name], $value ) ); } else { $this->attributes[$name] = $value; } } /** * * @param string $name * @return array|NULL */ public function get_attribute( $name ) { if ( isset( $this->attributes[$name] ) ) { return $this->attributes[$name]; } else { return null; } } /** * Adds the given name="value"-formatted attribute expression to the link's * set of attributes. * * @param string $expr Attribute name-value pair in name="value" format */ public function set_attribute_expr( $expr ) { preg_match( '/^([\w\-_]+)=[\'"]([^\'"]*)[\'"]$/', $expr, $matches ); $name = $matches[1]; $value = $matches[2]; $this->set_attribute( $name, $value ); } public function __construct( Ai1ec_Registry_Object $registry ) { $this->_registry = $registry; $this->template_adapter = $registry->get( 'html.helper' ); } /** * Magic method that renders the object as html * * @return string */ public function __toString() { return $this->render_as_html(); } /** * * @param $id string */ public function set_id( $id ) { $this->id = $id; } /** * Adds an element to the class array * * @param string $class */ public function add_class( $class ) { $this->classes[] = $class; } /** * Creates the markup to be used to create classes * * @return string */ protected function create_class_markup() { if ( empty( $this->classes ) ) { return ''; } $classes = $this->template_adapter->escape_attribute( implode( ' ', $this->classes ) ); return "class='$classes'"; } /** * Creates the markup for an attribute * * @param string $attribute_name * @param string $attribute_value * @return string */ protected function create_attribute_markup( $attribute_name, $attribute_value ) { if (empty( $attribute_value )) { return ''; } $attribute_value = $this->template_adapter->escape_attribute( $attribute_value ); return "$attribute_name='$attribute_value'"; } /** * Renders the markup for the attributes of the tag * * @return string */ protected function render_attributes_markup() { $html = array(); foreach ( $this->attributes as $name => $values ) { $values = $this->template_adapter->escape_attribute( implode( ' ', $values ) ); $html[] = "$name='$values'"; } return implode( ' ', $html ); } /** * Return the content as html instead of echoing it. * * @return string */ public function render_as_html() { $this->_registry->get( 'compatibility.ob' )->start(); $this->render(); return $this->_registry->get( 'compatibility.ob' )->get_clean(); } }