Remove Afform.{get,create} support from APIv3
authorTim Otten <totten@civicrm.org>
Thu, 7 Feb 2019 22:24:39 +0000 (17:24 -0500)
committerCiviCRM <info@civicrm.org>
Wed, 16 Sep 2020 02:13:17 +0000 (19:13 -0700)
ext/afform/api/v3/Afform/Create.php [deleted file]
ext/afform/api/v3/Afform/Get.php [deleted file]
ext/afform/api/v3/Afform/Revert.php [deleted file]
ext/afform/tests/phpunit/api/v3/AfformTest.php [deleted file]

diff --git a/ext/afform/api/v3/Afform/Create.php b/ext/afform/api/v3/Afform/Create.php
deleted file mode 100644 (file)
index 4a73c29..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-use CRM_Afform_ExtensionUtil as E;
-
-/**
- * Afform.Create API specification (optional)
- * This is used for documentation and validation.
- *
- * @param array $spec description of fields supported by this API call
- * @return void
- * @see http://wiki.civicrm.org/confluence/display/CRMDOC/API+Architecture+Standards
- */
-function _civicrm_api3_afform_create_spec(&$spec) {
-  require_once __DIR__ . DIRECTORY_SEPARATOR . 'Get.php';
-  _civicrm_api3_afform_get_spec($spec);
-}
-
-/**
- * Afform.Create API
- *
- * @param array $params
- * @return array API result descriptor
- * @see civicrm_api3_create_success
- * @see civicrm_api3_create_error
- * @throws API_Exception
- */
-function civicrm_api3_afform_create($params) {
-  $scanner = Civi::service('afform_scanner');
-  $converter = new CRM_Afform_ArrayHtml();
-
-  if (empty($params['name']) || !preg_match('/^[a-zA-Z][a-zA-Z0-9\-]*$/', $params['name'])) {
-    throw new \API_Exception("Afform.create: name is a mandatory field. It should use alphanumerics and dashes.");
-  }
-  $name = $params['name'];
-
-  // FIXME validate all field data.
-  $updates = _afform_fields_filter($params);
-
-  // Create or update layout.html.
-  if (isset($updates['layout'])) {
-    $layoutPath = $scanner->createSiteLocalPath($name, 'layout.html');
-    // printf("[%s] Update layout %s\n", $name, $layoutPath);
-    CRM_Utils_File::createDir(dirname($layoutPath));
-    file_put_contents($layoutPath, $converter->convertArrayToHtml($updates['layout']));
-    // FIXME check for writability then success. Report errors.
-  }
-
-  // Create or update meta.json.
-  $orig = civicrm_api3('afform', 'get', ['name' => $name, 'sequential' => 1]);
-  if (isset($orig['values'][0])) {
-    $meta = _afform_fields_filter(array_merge($orig['values'][0], $updates));
-  }
-  else {
-    $meta = $updates;
-  }
-  unset($meta['layout']);
-  unset($meta['name']);
-  if (!empty($meta)) {
-    $metaPath = $scanner->createSiteLocalPath($name, CRM_Afform_AfformScanner::METADATA_FILE);
-    // printf("[%s] Update meta %s: %s\n", $name, $metaPath, print_R(['updates'=>$updates, 'meta'=>$meta], 1));
-    CRM_Utils_File::createDir(dirname($metaPath));
-    file_put_contents($metaPath, json_encode($meta, JSON_PRETTY_PRINT));
-    // FIXME check for writability then success. Report errors.
-  }
-
-  // We may have changed list of files covered by the cache.
-  $scanner->clear();
-
-  // FIXME if `server_route` changes, then flush the menu cache.
-  // FIXME if asset-caching is enabled, then flush the asset cache.
-
-  return civicrm_api3_create_success($updates, $params, 'Afform', 'create');
-}
diff --git a/ext/afform/api/v3/Afform/Get.php b/ext/afform/api/v3/Afform/Get.php
deleted file mode 100644 (file)
index bba1b89..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-use CRM_Afform_ExtensionUtil as E;
-
-/**
- * Afform.Get API specification (optional)
- * This is used for documentation and validation.
- *
- * @param array $spec description of fields supported by this API call
- * @return void
- * @see http://wiki.civicrm.org/confluence/display/CRMDOC/API+Architecture+Standards
- */
-function _civicrm_api3_afform_get_spec(&$spec) {
-  $spec['name'] = array(
-    'name' => 'name',
-    'type' => CRM_Utils_Type::T_STRING,
-    'title' => ts('Form name'),
-    'description' => 'Form name',
-    'maxlength' => 128,
-    'size' => CRM_Utils_Type::HUGE,
-  );
-  $spec['description'] = array(
-    'name' => 'description',
-    'type' => CRM_Utils_Type::T_TEXT,
-    'title' => ts('Description'),
-    'description' => 'Description',
-  );
-  $spec['is_public'] = array(
-    'name' => 'is_public',
-    'type' => CRM_Utils_Type::T_BOOLEAN,
-    'title' => ts('Is public'),
-    'description' => 'Display with public theming?',
-  );
-
-  // FIXME: title, requires, layout, server_route, client_route
-}
-
-/**
- * Afform.Get API
- *
- * @param array $params
- * @return array API result descriptor
- * @see civicrm_api3_create_success
- * @see civicrm_api3_create_error
- * @throws API_Exception
- */
-function civicrm_api3_afform_get($params) {
-  $scanner = Civi::service('afform_scanner');
-  $converter = new CRM_Afform_ArrayHtml();
-  $records = [];
-
-  if (isset($params['name']) && is_string($params['name'])) {
-    $names = [$params['name']];
-  }
-  else {
-    $names = array_keys($scanner->findFilePaths());
-  }
-
-  foreach ($names as $name) {
-    $record = $scanner->getMeta($name);
-    $layout = $scanner->findFilePath($name, 'layout.html');
-    if ($layout) {
-      // FIXME check for file existence+substance+validity
-      $record['layout'] = $converter->convertHtmlToArray(file_get_contents($layout));
-    }
-    $records[$name] = $record;
-  }
-
-  return _civicrm_api3_basic_array_get('Afform', $params, $records, 'name', _afform_fields());
-}
diff --git a/ext/afform/api/v3/Afform/Revert.php b/ext/afform/api/v3/Afform/Revert.php
deleted file mode 100644 (file)
index bb5fb2c..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-use CRM_Afform_ExtensionUtil as E;
-
-/**
- * Afform.Revert API specification (optional)
- * This is used for documentation and validation.
- *
- * @param array $spec description of fields supported by this API call
- * @return void
- * @see http://wiki.civicrm.org/confluence/display/CRMDOC/API+Architecture+Standards
- */
-function _civicrm_api3_afform_revert_spec(&$spec) {
-  require_once __DIR__ . DIRECTORY_SEPARATOR . 'Get.php';
-  $getSpec = [];
-  _civicrm_api3_afform_get_spec($getSpec);
-  $spec['name'] = $getSpec['name'];
-}
-
-/**
- * Afform.Revert API
- *
- * @param array $params
- * @return array API result descriptor
- * @see civicrm_api3_revert_success
- * @see civicrm_api3_revert_error
- * @throws API_Exception
- */
-function civicrm_api3_afform_revert($params) {
-  $scanner = Civi::service('afform_scanner');
-
-  if (empty($params['name']) || !preg_match('/^[a-zA-Z][a-zA-Z0-9\-]*$/', $params['name'])) {
-    throw new \API_Exception("Afform.revert: name is a mandatory field. It should use alphanumerics and dashes.");
-  }
-  $name = $params['name'];
-
-  foreach ([CRM_Afform_AfformScanner::METADATA_FILE, 'layout.html'] as $file) {
-    $metaPath = $scanner->createSiteLocalPath($name, $file);
-    if (file_exists($metaPath)) {
-      if (!@unlink($metaPath)) {
-        throw new API_Exception("Failed to remove afform overrides in $file");
-      }
-    }
-  }
-
-  // We may have changed list of files covered by the cache.
-  $scanner->clear();
-
-  // FIXME if `server_route` changes, then flush the menu cache.
-  // FIXME if asset-caching is enabled, then flush the asset cache.
-
-  return civicrm_api3_create_success(1, $params, 'Afform', 'revert');
-}
diff --git a/ext/afform/tests/phpunit/api/v3/AfformTest.php b/ext/afform/tests/phpunit/api/v3/AfformTest.php
deleted file mode 100644 (file)
index 0c639f8..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-
-use Civi\Test\HeadlessInterface;
-use Civi\Test\HookInterface;
-use Civi\Test\TransactionalInterface;
-
-/**
- * Afform.Get API Test Case
- * This is a generic test class implemented with PHPUnit.
- * @group headless
- */
-class api_v3_AfformTest extends \PHPUnit_Framework_TestCase implements HeadlessInterface, HookInterface, TransactionalInterface {
-
-  use \Civi\Test\Api3TestTrait;
-
-  /**
-   * Civi\Test has many helpers, like install(), uninstall(), sql(), and sqlFile().
-   * See: https://github.com/civicrm/org.civicrm.testapalooza/blob/master/civi-test.md
-   */
-  public function setUpHeadless() {
-    return \Civi\Test::headless()
-      ->installMe(__DIR__)
-      ->apply();
-  }
-
-  /**
-   * The setup() method is executed before the test is executed (optional).
-   */
-  public function setUp() {
-    parent::setUp();
-  }
-
-  /**
-   * The tearDown() method is executed after the test was executed (optional)
-   * This can be used for cleanup.
-   */
-  public function tearDown() {
-    parent::tearDown();
-  }
-
-  /**
-   * This takes the bundled `examplepage` and performs some API calls on it.
-   */
-  public function testGetUpdateRevert() {
-    $this->callAPISuccess('Afform', 'revert', ['name' => 'examplepage']);
-
-    $message = 'The initial Afform.get should return default data';
-    $result = $this->callAPISuccess('Afform', 'get', ['name' => 'examplepage']);
-    $this->assertEquals('examplepage', $result['values']['examplepage']['id'], $message);
-    $this->assertEquals('examplepage', $result['values']['examplepage']['name'], $message);
-    $this->assertEquals('', $result['values']['examplepage']['title'], $message);
-    $this->assertEquals('', $result['values']['examplepage']['description'], $message);
-    $this->assertEquals('civicrm/example-page', $result['values']['examplepage']['server_route'], $message);
-    $this->assertTrue(is_array($result['values']['examplepage']['layout']), $message);
-
-    $message = 'After updating with Afform.create, the revised data should be returned';
-    $result = $this->callAPISuccess('Afform', 'create', [
-      'name' => 'examplepage',
-      'description' => 'The temporary description',
-    ]);
-    $this->assertEquals('examplepage', $result['values']['name'], $message);
-    $this->assertEquals('The temporary description', $result['values']['description'], $message);
-
-    $message = 'After updating, the Afform.get API should return blended data';
-    $result = $this->callAPISuccess('Afform', 'get', ['name' => 'examplepage']);
-    $this->assertEquals('examplepage', $result['values']['examplepage']['id'], $message);
-    $this->assertEquals('examplepage', $result['values']['examplepage']['name'], $message);
-    $this->assertEquals('', $result['values']['examplepage']['title'], $message);
-    $this->assertEquals('The temporary description', $result['values']['examplepage']['description'], $message);
-    $this->assertEquals('civicrm/example-page', $result['values']['examplepage']['server_route'], $message);
-    $this->assertTrue(is_array($result['values']['examplepage']['layout']), $message);
-
-    $this->callAPISuccess('Afform', 'revert', ['name' => 'examplepage']);
-    $message = 'After reverting, te final Afform.get should return default data';
-    $result = $this->callAPISuccess('Afform', 'get', ['name' => 'examplepage']);
-    $this->assertEquals('examplepage', $result['values']['examplepage']['id'], $message);
-    $this->assertEquals('examplepage', $result['values']['examplepage']['name'], $message);
-    $this->assertEquals('', $result['values']['examplepage']['title'], $message);
-    $this->assertEquals('', $result['values']['examplepage']['description'], $message);
-    $this->assertEquals('civicrm/example-page', $result['values']['examplepage']['server_route'], $message);
-    $this->assertTrue(is_array($result['values']['examplepage']['layout']), $message);
-  }
-
-}