<?php
/**
 * @file
 * Provides an application programming interface (API) to manage projects
 */

/**
 * @defgroup tripal_project_api Project Module API
 * @ingroup tripal_api
 */

/**
 * Retrieve properties of a given type for a given project
 *
 * @param $project_id
 *    The project_id of the properties you would like to retrieve
 * @param $property
 *    The cvterm name of the properties to retrieve
 *
 * @return
 *    An project chado variable with the specified properties expanded
 *
 * @ingroup tripal_project_api
 */
function tripal_project_get_property($project_id, $property) {
  return tripal_core_get_property('project', $project_id, $property, 'tripal');
}

/**
 * Insert a given property
 *
 * @param $project_id
 *   The project_id of the property to insert
 * @param $property
 *   The cvterm name of the property to insert
 * @param $value
 *   The value of the property to insert
 * @param $update_if_present
 *   A boolean indicated whether to update the record if it's already present
 *
 * @return
 *   True of success, False otherwise
 *
 * @ingroup tripal_project_api
 */
function tripal_project_insert_property($project_id, $property, $value, $update_if_present = 0) {
  return tripal_core_insert_property('project', $project_id, $property, 'tripal', $value, $update_if_present);
}

/**
 * Update a given property
 *
 * @param $project_id
 *   The project_id of the property to update
 * @param $property
 *   The cvterm name of the property to update
 * @param $value
 *   The value of the property to update
 * @param $insert_if_missing
 *   A boolean indicated whether to insert the record if it's absent
 *
 * Note: The property will be identified using the unique combination of the $project_id and $property
 * and then it will be updated with the supplied value
 *
 * @return
 *   True of success, False otherwise
 *
 * @ingroup tripal_project_api
 */
function tripal_project_update_property($project_id, $property, $value, $insert_if_missing = 0) {
  return tripal_core_update_property('project', $project_id, $property, 'tripal', $value, $insert_if_missing);
}
/**
 * Delete a given property
 *
 * @param $project_id
 *   The project_id of the property to delete
 * @param $property
 *   The cvterm name of the property to delete
 *
 * Note: The property will be identified using the unique combination of the $project_id and $property
 * and then it will be deleted
 *
 * @return
 *   True of success, False otherwise
 *
 * @ingroup tripal_project_api
 */
function tripal_project_delete_property($project_id, $property) {
  return tripal_core_delete_property('project', $project_id, $property, 'tripal');
}