Skip to content

Commit

Permalink
fixed reply-nickname, fixed uploads
Browse files Browse the repository at this point in the history
  • Loading branch information
voitto committed Apr 12, 2009
1 parent f71bce9 commit d46602c
Show file tree
Hide file tree
Showing 3 changed files with 99 additions and 74 deletions.
55 changes: 35 additions & 20 deletions app/omb/controllers/posts.php
Original file line number Diff line number Diff line change
@@ -1,22 +1,7 @@
<?php


after_filter( 'append_url_for_blobs', 'insert_from_post' );

function append_url_for_blobs( &$model, &$rec ) {
global $request;
if ((is_upload('posts','attachment'))) {
$post = $model->find($request->id);
if ($post) {
$url = $request->url_for(array(
'resource'=>'posts',
'id'=>$post->id
));
$post->set_value('title',substr(substr($post->title,0,140),0,-(strlen($url)+1))." ".$url);
$post->save_changes();
}
}
}

function get( &$vars ) {
extract( $vars );
Expand All @@ -32,11 +17,41 @@ function get( &$vars ) {

function post( &$vars ) {
extract( $vars );

$resource->insert_from_post( $request );



trigger_before( 'insert_from_post', $Post, $request );
$table = 'posts';
$content_type = 'text/html';
$rec = $Post->base();
if (!($Post->can_create( $table )))
trigger_error( "Sorry, you do not have permission to " . $request->action . " " . $table, E_USER_ERROR );
$fields = $Post->fields_from_request($request);
$fieldlist = $fields['posts'];
foreach ( $fieldlist as $field=>$type ) {
if ($Post->has_metadata && is_blob($table.'.'.$field)) {
if (isset($_FILES[strtolower(classify($table))]['name'][$field]))
$content_type = type_of( $_FILES[strtolower(classify($table))]['name'][$field] );
}
$rec->set_value( $field, $request->params[strtolower(classify($table))][$field] );
}
$rec->set_value('profile_id',get_profile_id());
$result = $rec->save_changes();
if ( !$result )
trigger_error( "The record could not be saved into the database.", E_USER_ERROR );
$Post->set_metadata($rec,$content_type,$table,'id');
$Post->set_categories($rec,$request);
if ((is_upload('posts','attachment'))) {
$url = $request->url_for(array(
'resource'=>'posts',
'id'=>$rec->id
));
$title = substr($rec->title,0,140);
$over = ((strlen($title) + strlen($url) + 1) - 140);
if ($over > 0)
$rec->set_value('title',substr($title,0,-$over)." ".$url);
else
$rec->set_value('title',$title." ".$url);
$rec->save_changes();
}
trigger_after( 'insert_from_post', $Post, $rec );
header_status( '201 Created' );
redirect_to( $request->base );
}
Expand Down
2 changes: 1 addition & 1 deletion app/omb/plugins/wp.php
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ function get_var($query=null, $x = 0, $y = 0) {
if ( $this->last_result[$y] ) {
$values = array_values(get_object_vars($this->last_result[$y]));
} else {
echo "<BR><BR>QUERY FAILED -- ".$query."<BR><BR>";
//echo "<BR><BR>QUERY FAILED -- ".$query."<BR><BR>";
}
return (isset($values[$x]) && $values[$x]!=='') ? $values[$x] : null;
}
Expand Down
116 changes: 63 additions & 53 deletions db/library/dbscript/model.php
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,7 @@ function insert_from_post( &$req ) {
trigger_before( 'insert_from_post', $this, $req );

global $db;

$fields = $this->fields_from_request($req);

foreach ($fields as $table=>$fieldlist) {
Expand Down Expand Up @@ -206,72 +207,81 @@ function insert_from_post( &$req ) {
}
}


$result = $rec->save_changes();

if ( !$result )
trigger_error( "The record could not be saved into the database.", E_USER_ERROR );

if ( $this->has_metadata ) {
$atomentry = $db->models['entries']->base();
if ($atomentry) {
$atomentry->set_value( 'etag', getEtag( $rec->$pkfield ) );
$atomentry->set_value( 'resource', $table );
$atomentry->set_value( 'record_id', $rec->$pkfield );

$atomentry->set_value( 'content_type', $content_type );

$atomentry->set_value( 'last_modified', timestamp() );
$atomentry->set_value( 'person_id', get_person_id() );
$aresult = $atomentry->save_changes();
if ($aresult) {
if ( array_key_exists( 'entry_id', $rec->attributes ))
$rec->set_value( 'entry_id', $atomentry->id );
if ( array_key_exists( 'person_id', $rec->attributes ))
$rec->set_value( 'person_id', get_person_id() );
$rec->save_changes();
}
}
if (($rec->table == $this->table) && isset($rec->id)) {
$req->set_param( 'id', $rec->id );
$req->id = $rec->id;
$Category =& $db->model('Category');
$Entry =& $db->model('Entry');
foreach($req->params as $cname=>$catval) {
if (substr($cname,0,8) == 'category') {
$added = array();
if (!in_array($req->$cname, $added)) {
$join =& $db->get_table($Entry->join_table_for('categories', 'entries'));
$j = $join->base();
$j->set_value('entry_id',$atomentry->id);
$c = $Category->find_by('term',$req->$cname);
if ($c) {
$j->set_value('category_id',$c->id);
$j->save_changes();
$added[] = $req->$cname;
} elseif (!empty($req->$cname)) {
if (isset_admin_email()) {
$c = $Category->base();
$c->set_value( 'name', $req->$cname);
$c->set_value( 'term', strtolower($req->$cname));
$c->save();
$j->set_value('category_id',$c->id);
$j->save_changes();
$added[] = $req->$cname;
admin_alert( "created a new category: ".$req->$cname." at ".$req->base );
}
}
}
}
}
}
$this->set_metadata($rec,$content_type,$table);
}

if (($rec->table == $this->table) && isset($rec->id)) {
$this->set_categories($rec,$req);
}

}

trigger_after( 'insert_from_post', $this, $rec );

}

function set_metadata(&$rec,$content_type,$table,$pkfield) {
global $db;
$atomentry = $db->models['entries']->base();
if ($atomentry) {
$atomentry->set_value( 'etag', getEtag( $rec->$pkfield ) );
$atomentry->set_value( 'resource', $table );
$atomentry->set_value( 'record_id', $rec->$pkfield );
$atomentry->set_value( 'content_type', $content_type );
$atomentry->set_value( 'last_modified', timestamp() );
$atomentry->set_value( 'person_id', get_person_id() );
$aresult = $atomentry->save_changes();
if ($aresult) {
if ( array_key_exists( 'entry_id', $rec->attributes ))
$rec->set_value( 'entry_id', $atomentry->id );
if ( array_key_exists( 'person_id', $rec->attributes ))
$rec->set_value( 'person_id', get_person_id() );
$rec->save_changes();
}
}
}

function set_categories(&$rec,&$req) {
global $db;
$req->set_param( 'id', $rec->id );
$req->id = $rec->id;
$Category =& $db->model('Category');
$Entry =& $db->model('Entry');
foreach($req->params as $cname=>$catval) {
if (substr($cname,0,8) == 'category') {
$added = array();
if (!in_array($req->$cname, $added)) {
$join =& $db->get_table($Entry->join_table_for('categories', 'entries'));
$j = $join->base();
$j->set_value('entry_id',$atomentry->id);
$c = $Category->find_by('term',$req->$cname);
if ($c) {
$j->set_value('category_id',$c->id);
$j->save_changes();
$added[] = $req->$cname;
} elseif (!empty($req->$cname)) {
if (isset_admin_email()) {
$c = $Category->base();
$c->set_value( 'name', $req->$cname);
$c->set_value( 'term', strtolower($req->$cname));
$c->save();
$j->set_value('category_id',$c->id);
$j->save_changes();
$added[] = $req->$cname;
admin_alert( "created a new category: ".$req->$cname." at ".$req->base );
}
}
}
}
}
}

function update_from_post( &$req ) {

trigger_before( 'update_from_post', $this, $req );
Expand Down

0 comments on commit d46602c

Please sign in to comment.