Für V.1.7.8
falls ihr noch eine alte 4images version habt müßt ihr die beiden auskommentierten zeilen im code wieder aktivieren, damit die "Keywords" wieder stimmen.:
//$image_keywords = str_replace(","," ",$image_keywords); // Comment out for V 1.7.8
//$image_keywords = preg_replace("/ /", "", $image_keywords); //Comment out for V 1.7.8
Mit diesem [Mod] ist es möglich Bilder per E-Mail auf dem Server hochzu laden.
Egal ob ein oder mehrere Bilder in einer Mail, oder mehrere Mails mit einem oder mehr Bilder.
So ist es auch möglich, Bilder die mit einem Handy gemacht worden sind auf dem Server hoch zu laden,
vorrausgesetzt ihr habt ein E-Mail fähiges Handy.
Als erster würde ich euch empfehlen wenn ihr einen eigenen Webserver habt,
ein eigenes E-Mail Postfach hierzu anzulegen, ohne geht es natürlich auch.
Aber Achtung alle E-Mails die das Falsche Passwort oder Benutzernamen haben werden automatisch gelöscht.
Zu Modifizierende Dateien:
1.)lang/deutsch/admin.php
2.)admin/setting.php
3.)Eine neue Datei in admin/plugins:
"eMail_upload.php"
1.) sucht in der Datei lang/deutsch/admin.php
$setting['smtp_password'] = "SMTP Passwort";
und fügt danach ein:
//--------------------------------------- Start eMail upload --------------------------------------
$setting['pop_server'] = "POP Server";
$setting['pop_username'] = "POP Username";
$setting['pop_password'] = "POP Passwort";
$setting['pop_code'] = "POP Code";
//--------------------------------------- End eMail upload --------------------------------------
2.) sucht in der datei admin/setting.php:
show_setting_row("smtp_password");
und fügt danach ein:
//--------------------------------------- Start eMail upload --------------------------------------
show_setting_row("pop_server");
show_setting_row("pop_username");
show_setting_row("pop_password");
show_setting_row("pop_code");
//--------------------------------------- End eMail upload --------------------------------------
3.) Entweder ihr legt die Datei neu an oder ihr ladet sie euch aus dem anhang herrunter
und speichert sie unter admin/plugins ab.
<link rel="stylesheet" href="/admin/cpstyle.css">
<body bgcolor="#FFFFFF" text="#0F5475" link="#0F5475" vlink="#0F5475" alink="#0F5475">
<?// PLUGIN_TITLE: eMail_upload.php
/**************************************************************************
* *
* 4images - A Web Based Image Gallery Management System *
* ---------------------------------------------------------------- *
* *
* File: eMail_upload.php *
* Copyright: (C) 2008 Jan Sorgalla *
* Email: jan@4homepages.de *
* Web: http://www.4homepages.de *
* Scriptversion: 1.7.6 *
* File Version: 1.1 (by Rembrandt www.vienna-pictures.com) *
* Never released without support from: Nicky (http://www.nicky.net) *
* *
**************************************************************************
* *
* Dieses Script ist KEINE Freeware. Bitte lesen Sie die Lizenz- *
* bedingungen (Lizenz.txt) für weitere Informationen. *
* --------------------------------------------------------------- *
* This script is NOT freeware! Please read the Copyright Notice *
* (Licence.txt) for further information. *
* *
*************************************************************************/
class receiveMail {
var $server='';
var $username='';
var $password='';
function receiveMail($server='localhost',$username,$password){
// $strConnect='{'.$server.':143}INBOX';
// $strConnect='{'.$server.':110}INBOX';
$strConnect='{'.$server.':110/pop3/notls}';
$this->server=$strConnect;
$this->username=$username;
$this->password=$password;
}
function connect(){
$this->mbox=imap_open($this->server,$this->username,$this->password);
}
function getHeaders($mid){
$mail_header=imap_header($this->mbox,$mid);
$sender=$mail_header->from[0];
$sender_replyto=$mail_header->reply_to[0];
if(strtolower($sender->mailbox)!='mailer-daemon' && strtolower($sender->mailbox)!='postmaster'){
$mail_details=array(
'from'=>strtolower($sender->mailbox).'@'.$sender->host,
'fromName'=>$sender->personal,
'toOth'=>strtolower($sender_replyto->mailbox).'@'.$sender_replyto->host,
'toNameOth'=>$sender_replyto->personal,
'subject'=>$mail_header->subject,
'to'=>strtolower($mail_header->toaddress)
);
}
return $mail_details;
}
function get_mime_type($structure){
$primary_mime_type = array("TEXT", "MULTIPART", "MESSAGE", "APPLICATION", "AUDIO", "IMAGE", "VIDEO", "OTHER");
if($structure->subtype) {
return $primary_mime_type[(int) $structure->type] . '/' . $structure->subtype;
}
return "TEXT/PLAIN";
}
function get_part($mbox, $mid, $mime_type, $structure = false,$part_number = false){
if(!$structure) {
$structure = imap_fetchstructure($mbox, $mid);
}
if($structure) {
if($mime_type == $this->get_mime_type($structure)){
if(!$part_number){
$part_number = "2";
}
$text = imap_fetchbody($mbox, $mid, $part_number);
if($structure->encoding == 3){
return imap_base64($text);
}
else if($structure->encoding == 4){
return imap_qprint($text);
}
else{
return $text;
}
}
if($structure->type == 1){
while(list($index, $sub_structure) = each($structure->parts)){
if($part_number){
$prefix = $part_number . '.';
}
$data = $this->get_part($mbox, $mid, $mime_type, $sub_structure, $prefix . ($index + 1));
if($data){
return $data;
}
}
}
}
return false;
}
function getTotalMails(){
$headers=imap_headers($this->mbox);
return count($headers);
}
function GetAttach($mid,$path){
$structure = imap_fetchstructure($this->mbox,$mid);
$ar="";
foreach($structure->parts as $key => $value){
$enc=$structure->parts[$key]->encoding;
if($structure->parts[$key]->ifdparameters){
$name=$structure->parts[$key]->dparameters[0]->value;
$message = imap_fetchbody($this->mbox,$mid,$key+1);
if ($enc == 1) $message = imap_8bit($message);
if ($enc == 2) $message = imap_binary ($message);
if ($enc == 3) $message = imap_base64 ($message);
if ($enc == 4) $message = imap_qprint($message);
if ($enc == 5) $message = "$message";
if (file_exists($path.$name)){
$num = '1';
while (file_exists ($path . $num . $name)){
$num++;
$name = "Copy_from_$name";
}
}
$name = $num . $name;
$fp=fopen($path.$name,"w+");
chmod ($path.$name, 0666);
fwrite($fp,$message);
fclose($fp);
$ar=$ar.$name.",";
}
}
$ar=substr($ar,0,(strlen($ar)-1));
return $ar;
}
function getBody($mid){
$body = $this->get_part($this->mbox, $mid, "TEXT/HTML");
if ($body == "")
$body = $this->get_part($this->mbox, $mid, "TEXT/PLAIN");
if ($body == ""){
return "";
}
return $body;
}
function deleteMails($mid){
imap_delete($this->mbox,$mid);
}
function close_mailbox(){
imap_close($this->mbox,CL_EXPUNGE);
}
}
flush();
//error_reporting(E_ALL);
$nozip = 1;
define('IN_CP', 1);
$root_path = (false === stristr($_SERVER['PHP_SELF'], "/plugins/")) ? "./../" : "./../../";
define('ROOT_PATH', $root_path);
require(ROOT_PATH.'admin/admin_global.php');
require(ROOT_PATH.'includes/image_utils.php');
$obj= new receiveMail($config['pop_server'],$config['pop_username'],$config['pop_password']);
$obj->connect();
$tot=$obj->getTotalMails();
echo "$tot Neue Nachrichten in ".$config['pop_server']."<br>";
if($tot>0) {
echo '<table cellpadding="0" cellspacing="0" border="0" width="100%">';
echo '<tr>';
echo '<td class="tableheader">';
echo '<table width="100%" border="0" cellspacing="1" cellpadding="3">';
echo '<tr class="tableborder">';
echo '<td class="tableheader" width=3%>Nr.</td>';
echo '<td class="tableheader" width=8%>'.$lang['field_username'].'</td>';
echo '<td class="tableheader" width=15%>'.$lang['field_image_name'].'</td>';
echo '<td class="tableheader" width=8%>'.$lang['field_category'].'</td>';
echo '<td class="tableheader" width=30%>'.$lang['field_keywords'].'</td>';
echo '<td class="tableheader" >'.$lang['field_description'].'</td>';
echo '</tr>';
$bgcounter = 0;
// for($i=$tot;$i>=1;$i--)
for($i=1;$i<=$tot;$i++){
$body=$obj->getBody($i);
$mes = strip_tags($body);
$head=$obj->getHeaders($i);
$array = explode ("*",$head['subject']);
$sql = "SELECT u.user_id, u.user_name, c.cat_id, c.cat_name
FROM (".USERS_TABLE." u, ".CATEGORIES_TABLE." c)
WHERE user_name = '$array[0]' AND cat_id = '$array[2]'
";
$result = $site_db->query($sql);
$row = $site_db->fetch_array($result);
$user_name = $row[user_name];
$user_id = $row[user_id];
$cat_name = $row[cat_name];
$cat_id = $row[cat_id];
if ($array[0] == "$user_name" && $array[1] == $config['pop_code']){
$path = MEDIA_TEMP_PATH."/";
$found = '*';
$pos = strpos($mes, "*");
$image_keywords = substr("$mes", 0, "$pos");
$image_description = substr("$mes", "$pos"+1,-1);
$str=$obj->GetAttach($i,$path);
$br=explode(",",$str);
foreach($br as $key=>$value){
$new_name = "$value";
$pos = strpos($new_name,".");
$image_name = substr("$new_name",0,"$pos");
$src = MEDIA_TEMP_PATH."/".$new_name;
$dest = THUMB_TEMP_PATH."/".$new_name;
$image_info = @getimagesize($src);
$convert_options = init_convert_options();
$dimension = (intval($config['auto_thumbnail_dimension'])) ? intval($config['auto_thumbnail_dimension']) : 100;
$resize_type = (intval($config['auto_thumbnail_resize_type'])) ? intval($config['auto_thumbnail_resize_type']) : 1;
$quality = (intval($config['auto_thumbnail_quality']) && intval($config['auto_thumbnail_quality']) <= 100) ? intval($config['auto_thumbnail_quality']) : 100;
create_thumbnail($src, $dest, $quality, $dimension, $resize_type);
$new_thumb_name = $new_name;
$image_description = preg_replace("/[\n\r]/is", "", $image_description);
$image_description = trim($image_description);
$image_description = preg_replace("/ /", "", $image_description);
$image_keywords = preg_replace("/[\n\r]/is", "", $image_keywords);
//$image_keywords = str_replace(","," ",$image_keywords); // Comment out for V 1.7.8
$image_keywords = trim($image_keywords);
//$image_keywords = preg_replace("/ /", "", $image_keywords); //Comment out for V 1.7.8
$row_bg_number = ($bgcounter++ % 2 == 0) ? "tablerow" : "tablerow2";
echo '<tr class="' .$row_bg_number.'">';
echo '<td width=3%>'.$i.'</td>';
echo '<td width=8%>'.$user_name.'</td>';
echo '<td width=15%>'.$image_name.'</td>';
echo '<td width=8%>'.$cat_name.'</td>';
echo '<td width=30%>'. $image_keywords . '</td>';
echo '<td >'. $image_description . '</td>';
echo '</tr>';
$current_time = time();
$sql = "INSERT INTO ".IMAGES_TEMP_TABLE."
(cat_id, user_id, image_name, image_description, image_keywords, image_date, image_media_file, image_thumb_file)
VALUES
('$cat_id','$user_id','$image_name','$image_description','$image_keywords','$current_time', '$new_name', '$new_thumb_name')";
$result = $site_db->query($sql);
$image_id = $site_db->get_insert_id();
}
}
else{
$obj->deleteMails($i);
$row_bg_number = ($bgcounter++ % 2 == 0) ? "tablerow" : "tablerow2";
echo '<tr class= "'.$row_bg_number.'">';
echo '<td width=3%>'.$i.'</td>';
echo '<td width=10%>'.$head['from'].'</td>';
echo '<td width=15%>'.$image_name.'</td>';
echo '<td width=8%>'.$cat_name.'</td>';
echo '<td class="marktext">Falscher Benutzername oder Passwort!</td>';
echo '<td class="marktext">Mail wurde gelöscht!</td>';
echo '</tr>';
}
flush();
$obj->deleteMails($i); // Delete Mail from Mail box
}
echo '</table></td></tr></table>';
}
$obj->close_mailbox(); //Close Mail Box
?>
</body>
Habt ihr alles richtig gemacht solltet ihr in ACP unter Allgemein/Einstellungen nach "SMTP Passwort"
4 neue Felder sehen:
POP Server: Hier tragt ihr euren pop3 email Server ein.
Habt ihr einen imap Server müsst ihr in der eMail_upload.php den port auf "143" ändern.
POP Username:Login Name vom E-Mail Server
POP Passwort:Login Passwort vom E-Mail Server
POP Code: diese Passwort ist frei wählbar und wird für den Bilder upload benötigt.
Für den Bilder upload werden in der Betreffzeile:
der "4images Username", der "POP Code" und die "Kategorie Nummer" in folgenden Format benötigt:
4images_Username * POP Code * Kategorie Nummer
Beispiel:"Rembrandt*Trs5g*45"
als Trennzeichen unbedingt "*" verwenden.
sollte der Username oder der POP Code falsch sein wird die Mail gelöscht.
Im Text Feld wird genauso verfahren, und als Trennzeichen "*" zwischen Keywords(Stichwörter) und Beschreibung verwendet.
Stichwörter und Beschreibung in folgenden Format:
"keyword1,keyword2,keyword*das ist ein Beispiel"
Wichtig, vor dem "*" die keywords mit "," trennen nach dem "*" die Bildbeschreibung.
Wurden die Bilder mit der "eMail_upload.php" übertragen könnt ihr sie mit "Bilder Freischalten" in eure Galerie übernehmen.
mfg Andi