Exemple #1
0
    /**
     * Return all rows which uses given modules
     *
     * @param array modules : the modules codename to search rows for
     * @param boolean returnObjects : does the function return array of ids or array of objects (default)
     * @param boolean exclusive : does the function return rows which only contain requested modules (default : true)
     * @return array : rows
     * @access public
     */
    static function getByModules($modules = array(), $returnObjects = true, $exclusive = true)
    {
        if (!is_array($modules) && is_string($modules) && $modules) {
            $modules = array($modules);
        }
        if (!is_array($modules) || !$modules) {
            CMS_grandFather::raiseError('No modules set');
            return array();
        }
        $sql = '
			select 
				id_row, modulesStack_row
			from
				mod_standard_rows
		';
        $q = new CMS_query($sql);
        $rows = array();
        while ($r = $q->getArray()) {
            $modulesList = explode(';', $r["modulesStack_row"]);
            $hasModules = true;
            //check if all requested modules exists for row
            foreach ($modules as $module) {
                if (!in_array($module, $modulesList)) {
                    $hasModules = false;
                }
            }
            //check if row does not use another module than requested ones
            if ($exclusive) {
                foreach ($modulesList as $module) {
                    if (!in_array($module, $modules)) {
                        $hasModules = false;
                    }
                }
            }
            if ($hasModules) {
                if ($returnObjects) {
                    $row = new CMS_row($r["id_row"]);
                    if (!$row->hasError()) {
                        $rows[$row->getID()] = $row;
                    }
                } else {
                    $rows[$r["id_row"]] = $r["id_row"];
                }
            }
        }
        return $rows;
    }