WordPress.org

Plugin Directory

Changeset 578761


Ignore:
Timestamp:
07/29/12 17:05:19 (21 months ago)
Author:
ntm
Message:

8.8.10.14 beta 21

Location:
podpress/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • podpress/trunk/podpress.php

    r575290 r578761  
    11<?php 
    2 define('PODPRESS_VERSION', '8.8.10.14 beta 20'); 
     2define('PODPRESS_VERSION', '8.8.10.14 beta 21'); 
    33/* 
    44Info for WordPress: 
    55============================================================================== 
    66Plugin Name: podPress 
    7 Version: 8.8.10.14 beta 20 
     7Version: 8.8.10.14 beta 21 
    88Plugin URI: http://www.mightyseek.com/podpress/ 
    99Description: The podPress plugin gives you everything you need in one easy plugin to use WordPress for Podcasting. Set it up in <a href="admin.php?page=podpress/podpress_feed.php">'podPress'->Feed/iTunes Settings</a>. If this plugin works for you, send us a comment. 
  • podpress/trunk/podpress_admin_functions.php

    r567508 r578761  
    10031003    /**************************************************************/ 
    10041004 
    1005     function podPress_ResolveReDirects($uriFileName) 
    1006     { 
    1007         GLOBAL $podPress; 
    1008  
     1005    /** 
     1006    * podPress_ResolveReDirects - function to retrieve the direct URL to the media file (follows up to 5 redirects) / It uses cURL by default since 8.8.10.14. 
     1007    * 
     1008    * @package podPress 
     1009    * @since (unknown) 
     1010    * 
     1011    * @param string $uriFileName - the URL of the media file 
     1012    * 
     1013    * return string $uriFileName - the direct URL of the media file or nothing 
     1014    */   
     1015    function podPress_ResolveReDirects($uriFileName) { 
    10091016        $tries = 0; 
    1010         while($tries < 5) { 
    1011             $tries++; 
    1012             $aURL = parse_url($uriFileName); 
    1013             if($aURL['scheme'] != 'http') { 
    1014                 return; 
    1015             } 
    1016             $sHost = $aURL['host']; 
    1017             $sFilepath = (isset($aURL['path']) ? $aURL['path'] : '/') . (isset($aURL['query']) ? '?' . $aURL['query'] : ''); 
    1018             $nPort = isset($aURL['port']) ? $aURL['port'] : 80; 
    1019             $fpRemote = @fsockopen($sHost, $nPort, $errno, $errstr, 30); 
    1020             // Make sure the socket is open 
    1021             if(!$fpRemote) { 
    1022                 return; 
    1023             } 
    1024             // Request headers 
    1025             $sHeaders = "HEAD " . $sFilepath . " HTTP/1.1\r\n"; 
    1026             $sHeaders .= "Host: ". $sHost . "\r\n"; 
    1027             $sHeaders .= "Connection: Close\r\n\r\n"; 
    1028             // Sending headers 
    1029             fwrite($fpRemote, $sHeaders); 
    1030             // Getting back the content 
    1031             $sRemoteHeaders = ''; 
    1032             while(!feof($fpRemote)) { 
    1033                 $sRemoteHeaders .= fgets($fpRemote, 128); 
    1034             } 
    1035             // Closing the socket 
    1036             fclose($fpRemote); 
    1037             // parse headers 
    1038             $crlf = "\r\n"; 
    1039             $headers = array(); 
    1040             $lines = explode($crlf, $sRemoteHeaders); 
    1041             foreach($lines as $line) { 
    1042                 if(($pos = strpos($line, ':')) !== false) { 
    1043                     $headers[strtolower(trim(substr($line, 0, $pos)))] = trim(substr($line, $pos+1)); 
    1044                 } 
    1045             } 
    1046       
    1047             // redirection? 
    1048             if(isset($headers['location'])) { 
    1049                 $uriFileName = $headers['location']; 
    1050             } else { 
    1051                 return $uriFileName; 
    1052             } 
     1017        if ( TRUE == function_exists('curl_init') ) { 
     1018            $safety = 2; // seconds 
     1019            while($tries < 5) { 
     1020                $tries++; 
     1021                $aURL = parse_url($uriFileName); 
     1022                if ( $aURL['scheme'] != 'http' ) { 
     1023                    return ''; 
     1024                } 
     1025                 
     1026                $max_time = podPress_get_max_execution_time(); 
     1027 
     1028                $sRemoteHeaders = podPress_get_HTTP_header_via_cURL($uriFileName, $max_time, $safety); 
     1029                 
     1030                // parse headers 
     1031                $crlf = "\r\n"; 
     1032                $headers = array(); 
     1033                $lines = explode($crlf, $sRemoteHeaders); 
     1034                foreach($lines as $line) { 
     1035                    if(($pos = strpos($line, ':')) !== false) { 
     1036                        $headers[strtolower(trim(substr($line, 0, $pos)))] = trim(substr($line, $pos+1)); 
     1037                    } 
     1038                } 
     1039          
     1040                // redirection? 
     1041                if(isset($headers['location'])) { 
     1042                    $uriFileName = $headers['location']; 
     1043                } else { 
     1044                    return $uriFileName; 
     1045                } 
     1046            } 
     1047             
     1048        } else { 
     1049         
     1050            while($tries < 5) { 
     1051                $tries++; 
     1052                $aURL = parse_url($uriFileName); 
     1053                if($aURL['scheme'] != 'http') { 
     1054                    return; 
     1055                } 
     1056                $sHost = $aURL['host']; 
     1057                $sFilepath = (isset($aURL['path']) ? $aURL['path'] : '/') . (isset($aURL['query']) ? '?' . $aURL['query'] : ''); 
     1058                $nPort = isset($aURL['port']) ? $aURL['port'] : 80; 
     1059                $fpRemote = @fsockopen($sHost, $nPort, $errno, $errstr, 30); 
     1060                 
     1061                // Make sure the socket is open 
     1062                if(!$fpRemote) { 
     1063                    return; 
     1064                } 
     1065                 
     1066                // Request headers 
     1067                $sHeaders = "HEAD " . $sFilepath . " HTTP/1.1\r\n"; 
     1068                $sHeaders .= "Host: ". $sHost . "\r\n"; 
     1069                $sHeaders .= "Connection: Close\r\n\r\n"; 
     1070                 
     1071                // Sending headers 
     1072                fwrite($fpRemote, $sHeaders); 
     1073                 
     1074                // Getting back the content 
     1075                $sRemoteHeaders = ''; 
     1076                while(!feof($fpRemote)) { 
     1077                    $sRemoteHeaders .= fgets($fpRemote, 128); 
     1078                } 
     1079                 
     1080                // Closing the socket 
     1081                fclose($fpRemote); 
     1082                 
     1083                // parse headers 
     1084                $crlf = "\r\n"; 
     1085                $headers = array(); 
     1086                $lines = explode($crlf, $sRemoteHeaders); 
     1087                foreach($lines as $line) { 
     1088                    if(($pos = strpos($line, ':')) !== false) { 
     1089                        $headers[strtolower(trim(substr($line, 0, $pos)))] = trim(substr($line, $pos+1)); 
     1090                    } 
     1091                } 
     1092          
     1093                // redirection? 
     1094                if(isset($headers['location'])) { 
     1095                    $uriFileName = $headers['location']; 
     1096                } else { 
     1097                    return $uriFileName; 
     1098                } 
     1099            } 
     1100         
    10531101        } 
    10541102        return $uriFileName; 
     
    13651413        GLOBAL $podPress; 
    13661414         
    1367         // some downloads may hit time limits -> lets find out these limits, stop the process a moment before and return an error message 
    1368         // search for PHP time limits 
    1369         $max_execution_time = intval(ini_get('max_execution_time')); 
    1370         podPress_var_dump('podPress_downloadFile - max_execution_time: '.$max_execution_time); 
     1415        $max_time = podPress_get_max_execution_time(); 
     1416        podPress_var_dump('podPress_downloadFile - time limit: '.$max_time); 
    13711417        $safety = 2; // seconds 
    1372          
    1373         // get the OS type on the server 
    1374         $hairstick = php_uname(); 
    1375         $is_windows = stristr( $hairstick, 'win' ); 
    1376         // search for CPU time limits 
    1377         if (FALSE === $is_windows) {  
    1378             @exec('ulimit -t', $output) or $output[0] = 10; 
    1379             $int_output = intval($output[0]); 
    1380             podPress_var_dump('podPress_downloadFile - ulimit -t: '. $output[0].' - (int): '.$int_output); 
    1381             if (is_string($output[0]) AND 10 > $int_output) { 
    1382                 $max_time = max(($safety+2), $max_execution_time); // if max_execution_time is somehow weird small 
    1383             } else { 
    1384                 $max_time = min(intval($output[0]), $max_execution_time); // if the CPU limit is bigger than 10 then take the max. of the CPU limit and the max_execution_time 
    1385             } 
    1386         } else { 
    1387             $max_time = $max_execution_time; // on Windows systems 
    1388         } 
    1389         podPress_var_dump('podPress_downloadFile - time limit: '.$max_time); 
    13901418 
    13911419        $aborttimelimit = FALSE; 
     
    13961424         
    13971425        $uriFileName = podPress_ResolveReDirects($uriFileName); 
    1398         $aURL = @parse_url($uriFileName); 
    1399         if ( $aURL['scheme'] != 'http' ) { 
    1400             podPress_var_dump('podPress_downloadFile - returning - not a http:// URL : '.var_export($aURL, TRUE)); 
    1401             return; 
    1402         } 
    1403         $sHost = $aURL['host']; 
    1404         $sFilepath = (isset($aURL['path']) ? $aURL['path'] : '/') . (isset($aURL['query']) ? '?' . $aURL['query'] : ''); 
    1405          
    1406         // mask white spaces in the file name 
    1407         $sFilepath = str_replace(' ', '%20', $sFilepath); 
    1408          
    1409         $nPort = isset($aURL['port']) ? $aURL['port'] : 80; 
    1410          
    1411         if ( function_exists('fsockopen') ) { 
    1412             $fpRemote = @fsockopen($sHost, $nPort, $errno, $errstr, 30); 
    1413         } else { 
    1414             $fpRemote = FALSE; 
    1415         } 
    1416         if ( FALSE !== $fpRemote ) { 
     1426         
     1427        if ( FALSE === function_exists('curl_init') ) { 
     1428         
     1429            $aURL = parse_url($uriFileName); 
     1430            if ( $aURL['scheme'] != 'http' ) { 
     1431                podPress_var_dump('podPress_downloadFile - returning - not a http:// URL : '.var_export($aURL, TRUE)); 
     1432                return; 
     1433            } 
     1434            $sHost = $aURL['host']; 
     1435            $sFilepath = (isset($aURL['path']) ? $aURL['path'] : '/') . (isset($aURL['query']) ? '?' . $aURL['query'] : ''); 
     1436             
     1437            // mask white spaces in the file name 
     1438            $sFilepath = str_replace(' ', '%20', $sFilepath); 
     1439             
     1440            $nPort = isset($aURL['port']) ? $aURL['port'] : 80; 
     1441             
     1442            if ( function_exists('fsockopen') ) { 
     1443                $fpRemote = @fsockopen($sHost, $nPort, $errno, $errstr, 30); 
     1444            } else { 
     1445                $fpRemote = FALSE; 
     1446                return FALSE; 
     1447            } 
    14171448            if ( TRUE === $getHeaders ) { 
    14181449                podPress_var_dump('podPress_downloadFile - get only the header'); 
     
    15391570                return $localtempfilename; 
    15401571            } 
     1572             
    15411573        } else { 
     1574             
    15421575            if ( TRUE === $getHeaders ) { 
    1543                 podPress_var_dump('podPress_downloadFile - fpRemote = false | getHeaders = true'); 
    1544  
    1545                 if ( TRUE == function_exists('curl_init') ) { 
    1546                     $ch = curl_init($uriFileName); 
    1547                      
    1548                     // make sure we get the header 
    1549                     curl_setopt($ch, CURLOPT_HEADER, TRUE); 
    1550                     // make it a http HEAD request 
    1551                     curl_setopt($ch, CURLOPT_NOBODY, TRUE); 
    1552                     // add useragent 
    1553                     curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13'); 
    1554                     //Tell curl to write the response to a variable                  
    1555                     curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
    1556                     // The maximum number of seconds to allow cURL to wait for a connection. 
    1557                     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, min(10, $max_time-$safety)); 
    1558                     // The maximum number of seconds to allow cURL functions to execute. 
    1559                     curl_setopt($ch, CURLOPT_TIMEOUT, ($max_time-$safety)); 
    1560                     // Tell curl to stop when it encounters an error 
    1561                     curl_setopt($ch, CURLOPT_FAILONERROR, TRUE); 
    1562                      
    1563                     $content = curl_exec($ch); 
    1564                      
    1565                     podPress_var_dump('podPress_downloadFile - cURL HTTP code: ' . var_export(curl_getinfo($ch, CURLINFO_HTTP_CODE), TRUE)); 
    1566  
    1567                     // Check if any error occured 
    1568                     if ( !curl_errno($ch) ) { 
    1569                         $bytes = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD); 
    1570                         $total_time = curl_getinfo($ch, CURLINFO_TOTAL_TIME); 
    1571                         podPress_var_dump('File size: ' . $bytes . ' bytes'); 
    1572                         podPress_var_dump('Took ' . $total_time . ' seconds to send a request to ' . $url); 
    1573                         //clearstatcache(); 
    1574                     } 
    1575                     @curl_close($ch); 
    1576                     podPress_var_dump($content); 
    1577                     return $content; 
    1578                 } else { 
    1579                     podPress_var_dump('podPress_downloadFile - cUrl is not available'); 
     1576                podPress_var_dump('podPress_downloadFile - curl_init is available | getHeaders = true'); 
     1577                return podPress_get_HTTP_header_via_cURL($uriFileName, $max_time, $safety); 
     1578            } else { 
     1579                podPress_var_dump('podPress_downloadFile - curl_init is available | getHeaders = false'); 
     1580                // determine a temp folder and temp file name 
     1581                $ext = podPress_getFileExt($uriFileName); 
     1582                $pos = strpos($ext, '?'); 
     1583                if($pos) { 
     1584                    $ext = substr($ext, 0, $pos); 
     1585                } 
     1586                // Trying to write into the servers temp folder. The temp file has to have the media files extension. Because getID3 does not work without it. 
     1587                $localtempfilename = @tempnam('/tmp', 'getID3').'.'.$ext; 
     1588                if (FALSE == $localtempfilename OR '.'.$ext == $localtempfilename) { 
     1589                    // If it is not possible to get the temp folder via tempnam() then try to write into the temp folder of podPress 
     1590                    $podPress->checkWritableTempFileDir(); 
     1591                    $localtempfilename = $podPress->tempfilesystempath.'/podpress_tmp.'.$ext; 
     1592                } 
     1593                if (!$fp_local = @fopen($localtempfilename, 'wb')) { 
     1594                    // if it is not possible to open a temp file then return 
     1595                    podPress_var_dump('podPress_downloadFile - (file) it is not possible to open a temp file'); 
    15801596                    return ''; 
    15811597                } 
    1582             } else { 
    1583                 podPress_var_dump('podPress_downloadFile - fpRemote = false | getHeaders = false'); 
    1584                 if ( TRUE == function_exists('curl_init') ) { 
    1585                     // determine a temp folder and temp file name 
    1586                     $ext = podPress_getFileExt($uriFileName); 
    1587                     $pos = strpos($ext, '?'); 
    1588                     if($pos) { 
    1589                         $ext = substr($ext, 0, $pos); 
    1590                     } 
    1591                     // Trying to write into the servers temp folder. The temp file has to have the media files extension. Because getID3 does not work without it. 
    1592                     $localtempfilename = @tempnam('/tmp', 'getID3').'.'.$ext; 
    1593                     if (FALSE == $localtempfilename OR '.'.$ext == $localtempfilename) { 
    1594                         // If it is not possible to get the temp folder via tempnam() then try to write into the temp folder of podPress 
    1595                         $podPress->checkWritableTempFileDir(); 
    1596                         $localtempfilename = $podPress->tempfilesystempath.'/podpress_tmp.'.$ext; 
    1597                     } 
    1598                     if (!$fp_local = @fopen($localtempfilename, 'wb')) { 
    1599                         // if it is not possible to open a temp file then return 
    1600                         podPress_var_dump('podPress_downloadFile - (file) it is not possible to open a temp file'); 
    1601                         return ''; 
    1602                     } 
    1603                     podPress_var_dump('podPress_downloadFile - (file) localtempfilename: '.$localtempfilename); 
    1604                      
    1605                     // starting cURL 
    1606                     $ch = curl_init($uriFileName); 
    1607                      
    1608                     podPress_var_dump('podPress_downloadFile - cURL HTTP code:'); 
    1609                     podPress_var_dump( curl_getinfo($ch, CURLINFO_HTTP_CODE) ); 
    1610                     // make sure we get the header 
    1611                     curl_setopt($ch, CURLOPT_HEADER, TRUE); 
    1612                      
    1613                     // make it a http GET request 
    1614                     curl_setopt($ch, CURLOPT_NOBODY, FALSE); 
    1615                     curl_setopt($ch, CURLOPT_HTTPGET, TRUE); 
    1616                     // add useragent 
    1617                     curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13'); 
    1618                     if ( FALSE !== $limitDownload ) { 
    1619                         podPress_var_dump('podPress_downloadFile - download only that part: 0-'.$limitDownload); 
    1620                         curl_setopt($ch, CURLOPT_RANGE, '0-'.$limitDownload); 
    1621                     } 
    1622                     // Do not put the response into a variable. (Put it into a file.) 
    1623                     curl_setopt($ch, CURLOPT_RETURNTRANSFER, FALSE); 
    1624                     // the target file (handle) for the download 
    1625                     curl_setopt($ch, CURLOPT_FILE, $fp_local); 
    1626                     // The maximum number of seconds to allow cURL to wait for a connection. 
    1627                     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, min(10, $max_time-$safety)); 
    1628                     // The maximum number of seconds to allow cURL functions to execute. 
    1629                     curl_setopt($ch, CURLOPT_TIMEOUT, ($max_time-$safety)); 
    1630                     // Tell curl to stop when it encounters an error 
    1631                     curl_setopt($ch, CURLOPT_FAILONERROR, TRUE); 
    1632  
    1633                     @curl_exec($ch); 
    1634                      
    1635                     // If the HTTP status is not 200 then something with the filename (or URL) was not ok  or something on the server was wrong.  
    1636                     $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    1637                     if ( '200' != $http_code ) { 
    1638                         podPress_var_dump('podPress_downloadFile - aborting - HTTP status: ' . $http_code); 
    1639                     } 
    1640                      
    1641                     // Check if any error occured 
    1642                     if ( !curl_errno($ch) ) { 
    1643                         $bytes = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD); 
    1644                         $total_time = curl_getinfo($ch, CURLINFO_TOTAL_TIME); 
    1645                         podPress_var_dump('File size: ' . $bytes . ' bytes'); 
    1646                         podPress_var_dump('Took ' . $total_time . ' seconds to send a request to ' . $url); 
    1647                         //clearstatcache(); 
    1648                     } 
    1649                     @curl_close($ch); 
    1650                      
    1651                     // Closing the temp file 
    1652                     fclose($fp_local); 
    1653  
    1654                     return $localtempfilename; 
    1655                 } else { 
    1656                     podPress_var_dump('podPress_downloadFile - cUrl is not available'); 
    1657                     return ''; 
    1658                 } 
    1659             } 
     1598                podPress_var_dump('podPress_downloadFile - (file) localtempfilename: '.$localtempfilename); 
     1599                 
     1600                // starting cURL 
     1601                $ch = curl_init($uriFileName); 
     1602                 
     1603                podPress_var_dump('podPress_downloadFile - cURL HTTP code:'); 
     1604                podPress_var_dump( curl_getinfo($ch, CURLINFO_HTTP_CODE) ); 
     1605                // make sure we get the header 
     1606                curl_setopt($ch, CURLOPT_HEADER, TRUE); 
     1607                 
     1608                // make it a http GET request 
     1609                curl_setopt($ch, CURLOPT_NOBODY, FALSE); 
     1610                curl_setopt($ch, CURLOPT_HTTPGET, TRUE); 
     1611                // add useragent 
     1612                curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13'); 
     1613                if ( FALSE !== $limitDownload ) { 
     1614                    podPress_var_dump('podPress_downloadFile - download only that part: 0-'.$limitDownload); 
     1615                    curl_setopt($ch, CURLOPT_RANGE, '0-'.$limitDownload); 
     1616                } 
     1617                // Do not put the response into a variable. (Put it into a file.) 
     1618                curl_setopt($ch, CURLOPT_RETURNTRANSFER, FALSE); 
     1619                // the target file (handle) for the download 
     1620                curl_setopt($ch, CURLOPT_FILE, $fp_local); 
     1621                // The maximum number of seconds to allow cURL to wait for a connection. 
     1622                curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, min(10, $max_time-$safety)); 
     1623                // The maximum number of seconds to allow cURL functions to execute. 
     1624                curl_setopt($ch, CURLOPT_TIMEOUT, ($max_time-$safety)); 
     1625                // Tell curl to stop when it encounters an error 
     1626                curl_setopt($ch, CURLOPT_FAILONERROR, TRUE); 
     1627 
     1628                @curl_exec($ch); 
     1629                 
     1630                // If the HTTP status is not 200 then something with the filename (or URL) was not ok  or something on the server was wrong.  
     1631                $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
     1632                if ( '200' != $http_code ) { 
     1633                    podPress_var_dump('podPress_downloadFile - aborting - HTTP status: ' . $http_code); 
     1634                } 
     1635                 
     1636                // Check if any error occured 
     1637                if ( !curl_errno($ch) ) { 
     1638                    $bytes = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD); 
     1639                    $total_time = curl_getinfo($ch, CURLINFO_TOTAL_TIME); 
     1640                    podPress_var_dump('File size: ' . $bytes . ' bytes'); 
     1641                    podPress_var_dump('Took ' . $total_time . ' seconds to send a request to ' . $url); 
     1642                    //clearstatcache(); 
     1643                } 
     1644                @curl_close($ch); 
     1645                 
     1646                // Closing the temp file 
     1647                fclose($fp_local); 
     1648 
     1649                return $localtempfilename; 
     1650            } 
     1651             
    16601652        } 
    16611653    } 
     
    17041696        } 
    17051697    } 
     1698     
     1699     
     1700    /** 
     1701    *  podPress_get_HTTP_header_via_cURL - returns HTTP header of a file or an empty string 
     1702    * 
     1703    * @package podPress 
     1704    * @since 8.8.10.14 
     1705    * 
     1706    * @param str $uriFileName - the URL of the media file 
     1707    * @param int $max_time - max. execution time ins seconds 
     1708    * @param int $safety - number of seconds which should be subtracted from the $max_time value 
     1709    * 
     1710    * @return str $header - the response from the server (the HTTP header) 
     1711    */ 
     1712    function podPress_get_HTTP_header_via_cURL($uriFileName='', $max_time=10, $safety=0) { 
     1713        if ( FALSE === empty($uriFileName) ) { 
     1714            $header='';      
     1715            $ch = curl_init($uriFileName); 
     1716             
     1717            // make sure we get the header 
     1718            curl_setopt($ch, CURLOPT_HEADER, TRUE); 
     1719            // make it a http HEAD request 
     1720            curl_setopt($ch, CURLOPT_NOBODY, TRUE); 
     1721            // add useragent 
     1722            curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13'); 
     1723            //Tell curl to write the response to a variable                  
     1724            curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
     1725            // The maximum number of seconds to allow cURL to wait for a connection. 
     1726            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, min(10, $max_time-$safety)); 
     1727            // The maximum number of seconds to allow cURL functions to execute. 
     1728            curl_setopt($ch, CURLOPT_TIMEOUT, ($max_time-$safety)); 
     1729            // Tell curl to stop when it encounters an error 
     1730            curl_setopt($ch, CURLOPT_FAILONERROR, TRUE); 
     1731             
     1732            $header = curl_exec($ch); 
     1733             
     1734            podPress_var_dump('podPress_downloadFile - cURL HTTP code: ' . var_export(curl_getinfo($ch, CURLINFO_HTTP_CODE), TRUE)); 
     1735             
     1736            // Check if any error occured 
     1737            if ( !curl_errno($ch) ) { 
     1738                $bytes = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD); 
     1739                $total_time = curl_getinfo($ch, CURLINFO_TOTAL_TIME); 
     1740                podPress_var_dump('File size: ' . $bytes . ' bytes'); 
     1741                podPress_var_dump('Took ' . $total_time . ' seconds to send a request to ' . $url); 
     1742                //clearstatcache(); 
     1743            } 
     1744            @curl_close($ch); 
     1745            podPress_var_dump($header); 
     1746            return $header; 
     1747        } else { 
     1748            return ''; 
     1749        } 
     1750    } 
     1751     
     1752     
     1753    /** 
     1754    *  podPress_get_max_execution_time - returns the maximal execution time of a PHP script (takes server process limits into account / only the PHP limit) 
     1755    * 
     1756    * @package podPress 
     1757    * @since 8.8.10.14 
     1758    * 
     1759    * @return str $max_time 
     1760    */ 
     1761    function podPress_get_max_execution_time() { 
     1762        // some downloads may hit time limits -> lets find out these limits, stop the process a moment before and return an error message 
     1763        // search for PHP time limits 
     1764        $max_execution_time = intval(ini_get('max_execution_time')); 
     1765        podPress_var_dump('podPress_get_max_execution_time - max_execution_time: '.$max_execution_time); 
     1766         
     1767        // get the OS type on the server 
     1768        $hairstick = php_uname(); 
     1769        $is_windows = stristr( $hairstick, 'win' ); 
     1770        // search for CPU time limits 
     1771        if (FALSE === $is_windows) { 
     1772            @exec('ulimit -t', $output) or $output[0] = 10; 
     1773            $int_output = intval($output[0]); 
     1774            podPress_var_dump('podPress_get_max_execution_time - ulimit -t: '. $output[0].' - (int): '.$int_output); 
     1775            if (is_string($output[0]) AND 10 > $int_output) { 
     1776                $max_time = max(($safety+2), $max_execution_time); // if max_execution_time is somehow weird small 
     1777            } else { 
     1778                $max_time = min(intval($output[0]), $max_execution_time); // if the CPU limit is bigger than 10 then take the max. of the CPU limit and the max_execution_time 
     1779            } 
     1780        } else { 
     1781            $max_time = $max_execution_time; // on Windows systems 
     1782        } 
     1783        return $max_time; 
     1784    } 
     1785     
    17061786     
    17071787    /** 
  • podpress/trunk/readme.txt

    r575290 r578761  
    6868* beta 16+17: minor bug fixes in the podpress_feed_functions.php file and further modifications in the podpress_premium_functions.php file 
    6969* beta 18-20: podPress displays on the general settings page whether the Apache modules mod_auth_basic and mod_auth_digest are available or not and includes a chack for REDIRECT_HTTP_AUTHORIZATION 
     70* beta 21: podPress uses cURL by default (if it is available) to retrieve file size, duration and ID3 informations  
    7071 
    7172= v8.8.10.13 = 
Note: See TracChangeset for help on using the changeset viewer.