예제 #1
0
 /**
  * event to set the plugin permissions
  * @param object $evctl
  * @return string
  */
 public function eventUpdatePluginPermission(EventControler $evctl)
 {
     $do_plugin_permission = new CRMPluginPermission();
     $plugin_name = $evctl->plugin_name;
     $all_users = $evctl->all_users;
     $by_roles = $evctl->by_roles;
     $by_users = $evctl->by_users;
     $permission_type = 0;
     $attribute = array();
     if ($by_roles == 'on') {
         $attribute = $evctl->roles_data;
         $permission_type = 2;
     } elseif ($by_users == 'on') {
         $attribute = $evctl->users_data;
         $permission_type = 3;
     } else {
         $permission_type = 1;
     }
     $err = '';
     if ($all_users != 'on' || $by_roles != 'on' || $by_users != 'on') {
         $err = _('Please check one permission option before saving');
     } elseif (($by_roles == 'on' || $by_users == 'on') && count($attribute) > 0) {
         $err = _('Please select some permission attributes before saving');
     }
     if ($err != '') {
         $permission = $do_plugin_permission->get_plugins_permission($plugin_name);
         if (false === $permission) {
             $do_plugin_permission = new CRMPluginPermission();
             $do_plugin_permission->addNew();
             $do_plugin_permission->name = $plugin_name;
             $do_plugin_permission->type = $permission_type;
             $do_plugin_permission->add();
             $idplugins_permissions = $do_plugin_permission->getInsertId();
             if ($permission_type == 2 || $permission_type == 3) {
                 $do_plugin_permission->add_permission_attributes($idplugins_permissions, $permission_type, $attribute);
             }
         } else {
             $id = $permission['id'];
             // update the plugins_permissions
             $qry = "update `plugins_permissions` set type = ? where `idplugins_permissions` = ?";
             $stmt = $this->getDbConnection()->executeQuery($qry, array($permission_type, $id));
             // update the plugins_permissions_attributes
             $qry = "delete from `plugins_permissions_attributes` where `idplugins_permissions` = ?";
             $stmt = $this->getDbConnection()->executeQuery($qry, array($id));
             if ($permission_type == 2 || $permission_type == 3) {
                 $do_plugin_permission->add_permission_attributes($id, $permission_type, $attribute);
             }
         }
         echo '1';
     } else {
         echo $err;
     }
 }