add rating support to poco

This commit is contained in:
friendica 2013-02-15 22:34:01 -08:00
parent ace1104d08
commit e754845c80
5 changed files with 29 additions and 13 deletions

View File

@ -16,7 +16,7 @@ require_once('include/features.php');
define ( 'FRIENDICA_PLATFORM', 'Friendica Red'); define ( 'FRIENDICA_PLATFORM', 'Friendica Red');
define ( 'FRIENDICA_VERSION', trim(file_get_contents('version.inc')) . 'R'); define ( 'FRIENDICA_VERSION', trim(file_get_contents('version.inc')) . 'R');
define ( 'ZOT_REVISION', 1 ); define ( 'ZOT_REVISION', 1 );
define ( 'DB_UPDATE_VERSION', 1028 ); define ( 'DB_UPDATE_VERSION', 1029 );
define ( 'EOL', '<br />' . "\r\n" ); define ( 'EOL', '<br />' . "\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );

View File

@ -37,13 +37,12 @@ function poco_load($xchan = null,$url = null) {
} }
$url = $url . '?f=&fields=displayName,hash,urls,photos' ; $url = $url . '?f=&fields=displayName,hash,urls,photos,rating' ;
logger('poco_load: ' . $url, LOGGER_DEBUG); logger('poco_load: ' . $url, LOGGER_DEBUG);
$s = z_fetch_url($url); $s = z_fetch_url($url);
if(! $s['success']) { if(! $s['success']) {
logger('poco_load: returns ' . print_r($s,true)); logger('poco_load: returns ' . print_r($s,true));
return; return;
@ -67,9 +66,11 @@ function poco_load($xchan = null,$url = null) {
$address = ''; $address = '';
$name = ''; $name = '';
$hash = ''; $hash = '';
$rating = 0;
$name = $entry['displayName']; $name = $entry['displayName'];
$hash = $entry['hash']; $hash = $entry['hash'];
$rating = ((array_key_exists('rating',$entry)) ? intval($entry['rating']) : 0);
if(x($entry,'urls') && is_array($entry['urls'])) { if(x($entry,'urls') && is_array($entry['urls'])) {
foreach($entry['urls'] as $url) { foreach($entry['urls'] as $url) {
@ -121,15 +122,17 @@ function poco_load($xchan = null,$url = null) {
dbesc($hash) dbesc($hash)
); );
if(! $r) { if(! $r) {
q("insert into xlink ( xlink_xchan, xlink_link, xlink_updated ) values ( '%s', '%s', '%s' ) ", q("insert into xlink ( xlink_xchan, xlink_link, xlink_rating, xlink_updated ) values ( '%s', '%s', %d, '%s' ) ",
dbesc($xchan), dbesc($xchan),
dbesc($hash), dbesc($hash),
intval($rating),
dbesc(datetime_convert()) dbesc(datetime_convert())
); );
} }
else { else {
q("update xlink set xlink_updated = '%s' where xlink_id = %d limit 1", q("update xlink set xlink_updated = '%s', rating = %d where xlink_id = %d limit 1",
dbesc(datetime_convert()), dbesc(datetime_convert()),
intval($rating),
intval($r[0]['xlink_id']) intval($r[0]['xlink_id'])
); );
} }

View File

@ -892,11 +892,13 @@ CREATE TABLE IF NOT EXISTS `xlink` (
`xlink_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `xlink_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`xlink_xchan` char(255) NOT NULL DEFAULT '', `xlink_xchan` char(255) NOT NULL DEFAULT '',
`xlink_link` char(255) NOT NULL DEFAULT '', `xlink_link` char(255) NOT NULL DEFAULT '',
`xlink_rating` int(11) NOT NULL DEFAULT '0',
`xlink_updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `xlink_updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`xlink_id`), PRIMARY KEY (`xlink_id`),
KEY `xlink_xchan` (`xlink_xchan`), KEY `xlink_xchan` (`xlink_xchan`),
KEY `xlink_link` (`xlink_link`), KEY `xlink_link` (`xlink_link`),
KEY `xlink_updated` (`xlink_updated`) KEY `xlink_updated` (`xlink_updated`),
KEY `xlink_rating` (`xlink_rating`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8; ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `xprof` ( CREATE TABLE IF NOT EXISTS `xprof` (

View File

@ -1,6 +1,6 @@
<?php <?php
define( 'UPDATE_VERSION' , 1028 ); define( 'UPDATE_VERSION' , 1029 );
/** /**
* *
@ -350,3 +350,10 @@ ADD INDEX ( `abook_rating` )");
return UPDATE_FAILED; return UPDATE_FAILED;
} }
function update_r1028() {
$r = q"ALTER TABLE `xlink` ADD `xlink_rating` INT NOT NULL DEFAULT '0' AFTER `xlink_link` ,
ADD INDEX ( `xlink_rating` ) ");
if($r)
return UPDATE_SUCCESS;
return UPDATE_FAILED;
}

View File

@ -126,10 +126,8 @@ function poco_init(&$a) {
'displayName' => false, 'displayName' => false,
'urls' => false, 'urls' => false,
'preferredUsername' => false, 'preferredUsername' => false,
'photos' => false 'photos' => false,
'rating' => false
); );
if((! x($_GET,'fields')) || ($_GET['fields'] === '@all')) if((! x($_GET,'fields')) || ($_GET['fields'] === '@all'))
@ -165,6 +163,12 @@ function poco_init(&$a) {
$entry['preferredUsername'] = substr($rr['xchan_addr'],0,strpos($rr['xchan_addr'],'@')); $entry['preferredUsername'] = substr($rr['xchan_addr'],0,strpos($rr['xchan_addr'],'@'));
if($fields_ret['photos']) if($fields_ret['photos'])
$entry['photos'] = array(array('value' => $rr['xchan_photo_l'], 'mimetype' => $rr['xchan_photo_mimetype'], 'type' => 'profile')); $entry['photos'] = array(array('value' => $rr['xchan_photo_l'], 'mimetype' => $rr['xchan_photo_mimetype'], 'type' => 'profile'));
if($fields_ret['rating']) {
$entry['rating'] = ((array_key_exists('abook_rating',$rr)) ? array(intval($rr['abook_rating'])) : 0);
// maybe this should be a composite calculated rating in $system_mode
if($system_mode)
$entry['rating'] = 0;
}
$ret['entry'][] = $entry; $ret['entry'][] = $entry;
} }
} }