class_MemberProfileBC.inc.php
5.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<?php
/**
* @file MemberProfileBC.inc.php
* @category freeSN
* @mailto code [at] netz.coop
* @version 0.4.200901
* @link http://netz.coop
*
* @copyright Copyright by netz.coop e.G. 2015
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
class MemberProfileBC extends BasisClipboard {
const STATE_MASTER_ID = 10;
const STATE_AUTHOR_ID = 11;
const STATE_READER_ID = 12;
const STATE_MASTER_NAME = 'groupmaster';
const STATE_AUTHOR_NAME = 'groupauthor';
const STATE_READER_NAME = 'groupreader';
/**
* @attention muss unbedingt die selbe sein wie in sql Tabelle losp_BasisClipboard_objvar, ansonsten Rechtesystem im Arsch
* aus Performance Gründen so
* select PartOfObjVarID from losp_BasisClipboard_objvar where PartOfObjVar='MemberProfileBC';
*
* @todo evt. solche Constanten zentralisieren 100403 @f
*/
const SQL_PARTOFOBJVARID = 27;
public function post_changeState(Account &$param_HostAccount, iStorable &$param_iStorable, array $param_array) {
if(parent::post_changeState($param_HostAccount, $param_iStorable, $param_array)){
$this->loadPartOf($param_HostAccount, $param_iStorable);
if($param_array['State'][0] == MemberProfileBC::STATE_MASTER_ID){
$this->PartOf->getObjVar('RightManagement')->getAuthorisationList()->addIdToReadWriteList($param_HostAccount, $param_iStorable, $param_array['MTextID'][0]);
}
else{
$this->PartOf->getObjVar('RightManagement')->getAuthorisationList()->removeIdFromWriteList($param_HostAccount, $param_iStorable, $param_array['MTextID'][0]);
}
}
}
public function post_add(Account &$param_HostAccount, iStorable &$param_iStorable, array $param_array){
if(array_key_exists('MTextID',$param_array)){
if(array_key_exists('State',$param_array)){
$var_state = $param_array['State'];
} else{
$var_state = MemberProfileBC::STATE_READER_ID;
}
foreach($param_array['MTextID'] as $value){
if($value){
$valueArray=preg_split('/,\s|;\s|,|;|\s/',$value);
foreach($valueArray as $valueID){
$var_MemberID = Profile::NickNameToID($param_iStorable, $valueID);
if(!$this->isAttached($var_MemberID)){
if($this->add($param_HostAccount, $param_iStorable, $var_MemberID, $var_state)){
Message::newMessage('post_add', $this->ThisClassName,'Profile',array('state'=> $this->getStateName($param_iStorable, $var_state)));
}
else{
Message::newMessage('post_noRightsToAdd','','Profile','');
}
}
}
}
}
}
}
/**
* Overwrites add
*
*
* @param int param_MTextID
* @param string param_State
*
* @return false || ID
* @access public
*/
public function add(Account &$param_HostAccount, iStorable &$param_iStorable, $param_MTextID, $param_State=MemberProfileBC::STATE_READER_ID){
if($this->PartOfID && ($param_MTextID != $this->PartOfID) ){
$profile_BasisElement =& MultimediaText::loadElement($param_HostAccount, $param_iStorable,null, $param_MTextID);
$var_possibleAdd= false;
if(is_object($profile_BasisElement)){
$var_GroupBC = $profile_BasisElement->getClipboard($param_HostAccount, $param_iStorable, 'GroupProfileBC');
if($var_GroupBC->isAttached($this->PartOfID)){
$var_GroupBC->changeState($param_HostAccount, $param_iStorable, $this->PartOfID,3);
$var_possibleAdd = true;
}
else{
/**
* @todo an um warum denn jetzt hier stutus 3 ??? und nicht so schön wie du das mit den const vars gemacht hast 100319 @f
*/
if($var_GroupBC->add($param_HostAccount, $param_iStorable,$this->PartOfID,3) == 1){
/*$var_GroupBC->addToAttachIDList($this->PartOfID,$param_MTextID);
D::show($var_GroupBC->getAllAttachIDList(),'MCA');*/
$var_possibleAdd = true;
}
}
}
if($var_possibleAdd){
$var_ID = $param_iStorable->insertMTextIntoClipboard($param_HostAccount, $this->PartOfID, $param_MTextID, get_class($this), $this->CategoryName, $param_State );
if($param_State == MemberProfileBC::STATE_MASTER_ID){
$this->loadPartOf($param_HostAccount, $param_iStorable);
$this->PartOf->getObjVar('RightManagement')->getAuthorisationList()->addIdToReadWriteList($param_HostAccount, $param_iStorable, $param_MTextID);
}
return $var_ID;
}
return false;
} else {
return Error::newError("NoLinkBE","Objekt kann nicht hinzu gefügt werden (Keine PartOfID{".$this->PartOfID."} oder MTextID{$param_MTextID} == PartOfID)","");
}
}
public function remove(Account &$param_HostAccount, iStorable &$param_iStorable, $param_MTextID) {
$this->loadPartOf($param_HostAccount, $param_iStorable);
$this->PartOf->getObjVar('RightManagement')->getAuthorisationList()->removeIdFromReadWriteList($param_HostAccount, $param_iStorable, $param_MTextID);
//aus GroupProfileBC austragen
$profile_BasisElement =& MultimediaText::loadElement($param_HostAccount, $param_iStorable, null, $param_MTextID);
if(is_object($profile_BasisElement)){
$profile_BasisElement->getClipboard($param_HostAccount, $param_iStorable, 'GroupProfileBC')->remove($param_HostAccount, $param_iStorable,$this->PartOfID);
}
parent::remove($param_HostAccount, $param_iStorable, $param_MTextID );
}
}
?>