Files
AtomicOld/api/Simpla.php
2026-02-14 19:34:54 +03:00

128 lines
3.8 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Основной класс Simpla для доступа к API Simpla
*
* @copyright 2011 Denis Pikusov
* @link http://simplacms.ru
* @author Denis Pikusov
*
*/
// include $_SERVER['DOCUMENT_ROOT'].'/api/claviska/SimpleImage.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/lib/Img.php';
class Simpla
{
// Свойства - Классы API
private $classes = array(
//'articles_categories' => 'ArticlesCategories',
'articles' => 'Articles',
//'article' => 'Article',
'banners' => 'Banners',
'config' => 'Config',
'request' => 'Request',
'db' => 'Database',
'settings' => 'Settings',
'design' => 'Design',
'products' => 'Products',
'variants' => 'Variants',
'categories' => 'Categories',
'brands' => 'Brands',
'features' => 'Features',
'money' => 'Money',
'pages' => 'Pages',
'blog' => 'Blog',
'actions' => 'Actions',
'shares' => 'Shares',
'cart' => 'Cart',
'image' => 'Image',
'delivery' => 'Delivery',
'payment' => 'Payment',
'orders' => 'Orders',
'preorders' => 'Preorders',
'users' => 'Users',
'coupons' => 'Coupons',
'comments' => 'Comments',
'feedbacks' => 'Feedbacks',
'notify' => 'Notify',
'managers' => 'Managers',
'callbacks' => 'Callbacks',
'marka' => 'Marka',
'model' => 'Model',
'services' => 'Services',
);
// Созданные объекты
private static $objects = array();
/**
* Конструктор оставим пустым, но определим его на случай обращения parent::__construct() в классах API
*/
public function __construct()
{
//error_reporting(E_ALL & !E_STRICT);
}
/**
* Магический метод, создает нужный объект API
*/
public function __get($name)
{
// Если такой объект уже существует, возвращаем его
if(isset(self::$objects[$name]))
{
return(self::$objects[$name]);
}
// Если запрошенного API не существует - ошибка
if(!array_key_exists($name, $this->classes))
{ //echo($name);
return null;
}
// Определяем имя нужного класса
$class = $this->classes[$name];
// Подключаем его
include_once($_SERVER['DOCUMENT_ROOT'] . '/api/'.$class.'.php');
// Сохраняем для будущих обращений к нему
self::$objects[$name] = new $class();
// Возвращаем созданный объект
return self::$objects[$name];
}
function getUniqueFileName($path, $name){
$ext = '.' . mb_strtolower(substr(strrchr($name, '.'), 1));
$name = substr($name, 0, -strlen(strrchr ($name, ".")));
$path = rtrim($path, '/') . '/';
$num = $fix = '';
while(is_file($path . $name . $fix . $ext)) $fix = '_' . ++$num;
return $name . $fix . $ext;
}
function translateStr($str){
$translate = array(
'а'=>'a','б'=>'b','в'=>'v','г'=>'g','д'=>'d','е'=>'e','ё'=>'e','ж'=>'zh','з'=>'z','и'=>'i','й'=>'i','к'=>'k','л'=>'l','м'=>'m','н'=>'n','о'=>'o','п'=>'p',
'р'=>'r','с'=>'s','т'=>'t','у'=>'u','ф'=>'f','х'=>'kh','ц'=>'tc','ч'=>'ch','ш'=>'sh','щ'=>'shch','ь'=>'','ы'=>'y','ъ'=>'','э'=>'e','ю'=>'iu','я'=>'ia'
);
$str = mb_strtolower($str, "UTF-8");
$str = preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY);
$res = array();
foreach($str as $letter){
if(isset($translate[$letter])) $res[] = $translate[$letter];
else $res[] = preg_match('~[a-z0-9_\.]~', $letter) ? $letter : '-';
}
$str = implode('', $res);
$str = trim($str, '-');
$str = preg_replace('~([\.]+)~', '.', $str);
return preg_replace('~([-]+)~', '-', $str);
}
}