@ -70,9 +70,9 @@ function get_timezone($lat, $lng) {  
															
														 
														
													
														
															
																 
																 
																  return  null ;   
																 
																 
																  return  null ;   
															
														 
														
													
														
															
																 
																 
																}  
																 
																 
																}  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																function  micropub_post_for_user ( & $user ,  $params )  {  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																function  micropub_post_for_user ( & $user ,  $params ,  $file_path  =  NULL )  {  
															
														 
														
													
														
															
																 
																 
																  // Now send to the micropub endpoint
   
																 
																 
																  // Now send to the micropub endpoint
   
															
														 
														
													
														
															
																 
																 
																  $r  =  micropub_post ( $user -> micropub_endpoint ,  $params ,  $user -> micropub_access_token );   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  $r  =  micropub_post ( $user -> micropub_endpoint ,  $params ,  $user -> micropub_access_token ,  $file_path );   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																  $user -> last_micropub_response  =  substr ( json_encode ( $r ),  0 ,  1024 );   
																 
																 
																  $user -> last_micropub_response  =  substr ( json_encode ( $r ),  0 ,  1024 );   
															
														 
														
													
														
															
																 
																 
																  $user -> last_micropub_response_date  =  date ( 'Y-m-d H:i:s' );   
																 
																 
																  $user -> last_micropub_response_date  =  date ( 'Y-m-d H:i:s' );   
															
														 
														
													
												
													
														
															
																
																	
																	
																	
																		
																			 
																		 
																	
																 
																@ -90,21 +90,33 @@ function micropub_post_for_user(&$user, $params) {  
															
														 
														
													
														
															
																 
																 
																  return  $r ;   
																 
																 
																  return  $r ;   
															
														 
														
													
														
															
																 
																 
																}  
																 
																 
																}  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																function  micropub_post ( $endpoint ,  $params ,  $access_token )  {  
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																function  micropub_post ( $endpoint ,  $params ,  $access_token ,  $file_path  =  NULL )  {  
															
														 
														
													
														
															
																 
																 
																  $ch  =  curl_init ();   
																 
																 
																  $ch  =  curl_init ();   
															
														 
														
													
														
															
																 
																 
																  curl_setopt ( $ch ,  CURLOPT_URL ,  $endpoint );   
																 
																 
																  curl_setopt ( $ch ,  CURLOPT_URL ,  $endpoint );   
															
														 
														
													
														
															
																 
																 
																  curl_setopt ( $ch ,  CURLOPT_HTTPHEADER ,  array (   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																    'Authorization: Bearer '  .  $access_token   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																  ));   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																  curl_setopt ( $ch ,  CURLOPT_POST ,  true );   
																 
																 
																  curl_setopt ( $ch ,  CURLOPT_POST ,  true );   
															
														 
														
													
														
															
																 
																 
																  $post  =  http_build_query ( array_merge ( array (   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																    'h'  =>  'entry'   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																  ),  $params ));   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																  $post  =  preg_replace ( '/%5B[0-9]+%5D/' ,  '%5B%5D' ,  $post );  // change [0] to []
   
																 
																 
																 
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  $httpheaders  =  array ( 'Authorization: Bearer '  .  $access_token );   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  $params  =  array_merge ( array ( 'h'  =>  'entry' ),  $params );   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  if ( ! $file_path )  {   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    $post  =  http_build_query ( $params );   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    $post  =  preg_replace ( '/%5B[0-9]+%5D/' ,  '%5B%5D' ,  $post );  // change [0] to []
   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  }  else  {   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    $finfo  =  finfo_open ( FILEINFO_MIME_TYPE );   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    $mimetype  =  finfo_file ( $finfo ,  $file_path );   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    $multipart  =  new  p3k\Multipart ();   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    $multipart -> addArray ( $params );   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    $multipart -> addFile ( 'photo' ,  $file_path ,  $mimetype );   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    $post  =  $multipart -> data ();   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    array_push ( $httpheaders ,  'Content-Type: '  .  $multipart -> contentType ());   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  curl_setopt ( $ch ,  CURLOPT_HTTPHEADER ,  $httpheaders );   
															
														 
														
													
														
															
																 
																 
																  curl_setopt ( $ch ,  CURLOPT_POSTFIELDS ,  $post );   
																 
																 
																  curl_setopt ( $ch ,  CURLOPT_POSTFIELDS ,  $post );   
															
														 
														
													
														
															
																 
																 
																  curl_setopt ( $ch ,  CURLOPT_RETURNTRANSFER ,  true );   
																 
																 
																  curl_setopt ( $ch ,  CURLOPT_RETURNTRANSFER ,  true );   
															
														 
														
													
														
															
																 
																 
																  curl_setopt ( $ch ,  CURLOPT_HEADER ,  true );   
																 
																 
																  curl_setopt ( $ch ,  CURLOPT_HEADER ,  true );   
															
														 
														
													
														
															
																 
																 
																  curl_setopt ( $ch ,  CURLINFO_HEADER_OUT ,  true );   
																 
																 
																  curl_setopt ( $ch ,  CURLINFO_HEADER_OUT ,  true );   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																  $response  =  curl_exec ( $ch );   
																 
																 
																  $response  =  curl_exec ( $ch );   
															
														 
														
													
														
															
																 
																 
																  $error  =  curl_error ( $ch );   
																 
																 
																  $error  =  curl_error ( $ch );   
															
														 
														
													
														
															
																 
																 
																  $sent_headers  =  curl_getinfo ( $ch ,  CURLINFO_HEADER_OUT );   
																 
																 
																  $sent_headers  =  curl_getinfo ( $ch ,  CURLINFO_HEADER_OUT );   
															
														 
														
													
												
													
														
															
																
																	
																		
																			 
																		 
																	
																	
																		
																			 
																		 
																	
																	
																 
																@ -215,4 +227,57 @@ function instagram_client() {  
															
														 
														
													
														
															
																 
																 
																  ));   
																 
																 
																  ));   
															
														 
														
													
														
															
																 
																 
																}  
																 
																 
																}  
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																function  validate_photo ( & $file )  {  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  try  {   
															
														 
														
													
														
															
																 
																 
																
  
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    if  ( $_SERVER [ 'REQUEST_METHOD' ]  ==  'POST'  &&  count ( $_POST )  <  1  )  {   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																      throw  new  RuntimeException ( 'File upload size exceeded.' );   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    }   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																     
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    // Undefined | Multiple Files | $_FILES Corruption Attack
   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    // If this request falls under any of them, treat it invalid.
   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    if  (   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																        ! isset ( $file [ 'error' ])  ||   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																        is_array ( $file [ 'error' ])   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    )  {   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																        throw  new  RuntimeException ( 'Invalid parameters.' );   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    }   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    // Check $file['error'] value.
   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    switch  ( $file [ 'error' ])  {   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																        case  UPLOAD_ERR_OK :   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																            break ;   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																        case  UPLOAD_ERR_NO_FILE :   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																            throw  new  RuntimeException ( 'No file sent.' );   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																        case  UPLOAD_ERR_INI_SIZE :   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																        case  UPLOAD_ERR_FORM_SIZE :   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																            throw  new  RuntimeException ( 'Exceeded filesize limit.' );   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																        default :   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																            throw  new  RuntimeException ( 'Unknown errors.' );   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    }   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    // You should also check filesize here.
   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    if  ( $file [ 'size' ]  >  1000000 )  {   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																        throw  new  RuntimeException ( 'Exceeded filesize limit.' );   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    }   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    // DO NOT TRUST $file['mime'] VALUE !!
   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    // Check MIME Type by yourself.
   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    $finfo  =  new  finfo ( FILEINFO_MIME_TYPE );   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    if  ( false  ===  $ext  =  array_search (   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																        $finfo -> file ( $file [ 'tmp_name' ]),   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																        array (   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																            'jpg'  =>  'image/jpeg' ,   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																            'png'  =>  'image/png' ,   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																            'gif'  =>  'image/gif' ,   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																        ),   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																        true   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    ))  {   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																        throw  new  RuntimeException ( 'Invalid file format.' );   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																    }   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  }  catch  ( RuntimeException  $e )  {   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																
  
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																      return  $e -> getMessage ();   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																  }   
															
														 
														
													
														
															
																 
																 
																 
																 
																 
																}