Doc fixes and bug fixes

This commit is contained in:
Dennis Eichhorn 2016-05-08 11:54:02 +02:00
parent ca0e03efc3
commit fb7c720c3d
16 changed files with 1210 additions and 194 deletions

View File

@ -71,7 +71,17 @@ class Integer
return 1;
}
public static function trialFactorization(int $value)
/**
* Trial factorization.
*
* @param int $value Integer to factorize
*
* @return array
*
* @since 1.0.0
* @author Dennis Eichhorn
*/
public static function trialFactorization(int $value) : array
{
if ($value < 2) {
return [];
@ -98,31 +108,65 @@ class Integer
return $factors;
}
public static function pollardsRho($value, $x = 2, $factor = 1, $cycleSize = 2, $xFixed = 2)
/**
* Pollard's Rho.
*
* Integer factorization algorithm
*
* @param int $n Integer to factorize
* @param int $x Used for g(x) = (x^2 + 1) mod n
* @param int $factor Period for repetition
* @param int $cycleSize Cycle size
* @param int $y Fixed value for g(x) = g(y) mod p
*
* @return int
*
* @since 1.0.0
* @author Dennis Eichhorn
*/
public static function pollardsRho(int $n, int $x = 2, int $factor = 1, int $cycleSize = 2, int $y = 2) : int
{
while ($factor === 1) {
for ($i = 1; $i < $cycleSize && $factor <= 1; $i++) {
$x = ($x * $x + 1) % $value;
$factor = self::greatestCommonDivisor($x - $xFixed, $value);
$x = ($x * $x + 1) % $n;
$factor = self::greatestCommonDivisor($x - $y, $n);
}
$cycleSize *= 2;
$xFixed = $x;
$y = $x;
}
return $factor;
}
public static function fermatFactor(int $value)
/**
* Fermat factorization of odd integers.
*
* @param int $value Integer to factorize
* @param int $limit Max amount of iterations
*
* @return int
*
* @throws \Exception
*
* @since 1.0.0
* @author Dennis Eichhorn
*/
public static function fermatFactor(int $value, int $limit = 1000000) : int
{
$a = $value;
$b2 = $a * $a - $value;
if(($value % 2) !== 0) {
throw new \Exception('Only odd integers are allowed');
}
while (abs((int) round(sqrt($b2), 0) - sqrt($b2)) > 0.0001) {
$a = (int) ceil(sqrt($value));
$b2 = $a * $a - $value;
$i = 1;
while (!Numbers::isSquare($b2) && $i < $limit) {
$a += 1;
$b2 = $a * $a - $value;
}
return $a - sqrt($b2);
return (int) round($a - sqrt($b2));
}
}

View File

@ -15,16 +15,60 @@
*/
namespace phpOMS\Message\Mail;
/**
* Imap mail class.
*
* @category Framework
* @package phpOMS\Message\Mail
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @license OMS License 1.0
* @link http://orange-management.com
* @since 1.0.0
*/
class Imap extends Mail
{
/**
* Mail inbox.
*
* @var resource
* @since 1.0.0
*/
private $inbox = null;
/**
* Host.
*
* @var string
* @since 1.0.0
*/
private $host = '';
/**
* User.
*
* @var string
* @since 1.0.0
*/
private $user = '';
/**
* Constructor.
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function __construct()
{
parent::__construct(MailType::IMAP);
}
/**
* Destructor.
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function __destruct()
{
if (isset($this->inbox)) {
@ -32,103 +76,273 @@ class Imap extends Mail
}
}
/**
* Connect to inbox.
*
* @param string $host Host
* @param string $user User
* @param string $password Password
*
* @return bool
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function connect($host, $user, $password)
{
$this->host = $host;
$this->user = $user;
$this->inbox = imap_open($host, $user, $password);
return !($this->inbox === false);
}
public function getBoxes()
/**
* Get boxes.
*
* @param string $pattern Pattern for boxes
*
* @return array
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getBoxes(string $pattern = '*') : array
{
return imap_list($this->inbox, $this->host, '*');
return imap_list($this->inbox, $this->host, $pattern);
}
/**
* Get inbox quota.
*
* @return mixed
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getQuota()
{
return imap_get_quotaroot($this->inbox, "INBOX");
}
public function getInbox(string $option = 'ALL') : array
/**
* Get inbox overview.
*
* @param string $option Inbox option (imap_search creterias)
*
* @return array
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getInboxOverview(string $option = 'ALL') : array
{
$ids = imap_search($this->inbox, $option, SE_FREE, 'UTF-8');
return is_array($ids) ? imap_fetch_overview($this->inbox, implode(',', $ids)) : [];
}
public function getEmail($id)
/**
* Get email.
*
* @param mixed $id mail id
*
* @return Mail
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getEmail($id) : Mail
{
return [
'overview' => imap_fetch_overview($this->inbox, $id),
'body' => imap_fetchbody($this->inbox, $id, 2),
'encoding' => imap_fetchstructure($this->inbox, $id),
];
$mail = new Mail($id);
$mail->setOverview(imap_fetch_overview($this->inbox, $id));
$mail->setBody(imap_fetchbody($this->inbox, $id, 2));
$mail->setEncoding(imap_fetchstructure($this->inbox, $id));
return $mail;
}
public function getInboxAll()
/**
* Get all inbox messages.
*
* @return array
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getInboxAll() : array
{
return $this->getInbox('ALL');
return $this->getInboxOverview('ALL');
}
public function getInboxNew()
/**
* Get all new inbox messages.
*
* @return array
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getInboxNew() : array
{
return $this->getInbox('NEW');
return $this->getInboxOverview('NEW');
}
public function getInboxFrom(string $from)
/**
* Get all inbox messages from a person.
*
* @param string $from Messages from
*
* @return array
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getInboxFrom(string $from) : array
{
return $this->getInbox('FROM "' . $from . '"');
return $this->getInboxOverview('FROM "' . $from . '"');
}
public function getInboxTo(string $to)
/**
* Get all inbox messages to a person.
*
* @param string $to Messages to
*
* @return array
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getInboxTo(string $to) : array
{
return $this->getInbox('TO "' . $to . '"');
return $this->getInboxOverview('TO "' . $to . '"');
}
public function getInboxCc(string $cc)
/**
* Get all inbox messages cc a person.
*
* @param string $cc Messages cc
*
* @return array
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getInboxCc(string $cc) : array
{
return $this->getInbox('CC "' . $cc . '"');
return $this->getInboxOverview('CC "' . $cc . '"');
}
public function getInboxBcc(string $bcc)
/**
* Get all inbox messages bcc a person.
*
* @param string $bcc Messages bcc
*
* @return array
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getInboxBcc(string $bcc) : array
{
return $this->getInbox('BCC "' . $bcc . '"');
return $this->getInboxOverview('BCC "' . $bcc . '"');
}
public function getInboxAnswered()
/**
* Get all answered inbox messages.
*
* @return array
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getInboxAnswered() : array
{
return $this->getInbox('ANSWERED');
return $this->getInboxOverview('ANSWERED');
}
public function getInboxSubject(string $subject)
/**
* Get all inbox messages with a certain subject.
*
* @param string $subject Subject
*
* @return array
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getInboxSubject(string $subject) : array
{
return $this->getInbox('SUBJECT "' . $subject . '"');
return $this->getInboxOverview('SUBJECT "' . $subject . '"');
}
public function getInboxSince(\DateTime $since)
/**
* Get all inbox messages from a certain date onwards.
*
* @param \DateTime $since Messages since
*
* @return array
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getInboxSince(\DateTime $since) : array
{
return $this->getInbox('SINCE "' . $since->format('d-M-Y') . '"');
return $this->getInboxOverview('SINCE "' . $since->format('d-M-Y') . '"');
}
public function getInboxUnseen()
/**
* Get all unseen inbox messages.
*
* @return array
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getInboxUnseen() : array
{
return $this->getInbox('UNSEEN');
return $this->getInboxOverview('UNSEEN');
}
public function getInboxSeen()
/**
* Get all seen inbox messages.
*
* @return array
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getInboxSeen() : array
{
return $this->getInbox('SEEN');
return $this->getInboxOverview('SEEN');
}
public function getInboxDeleted()
/**
* Get all deleted inbox messages.
*
* @return array
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getInboxDeleted() : array
{
return $this->getInbox('DELETED');
return $this->getInboxOverview('DELETED');
}
public function getInboxText(string $text)
/**
* Get all inbox messages with text.
*
* @param string $text Text in message body
*
* @return array
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getInboxText(string $text) : array
{
return $this->getInbox('TEXT "' . $text . '"');
return $this->getInboxOverview('TEXT "' . $text . '"');
}
public static function decode($content, $encoding)

View File

@ -17,46 +17,232 @@ namespace phpOMS\Message\Mail;
use phpOMS\Datatypes\Exception\InvalidEnumValue;
abstract class Mail
/**
* Mail class.
*
* @category Framework
* @package phpOMS\Message\Mail
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @license OMS License 1.0
* @link http://orange-management.com
* @since 1.0.0
*/
class Mail
{
/**
* Mail from.
*
* @var string
* @since 1.0.0
*/
protected $from = '';
/**
* Mail to.
*
* @var array
* @since 1.0.0
*/
protected $to = [];
/**
* Mail subject.
*
* @var string
* @since 1.0.0
*/
protected $subject = '';
/**
* Mail cc.
*
* @var array
* @since 1.0.0
*/
protected $cc = [];
/**
* Mail reply to.
*
* @var array
* @since 1.0.0
*/
protected $replyTo = [];
/**
* Mail bcc.
*
* @var array
* @since 1.0.0
*/
protected $bcc = [];
/**
* Mail attachments.
*
* @var array
* @since 1.0.0
*/
protected $attachment = [];
/**
* Mail body.
*
* @var string
* @since 1.0.0
*/
protected $body = '';
/**
* Mail overview.
*
* @var string
* @since 1.0.0
*/
protected $overview = '';
/**
* Mail alt.
*
* @var string
* @since 1.0.0
*/
protected $bodyAlt = '';
/**
* Mail mime.
*
* @var string
* @since 1.0.0
*/
protected $bodyMime = '';
/**
* Mail header.
*
* @var string
* @since 1.0.0
*/
protected $headerMail = '';
/**
* Word wrap.
*
* @var string
* @since 1.0.0
*/
protected $wordWrap = 78;
/**
* Encoding.
*
* @var int
* @since 1.0.0
*/
protected $encoding = 0;
/**
* Mail type.
*
* @var int
* @since 1.0.0
*/
protected $type = MailType::MAIL;
/**
* Mail host name.
*
* @var string
* @since 1.0.0
*/
protected $hostname = '';
/**
* Mail id.
*
* @var string
* @since 1.0.0
*/
protected $messageId = '';
/**
* Mail message type.
*
* @var string
* @since 1.0.0
*/
protected $messageType = '';
/**
* Mail from.
*
* @var \DateTime
* @since 1.0.0
*/
protected $messageDate = null;
/**
* todo: ???
*/
protected $mailer = null;
public function __construct(int $type)
/**
* Constructor.
*
* @param mixed $id Id
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function __construct($id)
{
$this->type = $type;
$this->messageId = $id;
}
switch ($type) {
case MailType::MAIL:
break;
case MailType::SMTP:
break;
case MailType::IMAP:
break;
case MailType::POP3:
break;
case MailType::SENDMAIL:
break;
default:
throw new InvalidEnumValue($type);
}
/**
* Set body.
*
* @param string $body Mail body
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function setBody(string $body)
{
$this->body = $body;
}
/**
* Set body.
*
* @param string $overview Mail overview
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function setOverview(string $overview)
{
$this->overview = $overview;
}
/**
* Set encoding.
*
* @param int $encoding Mail encoding
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function setEncoding(int $encoding)
{
$this->encoding = $encoding;
}
}

View File

@ -21,7 +21,7 @@ use phpOMS\Datatypes\Enum;
* Mail type.
*
* @category Framework
* @package phpOMS\DataStorage\Database
* @package phpOMS\Message\Mail
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @license OMS License 1.0

View File

@ -325,6 +325,14 @@ abstract class RequestAbstract implements MessageInterface
return $this->status;
}
/**
* Get request header.
*
* @return HeaderAbstract
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getHeader() : HeaderAbstract
{
return $this->header;
@ -353,5 +361,13 @@ abstract class RequestAbstract implements MessageInterface
*/
abstract public function getRequestTarget() : string;
/**
* Get route verb.
*
* @return int
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
abstract public function getRouteVerb() : int;
}

View File

@ -186,5 +186,13 @@ abstract class ResponseAbstract implements MessageInterface
return $this->header;
}
/**
* Get response body.
*
* @return string
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
abstract public function getBody() : string;
}

View File

@ -16,9 +16,9 @@
namespace phpOMS\Utils\Parser\Php;
/**
* Array parser class.
* Class parser class.
*
* Parsing/serializing arrays to and from php file
* Parsing/serializing classes, interfaces to and from php file
*
* @category Framework
* @package phpOMS\Utils\Parser
@ -30,38 +30,118 @@ namespace phpOMS\Utils\Parser\Php;
*/
class ClassParser
{
/**
* Indention.
*
* @var int
* @since 1.0.0
*/
const INDENT = 4;
/**
* Is final?
*
* @var bool
* @since 1.0.0
*/
private $isFinal = false;
/**
* Is abstract?
*
* @var bool
* @since 1.0.0
*/
private $isAbstract = false;
/**
* Type.
*
* @var string
* @since 1.0.0
*/
private $type = ClassType::_CLASS;
private $extends = null;
/**
* Extends.
*
* @var string
* @since 1.0.0
*/
private $extends = '';
private $namespace = null;
/**
* Namespace.
*
* @var null|string
* @since 1.0.0
*/
private $namespace = '';
/**
* Includes.
*
* @var array
* @since 1.0.0
*/
private $includes = [];
/**
* Requires.
*
* @var array
* @since 1.0.0
*/
private $requires = [];
/**
* Uses.
*
* @var array
* @since 1.0.0
*/
private $use = [];
/**
* Name.
*
* @var string
* @since 1.0.0
*/
private $name = '';
/**
* Implements.
*
* @var array
* @since 1.0.0
*/
private $implements = [];
/**
* Traits.
*
* @var array
* @since 1.0.0
*/
private $traits = [];
/**
* Members.
*
* @var MemberParser[]
* @since 1.0.0
*/
private $members = [];
/**
* Functions.
*
* @var FunctionParser[]
* @since 1.0.0
*/
private $functions = [];
public function __construct()
{
}
/**
* Saving class to file.
*
@ -74,68 +154,188 @@ class ClassParser
*/
public function createFile(string $path)
{
// todo: implement
}
/**
* Set final.
*
* @param bool $final Is final
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function setFinal(bool $final)
{
$this->isFinal = $final;
}
/**
* Is final?
*
* @return bool
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function isFinal() : bool
{
return $this->isFinal;
}
/**
* Set abstract.
*
* @param bool $abstract Is abstract
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function setAbstract(bool $abstract)
{
$this->isAbstract = $abstract;
}
/**
* Is abstract?
*
* @return bool
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function isAbstract() : bool
{
return $this->isAbstract;
}
/**
* Set type.
*
* Available types are ClassType::
*
* @param string $type Set type
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function setType(string $type)
{
$this->type = $type;
}
/**
* Get type.
*
* @return string
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getType() : string
{
return $this->type;
}
/**
* Set extends.
*
* @param string $extends Extended class
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function setExtends(string $extends)
{
$this->extends = $extends;
}
/**
* Get extends.
*
* @return string
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getExtends() : string
{
return $this->extends;
}
/**
* Remove extends.
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function removeExtends()
{
$this->extends = null;
$this->extends = '';
}
/**
* Set namespace.
*
* @param string $namespace Namespace
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function setNamespace(string $namespace)
{
$this->namespace = $namespace;
}
/**
* Get namespace.
*
* @return string
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getNamespace() : string
{
return $this->namespace;
}
/**
* Remove namespace.
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function removeNamespace()
{
$this->namespace = null;
$this->namespace = '';
}
/**
* Add use.
*
* @param string $namespace Namespace to use
* @param string $as Namespace as
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function addUse(string $namespace, string $as = null)
{
if (isset($as)) {
@ -145,6 +345,16 @@ class ClassParser
}
}
/**
* Remove use.
*
* @param string $id Namespace numerical id or 'as' if used.
*
* @return bool
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function removeUse($id) : bool
{
if (isset($this->use[$id])) {
@ -156,16 +366,44 @@ class ClassParser
return false;
}
/**
* Set name.
*
* @param string $name Class name
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function setName(string $name)
{
$this->name = $name;
}
/**
* Get name.
*
* @return string
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getName() : string
{
return $this->name;
}
/**
* Add implements.
*
* @param string $implements Implement
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function addImplements(string $implements)
{
$this->implements[] = $implements;
@ -173,6 +411,16 @@ class ClassParser
array_unique($this->implements);
}
/**
* Add include.
*
* @param string $include Include
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function addInclude(string $include)
{
$this->includes[] = $include;
@ -180,6 +428,16 @@ class ClassParser
array_unique($this->includes);
}
/**
* Add $require.
*
* @param string $require Require
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function addRequire(string $require)
{
$this->requires[] = $require;
@ -187,6 +445,17 @@ class ClassParser
array_unique($this->requires);
}
/**
* Add trait.
*
* @param string $trait Trait to use
* @param string $as Trait as
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function addTrait(string $trait, string $as = null)
{
if (isset($as)) {
@ -196,11 +465,52 @@ class ClassParser
}
}
/**
* Remove trait.
*
* @param string $id Namespace numerical id or 'as' if used.
*
* @return bool
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function removeTrait($id) : bool
{
if (isset($this->traits[$id])) {
unset($this->traits[$id]);
return true;
}
return false;
}
/**
* Add member.
*
* @param MemberParser $member Member
*
* @return bool
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function addMember(MemberParser $member)
{
$this->members[$member->getName()] = $member;
}
/**
* Remove member by name.
*
* @param string $name Member name
*
* @return bool
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function removeMember(string $name) : bool
{
if (isset($this->members[$name])) {
@ -212,16 +522,46 @@ class ClassParser
return false;
}
/**
* Get member by name.
*
* @param string $name Member name
*
* @return MemberParser
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getMember(string $name) : MemberParser
{
return $this->members[$name] ?? new MemberParser();
}
/**
* Add function.
*
* @param FunctionParser $function Function
*
* @return bool
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function addFunction(FunctionParser $function)
{
$this->functions[$function->getName()] = $function;
}
/**
* Remove function by name.
*
* @param string $name Function name
*
* @return bool
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function removeFunction(string $name) : bool
{
if (isset($this->functions[$name])) {
@ -233,12 +573,30 @@ class ClassParser
return false;
}
/**
* Get function by name.
*
* @param string $name Function name
*
* @return FunctionParser
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getFunction(string $name) : FunctionParser
{
return $this->functions[$name] ?? new FunctionParser();
}
public function parse() : string
/**
* Serialize class.
*
* @return string
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function serialize() : string
{
$class = '';
@ -258,8 +616,8 @@ class ClassParser
$class .= PHP_EOL;
}
if (isset($namespace)) {
$class = $namespace . ';' . PHP_EOL . PHP_EOL;
if (!empty($this->namespace)) {
$class = $this->namespace . ';' . PHP_EOL . PHP_EOL;
}
if (!empty($this->use)) {
@ -280,7 +638,7 @@ class ClassParser
$class .= $this->type . ' ' . $this->name . ' ';
if (isset($this->extends)) {
if (!empty($this->extends)) {
$class .= 'extends ' . $this->extends . ' ';
}
@ -299,11 +657,11 @@ class ClassParser
}
foreach ($this->members as $name => $member) {
$class .= $member->parse() . PHP_EOL . PHP_EOL;
$class .= $member->serialize() . PHP_EOL . PHP_EOL;
}
foreach ($this->functions as $name => $function) {
$class .= $function->parse() . PHP_EOL . PHP_EOL;
$class .= $function->serialize() . PHP_EOL . PHP_EOL;
}
$class .= '}';

View File

@ -18,7 +18,7 @@ namespace phpOMS\Utils\Parser\Php;
/**
* Member parser class.
*
* Parsing/serializing variables
* Parsing/serializing functions
*
* @category Framework
* @package phpOMS\Utils\Parser

View File

@ -18,7 +18,7 @@ namespace phpOMS\Utils\Parser\Php;
/**
* Member parser class.
*
* Parsing/serializing variables
* Parsing/serializing member variables
*
* @category Framework
* @package phpOMS\Utils\Parser
@ -30,36 +30,112 @@ namespace phpOMS\Utils\Parser\Php;
*/
class MemberParser
{
/**
* Member name.
*
* @var string
* @since 1.0.0
*/
private $name = '';
/**
* Member visibility.
*
* @var string
* @since 1.0.0
*/
private $visibility = Visibility::_PUBLIC;
/**
* Is static.
*
* @var bool
* @since 1.0.0
*/
private $isStatic = false;
/**
* Is const.
*
* @var bool
* @since 1.0.0
*/
private $isConst = false;
/**
* Default value.
*
* @var mixed
* @since 1.0.0
*/
private $default = null;
/**
* Set member name.
*
* @param string $name Member name
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function setName(string $name)
{
$this->name = $name;
}
/**
* Get member name.
*
* @return string
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getName() : string
{
return $this->name;
}
/**
* Set visibility.
*
* @param string $visibility Member visibility
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function setVisibility(string $visibility)
{
$this->visibility = $visibility;
}
/**
* Get visibility.
*
* @return string
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getVisibility() : string
{
return $this->visibility;
}
/**
* Set static.
*
* @param bool $static Is static
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function setStatic(bool $static)
{
$this->isStatic = $static;
@ -69,11 +145,29 @@ class MemberParser
}
}
/**
* Is static?
*
* @return bool
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function isStatic() : bool
{
return $this->isStatic;
}
/**
* Set const.
*
* @param bool $const Is const
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function setConst(bool $const)
{
$this->isConst = $const;
@ -83,12 +177,43 @@ class MemberParser
}
}
/**
* Is const?
*
* @return bool
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function isConst() : bool
{
return $this->isConst;
}
/**
* Set default value.
*
* @param string $default
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function setDefault($default)
{
$this->default = $default;
}
public function parse() : string
/**
* Serialize member.
*
* @return string
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function serialize() : string
{
$member = '';
$member .= str_repeat(' ', ClassParser::INDENT);

View File

@ -18,9 +18,9 @@ namespace phpOMS\Utils\Parser\Php;
use phpOMS\Datatypes\Enum;
/**
* Database type enum.
* Visibility type enum.
*
* Database types that are supported by the application
* Visibility for member variables and functions
*
* @category Framework
* @package phpOMS\Utils\Parser
@ -32,6 +32,7 @@ use phpOMS\Datatypes\Enum;
*/
abstract class Visibility extends Enum
{
const _NONE = '';
const _PUBLIC = 'public';
const _PRIVATE = 'private';
const _PROTECTED = 'protected';

View File

@ -26,47 +26,27 @@ namespace phpOMS\Utils\TaskSchedule;
* @link http://orange-management.com
* @since 1.0.0
*/
class Cron implements ScheduleInterface
class Cron extends SchedulerAbstract
{
public function __construct()
{
}
public function add(TaskInterface $task)
{
// TODO: Implement add() method.
}
public function remove($id)
{
// TODO: Implement remove() method.
}
public function get(string $id)
{
// TODO: Implement get() method.
}
public function list()
{
$output = shell_exec('crontab -l');
return $output;
}
public function set(TaskInterface $task)
{
// TODO: Implement set() method.
}
public function save()
{
}
public function run(string $cmd)
/**
* Run command
*
* @param string $cmd Command to run
*
* @return array
*
* @since 1.0.0
* @author Dennis Eichhorn
*/
public function run(string $cmd) : array
{
// TODO: Implement run() method.
return [];
}
}

View File

@ -28,8 +28,6 @@ namespace phpOMS\Utils\TaskSchedule;
*/
class Schedule extends TaskAbstract
{
private $name = '';
/**
* Constructor.
*

View File

@ -1,44 +0,0 @@
<?php
/**
* Orange Management
*
* PHP Version 7.0
*
* @category TBD
* @package TBD
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @copyright 2013 Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link http://orange-management.com
*/
namespace phpOMS\Utils\TaskSchedule;
/**
* Schedule Interface.
*
* @category Framework
* @package phpOMS\Utils\TaskSchedule
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @license OMS License 1.0
* @link http://orange-management.com
* @since 1.0.0
*/
interface ScheduleInterface
{
public function add(TaskInterface $task);
public function remove($id);
public function get(string $id);
public function list();
public function set(TaskInterface $task);
public function save();
public function run(string $cmd);
}

View File

@ -0,0 +1,127 @@
<?php
/**
* Orange Management
*
* PHP Version 7.0
*
* @category TBD
* @package TBD
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @copyright 2013 Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link http://orange-management.com
*/
namespace phpOMS\Utils\TaskSchedule;
/**
* Scheduler abstract.
*
* @category Framework
* @package phpOMS\Utils\TaskSchedule
* @author OMS Development Team <dev@oms.com>
* @author Dennis Eichhorn <d.eichhorn@oms.com>
* @license OMS License 1.0
* @link http://orange-management.com
* @since 1.0.0
*/
abstract class SchedulerAbstract
{
/**
* tasks.
*
* @var TaskAbstract[]
* @since 1.0.0
*/
protected $tasks = [];
/**
* Add task
*
* @param TaskAbstract $task Task to add
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn
*/
public function add(TaskAbstract $task)
{
$this->tasks[$task->getId()] = $task;
}
/**
* Remove task
*
* @param mixed $id Task id
*
* @return bool
*
* @since 1.0.0
* @author Dennis Eichhorn
*/
public function remove(string $id) : bool
{
if (isset($this->tasks[$id])) {
unset($this->tasks[$id]);
return true;
}
return false;
}
/**
* Get task
*
* @param mixed $id Task id
*
* @return TaskAbstract|null
*
* @since 1.0.0
* @author Dennis Eichhorn
*/
public function get(string $id)
{
return $this->tasks[$id] ?? null;
}
/**
* Get all tasks
*
* @return TaskAbstract[]
*
* @since 1.0.0
* @author Dennis Eichhorn
*/
public function list() : array
{
return $this->tasks;
}
/**
* Set task
*
* @param TaskAbstract $task Task to edit
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn
*/
public function set(TaskAbstract $task)
{
$this->tasks[$task->getId()] = $task;
}
/**
* Save tasks
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn
*/
abstract public function save();
}

View File

@ -28,6 +28,14 @@ namespace phpOMS\Utils\TaskSchedule;
*/
abstract class TaskAbstract
{
/**
* Id.
*
* @var string
* @since 1.0.0
*/
protected $id = '';
/**
* Interval.
*
@ -44,6 +52,19 @@ abstract class TaskAbstract
*/
protected $command = '';
/**
* Get id.
*
* @return string
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function getId() : string
{
return $this->id;
}
/**
* Set interval.
*

View File

@ -26,45 +26,27 @@ namespace phpOMS\Utils\TaskSchedule;
* @link http://orange-management.com
* @since 1.0.0
*/
class TaskScheduler implements ScheduleInterface
class TaskScheduler extends SchedulerAbstract
{
public function __construct()
{
}
public function add(TaskInterface $task)
{
// TODO: Implement add() method.
}
public function remove($id)
{
// TODO: Implement remove() method.
}
public function get(string $id)
{
// TODO: Implement get() method.
}
public function list()
{
// TODO: Implement list() method.
}
public function set(TaskInterface $task)
{
// TODO: Implement set() method.
}
public function save()
{
}
public function run(string $cmd)
/**
* Run command
*
* @param string $cmd Command to run
*
* @return array
*
* @since 1.0.0
* @author Dennis Eichhorn
*/
public function run(string $cmd) : array
{
// TODO: Implement run() method.
return [];
}
}