Ejemplo n.º 1
0
 private function __construct(array $params)
 {
     PsLibs::inst()->SpriteGenerator();
     $this->CssSpriteGen = new CssSpriteGen($params);
     $this->LOGGER = PsLogger::inst(__CLASS__);
     $this->PROFILER = PsProfiler::inst(__CLASS__);
 }
Ejemplo n.º 2
0
 public function __construct()
 {
     /**
      * Подключаем cache lite
      */
     PsLibs::inst()->CacheLite();
     /*
      * Конфигурируем
      */
     $liteOptions = array('readControl' => true, 'writeControl' => true, 'readControlType' => 'md5', 'automaticSerialization' => true, 'cacheDir' => DirManager::autogen('cache-lite')->absDirPath(), 'lifeTime' => ConfigIni::cacheFileLifetime() * 60, 'caching' => true);
     if (PsLogger::isEnabled()) {
         PsLogger::inst(__CLASS__)->info('Lite options: {}', print_r($liteOptions, true));
     }
     $this->IMPL = new Cache_Lite($liteOptions);
 }
Ejemplo n.º 3
0
 /**
  * Метод проверяет значение на наличие в ней нецензурной лексики
  * 
  * 
  * 
  * @param string $string - строка, которая должна быть проверена
  * @return bool - если есть нецензурные элементы, вернёт строку, в которой эта часть выделена
  */
 public static function parse($string)
 {
     /*
      * Пустая строка или не строка? Возвращаем как есть.
      */
     if (!PsCheck::isNotEmptyString($string)) {
         return false;
         //---
     }
     /*
      * Подключим библиотеку, если нужно
      */
     PsLibs::inst()->Censure();
     /*
      * Обрабатываем
      */
     return Text_Censure::parse($string, '2', "…", false);
 }
Ejemplo n.º 4
0
 protected function __construct()
 {
     PsLibs::inst()->Smarty();
     /*
      * Начиная с версии 5.4 в функции htmlentities параметр encoding был изменён на UTF-8, 
      * до этого момента после применения данного метода к тексту шаблона мы будем получать кракозябру.
      */
     SmartyCompilerException::$escape = is_phpver_is_or_greater(5, 4);
     //Получим и сконфигурируем экземпляр Smarty
     $this->smarty = new Smarty();
     $this->smarty->compile_check = true;
     $this->smarty->force_compile = false;
     //$this->smarty->caching = TRUE;
     /*
      * УПРАВЛЯЮЩИЕ ДИРЕКТОРИИ
      */
     //Директории с шаблонами .tpl : PSSmarty::template('common/citata.tpl');
     $this->smarty->setTemplateDir(ConfigIni::smartyTemplates());
     //Директория, в которую складываются скомпилированные шаблоны
     $this->smarty->setCompileDir(DirManager::autogen('/smarty/templates_c/')->absDirPath());
     //Директория, в которую складываются кеши
     $this->smarty->setCacheDir(DirManager::autogen('/smarty/cache/')->absDirPath());
     //Директория с конфигами
     $this->smarty->setConfigDir(PATH_BASE_DIR . PS_DIR_INCLUDES . '/smarty/configs/');
     //Директории с плагинами - блочными функциями, функциями, модификатор
     $this->smarty->addPluginsDir(ConfigIni::smartyPlugins());
     /*
      * Импортируем константы некоторых классов, чтобы на них можно было ссылаться через 
      * {$smarty.const.CONST_NAME}
      */
     //PsConstJs::defineAllConsts();
     /*
      * ПОДКЛЮЧИМ ФИЛЬТРЫ
      */
     PSSmartyFilter::inst()->bind($this->smarty);
     /*
      * ПОДКЛЮЧАЕМ ПЛАГИНЫ
      */
     PSSmartyPlugin::inst()->bind($this->smarty);
 }
Ejemplo n.º 5
0
 /**
  * Анимация
  */
 public function getAnimation()
 {
     if (isset($this->animation)) {
         return $this->animation;
     }
     check_condition($this->IMAGES, 'No images for gif');
     PsLibs::inst()->GifEncoder();
     $frames = array();
     $framed = array();
     foreach ($this->IMAGES as $path => $delay) {
         ob_start();
         SimpleImage::inst()->load($path)->output(IMAGETYPE_GIF)->close();
         $frames[] = ob_get_contents();
         $framed[] = $delay;
         // Delay in the animation.
         ob_end_clean();
     }
     // Generate the animated gif and output to screen.
     $gif = new GIFEncoder($frames, $framed, 0, 2, 0, 0, 0, 'bin');
     $this->animation = $gif->GetAnimation();
     return $this->animation;
 }
Ejemplo n.º 6
0
 /**
  * Метод возвращает экземпляр класса, подключающего библиотеки.
  * Для переопределения этого класса, на уровне проектного config.ini
  * должен быть задан другой класс, отвечающий за подключение библиотек.
  * 
  * Это позволит:
  * 1. Использовать стандартизованный метод подключения внешних библиотек
  * 2. Переопределить подключение библиотек из SDK
  */
 public static final function inst()
 {
     if (isset(self::$inst)) {
         return self::$inst;
         //----
     }
     /*
      * Получим название класса, отвечающего за подключение библиотек
      */
     $class = ConfigIni::libsIncluder();
     /*
      * Подготовим директории
      */
     $SDK_LIB_DIR = DirManager::inst(PS_DIR_INCLUDES, DirManager::DIR_LIB)->absDirPath();
     $PROJ_LIB_DIR = DirManager::inst(PS_DIR_ADDON, DirManager::DIR_LIB)->absDirPath();
     /*
      * Класс подключения библиотек совпадает с базовым
      */
     if (__CLASS__ == $class) {
         self::$inst = new PsLibs();
         self::$inst->SDK_LIB_DIR = $SDK_LIB_DIR;
         self::$inst->LOGGER = PsLogger::inst($class);
         self::$inst->LOGGER->info('Libs includer  SDK: [{}]', __FILE__);
         self::$inst->LOGGER->info('Libs directory SDK: [{}]', $SDK_LIB_DIR);
         return self::$inst;
         //---
     }
     /*
      * Нам передан класс, который отличается от SDK
      */
     $classPath = Autoload::inst()->getClassPath($class);
     if (!PsCheck::isNotEmptyString($classPath)) {
         return PsUtil::raise('Не удалось найти класс загрузчика библиотек [{}]', $class);
     }
     /*
      * Указанный класс должен быть наследником данного
      */
     if (!PsUtil::isInstanceOf($class, __CLASS__)) {
         return PsUtil::raise('Указанный загрузчик библиотек [{}] не является наследником класса [{}]', $class, __CLASS__);
     }
     self::$inst = new $class();
     self::$inst->SDK_LIB_DIR = $SDK_LIB_DIR;
     self::$inst->PROJ_LIB_DIR = $PROJ_LIB_DIR;
     self::$inst->LOGGER = PsLogger::inst($class);
     self::$inst->LOGGER->info('Libs includer  CUSTOM: [{}]', $classPath);
     self::$inst->LOGGER->info('Libs directory    SDK: [{}]', $SDK_LIB_DIR);
     self::$inst->LOGGER->info('Libs directory CUSTOM: [{}]', $PROJ_LIB_DIR);
     return self::$inst;
     //---
 }
Ejemplo n.º 7
0
    {
        self::$a[] = '1';
    }
    final function __construct($a)
    {
    }
}
class B extends A
{
}
A::test();
A::test();
B::test();
ExceptionHandler::registerPretty();
//print_r(B::$a);
PsLibs::inst();
PsConnectionPool::configure(PsConnectionParams::sdkTest());
ps_admin_on(true);
$a = array('a' => array('x' => 1, 'y' => 2));
$key = 'M';
$group = 'default';
$group2 = 'default2';
PSCache::inst()->saveToCache($a, $key, $group, 'xxx');
PSCache::inst()->saveToCache(array('a' => 1), '$key', '$group', 'xxx1');
die;
echo TestUtils::testProductivity(function () {
    PSCache::inst()->getFromCache('$key', '$group', null, 'xxx1');
});
print_r(PSCache::inst()->getFromCache($key, $group, array('a'), 'xxx1'));
die;
print_r(PSCache::inst()->saveToCache($a, $key, $group));
Ejemplo n.º 8
0
 protected function __construct()
 {
     PsLibs::inst()->MathEvaluator();
     $this->EVALUATOR = new EvalMath();
     $this->EVALUATOR->suppress_errors = false;
 }
Ejemplo n.º 9
0
<?php

PsLibs::inst()->PhpMailer();
/**
 * Базовый класс для отправки почты
 *
 * @author azazello
 */
final class PsMailSender extends PHPMailer
{
    /** @var PsMailSender */
    private static $inst;
    /**
     * В конструкторе выполним все необходимые подготовки.
     * Доступ public как в PHPMailer.
     */
    public function __construct()
    {
        check_condition(!self::$inst, 'Экземпляр ' . __CLASS__ . ' должен быть единственным');
        $this->exceptions = true;
        $this->CharSet = 'UTF-8';
        $this->SetLanguage('ru');
        $this->IsSMTP();
        $this->SMTPKeepAlive = true;
        //Need SmtpClose in __destruct()
        $this->SMTPAuth = true;
        // Enable SMTP authentication
        $this->Host = ConfigIni::smtpHost();
        // Specify main and backup server
        $this->Sender = ConfigIni::smtpUser();
        $this->Username = ConfigIni::smtpUser();
Ejemplo n.º 10
0
 /**
  * Метод получения коннекта к БД
  * 
  * @return ADOConnection
  */
 protected final function getConnection()
 {
     if ($this->CONNECTION != null) {
         return $this->CONNECTION;
         //---
     }
     if (!$this->isConfigured()) {
         PsUtil::raise('Cannot get DB connection, {} is not configured.', get_called_class());
     }
     $this->LOGGER->info();
     $this->LOGGER->info('?  Connection for [{}] is requested', $this->CONNECTION_PARAMS);
     $URL = $this->CONNECTION_PARAMS->url();
     //Посмотрим, есть ли у нас нужный коннект
     if (array_key_exists($URL, $this->CONNECTIONS)) {
         $this->LOGGER->info('<  Fast returned from cache');
         return $this->CONNECTION = $this->CONNECTIONS[$URL];
     }
     //Отлогируем
     $this->LOGGER->info('+  Establishing connection {}', $this->CONNECTION_PARAMS);
     //Подключаем adodb
     PsLibs::inst()->AdoDb();
     //Подключаемся
     $this->CONNECTION = ADONewConnection($URL);
     if (!is_object($this->CONNECTION)) {
         PsUtil::raise("Unable to connect to [{}]", $this->CONNECTION_PARAMS);
     }
     //Зададим некоторые настройки
     $this->CONNECTION->debug = ADODB_DEBUG;
     $this->CONNECTION->SetFetchMode(ADODB_FETCH_ASSOC);
     $this->CONNECTION->query("SET NAMES 'utf8'");
     $this->CONNECTION->query("SET CHARACTER SET 'utf8'");
     //Положим соединение в пул
     if (array_key_exists($URL, $this->CONNECTIONS)) {
         raise_error('Double trying to register db connection');
     }
     $this->LOGGER->info('<  Established connection returned');
     return $this->CONNECTIONS[$URL] = $this->CONNECTION;
 }