Пример #1
0
 /**
  * Filter @see heartbeat_received
  * @since 1.0.1
  *
  * @param array  $response
  * @param array  $data
  * @param string $screen_id
  *
  * @return array
  */
 public static function filter__heartbeat_received($response, $data, $screen_id)
 {
     if (false !== strpos($_SERVER['HTTP_REFERER'], 'wpglobus=off')) {
         /**
          * Check $_SERVER['HTTP_REFERER'] for wpglobus toggle is off because wpglobus-admin.js doesn't loaded in this mode
          */
         return $response;
     }
     if (!empty($data['wp_autosave'])) {
         if (empty($data['wp_autosave']['post_id']) || (int) $data['wp_autosave']['post_id'] == 0) {
             /**
              * wp_autosave may come from edit.php page
              */
             return $response;
         }
         if (empty($data['wpglobus_heartbeat'])) {
             /**
              * Check for wpglobus key
              */
             return $response;
         }
         $title_wrap = false;
         $content_wrap = false;
         $post_title_ext = '';
         $content_ext = '';
         foreach (WPGlobus::Config()->enabled_languages as $language) {
             if ($language == WPGlobus::Config()->default_language) {
                 $post_title_ext .= WPGlobus::add_locale_marks($data['wp_autosave']['post_title'], $language);
                 $content_ext .= WPGlobus::add_locale_marks($data['wp_autosave']['content'], $language);
             } else {
                 if (!empty($data['wp_autosave']['post_title_' . $language])) {
                     $title_wrap = true;
                     $post_title_ext .= WPGlobus::add_locale_marks($data['wp_autosave']['post_title_' . $language], $language);
                 }
                 if (!empty($data['wp_autosave']['content_' . $language])) {
                     $content_wrap = true;
                     $content_ext .= WPGlobus::add_locale_marks($data['wp_autosave']['content_' . $language], $language);
                 }
             }
         }
         if ($title_wrap) {
             $data['wp_autosave']['post_title'] = $post_title_ext;
         }
         if ($content_wrap) {
             $data['wp_autosave']['content'] = $content_ext;
         }
         /**
          * Filter before autosave
          * @since 1.0.2
          *
          * @param array $data ['wp_autosave'] Array of post data.
          */
         $data['wp_autosave'] = apply_filters('wpglobus_autosave_post_data', $data['wp_autosave']);
         $saved = wp_autosave($data['wp_autosave']);
         if (is_wp_error($saved)) {
             $response['wp_autosave'] = array('success' => false, 'message' => $saved->get_error_message());
         } elseif (empty($saved)) {
             $response['wp_autosave'] = array('success' => false, 'message' => __('Error while saving.'));
         } else {
             /* translators: draft saved date format, see http://php.net/date */
             $draft_saved_date_format = __('g:i:s a');
             /* translators: %s: date and time */
             $response['wp_autosave'] = array('success' => true, 'message' => sprintf(__('Draft saved at %s.'), date_i18n($draft_saved_date_format)));
         }
     }
     return $response;
 }
 /**
  * Convert array of local texts to multilingual string (with WPGlobus delimiters)
  *
  * @param string[] $translations
  * @return string
  */
 public static function build_multilingual_string($translations)
 {
     $sz = '';
     $single = 1 == count($translations) ? true : false;
     foreach ($translations as $language => $text) {
         if ($single && $language == WPGlobus::Config()->default_language) {
             $sz = $text;
         } else {
             $sz .= WPGlobus::add_locale_marks($text, $language);
         }
     }
     return $sz;
 }
Пример #3
0
 /**
  * @param array    $data
  * @param string[] $postarr
  *
  * @return array
  */
 public function on_save_post_data($data, $postarr)
 {
     if ('revision' == $postarr['post_type']) {
         /**
          * Don't work with revisions
          * note: revision there are 2 types, its have some differences
          *        - [post_name] => {post_id}-autosave-v1    and [post_name] => {post_id}-revision-v1
          *        autosave         : when [post_name] == {post_id}-autosave-v1  $postarr has [post_content] and [post_title] in default_language
          *        regular revision : [post_name] == {post_id}-revision-v1 $postarr has [post_content] and [post_title] in all enabled languages with delimiters
          * @see https://codex.wordpress.org/Revision_Management
          * see $postarr for more info
          */
         return $data;
     }
     if ('auto-draft' == $postarr['post_status']) {
         /**
          * Auto draft was automatically created with no data
          */
         return $data;
     }
     if ($this->disabled_entity($data['post_type'])) {
         return $data;
     }
     /** @global string $pagenow */
     global $pagenow;
     /**
      * Now we save post content and post title for all enabled languages for post.php, post-new.php
      * @todo Check also 'admin-ajax.php', 'nav-menus.php', etc.
      */
     $enabled_pages[] = 'post.php';
     $enabled_pages[] = 'post-new.php';
     if (!in_array($pagenow, $enabled_pages)) {
         /**
          * See other places with the same bookmark.
          * @bookmark EDITOR_LINE_BREAKS
          */
         //			$data['post_content'] = trim( $data['post_content'], '</p><p>' );
         return $data;
     }
     if ('trash' == $postarr['post_status']) {
         /**
          * Don't work with move to trash
          */
         return $data;
     }
     if (isset($_GET['action']) && 'untrash' == $_GET['action']) {
         /**
          * Don't work with untrash
          */
         return $data;
     }
     $devmode = false;
     if ('off' == WPGlobus::Config()->toggle) {
         $devmode = true;
     }
     if (!$devmode) {
         $support_title = true;
         if (!post_type_supports($data['post_type'], 'title')) {
             $support_title = false;
         }
         $support_editor = true;
         if (!post_type_supports($data['post_type'], 'editor')) {
             $support_editor = false;
         }
         $data['post_title'] = $post_title = trim($data['post_title']);
         if (!empty($data['post_title']) && $support_title) {
             $data['post_title'] = WPGlobus::add_locale_marks($data['post_title'], WPGlobus::Config()->default_language);
         }
         $data['post_content'] = $post_content = trim($data['post_content']);
         if (!empty($data['post_content']) && $support_editor) {
             $data['post_content'] = WPGlobus::add_locale_marks($data['post_content'], WPGlobus::Config()->default_language);
         }
         /**
          * Add variables for check extra data
          * @since 1.2.2
          */
         $has_extra_post_title = false;
         $has_extra_post_content = false;
         foreach (WPGlobus::Config()->open_languages as $language) {
             if ($language == WPGlobus::Config()->default_language) {
                 continue;
             } else {
                 /**
                  * Join post title for opened languages
                  */
                 $title = isset($postarr['post_title_' . $language]) ? trim($postarr['post_title_' . $language]) : '';
                 if (!empty($title)) {
                     $data['post_title'] .= WPGlobus::add_locale_marks($postarr['post_title_' . $language], $language);
                     $has_extra_post_title = true;
                 }
                 /**
                  * Join post content for opened languages
                  */
                 $content = isset($postarr['content_' . $language]) ? trim($postarr['content_' . $language]) : '';
                 if (!empty($content)) {
                     $data['post_content'] .= WPGlobus::add_locale_marks($postarr['content_' . $language], $language);
                     $has_extra_post_content = true;
                 }
             }
         }
     }
     //  $devmode
     if (!$has_extra_post_title) {
         $data['post_title'] = $post_title;
     }
     if (!$has_extra_post_content) {
         $data['post_content'] = $post_content;
     }
     $data = apply_filters('wpglobus_save_post_data', $data, $postarr, $devmode);
     return $data;
 }