Commit 67a0a5f9 authored by friendica's avatar friendica

move Friendica photo importer to addon

parent a22ec214
File added
<?php
require_once('include/cli_startup.php');
cli_startup();
$a = get_app();
$photo_id = $argv[1];
$channel_address = $argv[2];
$fr_server = urldecode($argv[3]);
require_once('include/photos.php');
$cookies = 'store/[data]/frphoto_cookie_' . $channel_address;
$c = q("select * from channel left join xchan on channel_hash = xchan_hash where channel_address = '%s' limit 1",
dbesc($channel_address)
);
if(! $c) {
logger('frphotohelper: channel not found');
killme();
}
$channel = $c[0];
$ch = curl_init($fr_server . '/api/friendica/photo?f=&photo_id=' . $photo_id);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookies);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookies);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'RedMatrix');
$output = curl_exec($ch);
curl_close($ch);
$j = json_decode($output,true);
// logger('frphotohelper: ' . print_r($j,true));
$args = array();
$args['data'] = base64_decode($j['data']);
$args['filename'] = $j['filename'];
$args['resource_id'] = $j['resource-id'];
$args['scale'] = $j['scale'];
$args['album'] = $j['album'];
$args['not_visible'] = 1;
$args['created'] = $j['created'];
$args['edited'] = $j['edited'];
$args['title'] = $j['title'];
$args['description'] = $j['desc'];
if($j['allow_cid'] || $j['allow_gid'] || $j['deny_cid'] || $j['deny_gid'])
$args['contact_allow'] = $channel['channel_hash'];
$args['type'] = $j['type'];
$r = q("select * from photo where resource_id = '%s' and uid = %d limit 1",
dbesc($args['resource_id']),
intval($channel['channel_id'])
);
if($r) {
killme();
}
$ret = photo_upload($channel,$channel,$args);
logger('photo_import: ' . print_r($ret,true));
killme();
<?php
/**
* Name: Friendica Photo Migrator
* Description: Migrate photo albums from Friendica to a Red channel
* Version: 1.0
* Author: Mike Macgirvin
*/
function frphotos_install() {}
function frphotos_uninstall() {}
function frphotos_module() {}
function frphotos_init(&$a) {
if(! local_user())
return;
if(intval(get_pconfig(local_user(),'frphotos','complete')))
return;
$channel = $a->get_channel();
$fr_server = $_REQUEST['fr_server'];
$fr_username = $_REQUEST['fr_username'];
$fr_password = $_REQUEST['fr_password'];
$cookies = 'store/[data]/frphoto_cookie_' . $channel['channel_address'];
if($fr_server && $fr_username && $fr_password) {
$ch = curl_init($fr_server . '/api/friendica/photos/list');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookies);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookies);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $fr_username . ':' . $fr_password);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'RedMatrix');
$output = curl_exec($ch);
curl_close($ch);
$j = json_decode($output,true);
// echo print_r($j,true);
$total = 0;
if(count($j)) {
foreach($j as $jj) {
$r = q("select uid from photo where resource_id = '%s' and uid = %d limit 1",
dbesc($jj),
intval($channel['channel_id'])
);
if($r)
continue;
$total ++;
proc_run('php','addon/frphotos/frphotohelper.php',$jj, $channel['channel_address'], urlencode($fr_server));
sleep(3);
}
}
if($total) {
set_pconfig(local_user(),'frphotos','complete','1');
}
@unlink($cookies);
goaway(z_root() . '/photos/' . $channel['channel_address']);
}
}
function frphotos_content(&$a) {
if(! local_user()) {
notice( t('Permission denied') . EOL);
return;
}
if(intval(get_pconfig(local_user(),'frphotos','complete'))) {
info('Friendica photos have already been imported into this channel.');
return;
}
$o = replace_macros(get_markup_template('frphotos.tpl','addon/frphotos'),array(
'$header' => t('Friendica Photo Album Import'),
'$desc' => t('This will import all your Friendica photo albums to this Red channel.'),
'$fr_server' => array('fr_server', t('Friendica Server base URL'),'',''),
'$fr_username' => array('fr_username', t('Friendica Login Username'),'',''),
'$fr_password' => array('fr_password', t('Friendica Login Password'),'',''),
'$submit' => t('Submit'),
));
return $o;
}
<h3>{{$header}}</h3>
<p class="descriptive-text">{{$desc}}</p>
<form action="frphotos" method="post" autocomplete="off" >
{{include file="field_input.tpl" field=$fr_server}}
{{include file="field_input.tpl" field=$fr_username}}
{{include file="field_password.tpl" field=$fr_password}}
<input type="submit" name="submit" value="{{$submit}}" />
</form>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment