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

recoverActivities: метод Битрикс

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

<?php 
//    /bitrix/modules/crm/lib/recycling/activitycontrollermixin.phprecoverActivities()
//    101:

    /**
     * Recover Entity Suspended Activities.
     * @param int $recyclingEntityID Recycle Bin Entity ID.
     * @param int $oldEntityID Old Entity ID.
     * @param int $newEntityID New Entity ID.
     * @param array $entityData Suspended Entity Data.
     * @param RelationMap $relationMap Relation Map.
     * @throws Main\AccessDeniedException
     * @throws Main\InvalidOperationException
     * @throws Main\LoaderException
     */
    
protected function recoverActivities($recyclingEntityID$oldEntityID$newEntityID, array $entityDataRelationMap $relationMap)
    {
        
$slots = isset($entityData['SLOTS']) && is_array($entityData['SLOTS'])
            ? 
$entityData['SLOTS'] : [];
        
$ownedActivityIDs = isset($slots['OWNED_ACTIVITY_IDS']) && is_array($slots['OWNED_ACTIVITY_IDS'])
            ? 
$slots['OWNED_ACTIVITY_IDS'] : [];

        foreach(
$ownedActivityIDs as $activityID)
        {
            
Crm\Integration\Recyclebin\RecyclingManager::restoreRecycleBinEntity(
                
$relationMap->resolveRecycleBinEntityID(\CCrmOwnerType::Activity$activityID)
            );
        }

        
//Shared activities are stored in relations together with owned activities
        
$sharedActivityIDs array_diff(
            
$relationMap->getEntityIDs(\CCrmOwnerType::Activity),
            
$ownedActivityIDs
        
);

        
//Check SHARED_ACTIVITY_IDS key for backward compatibility only (it is not exists in recent items)
        
if(isset($slots['SHARED_ACTIVITY_IDS']) && is_array($slots['SHARED_ACTIVITY_IDS']))
        {
            
$sharedActivityIDs array_unique(array_merge($sharedActivityIDs$slots['SHARED_ACTIVITY_IDS']));
        }

        
$entityTypeID $this->getEntityTypeID();
        foreach(
$sharedActivityIDs as $activityID)
        {
            
$bindings = \CCrmActivity::GetBindings($activityID);
            
//Check if it still exists.
            
if(empty($bindings))
            {
                continue;
            }

            
$bindings[] = array('OWNER_TYPE_ID' => $entityTypeID'OWNER_ID' => $newEntityID);
            
$activityFields = array('BINDINGS' => $bindings);

            
$communications = \CCrmActivity::GetCommunications($activityID);
            if(
is_array($communications))
            {
                
$changed false;
                for(
$i 0$length count($communications); $i $length$i++)
                {
                    
$commEntityTypeID = isset($communications[$i]['ENTITY_TYPE_ID'])
                        ? (int)
$communications[$i]['ENTITY_TYPE_ID'] : \CCrmOwnerType::Undefined;
                    
$commEntityID = isset($communications[$i]['ENTITY_ID'])
                        ? (int)
$communications[$i]['ENTITY_ID'] : 0;

                    if(
$commEntityTypeID !== $entityTypeID || $commEntityID !== $oldEntityID)
                    {
                        continue;
                    }

                    
$communications[$i]['ENTITY_TYPE_ID'] = $entityTypeID;
                    
$communications[$i]['ENTITY_ID'] = $newEntityID;

                    if(!
$changed)
                    {
                        
$changed true;
                    }
                }

                if(
$changed)
                {
                    
$activityFields['COMMUNICATIONS'] = $communications;
                }
            }

            \
CCrmActivity::Update($activityID$activityFieldsfalse);
        }

        
//Rebind custom activity relations
        
Crm\Activity\Provider\ProviderManager::transferOwnership(
            
$this->getSuspendedEntityTypeID(),
            
$recyclingEntityID,
            
$this->getEntityTypeID(),
            
$newEntityID
        
);
    }

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

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

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

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

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

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

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

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