24 public $selected =
false;
58 const EMPTY_VALUE =
'{"pages":[],"users":[],"rights":[],"text":[],"data":[]}';
73 if (empty($value) || $value ==
'[]') {
75 $this->setValue(self::EMPTY_VALUE);
77 $this->setValue($value);
99 $this->value = @json_decode($value);
102 if (!empty($this->value) && is_object($this->value)) {
103 if (empty($this->value->pages)) {
104 $this->value->pages = array();
106 if (empty($this->value->users)) {
107 $this->value->users = array();
109 if (empty($this->value->rights)) {
110 $this->value->rights = array();
112 if (empty($this->value->text)) {
113 $this->value->text = array();
115 if (empty($this->value->data)) {
116 $this->value->data = array();
130 return json_encode($this->value);
142 public function getPages($no_rights =
false, $only_active =
false, $lang =
'', $user_id = null) {
144 if (!empty($this->value->pages)) {
145 foreach ($this->value->pages as $page) {
147 $site =
new Site($page->site, $page->lang);
149 $site->addParam(array(
152 'only_active' =>
false,
157 $site->addParam(array(
159 'only_active' =>
true,
164 ($p = $site->getPage($page->id))
167 ? $p->hasRights(
'view', $user_id)
169 ? $p->hasRights(
'view')
170 : !$p->hasRightsOn(
'view')
177 && ($lang_page = $p->getLanguagePage($lang))
181 $p->{
'selected'} = (bool) $page->selected;
184 }
catch (Exception $e) {
186 egotec_warning_log($e->getMessage());
200 $this->value->pages = $pages;
210 if (!$this->hasPage($page)) {
211 $site = $page->getSite();
213 $p->site = $site->name;
214 $p->lang = $site->language;
215 $p->id = $page->field[
'id'];
216 $this->value->pages[] = $p;
229 $site = $page->getSite();
230 if (!empty($this->value->pages)) {
231 foreach ($this->value->pages as $p) {
233 $site->name == $p->site
234 && $site->language == $p->lang
235 && $page->field[
'id'] == $p->id
251 if (!empty($this->value->users)) {
252 foreach ($this->value->users as $user_id) {
253 $user =
new User_SQL(ltrim($user_id,
'+'));
254 $user->{
'selected'} = $user_id[0] ===
'+';
268 $this->value->users = $users;
278 if (!in_array($user_id, $this->value->users)) {
279 $this->value->users[] = $user_id;
292 foreach ($this->getUsers() as $user) {
293 if ($user->field[
'user_id'] == $user_id) {
307 if (!empty($this->value->rights)) {
308 foreach ($this->value->rights as $right) {
310 'group' =>
new Group_SQL($right->group),
311 'role' =>
new Role_SQL($right->role)
313 $r[
'selected'] = (bool) $right->selected;
327 if (!empty($this->value->rights)) {
328 $db = new_db_connection(array(
329 'table' =>
'egotec_user',
330 'fields' =>
'egotec_user.user_id' 332 while ($db->nextRecord()) {
333 $user =
new User_SQL($db->Record[
'user_id']);
334 foreach ($this->value->rights as $right) {
335 if ($user->hasGroupRoleRelation($right->group, $right->role)) {
352 $this->value->rights = $rights;
363 $right =
new stdClass();
364 $right->group = $group;
365 $right->role = $role;
366 foreach ($this->value->rights as $_right) {
367 if ($_right->group == $right->group && $_right->role == $right->role) {
371 $this->value->rights[] = $right;
381 return array_map(
function($text) {
383 $obj->selected = $text[0] ===
'+';
385 }, $this->value->text);
395 $this->value->text = $text;
405 if (!in_array($text, $this->value->text)) {
406 $this->value->text[] = $text;
418 return $this->value->data;
430 foreach ($this->getData() as $data) {
431 if (isset($data->{$key}) && $data->{$key} == $value) {
445 foreach ($this->getData() as $data) {
446 if ($data->key == $key) {
460 $this->value->data = $data;
470 $this->value->data[] = $data;
492 $addresses = array();
495 if (!empty($params[
'pages'])) {
496 foreach ($this->getPages(
true,
true) as $page) {
497 if ($params[
'pages'][
'type'] ==
'*' || $page->field[
'type'] == $params[
'pages'][
'type']) {
506 foreach (array_keys($address) as $key) {
507 if (!empty($params[
'pages'][
'values'][$key])) {
508 list($field, $name) = explode(
'.', $params[
'pages'][
'values'][$key], 2);
513 $key = md5($address[
'email']);
514 if (empty($address[
'username'])) {
515 $address[
'username'] = $address[
'email'];
517 if ($address[
'email_name'] ==
'') {
518 $address[
'email_name'] = $page->field[
'name'];
520 $address[
'identity'] = array(
522 'value' => $page->getIdentity()
524 $address[
'data'] = $page->extra;
525 $addresses[$key] = $address;
532 if (!empty($params[
'children'])) {
533 foreach ($this->getPages(
true) as $page) {
534 foreach ($page->getChildren(array(), array(
536 'only_active' =>
true 538 if ($params[
'children'][
'type'] ==
'*' || $child->field[
'type'] == $params[
'children'][
'type']) {
547 foreach (array_keys($address) as $key) {
548 if (!empty($params[
'children'][
'values'][$key])) {
549 list($field, $name) = explode(
'.', $params[
'children'][
'values'][$key], 2);
554 $key = md5($address[
'email']);
555 if (empty($address[
'username'])) {
556 $address[
'username'] = $address[
'email'];
558 if ($address[
'email_name'] ==
'') {
559 $address[
'email_name'] = $child->field[
'name'];
561 $address[
'identity'] = array(
563 'value' => $child->getIdentity()
565 $address[
'data'] = $child->extra;
566 $addresses[$key] = $address;
574 foreach ($this->getRightsUsers() as $user) {
575 if (!empty($user->field[
'email']) && !$user->isInactive() &&
Ego_System::isEmail($user->field[
'email'])) {
576 $key = md5($user->field[
'email']);
577 $addresses[$key] = array(
578 'username' => $user->field[
'username'],
579 'salutation' => $user->extra[
'anrede'],
580 'firstname' => $user->extra[
'vorname'],
581 'lastname' => $user->extra[
'name'],
582 'email' => $user->field[
'email'],
583 'email_name' => $user->getFullname(
false),
586 'value' => $user->field[
'user_id']
588 'data' => $user->extra
591 egotec_warning_log(
'Der Benutzer '.$user->getFullname().
' besitzt keine E-Mail Adresse und kann nicht verwendet werden.');
596 foreach ($this->getUsers() as $user) {
597 if (!empty($user->field[
'email']) && !$user->isInactive() &&
Ego_System::isEmail($user->field[
'email'])) {
598 $key = md5($user->field[
'email']);
599 $addresses[$key] = array(
600 'username' => $user->field[
'username'],
601 'salutation' => $user->extra[
'anrede'],
602 'firstname' => $user->extra[
'vorname'],
603 'lastname' => $user->extra[
'name'],
604 'email' => $user->field[
'email'],
605 'email_name' => $user->getFullname(
false),
608 'value' => $user->field[
'user_id']
610 'data' => $user->extra
613 egotec_warning_log(
'Der Benutzer '.$user->getFullname().
' besitzt keine E-Mail Adresse und kann nicht verwendet werden.');
618 foreach ($this->getText() as $text) {
620 if (!isset($adresses[$key])) {
622 $email = (string) $text;
626 if (preg_match(
'/^"(.*?)"(.*?)$/i', $email, $matches)) {
627 $email = trim($matches[2]);
628 $email_name = trim($matches[1]);
632 $addresses[$key] = array(
633 'username' => $email,
638 'email_name' => $email_name,
650 if (!empty($params[
'data'])) {
651 foreach ($this->getData() as $data) {
660 foreach (array_keys($address) as $key) {
661 if (!empty($params[
'data'][$key])) {
662 $address[$key] = @$data[$params[
'data'][$key]];
666 $key = md5($address[
'email']);
667 if (empty($address[
'username'])) {
668 $address[
'username'] = $address[
'email'];
670 $address[
'identity'] = array(
672 'value' => $data[
'key']
674 $address[
'data'] = array();
675 $addresses[$key] = $address;
680 return array_values($addresses);
getPages($no_rights=false, $only_active=false, $lang='', $user_id=null)
static getAssocValue($a, $k)
getMailAddresses($params=array())