protected static function get_lang_swap(FTL_Binding $tag, $swap) { // $swap = $tag->getAttribute('swap'); if (!is_null($swap)) { $swap = explode(',', $swap); $swap = array_map('trim', $swap); // Try to get internal swap values foreach ($swap as &$str) { if (strpos($str, '::') !== FALSE) { $seg = explode('::', $str); // The asked key must be set if (!empty($seg[1])) { // Get from global value if ($seg[0] == 'global') { $str = self::$context->get_global($seg[1]); } else { $parent = NULL; // Parent not set : current parent if ($seg[0] == '') { $parent = $tag->getDataParent(); } else { $parent = $tag->getParent($seg[0]); } if (!is_null($parent)) { $str = $parent->getValue($seg[1], $parent->name); } else { $str = ''; } } } } } } return $swap; }
/** * @param FTL_Binding $tag * * @return string * */ public static function tag_medias(FTL_Binding $tag) { $str = ''; // Get the parent 'medias' data array. $medias = $tag->getValue(); // Get all medias id no parent data // @todo : Get only medias if asked for. // if (empty($medias)) if (empty($medias) && $tag->getDataParent() == NULL) { $medias = self::get_medias($tag); } if (!empty($medias)) { // Extend Fields tags self::create_extend_tags($tag, 'media'); // Medias lib, to process the "src" value self::$ci->load->library('medias'); // Filter the parent's medias $medias = self::filter_medias($tag, $medias); $count = count($medias); $tag->set('count', $count); // Make medias in random order if ($tag->getAttribute('random') == TRUE) { shuffle($medias); } // Process additional data : src, extension foreach ($medias as $key => $media) { if ($media['provider'] != '') { $src = $media['path']; } else { $src = base_url() . $media['path']; } if ($media['type'] === 'picture') { $settings = self::get_src_settings($tag); if (!empty($settings['size'])) { $src = self::$ci->medias->get_src($media, $settings, Settings::get('no_source_picture')); } } $medias[$key]['src'] = $src; } $tag->set('medias', $medias); foreach ($medias as $key => $media) { // Each media has its index and the number of displayed media $media['index'] = $key + 1; $media['count'] = $count; $tag->set('media', $media); $tag->set('count', $count); $tag->set('index', $key); $str .= $tag->expand(); } } return self::wrap($tag, $str); }
/** * @param FTL_Binding $tag * * @return string * * @usage With "stickers" as your definition name : * <ion:static:stickers /> * */ public static function tag_static(FTL_Binding $tag) { // Store the parent $parent = $tag->getDataParent(); $tag->set('__static_parent__', $parent); $items_definitions = self::_get_definitions_with_items(Settings::get_lang('current')); // Create dynamical tags foreach ($items_definitions as $definition) { self::$context->define_tag('static:' . $definition['name'], array(__CLASS__, 'tag_static_detail')); } return $tag->expand(); }