コード例 #1
0
ファイル: Tagmanager.php プロジェクト: pompalini/emngo
 /**
  * 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);
                 }
             }
         }
     }
 }
コード例 #2
0
ファイル: User.php プロジェクト: pompalini/emngo
 /**
  * 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 '';
     }
 }
コード例 #3
0
ファイル: Article.php プロジェクト: pompalini/emngo
 /**
  *
  * @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 '';
 }