function add_perms($data, $type, $options = null) { $model = new cmsModel(); foreach ($data as $controller => $names) { foreach ($names as $name) { if (!$model->db->getRowsCount('perms_rules', "controller = '{$controller}' AND name = '{$name}'", 1)) { $model->insert('perms_rules', array('controller' => $controller, 'name' => $name, 'type' => $type, 'options' => $options)); } } } }
/** * Сохраняет значения правил для субъекта * @param string $subject Субъект действия правила * @param array $perms Правила и их значения */ static function savePermissions($subject, $perms) { $model = new cmsModel(); foreach ($perms as $rule_id => $values) { if (is_null($values)) { $model->filterEqual('subject', $subject)->filterEqual('rule_id', $rule_id)->deleteFiltered('perms_users'); continue; } foreach ($values as $group_id => $value) { $model->filterEqual('subject', $subject)->filterEqual('rule_id', $rule_id)->filterEqual('group_id', $group_id)->lockFilters(); if (!$value) { $model->deleteFiltered('perms_users'); $model->unlockFilters(); $model->resetFilters(); continue; } $is_exists = $model->getFieldFiltered('perms_users', 'value'); $model->unlockFilters(); if ($is_exists) { $model->updateFiltered('perms_users', array('rule_id' => $rule_id, 'group_id' => $group_id, 'subject' => $subject, 'value' => $value)); } else { $model->insert('perms_users', array('rule_id' => $rule_id, 'group_id' => $group_id, 'subject' => $subject, 'value' => $value)); } } $model->resetFilters(); } }
private function widgetInstall($manifest) { $model = new cmsModel(); $model->insert('widgets', array('title' => $manifest['info']['title'], 'name' => $manifest['package']['name'], 'controller' => $manifest['package']['controller'], 'author' => isset($manifest['author']['name']) ? $manifest['author']['name'] : LANG_CP_PACKAGE_NONAME, 'url' => isset($manifest['author']['url']) ? $manifest['author']['url'] : null, 'version' => $manifest['version']['major'] . '.' . $manifest['version']['minor'] . '.' . $manifest['version']['build'])); return 'widgets'; }