Record and report memory usage change in profiling.
[lhc/web/wiklou.git] / includes / Metadata.php
index c8253c4..f6ed8c2 100644 (file)
@@ -18,7 +18,7 @@
  */
 
 define("RDF_TYPE_PREFS", "application/rdf+xml,text/xml;q=0.7,application/xml;q=0.5,text/rdf;q=0.1");
-                        
+
 function wfDublinCoreRdf($article) {
        
        $url = dcReallyFullUrl($article->mTitle);
@@ -107,12 +107,20 @@ function wfCreativeCommonsRdf($article) {
        dcElement('format', 'text/html');
        dcElement('identifier', dcReallyFullUrl($article->mTitle));
        dcElement('date', dcDate($article->getTimestamp()));
-       dcPerson('creator', $article->getUser());
-       
-       $contributors = dcContributors($article);
+
+       $last_editor = $article->getUser();
+
+       if ($last_editor == 0) {
+               dcPerson('creator', 0);
+       } else {
+               dcPerson('creator', $last_editor, $article->getUserText(),
+                       User::whoIsReal($last_editor));
+       }
+
+       $contributors = $article->getContributors();
        
-       foreach ($contributors as $user_name => $cid) {
-               dcPerson('contributor', $cid, $user_name);
+       foreach ($contributors as $user_parts) {
+               dcPerson('contributor', $user_parts[0], $user_parts[1], $user_parts[2]);
        }
        
        dcRights($article);
@@ -204,51 +212,22 @@ function wfCreativeCommonsRdf($article) {
        print "    <dc:{$name} rdf:resource=\"{$url}\" />\n";
 }
 
-/* private */ function dcPerson($name, $id, $user_name="") {
+/* private */ function dcPerson($name, $id, $user_name="", $user_real_name="") {
        global $wgLang;
 
        if ($id == 0) {
                dcElement($name, wfMsg("anonymous"));
+       } else if ( !empty($user_real_name) ) {
+               dcElement($name, $user_real_name);
        } else {
+               # XXX: This shouldn't happen.
                if( empty( $user_name ) ) {
                        $user_name = User::whoIs($id);
                }
-               dcPageOrString($name, $wgLang->getNsText(NS_USER) . ":" . $user_name, $user_name);
+               dcPageOrString($name, $wgLang->getNsText(NS_USER) . ":" . $user_name, wfMsg("siteuser", $user_name));
        }
 }
 
-/* private */ function dcContributors($article) {
-
-        $title = $article->mTitle;
-
-       $contribs = array();
-       
-       $res = wfQuery("SELECT DISTINCT old_user,old_user_text" .
-                      " FROM old " .
-                      " WHERE old_namespace = " . $title->getNamespace() .
-                      " AND old_title = '" . $title->getDBkey() . "'" .
-                       " AND old_user != 0 " .
-                       " AND old_user != " . $article->getUser(), DB_READ);
-       
-       while ( $line = wfFetchObject( $res ) ) {
-               $contribs[$line->old_user_text] = $line->old_user;
-       }    
-
-        # Count anonymous users
-
-       $res = wfQuery("SELECT COUNT(*) AS cnt " .
-                      " FROM old " .
-                      " WHERE old_namespace = " . $title->getNamespace() .
-                      " AND old_title = '" . $title->getDBkey() . "'" .
-                       " AND old_user = 0 ", DB_READ);
-
-       while ( $line = wfFetchObject( $res ) ) {
-                $contribs[$line->cnt] = 0;
-       }    
-
-       return $contribs;
-}
-
 /* Takes an arg, for future enhancement with different rights for
  different pages. */
 
@@ -281,19 +260,24 @@ function wfCreativeCommonsRdf($article) {
 /* private */ function getKnownLicenses() {
        
        $ccLicenses = array('by', 'by-nd', 'by-nd-nc', 'by-nc', 
-                           'by-nc-sa', 'by-sa', 'nd', 'nd-nc',
-                           'nc', 'nc-sa', 'sa');
-       
+                            'by-nc-sa', 'by-sa');
+       $ccVersions = array('1.0', '2.0');
        $knownLicenses = array();
        
-       foreach ($ccLicenses as $license) {
-               $lurl = "http://creativecommons.org/licenses/{$license}/1.0/";
-               $knownLicenses[$lurl] = explode('-', $license);
-               $knownLicenses[$lurl][] = 're';
-               $knownLicenses[$lurl][] = 'di';
-               $knownLicenses[$lurl][] = 'no';
-               if (!in_array('nd', $knownLicenses[$lurl])) {
-                       $knownLicenses[$lurl][] = 'de';
+       foreach ($ccVersions as $version) {
+               foreach ($ccLicenses as $license) {
+                       if( $version == '2.0' && substr( $license, 0, 2) != 'by' ) {
+                               # 2.0 dropped the non-attribs licenses
+                               continue;
+                       }
+                       $lurl = "http://creativecommons.org/licenses/{$license}/{$version}/";
+                       $knownLicenses[$lurl] = explode('-', $license);
+                       $knownLicenses[$lurl][] = 're';
+                       $knownLicenses[$lurl][] = 'di';
+                       $knownLicenses[$lurl][] = 'no';
+                       if (!in_array('nd', $knownLicenses[$lurl])) {
+                               $knownLicenses[$lurl][] = 'de';
+                       }
                }
        }