Esempio n. 1
0
 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);
	}
}