public function executeEdit() { $group_id = $this->getContext()->getUser()->getAttribute('group_id', null, 'bo'); $c = new Criteria(); $c->add(JobPeer::CODE, $this->getModuleName()); $job = JobPeer::doSelectOne($c); $acl = AclPeer::retrieveByPK($group_id, $job->getId()); if (!$acl) { $this->forward('default', 'error404'); } $this->can_add = $acl->getAddPriv() == 1; $this->can_edit = $acl->getEditPriv() == 1; $this->can_remove = $acl->getRemovePriv() == 1; $member_type = MemberTypePeer::retrieveByPk($this->getRequestParameter('id')); $this->forward404Unless($member_type); $actions = array(array('name' => 'save', 'type' => 'submit', 'options' => array('class' => 'save_button', 'onclick' => "action_type.value=this.value"))); // if ($acl->getAddPriv()) array_push($actions, array('name'=>'copy','type'=>'submit', 'options'=>array('class'=>'save_button', 'onclick'=>"action_type.value=this.value"))); if ($acl->getRemovePriv()) { array_push($actions, array('name' => 'delete', 'url' => 'member_type/delete?id=' . $member_type->getId(), 'color' => 'red')); } array_push($actions, array('name' => 'cancel', 'url' => 'member_type/list', 'color' => 'black')); $this->subtitle = $member_type->toString() . ' - id:' . $member_type->getId(); $this->type = 'edit'; $this->member_type = $member_type; $this->forward404Unless($this->member_type); $c = new Criteria(); $this->member_jobs = MemberJobPeer::doSelect($c); foreach ($this->member_jobs as $member_job) { $c = new Criteria(); $c->add(MemberJobPeer::PARENT, $member_job->getId()); $c->add(MemberJobPeer::DISPLAY_MENU, true); $member_job->child = MemberJobPeer::doCount($c); $c = new Criteria(); $c->add(MemberAclPeer::MEMBER_TYPE_ID, $this->member_type->getId(), Criteria::EQUAL); $c->add(MemberAclPeer::MEMBER_JOB_ID, $member_job->getId(), Criteria::EQUAL); $member_job->member_acl = MemberAclPeer::doSelectOne($c); $member_job->level = $member_job->getLevel(); $member_job->order = $member_job->getMenuOrderRecursive(); } function sortOrder($a, $b) { if ($a->order == $b->order) { return 0; } return $a->order < $b->order ? -1 : 1; } usort($this->member_jobs, 'sortOrder'); $this->actions = $actions; }
public static function retrieveByPK($member_type_id, $member_job_id, $con = null) { if ($con === null) { $con = Propel::getConnection(self::DATABASE_NAME); } $criteria = new Criteria(); $criteria->add(MemberAclPeer::MEMBER_TYPE_ID, $member_type_id); $criteria->add(MemberAclPeer::MEMBER_JOB_ID, $member_job_id); $v = MemberAclPeer::doSelect($criteria, $con); return !empty($v) ? $v[0] : null; }
public function getMemberAclsJoinMemberType($criteria = null, $con = null) { include_once 'lib/model/om/BaseMemberAclPeer.php'; if ($criteria === null) { $criteria = new Criteria(); } elseif ($criteria instanceof Criteria) { $criteria = clone $criteria; } if ($this->collMemberAcls === null) { if ($this->isNew()) { $this->collMemberAcls = array(); } else { $criteria->add(MemberAclPeer::MEMBER_JOB_ID, $this->getId()); $this->collMemberAcls = MemberAclPeer::doSelectJoinMemberType($criteria, $con); } } else { $criteria->add(MemberAclPeer::MEMBER_JOB_ID, $this->getId()); if (!isset($this->lastMemberAclCriteria) || !$this->lastMemberAclCriteria->equals($criteria)) { $this->collMemberAcls = MemberAclPeer::doSelectJoinMemberType($criteria, $con); } } $this->lastMemberAclCriteria = $criteria; return $this->collMemberAcls; }
public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME) { $keys = MemberAclPeer::getFieldNames($keyType); if (array_key_exists($keys[0], $arr)) { $this->setMemberTypeId($arr[$keys[0]]); } if (array_key_exists($keys[1], $arr)) { $this->setMemberJobId($arr[$keys[1]]); } if (array_key_exists($keys[2], $arr)) { $this->setAddPriv($arr[$keys[2]]); } if (array_key_exists($keys[3], $arr)) { $this->setEditPriv($arr[$keys[3]]); } if (array_key_exists($keys[4], $arr)) { $this->setRemovePriv($arr[$keys[4]]); } }
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(); } } }