Alexander Nicolaysen Sørnes : Use objectManager to display applications

Chris Morgan cmorgan at winehq.org
Wed Sep 19 19:41:15 CDT 2007


Module: appdb
Branch: master
Commit: af87e895357d62a90114ec87186e06bdd933e56c
URL:    http://source.winehq.org/git/appdb.git/?a=commit;h=af87e895357d62a90114ec87186e06bdd933e56c

Author: Alexander Nicolaysen Sørnes <alex at thehandofagony.com>
Date:   Tue Sep 18 14:04:23 2007 +0200

Use objectManager to display applications

---

 appview.php             |   86 +++++++++--------------------------------------
 help/appdb_faq.help     |    2 +-
 include/application.php |   57 ++++++++++++++++++++++++++++---
 3 files changed, 69 insertions(+), 76 deletions(-)

diff --git a/appview.php b/appview.php
index 6b4e3b3..f154840 100644
--- a/appview.php
+++ b/appview.php
@@ -1,93 +1,39 @@
 <?php
 /**
- * Displays an application or a version.
+ * Previously used to display an application or a version.
+ * It still does that, but only for compatibility with old links
  *
  * Mandatory parameters:
  *  - iAppId, application identifier
  *               OR
  *  - iVersionId, version identifier
  *
- * Optional parameters:
- *  - sSub, action to perform ("delete", "unqueue", "Submit a new bug link.")
- *  - iBuglinkId, bug identifier to link a bug with a version
- *
- * TODO:
- *  - replace sSub with iAction and replace "delete", "unqueue", etc. with integer constants DELETE, UNQUEUE, etc.
- *  - move and rename display_bundle into its respective modules
- *  - replace require_once with require after checking that it won't break anything
- */
+*/
 
-// application environment
+// Basic environment
 require("path.php");
 require(BASE."include/incl.php");
-require_once(BASE."include/application.php");
-require_once(BASE."include/appdb.php");
-require_once(BASE."include/vote.php");
-require_once(BASE."include/category.php");
-require_once(BASE."include/maintainer.php");
-
 
-/**
- * Displays the SUB apps that belong to this application.
- */
-function display_bundle($iAppId)
+if(isset($aClean['iAppId']) || isset($aClean['iVersionId'])) // Valid args
 {
-    $oApp = new Application($iAppId);
-    $hResult = query_parameters("SELECT appFamily.appId, appName, description FROM appBundle, appFamily ".
-                            "WHERE appFamily.queued='false' AND bundleId = '?' AND appBundle.appId = appFamily.appId",
-                            $iAppId);
-    if(!$hResult || query_num_rows($hResult) == 0)
-    {
-         return; // do nothing
-    }
-
-    echo html_frame_start("","98%","",0);
-    echo "<table width=\"100%\" border=\"0\" cellpadding=\"3\" cellspacing=\"1\">\n\n";
-
-    echo "<tr class=\"color4\">\n";
-    echo "    <td>Application Name</td>\n";
-    echo "    <td>Description</td>\n";
-    echo "</tr>\n\n";
-
-    $c = 0;
-    while($ob = query_fetch_object($hResult))
-    {
-        $oApp = new application($ob->appId);
-        //set row color
-        $bgcolor = ($c % 2 == 0) ? "color0" : "color1";
-
-        //display row
-        echo "<tr class=\"$bgcolor\">\n";
-        echo "    <td>".$oApp->objectMakeLink()."</td>\n";
-        echo "    <td>".util_trim_description($oApp->sDescription)."</td>\n";
-        echo "</tr>\n\n";
+    if( isset($aClean['iAppId']) ) // Application
+        $oObject = new Application($aClean['iAppId']);
+    else // We want to see a particular version.
+        $oObject = new Version($aClean['iVersionId']);
 
-        $c++;
-    }
+    // header
+    apidb_header($oObject->objectGetCustomTitle("display"));
 
-    echo "</table>\n\n";
-    echo html_frame_end();
-}
+    if(isset($aClean['iVersionId']))
+        $oObject->display($aClean);
+    else
+        $oObject->display();
 
-/**
- * We want to see an application family (=no version).
- */
-if( isset($aClean['iAppId']) )
-{
-    $oApp = new Application($aClean['iAppId']);
-    $oApp->display();
-} else if( isset($aClean['iVersionId']) ) // We want to see a particular version.
-{
-    $oVersion = new Version($aClean['iVersionId']);
-
-    // header
-    apidb_header("Viewing App: ".version::fullName($oVersion->iVersionId));
-    $oVersion->display($aClean);
+    apidb_footer();
 } else
 {
     // Oops! Called with no params, bad llamah!
     util_show_error_page_and_exit('Page Called with No Params!');
 }
 
-apidb_footer();
 ?>
diff --git a/help/appdb_faq.help b/help/appdb_faq.help
index 94657ae..3fa60ee 100644
--- a/help/appdb_faq.help
+++ b/help/appdb_faq.help
@@ -12,7 +12,7 @@ Application Database.</p>
 <p><b>A:</b> The Application Database is a repository for
 Windows application compatibility information with Wine.
 In particular it provides the following information:<br>
-(see the <a href="/appview.php?iAppId=296">Visual FoxPro</a> entry for an
+(see the <a href="/objectManager.php?sClass=application&iId=296">Visual FoxPro</a> entry for an
 example)<p>
 <ul>
   <li>Whether a given application works at all with Wine.</li>
diff --git a/include/application.php b/include/application.php
index 57a1345..b259934 100644
--- a/include/application.php
+++ b/include/application.php
@@ -628,6 +628,56 @@ class Application {
         $this->iMaintainerRequest = $aValues['iMaintainerRequest'];
     }
 
+    /**
+     * Displays the SUB apps that belong to this application.
+    */
+    function displayBundle()
+    {
+        $hResult = query_parameters("SELECT appFamily.appId, appName, description FROM appBundle, appFamily ".
+                "WHERE appFamily.queued='false' AND bundleId = '?' AND appBundle.appId = appFamily.appId",
+                $this->iAppId);
+        if(!$hResult || query_num_rows($hResult) == 0)
+        {
+            return; // do nothing
+        }
+
+        echo html_frame_start("","98%","",0);
+        echo "<table width=\"100%\" border=\"0\" cellpadding=\"3\" cellspacing=\"1\">\n\n";
+
+        echo "<tr class=\"color4\">\n";
+        echo "    <td>Application Name</td>\n";
+        echo "    <td>Description</td>\n";
+        echo "</tr>\n\n";
+
+        for($c = 0; $ob = query_fetch_object($hResult); $c++)
+        {
+            $oApp = new application($ob->appId);
+        //set row color
+                $bgcolor = ($c % 2 == 0) ? "color0" : "color1";
+
+        //display row
+                echo "<tr class=\"$bgcolor\">\n";
+        echo "    <td>".$oApp->objectMakeLink()."</td>\n";
+        echo "    <td>".util_trim_description($oApp->sDescription)."</td>\n";
+        echo "</tr>\n\n";
+        }
+
+        echo "</table>\n\n";
+        echo html_frame_end();
+    }
+
+    function objectGetCustomTitle($sAction)
+    {
+        switch($sAction)
+        {
+            case "display":
+                return "Viewing App: ".$this->sName;
+
+            default:
+                return null;
+        }
+    }
+
     /* display this application */
     function display()
     {
@@ -635,9 +685,6 @@ class Application {
         if(!$_SESSION['current']->canViewApplication($this))
             util_show_error_page_and_exit("Something went wrong with the application or version id");
 
-        // header
-        apidb_header("Viewing App - ".$this->sName);
-
         // cat display
         $oCategory = new Category($this->iCatId);
         $oCategory->display($this->iAppId);
@@ -755,7 +802,7 @@ class Application {
         Version::displayList($this->aVersionsIds);
 
         // display bundle
-        display_bundle($this->iAppId);
+        $this->displayBundle();
     }
 
     function lookup_name($appId)
@@ -816,7 +863,7 @@ class Application {
 
     function objectMakeUrl()
     {
-        $sUrl = APPDB_ROOT."appview.php?iAppId=$this->iAppId";
+        $sUrl = APPDB_ROOT."objectManager.php?sClass=application&iId=$this->iAppId";
         return $sUrl;
     }
 




More information about the wine-cvs mailing list