public function viewEdituser($eventData)
    {
        $domainDa = \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getCurrentDomain()->getDataAccess();
        $userQuery = $domainDa->execute('SELECT * FROM domain_users WHERE id=' . $eventData['userid']);
        $userData = $userQuery->getFields();
        $user = new \Innomatic\Domain\User\User(\Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getCurrentDomain()->domainserial, $eventData['userid']);
        $userRolesQuery = $user->getAllRoles();
        $userRoles = array();
        while (!$userRolesQuery->eof) {
            $userRoles[$userRolesQuery->getFields('id')] = true;
            $userRolesQuery->moveNext();
        }
        $roles = \Innomatic\Domain\User\Role::getAllRoles();
        // Build profiles list
        $profQuery = $domainDa->execute('SELECT * FROM domain_users_groups');
        $profiles = array();
        $profiles[0] = $this->localeCatalog->getStr('noprofileid_label');
        while (!$profQuery->eof) {
            $profData = $profQuery->getFields();
            $profiles[$profData['id']] = $profData['groupname'];
            $profQuery->moveNext();
        }
        $formEventsCall = new WuiEventsCall();
        $formEventsCall->addEvent(new WuiEvent('action', 'edituser', array('uid' => $eventData['userid'], 'groupid' => $userData['groupid'], 'username' => $userData['username'])));
        $formEventsCall->addEvent(new WuiEvent('view', 'default', ''));
        $xml = '<vertgroup><children>
            <form><name>userdata</name>
              <args>
                <action>' . WuiXml::cdata($formEventsCall->getEventsCallString()) . '</action>
              </args>
              <children>
              <vertgroup><children>
                <vertgroup><children>
                    <label><args><bold>true</bold><label>' . WuiXml::cdata($this->localeCatalog->getStr('userdata_label')) . '</label></args></label>
                <grid>
                  <children>
                    <label row="0" col="0"><args><label>' . WuiXml::cdata($this->localeCatalog->getStr('userfname_label')) . '</label></args></label>
                    <string row="0" col="1"><name>fname</name><args><disp>action</disp><value>' . WuiXml::cdata($userData['fname']) . '</value><size>20</size></args></string>
                    <label row="1" col="0"><args><label>' . WuiXml::cdata($this->localeCatalog->getStr('userlname_label')) . '</label></args></label>
                    <string row="1" col="1"><name>lname</name><args><disp>action</disp><value>' . WuiXml::cdata($userData['lname']) . '</value><size>20</size></args></string>
                    <label row="2" col="0"><args><label>' . WuiXml::cdata($this->localeCatalog->getStr('email_label')) . '</label></args></label>
                    <string row="2" col="1"><name>email</name><args><disp>action</disp><value>' . WuiXml::cdata($userData['email']) . '</value><size>30</size></args></string>
                    <label row="3" col="0"><args><label>' . WuiXml::cdata($this->localeCatalog->getStr('changeprofile_label')) . '</label></args></label>
                    <combobox row="3" col="1"><name>profileid</name><args><disp>action</disp><default>' . WuiXml::cdata($userData['groupid']) . '</default><elements type="array">' . WuiXml::encode($profiles) . '</elements></args></combobox>
                    <label row="4" col="0"><args><label>' . WuiXml::cdata($this->localeCatalog->getStr('userother_label')) . '</label></args></label>
                    <text row="4" col="1"><name>other</name><args><disp>action</disp><value>' . WuiXml::cdata($userData['otherdata']) . '</value><rows>6</rows><cols>50</cols></args></text>

                  </children>
                </grid>
                </children></vertgroup>

                <horizbar />

                <vertgroup><children>
                    <label><args><bold>true</bold><label>' . WuiXml::cdata($this->localeCatalog->getStr('userroles_label')) . '</label></args></label>
                    <grid><children>';
        $row = 0;
        $col = 0;
        foreach ($roles as $roleId => $roleData) {
            $xml .= '<checkbox row="' . $row . '" col="' . $col++ . '"><name>role_' . $roleId . '</name><args><disp>action</disp><checked>' . (isset($userRoles[$roleId]) ? 'true' : 'false') . '</checked></args></checkbox>
                <label row="' . $row . '" col="' . $col++ . '"><args><label>' . WuiXml::cdata($roleData['title']) . '</label></args></label>';
            if ($col == 8) {
                $col = 0;
                $row++;
            }
        }
        $xml .= '</children></grid>
                 </children></vertgroup>

                </children></vertgroup>
                <horizbar />

                <horizgroup><children>
                  <button><name>save</name>
	                <args>
                      <themeimage>buttonok</themeimage>
                      <label>' . WuiXml::cdata($this->localeCatalog->getStr('edituser_submit')) . '</label>
                      <action>' . WuiXml::cdata($formEventsCall->getEventsCallString()) . '</action>
                      <formsubmit>userdata</formsubmit>
                      <horiz>true</horiz>
                      <frame>false</frame>
                    </args>
                  </button>
                </children></horizgroup>
              </children>
            </form>
            </children></vertgroup>';
        $this->wuiMainframe->addChild(new WuiXml('user', array('definition' => $xml)));
        $this->wuiTitlebar->mTitle .= ' - ' . $userData['username'] . ' - ' . $this->localeCatalog->getStr('edituser_title');
    }
    private function fillDefinition()
    {
        $result = false;
        $container = \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer');
        if (!(strlen($this->mItemType) and $this->mItemId)) {
            return $result;
        }
        // Locale
        $locale = new \Innomatic\Locale\LocaleCatalog('innowork-core::misc', $container->getCurrentUser()->getLanguage());
        // Core
        $tmp_innoworkcore = \Innowork\Core\InnoworkCore::instance('\\Innowork\\Core\\InnoworkCore', $container->getDataAccess(), $container->getCurrentDomain()->getDataAccess());
        $summaries = $tmp_innoworkcore->getSummaries();
        // Default parent ACL mode
        $parentAcl = false;
        // Item object
        if (isset($summaries[$this->mItemType]) and class_exists($summaries[$this->mItemType]['classname'])) {
            $class_name = $summaries[$this->mItemType]['classname'];
            $item_object = new $class_name($container->getDataAccess(), $container->getCurrentDomain()->getDataAccess(), $this->mItemId);
            $acl = $item_object->mAcl;
            // Check parent ACL mode
            if (strlen($item_object->mParentType) and $item_object->mParentId > 0) {
                $parentAcl = true;
            }
        } else {
            $item_object = null;
            // Access list
            require_once 'innowork/core/InnoworkAcl.php';
            $acl = new InnoworkAcl($container->getDataAccess(), $container->getCurrentDomain()->getDataAccess(), $this->mItemType, $this->mItemId);
        }
        $tmp_acl_type = $acl->getType();
        if (strlen($tmp_acl_type)) {
            $this->mAclType = $tmp_acl_type;
        }
        /*
        $acls_query = $container->getCurrentDomain()->getDataAccess()->execute(
        	'SELECT groupid, userid, rights '.
        	'FROM innowork_core_acls '.
        	'WHERE itemtype='.$container->getCurrentDomain()->getDataAccess()->formatText($acl->mItemType).
        	' '.'AND itemid='.$acl->mItemId
        		);
        */
        $owner = '';
        // Log
        if (isset($summaries[$this->mItemType]['loggable']) and $summaries[$this->mItemType]['loggable']) {
            require_once 'innowork/core/InnoworkItemLog.php';
            $item_log = new InnoworkItemLog($this->mItemType, $this->mItemId);
        }
        if ($this->mItemOwnerId) {
            $owner_user = new \Innomatic\Domain\User\User($container->getCurrentDomain()->domaindata['id'], $this->mItemOwnerId);
            $owner_user_data = $owner_user->getUserData();
            $owner = (strlen($owner_user_data['fname']) ? $owner_user_data['fname'] . ' ' : '') . $owner_user_data['lname'];
        }
        $acl_mode_sk = new \Shared\Wui\WuiSessionKey('innowork_acl_mode', array('sessionobjectnopage' => 'true'));
        if ($acl_mode_sk->mValue == 'advanced') {
            $acl_mode = 'advanced';
        } else {
            $acl_mode = 'simple';
        }
        $row = 0;
        if ($acl_mode == 'advanced') {
            $domainDa = $container->getCurrentDomain()->getDataAccess();
            $groups_query = $domainDa->execute('SELECT id,groupname FROM domain_users_groups ORDER BY groupname');
            $users_query = $domainDa->execute('SELECT id,groupid,username,fname,lname FROM domain_users WHERE disabled IS NULL or disabled <> ' . $domainDa->formatText($domainDa->fmttrue) . ' ORDER BY username');
            $limited_acls = array();
            $users = array();
            while (!$users_query->eof) {
                $fname = $users_query->getFields('fname');
                $lname = $users_query->getFields('lname');
                if (strlen($fname) and strlen($lname)) {
                    $tmp_username = $lname . ' ' . $fname;
                } else {
                    $tmp_username = $users_query->getFields('username');
                    if (strpos($tmp_username, '@')) {
                        $tmp_username = substr($tmp_username, 0, strpos($tmp_username, '@'));
                    }
                }
                $users[$users_query->getFields('groupid')][$users_query->getFields('id')] = $tmp_username;
                $users_query->moveNext();
            }
            while (!$groups_query->eof) {
                $group_perms = $acl->checkPermission($groups_query->getFields('id'));
                switch ($group_perms) {
                    case InnoworkAcl::PERMS_NONE:
                        $limited_acls['g' . $groups_query->getFields('id')] = '[-] ' . $groups_query->getFields('groupname');
                        break;
                    case InnoworkAcl::PERMS_SEARCH:
                        $limited_acls['g' . $groups_query->getFields('id')] = '[' . $locale->getStr('perm_search_short.label') . '] ' . $groups_query->getFields('groupname');
                        break;
                    case InnoworkAcl::PERMS_READ:
                        $limited_acls['g' . $groups_query->getFields('id')] = '[' . $locale->getStr('perm_read_short.label') . '] ' . $groups_query->getFields('groupname');
                        break;
                    case InnoworkAcl::PERMS_EDIT:
                        $limited_acls['g' . $groups_query->getFields('id')] = '[' . $locale->getStr('perm_edit_short.label') . '] ' . $groups_query->getFields('groupname');
                        break;
                    case InnoworkAcl::PERMS_DELETE:
                        $limited_acls['g' . $groups_query->getFields('id')] = '[' . $locale->getStr('perm_delete_short.label') . '] ' . $groups_query->getFields('groupname');
                        break;
                    case InnoworkAcl::PERMS_ALL:
                        $limited_acls['g' . $groups_query->getFields('id')] = '[+] ' . $groups_query->getFields('groupname');
                        break;
                }
                /*
                $limited_acls['g'.$groups_query->getFields( 'id' )] =
                (  > InnoworkAcl::PERMS_NONE ?
                '[+] ' :
                '[-] ' ).
                $groups_query->getFields( 'groupname' );
                */
                foreach ($users[$groups_query->getFields('id')] as $id => $username) {
                    $user_perms = $acl->checkPermission('', $id);
                    /*
                    $limited_acls['u'.$id] = '-> '.
                        ( $acl->checkPermission( '', $id ) > InnoworkAcl::PERMS_NONE ?
                        '[+] ' :
                        '[-] ' ).
                        $username;
                    */
                    if ($id == $this->mItemOwnerId) {
                        $limited_acls['u' . $id] = '- ' . '[+] ' . $username;
                    } else {
                        switch ($user_perms) {
                            case InnoworkAcl::PERMS_NONE:
                                $limited_acls['u' . $id] = '- ' . '[-] ' . $username;
                                break;
                            case InnoworkAcl::PERMS_SEARCH:
                                $limited_acls['u' . $id] = '- ' . '[' . $locale->getStr('perm_search_short.label') . '] ' . $username;
                                break;
                            case InnoworkAcl::PERMS_READ:
                                $limited_acls['u' . $id] = '- ' . '[' . $locale->getStr('perm_read_short.label') . '] ' . $username;
                                break;
                            case InnoworkAcl::PERMS_EDIT:
                                $limited_acls['u' . $id] = '- ' . '[' . $locale->getStr('perm_edit_short.label') . '] ' . $username;
                                break;
                            case InnoworkAcl::PERMS_DELETE:
                                $limited_acls['u' . $id] = '- ' . '[' . $locale->getStr('perm_delete_short.label') . '] ' . $username;
                                break;
                            case InnoworkAcl::PERMS_ALL:
                                $limited_acls['u' . $id] = '- ' . '[+] ' . $username;
                                break;
                        }
                    }
                }
                $groups_query->MoveNext();
            }
            $limited_acls['g0'] = '[-] No group';
            foreach ($users[0] as $id => $username) {
                $limited_acls['u' . $id] = '-> ' . ($acl->checkPermission('', $id) > InnoworkAcl::PERMS_NONE ? '[+] ' : '[-] ') . $username;
            }
        }
        // Clippings
        require_once 'innowork/core/clipping/InnoworkClipping.php';
        $innowork_clippings = new InnoworkClipping($container->getDataAccess(), $container->getCurrentDomain()->getDataAccess());
        $clippings_search = $innowork_clippings->search('');
        $clippings = array();
        if ($this->mItemType != 'defaultaclitem' and count($clippings_search)) {
            foreach ($clippings_search as $id => $data) {
                $clippings[$id] = $data['name'];
            }
        }
        $item_actions = array();
        // Other items widget actions
        if (is_object($item_object) && $acl->checkPermission('', $container->getCurrentUser()->getUserId()) > InnoworkAcl::PERMS_NONE) {
            foreach ($summaries as $item_type => $item_desc) {
                if ($item_type == $this->mItemType) {
                    continue;
                }
                $tmp_class = $item_desc['classname'];
                $tmp_obj = new $tmp_class($container->getDataAccess(), $container->getCurrentDomain()->getDataAccess());
                $item_action = $tmp_obj->getExternalItemWidgetXmlData($item_object);
                if (strlen($item_action)) {
                    $item_actions[] = $item_action;
                }
            }
        }
        if ($acl->checkPermission('', $container->getCurrentUser()->getUserId()) == InnoworkAcl::PERMS_NONE) {
            $this->mDefinition = '<empty/>';
        } elseif (!$parentAcl and ($this->mItemOwnerId == $container->getCurrentUser()->getUserId() or User::isAdminUser($container->getCurrentUser()->getUserName(), $container->getCurrentDomain()->getDomainId()) or $acl->checkPermission('', $container->getCurrentUser()->getUserId()) >= InnoworkAcl::PERMS_RESPONSIBLE)) {
            $this->mDefinition = '
<empty><name>innoworkitemacl</name>
  <children>
    <form><name>opts' . md5($this->mItemType . '-' . $this->mItemId) . '</name>
      <args>
        <action>' . WuiXml::cdata($this->mDefaultAction) . '</action>
      </args>
      <children>
        <formarg><name>aclmode</name>
          <args>
        <disp>wui</disp>
        <value>' . ($acl_mode == 'advanced' ? 'simple' : 'advanced') . '</value>
          </args>
        </formarg>
      </children>
    </form>
        <table><name>acl</name>
          <args>
        <headers type="array">' . WuiXml::encode(array('0' => array('label' => $locale->getStr('item_properties.label')))) . '</headers>
          </args>
          <children>';
            if (count($item_actions)) {
                foreach ($item_actions as $item_action) {
                    $this->mDefinition .= '<vertgroup row="' . $row++ . '" col="0"><children>';
                    $this->mDefinition .= $item_action;
                    $this->mDefinition .= '</children></vertgroup>';
                }
            }
            $this->mDefinition .= '<vertgroup row="' . $row++ . '" col="0" halign="" valign="" nowrap="true">
      <children>
    <form><name>itemacl' . md5($this->mItemType . '-' . $this->mItemId) . '</name>
      <args>
        <method>post</method>
        <action>' . WuiXml::cdata($this->mDefaultAction) . '</action>
      </args>
      <children>

        <vertgroup><name>vg</name><children>
  <horizgroup>
    <args>
      <align>middle</align>
      <width>0%</width>
    </args>
    <children>
      <button>
        <args>
          <themeimage>lock</themeimage>
          <themeimagetype>mini</themeimagetype>
          <compact>true</compact>
        </args>
      </button>
          <label><name>convert</name>
        <args>
          <bold>true</bold>
          <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('access_mode.label'))) . '</label>
          <compact>true</compact>
        </args>
          </label>
    </children>
  </horizgroup>
';
            if (strlen($owner)) {
                $this->mDefinition .= '          <label><name>owner</name>
                <args>
                  <bold>true</bold>
                  <label type="encoded">' . WuiXml::cdata(urlencode(sprintf($locale->getStr('owner.label'), $owner))) . '</label>
                </args>
              </label>';
            }
            // Only the owner and the root user can change the acl type
            if ($this->mItemOwnerId == $container->getCurrentUser()->getUserId() or User::isAdminUser($container->getCurrentUser()->getUserName(), $container->getCurrentDomain()->getDomainId())) {
                $this->mDefinition .= '          <formarg><name>aclitemtype</name><args><disp>wui</disp><value>' . $this->mItemType . '</value></args></formarg>
              <formarg><name>aclitemid</name><args><disp>wui</disp><value>' . $this->mItemId . '</value></args></formarg>
              <radio><name>acltype</name>
               <args>
                  <disp>wui</disp>
                  <value>' . InnoworkAcl::TYPE_PRIVATE . '</value>
                  <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('acl_type_private.label'))) . '</label>
                  <checked>' . ($this->mAclType == InnoworkAcl::TYPE_PRIVATE ? 'true' : 'false') . '</checked>
                </args>
              </radio>
              <radio><name>acltype</name>
                <args>
                  <disp>wui</disp>
                  <value>' . InnoworkAcl::TYPE_PUBLIC . '</value>
                  <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('acl_type_public.label'))) . '</label>
                  <checked>' . ($this->mAclType == InnoworkAcl::TYPE_PUBLIC ? 'true' : 'false') . '</checked>
                </args>
              </radio>
              <radio><name>acltype</name>
                <args>
                  <disp>wui</disp>
                  <value>' . InnoworkAcl::TYPE_ACL . '</value>
                  <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('acl_type_acl.label'))) . '</label>
                  <checked>' . ($this->mAclType == InnoworkAcl::TYPE_ACL ? 'true' : 'false') . '</checked>
                </args>
              </radio>';
            } else {
                $this->mDefinition .= '          <label><name>acltype</name>
               <args>
                  <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('acl_type_private.label'))) . '</label>
                  <bold>' . ($this->mAclType == InnoworkAcl::TYPE_PRIVATE ? 'true' : 'false') . '</bold>
                </args>
              </label>
              <label><name>acltype</name>
                <args>
                  <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('acl_type_public.label'))) . '</label>
                  <bold>' . ($this->mAclType == InnoworkAcl::TYPE_PUBLIC ? 'true' : 'false') . '</bold>
                </args>
              </label>
              <label><name>acltype</name>
                <args>
                  <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('acl_type_acl.label'))) . '</label>
                  <bold>' . ($this->mAclType == InnoworkAcl::TYPE_ACL ? 'true' : 'false') . '</bold>
                </args>
              </label>';
            }
            $this->mDefinition .= '        </children></vertgroup>
          </children>
    </form>
<horizgroup><args><width>0%</width></args>
  <children>';
            if ($this->mItemOwnerId == $container->getCurrentUser()->getUserId() or $container->getCurrentDomain()->getDomainId() == $container->getCurrentUser()->getUserName()) {
                $this->mDefinition .= '    <button><name>setactl</name>
          <args>
            <action>' . WuiXml::cdata($this->mDefaultAction) . '</action>
            <formsubmit>itemacl' . md5($this->mItemType . '-' . $this->mItemId) . '</formsubmit>
            <horiz>true</horiz>
            <frame>false</frame>
            <themeimage>buttonok</themeimage>
            <themeimagetype>mini</themeimagetype>
            <compact>true</compact>
            <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('apply.submit'))) . '</label>
          </args>
        </button>';
            }
            $this->mDefinition .= '    <button><name>setopts</name>
      <args>
        <action>' . WuiXml::cdata($this->mDefaultAction) . '</action>
        <formsubmit>opts' . md5($this->mItemType . '-' . $this->mItemId) . '</formsubmit>
        <horiz>true</horiz>
        <frame>false</frame>
        <themeimage>' . ($acl_mode == 'advanced' ? 'info' : 'info') . '</themeimage>
        <themeimagetype>mini</themeimagetype>
        <compact>true</compact>
        <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr($acl_mode == 'advanced' ? 'acl_simple.submit' : 'acl_advanced.submit'))) . '</label>
      </args>
    </button>
  </children>
</horizgroup>
  </children>
</vertgroup>';
            if ($acl_mode == 'advanced') {
                if ($this->mAclType == InnoworkAcl::TYPE_ACL) {
                    $this->mDefinition .= '<vertgroup row="' . $row++ . '" col="0">
              <children>
            <form><name>limitedacl' . md5($this->mItemType . '-' . $this->mItemId) . '</name>
              <args>
                <action>' . WuiXml::cdata($this->mDefaultAction) . '</action>
              </args>
              <children>

              <horizgroup>
                <args>
                  <align>top</align><width>0%</width>
                </args>
                <children>
                <listbox><name>limitedacl</name>
                  <args>
                <disp>wui</disp>
                <elements type="array">' . WuiXml::encode($limited_acls) . '</elements>
                <multiselect>true</multiselect>
                <size>10</size>
                  </args>
                </listbox>

                <vertgroup>
                  <args>
                <align>left</align>
                  </args>
                  <children>
                <radio><name>aclperms</name>
                  <args>
                <disp>wui</disp>
                <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('perm_all.label'))) . '</label>
                <value>' . InnoworkAcl::PERMS_ALL . '</value>
                <checked>true</checked>
                  </args>
                </radio>
                <radio><name>aclperms</name>
                  <args>
                <disp>wui</disp>
                <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('perm_delete.label'))) . '</label>
                <value>' . InnoworkAcl::PERMS_DELETE . '</value>
                  </args>
                </radio>
                <radio><name>aclperms</name>
                  <args>
                <disp>wui</disp>
                <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('perm_edit.label'))) . '</label>
                <value>' . InnoworkAcl::PERMS_EDIT . '</value>
                  </args>
                </radio>
                <radio><name>aclperms</name>
                  <args>
                <disp>wui</disp>
                <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('perm_read.label'))) . '</label>
                <value>' . InnoworkAcl::PERMS_READ . '</value>
                  </args>
                </radio>
                <radio><name>aclperms</name>
                  <args>
                <disp>wui</disp>
                <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('perm_search.label'))) . '</label>
                <value>' . InnoworkAcl::PERMS_SEARCH . '</value>
                  </args>
                </radio>

                </children>
                  </vertgroup>
                </children>
              </horizgroup>

                  <formarg><name>aclitemtype</name><args><disp>wui</disp><value>' . $this->mItemType . '</value></args></formarg>
                  <formarg><name>aclitemid</name><args><disp>wui</disp><value>' . $this->mItemId . '</value></args></formarg>

              </children>
            </form>

            <horizgroup>
              <args><width>0%</width></args>
              <children>
                <button><name>add</name>
                  <args>
                <action>' . WuiXml::cdata($this->mDefaultAction . '&wui[wui][evn]=innoworkacladd') . '</action>
                <formsubmit>limitedacl' . md5($this->mItemType . '-' . $this->mItemId) . '</formsubmit>
                <horiz>true</horiz>
                <frame>false</frame>
                <themeimage>useradd</themeimage>
                <themeimagetype>mini</themeimagetype>
                <compact>true</compact>
                <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('add_acl.submit'))) . '</label>
                  </args>
                </button>
                <button><name>remove</name>
                  <args>
                <action>' . WuiXml::cdata($this->mDefaultAction . '&wui[wui][evn]=innoworkaclremove') . '</action>
                <formsubmit>limitedacl' . md5($this->mItemType . '-' . $this->mItemId) . '</formsubmit>
                <horiz>true</horiz>
                <frame>false</frame>
                <themeimage>userremove</themeimage>
                <themeimagetype>mini</themeimagetype>
                <compact>true</compact>
                <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('remove_acl.submit'))) . '</label>
                  </args>
                </button>
              </children>
            </horizgroup>
              </children>
            </vertgroup>';
                }
                /*
                $this->mDefinition .=
                '<form row="'.$row++.'" col="0" halign="" valign="" nowrap="true"><name>responsibles'.md5( $this->mItemType.'-'.$this->mItemId ).'</name>
                  <args>
                  </args>
                  <children>
                
                <listbox><name>responsibles</name>
                  <args>
                    <disp>wui</disp>
                    <size>2</size>
                  </args>
                </listbox>
                
                  </children>
                </form>
                
                <form row="'.$row++.'" col="0" halign="" valign="" nowrap="true"><name>participants'.md5( $this->mItemType.'-'.$this->mItemId ).'</name>
                  <args>
                  </args>
                  <children>
                
                <listbox><name>participants</name>
                  <args>
                    <disp>wui</disp>
                    <size>2</size>
                  </args>
                </listbox>
                
                  </children>
                </form>';
                */
                if ($summaries[$this->mItemType]['loggable']) {
                    $this->mDefinition .= '<vertgroup row="' . $row++ . '" col="0">
              <children>
              <horizgroup>
                <args>
                  <align>middle</align><width>0%</width>
                </args>
                <children>
                  <button>
                <args>
                  <themeimage>alignright</themeimage>
                  <themeimagetype>mini</themeimagetype>
                  <compact>true</compact>
                </args>
                  </button>
                  <label><name>itemlog</name>
                    <args>
                      <bold>true</bold>
                      <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('history.label'))) . '</label>
                      <compact>true</compact>
                    </args>
                  </label>
                </children>
              </horizgroup>
                <listbox><name>itemlog</name>
                  <args>
                <readonly>true</readonly>
                <elements type="array">' . WuiXml::encode(array_reverse($item_log->GetLog())) . '</elements>
                <size>3</size>
                  </args>
                </listbox>
              </children>
            </vertgroup>';
                }
                if ($summaries[$this->mItemType]['convertible']) {
                    $convert_types = array();
                    foreach ($summaries as $type => $item) {
                        if ($item['convertible'] and $type != $this->mItemType) {
                            $tmp_locale = new \Innomatic\Locale\LocaleCatalog($item['catalog'], $container->getCurrentUser()->getLanguage());
                            $convert_types[$type] = $tmp_locale->getStr($type);
                            unset($tmp_locale);
                        }
                    }
                    if (count($convert_types)) {
                        $this->mDefinition .= '<vertgroup row="' . $row++ . '" col="0">
                  <children>
                  <horizgroup>
                    <args>
                      <align>middle</align><width>0%</width>
                    </args>
                    <children>
                      <button>
<args>
  <themeimage>elementadd</themeimage>
  <themeimagetype>mini</themeimagetype>
  <compact>true</compact>
</args>
                      </button>
  <label><name>convert</name>
<args>
  <bold>true</bold>
  <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('convert.label'))) . '</label>
  <compact>true</compact>
</args>
  </label>
                    </children>
                  </horizgroup>

                    <form><name>convert' . md5($this->mItemType . '-' . $this->mItemId) . '</name>
                      <args>
<action>' . WuiXml::cdata($this->mDefaultAction) . '</action>
                      </args>
                      <children>

                    <horizgroup>
                      <args>
<align>middle</align><width>0%</width>
                      </args>
                      <children>

<combobox><name>type</name>
  <args>
<disp>wui</disp>
<elements type="array">' . WuiXml::encode($convert_types) . '</elements>
  </args>
</combobox>

<button><name>convert</name>
  <args>
<horiz>true</horiz>
<frame>false</frame>
<themeimage>arrowright</themeimage>
<themeimagetype>mini</themeimagetype>
<compact>true</compact>
<formsubmit>convert' . md5($this->mItemType . '-' . $this->mItemId) . '</formsubmit>
<action>' . WuiXml::cdata($this->mDefaultAction . '&wui[wui][evn]=innoworkconvert') . '</action>
  </args>
</button>

  <formarg><name>aclitemtype</name><args><disp>wui</disp><value>' . $this->mItemType . '</value></args></formarg>
  <formarg><name>aclitemid</name><args><disp>wui</disp><value>' . $this->mItemId . '</value></args></formarg>

                      </children>
                    </horizgroup>

                      </children>
                    </form>
                  </children>
                </vertgroup>';
                    }
                }
                // Clippings
                if (count($clippings)) {
                    $this->mDefinition .= '<vertgroup row="' . $row++ . '" col="0">
              <children>
              <horizgroup>
                <args>
                  <align>middle</align><width>0%</width>
                </args>
                <children>
                  <button>
                <args>
                  <themeimage>clip</themeimage>
                  <themeimagetype>mini</themeimagetype>
                  <compact>true</compact>
                </args>
                  </button>
                  <label><name>clipping</name>
                    <args>
                      <bold>true</bold>
                      <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('clipping.label'))) . '</label>
                      <compact>true</compact>
                    </args>
                  </label>
                </children>
              </horizgroup>

                <form><name>clipping' . md5($this->mItemType . '-' . $this->mItemId) . '</name>
                  <args>
                <action>' . WuiXml::cdata($this->mDefaultAction) . '</action>
                  </args>
                  <children>

                <horizgroup>
                  <args>
                <align>middle</align><width>0%</width>
                  </args>
                  <children>

                <combobox><name>clippingid</name>
                  <args>
                    <disp>wui</disp>
                    <elements type="array">' . WuiXml::encode($clippings) . '</elements>
                  </args>
                </combobox>

                <button><name>clipping</name>
                  <args>
                    <horiz>true</horiz>
                    <frame>false</frame>
                    <themeimage>arrowright</themeimage>
                    <themeimagetype>mini</themeimagetype>
                    <compact>true</compact>
                    <formsubmit>clipping' . md5($this->mItemType . '-' . $this->mItemId) . '</formsubmit>
                    <action>' . WuiXml::cdata($this->mDefaultAction . '&wui[wui][evn]=innoworkaddtoclipping') . '</action>
                  </args>
                </button>

                  <formarg><name>aclitemtype</name><args><disp>wui</disp><value>' . $this->mItemType . '</value></args></formarg>
                  <formarg><name>aclitemid</name><args><disp>wui</disp><value>' . $this->mItemId . '</value></args></formarg>

                  </children>
                </horizgroup>

                  </children>
                </form>
              </children>
            </vertgroup>';
                }
            }
            if (isset($GLOBALS['innoworkcore']['itemacl'][$this->mItemType][$this->mItemId])) {
                $this->mDefinition .= '<label row="' . $row++ . '" col="0">
          <args>
        <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('acl_changed.label'))) . '</label>
        <bold>true</bold>
          </args>
        </label>';
            }
            $this->mDefinition .= '          </children>
        </table>

  </children>
</empty>';
        } else {
            $this->mDefinition = '
<empty><name>innoworkitemacl</name>
  <children>
    <form><name>opts' . md5($this->mItemType . '-' . $this->mItemId) . '</name>
      <args>
        <action>' . WuiXml::cdata($this->mDefaultAction) . '</action>
      </args>
      <children>
        <formarg><name>aclmode</name>
          <args>
        <disp>wui</disp>
        <value>' . ($acl_mode == 'advanced' ? 'simple' : 'advanced') . '</value>
          </args>
        </formarg>
      </children>
    </form>

        <table><name>acl</name>
          <args>
        <headers type="array">' . WuiXml::encode(array('0' => array('label' => $locale->getStr('item_properties.label')))) . '</headers>
          </args>
          <children>';
            if (count($item_actions)) {
                foreach ($item_actions as $item_action) {
                    $this->mDefinition .= '<vertgroup row="' . $row++ . '" col="0"><children>';
                    $this->mDefinition .= $item_action;
                    $this->mDefinition .= '</children></vertgroup>';
                }
            }
            $this->mDefinition .= '
        <vertgroup row="' . $row++ . '" col="0" halign="" valign="" nowrap="true"><name>vg</name><children>
        <horizgroup>
    <args>
      <align>middle</align><width>0%</width>
    </args>
    <children>
      <button>
        <args>
          <themeimage>lock</themeimage>
          <themeimagetype>mini</themeimagetype>
          <compact>true</compact>
        </args>
      </button>
          <label><name>convert</name>
        <args>
          <bold>true</bold>
          <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('access_mode.label'))) . '</label>
          <compact>true</compact>
        </args>
          </label>
    </children>
  </horizgroup>';
            if (strlen($owner)) {
                $this->mDefinition .= '          <label><name>owner</name>
                <args>
                  <bold>true</bold>
                  <label type="encoded">' . WuiXml::cdata(urlencode(sprintf($locale->getStr('owner.label'), $owner))) . '</label>
                </args>
              </label>';
            }
            $this->mDefinition .= '          <label><name>acltype</name>
           <args>
          <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('acl_type_private.label'))) . '</label>
          <bold>' . ($this->mAclType == InnoworkAcl::TYPE_PRIVATE ? 'true' : 'false') . '</bold>
        </args>
          </label>
          <label><name>acltype</name>
        <args>
          <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('acl_type_public.label'))) . '</label>
          <bold>' . ($this->mAclType == InnoworkAcl::TYPE_PUBLIC ? 'true' : 'false') . '</bold>
        </args>
          </label>
          <label><name>acltype</name>
        <args>
          <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('acl_type_acl.label'))) . '</label>
          <bold>' . ($this->mAclType == InnoworkAcl::TYPE_ACL ? 'true' : 'false') . '</bold>
        </args>
          </label>

<horizgroup><args><width>0%</width></args>
  <children>
    <button><name>setopts</name>
      <args>
        <action>' . WuiXml::cdata($this->mDefaultAction) . '</action>
        <formsubmit>opts' . md5($this->mItemType . '-' . $this->mItemId) . '</formsubmit>
        <horiz>true</horiz>
        <frame>false</frame>
        <themeimage>' . ($acl_mode == 'advanced' ? 'info' : 'info') . '</themeimage>
        <themeimagetype>mini</themeimagetype>
        <compact>true</compact>
        <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr($acl_mode == 'advanced' ? 'acl_simple.submit' : 'acl_advanced.submit'))) . '</label>
      </args>
    </button>
  </children>
</horizgroup>
  </children>
</vertgroup>';
            if ($acl_mode == 'advanced') {
                if ($this->mAclType == InnoworkAcl::TYPE_ACL) {
                    $this->mDefinition .= '<form row="' . $row++ . '" col="0"><name>limitedacl' . md5($this->mItemType . '-' . $this->mItemId) . '</name>
              <args>
                <action>' . WuiXml::cdata($this->mDefaultAction) . '</action>
              </args>
              <children>

                <listbox><name>limitedacl</name>
                  <args>
                <disp>wui</disp>
                <elements type="array">' . WuiXml::encode($limited_acls) . '</elements>
                <multiselect>true</multiselect>
                <size>10</size>
                  </args>
                </listbox>

                  <formarg><name>aclitemtype</name><args><disp>wui</disp><value>' . $this->mItemType . '</value></args></formarg>
                  <formarg><name>aclitemid</name><args><disp>wui</disp><value>' . $this->mItemId . '</value></args></formarg>

              </children>
            </form>';
                }
                if ($summaries[$this->mItemType]['loggable']) {
                    $this->mDefinition .= '<vertgroup row="' . $row++ . '" col="0">
              <children>
                <horizgroup>
                <args>
                  <align>middle</align><width>0%</width>
                </args>
                <children>
                  <button>
                <args>
                  <themeimage>alignright</themeimage>
                  <themeimagetype>mini</themeimagetype>
                  <compact>true</compact>
                </args>
                  </button>
                  <label><name>convert</name>
                    <args>
                      <bold>true</bold>
                      <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('history.label'))) . '</label>
                      <compact>true</compact>
                    </args>
                  </label>
                </children>
              </horizgroup>
                <listbox><name>itemlog</name>
                  <args>
                <readonly>true</readonly>
                <elements type="array">' . WuiXml::encode(array_reverse($item_log->GetLog())) . '</elements>
                <size>3</size>
                  </args>
                </listbox>
              </children>
            </vertgroup>';
                }
                if ($summaries[$this->mItemType]['convertible']) {
                    $convert_types = array();
                    foreach ($summaries as $type => $item) {
                        if ($item['convertible'] and $type != $this->mItemType) {
                            $tmp_locale = new \Innomatic\Locale\LocaleCatalog($item['catalog'], $container->getCurrentUser()->getLanguage());
                            $convert_types[$type] = $tmp_locale->getStr($type);
                            unset($tmp_locale);
                        }
                    }
                    if (count($convert_types)) {
                        $this->mDefinition .= '<vertgroup row="' . $row++ . '" col="0">
                  <children>
                  <horizgroup>
                    <args>
                      <align>middle</align><width>0%</width>
                    </args>
                    <children>
                      <button>
<args>
  <themeimage>elementadd</themeimage>
  <themeimagetype>mini</themeimagetype>
  <compact>true</compact>
</args>
                      </button>
  <label><name>convert</name>
<args>
  <bold>true</bold>
  <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('convert.label'))) . '</label>
  <compact>true</compact>
</args>
  </label>
                    </children>
                  </horizgroup>

                    <form><name>convert' . md5($this->mItemType . '-' . $this->mItemId) . '</name>
                      <args>
<action>' . WuiXml::cdata($this->mDefaultAction) . '</action>
                      </args>
                      <children>

                    <horizgroup>
                      <args>
<align>middle</align><width>0%</width>
                      </args>
                      <children>

<combobox><name>type</name>
  <args>
<disp>wui</disp>
<elements type="array">' . WuiXml::encode($convert_types) . '</elements>
  </args>
</combobox>

<button><name>convert</name>
  <args>
<horiz>true</horiz>
<frame>false</frame>
<themeimage>arrowright</themeimage>
<themeimagetype>mini</themeimagetype>
<compact>true</compact>
<formsubmit>convert' . md5($this->mItemType . '-' . $this->mItemId) . '</formsubmit>
<action>' . WuiXml::cdata($this->mDefaultAction . '&wui[wui][evn]=innoworkconvert') . '</action>
  </args>
</button>

  <formarg><name>aclitemtype</name><args><disp>wui</disp><value>' . $this->mItemType . '</value></args></formarg>
  <formarg><name>aclitemid</name><args><disp>wui</disp><value>' . $this->mItemId . '</value></args></formarg>

                      </children>
                    </horizgroup>

                      </children>
                    </form>
                  </children>
                </vertgroup>';
                    }
                }
                // Clippings
                if (count($clippings)) {
                    $this->mDefinition .= '<vertgroup row="' . $row++ . '" col="0">
              <children>
              <horizgroup>
                <args>
                  <align>middle</align><width>0%</width>
                </args>
                <children>
                  <button>
                <args>
                  <themeimage>clip</themeimage>
                  <themeimagetype>mini</themeimagetype>
                  <compact>true</compact>
                </args>
                  </button>
                  <label><name>clipping</name>
                    <args>
                      <bold>true</bold>
                      <label type="encoded">' . WuiXml::cdata(urlencode($locale->getStr('clipping.label'))) . '</label>
                      <compact>true</compact>
                    </args>
                  </label>
                </children>
              </horizgroup>

                <form><name>clipping' . md5($this->mItemType . '-' . $this->mItemId) . '</name>
                  <args>
                <action>' . WuiXml::cdata($this->mDefaultAction) . '</action>
                  </args>
                  <children>

                <horizgroup>
                  <args>
                <align>middle</align><width>0%</width>
                  </args>
                  <children>

                <combobox><name>clippingid</name>
                  <args>
                    <disp>wui</disp>
                    <elements type="array">' . WuiXml::encode($clippings) . '</elements>
                  </args>
                </combobox>

                <button><name>clipping</name>
                  <args>
                    <horiz>true</horiz>
                    <frame>false</frame>
                    <themeimage>arrowright</themeimage>
                    <themeimagetype>mini</themeimagetype>
                    <compact>true</compact>
                    <formsubmit>clipping' . md5($this->mItemType . '-' . $this->mItemId) . '</formsubmit>
                    <action>' . WuiXml::cdata($this->mDefaultAction . '&wui[wui][evn]=innoworkaddtoclipping') . '</action>
                  </args>
                </button>

                  <formarg><name>aclitemtype</name><args><disp>wui</disp><value>' . $this->mItemType . '</value></args></formarg>
                  <formarg><name>aclitemid</name><args><disp>wui</disp><value>' . $this->mItemId . '</value></args></formarg>

                  </children>
                </horizgroup>

                  </children>
                </form>
              </children>
            </vertgroup>';
                }
            }
            $this->mDefinition .= '
          </children>
        </table>

  </children>
</empty>';
        }
        $result = true;
    }
Esempio n. 3
0
 public function removeAllUsers()
 {
     $usersquery = $this->dataAccess->execute('SELECT id FROM domain_users');
     if ($usersquery->getNumberRows() > 0) {
         $tmpuser = new \Innomatic\Domain\User\User($this->domainserial);
         while (!$usersquery->eof) {
             $userdata = $usersquery->getFields();
             $tmpuser->setUserId($userdata['id']);
             $tmpuser->remove();
             $usersquery->moveNext();
         }
     }
     //$this->rootda->execute( "DELETE FROM domain_users where domainid = '$data['id']'" );
 }
Esempio n. 4
0
 public function checkPermission($groupId = '', $userId = '')
 {
     $result = false;
     $type = $this->getType();
     $summaries = $this->innoworkContainer->getSummaries();
     switch ($type) {
         case InnoworkAcl::TYPE_PUBLIC:
             $result = InnoworkAcl::PERMS_ALL;
             break;
         case InnoworkAcl::TYPE_PRIVATE:
             if (!$userId) {
                 return InnoworkAcl::PERMS_NONE;
             }
             $tmp_user = new \Innomatic\Domain\User\User($this->container->getCurrentDomain()->domaindata['id'], $userId);
             if (\Innomatic\Domain\User\User::isAdminUser($tmp_user->getUserName(), $this->container->getCurrentDomain()->getDomainId()) or $tmp_user->hasPermission('view_all_' . $summaries[$this->mItemType]['typeplural'])) {
                 $result = InnoworkAcl::PERMS_ALL;
             } else {
                 // Always NONE because the file owner should not issue the
                 // checkPermission() method call.
                 $result = InnoworkAcl::PERMS_NONE;
             }
             break;
         case InnoworkAcl::TYPE_ACL:
             if (strlen($groupId) xor strlen($userId)) {
                 $result = InnoworkAcl::PERMS_NONE;
                 $goon = true;
                 if ($userId) {
                     $tmp_user = new \Innomatic\Domain\User\User($this->container->getCurrentDomain()->domaindata['id'], $userId);
                     if (\Innomatic\Domain\User\User::isAdminUser($tmp_user->getUserName(), $this->container->getCurrentDomain()->getDomainId()) or $tmp_user->hasPermission('view_all_' . $summaries[$this->mItemType]['typeplural'])) {
                         return InnoworkAcl::PERMS_ALL;
                     }
                     if (!isset($GLOBALS['innowork-core']['acl-checkperm'][$userId]['groupid'])) {
                         $groupId = $GLOBALS['innowork-core']['acl-checkperm'][$userId]['groupid'] = $tmp_user->GetGroup();
                     } else {
                         $groupId = $GLOBALS['innowork-core']['acl-checkperm'][$userId]['groupid'];
                     }
                     if (isset($GLOBALS['innowork-core']['acl-checkperm'][$userId][$this->mItemType][$this->mItemId]['rights_rows'])) {
                         $tmp_num_rows = $GLOBALS['innowork-core']['acl-checkperm'][$userId][$this->mItemType][$this->mItemId]['rights_rows'];
                         $tmp_rights = $GLOBALS['innowork-core']['acl-checkperm'][$userId][$this->mItemType][$this->mItemId]['rights'];
                     } else {
                         $user_query = $this->domainDA->execute('SELECT rights' . ' FROM innowork_core_acls' . ' WHERE userid=' . $userId . ' AND itemid=' . $this->mItemId . ' AND itemtype=' . $this->domainDA->formatText($this->mItemType));
                         $tmp_num_rows = $user_query->getNumberRows();
                         $tmp_rights = $user_query->getFields('rights');
                         $GLOBALS['innowork-core']['acl-checkperm'][$userId][$this->mItemType][$this->mItemId]['rights_rows'] = $tmp_num_rows;
                         $GLOBALS['innowork-core']['acl-checkperm'][$userId][$this->mItemType][$this->mItemId]['rights'] = $tmp_rights;
                     }
                     if ($tmp_num_rows) {
                         $goon = false;
                         $result = $tmp_rights;
                     } else {
                         if (isset($GLOBALS['innowork-core']['acl-checkperm'][$userId]['groupid'])) {
                             $groupId = $GLOBALS['innowork-core']['acl-checkperm'][$userId]['groupid'];
                         } else {
                             // Check the user group rights
                             //
                             $group_query = $this->domainDA->execute('SELECT groupid' . ' FROM domain_users' . ' WHERE id=' . $userId);
                             $groupId = $group_query->getFields('groupid');
                             $GLOBALS['innowork-core']['acl-checkperm'][$userId]['groupid'] = $groupId;
                             $group_query->Free();
                         }
                     }
                     if (isset($user_query)) {
                         $user_query->free();
                     }
                 }
                 if ($goon) {
                     if ($groupId != '0') {
                         $group_query = $this->domainDA->execute('SELECT rights' . ' FROM innowork_core_acls' . ' WHERE groupid=' . $groupId . ' AND itemid=' . $this->mItemId . ' AND itemtype=' . $this->domainDA->formatText($this->mItemType));
                         if ($group_query->getNumberRows()) {
                             $result = $group_query->getFields('rights');
                         }
                         $group_query->Free();
                     } else {
                         $result = InnoworkAcl::PERMS_NONE;
                     }
                 }
                 //$result = true;
             }
     }
     return $result;
 }