4 require_once
'Services/Contact/BuddySystem/classes/states/class.ilAbstractBuddySystemRelationState.php';
39 if(null === self::$instance)
41 self::$instance =
new self;
44 return self::$instance;
51 public function getValidStates()
53 if(null !== self::$valid_states)
55 return self::$valid_states;
60 foreach($iter as
$file)
70 require_once $file->getFilename();
71 $class = str_replace(array(
'class.',
'.php'),
'', $file->getBasename());
72 $reflection =
new ReflectionClass($class);
74 !$reflection->isAbstract() &&
75 $reflection->isSubclassOf(
'ilBuddySystemRelationState')
78 $states[] =
new $class();
82 return (self::$valid_states = $states);
91 foreach($this->getValidStates() as $state)
93 if($state->isInitial())
106 public function getStatesAsOptionArray($with_initial_state =
false)
113 if(null !== self::$state_option_array[$with_initial_state])
115 return self::$state_option_array[$with_initial_state];
120 foreach($this->getValidStates() as $state)
122 if($with_initial_state || !$state->isInitial())
124 $options[get_class($state)] = $lng->txt(
'buddy_bs_state_' . strtolower($state->getName()));
128 return (self::$state_option_array[$with_initial_state] =
$options);
139 $state_class = get_class($relation->
getState());
140 $renderer_class = $state_class .
'ButtonRenderer';
141 $renderer_path =
"Services/Contact/BuddySystem/classes/states/renderer/class.{$renderer_class}.php";
143 if(!file_exists($renderer_path))
148 require_once $renderer_path;
149 if(!class_exists($renderer_class))
151 throw new ilBuddySystemException(sprintf(
"Could not find a renderer class for state: %s in file: %s", $state_class, $renderer_path));
154 return new $renderer_class($owner_id, $relation);
Class ilBuddySystemRelationStateFactory.
static $state_option_array
getRendererByOwnerAndRelation($owner_id, ilBuddySystemRelation $relation)
if(!is_array($argv)) $options
Class ilBuddySystemRelation.