/**
  *
  */
 public static function init_entity_data($artifact_name)
 {
     $entity_data = array();
     $entity_data['has_errors'] = false;
     // Get the requested artifact name
     if (EntityStringUtils::is_invalid_string($artifact_name)) {
         $entity_data['has_errors'] = true;
         $entity_data['error_message'] = 'Artifact name must be specified';
         return $entity_data;
     }
     // Check if artifact to entity name mapping exists
     if (!isset(ArtifactUtils::$artifacts[$artifact_name])) {
         $entity_data['has_errors'] = true;
         $entity_data['error_message'] = 'Artifact not found';
         return $entity_data;
     }
     // Check the type of the artifact
     $entity_data['entity_artifact_name'] = $artifact_name;
     $entity_data['entity_name'] = ArtifactUtils::$artifacts[$artifact_name]['name'];
     $entity_data['artifact_type'] = ArtifactUtils::$artifacts[$artifact_name]['artifact_type'];
     $entity_data['entity_description'] = ArtifactUtils::$artifacts[$artifact_name]['description'];
     if ($entity_data['artifact_type'] != 'entity') {
         return $entity_data;
     }
     // Use reflection to get the post name and entity fields from
     // the model class
     $entity_name = ArtifactUtils::$artifacts[$artifact_name]['name'] . 'CPT';
     $entity_class = new ReflectionClass($entity_name);
     $post_name = $entity_class->getStaticPropertyValue('post_name');
     // Check the ajax request
     $entity_data['entity_post_name'] = $post_name;
     $entity_data['entity_fields'] = $entity_class->getStaticPropertyValue('entity_fields');
     $entity_data['related_child_entities'] = $entity_class->getStaticPropertyValue('related_child_entities');
     $entity_data['is_global_entity'] = $entity_class->getStaticPropertyValue('is_global_entity');
     return $entity_data;
 }
 /**
  *
  */
 public static function build_criteria_from_form_data($entity_data)
 {
     $criteria_data = array();
     /*if(isset($_POST['bcat'])) {
           $category_data = EntityAPI::get_by_code(
               'businesscategory', array('entity_code' => strtoupper(sanitize_text_field($_POST['cat']))));
           if(isset($category_data['id']))
               $criteria_data['type.category'] = $category_data['id'];
       }*/
     // Process global search
     if (!EntityStringUtils::is_invalid_string($_POST['search']['value'])) {
         $criteria_data['is_global'] = true;
         $criteria_data['search'] = sanitize_text_field($_POST['search']['value']);
     } else {
         if (isset($_POST['columns'])) {
             $columns_data = $_POST['columns'];
             foreach ($columns_data as $column_data) {
                 $column_name = sanitize_text_field($column_data['data']);
                 if (EntityStringUtils::ends_with($column_name, '_txt')) {
                     $column_name = str_replace('_txt', '', $column_name);
                 }
                 if (array_key_exists($column_name, $entity_data['entity_fields'])) {
                     if (isset($column_data['search'])) {
                         if (!EntityStringUtils::is_invalid_string($column_data['search']['value'])) {
                             $field_value = sanitize_text_field($column_data['search']['value']);
                             $criteria_data[$column_name] = $field_value;
                         }
                     }
                 }
             }
             LogUtils::shadow_log('Doing global');
             foreach ($entity_data['entity_fields'] as $field_name => $field_data) {
                 if (isset($_POST[$field_data['name']])) {
                     LogUtils::shadow_log('Doing global1');
                     $criteria_data[$field_data['name']] = sanitize_text_field($_POST[$field_data['name']]);
                 }
             }
         } else {
             if (isset($_POST['form'])) {
                 if (isset($_POST['form'][3])) {
                     $criteria_data[$_POST['form'][3]['name']] = $_POST['form'][3]['value'];
                 }
             }
         }
     }
     return $criteria_data;
 }