!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/smabpro.picotech.app/public_html/vendor/mercadopago/dx-php/src/MercadoPago/   drwxr-xr-x
Free 28.54 GB of 117.98 GB (24.19%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     Manager.php (13.84 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace MercadoPago;
/**
 * Class Manager
 *
 * @package MercadoPago
 */
class Manager
{
    
/**
     * @var RestClient
     */
    
private $_client;
    
/**
     * @var Config
     */
    
private $_config;
    
/**
     * @var
     */
    
private $_customTrackingParams=array();
    
    private 
$_entityConfiguration;
    
/**
     * @var MetaDataReader
     */
    
private $_metadataReader;
    
/**
     * @var string
     */
    
static $CIPHER 'sha256';
    
/**
     * Manager constructor.
     *
     * @param RestClient $client
     * @param Config     $config
     */
    
public function __construct(RestClient $clientConfig $config)
    {
        
$this->_client $client;
        
$this->_config $config;
        
$this->_metadataReader = new MetaDataReader();
    }
    protected function 
_getEntityConfiguration($entity)
    {
        
$className $this->_getEntityClassName($entity);
        if (isset(
$this->_entityConfiguration[$className])) {
            return 
$this->_entityConfiguration[$className];
        }
        
$this->_entityConfiguration[$className] = $this->_metadataReader->getMetaData($entity);
        return 
$this->_entityConfiguration[$className];
    }

    protected function 
_updateEntityConfiguration($entity$new_configuration)
    {
        
$className $this->_getEntityClassName($entity);
        
$this->_entityConfiguration[$className] = $new_configuration;
    }
      
    public function 
addCustomTrackingParam($key$value)
    {
      
$this->_customTrackingParams[$key] = $value;
    }
    
    
/**
     * @param        $entity
     * @param string $method
     * @param null   $parameters
     *
     * @return mixed
     */
    
public function execute($entity$method 'get'$options = [])
    {

        
$configuration $this->_getEntityConfiguration($entity);

        if (
$method != 'get'){
            foreach (
$configuration->attributes as $key => $attribute) {
                
$this->validateAttribute($entity$key, ['required']);
            } 
        }

        
$this->processOptions($options$configuration);

        
$this->_setDefaultHeaders($configuration->query);
        
$this->_setCustomHeaders($entity$configuration->query);
        
$this->_setIdempotencyHeader($configuration->query$method);
        
$this->setQueryParams($entity);
        
        return 
$this->_client->{$method}($configuration->url$configuration->query);
    }

    public function 
processOptions($options$configuration)
    { 
        
$configuration_vars $this->_config->all();

        foreach(
$options as $option => $value) {
            
$configuration->query["url_query"][$option] = $value;
        }
    }

    public function 
validateAttribute($entity$attribute, array $properties$value null)
    {
        
$configuration $this->_getEntityConfiguration($entity);
        foreach (
$properties as $property) {
            if (
$configuration->attributes[$attribute][$property]) {
                
$result $this->_isValidProperty($attribute$property$entity$configuration->attributes[$attribute], $value);
                if (!
$result) {
                    throw new 
\Exception('Error ' $property ' in attribute ' $attribute);
                }
            }
        }
    }
    protected function 
_isValidProperty($key$property$entity$attribute$value)
    {
        switch (
$property) {
            case 
'required':
                return (
$entity->{$key} !== null);
            case 
'maxLength':
                return (
strlen($value) <= $attribute['maxLength']);
            case 
'readOnly':
                return !
$attribute['readOnly'];
        }
        return 
true;
    }
    
/**
     * @param $entity
     * @param $ormMethod
     *
     * @throws \Exception
     */
    
public function setEntityUrl($entity$ormMethod$params = [])
    {
        
$className $this->_getEntityClassName($entity);
        if (!isset(
$this->_entityConfiguration[$className]->methods[$ormMethod])) {
            throw new 
\Exception('ORM method ' $ormMethod ' not available for entity:' $className);
        }
        
        
$url $this->_entityConfiguration[$className]->methods[$ormMethod]['resource'];
        
$matches = [];
        
preg_match_all('/\\:\\w+/'$url$matches);

        
$configuration_vars $this->_config->all();
        
        foreach (
$matches[0] as $match) {
          
$key substr($match1);

            if (
array_key_exists($key$params)) {
                
$url str_replace($match$params[$key], $url);
            } elseif (
array_key_exists(strtoupper($key), $configuration_vars)) {
                
$url str_replace($match$configuration_vars[strtoupper($key)], $url);
            } elseif (!empty(
$entity->$key)) {
                
$url str_replace($match$entity->$key$url);
            } else {
                
$url str_replace($match$entity->{$key} ?? ''$url);
            }
        }
        
$this->_entityConfiguration[$className]->url $url;
    }
    
/**
     * @param $entity
     *
     * @return mixed
     */
    
public function setEntityMetadata($entity)
    {
        return 
$this->_getEntityConfiguration($this->_getEntityClassName($entity));
    }
    
/**
     * @param $entity
     *
     * @return string
     */
    
protected function _getEntityClassName($entity)
    {
        if (
is_object($entity)) {
            
$className get_class($entity);
        } else {
            
$className $entity;
        }
        return 
$className;
    }
    
/**
     * @param $entity
     */
    
public function getExcludedAttributes($entity){

        
$className $this->_getEntityClassName($entity);
        
$configuration $this->_getEntityConfiguration($entity);
        
        
$excluded_attributes = array();
        
$attributes $entity->getAttributes();

        
// if ($className == "MercadoPago\Refund") {
        //     print_r($configuration->attributes);
        // }

        
foreach ($attributes as $key => $val) {

            if (
array_key_exists($key$configuration->attributes)){
                
$attribute_conf $configuration->attributes[$key];

                if (
$attribute_conf['serialize'] == False) {
                    
// Do nothing
                    
array_push($excluded_attributes$key); 
                }
            }
        }
        return 
$excluded_attributes;
    }
    
/**
     * @param $entity
     */
    
public function setEntityQueryJsonData($entity)
    {
        
$className $this->_getEntityClassName($entity);
        
$result = [];
        
$this->_attributesToJson($entity$result$this->_entityConfiguration[$className]);
        
$this->_entityConfiguration[$className]->query['json_data'] = json_encode($result);
    }

    public function 
setRawQueryJsonData($entity$data)
    {
      
$className $this->_getEntityClassName($entity);
      
$this->_entityConfiguration[$className]->query['json_data'] = json_encode($data);
    }
    

     
/**
     * @param $entity
     */
    
public function cleanEntityDeltaQueryJsonData($entity)
    {
        
$className $this->_getEntityClassName($entity);
        
$this->_entityConfiguration[$className]->query['json_data'] = null;
    }

    
/**
     * @param $entity
     */
    
public function setEntityDeltaQueryJsonData($entity)
    {
        
$className $this->_getEntityClassName($entity);
        
$result = [];

        
$last_attributes $entity->_last->toArray();
        
$new_attributes $entity->toArray();

        
$result $this->_arrayDiffRecursive($last_attributes$new_attributes);

        
$this->_entityConfiguration[$className]->query['json_data'] = json_encode($result); 
    }
    
/**
     * @param $configuration
     */
    
public function cleanQueryParams($entity)
    {
        
$configuration $this->_getEntityConfiguration($entity);
        
$configuration->query['url_query'] = null;
    }
    
/**
     * @param $configuration
     */
    
public function setQueryParams($entity$urlParams = [])
    {
        
$configuration $this->_getEntityConfiguration($entity);

        if (!isset(
$configuration->query) || !isset($configuration->query['url_query'])) {
            
$configuration->query['url_query'] = [];
        }

        
$params = [];
        if (isset(
$configuration->params)) {
            foreach (
$configuration->params as $value) {
                
$params[$value] = $this->_config->get(strtoupper($value));
            }
        }

        
$arrayMerge array_merge($urlParams$params$configuration->query['url_query']);
        
$configuration->query['url_query'] = $arrayMerge;
    }
    
/**
     * @param $entity
     * @param $result
     * @param $configuration
     */
    
protected function _attributesToJson($entity, &$result)
    {
      if (
is_array($entity)) {             
          
$attributes array_filter($entity, function($entity) {
              return (
$entity !== null && $entity !== false && $entity !== '');
          });
      } else { 
          
$attributes $entity->toArray();
      }
      
       foreach (
$attributes as $key => $value) {
           if (
$value instanceof Entity || is_array($value)) {
               
$this->_attributesToJson($value$result[$key]);
           } else {
             if (
$value != null || is_bool($value) || is_numeric($value)){
               
$result[$key] = $value;
             } 
           } 
       } 
    }

    protected function 
_arrayDiffRecursive($firstArray$secondArray)
    {
        
$difference = [];

        foreach (
array_keys($secondArray) as $key) {
            
$secondArray[$key] = $secondArray[$key] instanceof MercadoPagoEntity $secondArray[$key]->toArray() : $secondArray[$key];
            if (
array_key_exists($key$firstArray) && $firstArray[$key] instanceof MercadoPagoEntity){
                
$firstArray[$key] = $firstArray[$key]->toArray();
            }

            if (!
array_key_exists($key$firstArray)){
                
$difference[$key] = $secondArray[$key];
            }elseif (
is_array($firstArray[$key]) && is_array($secondArray[$key])) {
                
$newDiff $this->_arrayDiffRecursive($firstArray[$key], $secondArray[$key]);
                if (!empty(
$newDiff)) {
                    
$difference[$key] = $newDiff;
                }
            }elseif (
$firstArray[$key] !== $secondArray[$key]){
                
$difference[$key] = $secondArray[$key];
            }
        }
        return 
$difference;
    }
    
/**
     * @param $entity
     * @param $result
     * @param $configuration
     */
    
protected function _deltaToJson($entity, &$result){
        
$specialAttributes = array("_last"); // TODO: Refactor this

        
if (!is_array($entity)) {            // TODO: Refactor this
            
$attributes array_filter($entity->toArray());
        } else {
            
$attributes $entity;
        };

        foreach (
$attributes as $key => $value) {
            if (!
in_array($key$specialAttributes)){
                if (
$value instanceof Entity || is_array($value)) {
                    
//$this->_deltaToJson($value, $result[$key]);
                
} else {
                    
$last $entity->_last;
                    
$last_value $last->$key;
                    if (
$last_value != $value){
                        
$result[$key] = $value;
                    }
                }

            }
        }
    }
    
/**
     * @param $entity
     * @param $property
     *
     * @return mixed
     */
    
public function getPropertyType($entity$property)
    {
        
$metaData $this->_getEntityConfiguration($entity);
        return 
$metaData->attributes[$property]['type'];
    }
    
/**
     * @param $entity
     *
     * @return bool
     */
    
public function getDynamicAttributeDenied($entity)
    {
        
$metaData $this->_getEntityConfiguration($entity);
        return isset(
$metaData->denyDynamicAttribute);
    }
    
    
/**
     * @param $query
     */
    
protected function _setCustomHeaders(&$entity, &$query)
    { 
        foreach (
$entity::getCustomHeaders() as $key => $value){ 
            
$query['headers'][$key] = $value;
        }
    }
    
   
    
/**
     * @param $query
     */
    
protected function _setDefaultHeaders(&$query)
    {
        
$query['headers']['Accept'] = 'application/json';
        
$query['headers']['Content-Type'] = 'application/json';
        
$query['headers']['User-Agent'] = 'MercadoPago DX-PHP SDK/ v'Version::$_VERSION;
        
$query['headers']['x-product-id'] = 'BC32A7RU643001OI3940';
        
$query['headers']['x-tracking-id'] = 'platform:' PHP_MAJOR_VERSION .'|' PHP_VERSION ',type:SDK' Version::$_VERSION ',so;';
        foreach (
$this->_customTrackingParams as $key => $value){ 
            
$query['headers'][$key] = $value;
        }
    }
    
/**
     * @param        $query
     * @param        $configuration
     * @param string $method
     */
    
protected function _setIdempotencyHeader(&$query$method)
    {
        if (
$method != 'get' && $method != 'delete') {
            if (
array_key_exists('headers'array_change_key_case($query)) && !array_key_exists('x-idempotency-key'array_change_key_case($query['headers']))){
                
$query['headers']['x-idempotency-key'] = $this->_generateUUID();
            }
        }
    }
    
/**
     * @param $attributes
     *
     * @return string
     */
    
protected function _generateUUID()
    {
        return 
sprintf(
            
'%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
            
// 32 bits for "time_low"
            
mt_rand(00xffff),
            
mt_rand(00xffff),

            
// 16 bits for "time_mid"
            
mt_rand(00xffff),

            
// 16 bits for "time_hi_and_version",
            // four most significant bits holds version number 4
            
mt_rand(00x0fff) | 0x4000,

            
// 16 bits, 8 bits for "clk_seq_hi_res",
            // 8 bits for "clk_seq_low",
            // two most significant bits holds zero and one for variant DCE1.1
            
mt_rand(00x3fff) | 0x8000,

            
// 48 bits for "node"
            
mt_rand(00xffff),
            
mt_rand(00xffff),
            
mt_rand(00xffff)
        );
    }
}

:: 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.0048 ]--