65 const EMPTY_VALUE =
'{"pages":[],"users":[],"rights":[],"text":[],"data":[]}';
80 if (empty($value) || $value ==
'[]') {
105 if (!empty($value)) {
106 $this->value = @json_decode($value);
109 if (!empty($this->value) && is_object($this->value)) {
110 if (empty($this->value->pages)) {
111 $this->value->pages = array();
113 if (empty($this->value->users)) {
114 $this->value->users = array();
116 if (empty($this->value->rights)) {
117 $this->value->rights = array();
119 if (empty($this->value->text)) {
120 $this->value->text = array();
122 if (empty($this->value->data)) {
123 $this->value->data = array();
137 return json_encode($this->value);
149 public function getPages($no_rights =
false, $only_active =
false, $lang =
'', $user_id =
null) {
151 if (!empty($this->value->pages)) {
154 foreach ($this->value->pages as $page) {
156 if (isset($sites[
"{$page->site}-{$page->lang}"])) {
157 $site = $sites[
"{$page->site}-{$page->lang}"];
159 $site =
new Site($page->site, $page->lang);
160 $sites[
"{$page->site}-{$page->lang}"] = $site;
163 $site->addParam(array(
166 'only_active' =>
false,
171 $site->addParam(array(
173 'only_active' =>
true,
178 ($p = $site->getPage($page->id))
181 ? $p->hasRights(
'view', $user_id)
183 ? $p->hasRights(
'view')
184 : !$p->hasRightsOn(
'view')
191 && ($lang_page = $p->getLanguagePage($lang))
195 $p->{
'selected'} = (bool) $page->selected;
198 }
catch (Exception $e) {
200 egotec_warning_log($e->getMessage());
214 $this->value->pages = $pages;
224 if (!$this->hasPage($page)) {
225 $site = $page->getSite();
227 $p->site = $site->name;
228 $p->lang = $site->language;
229 $p->id = $page->field[
'id'];
230 $this->value->pages[] = $p;
243 $site = $page->getSite();
244 if (!empty($this->value->pages)) {
245 foreach ($this->value->pages as $p) {
247 $site->name == $p->site
248 && $site->language == $p->lang
249 && $page->field[
'id'] == $p->id
265 if (!empty($this->value->users)) {
266 foreach ($this->value->users as $user_id) {
268 $user =
new User_SQL(ltrim($user_id,
'+'));
269 }
catch (Exception $e) {
274 $user->{
'selected'} = $user_id[0] ===
'+';
288 $this->value->users = $users;
298 if (!in_array($user_id, $this->value->users)) {
299 $this->value->users[] = $user_id;
312 foreach ($this->getUsers() as $user) {
313 if ($user->field[
'user_id'] == $user_id) {
327 if (!empty($this->value->rights)) {
328 foreach ($this->value->rights as $right) {
330 'group' =>
new Group_SQL($right->group),
331 'role' =>
new Role_SQL($right->role)
333 $r[
'selected'] = (bool) $right->selected;
347 if (!empty($this->value->rights)) {
348 foreach ($this->value->rights as $right) {
349 $db = new_db_connection([
350 'table' =>
'egotec_user_group',
351 'fields' =>
'egotec_user_group.user_id',
352 'where' =>
"egotec_user_group.group_id = '$right->group' AND egotec_user_group.role_id = '$right->role'",
353 'join' =>
'egotec_user ON egotec_user.user_id = egotec_user_group.user_id',
355 'order' =>
'username ASC'
358 while ($record = $db->nextRecord()) {
362 $user =
new User_SQL($record[
'user_id']);
363 }
catch (Exception $e) {}
365 if ($user !==
null) {
381 $this->value->rights = $rights;
392 $right =
new stdClass();
393 $right->group = $group;
394 $right->role = $role;
395 foreach ($this->value->rights as $_right) {
396 if ($_right->group == $right->group && $_right->role == $right->role) {
400 $this->value->rights[] = $right;
412 foreach ($this->getRights() as $right) {
414 $user_sql =
new User_SQL($user_id);
416 if ($user_sql->hasGroupRoleRelation($right[
'group']->field[
'group_id'], $right[
'role']->field[
'role_id'])) {
419 }
catch (Exception $e) {
433 return array_map(
function($text) {
435 $obj->selected = $text[0] ===
'+';
437 }, $this->value->text);
447 $this->value->text = $text;
457 if (!in_array($text, $this->value->text)) {
458 $this->value->text[] = $text;
470 return $this->value->data;
482 foreach ($this->getData() as $data) {
483 if (isset($data->{$key}) && $data->{$key} == $value) {
497 foreach ($this->getData() as $data) {
498 if ($data->key == $key) {
512 $this->value->data = $data;
522 $this->value->data[] = $data;
546 $addresses = array();
549 if (!empty($params[
'pages'])) {
550 foreach ($this->getPages(
true,
true) as $page) {
551 if ($params[
'pages'][
'type'] ==
'*' || $page->field[
'type'] == $params[
'pages'][
'type']) {
560 foreach (array_keys($address) as $key) {
561 if (!empty($params[
'pages'][
'values'][$key])) {
562 [$field, $name] = explode(
'.', $params[
'pages'][
'values'][$key], 2);
567 $key = md5($address[
'email']);
568 if (empty($address[
'username'])) {
569 $address[
'username'] = $address[
'email'];
571 if ($address[
'email_name'] ==
'') {
572 $address[
'email_name'] = $page->field[
'name'];
574 $address[
'identity'] = array(
576 'value' => $page->getIdentity()
578 $address[
'data'] = $page->extra;
579 $addresses[$key] = $address;
586 if (!empty($params[
'children'])) {
587 foreach ($this->getPages(
true) as $page) {
588 foreach ($page->getChildren(array(), array(
590 'only_active' =>
true
592 if ($params[
'children'][
'type'] ==
'*' || $child->field[
'type'] == $params[
'children'][
'type']) {
601 foreach (array_keys($address) as $key) {
602 if (!empty($params[
'children'][
'values'][$key])) {
603 [$field, $name] = explode(
'.', $params[
'children'][
'values'][$key], 2);
608 $key = md5($address[
'email']);
609 if (empty($address[
'username'])) {
610 $address[
'username'] = $address[
'email'];
612 if ($address[
'email_name'] ==
'') {
613 $address[
'email_name'] = $child->field[
'name'];
615 $address[
'identity'] = array(
617 'value' => $child->getIdentity()
619 $address[
'data'] = $child->extra;
620 $addresses[$key] = $address;
628 foreach ($this->getRightsUsers() as $user) {
630 !empty($user->field[
'email'])
631 && !$user->isInactive()
634 $params[
'users'][
'no_admin'] !==
false
635 || !$user->field[
'no_admin']
638 $key = md5($user->field[
'email']);
639 $addresses[$key] = array(
640 'username' => $user->field[
'username'],
641 'salutation' => $user->extra[
'anrede'],
642 'firstname' => $user->extra[
'vorname'],
643 'lastname' => $user->extra[
'name'],
644 'email' => $user->field[
'email'],
645 'email_name' => $user->getFullname(
false),
648 'value' => $user->field[
'user_id']
650 'data' => $user->extra
653 egotec_warning_log(
'Der Benutzer '.$user->getFullname().
' besitzt keine E-Mail Adresse und kann nicht verwendet werden.');
658 foreach ($this->getUsers() as $user) {
660 !empty($user->field[
'email'])
661 && !$user->isInactive()
664 $params[
'users'][
'no_admin'] !==
false
665 || !$user->field[
'no_admin']
668 $key = md5($user->field[
'email']);
669 $addresses[$key] = array(
670 'username' => $user->field[
'username'],
671 'salutation' => $user->extra[
'anrede'],
672 'firstname' => $user->extra[
'vorname'],
673 'lastname' => $user->extra[
'name'],
674 'email' => $user->field[
'email'],
675 'email_name' => $user->getFullname(
false),
678 'value' => $user->field[
'user_id']
680 'data' => $user->extra
683 egotec_warning_log(
'Der Benutzer '.$user->getFullname().
' besitzt keine E-Mail Adresse und kann nicht verwendet werden.');
688 foreach ($this->getText() as $text) {
690 if (!isset($adresses[$key])) {
692 $email = (string) $text;
696 if (preg_match(
'/^"(.*?)"(.*?)$/i', $email, $matches)) {
697 $email = trim($matches[2]);
698 $email_name = trim($matches[1]);
702 $addresses[$key] = array(
703 'username' => $email,
708 'email_name' => $email_name,
720 if (!empty($params[
'data'])) {
721 foreach ($this->getData() as $data) {
730 foreach (array_keys($address) as $key) {
731 if (!empty($params[
'data'][$key])) {
732 $address[$key] = @$data[$params[
'data'][$key]];
736 $key = md5($address[
'email']);
737 if (empty($address[
'username'])) {
738 $address[
'username'] = $address[
'email'];
740 $address[
'identity'] = array(
742 'value' => $data[
'key']
744 $address[
'data'] = array();
745 $addresses[$key] = $address;
750 return array_values($addresses);
getPages($no_rights=false, $only_active=false, $lang='', $user_id=null)
getMailAddresses($params=array())
hasRight(string $user_id)
static getAssocValue($a, $k)