]> git.mxchange.org Git - friendica.git/commitdiff
initial checkin mailbox reading functions - lots more to do
authorFriendika <info@friendika.com>
Sat, 16 Apr 2011 02:16:37 +0000 (19:16 -0700)
committerFriendika <info@friendika.com>
Sat, 16 Apr 2011 02:16:37 +0000 (19:16 -0700)
.gitignore
boot.php
doc/Making-Friends.md
include/imap.php [new file with mode: 0644]
util/messages.po

index 837b2e8767bf037a87dc6772ae326065fdeefe69..9b3b23a002f7de502c7afa2c46b6317dc3a926ea 100644 (file)
@@ -7,4 +7,5 @@ include/jquery-1.4.2.min.js
 *.out
 *.version*
 push*
+langup
 home.html
index 1ef80e515d75a0a1038a71341b4084f12611766d..0c2c3163b5bd2c803cdac7f06a4681948a562273 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -2,7 +2,7 @@
 
 set_time_limit(0);
 
-define ( 'FRIENDIKA_VERSION',      '2.1.949' );
+define ( 'FRIENDIKA_VERSION',      '2.1.950' );
 define ( 'DFRN_PROTOCOL_VERSION',  '2.21'    );
 define ( 'DB_UPDATE_VERSION',      1051      );
 
index 64f2c53fb4c7887de3f0f64ac1584c837959cb26..dca13b107da290c04d5f7f7f77c4d001e419bb7b 100644 (file)
@@ -17,9 +17,7 @@ If your Friendika site is called "demo.friendika.com" and your username/nickname
 
 Notice this looks just like an email address. It was meant to be that way. It's easy for people to remember.
 
-You *could* also put in the URL of your profile page, such as "http://demo.friendika.com/profile/bob". 
-
-The email-style address is certainly easier.
+You *could* also put in the URL of your "home" page, such as "http://demo.friendika.com/profile/bob", but the email-style address is certainly easier.
 
 When you've submitted the connection page, it will take you back to your own site where you must then login (if necessary) and verify the connection request on *your* site. Once you've done this, the two websites can communicate with each other to complete the process (after your new friend has approved the request). 
 
diff --git a/include/imap.php b/include/imap.php
new file mode 100644 (file)
index 0000000..0187276
--- /dev/null
@@ -0,0 +1,107 @@
+<?php
+
+
+function f9_imap_connect($mailbox,$username,$password) {
+
+       if(! (local_user() && function_exists('imap_open')))
+               return false;
+
+       $mbox = imap_open($mailbox,$username,$password);
+
+       return $mbox;
+       
+}
+
+
+function f9_imap_poll_from($mbox,$str) {
+
+       if(! ($mbox && $str))
+               return false;
+
+       $search = imap_search($mbox,'FROM "' . $str . '"', SE_UID);
+
+       return $search;
+}
+       
+
+function getmsg($mbox,$mid) {
+    // input $mbox = IMAP stream, $mid = message id
+    // output all the following:
+    global $charset,$htmlmsg,$plainmsg,$attachments;
+    $htmlmsg = $plainmsg = $charset = '';
+    $attachments = array();
+
+    // HEADER
+    $h = imap_header($mbox,$mid);
+    // add code here to get date, from, to, cc, subject...
+
+    // BODY
+    $s = imap_fetchstructure($mbox,$mid);
+    if (!$s->parts)  // simple
+        getpart($mbox,$mid,$s,0);  // pass 0 as part-number
+    else {  // multipart: cycle through each part
+        foreach ($s->parts as $partno0=>$p)
+            getpart($mbox,$mid,$p,$partno0+1);
+    }
+}
+
+function getpart($mbox,$mid,$p,$partno) {
+    // $partno = '1', '2', '2.1', '2.1.3', etc for multipart, 0 if simple
+    global $htmlmsg,$plainmsg,$charset,$attachments;
+
+    // DECODE DATA
+    $data = ($partno)?
+        imap_fetchbody($mbox,$mid,$partno):  // multipart
+        imap_body($mbox,$mid);  // simple
+    // Any part may be encoded, even plain text messages, so check everything.
+    if ($p->encoding==4)
+        $data = quoted_printable_decode($data);
+    elseif ($p->encoding==3)
+        $data = base64_decode($data);
+
+    // PARAMETERS
+    // get all parameters, like charset, filenames of attachments, etc.
+    $params = array();
+    if ($p->parameters)
+        foreach ($p->parameters as $x)
+            $params[strtolower($x->attribute)] = $x->value;
+    if ($p->dparameters)
+        foreach ($p->dparameters as $x)
+            $params[strtolower($x->attribute)] = $x->value;
+
+    // ATTACHMENT
+    // Any part with a filename is an attachment,
+    // so an attached text file (type 0) is not mistaken as the message.
+    if ($params['filename'] || $params['name']) {
+        // filename may be given as 'Filename' or 'Name' or both
+        $filename = ($params['filename'])? $params['filename'] : $params['name'];
+        // filename may be encoded, so see imap_mime_header_decode()
+        $attachments[$filename] = $data;  // this is a problem if two files have same name
+    }
+
+    // TEXT
+    if ($p->type==0 && $data) {
+        // Messages may be split in different parts because of inline attachments,
+        // so append parts together with blank row.
+        if (strtolower($p->subtype)=='plain')
+            $plainmsg. = trim($data) ."\n\n";
+        else
+            $htmlmsg. = $data ."<br><br>";
+        $charset = $params['charset'];  // assume all parts are same charset
+    }
+
+    // EMBEDDED MESSAGE
+    // Many bounce notifications embed the original message as type 2,
+    // but AOL uses type 1 (multipart), which is not handled here.
+    // There are no PHP functions to parse embedded messages,
+    // so this just appends the raw source to the main message.
+    elseif ($p->type==2 && $data) {
+        $plainmsg. = $data."\n\n";
+    }
+
+    // SUBPART RECURSION
+    if ($p->parts) {
+        foreach ($p->parts as $partno0=>$p2)
+            getpart($mbox,$mid,$p2,$partno.'.'.($partno0+1));  // 1.2, 1.2.1, etc.
+    }
+}
\ No newline at end of file
index 46543be684d89b322b658ff7c7518d5cff3e74a3..91c47938628d317040558d9c2e4299ba5478486e 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: 2.1.949\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-04-14 20:36-0700\n"
+"POT-Creation-Date: 2011-04-15 01:04-0700\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -43,9 +43,9 @@ msgstr ""
 #: ../../mod/follow.php:8 ../../mod/display.php:133 ../../mod/profiles.php:7
 #: ../../mod/profiles.php:227 ../../mod/invite.php:13 ../../mod/invite.php:54
 #: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:110
-#: ../../wip/photos.php:77 ../../wip/photos.php:723 ../../wip/group.php:19
-#: ../../wip/photos-chris.php:97 ../../wip/photos-chris.php:770
-#: ../../index.php:265
+#: ../../wip/photos.php:77 ../../wip/photos.php:723 ../../wip/follow2.php:8
+#: ../../wip/group.php:19 ../../wip/photos-chris.php:97
+#: ../../wip/photos-chris.php:770 ../../index.php:265
 msgid "Permission denied."
 msgstr ""
 
@@ -2006,21 +2006,21 @@ msgstr ""
 msgid "Welcome back "
 msgstr ""
 
-#: ../../mod/follow.php:186
+#: ../../mod/follow.php:32 ../../wip/follow2.php:186
 msgid "The profile address specified does not provide adequate information."
 msgstr ""
 
-#: ../../mod/follow.php:192
+#: ../../mod/follow.php:38 ../../wip/follow2.php:192
 msgid ""
 "Limited profile. This person will be unable to receive direct/personal "
 "notifications from you."
 msgstr ""
 
-#: ../../mod/follow.php:247
+#: ../../mod/follow.php:89 ../../wip/follow2.php:247
 msgid "Unable to retrieve contact information."
 msgstr ""
 
-#: ../../mod/follow.php:293
+#: ../../mod/follow.php:135 ../../wip/follow2.php:293
 msgid "following"
 msgstr ""