Exemple #1
0
 public function UnInstallDB()
 {
     $propertyTableName = Xpage\SeoFilter\PropertyTable::getTableName();
     Bitrix\Main\Application::getConnection()->dropTable($propertyTableName);
     $pageTableName = Xpage\SeoFilter\PageTable::getTableName();
     Bitrix\Main\Application::getConnection()->dropTable($pageTableName);
     $propertyValueAltTableName = Xpage\SeoFilter\PropertyValueAltTable::getTableName();
     Bitrix\Main\Application::getConnection()->dropTable($propertyValueAltTableName);
 }
Exemple #2
0
	function check_dbconn_settings()
	{
		global $DB;

		$conn = Bitrix\Main\Application::getInstance()->getConnectionPool()->getConnection();
		if ($DB->DBHost == $conn->getHost() && $DB->DBLogin == $conn->getLogin() && $DB->DBName == $conn->getDatabase())
			return true;

		echo "/bitrix/php_interface/dbconn.php\n".
		'$DBHost = "'.$DB->DBHost."\"\n".
		'$DBLogin = "******"\"\n".
		'$DBName = "'.$DB->DBName."\"\n".
		"\n".
		"/bitrix/.settings.php\n".
		'host = "'.$conn->getHost()."\"\n".
		'login = "******"\"\n".
		'database = "'.$conn->getDatabase()."\"\n";

		return $this->Result(false, GetMessage('SC_ERR_CONN_DIFFER'));
	}
Exemple #3
0
 function SearchDateChatMessage($searchDate, $chatId, $bTimeZone = true)
 {
     global $DB;
     $chatId = IntVal($chatId);
     $sqlHelper = Bitrix\Main\Application::getInstance()->getConnection()->getSqlHelper();
     try {
         $dateStart = \Bitrix\Main\Type\DateTime::createFromUserTime($searchDate);
         $sqlDateStart = $sqlHelper->getCharToDateFunction($dateStart->format("Y-m-d H:i:s"));
         $dateEnd = $dateStart->add('1 DAY');
         $sqlDateEnd = $sqlHelper->getCharToDateFunction($dateEnd->format("Y-m-d H:i:s"));
     } catch (\Bitrix\Main\ObjectException $e) {
         $GLOBALS["APPLICATION"]->ThrowException(GetMessage("IM_HISTORY_SEARCH_DATE_EMPTY"), "ERROR_SEARCH_EMPTY");
         return false;
     }
     $limitById = '';
     $ar = \CIMChat::GetRelationById($chatId, $this->user_id);
     if ($ar && $ar['START_ID'] > 0) {
         $limitById = 'AND M.ID >= ' . intval($ar['START_ID']);
     }
     if (!$bTimeZone) {
         CTimeZone::Disable();
     }
     $strSql = "\n\t\t\tSELECT\n\t\t\t\tM.ID,\n\t\t\t\tM.CHAT_ID,\n\t\t\t\tM.MESSAGE,\n\t\t\t\t" . $DB->DatetimeToTimestampFunction('M.DATE_CREATE') . " DATE_CREATE,\n\t\t\t\tM.AUTHOR_ID\n\t\t\tFROM b_im_relation R1\n\t\t\tINNER JOIN b_im_message M ON M.CHAT_ID = R1.CHAT_ID\n\t\t\tWHERE\n\t\t\t\tR1.USER_ID = " . $this->user_id . "\n\t\t\tAND R1.CHAT_ID = " . $chatId . "\n\t\t\tAND R1.MESSAGE_TYPE <> '" . IM_MESSAGE_PRIVATE . "'\n\t\t\tAND M.DATE_CREATE >= " . $sqlDateStart . " AND M.DATE_CREATE <=  " . $sqlDateEnd . "\n\t\t\t\t" . $limitById . "\n\t\t\tORDER BY M.DATE_CREATE DESC, M.ID DESC\n\t\t";
     if (!$bTimeZone) {
         CTimeZone::Enable();
     }
     $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     $arMessages = array();
     $arMessageId = array();
     $arUnreadMessage = array();
     $usersMessage = array();
     $CCTP = new CTextParser();
     $CCTP->MaxStringLen = 200;
     $CCTP->allow = array("HTML" => "N", "ANCHOR" => $this->bHideLink ? "N" : "Y", "BIU" => "Y", "IMG" => "N", "QUOTE" => "N", "CODE" => "N", "FONT" => "N", "LIST" => "N", "SMILES" => $this->bHideLink ? "N" : "Y", "NL2BR" => "Y", "VIDEO" => "N", "TABLE" => "N", "CUT_ANCHOR" => "N", "ALIGN" => "N");
     while ($arRes = $dbRes->Fetch()) {
         $arMessages[$arRes['ID']] = array('id' => $arRes['ID'], 'chatId' => $arRes['CHAT_ID'], 'senderId' => $arRes['AUTHOR_ID'], 'recipientId' => $arRes['CHAT_ID'], 'date' => $arRes['DATE_CREATE'], 'text' => $CCTP->convertText(htmlspecialcharsbx($arRes['MESSAGE'])));
         $usersMessage[$arRes['CHAT_ID']][] = $arRes['ID'];
         $arMessageId[] = $arRes['ID'];
     }
     $params = CIMMessageParam::Get($arMessageId);
     $arFiles = array();
     foreach ($params as $messageId => $param) {
         $arMessages[$messageId]['params'] = $param;
         if (isset($param['FILE_ID'])) {
             foreach ($param['FILE_ID'] as $fileId) {
                 $arFiles[$fileId] = $fileId;
             }
         }
     }
     $arMessageFiles = CIMDisk::GetFiles($chatId, $arFiles);
     return array('chatId' => $chatId, 'message' => $arMessages, 'unreadMessage' => $arUnreadMessage, 'usersMessage' => $usersMessage, 'files' => $arMessageFiles);
 }
 static function GetUserData($arParams = array())
 {
     $getDepartment = $arParams['DEPARTMENT'] == 'N' ? false : true;
     $getHrPhoto = $arParams['HR_PHOTO'] == 'Y' ? true : false;
     $getPhones = $arParams['PHONES'] == 'Y' ? true : false;
     $useCache = !$getPhones && $arParams['USE_CACHE'] == 'Y' ? true : false;
     $showOnline = $arParams['SHOW_ONLINE'] == 'N' ? false : true;
     $arFilter = array();
     if (isset($arParams['ID']) && is_array($arParams['ID']) && !empty($arParams['ID'])) {
         foreach ($arParams['ID'] as $key => $value) {
             if (intval($value) > 0) {
                 $arParams['ID'][$key] = intval($value);
             }
         }
         $arFilter['=ID'] = $arParams['ID'];
     } else {
         if (isset($arParams['ID']) && intval($arParams['ID']) > 0) {
             $arFilter['=ID'] = array(intval($arParams['ID']));
         }
     }
     if (empty($arFilter)) {
         return false;
     }
     $nameTemplate = self::GetUserNameTemplate(SITE_ID);
     $nameTemplateSite = CSite::GetNameFormat(false);
     $bIntranetEnable = false;
     if (IsModuleInstalled('intranet') && CModule::IncludeModule('intranet')) {
         $bIntranetEnable = true;
     }
     $bVoximplantEnable = IsModuleInstalled('voximplant');
     $bColorEnabled = IM\Color::isEnabled();
     if ($useCache) {
         global $USER;
         $obCache = new CPHPCache();
         $cache_ttl = intval($arParams['CACHE_TTL']);
         if ($cache_ttl <= 0) {
             $cache_ttl = defined("BX_COMP_MANAGED_CACHE") ? 18144000 : 1800;
         }
         $cache_id = 'user_data_v8_' . (is_object($USER) ? $USER->GetID() : 'AGENT') . '_' . implode('|', $arFilter['=ID']) . '_' . $nameTemplate . '_' . $nameTemplateSite . '_' . $getPhones . '_' . $getDepartment . '_' . $bIntranetEnable . '_' . $bVoximplantEnable . '_' . LANGUAGE_ID . '_' . $bColorEnabled;
         $cache_dir = '/bx/imc/userdata';
         if ($obCache->InitCache($cache_ttl, $cache_id, $cache_dir)) {
             $arCacheResult = $obCache->GetVars();
             if ($showOnline) {
                 $arOnline = CIMStatus::GetList(array('ID' => array_keys($arCacheResult['users']), 'GET_OFFLINE' => 'Y'));
             }
             foreach ($arCacheResult['users'] as $userId => $value) {
                 $arCacheResult['users'][$userId]['birthday'] = $bIntranetEnable ? CIntranetUtils::IsToday($arCacheResult['users'][$userId]['birthday']) : false;
                 if ($showOnline) {
                     $arCacheResult['users'][$userId]['status'] = isset($arOnline['users'][$userId]) ? $arOnline['users'][$userId]['status'] : 'offline';
                     $arCacheResult['users'][$userId]['idle'] = isset($arOnline['users'][$userId]) ? $arOnline['users'][$userId]['idle'] : 0;
                     $arCacheResult['users'][$userId]['mobileLastDate'] = isset($arOnline['users'][$userId]) ? $arOnline['users'][$userId]['mobileLastDate'] : 0;
                     if ($arOnline['users'][$userId]) {
                         $arCacheResult['users'][$userId]['color'] = $arOnline['users'][$userId]['color'];
                     }
                 }
                 if ($getHrPhoto && !isset($arCacheResult['hrphoto'])) {
                     $arPhotoHrTmp = CFile::ResizeImageGet($arCacheResult['source'][$userId]["PERSONAL_PHOTO"], array('width' => 200, 'height' => 200), BX_RESIZE_IMAGE_EXACT, false, false, true);
                     $arCacheResult['hrphoto'][$userId] = empty($arPhotoHrTmp['src']) ? '/bitrix/js/im/images/hidef-avatar-v3.png' : $arPhotoHrTmp['src'];
                     // TODO REMOVE DEFAULT
                 }
             }
             return $arCacheResult;
         }
     }
     $arSelect = array("ID", "LAST_NAME", "NAME", "LOGIN", "PERSONAL_PHOTO", "SECOND_NAME", "PERSONAL_BIRTHDAY", "WORK_POSITION", "PERSONAL_GENDER", "EXTERNAL_AUTH_ID");
     if ($getPhones) {
         $arSelect[] = 'WORK_PHONE';
         $arSelect[] = 'PERSONAL_PHONE';
         $arSelect[] = 'PERSONAL_MOBILE';
     }
     if ($bIntranetEnable) {
         $arSelect[] = 'UF_PHONE_INNER';
         $arSelect[] = 'UF_DEPARTMENT';
     }
     if ($bVoximplantEnable) {
         $arSelect[] = 'UF_VI_PHONE';
         $arSelect[] = 'UF_PHONE_INNER';
     }
     $arUsers = array();
     $arUserInGroup = array();
     $arPhones = array();
     $arWoUserInGroup = array();
     $arHrPhoto = array();
     $arSource = array();
     $query = new \Bitrix\Main\Entity\Query(\Bitrix\Main\UserTable::getEntity());
     $query->registerRuntimeField('', new \Bitrix\Main\Entity\ReferenceField('ref', 'Bitrix\\Im\\StatusTable', array('=this.ID' => 'ref.USER_ID')));
     $query->addSelect('ref.COLOR', 'COLOR')->addSelect('ref.STATUS', 'STATUS')->addSelect('ref.IDLE', 'IDLE')->addSelect('ref.MOBILE_LAST_DATE', 'MOBILE_LAST_DATE');
     $sago = Bitrix\Main\Application::getConnection()->getSqlHelper()->addSecondsToDateTime('-180');
     $query->registerRuntimeField('', new \Bitrix\Main\Entity\ExpressionField('IS_ONLINE_CUSTOM', 'CASE WHEN LAST_ACTIVITY_DATE > ' . $sago . ' THEN \'Y\' ELSE \'N\' END'));
     $query->addSelect('IS_ONLINE_CUSTOM');
     foreach ($arSelect as $value) {
         $query->addSelect($value);
     }
     foreach ($arFilter as $key => $value) {
         $query->addFilter($key, $value);
     }
     $resultQuery = $query->exec();
     global $USER;
     $arExtraUser = array();
     while ($arUser = $resultQuery->fetch()) {
         foreach ($arUser as $key => $value) {
             $arUser[$key] = !is_array($value) && !is_object($value) ? htmlspecialcharsEx($value) : $value;
         }
         $arExtraUser[$arUser["ID"]] = $arUser;
         $arSource[$arUser["ID"]]["PERSONAL_PHOTO"] = $arUser["PERSONAL_PHOTO"];
         $arPhotoTmp = CFile::ResizeImageGet($arUser["PERSONAL_PHOTO"], array('width' => 58, 'height' => 58), BX_RESIZE_IMAGE_EXACT, false, false, true);
         $color = self::GetUserColor($arUser["ID"], $arUser['PERSONAL_GENDER'] == 'M' ? 'M' : 'F');
         if (isset($arUser['COLOR']) && strlen($arUser['COLOR']) > 0) {
             $color = IM\Color::getColor($arUser['COLOR']);
         }
         if (!$color) {
             $color = self::GetUserColor($arUser["ID"], $arUser['PERSONAL_GENDER'] == 'M' ? 'M' : 'F');
         }
         $arUsers[$arUser["ID"]] = array('id' => $arUser["ID"], 'name' => CUser::FormatName($nameTemplateSite, $arUser, true, false), 'nameList' => CUser::FormatName($nameTemplate, $arUser, true, false), 'workPosition' => $arUser['WORK_POSITION'], 'color' => $color, 'avatar' => empty($arPhotoTmp['src']) ? '/bitrix/js/im/images/blank.gif' : $arPhotoTmp['src'], 'status' => 'offline', 'birthday' => $arUser['PERSONAL_BIRTHDAY'], 'gender' => $arUser['PERSONAL_GENDER'] == 'F' ? 'F' : 'M', 'phoneDevice' => $bVoximplantEnable && $arUser['UF_VI_PHONE'] == 'Y', 'extranet' => self::IsExtranet($arUser), 'network' => $arUser['EXTERNAL_AUTH_ID'] == self::NETWORK_AUTH_ID, 'profile' => CIMContactList::GetUserPath($arUser["ID"]));
         if ($getDepartment && is_array($arUser["UF_DEPARTMENT"]) && !empty($arUser["UF_DEPARTMENT"])) {
             foreach ($arUser["UF_DEPARTMENT"] as $dep_id) {
                 if (isset($arUserInGroup[$dep_id])) {
                     $arUserInGroup[$dep_id]['users'][] = $arUser["ID"];
                 } else {
                     $arUserInGroup[$dep_id] = array('id' => $dep_id, 'users' => array($arUser["ID"]));
                 }
             }
             if (isset($arWoUserInGroup['all'])) {
                 $arWoUserInGroup['all']['users'][] = $arUser["ID"];
             } else {
                 $arWoUserInGroup['all'] = array('id' => 'all', 'users' => array($arUser["ID"]));
             }
         }
         if ($getHrPhoto) {
             $arPhotoHrTmp = CFile::ResizeImageGet($arUser["PERSONAL_PHOTO"], array('width' => 200, 'height' => 200), BX_RESIZE_IMAGE_EXACT, false, false, true);
             $arHrPhoto[$arUser["ID"]] = empty($arPhotoHrTmp['src']) ? '/bitrix/js/im/images/hidef-avatar-v3.png' : $arPhotoHrTmp['src'];
             // TODO REMOVE DEFAULT
         }
         if ($getPhones) {
             if (CModule::IncludeModule('voximplant')) {
                 $result = CVoxImplantPhone::Normalize($arUser["WORK_PHONE"]);
                 if ($result) {
                     $arPhones[$arUser["ID"]]['WORK_PHONE'] = $arUser['WORK_PHONE'];
                 }
                 $result = CVoxImplantPhone::Normalize($arUser["PERSONAL_MOBILE"]);
                 if ($result) {
                     $arPhones[$arUser["ID"]]['PERSONAL_MOBILE'] = $arUser['PERSONAL_MOBILE'];
                 }
                 $result = CVoxImplantPhone::Normalize($arUser["PERSONAL_PHONE"]);
                 if ($result) {
                     $arPhones[$arUser["ID"]]['PERSONAL_PHONE'] = $arUser['PERSONAL_PHONE'];
                 }
                 $result = preg_replace("/[^0-9\\#\\*]/i", "", $arUser["UF_PHONE_INNER"]);
                 if ($result) {
                     $arPhones[$arUser["ID"]]['INNER_PHONE'] = $result;
                 }
             } else {
                 $arPhones[$arUser["ID"]]['WORK_PHONE'] = $arUser['WORK_PHONE'];
                 $arPhones[$arUser["ID"]]['PERSONAL_MOBILE'] = $arUser['PERSONAL_MOBILE'];
                 $arPhones[$arUser["ID"]]['PERSONAL_PHONE'] = $arUser['PERSONAL_PHONE'];
             }
         }
     }
     foreach ($arUsers as $userId => $arUser) {
         $arUsers[$userId]['birthday'] = $bIntranetEnable ? CIntranetUtils::IsToday($arUsers[$userId]['birthday']) : false;
         $arUsers[$userId]['status'] = $arExtraUser[$userId]['IS_ONLINE_CUSTOM'] == 'Y' ? $arExtraUser[$userId]['STATUS'] : 'offline';
         $arUsers[$userId]['idle'] = $arExtraUser[$userId]['IS_ONLINE_CUSTOM'] == 'Y' && is_object($arExtraUser[$userId]['IDLE']) ? $arExtraUser[$userId]['IDLE']->getTimestamp() : 0;
         $arUsers[$userId]['mobileLastDate'] = $arExtraUser[$userId]['IS_ONLINE_CUSTOM'] == 'Y' && is_object($arExtraUser[$userId]['MOBILE_LAST_DATE']) ? $arExtraUser[$userId]['MOBILE_LAST_DATE']->getTimestamp() : 0;
     }
     $result = array('users' => $arUsers, 'hrphoto' => $arHrPhoto, 'userInGroup' => $arUserInGroup, 'woUserInGroup' => $arWoUserInGroup, 'phones' => $arPhones, 'source' => $arSource);
     if ($useCache) {
         $cacheTag = array();
         if ($obCache->StartDataCache()) {
             if (defined("BX_COMP_MANAGED_CACHE")) {
                 global $CACHE_MANAGER;
                 $CACHE_MANAGER->StartTagCache($cache_dir);
                 $CACHE_MANAGER->RegisterTag("IM_CONTACT_LIST");
                 if (is_array($arParams['ID'])) {
                     foreach ($arParams['ID'] as $id) {
                         $tag = 'USER_NAME_' . intval($id);
                         if (!in_array($tag, $cacheTag)) {
                             $cacheTag[] = $tag;
                             $CACHE_MANAGER->RegisterTag($tag);
                         }
                     }
                 } elseif (isset($arParams['ID']) && intval($arParams['ID']) > 0) {
                     $tag = 'USER_NAME_' . intval($arParams['ID']);
                     $CACHE_MANAGER->RegisterTag($tag);
                 }
                 $CACHE_MANAGER->EndTagCache();
             }
             $obCache->EndDataCache($result);
             unset($cacheTag);
         }
     }
     unset($result['source']);
     return $result;
 }
Exemple #5
0
 public static function GetDeviceInfo($userId, $appId = 'Bitrix24')
 {
     $result = array();
     if (is_array($userId)) {
         foreach ($userId as $key => $id) {
             $id = intval($id);
             if ($id > 0) {
                 $result[$id] = array('mode' => self::RECORD_NOT_FOUND, 'device' => array());
             }
         }
     } else {
         if (intval($userId) > 0) {
             $result[intval($userId)] = array('mode' => self::RECORD_NOT_FOUND, 'device' => array());
         }
     }
     if (empty($result)) {
         return false;
     }
     $imInclude = false;
     if (CModule::IncludeModule('im')) {
         $imInclude = true;
     }
     $query = new \Bitrix\Main\Entity\Query(\Bitrix\Main\UserTable::getEntity());
     $sago = Bitrix\Main\Application::getConnection()->getSqlHelper()->addSecondsToDateTime('-180');
     $query->registerRuntimeField('', new \Bitrix\Main\Entity\ExpressionField('IS_ONLINE_CUSTOM', 'CASE WHEN LAST_ACTIVITY_DATE > ' . $sago . ' THEN \'Y\' ELSE \'N\' END'));
     $query->addSelect('ID')->addSelect('EMAIL')->addSelect('IS_ONLINE_CUSTOM');
     if ($imInclude) {
         $query->registerRuntimeField('', new \Bitrix\Main\Entity\ReferenceField('im', 'Bitrix\\Im\\StatusTable', array('=this.ID' => 'ref.USER_ID')));
         $query->addSelect('im.IDLE', 'IDLE')->addSelect('im.MOBILE_LAST_DATE', 'MOBILE_LAST_DATE');
     }
     $query->registerRuntimeField('', new \Bitrix\Main\Entity\ReferenceField('push', 'Bitrix\\Pull\\PushTable', array('=this.ID' => 'ref.USER_ID')));
     $query->registerRuntimeField('', new \Bitrix\Main\Entity\ExpressionField('HAS_MOBILE', 'CASE WHEN main_user_push.USER_ID > 0 THEN \'Y\' ELSE \'N\' END'));
     $query->addSelect('HAS_MOBILE')->addSelect('push.APP_ID', 'APP_ID')->addSelect('push.UNIQUE_HASH', 'UNIQUE_HASH')->addSelect('push.DEVICE_TYPE', 'DEVICE_TYPE')->addSelect('push.DEVICE_TOKEN', 'DEVICE_TOKEN');
     $query->addFilter('=ID', array_keys($result));
     $queryResult = $query->exec();
     while ($user = $queryResult->fetch()) {
         $uniqueHashes[] = CPullPush::getUniqueHash($user["ID"], $appId);
         $uniqueHashes[] = CPullPush::getUniqueHash($user["ID"], $appId . "_bxdev");
         if (in_array($user['UNIQUE_HASH'], $uniqueHashes)) {
             $result[$user['ID']]['device'][] = array('APP_ID' => $user['APP_ID'], 'USER_ID' => $user['ID'], 'DEVICE_TYPE' => $user['DEVICE_TYPE'], 'DEVICE_TOKEN' => $user['DEVICE_TOKEN']);
             //$result[$user['ID']]['email'] = $user['EMAIL'];
         } else {
             continue;
         }
         if ($result[$user['ID']]['mode'] != self::RECORD_NOT_FOUND) {
             continue;
         }
         $isMobile = false;
         $isOnline = false;
         $isDesktop = false;
         $isDesktopIdle = false;
         if ($user['HAS_MOBILE'] == 'N') {
             $result[$user['ID']]['mode'] = self::RECORD_NOT_FOUND;
             $result[$user['ID']]['device'] = array();
             continue;
         }
         if ($user['IS_ONLINE_CUSTOM'] == 'Y') {
             $isOnline = true;
         }
         if ($imInclude) {
             $mobileLastDate = 0;
             if (is_object($user['MOBILE_LAST_DATE'])) {
                 $mobileLastDate = $user['MOBILE_LAST_DATE']->getTimestamp();
             }
             if ($mobileLastDate > 0 && $mobileLastDate + 180 > time()) {
                 $isMobile = true;
             }
             $isDesktop = CIMMessenger::CheckDesktopStatusOnline($user['ID']);
             if ($isDesktop && $isOnline && is_object($user['IDLE'])) {
                 if ($user['IDLE']->getTimestamp() > 0) {
                     $isDesktopIdle = true;
                 }
             }
         }
         $status = self::SEND_IMMEDIATELY;
         if ($isMobile) {
             $status = self::SEND_IMMEDIATELY;
         } else {
             if ($isOnline) {
                 $status = self::SEND_DEFERRED;
                 if ($isDesktop) {
                     $status = self::SEND_SKIP;
                     if ($isDesktopIdle) {
                         $status = self::SEND_IMMEDIATELY;
                     } else {
                         $result[$user['ID']]['device'] = array();
                     }
                 } else {
                     $result[$user['ID']]['device'] = array();
                 }
             }
         }
         $result[$user['ID']]['mode'] = $status;
     }
     return $result;
 }
Exemple #6
0
 public static function GetList($arParams = array())
 {
     if (!is_array($arParams)) {
         $arParams = array();
     }
     $arID = array();
     if (isset($arParams['ID']) && is_array($arParams['ID']) && !empty($arParams['ID'])) {
         foreach ($arParams['ID'] as $key => $value) {
             $arID[] = intval($value);
         }
     } else {
         if (isset($arParams['ID']) && intval($arParams['ID']) > 0) {
             $arID[] = intval($arParams['ID']);
         }
     }
     global $USER;
     if (!isset($arParams['ID']) && !IsModuleInstalled('intranet') && is_object($USER)) {
         $arID[] = $USER->GetID();
         if (CModule::IncludeModule('socialnetwork') && CSocNetUser::IsFriendsAllowed()) {
             $dbFriends = CSocNetUserRelations::GetList(array(), array("USER_ID" => $USER->GetID(), "RELATION" => SONET_RELATIONS_FRIEND), false, false, array("ID", "FIRST_USER_ID", "SECOND_USER_ID"));
             if ($dbFriends) {
                 while ($arFriends = $dbFriends->GetNext(true, false)) {
                     $friendId = $pref = IntVal($USER->GetID()) == $arFriends["FIRST_USER_ID"] ? $arFriends["SECOND_USER_ID"] : $arFriends["FIRST_USER_ID"];
                     $arID[] = $friendId;
                 }
             }
         }
     }
     $enable = self::Enable();
     $arUsers = array();
     $query = new \Bitrix\Main\Entity\Query(\Bitrix\Main\UserTable::getEntity());
     if ($enable) {
         $query->registerRuntimeField('', new \Bitrix\Main\Entity\ReferenceField('ref', 'Bitrix\\Im\\StatusTable', array('=this.ID' => 'ref.USER_ID')));
     }
     $query->addSelect('ID');
     if ($enable) {
         $query->addSelect('ref.STATUS', 'STATUS')->addSelect('ref.IDLE', 'IDLE');
     }
     $query->addFilter('>LAST_ACTIVITY_DATE', new \Bitrix\Main\DB\SqlExpression(Bitrix\Main\Application::getConnection()->getSqlHelper()->addSecondsToDateTime('-180')));
     $result = $query->exec();
     while ($arUser = $result->fetch()) {
         if (!empty($arID) && !in_array($arUser["ID"], $arID)) {
             continue;
         }
         $arUsers[$arUser["ID"]] = array('id' => $arUser["ID"], 'status' => $enable && in_array($arUser['STATUS'], self::$AVAILABLE_STATUSES) ? $arUser['STATUS'] : 'online', 'idle' => $enable && is_object($arUser['IDLE']) ? $arUser['IDLE']->getTimestamp() : 0);
     }
     return array('users' => $arUsers);
 }
Exemple #7
0
 /** @deprecated */
 public static function migrateToBusinessValues()
 {
     $allPersonTypes = BusinessValue::getPersonTypes(true);
     Bitrix\Main\Application::getConnection()->query('DELETE FROM b_sale_bizval_code_1C');
     $result = Bitrix\Main\Application::getConnection()->query('SELECT * FROM b_sale_export');
     while ($row = $result->fetch()) {
         if (!(($map1C = unserialize($row['VARS'])) && is_array($map1C))) {
             continue;
         }
         $personTypeId = $row['PERSON_TYPE_ID'];
         $domain = $map1C['IS_FIZ'] === 'Y' ? BusinessValue::INDIVIDUAL_DOMAIN : BusinessValue::ENTITY_DOMAIN;
         unset($map1C['IS_FIZ']);
         if (!isset($allPersonTypes[$personTypeId])) {
             self::logError($row['ID'], 'Undefined person type "' . $personTypeId . '"');
             continue;
         } elseif (isset($allPersonTypes[$personTypeId]['DOMAIN'])) {
             if ($allPersonTypes[$personTypeId]['DOMAIN'] !== $domain) {
                 self::logError($row['ID'], 'Person type "' . $personTypeId . '" domain is "' . $allPersonTypes[$personTypeId]['DOMAIN'] . '", but in 1C is "' . $domain . '"');
                 continue;
             }
         } else {
             $r = Bitrix\Sale\Internals\BusinessValuePersonDomainTable::add(array('PERSON_TYPE_ID' => $personTypeId, 'DOMAIN' => $domain));
             if ($r->isSuccess()) {
                 $allPersonTypes[$personTypeId]['DOMAIN'] = $domain;
                 BusinessValue::getPersonTypes(true, $allPersonTypes);
             } else {
                 self::logError($row['ID'], 'Unable to set person type "' . $personTypeId . '" domain', $r);
                 continue;
             }
         }
         self::setMap($personTypeId, $map1C, 'Migrate:' . $personTypeId . ':' . $row['ID']);
     }
 }
Exemple #8
0
 public static function GetList($arParams = array())
 {
     if (!is_array($arParams)) {
         $arParams = array();
     }
     $arID = array();
     if (isset($arParams['ID']) && is_array($arParams['ID']) && !empty($arParams['ID'])) {
         foreach ($arParams['ID'] as $key => $value) {
             $arID[] = intval($value);
         }
     } else {
         if (isset($arParams['ID']) && intval($arParams['ID']) > 0) {
             $arID[] = intval($arParams['ID']);
         }
     }
     $arParams['GET_OFFLINE'] = !empty($arID) && isset($arParams['GET_OFFLINE']) && $arParams['GET_OFFLINE'] == 'Y' ? 'Y' : 'N';
     global $USER;
     $userId = is_object($USER) ? intval($USER->GetID()) : 0;
     $bBusShowAll = !IsModuleInstalled('intranet') && COption::GetOptionInt('im', 'contact_list_show_all_bus');
     if (!$bBusShowAll && !isset($arParams['ID']) && $userId > 0 && !isset($arParams['SKIP_CHECK'])) {
         if (isset(self::$FRIENDS_USERS[$userId])) {
             $arID = self::$FRIENDS_USERS[$userId];
         } else {
             if (CModule::IncludeModule('socialnetwork') && CSocNetUser::IsFriendsAllowed()) {
                 $arID = array($userId);
                 $dbFriends = CSocNetUserRelations::GetList(array(), array("USER_ID" => $userId, "RELATION" => SONET_RELATIONS_FRIEND), false, false, array("ID", "FIRST_USER_ID", "SECOND_USER_ID"));
                 if ($dbFriends) {
                     while ($arFriends = $dbFriends->Fetch()) {
                         $arID[] = $userId == $arFriends["FIRST_USER_ID"] ? $arFriends["SECOND_USER_ID"] : $arFriends["FIRST_USER_ID"];
                     }
                 }
                 self::$FRIENDS_USERS[$userId] = $arID;
             }
         }
     }
     $arUsers = array();
     if (self::$ONLINE_USERS && $arParams['GET_OFFLINE'] == 'N') {
         $arUsers = self::$ONLINE_USERS;
     } else {
         if (!self::$ONLINE_USERS || $arParams['GET_OFFLINE'] == 'Y') {
             $enable = self::Enable();
             $arUsers = array();
             $query = new \Bitrix\Main\Entity\Query(\Bitrix\Main\UserTable::getEntity());
             $query->registerRuntimeField('', new \Bitrix\Main\Entity\ReferenceField('ref', 'Bitrix\\Im\\StatusTable', array('=this.ID' => 'ref.USER_ID')));
             $query->addSelect('ID')->addSelect('ref.COLOR', 'COLOR')->addSelect('PERSONAL_GENDER');
             if ($enable) {
                 $query->addSelect('ref.STATUS', 'STATUS')->addSelect('ref.IDLE', 'IDLE')->addSelect('ref.MOBILE_LAST_DATE', 'MOBILE_LAST_DATE');
             }
             if ($arParams['GET_OFFLINE'] == 'N') {
                 $query->addFilter('>LAST_ACTIVITY_DATE', new \Bitrix\Main\DB\SqlExpression(Bitrix\Main\Application::getConnection()->getSqlHelper()->addSecondsToDateTime('-180')));
             } else {
                 $sago = Bitrix\Main\Application::getConnection()->getSqlHelper()->addSecondsToDateTime('-180');
                 $query->registerRuntimeField('', new \Bitrix\Main\Entity\ExpressionField('IS_ONLINE_CUSTOM', 'CASE WHEN LAST_ACTIVITY_DATE > ' . $sago . ' THEN \'Y\' ELSE \'N\' END'));
                 $query->addSelect('IS_ONLINE_CUSTOM');
                 $query->addFilter('=ID', $arID);
             }
             $result = $query->exec();
             while ($arUser = $result->fetch()) {
                 $color = null;
                 if (isset($arUser['COLOR']) && strlen($arUser['COLOR']) > 0) {
                     $color = IM\Color::getColor($arUser['COLOR']);
                 }
                 if (!$color) {
                     $color = \CIMContactList::GetUserColor($arUser["ID"], $arUser['PERSONAL_GENDER'] == 'M' ? 'M' : 'F');
                 }
                 $arUsers[$arUser["ID"]] = array('id' => $arUser["ID"], 'status' => $enable && in_array($arUser['STATUS'], self::$AVAILABLE_STATUSES) ? $arUser['STATUS'] : 'online', 'color' => $color, 'idle' => $enable && is_object($arUser['IDLE']) ? $arUser['IDLE']->getTimestamp() : 0, 'mobileLastDate' => $enable && is_object($arUser['MOBILE_LAST_DATE']) ? $arUser['MOBILE_LAST_DATE']->getTimestamp() : 0);
                 if ($arParams['GET_OFFLINE'] == 'Y' && $arUser['IS_ONLINE_CUSTOM'] == 'N') {
                     $arUsers[$arUser["ID"]]['status'] = 'offline';
                     $arUsers[$arUser["ID"]]['idle'] = 0;
                     $arUsers[$arUser["ID"]]['mobileLastDate'] = 0;
                 }
             }
             if ($arParams['GET_OFFLINE'] == 'N') {
                 self::$ONLINE_USERS = $arUsers;
             }
         }
     }
     $arResult = array();
     if (empty($arID)) {
         $arResult = $arUsers;
     } else {
         foreach ($arID as $userId) {
             if (isset($arUsers[$userId])) {
                 $arResult[$userId] = $arUsers[$userId];
             }
         }
     }
     return array('users' => $arResult);
 }
Exemple #9
0
 public static function GetLastActivityDateAgo()
 {
     $lastActivityDate = 180;
     if (IsModuleInstalled('bitrix24')) {
         $lastActivityDate = 1440;
     }
     return Bitrix\Main\Application::getConnection()->getSqlHelper()->addSecondsToDateTime('(-' . $lastActivityDate . ')');
 }
Exemple #10
0
         }
         if (!$tasks['sale_status_none']) {
             $result = Bitrix\Main\TaskTable::add(array('MODULE_ID' => 'sale', 'BINDING' => 'status', 'NAME' => 'sale_status_none', 'SYS' => 'Y', 'LETTER' => 'D'));
             if ($result->isSuccess()) {
                 $tasks['sale_status_none'] = $result->getId();
             }
         }
         if (!$tasks['sale_status_all']) {
             $result = Bitrix\Main\TaskTable::add(array('MODULE_ID' => 'sale', 'BINDING' => 'status', 'NAME' => 'sale_status_all', 'SYS' => 'Y', 'LETTER' => 'X'));
             if ($result->isSuccess()) {
                 $tasks['sale_status_all'] = $result->getId();
             }
         }
         if ($taskId = $tasks['sale_status_all']) {
             $taskOperations = array();
             $result = Bitrix\Main\Application::getConnection()->query('SELECT * FROM b_task_operation WHERE TASK_ID = ' . $taskId);
             while ($row = $result->fetch()) {
                 $taskOperations[$row['OPERATION_ID']] = true;
             }
             foreach ($operations as $operationId) {
                 if ($operationId && !$taskOperations[$operationId]) {
                     Bitrix\Main\TaskOperationTable::add(array('TASK_ID' => $taskId, 'OPERATION_ID' => $operationId));
                 }
             }
         }
     });
 } catch (Exception $e) {
     \CEventLog::Add(array("SEVERITY" => "ERROR", "AUDIT_TYPE_ID" => "SALE_CONVERTER_ERROR", "MODULE_ID" => "sale", "ITEM_ID" => "Status::install", "DESCRIPTION" => $e->getMessage()));
 }
 try {
     if ($DB->Query('SELECT SIZE1 FROM b_sale_order_props WHERE 1=0', true)) {
Exemple #11
0
$this->addExternalCss('/bitrix/components/bitrix/sale.location.selector.steps/templates/.default/style.css');
$APPLICATION->SetAdditionalCSS('/bitrix/css/main/themes/' . $arParams['TEMPLATE_THEME'] . '/style.css', true);
$APPLICATION->SetAdditionalCSS($templateFolder . '/style.css', true);
$this->addExternalJs($templateFolder . '/order_ajax.js');
\Bitrix\Sale\PropertyValueCollection::initJs();
$this->addExternalJs($templateFolder . '/script.js');
$this->addExternalJs($scheme . '://api-maps.yandex.ru/2.1.34/?load=package.full&lang=' . $locale);
?>
<NOSCRIPT>
	<div style="color:red"><?php 
echo Loc::getMessage("SOA_NO_JS");
?>
</div>
</NOSCRIPT>
<?php 
$context = Bitrix\Main\Application::getInstance()->getContext();
if (strlen($context->getRequest()->get('ORDER_ID')) > 0) {
    include $context->getServer()->getDocumentRoot() . $templateFolder . "/confirm.php";
} elseif ($arParams["DISABLE_BASKET_REDIRECT"] == 'Y' && $arResult["SHOW_EMPTY_BASKET"]) {
    include $context->getServer()->getDocumentRoot() . $templateFolder . "/empty.php";
} else {
    $hideDelivery = empty($arResult["DELIVERY"]);
    ?>
<form action="<?php 
    echo $APPLICATION->GetCurPage();
    ?>
" method="POST" name="ORDER_FORM" id="bx-soa-order-form" enctype="multipart/form-data">
<?php 
    echo bitrix_sessid_post();
    if (strlen($arResult["PREPAY_ADIT_FIELDS"]) > 0) {
        echo $arResult["PREPAY_ADIT_FIELDS"];
Exemple #12
0
 /**
  * Attaching files from the disk to the iblock element
  * @param int $iblockId
  * @param int $elementId
  * @param int $fileId
  * @param array $currentValues Old property values attached id
  * @return int Attached Id
  */
 public static function attachFileDisk($iblockId, $elementId, $fileId, $currentValues)
 {
     if (!CModule::includeModule('disk')) {
         return null;
     }
     $elementId = (int) $elementId;
     if (!$elementId) {
         return null;
     }
     $userFieldManager = Bitrix\Disk\Driver::getInstance()->getUserFieldManager();
     list($connectorClass, $moduleId) = $userFieldManager->getConnectorDataByEntityType('lists_element');
     $filter = array('OBJECT_ID' => $fileId, '=ENTITY_TYPE' => $connectorClass, '=ENTITY_ID' => $elementId, '=MODULE_ID' => $moduleId);
     $listAttachedModel = Bitrix\Disk\AttachedObject::getModelList(array("filter" => $filter));
     if (!empty($listAttachedModel)) {
         foreach ($listAttachedModel as $attachedModel) {
             if (in_array($attachedModel->getId(), $currentValues)) {
                 return $attachedModel->getId();
             }
         }
     }
     $errorCollection = new Bitrix\Disk\Internals\Error\ErrorCollection();
     $fileModel = Bitrix\Disk\File::loadById($fileId, array('STORAGE'));
     if (!$fileModel) {
         return null;
     }
     global $USER;
     if ($USER instanceof CUser && $USER->getId()) {
         $userId = $USER->getId();
     } else {
         $userId = Bitrix\Disk\SystemUser::SYSTEM_USER_ID;
     }
     $attachedModel = Bitrix\Disk\AttachedObject::add(array('MODULE_ID' => $moduleId, 'OBJECT_ID' => $fileModel->getId(), 'ENTITY_ID' => $elementId, 'ENTITY_TYPE' => $connectorClass, 'IS_EDITABLE' => 1, 'ALLOW_EDIT' => (int) (int) Bitrix\Main\Application::getInstance()->getContext()->getRequest()->getPost('DISK_FILE_' . $iblockId . '_DISK_ATTACHED_OBJECT_ALLOW_EDIT'), 'CREATED_BY' => $userId), $errorCollection);
     if (!$attachedModel || $errorCollection->hasErrors()) {
         return null;
     }
     return $attachedModel->getId();
 }
Exemple #13
0
$record = $recordset->fetch();
$sitePriceLicense = $record["VALUE"];
} else if($siteTypeLicense==3){
$connection = Bitrix\Main\Application::getConnection();
$sql = "SELECT VALUE FROM b_iblock_element_property WHERE IBLOCK_ELEMENT_ID = 115 AND ID = 566 LIMIT 1"; 
$recordset = $connection->query($sql);
$record = $recordset->fetch();
$sitePriceLicense = $record["VALUE"];
} else if($siteTypeLicense==4){
$connection = Bitrix\Main\Application::getConnection();
$sql = "SELECT VALUE FROM b_iblock_element_property WHERE IBLOCK_ELEMENT_ID = 115 AND ID = 567 LIMIT 1"; 
$recordset = $connection->query($sql);
$record = $recordset->fetch();
$sitePriceLicense = $record["VALUE"];
} else if($siteTypeLicense==5){
$connection = Bitrix\Main\Application::getConnection();
$sql = "SELECT VALUE FROM b_iblock_element_property WHERE IBLOCK_ELEMENT_ID = 115 AND ID = 568 LIMIT 1"; 
$recordset = $connection->query($sql);
$record = $recordset->fetch();
$sitePriceLicense = $record["VALUE"];
} 

$sitePriceAction = $_SESSION["CUSTOM_PRICE"]+$sitePriceTarif+$sitePriceLicense; 

$siteStartPrice=$sitePriceAction+$siteActionSeo+$siteActionReklama+$siteActionPromo;
$siteStartPrice=round($siteStartPrice, -4);
$prcPrice=$sitePriceAction-(($sitePriceAction/100)*10); //Стоимость сайта со скидкой 10%
$prcPrice=round($prcPrice, -4);
$prcPromo=$siteActionReklama+$siteActionPromo;
$prcPromo=$prcPromo-(($prcPromo/100)*15); //Стоимость рекламы и продвижения со скидкой 15%
$prcPromo=round($prcPromo, -4);