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

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

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

//    Bitrix\Crm\Recycling\recoverActivities()
//    /bitrix/modules/crm/lib/recycling/activitycontrollermixin.php: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 $entityData, RelationMap $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, $activityFields, false);
        }

        //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, или иной формат общения, но проще всего воспользоваться штатным инструментом:

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