PHP Classes

File: src/TelegramCliHelper.php

Recommend this page to a friend!
  Classes of Joseluis Laso   PHP Telegram CLI Wrapper   src/TelegramCliHelper.php   Download  
File: src/TelegramCliHelper.php
Role: Class source
Content type: text/plain
Description: Class source
Class: PHP Telegram CLI Wrapper
Send messages and other commands to Telegram users
Author: By
Last change:
Date: 8 years ago
Size: 2,251 bytes
 

Contents

Class file image Download
<?php

namespace TelegramCliWrapper;

/**
 * Class TelegramCliHelper
 *
 * Allows to wrap the cli calls in a PHP class
 *
 * @package TelegramCliWrapper
 */
class TelegramCliHelper
{
   
/** @var array */
   
protected $config;
   
/** @var int */
   
protected $pid = null;
   
/** @var bool */
   
protected $debug = false;

    protected static
$instance = null;

   
/**
     * starts telegram-cli from the configuration file given on ../config/config.ini
     */
   
protected function __construct()
    {
       
$config = parse_ini_file(__DIR__ . "/../config/config.ini", true);
       
$this->config = $config["cli"];
       
$this->debug = isset($this->config['debug']) && $this->config['debug'];

       
// check if is an instance of telegram-cli already running
       
if (false === @fsockopen($this->getSocket())) {
           
$cmd = sprintf("%s/bin/telegram-cli -k %s/tg-server.pub %s %s & echo $!", $this->config['path'], $this->config['path'], $this->config['params'], $this->config['socket']);
            if (
$this->debug) {
                print
"{$cmd}\n";
            }
           
$lines = exec($cmd);
           
$this->pid = intval($lines);
            if (
$this->debug) {
                print
"telegram-cli started with pid {$this->pid}\n";
            }
        }
    }

   
/**
     * @return TelegramCliHelper
     */
   
public static function getInstance()
    {
        if (!
self::$instance) {
           
self::$instance = new TelegramCliHelper();
        }

        return
self::$instance;
    }


   
/**
     * returns the socket found on the configuration file to be used by TelegramCliWrapper easily
     *
     * @return string
     */
   
public function getSocket()
    {
        return
"unix://" . $this->config['socket'];
    }

   
/**
     * @return boolean
     */
   
public function isDebug()
    {
        return
$this->debug;
    }

   
/**
     * stops the telegram-cli process once the PHP program ends
     */
   
function __destruct()
    {
        if (
$this->pid) {
           
/**
             * have to called twice in order to kill all the telegram-cli instances created
             */
           
exec("killall telegram-cli");
           
exec("killall telegram-cli");
        }
    }


}