コード例 #1
1
ファイル: HTTP.php プロジェクト: carriercomm/jbs
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;
    #-------------------------------------------------------------------------------
    #-------------------------------------------------------------------------------
}
コード例 #2
0
 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;
 }
コード例 #3
0
ファイル: SMS.comp.php プロジェクト: carriercomm/jbs
        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']);
コード例 #4
0
ファイル: Main.php プロジェクト: carriercomm/jbs
    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;
#-------------------------------------------------------------------------------
コード例 #5
0
     #-----------------------------------------------------------------
     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');
     #-------------------------------------------------------------------
 }
 #-------------------------------------------------------------------
コード例 #6
0
ファイル: GetTemp.comp.php プロジェクト: carriercomm/jbs
$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;
#-------------------------------------------------------------------------------