prefix . DB_TABLE_SYNC_POST; $charset_collate = $wpdb->get_charset_collate(); $sql = "CREATE TABLE $table_name ( id bigint(20) NOT NULL AUTO_INCREMENT, post_id bigint(20) NOT NULL, guid text NOT NULL, time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, PRIMARY KEY (id) ) $charset_collate;"; require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); dbDelta($sql); add_option('MVP_DATABASE_VERSION', MVP_DATABASE_VERSION); } function mvp_database_update() { if (get_site_option('MVP_DATABASE_VERSION') != MVP_DATABASE_VERSION) { mvp_database_install(); } } function saveFile($from, $to) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $from); $fp = fopen($to, 'w+'); curl_setopt($ch, CURLOPT_FILE, $fp); curl_exec($ch); curl_close($ch); fclose($fp); } function generatePassword() { $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ%./\@'; $charactersLength = strlen($characters); $password = ''; for ($i = 0; $i < 8; $i++) { $password .= $characters[rand(0, $charactersLength - 1)]; } $password = $password . strtotime("now"); return $password; } function saveAttachment($picture, $post_ID, $caption, $alt) { $filenameQ = explode("/", $picture['renditions']['original']['media']); $filename = $filenameQ[count($filenameQ) - 1]; saveFile($picture['renditions']['original']['href'], wp_upload_dir()['path'] . "/" . $filename); $attachment = array( 'guid' => wp_upload_dir()['url'] . '/' . basename($filename), 'post_mime_type' => $picture['mimetype'], 'post_title' => $caption, 'post_content' => '', 'post_excerpt' => $caption, 'post_status' => 'inherit' ); $attach_id = wp_insert_attachment($attachment, date("Y") . "/" . date("m") . "/" . $filename, $post_ID); require_once( ABSPATH . 'wp-admin/includes/image.php' ); $attach_data = wp_generate_attachment_metadata($attach_id, wp_upload_dir()['path'] . "/" . $filename); wp_update_attachment_metadata($attach_id, $attach_data); set_post_thumbnail($post_ID, $attach_id); update_post_meta($attach_id, '_wp_attachment_image_alt', wp_slash($alt)); } function savePicture($localPath, $postId, $oldSrc, $associations) { $filenameQ = explode("/", $localPath); $filename = $filenameQ[count($filenameQ) - 1]; $name = null; $mimeType = null; foreach ($associations as $key => $value) { var_dump($value); if (isset($value['renditions'])) { foreach ($value['renditions'] as $value2) { if ($value2['href'] === $oldSrc) { $name = $key; $mimeType = $value2['mimetype']; break 2; } } } } if ($name == null) return; $caption = generate_caption_image($associations[$name]); $alt = (!empty($associations[$name]['body_text'])) ? wp_strip_all_tags($associations[$name]['body_text']) : ''; $attachment = array( 'guid' => $localPath, 'post_mime_type' => $mimeType, 'post_title' => $caption, 'post_content' => '', 'post_excerpt' => $caption, 'post_status' => 'inherit' ); $attach_id = wp_insert_attachment($attachment, date("Y") . "/" . date("m") . "/" . $filename, $postId); require_once( ABSPATH . 'wp-admin/includes/image.php' ); $attach_data = wp_generate_attachment_metadata($attach_id, wp_upload_dir()['path'] . "/" . $filename); wp_update_attachment_metadata($attach_id, $attach_data); set_post_thumbnail($postId, $attach_id); update_post_meta($attach_id, '_wp_attachment_image_alt', wp_slash($alt)); } function custom_wpkses_post_tags($tags, $context) { if ('post' === $context) { $tags['iframe'] = array( 'src' => true, 'height' => true, 'width' => true, 'frameborder' => true, 'allowfullscreen' => true, ); } return $tags; } function generate_caption_image($media) { $caption = ''; $settings = get_option('superdesk_settings'); if (!empty(trim($media['description_text']))) { $caption .= wp_strip_all_tags($media['description_text']); } if (!empty(trim($media['byline']))) { if (!empty($caption)) { $caption .= ' '; } $caption .= (empty($settings['separator-caption-image']) ? ':' : $settings['separator-caption-image']) . ' ' . wp_strip_all_tags($media['byline']); } if (!empty(trim($media['copyrightholder'])) && $settings['copyrightholder-image'] == 'on') { $caption .= ' / ' . wp_strip_all_tags($media['copyrightholder']); } if (!empty(trim($media['copyrightnotice'])) && $settings['copyrightnotice-image'] == 'on') { $caption .= ' ' . wp_strip_all_tags($media['copyrightnotice']); } return $caption; } function embed_src($src) { $filename = sha1($src); saveFile($src, wp_upload_dir()['path'] . "/" . $filename); return wp_upload_dir()['url'] . "/" . $filename; } class Image { public $src, $oldSrc; public function __construct(array $attrs, $oldSrc) { $this->src = $attrs['src']; $this->oldSrc = $oldSrc; stripQuotes($this->src); } } function stripQuotes(&$value) { $value = mb_substr($value, 1, mb_strlen($value) - 2); } function embed_images($html, &$image) { $result = array(); preg_match_all('/]+>/i', $html, $result); if (count($result) > 0) { $img = array(); foreach ($result as $row) { if (count($row) > 0) { foreach ($row as $img_tag) { preg_match_all('/(src|title|alt)=("[^"]*")/i', $img_tag, $img[$img_tag]); } } } if (count($img) > 0) { foreach ($img as $htmlTag => $src) { $attrs = array(); if (isset($src[1], $src[2])) { $oldSrc = ''; foreach ($src[1] as $key => $attr) { $value = $src[2][$key]; if ($attr === "src") { stripQuotes($value); $oldSrc = $value; $value = '"' . embed_src($value) . '"'; } $attrs[$attr] = $value; } if ($image === null) { $image = new Image($attrs, $oldSrc); } $newHtmlTag = " $attrValue) { $newHtmlTag .= " " . $attrName . "=" . $attrValue; } $newHtmlTag .= ">"; $html = str_replace($htmlTag, $newHtmlTag, $html); } } } } return $html; } add_filter('wp_kses_allowed_html', 'custom_wpkses_post_tags', 10, 2); wp_oembed_add_provider('#http://(www\.)?youtube\.com/watch.*#i', 'http://www.youtube.com/oembed', true); register_activation_hook(__FILE__, 'mvp_database_install'); add_action('plugins_loaded', 'mvp_database_update');