Update of PicoTools
This commit is contained in:
parent
f3105b5dd8
commit
68bfc130b7
100
miniflux/vendor/PicoTools/Chrono.php
vendored
100
miniflux/vendor/PicoTools/Chrono.php
vendored
@ -1,100 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file is part of picoTools.
|
|
||||||
*
|
|
||||||
* (c) Frédéric Guillot http://fredericguillot.com
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view the LICENSE
|
|
||||||
* file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace PicoTools;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Chrono, tool for benchmarking
|
|
||||||
* Calculate the duration of your code
|
|
||||||
*
|
|
||||||
* @author Frédéric Guillot
|
|
||||||
*/
|
|
||||||
class Chrono
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Chronos values
|
|
||||||
*
|
|
||||||
* @access private
|
|
||||||
* @static
|
|
||||||
* @var array
|
|
||||||
*/
|
|
||||||
private static $chronos = array();
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Start a chrono
|
|
||||||
*
|
|
||||||
* @access public
|
|
||||||
* @static
|
|
||||||
* @param string $name Chrono name
|
|
||||||
*/
|
|
||||||
public static function start($name)
|
|
||||||
{
|
|
||||||
self::$chronos[$name] = array(
|
|
||||||
'start' => microtime(true),
|
|
||||||
'finish' => 0
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Stop a chrono
|
|
||||||
*
|
|
||||||
* @access public
|
|
||||||
* @static
|
|
||||||
* @param string $name Chrono name
|
|
||||||
*/
|
|
||||||
public static function stop($name)
|
|
||||||
{
|
|
||||||
if (! isset(self::$chronos[$name])) {
|
|
||||||
|
|
||||||
throw new \RuntimeException('Chrono not started!');
|
|
||||||
}
|
|
||||||
|
|
||||||
self::$chronos[$name]['finish'] = microtime(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get a duration of a chrono
|
|
||||||
*
|
|
||||||
* @access public
|
|
||||||
* @static
|
|
||||||
* @return float
|
|
||||||
*/
|
|
||||||
public static function duration($name)
|
|
||||||
{
|
|
||||||
if (! isset(self::$chronos[$name])) {
|
|
||||||
|
|
||||||
throw new \RuntimeException('Chrono not started!');
|
|
||||||
}
|
|
||||||
|
|
||||||
return self::$chronos[$name]['finish'] - self::$chronos[$name]['start'];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Show all durations
|
|
||||||
*
|
|
||||||
* @access public
|
|
||||||
* @static
|
|
||||||
*/
|
|
||||||
public static function show()
|
|
||||||
{
|
|
||||||
foreach (self::$chronos as $name => $values) {
|
|
||||||
|
|
||||||
echo $name.' = ';
|
|
||||||
echo round($values['finish'] - $values['start'], 2).'s';
|
|
||||||
echo PHP_EOL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
36
miniflux/vendor/PicoTools/Crypto.php
vendored
36
miniflux/vendor/PicoTools/Crypto.php
vendored
@ -1,36 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file is part of PicoTools.
|
|
||||||
*
|
|
||||||
* (c) Frédéric Guillot http://fredericguillot.com
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view the LICENSE
|
|
||||||
* file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace PicoTools\Crypto;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Generate a random token
|
|
||||||
*
|
|
||||||
* @return string Random token
|
|
||||||
*/
|
|
||||||
function token()
|
|
||||||
{
|
|
||||||
return hash('sha256', uniqid('', true).microtime());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Generate a signature with a key
|
|
||||||
*
|
|
||||||
* @param string $data Data
|
|
||||||
* @param string $key Key
|
|
||||||
* @return string Signature
|
|
||||||
*/
|
|
||||||
function signature($data, $key)
|
|
||||||
{
|
|
||||||
return hash_hmac('sha256', $data, $key);
|
|
||||||
}
|
|
12
miniflux/vendor/PicoTools/Helper.php
vendored
12
miniflux/vendor/PicoTools/Helper.php
vendored
@ -194,6 +194,18 @@ function form_password($name, $values = array(), array $errors = array(), array
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function form_email($name, $values = array(), array $errors = array(), array $attributes = array(), $class = '')
|
||||||
|
{
|
||||||
|
$class .= error_class($errors, $name);
|
||||||
|
|
||||||
|
$html = '<input type="email" name="'.$name.'" id="form-'.$name.'" '.form_value($values, $name).' class="'.$class.'" ';
|
||||||
|
$html .= implode(' ', $attributes).'/>';
|
||||||
|
$html .= error_list($errors, $name);
|
||||||
|
|
||||||
|
return $html;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function form_textarea($name, $values = array(), array $errors = array(), array $attributes = array(), $class = '')
|
function form_textarea($name, $values = array(), array $errors = array(), array $attributes = array(), $class = '')
|
||||||
{
|
{
|
||||||
$class .= error_class($errors, $name);
|
$class .= error_class($errors, $name);
|
||||||
|
243
miniflux/vendor/PicoTools/Pixtag.php
vendored
243
miniflux/vendor/PicoTools/Pixtag.php
vendored
@ -1,243 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file is part of picoTools.
|
|
||||||
*
|
|
||||||
* (c) Frédéric Guillot http://fredericguillot.com
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view the LICENSE
|
|
||||||
* file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace PicoTools;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A wrapper around exiv2 command line utility
|
|
||||||
* You can write and read IPTC, XMP and EXIF metadata inside a picture
|
|
||||||
*
|
|
||||||
* @author Frédéric Guillot
|
|
||||||
*/
|
|
||||||
class Pixtag implements \ArrayAccess, \Iterator
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Filename
|
|
||||||
*
|
|
||||||
* @access private
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
private $filename;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Container
|
|
||||||
*
|
|
||||||
* @access private
|
|
||||||
* @var array
|
|
||||||
*/
|
|
||||||
private $container = array();
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*
|
|
||||||
* @access public
|
|
||||||
* @param string $filename Path to the picture
|
|
||||||
*/
|
|
||||||
public function __construct($filename)
|
|
||||||
{
|
|
||||||
$this->filename = $filename;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Read metadata from the picture
|
|
||||||
*
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
public function read()
|
|
||||||
{
|
|
||||||
$c = new Command('exiv2 -PIEXkt '.$this->filename);
|
|
||||||
$c->execute();
|
|
||||||
$this->parse($c->getStdout());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Parse metadata bloc from exiv2 output command
|
|
||||||
*
|
|
||||||
* @access public
|
|
||||||
* @param string $data Raw command output of exiv2
|
|
||||||
*/
|
|
||||||
public function parse($data)
|
|
||||||
{
|
|
||||||
$lines = explode("\n", trim($data));
|
|
||||||
|
|
||||||
foreach ($lines as $line) {
|
|
||||||
|
|
||||||
$results = preg_split('/ /', $line, -1, PREG_SPLIT_OFFSET_CAPTURE);
|
|
||||||
|
|
||||||
if (isset($results[0][0])) {
|
|
||||||
|
|
||||||
$key = $results[0][0];
|
|
||||||
$value = '';
|
|
||||||
|
|
||||||
for ($i = 1, $ilen = count($results); $i < $ilen; ++$i) {
|
|
||||||
|
|
||||||
if ($results[$i][0] !== '') {
|
|
||||||
|
|
||||||
$value = substr($line, $results[$i][1]);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($value === '(Binary value suppressed)') {
|
|
||||||
|
|
||||||
$value = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->container[$key] = $value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Write metadata to the picture
|
|
||||||
* This method erase all keys and then add them to the picture
|
|
||||||
*
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
public function write()
|
|
||||||
{
|
|
||||||
$commands = array();
|
|
||||||
|
|
||||||
foreach ($this->container as $key => $value) {
|
|
||||||
|
|
||||||
$commands[] = sprintf('-M "del %s"', $key);
|
|
||||||
$commands[] = sprintf('-M "add %s %s"', $key, $value);
|
|
||||||
}
|
|
||||||
|
|
||||||
$c = new Command(sprintf(
|
|
||||||
'exiv2 %s %s',
|
|
||||||
implode(' ', $commands),
|
|
||||||
$this->filename
|
|
||||||
));
|
|
||||||
|
|
||||||
$c->execute();
|
|
||||||
|
|
||||||
if ($c->getReturnValue() !== 0) {
|
|
||||||
|
|
||||||
throw new \RuntimeException('Unable to write metadata');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set a metadata
|
|
||||||
*
|
|
||||||
* @access public
|
|
||||||
* @param string $offset Key name, see exiv2 documentation for keys list
|
|
||||||
* @param string $value Key value
|
|
||||||
*/
|
|
||||||
public function offsetSet($offset, $value)
|
|
||||||
{
|
|
||||||
$this->container[$offset] = $value;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if a key exists
|
|
||||||
*
|
|
||||||
* @access public
|
|
||||||
* @param string $offset Key name, see exiv2 documentation for keys list
|
|
||||||
* @return boolean True if the key exists
|
|
||||||
*/
|
|
||||||
public function offsetExists($offset)
|
|
||||||
{
|
|
||||||
return isset($this->container[$offset]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove a metadata
|
|
||||||
*
|
|
||||||
* @access public
|
|
||||||
* @param string $offset Key name, see exiv2 documentation for keys list
|
|
||||||
*/
|
|
||||||
public function offsetUnset($offset)
|
|
||||||
{
|
|
||||||
unset($this->container[$offset]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get a metadata
|
|
||||||
*
|
|
||||||
* @access public
|
|
||||||
* @param string $offset Key name, see exiv2 documentation for keys list
|
|
||||||
* @return string Key value
|
|
||||||
*/
|
|
||||||
public function offsetGet($offset)
|
|
||||||
{
|
|
||||||
return isset($this->container[$offset]) ? $this->container[$offset] : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reset the position of the container
|
|
||||||
*
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
public function rewind()
|
|
||||||
{
|
|
||||||
reset($this->container);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Current
|
|
||||||
*
|
|
||||||
* @access public
|
|
||||||
* @return string Current value
|
|
||||||
*/
|
|
||||||
public function current()
|
|
||||||
{
|
|
||||||
return current($this->container);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Key
|
|
||||||
*
|
|
||||||
* @access public
|
|
||||||
* @return string Current key
|
|
||||||
*/
|
|
||||||
public function key()
|
|
||||||
{
|
|
||||||
return key($this->container);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Next
|
|
||||||
*
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
public function next()
|
|
||||||
{
|
|
||||||
next($this->container);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Valid
|
|
||||||
*
|
|
||||||
* @access public
|
|
||||||
* @return boolean True if the current key is valid
|
|
||||||
*/
|
|
||||||
public function valid()
|
|
||||||
{
|
|
||||||
return isset($this->container[key($this->container)]);
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user