| Автоматическая заливка картинок с фотохостингов и прочих сайтов на свой сайт. (DLE) | ![]() |
| Категория: Информация | Опубликовал: Vid | Дата: 9-06-2010, 03:19 | |||
|
Предназначено для администраторов DLE-сайтов, которые задолбались просить, добавляющих новости постеров, заливать картинки и скрины ТОЛЬКО НА СВОЙ САЙТ!
not found
Если у вас публикуют новость, заливая картинки на различные фото-хостинги, то данный МОД, при нажатии кнопки "отправить", автоматически загружает залитую картинку со стороннего сайта на ваш хостинг в папку uploads, наносит, если это необходимо, водяной знак на все изображения и изменяет ссылки в новостях на новые ссылки залитых картинок. Если картинка на удаленном хосте не существует, то новость отправляется снова на модерацию. Пока ссылка на несуществующую картинку не будет удалена, новость не опубликуется. С данным модулем все картинки будут хранится только у вас на сайте. Установка: (Примечание: Во всех кодах комментарии автора мода сохранены.) Открываем engine/classes/parse.class.php Находим: if( ! defined( 'DATALIFEENGINE' ) ) { die( "Hacking attempt!" ); } Ниже добавляем: // added by afwollis start require_once ENGINE_DIR . '/classes/thumb.class.php'; // added by afwollis end Находим: function process($source) { Ниже добавляем: // added by afwollis start global $member_id; require_once ENGINE_DIR.'/inc/image_function.php'; $i_control = new image_controller (); $i_control->source = $source; if ($config['allow_watermark'] == "yes") { $i_control->allow_watermark = true; } $i_control->author = $member_id['name']; $i_control->process2 (); $source = $i_control->source; // added by afwollis end Открываем engine/inc/editnews.php Находим: if( $add_vote ) { Выше добавляем: // added by afwollis start $date_time = $i_control->prefix; $db->query("UPDATE " . PREFIX . "_images set news_id='$item_db[0]' where news_id = '0'"); // added by afwollis start Создаем файл image_function.php и заливаем его в engine/inc/ <?php class image_controller { var $img; var $source = ''; var $allow_watermark = true; var $images = array (); var $thumbs = array (); var $prefix = ''; var $upload_images = array (); function get_images ($content) { global $config; preg_match_all ('#\\[img\\](.+?)\\[/img\\]#ie', $content, $preg_array1); preg_match_all ('#\\[img(.*?)\\](.*?)\\[/img\\]#ie', $content, $preg_array2); /* $pattern1 = "#\[img\](.*?)\[\/img\]#ie"; preg_match_all($pattern1, $content, $preg_array1, PREG_PATTERN_ORDER); $pattern2 = "#\[img(.*)\](.*?)\[\/img\]#ie"; preg_match_all($pattern2, $content, $preg_array2, PREG_PATTERN_ORDER); $preg_array2[1] = $preg_array2[2]; foreach($preg_array2[1] as $link) { $preg_array1[1][] = $link; } $preg_array = $preg_array1; print "$content<br /><pre>"; print_r($preg_array); print "</pre>"; die(); */ $preg_array2[1] = $preg_array2[2]; foreach($preg_array2[1] as $link) { $preg_array1[1][] = $link; } $preg_array = $preg_array1; $domain_name = $config['http_home_url']; if (count ($preg_array[1]) != 0) { foreach ($preg_array[1] as $item) { $item = str_replace("\\\"","",$item); $item = str_replace("\>","",$item); $item = str_replace("\/\>","",$item); $item = str_replace("\/ \>","",$item); if ((!(in_array ($item, $this->images))) and (!preg_match("!$domain_name!si",$item))) { $this->images[] = $item; continue; } } } } function download ($image_url) { global $db, $parse, $config; $image_name = basename ($image_url); $image_arr = explode ('/', $image_name); if (count ($image_arr) != 0) { $image_name = end ($image_arr); } if (!is_dir(ROOT_DIR."/uploads/posts/".FOLDER_PREFIX)) { @mkdir(ROOT_DIR."/uploads/posts/".FOLDER_PREFIX, 0777); @chmod(ROOT_DIR."/uploads/posts/".FOLDER_PREFIX, 0777); @mkdir(ROOT_DIR."/uploads/posts/".FOLDER_PREFIX."/thumbs", 0777); @chmod(ROOT_DIR."/uploads/posts/".FOLDER_PREFIX."/thumbs", 0777); } $config_path_image_upload = 'uploads/posts/'.FOLDER_PREFIX.'/'; $image_name = $this->prefix . '_' . $image_name; @copy ($image_url, UPLOAD_PATH . $image_name); if (is_file(UPLOAD_PATH.$image_name)) { $this->approve = "1"; } else { $this->approve = "0"; } //==== new place start $this->state = true; $this->img['format']=ereg_replace(".*\.(.*)$","\\1",UPLOAD_PATH . $image_name); $this->img['format']=strtoupper($this->img['format']); if ($this->img['format']=="JPG" || $this->img['format']=="JPEG") { $this->img['format']="JPEG"; $this->img['src'] = @imagecreatefromjpeg (UPLOAD_PATH . $image_name); } elseif ($this->img['format']=="PNG") { $this->img['format']="PNG"; $this->img['src'] = @imagecreatefrompng (UPLOAD_PATH . $image_name); } elseif ($this->img['format']=="GIF") { $this->img['format']="GIF"; $this->img['src'] = @imagecreatefromgif (UPLOAD_PATH . $image_name); } else { $this->state = false; } if ($this->state and $this->img['src'] != "") { if ($this->allow_watermark) { $thumb = new thumbnail (UPLOAD_PATH . $image_name); $thumb->jpeg_quality ($config['jpeg_quality']); $thumb->insert_watermark ($config['max_watermark']); $thumb->save (UPLOAD_PATH . $image_name); unset ($thumb); } $thumb = new thumbnail (UPLOAD_PATH . $image_name); if ($thumb->size_auto($config['max_image'])) { $thumb->jpeg_quality ($config['jpeg_quality']); $thumb->save (THUMB_PATH . $image_name); unset ($thumb); } }else{ @unlink(UPLOAD_PATH . $image_name); return false; } if (@file_exists(THUMB_PATH . $image_name)){ $serv_image_url ="[thumb]".$config['http_home_url'] . $config_path_image_upload . $image_name."[/thumb]"; $thumb_url= "[img]".$image_url."[/img]"; $this->source = str_replace ($thumb_url, $serv_image_url, $this->source); }else{ $serv_image_url = $config['http_home_url'] . $config_path_image_upload . $image_name; $this->source = str_replace ($image_url, $serv_image_url, $this->source); } //==== new place end //$news_id = 13; if( intval( $_REQUEST['id'] ) ) $news_id = intval( $_REQUEST['id'] ); else $news_id = 0; $added_time = $this->prefix; $author = $this->author; $row = $db->super_query("SELECT COUNT(*) as count FROM " . PREFIX . "_images where news_id = '$news_id'"); if(!$row['count']) { $inserts = FOLDER_PREFIX."/".$image_name; $db->query("INSERT INTO " . PREFIX . "_images (images, author, news_id, date) values ('$inserts', '$author', '$news_id', '$added_time')"); } else { $row = $db->super_query("SELECT images FROM " . PREFIX . "_images where news_id = '$news_id'"); if ($row['images'] == "") $listimages = array(); else $listimages = explode("|||", $row['images']); foreach ($listimages as $dataimages) { if ($dataimages == FOLDER_PREFIX."/".$image_name) $error_image = "stop"; } if ($error_image != "stop") { $listimages[] = FOLDER_PREFIX."/".$image_name; $row['images'] = implode("|||", $listimages); $db->query("UPDATE " . PREFIX . "_images set images='{$row['images']}' where news_id = '$news_id'"); } } } function process2 () { $this->prefix = time()+ ($config['date_adjust']*60); if (trim ($this->source) != '') { $this->get_images ($this->source); } foreach ($this->images as $image_url) { $this->download ($image_url); } } } if (!(defined ('DATALIFEENGINE'))) { exit ('Hacking attempt!'); } define('FOLDER_PREFIX', date("Y-m")); define ('UPLOAD_PATH', ROOT_DIR."/uploads/posts/".FOLDER_PREFIX."/"); define ('THUMB_PATH', UPLOAD_PATH . "thumbs/"); ?> ВСЕ! Благодарим автора мода и пользуемся! Файлы исходного МОДа можно скачать здесь Внимание! У вас нет прав для просмотра скрытого текста. и тупо залить в соответствующие директории на своем хосте, но у меня с allmysoft.ru мод заработал криво - пришлось ручками проделать то, что я описал выше (свои исходные файлы addnews.php и thumb.class.php не трогал вообще). Тестировал на DLE 8.3 (МОД установлен на данном сайте). |
|||
|
Другие новости по теме:
|
|||
|



