text КлассдляудобнойвыборкипользовательскихсвойстввБитриксиочисткаPROPERTY_ _VALUE
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了text КлассдляудобнойвыборкипользовательскихсвойстввБитриксиочисткаPROPERTY_ _VALUE相关的知识,希望对你有一定的参考价值。
// выбор всех пользовательских и стандартных полей
new IUIU
->TotalFieldsList( 191 );
// очистка мусора PROPERTY_ _VALUE
->CleanListArray( $list );
use Bitrix\Main\Loader;
if(!Loader::includeModule("main"))
Loader::includeModule("main");
if(!Loader::includeModule("iblock"))
Loader::includeModule("iblock");
class IUIU {
public function __construct(){
$db = CIBlock::GetArrayByID(1);
$this->STANDART_SYSTEM_FIELDS[] = 'ID';
$this->STANDART_SYSTEM_FIELDS[] = 'IBLOCK_SECTION_ID';
foreach($db['FIELDS'] as $key => $v)
$this->STANDART_SYSTEM_FIELDS[] = $key;
define( 'STANDART_SYSTEM_FIELDS', array_values($this->STANDART_SYSTEM_FIELDS) );
}
/**
* @param bool $field
*
* @return bool
*/
public function CheckToSystemField($field = false){
if(!$field)
return false;
if( in_array($field, STANDART_SYSTEM_FIELDS) )
return true;
else
return false;
}
/**
* @param bool $field
*
* @return bool|string
*/
public function AddToUserFieldPropValue($field = false){
if(!$field)
return false;
if( $this->CheckToSystemField($field) === false)
return strtoupper(
self::MoveSpecialSymbols('PROPERTY_'.$field)
);
else
return $field;
}
/**
* @param bool $string
* @return bool|string
*/
public function MoveSpecialSymbols($string = false){
$special_symbols = preg_replace("/[^<>=!?]/", "", $string);
if(strlen($special_symbols)>0)
return $special_symbols.str_replace([$special_symbols],'', $string);
else
return $string;
}
/**
* Выбираем из массива только системные свойства инфоблока
* @param array $array
*
* @return array|bool
*/
public function ExtractSystemFields($array = []){
if(empty($array))
return false;
$return = [];
foreach($array as $key => $value)
if( $this->CheckToSystemField($key) )
$return[ $key ] = ( is_array($value) || is_object($value) ) ? $value : trim($value) ;
return $return;
}
/**
* Выбираем из массива только пользовательские свойства инфоблока
* @param array $array
*
* @return array|bool
*/
public function ExtractUserFields($array = [], $bitrixExt = true){
if(empty($array))
return false;
$return = [];
foreach($array as $key => $value)
if( $value )
$return[ ($bitrixExt) ? $this->AddToUserFieldPropValue($key) : $key ]
= ( is_array($value) || is_object($value) ) ? $value : trim($value) ;
return $return;
}
/**
* Список пользовательских свойств для инфоблока
* @param bool $iblockId
* @param null $ext '_VALUE' при необходимости
*
* @return array|bool
*/
public function GetUserPropList($iblockId = false, $ext = null){
if(!$iblockId)
return false;
$return = [];
$db = CIBlockProperty::GetList(
Array('NAME' => 'ASC'),
Array(
"ACTIVE" => "Y",
"IBLOCK_ID" => $iblockId,
"CHECK_PERMISSIONS" => "N"
)
);
while( $list = $db->Fetch() )
$return[] = 'PROPERTY_'.$list['CODE'].$ext;
return $return;
}
/**
* Для того чтобы не мучаться каждый раз набирая ручками список полей для выборки
* используем данный скрипт. Безусловно уже не так быстро будет работать getlist )
* @param bool $iblockId
*
* @return array|bool
*/
public function TotalFieldsList($iblockId = false){
if(!$iblockId)
return false;
return array_values(array_merge(
STANDART_SYSTEM_FIELDS,
$this->GetUserPropList($iblockId)
));
}
/**
* Так как достаточно гемморойно постоянно прописывать PROPERTY_ _VALUE
* вычищаем этот мусор из массива
* @param array $list
* @return array|bool
*/
public function CleanListArray($list = []){
if(empty($list))
return false;
$return = [];
foreach ( $list as $key => $value ) :
if(
!stristr( $key ,'_VALUE_ID' )
&&
!stristr( $key ,'_ENUM_ID' )
&&
!stristr( $key, 'PROPERTY_' )
&&
!stristr( $key, '_VALUE' )
):
$return[$key] = $value;
elseif(
!stristr( $key ,'_VALUE_ID' )
&&
!stristr( $key ,'_ENUM_ID' )
&&
stristr( $key, 'PROPERTY_' )
&&
stristr( $key, '_VALUE' )
):
if(!in_array(str_replace(['PROPERTY_', '_VALUE'], '', $key), STANDART_SYSTEM_FIELDS))
$return[str_replace(['PROPERTY_', '_VALUE'], '', $key)] = $value;
else
$return[$key] = $value;
endif;
endforeach;
return $return;
}
}
以上是关于text КлассдляудобнойвыборкипользовательскихсвойстввБитриксиочисткаPROPERTY_ _VALUE的主要内容,如果未能解决你的问题,请参考以下文章
php Выводитвадмин-сайдбарпунктыменюдлякаждойнепустойрубрики
vbscript МакросдляOfficeудаляющийвселичныеданные(Инспектор)вовсехфайлахвыбраннойпапки。
php Двациклавнутри1гослайдераforeachinforобверткадлядвухцикловслайдыдлядвухциклов
php Функцияскачиванияфайла$ b $bПростоотправляемнаурлсобработчиком,передаваяссылкунафайл
La Sylphide 仙女
markdown Несоздаютсяфайлы,неудаляютсяфайлвебпроект权限被拒绝CentOS