Skip to content

Commit

Permalink
rsscloud, flickrphotos, facebook photos, new stream design
Browse files Browse the repository at this point in the history
  • Loading branch information
Brian Hendrickson committed Oct 17, 2009
1 parent be4ff5f commit b761f55
Show file tree
Hide file tree
Showing 13 changed files with 562 additions and 30 deletions.
5 changes: 5 additions & 0 deletions app/config/config.yml
Expand Up @@ -81,6 +81,7 @@ env:
- translate
- facebook
- pages
- flickr

installed:
- password
Expand All @@ -90,6 +91,7 @@ env:
- translate
- facebook
- pages
- flickr

boot: omb

Expand Down Expand Up @@ -129,6 +131,9 @@ env:
twitterKey:
twitterSecret:

flickrKey:
flickrSecret:

facebookKey:
facebookSecret:
facebookAppId:
Expand Down
10 changes: 10 additions & 0 deletions app/facebook/facebook.php
Expand Up @@ -9,3 +9,13 @@
// Services_Facebook::$secret = '';



function facebook_init() {
include 'wp-content/language/lang_chooser.php'; //Loads the language-file
// set the resource, action, button label, app name, grouplevel-unimplemented
app_register_init( 'facebook_users', 'edit.html', $txt['facebook_facebook'], 'facebook', 2 );

//before_filter('download_tweets','get');
}


13 changes: 13 additions & 0 deletions app/omb/controllers/admin.php
Expand Up @@ -365,4 +365,17 @@ function _sources( &$vars ) {

}

function _cloud( &$vars ) {

extract( $vars );

admin_display_cloud_options();

return vars(
array(
),
get_defined_vars()
);

}

12 changes: 12 additions & 0 deletions app/omb/controllers/settings.php
Expand Up @@ -13,6 +13,12 @@ function put( &$vars ) {
$request->set_param(array('setting','value'),
md5_encrypt($request->params['setting']['value'], $db->dbname)
);
$event = $s->name."_enabled";
if (('enabled' == $request->params['setting']['value'])&&function_exists($event))
$event();
$event = $s->name."_disabled";
if (('disabled' == $request->params['setting']['value'])&&function_exists($event))
$event();
$resource->update_from_post( $request );
header_status( '201 Created' );
redirect_to( $request->resource );
Expand Down Expand Up @@ -73,6 +79,12 @@ function post( &$vars ) {
trigger_error( 'Sorry, you are not authorized to install '.$app, E_USER_ERROR );

}
$event = $settingname."_enabled";
if (('enabled' == $request->params['setting']['value'])&&function_exists($event))
$event();
$event = $settingname."_disabled";
if (('disabled' == $request->params['setting']['value'])&&function_exists($event))
$event();
$resource->insert_from_post( $request );
header_status( '201 Created' );
redirect_to( $request->resource );
Expand Down
53 changes: 53 additions & 0 deletions app/omb/models/Method.php
Expand Up @@ -121,8 +121,61 @@ function init() {

$m->save_changes();
$m->set_etag(1);

$m = $this->base();
$m->set_value( 'code', '
global $db,$request;
$Identity =& $db->get_table( \'identities\' );
$Person =& $db->get_table( \'people\' );
$i = $Identity->find_by(array(
\'nickname\'=>$db->escape_string($_POST[\'username\']),
\'password\'=>md5($db->escape_string($_POST[\'password\']))
),1);
$p = $Person->find( $i->person_id );
if (!(isset( $p->id ) && $p->id > 0))
exit;
header(\'Content-Type: text/xml\');
echo \'<?xml version="1.0" encoding="UTF-8"?>
\';
if (isset($_FILES[\'media\'])) {
handle_posted_file(\'jpg\',$_FILES[\'media\'][\'tmp_name\'],$i);
$mediaid = \'_\'.$request->id;
$mediaurl = $request->url_for(array(
\'resource\'=>\'__\'.$request->id.".jpg"));
echo \'<rsp stat="ok">
<mediaid>\'.$mediaid.\'</mediaid>
<mediaurl>\'.$mediaurl.\'</mediaurl>
</rsp>
\';
} else {
echo \'<rsp stat="fail">
<err code="1001" msg="Invalid twitter username or password" />
</rsp>
\';
}
exit;
');

$m->set_value( 'function', 'api_upload' );
$m->set_value( 'route', 'api/upload' );
$m->set_value( 'resource', 'posts' );
$m->set_value( 'permission', 'read' );
$m->set_value( 'enabled', true );
$m->set_value( 'omb', 1 );
$m->set_value( 'oauth', 1 );
$m->set_value( 'http', 1 );

$m->save_changes();
$m->set_etag(1);

}




}

200 changes: 199 additions & 1 deletion app/omb/plugins/omb.php
Expand Up @@ -9,6 +9,16 @@
define( OMB_VERSION, 'http://openmicroblogging.org/protocol/0.1' );
define( OAUTH_VERSION, 'http://oauth.net/core/1.0' );


if ('97-120-5-84.ptld.qwest.net' == $_SERVER[REMOTE_HOST]){

//lib_include('rsscloud_element');



}


$omb_routes = array(
'local_subscribe',
'local_unsubscribe',
Expand All @@ -21,7 +31,9 @@
'oauth_authorize',
'mobile_settings',
'mobile_event',
'migrate'
'migrate',
'smtp_event',
'flickr_login'
);

foreach ($omb_routes as $func)
Expand Down Expand Up @@ -1595,6 +1607,192 @@ function oauth_omb_register_services() {
}


function smtp_event( &$vars ) {

//$path = '/home/smtp2web/spool/';
//$file = $path.substr( microtime(), 0, 7);
//if (file_exists($file))
// exit;
//$fd = fopen($file , "a+");
//$data = $GLOBALS["HTTP_RAW_POST_DATA"];
//if ($fd) {
// $result = fwrite( $fd, $data );
// fclose($fd);
//}
//header( 'Status: 200 OK' );
//exit;

extract($vars);
$from = $_GET['from'];
$message = $GLOBALS["HTTP_RAW_POST_DATA"];

add_include_path(library_path());
require_once 'Zend/Mime/Decode.php';
require_once 'Zend/Mime/Message.php';

//$message = file_get_contents('/home/smtp2web/spool/0.07605');
//$from = 'brian@brianhendrickson.com';

$Identity =& $db->model('Identity');

$i = $Identity->find_by('email_value',$from);

if (!$i)
exit;

if (!(get_class($i) == 'Record'))
exit;

Zend_Mime_Decode::splitMessage($message,$headers,$body);

$boundary = Zend_Mime_Decode::splitContentType($headers['content-type'], 'boundary');

$msg = Zend_Mime_Message::createFromMessage($message,$boundary);

$parts = $msg->getParts();

if (count($parts) > 0) {

$parts = $msg->getParts();

foreach($parts as $num=>$part) {

if (!('base64' == $part->encoding))
continue;

// ask Zend_Mime to ignore encoding
$part->encoding = 'blah';

$str = $part->getContent();

$phdrs = $part->getHeadersArray();

$filename = Zend_Mime_Decode::splitContentType($phdrs[0][1], 'name');

if (empty($filename))
$filename = Zend_Mime_Decode::splitContentType($phdrs[2][1], 'filename');

$att = tempnam( "/tmp", microtime() );

$im = imagecreatefromstring(base64_decode($str));

imagejpeg($im,$att,100);

$_FILES = array(
'post' => array(
'name' => array( 'attachment' => $filename ),
'tmp_name' => array( 'attachment' => $att )
));
}

foreach($parts as $num=>$part) {
if (in_array($part->encoding,array('7bit','8bit')))
$body = $part->getContent();
}

}

handle_posted_file('jpg',$_FILES['post']['tmp_name']['attachment'],$i);

header( 'Status: 200 OK' );
exit;

$Post =& $db->model('Post');

$field = 'attachment';
$modelvar = 'Post';

$request->set_param('resource',$table);
$request->set_param( array( strtolower(classify($table)), $field ), $_FILES[strtolower(classify($table))]['tmp_name'][$field] );
trigger_before( 'insert_from_post', $$modelvar, $request );
$content_type = 'text/html';
$rec = $$modelvar->base();
$content_type = type_of( $_FILES[strtolower(classify($table))]['name'][$field] );
$rec->set_value('profile_id',get_profile_id());
$rec->set_value( 'parent_id', 0 );
$rec->set_value( 'title', trim($body) );
$upload_types = environment('upload_types');
if (!$upload_types)
$upload_types = array('jpg','jpeg','png','gif');
$ext = extension_for( type_of($_FILES[strtolower(classify($table))]['name']['attachment']));
if (!(in_array($ext,$upload_types)))
trigger_error('Sorry, this site only allows the following file types: '.implode(',',$upload_types), E_USER_ERROR);
$rec->set_value( $field, $_FILES[strtolower(classify($table))]['tmp_name'][$field] );
$rec->save_changes();
$tmp = $_FILES[strtolower(classify($table))]['tmp_name']['attachment'];
if (is_jpg($tmp)) {
$thumbsize = environment('max_pixels');
$Thumbnail =& $db->model('Thumbnail');
$t = $Thumbnail->base();
$newthumb = tempnam( "/tmp", "new".$rec->id.".jpg" );
resize_jpeg($tmp,$newthumb,$thumbsize);
$t->set_value('target_id',$atomentry->id);
$t->save_changes();
update_uploadsfile( 'thumbnails', $t->id, $newthumb );
$t->set_etag();
}
$atomentry = $$modelvar->set_metadata($rec,$content_type,$table,'id');
$$modelvar->set_categories($rec,$request,$atomentry);
$url = $request->url_for(array(
'resource'=>$table,
'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', $$modelvar, $rec );
header( 'Status: 200 OK' );
exit;
}

function flickr_login(&$vars){

extract($vars);

$key = environment( 'flickrKey' );
$secret = environment( 'flickrSecret' );

if (empty($key))
return;

add_include_path(library_path()."phpFlickr");

include('phpFlickr.php');

$permissions = "write";

ob_start();

unset($_SESSION['phpFlickr_auth_token']);

$f = new phpFlickr( $key, $secret );

if (empty($_GET['frob']))
$f->auth($permissions, false);
else
$f->auth_getToken($_GET['frob']);

$Setting =& $db->model('Setting');

$stat = $Setting->find_by(array('name'=>'flickr_frob','profile_id'=>get_profile_id()));

if (!$stat && !empty($_SESSION['phpFlickr_auth_token'])) {
$stat = $Setting->base();
$stat->set_value('profile_id',get_profile_id());
$stat->set_value('person_id',get_person_id());
$stat->set_value('name','flickr_frob');
$stat->set_value('value',$_SESSION['phpFlickr_auth_token']);
$stat->save_changes();
$stat->set_etag();
}

redirect_to($request->base);

}



Expand Down
14 changes: 11 additions & 3 deletions app/omb/plugins/security.php
Expand Up @@ -911,10 +911,18 @@ function _oauth( &$vars ) {

function make_identity( $user ) {
global $db,$prefix,$request;
$Identity =& $db->model('Identity');
$Person =& $db->model('Person');
$p = $Person->base();
$p->save();
if (get_person_id()) {
// make a new identity for the Person
$p = $Person->find(get_person_id());
} else {
$p = $Person->base();
$p->save();
}
if (!(get_class($p) == 'Record'))
trigger_error('there was an error creating the child-identity',E_USER_ERROR);

$Identity =& $db->model('Identity');
$i = $Identity->base();

$nicker = $db->escape_string($user[0]);
Expand Down

0 comments on commit b761f55

Please sign in to comment.