0byt3m1n1
Path:
/
data
/
applications
/
aps.bak
/
sugarcrm
/
6.5.16-25
/
standard
/
htdocs
/
modules
/
Roles
/
[
Home
]
File: Role.php
<?php if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point'); /********************************************************************************* * SugarCRM Community Edition is a customer relationship management program developed by * SugarCRM, Inc. Copyright (C) 2004-2013 SugarCRM Inc. * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU Affero General Public License version 3 as published by the * Free Software Foundation with the addition of the following permission added * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more * details. * * You should have received a copy of the GNU Affero General Public License along with * this program; if not, see http://www.gnu.org/licenses or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301 USA. * * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road, * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "Powered by * SugarCRM" logo. If the display of the logo is not reasonably feasible for * technical reasons, the Appropriate Legal Notices must display the words * "Powered by SugarCRM". ********************************************************************************/ /********************************************************************************* * Description: ********************************************************************************/ class Role extends SugarBean { var $field_name_map; var $id; var $deleted; var $date_entered; var $date_modified; var $modified_user_id; var $created_by; var $name; var $description; var $modules; var $disable_row_level_security = true; var $table_name = 'roles'; var $rel_module_table = 'roles_modules'; var $object_name = 'Role'; var $module_dir = 'Roles'; var $new_schema = true; function Role() { parent::SugarBean(); } function get_summary_text() { return $this->name; } function create_export_query($order_by, $where) { return $this->create_new_list_query($order_by, $where); } function query_modules($allow = 1) { $query = "SELECT module_id FROM roles_modules WHERE "; $query .= "role_id = '$this->id' AND allow = '$allow' AND deleted=0"; $result = $this->db->query($query); $return_array = array(); while($row = $this->db->fetchByAssoc($result)) { array_push($return_array, $row['module_id']); } return $return_array; } function set_module_relationship($role_id, &$mod_ids, $allow) { foreach($mod_ids as $mod_id) { if($mod_id != '') $this->set_relationship('roles_modules', array( 'module_id'=>$mod_id, 'role_id'=>$role_id, 'allow'=>$allow )); } } function clear_module_relationship($role_id) { $query = "DELETE FROM roles_modules WHERE role_id='$role_id'"; $this->db->query($query); } function set_user_relationship($role_id, &$user_ids) { foreach($user_ids as $user_id) { if($user_id != '') $this->set_relationship('roles_users', array( 'user_id'=>$user_id, 'role_id'=>$role_id )); } } function clear_user_relationship($role_id, $user_id) { $query = "DELETE FROM roles_users WHERE role_id='$role_id' AND user_id='$user_id'"; $this->db->query($query); } function query_user_allowed_modules($user_id) { $userArray = array(); global $app_list_strings; $sql = "SELECT role_id FROM roles_users WHERE user_id='$user_id'"; $result = $this->db->query($sql); while($row = $this->db->fetchByAssoc($result)) { $role_id = $row["role_id"]; $sql = "SELECT module_id FROM roles_modules WHERE role_id='$role_id' AND allow='1'"; $res = $this->db->query($sql); while($col = $this->db->fetchByAssoc($res)) { $key = $col['module_id']; if(!(array_key_exists($key, $userArray))) { $userArray[$key] = $app_list_strings['moduleList'][$key]; } } } return $userArray; } function query_user_disallowed_modules($user_id, &$allowed) { global $moduleList; $returnArray = array(); foreach($moduleList as $key=>$val) { if(array_key_exists($val, $allowed)) continue; $returnArray[$val] = $val; } return $returnArray; } function get_users() { // First, get the list of IDs. $query = "SELECT user_id as id FROM roles_users WHERE role_id='$this->id' AND deleted=0"; return $this->build_related_list($query, new User()); } function check_user_role_count($user_id) { $query = "SELECT count(*) AS num FROM roles_users WHERE "; $query .= "user_id='$user_id' AND deleted=0"; $result = $this->db->query($query); $row = $this->db->fetchByAssoc($result); return $row['num']; } } ?>