Beispiel #1
0
 protected function tokenParamToCode(Token $token)
 {
     $name = $token->getProp('name');
     $props = $token->getAllProps();
     if (!isset($props['type']) && isset($props['values'])) {
         $props['type'] = 'select';
     }
     if ($props['type'] === 'select' && !preg_match("~^`~", $props['values'])) {
         $props['values'] = self::parseCssLikeProps($props['values']);
         if (!isset($props['default'])) {
             $props['default'] = current(array_keys($props['values']));
         }
     }
     fx::cdebug($props);
     unset($props['name']);
     $val_var = "\$param__" . $name . "_value";
     $code = "<?php\n";
     $code .= $val_var . " = \$context->get('" . $name . "');\n";
     $val_is_null = $val_var . "_is_null";
     $code .= $val_is_null . " = is_null(" . $val_var . ");\n";
     if (isset($props['default'])) {
         // handle computable defaults
         $default_val = "'" . $props['default'] . "'";
         $code .= "if (" . $val_is_null . ") {\n";
         $code .= $val_var . " = " . $default_val . ";\n";
         $code .= "\$context->set('" . $name . "', " . $val_var . ");\n";
         $code .= "}\n";
     }
     $code .= "if (\$_is_admin ) {\n";
     $exported_props = array("'is_forced' => !" . $val_is_null . " && \$context->getLastVarLevel() !== 1", "'value' => " . $val_var);
     foreach ($props as $k => $v) {
         $c_prop = "'" . $k . "' => ";
         if (!is_string($v)) {
             $c_prop .= var_export($v, 1);
         } elseif (preg_match("~^\\`.+\\`\$~", $v)) {
             $c_prop .= trim($v, '`');
         } else {
             $c_prop .= "'" . addslashes($v) . "'";
         }
         $exported_props[] = $c_prop;
     }
     $code .= "\$this->registerParam('" . $name . "', array(" . join(", ", $exported_props) . ") );\n";
     $code .= "}\n";
     $code .= "?>";
     return $code;
 }