/** * @return array */ public function UploadContacts() { $oAccount = $this->getDefaultAccountFromParam(); if (!$this->oApiCapability->isPersonalContactsSupported($oAccount)) { throw new \ProjectCore\Exceptions\ClientException(\ProjectCore\Notifications::ContactsNotAllowed); } $aFileData = $this->getParamValue('FileData', null); $sAdditionalData = $this->getParamValue('AdditionalData', '{}'); $aAdditionalData = @json_decode($sAdditionalData, true); $sError = ''; $aResponse = array('ImportedCount' => 0, 'ParsedCount' => 0); if (is_array($aFileData)) { $sFileType = strtolower(\api_Utils::GetFileExtension($aFileData['name'])); $bIsCsvVcfExtension = $sFileType === 'csv' || $sFileType === 'vcf'; if ($bIsCsvVcfExtension) { $sSavedName = 'import-post-' . md5($aFileData['name'] . $aFileData['tmp_name']); if (is_resource($aFileData['tmp_name'])) { $this->ApiFileCache()->putFile($oAccount, $sSavedName, $aFileData['tmp_name']); } else { $this->ApiFileCache()->moveUploadedFile($oAccount, $sSavedName, $aFileData['tmp_name']); } if ($this->ApiFileCache()->isFileExists($oAccount, $sSavedName)) { $oApiContactsManager = $this->ApiContacts(); if ($oApiContactsManager) { $iParsedCount = 0; $iImportedCount = $oApiContactsManager->import($oAccount->IdUser, $sFileType, $this->ApiFileCache()->generateFullFilePath($oAccount, $sSavedName), $iParsedCount, $aAdditionalData['GroupId'], $aAdditionalData['IsShared']); } if (false !== $iImportedCount && -1 !== $iImportedCount) { $aResponse['ImportedCount'] = $iImportedCount; $aResponse['ParsedCount'] = $iParsedCount; } else { $sError = 'unknown'; } $this->ApiFileCache()->clear($oAccount, $sSavedName); } else { $sError = 'unknown'; } } else { throw new \ProjectCore\Exceptions\ClientException(\ProjectCore\Notifications::IncorrectFileExtension); } } else { $sError = 'unknown'; } if (0 < strlen($sError)) { $aResponse['Error'] = $sError; } return $this->DefaultResponse($oAccount, __FUNCTION__, $aResponse); }