- $schema = Schema::get();
- $schema->ensureTable('GNUsocialPhotos',
- array(new ColumnDef('object_id', 'integer', null, false, 'PRI', true, null, null, true),
- new ColumnDef('path', 'varchar(150)', null, false),
- new ColumnDef('thumb_path', 'varchar(156)', null, false), // 156 = 150 + strlen('thumb.')
- new ColumnDef('owner_id', 'int(11)', null, false)));
+ common_log(LOG_INFO, 'photo plugin: onEndAtomPubNewActivity');
+ $oprofile = Ostatus_profile::ensureActorProfile($activity);
+ foreach ($activity->objects as $object) {
+ if($object->type == ActivityObject::PHOTO) {
+ $uri = $object->largerImage;
+ $thumb_uri = $object->thumbnail;
+ $profile_id = $oprofile->profile_id;
+ $source = 'unknown'; // TODO: put something better here.
+
+ common_log(LOG_INFO, 'uri : ' . $uri);
+ common_log(LOG_INFO, 'thumb_uri : ' . $thumb_uri);
+
+ // It's possible this is validated elsewhere, but I'm not sure and
+ // would rather be safe.
+ $uri = filter_var($uri, FILTER_SANITIZE_URL);
+ $thumb_uri = filter_var($thumb_uri, FILTER_SANITIZE_URL);
+ $uri = filter_var($uri, FILTER_VALIDATE_URL);
+ $thumb_uri = filter_var($thumb_uri, FILTER_VALIDATE_URL);
+
+ if(empty($thumb_uri)) {
+ // We need a thumbnail, so if we aren't given one, use the actual picture for now.
+ $thumb_uri = $uri;
+ }
+
+ if (!empty($uri) && !empty($thumb_uri)) {
+ GNUsocialPhoto::saveNew($profile_id, $thumb_uri, $uri, $source, false);
+ } else {
+ common_log(LOG_INFO, 'bad URI for photo');
+ }
+ return false;
+ }
+ }
+ return true;