function HTTP_Send($Target, $Settings, $Get = array(), $Post = array(), $Addins = array()) { /******************************************************************************/ $__args_types = array('string', 'array', 'array', 'string,array', 'array'); #------------------------------------------------------------------------------- $__args__ = Func_Get_Args(); eval(FUNCTION_INIT); /******************************************************************************/ $Default = array('Protocol' => 'tcp', 'Address' => 'localhost', 'Port' => 8080, 'Host' => 'localhost', 'Basic' => '', 'Charset' => 'UTF-8', 'Hidden' => '', 'IsLogging' => TRUE); #------------------------------------------------------------------------------- Array_Union($Default, $Settings); #------------------------------------------------------------------------------- $IsLogging = (bool) $Default['IsLogging']; #------------------------------------------------------------------------------- $Tmp = System_Element('tmp'); if (Is_Error($Tmp)) { return ERROR | @Trigger_Error('[HTTP_Send]: не удалось определить путь временной директории'); } #------------------------------------------------------------------------------- $Config = Config(); #------------------------------------------------------------------------------- $Address = $Default['Address']; #------------------------------------------------------------------------------- Debug(SPrintF('[HTTP_Send]: соединяемся с (%s:%u)', $Address, $Default['Port'])); #------------------------------------------------------------------------------- # https://bugs.php.net/bug.php?id=52913 # пришлось заменить: $Address -> $Default['Host'] $Socket = @FsockOpen(SPrintF('%s://%s', $Protocol = $Default['Protocol'], $Default['Host']), $Port = $Default['Port'], $nError, $sError, $Config['Other']['Libs']['HTTP']['SocketTimeout']); if (!Is_Resource($Socket)) { #------------------------------------------------------------------------------- $IsWrite = IO_Write(SPrintF('%s/logs/http-send.log', $Tmp), SPrintF("%s://%s:%u ошибка соединения\n\n", $Protocol, $Address, $Port)); if (Is_Error($IsWrite)) { return ERROR | @Trigger_Error('[HTTP_Send]: не удалось записать данные в лог файл'); } #------------------------------------------------------------------------------- return ERROR | @Trigger_Error('[HTTP_Send]: не удалось соединиться с удаленным хостом'); #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- # added by lissyara, 2012-01-04 in 08:42:54 MSK, for JBS-130 Stream_Set_TimeOut($Socket, $Config['Other']['Libs']['HTTP']['StreamTimeout']); #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- $Charset = $Default['Charset']; #------------------------------------------------------------------------------- $Method = Count($Post) > 0 ? 'POST' : 'GET'; #------------------------------------------------------------------------------- $Hidden = $Default['Hidden']; #------------------------------------------------------------------------------- if (Count($Get)) { $Target .= SPrintF('?%s', HTTP_Query($Get, $Charset, $Hidden, $IsLogging)); } #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- $Headers[] = SPrintF('%s %s HTTP/1.0', $Method, $Target); #------------------------------------------------------------------------------- $Headers[] = SPrintF('Host: %s', $Default['Host']); #------------------------------------------------------------------------------- $Headers[] = 'Connection: close'; #------------------------------------------------------------------------------- $Headers = Array_Merge($Headers, $Addins); #------------------------------------------------------------------------------- if ($Basic = $Default['Basic']) { #------------------------------------------------------------------------------- $Basic = Base64_Encode($Basic); #------------------------------------------------------------------------------- $Headers[] = SPrintF('Authorization: Basic %s', $Basic); #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- $Body = ''; #------------------------------------------------------------------------------- if ($Post) { #------------------------------------------------------------------------------- if (Is_Array($Post)) { #------------------------------------------------------------------------------- if (Count($Post) > 0) { #------------------------------------------------------------------------------- $Headers[] = 'Content-Type: application/x-www-form-urlencoded'; #------------------------------------------------------------------------------- $Body = HTTP_Query($Post, $Charset, $Hidden, $IsLogging); #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- } else { #------------------------------------------------------------------------------- $Body = Mb_Convert_Encoding($Post, $Charset); #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- if ($Length = MB_StrLen($Body, 'ASCII')) { $Headers[] = SPrintF('Content-Length: %u', $Length); } #------------------------------------------------------------------------------- $Query = SPrintF("%s\r\n\r\n%s", Implode("\r\n", $Headers), $Body); #------------------------------------------------------------------------------- Debug(SPrintF("[HTTP_Send]: делаем запрос:\n%s", $Query)); #------------------------------------------------------------------------------- if (!@Fwrite($Socket, $Query)) { return ERROR | @Trigger_Error('[HTTP_Send]: не удалось записать в сокет'); } #------------------------------------------------------------------------------- # added by lissyara, 2014-01-28 in 14:19:08 MSK, for JBS-130 Stream_Set_TimeOut($Socket, $Config['Other']['Libs']['HTTP']['StreamTimeout']); #------------------------------------------------------------------------------- $Receive = ''; #------------------------------------------------------------------------------- do { #------------------------------------------------------------------------------- $Bytes = @FGets($Socket); #------------------------------------------------------------------------------- $Receive .= $Bytes; #------------------------------------------------------------------------------- } while ($Bytes); #------------------------------------------------------------------------------- @Fclose($Socket); #------------------------------------------------------------------------------- if (Preg_Match('/Content-Type:[\\sa-zA-Z0-9\\/\\-\\;]+charset\\=([a-zA-Z0-9\\-]+)/i', $Receive, $Matches)) { #------------------------------------------------------------------------------- $Receive = Mb_Convert_Encoding($Receive, 'UTF-8', Next($Matches)); #------------------------------------------------------------------------------- } else { #------------------------------------------------------------------------------- $Receive = Mb_Convert_Encoding($Receive, 'UTF-8', $Default['Charset']); #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- Debug(SPrintF("[HTTP_Send]: получили ответ:\n%s", $Receive)); #------------------------------------------------------------------------------- $Log = SPrintF("%s://%s:%u [%s]\n%s\n%s\n\n", $Protocol, $Address, $Port, Date('r'), $Query, $Receive); #------------------------------------------------------------------------------- if ($Hidden) { #------------------------------------------------------------------------------- if (!Is_Array($Hidden)) { $Hidden = array($Hidden); } #------------------------------------------------------------------------------- foreach ($Hidden as $Pattern) { #------------------------------------------------------------------------------- $Pattern = UrlEncode(Mb_Convert_Encoding($Pattern, $Charset)); #------------------------------------------------------------------------------- $Log = Str_Replace($Pattern, SPrintF('[HIDDEN=(%u)]', StrLen($Pattern)), $Log); #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- if ($Default['IsLogging']) { #------------------------------------------------------------------------------- $IsWrite = IO_Write(SPrintF('%s/logs/http-send.log', $Tmp), $Log); if (Is_Error($IsWrite)) { return ERROR | @Trigger_Error('[HTTP_Send]: не удалось записать данные в лог файл'); } #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- $Heads = $Body = array(); #------------------------------------------------------------------------------- foreach (Explode("\r\n\r\n", $Receive) as $Chunk) { #------------------------------------------------------------------------------- if (Preg_Match('#^HTTP/1\\.*#', $Chunk)) { #------------------------------------------------------------------------------- $Heads[] = $Chunk; #------------------------------------------------------------------------------- } else { #------------------------------------------------------------------------------- $Body[] = $Chunk; #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- if (SizeOf($Body) < 1) { return ERROR | @Trigger_Error('[HTTP_Send]: ответ от сервера не верен'); } #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- return array('Heads' => Implode("\r\n\r\n", $Heads), 'Body' => Implode("\r\n\r\n", $Body)); #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- #$Receive = Preg_Split('/\r\n\r\n/',$Receive,PREG_SPLIT_DELIM_CAPTURE); #------------------------------------------------------------------------------- #if(Count($Receive) < 2) # return ERROR | @Trigger_Error('[HTTP_Send]: ответ от сервера не верен'); #------------------------------------------------------------------------------- #$Receive = Array_Combine(Array('Heads','Body'),$Receive); #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- #return $Receive; #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- }
static function getFilters($prefix = '', $taxonomy_term = Null) { global $wpdb; $prefix_length = MB_StrLen($prefix) + 1; $tables = array($wpdb->posts . ' AS posts'); $where = array('posts.post_status = "publish"', 'posts.post_type = "' . Post_Type::$post_type_name . '"', 'posts.post_title != ""', 'posts.post_title LIKE "' . $prefix . '%"'); if ($taxonomy_term) { $tables[] = $wpdb->term_relationships . ' AS term_relationships'; $where[] = 'term_relationships.object_id = posts.id'; $where[] = 'term_relationships.term_taxonomy_id = ' . $taxonomy_term->term_taxonomy_id; } $stmt = 'SELECT LOWER(SUBSTRING(posts.post_title,1,' . $prefix_length . ')) subword FROM ' . Join($tables, ',') . ' WHERE ' . Join($where, ' AND ') . ' GROUP BY subword ORDER BY subword ASC'; $arr_filter = $wpdb->Get_Col($stmt); $arr_filter = Apply_Filters('glossary_available_prefix_filters', $arr_filter, $prefix, $taxonomy_term); return $arr_filter; }
return ERROR | @Trigger_Error(500); } #------------------------------------------------------------------------------- $LimitSchemeID = Explode(',', $ServerSettings['Params']['ExceptionsSchemeID']); foreach ($OrderHostings as $OrderHosting) { if (In_Array((int) $OrderHosting['SchemeID'], $LimitSchemeID)) { $ChargeFree = true; break; } } #------------------------------------------------------------------------------- //Debug(print_r($LimitSchemeID, true)); } #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- $MessageLength = MB_StrLen($Message); #------------------------------------------------------------------------------- Debug(SPrintF('[comp/Tasks/SMS]: длинна: %s, сообщение (%s)', $MessageLength, $Message)); Debug(SPrintF('[comp/Tasks/SMS]: SMS шлюз (%s)', $ServerSettings['Params']['Provider'])); #Debug(SPrintF('[comp/Tasks/SMS]: API ключ (%s)', $ServerSettings['Params']['ApiKey'])); Debug(SPrintF('[comp/Tasks/SMS]: Отправитель (%s)', $ServerSettings['Params']['Sender'])); #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- if (Is_Error(System_Load(SPrintF('classes/%s.class.php', $ServerSettings['Params']['Provider'])))) { return ERROR | @Trigger_Error(500); } #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- $Regulars = Regulars(); $MobileCountry = 'PriceDefault'; $RegCountrys = array('PriceRu' => $Regulars['SMSPriceRu'], 'PriceUa' => $Regulars['SMSPriceUa'], 'PriceSng' => $Regulars['SMSPriceSng'], 'PriceZone1' => $Regulars['SMSPriceZone1'], 'PriceZone2' => $Regulars['SMSPriceZone2']);
case 'array': $Result = JSON_Encode($Result); case 'string': #--------------------------------------------------------------------------- if (!Headers_Sent()) { #------------------------------------------------------------------------- list($Micro, $Seconds) = Explode(' ', MicroTime()); #------------------------------------------------------------------------- Header(SPrintF('Waiting-Time: %01.2f sec', (double) $Micro + (double) $Seconds - START_TIME)); #------------------------------------------------------------------------- $Size = MB_StrLen($Result, 'ASCII'); #------------------------------------------------------------------------- if ($Size > 30720 && Preg_Match('/gzip/', (string) @$_SERVER['HTTP_ACCEPT_ENCODING'])) { #----------------------------------------------------------------------- Header(SPrintF('Real-Content-Length: %u', $Size)); #----------------------------------------------------------------------- $Result = GzEncode($Result); #----------------------------------------------------------------------- Header('Content-Encoding: gzip'); Header(SPrintF('Content-Length: %u', MB_StrLen($Result, 'ASCII'))); } } #--------------------------------------------------------------------------- echo $Result; break; default: # No more... } #------------------------------------------------------------------------------- return TRUE; #-------------------------------------------------------------------------------
#----------------------------------------------------------------- UnLink($PDF); #----------------------------------------------------------------- $File = IO_Read($Tiff); if (Is_Error($File)) { return ERROR | @Trigger_Error(500); } #----------------------------------------------------------------- UnLink($Tiff); #----------------------------------------------------------------- $Extension = 'tiff'; } else { $Extension = 'pdf'; } #------------------------------------------------------------------- $Length = MB_StrLen($File, 'ASCII'); #------------------------------------------------------------------- $Comp = Comp_Load('Formats/Invoice/Number', $Invoice['ID']); if (Is_Error($Comp)) { return ERROR | @Trigger_Error(500); } #------------------------------------------------------------------- if (!$IsNoHeaders) { #------------------------------------------------------------------- Header(SPrintF('Content-Type: application/%s; charset=utf-8', $Extension)); Header(SPrintF('Content-Length: %u', $Length)); Header(SPrintF('Content-Disposition: attachment; filename="Invoice%s.%s";', $Comp, $Extension)); Header('Pragma: nocache'); #------------------------------------------------------------------- } #-------------------------------------------------------------------
$Mime = (string) @$Args['Mime']; #------------------------------------------------------------------------------- if (!Preg_Match('/^[a-zA-Z0-9\\_\\.\\]\\[]+$/', $File)) { return 'Не верно указано имя файла'; } #------------------------------------------------------------------------------- $Tmp = System_Element('tmp'); if (Is_Error($Tmp)) { return ERROR | @Trigger_Error(500); } #------------------------------------------------------------------------------- $Path = SPrintF('%s/files/%s', $Tmp, $File); #------------------------------------------------------------------------------- if (!File_Exists($Path)) { return 'Файл не существует'; } #------------------------------------------------------------------------------- $Source = IO_Read($Path); if (Is_Error($Source)) { return ERROR | @Trigger_Error(500); } #------------------------------------------------------------------------------- $Length = MB_StrLen($Source, 'ASCII'); #------------------------------------------------------------------------------- Header(SPrintF('Content-Type: %s; charset=utf-8', $Mime ? $Mime : 'application')); Header(SPrintF('Content-Length: %u', $Length)); Header(SPrintF('Content-Disposition: attachment; filename="%s";', $Name ? AddSlashes($Name) : $File)); Header('Pragma: nocache'); #------------------------------------------------------------------------------- echo $Source; #-------------------------------------------------------------------------------