Example #1
0
 public function addMemberAcl(MemberAcl $l)
 {
     $this->collMemberAcls[] = $l;
     $l->setMemberJob($this);
 }
Example #2
0
 public function updateMemberAcl($new_job, $new_acl)
 {
     foreach ($new_acl as $nk => $nv) {
         if (isset($nv['add']) && $nv['add'] == 'on') {
             $new_acl[$nk]['add'] = 1;
         } else {
             $new_acl[$nk]['add'] = null;
         }
         if (isset($nv['edit']) && $nv['edit'] == 'on') {
             $new_acl[$nk]['edit'] = 1;
         } else {
             $new_acl[$nk]['edit'] = null;
         }
         if (isset($nv['remove']) && $nv['remove'] == 'on') {
             $new_acl[$nk]['remove'] = 1;
         } else {
             $new_acl[$nk]['remove'] = null;
         }
     }
     $acls = $this->getMemberAcls(new Criteria());
     $old = array();
     foreach ($acls as $acl) {
         $old['member_job_' . $acl->getMemberJobId()] = array('add' => $acl->getAddPriv(), 'edit' => $acl->getEditPriv(), 'remove' => $acl->getRemovePriv());
     }
     $removed = array_diff_key($old, $new_job);
     $inserted = array_diff_key($new_job, $old);
     $nc = array_intersect_key($new_acl, $new_job);
     $vc = array();
     foreach ($old as $k => $v) {
         if (!isset($new_acl[$k]) && ($old[$k]['add'] == '1' || $old[$k]['edit'] == '1' || $old[$k]['remove'] == '1')) {
             $vc[$k] = array('add' => null, 'edit' => null, 'remove' => null);
         }
         if (isset($new_acl[$k])) {
             if ($new_acl[$k]['add'] != $old[$k]['add'] || $new_acl[$k]['edit'] != $old[$k]['edit'] || $new_acl[$k]['remove'] != $old[$k]['remove']) {
                 $vc[$k] = array('add' => $new_acl[$k]['add'], 'edit' => $new_acl[$k]['edit'], 'remove' => $new_acl[$k]['remove']);
             }
         }
     }
     if ($inserted) {
         foreach ($inserted as $k => $v) {
             $job_id = preg_split('/_/', $k);
             $job_id = $job_id[2];
             $acl = new MemberAcl();
             $acl->setMemberType($this);
             $acl->setMemberJobId($job_id);
             if (isset($new_acl[$k])) {
                 if (isset($new_acl[$k]['add'])) {
                     $acl->setAddPriv($new_acl[$k]['add']);
                 }
                 if (isset($new_acl[$k]['edit'])) {
                     $acl->setEditPriv($new_acl[$k]['edit']);
                 }
                 if (isset($new_acl[$k]['remove'])) {
                     $acl->setRemovePriv($new_acl[$k]['remove']);
                 }
             }
             $acl->save();
         }
     }
     if ($removed) {
         foreach ($removed as $k => $v) {
             $job_id = preg_split('/_/', $k);
             $job_id = $job_id[2];
             $acl = MemberAclPeer::retrieveByPK($this->getId(), $job_id);
             $acl->delete();
         }
     }
     if ($vc) {
         foreach ($vc as $k => $v) {
             $job_id = preg_split('/_/', $k);
             $job_id = $job_id[2];
             $acl = MemberAclPeer::retrieveByPK($this->getId(), $job_id);
             $acl->setAddPriv($v['add']);
             $acl->setEditPriv($v['edit']);
             $acl->setRemovePriv($v['remove']);
             $acl->save();
         }
     }
 }