static function createLink($tag)
{
global $USER;
$link = SITE_DIR.'mobile/log/?ACTION=CONVERT';
$result = false;
$unique = false;
$uniqueParams = "{}";
if (
mb_substr($tag, 0, 10) == 'BLOG|POST|'
|| mb_substr($tag, 0, 18) == 'BLOG|POST_MENTION|'
|| mb_substr($tag, 0, 11) == 'BLOG|SHARE|'
|| mb_substr($tag, 0, 17) == 'BLOG|SHARE2USERS|'
|| mb_substr($tag, 0, 25) == 'RATING_MENTION|BLOG_POST|'
)
{
$params = explode("|", $tag);
$result = $link."&ENTITY_TYPE_ID=BLOG_POST&ENTITY_ID=".$params[2];
}
elseif (
mb_substr($tag, 0, 13) == 'BLOG|COMMENT|'
|| mb_substr($tag, 0, 21) == 'BLOG|COMMENT_MENTION|'
)
{
$params = explode("|", $tag);
if (!empty($params[3]))
{
$result = $link."&ENTITY_TYPE_ID=BLOG_COMMENT&ENTITY_ID=".$params[3].'#com'.$params[3];
}
else
{
$result = $link."&ENTITY_TYPE_ID=BLOG_POST&ENTITY_ID=".$params[2];
}
}
else if (mb_substr($tag, 0, 28) == 'RATING_MENTION|BLOG_COMMENT|')
{
$params = explode("|", $tag);
$result = $link."&ENTITY_TYPE_ID=BLOG_COMMENT&ENTITY_ID=".$params[2];
}
else if (mb_substr($tag, 0, 10) == 'RATING|IM|')
{
$params = explode("|", $tag);
return "BX.MobileTools.openChat(".($params[2] == 'P'? $params[3]: "'chat".$params[3]."'").");";
}
else if (mb_substr($tag, 0, 11) == 'IM|MENTION|')
{
$params = explode("|", $tag);
return "BX.MobileTools.openChat('chat".$params[2]."');";
}
else if (mb_substr($tag, 0, 10) == 'RATING|DL|')
{
$params = explode("|", $tag);
$result = $link."&ENTITY_TYPE_ID=".$params[2]."&ENTITY_ID=".$params[3];
}
else if (
mb_substr($tag, 0, 13) === 'FORUM|COMMENT'
|| mb_substr($tag, 0, 26) === 'RATING_MENTION|FORUM_POST|'
|| mb_substr($tag, 0, 18) === 'RATING|FORUM_POST|'
)
{
$params = explode("|", $tag);
if (
!empty($params[1])
&& !empty($params[2])
&& Loader::includeModule('socialnetwork')
)
{
$liveFeedEntity = BitrixSocialNetworkLivefeedProvider::init([
'ENTITY_TYPE' => BitrixSocialnetworkLivefeedProvider::DATA_ENTITY_TYPE_FORUM_POST,
'ENTITY_ID' => $params[2]
]);
$suffix = $liveFeedEntity->getSuffix();
if ($suffix === 'TASK')
{
$res = LogTable::getList(array(
'filter' => array(
'ID' => $liveFeedEntity->getLogId()
),
'select' => [ 'ENTITY_ID', 'EVENT_ID', 'SOURCE_ID' ]
));
if($logEntryFields = $res->fetch())
{
if ($logEntryFields['EVENT_ID'] === 'crm_activity_add')
{
if (
Loader::includeModule('crm')
&& ($activityFields = CCrmActivity::getById($logEntryFields['ENTITY_ID'], false))
&& $activityFields['TYPE_ID'] == CCrmActivityType::Task
)
{
$taskId = (int)$activityFields['ASSOCIATED_ENTITY_ID'];
}
}
else
{
$taskId = (int)$logEntryFields['SOURCE_ID'];
}
if ($taskId > 0)
{
return self::getTaskLink($taskId);
}
}
}
}
if (!$result)
{
$result = $link."&ENTITY_TYPE_ID=FORUM_POST&ENTITY_ID=".$params[2];
}
}
else if (mb_substr($tag, 0, 7) == 'RATING|')
{
$params = explode("|", $tag);
if ($params[1] == 'TASK')
{
if (!empty(($taskId = $params[2]) && Loader::includeModule('tasks')))
{
return self::getTaskLink($taskId);
}
}
elseif ($params[1] == 'BLOG_COMMENT')
{
$result = $link."&ENTITY_TYPE_ID=".$params[1]."&ENTITY_ID=".$params[2].'#com'.$params[2];
}
else
{
$result = $link."&ENTITY_TYPE_ID=".$params[1]."&ENTITY_ID=".$params[2];
}
}
else if (mb_substr($tag, 0, 15) == 'CALENDAR|INVITE' ||
mb_substr($tag, 0, 16) == 'CALENDAR|COMMENT' ||
mb_substr($tag, 0, 15) == 'CALENDAR|STATUS'
)
{
$params = explode("|", $tag);
if (count($params) >= 5 && $params[4] == 'cancel')
$result = false;
else
$result = SITE_DIR.'mobile/calendar/view_event.php?event_id='.$params[2];
}
else if (mb_substr($tag, 0, 21) == 'FORUM|COMMENT_MENTION')
{
$params = explode("|", $tag);
$result = $link."&ENTITY_TYPE_ID=LOG_COMMENT&ENTITY_ID=".$params[2];
}
else if (mb_substr($tag, 0, 7) == 'VOTING|')
{
$params = explode("|", $tag);
$result = $link."&ENTITY_TYPE_ID=VOTING&ENTITY_ID=".$params[1];
}
else if (
mb_substr($tag, 0, 13) == 'PHOTO|COMMENT'
|| mb_substr($tag, 0, 12) == 'WIKI|COMMENT'
)
{
$params = explode("|", $tag);
$result = $link."&ENTITY_TYPE_ID=IBLOCK_ELEMENT&ENTITY_ID=".$params[2];
}
else if (
mb_substr($tag, 0, 34) == 'INTRANET_NEW_USER|COMMENT_MENTION|'
|| mb_substr($tag, 0, 22) == 'LISTS|COMMENT_MENTION|'
|| mb_substr($tag, 0, 27) == 'RATING_MENTION|LOG_COMMENT|'
)
{
$params = explode("|", $tag);
$result = $link."&ENTITY_TYPE_ID=LOG_COMMENT&ENTITY_ID=".$params[2];
}
else if (
mb_substr($tag, 0, 12) == 'SONET|EVENT|'
)
{
$params = explode("|", $tag);
$result = $link."&ENTITY_TYPE_ID=LOG_ENTRY&ENTITY_ID=".$params[2];
}
else if (
mb_substr($tag, 0, 11) == 'TASKS|TASK|' || mb_substr($tag, 0, 14) == 'TASKS|COMMENT|'
)
{
// the format is:
// for task modifications:
// TASKS|TASK|%task_id%|%user_id%
// for task comments:
// TASKS|TASK_COMMENT|%task_id%|%user_id%|%comment_id%
$params = explode("|", $tag);
if (!empty(($taskId = $params[2]) && Loader::includeModule('tasks')))
{
return self::getTaskLink($taskId);
}
// after task detail page supports reloading only by TASK_ID, use the following:
//$result = SITE_DIR.'mobile/tasks/snmrouter/?routePage=__ROUTE_PAGE__&USER_ID='.intval($GLOBALS['USER']->GetId());
//$uniqueParams = "{task_id:".intval($params[2]).", params_emitter: 'tasks_list'}";
//$unique = true;
}
else if (
mb_substr($tag, 0, 6) == 'ROBOT|'
)
{
$params = explode("|", $tag);
if ($params[1] == 'CRM' && isset($params[3]))
{
list($entityTypeName, $entityId) = explode('_', $params[3]);
$entityTypeName = mb_strtolower($entityTypeName);
$entityId = (int)$entityId;
if ($entityTypeName === 'lead' || $entityTypeName === 'deal')
{
$result = SITE_DIR.'mobile/crm/'.$entityTypeName.'/?page=view&'.$entityTypeName.'_id='.$entityId;
}
}
}
else if (
mb_strpos($tag, 'BIZPROC|TASK|') === 0
)
{
$params = explode("|", $tag);
if (isset($params[2]))
{
$result = SITE_DIR.'mobile/bp/detail.php?task_id='.(int)$params[2];
}
}
if ($result)
{
if ($unique)
{
$result = "BXMobileApp.PageManager.loadPageUnique({'url' : '".$result."','bx24ModernStyle' : true, 'data': ".$uniqueParams."});";
}
else
{
$result = "BXMobileApp.PageManager.loadPageBlank({url: '".$result."', 'unique': ".($unique? 'true': 'false').", 'bx24ModernStyle': true})";
}
}
return $result;
}