static function getAssociatedDimensions($associated_dimension_id, $associated_object_type, $get_properties = true) { if ($get_properties) { $dim_field = 'associated_dimension_id'; $ot_field = 'associated_object_type_id'; $res_dim_field = 'dimension_id'; } else { $dim_field = 'dimension_id'; $ot_field = 'object_type_id'; $res_dim_field = 'associated_dimension_id'; } $search_condition = "`{$dim_field}` = {$associated_dimension_id} AND `{$ot_field}` = {$associated_object_type}"; $associations = DimensionMemberAssociations::findAll(array('conditions' => $search_condition)); // TODO: Hacerlo recursivo cuando get_properties = true $dimensions = array(); foreach ($associations as $assoc) { $dimensions[] = Dimensions::getDimensionById($assoc->getColumnValue($res_dim_field)); } return $dimensions; }
function edit() { if (!can_manage_dimension_members(logged_user())) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } $member = Members::findById(get_id()); if (!$member instanceof Member) { flash_error(lang('member dnx')); ajx_current("empty"); return; } $this->setTemplate('add'); $member_data = array_var($_POST, 'member'); if (!is_array($member_data)) { // New ! Permissions $permission_parameters = permission_member_form_parameters($member); tpl_assign('permission_parameters', $permission_parameters); //-- tpl_assign("member", $member); $member_data['name'] = $member->getName(); $current_dimension = $member->getDimension(); 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); tpl_assign('obj_type_sel', $member->getObjectTypeId()); tpl_assign('parents', self::getAssignableParents($member->getDimensionId(), $member->getObjectTypeId())); tpl_assign('parent_sel', $member->getParentMemberId()); tpl_assign("member_data", $member_data); tpl_assign('can_change_type', false); $restricted_dim_defs = DimensionMemberRestrictionDefinitions::findAll(array("conditions" => array("`dimension_id` = ?", $member->getDimensionId()))); $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` = ?", $member->getDimensionId()))); $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); } else { $ok = $this->saveMember($member_data, $member, false); save_member_permissions($member); // NEW member permissions if ($ok) { $ret = null; Hook::fire('after_edit_member', $member, $ret); evt_add("reload dimension tree", $member->getDimensionId()); // ApplicationLogs::createLog($member, ApplicationLogs::ACTION_EDIT, false, true); } } }
function edit() { if (!can_manage_dimension_members(logged_user())) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } $member = Members::findById(get_id()); if (!$member instanceof Member) { flash_error(lang('member dnx')); ajx_current("empty"); return; } $ret = array(); Hook::fire('check_additional_member_permissions', array('action' => 'edit', 'member' => $member, 'pg_id' => logged_user()->getPermissionGroupId()), $ret); if (count($ret) > 0 && !array_var($ret, 'ok')) { flash_error(array_var($ret, 'message')); ajx_current("empty"); return; } $this->setTemplate('add'); $member_data = array_var($_POST, 'member'); if (!is_array($member_data)) { // New ! Permissions $permission_parameters = permission_member_form_parameters($member); tpl_assign('permission_parameters', $permission_parameters); //-- tpl_assign("member", $member); $member_data['name'] = $member->getName(); $member_data['description'] = $member->getDescription(); $current_dimension = $member->getDimension(); 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); tpl_assign('obj_type_sel', $member->getObjectTypeId()); tpl_assign('parents', self::getAssignableParents($member->getDimensionId(), $member->getObjectTypeId())); tpl_assign('parent_sel', $member->getParentMemberId()); tpl_assign("member_data", $member_data); tpl_assign('can_change_type', false); $restricted_dim_defs = DimensionMemberRestrictionDefinitions::findAll(array("conditions" => array("`dimension_id` = ?", $member->getDimensionId()))); $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` = ?", $member->getDimensionId()))); $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); } else { try { $old_parent = $member->getParentMemberId(); $ok = $this->saveMember($member_data, $member, false); Env::useHelper('permissions'); save_member_permissions_background(logged_user(), $member, array_var($_REQUEST, 'permissions'), $old_parent); if ($ok) { ApplicationLogs::createLog($member, ApplicationLogs::ACTION_EDIT); $ret = null; Hook::fire('after_edit_member', $member, $ret); //evt_add("reload dimension tree", array('dim_id' => $member->getDimensionId(), 'mid' => $member->getId(), 'pid' => $member->getParentMemberId())); evt_add("update dimension tree node", array('dim_id' => $member->getDimensionId(), 'member_id' => $member->getId())); } } catch (Exception $e) { DB::rollback(); flash_error($e->getMessage()); ajx_current("empty"); } } }
function core_dim_remove_contacts_member_associations(Member $member) { // one way $associations = DimensionMemberAssociations::getAssociatations ( $member->getDimensionId(), $member->getObjectTypeId() ); foreach ( $associations as $a ) { $condition = "association_id = ".$a->getId()." AND member_id = ".$member->getId()." AND property_member_id IN (SELECT m.id FROM ".TABLE_PREFIX."members m WHERE m.object_type_id=".$a->getAssociatedObjectType()." AND m.dimension_id=".$a->getAssociatedDimensionMemberAssociationId().")"; MemberPropertyMembers::instance()->delete($condition); } // reverse way $associations = DimensionMemberAssociations::findAll(array("conditions" => array("`associated_dimension_id` = ? AND `associated_object_type_id` = ?", $member->getDimensionId(), $member->getObjectTypeId()))); foreach ( $associations as $a ) { $condition = "association_id = ".$a->getId()." AND property_member_id = ".$member->getId()." AND member_id IN (SELECT m.id FROM ".TABLE_PREFIX."members m WHERE m.object_type_id=".$a->getObjectTypeId()." AND m.dimension_id=".$a->getDimensionId().")"; MemberPropertyMembers::instance()->delete($condition); } }