/** * 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; }