Classes

File phpboost/cache/GroupsCache.class.php

File phpboost/cache/GroupsCache.class.php

  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:  86:  87:  88:  89:  90:  91:  92:  93:  94:  95:  96:  97:  98:  99: 100: 101: 102: 103: 
<?php
/**
 * This class contains the cache data of the groups which group users having common criteria.
 * @package     PHPBoost
 * @subpackage  Cache
 * @copyright   &copy; 2005-2019 PHPBoost
 * @license     https://www.gnu.org/licenses/gpl-3.0.html GNU/GPL-3.0
 * @author      Benoit SAUTEL <ben.popeye@phpboost.com>
 * @version     PHPBoost 5.2 - last update: 2017 05 28
 * @since       PHPBoost 3.0 - 2009 09 29
 * @contributor Julien BRISWALTER <j1.seth@phpboost.com>
 * @contributor janus57 <janus57@janus57.fr>
*/

class GroupsCache implements CacheData
{
    private static $default_groups_value = array();

    private $groups = array();

    /**
     * {@inheritdoc}
     */
    public function synchronize()
    {
        $this->groups = array();
        $columns = array('id', 'name', 'img', 'color', 'auth', 'members');
        $result = PersistenceContext::get_querier()->select_rows(DB_TABLE_GROUP, $columns, 'ORDER BY id');
        while ($row = $result->fetch())
        {
            $this->groups[$row['id']] = array(
                'name' => stripslashes($row['name']),
                'img' => $row['img'],
                'color' => $row['color'],
                'auth' => TextHelper::unserialize(stripslashes($row['auth'])),
                'members' => explode('|', $row['members'])
            );
        }
        $result->dispose();
    }

    /**
     * Returns the list of the groups
     * @return array id_group => group properties (map)
     */
    public function get_groups()
    {
        return $this->groups;
    }

    public function group_exists($group_id)
    {
        return array_key_exists($group_id, $this->groups);
    }

    public function group_name_exists($group_name)
    {
        $exists = false;
        foreach ($this->groups as $group)
        {
            $exists = ($group['name'] == $group_name ? true : false);
        }
        return $exists;
    }

    /**
     * Returns a group
     * @param $group_id Id of the group
     * @return string[] A map of the properties of the group
     */
    public function get_group($group_id)
    {
        return $this->groups[$group_id];
    }

    /**
     * Sets the groups list
     * @param $groups_list The groups list
     */
    public function set_groups($groups_list)
    {
        $this->groups = $groups_list;
    }

    /**
     * Loads and returns the groups cached data.
     * @return GroupsCache The cached data
     */
    public static function load()
    {
        return CacheManager::load(__CLASS__, 'kernel', 'groups');
    }

    /**
     * Invalidates the current groups cached data.
     */
    public static function invalidate()
    {
        CacheManager::invalidate('kernel', 'groups');
    }
}
?>