function setPermission($permission_arr, $old_permission_arr = array()) { if ($this->getId() == FALSE) { return FALSE; } $pf = new PermissionFactory(); //Don't Delete all previous permissions, do that in the Permission class. if (isset($permission_arr) and is_array($permission_arr) and count($permission_arr) > 0) { foreach ($permission_arr as $section => $permissions) { Debug::Text(' Section: ' . $section, __FILE__, __LINE__, __METHOD__, 10); foreach ($permissions as $name => $value) { Debug::Text(' Name: ' . $name . ' - Value: ' . $value, __FILE__, __LINE__, __METHOD__, 10); if ((!isset($old_permission_arr[$section][$name]) or isset($old_permission_arr[$section][$name]) and $value != $old_permission_arr[$section][$name]) and $pf->isIgnore($section, $name, $this->getCompanyObject()->getProductEdition()) == FALSE) { if ($value == 0 or $value == 1) { Debug::Text(' Modifying/Adding Permission: ' . $name . ' - Value: ' . $value, __FILE__, __LINE__, __METHOD__, 10); $tmp_pf = new PermissionFactory(); $tmp_pf->setPermissionControl($this->getId()); $tmp_pf->setSection($section); $tmp_pf->setName($name); $tmp_pf->setValue((int) $value); if ($tmp_pf->isValid()) { $tmp_pf->save(); } } } else { Debug::Text(' Permission didnt change... Skipping', __FILE__, __LINE__, __METHOD__, 10); } } } } return TRUE; }
Debug::Text('Found Current Permissions!', __FILE__, __LINE__, __METHOD__, 10); foreach ($plf as $p_obj) { foreach ($plf as $p_obj) { $current_permissions[$p_obj->getSection()][$p_obj->getName()] = $p_obj; } } } //print_r($current_permissions); } $section_groups = Misc::prependArray(array(-1 => TTi18n::gettext('-- None --')), $pf->getOptions('section_group')); $section_group_map = $pf->getOptions('section_group_map'); $sections = $pf->getOptions('section'); $names = $pf->getOptions('name'); //Trim out ignored sections foreach ($section_groups as $section_group_key => $section_group_value) { if ($pf->isIgnore($section_group_key, NULL, $current_company->getProductEdition()) == TRUE) { unset($section_groups[$section_group_key]); } } unset($section_group_key, $section_group_value); if (!isset($group_id) or !isset($section_groups[$group_id])) { $group_id = 0; //None //$group_id = 'all'; //None } Debug::Text('Group ID: ' . $group_id, __FILE__, __LINE__, __METHOD__, 10); foreach ($names as $section => $permission_arr) { if ($pf->isIgnore($section, NULL, $current_company->getProductEdition()) == FALSE and ($group_id == 'all' and $group_id !== 0 or isset($section_group_map[$group_id]) and in_array($section, $section_group_map[$group_id]))) { foreach ($permission_arr as $name => $display_name) { if (isset($current_permissions[$section][$name])) { $permission_result_obj = $current_permissions[$section][$name];