diff --git a/libertree.tar.gz b/libertree.tar.gz new file mode 100644 index 00000000..b38846f0 Binary files /dev/null and b/libertree.tar.gz differ diff --git a/libertree/libertree.css b/libertree/libertree.css new file mode 100755 index 00000000..cb401d55 --- /dev/null +++ b/libertree/libertree.css @@ -0,0 +1,16 @@ + +#libertree-enable-label, #libertree-username-label, #libertree-password-label, #libertree-bydefault-label { + float: left; + width: 200px; + margin-top: 10px; +} + +#libertree-checkbox, #libertree-username, #libertree-password, #libertree-bydefault { + float: left; + margin-top: 10px; +} + +#libertree-submit { + margin-top: 15px; +} + diff --git a/libertree/libertree.php b/libertree/libertree.php new file mode 100755 index 00000000..e91996cc --- /dev/null +++ b/libertree/libertree.php @@ -0,0 +1,195 @@ + + */ + +function libertree_install() { + register_hook('post_local', 'addon/libertree/libertree.php', 'libertree_post_local'); + register_hook('notifier_normal', 'addon/libertree/libertree.php', 'libertree_send'); + register_hook('jot_networks', 'addon/libertree/libertree.php', 'libertree_jot_nets'); + register_hook('connector_settings', 'addon/libertree/libertree.php', 'libertree_settings'); + register_hook('connector_settings_post', 'addon/libertree/libertree.php', 'libertree_settings_post'); + +} +function libertree_uninstall() { + unregister_hook('post_local', 'addon/libertree/libertree.php', 'libertree_post_local'); + unregister_hook('notifier_normal', 'addon/libertree/libertree.php', 'libertree_send'); + unregister_hook('jot_networks', 'addon/libertree/libertree.php', 'libertree_jot_nets'); + unregister_hook('connector_settings', 'addon/libertree/libertree.php', 'libertree_settings'); + unregister_hook('connector_settings_post', 'addon/libertree/libertree.php', 'libertree_settings_post'); +} + + +function libertree_jot_nets(&$a,&$b) { + if(! local_user()) + return; + + $ltree_post = get_pconfig(local_user(),'libertree','post'); + if(intval($ltree_post) == 1) { + $ltree_defpost = get_pconfig(local_user(),'libertree','post_by_default'); + $selected = ((intval($ltree_defpost) == 1) ? ' checked="checked" ' : ''); + $b .= '
' + . t('Post to libertree') . '
'; + } +} + + +function libertree_settings(&$a,&$s) { + + if(! local_user()) + return; + + /* Add our stylesheet to the page so we can make our settings look nice */ + + $a->page['htmlhead'] .= '' . "\r\n"; + + /* Get the current state of our config variables */ + + $enabled = get_pconfig(local_user(),'libertree','post'); + + $checked = (($enabled) ? ' checked="checked" ' : ''); + + $def_enabled = get_pconfig(local_user(),'libertree','post_by_default'); + + $def_checked = (($def_enabled) ? ' checked="checked" ' : ''); + + $ltree_api_token = get_pconfig(local_user(), 'libertree', 'libertree_api_token'); + $ltree_url = get_pconfig(local_user(), 'libertree', 'libertree_url'); + + + /* Add some HTML to the existing form */ + + $s .= '
'; + $s .= '

' . t('libertree Post Settings') . '

'; + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + /* provide a submit button */ + + $s .= '
'; + +} + + +function libertree_settings_post(&$a,&$b) { + + if(x($_POST,'libertree-submit')) { + + set_pconfig(local_user(),'libertree','post',intval($_POST['libertree'])); + set_pconfig(local_user(),'libertree','post_by_default',intval($_POST['libertree_bydefault'])); + set_pconfig(local_user(),'libertree','libertree_api_token',trim($_POST['libertree_api_token'])); + set_pconfig(local_user(),'libertree','libertree_url',trim($_POST['libertree_url'])); + + } + +} + +function libertree_post_local(&$a,&$b) { + + // This can probably be changed to allow editing by pointing to a different API endpoint + + if($b['edit']) + return; + + if((! local_user()) || (local_user() != $b['uid'])) + return; + + if($b['private'] || $b['parent']) + return; + + $ltree_post = intval(get_pconfig(local_user(),'libertree','post')); + + $ltree_enable = (($ltree_post && x($_REQUEST,'libertree_enable')) ? intval($_REQUEST['libertree_enable']) : 0); + + if($_REQUEST['api_source'] && intval(get_pconfig(local_user(),'libertree','post_by_default'))) + $ltree_enable = 1; + + if(! $ltree_enable) + return; + + if(strlen($b['postopts'])) + $b['postopts'] .= ','; + $b['postopts'] .= 'libertree'; +} + + + + +function libertree_send(&$a,&$b) { + + logger('libertree_send: invoked'); + return; + + if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) + return; + + if(! strstr($b['postopts'],'libertree')) + return; + + if($b['parent'] != $b['id']) + return; + + + $ltree_api_token = get_pconfig($b['uid'],'libertree','libertree_api_token'); + $ltree_url = get_pconfig($b['uid'],'libertree','libertree_url'); + $ltree_blog = "$ltree_url/api/v1/posts/create/?token=$ltree_api_token"; + + if($ltree_url && $ltree_api_token && $ltree_blog) { + + require_once('include/bb2diaspora.php'); + $tag_arr = array(); + $tags = ''; + $x = preg_match_all('/\#\[(.*?)\](.*?)\[/',$b['tag'],$matches,PREG_SET_ORDER); + + if($x) { + foreach($matches as $mtch) { + $tag_arr[] = $mtch[2]; + } + } + if(count($tag_arr)) + $tags = implode(',',$tag_arr); + + + $params = array( + 'text' => bb2diaspora($b['body']) + // 'token' => $ltree_api_token + ); + + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $ltree_blog); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); + curl_setopt($ch, CURLOPT_HEADER, false); + curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, $params); + + $data = curl_exec($ch); + $result = curl_multi_getcontent($ch); + curl_close($ch); + + logger('libertree_send: ' . $result); + } +} + diff --git a/posterous/posterous-api.php b/posterous/posterous-api.php deleted file mode 100755 index b9dd7d9c..00000000 --- a/posterous/posterous-api.php +++ /dev/null @@ -1,248 +0,0 @@ -user = $user; - $this->pass = $pass; - } - - /* Reading Methods - http://posterous.com/api/reading */ - function getsites() { - $api_method = 'getsites'; - $xml = $this->_call( $api_method ); - return $xml; - } - - function readposts($args) { - $api_method = 'readposts'; - - $valid_args = array('hostname','site_id','num_posts','page','tag'); - $method_args = $this->_validate($args, $valid_args); - - $xml = $this->_call( $api_method, $method_args ); - return $xml; - } - - function gettags($args) { - $api_method = 'gettags'; - - $valid_args = array('hostname','site_id'); - $method_args = $this->_validate($args, $valid_args); - - $xml = $this->_call( $api_method, $method_args ); - return $xml; - } - - /* Posting Methods - http://posterous.com/api/posting */ - function newpost($args) { - $api_method = 'newpost'; - - if (!$this->_auth()) { - throw new PosterousException('Posterous API call "' . $api_method . '" requires authentication.'); - } - - $valid_args = array('site_id','media','title','body','autopost','private','date','tags','source','sourceLink'); - $method_args = $this->_validate($args, $valid_args); - - $xml = $this->_call( $api_method, $method_args ); - return $xml; - } - - function updatepost($args) { - $api_method = 'updatepost'; - - if (!$this->_auth()) { - throw new PosterousException('Posterous API call "' . $api_method . '" requires authentication.'); - } - - $valid_args = array('post_id','media','title','body'); - $method_args = $this->_validate($args, $valid_args); - - $xml = $this->_call( $api_method, $method_args ); - return $xml; - } - - function newcomment($args) { - $api_method = 'newcomment'; - - $valid_args = array('post_id','comment','name','email','date'); - $method_args = $this->_validate($args, $valid_args); - - $xml = $this->_call( $api_method, $method_args ); - return $xml; - } - - /* Post.ly Methods - http://posterous.com/api/postly */ - - function getpost($args) { - $api_method = 'getpost'; - - $valid_args = array('id'); - $method_args = $this->_validate($args, $valid_args); - - $xml = $this->_call( $api_method, $method_args ); - return $xml; - } - - /* Twitter Methods - http://posterous.com/api/twitter */ - function upload() { - $api_method = 'upload'; - - $valid_args = array('username','password','media','message','body','source','sourceLink'); - $method_args = $this->_validate( $args, $method_args ); - - $xml = $this->_call( $api_method, $method_args ); - return $xml; - } - - function uploadAndPost() { - $api_method = 'uploadAndPost'; - - $valid_args = array('username','password','media','message','body','source','sourceLink'); - $method_args = $this->_validate( $args, $method_args ); - - $xml = $this->_call( $api_method, $method_args ); - return $xml; - } - - - /* Helper Functions */ - private function _call($api_method, $method_args = NULL) { - $method_url = POSTEROUS_API_URL . $api_method; - - $user = $this->user(); - $pass = $this->pass(); - - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $method_url); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); - curl_setopt($ch, CURLOPT_HEADER, false); - curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); - - if (isset($user) && isset($pass) && $user != '' && $pass != '') { - curl_setopt($ch, CURLOPT_USERPWD, $user . ':' . $pass); - } - - curl_setopt($ch, CURLOPT_POST, 1); - - if ( is_array($method_args) && !empty($method_args) ) { - curl_setopt($ch, CURLOPT_POSTFIELDS, $method_args); - } - - $data = curl_exec($ch); - //$response_code = curl_getinfo($curl, CURLINFO_HTTP_CODE); - curl_close($ch); - - $xml = ''; - try { - $xml = new SimpleXMLElement($data); - - $response_status = $xml['stat']; - if ($response_status == 'ok') { - return $xml; - } - elseif ($response_status == 'fail') { - throw new PosterousException('Error Code ' . $xml->err['code'] . ': ' . $xml->err['msg']); - } - else { - throw new PosterousException('Error: Invalid Posterous response status.'); - } - } - catch (Exception $e) { - throw $e; - } - } - - private function _validate($args, $valid_args) { - $method_args = array(); - foreach($args as $key => $value) { - if( in_array($key, $valid_args) ) { - $method_args[$key] = $value; - } - } - - return $method_args; - } - - private function _auth() { - //checks if object has user & password, does not verify w/ Posterous - if (isset($this->user) && isset($this->pass) && $this->user != '' && $this->pass != '') { - return TRUE; - } - else { - return FALSE; - } - } - - /* Getters & Setters */ - function user($user = NULL) { - if ($user) { - $this->user = $user; - } - return $this->user; - } - - function pass($pass = NULL) { - if ($pass) { - $this->pass = $pass; - } - return $this->pass; - } -} - -?> diff --git a/posterous/posterous.php b/posterous/posterous.php index 25a009c5..eda2a93a 100755 --- a/posterous/posterous.php +++ b/posterous/posterous.php @@ -153,9 +153,6 @@ function posterous_post_local(&$a,&$b) { function posterous_send(&$a,&$b) { - logger('posterous_send: invoked'); - return; - if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) return;