Esempio n. 1
0
function GetTO( $toProgramID, $chId ,$withWorks = false, $with_out_washing = false ){
	global $ar_Debug; 
	$time_start = microtime(1);

	$arTO = array();
	$arOrderTO = array();
	

	$arFilterTO = array( "IBLOCK_ID"=> IBLOCK_SK_CALC_WORKS_ID, "ACTIVE"=>"Y","PROPERTY_j_chassis" => $chId , "SECTION_ID"=>$toProgramID, "INCLUDE_SUBSECTIONS"=>"Y");
	$arSelfieldsTO = array( "IBLOCK_ID", "ID", "NAME","PROPERTY_j_chassis","PROPERTY_j_type_to");
	$arGroup = array("PROPERTY_j_type_to");

	$ar_Debug [ __METHOD__][]= $arFilterTO;

	$cache = new CPHPCache();
	$cache_time = 3600*-1;
	
	$cache_id = 'service_calc_'.implode("-",array( $toProgramID, $chId, (($with_out_washing === false)? "N":"Y") ));
	$cache_path = '/service/';

	if( $cache->InitCache( $cache_time, $cache_id , $cache_path ) ){
		$arTO = $cache->GetVars();
	}elseif( $cache->StartDataCache() ){


		$dbTOid = CIBlockElement::GetList ( $arOrderTO, $arFilterTO, $arGroup, false, $arSelfieldsTO );

		$ar_Debug [ __METHOD__][]=  $dbTOid->SelectedRowsCount();
		
		$arTOid = array();

		while( $obTO = $dbTOid -> GetNextElement() )
		{
			$tmp = array();
			$arWork = array();
			$tmp = $obTO -> GetFields();
		
			
			if ($withWorks) {
				$arWork = GetWorks ($toProgramID, $chId, $tmp["PROPERTY_J_TYPE_TO_VALUE"], $with_out_washing);
				$tmp["work"] = $arWork;
			}

			$arFilterTO = array ( "IBLOCK_ID"=> IBLOCK_SK_CALC_TO_TYPE_ID, "ACTIVE"=>"Y","ID" => $tmp["PROPERTY_J_TYPE_TO_VALUE"]  );
			$arSelfieldsTO = array ( "IBLOCK_ID", "ID", "NAME","PROPERTY_to_chassis","PROPERTY_to_mileage","PROPERTY_to_once","PROPERTY_to_once.XML_ID","SORT","PROPERTY_to_shift.XML_ID","PROPERTY_to_shift");

			$dbTO = CIBlockElement::GetList ( array(), $arFilterTO, false, false, $arSelfieldsTO );
			while( $obTO = $dbTO -> GetNextElement()){
				$tmp3 = array();
				$tmp3 = $obTO -> GetFields();
				$tmp["PROPERTY_TO_MILEAGE_VALUE"]= $tmp3["PROPERTY_TO_MILEAGE_VALUE"];
				
				$tmp["PROPERTY_TO_ONCE_VALUE"]   = $tmp3["PROPERTY_TO_ONCE_VALUE"];
				$tmp["PROPERTY_TO_ONCE_ENUM_ID"] = $tmp3["PROPERTY_TO_ONCE_ENUM_ID"];
				$tmp["PROPERTY_TO_ONCE_XML_ID"] = $tmp3["PROPERTY_TO_ONCE_XML_ID"];
				
				$tmp["PROPERTY_TO_SHIFT_VALUE"]  = $tmp3["PROPERTY_TO_SHIFT_VALUE"];
				$tmp["PROPERTY_TO_SHIFT_ENUM_ID"]= $tmp3["PROPERTY_TO_SHIFT_ENUM_ID"];
				$tmp["PROPERTY_TO_SHIFT_XML_ID"] = $tmp3["PROPERTY_TO_SHIFT_XML_ID"];
				
				$tmp["NAME"] = $tmp3["NAME"];
				$tmp["SORT"] = $tmp3["SORT"];
				$tmp["PROGRAM_TO_ID"] = $toProgramID;
				$arTO[ $tmp3["NAME"] ] = $tmp;
			}

		}
		
		usort ( $arTO, "SortByInnerSortField" );
		
	   $cache->EndDataCache( $arTO );
	}


$time_end = microtime(1);
$time = $time_end - $time_start;

global $ar_Debug; $ar_Debug["TIMES"][] = "GetTO время работы ". sprintf("%1.9f",$time) ." секунд\n";

	return $arTO;
}
Esempio n. 2
0
function GetTO( $chId ,$withWorks = false) {
$time_start = microtime(1);

	$arTO = array();
	$arOrderTO = array();

	$arFilterTO = array( "IBLOCK_ID"=> 10, "ACTIVE"=>"Y","PROPERTY_chassis" => $chId  );
	$arSelfieldsTO = array( "IBLOCK_ID", "ID", "NAME","PROPERTY_chassis","PROPERTY_type_to");
	$arGroup = array("PROPERTY_type_to");
	//$arGroup = false;

	$dbTOid = CIBlockElement::GetList ( $arOrderTO, $arFilterTO, $arGroup, false,$arSelfieldsTO );
	//	echo $dbTOid->SelectedRowsCOunt();
	$arTOid = array();

	while( $obTO = $dbTOid -> GetNextElement() )
	{
		$tmp = array();
		$arWork = array();
		$tmp = $obTO -> GetFields();
//print_r( $tmp );
		if ($withWorks) {
			//			$arWork = GetWorks ($chId, $tmp["ID"]);
			$arWork = GetWorks ($chId, $tmp["PROPERTY_TYPE_TO_VALUE"]);
			//echo "GetWorks ($chId, ". $tmp["PROPERTY_TYPE_TO_VALUE"].");";
			$tmp["work"] = $arWork;
		}

		$arFilterTO = array ( "IBLOCK_ID"=> 7, "ACTIVE"=>"Y","ID" => $tmp["PROPERTY_TYPE_TO_VALUE"]  );
		$arSelfieldsTO = array ( "IBLOCK_ID", "ID", "NAME","PROPERTY_chassis","PROPERTY_mileage","PROPERTY_once","PROPERTY_once.XML_ID");

		$dbTO = CIBlockElement::GetList ( $arOrderTO, $arFilterTO, false, false, $arSelfieldsTO );
		while( $obTO = $dbTO -> GetNextElement() )
		{
			$tmp3 = array();
			$tmp3 = $obTO -> GetFields();
			$tmp["PROPERTY_MILEAGE_VALUE"] = $tmp3["PROPERTY_MILEAGE_VALUE"];
			$tmp["PROPERTY_ONCE_VALUE"] = $tmp3["PROPERTY_ONCE_VALUE"];
			$tmp["PROPERTY_ONCE_ENUM_ID"] = $tmp3["PROPERTY_ONCE_ENUM_ID"];
			$tmp["NAME"] = $tmp3["NAME"];
			$arTO[ $tmp3["NAME"] ] = $tmp;
		}

	}

$time_end = microtime(1);
$time = $time_end - $time_start;

global $ar_Debug; $ar_Debug["TIMES"][] = "GetTO время работы ". sprintf("%1.9f",$time) ." секунд\n";

	return $arTO;
}