$field){$ref=(int)($field['conditionField']??0)-1;$show=true; if($ref>=0){$raw=$values['f'.$ref]??'';$value=is_scalar($raw)?trim(sanitize_textarea_field((string)$raw)):'';$match=trim($field['conditionValue']??'');$op=$field['conditionOperator']??'equals';$show=$ref<$i&&!empty($visible[$ref])&&($op==='not-empty'?$value!=='':($op==='not-equals'?$value!==$match:$value===$match));} $visible[$i]=$show; }return $visible; } public static function validate_file($file,string $label,bool $required) { if(!is_array($file)||($file['error']??UPLOAD_ERR_NO_FILE)===UPLOAD_ERR_NO_FILE){return $required?new \WP_Error('digibl_file',Language::text('Choose a file: ').$label,['status'=>400]):null;} if(($file['error']??1)!==UPLOAD_ERR_OK||!is_scalar($file['tmp_name']??null)||!is_scalar($file['name']??null)||!is_uploaded_file($file['tmp_name'])){return new \WP_Error('digibl_file',Language::text('The upload failed: ').$label,['status'=>400]);} if(filesize($file['tmp_name'])>2*1024*1024||filesize($file['tmp_name'])<1){return new \WP_Error('digibl_file',Language::text('Files must be no larger than 2 MB: ').$label,['status'=>400]);} if(!class_exists('finfo')){return new \WP_Error('digibl_file','File uploads require the PHP fileinfo extension.',['status'=>503]);} $name=sanitize_file_name($file['name']);$mime=(new \finfo(FILEINFO_MIME_TYPE))->file($file['tmp_name']);$ext=strtolower(pathinfo($name,PATHINFO_EXTENSION));$allow=['pdf'=>'application/pdf','jpg'=>'image/jpeg','jpeg'=>'image/jpeg','png'=>'image/png']; if(!isset($allow[$ext])||$mime!==$allow[$ext]){return new \WP_Error('digibl_file',Language::text('Choose a PDF, JPEG or PNG file: ').$label,['status'=>400]);} if(in_array($ext,['jpg','jpeg','png'],true)&&!@getimagesize($file['tmp_name'])){return new \WP_Error('digibl_file',Language::text('The image file is invalid: ').$label,['status'=>400]);} return ['name'=>$name,'tmp_name'=>$file['tmp_name']]; } public static function markup(array $p,string $id): string { $h='';$step=0;$titles=preg_split('/\r?\n/',$p['stepTitles']??'');$multi=count(array_unique(array_column($p['fields'],'step')))>1; foreach($p['fields'] as $i=>$field){$fieldStep=(int)($field['step']??1); if($fieldStep!==$step){if($step){$h.='';}$step=$fieldStep;$h.='
':''); } }