Esempio n. 1
0
File: misc.php Progetto: tapiau/muyo
 /**
  * @param array|object $collection
  * @param callable $callable
  * @param bool $recursionFirst
  * @return array|object
  * @throws Exception
  */
 function collection_map_val_recursive($collection, $callable, $recursionFirst = true)
 {
     if (is_array($collection)) {
         $ret = array_map_val_recursive($collection, function () use($callable, $recursionFirst) {
             $args = func_get_args();
             if (!$recursionFirst) {
                 $args[0] = call_user_func_array($callable, $args);
             }
             if (is_object($args[0]) || is_array($args[0])) {
                 $args[0] = collection_map_val_recursive($args[0], $callable, $recursionFirst);
             }
             if ($recursionFirst) {
                 $args[0] = call_user_func_array($callable, $args);
             }
             return $args[0];
         }, $recursionFirst);
     } elseif (is_object($collection)) {
         $ret = object_map_val_recursive($collection, function () use($callable, $recursionFirst) {
             $args = func_get_args();
             if (!$recursionFirst) {
                 $args[0] = call_user_func_array($callable, $args);
             }
             if (is_array($args[0]) || is_object($args[0])) {
                 $args[0] = collection_map_val_recursive($args[0], $callable, $recursionFirst);
             }
             if ($recursionFirst) {
                 $args[0] = call_user_func_array($callable, $args);
             }
             return $args[0];
         }, $recursionFirst);
     } else {
         debug_enforce(false, "Cannot handle collection: " . var_dump_human_compact($collection));
         $ret = [];
     }
     return $ret;
 }
Esempio n. 2
0
 /**
  * @return string
  */
 public function toString()
 {
     $class = get_called_class();
     if ($this->recordExists()) {
         $data = var_dump_human_compact($this->recordColumnsGet());
         return $class . '{' . $data . '}';
     } else {
         $query = $this instanceof Lib_Model_Db_Mysql ? $this->getSQL() : '';
         return $class . '{' . $query . '}';
     }
 }
Esempio n. 3
0
 /**
  * @param mixed $subject
  * @param callable $predicate
  * @param callable|null $on_fail
  * @return mixed
  */
 function ensure($subject, $predicate, $on_fail = null)
 {
     if (null === $on_fail) {
         $on_fail = function ($subject) {
             debug_assert(false, "Could not assure about variable: " . var_dump_human_compact($subject));
             return $subject;
         };
     }
     if (call_user_func($predicate, $subject)) {
         $ret = $subject;
     } else {
         $ret = call_user_func($on_fail, $subject);
     }
     return $ret;
 }
Esempio n. 4
0
File: arr.php Progetto: tapiau/muyo
 /**
  * @param array $array
  * @param string|int $key
  * @return mixed
  */
 function array_get($array, $key)
 {
     debug_enforce(array_key_exists($key, $array), "Key " . var_dump_human_compact($key) . " do not exists in " . var_dump_human_compact($array));
     return $array[$key];
 }
Esempio n. 5
0
 /**
  * WARNING: Only columns copying supported.
  * @param Lib_Model_Db_Mysql $model
  * @param string|null $thisKeyCol may contain table prefix or not
  * @param string|null $thatKeyCol may contain table prefix or not
  * @param string $conditions
  * @return $this
  */
 public function joinFrom($model, $thisKeyCol, $thatKeyCol = null, $conditions = '')
 {
     if ($thatKeyCol === null) {
         debug_assert($thisKeyCol !== null);
         $thatKeyCol = $model->getPrimaryKey();
     } elseif ($thisKeyCol === null) {
         debug_assert($thatKeyCol !== null);
         $thisKeyCol = $this->getPrimaryKey();
     }
     $this->prefixColumn($model, $thatKeyCol);
     $this->prefixColumn($this, $thisKeyCol);
     $conditions = str_replace('{that}', $model->getAlias(), $conditions);
     $conditions = str_replace('{this}', $this->getAlias(), $conditions);
     $this->mapPartWhere($this->addAliasToConditionDg());
     $model->mapPartWhere($model->addAliasToConditionDg());
     $thisFrom = $this->_select->getPart(Zend_Db_Select::FROM);
     $modelColumns = array_chain($model->_select->getPart(Zend_Db_Select::COLUMNS), array_group_dg(array_get_dg(return_dg(0))), array_map_val_dg(array_chain_dg(array_map_val_dg(function ($descriptor) {
         return null === $descriptor[2] ? $descriptor[1] : [$descriptor[2] => $descriptor[1]];
     }), function ($columns) {
         $outArray = [];
         array_map_val($columns, function ($column) use(&$outArray) {
             if (is_array($column)) {
                 array_map_val($column, function ($column, $alias) use(&$outArray) {
                     $outArray[$alias] = $column;
                 });
             } else {
                 $outArray[] = $column;
             }
         });
         return $outArray;
     })));
     array_each($model->_select->getPart(Zend_Db_Select::FROM), function ($descriptor, $alias) use($modelColumns, $thisFrom, $model, $thisKeyCol, $thatKeyCol, $conditions) {
         debug_enforce(!array_key_exists($alias, $thisFrom), "Alias `{$alias}` already used for table `{$descriptor['tableName']}`");
         switch ($descriptor['joinType']) {
             case Zend_Db_Select::FROM:
                 $this->_select->joinLeft([$model->getAlias() => $model->getTable()], "{$thisKeyCol}={$thatKeyCol} " . $conditions, array_key_exists($alias, $modelColumns) ? $modelColumns[$alias] : [], $descriptor['schema']);
                 break;
             case Zend_Db_Select::INNER_JOIN:
                 $this->_select->joinInner([$alias => $descriptor['tableName']], $descriptor['joinCondition'], array_key_exists($alias, $modelColumns) ? $modelColumns[$alias] : [], $descriptor['schema']);
                 break;
             case Zend_Db_Select::LEFT_JOIN:
                 $this->_select->joinLeft([$alias => $descriptor['tableName']], $descriptor['joinCondition'], array_key_exists($alias, $modelColumns) ? $modelColumns[$alias] : [], $descriptor['schema']);
                 break;
             case Zend_Db_Select::RIGHT_JOIN:
                 $this->_select->joinRight([$alias => $descriptor['tableName']], $descriptor['joinCondition'], array_key_exists($alias, $modelColumns) ? $modelColumns[$alias] : [], $descriptor['schema']);
                 break;
             case Zend_Db_Select::FULL_JOIN:
                 $this->_select->joinFull([$alias => $descriptor['tableName']], $descriptor['joinCondition'], array_key_exists($alias, $modelColumns) ? $modelColumns[$alias] : [], $descriptor['schema']);
                 break;
             case Zend_Db_Select::CROSS_JOIN:
                 $this->_select->joinCross([$alias => $descriptor['tableName']], $descriptor['joinCondition'], array_key_exists($alias, $modelColumns) ? $modelColumns[$alias] : [], $descriptor['schema']);
                 break;
             case Zend_Db_Select::NATURAL_JOIN:
                 $this->_select->joinNatural([$alias => $descriptor['tableName']], $descriptor['joinCondition'], array_key_exists($alias, $modelColumns) ? $modelColumns[$alias] : [], $descriptor['schema']);
                 break;
             default:
                 debug_assert(false, "Unknown join type " . var_dump_human_compact($descriptor['joinType']));
                 break;
         }
     });
     $this->settingsJoin($model);
     return $this;
 }
Esempio n. 6
0
File: html.php Progetto: tapiau/muyo
 /**
  * @param string $string
  * @return string
  */
 function html_from_string($string)
 {
     if (debug_assert(is_string($string), var_dump_human_compact($string))) {
         $ret = htmlspecialchars($string, htmlspecialchars_flags());
     } else {
         $ret = '';
     }
     return $ret;
 }
Esempio n. 7
0
 /**
  * @param string $str
  * @param int $n
  * @return string
  */
 function str_from($str, $n)
 {
     debug_enforce_type($str, 'string');
     $length = strlen($str);
     $n = min($n, $length);
     $ret = $length === $n ? '' : substr($str, $n);
     debug_assert($ret !== false, var_dump_human_compact(func_get_args()));
     return $ret;
 }
Esempio n. 8
0
 /**
  * @param mixed $var
  * @param int $level
  * @return null
  */
 function logger_log_compact($var, $level = LOG_DEBUG)
 {
     return logger_log(var_dump_human_compact($var), $level);
 }
Esempio n. 9
0
File: net.php Progetto: tapiau/muyo
 /**
  * @param string $uri_data
  * @return array
  * @throws Exception
  */
 function uri_data_unpack($uri_data)
 {
     debug_enforce(preg_match('/^data:([^;,]+)?;?([^;,]+)?;?(base64)?,(.+)$/', $uri_data, $matches), 'Malformed data uri: ' . var_dump_human_compact($uri_data));
     return array_rest($matches, 1);
 }
Esempio n. 10
0
 function file_copy($source, $destination)
 {
     debug_enforce(copy($source, $destination), "Cannot copy file from " . var_dump_human_compact($source) . " to " . var_dump_human_compact($destination));
 }