class_MemberProfileBC.inc.php 5.67 KB
<?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 );

	}

}
?>