예제 #1
0
 /**
  * @group push_uploaded_file_keys
  */
 public function test_push_uploaded_file_keys()
 {
     $this->Data->set(MWF_Config::UPLOAD_FILE_KEYS, array('file1'));
     $this->Data->push_uploaded_file_keys(array('file1' => 'http://exemple.com/dummy.txt'));
     $this->assertSame(array('file1'), $this->Data->get_post_value_by_key(MWF_Config::UPLOAD_FILE_KEYS));
     $this->Data->set(MWF_Config::UPLOAD_FILE_KEYS, array('file1'));
     $this->Data->push_uploaded_file_keys(array('file2' => 'http://exemple.com/dummy.txt'));
     $this->assertSame(array('file1', 'file2'), $this->Data->get_post_value_by_key(MWF_Config::UPLOAD_FILE_KEYS));
 }
예제 #2
0
 /**
  * ファイルアップロード処理。実際のアップロード状況に合わせてフォームデータも再生成する。
  */
 protected function file_upload()
 {
     $File = new MW_WP_Form_File();
     $files = array();
     $upload_files = $this->Data->get_post_value_by_key(MWF_Config::UPLOAD_FILES);
     if (!is_array($upload_files)) {
         $upload_files = array();
     }
     foreach ($upload_files as $key => $file) {
         if ($this->Validation->single_check($key)) {
             $files[$key] = $file;
         }
     }
     $uploaded_files = $File->upload($files);
     $this->Data->set_upload_file_keys();
     $this->Data->push_uploaded_file_keys($uploaded_files);
 }
예제 #3
0
 /**
  * check
  * @param string $akismet_author
  * @param string $akismet_author_email
  * @param string $akismet_author_url
  * @param MW_WP_Form_Data $Data
  * @return bool
  */
 public function check($akismet_author, $akismet_author_email, $akismet_author_url, $Data)
 {
     global $akismet_api_host, $akismet_api_port;
     if (!$this->is_enable()) {
         return false;
     }
     $doAkismet = false;
     $author = '';
     if ($Data->get_post_value_by_key($akismet_author)) {
         $author = $Data->get_post_value_by_key($akismet_author);
         $doAkismet = true;
     }
     $author_email = '';
     if ($Data->get_post_value_by_key($akismet_author_email)) {
         $author_email = $Data->get_post_value_by_key($akismet_author_email);
         $doAkismet = true;
     }
     $author_url = '';
     if ($Data->get_post_value_by_key($akismet_author_url)) {
         $author_url = $Data->get_post_value_by_key($akismet_author_url);
         $doAkismet = true;
     }
     if ($doAkismet) {
         $content = '';
         foreach ($Data->gets() as $key => $value) {
             $value = $Data->get($key);
             $content .= $value . "\n\n";
         }
         $permalink = get_permalink();
         $akismet = array();
         $akismet['blog'] = home_url();
         $akismet['blog_lang'] = get_locale();
         $akismet['blog_charset'] = get_option('blog_charset');
         $akismet['user_ip'] = preg_replace('/[^0-9., ]/', '', $_SERVER['REMOTE_ADDR']);
         $akismet['user_agent'] = $_SERVER['HTTP_USER_AGENT'];
         $akismet['referrer'] = $_SERVER['HTTP_REFERER'];
         $akismet['comment_type'] = MWF_Config::NAME;
         if ($permalink) {
             $akismet['permalink'] = $permalink;
         }
         if ($author) {
             $akismet['comment_author'] = $author;
         }
         if ($author_email) {
             $akismet['comment_author_email'] = $author_email;
         }
         if ($author_url) {
             $akismet['comment_author_url'] = $author_url;
         }
         if ($content) {
             $akismet['comment_content'] = $content;
         }
         foreach ($_SERVER as $key => $value) {
             if (!in_array($key, array('HTTP_COOKIE', 'HTTP_COOKIE2', 'PHP_AUTH_PW'))) {
                 $akismet[$key] = $value;
             }
         }
         $query_string = http_build_query($akismet, null, '&');
         if (is_callable(array('Akismet', 'http_post'))) {
             $response = Akismet::http_post($query_string, 'comment-check');
         } else {
             $response = akismet_http_post($query_string, $akismet_api_host, '/1.1/comment-check', $akismet_api_port);
         }
         $response = apply_filters('mwform_akismet_responce', $response);
         return $response[1] == 'true' ? true : false;
     }
 }