public static function csv($form_id = false, $search = '', $fid = '') { FrmAppHelper::permission_check('frm_view_entries'); if (!$form_id) { $form_id = FrmAppHelper::get_param('form', '', 'get', 'sanitize_text_field'); $search = FrmAppHelper::get_param(isset($_REQUEST['s']) ? 's' : 'search', '', 'get', 'sanitize_text_field'); $fid = FrmAppHelper::get_param('fid', '', 'get', 'sanitize_text_field'); } if (!ini_get('safe_mode')) { set_time_limit(0); //Remove time limit to execute this function $mem_limit = str_replace('M', '', ini_get('memory_limit')); if ((int) $mem_limit < 256) { ini_set('memory_limit', '256M'); } } global $wpdb; $form = FrmForm::getOne($form_id); $form_id = $form->id; $where = array('fi.type not' => FrmField::no_save_fields()); $where[] = array('or' => 1, 'fi.form_id' => $form->id, 'fr.parent_form_id' => $form->id); $csv_fields = apply_filters('frm_csv_field_ids', '', $form_id, array('form' => $form)); if ($csv_fields) { if (!is_array($csv_fields)) { $csv_fields = explode(',', $csv_fields); } if (!empty($csv_fields)) { $where['fi.id'] = $csv_fields; } } $form_cols = FrmField::getAll($where, 'field_order'); $item_id = FrmAppHelper::get_param('item_id', false, 'get', 'sanitize_text_field'); if (!empty($item_id)) { $item_id = explode(',', $item_id); } $query = array('form_id' => $form_id); if ($item_id) { $query['id'] = $item_id; } if (!empty($search) && !$item_id) { $query = FrmProEntriesHelper::get_search_str($query, $search, $form_id, $fid); } /** * Allows the query to be changed for fetching the entry ids to include in the export * * $query is the array of options to be filtered. It includes form_id, and maybe id (array of entry ids), * and the search query. This should return an array, but it can be handled as a string as well. */ $query = apply_filters('frm_csv_where', $query, compact('form_id')); $entry_ids = FrmDb::get_col($wpdb->prefix . 'frm_items it', $query); unset($query); if (empty($entry_ids)) { esc_html_e('There are no entries for that form.', 'formidable'); } else { FrmProCSVExportHelper::generate_csv(compact('form', 'entry_ids', 'form_cols')); } wp_die(); }
private static function prepare_next_csv_rows($next_set) { // order by parent_item_id so children will be first $entries = FrmEntry::getAll(array('or' => 1, 'id' => $next_set, 'parent_item_id' => $next_set), ' ORDER BY parent_item_id DESC', '', true, false); foreach ($entries as $k => $entry) { self::$entry = $entry; unset($entry); if (self::$entry->form_id != self::$form_id) { self::add_repeat_field_values_to_csv($entries); } else { self::prepare_csv_row(); } } }