Bitrix-D7 22.2
Загрузка...
Поиск...
Не найдено
Класс PropertyTable
+ Граф наследования:PropertyTable:

Открытые статические члены

static getTableName ()
 
static getObjectClass ()
 
static getMap ()
 
static validateName ()
 
static validateCode ()
 
static validateXmlId ()
 
static validateFileType ()
 
static validateTmpId ()
 
static validateUserType ()
 
static validateHint ()
 
static onBeforeAdd (ORM\Event $event)
 
static onBeforeUpdate (ORM\Event $event)
 
static getEntity ()
 
static unsetEntity ($class)
 
static getConnectionName ()
 
static getTitle ()
 
static getObjectClassName ()
 
static getCollectionClass ()
 
static getCollectionClassName ()
 
static getObjectParentClass ()
 
static getCollectionParentClass ()
 
static getQueryClass ()
 
static getEntityClass ()
 
static createObject ($setDefaultValues=true)
 
static createCollection ()
 
static wakeUpObject ($row)
 
static wakeUpCollection ($rows)
 
static getUfId ()
 
static isUts ()
 
static isUtm ()
 
static setDefaultScope ($query)
 
static postInitialize (Entity $entity)
 
static getByPrimary ($primary, array $parameters=array())
 
static getById ($id)
 
static getRowById ($id)
 
static getRow (array $parameters)
 
static getList (array $parameters=array())
 
static getCount ($filter=array(), array $cache=array())
 
static query ()
 
static checkFields (Result $result, $primary, array $data)
 
static add (array $data)
 
static addMulti ($rows, $ignoreEvents=false)
 
static update ($primary, array $data)
 
static delete ($primary)
 
static enableCrypto ($field, $table=null, $mode=true)
 
static cryptoEnabled ($field, $table=null)
 
static setCurrentDeletingObject ($object)
 
static cleanCache ()
 
static onBeforeAdd (Event $event)
 
static onAdd (Event $event)
 
static onAfterAdd (Event $event)
 
static onBeforeUpdate (Event $event)
 
static onUpdate (Event $event)
 
static onAfterUpdate (Event $event)
 
static onBeforeDelete (Event $event)
 
static onDelete (Event $event)
 
static onAfterDelete (Event $event)
 

Поля данных

const CHECKBOX = 'C'
 
const LISTBOX = 'L'
 
const TYPE_STRING = 'S'
 
const TYPE_NUMBER = 'N'
 
const TYPE_FILE = 'F'
 
const TYPE_ELEMENT = 'E'
 
const TYPE_SECTION = 'G'
 
const TYPE_LIST = 'L'
 
const DEFAULT_MULTIPLE_CNT = 5
 
const EVENT_ON_BEFORE_ADD = "OnBeforeAdd"
 
const EVENT_ON_ADD = "OnAdd"
 
const EVENT_ON_AFTER_ADD = "OnAfterAdd"
 
const EVENT_ON_BEFORE_UPDATE = "OnBeforeUpdate"
 
const EVENT_ON_UPDATE = "OnUpdate"
 
const EVENT_ON_AFTER_UPDATE = "OnAfterUpdate"
 
const EVENT_ON_BEFORE_DELETE = "OnBeforeDelete"
 
const EVENT_ON_DELETE = "OnDelete"
 
const EVENT_ON_AFTER_DELETE = "OnAfterDelete"
 

Защищенные статические члены

static getObjectClassByDataClass ($dataClass)
 
static getCollectionClassByDataClass ($dataClass)
 
static replaceFieldName ($data=array())
 
static validatePrimary ($primary)
 
static checkUfFields ($object, $ufdata, $result)
 
static callOnBeforeAddEvent ($object, $fields, $result)
 
static callOnAddEvent ($object, $fields, $ufdata)
 
static callOnAfterAddEvent ($object, $fields, $id)
 
static callOnBeforeUpdateEvent ($object, $fields, $result)
 
static callOnUpdateEvent ($object, $fields, $ufdata)
 
static callOnAfterUpdateEvent ($object, $fields)
 
static callOnBeforeDeleteEvent ($object, $entity, $result)
 
static callOnDeleteEvent ($object, $entity)
 
static callOnAfterDeleteEvent ($object, $entity)
 

Статические защищенные данные

static $entity
 
static $objectClass
 
static $collectionClass
 
static $currentDeletingObjects
 
static $reservedWords
 

Подробное описание

См. определение в файле propertytable.php строка 60

Методы

◆ add()

static add ( array  $data)
staticinherited

Adds row to entity table

Аргументы
array$dataAn array with fields like array( "fields" => array( "FIELD1" => "value1", "FIELD2" => "value2", ), "auth_context" => \Bitrix\Main\Authentication\Context object ) or just a plain array of fields.
Возвращает
AddResult Contains ID of inserted row
Исключения

Exception

Переопределяется в WorkflowInstanceTable, WorkflowStateTable, ElementTable, UserTable и UserFieldTable.

См. определение в файле datamanager.php строка 874

875 {
876 global $USER_FIELD_MANAGER;
877
878 // compatibility
879 $fields = $data;
880
881 // prepare entity object for compatibility with new code
882 $object = static::convertArrayToObject($fields, true);
883
884 $entity = static::getEntity();
885 $result = new AddResult();
886
887 try
888 {
889 static::callOnBeforeAddEvent($object, $fields, $result);
890
891 // actualize old-style fields array from object
892 $fields = $object->collectValues(Values::CURRENT, FieldTypeMask::SCALAR);
893
894 // uf values
895 $ufdata = $object->collectValues(Values::CURRENT, FieldTypeMask::USERTYPE);
896
897 // check data
898 static::checkFields($result, null, $fields);
899
900 // check uf data
901 if (!empty($ufdata))
902 {
903 static::checkUfFields($object, $ufdata, $result);
904 }
905
906 // check if there is still some data
907 if (empty($fields) && empty($ufdata))
908 {
909 $result->addError(new EntityError("There is no data to add."));
910 }
911
912 // return if any error
913 if (!$result->isSuccess(true))
914 {
915 return $result;
916 }
917
918 //event on adding
919 self::callOnAddEvent($object, $fields, $ufdata);
920
921 // use save modifiers
922 $fieldsToDb = $fields;
923
924 foreach ($fieldsToDb as $fieldName => $value)
925 {
926 $field = $entity->getField($fieldName);
927 $fieldsToDb[$fieldName] = $field->modifyValueBeforeSave($value, $fields);
928 }
929
930 // save data
931 $connection = $entity->getConnection();
932
933 $tableName = $entity->getDBTableName();
934 $identity = $entity->getAutoIncrement();
935
936 $dataReplacedColumn = static::replaceFieldName($fieldsToDb);
937 $id = $connection->add($tableName, $dataReplacedColumn, $identity);
938
939 // build standard primary
940 $primary = null;
941 $isGuessedPrimary = false;
942
943 if (!empty($id))
944 {
945 if($entity->getAutoIncrement() <> '')
946 {
947 $primary = array($entity->getAutoIncrement() => $id);
948 static::normalizePrimary($primary);
949 }
950 else
951 {
952 // for those who did not set 'autocomplete' flag but wants to get id from result
953 $primary = array('ID' => $id);
954 $isGuessedPrimary = true;
955 }
956 }
957 else
958 {
959 static::normalizePrimary($primary, $fields);
960 }
961
962 // fill result
963 $result->setPrimary($primary);
964 $result->setData($fields + $ufdata);
965 $result->setObject($object);
966
967 if (!$isGuessedPrimary)
968 {
969 foreach ($primary as $primaryName => $primaryValue)
970 {
971 $object->sysSetActual($primaryName, $primaryValue);
972 }
973 }
974
975 // save uf data
976 if (!empty($ufdata))
977 {
978 $ufUserId = false;
979
980 if ($object->authContext)
981 {
982 $ufUserId = $object->authContext->getUserId();
983 }
984
985 $USER_FIELD_MANAGER->update($entity->getUfId(), end($primary), $ufdata, $ufUserId);
986 }
987
988 static::cleanCache();
989
990 static::callOnAfterAddEvent($object, $fields + $ufdata, $id);
991 }
992 catch (\Exception $e)
993 {
994 // check result to avoid warning
995 $result->isSuccess();
996
997 throw $e;
998 }
999
1000 return $result;
1001 }
static callOnAddEvent($object, $fields, $ufdata)

◆ addMulti()

static addMulti (   $rows,
  $ignoreEvents = false 
)
staticinherited
Аргументы
$rows
bool$ignoreEvents
Возвращает
AddResult
Исключения
Main

ArgumentException

Исключения
Main

SystemException

Переопределяется в CommonElementTable.

См. определение в файле datamanager.php строка 1011

1012 {
1013 global $USER_FIELD_MANAGER;
1014
1015 $rows = array_values($rows);
1016 $forceSeparateQueries = false;
1017
1018 if (!$ignoreEvents && count($rows) > 1 && strlen(static::getEntity()->getAutoIncrement()))
1019 {
1020 $forceSeparateQueries = true;
1021
1022 // change to warning
1023 trigger_error(
1024 'Multi-insert doesn\'t work with events as far as we can not get last inserted IDs that we need for the events. '.
1025 'Insert query was forced to multiple separate queries.',
1026 E_USER_NOTICE
1027 );
1028 }
1029
1030 // prepare objects
1031 $objects = [];
1032
1033 foreach ($rows as $k => &$row)
1034 {
1035 $objects[$k] = static::convertArrayToObject($row, true);
1036 }
1037
1038 $entity = static::getEntity();
1039 $result = new AddResult();
1040
1041 try
1042 {
1043 // call onBeforeEvent
1044 if (!$ignoreEvents)
1045 {
1046 foreach ($objects as $k => $object)
1047 {
1048 static::callOnBeforeAddEvent($object, $rows[$k], $result);
1049 }
1050 }
1051
1052 // collect array data
1053 $allFields = [];
1054 $allUfData = [];
1055
1056 foreach ($objects as $k => $object)
1057 {
1058 // actualize old-style fields array from object
1059 $allFields[$k] = $object->collectValues(Values::CURRENT, FieldTypeMask::SCALAR);
1060
1061 // uf values
1062 $allUfData[$k] = $object->collectValues(Values::CURRENT, FieldTypeMask::USERTYPE);
1063 }
1064
1065 // check data and uf
1066 foreach ($objects as $k => $object)
1067 {
1068 $fields = $allFields[$k];
1069 $ufdata = $allUfData[$k];
1070
1071 // check data
1072 static::checkFields($result, null, $fields);
1073
1074 // check uf data
1075 if (!empty($ufdata))
1076 {
1077 static::checkUfFields($object, $ufdata, $result);
1078 }
1079
1080 // check if there is still some data
1081 if (empty($fields) && empty($ufdata))
1082 {
1083 $result->addError(new EntityError("There is no data to add."));
1084 }
1085 }
1086
1087 // return if any error in any row
1088 if (!$result->isSuccess(true))
1089 {
1090 return $result;
1091 }
1092
1093 //event on adding
1094 if (!$ignoreEvents)
1095 {
1096 foreach ($objects as $k => $object)
1097 {
1098 $fields = $allFields[$k];
1099 $ufdata = $allUfData[$k];
1100
1101 self::callOnAddEvent($object, $fields, $ufdata);
1102 }
1103 }
1104
1105 // prepare sql
1106 $allSqlData = [];
1107
1108 foreach ($allFields as $k => $fields)
1109 {
1110 // use save modifiers
1111 $fieldsToDb = $fields;
1112
1113 foreach ($fieldsToDb as $fieldName => $value)
1114 {
1115 $field = $entity->getField($fieldName);
1116 $fieldsToDb[$fieldName] = $field->modifyValueBeforeSave($value, $fields);
1117 }
1118
1119 $dataReplacedColumn = static::replaceFieldName($fieldsToDb);
1120
1121 $allSqlData[$k] = $dataReplacedColumn;
1122 }
1123
1124 // save data
1125 $connection = $entity->getConnection();
1126
1127 $tableName = $entity->getDBTableName();
1128 $identity = $entity->getAutoIncrement();
1129 $ids = [];
1130
1131 // multi insert on db level
1132 if ($forceSeparateQueries)
1133 {
1134 foreach ($allSqlData as $k => $sqlData)
1135 {
1136 // remember all ids
1137 $ids[$k] = $connection->add($tableName, $sqlData, $identity);
1138 }
1139 }
1140 else
1141 {
1142 $id = $connection->addMulti($tableName, $allSqlData, $identity);
1143 }
1144
1145 if (count($allSqlData) > 1)
1146 {
1147 // id doesn't make sense when multiple inserts
1148 $id = null;
1149 }
1150 else
1151 {
1152 $object = $objects[0];
1153 $fields = $allFields[0];
1154
1155 // build standard primary
1156 $primary = null;
1157
1158 if (!empty($id))
1159 {
1160 if($entity->getAutoIncrement() <> '')
1161 {
1162 $primary = array($entity->getAutoIncrement() => $id);
1163 static::normalizePrimary($primary);
1164 }
1165 else
1166 {
1167 // for those who did not set 'autocomplete' flag but want to get id from result
1168 $primary = array('ID' => $id);
1169 }
1170 }
1171 else
1172 {
1173 static::normalizePrimary($primary, $fields);
1174 }
1175
1176 // fill result
1177 $result->setPrimary($primary);
1178 $result->setData($fields);
1179 $result->setObject($object);
1180 }
1181
1182 // save uf data
1183 foreach ($allUfData as $k => $ufdata)
1184 {
1185 if (!empty($ufdata))
1186 {
1187 $ufUserId = false;
1188
1189 if ($objects[$k]->authContext)
1190 {
1191 $ufUserId = $objects[$k]->authContext->getUserId();
1192 }
1193
1194 $USER_FIELD_MANAGER->update($entity->getUfId(), end($primary), $ufdata, $ufUserId);
1195 }
1196 }
1197
1198 static::cleanCache();
1199
1200 // after event
1201 if (!$ignoreEvents)
1202 {
1203 foreach ($objects as $k => $object)
1204 {
1205 $fields = $allFields[$k] + $allUfData[$k];
1206 $id = $forceSeparateQueries ? $ids[$k] : null;
1207
1208 static::callOnAfterAddEvent($object, $fields, $id);
1209 }
1210 }
1211 }
1212 catch (\Exception $e)
1213 {
1214 // check result to avoid warning
1215 $result->isSuccess();
1216
1217 throw $e;
1218 }
1219
1220 return $result;
1221 }

◆ callOnAddEvent()

static callOnAddEvent (   $object,
  $fields,
  $ufdata 
)
staticprotectedinherited
Аргументы
$object
$fields
$ufdata

См. определение в файле datamanager.php строка 1739

1740 {
1741 $event = new Event($object->entity, self::EVENT_ON_ADD, [
1742 'fields' => $fields + $ufdata,
1743 'object' => clone $object
1744 ]);
1745 $event->send();
1746
1747 //event on adding (modern with namespace)
1748 $event = new Event($object->entity, self::EVENT_ON_ADD, [
1749 'fields' => $fields + $ufdata,
1750 'object' => clone $object
1751 ], true);
1752 $event->send();
1753 }

◆ callOnAfterAddEvent()

static callOnAfterAddEvent (   $object,
  $fields,
  $id 
)
staticprotectedinherited
Аргументы
EntityObject$object
array$fields
int$id

См. определение в файле datamanager.php строка 1760

1761 {
1762 //event after adding
1763 $event = new Event($object->entity, self::EVENT_ON_AFTER_ADD, [
1764 'id' => $id,
1765 'fields' => $fields,
1766 'object' => clone $object
1767 ]);
1768 $event->send();
1769
1770 //event after adding (modern with namespace)
1771 $event = new Event($object->entity, self::EVENT_ON_AFTER_ADD, [
1772 'id' => $id,
1773 'primary' => $object->primary,
1774 'fields' => $fields,
1775 'object' => clone $object
1776 ], true);
1777 $event->send();
1778 }

◆ callOnAfterDeleteEvent()

static callOnAfterDeleteEvent (   $object,
  $entity 
)
staticprotectedinherited
Аргументы
$object
$entity

См. определение в файле datamanager.php строка 1892

1893 {
1894 $event = new Event($entity, self::EVENT_ON_AFTER_DELETE, array("id" => $object->primary));
1895 $event->send();
1896
1897 //event after delete (modern with namespace)
1898 $event = new Event($entity, self::EVENT_ON_AFTER_DELETE, array("id" => $object->primary, "primary" => $object->primary, "object" => clone $object), true);
1899 $event->send();
1900 }

◆ callOnAfterUpdateEvent()

static callOnAfterUpdateEvent (   $object,
  $fields 
)
staticprotectedinherited
Аргументы
EntityObject$object
$fields

См. определение в файле datamanager.php строка 1838

1839 {
1840 $event = new Event($object->entity, self::EVENT_ON_AFTER_UPDATE, [
1841 'id' => $object->primary,
1842 'fields' => $fields,
1843 'object' => clone $object
1844 ]);
1845 $event->send();
1846
1847 //event after update (modern with namespace)
1848 $event = new Event($object->entity, self::EVENT_ON_AFTER_UPDATE, [
1849 'id' => $object->primary,
1850 'primary' => $object->primary,
1851 'fields' => $fields,
1852 'object' => clone $object
1853 ], true);
1854 $event->send();
1855 }

◆ callOnBeforeAddEvent()

static callOnBeforeAddEvent (   $object,
  $fields,
  $result 
)
staticprotectedinherited
Аргументы
EntityObject$object
$fields
$result

См. определение в файле datamanager.php строка 1711

1712 {
1713 //event before adding
1714 $event = new Event($object->entity, self::EVENT_ON_BEFORE_ADD, [
1715 'fields' => $fields,
1716 'object' => $object
1717 ]);
1718
1719 $event->send();
1720 $event->getErrors($result);
1721 $event->mergeObjectFields($object);
1722
1723 //event before adding (modern with namespace)
1724 $event = new Event($object->entity, self::EVENT_ON_BEFORE_ADD, [
1725 'fields' => $fields,
1726 'object' => $object
1727 ], true);
1728
1729 $event->send();
1730 $event->getErrors($result);
1731 $event->mergeObjectFields($object);
1732 }

◆ callOnBeforeDeleteEvent()

static callOnBeforeDeleteEvent (   $object,
  $entity,
  $result 
)
staticprotectedinherited
Аргументы
$object
$entity
$result

См. определение в файле datamanager.php строка 1862

1863 {
1864 $event = new Event($entity, self::EVENT_ON_BEFORE_DELETE, array("id" => $object->primary));
1865 $event->send();
1866 $event->getErrors($result);
1867
1868 //event before delete (modern with namespace)
1869 $event = new Event($entity, self::EVENT_ON_BEFORE_DELETE, array("id" => $object->primary, "primary" => $object->primary, "object" => clone $object), true);
1870 $event->send();
1871 $event->getErrors($result);
1872 }

◆ callOnBeforeUpdateEvent()

static callOnBeforeUpdateEvent (   $object,
  $fields,
  $result 
)
staticprotectedinherited
Аргументы
EntityObject$object
$fields
$result

См. определение в файле datamanager.php строка 1785

1786 {
1787 $event = new Event($object->entity, self::EVENT_ON_BEFORE_UPDATE, [
1788 'id' => $object->primary,
1789 'fields' => $fields,
1790 'object' => $object
1791 ]);
1792
1793 $event->send();
1794 $event->getErrors($result);
1795 $event->mergeObjectFields($object);
1796
1797 //event before update (modern with namespace)
1798 $event = new Event($object->entity, self::EVENT_ON_BEFORE_UPDATE, [
1799 'id' => $object->primary,
1800 'primary' => $object->primary,
1801 'fields' => $fields,
1802 'object' => $object
1803 ], true);
1804
1805 $event->send();
1806 $event->getErrors($result);
1807 $event->mergeObjectFields($object);
1808 }

◆ callOnDeleteEvent()

static callOnDeleteEvent (   $object,
  $entity 
)
staticprotectedinherited
Аргументы
$object
$entity

См. определение в файле datamanager.php строка 1878

1879 {
1880 $event = new Event($entity, self::EVENT_ON_DELETE, array("id" => $object->primary));
1881 $event->send();
1882
1883 //event on delete (modern with namespace)
1884 $event = new Event($entity, self::EVENT_ON_DELETE, array("id" => $object->primary, "primary" => $object->primary, "object" => clone $object), true);
1885 $event->send();
1886 }

◆ callOnUpdateEvent()

static callOnUpdateEvent (   $object,
  $fields,
  $ufdata 
)
staticprotectedinherited
Аргументы
EntityObject$object
$fields
$ufdata

См. определение в файле datamanager.php строка 1815

1816 {
1817 $event = new Event($object->entity, self::EVENT_ON_UPDATE, [
1818 'id' => $object->primary,
1819 'fields' => $fields + $ufdata,
1820 'object' => clone $object
1821 ]);
1822 $event->send();
1823
1824 //event on update (modern with namespace)
1825 $event = new Event($object->entity, self::EVENT_ON_UPDATE, [
1826 'id' => $object->primary,
1827 'primary' => $object->primary,
1828 'fields' => $fields + $ufdata,
1829 'object' => clone $object
1830 ], true);
1831 $event->send();
1832 }

◆ checkFields()

static checkFields ( Result  $result,
  $primary,
array  $data 
)
staticinherited

Checks the data fields before saving to DB. Result stores in the $result object

Аргументы
Result$result
mixed$primary
array$data
Исключения
Main

ArgumentException

Исключения
Main

SystemException

См. определение в файле datamanager.php строка 696

697 {
698 $entity = static::getEntity();
699 //checks required fields
700 foreach ($entity->getFields() as $field)
701 {
702 if ($field instanceof ScalarField && $field->isRequired())
703 {
704 $fieldName = $field->getName();
705 if (
706 (empty($primary) && (!isset($data[$fieldName]) || $field->isValueEmpty($data[$fieldName])))
707 || (!empty($primary) && isset($data[$fieldName]) && $field->isValueEmpty($data[$fieldName]))
708 )
709 {
710 $result->addError(new FieldError(
711 $field,
712 Loc::getMessage("MAIN_ENTITY_FIELD_REQUIRED", array("#FIELD#"=>$field->getTitle())),
713 FieldError::EMPTY_REQUIRED
714 ));
715 }
716 }
717 }
718
719 // checks data - fieldname & type & strlen etc.
720 foreach ($data as $k => $v)
721 {
722 if ($entity->hasField($k))
723 {
724 $field = $entity->getField($k);
725
726 }
727 else
728 {
729 throw new Main\ArgumentException(sprintf(
730 'Field `%s` not found in entity when trying to query %s row.',
731 $k, $entity->getName()
732 ));
733 }
734
735 $field->validateValue($v, $primary, $data, $result);
736 }
737 }
static getMessage($code, $replace=null, $language=null)
Definition: loc.php:29

◆ checkUfFields()

static checkUfFields (   $object,
  $ufdata,
  $result 
)
staticprotectedinherited
Аргументы
EntityObject$object
$ufdata
Result$result

См. определение в файле datamanager.php строка 830

831 {
832 global $USER_FIELD_MANAGER, $APPLICATION;
833
834 $userId = ($object->authContext && $object->authContext->getUserId())
835 ? $object->authContext->getUserId()
836 : false;
837
838 $ufPrimary = ($object->sysGetState() === Main\ORM\Objectify\State::RAW)
839 ? false
840 : end($object->primary);
841
842 if (!$USER_FIELD_MANAGER->CheckFields($object->entity->getUfId(), $ufPrimary, $ufdata, $userId))
843 {
844 if (is_object($APPLICATION) && $APPLICATION->getException())
845 {
846 $e = $APPLICATION->getException();
847 $result->addError(new EntityError($e->getString()));
848 $APPLICATION->resetException();
849 }
850 else
851 {
852 $result->addError(new EntityError("Unknown error while checking userfields"));
853 }
854 }
855 }

◆ cleanCache()

static cleanCache ( )
staticinherited

Переопределяется в TypeTable и SiteTable.

См. определение в файле datamanager.php строка 1961

1961 : void
1962 {
1963 $entity = static::getEntity();
1964 $entity->cleanCache();
1965 }

◆ createCollection()

static createCollection ( )
staticfinalinherited
Возвращает
null Actual type should be annotated by orm:annotate
Исключения
Main

ArgumentException

Исключения
Main

SystemException

См. определение в файле datamanager.php строка 255

256 {
257 return static::getEntity()->createCollection();
258 }

◆ createObject()

static createObject (   $setDefaultValues = true)
staticfinalinherited
Аргументы
bool$setDefaultValues
Возвращает
null Actual type should be annotated by orm:annotate
Исключения
Main

ArgumentException

Исключения
Main

SystemException

См. определение в файле datamanager.php строка 245

246 {
247 return static::getEntity()->createObject($setDefaultValues);
248 }

◆ cryptoEnabled()

static cryptoEnabled (   $field,
  $table = null 
)
staticinherited

Returns true if crypto is enabled for a field.

Аргументы
string$field
string$table
Возвращает
bool

См. определение в файле datamanager.php строка 1933

1934 {
1935 if($table === null)
1936 {
1937 $table = static::getTableName();
1938 }
1939 $optionString = Main\Config\Option::get("main", "~crypto_".$table);
1940 if($optionString <> '')
1941 {
1942 $field = strtoupper($field);
1943 $options = unserialize($optionString, ['allowed_classes' => false]);
1944 if(isset($options[$field]) && $options[$field] === true)
1945 {
1946 return true;
1947 }
1948 }
1949 return false;
1950 }

◆ delete()

static delete (   $primary)
staticinherited

Deletes row in entity table by primary key

Аргументы
mixed$primary
Возвращает
DeleteResult
Исключения

Exception

Переопределяется в CultureTable, WorkflowStateTable, ElementTable, UserTable, UserFieldTable, KkmModelTable и PaySystemActionTable.

См. определение в файле datamanager.php строка 1627

1628 {
1629 global $USER_FIELD_MANAGER;
1630
1631 // check primary
1632 static::normalizePrimary($primary);
1633 static::validatePrimary($primary);
1634
1635 $entity = static::getEntity();
1636 $result = new DeleteResult();
1637
1638 $entityClass = static::getEntity()->getDataClass();
1639 $primaryAsString = EntityObject::sysSerializePrimary($primary, static::getEntity());
1640
1641 $object = !empty(static::$currentDeletingObjects[$entityClass][$primaryAsString])
1642 ? static::$currentDeletingObjects[$entityClass][$primaryAsString]
1643 : static::wakeUpObject($primary);
1644
1645 try
1646 {
1647 //event before delete
1648 static::callOnBeforeDeleteEvent($object, $entity, $result);
1649
1650 // return if any error
1651 if (!$result->isSuccess(true))
1652 {
1653 return $result;
1654 }
1655
1656 //event on delete
1657 static::callOnDeleteEvent($object, $entity);
1658
1659 // delete
1660 $connection = $entity->getConnection();
1661 $helper = $connection->getSqlHelper();
1662
1663 $tableName = $entity->getDBTableName();
1664
1665 $replacedPrimary = static::replaceFieldName($primary);
1666 $id = array();
1667 foreach ($replacedPrimary as $k => $v)
1668 {
1669 $id[] = $helper->prepareAssignment($tableName, $k, $v);
1670 }
1671 $where = implode(' AND ', $id);
1672
1673 $sql = "DELETE FROM ".$helper->quote($tableName)." WHERE ".$where;
1674 $connection->queryExecute($sql);
1675
1676 // delete uf data
1677 if ($entity->getUfId())
1678 {
1679 $USER_FIELD_MANAGER->delete($entity->getUfId(), end($primary));
1680 }
1681
1682 static::cleanCache();
1683
1684 //event after delete
1685 static::callOnAfterDeleteEvent($object, $entity);
1686 }
1687 catch (\Exception $e)
1688 {
1689 // check result to avoid warning
1690 $result->isSuccess();
1691
1692 throw $e;
1693 }
1694 finally
1695 {
1696 // clean temporary objects
1697 if (!empty(static::$currentDeletingObjects[$entityClass][$primaryAsString]))
1698 {
1699 unset(static::$currentDeletingObjects[$entityClass][$primaryAsString]);
1700 }
1701 }
1702
1703 return $result;
1704 }

◆ enableCrypto()

static enableCrypto (   $field,
  $table = null,
  $mode = true 
)
staticinherited

Sets a flag indicating crypto support for a field.

Аргументы
string$field
string$table
bool$mode

См. определение в файле datamanager.php строка 1909

1910 {
1911 if($table === null)
1912 {
1913 $table = static::getTableName();
1914 }
1915 $options = array();
1916 $optionString = Main\Config\Option::get("main", "~crypto_".$table);
1917 if($optionString <> '')
1918 {
1919 $options = unserialize($optionString, ['allowed_classes' => false]);
1920 }
1921 $options[strtoupper($field)] = $mode;
1922 Main\Config\Option::set("main", "~crypto_".$table, serialize($options));
1923 }

◆ getById()

static getById (   $id)
staticinherited

Returns selection by entity's primary key

Аргументы
mixed$idPrimary key of the entity
Возвращает
QueryResult
Исключения
Main

ArgumentException

Исключения
Main

ObjectPropertyException

Исключения
Main

SystemException

См. определение в файле datamanager.php строка 377

378 {
379 return static::getByPrimary($id);
380 }

◆ getByPrimary()

static getByPrimary (   $primary,
array  $parameters = array() 
)
staticinherited

Returns selection by entity's primary key and optional parameters for getList()

Аргументы
mixed$primaryPrimary key of the entity
array$parametersAdditional parameters for getList()
Возвращает
QueryResult
Исключения
Main

ArgumentException

Исключения
Main

ObjectPropertyException

Исключения
Main

SystemException

См. определение в файле datamanager.php строка 343

344 {
345 static::normalizePrimary($primary);
346 static::validatePrimary($primary);
347
348 $primaryFilter = array();
349
350 foreach ($primary as $k => $v)
351 {
352 $primaryFilter['='.$k] = $v;
353 }
354
355 if (isset($parameters['filter']))
356 {
357 $parameters['filter'] = array($primaryFilter, $parameters['filter']);
358 }
359 else
360 {
361 $parameters['filter'] = $primaryFilter;
362 }
363
364 return static::getList($parameters);
365 }

◆ getCollectionClass()

static getCollectionClass ( )
staticinherited

Returns class of Object collection for current entity.

Возвращает
string|Collection

Переопределяется в ElementV1Table, ElementV2Table, BookTable, ReliabilityTable, FileDiffTable, FileIndexTable, PathIndexTable и PhraseIndexTable.

См. определение в файле datamanager.php строка 172

173 {
174 if (!isset(static::$collectionClass[get_called_class()]))
175 {
176 static::$collectionClass[get_called_class()] = static::getCollectionClassByDataClass(get_called_class());
177 }
178
179 return static::$collectionClass[get_called_class()];
180 }

◆ getCollectionClassByDataClass()

static getCollectionClassByDataClass (   $dataClass)
staticprotectedinherited

См. определение в файле datamanager.php строка 193

194 {
195 $objectClass = static::getEntityClass()::normalizeName($dataClass);
196
197 // make class name more unique
198 $namespace = substr($objectClass, 0, strrpos($objectClass, '\\') + 1);
199 $className = substr($objectClass, strrpos($objectClass, '\\') + 1);
200
201 $className = static::getEntityClass()::getDefaultCollectionClassName($className);
202
203 return $namespace.$className;
204 }

◆ getCollectionClassName()

static getCollectionClassName ( )
staticfinalinherited

Returns class name (without namespace) of Object collection for current entity.

Возвращает
string

См. определение в файле datamanager.php строка 187

188 {
189 $class = static::getCollectionClass();
190 return substr($class, strrpos($class, '\\') + 1);
191 }

◆ getCollectionParentClass()

static getCollectionParentClass ( )
staticinherited
Возвращает
Collection|string

См. определение в файле datamanager.php строка 217

218 {
219 return Collection::class;
220 }

◆ getConnectionName()

static getConnectionName ( )
staticinherited

Returns connection name for entity

Возвращает
string

См. определение в файле datamanager.php строка 115

116 {
117 return 'default';
118 }

◆ getCount()

static getCount (   $filter = array(),
array  $cache = array() 
)
staticinherited

Performs COUNT query on entity and returns the result.

Аргументы
array | Filter$filter
array$cacheAn array of cache options "ttl" => integer indicating cache TTL
Возвращает
int
Исключения
Main

ObjectPropertyException

Исключения
Main

SystemException

См. определение в файле datamanager.php строка 526

527 {
528 $query = static::query();
529
530 // new filter
531 $query->addSelect(new ExpressionField('CNT', 'COUNT(1)'));
532
533 if ($filter instanceof Filter)
534 {
535 $query->where($filter);
536 }
537 else
538 {
539 $query->setFilter($filter);
540 }
541
542 if(isset($cache["ttl"]))
543 {
544 $query->setCacheTtl($cache["ttl"]);
545 }
546
547 $result = $query->exec()->fetch();
548
549 return (int)$result['CNT'];
550 }

◆ getEntity()

static getEntity ( )
staticinherited

Returns entity object

Возвращает
Entity
Исключения
Main

ArgumentException

Исключения
Main

SystemException

См. определение в файле datamanager.php строка 78

79 {
80 $class = static::getEntityClass()::normalizeEntityClass(get_called_class());
81
82 if (!isset(static::$entity[$class]))
83 {
84 static::$entity[$class] = static::getEntityClass()::getInstance($class);
85 }
86
87 return static::$entity[$class];
88 }

◆ getEntityClass()

static getEntityClass ( )
staticinherited
Возвращает
Entity|string

Переопределяется в CommonElementTable, ElementV1Table, ElementV2Table и ValueStorageTable.

См. определение в файле datamanager.php строка 233

234 {
235 return Entity::class;
236 }

◆ getList()

static getList ( array  $parameters = array())
staticinherited

Executes the query and returns selection by parameters of the query. This function is an alias to the Query object functions

Аргументы
array$parametersAn array of query parameters, available keys are:
"select" => array of fields in the SELECT part of the query, aliases are possible in the form of "alias"=>"field";
"filter" => array of filters in the WHERE/HAVING part of the query in the form of "(condition)field"=>"value"; also could be an instance of Filter;
"group" => array of fields in the GROUP BY part of the query;
"order" => array of fields in the ORDER BY part of the query in the form of "field"=>"asc|desc";
"limit" => integer indicating maximum number of rows in the selection (like LIMIT n in MySql);
"offset" => integer indicating first row number in the selection (like LIMIT n, 100 in MySql);
"runtime" => array of entity fields created dynamically;
"cache => array of cache options:<br> "ttl" => integer indicating cache TTL;<br> "cache_joins" => boolean enabling to cache joins, false by default.
См. также
Query::filter()
Возвращает
QueryResult
Исключения
Main

ArgumentException

Исключения
Main

ObjectPropertyException

Исключения
Main

SystemException

См. определение в файле datamanager.php строка 441

442 {
443 $query = static::query();
444
445 if(!isset($parameters['select']))
446 {
447 $query->setSelect(array('*'));
448 }
449
450 foreach($parameters as $param => $value)
451 {
452 switch($param)
453 {
454 case 'select':
455 $query->setSelect($value);
456 break;
457 case 'filter':
458 $value instanceof Filter ? $query->where($value) : $query->setFilter($value);
459 break;
460 case 'group':
461 $query->setGroup($value);
462 break;
463 case 'order';
464 $query->setOrder($value);
465 break;
466 case 'limit':
467 $query->setLimit($value);
468 break;
469 case 'offset':
470 $query->setOffset($value);
471 break;
472 case 'count_total':
473 $query->countTotal($value);
474 break;
475 case 'runtime':
476 foreach ($value as $name => $fieldInfo)
477 {
478 $query->registerRuntimeField($name, $fieldInfo);
479 }
480 break;
481 case 'data_doubling':
482 if($value)
483 {
484 $query->enableDataDoubling();
485 }
486 else
487 {
488 $query->disableDataDoubling();
489 }
490 break;
491 case 'private_fields':
492 if($value)
493 {
494 $query->enablePrivateFields();
495 }
496 else
497 {
498 $query->disablePrivateFields();
499 }
500 break;
501 case 'cache':
502 $query->setCacheTtl($value["ttl"]);
503 if(isset($value["cache_joins"]))
504 {
505 $query->cacheJoins($value["cache_joins"]);
506 }
507 break;
508 default:
509 throw new Main\ArgumentException("Unknown parameter: ".$param, $param);
510 }
511 }
512
513 return $query->exec();
514 }

◆ getMap()

static getMap ( )
static

Returns entity map definition.

Возвращает
array

Переопределяет метод предка DataManager.

См. определение в файле propertytable.php строка 94

95 {
96 return array(
97 'ID' => new ORM\Fields\IntegerField('ID', array(
98 'primary' => true,
99 'autocomplete' => true,
100 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_ID_FIELD'),
101 )),
102 'TIMESTAMP_X' => new ORM\Fields\DatetimeField('TIMESTAMP_X', array(
103 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_TIMESTAMP_X_FIELD'),
104 )),
105 'IBLOCK_ID' => new ORM\Fields\IntegerField('IBLOCK_ID', array(
106 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_IBLOCK_ID_FIELD'),
107 )),
108 'NAME' => new ORM\Fields\StringField('NAME', array(
109 'validation' => array(__CLASS__, 'validateName'),
110 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_NAME_FIELD'),
111 )),
112 'ACTIVE' => new ORM\Fields\BooleanField('ACTIVE', array(
113 'values' => array('N','Y'),
114 'default_value' => 'Y',
115 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_ACTIVE_FIELD'),
116 )),
117 'SORT' => new ORM\Fields\IntegerField('SORT', array(
118 'default_value' => 500,
119 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_SORT_FIELD'),
120 )),
121 'CODE' => new ORM\Fields\StringField('CODE', array(
122 'validation' => array(__CLASS__, 'validateCode'),
123 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_CODE_FIELD'),
124 )),
125 'DEFAULT_VALUE' => new ORM\Fields\TextField('DEFAULT_VALUE', array(
126 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_DEFAULT_VALUE_FIELD'),
127 )),
128 'PROPERTY_TYPE' => new ORM\Fields\EnumField('PROPERTY_TYPE', array(
129 'values' => array(
130 self::TYPE_STRING,
131 self::TYPE_NUMBER,
132 self::TYPE_FILE,
133 self::TYPE_ELEMENT,
134 self::TYPE_SECTION,
135 self::TYPE_LIST
136 ),
137 'default_value' => self::TYPE_STRING,
138 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_PROPERTY_TYPE_FIELD'),
139 )),
140 'ROW_COUNT' => new ORM\Fields\IntegerField('ROW_COUNT', array(
141 'default_value' => 1,
142 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_ROW_COUNT_FIELD'),
143 )),
144 'COL_COUNT' => new ORM\Fields\IntegerField('COL_COUNT', array(
145 'default_value' => 30,
146 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_COL_COUNT_FIELD'),
147 )),
148 'LIST_TYPE' => new ORM\Fields\EnumField('LIST_TYPE', array(
149 'values' => array(self::LISTBOX, self::CHECKBOX),
150 'default_value' => self::LISTBOX,
151 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_LIST_TYPE_FIELD'),
152 )),
153 'MULTIPLE' => new ORM\Fields\BooleanField('MULTIPLE', array(
154 'values' => array('N','Y'),
155 'default_value' => 'N',
156 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_MULTIPLE_FIELD'),
157 )),
158 'XML_ID' => new ORM\Fields\StringField('XML_ID', array(
159 'validation' => array(__CLASS__, 'validateXmlId'),
160 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_XML_ID_FIELD'),
161 )),
162 'FILE_TYPE' => new ORM\Fields\StringField('FILE_TYPE', array(
163 'validation' => array(__CLASS__, 'validateFileType'),
164 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_FILE_TYPE_FIELD'),
165 )),
166 'MULTIPLE_CNT' => new ORM\Fields\IntegerField('MULTIPLE_CNT', array(
167 'default_value' => self::DEFAULT_MULTIPLE_CNT,
168 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_MULTIPLE_CNT_FIELD'),
169 )),
170 'TMP_ID' => new ORM\Fields\StringField('TMP_ID', array(
171 'validation' => array(__CLASS__, 'validateTmpId'),
172 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_TMP_ID_FIELD'),
173 )),
174 'LINK_IBLOCK_ID' => new ORM\Fields\IntegerField('LINK_IBLOCK_ID', array(
175 'default_value' => 0,
176 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_LINK_IBLOCK_ID_FIELD'),
177 )),
178 'WITH_DESCRIPTION' => new ORM\Fields\BooleanField('WITH_DESCRIPTION', array(
179 'values' => array('N','Y'),
180 'default_value' => 'N',
181 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_WITH_DESCRIPTION_FIELD'),
182 )),
183 'SEARCHABLE' => new ORM\Fields\BooleanField('SEARCHABLE', array(
184 'values' => array('N','Y'),
185 'default_value' => 'N',
186 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_SEARCHABLE_FIELD'),
187 )),
188 'FILTRABLE' => new ORM\Fields\BooleanField('FILTRABLE', array(
189 'values' => array('N','Y'),
190 'default_value' => 'N',
191 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_FILTRABLE_FIELD'),
192 )),
193 'IS_REQUIRED' => new ORM\Fields\BooleanField('IS_REQUIRED', array(
194 'values' => array('N','Y'),
195 'default_value' => 'N',
196 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_IS_REQUIRED_FIELD'),
197 )),
198 'VERSION' => new ORM\Fields\EnumField('VERSION', array(
199 'values' => array(1, 2),
200 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_VERSION_FIELD'),
201 )),
202 'USER_TYPE' => new ORM\Fields\StringField('USER_TYPE', array(
203 'validation' => array(__CLASS__, 'validateUserType'),
204 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_USER_TYPE_FIELD'),
205 )),
206 'USER_TYPE_SETTINGS_LIST' => new ORM\Fields\TextField('USER_TYPE_SETTINGS_LIST', array(
207 'serialized' => true,
208 'column_name' => 'USER_TYPE_SETTINGS',
209 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_USER_TYPE_SETTINGS_FIELD')
210 )),
211 'USER_TYPE_SETTINGS' => new ORM\Fields\TextField('USER_TYPE_SETTINGS', array()),
212 'HINT' => new ORM\Fields\StringField('HINT', array(
213 'validation' => array(__CLASS__, 'validateHint'),
214 'title' => Loc::getMessage('IBLOCK_PROPERTY_ENTITY_HINT_FIELD'),
215 )),
216 'LINK_IBLOCK' => new ORM\Fields\Relations\Reference(
217 'LINK_IBLOCK',
218 '\Bitrix\Iblock\Iblock',
219 array('=this.LINK_IBLOCK_ID' => 'ref.ID')
220 ),
221 'IBLOCK' => new ORM\Fields\Relations\Reference(
222 'IBLOCK',
223 '\Bitrix\Iblock\Iblock',
224 array('=this.IBLOCK_ID' => 'ref.ID')
225 ),
226 );
227 }

◆ getObjectClass()

static getObjectClass ( )
static

Returns class of Object for current entity.

Возвращает
string|EntityObject

Переопределяет метод предка DataManager.

См. определение в файле propertytable.php строка 84

85 {
86 return Property::class;
87 }

◆ getObjectClassByDataClass()

static getObjectClassByDataClass (   $dataClass)
staticprotectedinherited

См. определение в файле datamanager.php строка 154

155 {
156 $objectClass = static::getEntityClass()::normalizeName($dataClass);
157
158 // make class name more unique
159 $namespace = substr($objectClass, 0, strrpos($objectClass, '\\') + 1);
160 $className = substr($objectClass, strrpos($objectClass, '\\') + 1);
161
162 $className = static::getEntityClass()::getDefaultObjectClassName($className);
163
164 return $namespace.$className;
165 }

◆ getObjectClassName()

static getObjectClassName ( )
staticfinalinherited

Returns class name (without namespace) of Object for current entity.

Возвращает
string

См. определение в файле datamanager.php строка 148

149 {
150 $class = static::getObjectClass();
151 return substr($class, strrpos($class, '\\') + 1);
152 }

◆ getObjectParentClass()

static getObjectParentClass ( )
staticinherited
Возвращает
EntityObject|string

Переопределяется в ElementV1Table, ElementV2Table, ValueStorageTable и TypeDataManager.

См. определение в файле datamanager.php строка 209

210 {
211 return EntityObject::class;
212 }

◆ getQueryClass()

static getQueryClass ( )
staticinherited
Возвращает
Query|string

Переопределяется в CommonElementTable.

См. определение в файле datamanager.php строка 225

226 {
227 return Query::class;
228 }

◆ getRow()

static getRow ( array  $parameters)
staticinherited

Returns one row (or null) by parameters for getList()

Аргументы
array$parametersPrimary key of the entity
Возвращает
array|null
Исключения
Main

ArgumentException

Исключения
Main

ObjectPropertyException

Исключения
Main

SystemException

См. определение в файле datamanager.php строка 410

411 {
412 $parameters['limit'] = 1;
413 $result = static::getList($parameters);
414 $row = $result->fetch();
415
416 return (is_array($row)? $row : null);
417 }

◆ getRowById()

static getRowById (   $id)
staticinherited

Returns one row (or null) by entity's primary key

Аргументы
mixed$idPrimary key of the entity
Возвращает
array|null
Исключения
Main

ArgumentException

Исключения
Main

ObjectPropertyException

Исключения
Main

SystemException

См. определение в файле datamanager.php строка 392

393 {
394 $result = static::getByPrimary($id);
395 $row = $result->fetch();
396
397 return (is_array($row)? $row : null);
398 }

◆ getTableName()

static getTableName ( )
static

Returns DB table name for entity

Возвращает
string

Переопределяет метод предка DataManager.

См. определение в файле propertytable.php строка 79

80 {
81 return 'b_iblock_property';
82 }

◆ getTitle()

static getTitle ( )
staticinherited
Возвращает
string

См. определение в файле datamanager.php строка 123

124 {
125 return null;
126 }

◆ getUfId()

static getUfId ( )
staticinherited

Переопределяется в ProductTable, BookTable, UserTable, LogTable и LogCommentTable.

См. определение в файле datamanager.php строка 297

298 {
299 return null;
300 }

◆ isUtm()

static isUtm ( )
staticinherited

См. определение в файле datamanager.php строка 307

308 {
309 return false;
310 }

◆ isUts()

static isUts ( )
staticinherited

См. определение в файле datamanager.php строка 302

303 {
304 return false;
305 }

◆ onAdd()

static onAdd ( Event  $event)
staticinherited

См. определение в файле datamanager.php строка 1973

1973{}

◆ onAfterAdd()

static onAfterAdd ( Event  $event)
staticinherited

Переопределяется в IblockTable, PrototypeItemDataManager и TypeDataManager.

См. определение в файле datamanager.php строка 1974

1974{}

◆ onAfterDelete()

static onAfterDelete ( Event  $event)
staticinherited

Переопределяется в IblockTable, SectionTable и TypeDataManager.

См. определение в файле datamanager.php строка 1980

1980{}

◆ onAfterUpdate()

static onAfterUpdate ( Event  $event)
staticinherited

Переопределяется в IblockTable, PrototypeItemDataManager и TypeDataManager.

См. определение в файле datamanager.php строка 1977

1977{}

◆ onBeforeAdd() [1/2]

static onBeforeAdd ( Event  $event)
staticinherited

Переопределяется в OptionGroupTable и PrototypeItemDataManager.

См. определение в файле datamanager.php строка 1972

1972{}

◆ onBeforeAdd() [2/2]

static onBeforeAdd ( ORM\Event  $event)
static

Default onBeforeAdd handler. Absolutely necessary.

Аргументы
ORM\Event$eventEvent object.
Возвращает
ORM\EventResult

См. определение в файле propertytable.php строка 319

320 {
321 $result = new ORM\EventResult;
322 $fields = $event->getParameter('fields');
323
324 $modifyFieldList = [];
325 self::copyOldFields($modifyFieldList, $fields);
326 $result->unsetField('USER_TYPE_SETTINGS');
327
328 if (!empty($modifyFieldList))
329 $result->modifyFields($modifyFieldList);
330 unset($modifyFieldList);
331 unset($fields);
332
333 return $result;
334 }

◆ onBeforeDelete()

static onBeforeDelete ( Event  $event)
staticinherited

Переопределяется в PrototypeItemDataManager и TypeDataManager.

См. определение в файле datamanager.php строка 1978

1978{}

◆ onBeforeUpdate() [1/2]

static onBeforeUpdate ( Event  $event)
staticinherited

Переопределяется в OptionGroupTable, PrototypeItemDataManager и TypeDataManager.

См. определение в файле datamanager.php строка 1975

1975{}

◆ onBeforeUpdate() [2/2]

static onBeforeUpdate ( ORM\Event  $event)
static

Default onBeforeUpdate handler. Absolutely necessary.

Аргументы
ORM\Event$eventEvent object.
Возвращает
ORM\EventResult

См. определение в файле propertytable.php строка 342

343 {
344 $result = new ORM\EventResult;
345 $fields = $event->getParameter('fields');
346
347 $modifyFieldList = [];
348 self::copyOldFields($modifyFieldList, $fields);
349 $result->unsetField('USER_TYPE_SETTINGS');
350
351 if (!empty($modifyFieldList))
352 $result->modifyFields($modifyFieldList);
353 unset($modifyFieldList);
354 unset($fields);
355
356 return $result;
357 }

◆ onDelete()

static onDelete ( Event  $event)
staticinherited

Переопределяется в SectionTable и FilePreviewTable.

См. определение в файле datamanager.php строка 1979

1979{}

◆ onUpdate()

static onUpdate ( Event  $event)
staticinherited

См. определение в файле datamanager.php строка 1976

1976{}

◆ postInitialize()

static postInitialize ( Entity  $entity)
staticinherited
Аргументы
Entity$entity
Возвращает
null

См. определение в файле datamanager.php строка 327

328 {
329 return null;
330 }

◆ query()

static query ( )
staticinherited

Creates and returns the Query object for the entity

Возвращает
Query
Исключения
Main

ArgumentException

Исключения
Main

SystemException

См. определение в файле datamanager.php строка 559

560 {
561 $queryClass = static::getQueryClass();
562 return new $queryClass(static::getEntity());
563 }

◆ replaceFieldName()

static replaceFieldName (   $data = array())
staticprotectedinherited
Аргументы
array$data
Возвращает
array
Исключения
Main

ArgumentException

Исключения
Main

SystemException

См. определение в файле datamanager.php строка 572

573 {
574 $newData = [];
575 $entity = static::getEntity();
576
577 foreach ($data as $fieldName => $value)
578 {
579 $newData[$entity->getField($fieldName)->getColumnName()] = $value;
580 }
581
582 return $newData;
583 }

◆ setCurrentDeletingObject()

static setCurrentDeletingObject (   $object)
staticinherited
Аргументы
EntityObject$object

См. определение в файле datamanager.php строка 1955

1955 : void
1956 {
1957 $entityClass = static::getEntity()->getDataClass();
1958 self::$currentDeletingObjects[$entityClass][$object->primaryAsString] = $object;
1959 }

◆ setDefaultScope()

static setDefaultScope (   $query)
staticinherited
Аргументы
Query$query
Возвращает
Query

Переопределяется в CommonElementTable.

См. определение в файле datamanager.php строка 317

318 {
319 return $query;
320 }

◆ unsetEntity()

static unsetEntity (   $class)
staticinherited

См. определение в файле datamanager.php строка 90

91 {
92 $class = static::getEntityClass()::normalizeEntityClass($class);
93
94 if (isset(static::$entity[$class]))
95 {
96 unset(static::$entity[$class]);
97 }
98 }

◆ update()

static update (   $primary,
array  $data 
)
staticinherited

Updates row in entity table by primary key

Аргументы
mixed$primary
array$dataAn array with fields like array( "fields" => array( "FIELD1" => "value1", "FIELD2" => "value2", ), "auth_context" => \Bitrix\Main\Authentication\Context object ) or just a plain array of fields.
Возвращает
UpdateResult
Исключения

Exception

Аргументы
mixed$primary
array$data
Возвращает
Entity\UpdateResult
Исключения
Main

ArgumentException

Исключения
Main

Db\SqlQueryException

Исключения
Main

SystemException

Переопределяется в WorkflowInstanceTable, WorkflowStateTable, ElementTable, CultureTable, UserTable и UserFieldTable.

См. определение в файле datamanager.php строка 1241

1242 {
1243 global $USER_FIELD_MANAGER;
1244
1245 // check primary
1246 static::normalizePrimary(
1247 $primary, isset($data["fields"]) && is_array($data["fields"]) ? $data["fields"] : $data
1248 );
1249 static::validatePrimary($primary);
1250
1251 // compatibility
1252 $fields = $data;
1253
1254 // prepare entity object for compatibility with new code
1255 $object = static::convertArrayToObject($fields, false, $primary);
1256
1257 $entity = static::getEntity();
1258 $result = new UpdateResult();
1259
1260 try
1261 {
1262 static::callOnBeforeUpdateEvent($object, $fields, $result);
1263
1264 // actualize old-style fields array from object
1265 $fields = $object->collectValues(Values::CURRENT, FieldTypeMask::SCALAR);
1266
1267 // uf values
1268 $ufdata = $object->collectValues(Values::CURRENT, FieldTypeMask::USERTYPE);
1269
1270 // check data
1271 static::checkFields($result, $primary, $fields);
1272
1273 // check uf data
1274 if (!empty($ufdata))
1275 {
1276 static::checkUfFields($object, $ufdata, $result);
1277 }
1278
1279 // check if there is still some data
1280 if (empty($fields) && empty($ufdata))
1281 {
1282 return $result;
1283 }
1284
1285 // return if any error
1286 if (!$result->isSuccess(true))
1287 {
1288 return $result;
1289 }
1290
1291 static::callOnUpdateEvent($object, $fields, $ufdata);
1292
1293 // use save modifiers
1294 $fieldsToDb = $fields;
1295
1296 foreach ($fieldsToDb as $fieldName => $value)
1297 {
1298 $field = $entity->getField($fieldName);
1299 $fieldsToDb[$fieldName] = $field->modifyValueBeforeSave($value, $fields);
1300 }
1301
1302 // save data
1303 if (!empty($fieldsToDb))
1304 {
1305 $connection = $entity->getConnection();
1306 $helper = $connection->getSqlHelper();
1307
1308 $tableName = $entity->getDBTableName();
1309
1310 $dataReplacedColumn = static::replaceFieldName($fieldsToDb);
1311 $update = $helper->prepareUpdate($tableName, $dataReplacedColumn);
1312
1313 $replacedPrimary = static::replaceFieldName($primary);
1314 $id = array();
1315 foreach ($replacedPrimary as $k => $v)
1316 {
1317 $id[] = $helper->prepareAssignment($tableName, $k, $v);
1318 }
1319 $where = implode(' AND ', $id);
1320
1321 $sql = "UPDATE ".$helper->quote($tableName)." SET ".$update[0]." WHERE ".$where;
1322 $connection->queryExecute($sql, $update[1]);
1323
1324 $result->setAffectedRowsCount($connection);
1325 }
1326
1327 $result->setData($fields + $ufdata);
1328 $result->setPrimary($primary);
1329 $result->setObject($object);
1330
1331 // save uf data
1332 if (!empty($ufdata))
1333 {
1334 $ufUserId = false;
1335
1336 if ($object->authContext)
1337 {
1338 $ufUserId = $object->authContext->getUserId();
1339 }
1340
1341 $USER_FIELD_MANAGER->update($entity->getUfId(), end($primary), $ufdata, $ufUserId);
1342 }
1343
1344 static::cleanCache();
1345
1346 // event after update
1347 static::callOnAfterUpdateEvent($object, $fields + $ufdata);
1348 }
1349 catch (\Exception $e)
1350 {
1351 // check result to avoid warning
1352 $result->isSuccess();
1353
1354 throw $e;
1355 }
1356
1357 return $result;
1358 }

◆ validateCode()

static validateCode ( )
static

Returns validators for CODE field.

Возвращает
array

См. определение в файле propertytable.php строка 246

247 {
248 return array(
249 new ORM\Fields\Validators\LengthValidator(null, 50),
250 );
251 }

◆ validateFileType()

static validateFileType ( )
static

Returns validators for FILE_TYPE field.

Возвращает
array

См. определение в файле propertytable.php строка 270

271 {
272 return array(
273 new ORM\Fields\Validators\LengthValidator(null, 200),
274 );
275 }

◆ validateHint()

static validateHint ( )
static

Returns validators for HINT field.

Возвращает
array

См. определение в файле propertytable.php строка 306

307 {
308 return array(
309 new ORM\Fields\Validators\LengthValidator(null, 255),
310 );
311 }

◆ validateName()

static validateName ( )
static

Returns validators for NAME field.

Возвращает
array

См. определение в файле propertytable.php строка 234

235 {
236 return array(
237 new ORM\Fields\Validators\LengthValidator(null, 255),
238 );
239 }

◆ validatePrimary()

static validatePrimary (   $primary)
staticprotectedinherited
Аргументы
$primary
Исключения
Main

ArgumentException

Исключения
Main

SystemException

См. определение в файле datamanager.php строка 641

642 {
643 $entity = static::getEntity();
644 if (is_array($primary))
645 {
646 if(empty($primary))
647 {
648 throw new Main\ArgumentException(sprintf(
649 'Empty primary found when trying to query %s row.', $entity->getName()
650 ));
651 }
652
653 $entity_primary = $entity->getPrimaryArray();
654
655 foreach (array_keys($primary) as $key)
656 {
657 if (!in_array($key, $entity_primary, true))
658 {
659 throw new Main\ArgumentException(sprintf(
660 'Unknown primary `%s` found when trying to query %s row.',
661 $key, $entity->getName()
662 ));
663 }
664 }
665 }
666 else
667 {
668 throw new Main\ArgumentException(sprintf(
669 'Unknown type of primary "%s" found when trying to query %s row.', gettype($primary), $entity->getName()
670 ));
671 }
672
673 // primary values validation
674 foreach ($primary as $key => $value)
675 {
676 if (!is_scalar($value) && !($value instanceof Main\Type\Date))
677 {
678 throw new Main\ArgumentException(sprintf(
679 'Unknown value type "%s" for primary "%s" found when trying to query %s row.',
680 gettype($value), $key, $entity->getName()
681 ));
682 }
683 }
684 }

◆ validateTmpId()

static validateTmpId ( )
static

Returns validators for TMP_ID field.

Возвращает
array

См. определение в файле propertytable.php строка 282

283 {
284 return array(
285 new ORM\Fields\Validators\LengthValidator(null, 40),
286 );
287 }

◆ validateUserType()

static validateUserType ( )
static

Returns validators for USER_TYPE field.

Возвращает
array

См. определение в файле propertytable.php строка 294

295 {
296 return array(
297 new ORM\Fields\Validators\LengthValidator(null, 255),
298 );
299 }

◆ validateXmlId()

static validateXmlId ( )
static

Returns validators for XML_ID field.

Возвращает
array

См. определение в файле propertytable.php строка 258

259 {
260 return array(
261 new ORM\Fields\Validators\LengthValidator(null, 100),
262 );
263 }

◆ wakeUpCollection()

static wakeUpCollection (   $rows)
staticfinalinherited
См. также
Collection::wakeUp()
Аргументы
$rows
Возвращает
null Actual type should be annotated by orm:annotate
Исключения
Main

ArgumentException

Исключения
Main

SystemException

См. определение в файле datamanager.php строка 283

284 {
285 return static::getEntity()->wakeUpCollection($rows);
286 }

◆ wakeUpObject()

static wakeUpObject (   $row)
staticfinalinherited
См. также
EntityObject::wakeUp()
Аргументы
$row
Возвращает
null Actual type should be annotated by orm:annotate
Исключения
Main

ArgumentException

Исключения
Main

SystemException

См. определение в файле datamanager.php строка 269

270 {
271 return static::getEntity()->wakeUpObject($row);
272 }

Поля

◆ $collectionClass

$collectionClass
staticprotectedinherited

См. определение в файле datamanager.php строка 51

◆ $currentDeletingObjects

$currentDeletingObjects
staticprotectedinherited

См. определение в файле datamanager.php строка 54

◆ $entity

$entity
staticprotectedinherited

См. определение в файле datamanager.php строка 45

◆ $objectClass

$objectClass
staticprotectedinherited

См. определение в файле datamanager.php строка 48

◆ $reservedWords

$reservedWords
staticprotectedinherited
Инициализатор
= [
'abstract', 'and', 'array', 'as', 'break', 'callable', 'case', 'catch', 'class', 'clone', 'const', 'continue',
'declare', 'default', 'die', 'do', 'echo', 'else', 'elseif', 'empty', 'enddeclare', 'endfor', 'endforeach',
'endif', 'endswitch', 'endwhile', 'eval', 'exit', 'extends', 'final', 'finally', 'for', 'foreach', 'function',
'global', 'goto', 'if', 'implements', 'include', 'include_once', 'instanceof', 'insteadof', 'interface', 'isset',
'list', 'namespace', 'new', 'or', 'print', 'private', 'protected', 'public', 'require', 'require_once', 'return',
'static', 'switch', 'throw', 'trait', 'try', 'unset', 'use', 'var', 'while', 'xor', 'yield',
'self', 'parent',
'int', 'float', 'bool', 'string', 'true', 'false', 'null', 'void', 'iterable', 'object', 'resource', 'mixed', 'numeric',
]

См. определение в файле datamanager.php строка 57

◆ CHECKBOX

const CHECKBOX = 'C'

См. определение в файле propertytable.php строка 62

◆ DEFAULT_MULTIPLE_CNT

const DEFAULT_MULTIPLE_CNT = 5

См. определение в файле propertytable.php строка 72

◆ EVENT_ON_ADD

const EVENT_ON_ADD = "OnAdd"
inherited

См. определение в файле datamanager.php строка 35

◆ EVENT_ON_AFTER_ADD

const EVENT_ON_AFTER_ADD = "OnAfterAdd"
inherited

См. определение в файле datamanager.php строка 36

◆ EVENT_ON_AFTER_DELETE

const EVENT_ON_AFTER_DELETE = "OnAfterDelete"
inherited

См. определение в файле datamanager.php строка 42

◆ EVENT_ON_AFTER_UPDATE

const EVENT_ON_AFTER_UPDATE = "OnAfterUpdate"
inherited

См. определение в файле datamanager.php строка 39

◆ EVENT_ON_BEFORE_ADD

const EVENT_ON_BEFORE_ADD = "OnBeforeAdd"
inherited

См. определение в файле datamanager.php строка 34

◆ EVENT_ON_BEFORE_DELETE

const EVENT_ON_BEFORE_DELETE = "OnBeforeDelete"
inherited

См. определение в файле datamanager.php строка 40

◆ EVENT_ON_BEFORE_UPDATE

const EVENT_ON_BEFORE_UPDATE = "OnBeforeUpdate"
inherited

См. определение в файле datamanager.php строка 37

◆ EVENT_ON_DELETE

const EVENT_ON_DELETE = "OnDelete"
inherited

См. определение в файле datamanager.php строка 41

◆ EVENT_ON_UPDATE

const EVENT_ON_UPDATE = "OnUpdate"
inherited

См. определение в файле datamanager.php строка 38

◆ LISTBOX

const LISTBOX = 'L'

См. определение в файле propertytable.php строка 63

◆ TYPE_ELEMENT

const TYPE_ELEMENT = 'E'

См. определение в файле propertytable.php строка 68

◆ TYPE_FILE

const TYPE_FILE = 'F'

См. определение в файле propertytable.php строка 67

◆ TYPE_LIST

const TYPE_LIST = 'L'

См. определение в файле propertytable.php строка 70

◆ TYPE_NUMBER

const TYPE_NUMBER = 'N'

См. определение в файле propertytable.php строка 66

◆ TYPE_SECTION

const TYPE_SECTION = 'G'

См. определение в файле propertytable.php строка 69

◆ TYPE_STRING

const TYPE_STRING = 'S'

См. определение в файле propertytable.php строка 65


Объявления и описания членов класса находятся в файле: