Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-conte.../plugins/ninja-fo.../includes/Routes
File: Submissions.php
$filePath = $export->getFilePath();
[500] Fix | Delete
$response =[
[501] Fix | Delete
'formId'=>$formId,
[502] Fix | Delete
'downloadUrl'=>$downloadUrl,
[503] Fix | Delete
'filePath'=>$filePath
[504] Fix | Delete
];
[505] Fix | Delete
[506] Fix | Delete
return $response;
[507] Fix | Delete
}
[508] Fix | Delete
[509] Fix | Delete
[510] Fix | Delete
/**
[511] Fix | Delete
* Delete a file when provided valid file path
[512] Fix | Delete
*
[513] Fix | Delete
* @param WP_REST_Request $request Object with `file_path` property
[514] Fix | Delete
* @return void
[515] Fix | Delete
*/
[516] Fix | Delete
public function delete_download_file(WP_REST_Request $request)
[517] Fix | Delete
{
[518] Fix | Delete
//Gather data from the request
[519] Fix | Delete
$data = json_decode($request->get_body());
[520] Fix | Delete
[521] Fix | Delete
if(!empty($data->file_path)){
[522] Fix | Delete
[523] Fix | Delete
$filePath = (string)$data->file_path;
[524] Fix | Delete
[525] Fix | Delete
$deleteFile = (new DeleteBatchFile())->delete($filePath);
[526] Fix | Delete
[527] Fix | Delete
$response=[
[528] Fix | Delete
'result'=>$deleteFile
[529] Fix | Delete
];
[530] Fix | Delete
[531] Fix | Delete
return $response;
[532] Fix | Delete
[533] Fix | Delete
}else{
[534] Fix | Delete
return new WP_Error('malformed_request', __('This request is missing data for method delete_download_file', 'ninja-forms'));
[535] Fix | Delete
}
[536] Fix | Delete
[537] Fix | Delete
}
[538] Fix | Delete
[539] Fix | Delete
[540] Fix | Delete
/**
[541] Fix | Delete
* Trigger Email Action endpoint callback
[542] Fix | Delete
*
[543] Fix | Delete
* @since 3.4.33
[544] Fix | Delete
*
[545] Fix | Delete
* @return bool|int depending on the value returned by wp_mail
[546] Fix | Delete
*/
[547] Fix | Delete
public function trigger_email_action(WP_REST_Request $request) {
[548] Fix | Delete
//Extract required data
[549] Fix | Delete
$data = json_decode($request->get_body());
[550] Fix | Delete
$form = Ninja_Forms()->form( $data->formID );
[551] Fix | Delete
$sub = $form->get_sub( $data->submission );
[552] Fix | Delete
$field_values = $sub->get_field_values();
[553] Fix | Delete
[554] Fix | Delete
//Throw error if we're missing data
[555] Fix | Delete
if( !isset($data) || empty($form) || empty($sub) ) {
[556] Fix | Delete
return new WP_Error( 'malformed_request', __('This request is missing data', 'ninja-forms') );
[557] Fix | Delete
}
[558] Fix | Delete
[559] Fix | Delete
$formSettings = Ninja_Forms()->form($data->formID)->get_settings();
[560] Fix | Delete
[561] Fix | Delete
[562] Fix | Delete
$data_send = [
[563] Fix | Delete
'fields' => [],
[564] Fix | Delete
'fields_by_key' => [],
[565] Fix | Delete
'settings'=>$formSettings,
[566] Fix | Delete
'form_id'=>$data->formID
[567] Fix | Delete
];
[568] Fix | Delete
[569] Fix | Delete
foreach($field_values as $index => $field_value){
[570] Fix | Delete
$id = str_replace('_field_', '', $index);
[571] Fix | Delete
$model = Ninja_Forms()->form($data->formID)->get_field( $id );
[572] Fix | Delete
$settings = $model->get_settings();
[573] Fix | Delete
if($id === $index){
[574] Fix | Delete
$data_send['fields_by_key'][$id] = $settings;
[575] Fix | Delete
$data_send['fields_by_key'][$id]['settings'] = $settings;
[576] Fix | Delete
$data_send['fields_by_key'][$id]['value'] = $field_value;
[577] Fix | Delete
$data_send['fields_by_key'][$id]['settings']['value'] = $field_value;
[578] Fix | Delete
} else {
[579] Fix | Delete
$data_send['fields'][$id] = $settings;
[580] Fix | Delete
$data_send['fields'][$id]['settings'] = $settings;
[581] Fix | Delete
$data_send['fields'][$id]['value'] = $field_value;
[582] Fix | Delete
$data_send['fields'][$id]['settings']['value'] = $field_value;
[583] Fix | Delete
}
[584] Fix | Delete
}
[585] Fix | Delete
[586] Fix | Delete
//Process Merge tags
[587] Fix | Delete
$action_settings = $this->process_merge_tags( $data->action_settings, $data->formID, $sub );
[588] Fix | Delete
//Process Email Action
[589] Fix | Delete
$email_action = new NF_Actions_Email();
[590] Fix | Delete
$result = $email_action->process( (array) $action_settings, $data->formID, $data_send );
[591] Fix | Delete
[592] Fix | Delete
//Return true if wp_mail returned true or the submission ID if it failed.
[593] Fix | Delete
$return = !empty($result['actions']['email']['sent']) && true === $result['actions']['email']['sent'] ? $result['actions']['email']['sent'] : $sub->get_seq_num();
[594] Fix | Delete
[595] Fix | Delete
return $return;
[596] Fix | Delete
[597] Fix | Delete
}
[598] Fix | Delete
[599] Fix | Delete
/**
[600] Fix | Delete
* Process Merge tags for a given Value
[601] Fix | Delete
*
[602] Fix | Delete
* @since 3.4.33
[603] Fix | Delete
*
[604] Fix | Delete
* @return object of Email Action Model with merge tags settingsprocessed
[605] Fix | Delete
*
[606] Fix | Delete
*/
[607] Fix | Delete
public function process_merge_tags( $data, $form_id, $sub) {
[608] Fix | Delete
[609] Fix | Delete
// Init Field Merge Tags.
[610] Fix | Delete
$fields_merge_tag_object = Ninja_Forms()->merge_tags[ 'fields' ];
[611] Fix | Delete
$fields_merge_tag_object->set_form_id($form_id);
[612] Fix | Delete
[613] Fix | Delete
//Process Fields Merge Tags
[614] Fix | Delete
$fields = Ninja_Forms()->form( $form_id )->get_fields();
[615] Fix | Delete
$fields = new NF_Adapters_SubmissionsSubmission( $fields, $form_id, $sub );
[616] Fix | Delete
foreach( $fields as $field ){
[617] Fix | Delete
$fields_merge_tag_object->add_field( $field );
[618] Fix | Delete
}
[619] Fix | Delete
//Add All Fields merge tags
[620] Fix | Delete
$fields_merge_tag_object->include_all_fields_merge_tags();
[621] Fix | Delete
//include fields to the {all_fields_table} and {fields_table} mrerge tags
[622] Fix | Delete
foreach( $fields as $field ){
[623] Fix | Delete
$fields_merge_tag_object->add_field( $field );
[624] Fix | Delete
}
[625] Fix | Delete
//Loop through Action settings and apply merge tags
[626] Fix | Delete
$array_data = (array) $data;
[627] Fix | Delete
foreach( $array_data as $ind => $value ){
[628] Fix | Delete
if( !empty($value) && is_string($value) ){
[629] Fix | Delete
//Merge tag
[630] Fix | Delete
$data->$ind = apply_filters( 'ninja_forms_merge_tags', $value );
[631] Fix | Delete
}
[632] Fix | Delete
}
[633] Fix | Delete
[634] Fix | Delete
return $data;
[635] Fix | Delete
}
[636] Fix | Delete
[637] Fix | Delete
/**
[638] Fix | Delete
* Get Submissions
[639] Fix | Delete
*
[640] Fix | Delete
* @since 3.5.8
[641] Fix | Delete
*
[642] Fix | Delete
* @return array of submissions for a Form
[643] Fix | Delete
*/
[644] Fix | Delete
public function get_submissions(WP_REST_Request $request) {
[645] Fix | Delete
[646] Fix | Delete
//Gather data from the request
[647] Fix | Delete
if( empty( $_GET["type"] ) || empty( $_GET["form_ids"] )){
[648] Fix | Delete
[649] Fix | Delete
return new WP_Error( 'malformed_request', __('This request is missing data', 'ninja-forms') );
[650] Fix | Delete
[651] Fix | Delete
} else {
[652] Fix | Delete
//Set Usefull data
[653] Fix | Delete
$type = $_GET["type"];
[654] Fix | Delete
$form_ids = $_GET["form_ids"];
[655] Fix | Delete
$page_size = !empty( $_GET["page_size"] ) ? $_GET["page_size"] : "10";
[656] Fix | Delete
$current_page = !empty( $_GET["current_page"] ) ? $_GET["current_page"] : "1";
[657] Fix | Delete
$start_date = $_GET["start_date"] != 0 ? $_GET["start_date"] : 378687600;
[658] Fix | Delete
[659] Fix | Delete
// If no end date is specified, then use current time plus one day
[660] Fix | Delete
// to ensure it goes beyond all time zones
[661] Fix | Delete
$end_date = $_GET["end_date"] != 0 ? $_GET["end_date"] : time()+(60*60*24);
[662] Fix | Delete
$search_term = !empty($_GET["search_term"]) ? $_GET["search_term"] : null;
[663] Fix | Delete
$status = !empty($_GET["status"]) && $_GET["status"] === "trash" ? ["trash"] : ['active', 'publish'];
[664] Fix | Delete
}
[665] Fix | Delete
[666] Fix | Delete
//Get aggregated submissions
[667] Fix | Delete
$params = (new SubmissionFilterFactory())->maybeLimitByLoggedInUser()->setNfFormIds([$form_ids]);
[668] Fix | Delete
[669] Fix | Delete
if(!empty($start_date) && !empty($end_date)){
[670] Fix | Delete
$params->setStartDate($start_date);
[671] Fix | Delete
$params->setEndDate($end_date);
[672] Fix | Delete
}
[673] Fix | Delete
if($search_term){
[674] Fix | Delete
$params->setSearchString( $search_term );
[675] Fix | Delete
}
[676] Fix | Delete
$params->setStatus( $status );
[677] Fix | Delete
$submissionAggregate = (new SubmissionAggregateFactory())->submissionAggregate();
[678] Fix | Delete
$filteredSubmissions = $submissionAggregate->filterSubmissions( $params );
[679] Fix | Delete
[680] Fix | Delete
//Get values of needed submissions
[681] Fix | Delete
if( $type === "columns" ){
[682] Fix | Delete
[683] Fix | Delete
$response = $submissionAggregate->getFieldDefinitionCollection();
[684] Fix | Delete
[685] Fix | Delete
} else if( $type === "data" ){
[686] Fix | Delete
[687] Fix | Delete
$response = [];
[688] Fix | Delete
$aggregatedSubmissions = $submissionAggregate->getAggregatedSubmissions();
[689] Fix | Delete
$offset = ($current_page - 1) * $page_size;
[690] Fix | Delete
$submissions_needed = array_slice( $aggregatedSubmissions, $offset, $page_size );
[691] Fix | Delete
foreach( $submissions_needed as $key => $params ){
[692] Fix | Delete
$response['data'][$key] = $submissionAggregate->getSubmissionValuesByAggregatedKey( $key );
[693] Fix | Delete
}
[694] Fix | Delete
$response['count'] = $submissionAggregate->getSubmissionCount();
[695] Fix | Delete
[696] Fix | Delete
}
[697] Fix | Delete
[698] Fix | Delete
// Return submissions data from request
[699] Fix | Delete
return rest_ensure_response( $response );
[700] Fix | Delete
}
[701] Fix | Delete
[702] Fix | Delete
/**
[703] Fix | Delete
* Save submissions interface settings
[704] Fix | Delete
*
[705] Fix | Delete
* Data passes a json string
[706] Fix | Delete
*
[707] Fix | Delete
* @param WP_REST_Request $request
[708] Fix | Delete
* @return void
[709] Fix | Delete
*/
[710] Fix | Delete
public function set_submissions_settings(WP_REST_Request $request){
[711] Fix | Delete
//Extract required data
[712] Fix | Delete
$data = $request->get_json_params();
[713] Fix | Delete
$setting = $data['settingName'];
[714] Fix | Delete
$new_data = $data['data'];
[715] Fix | Delete
$form_id = $data['formID'];
[716] Fix | Delete
//Get data stored and create the new value for the correct setting
[717] Fix | Delete
$option = get_option( 'ninja_forms_submissions_settings' );
[718] Fix | Delete
$current_setting_value = $option[$form_id][$setting];
[719] Fix | Delete
$updated_option = $option;
[720] Fix | Delete
$updated_option[$form_id][$setting] = $new_data;
[721] Fix | Delete
[722] Fix | Delete
$response = (object)[];
[723] Fix | Delete
if ( false !== $option ) {
[724] Fix | Delete
// option exist
[725] Fix | Delete
if ( $current_setting_value === $new_data ) {
[726] Fix | Delete
$response->message = "unchanged";
[727] Fix | Delete
$response->status = false;
[728] Fix | Delete
} else {
[729] Fix | Delete
$response->message = "update_option";
[730] Fix | Delete
$response->status = update_option( 'ninja_forms_submissions_settings', $updated_option );
[731] Fix | Delete
}
[732] Fix | Delete
} else {
[733] Fix | Delete
// option don't exist
[734] Fix | Delete
$response->message = "add_option";
[735] Fix | Delete
$response->status = add_option( 'ninja_forms_submissions_settings', $updated_option );
[736] Fix | Delete
}
[737] Fix | Delete
[738] Fix | Delete
return rest_ensure_response( json_encode( $response ) );
[739] Fix | Delete
}
[740] Fix | Delete
/**
[741] Fix | Delete
* Get submissions interface settings
[742] Fix | Delete
*
[743] Fix | Delete
* @param WP_REST_Request $request
[744] Fix | Delete
* @return array of settings
[745] Fix | Delete
*/
[746] Fix | Delete
public function get_submissions_settings(WP_REST_Request $request){
[747] Fix | Delete
[748] Fix | Delete
$settings = get_option( 'ninja_forms_submissions_settings' );
[749] Fix | Delete
[750] Fix | Delete
return rest_ensure_response( json_encode( $settings ) );
[751] Fix | Delete
}
[752] Fix | Delete
[753] Fix | Delete
/**
[754] Fix | Delete
* Request deletion of a collection of submissions
[755] Fix | Delete
*
[756] Fix | Delete
* Data passes as a collection of single submission entities keyed
[757] Fix | Delete
* under submissions
[758] Fix | Delete
*
[759] Fix | Delete
* {"submissions": SingleSubmission[]}
[760] Fix | Delete
*
[761] Fix | Delete
* @param WP_REST_Request $request
[762] Fix | Delete
* @return void
[763] Fix | Delete
*/
[764] Fix | Delete
public function delete_submissions(WP_REST_Request $request){
[765] Fix | Delete
//Extract required data
[766] Fix | Delete
$data = json_decode($request->get_body());
[767] Fix | Delete
[768] Fix | Delete
$submissions = $data->submissions;
[769] Fix | Delete
[770] Fix | Delete
$submissionAggregate = (new SubmissionAggregateFactory())->submissionAggregate();
[771] Fix | Delete
[772] Fix | Delete
foreach($submissions as $obj){
[773] Fix | Delete
[774] Fix | Delete
$singleSubmission = SingleSubmission::fromArray((array)$obj);
[775] Fix | Delete
[776] Fix | Delete
$submissionAggregate->deleteSingleSubmission($singleSubmission);
[777] Fix | Delete
}
[778] Fix | Delete
[779] Fix | Delete
return 'ok';
[780] Fix | Delete
}
[781] Fix | Delete
[782] Fix | Delete
/**
[783] Fix | Delete
* Request restoration of a collection of submissions
[784] Fix | Delete
*
[785] Fix | Delete
* Data passes as a collection of single submission entities keyed
[786] Fix | Delete
* under submissions
[787] Fix | Delete
*
[788] Fix | Delete
* {"submissions": SingleSubmission[]}
[789] Fix | Delete
*
[790] Fix | Delete
* @param WP_REST_Request $request
[791] Fix | Delete
* @return void
[792] Fix | Delete
*/
[793] Fix | Delete
public function restore_submissions(WP_REST_Request $request){
[794] Fix | Delete
//Extract required data
[795] Fix | Delete
$data = json_decode($request->get_body());
[796] Fix | Delete
[797] Fix | Delete
$submissions = $data->submissions;
[798] Fix | Delete
[799] Fix | Delete
$submissionAggregate = (new SubmissionAggregateFactory())->submissionAggregate();
[800] Fix | Delete
[801] Fix | Delete
foreach($submissions as $obj){
[802] Fix | Delete
[803] Fix | Delete
$singleSubmission = SingleSubmission::fromArray((array)$obj);
[804] Fix | Delete
[805] Fix | Delete
$submissionAggregate->restoreSingleSubmission($singleSubmission);
[806] Fix | Delete
}
[807] Fix | Delete
[808] Fix | Delete
return 'ok';
[809] Fix | Delete
}
[810] Fix | Delete
[811] Fix | Delete
/**
[812] Fix | Delete
* Request update of a single submission
[813] Fix | Delete
*
[814] Fix | Delete
* Data passes as a single submission entity keyed under submission
[815] Fix | Delete
*
[816] Fix | Delete
* {"submission": SingleSubmission}
[817] Fix | Delete
*
[818] Fix | Delete
* @param WP_REST_Request $request
[819] Fix | Delete
* @return void
[820] Fix | Delete
*/
[821] Fix | Delete
public function update_submission(WP_REST_Request $request){
[822] Fix | Delete
//Extract required data
[823] Fix | Delete
$data = json_decode($request->get_body(),true);
[824] Fix | Delete
[825] Fix | Delete
$singleSubmissionArray = $data['singleSubmission'];
[826] Fix | Delete
[827] Fix | Delete
$singleSubmission = SingleSubmission::fromArray($singleSubmissionArray);
[828] Fix | Delete
[829] Fix | Delete
$submissionAggregate = (new SubmissionAggregateFactory())->submissionAggregate();
[830] Fix | Delete
[831] Fix | Delete
$submissionAggregate->updateSingleSubmission($singleSubmission);
[832] Fix | Delete
[833] Fix | Delete
return 'ok';
[834] Fix | Delete
}
[835] Fix | Delete
/**
[836] Fix | Delete
* Handle extra request for submissions
[837] Fix | Delete
*
[838] Fix | Delete
* This is a starting proof of concept that triggers a download for the PDF submissions add-on
[839] Fix | Delete
*
[840] Fix | Delete
* Data passes as a single submission entity keyed under submission and a Class to call the handler under handleExtra key
[841] Fix | Delete
*
[842] Fix | Delete
* {
[843] Fix | Delete
* "submission": SingleSubmission,
[844] Fix | Delete
* "handleExtra": HandleExtraClassName
[845] Fix | Delete
* }
[846] Fix | Delete
*
[847] Fix | Delete
* @param WP_REST_Request $request
[848] Fix | Delete
* @return object with string of responseType, blob of PDF download and string of blobType
[849] Fix | Delete
*/
[850] Fix | Delete
public function handle_extra_submission(WP_REST_Request $request){
[851] Fix | Delete
[852] Fix | Delete
// set default response
[853] Fix | Delete
$response = [ ];
[854] Fix | Delete
[855] Fix | Delete
//Extract required data
[856] Fix | Delete
$data = json_decode($request->get_body(),true);
[857] Fix | Delete
[858] Fix | Delete
$singleSubmissionArray = $data['singleSubmission'];
[859] Fix | Delete
[860] Fix | Delete
$singleSubmission = SingleSubmission::fromArray($singleSubmissionArray);
[861] Fix | Delete
$submissionAggregate = (new SubmissionAggregateFactory())->submissionAggregate();
[862] Fix | Delete
[863] Fix | Delete
$populatedSubmission = $submissionAggregate->requestSingleSubmission($singleSubmission);
[864] Fix | Delete
$extraHandler = $data['handleExtra'];
[865] Fix | Delete
[866] Fix | Delete
/** @var SubmissionHandler $object */
[867] Fix | Delete
if(class_exists($extraHandler)){
[868] Fix | Delete
$object = new $extraHandler;
[869] Fix | Delete
$response = $object->handle($populatedSubmission);
[870] Fix | Delete
}
[871] Fix | Delete
[872] Fix | Delete
// Handlers using NinjaForms\Includes\Abstracts\SubmissionHandler
[873] Fix | Delete
// already pass through entity, but it is not guaranteed that all
[874] Fix | Delete
// handlers will use the abstract
[875] Fix | Delete
$arrayFromEntity = (SubmissionExtraHandlerResponse::fromArray($response))->toArray();
[876] Fix | Delete
[877] Fix | Delete
return $arrayFromEntity;
[878] Fix | Delete
}
[879] Fix | Delete
[880] Fix | Delete
}
[881] Fix | Delete
12
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function