CoolFace
Apppublic

kenken999/php

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
lookupsuggest.php148 linesDownload Raw Back to public
1<?php2@ini_set("display_errors","1");3@ini_set("display_startup_errors","1");4 5require_once("include/dbcommon.php");6require_once( getabspath( "classes/controls/Control.php" ) );7require_once( getabspath( "classes/controls/LookupField.php" ) );8require_once( getabspath( "classes/controls/ViewControlsContainer.php" ) );9 10header("Expires: Thu, 01 Jan 1970 00:00:01 GMT"); 11 12$shortTable = postvalue("table");13$table = GetTableByShort( $shortTable );14if( !$table )15	exit(0);16 17 18$pageType = postvalue("pageType");19$pageName = postvalue("page");20$field = postvalue('searchField');21 22if( !Security::userHasFieldPermissions( $table, $field, $pageType, $pageName, true ) )23	return;24 25$pSet = new ProjectSettings( $table, $pageType, $pageName );26 27// if suggest for dashboard search28if( $pSet->getEntityType() == titDASHBOARD )29{30	$dashboard = $table;31	$dashFields = $pSet->getDashboardSearchFields();32    $table = $dashFields[ $field ][0]["table"];33	$field = $dashFields[$field][0]["field"];34	35    $pSet = new ProjectSettings($table, $pageType, $pageName, $dashboard );36}37 38 39 40$cipherer = new RunnerCipherer($table);41 42$masterTable = postvalue('masterTable');43if ( $masterTable != "" && isset($_SESSION[ $masterTable . "_masterRecordData" ]) )44{45	$contextParams["masterData"] = $_SESSION[ $masterTable . "_masterRecordData" ];46}47 48$contextParams["data"] = my_json_decode( postvalue('data') );49RunnerContext::push( new RunnerContextItem( $pageType, $contextParams));50 51$isExistParent = postvalue('isExistParent');52$searchByLinkField = postvalue('searchByLinkField');53$parentCtrlsData = my_json_decode( postvalue('parentCtrlsData') );54 55$value = postvalue('searchFor');56$values = postvalue('multiselection') ? splitLookupValues($value) : array($value);57 58 59$lookupField = "";60if( $pSet->getEditFormat($field) == EDIT_FORMAT_LOOKUP_WIZARD )61{62	$LookupType = $pSet->getLookupType($field);63	if(  $LookupType == LT_LOOKUPTABLE || $LookupType == LT_QUERY )64	{65		$lookupField = $field;66	}67}68 69if( !$lookupField ) 70{71	$respObj = array('success' => false, 'data' => array());72	echo printJSON($respObj);73	exit();	74}75 76 77$lookupTable = $pSet->getLookupTable($lookupField);78$lookupPSet = null;79if( $pSet->getLookupType($field) == LT_QUERY )80	$lookupPSet = new ProjectSettings( $lookupTable );81 82$linkFieldName = $pSet->getLinkField($lookupField);83$displayFieldName = $pSet->getDisplayField( $field );84$linkAndDisplaySame = $displayFieldName == $linkFieldName;85 86//	create DsCommand87$dcDisplay = LookupField::makeLookupDataCommand( $field, $pSet, $parentCtrlsData, $value, true, $searchByLinkField, true, $searchByLinkField );88$dc = $dcDisplay["dc"];89$displayFieldAlias = $dcDisplay["displayField"];90 91$operation = $ajaxSearchStartsWith ? dsopSTART : dsopCONTAIN;92if( !$searchByLinkField ) {93	$displayFieldCondition = $pSet->getCustomDisplay( $field ) 94		? DataCondition::SQLIs( $displayFieldName, $operation, $value )95		: DataCondition::FieldIs( $displayFieldName, $operation, $value );96	97	// add display field filter98	$dc->filter = DataCondition::_And( array( 99		$dc->filter,100		$displayFieldCondition101	) );102} 103$dc->reccount = 200;104 105$dataSource = getLookupDataSource( $lookupField, $pSet );106$qResult = $dataSource->getList( $dc );107if( !$qResult ) {108	showError( $dataSource->lastError() );109}110 111$multiselect = $pSet->multiSelect( $lookupField );112$linkField = $pSet->getLinkField( $field );113$response = array();114while( $data = $qResult->fetchAssoc() ) 115{116	if( $LookupType == LT_QUERY && $pSet->isLookupUnique($lookupField) )117	{118		if( !isset($uniqueArray) )119			$uniqueArray = array();120			121		if( in_array($data[ $displayFieldAlias ], $uniqueArray) )122			continue;123		124		$uniqueArray[] = $data[ $displayFieldAlias ];125	}126	127	$data[ $linkField ] = $cipherer->DecryptField($lookupField, $data[ $linkField ]);128	if( $LookupType == LT_QUERY )129		$data[ $displayFieldAlias ] = $cipherer->DecryptField($displayFieldName, $data[ $displayFieldAlias ]);130	131	132	$displayedValue = $data[ $displayFieldAlias ];133	if ( in_array( $pSet->getViewFormat( $lookupField ), array(FORMAT_DATE_SHORT, FORMAT_DATE_LONG, FORMAT_DATE_TIME) ) )134	{			135		$ctrlData = array();136		$ctrlData[ $lookupField ] = $data[ $linkField ];137		$viewContainer = new ViewControlsContainer( $pSet, PAGE_LIST, null );		138		$displayedValue = $viewContainer->getControl( $lookupField )->getTextValue( $ctrlData );139	}		140	141	$response[] = $data[ $linkField ];142	$response[] = $displayedValue;143}144 145$respObj = array('success' => true, 'data' => array_slice($response, 0, 40));146echo printJSON($respObj);147exit();148?>