コード例 #1
0
 public function getFeed()
 {
     function fetchUrl($url)
     {
         $ch = curl_init();
         curl_setopt($ch, CURLOPT_URL, $url);
         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
         curl_setopt($ch, CURLOPT_TIMEOUT, 20);
         // You may need to add the line below
         // curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
         $feedData = curl_exec($ch);
         curl_close($ch);
         return $feedData;
     }
     if ($this->fields) {
         $fields_array = explode(',', $this->fields);
         foreach ($fields_array as $k => $v) {
             if (!in_array($v, $this->default_fields)) {
                 array_push($this->default_fields, $v);
             }
         }
     }
     $final_fields = implode(',', $this->default_fields);
     //Retrieve auth token via old method
     $tokenFetchUrl = "https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id={$this->app_id}&client_secret={$this->app_secret}";
     $authToken = fetchUrl($tokenFetchUrl);
     $jsonFetchUrl = "https://graph.facebook.com/{$this->profile_id}/feed?{$authToken}&fields={$final_fields}&limit={$this->limit}";
     //echo $jsonFetchUrl . '<br>';
     $json_object = fetchUrl($jsonFetchUrl);
     return $json_object;
 }
コード例 #2
0
ファイル: index.php プロジェクト: alpe88/wp.itc210_psa-pbk
function getData($pid, $l, $appid, $appsec)
{
    $authToken = fetchUrl("https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id={$appid}&client_secret={$appsec}");
    $json_object = fetchUrl("https://graph.facebook.com/{$pid}/feed?{$authToken}&limit={$l}");
    $json_object = fetchUrl("https://graph.facebook.com/{$pid}/");
    echo $json_object;
    $json_output = json_decode($json_object);
    foreach ($json_output->data as $post) {
        echo "<h2>{$post->name}</h2><br />";
        echo "{$post->message}<br /><br />";
    }
}
コード例 #3
0
ファイル: sendemaillib.php プロジェクト: hktang/phplist3
function precacheMessage($messageid, $forwardContent = 0)
{
    global $cached, $tables;
    $domain = getConfig('domain');
    #    $message = Sql_query("select * from {$GLOBALS["tables"]["message"]} where id = $messageid");
    #    $cached[$messageid] = array();
    #    $message = Sql_fetch_array($message);
    $message = loadMessageData($messageid);
    ## the reply to is actually not in use
    if (preg_match('/([^ ]+@[^ ]+)/', $message['replyto'], $regs)) {
        # if there is an email in the from, rewrite it as "name <email>"
        $message['replyto'] = str_replace($regs[0], '', $message['replyto']);
        $cached[$messageid]['replytoemail'] = $regs[0];
        # if the email has < and > take them out here
        $cached[$messageid]['replytoemail'] = str_replace('<', '', $cached[$messageid]['replytoemail']);
        $cached[$messageid]['replytoemail'] = str_replace('>', '', $cached[$messageid]['replytoemail']);
        # make sure there are no quotes around the name
        $cached[$messageid]['replytoname'] = str_replace('"', '', ltrim(rtrim($message['replyto'])));
    } elseif (strpos($message['replyto'], ' ')) {
        # if there is a space, we need to add the email
        $cached[$messageid]['replytoname'] = $message['replyto'];
        $cached[$messageid]['replytoemail'] = "listmaster@{$domain}";
    } else {
        if (!empty($message['replyto'])) {
            $cached[$messageid]['replytoemail'] = $message['replyto'] . "@{$domain}";
            ## makes more sense not to add the domain to the word, but the help says it does
            ## so let's keep it for now
            $cached[$messageid]['replytoname'] = $message['replyto'] . "@{$domain}";
        }
    }
    $cached[$messageid]['fromname'] = $message['fromname'];
    $cached[$messageid]['fromemail'] = $message['fromemail'];
    $cached[$messageid]['to'] = $message['tofield'];
    #0013076: different content when forwarding 'to a friend'
    $cached[$messageid]['subject'] = $forwardContent ? stripslashes($message['forwardsubject']) : $message['subject'];
    #0013076: different content when forwarding 'to a friend'
    $cached[$messageid]['content'] = $forwardContent ? stripslashes($message['forwardmessage']) : $message['message'];
    if (USE_MANUAL_TEXT_PART && !$forwardContent) {
        $cached[$messageid]['textcontent'] = $message['textmessage'];
    } else {
        $cached[$messageid]['textcontent'] = '';
    }
    #  var_dump($cached);exit;
    #0013076: different content when forwarding 'to a friend'
    $cached[$messageid]['footer'] = $forwardContent ? stripslashes($message['forwardfooter']) : $message['footer'];
    if (strip_tags($cached[$messageid]['footer']) != $cached[$messageid]['footer']) {
        $cached[$messageid]['textfooter'] = HTML2Text($cached[$messageid]['footer']);
        $cached[$messageid]['htmlfooter'] = $cached[$messageid]['footer'];
    } else {
        $cached[$messageid]['textfooter'] = $cached[$messageid]['footer'];
        $cached[$messageid]['htmlfooter'] = parseText($cached[$messageid]['footer']);
    }
    $cached[$messageid]['htmlformatted'] = strip_tags($cached[$messageid]['content']) != $cached[$messageid]['content'];
    $cached[$messageid]['sendformat'] = $message['sendformat'];
    if ($message['template']) {
        $req = Sql_Fetch_Row_Query("select template from {$GLOBALS['tables']['template']} where id = {$message['template']}");
        $cached[$messageid]['template'] = stripslashes($req[0]);
        $cached[$messageid]['templateid'] = $message['template'];
        #   dbg("TEMPLATE: ".$req[0]);
    } else {
        $cached[$messageid]['template'] = '';
        $cached[$messageid]['templateid'] = 0;
    }
    ## @@ put this here, so it can become editable per email sent out at a later stage
    $cached[$messageid]['html_charset'] = 'UTF-8';
    #getConfig("html_charset");
    ## @@ need to check on validity of charset
    if (!$cached[$messageid]['html_charset']) {
        $cached[$messageid]['html_charset'] = 'UTF-8';
        #'iso-8859-1';
    }
    $cached[$messageid]['text_charset'] = 'UTF-8';
    #getConfig("text_charset");
    if (!$cached[$messageid]['text_charset']) {
        $cached[$messageid]['text_charset'] = 'UTF-8';
        #'iso-8859-1';
    }
    ## if we are sending a URL that contains user attributes, we cannot pre-parse the message here
    ## but that has quite some impact on speed. So check if that's the case and apply
    $cached[$messageid]['userspecific_url'] = preg_match('/\\[.+\\]/', $message['sendurl']);
    if (!$cached[$messageid]['userspecific_url']) {
        ## Fetch external content here, because URL does not contain placeholders
        if ($GLOBALS['can_fetchUrl'] && preg_match("/\\[URL:([^\\s]+)\\]/i", $cached[$messageid]['content'], $regs)) {
            $remote_content = fetchUrl($regs[1], array());
            #  $remote_content = fetchUrl($message['sendurl'],array());
            # @@ don't use this
            #      $remote_content = includeStyles($remote_content);
            if ($remote_content) {
                $cached[$messageid]['content'] = str_replace($regs[0], $remote_content, $cached[$messageid]['content']);
                #  $cached[$messageid]['content'] = $remote_content;
                $cached[$messageid]['htmlformatted'] = strip_tags($remote_content) != $remote_content;
                ## 17086 - disregard any template settings when we have a valid remote URL
                $cached[$messageid]['template'] = null;
                $cached[$messageid]['templateid'] = null;
            } else {
                #print Error(s('unable to fetch web page for sending'));
                logEvent('Error fetching URL: ' . $message['sendurl'] . ' cannot proceed');
                return false;
            }
        }
        if (VERBOSE && !empty($GLOBALS['getspeedstats'])) {
            output('fetch URL end');
        }
        /*
        print $message['sendurl'];
        print $remote_content;exit;
        */
    }
    // end if not userspecific url
    if ($cached[$messageid]['htmlformatted']) {
        #   $cached[$messageid]["content"] = compressContent($cached[$messageid]["content"]);
    }
    $cached[$messageid]['google_track'] = $message['google_track'];
    /*
        else {
    print $message['sendurl'];
    exit;
    }
    */
    foreach ($GLOBALS['plugins'] as $plugin) {
        $plugin->processPrecachedCampaign($messageid, $cached[$messageid]);
    }
    if (VERBOSE && !empty($GLOBALS['getspeedstats'])) {
        output('parse config start');
    }
    /*
     * this is not a good idea, as it'll replace eg "unsubscribeurl" with a general one instead of personalised
     *   if (is_array($GLOBALS["default_config"])) {
      foreach($GLOBALS["default_config"] as $key => $val) {
        if (is_array($val)) {
          $cached[$messageid]['content'] = str_ireplace("[$key]",getConfig($key),$cached[$messageid]['content']);
          $cached[$messageid]["textcontent"] = str_ireplace("[$key]",getConfig($key),$cached[$messageid]["textcontent"]);
          $cached[$messageid]["textfooter"] = str_ireplace("[$key]",getConfig($key),$cached[$messageid]['textfooter']);
          $cached[$messageid]["htmlfooter"] = str_ireplace("[$key]",getConfig($key),$cached[$messageid]['htmlfooter']);
        }
      }
    }
    */
    if (VERBOSE && !empty($GLOBALS['getspeedstats'])) {
        output('parse config end');
    }
    ## ##17233 not that many fields are actually useful, so don't blatantly use all
    #  foreach($message as $key => $val) {
    foreach (array('subject', 'id', 'fromname', 'fromemail') as $key) {
        $val = $message[$key];
        if (!is_array($val)) {
            $cached[$messageid]['content'] = str_ireplace("[{$key}]", $val, $cached[$messageid]['content']);
            $cached[$messageid]['textcontent'] = str_ireplace("[{$key}]", $val, $cached[$messageid]['textcontent']);
            $cached[$messageid]['textfooter'] = str_ireplace("[{$key}]", $val, $cached[$messageid]['textfooter']);
            $cached[$messageid]['htmlfooter'] = str_ireplace("[{$key}]", $val, $cached[$messageid]['htmlfooter']);
        }
    }
    /*
     *  cache message owner and list owner attribute values
     */
    $cached[$messageid]['adminattributes'] = array();
    $result = Sql_Query("SELECT a.name, aa.value\n        FROM {$tables['adminattribute']} a\n        JOIN {$tables['admin_attribute']} aa ON a.id = aa.adminattributeid\n        JOIN {$tables['message']} m ON aa.adminid = m.owner\n        WHERE m.id = {$messageid}");
    if ($result !== false) {
        while ($att = Sql_Fetch_Array($result)) {
            $cached[$messageid]['adminattributes']['OWNER.' . $att['name']] = $att['value'];
        }
    }
    $result = Sql_Query("SELECT DISTINCT l.owner\n        FROM {$tables['list']} AS l\n        JOIN  {$tables['listmessage']} AS lm ON lm.listid = l.id\n        WHERE lm.messageid = {$messageid}");
    if ($result !== false && Sql_Num_Rows($result) == 1) {
        $row = Sql_Fetch_Assoc($result);
        $listOwner = $row['owner'];
        $att_req = Sql_Query("SELECT a.name, aa.value\n            FROM {$tables['adminattribute']} a\n            JOIN {$tables['admin_attribute']} aa ON a.id = aa.adminattributeid\n            WHERE aa.adminid = {$listOwner}");
        while ($att = Sql_Fetch_Array($att_req)) {
            $cached[$messageid]['adminattributes']['LISTOWNER.' . $att['name']] = $att['value'];
        }
    }
    $baseurl = $GLOBALS['website'];
    if (defined('UPLOADIMAGES_DIR') && UPLOADIMAGES_DIR) {
        ## escape subdirectories, otherwise this renders empty
        $dir = str_replace('/', '\\/', UPLOADIMAGES_DIR);
        $cached[$messageid]['content'] = preg_replace('/<img(.*)src="\\/' . $dir . '(.*)>/iU', '<img\\1src="' . $GLOBALS['public_scheme'] . '://' . $baseurl . '/' . UPLOADIMAGES_DIR . '\\2>', $cached[$messageid]['content']);
    }
    foreach (array('content', 'template', 'htmlfooter') as $element) {
        $cached[$messageid][$element] = parseLogoPlaceholders($cached[$messageid][$element]);
    }
    return 1;
}
コード例 #4
0
ファイル: index.php プロジェクト: MarcelvC/phplist3
 }
 $news = array();
 // we only need it once per language per system, regardless of admins
 $phpListNewsLastChecked = getConfig('phpListNewsLastChecked-' . $_SESSION['adminlanguage']['iso']);
 if (empty($phpListNewsLastChecked) || $phpListNewsLastChecked + 86400 < time()) {
     SaveConfig('phpListNewsLastChecked-' . $_SESSION['adminlanguage']['iso'], time(), 0, 1);
     $newsIndex = fetchUrl(PHPLISTNEWSROOT . '/' . VERSION . '-' . $_SESSION['adminlanguage']['iso'] . '-index.txt');
     SaveConfig('phpListNewsIndex-' . $_SESSION['adminlanguage']['iso'], $newsIndex, 0, 1);
 }
 $newsIndex = getConfig('phpListNewsIndex-' . $_SESSION['adminlanguage']['iso']);
 if (!empty($newsIndex)) {
     $newsitems = explode("\n", $newsIndex);
     foreach ($newsitems as $newsitem) {
         $newsitem = trim($newsitem);
         if (!empty($newsitem) && !in_array(md5($newsitem), $readmessages) && (empty($viewedmessages[md5($newsitem)]['count']) || $viewedmessages[md5($newsitem)]['count'] < 20)) {
             $newscontent = fetchUrl(PHPLISTNEWSROOT . '/' . $newsitem);
             if (!empty($newscontent)) {
                 $news[$newsitem] = $newscontent;
             }
         }
     }
     ksort($news);
     $newscontent = '';
     foreach ($news as $newsitem => $newscontent) {
         $newsid = md5($newsitem);
         if (!isset($viewedmessages[$newsid])) {
             $viewedmessages[$newsid] = array('time' => time(), 'count' => 1);
         } else {
             ++$viewedmessages[$newsid]['count'];
         }
         SaveConfig('viewednews' . $_SESSION['logindetails']['id'], serialize($viewedmessages), 0, 1);
コード例 #5
0
function sendEmail($messageid, $email, $hash, $htmlpref = 0, $rssitems = array(), $forwardedby = array())
{
    global $strThisLink, $PoweredByImage, $PoweredByText, $cached, $website;
    if ($email == "") {
        return 0;
    }
    #0013076: different content when forwarding 'to a friend'
    if (FORWARD_ALTERNATIVE_CONTENT) {
        $forwardContent = sizeof($forwardedby) > 0;
        $messagedata = loadMessageData($messageid);
    } else {
        $forwardContent = 0;
    }
    if (empty($cached[$messageid])) {
        $domain = getConfig("domain");
        $message = Sql_query("select * from {$GLOBALS["tables"]["message"]} where id = {$messageid}");
        $cached[$messageid] = array();
        $message = Sql_fetch_array($message);
        if (ereg("([^ ]+@[^ ]+)", $message["fromfield"], $regs)) {
            # if there is an email in the from, rewrite it as "name <email>"
            $message["fromfield"] = ereg_replace($regs[0], "", $message["fromfield"]);
            $cached[$messageid]["fromemail"] = $regs[0];
            # if the email has < and > take them out here
            $cached[$messageid]["fromemail"] = ereg_replace("<", "", $cached[$messageid]["fromemail"]);
            $cached[$messageid]["fromemail"] = ereg_replace(">", "", $cached[$messageid]["fromemail"]);
            # make sure there are no quotes around the name
            $cached[$messageid]["fromname"] = ereg_replace('"', "", ltrim(rtrim($message["fromfield"])));
        } elseif (ereg(" ", $message["fromfield"], $regs)) {
            # if there is a space, we need to add the email
            $cached[$messageid]["fromname"] = $message["fromfield"];
            $cached[$messageid]["fromemail"] = "listmaster@{$domain}";
        } else {
            $cached[$messageid]["fromemail"] = $message["fromfield"] . "@{$domain}";
            ## makes more sense not to add the domain to the word, but the help says it does
            ## so let's keep it for now
            $cached[$messageid]["fromname"] = $message["fromfield"] . "@{$domain}";
        }
        # erase double spacing
        while (ereg("  ", $cached[$messageid]["fromname"])) {
            $cached[$messageid]["fromname"] = eregi_replace("  ", " ", $cached[$messageid]["fromname"]);
        }
        ## this has weird effects when used with only one word, so take it out for now
        #    $cached[$messageid]["fromname"] = eregi_replace("@","",$cached[$messageid]["fromname"]);
        $cached[$messageid]["fromname"] = trim($cached[$messageid]["fromname"]);
        $cached[$messageid]["to"] = $message["tofield"];
        #0013076: different content when forwarding 'to a friend'
        $cached[$messageid]["subject"] = $forwardContent ? stripslashes($messagedata["forwardsubject"]) : $message["subject"];
        $cached[$messageid]["replyto"] = $message["replyto"];
        #0013076: different content when forwarding 'to a friend'
        $cached[$messageid]["content"] = $forwardContent ? stripslashes($messagedata["forwardmessage"]) : $message["message"];
        if (USE_MANUAL_TEXT_PART && !$forwardContent) {
            $cached[$messageid]["textcontent"] = $message["textmessage"];
        } else {
            $cached[$messageid]["textcontent"] = '';
        }
        #0013076: different content when forwarding 'to a friend'
        $cached[$messageid]["footer"] = $forwardContent ? stripslashes($messagedata["forwardfooter"]) : $message["footer"];
        $cached[$messageid]["htmlformatted"] = $message["htmlformatted"];
        $cached[$messageid]["sendformat"] = $message["sendformat"];
        if ($message["template"]) {
            $req = Sql_Fetch_Row_Query("select template from {$GLOBALS["tables"]["template"]} where id = {$message["template"]}");
            $cached[$messageid]["template"] = stripslashes($req[0]);
            $cached[$messageid]["templateid"] = $message["template"];
            #   dbg("TEMPLATE: ".$req[0]);
        } else {
            $cached[$messageid]["template"] = '';
            $cached[$messageid]["templateid"] = 0;
        }
        ## @@ put this here, so it can become editable per email sent out at a later stage
        $cached[$messageid]["html_charset"] = getConfig("html_charset");
        ## @@ need to check on validity of charset
        if (!$cached[$messageid]["html_charset"]) {
            $cached[$messageid]["html_charset"] = 'iso-8859-1';
        }
        $cached[$messageid]["text_charset"] = getConfig("text_charset");
        if (!$cached[$messageid]["text_charset"]) {
            $cached[$messageid]["text_charset"] = 'iso-8859-1';
        }
    }
    # else
    #  dbg("Using cached {$cached[$messageid]["fromemail"]}");
    if (VERBOSE) {
        output($GLOBALS['I18N']->get('sendingmessage') . ' ' . $messageid . ' ' . $GLOBALS['I18N']->get('withsubject') . ' ' . $cached[$messageid]["subject"] . ' ' . $GLOBALS['I18N']->get('to') . ' ' . $email);
    }
    # erase any placeholders that were not found
    #  $msg = ereg_replace("\[[A-Z ]+\]","",$msg);
    #0011857: forward to friend, retain attributes
    if ($hash == 'forwarded' && defined('KEEPFORWARDERATTRIBUTES') && KEEPFORWARDERATTRIBUTES) {
        $user_att_values = getUserAttributeValues($forwardedby['email']);
    } else {
        $user_att_values = getUserAttributeValues($email);
    }
    $userdata = Sql_Fetch_Assoc_Query(sprintf('select * from %s where email = "%s"', $GLOBALS["tables"]["user"], $email));
    $url = getConfig("unsubscribeurl");
    $sep = ereg('\\?', $url) ? '&' : '?';
    $html["unsubscribe"] = sprintf('<a href="%s%suid=%s">%s</a>', $url, $sep, $hash, $strThisLink);
    $text["unsubscribe"] = sprintf('%s%suid=%s', $url, $sep, $hash);
    $html["unsubscribeurl"] = sprintf('%s%suid=%s', $url, $sep, $hash);
    $text["unsubscribeurl"] = sprintf('%s%suid=%s', $url, $sep, $hash);
    #0013076: Blacklisting posibility for unknown users
    $url = getConfig("blacklisturl");
    $sep = ereg('\\?', $url) ? '&' : '?';
    $html["blacklist"] = sprintf('<a href="%s%semail=%s">%s</a>', $url, $sep, $email, $strThisLink);
    $text["blacklist"] = sprintf('%s%semail=%s', $url, $sep, $email);
    $html["blacklisturl"] = sprintf('%s%semail=%s', $url, $sep, $email);
    $text["blacklisturl"] = sprintf('%s%semail=%s', $url, $sep, $email);
    #0013076: Problem found during testing: mesage part must be parsed correctly as well.
    if ($forwardContent) {
        $html["unsubscribe"] = $html["blacklist"];
        $text["unsubscribe"] = $text["blacklist"];
    }
    $url = getConfig("subscribeurl");
    $sep = ereg('\\?', $url) ? '&' : '?';
    $html["subscribe"] = sprintf('<a href="%s">%s</a>', $url, $strThisLink);
    $text["subscribe"] = sprintf('%s', $url);
    $html["subscribeurl"] = sprintf('%s', $url);
    $text["subscribeurl"] = sprintf('%s', $url);
    #?mid=1&id=1&uid=a9f35f130593a3d6b89cfe5cfb32a0d8&p=forward&email=michiel%40tincan.co.uk&
    $url = getConfig("forwardurl");
    $sep = ereg('\\?', $url) ? '&' : '?';
    $html["forward"] = sprintf('<a href="%s%suid=%s&mid=%d">%s</a>', $url, $sep, $hash, $messageid, $strThisLink);
    $text["forward"] = sprintf('%s%suid=%s&mid=%d', $url, $sep, $hash, $messageid);
    $html["forwardurl"] = sprintf('%s%suid=%s&mid=%d', $url, $sep, $hash, $messageid);
    $text["forwardurl"] = $text["forward"];
    $url = getConfig("forwardurl");
    # make sure there are no newlines, otherwise they get turned into <br/>s
    $html["forwardform"] = sprintf('<form method="get" action="%s" name="forwardform" class="forwardform"><input type=hidden name="uid" value="%s" /><input type=hidden name="mid" value="%d" /><input type=hidden name="p" value="forward" /><input type=text name="email" value="" class="forwardinput" /><input name="Send" type="submit" value="%s" class="forwardsubmit"/></form>', $url, $hash, $messageid, $GLOBALS['strForward']);
    $text["signature"] = "\n\n--\nPowered by PHPlist, www.phplist.com --\n\n";
    $url = getConfig("preferencesurl");
    $sep = ereg('\\?', $url) ? '&' : '?';
    $html["preferences"] = sprintf('<a href="%s%suid=%s">%s</a>', $url, $sep, $hash, $strThisLink);
    $text["preferences"] = sprintf('%s%suid=%s', $url, $sep, $hash);
    $html["preferencesurl"] = sprintf('%s%suid=%s', $url, $sep, $hash);
    $text["preferencesurl"] = sprintf('%s%suid=%s', $url, $sep, $hash);
    /*
      We request you retain the signature below in your emails including the links.
      This not only gives respect to the large amount of time given freely
      by the developers  but also helps build interest, traffic and use of
      PHPlist, which is beneficial to it's future development.
    
      You can configure how the credits are added to your pages and emails in your
      config file.
    
      Michiel Dethmers, Tincan Ltd 2003, 2004, 2005, 2006
    */
    if (!EMAILTEXTCREDITS) {
        $html["signature"] = $PoweredByImage;
        #'<div align="center" id="signature"><a href="http://www.phplist.com"><img src="powerphplist.png" width=88 height=31 title="Powered by PHPlist" alt="Powered by PHPlist" border="0"></a></div>';
        # oops, accidentally became spyware, never intended that, so take it out again :-)
        $html["signature"] = preg_replace('/src=".*power-phplist.png"/', 'src="powerphplist.png"', $html["signature"]);
    } else {
        $html["signature"] = $PoweredByText;
    }
    $content = $cached[$messageid]["content"];
    if (preg_match("/##LISTOWNER=(.*)/", $content, $regs)) {
        $listowner = $regs[1];
        $content = ereg_replace($regs[0], "", $content);
    } else {
        $listowner = 0;
    }
    ## Fetch external content
    if ($GLOBALS["has_pear_http_request"] && preg_match("/\\[URL:([^\\s]+)\\]/i", $content, $regs)) {
        while (isset($regs[1]) && strlen($regs[1])) {
            $url = $regs[1];
            if (!preg_match('/^http/i', $url)) {
                $url = 'http://' . $url;
            }
            $remote_content = fetchUrl($url, $userdata);
            if ($remote_content) {
                $content = eregi_replace(preg_quote($regs[0]), $remote_content, $content);
                $cached[$messageid]["htmlformatted"] = strip_tags($content) != $content;
            } else {
                logEvent("Error fetching URL: {$regs['1']} to send to {$email}");
                return 0;
            }
            preg_match("/\\[URL:([^\\s]+)\\]/i", $content, $regs);
        }
    }
    #~Bas 0008857
    // @@ Switched off for now, needs rigid testing, or config setting
    // $content = mailto2href($content);
    // $content = encodeLinks($content);
    ## Fill text and html versions depending on given versions.
    if ($cached[$messageid]["htmlformatted"]) {
        if (!$cached[$messageid]["textcontent"]) {
            $textcontent = stripHTML($content);
        } else {
            $textcontent = $cached[$messageid]["textcontent"];
        }
        $htmlcontent = $content;
    } else {
        #    $textcontent = $content;
        if (!$cached[$messageid]["textcontent"]) {
            $textcontent = $content;
        } else {
            $textcontent = $cached[$messageid]["textcontent"];
        }
        $htmlcontent = parseText($content);
    }
    $defaultstyle = getConfig("html_email_style");
    $adddefaultstyle = 0;
    if ($cached[$messageid]["template"]) {
        # template used
        $htmlmessage = eregi_replace("\\[CONTENT\\]", $htmlcontent, $cached[$messageid]["template"]);
    } else {
        # no template used
        $htmlmessage = $htmlcontent;
        $adddefaultstyle = 1;
    }
    $textmessage = $textcontent;
    ## Parse placeholders
    #0013076: Blacklisting posibility for unknown users
    foreach (array("forwardform", "subscribe", "preferences", "unsubscribe", "signature", 'blacklist') as $item) {
        if (eregi('\\[' . $item . '\\]', $htmlmessage, $regs)) {
            $htmlmessage = eregi_replace('\\[' . $item . '\\]', $html[$item], $htmlmessage);
            //      unset($html[$item]); //ASK: Why was this done? It breaks placeholders in the footer
        }
        if (eregi('\\[' . $item . '\\]', $textmessage, $regs)) {
            $textmessage = eregi_replace('\\[' . $item . '\\]', $text[$item], $textmessage);
            //      unset($text[$item]);
        }
    }
    #0013076: Blacklisting posibility for unknown users
    foreach (array("forward", "forwardurl", "subscribeurl", "preferencesurl", "unsubscribeurl", 'blacklisturl') as $item) {
        if (eregi('\\[' . $item . '\\]', $htmlmessage, $regs)) {
            $htmlmessage = eregi_replace('\\[' . $item . '\\]', $html[$item], $htmlmessage);
        }
        if (eregi('\\[' . $item . '\\]', $textmessage, $regs)) {
            $textmessage = eregi_replace('\\[' . $item . '\\]', $text[$item], $textmessage);
        }
    }
    if ($hash != 'forwarded') {
        $text['footer'] = $cached[$messageid]["footer"];
        $html['footer'] = $cached[$messageid]["footer"];
    } else {
        #0013076: different content when forwarding 'to a friend'
        if (FORWARD_ALTERNATIVE_CONTENT) {
            $text['footer'] = stripslashes($messagedata["forwardfooter"]);
        } else {
            $text['footer'] = getConfig('forwardfooter');
        }
        $html['footer'] = $text['footer'];
    }
    $text["footer"] = eregi_replace("\\[SUBSCRIBE\\]", $text["subscribe"], $text['footer']);
    $html["footer"] = eregi_replace("\\[SUBSCRIBE\\]", $html["subscribe"], $html['footer']);
    $text["footer"] = eregi_replace("\\[PREFERENCES\\]", $text["preferences"], $text["footer"]);
    $html["footer"] = eregi_replace("\\[PREFERENCES\\]", $html["preferences"], $html["footer"]);
    $text["footer"] = eregi_replace("\\[FORWARD\\]", $text["forward"], $text["footer"]);
    $html["footer"] = eregi_replace("\\[FORWARD\\]", $html["forward"], $html["footer"]);
    $html["footer"] = eregi_replace("\\[FORWARDFORM\\]", $html["forwardform"], $html["footer"]);
    if (sizeof($forwardedby) && isset($forwardedby['email'])) {
        $htmlmessage = eregi_replace("\\[FORWARDEDBY]", $forwardedby["email"], $htmlmessage);
        $textmessage = eregi_replace("\\[FORWARDEDBY]", $forwardedby["email"], $textmessage);
        $html["footer"] = eregi_replace("\\[FORWARDEDBY]", $forwardedby["email"], $html["footer"]);
        $text["footer"] = eregi_replace("\\[FORWARDEDBY]", $forwardedby["email"], $text["footer"]);
        $text["footer"] = eregi_replace("\\[BLACKLIST\\]", $text["blacklist"], $text['footer']);
        $html["footer"] = eregi_replace("\\[BLACKLIST\\]", $html["blacklist"], $html['footer']);
        $text["footer"] = eregi_replace("\\[UNSUBSCRIBE\\]", $text["blacklist"], $text['footer']);
        $html["footer"] = eregi_replace("\\[UNSUBSCRIBE\\]", $html["blacklist"], $html['footer']);
    } else {
        $text["footer"] = eregi_replace("\\[UNSUBSCRIBE\\]", $text["unsubscribe"], $text['footer']);
        $html["footer"] = eregi_replace("\\[UNSUBSCRIBE\\]", $html["unsubscribe"], $html['footer']);
    }
    $html["footer"] = '<div class="emailfooter">' . nl2br($html["footer"]) . '</div>';
    if (eregi("\\[FOOTER\\]", $htmlmessage)) {
        $htmlmessage = eregi_replace("\\[FOOTER\\]", $html["footer"], $htmlmessage);
    } elseif ($html["footer"]) {
        $htmlmessage = addHTMLFooter($htmlmessage, '<br /><br />' . $html["footer"]);
    }
    if (eregi("\\[SIGNATURE\\]", $htmlmessage)) {
        $htmlmessage = eregi_replace("\\[SIGNATURE\\]", $html["signature"], $htmlmessage);
    } elseif ($html["signature"]) {
        $htmlmessage .= '<br />' . $html["signature"];
    }
    if (eregi("\\[FOOTER\\]", $textmessage)) {
        $textmessage = eregi_replace("\\[FOOTER\\]", $text["footer"], $textmessage);
    } else {
        $textmessage .= "\n\n" . $text["footer"];
    }
    if (eregi("\\[SIGNATURE\\]", $textmessage)) {
        $textmessage = eregi_replace("\\[SIGNATURE\\]", $text["signature"], $textmessage);
    } else {
        $textmessage .= "\n" . $text["signature"];
    }
    #  $req = Sql_Query(sprintf('select filename,data from %s where template = %d',
    #    $GLOBALS["tables"]["templateimage"],$cached[$messageid]["templateid"]));
    $htmlmessage = eregi_replace("\\[USERID\\]", $hash, $htmlmessage);
    $textmessage = eregi_replace("\\[USERID\\]", $hash, $textmessage);
    $htmlmessage = preg_replace("/\\[USERTRACK\\]/i", '<img src="' . $GLOBALS['scheme'] . '://' . $website . $GLOBALS["pageroot"] . '/ut.php?u=' . $hash . '&m=' . $messageid . '" width="1" height="1" border="0">', $htmlmessage, 1);
    $htmlmessage = eregi_replace("\\[USERTRACK\\]", '', $htmlmessage);
    if ($listowner) {
        $att_req = Sql_Query("select name,value from {$GLOBALS["tables"]["adminattribute"]},{$GLOBALS["tables"]["admin_attribute"]} where {$GLOBALS["tables"]["adminattribute"]}.id = {$GLOBALS["tables"]["admin_attribute"]}.adminattributeid and {$GLOBALS["tables"]["admin_attribute"]}.adminid = {$listowner}");
        while ($att = Sql_Fetch_Array($att_req)) {
            $htmlmessage = preg_replace("#\\[LISTOWNER." . strtoupper(preg_quote($att["name"])) . "\\]#", $att["value"], $htmlmessage);
        }
    }
    if (is_array($GLOBALS["default_config"])) {
        foreach ($GLOBALS["default_config"] as $key => $val) {
            if (is_array($val)) {
                $htmlmessage = eregi_replace("\\[{$key}\\]", getConfig($key), $htmlmessage);
                $textmessage = eregi_replace("\\[{$key}\\]", getConfig($key), $textmessage);
            }
        }
    }
    ## RSS
    if (ENABLE_RSS && sizeof($rssitems)) {
        $rssentries = array();
        $request = join(",", $rssitems);
        $texttemplate = getConfig("rsstexttemplate");
        $htmltemplate = getConfig("rsshtmltemplate");
        $textseparatortemplate = getConfig("rsstextseparatortemplate");
        $htmlseparatortemplate = getConfig("rsshtmlseparatortemplate");
        $req = Sql_Query("select * from {$GLOBALS["tables"]["rssitem"]} where id in ({$request}) order by list,added");
        $curlist = "";
        while ($row = Sql_Fetch_array($req)) {
            if ($curlist != $row["list"]) {
                $row["listname"] = ListName($row["list"]);
                $curlist = $row["list"];
                $rssentries["text"] .= parseRSSTemplate($textseparatortemplate, $row);
                $rssentries["html"] .= parseRSSTemplate($htmlseparatortemplate, $row);
            }
            $data_req = Sql_Query("select * from {$GLOBALS["tables"]["rssitem_data"]} where itemid = {$row["id"]}");
            while ($data = Sql_Fetch_Array($data_req)) {
                $row[$data["tag"]] = $data["data"];
            }
            $rssentries["text"] .= stripHTML(parseRSSTemplate($texttemplate, $row));
            $rssentries["html"] .= parseRSSTemplate($htmltemplate, $row);
        }
        $htmlmessage = eregi_replace("\\[RSS\\]", $rssentries["html"], $htmlmessage);
        $textmessage = eregi_replace("\\[RSS\\]", $rssentries["text"], $textmessage);
    }
    if (is_array($userdata)) {
        foreach ($userdata as $name => $value) {
            if (eregi("\\[" . $name . "\\]", $htmlmessage, $regs)) {
                $htmlmessage = eregi_replace("\\[" . $name . "\\]", $value, $htmlmessage);
            }
            if (eregi("\\[" . $name . "\\]", $textmessage, $regs)) {
                $textmessage = eregi_replace("\\[" . $name . "\\]", $value, $textmessage);
            }
        }
    }
    $destinationemail = '';
    if (is_array($user_att_values)) {
        foreach ($user_att_values as $att_name => $att_value) {
            if (eregi("\\[" . $att_name . "\\]", $htmlmessage, $regs)) {
                # the value may be a multiline textarea field
                $htmlatt_value = str_replace("\n", "<br/>\n", $att_value);
                $htmlmessage = eregi_replace("\\[" . $att_name . "\\]", $htmlatt_value, $htmlmessage);
            }
            if (eregi("\\[" . $att_name . "\\]", $textmessage, $regs)) {
                $textmessage = eregi_replace("\\[" . $att_name . "\\]", $att_value, $textmessage);
            }
            # @@@ undocumented, use alternate field for real email to send to
            if (isset($GLOBALS["alternate_email"]) && strtolower($att_name) == strtolower($GLOBALS["alternate_email"])) {
                $destinationemail = $att_value;
            }
        }
    }
    if (!$destinationemail) {
        $destinationemail = $email;
    }
    if (!ereg('@', $destinationemail) && isset($GLOBALS["expand_unqualifiedemail"])) {
        $destinationemail .= $GLOBALS["expand_unqualifiedemail"];
    }
    if (eregi("\\[LISTS\\]", $htmlmessage)) {
        $lists = "";
        $listsarr = array();
        $req = Sql_Query(sprintf('select list.name from %s as list,%s as listuser where list.id = listuser.listid and listuser.userid = %d', $GLOBALS["tables"]["list"], $GLOBALS["tables"]["listuser"], $user_system_values["id"]));
        while ($row = Sql_Fetch_Row($req)) {
            array_push($listsarr, $row[0]);
        }
        $lists_html = join('<br/>', $listsarr);
        $lists_text = join("\n", $listsarr);
        $htmlmessage = ereg_replace("\\[LISTS\\]", $lists_html, $htmlmessage);
        $textmessage = ereg_replace("\\[LISTS\\]", $lists_text, $textmessage);
    }
    ## click tracking
    # for now we won't click track forwards, as they are not necessarily users, so everything would fail
    if (CLICKTRACK && $hash != 'forwarded') {
        $urlbase = '';
        # let's leave this for now
        /*
        if (preg_match('/<base href="(.*)"([^>]*)>/Umis',$htmlmessage,$regs)) {
          $urlbase = $regs[1];
        } else {
          $urlbase = '';
        }
        #    print "URLBASE: $urlbase<br/>";
        */
        # convert html message
        #    preg_match_all('/<a href="?([^> "]*)"?([^>]*)>(.*)<\/a>/Umis',$htmlmessage,$links);
        preg_match_all('/<a(.*)href=["\'](.*)["\']([^>]*)>(.*)<\\/a>/Umis', $htmlmessage, $links);
        # to process the Yahoo webpage with base href and link like <a href=link> we'd need this one
        #    preg_match_all('/<a href=([^> ]*)([^>]*)>(.*)<\/a>/Umis',$htmlmessage,$links);
        $clicktrack_root = sprintf('%s://%s/lt.php', $GLOBALS["scheme"], $website . $GLOBALS["pageroot"]);
        for ($i = 0; $i < count($links[2]); $i++) {
            $link = cleanUrl($links[2][$i]);
            $link = str_replace('"', '', $link);
            if (preg_match('/\\.$/', $link)) {
                $link = substr($link, 0, -1);
            }
            $linkid = 0;
            #      print "LINK: $link<br/>";
            if ((preg_match('/^http|ftp/', $link) || preg_match('/^http|ftp/', $urlbase)) && $link != 'http://www.phplist.com' && !strpos($link, $clicktrack_root)) {
                # take off personal uids
                $url = cleanUrl($link, array('PHPSESSID', 'uid'));
                #        $url = preg_replace('/&uid=[^\s&]+/','',$link);
                #        if (!strpos('http:',$link)) {
                #          $link = $urlbase . $link;
                #        }
                $req = Sql_Query(sprintf('insert ignore into %s (messageid,userid,url,forward)
          values(%d,%d,"%s","%s")', $GLOBALS['tables']['linktrack'], $messageid, $userdata['id'], $url, addslashes($link)));
                $req = Sql_Fetch_Row_Query(sprintf('select linkid from %s where messageid = %s and userid = %d and forward = "%s"
        ', $GLOBALS['tables']['linktrack'], $messageid, $userdata['id'], $link));
                $linkid = $req[0];
                $masked = "H|{$linkid}|{$messageid}|" . $userdata['id'] ^ XORmask;
                $masked = urlencode(base64_encode($masked));
                $newlink = sprintf('<a%shref="%s://%s/lt.php?id=%s" %s>%s</a>', $links[1][$i], $GLOBALS["scheme"], $website . $GLOBALS["pageroot"], $masked, $links[3][$i], $links[4][$i]);
                $htmlmessage = str_replace($links[0][$i], $newlink, $htmlmessage);
            }
        }
        # convert Text message
        # first find occurances of our top domain, to avoid replacing them later
        # hmm, this is no point, it's not just *our* topdomain, but any
        if (0) {
            preg_match_all('#(https?://' . $GLOBALS['website'] . '/?)\\s+#mis', $textmessage, $links);
            #    preg_match_all('#(https?://[a-z0-9\./\#\?&:@=%\-]+)#ims',$textmessage,$links);
            #    preg_match_all('!(https?:\/\/www\.[a-zA-Z0-9\.\/#~\?+=&%@-_]+)!mis',$textmessage,$links);
            for ($i = 0; $i < count($links[1]); $i++) {
                # not entirely sure why strtolower was used, but it seems to break things http://mantis.tincan.co.uk/view.php?id=4406
                #      $link = strtolower(cleanUrl($links[1][$i]));
                $link = cleanUrl($links[1][$i]);
                if (preg_match('/\\.$/', $link)) {
                    $link = substr($link, 0, -1);
                }
                $linkid = 0;
                if (preg_match('/^http|ftp/', $link) && $link != 'http://www.phplist.com' && !strpos($link, $clicktrack_root)) {
                    $url = cleanUrl($link, array('PHPSESSID', 'uid'));
                    $req = Sql_Query(sprintf('insert ignore into %s (messageid,userid,url,forward)
          values(%d,%d,"%s","%s")', $GLOBALS['tables']['linktrack'], $messageid, $userdata['id'], $url, $link));
                    $req = Sql_Fetch_Row_Query(sprintf('select linkid from %s where messageid = %s and userid = %d and forward = "%s"
        ', $GLOBALS['tables']['linktrack'], $messageid, $userdata['id'], $link));
                    $linkid = $req[0];
                    $masked = "T|{$linkid}|{$messageid}|" . $userdata['id'] ^ XORmask;
                    $masked = urlencode(base64_encode($masked));
                    $newlink = sprintf('%s://%s/lt.php?id=%s', $GLOBALS["scheme"], $website . $GLOBALS["pageroot"], $masked);
                    $textmessage = str_replace($links[0][$i], '<' . $newlink . '>', $textmessage);
                }
            }
        }
        #now find the rest
        # @@@ needs to expand to find complete urls like:
        #http://user:password@www.web-site.com:1234/document.php?parameter=something&otherpar=somethingelse#anchor
        # or secure
        #https://user:password@www.website.com:2345/document.php?parameter=something%20&otherpar=somethingelse#anchor
        preg_match_all('#(https?://[^\\s\\>\\}\\,]+)#mis', $textmessage, $links);
        #    preg_match_all('#(https?://[a-z0-9\./\#\?&:@=%\-]+)#ims',$textmessage,$links);
        #    preg_match_all('!(https?:\/\/www\.[a-zA-Z0-9\.\/#~\?+=&%@-_]+)!mis',$textmessage,$links);
        ## sort the results in reverse order, so that they are replaced correctly
        rsort($links[1]);
        $newlinks = array();
        for ($i = 0; $i < count($links[1]); $i++) {
            $link = cleanUrl($links[1][$i]);
            if (preg_match('/\\.$/', $link)) {
                $link = substr($link, 0, -1);
            }
            $linkid = 0;
            if (preg_match('/^http|ftp/', $link) && $link != 'http://www.phplist.com') {
                # && !strpos($link,$clicktrack_root)) {
                $url = cleanUrl($link, array('PHPSESSID', 'uid'));
                $req = Sql_Query(sprintf('insert ignore into %s (messageid,userid,url,forward)
          values(%d,%d,"%s","%s")', $GLOBALS['tables']['linktrack'], $messageid, $userdata['id'], $url, $link));
                $req = Sql_Fetch_Row_Query(sprintf('select linkid from %s where messageid = %s and userid = %d and forward = "%s"
        ', $GLOBALS['tables']['linktrack'], $messageid, $userdata['id'], $link));
                $linkid = $req[0];
                $masked = "T|{$linkid}|{$messageid}|" . $userdata['id'] ^ XORmask;
                $masked = urlencode(base64_encode($masked));
                $newlinks[$linkid] = sprintf('%s://%s/lt.php?id=%s', $GLOBALS["scheme"], $website . $GLOBALS["pageroot"], $masked);
                #        print $links[0][$i] .' -> '.$newlink.'<br/>';
                $textmessage = str_replace($links[1][$i], '[%%%' . $linkid . '%%%]', $textmessage);
            }
        }
        foreach ($newlinks as $linkid => $newlink) {
            $textmessage = str_replace('[%%%' . $linkid . '%%%]', $newlink, $textmessage);
        }
    }
    #
    if (eregi("\\[LISTS\\]", $htmlmessage)) {
        $lists = "";
        $listsarr = array();
        $req = Sql_Query(sprintf('select list.name from %s as list,%s as listuser where list.id = listuser.listid and listuser.userid = %d', $tables["list"], $tables["listuser"], $user_system_values["id"]));
        while ($row = Sql_Fetch_Row($req)) {
            array_push($listsarr, $row[0]);
        }
        $lists_html = join('<br/>', $listsarr);
        $lists_text = join("\n", $listsarr);
        $htmlmessage = ereg_replace("\\[LISTS\\]", $lists_html, $htmlmessage);
        $textmessage = ereg_replace("\\[LISTS\\]", $lists_text, $textmessage);
    }
    #0011996: forward to friend - personal message
    if (FORWARD_PERSONAL_NOTE_SIZE && ($hash = 'forwarded' && !empty($forwardedby['personalNote']))) {
        $htmlmessage = nl2br($forwardedby['personalNote']) . '<br/>' . $htmlmessage;
        $textmessage = $forwardedby['personalNote'] . "\n" . $textmessage;
    }
    ## remove any existing placeholders
    $htmlmessage = eregi_replace("\\[[A-Z\\. ]+\\]", "", $htmlmessage);
    $textmessage = eregi_replace("\\[[A-Z\\. ]+\\]", "", $textmessage);
    ## check that the HTML message as proper <head> </head> and <body> </body> tags
    # some readers fail when it doesn't
    if (!preg_match("#<body.*</body>#ims", $htmlmessage)) {
        $htmlmessage = '<body>' . $htmlmessage . '</body>';
    }
    if (!preg_match("#<head>.*</head>#ims", $htmlmessage)) {
        if (!$adddefaultstyle) {
            $defaultstyle = "";
        }
        $htmlmessage = '<head>
        <meta content="text/html;charset=' . $cached[$messageid]["html_charset"] . '" http-equiv="Content-Type">
        <title></title>' . $defaultstyle . '</head>' . $htmlmessage;
    }
    if (!preg_match("#<html>.*</html>#ims", $htmlmessage)) {
        $htmlmessage = '<html>' . $htmlmessage . '</html>';
    }
    # particularly Outlook seems to have trouble if it is not \r\n
    # reports have come that instead this creates lots of trouble
    # this is now done in the global sendMail function, so it is not
    # necessary here
    #  if (USE_CARRIAGE_RETURNS) {
    #    $htmlmessage = preg_replace("/\r?\n/", "\r\n", $htmlmessage);
    #    $textmessage = preg_replace("/\r?\n/", "\r\n", $textmessage);
    #  }
    ## build the email
    if (!PHPMAILER) {
        $mail = new html_mime_mail(array('X-Mailer: PHPlist v' . VERSION, "X-MessageId: {$messageid}", "X-ListMember: {$email}", "Precedence: bulk", "List-Help: <" . $text["preferences"] . ">", "List-Unsubscribe: <" . $text["unsubscribe"] . ">", "List-Subscribe: <" . getConfig("subscribeurl") . ">", "List-Owner: <mailto:" . getConfig("admin_address") . ">"));
    } else {
        $mail = new PHPlistMailer($messageid, $destinationemail);
        if ($forwardedby) {
            $mail->add_timestamp();
        }
        #$mail->IsSMTP();
    }
    list($dummy, $domaincheck) = split('@', $destinationemail);
    $text_domains = explode("\n", trim(getConfig("alwayssendtextto")));
    if (in_array($domaincheck, $text_domains)) {
        $htmlpref = 0;
        if (VERBOSE) {
            output($GLOBALS['I18N']->get('sendingtextonlyto') . " {$domaincheck}");
        }
    }
    list($dummy, $domaincheck) = split('@', $email);
    $text_domains = explode("\n", trim(getConfig("alwayssendtextto")));
    if (in_array($domaincheck, $text_domains)) {
        $htmlpref = 0;
        if (VERBOSE) {
            output("Sending text only to {$domaincheck}");
        }
    }
    # so what do we actually send?
    switch ($cached[$messageid]["sendformat"]) {
        case "HTML":
            //      # send html to users who want it and text to everyone else
            //      if ($htmlpref) {
            //        Sql_Query("update {$GLOBALS["tables"]["message"]} set ashtml = ashtml + 1 where id = $messageid");
            //        if (ENABLE_RSS && sizeof($rssitems))
            //          updateRSSStats($rssitems,"ashtml");
            //      #  dbg("Adding HTML ".$cached[$messageid]["templateid"]);
            //        $mail->add_html($htmlmessage,"",$cached[$messageid]["templateid"]);
            //        addAttachments($messageid,$mail,"HTML");
            //      } else {
            //        Sql_Query("update {$GLOBALS["tables"]["message"]} set astext = astext + 1 where id = $messageid");
            //        if (ENABLE_RSS && sizeof($rssitems))
            //          updateRSSStats($rssitems,"astext");
            //        $mail->add_text($textmessage);
            //        addAttachments($messageid,$mail,"text");
            //      }
            //      break;
        //      # send html to users who want it and text to everyone else
        //      if ($htmlpref) {
        //        Sql_Query("update {$GLOBALS["tables"]["message"]} set ashtml = ashtml + 1 where id = $messageid");
        //        if (ENABLE_RSS && sizeof($rssitems))
        //          updateRSSStats($rssitems,"ashtml");
        //      #  dbg("Adding HTML ".$cached[$messageid]["templateid"]);
        //        $mail->add_html($htmlmessage,"",$cached[$messageid]["templateid"]);
        //        addAttachments($messageid,$mail,"HTML");
        //      } else {
        //        Sql_Query("update {$GLOBALS["tables"]["message"]} set astext = astext + 1 where id = $messageid");
        //        if (ENABLE_RSS && sizeof($rssitems))
        //          updateRSSStats($rssitems,"astext");
        //        $mail->add_text($textmessage);
        //        addAttachments($messageid,$mail,"text");
        //      }
        //      break;
        case "both":
        case "text and HTML":
            # send one big file to users who want html and text to everyone else
            if ($htmlpref) {
                Sql_Query("update {$GLOBALS["tables"]["message"]} set ashtml = ashtml + 1 where id = {$messageid}");
                if (ENABLE_RSS && sizeof($rssitems)) {
                    updateRSSStats($rssitems, "ashtml");
                }
                #  dbg("Adding HTML ".$cached[$messageid]["templateid"]);
                $mail->add_html($htmlmessage, $textmessage, $cached[$messageid]["templateid"]);
                addAttachments($messageid, $mail, "HTML");
            } else {
                Sql_Query("update {$GLOBALS["tables"]["message"]} set astext = astext + 1 where id = {$messageid}");
                if (ENABLE_RSS && sizeof($rssitems)) {
                    updateRSSStats($rssitems, "astext");
                }
                $mail->add_text($textmessage);
                addAttachments($messageid, $mail, "text");
            }
            break;
        case "PDF":
            # send a PDF file to users who want html and text to everyone else
            if (ENABLE_RSS && sizeof($rssitems)) {
                updateRSSStats($rssitems, "astext");
            }
            if ($htmlpref) {
                Sql_Query("update {$GLOBALS["tables"]["message"]} set aspdf = aspdf + 1 where id = {$messageid}");
                $pdffile = createPdf($textmessage);
                if (is_file($pdffile) && filesize($pdffile)) {
                    $fp = fopen($pdffile, "r");
                    if ($fp) {
                        $contents = fread($fp, filesize($pdffile));
                        fclose($fp);
                        unlink($pdffile);
                        $html = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
              <html>
              <head>
                <title></title>
              </head>
              <body>
              <embed src="message.pdf" width="450" height="450" href="message.pdf"></embed>
              </body>
              </html>';
                        #            $mail->add_html($html,$textmessage);
                        #            $mail->add_text($textmessage);
                        $mail->add_attachment($contents, "message.pdf", "application/pdf");
                    }
                }
                addAttachments($messageid, $mail, "HTML");
            } else {
                Sql_Query("update {$GLOBALS["tables"]["message"]} set astext = astext + 1 where id = {$messageid}");
                $mail->add_text($textmessage);
                addAttachments($messageid, $mail, "text");
            }
            break;
        case "text and PDF":
            if (ENABLE_RSS && sizeof($rssitems)) {
                updateRSSStats($rssitems, "astext");
            }
            # send a PDF file to users who want html and text to everyone else
            if ($htmlpref) {
                Sql_Query("update {$GLOBALS["tables"]["message"]} set astextandpdf = astextandpdf + 1 where id = {$messageid}");
                $pdffile = createPdf($textmessage);
                if (is_file($pdffile) && filesize($pdffile)) {
                    $fp = fopen($pdffile, "r");
                    if ($fp) {
                        $contents = fread($fp, filesize($pdffile));
                        fclose($fp);
                        unlink($pdffile);
                        $html = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
              <html>
              <head>
                <title></title>
              </head>
              <body>
              <embed src="message.pdf" width="450" height="450" href="message.pdf"></embed>
              </body>
              </html>';
                        #           $mail->add_html($html,$textmessage);
                        $mail->add_text($textmessage);
                        $mail->add_attachment($contents, "message.pdf", "application/pdf");
                    }
                }
                addAttachments($messageid, $mail, "HTML");
            } else {
                Sql_Query("update {$GLOBALS["tables"]["message"]} set astext = astext + 1 where id = {$messageid}");
                $mail->add_text($textmessage);
                addAttachments($messageid, $mail, "text");
            }
            break;
        case "text":
        default:
            # send as text
            if (ENABLE_RSS && sizeof($rssitems)) {
                updateRSSStats($rssitems, "astext");
            }
            Sql_Query("update {$GLOBALS["tables"]["message"]} set astext = astext + 1 where id = {$messageid}");
            $mail->add_text($textmessage);
            addAttachments($messageid, $mail, "text");
            break;
    }
    $mail->build_message(array("html_charset" => $cached[$messageid]["html_charset"], "html_encoding" => HTMLEMAIL_ENCODING, "text_charset" => $cached[$messageid]["text_charset"], "text_encoding" => TEXTEMAIL_ENCODING));
    if (!TEST) {
        if ($hash != 'forwarded' || !sizeof($forwardedby)) {
            $fromname = $cached[$messageid]["fromname"];
            $fromemail = $cached[$messageid]["fromemail"];
            $subject = $cached[$messageid]["subject"];
        } else {
            $fromname = '';
            $fromemail = $forwardedby['email'];
            $subject = $GLOBALS['strFwd'] . ': ' . $cached[$messageid]["subject"];
        }
        if (!$mail->send("", $destinationemail, $fromname, $fromemail, $subject)) {
            logEvent("Error sending message {$messageid} to {$email} ({$destinationemail})");
            return 0;
        } else {
            return 1;
        }
    }
    return 0;
}
コード例 #6
0
ファイル: index.php プロジェクト: cyqsd/wordpress-for-SAE
<?php

define("SUMMETA", "<!--this is the first view page created at " . date("Y-m-d H:i:s") . " by summer  -->");
$kv = new SaeKV();
$kv->init();
if ($_GET['s']) {
    $url = $_SERVER['SCRIPT_URI'] . '?s=' . $_GET['s'];
    echo fetchUrl($url);
    exit;
}
$sitemap = $kv->get($_SERVER['SCRIPT_URI'] . 'index.html');
if ($sitemap) {
    header('Content-type:text/html; charset=utf-8');
    echo $sitemap;
} else {
    echo fetchUrl($_SERVER['SCRIPT_URI']) . SUMMETA;
}
function fetchUrl($url)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_AUTOREFERER, 0);
    curl_setopt($ch, CURLOPT_REFERER, 'staticindex');
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $ret = curl_exec($ch);
    curl_close($ch);
    if ($ret) {
        return $ret;
    } else {
        return false;
    }
コード例 #7
0
ファイル: update.php プロジェクト: shanshanyang/httparchive
function importPageMod($hPage)
{
    global $pagesTable, $requestsTable;
    $t_CVSNO = time();
    $pageid = $hPage['pageid'];
    $wptid = $hPage['wptid'];
    $wptrun = $hPage['wptrun'];
    if (!$wptid || !$wptrun) {
        tprint("ERROR: importPageMod({$pageid}): failed to find wptid and wptrun: {$wptid}, {$wptrun}");
        return;
    }
    // lifted from importWptResults
    $wptServer = wptServer();
    $request = $wptServer . "export.php?test={$wptid}&run={$wptrun}&cached=0&php=1";
    $response = fetchUrl($request);
    //tprint("after fetchUrl", $t_CVSNO);
    if (!strlen($response)) {
        tprint("ERROR: importPageMod({$pageid}): URL failed: {$request}");
        return;
    }
    // lifted from importHarJson
    $json_text = $response;
    $HAR = json_decode($json_text);
    if (NULL == $HAR) {
        tprint("ERROR: importPageMod({$pageid}): JSON decode failed");
        return;
    }
    $log = $HAR->{'log'};
    $pages = $log->{'pages'};
    $pagecount = count($pages);
    if (0 == $pagecount) {
        tprint("ERROR: importPageMod({$pageid}): No pages found");
        return;
    }
    // lifted from importPage
    $page = $pages[0];
    if (array_key_exists('_TTFB', $page)) {
        $hPage['TTFB'] = $page->{'_TTFB'};
    }
    if (array_key_exists('_fullyLoaded', $page)) {
        $hPage['fullyLoaded'] = $page->{'_fullyLoaded'};
    }
    if (array_key_exists('_visualComplete', $page)) {
        $hPage['visualComplete'] = $page->{'_visualComplete'};
    }
    if (array_key_exists('_gzip_total', $page)) {
        $hPage['gzipTotal'] = $page->{'_gzip_total'};
        $hPage['gzipSavings'] = $page->{'_gzip_savings'};
    }
    if (array_key_exists('_domElements', $page)) {
        $hPage['numDomElements'] = $page->{'_domElements'};
    }
    if (array_key_exists('_domContentLoadedEventStart', $page)) {
        $hPage['onContentLoaded'] = $page->{'_domContentLoadedEventStart'};
    }
    if (array_key_exists('_base_page_cdn', $page)) {
        $hPage['cdn'] = $page->{'_base_page_cdn'};
    }
    if (array_key_exists('_SpeedIndex', $page)) {
        $hPage['SpeedIndex'] = $page->{'_SpeedIndex'};
    }
    // lifted from aggregateStats
    // initialize variables for counting the page's stats
    $hPage['bytesTotal'] = 0;
    $hPage['reqTotal'] = 0;
    $typeMap = array("flash" => "Flash", "css" => "CSS", "image" => "Img", "script" => "JS", "html" => "Html", "font" => "Font", "other" => "Other", "gif" => "Gif", "jpg" => "Jpg", "png" => "Png");
    foreach (array_keys($typeMap) as $type) {
        // initialize the hashes
        $hPage['req' . $typeMap[$type]] = 0;
        $hPage['bytes' . $typeMap[$type]] = 0;
    }
    $hDomains = array();
    $hPage['maxageNull'] = $hPage['maxage0'] = $hPage['maxage1'] = $hPage['maxage30'] = $hPage['maxage365'] = $hPage['maxageMore'] = 0;
    $hPage['bytesHtmlDoc'] = $hPage['numRedirects'] = $hPage['numErrors'] = $hPage['numGlibs'] = $hPage['numHttps'] = $hPage['numCompressed'] = $hPage['maxDomainReqs'] = 0;
    $result = doQuery("select mimeType, urlShort, resp_content_type, respSize, expAge, firstHtml, status, resp_content_encoding, req_host from {$requestsTable} where pageid = {$pageid};");
    //tprint("after query", $t_CVSNO);
    while ($row = mysql_fetch_assoc($result)) {
        $reqUrl = $row['urlShort'];
        $mimeType = prettyType($row['mimeType'], $reqUrl);
        $respSize = intval($row['respSize']);
        $hPage['reqTotal']++;
        $hPage['bytesTotal'] += $respSize;
        $hPage['req' . $typeMap[$mimeType]]++;
        $hPage['bytes' . $typeMap[$mimeType]] += $respSize;
        if ("image" === $mimeType) {
            $content_type = $row['resp_content_type'];
            $imgformat = false !== stripos($content_type, "image/gif") ? "gif" : (false !== stripos($content_type, "image/jpg") || false !== stripos($content_type, "image/jpeg") ? "jpg" : (false !== stripos($content_type, "image/png") ? "png" : ""));
            if ($imgformat) {
                $hPage['req' . $typeMap[$imgformat]]++;
                $hPage['bytes' . $typeMap[$imgformat]] += $respSize;
            }
        }
        // count unique domains (really hostnames)
        $aMatches = array();
        if ($reqUrl && preg_match('/http[s]*:\\/\\/([^\\/]*)/', $reqUrl, $aMatches)) {
            $hostname = $aMatches[1];
            if (!array_key_exists($hostname, $hDomains)) {
                $hDomains[$hostname] = 0;
            }
            $hDomains[$hostname]++;
            // count hostnames
        } else {
            tprint("ERROR: importPageMod({$pageid}): No hostname found in URL: {$reqUrl}");
        }
        // count expiration windows
        $expAge = $row['expAge'];
        $daySecs = 24 * 60 * 60;
        if (NULL === $expAge) {
            $hPage['maxageNull']++;
        } else {
            if (0 === intval($expAge)) {
                $hPage['maxage0']++;
            } else {
                if ($expAge <= 1 * $daySecs) {
                    $hPage['maxage1']++;
                } else {
                    if ($expAge <= 30 * $daySecs) {
                        $hPage['maxage30']++;
                    } else {
                        if ($expAge <= 365 * $daySecs) {
                            $hPage['maxage365']++;
                        } else {
                            $hPage['maxageMore']++;
                        }
                    }
                }
            }
        }
        if ($row['firstHtml']) {
            $hPage['bytesHtmlDoc'] = $respSize;
        }
        // CVSNO - can we get this UNgzipped?!
        $status = $row['status'];
        if (300 <= $status && $status < 400 && 304 != $status) {
            $hPage['numRedirects']++;
        } else {
            if (400 <= $status && $status < 600) {
                $hPage['numErrors']++;
            }
        }
        if (0 === stripos($reqUrl, "https://")) {
            $hPage['numHttps']++;
        }
        if (FALSE !== stripos($row['req_host'], "googleapis.com")) {
            $hPage['numGlibs']++;
        }
        if ("gzip" == $row['resp_content_encoding'] || "deflate" == $row['resp_content_encoding']) {
            $hPage['numCompressed']++;
        }
    }
    mysql_free_result($result);
    $hPage['numDomains'] = count(array_keys($hDomains));
    foreach (array_keys($hDomains) as $domain) {
        $hPage['maxDomainReqs'] = max($hPage['maxDomainReqs'], $hDomains[$domain]);
    }
    //$cmd = "UPDATE $pagesTable SET reqTotal = $reqTotal, bytesTotal = $bytesTotal" .
    $cmd = "insert into pagestmp SET " . hashImplode(", ", "=", $hPage) . ";";
    //tprint("before insert", $t_CVSNO);
    doSimpleCommand($cmd);
    //tprint("after insert\n", $t_CVSNO);
}
コード例 #8
0
ファイル: viewsite.php プロジェクト: shanshanyang/httparchive
    // NOT mobile
    echo <<<OUTPUT
<style>
#pagespeedreport UL { max-width: 100%; }
</style>
<div id="pagespeedreport" style="margin-top: 10px; font-size: 0.9em;"></div>

<script type="text/javascript" src="{$wptServer}widgets/pagespeed/tree?test={$wptid}&div=pagespeedreport"></script>
OUTPUT;
} else {
    // mobile
    $file = BuildFileName($url);
    $fullpath = "./harfiles-delme/{$gPageid}.{$file}.har";
    $bWritten = false;
    if (strlen($file)) {
        $response = fetchUrl($harfileWptUrl);
        if (strlen($response)) {
            file_put_contents("{$fullpath}", $response);
            $bWritten = true;
        }
    }
    if ($bWritten) {
        doFile($fullpath);
        unlink($fullpath);
    }
    echo <<<OUTPUT
<script>
var curDetails;

function toggleDetails(elem) {
\tif ( "undefined" != typeof(curDetails) ) {
コード例 #9
0
ファイル: fb.php プロジェクト: alpe88/wp.itc210_psa-pbk
function getFat($appid, $appsec)
{
    $authToken = fetchUrl("https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id={$appid}&client_secret={$appsec}");
    return $authToken;
}
コード例 #10
0
ファイル: languages.php プロジェクト: MarcelvC/phplist3
function getTranslationUpdates()
{
    ## @@@TODO add some more error handling
    $LU = false;
    $lan_update = fetchUrl(TRANSLATIONS_XML);
    if (!empty($lan_update)) {
        $LU = @simplexml_load_string($lan_update);
    }
    return $LU;
}
コード例 #11
0
ファイル: index.php プロジェクト: gillima/phplist3
function forwardPage($id)
{
    global $tables;
    $ok = true;
    $subtitle = '';
    $info = '';
    $html = '';
    $form = '';
    $personalNote = '';
    ## Check requirements
    # message
    $mid = 0;
    if (isset($_REQUEST['mid'])) {
        $mid = sprintf('%d', $_REQUEST['mid']);
        $messagedata = loadMessageData($mid);
        $mid = $messagedata['id'];
        if ($mid) {
            $subtitle = $GLOBALS['strForwardSubtitle'] . ' ' . stripslashes($messagedata['subject']);
        }
    }
    #mid set
    # user
    if (!isset($_REQUEST['uid']) || !$_REQUEST['uid']) {
        FileNotFound();
    }
    ## get userdata
    $req = Sql_Query(sprintf('select * from %s where uniqid = "%s"', $tables['user'], sql_escape($_REQUEST['uid'])));
    $userdata = Sql_Fetch_Array($req);
    ## verify that this subscriber actually received this message to forward, otherwise they're not allowed
    $allowed = Sql_Fetch_Row_Query(sprintf('select userid from %s where userid = %d and messageid = %d', $GLOBALS['tables']['usermessage'], $userdata['id'], $mid));
    if (empty($userdata['id']) || $allowed[0] != $userdata['id']) {
        ## when sending a test email as an admin, the entry isn't there yet
        if (empty($_SESSION['adminloggedin']) || $_SESSION['adminloggedin'] != $_SERVER['REMOTE_ADDR']) {
            FileNotFound('<br/><i>' . $GLOBALS['I18N']->get('When testing the phpList forward functionality, you need to be logged in as an administrator.') . '</i><br/>');
        }
    }
    $firstpage = 1;
    ## is this the initial page or a followup
    # forward addresses
    $forwardemail = '';
    if (isset($_REQUEST['email']) && !empty($_REQUEST['email'])) {
        $firstpage = 0;
        $forwardPeriodCount = Sql_Fetch_Array_Query(sprintf('select count(user) from %s where date_add(time,interval %s) >= now() and user = %d and status ="sent" ', $tables['user_message_forward'], FORWARD_EMAIL_PERIOD, $userdata['id']));
        $forwardemail = stripslashes($_REQUEST['email']);
        $emails = explode("\n", $forwardemail);
        $emails = trimArray($emails);
        $forwardemail = implode("\n", $emails);
        #0011860: forward to friend, multiple emails
        $emailCount = $forwardPeriodCount[0];
        foreach ($emails as $index => $email) {
            $emails[$index] = trim($email);
            if (is_email($email)) {
                ++$emailCount;
            } else {
                $info .= sprintf('<br />' . $GLOBALS['strForwardInvalidEmail'], $email);
                $ok = false;
            }
        }
        if ($emailCount > FORWARD_EMAIL_COUNT) {
            $info .= '<br />' . $GLOBALS['strForwardCountReached'];
            $ok = false;
        }
    } else {
        $ok = false;
    }
    #0011996: forward to friend - personal message
    # text cannot be longer than max, to prevent very long text with only linefeeds total cannot be longer than twice max
    if (FORWARD_PERSONAL_NOTE_SIZE && isset($_REQUEST['personalNote'])) {
        if (strlen(strip_newlines($_REQUEST['personalNote'])) > FORWARD_PERSONAL_NOTE_SIZE || strlen($_REQUEST['personalNote']) > FORWARD_PERSONAL_NOTE_SIZE * 2) {
            $info .= '<BR />' . $GLOBALS['strForwardNoteLimitReached'];
            $ok = false;
        }
        $personalNote = strip_tags(htmlspecialchars_decode(stripslashes($_REQUEST['personalNote'])));
        $userdata['personalNote'] = $personalNote;
    }
    if ($userdata['id'] && $mid) {
        if ($ok && count($emails)) {
            ## All is well, send it
            require_once 'admin/sendemaillib.php';
            #0013845 Lead Ref Scheme
            if (FORWARD_FRIEND_COUNT_ATTRIBUTE) {
                $iCountFriends = FORWARD_FRIEND_COUNT_ATTRIBUTE;
            } else {
                $iCountFriends = 0;
            }
            if ($iCountFriends) {
                $nFriends = intval(UserAttributeValue($userdata['id'], $iCountFriends));
            }
            ## remember the lists for this message in order to notify only those admins
            ## that own them
            $messagelists = array();
            $messagelistsreq = Sql_Query(sprintf('select listid from %s where messageid = %d', $GLOBALS['tables']['listmessage'], $mid));
            while ($row = Sql_Fetch_Row($messagelistsreq)) {
                array_push($messagelists, $row[0]);
            }
            foreach ($emails as $index => $email) {
                #0011860: forward to friend, multiple emails
                $done = Sql_Fetch_Array_Query(sprintf('select user,status,time from %s where forward = "%s" and message = %d', $tables['user_message_forward'], $email, $mid));
                $info .= '<br />' . $email . ': ';
                if ($done['status'] === 'sent') {
                    $info .= $GLOBALS['strForwardAlreadyDone'];
                } elseif (isBlackListed($email)) {
                    $info .= $GLOBALS['strForwardBlacklistedEmail'];
                } else {
                    if (!TEST) {
                        # forward the message
                        # sendEmail will take care of blacklisting
                        ### CHECK $email vs $forwardemail
                        if (sendEmail($mid, $email, 'forwarded', $userdata['htmlemail'], array(), $userdata)) {
                            $info .= $GLOBALS['strForwardSuccessInfo'];
                            sendAdminCopy(s('Message Forwarded'), s('%s has forwarded message %d to %s', $userdata['email'], $mid, $email), $messagelists);
                            Sql_Query(sprintf('insert into %s (user,message,forward,status,time)
                 values(%d,%d,"%s","sent",now())', $tables['user_message_forward'], $userdata['id'], $mid, $email));
                            if ($iCountFriends) {
                                ++$nFriends;
                            }
                        } else {
                            $info .= $GLOBALS['strForwardFailInfo'];
                            sendAdminCopy(s('Message Forwarded'), s('%s tried forwarding message %d to %s but failed', $userdata['email'], $mid, $email), $messagelists);
                            Sql_Query(sprintf('insert into %s (user,message,forward,status,time)
                values(%d,%d,"%s","failed",now())', $tables['user_message_forward'], $userdata['id'], $mid, $email));
                            $ok = false;
                        }
                    }
                }
            }
            # foreach friend
            if ($iCountFriends) {
                saveUserAttribute($userdata['id'], $iCountFriends, array('name' => FORWARD_FRIEND_COUNT_ATTRIBUTE, 'value' => $nFriends));
            }
        }
        #ok & emails
    } else {
        # no valid sender
        logEvent(s('Forward request from invalid user ID: %s', substr($_REQUEST['uid'], 0, 150)));
        $info .= '<BR />' . $GLOBALS['strForwardFailInfo'];
        $ok = false;
    }
    /*
      $data = PageData($id);
      if (isset($data['language_file']) && is_file(dirname(__FILE__).'/texts/'.basename($data['language_file']))) {
        @include dirname(__FILE__).'/texts/'.basename($data['language_file']);
      }
    */
    ## BAS Multiple Forward
    ## build response page
    $form = '<form method="post" action="">';
    $form .= sprintf('<input type=hidden name="mid" value="%d">', $mid);
    $form .= sprintf('<input type=hidden name="id" value="%d">', $id);
    $form .= sprintf('<input type=hidden name="uid" value="%s">', $userdata['uniqid']);
    $form .= sprintf('<input type=hidden name="p" value="forward">');
    if (!$ok) {
        #0011860: forward to friend, multiple emails
        if (FORWARD_EMAIL_COUNT == 1) {
            $form .= '<br /><h2>' . $GLOBALS['strForwardEnterEmail'] . '</h2>';
            $form .= sprintf('<input type=text name="email" value="%s" size=50 class="attributeinput">', $forwardemail);
        } else {
            $form .= '<br /><h2>' . sprintf($GLOBALS['strForwardEnterEmails'], FORWARD_EMAIL_COUNT) . '</h2>';
            $form .= sprintf('<textarea name="email" rows="10" cols="50" class="attributeinput">%s</textarea>', $forwardemail);
        }
        #0011996: forward to friend - personal message
        if (FORWARD_PERSONAL_NOTE_SIZE) {
            $form .= sprintf('<h2>' . $GLOBALS['strForwardPersonalNote'] . '</h2>', FORWARD_PERSONAL_NOTE_SIZE);
            $cols = 50;
            $rows = min(10, ceil(FORWARD_PERSONAL_NOTE_SIZE / 40));
            $form .= sprintf('<br/><textarea type="text" name="personalNote" rows="%d" cols="%d" class="attributeinput">%s</textarea>', $rows, $cols, $personalNote);
        }
        $form .= sprintf('<br /><input type="submit" value="%s"></form>', $GLOBALS['strContinue']);
    }
    ### END BAS
    ### Michiel, remote response page
    $remote_content = '';
    if (preg_match("/\\[URL:([^\\s]+)\\]/i", $messagedata['message'], $regs)) {
        if (isset($regs[1]) && strlen($regs[1])) {
            $url = $regs[1];
            if (!preg_match('/^http/i', $url)) {
                $url = 'http://' . $url;
            }
            $remote_content = fetchUrl($url);
        }
    }
    if (!empty($remote_content) && preg_match('/\\[FORWARDFORM\\]/', $remote_content, $regs)) {
        if ($firstpage) {
            ## this is the initial page, not a follow up one.
            $remote_content = str_replace($regs[0], $info . $form, $remote_content);
        } else {
            $remote_content = str_replace($regs[0], $info, $remote_content);
        }
        $res = $remote_content;
    } else {
        $res = '<title>' . $GLOBALS['strForwardTitle'] . '</title>';
        $res .= $GLOBALS['pagedata']['header'];
        $res .= '<h3>' . $subtitle . '</h3>';
        if ($ok) {
            $res .= '<h4>' . $info . '</h4>';
        } elseif (!empty($info)) {
            $res .= '<div class="error missing">' . $info . '</div>';
        }
        $res .= $form;
        $res .= '<p>' . $GLOBALS['PoweredBy'] . '</p>';
        $res .= $GLOBALS['pagedata']['footer'];
    }
    ### END MICHIEL
    return $res;
}
コード例 #12
0
ファイル: frame.php プロジェクト: shanshanyang/httparchive
<?php

require_once "ui.inc";
require_once "utils.inc";
require_once "dbapi.inc";
require_once "urls.inc";
require_once "pages.inc";
// Return a redirect to the filmstrip frame closest to but BEFORE the time specified.
$gTime = getParam('t', '2500');
// milliseconds
$wptid = getParam('wptid');
$wptrun = getParam('wptrun');
$gPageid = getParam('pageid');
$wptServer = wptServer();
$xmlurl = "{$wptServer}xmlResult.php?test={$wptid}";
$xmlstr = fetchUrl($xmlurl);
$xml = new SimpleXMLElement($xmlstr);
$frames = $xml->data->run[$wptrun - 1]->firstView->videoFrames;
$tbefore = 0;
$tafter = 0;
if ($frames->frame) {
    foreach ($frames->frame as $frame) {
        // Find the time of a frame that is BEFORE the requested time.
        $ms = floatval($frame->time) * 1000;
        if ($ms > $gTime) {
            $tafter = $ms;
            break;
        }
        $tbefore = $ms;
    }
}
コード例 #13
0
<?php

#updatetranslation
#sleep(20);
$lan = '';
if (isset($_GET['lan'])) {
    $lan = $_GET['lan'];
    $lan = preg_replace('/[^\\w_]/', '', $lan);
}
$LU = getTranslationUpdates();
if (!$LU || !is_object($LU)) {
    print Error(s('Unable to fetch list of languages, please check your network or try again later'));
    return;
}
$translations = array();
foreach ($LU->translation as $update) {
    if ($update->iso == $lan) {
        #  $status = $update->updateurl;
        $translationUpdate = fetchUrl($update->updateurl);
        $translations = parsePo($translationUpdate);
    }
}
$status = '';
if (count($translations)) {
    $I18N->updateDBtranslations($translations, time());
    $status = sprintf(s('updated %d language terms'), count($translations));
} else {
    $status = Error(s('Network error updating language, please try again later'));
}
コード例 #14
0
 public function fetchUrl($url, $user)
 {
     return fetchUrl($url, $user);
 }
コード例 #15
0
 if ($debug == 'on') {
     echo '<p style="color:green;"> -connection found in line #' . $j . '</p>';
 }
 $jsurl = 'https://certificates.theodi.org/en/datasets' . $res3 . '/certificate/badge.js';
 if ($debug == 'on') {
     echo '<p style="color:grey;">----trying_methods_to_read_url:_' . $jsurl . '<br>';
 }
 if ($method != -1) {
     $getype = $method;
 }
 if ($getype == 0) {
     if ($debug == 'on') {
         echo '<p style="color:grey;"> -trying method 0..</p>';
     }
     try {
         $bgurl = fetchUrl($jsurl);
     } catch (Exception $e) {
         if ($bgurl == '') {
             if ($debug == 'on') {
                 echo '<p style="color:red;"> failed to open file ' . '</p>';
             }
             if ($method == -1) {
                 $getype = 1;
             }
         }
     }
 }
 if ($getype == 1) {
     if ($debug == 'on') {
         echo '<p style="color:grey;"> -trying method 1..';
     }
コード例 #16
0
function forwardPage($id)
{
    global $data, $tables, $envelope;
    $ok = true;
    $subtitle = '';
    $info = '';
    $html = '';
    $form = '';
    ## Check requirements
    # user
    if (!isset($_REQUEST["uid"]) || !$_REQUEST['uid']) {
        FileNotFound();
    }
    $firstpage = 1;
    ## is this the initial page or a followup
    # forward addresses
    $forwardemail = '';
    if (isset($_REQUEST['email']) && !empty($_REQUEST['email'])) {
        $firstpage = 0;
        $forwardPeriodCount = Sql_Fetch_Array_Query(sprintf('select count(user) from %s where date_add(time,interval %s) >= now() and user = %d and status ="sent" ', $tables['user_message_forward'], FORWARD_EMAIL_PERIOD, $userdata['id']));
        $forwardemail = stripslashes($_REQUEST['email']);
        $emails = explode("\n", $forwardemail);
        $emails = trimArray($emails);
        $forwardemail = implode("\n", $emails);
        #0011860: forward to friend, multiple emails
        $emailCount = $forwardPeriodCount[0];
        foreach ($emails as $index => $email) {
            $emails[$index] = trim($email);
            if (is_email($email)) {
                $emailCount++;
            } else {
                $info .= sprintf('<BR />' . $GLOBALS['strForwardInvalidEmail'], $email);
                $ok = false;
            }
        }
        if ($emailCount > FORWARD_EMAIL_COUNT) {
            $info .= '<BR />' . $GLOBALS["strForwardCountReached"];
            $ok = false;
        }
    } else {
        $ok = false;
    }
    # message
    $mid = 0;
    if (isset($_REQUEST['mid'])) {
        $mid = sprintf('%d', $_REQUEST['mid']);
        $req = Sql_Query(sprintf('select * from %s where id = %d', $tables["message"], $mid));
        $messagedata = Sql_Fetch_Array($req);
        $mid = $messagedata['id'];
        if ($mid) {
            $subtitle = $GLOBALS['strForwardSubtitle'] . ' ' . stripslashes($messagedata['subject']);
        }
    }
    #mid set
    ## get userdata
    $req = Sql_Query("select * from {$tables["user"]} where uniqid = \"" . $_REQUEST["uid"] . "\"");
    $userdata = Sql_Fetch_Array($req);
    $req = Sql_Query(sprintf('select * from %s where email = "%s"', $tables["user"], $forwardemail));
    $forwarduserdata = Sql_Fetch_Array($req);
    #0011996: forward to friend - personal message
    # text cannot be longer than max, to prevent very long text with only linefeeds total cannot be longer than twice max
    if (FORWARD_PERSONAL_NOTE_SIZE && isset($_REQUEST['personalNote'])) {
        if (strlen(strip_newlines($_REQUEST['personalNote'])) > FORWARD_PERSONAL_NOTE_SIZE || strlen($_REQUEST['personalNote']) > FORWARD_PERSONAL_NOTE_SIZE * 2) {
            $info .= '<BR />' . $GLOBALS['strForwardNoteLimitReached'];
            $ok = false;
        }
        $personalNote = strip_tags(htmlspecialchars_decode(stripslashes($_REQUEST['personalNote'])));
        $userdata['personalNote'] = $personalNote;
    }
    if ($userdata["id"] && $mid) {
        if ($ok && count($emails)) {
            ## All is well, send it
            require 'admin/sendemaillib.php';
            #0013845 Lead Ref Scheme
            if (FORWARD_FRIEND_COUNT_ATTRIBUTE) {
                $iCountFriends = getAttributeIDbyName(FORWARD_FRIEND_COUNT_ATTRIBUTE);
            } else {
                $iCountFriends = 0;
            }
            if ($iCountFriends) {
                $nFriends = intval(UserAttributeValue($userdata['id'], $iCountFriends));
            }
            #0011860: forward to friend, multiple emails
            foreach ($emails as $index => $email) {
                #0011860: forward to friend, multiple emails
                $done = Sql_Fetch_Array_Query(sprintf('select user,status,time from %s where forward = "%s" and message = %d', $tables['user_message_forward'], $email, $mid));
                $info .= '<BR />' . $email . ': ';
                if ($done['status'] === 'sent') {
                    $info .= $GLOBALS['strForwardAlreadyDone'];
                } elseif (isBlackListed($email)) {
                    $info .= $GLOBALS['strForwardBlacklistedEmail'];
                } else {
                    if (!TEST) {
                        # forward the message
                        # sendEmail will take care of blacklisting
                        if (sendEmail($mid, $email, 'forwarded', $userdata['htmlemail'], array(), $userdata)) {
                            $info .= $GLOBALS["strForwardSuccessInfo"];
                            sendAdminCopy("Message Forwarded", $userdata["email"] . " has forwarded a message {$mid} to {$email}");
                            Sql_Query(sprintf('insert into %s (user,message,forward,status,time)
                 values(%d,%d,"%s","sent",now())', $tables['user_message_forward'], $userdata['id'], $mid, $email));
                            if ($iCountFriends) {
                                $nFriends++;
                            }
                        } else {
                            $info .= $GLOBALS["strForwardFailInfo"];
                            sendAdminCopy("Message Forwarded", $userdata["email"] . " tried forwarding a message {$mid} to {$email} but failed");
                            Sql_Query(sprintf('insert into %s (user,message,forward,status,time)
                values(%d,%d,"%s","failed",now())', $tables['user_message_forward'], $userdata['id'], $mid, $email));
                            $ok = false;
                        }
                    }
                }
            }
            # foreach friend
            if ($iCountFriends) {
                saveUserAttribute($userdata['id'], $iCountFriends, array('name' => FORWARD_FRIEND_COUNT_ATTRIBUTE, 'value' => $nFriends));
            }
        }
        #ok & emails
    } else {
        # no valid sender
        logEvent("Forward request from invalid user ID: " . substr($_REQUEST["uid"], 0, 150));
        $info .= '<BR />' . $GLOBALS["strForwardFailInfo"];
        $ok = false;
    }
    $data = PageData($id);
    if (isset($data['language_file']) && is_file(dirname(__FILE__) . '/texts/' . basename($data['language_file']))) {
        @(include dirname(__FILE__) . '/texts/' . basename($data['language_file']));
    }
    ## BAS Multiple Forward
    ## build response page
    $form = '<form method="post" action="">';
    $form .= sprintf('<input type=hidden name="mid" value="%d">', $mid);
    $form .= sprintf('<input type=hidden name="id" value="%d">', $id);
    $form .= sprintf('<input type=hidden name="uid" value="%s">', $userdata['uniqid']);
    $form .= sprintf('<input type=hidden name="p" value="forward">');
    if (!$ok) {
        #0011860: forward to friend, multiple emails
        if (FORWARD_EMAIL_COUNT == 1) {
            $form .= '<BR /><H2>' . $GLOBALS['strForwardEnterEmail'] . '</H2>';
            $form .= sprintf('<input type=text name="email" value="%s" size=50 class="attributeinput">', $forwardemail);
        } else {
            $form .= '<BR /><H2>' . sprintf($GLOBALS['strForwardEnterEmails'], FORWARD_EMAIL_COUNT) . '</H2>';
            $form .= sprintf('<textarea name="email" rows=10 cols=50 class="attributeinput">%s</textarea>', $forwardemail);
        }
        #0011996: forward to friend - personal message
        if (FORWARD_PERSONAL_NOTE_SIZE) {
            $form .= sprintf('<h2>' . $GLOBALS['strForwardPersonalNote'] . '</H2>', FORWARD_PERSONAL_NOTE_SIZE);
            $cols = 50;
            $rows = min(10, ceil(FORWARD_PERSONAL_NOTE_SIZE / 40));
            $form .= sprintf('<BR/><textarea type=text name="personalNote" rows=%d cols=%d class="attributeinput">%s</textarea>', $rows, $cols, $personalNote);
        }
        $form .= sprintf('<br /><input type=submit value="%s"></form>', $GLOBALS['strContinue']);
    }
    ### END BAS
    ### Michiel, remote response page
    $remote_content = '';
    if (preg_match("/\\[URL:([^\\s]+)\\]/i", $messagedata['message'], $regs)) {
        if (isset($regs[1]) && strlen($regs[1])) {
            $url = $regs[1];
            if (!preg_match('/^http/i', $url)) {
                $url = 'http://' . $url;
            }
            $remote_content = fetchUrl($url);
        }
    }
    if (!empty($remote_content) && preg_match('/\\[FORWARDFORM\\]/', $remote_content, $regs)) {
        if ($firstpage) {
            ## this is the initial page, not a follow up one.
            $remote_content = str_replace($regs[0], $info . $form, $remote_content);
        } else {
            $remote_content = str_replace($regs[0], $info, $remote_content);
        }
        $res = $remote_content;
    } else {
        $res = '<title>' . $GLOBALS["strForwardTitle"] . '</title>';
        $res .= $data["header"];
        $res .= '<h1>' . $subtitle . '</h1>';
        if ($ok) {
            $res .= '<h2>' . $info . '</h2>';
        } else {
            $res .= '<div class="missing">' . $info . '</div>';
        }
        $res .= $form;
        $res .= "<P>" . $GLOBALS["PoweredBy"] . '</p>';
        $res .= $data["footer"];
    }
    ### END MICHIEL
    return $res;
}
コード例 #17
0
$bRemovalConfirmed = false;
if ($gRurl) {
    // Do some basic validation
    $is_valid_url = preg_match("/^(http|https):\\/\\/([A-Z0-9][A-Z0-9_-]*(?:\\.[A-Z0-9][A-Z0-9_-]*)+):?(\\d+)?\\/?/i", $gRurl);
    if (!$is_valid_url) {
        echo "<p class=warning>The URL entered is invalid: {$gRurl}</p>\n";
    } else {
        $existingUrl = urlExists($gRurl);
        if (!$existingUrl) {
            echo "<p class=warning>Nothing to remove - the URL \"{$gRurl}\" doesn't exist in the HTTP Archive.</p>\n";
        } else {
            // make sure we have a trailing slash
            $url_to_fetch = substr($gRurl, -1) == '/' ? $gRurl : $gRurl . '/';
            $url_to_fetch .= 'removehttparchive.txt';
            // This requires setting this in php.ini: allow_url_fopen = On
            $bRemovalConfirmed = FALSE === @fetchUrl($url_to_fetch) ? false : true;
            if (!$bRemovalConfirmed) {
                echo "<p class=warning><a href='{$url_to_fetch}' style='text-decoration: underline; color: #870E00;'>{$url_to_fetch}</a> was not found.<br>{$gRurl} is still archived.</p>\n";
            } else {
                removeSite($gRurl);
                // queue it for removal
                echo "<p class=warning style='margin-bottom: 0;'>{$gRurl} will be removed within five business days.</p>\n<p style='margin-top: 0;'>You can remove removehttparchive.txt now.</p>";
            }
        }
    }
}
?>

<script type="text/javascript">
function confirmRemove() {
	var url = document.getElementById("rurl").value;
コード例 #18
0
		<h1><a href="./index.php">Redirections Tracer</a></h1>
<?php 
$url = "";
$type = 'GET';
if (isset($_GET['link'])) {
    $url = htmlentities(strtolower($_GET['link']));
}
if (isset($_GET['type']) && $_GET['type'] == 'GET' || $_GET['type'] == 'HEAD') {
    $type = $_GET['type'];
}
echo "<div class=\"box\">\n";
echo "<p>Trace all HTTP redirections of an URL !</p>\n\t\t\t<form action=\"./index.php\" method=\"get\">\n\t\t\t<table align=\"center\">  \n\t\t\t\t<tr>\n\t\t\t\t\t<td>URL : </td>\n\t\t\t\t\t<td><input type=\"text\" name=\"link\" value=\"{$url}\" size=\"40\" /></td>\n\t\t\t\t\t<td><input type=\"submit\" value=\"Go !\" /></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t\t<p>Request type:\n\t\t\t<input type=\"radio\" name=\"type\" value=\"GET\"" . ($type == 'GET' ? "checked=\"checked\"" : "") . ">GET\n\t\t\t<input type=\"radio\" name=\"type\" value=\"HEAD\"" . ($type == 'HEAD' ? "checked=\"checked\"" : "") . ">HEAD</p>\n\t\t</form>\n\t</div>";
if (isset($_GET['link']) && strlen($_GET['link']) > 0) {
    $size = 0;
    $url = addhttp(strtolower(trim($_GET['link'])));
    $result = fetchUrl($url, $size, $type);
    if ($result != false) {
        $headers = substr($result, 0, $size);
        $headers = explodeHeaders($headers);
        $results = array();
        $i = 0;
        foreach ($headers as $header) {
            $name = strtolower($header['name']);
            $value = strtolower($header['value']);
            if ($value == "" && $name != "") {
                $pos = strpos($name, ' ') + 1;
                $code = substr($name, $pos, 3);
                $results[$i]['code'] = $code;
                if ($code < 300 && $i == 0) {
                    $results[$i++]['location'] = $url;
                }
コード例 #19
0
ファイル: lib.php プロジェクト: pedru/phplist3
function refreshTlds($force = 0)
{
    ## fetch list of Tlds and store in DB
    $lastDone = getConfig('tld_last_sync');
    $tlds = '';
    ## let's not do this too often
    if ($lastDone + TLD_REFETCH_TIMEOUT < time() || $force) {
        ## even if it fails we mark it as done, so that we won't getting stuck in eternal updating.
        SaveConfig('tld_last_sync', time(), 0);
        if (defined('TLD_AUTH_LIST')) {
            $tlds = fetchUrl(TLD_AUTH_LIST);
        }
        if ($tlds && defined('TLD_AUTH_MD5')) {
            $tld_md5 = fetchUrl(TLD_AUTH_MD5);
            list($remote_md5, $fname) = explode(' ', $tld_md5);
            $mymd5 = md5($tlds);
            #        print 'OK: '.$remote_md5.' '.$mymd5;
            $validated = $remote_md5 == $mymd5;
        } else {
            $tlds = file_get_contents(dirname(__FILE__) . '/data/tlds-alpha-by-domain.txt');
            $validated = true;
        }
        if ($validated) {
            $lines = explode("\n", $tlds);
            $tld_list = '';
            foreach ($lines as $line) {
                ## for now, only handle ascii lines
                if (preg_match('/^\\w+$/', $line)) {
                    $tld_list .= $line . '|';
                }
            }
            $tld_list = substr($tld_list, 0, -1);
            SaveConfig('internet_tlds', strtolower($tld_list), 0);
        }
        #  } else {
        #    print $lastDone;
    }
    return true;
}
コード例 #20
0
ファイル: fbposts.php プロジェクト: sefrijn/metabolic
<?php

require '../../../wp-blog-header.php';
require "lib/settings.php";
function fetchUrl($url)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 20);
    // You may need to add the line below
    // curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
    $feedData = curl_exec($ch);
    curl_close($ch);
    return $feedData;
}
$profile_id = "433071773398066";
//App Info, needed for Auth
$app_id = $fbpublic;
$app_secret = $fbsecret;
//Retrieve auth token
$authToken = fetchUrl("https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id={$app_id}&client_secret={$app_secret}");
$json_object = fetchUrl("https://graph.facebook.com/{$profile_id}/feed?{$authToken}");
print_r($json_object);
コード例 #21
0
ファイル: sendemaillib.php プロジェクト: bcantwell/website
function precacheMessage($messageid, $forwardContent = 0)
{
    global $cached;
    $domain = getConfig('domain');
    #    $message = Sql_query("select * from {$GLOBALS["tables"]["message"]} where id = $messageid");
    #    $cached[$messageid] = array();
    #    $message = Sql_fetch_array($message);
    $message = loadMessageData($messageid);
    ## the reply to is actually not in use
    if (preg_match("/([^ ]+@[^ ]+)/", $message["replyto"], $regs)) {
        # if there is an email in the from, rewrite it as "name <email>"
        $message["replyto"] = str_replace($regs[0], "", $message["replyto"]);
        $cached[$messageid]["replytoemail"] = $regs[0];
        # if the email has < and > take them out here
        $cached[$messageid]["replytoemail"] = str_replace("<", "", $cached[$messageid]["replytoemail"]);
        $cached[$messageid]["replytoemail"] = str_replace(">", "", $cached[$messageid]["replytoemail"]);
        # make sure there are no quotes around the name
        $cached[$messageid]["replytoname"] = str_replace('"', "", ltrim(rtrim($message["replyto"])));
    } elseif (strpos($message["replyto"], " ")) {
        # if there is a space, we need to add the email
        $cached[$messageid]["replytoname"] = $message["replyto"];
        $cached[$messageid]["replytoemail"] = "listmaster@{$domain}";
    } else {
        if (!empty($message["replyto"])) {
            $cached[$messageid]["replytoemail"] = $message["replyto"] . "@{$domain}";
            ## makes more sense not to add the domain to the word, but the help says it does
            ## so let's keep it for now
            $cached[$messageid]["replytoname"] = $message["replyto"] . "@{$domain}";
        }
    }
    $cached[$messageid]["fromname"] = $message["fromname"];
    $cached[$messageid]["fromemail"] = $message["fromemail"];
    $cached[$messageid]["to"] = $message["tofield"];
    #0013076: different content when forwarding 'to a friend'
    $cached[$messageid]["subject"] = $forwardContent ? stripslashes($message["forwardsubject"]) : $message["subject"];
    #0013076: different content when forwarding 'to a friend'
    $cached[$messageid]["content"] = $forwardContent ? stripslashes($message["forwardmessage"]) : $message["message"];
    if (USE_MANUAL_TEXT_PART && !$forwardContent) {
        $cached[$messageid]["textcontent"] = $message["textmessage"];
    } else {
        $cached[$messageid]["textcontent"] = '';
    }
    #  var_dump($cached);exit;
    #0013076: different content when forwarding 'to a friend'
    $cached[$messageid]["footer"] = $forwardContent ? stripslashes($message["forwardfooter"]) : $message["footer"];
    if (strip_tags($cached[$messageid]["footer"]) != $cached[$messageid]["footer"]) {
        $cached[$messageid]["textfooter"] = HTML2Text($cached[$messageid]["footer"]);
        $cached[$messageid]["htmlfooter"] = $cached[$messageid]["footer"];
    } else {
        $cached[$messageid]["textfooter"] = $cached[$messageid]["footer"];
        $cached[$messageid]["htmlfooter"] = parseText($cached[$messageid]["footer"]);
    }
    $cached[$messageid]["htmlformatted"] = strip_tags($cached[$messageid]["content"]) != $cached[$messageid]["content"];
    $cached[$messageid]["sendformat"] = $message["sendformat"];
    if ($message["template"]) {
        $req = Sql_Fetch_Row_Query("select template from {$GLOBALS["tables"]["template"]} where id = {$message["template"]}");
        $cached[$messageid]["template"] = stripslashes($req[0]);
        $cached[$messageid]["templateid"] = $message["template"];
        #   dbg("TEMPLATE: ".$req[0]);
    } else {
        $cached[$messageid]["template"] = '';
        $cached[$messageid]["templateid"] = 0;
    }
    ## @@ put this here, so it can become editable per email sent out at a later stage
    $cached[$messageid]["html_charset"] = 'UTF-8';
    #getConfig("html_charset");
    ## @@ need to check on validity of charset
    if (!$cached[$messageid]["html_charset"]) {
        $cached[$messageid]["html_charset"] = 'UTF-8';
        #'iso-8859-1';
    }
    $cached[$messageid]["text_charset"] = 'UTF-8';
    #getConfig("text_charset");
    if (!$cached[$messageid]["text_charset"]) {
        $cached[$messageid]["text_charset"] = 'UTF-8';
        #'iso-8859-1';
    }
    ## if we are sending a URL that contains user attributes, we cannot pre-parse the message here
    ## but that has quite some impact on speed. So check if that's the case and apply
    $cached[$messageid]['userspecific_url'] = preg_match('/\\[.+\\]/', $message['sendurl']);
    if (!$cached[$messageid]['userspecific_url']) {
        ## Fetch external content here, because URL does not contain placeholders
        if ($GLOBALS["can_fetchUrl"] && preg_match("/\\[URL:([^\\s]+)\\]/i", $cached[$messageid]["content"], $regs)) {
            $remote_content = fetchUrl($regs[1], array());
            #  $remote_content = fetchUrl($message['sendurl'],array());
            # @@ don't use this
            #      $remote_content = includeStyles($remote_content);
            if ($remote_content) {
                $cached[$messageid]['content'] = str_replace($regs[0], $remote_content, $cached[$messageid]['content']);
                #  $cached[$messageid]['content'] = $remote_content;
                $cached[$messageid]["htmlformatted"] = strip_tags($remote_content) != $remote_content;
                ## 17086 - disregard any template settings when we have a valid remote URL
                $cached[$messageid]["template"] = NULL;
                $cached[$messageid]["templateid"] = NULL;
            } else {
                #print Error(s('unable to fetch web page for sending'));
                logEvent("Error fetching URL: " . $message['sendurl'] . ' cannot proceed');
                return false;
            }
        }
        if (VERBOSE && !empty($GLOBALS['getspeedstats'])) {
            output('fetch URL end');
        }
        /*
        print $message['sendurl'];
        print $remote_content;exit;
        */
    }
    // end if not userspecific url
    if ($cached[$messageid]["htmlformatted"]) {
        #   $cached[$messageid]["content"] = compressContent($cached[$messageid]["content"]);
    }
    $cached[$messageid]['google_track'] = $message['google_track'];
    /*
        else {
    print $message['sendurl'];
    exit;
    }
    */
    if (VERBOSE && !empty($GLOBALS['getspeedstats'])) {
        output('parse config start');
    }
    /*
     * this is not a good idea, as it'll replace eg "unsubscribeurl" with a general one instead of personalised
     *   if (is_array($GLOBALS["default_config"])) {
      foreach($GLOBALS["default_config"] as $key => $val) {
        if (is_array($val)) {
          $cached[$messageid]['content'] = str_ireplace("[$key]",getConfig($key),$cached[$messageid]['content']);
          $cached[$messageid]["textcontent"] = str_ireplace("[$key]",getConfig($key),$cached[$messageid]["textcontent"]);
          $cached[$messageid]["textfooter"] = str_ireplace("[$key]",getConfig($key),$cached[$messageid]['textfooter']);
          $cached[$messageid]["htmlfooter"] = str_ireplace("[$key]",getConfig($key),$cached[$messageid]['htmlfooter']);
        }
      }
    }
    */
    if (VERBOSE && !empty($GLOBALS['getspeedstats'])) {
        output('parse config end');
    }
    ## ##17233 not that many fields are actually useful, so don't blatantly use all
    #  foreach($message as $key => $val) {
    foreach (array('subject', 'id', 'fromname', 'fromemail') as $key) {
        $val = $message[$key];
        if (!is_array($val)) {
            $cached[$messageid]['content'] = str_ireplace("[{$key}]", $val, $cached[$messageid]['content']);
            $cached[$messageid]["textcontent"] = str_ireplace("[{$key}]", $val, $cached[$messageid]["textcontent"]);
            $cached[$messageid]["textfooter"] = str_ireplace("[{$key}]", $val, $cached[$messageid]['textfooter']);
            $cached[$messageid]["htmlfooter"] = str_ireplace("[{$key}]", $val, $cached[$messageid]['htmlfooter']);
        }
    }
    if (preg_match("/##LISTOWNER=(.*)/", $cached[$messageid]['content'], $regs)) {
        $cached[$messageid]['listowner'] = $regs[1];
        $cached[$messageid]['content'] = str_replace($regs[0], "", $cached[$messageid]['content']);
    } else {
        $cached[$messageid]['listowner'] = 0;
    }
    if (!empty($cached[$messageid]['listowner'])) {
        $att_req = Sql_Query("select name,value from {$GLOBALS["tables"]["adminattribute"]},{$GLOBALS["tables"]["admin_attribute"]} where {$GLOBALS["tables"]["adminattribute"]}.id = {$GLOBALS["tables"]["admin_attribute"]}.adminattributeid and {$GLOBALS["tables"]["admin_attribute"]}.adminid = " . $cached[$messageid]['listowner']);
        while ($att = Sql_Fetch_Array($att_req)) {
            $cached[$messageid]['content'] = preg_replace("#\\[LISTOWNER." . strtoupper(preg_quote($att["name"])) . "\\]#", $att["value"], $cached[$messageid]['content']);
        }
    }
    $baseurl = $GLOBALS['website'];
    if (defined('UPLOADIMAGES_DIR') && UPLOADIMAGES_DIR) {
        ## escape subdirectories, otherwise this renders empty
        $dir = str_replace('/', '\\/', UPLOADIMAGES_DIR);
        $cached[$messageid]['content'] = preg_replace('/<img(.*)src="\\/' . $dir . '(.*)>/iU', '<img\\1src="' . $GLOBALS['public_scheme'] . '://' . $baseurl . '/' . UPLOADIMAGES_DIR . '\\2>', $cached[$messageid]['content']);
    }
    //if (defined('FCKIMAGES_DIR') && FCKIMAGES_DIR) {
    //$cached[$messageid]['content'] = preg_replace('/<img(.*)src="\/lists\/'.FCKIMAGES_DIR.'(.*)>/iU','<img\\1src="'.$GLOBALS['public_scheme'].'://'.$baseurl.'/lists/'.FCKIMAGES_DIR.'\\2>',$cached[$messageid]['content']);
    //}
    return 1;
}
コード例 #22
0
ファイル: generatetext.php プロジェクト: gillima/phplist3
<?php

verifyCsrfGetToken();
# generate text content
$msgid = sprintf('%d', $_GET['id']);
$messagedata = loadMessageData($msgid);
//sleep(10); // to test the busy image
if (preg_match('/\\[URL:(.+)\\]/', $messagedata['message'], $regs)) {
    $content = fetchUrl($regs[1]);
    #  $textversion = 'Fetched '.$regs[1];
    $textversion = HTML2Text($content);
} else {
    $textversion = HTML2Text($messagedata['message']);
}
setMessageData($msgid, 'textmessage', $textversion);
## convert to feedback in the textarea
## @@FIXME this fails when the text is large, or contains £
$textversion = trim($textversion);
$textversion = preg_replace("/\n/", '\\n', $textversion);
$textversion = preg_replace("/\r/", '', $textversion);
$textversion = htmlentities($textversion, ENT_IGNORE, 'UTF-8', true);
$status = '<script type="text/javascript">

$("#textmessage").html("' . str_replace('"', '&quot;', $textversion) . '");
//$("#textmessage").load("./?page=pageaction&action=messagedata&field=textmessage&id=' . $msgid . '");
$("#generatetextversion").hide();

</script>
';