private function HaberDetayParcala($url) { $veri = GetContent("http://sondakika.com" . $url); if ($veri === FALSE) { exit("Lütfen Geçerli Bir URL Giriniz."); } preg_match_all('#<h1 itemprop="headline">(.*?)</h1>#si', $veri, $baslik); preg_match_all('#<h2 itemprop="description" class="mt10">(.*?)</h2>#si', $veri, $aciklama); preg_match_all('#<span class="relase-date">(.*?)</span>#si', $veri, $saat); preg_match_all('#<img itemprop="image" src="(.*?)" id="haberResim" alt="(.*?)">#si', $veri, $resim); preg_match_all('#<div class="wrapper" itemprop="articleBody">(.*?)</div>#si', $veri, $haberIcerik); $resimYolu = isset($resim[1][0]) ? $resim[1][0] : "no_image.png"; $this->haberDetayArray["baslik"] = $baslik[1][0]; $this->haberDetayArray["aciklama"] = $aciklama[1][0]; $this->haberDetayArray["icerik"] = $haberIcerik[1][0]; $this->haberDetayArray["saat"] = $saat[1][0]; $this->haberDetayArray["resimYolu"] = $resimYolu; }
function GetContent($part, &$attachments, $post_id, $poster, $config) { extract($config); //global $charset, $encoding; DebugEcho('----'); $meta_return = ''; if (property_exists($part, "ctype_primary")) { DebugEcho("GetContent: primary= " . $part->ctype_primary . ", secondary = " . $part->ctype_secondary); //DebugDump($part); } DecodeBase64Part($part); //look for banned file names if (property_exists($part, 'ctype_parameters') && is_array($part->ctype_parameters) && array_key_exists('name', $part->ctype_parameters)) { if (isBannedFileName($part->ctype_parameters['name'], $banned_files_list)) { return NULL; } } if (property_exists($part, "ctype_primary") && $part->ctype_primary == "application" && $part->ctype_secondary == "octet-stream") { if (property_exists($part, 'disposition') && $part->disposition == "attachment") { //nothing } else { DebugEcho("GetContent: decoding application/octet-stream"); $mimeDecodedEmail = DecodeMIMEMail($part->body); filter_PreferedText($mimeDecodedEmail, $prefer_text_type); foreach ($mimeDecodedEmail->parts as $section) { $meta_return .= GetContent($section, $attachments, $post_id, $poster, $config); } } } if (property_exists($part, "ctype_primary") && $part->ctype_primary == "multipart" && $part->ctype_secondary == "appledouble") { DebugEcho("multipart appledouble"); $mimeDecodedEmail = DecodeMIMEMail("Content-Type: multipart/mixed; boundary=" . $part->ctype_parameters["boundary"] . "\n" . $part->body); filter_PreferedText($mimeDecodedEmail, $prefer_text_type); filter_AppleFile($mimeDecodedEmail); foreach ($mimeDecodedEmail->parts as $section) { $meta_return .= GetContent($section, $attachments, $post_id, $poster, $config); } } else { $filename = ""; if (property_exists($part, 'ctype_parameters') && is_array($part->ctype_parameters) && array_key_exists('name', $part->ctype_parameters)) { $filename = $part->ctype_parameters['name']; } elseif (property_exists($part, 'd_parameters') && is_array($part->d_parameters) && array_key_exists('filename', $part->d_parameters)) { $filename = $part->d_parameters['filename']; } $filename = sanitize_file_name($filename); $fileext = strtolower(pathinfo($filename, PATHINFO_EXTENSION)); DebugEcho("GetContent: file name '{$filename}'"); DebugEcho("GetContent: extension '{$fileext}'"); $mimetype_primary = ""; $mimetype_secondary = ""; if (property_exists($part, "ctype_primary")) { $mimetype_primary = strtolower($part->ctype_primary); } if (property_exists($part, "ctype_secondary")) { $mimetype_secondary = strtolower($part->ctype_secondary); } $typeinfo = wp_check_filetype($filename); //DebugDump($typeinfo); if (!empty($typeinfo['type'])) { DebugEcho("GetContent: secondary lookup found " . $typeinfo['type']); $mimeparts = explode('/', strtolower($typeinfo['type'])); $mimetype_primary = $mimeparts[0]; $mimetype_secondary = $mimeparts[1]; } else { DebugEcho("GetContent: secondary lookup failed, checking configured extensions"); if (in_array($fileext, $audiotypes)) { DebugEcho("GetContent: found audio extension"); $mimetype_primary = 'audio'; $mimetype_secondary = $fileext; } elseif (in_array($fileext, array_merge($video1types, $video2types))) { DebugEcho("GetContent: found video extension"); $mimetype_primary = 'video'; $mimetype_secondary = $fileext; } else { DebugEcho("GetContent: found no extension"); } } DebugEcho("GetContent: mimetype {$mimetype_primary}/{$mimetype_secondary}"); switch ($mimetype_primary) { case 'multipart': DebugEcho("multipart: " . count($part->parts)); //DebugDump($part); filter_PreferedText($part, $prefer_text_type); foreach ($part->parts as $section) { //DebugDump($section->headers); $meta_return .= GetContent($section, $attachments, $post_id, $poster, $config); } break; case 'text': DebugEcho("ctype_primary: text"); //DebugDump($part); $charset = ""; if (property_exists($part, 'ctype_parameters') && array_key_exists('charset', $part->ctype_parameters) && !empty($part->ctype_parameters['charset'])) { $charset = $part->ctype_parameters['charset']; DebugEcho("charset: {$charset}"); } $encoding = ""; if (array_key_exists('content-transfer-encoding', $part->headers) && !empty($part->headers['content-transfer-encoding'])) { $encoding = $part->headers['content-transfer-encoding']; DebugEcho("encoding: {$encoding}"); } if (array_key_exists('content-transfer-encoding', $part->headers)) { //DebugDump($part); $part->body = HandleMessageEncoding($encoding, $charset, $part->body, $message_encoding, $message_dequote); if (!empty($charset)) { $part->ctype_parameters['charset'] = ""; //reset so we don't double decode } //DebugDump($part); } if (array_key_exists('disposition', $part) && $part->disposition == 'attachment') { DebugEcho("text Attachement: {$filename}"); if (!preg_match('/ATT\\d\\d\\d\\d\\d.txt/i', $filename)) { $file_id = postie_media_handle_upload($part, $post_id, $poster, $generate_thumbnails); if (!is_wp_error($file_id)) { $file = wp_get_attachment_url($file_id); $icon = chooseAttachmentIcon($file, $mimetype_primary, $mimetype_secondary, $icon_set, $icon_size); $attachments["html"][$filename] = "<a href='{$file}'>" . $icon . $filename . '</a>' . "\n"; DebugEcho("text attachment: adding '{$filename}'"); } else { LogInfo($file_id->get_error_message()); } } else { DebugEcho("text attachment: skipping '{$filename}'"); } } else { //go through each sub-section if ($mimetype_secondary == 'enriched') { //convert enriched text to HTML DebugEcho("enriched"); $meta_return .= filter_Etf2HTML($part->body) . "\n"; } elseif ($mimetype_secondary == 'html') { //strip excess HTML DebugEcho("html"); $meta_return .= filter_CleanHtml($part->body) . "\n"; } elseif ($mimetype_secondary == 'plain') { DebugEcho("plain text"); //DebugDump($part); DebugEcho("body text"); if ($allow_html_in_body) { DebugEcho("html allowed"); $meta_return .= $part->body; //$meta_return = "<div>$meta_return</div>\n"; } else { DebugEcho("html not allowed (htmlentities)"); $meta_return .= htmlentities($part->body); } $meta_return = filter_StripPGP($meta_return); //DebugEcho("meta return: $meta_return"); } else { DebugEcho("text Attachement wo disposition: {$filename}"); $file_id = postie_media_handle_upload($part, $post_id, $poster); if (!is_wp_error($file_id)) { $file = wp_get_attachment_url($file_id); $icon = chooseAttachmentIcon($file, $mimetype_primary, $mimetype_secondary, $icon_set, $icon_size); $attachments["html"][$filename] = "<a href='{$file}'>" . $icon . $filename . '</a>' . "\n"; } else { LogInfo($file_id->get_error_message()); } } } break; case 'image': DebugEcho("image Attachement: {$filename}"); $file_id = postie_media_handle_upload($part, $post_id, $poster, $generate_thumbnails); if (!is_wp_error($file_id)) { //featured image logic //set the first image we come across as the featured image DebugEcho("has_post_thumbnail: " . has_post_thumbnail($post_id)); //DebugEcho("get_the_post_thumbnail: " .get_the_post_thumbnail($post_id)); if ($featured_image && !has_post_thumbnail($post_id)) { DebugEcho("featured image: {$file_id}"); set_post_thumbnail($post_id, $file_id); } $file = wp_get_attachment_url($file_id); $cid = ""; if (array_key_exists('content-id', $part->headers)) { $cid = trim($part->headers["content-id"], "<>"); DebugEcho("found cid: {$cid}"); } $the_post = get_post($file_id); $attachments["html"][$filename] = parseTemplate($file_id, $mimetype_primary, $imagetemplate, $filename); if ($cid) { $attachments["cids"][$cid] = array($file, count($attachments["html"]) - 1); DebugEcho("CID Attachement: {$cid}"); } } else { LogInfo("image error: " . $file_id->get_error_message()); } break; case 'audio': //DebugDump($part->headers); DebugEcho("audio Attachement: {$filename}"); $file_id = postie_media_handle_upload($part, $post_id, $poster, $generate_thumbnails); if (!is_wp_error($file_id)) { $file = wp_get_attachment_url($file_id); $cid = ""; if (array_key_exists('content-id', $part->headers)) { $cid = trim($part->headers["content-id"], "<>"); DebugEcho("audio Attachement cid: {$cid}"); } if (in_array($fileext, $audiotypes)) { DebugEcho("using audio template: {$mimetype_secondary}"); $audioTemplate = $audiotemplate; } else { DebugEcho("using default audio template: {$mimetype_secondary}"); $icon = chooseAttachmentIcon($file, $mimetype_primary, $mimetype_secondary, $icon_set, $icon_size); $audioTemplate = '<a href="{FILELINK}">' . $icon . '{FILENAME}</a>'; } $attachments["html"][$filename] = parseTemplate($file_id, $mimetype_primary, $audioTemplate, $filename); } else { LogInfo("audio error: " . $file_id->get_error_message()); } break; case 'video': DebugEcho("video Attachement: {$filename}"); $file_id = postie_media_handle_upload($part, $post_id, $poster, $generate_thumbnails); if (!is_wp_error($file_id)) { $file = wp_get_attachment_url($file_id); $cid = ""; if (array_key_exists('content-id', $part->headers)) { $cid = trim($part->headers["content-id"], "<>"); DebugEcho("video Attachement cid: {$cid}"); } //DebugDump($part); if (in_array($fileext, $video1types)) { DebugEcho("using video1 template: {$fileext}"); $videoTemplate = $video1template; } elseif (in_array($fileext, $video2types)) { DebugEcho("using video2 template: {$fileext}"); $videoTemplate = $video2template; } else { DebugEcho("using default template: {$fileext}"); $icon = chooseAttachmentIcon($file, $mimetype_primary, $mimetype_secondary, $icon_set, $icon_size); $videoTemplate = '<a href="{FILELINK}">' . $icon . '{FILENAME}</a>'; } $attachments["html"][$filename] = parseTemplate($file_id, $mimetype_primary, $videoTemplate, $filename); //echo "videoTemplate = $videoTemplate\n"; } else { LogInfo($file_id->get_error_message()); } break; default: DebugEcho("found file type: " . $mimetype_primary); if (in_array($mimetype_primary, $supported_file_types)) { //pgp signature - then forget it if ($mimetype_secondary == 'pgp-signature') { DebugEcho("found pgp-signature - done"); break; } $file_id = postie_media_handle_upload($part, $post_id, $poster, $generate_thumbnails); if (!is_wp_error($file_id)) { $file = wp_get_attachment_url($file_id); DebugEcho("uploaded {$file_id} ({$file})"); $icon = chooseAttachmentIcon($file, $mimetype_primary, $mimetype_secondary, $icon_set, $icon_size); DebugEcho("default: {$icon} {$filename}"); $attachments["html"][$filename] = parseTemplate($file_id, $mimetype_primary, $generaltemplate, $filename, $icon); if (array_key_exists('content-id', $part->headers)) { $cid = trim($part->headers["content-id"], "<>"); if ($cid) { $attachments["cids"][$cid] = array($file, count($attachments["html"]) - 1); } } else { DebugEcho("No content-id"); } } else { LogInfo($file_id->get_error_message()); } } else { DebugEcho("Not in supported filetype list"); DebugDump($supported_file_types); } break; } } DebugEcho("meta_return: " . substr($meta_return, 0, 500)); DebugEcho("===="); return $meta_return; }
/** * 生成文章内容,注意:必须先生成标题! */ function GenerateBody() { for ($i = 5; $i < 28; $i++) { $indexLib = $this->arrLibFeature[$i] . '.txt'; $this->arrContent[$i] = GetContent($indexLib, $this->storyPath . $indexLib, $this->memcached, 0, $this->isMemcached); } $arrBody = $this->arrContent; //初始化插入一些数据 $lenArrKeys = count($this->arrKeys); $arrOutLinks = explode('|', $this->outLink); $arrOutLinks[] = ''; //比较方便的保证在foreach里面插入所有的外链。 $lenArrOutLinks = count($arrOutLinks); foreach ($arrBody as $k => &$v) { if ($k == 0) { continue; } if ($k % 3 == 0) { $v .= '|' . $this->key; } if ($k % 4 == 0) { $v .= '|。<br>'; } if ($k % $lenArrKeys == 0) { $v .= '|' . $this->arrKeys[(int) ($k / $lenArrKeys) - 1]; } if ($k % $lenArrOutLinks == 0) { $v .= '|' . $arrOutLinks[(int) ($k / $lenArrOutLinks) - 1]; } } $body = implode('|', $arrBody); $arrBody = explode('|', $body); for ($i = 0; $i < 6; $i++) { $arrBody = $this->JumbleArrayUseFeature($arrBody); } $body = implode('', $arrBody) . '。'; $body = replace_dbs($body, '。'); $this->body = $body; }
$nextLink = '<p><a href="./read-' . ($viewID + 1) . '.html">下一篇</a></p>'; $lastLink = '<p><a href="./read-' . ($viewID - 1) . '.html">上一篇</a></p>'; if ($viewID >= $maxRandArticleId) { $nextLink = ''; } if ($viewID <= 1) { $lastLink = ''; } $randLink = '<p><a href="./read-' . rand(1, $maxRandArticleId) . '.html">推荐文章</a></p>'; $additionLinks = $lastLink . $nextLink . $randLink; //--------------------输出-------------------------------------------- if ($cfg->isMemcached) { $memcached = new Memcached(); $memcached->addServer('127.0.0.1', '11211'); } $templets = GetContent($indexCache->mainDomain . 'view.html', './templets/view.html', $memcached, 86400, $cfg->isMemcached); //生成相关链接: $arrKeys = explode(',', $indexCache->keys); $keysLink = ''; foreach ($arrKeys as $v) { $keyEPath = GetEPath($v); $arr = explode('/', $keyEPath); $keysLink .= '<li><a href="http://' . $arr[0] . $indexCache->mainDomain . '/' . $arr[1] . '">' . $v . '</a></li>'; } //生成taglink $tagLink = ''; $arrTagKey = explode(',', $indexCache->tagKey); foreach ($arrTagKey as $v) { $tagEPath = GetEPath($v); $arr = explode('/', $tagEPath); $tagLink .= '<li><a href="http://' . $arr[0] . $indexCache->mainDomain . '/' . $arr[1] . '">' . $v . '</li>';
function GetContent($part, &$attachments, $post_id, $config) { global $charset, $encoding; /* if (!function_exists(imap_mime_header_decode)) echo "you need to install the php-imap extension for full functionality, including mime header decoding\n"; */ $meta_return = NULL; echo "primary= " . $part->ctype_primary . ", secondary = " . $part->ctype_secondary . "\n"; DecodeBase64Part($part); if (BannedFileName($part->ctype_parameters['name'], $config['BANNED_FILES_LIST'])) { return NULL; } if ($part->ctype_primary == "application" && $part->ctype_secondary == "octet-stream") { if ($part->disposition == "attachment") { $image_endings = array("jpg", "png", "gif", "jpeg", "pjpeg"); foreach ($image_endings as $type) { if (eregi(".{$type}\$", $part->d_parameters["filename"])) { $part->ctype_primary = "image"; $part->ctype_secondary = $type; break; } } } else { $mimeDecodedEmail = DecodeMIMEMail($part->body); FilterTextParts($mimeDecodedEmail, $config['PREFER_TEXT_TYPE']); foreach ($mimeDecodedEmail->parts as $section) { $meta_return .= GetContent($section, $attachments, $post_id, $config); } } } if ($part->ctype_primary == "multipart" && $part->ctype_secondary == "appledouble") { $mimeDecodedEmail = DecodeMIMEMail("Content-Type: multipart/mixed; boundary=" . $part->ctype_parameters["boundary"] . "\n" . $part->body); FilterTextParts($mimeDecodedEmail, $config['PREFER_TEXT_TYPE']); FilterAppleFile($mimeDecodedEmail); foreach ($mimeDecodedEmail->parts as $section) { $meta_return .= GetContent($section, $attachments, $post_id, $config); } } else { switch (strtolower($part->ctype_primary)) { case 'multipart': FilterTextParts($part, $config['PREFER_TEXT_TYPE']); foreach ($part->parts as $section) { $meta_return .= GetContent($section, $attachments, $post_id, $config); } break; case 'text': $tmpcharset = trim($part->ctype_parameters['charset']); if ($tmpcharset != '') { $charset = $tmpcharset; } $tmpencoding = trim($part->headers['content-transfer-encoding']); if ($tmpencoding != '') { $encoding = $tmpencoding; } $part->body = HandleMessageEncoding($part->headers["content-transfer-encoding"], $part->ctype_parameters["charset"], $part->body, $config['MESSAGE_ENCODING'], $config['MESSAGE_DEQUOTE']); //go through each sub-section if ($part->ctype_secondary == 'enriched') { //convert enriched text to HTML $meta_return .= etf2HTML($part->body) . "\n"; } elseif ($part->ctype_secondary == 'html') { //strip excess HTML //$meta_return .= HTML2HTML($part->body ) . "\n"; $meta_return .= $part->body . "\n"; } else { //regular text, so just strip the pgp signature if (ALLOW_HTML_IN_BODY) { $meta_return .= $part->body . "\n"; } else { $meta_return .= htmlentities($part->body) . "\n"; } $meta_return = StripPGP($meta_return); } break; case 'image': echo "looking at an image\n"; $file_id = postie_media_handle_upload($part, $post_id); $file = wp_get_attachment_url($file_id); $cid = trim($part->headers["content-id"], "<>"); //cids are in <cid> $the_post = get_post($file_id); /* TODO make these options */ $attachments["html"][] = parseTemplate($file_id, $part->ctype_primary, $config['IMAGETEMPLATE']); if ($cid) { $attachments["cids"][$cid] = array($file, count($attachments["html"]) - 1); } break; case 'audio': $file_id = postie_media_handle_upload($part, $post_id); $file = wp_get_attachment_url($file_id); $cid = trim($part->headers["content-id"], "<>"); //cids are in <cid> if (in_array($part->ctype_secondary, $config['AUDIOTYPES'])) { $audioTemplate = $config['AUDIOTEMPLATE']; } else { $icon = chooseAttachmentIcon($file, $part->ctype_primary, $part->ctype_secondary, $config['ICON_SET'], $config['ICON_SIZE']); $audioTemplate = '<a href="{FILELINK}">' . $icon . '{FILENAME}</a>'; } $attachments["html"][] = parseTemplate($file_id, $part->ctype_primary, $audioTemplate); break; case 'video': $file_id = postie_media_handle_upload($part, $post_id); $file = wp_get_attachment_url($file_id); $cid = trim($part->headers["content-id"], "<>"); //cids are in <cid> if (in_array($part->ctype_secondary, $config['VIDEO1TYPES'])) { $videoTemplate = $config['VIDEO1TEMPLATE']; } else { if (in_array($part->ctype_secondary, $config['VIDEO2TYPES'])) { $videoTemplate = $config['VIDEO2TEMPLATE']; } else { $icon = chooseAttachmentIcon($file, $part->ctype_primary, $part->ctype_secondary, $config['ICON_SET'], $config['ICON_SIZE']); $videoTemplate = '<a href="{FILELINK}">' . $icon . '{FILENAME}</a>'; } } $attachments["html"][] = parseTemplate($file_id, $part->ctype_primary, $videoTemplate); break; default: if (in_array(strtolower($part->ctype_primary), $config["SUPPORTED_FILE_TYPES"])) { //pgp signature - then forget it if ($part->ctype_secondary == 'pgp-signature') { break; } $file_id = postie_media_handle_upload($part, $post_id); $file = wp_get_attachment_url($file_id); echo "file={$file}\n"; $cid = trim($part->headers["content-id"], "<>"); //cids are in <cid> $icon = chooseAttachmentIcon($file, $part->ctype_primary, $part->ctype_secondary, $config['ICON_SET'], $config['ICON_SIZE']); $attachments["html"][] = '<a href="' . $file . '" style="text-decoration:none">' . $icon . $part->ctype_parameters['name'] . '</a>' . "\n"; if ($cid) { $attachments["cids"][$cid] = array($file, count($attachments["html"]) - 1); } } break; } } return $meta_return; }
function GetContent($part, &$attachments, $post_id, $poster, $config) { extract($config); global $charset, $encoding; /* if (!function_exists(imap_mime_header_decode)) echo "you need to install the php-imap extension for full functionality, including mime header decoding\n"; */ $meta_return = NULL; echo "primary= " . $part->ctype_primary . ", secondary = " . $part->ctype_secondary . "\n"; DecodeBase64Part($part); if (BannedFileName($part->ctype_parameters['name'], $banned_files_list)) { return NULL; } if ($part->ctype_primary == "application" && $part->ctype_secondary == "octet-stream") { if ($part->disposition == "attachment") { $image_endings = array("jpg", "png", "gif", "jpeg", "pjpeg"); foreach ($image_endings as $type) { if (eregi(".{$type}\$", $part->d_parameters["filename"])) { $part->ctype_primary = "image"; $part->ctype_secondary = $type; break; } } } else { $mimeDecodedEmail = DecodeMIMEMail($part->body); FilterTextParts($mimeDecodedEmail, $prefer_text_type); foreach ($mimeDecodedEmail->parts as $section) { $meta_return .= GetContent($section, $attachments, $post_id, $poster, $config); } } } if ($part->ctype_primary == "multipart" && $part->ctype_secondary == "appledouble") { $mimeDecodedEmail = DecodeMIMEMail("Content-Type: multipart/mixed; boundary=" . $part->ctype_parameters["boundary"] . "\n" . $part->body); FilterTextParts($mimeDecodedEmail, $prefer_text_type); FilterAppleFile($mimeDecodedEmail); foreach ($mimeDecodedEmail->parts as $section) { $meta_return .= GetContent($section, $attachments, $post_id, $poster, $config); } } else { // fix filename (remove non-standard characters) $filename = preg_replace("/[^\t\n\r -]/", "", $part->ctype_parameters['name']); switch (strtolower($part->ctype_primary)) { case 'multipart': FilterTextParts($part, $prefer_text_type); foreach ($part->parts as $section) { $meta_return .= GetContent($section, $attachments, $post_id, $poster, $config); } break; case 'text': $tmpcharset = trim($part->ctype_parameters['charset']); if ($tmpcharset != '') { $charset = $tmpcharset; } $tmpencoding = trim($part->headers['content-transfer-encoding']); if ($tmpencoding != '') { $encoding = $tmpencoding; } $part->body = HandleMessageEncoding($part->headers["content-transfer-encoding"], $part->ctype_parameters["charset"], $part->body, $message_encoding, $message_dequote); //go through each sub-section if ($part->ctype_secondary == 'enriched') { //convert enriched text to HTML $meta_return .= etf2HTML($part->body) . "\n"; } elseif ($part->ctype_secondary == 'html') { //strip excess HTML //$meta_return .= HTML2HTML($part->body ) . "\n"; $meta_return .= $part->body . "\n"; } else { //regular text, so just strip the pgp signature if (ALLOW_HTML_IN_BODY) { $meta_return .= $part->body . "\n"; } else { $meta_return .= htmlentities($part->body) . "\n"; } $meta_return = StripPGP($meta_return); } break; case 'image': $file_id = postie_media_handle_upload($part, $post_id, $poster); $file = wp_get_attachment_url($file_id); $cid = trim($part->headers["content-id"], "<>"); //cids are in <cid> $the_post = get_post($file_id); $attachments["html"][$filename] = parseTemplate($file_id, $part->ctype_primary, $imagetemplate); if ($cid) { $attachments["cids"][$cid] = array($file, count($attachments["html"]) - 1); } break; case 'audio': $file_id = postie_media_handle_upload($part, $post_id, $poster); $file = wp_get_attachment_url($file_id); $cid = trim($part->headers["content-id"], "<>"); //cids are in <cid> if (in_array($part->ctype_secondary, $audiotypes)) { $audioTemplate = $audiotemplate; } else { $icon = chooseAttachmentIcon($file, $part->ctype_primary, $part->ctype_secondary, $icon_set, $icon_size); $audioTemplate = '<a href="{FILELINK}">' . $icon . '{FILENAME}</a>'; } $attachments["html"][$filename] = parseTemplate($file_id, $part->ctype_primary, $audioTemplate); break; case 'video': $file_id = postie_media_handle_upload($part, $post_id, $poster); $file = wp_get_attachment_url($file_id); $cid = trim($part->headers["content-id"], "<>"); //cids are in <cid> if (in_array(strtolower($part->ctype_secondary), $video1types)) { $videoTemplate = $video1template; } elseif (in_array(strtolower($part->ctype_secondary), $video2types)) { $videoTemplate = $video2template; } else { $icon = chooseAttachmentIcon($file, $part->ctype_primary, $part->ctype_secondary, $icon_set, $icon_size); $videoTemplate = '<a href="{FILELINK}">' . $icon . '{FILENAME}</a>'; } $attachments["html"][$filename] = parseTemplate($file_id, $part->ctype_primary, $videoTemplate); //echo "videoTemplate = $videoTemplate\n"; break; default: if (in_array(strtolower($part->ctype_primary), $supported_file_types)) { //pgp signature - then forget it if ($part->ctype_secondary == 'pgp-signature') { break; } $file_id = postie_media_handle_upload($part, $post_id, $poster); $file = wp_get_attachment_url($file_id); $cid = trim($part->headers["content-id"], "<>"); //cids are in <cid> $icon = chooseAttachmentIcon($file, $part->ctype_primary, $part->ctype_secondary, $icon_set, $icon_size); $attachments["html"][$filename] = "<a href='{$file}'>" . $icon . $filename . '</a>' . "\n"; if ($cid) { $attachments["cids"][$cid] = array($file, count($attachments["html"]) - 1); } } break; } } return $meta_return; }
function GetContent($part, &$attachments) { $config = GetConfig(); $meta_return = NULL; DecodeBase64Part($part); if (BannedFileName($part->ctype_parameters['name']) || BannedFileName($part->ctype_parameters['name'])) { return NULL; } if ($part->ctype_primary == "application" && $part->ctype_secondary == "octet-stream") { if ($part->disposition == "attachment") { $image_endings = array("jpg", "png", "gif", "jpeg", "pjpeg"); foreach ($image_endings as $type) { if (eregi(".{$type}\$", $part->d_parameters["filename"])) { $part->ctype_primary = "image"; $part->ctype_secondary = $type; break; } } } else { $mimeDecodedEmail = DecodeMIMEMail($part->body); FilterTextParts($mimeDecodedEmail); foreach ($mimeDecodedEmail->parts as $section) { $meta_return .= GetContent($section, $attachments); } } } if ($part->ctype_primary == "multipart" && $part->ctype_secondary == "appledouble") { $mimeDecodedEmail = DecodeMIMEMail("Content-Type: multipart/mixed; boundary=" . $part->ctype_parameters["boundary"] . "\n" . $part->body); FilterTextParts($mimeDecodedEmail); FilterAppleFile($mimeDecodedEmail); foreach ($mimeDecodedEmail->parts as $section) { $meta_return .= GetContent($section, $attachments); } } else { switch (strtolower($part->ctype_primary)) { case 'multipart': FilterTextParts($part); foreach ($part->parts as $section) { $meta_return .= GetContent($section, $attachments); } break; case 'text': HandleMessageEncoding($part->headers["content-transfer-encoding"], $part->ctype_parameters["charset"], $part->body); //go through each sub-section if ($part->ctype_secondary == 'enriched') { //convert enriched text to HTML $meta_return .= etf2HTML($part->body) . "\n"; } elseif ($part->ctype_secondary == 'html') { //strip excess HTML $meta_return .= HTML2HTML($part->body) . "\n"; } else { //regular text, so just strip the pgp signature if (ALLOW_HTML_IN_BODY) { $meta_return .= $part->body . "\n"; } else { $meta_return .= htmlentities($part->body) . "\n"; } $meta_return = StripPGP($meta_return); } break; case 'image': $file = GenerateImageFileName($config["REALPHOTOSDIR"], $part->ctype_secondary); //This makes sure there is no collision $ctr = 0; while (file_exists($file) && $ctr < 1000) { $file = GenerateImageFileName($config["REALPHOTOSDIR"], $part->ctype_secondary); $ctr++; } if ($ctr >= 1000) { die("Unable to find a name for images that does not collide\n"); } $fileName = basename($file); $fp = fopen($file, 'w'); fwrite($fp, $part->body); fclose($fp); @exec('chmod 755 ' . $file); if ($config["USE_IMAGEMAGICK"] && $config["AUTO_SMART_SHARP"]) { ImageMagickSharpen($file); } $mimeTag = '<!--Mime Type of File is ' . $part->ctype_primary . "/" . $part->ctype_secondary . ' -->'; $thumbImage = NULL; $cid = trim($part->headers["content-id"], "<>"); //cids are in <cid> if ($config["RESIZE_LARGE_IMAGES"]) { list($thumbImage, $fullImage) = ResizeImage($file, strtolower($part->ctype_secondary)); } $attachments["image_files"][] = array($thumbImage ? $config["REALPHOTOSDIR"] . $thumbImage : NULL, $config["REALPHOTOSDIR"] . $fileName, $part->ctype_secondary); if ($thumbImage) { $marime = DetermineImageSize($file); $marimex = $marime[0] + 20; $marimey = $marime[1] + 20; $attachments["html"][] .= $mimeTag . '<div class="' . $config["IMAGEDIV"] . '"><a href="' . $config["URLPHOTOSDIR"] . $fullImage . '" onclick="window.open(' . "'" . $config["URLPHOTOSDIR"] . $fullImage . "','" . "full_size_image" . "','" . "toolbar=0,scrollbars=0,location=0,status=0,menubar=0,resizable=1,height=" . $marimey . ",width=" . $marimex . "');" . "return false;" . '"><img src="' . $config["URLPHOTOSDIR"] . $thumbImage . '" alt="' . $part->ctype_parameters['name'] . '" title="' . $part->ctype_parameters['name'] . '" style="' . $config["IMAGESTYLE"] . '" class="' . $config["IMAGECLASS"] . '" /></a></div>' . "\n"; if ($cid) { $attachments["cids"][$cid] = array($config["URLPHOTOSDIR"] . $fullImage, count($attachments["html"]) - 1); } } else { $attachments["html"][] .= $mimeTag . '<div class="' . $config["IMAGEDIV"] . '"><img src="' . $config["URLPHOTOSDIR"] . $fileName . '" alt="' . $part->ctype_parameters['name'] . '" style="' . $config["IMAGESTYLE"] . '" class="' . $config["IMAGECLASS"] . '" /></div>' . "\n"; if ($cid) { $attachments["cids"][$cid] = array($config["URLPHOTOSDIR"] . $fileName, count($attachments["html"]) - 1); } } break; default: if (in_array(strtolower($part->ctype_primary), $config["SUPPORTED_FILE_TYPES"])) { //pgp signature - then forget it if ($part->ctype_secondary == 'pgp-signature') { break; } //other attachments save to FILESDIR $filename = $part->ctype_parameters['name']; $file = $config["REALFILESDIR"] . $filename; $fp = fopen($file, 'w'); fwrite($fp, $part->body); fclose($fp); @exec('chmod 755 ' . $file); $cid = trim($part->headers["content-id"], "<>"); //cids are in <cid> if ($part->ctype_secondary == "3gpp" || $part->ctype_secondary == "3gp" || $part->ctype_secondary == "3g2" || $part->ctype_secondary == "3gpp2") { if ($config["3GP_QT"]) { //Shamelessly borrowed from http://www.postneo.com/2003/12/19/embedding-3gpp-in-html $attachments["html"][] = '<!--Mime Type of File is ' . $part->ctype_primary . "/" . $part->ctype_secondary . ' -->' . '<a href="' . $config["URLFILESDIR"] . $filename . '">Video' . '<object ' . 'classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" ' . 'codebase="http://www.apple.com/qtactivex/qtplugin.cab" ' . 'width="128" ' . 'height="112"> ' . '<param name="src" VALUE="' . $config["URLFILESDIR"] . $filename . '"> ' . '<param name="autoplay" VALUE="false"> ' . '<param name="controller" VALUE="true"> ' . '<embed ' . 'src="' . $config["URLFILESDIR"] . $filename . '" ' . 'width="128" ' . 'height="112" ' . 'autoplay="true" ' . 'controller="true" ' . 'type="video/quicktime" ' . 'pluginspage="http://www.apple.com/quicktime/download/" ' . 'width="128" ' . 'height="150"></embed> ' . '</object></a>'; } else { if (file_exists($config["3GP_FFMPEG"])) { $fileName = basename($file); //options from http://www.getid3.org/phpBB2/viewtopic.php?p=1290& $scaledFileName = "thumb." . $fileName; $scaledFile = $config["REALPHOTOSDIR"] . $scaledFileName; @exec(escapeshellcmd($config["3GP_FFMPEG"]) . " -i " . escapeshellarg($file) . " -y -ss 00:00:01 -vframes 1 -an -sameq -f gif " . escapeshellarg($scaledFile)); @exec('chmod 755 ' . escapeshellarg($scaledFile)); $attachments["html"][] .= '<!--Mime Type of File is ' . $part->ctype_primary . "/" . $part->ctype_secondary . ' --><div class="' . $config["3GPDIV"] . '"><a href="' . $config["URLPHOTOSDIR"] . $fileName . '"><img src="' . $config["URLPHOTOSDIR"] . $scaledFileName . '" alt="' . $part->ctype_parameters['name'] . '" style="' . $config["IMAGESTYLE"] . '" class="' . $config["IMAGECLASS"] . '" /></a></div>' . "\n"; } else { $attachments["html"][] = '<!--Mime Type of File is ' . $part->ctype_primary . "/" . $part->ctype_secondary . ' --><div class="' . $config["ATTACHMENTDIV"] . '"><a href="' . $config["URLFILESDIR"] . $filename . '" class="' . $config["3GPCLASS"] . '">' . $part->ctype_parameters['name'] . '</a></div>' . "\n"; } } } elseif ($part->ctype_secondary == "x-shockwave-flash") { $attachments["html"][] = '<!--Mime Type of File is ' . $part->ctype_primary . "/" . $part->ctype_secondary . ' -->' . '<object ' . 'classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" ' . 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" ' . 'width="" ' . 'height=""> ' . '<param name="movie" value="' . $config["URLFILESDIR"] . $filename . '"> ' . '<param name="quality" value="high"> ' . '<embed ' . 'src="' . $config["URLFILESDIR"] . $filename . '" ' . 'width="" ' . 'height="" ' . 'quality="high" ' . 'pluginspage="http://www.macromedia.com/go/getflashplayer" ' . 'type="application/x-shockwave-flash" ' . 'width="" ' . 'height=""></embed> ' . '</object>'; } else { $attachments["html"][] = '<!--Mime Type of File is ' . $part->ctype_primary . "/" . $part->ctype_secondary . ' --><a href="' . $config["URLFILESDIR"] . $filename . '">' . $part->ctype_parameters['name'] . '</a>' . "\n"; } if ($cid) { $attachments["cids"][$cid] = array($config["URLFILESDIR"] . $filename, count($attachments["html"]) - 1); } } break; } } return $meta_return; }
function testGreek() { $config = config_GetDefaults(); $message = file_get_contents("data/greek.var"); $email = unserialize($message); $decoded = DecodeMIMEMail($email); print_r($decoded); filter_PreferedText($decoded, 'html'); $attachments = array("html" => array(), "cids" => array(), "image_files" => array()); $content = GetContent($decoded, $attachments, 1, '*****@*****.**', $config); print_r($content); }
font-weight: normal; font-family: Tahoma; } </style> </head> <body> <div class='container'> "; $htmlfooter = " </div> </body> </html> "; $content = GetContent(); if ($content == '') { echo 'No content retrieved from feed, aborting.<br/>'; exit(); } $items = FetchXmlNode('item', $content, true); $mycontent = $htmlheader . "<table border='0' cellspacing='0' cellpadding='0'>"; $mycontent .= "<tr><td class='heading'>Newsletter Archives<br><br></td></tr>"; $numbershown = 1; foreach ($items as $itempos => $item) { if ($numbershown > NUMBER_OF_ENTRIES_TO_SHOW) { break; }
/** * 输出正文 * @param $isMemcached * @param $memcached */ function Show($isMemcached, $memcached) { $templets = GetContent($this->mainDomain . 'index.html', './templets/index.html', $memcached, 86400, $isMemcached); //生成相关链接: $arrKeys = explode(',', $this->keys); $keysLink = ''; foreach ($arrKeys as $v) { $keyEPath = GetEPath($v); $arr = explode('/', $keyEPath); $keysLink .= '<li><a href="http://' . $arr[0] . $this->mainDomain . '/' . $arr[1] . '">' . $v . '</a></li>'; } //生成taglink $tagLink = ''; $arrTagKey = explode(',', $this->tagKey); foreach ($arrTagKey as $v) { $tagEPath = GetEPath($v); $arr = explode('/', $tagEPath); $tagLink .= '<li><a href="http://' . $arr[0] . $this->mainDomain . '/' . $arr[1] . '">' . $v . '</li>'; } //循环内容 //百度 $templetsBaidu = InStr('{baidu:}', '{/baidu}', $templets); $conBaidu = ''; foreach ($this->viewBaidu as $k => $v) { if ($v['title'] == '') { continue; } $temp = str_replace('{url}', 'http://' . $this->baseUrl . 'view-' . $k . '.html', $templetsBaidu); $temp = str_replace('{title}', $v['title'], $temp); $temp = str_replace('{description}', $v['description'], $temp); $conBaidu .= $temp; } $templets = str_replace('{baidu:}' . $templetsBaidu . '{/baidu}', $conBaidu, $templets); $templetsBaidu = null; $conBaidu = null; $temp = null; unset($templetsBaidu, $conBaidu, $temp); //随机小说库生成文章 $templetsRandArticle = InStr('{randarticle:}', '{/randarticle}', $templets); $conRandArticle = ''; foreach ($this->viewRandArticle as $k => $v) { $temp = str_replace('{url}', 'http://' . $this->baseUrl . 'read-' . $k . '.html', $templetsRandArticle); $temp = str_replace('{title}', $v['title'], $temp); $temp = str_replace('{description}', $v['description'], $temp); $conRandArticle .= $temp; } $templets = str_replace('{randarticle:}' . $templetsRandArticle . '{/randarticle}', $conRandArticle, $templets); $templetsRandArticle = null; $conRandArticle = null; $temp = null; unset($templetsRandArticle, $conRandArticle, $temp); //替换数组 $arrReplace = array(); $arrReplace['key'] = $this->key; $arrReplace['keys'] = $this->keys; $arrReplace['title'] = $this->title; $arrReplace['adkey'] = $this->adKey; $arrReplace['keyslink'] = $keysLink; $arrReplace['taglink'] = $tagLink; foreach ($arrReplace as $k => $v) { $templets = str_replace('{' . $k . '}', $v, $templets); } echo $templets; $templets = null; }