/** * Set one session variable * * @usage <ion:session:set key="foo" value="bar" /> * <ion:session:set key="title" /> * */ public static function tag_session_set(FTL_Binding $tag) { // Set this tag as "process tag" $tag->setAsProcessTag(); // $tag->setAttribute('return', FALSE); $key = $tag->getAttribute('key'); $value = $tag->getAttribute('value'); if (!is_null($key)) { // Set the given value if (!is_null($value)) { $from = $tag->getAttribute('from', $tag->getName()); if (strpos($value, 'extend:') === 0) { // Get asked extend name $arr = explode(':', $value); $field = isset($arr[1]) ? $arr[1] : NULL; $var = isset($arr[2]) ? $arr[2] : NULL; // Extends definition $extend_fields_definitions = self::$ci->base_model->get_extend_fields_definition($from, Settings::get_lang('current')); $extend_field = NULL; foreach ($extend_fields_definitions as $def) { if ($def['name'] == $field) { $extend_field = $def; } } if (!is_null($extend_field)) { // Get value if (is_null($var) or !isset($extend_field[$var]) or $var == 'value') { $value = $tag->getValue(self::$extend_field_prefix . $field, $from); } else { $value = isset($extend_field[$var]) ? $extend_field[$var] : NULL; } } else { $msg = 'Error in tag ' . $tag->nesting() . ': "' . $value . '" is not correct'; log_message('error', $msg); $value = NULL; } } else { $value = $tag->getValue($value, $from); } self::$ci->session->set_userdata($key, $value); } else { $parent = $tag->getDataParent(); if (!is_null($parent)) { if ($value = $parent->get($parent->name)) { self::$ci->session->set_userdata($key, $value); } } } } }
/** * Expands the children if the user is logged in. * * @param FTL_Binding $tag * * @return string */ public static function tag_user_logged(FTL_Binding $tag) { $tag->setAsProcessTag(); $is = $tag->getAttribute('is'); if (is_null($is)) { $is = TRUE; } if (User()->logged_in() == $is) { if (self::$trigger_else > 0) { self::$trigger_else--; } return $tag->expand(); } else { self::$trigger_else++; return ''; } }
/** * * @param FTL_Binding $tag * @return string * */ public static function tag_article_deny(FTL_Binding $tag) { // Set this tag as "process tag" $tag->setAsProcessTag(); // 1. Try to get from tag's data array $value = $tag->getValue('deny_code', 'article'); $resource = 'frontend/article/' . $tag->getValue('id_article', 'article'); if (Authority::cannot('access', $resource, NULL, TRUE)) { return self::output_value($tag, $value); } else { if ($tag->getAttribute('is') == '') { self::$trigger_else = 0; return self::wrap($tag, $tag->expand()); } } return ''; }