forked from wallabag/wallabag
add pdf and mobi libraries
This commit is contained in:
250
inc/3rdparty/libraries/send2kindle/io.php
vendored
Normal file
250
inc/3rdparty/libraries/send2kindle/io.php
vendored
Normal file
@ -0,0 +1,250 @@
|
||||
<?php
|
||||
/**
|
||||
* Simple output message and args prepared
|
||||
*
|
||||
* @author Jakub Westfalewski <jwest@jwest.pl>
|
||||
*/
|
||||
class IO {
|
||||
|
||||
/**
|
||||
* Max line height
|
||||
*/
|
||||
const COMMAND_LENGTH = 50;
|
||||
|
||||
/**
|
||||
* args for run screen
|
||||
* @var array
|
||||
*/
|
||||
protected static $_args = array
|
||||
(
|
||||
'help' => array('value' => FALSE, 'description' => 'show help for news2kindle'),
|
||||
'grab' => array('value' => FALSE, 'description' => 'grab articles from google reader'),
|
||||
'mobi' => array('value' => FALSE, 'description' => 'prepare mobi format'),
|
||||
'send' => array('value' => FALSE, 'description' => 'send articles to kindle'),
|
||||
'login' => array('value' => NULL, 'description' => 'your login to google account *requred'),
|
||||
'password' => array('value' => NULL, 'description' => 'your password to google account *required'),
|
||||
'kindle' => array('value' => NULL, 'description' => 'your kindle email *required'),
|
||||
'items' => array('value' => 100, 'description' => 'max items to grab in run'),
|
||||
'render' => array('value' => 'std', 'description' => 'name of html template for newspapper'),
|
||||
//'timeout' => array('value' => FALSE, 'description' => 'timeout is most important than items count'),
|
||||
);
|
||||
|
||||
/**
|
||||
* Write on screen text line
|
||||
* @param string $message
|
||||
* @param bool $broken_line
|
||||
*/
|
||||
public static function msg($message, $broken_line = TRUE)
|
||||
{
|
||||
echo ( $broken_line ? "\n" : "" ) . $message;
|
||||
}
|
||||
|
||||
/**
|
||||
* Write command for status
|
||||
* @param string $message
|
||||
*/
|
||||
public static function command($message)
|
||||
{
|
||||
$output_whitespaces = '';
|
||||
|
||||
for ($i = strlen($message); $i <= self::COMMAND_LENGTH; ++$i )
|
||||
{
|
||||
$output_whitespaces .= '-';
|
||||
}
|
||||
|
||||
self::msg( $message . ' ' . $output_whitespaces.' ' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Status - OK
|
||||
*/
|
||||
public static function ok()
|
||||
{
|
||||
$colored_string = "\033[1;37m" . "\033[42m" . ' OK ' . "\033[0m";
|
||||
self::msg( $colored_string, FALSE );
|
||||
}
|
||||
|
||||
/**
|
||||
* Status - Error
|
||||
*/
|
||||
public static function error($message = NULL)
|
||||
{
|
||||
$colored_string = "\033[1;37m" . "\033[41m" . ' ERROR ' . "\033[0m";
|
||||
self::msg( $colored_string, FALSE );
|
||||
|
||||
if ( $message !== NULL )
|
||||
{
|
||||
self::msg( ' - ' . $message );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get run args
|
||||
* @param string $name key config
|
||||
* @return mixed config value
|
||||
*/
|
||||
public static function arg($name)
|
||||
{
|
||||
return self::$_args[$name]['value'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get config from ini
|
||||
* @param string $path
|
||||
* @return void
|
||||
*/
|
||||
protected static function _get_config($path)
|
||||
{
|
||||
$config = parse_ini_file( $path . 'config.ini' );
|
||||
|
||||
foreach($config as $key => $value)
|
||||
{
|
||||
self::$_args[$key]['value'] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare args for script
|
||||
* (from http://php.net/manual/en/features.commandline.php)
|
||||
* @param array $argv array
|
||||
* @param string $path
|
||||
* @return bool success or error
|
||||
*/
|
||||
public static function prepare_args($argv, $path)
|
||||
{
|
||||
self::command('Parse args');
|
||||
|
||||
self::_get_config($path);
|
||||
|
||||
array_shift($argv);
|
||||
$out = array();
|
||||
|
||||
foreach ( $argv as $arg )
|
||||
{
|
||||
if ( substr($arg,0,2) == '--' )
|
||||
{
|
||||
$eqPos = strpos($arg,'=');
|
||||
|
||||
if ( $eqPos === false )
|
||||
{
|
||||
$key = substr($arg,2);
|
||||
$out[$key] = isset($out[$key]) ? $out[$key] : true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$key = substr($arg,2,$eqPos-2);
|
||||
$out[$key] = substr($arg,$eqPos+1);
|
||||
}
|
||||
|
||||
}
|
||||
else if ( substr($arg,0,1) == '-' )
|
||||
{
|
||||
if ( substr($arg,2,1) == '=' )
|
||||
{
|
||||
$key = substr($arg,1,1);
|
||||
$out[$key] = substr($arg,3);
|
||||
}
|
||||
else
|
||||
{
|
||||
$chars = str_split(substr($arg,1));
|
||||
|
||||
foreach ( $chars as $char )
|
||||
{
|
||||
$key = $char;
|
||||
$out[$key] = isset($out[$key]) ? $out[$key] : true;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$out[] = $arg;
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
$args = self::_validate_args($out);
|
||||
|
||||
foreach ( $args as $key => $value )
|
||||
{
|
||||
self::$_args[$key]['value'] = $value;
|
||||
}
|
||||
}
|
||||
catch(Exception $e)
|
||||
{
|
||||
self::error($e->getMessage());
|
||||
return false;
|
||||
}
|
||||
|
||||
self::ok();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate args for script
|
||||
* (from http://php.net/manual/en/features.commandline.php)
|
||||
* @param array $argv array
|
||||
* @return array args
|
||||
*/
|
||||
private static function _validate_args($args)
|
||||
{
|
||||
if( array_key_exists('help', $args) OR array_key_exists('h', $args) )
|
||||
{
|
||||
$args['grab'] = false;
|
||||
$args['mobi'] = false;
|
||||
$args['send'] = false;
|
||||
$args['login'] = false;
|
||||
$args['password'] = false;
|
||||
$args['kindle'] = false;
|
||||
}
|
||||
|
||||
foreach ( $args as $key => $arg )
|
||||
{
|
||||
if ( strlen($key) === 1 )
|
||||
{
|
||||
foreach ( self::$_args as $keyA => $argA )
|
||||
{
|
||||
if($keyA[0] === $key )
|
||||
{
|
||||
unset( $args[$key] );
|
||||
$args[$keyA] = $arg;
|
||||
$key = $keyA;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! array_key_exists($key, self::$_args) )
|
||||
{
|
||||
throw new Exception('Param "'.$key.'" is invalid!');
|
||||
}
|
||||
}
|
||||
|
||||
foreach ( self::$_args as $key => $arg )
|
||||
{
|
||||
if( self::$_args[$key]['value'] === NULL AND !array_key_exists($key, $args) )
|
||||
{
|
||||
throw new Exception('Param "'.$key.'" must be declared!');
|
||||
}
|
||||
}
|
||||
|
||||
return $args;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare help
|
||||
* @return array
|
||||
*/
|
||||
public static function get_help()
|
||||
{
|
||||
$output = array();
|
||||
|
||||
foreach ( self::$_args as $arg => $item )
|
||||
{
|
||||
$output[$arg] = $item['description'];
|
||||
}
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user