/**
  * Fetch the project from LDAP and initialize the object
  * @return void
  */
 function fetchProjectInfo()
 {
     global $wgAuth;
     global $wgOpenStackManagerLDAPProjectBaseDN;
     $result = LdapAuthenticationPlugin::ldap_search($wgAuth->ldapconn, $wgOpenStackManagerLDAPProjectBaseDN, '(&(cn=' . $this->projectname . ')(owner=*))');
     $this->projectInfo = LdapAuthenticationPlugin::ldap_get_entries($wgAuth->ldapconn, $result);
     $this->projectDN = $this->projectInfo[0]['dn'];
     $this->roles = array();
     foreach (self::$rolenames as $rolename) {
         $this->roles[] = OpenStackNovaRole::getProjectRoleByName($rolename, $this);
     }
 }
 /**
  * Fetch the project from LDAP and initialize the object
  * @return void
  */
 function fetchProjectInfo($refresh = true)
 {
     global $wgAuth;
     global $wgOpenStackManagerLDAPProjectBaseDN;
     if ($this->loaded and !$refresh) {
         return;
     }
     $result = LdapAuthenticationPlugin::ldap_search($wgAuth->ldapconn, $wgOpenStackManagerLDAPProjectBaseDN, '(&(cn=' . $this->projectname . ')(objectclass=groupofnames))');
     $this->projectInfo = LdapAuthenticationPlugin::ldap_get_entries($wgAuth->ldapconn, $result);
     if ($this->projectInfo['count'] === 0) {
         return;
     }
     $this->projectDN = $this->projectInfo[0]['dn'];
     $this->roles = array();
     foreach (self::$rolenames as $rolename) {
         $this->roles[] = OpenStackNovaRole::getProjectRoleByName($rolename, $this);
     }
     // fetch the associated posix project group (project-$projectname)
     $this->fetchProjectGroup();
     $this->fetchServiceGroups();
     $this->loaded = true;
 }
	/**
	 * @param  $formData
	 * @param string $entryPoint
	 * @return bool
	 */
	function tryDeleteMemberSubmit( $formData, $entryPoint = 'internal' ) {
		$projectname = $formData['projectname'];
		if ( $projectname ) {
			$project = OpenStackNovaProject::getProjectByName( $projectname );
			if ( ! $project ) {
				$this->getOutput()->addWikiMsg( 'openstackmanager-nonexistentproject' );
				return true;
			}
			$role = OpenStackNovaRole::getProjectRoleByName( $formData['rolename'], $project );
		} else {
			$role = OpenStackNovaRole::getGlobalRoleByName( $formData['rolename'] );
		}
		if ( ! $role ) {
			$this->getOutput()->addWikiMsg( 'openstackmanager-nonexistentrole' );
			return true;
		}
		foreach ( $formData['members'] as $member ) {
			$success = $role->deleteMember( $member );
			if ( $success ) {
				$this->getOutput()->addWikiMsg( 'openstackmanager-removedfrom', $member, $formData['rolename'] );
			} else {
				$this->getOutput()->addWikiMsg( 'openstackmanager-failedtoremove', $member, $formData['rolename'] );
			}
		}

		$out = '<br />';
		$returnto = Title::newFromText( $formData['returnto'] );
		$out .= Linker::link( $returnto, wfMsgHtml( 'openstackmanager-backprojectlist' ) );
		$this->getOutput()->addHTML( $out );

		return true;
	}