loginSSO(); * * @author chrisguindon */ class CommitterPaperwork extends EclipseUSSBlob { private $data = array(); /** * Class constructor */ function __construct(App $App = NULL) { parent::__construct($App); } /** * Create committer_paperwork record (POST) * * @param string $username * @param array $data */ public function createCommitterPaperwork($username = NULL, $data = array()) { return $this->post('foundation/paperwork/' . $username, json_encode($data)); } /** * Delete CommitterPaperwork (DELETE) * * @param string $username * @param unknown $id */ public function deleteCommitterPaperwork($username = "", $id = "", $etag = "") { $response = $this->delete('foundation/paperwork/' . $username . '/' . $id); $this->unsetHeader('If-Match'); return $response; } /** * Retrieve committer_paperwork (GET) * * @param string $username * @param string $id */ public function retrieveCommitterPaperwork($username = "", $id = "", $etag = "") { if (!empty($etag)) { $this->setHeader(array( 'If-Match' => $etag )); } $response = $this->get('foundation/paperwork/' . $username . '/' . $id); if (isset($response->code) && $response->code == 200) { $data = json_decode($response->body); $this->data[$data->id] = $data; } $this->unsetHeader('If-Match'); return $response; } /** * Update committer paperwork record * @param unknown $username * @param unknown $id * @param array $data * @param string $etag */ public function updateCommitterPaperwork($username = NULL, $id = NULL, $data = array(), $etag = "") { $this->setHeader(array( 'If-Match' => '"' . $etag . '"', )); $response = $this->put('foundation/paperwork/' . $username . '/' . $id, json_encode($data)); $this->unsetHeader('If-Match'); return $response; } /** * Fetch commiter Paperwork index * * @param unknown $username * @param array $params * * @return array */ public function indexCommitterPaperwork($username = NULL, $params = array()) { $url = 'foundation/paperwork'; if (!is_null($username) && is_string($username)) { $url .= '/' . $username; } $query = http_build_query($params); $response = $this->get($url . '?' . $query); return $response; } /** * Fetch all Committer Paperwork index * * @param unknown $username * @param array $params * * @return array */ public function indexAllCommitterPaperwork($username = NULL, $params = array()) { $data = $this->indexCommitterPaperwork($username, $params); $return = array(); $return[] = $data; if (!isset($data->error) && !empty($data->body) && $data) { while ($data = $this->_getNextPage($data)) { $return[] = $data; } } return $return; } /** * Start the committer provisioning process. (GET) * * @param string $username * @param int $id */ public function targetedActionStartProvisioning($username = NULL, $id = "", $body = array()) { return $this->post('foundation/paperwork/' . $username . '/provisioning/' . $id, json_encode($body)); } /** * Retire a committer from a specific project. (GET) * * @param string $username * @param int $id */ public function targetedActionRetireCommitter($username = NULL, $body = array()) { return $this->post('foundation/paperwork/' . $username . '/retire', json_encode($body)); } /** * Validate a username * * @param string $username * * @return bool */ function validateCommitterPaperworkUsername($username) { if (empty($username) || !is_string($username)) { return FALSE; } // Validate that the username is in LDAP require_once("/home/data/httpd/eclipse-php-classes/system/ldapconnection.class.php"); $LDAPConnection = new LDAPConnection(); $dn = $LDAPConnection->getDNFromUID($username); if (empty($dn)) { return FALSE; } return TRUE; } /** * Validate an id * * @param string $id * * @return bool */ function validateCommitterPaperworkId($id) { $id = filter_var($id, FILTER_VALIDATE_INT); if (empty($id) && !is_int($id) && $id !== 0) { return FALSE; } return TRUE; } /** * Validate an etag * * @param string $etag * * @return bool */ function validateCommitterPaperworkEtag($etag) { if (empty($etag) || !is_string($etag)) { return FALSE; } return TRUE; } /** * Validate a page number * * @param int $page * * @return bool */ function validateCommitterPaperworkPage($page) { if (!is_int($page)) { return FALSE; } return TRUE; } /** * Validate a pagesize * * @param string $pagesize * * @return bool */ function validateCommitterPaperworkPagesize($pagesize) { if (!is_int($pagesize) || $pagesize > 100) { return FALSE; } return $pagesize; } /** * Validate fields * * @param array $data * * @return bool */ function validateCommitterPaperworkFields($data = array()) { // If there are no parameters passed this is still valid // but we can quit here if (empty($data) || !isset($data['parameters'])) { return TRUE; } $float_fields = array( 'id', 'election_nid', 'election_status', 'committer_paperwork_nid', 'committer_paperwork_status', 'spec_project_working_group' ); $string_fields = array( 'project_id', 'forge', ); foreach ($data['parameters'] as $data_field_name => $field_value) { // Verify the the field name exist in the float and string fields if (!in_array($data_field_name, $float_fields) && !in_array($data_field_name, $string_fields)) { return FALSE; } foreach ($float_fields as $float_field_name) { // If the default field name exist in the data array, // Make sure it validates with the appropriate filter if (isset($data[$float_field_name]) && filter_var($data[$float_field_name], FILTER_VALIDATE_FLOAT) === FALSE) { return FALSE; } } // Making sure we are dealing with strings foreach ($string_fields as $string_field_name) { if (isset($data[$string_field_name]) && !is_string($data[$string_field_name])) { return FALSE; } } } return TRUE; } }