This commit is contained in:
Bellord
2026-07-07 17:09:04 +03:00
commit 19eaeb4f4e
33 changed files with 792 additions and 0 deletions
@@ -0,0 +1,11 @@
<?php
namespace Ixrs\Catalog\AbstractFactory;
use Wt\Core\AbstractFactory\AAbstractFactory;
use Ixrs\Catalog\Factory\CatalogFactory;
class MainAbstractFactory extends AAbstractFactory
{
}
+51
View File
@@ -0,0 +1,51 @@
<?php
namespace Ixrs\Catalog\App;
use Ixrs\Catalog\Facade\DefaultDefines;
use Ixrs\Catalog\Facade\Defines;
use Ixrs\Catalog\Facade\DefaultServiceFacade;
use Ixrs\Catalog\Facade\ServiceFacade;
use Ixrs\Catalog\Facade\DefaultFactoryFacade;
use Ixrs\Catalog\Facade\FactoryFacade;
class App extends \Wt\Core\App\App
{
protected $includeFileToInitPhp;
/**
* @param string $factoryName
* @return FactoryFacade | DefaultFactoryFacade
*/
public function factory($factoryName = '')
{
return parent::factory($factoryName);
}
/**
* @param string $serviceName
* @param array $args
* @return ServiceFacade | DefaultServiceFacade
*/
public function service($serviceName = '', $args = [])
{
return parent::service($serviceName, $args);
}
/**
* @return Defines|DefaultDefines
*/
public function defines()
{
return parent::defines();
}
public function isIncludeFileToInitPhp($value = null)
{
if(is_null($value)){
return $this->includeFileToInitPhp;
}
$this->includeFileToInitPhp = $value;
return $this;
}
}
+78
View File
@@ -0,0 +1,78 @@
<?php
namespace Ixrs\Catalog\Collection;
use Wt\Core\Collection\AEntityCollection;
use Ixrs\Catalog\Entity\CatalogEntity;
class CatalogCollection extends AEntityCollection
{
/**
* @param $xmlId
* @return CatalogEntity
* @deprecated
*/
public function &getByXmlId($xmlId)
{
return parent::getByXmlId($xmlId);
}
/**
* @param $id
* @param null $default
* @return CatalogEntity|null
*/
public function &get($id, $default = null)
{
return parent::get($id, $default); // TODO: Change the autogenerated stub
}
/**
* @return CatalogEntity
*/
public function &first(callable $callback = null, $default = null)
{
return parent::first($callback, $default); // TODO: Change the autogenerated stub
}
/**
* @return CatalogEntity
*/
public function &last()
{
return parent::last(); // TODO: Change the autogenerated stub
}
/**
* @return CatalogEntity
*/
public function shift()
{
return parent::shift(); // TODO: Change the autogenerated stub
}
/**
* @return CatalogEntity
*/
public function pop()
{
return parent::pop(); // TODO: Change the autogenerated stub
}
/**
* @return CatalogCollection|CatalogEntity[]
*/
public function filter($callback = null)
{
return parent::filter($callback); // TODO: Change the autogenerated stub
}
/**
* @return CatalogEntity[]
*/
public function all()
{
return parent::all(); // TODO: Change the autogenerated stub
}
}
+26
View File
@@ -0,0 +1,26 @@
<?php
namespace Ixrs\Catalog\Entity;
use Ixrs\Catalog\IFields\CatalogFields;
use Ixrs\Catalog\Factory\CatalogFactory;
use Wt\Core\Entity\AEntity;
class CatalogEntity extends AEntity
{
/**
* @return CatalogFactory
*/
public function getFactory()
{
return parent::getFactory(); // TODO: Change the autogenerated stub
}
/**
* @return CatalogFields
*/
public function fields()
{
return parent::fields();
}
}
+10
View File
@@ -0,0 +1,10 @@
<?php
namespace Ixrs\Catalog\Facade;
use Wt\Core\App\ADefines;
class DefaultDefines extends ADefines
{
}
+18
View File
@@ -0,0 +1,18 @@
<?php
namespace Ixrs\Catalog\Facade;
use Ixrs\Catalog\AbstractFactory\MainAbstractFactory;
use Wt\Core\Facade\AFacade;
class DefaultFactoryFacade extends AFacade
{
/**
* @return MainAbstractFactory
*/
public function main()
{
return $this->app->container()->make($this->app->module()->getId().':mainAbstractFactory');
}
}
+10
View File
@@ -0,0 +1,10 @@
<?php
namespace Ixrs\Catalog\Facade;
use Wt\Core\Facade\AFacade;
class DefaultServiceFacade extends AFacade
{
}
+75
View File
@@ -0,0 +1,75 @@
<?php
namespace Ixrs\Catalog\Factory;
use Ixrs\Catalog\Collection\CatalogCollection;
use Ixrs\Catalog\Entity\CatalogEntity;
use Ixrs\Catalog\ORM\CatalogTable;
use Wt\Core\Factory\AFactory;
use Wt\Core\Factory\AORMFactory;
class CatalogFactory extends AORMFactory
{
/**
* @return string|CatalogTable
*/
protected function __getDataManagerClass()
{
return CatalogTable::class;
}
public function __getEntityClass()
{
return CatalogEntity::class;
}
public function __getCachePrefix()
{
return 'ixrs_catalog';
}
public function __getCollectionClass()
{
return CatalogCollection::class;
}
/**
* @param $id
* @return CatalogEntity
*/
public function getEntityById($id)
{
return parent::getEntityById($id);
}
/**
* @param array $filter
* @param array $order
* @param array $select
* @param null $limit
* @param null $offset
* @return CatalogCollection|CatalogEntity[]
*/
public function getCollection($filter = [], $order = [], $select = [], $limit = null, $offset = null)
{
return parent::getCollection($filter, $order, $select, $limit, $offset); // TODO: Change the autogenerated stub
}
/**
* @param array $arIds
* @return CatalogCollection|CatalogEntity[]
*/
public function getEntityByIds(array $arIds)
{
return parent::getEntityByIds($arIds); // TODO: Change the autogenerated stub
}
/**
* @return CatalogTable
*/
public function getDataManager()
{
return parent::getDataManager();
}
}
+11
View File
@@ -0,0 +1,11 @@
<?php
namespace Ixrs\Catalog\Handlers;
class Autoloader
{
public static function onPageStart(){}
public static function onBeforeProlog(){}
public static function onProlog(){}
public static function onEpilog(){}
}
+10
View File
@@ -0,0 +1,10 @@
<?php
namespace Ixrs\Catalog\IFields;
use Wt\Core\Interfaces\IFields;
class CatalogFields implements IFields
{
}
+8
View File
@@ -0,0 +1,8 @@
<?php
namespace Ixrs\Catalog\Interfaces;
class ITest
{
}
+92
View File
@@ -0,0 +1,92 @@
<?php
namespace Ixrs\Catalog\ORM;
use Bitrix\Main\ORM\Fields\DatetimeField;
use Bitrix\Main\Type\DateTime;
use Exception;
use Wt\Core\ORM\ADataManager;
class CatalogTable extends ADataManager
{
public static function getTitle()
{
return 'Catalog Title';
}
public static function getRowTitle()
{
return 'Catalog Row Title';
}
public static function getRowDescription()
{
return 'Catalog Row Description';
}
public static function getTableName()
{
return 'ixrs_catalog_table';
}
public static function getMap()
{
return [
'ID' => new \Bitrix\Main\Entity\IntegerField('ID', [
'primary' => true,
'autocomplete' => true,
'title' => 'Id',
]),
'CREATED_AT' => new \Bitrix\Main\Entity\DatetimeField('CREATED_AT', [
'title' => 'CreatedAt',
'user_edit' => false,
]),
'UPDATED_AT' => new \Bitrix\Main\Entity\DatetimeField('UPDATED_AT', [
'title' => 'UpdatedAt',
'user_edit' => false,
]),
];
}
/**
* @param $primary
* @param array $data
* @return \Bitrix\Main\ORM\Data\UpdateResult
* @throws \Bitrix\Main\ObjectException
* @throws Exception
*/
public static function update($primary, array $data)
{
foreach (static::getEntity()->getFields() as $field){
if(is_a($field, DatetimeField::class)){
if(isset($data[$field->getName()]) && !is_a($data[$field->getName()], DateTime::class)) {
$data[$field->getName()] = new \Bitrix\Main\Type\DateTime($data[$field->getName()]);
}
}
}
$data = array_merge($data, [
'UPDATED_AT' => new \Bitrix\Main\Type\DateTime(), // date(CDatabase::DateFormatToPHP(FORMAT_DATETIME))
]);
unset($data['CREATED_AT']);
return parent::update($primary, $data);
}
/**
* @param array $fields
* @return \Bitrix\Main\ORM\Data\AddResult
* @throws \Bitrix\Main\ObjectException
* @throws Exception
*/
public static function add(array $fields)
{
$fields = array_merge($fields, [
'CREATED_AT' => new \Bitrix\Main\Type\DateTime(),
'UPDATED_AT' => new \Bitrix\Main\Type\DateTime(),
]);
return parent::add($fields);
}
}
+23
View File
@@ -0,0 +1,23 @@
<?php
namespace Ixrs\Catalog\Providers;
use Ixrs\Catalog\AbstractFactory\MainAbstractFactory;
use Wt\Core\Interfaces\IApp;
use Wt\Core\Interfaces\IServiceProvider;
class DefaultFactoryProvider implements IServiceProvider
{
public function register(IApp $app)
{
$config = $app->config();
$serviceContainer = $app->container();
/**
* @var MainAbstractFactory $mainAbstractFactory
*/
$mainAbstractFactory = $serviceContainer->make(MainAbstractFactory::class, [$config->get('MainAbstractFactory', [])]);
$serviceContainer->singleton($app->module()->getId().':mainAbstractFactory', $mainAbstractFactory);
}
}
+19
View File
@@ -0,0 +1,19 @@
<?php
namespace Ixrs\Catalog\Providers;
use Wt\Core\Interfaces\IApp;
use Wt\Core\Providers\ADefaultServiceProvider;
class DefaultServiceProvider extends ADefaultServiceProvider
{
public function register(IApp $app)
{
parent::register($app);
$container = $this->app->container();
$config = $this->app->config();
}
}