PHP code example of jeyroik / kb-plan

1. Go to this page and download the library: Download jeyroik/kb-plan library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

jeyroik / kb-plan example snippets


/**
 * @var $planRepo extas\interfaces\plans\IPlanRepository
 */
$plan = $planRepo->one([IPlan::FIELD__ID => 'demo.plan']);
$plan->addProgress(['items_count' => 20])

class MyPlanProgress extends PlanProgress
{
    protected $planRepo = 'my\extas\plans\Repository';
}

class MyPlan extends Plan
{
    protected $planProgressRepo = 'my\extas\plans\progress\Repository';
    
    /**
     * @return string
     */
    protected function getPlanSubject()
    {
        return 'my.plan';
    }

    /**
     * @param array $data
     * 
     * @return IPlanProgress
     */
    protected function getPlanProgress($data)
    {
        return new MyPlanProgress($data);
    }
}

class MyPlanFact extends PlanFact
{
    protected $planRepo = 'my\extas\plans\Repository';
    protected $factRepo = 'my\extas\plans\facts\Repository';
}

class MyPluginFact extends PlanPluginProgressAddToFact
{
    protected $factRepo = 'my\extas\plans\facts\Repository';
    
    /**
     * @override_it
     *
     * @return string
     */
    protected function getPlanFactSubject()
    {
        return 'my.plan.fact';
    }

    /**
     * @override_it
     *
     * @param $factData
     *
     * @return IPlanFact
     */
    protected function getPlanFact($factData)
    {
        return new MyPlanFact($factData);
    }
}

class CountPagesPlugin extends Plugin
{
    public function __invoke(&$fact, $progress)
    {
        $factPages = $fact->getParameter('pages_count', null);
        $progressPages = $progress->getParameter('page_count', [
            'name' => 'pages_count',
            'value' => 0
        ]);
        
        if (!$factPages) {
            $factPages = $progressPages;
        } else {
            $factPages->setValue($factPages->getValue() + $progressPages->getValue());
        }
        
        $fact->setParameter('pages_count', $factPages);
        $fact->setParameter('book', $progress->getParameter('book'));
    }
}

/**
 * @var $planRepo my\extas\plans\Repository
 */
 
$plan = $planRepo->one([IPlan::FIELD__ID => 'my.plan.some.id']);
if ($plan) {
    $plan->addProgress([
        'pages_count' => 20,
        'book' => 'jeyroik/kb-plan/README.md'
    ]);
}