Beispiel #1
0
	public static function AddLead($FORM_ID, $RESULT_ID, $arLink = null)
	{
		$FORM_ID = intval($FORM_ID);
		$RESULT_ID = intval($RESULT_ID);

		if ($FORM_ID <= 0 || $RESULT_ID <= 0)
			return false;

		if (!is_array($arLink))
		{
			$dbRes = CFormCrm::GetByFormID($FORM_ID);
			$arLink = $dbRes->Fetch();
		}

		if (!$arLink)
			return false;

		$arResultFields = array();
		$arAnswers = array();

		CFormResult::GetDataByID($RESULT_ID, array(), $arResultFields, $arAnswers);

		$ob = new CFormCrmSender($arLink['CRM_ID']);
		$arCrmF = $ob->GetFields();
		$arCrmFields = array();
		foreach ($arCrmF as $ar)
			$arCrmFields[$ar['ID']] = $ar;

		$arLeadFields = array();
		$dbRes = CFormCrm::GetFields($arLink['ID']);
		while ($arRes = $dbRes->Fetch())
		{
			if (intval($arRes['FIELD_ID']) > 0)
			{
				$bFound = false;
				foreach ($arAnswers as $sid => $arAnswer)
				{
					foreach ($arAnswer as $answer_id => $arAns)
					{
						if ($arAns['FIELD_ID'] == $arRes['FIELD_ID'])
						{
							$bFound = true;
							if ($arCrmFields[$arRes['CRM_FIELD']])
							{
								switch ($arCrmFields[$arRes['CRM_FIELD']]['TYPE'])
								{
									case 'enum':
									{
										if ($arAns['FIELD_TYPE'] == 'dropdown' || $arAns['FIELD_TYPE'] == 'checkbox' || $arAns['FIELD_TYPE'] == 'radio' || $arAns['FIELD_TYPE'] == 'multiselect')
										{
											$arLeadFields[$arRes['CRM_FIELD']] = $arAns['VALUE'];
										}
										else
										{
											$arLeadFields[$arRes['CRM_FIELD']] = $arAns['ANSWER_TEXT'];
										}
									}
									break;
									case 'boolean':
										$arLeadFields[$arRes['CRM_FIELD']] = 'Y';
									break;
									default:
										$arLeadFields[$arRes['CRM_FIELD']] = (strlen($arAns['USER_TEXT']) > 0
											? $arAns['USER_TEXT']
											: (
												strlen($arAns['ANSWER_TEXT']) > 0
												? $arAns['ANSWER_TEXT']
												: $arAns['VALUE']
											)
										);
								}
							}
						}
					}
				}

				if (!$bFound && $arCrmFields[$arRes['CRM_FIELD']] && $arCrmFields[$arRes['CRM_FIELD']]['TYPE'] == 'boolean')
				{
					$arLeadFields[$arRes['CRM_FIELD']] = 'N';
				}
			}
			elseif (strlen($arRes['FIELD_ALT']) > 0)
			{
				switch($arRes['FIELD_ALT'])
				{
					case 'RESULT_ID':
						$arLeadFields[$arRes['CRM_FIELD']] = $arResultFields['ID'];
					break;
					case 'FORM_SID':
						$arLeadFields[$arRes['CRM_FIELD']] = $arResultFields['SID'];
					break;
					case 'FORM_NAME':
						$arLeadFields[$arRes['CRM_FIELD']] = $arResultFields['NAME'];
					break;
					case 'SITE_ID':
						$arLeadFields[$arRes['CRM_FIELD']] = SITE_ID;
					break;
					case 'FORM_ALL':
						$arLeadFields[$arRes['CRM_FIELD']] = self::_getAllFormFields($FORM_ID, $RESULT_ID, $arAnswers);
					break;
					case 'FORM_ALL_HTML':
						$arLeadFields[$arRes['CRM_FIELD']] = self::_getAllFormFieldsHTML($FORM_ID, $RESULT_ID, $arAnswers);
					break;
				}
			}
		}

		$result = $ob->AddLead($arLeadFields);
		if ($result->code() != 201)
		{
			$GLOBALS['APPLICATION']->ThrowException($result->error(), $result->code());
			return false;
		}
		else
		{
			CFormResult::SetCRMFlag($RESULT_ID, 'Y');
			return $result->field('ID');
		}
	}
Beispiel #2
0
    echo BeginNote(), GetMessage('FORM_CRM_NOT_SAVED'), EndNote();
    ?>
</td>
</tr>
	<?php 
} else {
    $arCRMServers = array();
    $dbRes = CFormCrm::GetList(array('NAME' => 'ASC', 'ID' => 'ASC'), array());
    while ($arServer = $dbRes->Fetch()) {
        $arCRMServers[] = $arServer;
    }
    $dbRes = CFormCrm::GetByFormID($ID);
    $bLinkCreated = false;
    if ($arFormCrmLink = $dbRes->Fetch()) {
        $bLinkCreated = true;
        $dbRes = CFormCrm::GetFields($arFormCrmLink['ID']);
        $arFormCrmFields = array();
        while ($arFld = $dbRes->Fetch()) {
            $arFormCrmFields[] = $arFld;
        }
    }
    $dbRes = CFormField::GetList($ID, 'ALL', $by, $order, array(), $is_filtered);
    $arFormFields = array();
    while ($arFld = $dbRes->Fetch()) {
        $arFormFields[] = $arFld;
    }
    if (false && !$bLinkCreated) {
        ?>
	<tr>
		<td colspan="2" align="center"><?php 
        echo BeginNote(), GetMessage('FORM_CRM_NOT_SET'), EndNote();