I’m using the latest version of Geodirectory v1.4.2. I think I found the code you were referring to between lines 1773 to 1786:
$my_post['post_title'] = $post_title;
$my_post['post_content'] = $post_desc;
$my_post['post_type'] = addslashes($buffer[5]);
$my_post['post_author'] = $current_post_author;
$my_post['post_status'] = 'draft';
$my_post['post_category'] = $catids_arr;
$my_post['post_tags'] = $tag_arr;
$gd_post_info['post_tags'] = $tag_arr;
$gd_post_info['post_title'] = $post_title;
$gd_post_info['post_status'] = 'draft';
$gd_post_info['submit_time'] = time();
$gd_post_info['submit_ip'] = $_SERVER['REMOTE_ADDR'];
As you can see above I changed ‘publish’ to ‘draft’. This didn’t work even after reinstalling all my Geodirectory plugins.
I then did a search of the plugin codebase and found the same block of code in admin_hooks_actions.php lines 1486 to 1498.
After also changing both of those references to ‘draft’ this has worked, with the uploaded listings being marked as ‘draft’ and without me having to reinstall anything!
By the way, the reason I want to do this is so I can schedule my listings to go live over an extended period of time using Drafts Scheduler plugin (https://wordpress.org/plugins/drafts-scheduler/). This is so Google hopefully judges my site as being regularly updated for improved SEO.