gboolean midgard_core_object_has_parameters( MidgardConnection *mgd, const gchar *class_name, const gchar *guid) { g_assert(mgd != NULL); g_assert(class_name != NULL); g_assert(guid != NULL); MidgardQueryBuilder *builder = midgard_core_object_parameter_query_builder(mgd, class_name, guid); /* error is set in builder constructor */ if(!builder) return FALSE; midgard_query_builder_set_limit(builder, 1); gboolean rv = TRUE; guint i = midgard_query_builder_count(builder); if(i == 0) rv = FALSE; g_object_unref(builder); return rv; }
static PHP_METHOD(midgard_query_builder, count) { RETVAL_FALSE; MidgardConnection *mgd = mgd_handle(TSRMLS_C); CHECK_MGD(mgd); if (zend_parse_parameters_none() == FAILURE) { return; } _GET_BUILDER_OBJECT; RETURN_LONG(midgard_query_builder_count(builder)); }
/** * midgard_object_create_attachment: * @self: #MidgardObject instance * @name: name for attachment * @title: its title * @mimetype: and mimetype * * Creates object's attachment using given properties. * Any property may be explicitly set to NULL. * * Returns: newly created #MidgardObject of midgard_attachment class or %NULL on failure */ MidgardObject *midgard_object_create_attachment(MidgardObject *self, const gchar *name, const gchar *title, const gchar *mimetype) { g_return_val_if_fail(self != NULL, NULL); if(!MGD_OBJECT_GUID (self)) { g_warning("Object is not fetched from database. Empty guid"); return NULL; } guint n_params, i = 0; /* Check if there's duplicate name */ if(name != NULL && *name != '\0') { MidgardQueryBuilder *builder = midgard_query_builder_new(MGD_OBJECT_CNC (self), "midgard_attachment"); if(!builder) return NULL; GValue pval = {0, }; g_value_init(&pval, G_TYPE_STRING); g_value_set_string(&pval, MGD_OBJECT_GUID (self)); midgard_query_builder_add_constraint(builder, "parentguid", "=", &pval); g_value_unset(&pval); g_value_init(&pval, G_TYPE_STRING); g_value_set_string(&pval, name); midgard_query_builder_add_constraint(builder, "name", "=", &pval); g_value_unset(&pval); i = midgard_query_builder_count(builder); g_object_unref(builder); if(i > 0) { MIDGARD_ERRNO_SET(MGD_OBJECT_CNC (self), MGD_ERR_OBJECT_NAME_EXISTS); return NULL; } } /* create parameters */ i = 0; if(name) i++; if(title) i++; if(mimetype) i++; n_params = i; GValue nval = {0, }; GValue tval = {0, }; GValue mval = {0, }; GParameter *parameters = NULL; /* TODO, implement parameters from va_list function if needed */ if(i > 0) { parameters = g_new0(GParameter, i); if(name) { i--; parameters[i].name = "name"; g_value_init(&nval, G_TYPE_STRING); g_value_set_string(&nval, name); parameters[i].value = nval; } if(title) { i--; parameters[i].name = "title"; g_value_init(&tval, G_TYPE_STRING); g_value_set_string(&tval, title); parameters[i].value = tval; } if(mimetype) { i--; parameters[i].name = "mimetype"; g_value_init(&mval, G_TYPE_STRING); g_value_set_string(&mval, mimetype); parameters[i].value = mval; } } MidgardObject *att = midgard_core_object_parameters_create(MGD_OBJECT_CNC (self), "midgard_attachment", MGD_OBJECT_GUID (self), n_params, parameters); for(i = 0; i < n_params; i++) { g_value_unset(¶meters[i].value); } g_free(parameters); return att; }