Title: How to add a certain  &quot;function&quot; to this code
Last modified: August 20, 2016

---

# How to add a certain "function" to this code

 *  [dontblastme](https://wordpress.org/support/users/dontblastme/)
 * (@dontblastme)
 * [13 years, 10 months ago](https://wordpress.org/support/topic/how-to-add-a-certain-function-to-this-code/)
 * Hi guys, i’m using the post from site plugin and im wondering if I can make it
   so someone HAS to upload a photo to make a post also, along with the content,
   here is the code:
 *     ```
       <?php
       /* * *
        * Processed form data into a proper post array, uses wp_insert_post() to add post.
        *
        * @param array $pfs_data POSTed array of data from the form
        */
       require('../../../wp-load.php');
       error_reporting(E_ALL);
       ini_set('display_errors',1);
   
       /**
        * Create post from form data, including uploading images
        * @param array $post
        * @param array $files
        * @return string success or error message.
        */
       function pfs_submit($post,$files){
       	$pfs_options_arr = get_option('pfs_options');
       	$pfs_options = $pfs_options_arr[0];
       	$pfs_data = $post;
       	$pfs_files = $files;
       	//echo "<pre style=\"border:1px solid #ccc;margin-top:5px;\">".print_r($pfs_data, true)."</pre>\n";
       	//echo "<pre style=\"border:1px solid #ccc;margin-top:5px;\">".print_r($pfs_files, true)."</pre>\n";
   
           $title = $pfs_data['title'];
           $postcontent = $pfs_data['postcontent'];
   
           $name = (array_key_exists('name',$pfs_data)) ? esc_html($pfs_data['name'],array()) : '';
           $email = (array_key_exists('email',$pfs_data)) ? sanitize_email($pfs_data['email']) : '';
   
           $taxonomies = array();
   
       	$imgAllowed = 0;
       	$result = Array(
       		'image'=>"",
       		'error'=>"",
       		'success'=>"",
       		'post'=>""
       	);
       	$success = False;
       	$upload = False;
   
       	if ( !current_user_can('publish_posts') && $pfs_options['allow_anon'] && $pfs_options['enable_captcha'] ){
       	    require_once('recaptchalib.php');
       	    $privatekey = $pfs_options_arr['recaptcha_private_key'];
       	    $resp = recaptcha_check_answer ($privatekey,
       	                                $_SERVER["REMOTE_ADDR"],
       	                                $_POST["recaptcha_challenge_field"],
       	                                $_POST["recaptcha_response_field"]);
       	}
           if ( !current_user_can('publish_posts') && $pfs_options['allow_anon'] && $pfs_options['enable_captcha'] && !$resp->is_valid ) {
               // What happens when the CAPTCHA was entered incorrectly
               $result['error'] = printf(__("Incorrect reCAPTCHA: %s",'pfs_domain'), $resp->error);
           } else {
           	//echo "<pre style=\"border:1px solid #ccc;margin-top:5px;\">".print_r($pfs_files['image']['name'], true)."</pre>\n";
               if (array_key_exists('image',$pfs_files)) {
                   /* play with the image */
                   switch (True) {
                   case (1 < count($pfs_files['image']['name'])):
                       // multiple file upload
                       $result['image'] = "multiple";
                       $file = $pfs_files['image'];
                       for ( $i = 0; $i < count($file['tmp_name']); $i++ ){
                           if( ''!=$file['tmp_name'][$i] ){
                               $imgAllowed = (getimagesize($file['tmp_name'][$i])) ? True : (''==$file['name'][$i]);
                               if ($imgAllowed){
                                   $upload[$i+1] = upload_image(array('name'=>$pfs_files["image"]["name"][$i], 'tmp_name'=>$pfs_files["image"]["tmp_name"][$i]));
       		                    if (False === $upload[$i+1]){
       		                        $result['error'] = __("There was an error uploading the image.",'pfs_domain');
       		                    } else {
       		                        $success[$i+1] = True;
       		                    }
                               } else {
                                   $result['error'] = __("Incorrect filetype. Only images (.gif, .png, .jpg, .jpeg) are allowed.",'pfs_domain');
                               }
                           }
                       }
                       break;
                   case ((1 == count($pfs_files['image']['name'])) && ('' != $pfs_files['image']['name'][0]) ):
                       // single file upload
                       $file = $pfs_files['image'];
                       $result['image'] = 'single';
                       $imgAllowed = (getimagesize($file['tmp_name'][0])) ? True : (''==$file['name'][0]);
                       if ($imgAllowed){
                           $upload[1] = upload_image( array( 'name'=>$file["name"][0], 'tmp_name'=>$file["tmp_name"][0] ) );
                           //echo "<pre style=\"border:1px solid #ccc;margin-top:5px;\">".print_r($upload, true)."</pre>\n";
                           if (False === $upload[1]){
                               $result['error'] = __("There was an error uploading the image.",'pfs_domain');
                           } else {
                               $success[1] = True;
                           }
                       } else {
                           $result['error'] = __("Incorrect filetype. Only images (.gif, .png, .jpg, .jpeg) are allowed.",'pfs_domain');
                       }
                       break;
                   default:
                       $result['image'] = 'none';
                   }
               }
               if ( '' != $result['error'] ) return $result; // fail if the image upload failed.
   
               //echo "<pre style=\"border:1px solid #ccc;margin-top:5px;\">".print_r($upload, true)."</pre>\n";
               //echo "<pre style=\"border:1px solid #ccc;margin-top:5px;\">".print_r($success, true)."</pre>\n";
   
               /* manipulate $pfs_data into proper post array */
               $has_content_things = ($title != '') && ($postcontent != '');
               if ( !current_user_can('publish_posts') && $pfs_options['allow_anon'] ) $has_content_things = $has_content_things && ($name != '') && is_email($email);
               if ( $has_content_things ) {
                   $content = $postcontent;
                   if ( !current_user_can('publish_posts') && $pfs_options['allow_anon'] ) $content .= apply_filters('pfs_submittedby_text',"<p>Submitted by <a href='mailto:$email'>$name</a></p>");
                   if ( is_user_logged_in() ){
       	            global $user_ID;
       	            get_currentuserinfo();
       	        }
                   if (is_array($success)){
                       foreach(array_keys($success) as $i){
                           $imgtag = "[!--image$i--]";
                           if (False === strpos($content,$imgtag)) $content .= "\n\n$imgtag";
                           $content = str_replace($imgtag, wp_get_attachment_link( $upload[$i], $pfs_options['wp_image_size']), $content);
                       }
                   }
                   //if any [!--image#--] tags remain, they are invalid and should just be deleted.
                   $content = preg_replace('/\[\!--image\d*--\]/','',$content);
   
       			// $terms[{tax name}] = array(term1, term2, etc)
       			if ( array_key_exists('terms',$pfs_data) ) {
       				foreach ($pfs_data['terms'] as $taxon => $terms){
       					if ( !is_taxonomy_hierarchical($taxon) ) {
       						$pfs_data['terms'][$taxon] = implode(',',$terms);
       					}
       				}
       			}
   
                   $postarr = array();
                   $postarr['post_title'] = $title;
                   $postarr['post_content'] = apply_filters('comment_text', $content);
                   $postarr['comment_status'] = $pfs_options['comment_status'];
                   $postarr['post_status'] = $pfs_options['post_status'];
                   $postarr['post_author'] = ( is_user_logged_in() ) ? $user_ID : $pfs_options['default_author'];
                   $postarr['tax_input'] = (array_key_exists('terms',$pfs_data)) ? $pfs_data['terms'] : array();
                   $postarr['post_type'] = $pfs_options['post_type'];
                   //echo "<pre style=\"border:1px solid #ccc;margin-top:5px;\">".print_r($postarr, true)."</pre>\n";
                   $post_id = wp_insert_post($postarr);
   
                   if (0 == $post_id) {
                       $result['error'] = __("Unable to insert post- unknown error.",'pfs_domain');
                   } else {
                       $result['success'] = __("Post added, please wait to return to the previous page.",'pfs_domain');
                       $result['post'] = $post_id;
                   }
               } else {
                    $result['error'] = __("You've left a field empty. All fields are required",'pfs_domain');
               }
           }
       	return $result;
       }
   
       /**
        * Upload images
        */
       function upload_image($image){
           $file = wp_upload_bits( $image["name"], null, file_get_contents($image["tmp_name"]));
           //echo "<pre style=\"border:1px solid #ccc;margin-top:5px;\">";
           //var_dump($file);
           //echo "</pre>\n";
           if (false === $file['error']) {
               $wp_filetype = wp_check_filetype(basename($file['file']), null );
               $attachment = array(
                'post_mime_type' => $wp_filetype['type'],
                'post_title' => preg_replace('/\.[^.]+$/', '', basename($file['file'])),
                'post_content' => '',
                'post_status' => 'inherit'
               );
               $attach_id = wp_insert_attachment( $attachment, $file['file'] );
               // you must first include the image.php file
               // for the function wp_generate_attachment_metadata() to work
               require_once(ABSPATH . "wp-admin" . '/includes/image.php');
               $attach_data = wp_generate_attachment_metadata( $attach_id, $file['file'] );
               wp_update_attachment_metadata( $attach_id,  $attach_data );
               return $attach_id;
           } else {
               //TODO: er, error handling?
               return false;
           }
       }
   
       if (!empty($_POST)){
       	$pfs = pfs_submit($_POST,$_FILES);
       	echo json_encode($pfs);
       	//echo "<pre style=\"border:1px solid #ccc;margin-top:5px;\">".print_r($pfs, true)."</pre>\n";
       } else {
       	/* TODO: translate following */
       	_e('You should not be seeing this page, something went wrong.','pfs_domain');
       	echo "<a href='".get_bloginfo('url')."'>" . __('Go home?','pfs_domain') . "</a>";
       }
   
       //get_footer();
       ?>
       ```
   

The topic ‘How to add a certain "function" to this code’ is closed to new replies.

## Tags

 * [code](https://wordpress.org/support/topic-tag/code/)
 * [login](https://wordpress.org/support/topic-tag/login/)
 * [menu](https://wordpress.org/support/topic-tag/menu/)
 * [page](https://wordpress.org/support/topic-tag/page/)

 * In: [Hacks](https://wordpress.org/support/forum/plugins-and-hacks/hacks/)
 * 0 replies
 * 1 participant
 * Last reply from: [dontblastme](https://wordpress.org/support/users/dontblastme/)
 * Last activity: [13 years, 10 months ago](https://wordpress.org/support/topic/how-to-add-a-certain-function-to-this-code/)
 * Status: not resolved

## Topics

### Topics with no replies

### Non-support topics

### Resolved topics

### Unresolved topics

### All topics
