Beispiel #1
0
 static function getArchiveLink($filter = '', $taxonomy_term = Null)
 {
     $permalink_structure = Get_Option('permalink_structure');
     # Get base url
     if ($taxonomy_term) {
         $base_url = Get_Term_Link($taxonomy_term);
     } else {
         $base_url = Get_Post_Type_Archive_Link(self::$post_type_name);
     }
     if (!empty($permalink_structure)) {
         return User_TrailingSlashIt(SPrintF('%1$s/filter:%2$s', RTrim($base_url, '/'), RawURLEncode($filter)));
     } else {
         return Add_Query_Arg(array('filter' => RawURLEncode($filter)), $base_url);
     }
 }
Beispiel #2
0
 private function CheckCDN()
 {
     $this->Log('{lightblue}Checking CDN subdomains');
     $Questions = ['cdn.level3.cs.steampowered.com', 'cdn.akamai.cs.steampowered.com', 'cdn.highwinds.cs.steampowered.com'];
     $Response = [];
     for ($i = 1; $i < 11; $i++) {
         $Questions[] = 'content' . $i . '.steampowered.com';
     }
     foreach ($Questions as $Question) {
         Exec('dig +short ' . EscapeShellArg($Question), $Answer);
         $Answer = Array_Shift($Answer);
         $Answer = RTrim($Answer, '.');
         $Response[$Question] = $Answer;
     }
     File_Put_Contents(__DIR__ . '/Random/CDNs.json', JSON_Encode($Response, JSON_PRETTY_PRINT));
 }
Beispiel #3
0
 function GetIncludeSitePage($site)
 {
     if (strlen($site) <= 0) {
         return false;
     }
     $db_site = CSite::GetByID($site);
     if ($arSite = $db_site->Fetch()) {
         $arSite["DIR"] = RTrim($arSite["DIR"], ' \\/');
         $cur_page = GetPagePath();
         if (strlen($arSite["DIR"]) > 0) {
             global $REQUEST_URI;
             $REQUEST_URI = $arSite["DIR"] . $cur_page;
             $_SERVER["REQUEST_URI"] = $REQUEST_URI;
             return $_SERVER["DOCUMENT_ROOT"] . $REQUEST_URI;
         }
     }
     return false;
 }
Beispiel #4
0
 function GetSiteDocRoot($site)
 {
     if ($site === false) {
         $site = SITE_ID;
     }
     global $BX_CACHE_DOCROOT;
     if (!array_key_exists($site, $BX_CACHE_DOCROOT)) {
         $ar = CSite::getArrayByID($site);
         if ($ar && strlen($ar["DOC_ROOT"]) > 0) {
             $BX_CACHE_DOCROOT[$site] = Rel2Abs($_SERVER["DOCUMENT_ROOT"], $ar["DOC_ROOT"]);
         } else {
             $BX_CACHE_DOCROOT[$site] = RTrim($_SERVER["DOCUMENT_ROOT"], "/\\");
         }
     }
     return $BX_CACHE_DOCROOT[$site];
 }
Beispiel #5
0
function FindConfigElem(&$cfg_file, $elem_name)
{
    $cfg_info = array();
    $inside = 0;
    for ($i = 0; $i < Count($cfg_file); $i++) {
        $cfg_line = $cfg_file[$i];
        $cfg_line = RTrim($cfg_line);
        $cfg_line = LTrim($cfg_line);
        if (!$cfg_line) {
            // Blank line
            continue;
        } elseif (Preg_Match("/^(\\/\\/|#)/", $cfg_line)) {
            //Comment line
            continue;
        } elseif (Preg_Match("/^(([[:alnum:]]+)\\s+({$elem_name})|{$elem_name})\$/i", $cfg_line, $matches)) {
            $next_line = RTrim($cfg_file[$i + 1]);
            if (!Preg_Match("/\\s*\\{\\s*/i", $next_line)) {
                // Not an elem line - maybe a property line with no spaces infront of it.
                continue;
            }
            //Print("Inside (0){$matches[0]} (1){$matches[1]} (2){$matches[2]} (3){$matches[3]}\n");
            //It is inside the elem that it has been told to read.
            $inside = 1;
        } elseif ($inside) {
            if (Preg_Match("/^{/i", $cfg_line)) {
                //Ignore the { line
                continue;
            } elseif (Preg_Match("/^}/i", $cfg_line)) {
                //It reached the } line, which means it is done reading the elem.
                //Stop going through the rest of the file at this point.
                $inside = 0;
                break;
            } else {
                //It is still inside the elem's brackets.
                //Split the lines up into key value pairs.
                //Tuck the values into the array[key]
                $info = Preg_Split("/\\s+/", $cfg_line, 2, PREG_SPLIT_NO_EMPTY);
                $key = $info[0];
                $value = $info[1];
                if (!Is_Array($cfg_info[$key])) {
                    // If cfg_info[key] is not already an array,
                    // make it one so it can hold multiple values.
                    $cfg_info[$key] = array();
                }
                Array_Push($cfg_info[$key], $value);
            }
        }
    }
    if (Count($cfg_info) < 1) {
        return FALSE;
    } else {
        return $cfg_info;
    }
}
Beispiel #6
0
 function GetSiteSwitcherArray()
 {
     $cur_dir = $this->GetCurDir();
     $cur_page = $this->GetCurPage();
     $bAdmin = substr($cur_dir, 0, strlen(BX_ROOT . "/admin/")) == BX_ROOT . "/admin/";
     $path_without_lang = $path_without_lang_tmp = "";
     $db_res = CSite::GetList($by, $order, array("ACTIVE" => "Y", "ID" => LANG));
     if (($ar = $db_res->Fetch()) && strpos($cur_page, $ar["DIR"]) === 0) {
         $path_without_lang = substr($cur_page, strlen($ar["DIR"]) - 1);
         $path_without_lang = LTrim($path_without_lang, "/");
         $path_without_lang_tmp = RTrim($path_without_lang, "/");
     }
     $result = array();
     $db_res = CSite::GetList($by = "SORT", $order = "ASC", array("ACTIVE" => "Y"));
     while ($ar = $db_res->Fetch()) {
         $ar["NAME"] = htmlspecialcharsbx($ar["NAME"]);
         $ar["SELECTED"] = $ar["LID"] == LANG;
         if ($bAdmin) {
             global $QUERY_STRING;
             $p = rtrim(str_replace("&#", "#", preg_replace("/lang=[^&#]*&*/", "", $QUERY_STRING)), "&");
             $ar["PATH"] = $this->GetCurPage() . "?lang=" . $ar["LID"] . ($p != '' ? '&' . $p : '');
         } else {
             $ar["PATH"] = "";
             if (strlen($path_without_lang) > 1 && file_exists($ar["ABS_DOC_ROOT"] . "/" . $ar["DIR"] . "/" . $path_without_lang_tmp)) {
                 $ar["PATH"] = $ar["DIR"] . $path_without_lang;
             }
             if (strlen($ar["PATH"]) <= 0) {
                 $ar["PATH"] = $ar["DIR"];
             }
             if ($ar["ABS_DOC_ROOT"] !== $_SERVER["DOCUMENT_ROOT"]) {
                 $ar["FULL_URL"] = (CMain::IsHTTPS() ? "https://" : "http://") . $ar["SERVER_NAME"] . $ar["PATH"];
             } else {
                 $ar["FULL_URL"] = $ar["PATH"];
             }
         }
         $result[] = $ar;
     }
     return $result;
 }
Beispiel #7
0
	function GetSiteDocRoot($site)
	{
		if($site === false)
			$site = SITE_ID;

		global $BX_CACHE_DOCROOT;
		if(!is_set($BX_CACHE_DOCROOT, $site))
		{
			$res = CSite::GetByID($site);
			if(($ar = $res->Fetch()) && strlen($ar["DOC_ROOT"])>0)
			{
				$BX_CACHE_DOCROOT[$site] = Rel2Abs($_SERVER["DOCUMENT_ROOT"], $ar["DOC_ROOT"]);
			}
			else
				$BX_CACHE_DOCROOT[$site] = RTrim($_SERVER["DOCUMENT_ROOT"], "/\\");
		}

		return $BX_CACHE_DOCROOT[$site];
	}
Beispiel #8
0
 function AddMessage($mailbox_id, $message, $charset)
 {
     global $DB;
     // replace all /n -> /r/n
     //$message = str_replace("\r\n", "\n", $message);
     //$message = str_replace("\n", "\r\n", $message);
     $header_pos = strpos($message, "\r\n\r\n");
     // spliting message to header and body
     $message_header = substr($message, 0, $header_pos);
     $message_body = substr($message, $header_pos + 4);
     $message_body_html = false;
     // parsing header and convert
     $arMessageParts = array();
     $obHeader = CMailMessage::ParseHeader($message_header, $charset);
     if ($obHeader->IsMultipart()) {
         //echo 'obHeader="<pre>';print_r($obHeader);echo '/obHeader</pre>';
         $arMessagePartsTmp = preg_split("/" . preg_quote("--" . $obHeader->GetBoundary(), "/") . "(--|\r\n)/s", $message_body);
         $message_body = "";
         for ($i = 0; $i < count($arMessagePartsTmp); $i++) {
             if (strlen($arMessagePartsTmp[$i]) <= 0) {
                 continue;
             }
             $message_part = $arMessagePartsTmp[$i];
             if (substr($message_part, 0, 2) == "\r\n") {
                 $message_part = "\r\n" . $message_part;
             }
             $p = strpos($message_part, "\r\n\r\n");
             $message_part_header = substr($message_part, 0, $p);
             if (strlen(trim($message_part_header)) <= 0 && count($arMessagePartsTmp) > 1) {
                 continue;
             }
             $message_part_body = substr($message_part, $p + 4);
             if (strlen(trim($message_part_body)) <= 0) {
                 continue;
             }
             $obMPHeader = CMailMessage::ParseHeader($message_part_header, $charset);
             if (strtolower($obHeader->MultipartType()) == "alternative" && $obMPHeader->IsMultipart()) {
                 continue;
             }
             if (strtolower($obMPHeader->MultipartType()) == "alternative" && $obMPHeader->IsMultipart()) {
                 $arMessagePartsRelTmp = preg_split("/" . preg_quote("--" . $obMPHeader->GetBoundary(), "/") . "(--|\r\n)/s", $message_part_body);
                 $bFound = false;
                 $obMPHeaderHTML = false;
                 for ($j = 0; $j < count($arMessagePartsRelTmp); $j++) {
                     if (strlen(trim($arMessagePartsRelTmp[$j])) <= 0) {
                         continue;
                     }
                     $p = strpos($arMessagePartsRelTmp[$j], "\r\n\r\n");
                     $message_part_rel_header = substr($arMessagePartsRelTmp[$j], 0, $p);
                     $message_part_rel_body = substr($arMessagePartsRelTmp[$j], $p + 4);
                     $obMPRelHeader = CMailMessage::ParseHeader($message_part_rel_header, $charset);
                     $rel_content_type = strtolower($obMPRelHeader->content_type);
                     if ($rel_content_type == "text/plain") {
                         $bFound = true;
                         $obMPHeader = $obMPRelHeader;
                         $message_part_body = $message_part_rel_body;
                         break;
                     } elseif ($rel_content_type == "text/html" && !is_object($obMPHeaderHTML)) {
                         $obMPHeaderHTML = $obMPRelHeader;
                         $message_part_body_html = $message_part_rel_body;
                     }
                 }
                 // for($j=0; $j<count($arMessagePartsRelTmp); $j++)
                 if (!$bFound && is_object($obMPHeaderHTML)) {
                     $obMPHeader = $obMPHeaderHTML;
                     $message_part_body = HTMLToTxt($message_part_body_html);
                     $bFound = true;
                 }
             }
             // if(strtolower($obMPHeader->MultipartType() ...
             $content_type = strtolower($obMPHeader->content_type);
             //print_r($obMPHeader);
             $encoding = strtolower($obMPHeader->GetHeader("CONTENT-TRANSFER-ENCODING"));
             if ($encoding == "base64") {
                 $message_part_body = base64_decode($message_part_body);
             } elseif ($encoding == "quoted-printable") {
                 $message_part_body = quoted_printable_decode($message_part_body);
             } elseif ($encoding == "x-uue") {
                 $message_part_body = CMailUtil::uue_decode($message_part_body);
             }
             //?
             $msg_charset = $obMPHeader->charset;
             $filename = $obMPHeader->filename;
             if ((strpos($content_type, "plain") !== false || strpos($content_type, "html") !== false || strpos($content_type, "text") !== false) && strpos($content_type, "x-vcard") === false) {
                 $message_part_body_converted = CMailUtil::ConvertCharset($message_part_body, $msg_charset, $charset);
             } else {
                 $message_part_body_converted = $message_part_body;
             }
             $arMessageParts[] = array("CONTENT-TYPE" => $content_type, "CONTENT-ID" => $obMPHeader->content_id, "CHARSET" => $charset, "BODY" => $message_part_body_converted, "FILENAME" => $filename);
         }
         //for($i=0; $i<count($arMessagePartsTmp); $i++)
         for ($i = 0; $i < count($arMessageParts); $i++) {
             if (strlen($arMessageParts[$i]["FILENAME"]) <= 0 && strpos(strtolower($arMessageParts[$i]["CONTENT-TYPE"]), "text/") === 0) {
                 if (strtolower($arMessageParts[$i]["CONTENT-TYPE"]) == "text/html") {
                     $message_body_html = $arMessageParts[$i]["BODY"];
                     $message_body = HTMLToTxt($arMessageParts[$i]["BODY"]);
                 } else {
                     $message_body = $arMessageParts[$i]["BODY"];
                 }
                 unset($arMessageParts[$i]);
                 break;
             }
         }
         //print_r($arMessageParts);
     } else {
         $encoding = strtolower($obHeader->GetHeader("CONTENT-TRANSFER-ENCODING"));
         if ($encoding == "base64") {
             $message_body = base64_decode($message_body);
         } elseif ($encoding == "quoted-printable") {
             $message_body = quoted_printable_decode($message_body);
         } elseif ($encoding == "x-uue") {
             $message_body = CMailUtil::uue_decode($message_body);
         }
         //?
         $message_body = CMailUtil::ConvertCharset($message_body, $obHeader->charset, $charset);
         if (strtolower($obHeader->content_type) == "text/html") {
             $message_body_html = $message_body;
             $message_body = HTMLToTxt($message_body);
         }
     }
     //if($obHeader->IsMultipart())
     $arFields = array("MAILBOX_ID" => $mailbox_id, "HEADER" => $obHeader->strHeader, "FIELD_DATE_ORIGINAL" => $obHeader->GetHeader("DATE"), "NEW_MESSAGE" => "Y", "FIELD_FROM" => $obHeader->GetHeader("FROM"), "FIELD_REPLY_TO" => $obHeader->GetHeader("REPLY-TO"), "FIELD_TO" => $obHeader->GetHeader("TO"), "FIELD_CC" => $obHeader->GetHeader("CC"), "FIELD_BCC" => ($obHeader->GetHeader('X-Original-Rcpt-to') != '' ? $obHeader->GetHeader('X-Original-Rcpt-to') . ($obHeader->GetHeader("BCC") != '' ? ', ' : '') : '') . $obHeader->GetHeader("BCC"), "MSG_ID" => trim($obHeader->GetHeader("MESSAGE-ID"), " <>"), "IN_REPLY_TO" => trim($obHeader->GetHeader("IN-REPLY-TO"), " <>"), "FIELD_PRIORITY" => IntVal($obHeader->GetHeader("X-PRIORITY")), "MESSAGE_SIZE" => strlen($message), "SUBJECT" => $obHeader->GetHeader("SUBJECT"), "BODY" => RTrim($message_body));
     //print_r($arMessageParts);	print_r($arFields); die();
     if (COption::GetOptionString("mail", "save_src", B_MAIL_SAVE_SRC) == "Y") {
         $arFields["FULL_TEXT"] = $message;
     }
     if ($message_body_html !== false) {
         $arFields["FOR_SPAM_TEST"] = $obHeader->strHeader . " " . $message_body_html;
     } else {
         $arFields["FOR_SPAM_TEST"] = $obHeader->strHeader . " " . $message_body;
     }
     $arFields["SPAM"] = "?";
     if (COption::GetOptionString("mail", "spam_check", B_MAIL_CHECK_SPAM) == "Y") {
         $arSpam = CMailFilter::GetSpamRating($arFields["FOR_SPAM_TEST"]);
         $arFields["SPAM_RATING"] = $arSpam["RATING"];
         $arFields["SPAM_WORDS"] = $arSpam["WORDS"];
         $arFields["SPAM_LAST_RESULT"] = "Y";
     }
     if (CMailUtil::IsSizeAllowed(strlen(implode(",", $arFields)))) {
         $MESSAGE_ID = CMailMessage::Add($arFields);
         CMailLog::AddMessage(array("MAILBOX_ID" => $mailbox_id, "MESSAGE_ID" => $MESSAGE_ID, "STATUS_GOOD" => "Y", "LOG_TYPE" => "NEW_MESSAGE", "MESSAGE" => $arFields["SUBJECT"] . " (" . $arFields["MESSAGE_SIZE"] . ") " . (COption::GetOptionString("mail", "spam_check", B_MAIL_CHECK_SPAM) == "Y" ? "[" . Round($arFields["SPAM_RATING"], 3) . "]" : "")));
         if (COption::GetOptionString("mail", "save_attachments", B_MAIL_SAVE_ATTACHMENTS) == "Y") {
             $n = 0;
             foreach ($arMessageParts as $part) {
                 $arField = array("MESSAGE_ID" => $MESSAGE_ID, "FILE_NAME" => $part["FILENAME"], "CONTENT_TYPE" => $part["CONTENT-TYPE"], "FILE_DATA" => $part["BODY"], "CONTENT_ID" => $part["CONTENT-ID"]);
                 CMailMessage::AddAttachment($arField);
             }
             // foreach($arMessageParts as $part)
         }
         CMailFilter::FilterMessage($MESSAGE_ID, "R");
         return $MESSAGE_ID;
     } else {
         CMailLog::AddMessage(array("MAILBOX_ID" => $mailbox_id, "STATUS_GOOD" => "N", "LOG_TYPE" => "NEW_MESSAGE", "MESSAGE" => "Big message size, check mysql max_allow_packet."));
     }
 }