summaryrefslogtreecommitdiff
path: root/public/app/controllers/cli/CliContoller.php
blob: 310e2ae489af99658779fab555bfc7ce3300ed0d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<?php

namespace app\controllers\cli;

/** CliContoller
 * 
 * Re-generate cashes of commonly used entities
 * like: product categories and trendy products
 * (proxy calls make use of PROXY_IGNORE_CACHE)
 * 
 * CliController calls Model methods who create
 * cashed data with the exact same arguments as
 * when called from the web interface; this way
 * the Model::method(arguments) triplete creates
 * the same keys as via the web interface.
 * 
 * NOTE: Only Cli interface is allowed
 * [if (php_sapi_name() != 'cli') return false;]
 * 
 * The Cli-interfaced script can run manualy or
 * (most usual scenario) scheduled via a cron job
 * in order to refresh cashes befor expiration.
 * 
 * ---------------------------------------------
 */
class CliContoller
{


    /** (re-) cacheCategoriesTree
     * regenerate cache for product_categories tree
     * @param (void) 
     */
    public static function cacheCategoriesTree()
    {   
        // Only Cli interface is allowed
        if (php_sapi_name() != 'cli') return false;

        # PROXY call:
        # MARKET \ ProductCategories_model::tree(): 
        # + Refresh Cache
        # --------------------------------------
        echo textColor("Creating category_products tree Cache ... ", \NORMAL);
        $reply = proxy(
            [\app\models\market\ProductCategories_model::class, 'tree'],
            [], \CACHE_ROOT_TTL,
            \PROXY_IGNORE_CACHE
        );
        echo ($reply == false) ? textColor("Failed\n", \FAIL) : textColor("Done!\n", \SUCCESS);
    }



    public static function getProductCategories()
    {
        return \Registry::use('database')->runQuery(
            "SELECT * FROM product_categories",
            []
        );
    }



    /** (re-) cacheCategoryByUrl( url )
     * regenerate cache of a category_product
     * by category's friendly url
     * @param $url (string): the category's friendly url
     */
    public static function cacheCategoryByUrl(string $url)
    {
        // Only Cli interface is allowed
        if (php_sapi_name() != 'cli') return false;

        # PROXY call:
        # MARKET \ ProductCategories_model::tree(): 
        # + Refresh Cache
        # --------------------------------------
        $reply = proxy(
            [\app\models\market\ProductCategories_model::class, 'categoryFromUrl'],
            [ $url ], \CACHE_CATEGORY_TTL,
            \PROXY_IGNORE_CACHE
        );
        echo ($reply == false) ? textColor("Failed\n", \FAIL) : textColor("Done!\n", \SUCCESS);
    }
}