Поддержка серверов

CXMLFileStream::getXmlChunk: метод Битрикс

Постоянная ссылка: http://bxapi.ru/src/?id=173699

<?php 
//    /bitrix/modules/main/classes/general/xml.phpCXMLFileStream::getXmlChunk()
//    988:

    
private function getXmlChunk($bMB false)
    {
        if(
$this->bufPosition >= $this->bufLen)
        {
            if(!
feof($this->fileHandler))
            {
                
$this->buf fread($this->fileHandler$this->readSize);
                
$this->bufPosition 0;
                
$this->bufLen $bMBmb_strlen($this->buf'latin1'): strlen($this->buf);
            }
            else
            {
                return 
false;
            }
        }

        
//Skip line delimiters (ltrim)
        
$xml_position $bMBmb_strpos($this->buf"<"$this->bufPosition'latin1'): strpos($this->buf"<"$this->bufPosition);
        while(
$xml_position === $this->bufPosition)
        {
            
$this->bufPosition++;
            
$this->filePosition++;
            
//Buffer ended with white space so we can refill it
            
if($this->bufPosition >= $this->bufLen)
            {
                if(!
feof($this->fileHandler))
                {
                    
$this->buf fread($this->fileHandler$this->readSize);
                    
$this->bufPosition 0;
                    
$this->bufLen $bMBmb_strlen($this->buf'latin1'): strlen($this->buf);
                }
                else
                    return 
false;
            }
            
$xml_position $bMBmb_strpos($this->buf"<"$this->bufPosition'latin1'): strpos($this->buf"<"$this->bufPosition);
        }

        
//Let's find next line delimiter
        
while($xml_position===false)
        {
            
$next_search $this->bufLen;
            
//Delimiter not in buffer so try to add more data to it
            
if(!feof($this->fileHandler))
            {
                
$this->buf .= fread($this->fileHandler$this->readSize);
                
$this->bufLen $bMBmb_strlen($this->buf'latin1'): strlen($this->buf);
            }
            else
                break;

            
//Let's find xml tag start
            
$xml_position $bMBmb_strpos($this->buf"<"$next_search'latin1'): strpos($this->buf"<"$next_search);
        }
        if(
$xml_position===false)
            
$xml_position $this->bufLen+1;

        
$len $xml_position-$this->bufPosition;
        
$this->filePosition += $len;
        
$result $bMBmb_substr($this->buf$this->bufPosition$len'latin1'): substr($this->buf$this->bufPosition$len);
        
$this->bufPosition $xml_position;

        return 
$result;
    }

Блог разработчика

9 Августа 2016 ResizeImageGet и простой водяной знак налету

Сегодня поговорим о том как проще всего воткнуть водяной знак на картинки в Битрикс. Например, на все изображения каталога.

21 Июля 2016 Добавление вкладки в CRM коробки Битрикс24

В этом посте я покажу, как легко и просто добавить вкладку в сущность CRM. И не просто добавить, а вывести там свой контент.

21 Июля 2016 Как просто обращаться из коробки Битрикс24 на сайт на базе Битрикс

К примеру вам хочется внутренним скриптом дернуть с сайта-магазина информацию, которая там, в свою очередь, закрыта некоторыми правами. Например, админскими. Можно конечно мутить свой REST, или иной формат общения, но проще всего воспользоваться штатным инструментом:

Текст сообщения*
Загрузить изображение