/** * This function will return paginated result. Result is an array where first element is * array of returned object and second populated pagination object that can be used for * obtaining and rendering pagination data using various helpers. * * Items and pagination array vars are indexed with 0 for items and 1 for pagination * because you can't use associative indexing with list() construct * * @access public * @param array $arguments Query argumens (@see find()) Limit and offset are ignored! * @param integer $items_per_page Number of items per page * @param integer $current_page Current page number * @return array */ function paginate($arguments = null, $items_per_page = 10, $current_page = 1) { if (isset($this) && instance_of($this, 'DimensionObjectTypeOptions')) { return parent::paginate($arguments, $items_per_page, $current_page); } else { return DimensionObjectTypeOptions::instance()->paginate($arguments, $items_per_page, $current_page); } // if }
/** * Adds a member to a dimension */ function add() { if (!can_manage_dimension_members(logged_user())) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } $member_data = array_var($_POST, 'member'); $member = new Member(); if (!is_array($member_data)) { $member_data = array(); if ($name = array_var($_GET, 'name')) { $member_data['name'] = $name; } if ($parent = array_var($_GET, 'parent')) { tpl_assign('parent_sel', $parent); } tpl_assign('member_data', $member_data); $ret = array(); Hook::fire('check_additional_member_permissions', array('action' => 'add', 'parent_member_id' => $parent, 'pg_id' => logged_user()->getPermissionGroupId()), $ret); if (count($ret) > 0 && !array_var($ret, 'ok')) { flash_error(array_var($ret, 'message')); ajx_current("empty"); return; } // Permissions $permission_parameters = permission_member_form_parameters(); $logged_user_pg = array(); foreach ($permission_parameters['allowed_object_types'] as $ot) { $logged_user_pg[] = array('o' => $ot->getId(), 'w' => 1, 'd' => can_manage_dimension_members(logged_user()) ? 1 : 0, 'r' => 1); } $permission_parameters['member_permissions'][logged_user()->getPermissionGroupId()] = $logged_user_pg; $permission_parameters = get_default_member_permission($parent, $permission_parameters); tpl_assign('permission_parameters', $permission_parameters); //-- tpl_assign("member", $member); $sel_dim = get_id("dim_id"); $current_dimension = Dimensions::getDimensionById($sel_dim); if (!$current_dimension instanceof Dimension) { flash_error("dimension dnx"); ajx_current("empty"); return; } tpl_assign("current_dimension", $current_dimension); $ot_ids = implode(",", DimensionObjectTypes::getObjectTypeIdsByDimension($current_dimension->getId())); $dimension_obj_types = ObjectTypes::findAll(array("conditions" => "`id` IN ({$ot_ids})")); $dimension_obj_types_info = array(); foreach ($dimension_obj_types as $ot) { $info = $ot->getArrayInfo(array('id', 'name', 'type')); $info['name'] = lang(array_var($info, 'name')); $dimension_obj_types_info[] = $info; } tpl_assign('dimension_obj_types', $dimension_obj_types_info); if (isset($_GET['type'])) { tpl_assign('obj_type_sel', $_GET['type']); } else { if (count($dimension_obj_types_info) == 1) { tpl_assign('obj_type_sel', $dimension_obj_types_info[0]['id']); } } tpl_assign('parents', array()); tpl_assign('can_change_type', true); $restricted_dim_defs = DimensionMemberRestrictionDefinitions::findAll(array("conditions" => array("`dimension_id` = ?", $sel_dim))); $ot_with_restrictions = array(); foreach ($restricted_dim_defs as $rdef) { if (!isset($ot_with_restrictions[$rdef->getObjectTypeId()])) { $ot_with_restrictions[$rdef->getObjectTypeId()] = true; } } tpl_assign('ot_with_restrictions', $ot_with_restrictions); $associations = DimensionMemberAssociations::findAll(array("conditions" => array("`dimension_id` = ?", $sel_dim))); $ot_with_associations = array(); foreach ($associations as $assoc) { if (!isset($ot_with_associations[$assoc->getObjectTypeId()])) { $ot_with_associations[$assoc->getObjectTypeId()] = true; } } tpl_assign('ot_with_associations', $ot_with_associations); if (array_var($_GET, 'rest_genid') != "") { tpl_assign('rest_genid', array_var($_GET, 'rest_genid')); } if (array_var($_GET, 'prop_genid') != "") { tpl_assign('prop_genid', array_var($_GET, 'prop_genid')); } Hook::fire('before_add_member', array('member' => $member, 'parent' => $parent), $ret); } else { try { $ok = $this->saveMember($member_data, $member); if (config_option('add_default_permissions_for_users') && array_var($_GET, 'quick')) { if ($member->getParentMemberId() == 0) { // if added from quick-add add default permissions for executives, managers and administrators $user_types = implode(',', config_option('give_member_permissions_to_new_users')); if (trim($user_types) != "") { $users = Contacts::findAll(array('conditions' => "user_type IN (" . $user_types . ")")); if (!array_var($_REQUEST, 'permissions')) { $_REQUEST['permissions'] = "[]"; } $permissions_decoded = json_decode(array_var($_REQUEST, 'permissions')); foreach ($users as $user) { $role_perms = RoleObjectTypePermissions::findAll(array('conditions' => array("role_id=?", $user->getUserType()))); foreach ($role_perms as $role_perm) { $pg_obj = new stdClass(); $pg_obj->pg = $user->getPermissionGroupId(); $pg_obj->o = $role_perm->getObjectTypeId(); $pg_obj->d = $role_perm->getCanDelete(); $pg_obj->w = $role_perm->getCanWrite(); $pg_obj->r = 1; $permissions_decoded[] = $pg_obj; } } $_REQUEST['permissions'] = json_encode($permissions_decoded); } } else { // inherit permissions from parent member if ($member->getParentMemberId() > 0) { $perm_params = get_default_member_permission($member->getParentMemberId(), array()); if (is_array($perm_params) && is_array(array_var($perm_params, 'member_permissions'))) { $mem_perms = array_var($perm_params, 'member_permissions'); $permissions_decoded = array(); foreach ($mem_perms as $pg_id => $perms) { foreach ($perms as $perm) { $pg_obj = new stdClass(); $pg_obj->pg = $pg_id; $pg_obj->o = array_var($perm, 'o'); $pg_obj->d = array_var($perm, 'd'); $pg_obj->w = array_var($perm, 'w'); $pg_obj->r = array_var($perm, 'r'); $permissions_decoded[] = $pg_obj; } } $_REQUEST['permissions'] = json_encode($permissions_decoded); } } } } Env::useHelper('permissions'); save_member_permissions_background(logged_user(), $member, array_var($_REQUEST, 'permissions')); if ($ok) { ApplicationLogs::createLog($member, ApplicationLogs::ACTION_ADD); ajx_extra_data(array("member" => array("id" => $member->getId(), "dimension_id" => $member->getDimensionId()))); $ret = null; Hook::fire('after_add_member', $member, $ret); //evt_add("external dimension member click", array('dim_id' => $member->getDimensionId(),'member_id' => $member->getId())); $select_node = intval(DimensionObjectTypeOptions::getOptionValue($member->getDimensionId(), $member->getObjectTypeId(), 'select_after_creation')); evt_add("update dimension tree node", array('dim_id' => $member->getDimensionId(), 'member_id' => $member->getId(), 'select_node' => $select_node)); if (array_var($_POST, 'rest_genid')) { evt_add('reload member restrictions', array_var($_POST, 'rest_genid')); } if (array_var($_POST, 'prop_genid')) { evt_add('reload member properties', array_var($_POST, 'prop_genid')); } if (array_var($_GET, 'current') == 'overview-panel' && array_var($_GET, 'quick')) { //ajx_current("reload"); } if (array_var($_GET, 'current') == 'more-panel') { ajx_current("back"); } else { ajx_current("empty"); } } } catch (Exception $e) { DB::rollback(); flash_error($e->getMessage()); ajx_current("empty"); } } }
/** * Return manager instance * * @access protected * @param void * @return DimensionObjectTypeOptions */ function manager() { if (!$this->manager instanceof DimensionObjectTypeOptions) { $this->manager = DimensionObjectTypeOptions::instance(); } return $this->manager; }