]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Merge branch '0.9.x' of git@gitorious.org:laconica/mainline into 0.9.x
authorEvan Prodromou <evan@status.net>
Thu, 27 Aug 2009 21:52:32 +0000 (14:52 -0700)
committerEvan Prodromou <evan@status.net>
Thu, 27 Aug 2009 21:52:32 +0000 (14:52 -0700)
Conflicts:
classes/laconica.ini

15 files changed:
README
classes/File.php
classes/File_oembed.php
classes/Notice.php
db/08to09.sql
db/statusnet.sql
db/statusnet_pg.sql
install.php
js/userdesign.go.js
lib/facebookaction.php
lib/facebookutil.php
lib/rssaction.php
lib/twitterapi.php
tests/HashTagDetectionTest.php [deleted file]
tests/HashTagDetectionTests.php [new file with mode: 0644]

diff --git a/README b/README
index 78d1608a37ca69a880480364b8452ddf42c6c34e..173ea4c253dcc12b69df28dd8769b421aa8b7b19 100644 (file)
--- a/README
+++ b/README
@@ -622,10 +622,10 @@ key and secret, e.g.:
 
 In Facebook's application editor, specify the following URLs for your app:
 
-- Callback URL: http://example.net/mublog/facebook/
-- Post-Remove URL: http://example.net/mublog/facebook/remove
+- Canvas Callback URL: http://example.net/mublog/facebook/
+- Post-Remove Callback URL: http://example.net/mublog/facebook/remove
 - Post-Add Redirect URL: http://apps.facebook.com/yourapp/
-- Canvas URL: http://apps.facebook.com/yourapp/
+- Canvas Page URL: http://apps.facebook.com/yourapp/
 
 (Replace 'example.net' with your host's URL, 'mublog' with the path
 to your StatusNet installation, and 'yourapp' with the name of the
index 0cebfc55e33563a68e67625f19a786959feb2ab5..dc668ab235fdbc263561591808357a58547514a9 100644 (file)
@@ -195,17 +195,44 @@ class File extends Memcached_DataObject
         return 'http://'.$server.$path.$filename;
     }
 
-    function isEnclosure(){
-        if(isset($this->filename)){
-            return true;
-        }
-        $notEnclosureMimeTypes = array('text/html','application/xhtml+xml');
-        $mimetype = strtolower($this->mimetype);
-        $semicolon = strpos($mimetype,';');
-        if($semicolon){
-            $mimetype = substr($mimetype,0,$semicolon);
+    function getEnclosure(){
+        $enclosure = (object) array();
+        $enclosure->title=$this->title;
+        $enclosure->url=$this->url;
+        $enclosure->title=$this->title;
+        $enclosure->date=$this->date;
+        $enclosure->modified=$this->modified;
+        $enclosure->size=$this->size;
+        $enclosure->mimetype=$this->mimetype;
+
+        if(! isset($this->filename)){
+            $notEnclosureMimeTypes = array('text/html','application/xhtml+xml');
+            $mimetype = strtolower($this->mimetype);
+            $semicolon = strpos($mimetype,';');
+            if($semicolon){
+                $mimetype = substr($mimetype,0,$semicolon);
+            }
+            if(in_array($mimetype,$notEnclosureMimeTypes)){
+                $oembed = File_oembed::staticGet('file_id',$this->id);
+                if($oembed){
+                    $mimetype = strtolower($oembed->mimetype);
+                    $semicolon = strpos($mimetype,';');
+                    if($semicolon){
+                        $mimetype = substr($mimetype,0,$semicolon);
+                    }
+                    if(in_array($mimetype,$notEnclosureMimeTypes)){
+                        return false;
+                    }else{
+                        if($oembed->mimetype) $enclosure->mimetype=$oembed->mimetype;
+                        if($oembed->url) $enclosure->url=$oembed->url;
+                        if($oembed->title) $enclosure->title=$oembed->title;
+                        if($oembed->modified) $enclosure->modified=$oembed->modified;
+                        unset($oembed->size);
+                    }
+                }
+            }
         }
-        return(! in_array($mimetype,$notEnclosureMimeTypes));
+        return $enclosure;
     }
 }
 
index 6be6518152f7f9dcebe9e3e71e06b33d0d0b2386..e41ccfd097eb4d415d02d587f2fc08d6d7e57ecc 100644 (file)
@@ -20,6 +20,7 @@
 if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
 
 require_once INSTALLDIR.'/classes/Memcached_DataObject.php';
+require_once INSTALLDIR.'/classes/File_redirection.php';
 
 /**
  * Table Definition for file_oembed
@@ -34,6 +35,7 @@ class File_oembed extends Memcached_DataObject
     public $file_id;                         // int(4)  primary_key not_null
     public $version;                         // varchar(20)
     public $type;                            // varchar(20)
+    public $mimetype;                        // varchar(50)
     public $provider;                        // varchar(50)
     public $provider_url;                    // varchar(255)
     public $width;                           // int(4)
@@ -93,7 +95,24 @@ class File_oembed extends Memcached_DataObject
         if (!empty($data->title)) $file_oembed->title = $data->title;
         if (!empty($data->author_name)) $file_oembed->author_name = $data->author_name;
         if (!empty($data->author_url)) $file_oembed->author_url = $data->author_url;
-        if (!empty($data->url)) $file_oembed->url = $data->url;
+        if (!empty($data->url)){
+            $file_oembed->url = $data->url;
+            $given_url = File_redirection::_canonUrl($file_oembed->url);
+            if (! empty($given_url)){
+                $file = File::staticGet('url', $given_url);
+                if (empty($file)) {
+                    $file_redir = File_redirection::staticGet('url', $given_url);
+                    if (empty($file_redir)) {
+                        $redir_data = File_redirection::where($given_url);
+                        $file_oembed->mimetype = $redir_data['type'];
+                    } else {
+                        $file_id = $file_redir->file_id;
+                    }
+                } else {
+                    $file_oembed->mimetype=$file->mimetype;
+                }
+            }
+        }
         $file_oembed->insert();
         if (!empty($data->thumbnail_url)) {
             File_thumbnail::saveNew($data, $file_id);
index ed41acbaea08d2852d2c0158e56de53674a82fe2..e569d8305a3175d637513543b450d1936bbbdf95 100644 (file)
@@ -1199,10 +1199,11 @@ class Notice extends Memcached_DataObject
         $attachments = $this->attachments();
         if($attachments){
             foreach($attachments as $attachment){
-                if ($attachment->isEnclosure()) {
-                    $attributes = array('rel'=>'enclosure','href'=>$attachment->url,'type'=>$attachment->mimetype,'length'=>$attachment->size);
-                    if($attachment->title){
-                        $attributes['title']=$attachment->title;
+                $enclosure=$attachment->getEnclosure();
+                if ($enclosure) {
+                    $attributes = array('rel'=>'enclosure','href'=>$enclosure->url,'type'=>$enclosure->mimetype,'length'=>$enclosure->size);
+                    if($enclosure->title){
+                        $attributes['title']=$enclosure->title;
                     }
                     $xs->element('link', $attributes, null);
                 }
index 4d1830611a09fc56089ca9e15df47c648abfb2ee..223a99fa37a96722bccd177c78554e496bfa8eee 100644 (file)
@@ -10,3 +10,5 @@ alter table profile
 alter table user_group
      modify column description text comment 'group description';
 
+alter table file_oembed
+     add column mimetype varchar(50) comment 'mime type of resource';
index deebe72c68ae10ede0f15eff260233886c233518..221d60ce37a6b336ee6bf0be95bae0e44226d96b 100644 (file)
@@ -450,6 +450,7 @@ create table file_oembed (
     file_id integer primary key comment 'oEmbed for that URL/file' references file (id),
     version varchar(20) comment 'oEmbed spec. version',
     type varchar(20) comment 'oEmbed type: photo, video, link, rich',
+    mimetype varchar(50) comment 'mime type of resource',
     provider varchar(50) comment 'name of this oEmbed provider',
     provider_url varchar(255) comment 'URL of this oEmbed provider',
     width integer comment 'width of oEmbed resource when available',
index b5626d3f4a063ae5eb73c0219bca8444f0e594d0..5b4d0485af3f202f4470cc9f13149f1a9f3b8738 100644 (file)
@@ -465,6 +465,7 @@ create table file_oembed (
     file_id bigint default nextval('file_oembed_seq') primary key /* comment 'unique identifier' */,
     version varchar(20),
     type varchar(20),
+    mimetype varchar(50), 
     provider varchar(50),
     provider_url varchar(255),
     width integer,
index dc42a5b3dba2d5d477c0e897929526f17a69ecf6..4c5bc38aee6e78cd6723b2ad4aad6fdf4a1a298f 100644 (file)
 
 define('INSTALLDIR', dirname(__FILE__));
 
+$external_libraries=array(
+    array(
+        'name'=>'gettext',
+        'url'=>'http://us.php.net/manual/en/book.gettext.php',
+        'check_function'=>'gettext'
+    ),
+    array(
+        'name'=>'PEAR',
+        'url'=>'http://pear.php.net/',
+        'deb'=>'php-pear',
+        'include'=>'PEAR.php',
+        'check_class'=>'PEAR'
+    ),
+    array(
+        'name'=>'DB',
+        'pear'=>'DB',
+        'url'=>'http://pear.php.net/package/DB',
+        'deb'=>'php-db',
+        'include'=>'DB/common.php',
+        'check_class'=>'DB_common'
+    ),
+    array(
+        'name'=>'DB_DataObject',
+        'pear'=>'DB_DataObject',
+        'url'=>'http://pear.php.net/package/DB_DataObject',
+        'include'=>'DB/DataObject.php',
+        'check_class'=>'DB_DataObject'
+    ),
+    array(
+        'name'=>'Console_Getopt',
+        'pear'=>'Console_Getopt',
+        'url'=>'http://pear.php.net/package/Console_Getopt',
+        'include'=>'Console/Getopt.php',
+        'check_class'=>'Console_Getopt'
+    ),
+    array(
+        'name'=>'Facebook API',
+        'url'=>'http://developers.facebook.com/',
+        'include'=>'facebook/facebook.php',
+        'check_class'=>'Facebook'
+    ),
+    array(
+        'name'=>'htmLawed',
+        'url'=>'http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed',
+        'include'=>'htmLawed/htmLawed.php',
+        'check_function'=>'htmLawed'
+    ),
+    array(
+        'name'=>'HTTP_Request',
+        'pear'=>'HTTP_Request',
+        'url'=>'http://pear.php.net/package/HTTP_Request',
+        'deb'=>'php-http-request',
+        'include'=>'HTTP/Request.php',
+        'check_class'=>'HTTP_Request'
+    ),
+    array(
+        'name'=>'Mail',
+        'pear'=>'Mail',
+        'url'=>'http://pear.php.net/package/Mail',
+        'deb'=>'php-mail',
+        'include'=>'Mail.php',
+        'check_class'=>'Mail'
+    ),
+    array(
+        'name'=>'Mail_mimeDecode',
+        'pear'=>'Mail_mimeDecode',
+        'url'=>'http://pear.php.net/package/Mail_mimeDecode',
+        'deb'=>'php-mail-mimedecode',
+        'include'=>'Mail/mimeDecode.php',
+        'check_class'=>'Mail_mimeDecode'
+    ),
+    array(
+        'name'=>'Mime_Type',
+        'pear'=>'Mime_Type',
+        'url'=>'http://pear.php.net/package/Mime_Type',
+        'include'=>'MIME/Type.php',
+        'check_class'=>'Mime_Type'
+    ),
+    array(
+        'name'=>'Net_URL_Mapper',
+        'pear'=>'Net_URL_Mapper',
+        'url'=>'http://pear.php.net/package/Net_URL_Mapper',
+        'include'=>'Net/URL/Mapper.php',
+        'check_class'=>'Net_URL_Mapper'
+    ),
+    array(
+        'name'=>'Net_Socket',
+        'pear'=>'Net_Socket',
+        'url'=>'http://pear.php.net/package/Net_Socket',
+        'deb'=>'php-net-socket',
+        'include'=>'Net/Socket.php',
+        'check_class'=>'Net_Socket'
+    ),
+    array(
+        'name'=>'Net_SMTP',
+        'pear'=>'Net_SMTP',
+        'url'=>'http://pear.php.net/package/Net_SMTP',
+        'deb'=>'php-net-smtp',
+        'include'=>'Net/SMTP.php',
+        'check_class'=>'Net_SMTP'
+    ),
+    array(
+        'name'=>'Net_URL',
+        'pear'=>'Net_URL',
+        'url'=>'http://pear.php.net/package/Net_URL',
+        'deb'=>'php-net-url',
+        'include'=>'Net/URL.php',
+        'check_class'=>'Net_URL'
+    ),
+    array(
+        'name'=>'Net_URL2',
+        'pear'=>'Net_URL2',
+        'url'=>'http://pear.php.net/package/Net_URL2',
+        'include'=>'Net/URL2.php',
+        'check_class'=>'Net_URL2'
+    ),
+    array(
+        'name'=>'Services_oEmbed',
+        'pear'=>'Services_oEmbed',
+        'url'=>'http://pear.php.net/package/Services_oEmbed',
+        'include'=>'Services/oEmbed.php',
+        'check_class'=>'Services_oEmbed'
+    ),
+    array(
+        'name'=>'Stomp',
+        'url'=>'http://stomp.codehaus.org/PHP',
+        'include'=>'Stomp.php',
+        'check_class'=>'Stomp'
+    ),
+    array(
+        'name'=>'System_Command',
+        'pear'=>'System_Command',
+        'url'=>'http://pear.php.net/package/System_Command',
+        'include'=>'System/Command.php',
+        'check_class'=>'System_Command'
+    ),
+    array(
+        'name'=>'XMPPHP',
+        'url'=>'http://code.google.com/p/xmpphp',
+        'include'=>'XMPPHP/XMPP.php',
+        'check_class'=>'XMPPHP_XMPP'
+    ),
+    array(
+        'name'=>'PHP Markdown',
+        'url'=>'http://www.michelf.com/projects/php-markdown/',
+        'include'=>'markdown.php',
+        'check_class'=>'Markdown_Parser'
+    ),
+    array(
+        'name'=>'OAuth',
+        'url'=>'http://code.google.com/p/oauth-php',
+        'include'=>'OAuth.php',
+        'check_class'=>'OAuthRequest'
+    ),
+    array(
+        'name'=>'Validate',
+        'pear'=>'Validate',
+        'url'=>'http://pear.php.net/package/Validate',
+        'include'=>'Validate.php',
+        'check_class'=>'Validate'
+    )
+);
+
 function main()
 {
     if (!checkPrereqs())
     {
         return;
     }
+    
+    if( $_GET['checklibs'] ){
+        showLibs();
+    }else{
+        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
+            handlePost();
+        } else {
+            showForm();
+        }
+    }
+}
 
-    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
-        handlePost();
-    } else {
-        showForm();
+function haveExternalLibrary($external_library)
+{
+    if(isset($external_library['include']) && ! include_once($external_library['include'])){
+        return false;
     }
+    if(isset($external_library['check_function']) && ! function_exists($external_library['check_function'])){
+        return false;
+    }
+    if(isset($external_library['check_class']) && ! class_exists($external_library['check_class'])){
+        return false;
+    }
+    return true;
 }
 
 function checkPrereqs()
@@ -94,6 +275,69 @@ function checkExtension($name)
     return true;
 }
 
+function showLibs()
+{
+    global $external_libraries;
+    $present_libraries=array();
+    $absent_libraries=array();
+    foreach($external_libraries as $external_library){
+        if(haveExternalLibrary($external_library)){
+            $present_libraries[]=$external_library;
+        }else{
+            $absent_libraries[]=$external_library;
+        }
+    }
+    echo<<<E_O_T
+    <div class="instructions">
+        <p>Laconica comes bundled with a number of libraries required for the application to work. However, it is best that you use PEAR or you distribution to manage
+        libraries instead, as they tend to provide security updates faster, and may offer improved performance.</p>
+        <p>On Debian based distributions, such as Ubuntu, use a package manager (such as &quot;aptitude&quot;, &quot;apt-get&quot;, and &quot;synaptic&quot;) to install the package listed.</p>
+        <p>On RPM based distributions, such as Red Hat, Fedora, CentOS, Scientific Linux, Yellow Dog Linux and Oracle Enterprise Linux, use a package manager (such as &quot;yum&quot;, &quot;apt-rpm&quot;, and &quot;up2date&quot;) to install the package listed.</p>
+        <p>On servers without a package manager (such as Windows), or if the library is not packaged for your distribution, you can use PHP's PEAR to install the library. Simply run &quot;pear install &lt;name&gt;&quot;.</p>
+    </div>
+    <h2>Absent Libraries</h2>
+    <ul id="absent_libraries">
+E_O_T;
+    foreach($absent_libraries as $library)
+    {
+        echo '<li>';
+        if($library['url']){
+            echo '<a href=">'.$library['url'].'">'.htmlentities($library['name']).'</a>';
+        }else{
+            echo htmlentities($library['name']);
+        }
+        echo '<ul>';
+        if($library['deb']){
+            echo '<li class="deb package">deb: <a href="apt:' . urlencode($library['deb']) . '">' . htmlentities($library['deb']) . '</a></li>';
+        }
+        if($library['rpm']){
+            echo '<li class="rpm package">rpm: ' . htmlentities($library['rpm']) . '</li>';
+        }
+        if($library['pear']){
+            echo '<li class="pear package">pear: ' . htmlentities($library['pear']) . '</li>';
+        }
+        echo '</ul>';
+    }
+    echo<<<E_O_T
+    </ul>
+    <h2>Installed Libraries</h2>
+    <ul id="present_libraries">
+E_O_T;
+    foreach($present_libraries as $library)
+    {
+        echo '<li>';
+        if($library['url']){
+            echo '<a href=">'.$library['url'].'">'.htmlentities($library['name']).'</a>';
+        }else{
+            echo htmlentities($library['name']);
+        }
+        echo '</li>';
+    }
+    echo<<<E_O_T
+    </ul>
+E_O_T;
+}
+
 function showForm()
 {
     echo<<<E_O_T
@@ -105,6 +349,7 @@ function showForm()
     <dd>
         <div class="instructions">
             <p>Enter your database connection information below to initialize the database.</p>
+            <p>Laconica bundles a number of libraries for ease of installation. <a href="?checklibs=true">You can see what bundled libraries you are using, versus what libraries are installed on your server.</a>
         </div>
     </dd>
 </dl>
index 18f72f96a43d0545ccc5ffc028ca519cd32e0a8a..eb4dece095efe77b302e8d61c4db3ac60f81c5dd 100644 (file)
@@ -27,11 +27,12 @@ $(document).ready(function() {
         }
     }
 
-    /* rgb2hex written by R0bb13 <robertorebollo@gmail.com> */
     function rgb2hex(rgb) {
+        if (rgb.slice(0,1) == '#') { return rgb; }
         rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
         return '#' + dec2hex(rgb[1]) + dec2hex(rgb[2]) + dec2hex(rgb[3]);
     }
+    /* dec2hex written by R0bb13 <robertorebollo@gmail.com> */
     function dec2hex(x) {
         hexDigits = new Array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
         return isNaN(x) ? '00' : hexDigits[(x - x % 16) / 16] + hexDigits[x % 16];
index b86276a0aba0c47ad8e1c136dd48f05e32784fd1..411f795945a7de10737cbb3eab89a0dce2e5af41 100644 (file)
@@ -95,6 +95,7 @@ class FacebookAction extends Action
     function showStylesheets()
     {
         $this->cssLink('css/display.css', 'base');
+        $this->cssLink('css/display.css',null,'screen, projection, tv');
         $this->cssLink('css/facebookapp.css', 'base');
     }
 
index 36b7452793b430ae9acfcf3b5e8de762d8329dd7..f5121609d6fbc078ec3fb8ec1235d07bca3b6aae 100644 (file)
@@ -109,7 +109,6 @@ function facebookBroadcastNotice($notice)
 
             $can_update  = $facebook->api_client->users_hasAppPermission('status_update',
                                                                          $fbuid);
-
             if (!empty($attachments) && $can_publish == 1) {
                 $fbattachment = format_attachments($attachments);
                 $facebook->api_client->stream_publish($status, $fbattachment,
@@ -178,20 +177,42 @@ function format_attachments($attachments)
     $fbattachment          = array();
     $fbattachment['media'] = array();
 
-    // Facebook only supports one attachment per item
+    foreach($attachments as $attachment)
+    {
+        if($enclosure = $attachment->getEnclosure()){
+            $fbmedia = get_fbmedia_for_attachment($enclosure);
+        }else{
+            $fbmedia = get_fbmedia_for_attachment($attachment);
+        }
+        if($fbmedia){
+            $fbattachment['media'][]=$fbmedia;
+        }else{
+            $fbattachment['name'] = ($attachment->title ?
+                                  $attachment->title : $attachment->url);
+            $fbattachment['href'] = $attachment->url;
+        }
+    }
+    if(count($fbattachment['media'])>0){
+        unset($fbattachment['name']);
+        unset($fbattachment['href']);
+    }
+    return $fbattachment;
+}
 
-    $attachment = $attachments[0];
+/**
+* given an File objects, returns an associative array suitable for Facebook media
+*/
+function get_fbmedia_for_attachment($attachment)
+{
     $fbmedia    = array();
 
     if (strncmp($attachment->mimetype, 'image/', strlen('image/')) == 0) {
         $fbmedia['type']         = 'image';
         $fbmedia['src']          = $attachment->url;
         $fbmedia['href']         = $attachment->url;
-        $fbattachment['media'][] = $fbmedia;
     } else if ($attachment->mimetype == 'audio/mpeg') {
         $fbmedia['type']         = 'mp3';
         $fbmedia['src']          = $attachment->url;
-        $fbattachment['media'][] = $fbmedia;
     }else if ($attachment->mimetype == 'application/x-shockwave-flash') {
         $fbmedia['type']         = 'flash';
 
@@ -200,14 +221,10 @@ function format_attachments($attachments)
         // $fbmedia['imgsrc']='';
 
         $fbmedia['swfsrc']       = $attachment->url;
-        $fbattachment['media'][] = $fbmedia;
     }else{
-        $fbattachment['name'] = ($attachment->title ?
-                                 $attachment->title : $attachment->url);
-        $fbattachment['href'] = $attachment->url;
+        return false;
     }
-
-    return $fbattachment;
+    return $fbmedia;
 }
 
 function remove_facebook_app($flink)
index 60611e48d0f0a22a9fc87434a74e90773f532dbe..dd0f1005af3ce4eea0433fd38a69521b6223c66e 100644 (file)
@@ -258,26 +258,27 @@ class Rss10Action extends Action
         $attachments = $notice->attachments();
         if($attachments){
             foreach($attachments as $attachment){
-                if ($attachment->isEnclosure()) {
+                $enclosure=$attachment->getEnclosure();
+                if ($enclosure) {
                     // DO NOT move xmlns declaration to root element. Making it
                     // the default namespace here improves compatibility with
                     // real-world feed readers.
                     $attribs = array(
-                        'rdf:resource' => $attachment->url,
-                        'url' => $attachment->url,
+                        'rdf:resource' => $enclosure->url,
+                        'url' => $enclosure->url,
                         'xmlns' => 'http://purl.oclc.org/net/rss_2.0/enc#'
                         );
-                    if ($attachment->title) {
-                        $attribs['dc:title'] = $attachment->title;
+                    if ($enclosure->title) {
+                        $attribs['dc:title'] = $enclosure->title;
                     }
-                    if ($attachment->modified) {
-                        $attribs['dc:date'] = common_date_w3dtf($attachment->modified);
+                    if ($enclosure->modified) {
+                        $attribs['dc:date'] = common_date_w3dtf($enclosure->modified);
                     }
-                    if ($attachment->size) {
-                        $attribs['length'] = $attachment->size;
+                    if ($enclosure->size) {
+                        $attribs['length'] = $enclosure->size;
                     }
-                    if ($attachment->mimetype) {
-                        $attribs['type'] = $attachment->mimetype;
+                    if ($enclosure->mimetype) {
+                        $attribs['type'] = $enclosure->mimetype;
                     }
                     $this->element('enclosure', $attribs);
                 }
index c8099978fa46c57e3c61db759405b3da33b95916..9055d8b9820886e6291b19c535e7f1be46c7476c 100644 (file)
@@ -274,11 +274,12 @@ class TwitterapiAction extends Action
         $enclosures = array();
 
         foreach ($attachments as $attachment) {
-            if ($attachment->isEnclosure()) {
+            $enclosure_o=$attachment->getEnclosure();
+            if ($enclosure_o) {
                  $enclosure = array();
-                 $enclosure['url'] = $attachment->url;
-                 $enclosure['mimetype'] = $attachment->mimetype;
-                 $enclosure['size'] = $attachment->size;
+                 $enclosure['url'] = $enclosure_o->url;
+                 $enclosure['mimetype'] = $enclosure_o->mimetype;
+                 $enclosure['size'] = $enclosure_o->size;
                  $enclosures[] = $enclosure;
             }
         }
diff --git a/tests/HashTagDetectionTest.php b/tests/HashTagDetectionTest.php
deleted file mode 100644 (file)
index 9afe346..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) {
-    print "This script must be run from the command line\n";
-    exit();
-}
-
-define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
-define('STATUSNET', true);
-
-require_once INSTALLDIR . '/lib/common.php';
-
-class HashTagDetectionTest extends PHPUnit_Framework_TestCase
-{
-    /**
-     * @dataProvider provider
-     *
-     */
-    public function testProduction($content, $expected)
-    {
-        $rendered = common_render_text($content);
-        $this->assertEquals($expected, $rendered);
-    }
-
-    static public function provider()
-    {
-        return array(
-                     array('hello',
-                           'hello'),
-                     array('#hello people',
-                           '#<span class="tag"><a href="' . common_local_url('tag', array('tag' => common_canonical_tag('hello'))) . '" rel="tag">hello</a></span> people'),
-                     array('"#hello" people',
-                           '&quot;#<span class="tag"><a href="' . common_local_url('tag', array('tag' => common_canonical_tag('hello'))) . '" rel="tag">hello</a></span>&quot; people'),
-                     array('say "#hello" people',
-                           'say &quot;#<span class="tag"><a href="' . common_local_url('tag', array('tag' => common_canonical_tag('hello'))) . '" rel="tag">hello</a></span>&quot; people'),
-                     array('say (#hello) people',
-                           'say (#<span class="tag"><a href="' . common_local_url('tag', array('tag' => common_canonical_tag('hello'))) . '" rel="tag">hello</a></span>) people'),
-                     array('say [#hello] people',
-                           'say [#<span class="tag"><a href="' . common_local_url('tag', array('tag' => common_canonical_tag('hello'))) . '" rel="tag">hello</a></span>] people'),
-                     array('say {#hello} people',
-                           'say {#<span class="tag"><a href="' . common_local_url('tag', array('tag' => common_canonical_tag('hello'))) . '" rel="tag">hello</a></span>} people'),
-                     array('say \'#hello\' people',
-                           'say \'#<span class="tag"><a href="' . common_local_url('tag', array('tag' => common_canonical_tag('hello'))) . '" rel="tag">hello</a></span>\' people'),
-                     );
-    }
-}
-
diff --git a/tests/HashTagDetectionTests.php b/tests/HashTagDetectionTests.php
new file mode 100644 (file)
index 0000000..aeac4a5
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) {
+    print "This script must be run from the command line\n";
+    exit();
+}
+
+define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
+define('STATUSNET', true);
+
+require_once INSTALLDIR . '/lib/common.php';
+
+class HashTagDetectionTests extends PHPUnit_Framework_TestCase
+{
+    /**
+     * @dataProvider provider
+     *
+     */
+    public function testProduction($content, $expected)
+    {
+        $rendered = common_render_text($content);
+        $this->assertEquals($expected, $rendered);
+    }
+
+    static public function provider()
+    {
+        return array(
+                     array('hello',
+                           'hello'),
+                     array('#hello people',
+                           '#<span class="tag"><a href="' . common_local_url('tag', array('tag' => common_canonical_tag('hello'))) . '" rel="tag">hello</a></span> people'),
+                     array('"#hello" people',
+                           '&quot;#<span class="tag"><a href="' . common_local_url('tag', array('tag' => common_canonical_tag('hello'))) . '" rel="tag">hello</a></span>&quot; people'),
+                     array('say "#hello" people',
+                           'say &quot;#<span class="tag"><a href="' . common_local_url('tag', array('tag' => common_canonical_tag('hello'))) . '" rel="tag">hello</a></span>&quot; people'),
+                     array('say (#hello) people',
+                           'say (#<span class="tag"><a href="' . common_local_url('tag', array('tag' => common_canonical_tag('hello'))) . '" rel="tag">hello</a></span>) people'),
+                     array('say [#hello] people',
+                           'say [#<span class="tag"><a href="' . common_local_url('tag', array('tag' => common_canonical_tag('hello'))) . '" rel="tag">hello</a></span>] people'),
+                     array('say {#hello} people',
+                           'say {#<span class="tag"><a href="' . common_local_url('tag', array('tag' => common_canonical_tag('hello'))) . '" rel="tag">hello</a></span>} people'),
+                     array('say \'#hello\' people',
+                           'say \'#<span class="tag"><a href="' . common_local_url('tag', array('tag' => common_canonical_tag('hello'))) . '" rel="tag">hello</a></span>\' people'),
+                     );
+    }
+}
+