/** * parses an object, array, or string into cb params base for clean data retrieval * * @param $row * @param bool $html * @param mixed $base * @return cbParamsBase */ static public function parseParams( $row, $html = false, $base = null ) { if ( ! $row ) { return new cbParamsBase( null ); } static $params = array(); $id = cbgjClass::getStaticID( array( $row, $html, $base ) ); if ( ! isset( $params[$id] ) ) { if ( is_object( $row ) ) { if ( $row instanceof cbParamsBase ) { $row = $row->toIniString(); } else { $row = get_object_vars( $row ); } } if ( is_array( $row ) ) { if ( $base && ( ! ( $base instanceof cbParamsBase ) ) ) { $base = new cbParamsBase( $base ); } elseif ( ! $base ) { $base = new cbParamsBase( null ); } if ( $row ) foreach ( $row as $k => $v ) { if ( $k && ( ! in_array( $k, array( 'option', 'task', 'cid', 'action', 'cbsecuritym3' ) ) ) && ( ! ( isset( $k[0] ) && ( $k[0] == '_' ) ) ) ) { $v = cbGetParam( $row, $k, $v, ( $html ? _CB_ALLOWRAW : null ) ); if ( is_array( $v ) ) { $sub = false; foreach ( $v as $key => $value ) { if ( is_string( $key ) || is_array( $value ) ) { $sub = true; } } if ( $sub ) { $p = cbgjClass::parseParams( $v, $html ); $v = trim( $p->toIniString() ); } else { $v = implode( '|*|', $v ); } } if ( ( ! is_array( $v ) && ( ! is_object( $v ) ) ) ) { if ( $v !== null ) { $v = stripslashes( $v ); if ( $html && ( $html !== 'raw' ) ) { $v = cbgjClass::getFilteredText( $v ); } } $base->set( $k, $v ); } } } if ( $base->_params ) { $base->_raw = trim( $base->toIniString() ); } $params[$id] = $base; } elseif ( is_string( $row ) ) { $params[$id] = new cbParamsBase( $row ); } else { $params[$id] = new cbParamsBase( null ); } } return $params[$id]; }