function get_collection_uri(moojon_base_model $model) { $route = get_collection_rest_route($model); $parent_resource = ''; $pattern = $route->get_pattern(); if ($resource = moojon_uri::get_or_null('resource')) { $resource = moojon_inflect::singularize($resource); $resource_model = new $resource(); $table = $model->get_table(); $class = $model->get_class(); if ($resource_model->has_has_many_relationship($table) || $resource_model->has_has_many_to_many_relationship($table)) { $parent_resource = moojon_uri::get_uri() . '/'; } else { if ($resource == $class) { $parent_resource = moojon_uri::get_uri(); $parent_resource_id = substr($parent_resource, strrpos($parent_resource, '/') + 1); if ($parent_resource_id == $table) { $parent_resource_id = ''; } $parent_resource = substr($parent_resource, 0, strrpos($parent_resource, '/')); if ($parent_resource) { $pattern = ''; } if ($resource_model->is_belongs_to_relationship_column(moojon_primary_key::get_foreign_key($class))) { $slash = $parent_resource_id ? '/' : ''; $pattern .= "{$slash}{$parent_resource_id}/{$table}"; } } else { if ($resource_model->has_relationship($class)) { $belongs_to_relationship = $resource_model->get_relationship($class); if (get_class($belongs_to_relationship) == 'moojon_belongs_to_relationship') { $parent_resource = moojon_uri::get_uri() . '/'; } } } } } return moojon_config::get('index_file') . $parent_resource . $pattern . '/'; }
function has_one_tag(moojon_model_collection $models = null, moojon_base_model $model, moojon_base_column $column, moojon_base_relationship $relationship, $attributes = array()) { $return = null; $name = $column->get_name(); $attributes = try_set_name_and_id_attributes($attributes, $model, $column); if ($value = moojon_request::get_or_null($name)) { $attributes['value'] = $value; $return = div_tag(array(hidden_input_tag($attributes), redirection_tag(moojon_server::redirection()))); } else { $foreign_key = $relationship->get_foreign_key(); $key = $relationship->get_key(); $relationship_name = $relationship->get_class($model); $relationship = new $relationship_name(); $models = $models ? $models : $relationship->read(); $options = array(); if ($column->get_null()) { $options['Please select...'] = 0; } foreach ($models as $option) { $options[(string) $option] = $option->{$key}; } $selected = $model->{$name} ? $model->{$name} : moojon_uri::get_or_null($foreign_key); $return = select_options($options, $selected, $attributes); } return $return; }