This commit is contained in:
2024-05-20 15:37:46 +03:00
commit 00b7dbd0b7
10404 changed files with 3285853 additions and 0 deletions

View File

@ -0,0 +1,22 @@
<?php
namespace Nextend\Framework\Pattern;
use Nextend\Framework\Platform\Platform;
use Nextend\Framework\Url\Url;
trait GetAssetsPathTrait {
use GetPathTrait;
public static function getAssetsPath() {
return Platform::filterAssetsPath(self::getPath() . '/Assets');
}
public static function getAssetsUri() {
return Url::pathToUri(self::getAssetsPath());
}
}

View File

@ -0,0 +1,15 @@
<?php
namespace Nextend\Framework\Pattern;
use ReflectionClass;
trait GetPathTrait {
public static function getPath() {
$reflection = new ReflectionClass(static::class);
return dirname($reflection->getFileName());
}
}

View File

@ -0,0 +1,80 @@
<?php
namespace Nextend\Framework\Pattern;
use Nextend\Framework\Application\AbstractApplication;
use Nextend\Framework\Application\AbstractApplicationType;
use Nextend\Framework\Router\Router;
trait MVCHelperTrait {
/** @var MVCHelperTrait */
protected $MVCHelper;
/**
* @return Router
*/
public function getRouter() {
return $this->MVCHelper->getRouter();
}
/**
* @param array|string $url
* @param bool $isPost
* @param bool $isAjax
*
* @return string
*/
public function createUrl($url, $isPost = false, $isAjax = false) {
return $this->MVCHelper->getRouter()
->createUrl($url, $isPost, $isAjax);
}
/**
* @param array|string $url
*
* @return string
*/
public function createAjaxUrl($url) {
return $this->MVCHelper->getRouter()
->createAjaxUrl($url);
}
/**
* @return AbstractApplication
*/
public function getApplication() {
return $this->MVCHelper->getApplication();
}
/**
* @return AbstractApplicationType
*/
public function getApplicationType() {
return $this->MVCHelper->getApplicationType();
}
/**
* @param MVCHelperTrait $helper
*
*/
protected function setMVCHelper($helper) {
$this->MVCHelper = $helper;
if (!method_exists($helper, 'getRouter') || !method_exists($helper, 'getApplication') || !method_exists($helper, 'getApplicationType')) {
debug_print_backtrace();
echo 'Object should has MVCHelperTrait';
exit;
}
}
/**
* @return MVCHelperTrait
*/
public function getMVCHelper() {
return $this->MVCHelper;
}
}

View File

@ -0,0 +1,31 @@
<?php
namespace Nextend\Framework\Pattern;
trait OrderableTrait {
public function getOrdering() {
return isset($this->ordering) ? $this->ordering : 1000000;
}
/**
* @param OrderableTrait[] $items
*/
public static function uasort(&$items) {
uasort($items, array(
OrderableTrait::class,
'compare'
));
}
/**
* @param OrderableTrait $a
* @param OrderableTrait $b
*
* @return int
*/
public static function compare($a, $b) {
return $a->getOrdering() - $b->getOrdering();
}
}

View File

@ -0,0 +1,28 @@
<?php
namespace Nextend\Framework\Pattern;
trait PluggableFactoryTrait {
use SingletonTrait;
private static $types = array();
public static function addType($name, $className) {
self::$types[$name] = $className;
}
public static function getType($name) {
if (isset(self::$types[$name])) {
return self::$types[$name];
}
return false;
}
public static function getTypes() {
return self::$types;
}
}

View File

@ -0,0 +1,15 @@
<?php
namespace Nextend\Framework\Pattern;
use Nextend\Framework\Plugin;
trait PluggableTrait {
protected function makePluggable($id) {
Plugin::doAction('PluggableFactory' . $id, array($this));
}
}

View File

@ -0,0 +1,27 @@
<?php
namespace Nextend\Framework\Pattern;
trait SingletonTrait {
protected static $instance;
final public static function getInstance() {
return isset(static::$instance) ? static::$instance : static::$instance = new static;
}
private function __construct() {
$this->init();
}
protected function init() {
}
final public function __wakeup() {
}
final public function __clone() {
}
}

View File

@ -0,0 +1,41 @@
<?php
namespace Nextend\Framework\Pattern;
use Nextend\Framework\Plugin;
trait VisualManagerTrait {
/** @var MVCHelperTrait */
protected $MVCHelper;
/**
* StyleManager constructor.
*
* @param MVCHelperTrait $MVCHelper
*/
public function __construct($MVCHelper) {
$this->MVCHelper = $MVCHelper;
Plugin::addAction('afterApplicationContent', array(
$this,
'display'
));
}
public abstract function display();
/**
* @param MVCHelperTrait $MVCHelper
*/
public static function enqueue($MVCHelper) {
static $enqueued;
if (!$enqueued) {
new self($MVCHelper);
$enqueued = true;
}
}
}