示例#1
0
文件: mysql.php 项目: tapiau/muyo
 /**
  * WARNING: proper string/expression escaping is missing
  * @param array|Zend_Db_Expr|string $expr
  * @param string|null $alias
  * @param string|null $separator
  * @param bool|null $distinct
  * @param null|array|int|string|Zend_Db_Expr $order
  * @return $this
  */
 public function groupConcatSet($expr, $alias = null, $separator = null, $distinct = null, $order = null)
 {
     debug_assert(is_string($expr) || is_array($expr) || is_object($expr) && $expr instanceof Zend_Db_Expr, "Invalid expression value `" . var_dump_human_compact($expr) . "`");
     debug_assert(is_null($alias) || is_string($alias), "Invalid alias value `" . var_dump_human_compact($alias) . "`");
     debug_assert(is_null($separator) || is_string($separator), "Invalid separator value `" . var_dump_human_compact($separator) . "`");
     debug_assert(is_null($distinct) || is_bool($distinct), "Invalid distinct value `" . var_dump_human_compact($distinct) . "`");
     debug_assert(is_null($order) || is_array($order) || is_int($order) || is_string($order) || is_object($order) && $order instanceof Zend_Db_Expr, "Invalid order value `" . var_dump_human_compact($order) . "`");
     $convertToString = function ($expr) {
         if (is_object($expr)) {
             $expr = strval($expr);
         } else {
             if (array_key_exists($expr, $this->schemaColumnsGet())) {
                 $expr = str_wrap($this->getAlias(), '`') . '.' . str_wrap($expr, '`');
             } elseif (is_string($expr)) {
                 $expr = str_wrap($expr, '\'');
             }
         }
         return $expr;
     };
     if (is_array($expr)) {
         $expr = array_chain($expr, array_map_val_dg(tuple_get(0, $convertToString)), array_implode_dg(','));
     } else {
         $expr = $convertToString(strval($expr));
     }
     if ($distinct !== null) {
         $expr = "DISTINCT {$expr}";
     }
     if ($order !== null) {
         if (is_array($order)) {
             $order = array_chain($expr, array_map_val_dg(tuple_get(0, $convertToString)), array_implode_dg(','));
         } else {
             $order = $convertToString(strval($order));
         }
         $expr = "{$expr} ORDER BY {$order}";
     }
     if ($separator !== null) {
         $expr = "{$expr} SEPARATOR '{$separator}'";
     }
     $expr = "GROUP_CONCAT({$expr})";
     if ($alias !== null) {
         $expr = [$alias => $expr];
     }
     return $this->setColumns($expr, $this->getAlias());
 }
示例#2
0
文件: html.php 项目: tapiau/muyo
 /**
  * @param string $name
  * @param array $attr
  * @param string $content
  * @return string
  */
 function html_tag($name, $attr, $content)
 {
     $attrChain = array(array_filter_key_dg(function ($val, $key) {
         $skip = $val === false;
         return !$skip;
     }));
     if (Doctype::isXhtml()) {
         $attrChain[] = array_map_val_dg(function ($val, $key) {
             if (true === $val) {
                 $val = $key;
             }
             return $val;
         });
     }
     $attrChain[] = array_map_key_dg(function ($val, $key) {
         return preg_replace('/([\\t\\n\\f \\/>"\'=]+)/', '', $key);
     });
     $flags = htmlspecialchars_flags();
     $attrChain[] = array_map_val_dg(function ($val, $key) use($flags) {
         $val = str_wrap(htmlspecialchars($val, ENT_QUOTES | $flags), '"');
         return " {$key}={$val}";
     });
     $attrChain[] = array_implode_dg('');
     $attr = call_user_func_array('array_chain', array_merge(array($attr), $attrChain));
     if (empty($content)) {
         if (Doctype::isXhtml()) {
             $ret = "<{$name}{$attr}/>";
         } else {
             $ret = "<{$name}{$attr}>";
         }
     } else {
         $ret = "<{$name}{$attr}>{$content}</{$name}>";
     }
     return $ret;
 }