예제 #1
0
 /**
  * Parses a remote feed into an array.
  *
  * @param   string   remote feed URL
  * @param   integer  item limit to fetch
  * @return  array
  */
 public static function parse($feed, $limit = 0)
 {
     // Check if SimpleXML is installed
     if (!function_exists('simplexml_load_file')) {
         throw new Exception('SimpleXML must be installed!');
     }
     // Make limit an integer
     $limit = (int) $limit;
     // Disable error reporting while opening the feed
     $ER = error_reporting(0);
     // Allow loading by filename or raw XML string
     $load = (is_file($feed) or Validate::url($feed)) ? 'simplexml_load_file' : 'simplexml_load_string';
     // Load the feed
     $feed = $load($feed, 'SimpleXMLElement', LIBXML_NOCDATA);
     // Restore error reporting
     error_reporting($ER);
     // Feed could not be loaded
     if ($feed === FALSE) {
         return array();
     }
     // Detect the feed type. RSS 1.0/2.0 and Atom 1.0 are supported.
     $feed = isset($feed->channel) ? $feed->xpath('//item') : $feed->entry;
     $i = 0;
     $items = array();
     foreach ($feed as $item) {
         if ($limit > 0 and $i++ === $limit) {
             break;
         }
         $items[] = (array) $item;
     }
     return $items;
 }
예제 #2
0
 /**
  * URL of the page. This URL must begin with the protocol (such as http) and end
  * with a trailing slash, if your web server requires it. This value must be
  * less than 2,048 characters.
  * @see http://www.sitemaps.org/protocol.php
  * @param string $location
  */
 public function set_loc($location)
 {
     if (!Validate::max_length($location, 2048)) {
         throw new LengthException('The location was too long, maximum length of 2,048 characters.');
     }
     $location = Sitemap::encode($location);
     if (!Validate::url($location)) {
         throw new InvalidArgumentException('The location was not a valid URL');
     }
     $this->attributes['loc'] = $location;
     return $this;
 }
예제 #3
0
파일: parser.php 프로젝트: kemo/html_parser
 /**
  * Constructor is private, this is a helper "factory" class
  * You can pass a URL to parse or HTML string, e.g.
  * 
  * $html = HTML_Parser::factory($html_document);
  *
  * @param	mixed	html
  */
 protected function __construct($html = NULL)
 {
     require_once Kohana::find_file('vendor', 'simple_html_dom');
     $this->_dom = new simple_html_dom();
     if ($html !== NULL) {
         if (Validate::url($html)) {
             $this->_dom->load_file($html);
         } else {
             $this->_dom->load($html);
         }
     }
 }
예제 #4
0
	/**
	 * Tests Validate::url()
	 *
	 * @test
	 * @group kohana.validation.helpers
	 * @dataProvider provider_url
	 * @param string  $url       The url to test
	 * @param boolean $expected  Is it valid?
	 */
	public function test_url($url, $expected)
	{
		$this->assertSame(
			$expected,
			Validate::url($url)
		);
	}
예제 #5
0
 /**
  * 异步(非阻塞)运行一个路由
  * $curl 强制使用curl方式,但此方式至少阻塞1秒
  * $lose 如果可以,断开客户端连接,脚本后台运行,以后输出不能发送到浏览器
  */
 public static function async($router, $curl = false, $lose = false)
 {
     if (is_array($router)) {
         isset($GLOBALS['APP']['CLI']) && die('Async In CLI Mode Need Whole Url ');
         $url = 'http://' . Request::server('HTTP_HOST') . '/' . implode('/', $router);
     } else {
         $url = Validate::url($router) ? $router : Error(500, 'Async needs a  url or an array ');
     }
     if ($curl) {
         if (function_exists('fastcgi_finish_request') && $lose) {
             fastcgi_finish_request();
             return file_get_contents($url);
         }
         $ch = curl_init();
         $curl_opt = array(CURLOPT_URL => $url, CURLOPT_SSL_VERIFYPEER => 0, CURLOPT_TIMEOUT_MS => 1, CURLOPT_NOSIGNAL => 1, CURLOPT_HEADER => 0, CURLOPT_NOBODY => 1, CURLOPT_RETURNTRANSFER => 1);
         curl_setopt_array($ch, $curl_opt);
         curl_exec($ch);
         curl_close($ch);
         return true;
     } else {
         if (function_exists('fastcgi_finish_request') && $lose) {
             fastcgi_finish_request();
             return file_get_contents($url);
         } else {
             if (function_exists('fsockopen') || function_exists('stream_socket_client')) {
                 $parts = parse_url($url);
                 $parts['port'] = isset($parts['port']) ? $parts['port'] : 80;
                 $parts['query'] = isset($parts['query']) ? $parts['path'] . '?' . $parts['query'] : $parts['path'];
                 if (function_exists('stream_socket_client')) {
                     $fp = stream_socket_client($parts['host'] . ':' . $parts['port'], $errno, $errstr, 3);
                 } else {
                     $fp = fsockopen($parts['host'], $parts['port'], $errno, $errstr, 3);
                 }
                 $fp || Error($errno, $errstr);
                 stream_set_blocking($fp, 0);
                 $out = 'GET ' . $parts['query'] . " HTTP/1.1\r\nHost: " . $parts['host'] . "\r\nConnection: Close\r\n\r\n";
                 fwrite($fp, $out);
                 ob_flush();
                 flush();
                 fclose($fp);
                 return true;
             }
         }
         return false;
     }
 }
예제 #6
0
 /**
  * Save a image URL to the registered account.
  *
  * @param   string       $url 
  * @param   int          $rating [Optional]
  * @return  string|boolean
  * @throws  Kohana_Gravatar_Xmlrpc_Exception
  */
 public function save_url($url, $rating = NULL)
 {
     // If the URL supplied is not valid
     if (!Validate::url($url)) {
         // Throw an exception
         throw new Kohana_Gravatar_Xmlrpc_Exception(__METHOD__ . ' invalid URL supplied : :url', array(':url' => $url));
     }
     // If no rating has been applied, use general
     if ($rating === NULL) {
         $rating = Gravatar_Xmlrpc::G;
     }
     // Save the image to Gravatar
     return $this->_xmlrpc_request('grav.saveData', array('url' => $url, 'rating' => $rating));
 }
예제 #7
0
파일: hovercard.php 프로젝트: netbiel/core
 *
 * @package    Anqh
 * @author     Antti Qvickström
 * @copyright  (c) 2010 Antti Qvickström
 * @license    http://www.opensource.org/licenses/mit-license.php MIT license
 */
?>

<?php 
if ($user->title) {
    echo HTML::chars(trim($user->title)) . '<br />';
}
?>

<?php 
if ($user->default_image->id) {
    ?>
	<?php 
    echo HTML::image($user->default_image->get_url('thumbnail')) . '<br />';
} elseif (Validate::url($user->picture)) {
    ?>
	<?php 
    echo HTML::image($user->picture, array('width' => 160)) . '<br />';
}
?>

<?php 
echo __('Last login: :login', array(':login' => HTML::time(Date::fuzzy_span($user->last_login), $user->last_login)));
?>
<br />
예제 #8
0
파일: user.php 프로젝트: netbiel/core
 /**
  * Get image mod
  *
  * @param   Model_User  $user
  * @return  View_Module
  */
 protected function _get_mod_image(Model_User $user)
 {
     if ($user->default_image->id) {
         $image = $user->default_image;
     } else {
         if (Validate::url($user->picture)) {
             $image = $user->picture;
         } else {
             $image = null;
         }
     }
     return View_Module::factory('generic/side_image', array('mod_actions2' => Permission::has($user, Model_User::PERMISSION_UPDATE, self::$user) ? array(array('link' => URL::user($user, 'image') . '?token=' . Security::csrf() . '&delete', 'text' => __('Delete'), 'class' => 'image-delete disabled'), array('link' => URL::user($user, 'image') . '?token=' . Security::csrf() . '&default', 'text' => __('Set as default'), 'class' => 'image-default disabled'), array('link' => URL::user($user, 'image'), 'text' => __('Add image'), 'class' => 'image-add ajaxify')) : null, 'image' => $image));
 }
예제 #9
0
$randSalt = Security_Hash::random(82, 80);
$randSalt = str_replace('"', '', $randSalt);
$randSalt = str_replace('$', '', $randSalt);
// Prepare POST Values: make sure that every $_POST value has a default value provided.
$_POST['site-salt'] = isset($_POST['site-salt']) ? Sanitize::text($_POST['site-salt']) : $randSalt;
$_POST['site-handle'] = isset($_POST['site-handle']) ? Sanitize::variable($_POST['site-handle']) : "";
$_POST['site-url'] = isset($_POST['site-url']) ? Sanitize::variable($_POST['site-url'], ":/.") : $_SERVER['SERVER_NAME'];
$_POST['site-name'] = isset($_POST['site-name']) ? Sanitize::text($_POST['site-name']) : "";
$_POST['site-domain'] = isset($_POST['site-domain']) ? Sanitize::variable($_POST['site-domain'], ":/.") : "";
$_POST['site-database-name'] = isset($_POST['site-database-name']) ? Sanitize::variable($_POST['site-database-name']) : "";
// Run the Form
if (Form::submitted("install-app-config")) {
    // Check if all of the input you sent is valid:
    Validate::variable("Site Handle", $_POST['site-handle'], 3, 22);
    Validate::safeword("Site Name", $_POST['site-name'], 3, 42);
    Validate::url("URL", $_POST['site-url'], 3, 64);
    // Parse the URL input
    $siteURL = URL::parse($_POST['site-url']);
    if (Validate::pass()) {
        // Make sure the site handle isn't taken
        $packet = array("site-handle" => $_POST['site-handle'], "uni-handle" => $ownerHandle, "site-name" => $_POST['site-name'], "site-url" => $siteURL['full']);
        // Call UniFaction's API to register a site with the system
        // If the site fails to register, it will provide an alert explaining why
        $response = API_Connect::call(URL::unifaction_com() . "/api/RegisterSiteHandle", $packet);
        if ($response) {
            // If the database users are provided and there is a database name that we can create, build config settings
            $siteTheme = "default";
            $siteThemeStyle = "default";
            $buildApp = '<?php

// Site-Wide Salt