From 7b12f89abfc5f1dc7882884372ce85b8436ca42f Mon Sep 17 00:00:00 2001 From: Jonathan Ernst Date: Mon, 7 Feb 2005 23:21:33 +0000 Subject: [PATCH] - improve application and related classes - use application/version/vendor class in scripts - don't use a full table for queued appication but only one field in the application and version tables - simplify the code in many places --- admin/adminAppQueue.php | 518 ++++++++++++++++----------------------- admin/editAppFamily.php | 105 +------- admin/editAppVersion.php | 159 +++--------- appsubmit.php | 325 +++++++++++------------- appview.php | 10 +- cron/cleanup.php | 4 - include/application.php | 32 ++- include/category.php | 8 +- include/sidebar.php | 2 +- include/util.php | 10 +- include/version.php | 7 +- screenshots.php | 5 +- tables/appdb_tables.sql | 78 ++---- 13 files changed, 467 insertions(+), 796 deletions(-) diff --git a/admin/adminAppQueue.php b/admin/adminAppQueue.php index d4760a8..c19c999 100644 --- a/admin/adminAppQueue.php +++ b/admin/adminAppQueue.php @@ -9,6 +9,14 @@ require(BASE."include/tableve.php"); require(BASE."include/application.php"); require(BASE."include/mail.php"); + +function get_vendor_from_keywords($sKeywords) +{ + $aKeywords = explode(" *** ",$keywords); + $iLastElt = (sizeOf($aKeywords)-1); + return($aKeywords[$iLastElt]); +} + //deny access if not logged in if(!$_SESSION['current']->hasPriv("admin")) { @@ -18,67 +26,70 @@ if(!$_SESSION['current']->hasPriv("admin")) if ($_REQUEST['sub']) { - if(!is_numeric($_REQUEST['queueId'])) + if(is_numeric($_REQUEST['appId'])) { - errorpage("Wrong ID"); - exit; - } - - if ($_REQUEST['queueId']) + $oApp = new Application($_REQUEST['appId']); + } elseif(is_numeric($_REQUEST['versionId'])) { - //get data - $query = "SELECT * from appQueue where queueId = ".$_REQUEST['queueId'].";"; - $result = query_appdb($query); - $ob = mysql_fetch_object($result); - mysql_free_result($result); - } - else + $oVersion = new Version($_REQUEST['versionId']); + } else { //error no Id! addmsg("Application Not Found!", "red"); redirect(apidb_fullurl("admin/adminAppQueue.php")); - exit; } //process according to sub flag - if ($_REQUEST['sub'] == 'view' && $_REQUEST['queueId']) + if ($_REQUEST['sub'] == 'view') { $x = new TableVE("view"); apidb_header("Admin App Queue"); +?> + + + +',"\n"; + echo '',"\n"; - echo '',"\n"; - echo '',"\n"; - - If ($ob->queueCatId == -1) //app version + if ($oVersion) //app version { //help echo "
\n\n"; - echo "

This is the full view of the application waiting to be approved. \n"; - echo "If you approve this application,\n"; - echo "an email will be sent to the author of the submission.

\n"; + echo "

This is the full view of the application version waiting to be approved. \n"; + echo "If you approve this application version an email will be sent to the author of the submission.

\n"; - echo " App Version This type of application will be nested under the selected application parent.\n"; + echo "App Version This type of application will be nested under the selected application parent.\n"; echo "

Click delete to remove the selected item from the queue an email will automatically be sent to the\n"; echo "submitter to let him know the item was deleted.

\n\n"; echo "
\n\n"; - echo '',"\n"; - - echo html_frame_start("New Application Form",400,"",0); + echo html_frame_start("New Version Form",400,"",0); echo "\n"; //app parent - echo '',"\n"; //version - echo '',"\n"; - echo '',"\n"; + echo '',"\n"; + echo '',"\n"; - } - else + + echo '',"\n"; + echo '',"\n"; + + echo '',"\n"; + echo '',"\n"; + + + echo '',"\n"; + echo '
App Parent',"\n"; - $x->make_option_list("appParent",stripslashes($ob->queueName),"appFamily","appId","appName"); + echo '
Application',"\n"; + $x->make_option_list("appId",$oVersion->sName,"appFamily","appId","appName"); echo '
App Version
Version name
Description

email Text
' ,"\n"; + echo ''; + echo ' ',"\n"; + echo '
',"\n"; + } else // application { //help @@ -103,345 +114,237 @@ if ($_REQUEST['sub']) echo html_frame_start("New Application Form",400,"",0); echo "\n"; - //type - echo '',"\n"; - //category - - $query = "select * from appCategory where catId = '$ob->queueCatId';"; - $result = query_appdb($query); - if($result) - { - $ob2 = mysql_fetch_object($result); - - echo '',"\n"; - } else - { - echo '',"\n"; - } - //app parent - echo '',"\n"; //name - echo '',"\n"; - echo '',"\n"; - - //version - echo '',"\n"; - echo '',"\n"; - echo '',"\n"; + echo '',"\n"; + echo '',"\n"; - //vendor/alt vendor fields - // try for an exact match - // Use the first match if we found one and clear out the vendor field, - // otherwise don't pick a vendor - $query = "select * from vendor where vendorname = '$ob->queueVendor';"; - $result = query_appdb($query); - $checkvendor = 0; - if($result) + /* + * vendor/alt vendor fields + * if user selected a predefined vendorId: + */ + $iVendorId = $oApp->iVendorId; + + /* + * If not, try for an exact match + * Use the first match if we found one and clear out the vendor field, + * otherwise don't pick a vendor + * N.B. The vendor string is the last word of the keywords field ! + */ + if(!$iVendorId) { - $ob2 = mysql_fetch_object($result); - $checkvendor = $ob2->vendorId; - } - if(!$checkvendor) - { - // try for a partial match - $query = "select * from vendor where vendorname like '%$ob->queueVendor%';"; - $result = query_appdb($query); - if($result) + $sVendor = get_vendor_from_keywords($oApp->sKeywords); + $sQuery = "SELECT vendorId FROM vendor WHERE vendorname = '".$sVendor."';"; + $hResult = query_appdb($sQuery); + if($hResult) { - $ob2 = mysql_fetch_object($result); - $checkvendor = $ob2->vendorId; + $oRow = mysql_fetch_object($hResult); + $iVendorId = $oRow->vendorId; } } - if($checkvendor) - { - $ob->queueVendor = ''; - - //vendor field - echo '',"\n"; - echo '',"\n"; - echo '',"\n"; - echo '',"\n"; - } else + /* + * try for a partial match + */ + if(!$iVendorId) { - //vendor field - echo '',"\n"; - echo '',"\n"; - echo '',"\n"; - - echo '',"\n"; + $sQuery = "select * from vendor where vendorname like '%$ob->queueVendor%';"; + $hResult = query_appdb($sQuery); + if($hResult) + { + $oRow = mysql_fetch_object($hResult); + $iVendorId = $oRow->vendorId; + } } - } - //url - // FIXME: don't display this field for appversion - echo '',"\n"; - echo '',"\n"; + //vendor field + if($iVendorId) + $sVendor = ""; + echo '',"\n"; + echo '',"\n"; + echo '',"\n"; + + echo '',"\n"; + + //url + echo '',"\n"; + echo '',"\n"; + + //desc + + echo '',"\n"; + echo '',"\n"; - //desc -?> - - - -',"\n"; - echo '',"\n"; - - //email message text - if ($ob->queueEmail) - { - echo '',"\n"; + echo '',"\n"; echo '',"\n"; + + echo '',"\n"; + echo '
Type',"\n"; - echo '',"\n"; - echo '
Category',"\n"; - $x->make_option_list("cat",stripslashes($ob2->catId),"appCategory","catId","catName"); - echo '
Category',"\n"; - $x->make_option_list("cat","","appCategory","catId","catName"); - echo '
App Parent',"\n"; - $x->make_option_list("appParent","","appFamily","appId","appName"); + echo '
Category',"\n"; + $x->make_option_list("catId",$oApp->iCatId,"appCategory","catId","catName"); echo '
App Name
App Version
App Name
App Vendor
 ',"\n"; - $x->make_option_list("altvendor", $checkvendor ,"vendor","vendorId","vendorName"); - echo '
App Vendor
 ',"\n"; - $x->make_option_list("altvendor","","vendor","vendorId","vendorName"); - echo '
App URL
App Vendor
 ',"\n"; + $x->make_option_list("vendorId", $iVendorId ,"vendor","vendorId","vendorName"); + echo '
App URL
Description

App Desc

email Text
email Text
' ,"\n"; + echo ''; + echo ' ',"\n"; + echo '
',"\n"; } - echo '' ,"\n"; - echo ' ',"\n"; - echo ' ',"\n"; - echo '',"\n"; echo html_frame_end(" "); echo html_back_link(1,'adminAppQueue.php'); } - else if ($_REQUEST['sub'] == 'add' && $_REQUEST['queueId']) + else if ($_REQUEST['sub'] == 'add') { - //add item to main db - $statusMessage = ""; - $goodtogo = 0; - if ($_REQUEST['type'] == 'app') + if (is_numeric($_REQUEST['appId'])) // application { - //process as application family - if ($_REQUEST['altvendor'] == 0 && $_REQUEST['queueVendor']) + // add new vendor + if($sVendor) { - //add new vendor - $aInsert = compile_insert_string( array('vendorName' => $_REQUEST['queueVendor'], - 'vendorURL' => $_REQUEST['queueURL'])); - - query_appdb("INSERT INTO `vendor` ({$aInsert['FIELDS']}) VALUES ({$aInsert['VALUES']})"); - $_REQUEST['altvendor'] = mysql_insert_id(); - } - $aInsert = compile_insert_string( array('AppName' => $_REQUEST['queueName'], - 'vendorId' => $_REQUEST['altvendor'], - 'description' => $_REQUEST['queueDesc'], - 'webPage' => $_REQUEST['queueURL'], - 'keywords' => "", - 'catId' => $_REQUEST['cat'])); - - if (query_appdb("INSERT INTO `appFamily` ({$aInsert['FIELDS']}) VALUES ({$aInsert['VALUES']})")) - { - //get the id of the app just added - $_REQUEST['appParent'] = mysql_insert_id(); - //delete queue item - query_appdb("DELETE from appQueue where queueId = ".$_REQUEST['queueId'].";"); - - //set ver if not set - if (!$_REQUEST['queueVersion']) - $_REQUEST['queueVersion'] = '1.0'; - if (!$_REQUEST['queueDesc']) - $_REQUEST['queueDesc'] = 'released version'; - - //Now add a version - $aInsert = compile_insert_string( array('appId' => $_REQUEST['appParent'], - 'versionName' => $_REQUEST['queueVersion'], - 'description' => $_REQUEST['queueDesc'], - 'maintainer_rating' => "", - 'maintainer_release' => "")); - if (query_appdb("INSERT INTO `appVersion` ({$aInsert['FIELDS']}) VALUES ({$aInsert['VALUES']})")) - { - //successful - $_REQUEST['appVersion'] = mysql_insert_id(); - addmsg("The application ".$_REQUEST['queueName']." was successfully added into the database", "green"); - $goodtogo = 1; - } - else - { - //error - $statusMessage = "

Note: The application family was successfully added.

\n"; - addmsg($statusMessage, "red"); - } - - } - } - else if ($_REQUEST['type'] == 'ver') - { - //process as application version - if ($_REQUEST['appParent']) - { - $aInsert = compile_insert_string( array('appId' => $_REQUEST['appParent'], - 'versionName' => $_REQUEST['queueVersion'], - 'description' => $_REQUEST['queueDesc'], - 'maintainer_rating' => "", - 'maintainer_release' => "")); - - if (query_appdb("INSERT INTO `appVersion` ({$aInsert['FIELDS']}) VALUES ({$aInsert['VALUES']})")) - { - //successful - $_REQUEST['appVersion'] = mysql_insert_id(); - $statusMessage = "

The application ".$_REQUEST['queueName']." was successfully added into the database

\n"; - addmsg($statusMessage,"Green"); - query_appdb("DELETE from appQueue where queueId = ".$_REQUEST['queueId'].";"); - $goodtogo = 1; - - } - } - else - { - addmsg("You did not pick an application Parent!",red); - redirect(apidb_fullurl("admin/adminAppQueue.php?cat=view&queueId=".$_REQUEST['queueId'])); - exit; - + $oVendor = new Vendor(); + $oVendor->create($sVendor); } + $oApp = new Application($_REQUEST['appId']); + $oApp->update($_REQUEST['appName'], $_REQUEST['appDescription'], $_REQUEST['keywords'], $_REQUEST['webPage'], $_REQUEST['vendorId'], $_REQUEST['catId']); + $oApp->unQueue(); + } else if(is_numeric($_REQUEST['versionId'])) // version + { + $oVersion = new Version($_REQUEST['versionId']); + $oVersion->update($_REQUEST['versionName'], $_REQUEST['versionDescription']); + $oVersion->unQueue(); } - //Send Status Email - if($_REQUEST['type'] == 'ver') - { - $sFullAppName = lookup_app_name($_REQUEST['appParent'])." ".lookup_version_name($_REQUEST['appVersion']); - $sUrl = APPDB_ROOT."appview.php?versionId=".$_REQUEST['appVersion']; - } else - { - $sFullAppName = lookup_app_name($_REQUEST['appParent']); - $sUrl = APPDB_ROOT."appview.php?appId=".$_REQUEST['appParent']; - } - $sSubject = $sFullAppName." has been added into the AppDB"; - $sMsg = $sUrl."\n"; - if ($ob->queueEmail && $goodtogo) - { - $sMsg .= $emailtext; - mail_appdb($ob->queueEmail, $sSubject ,$sMsg); - } - if ($goodtogo) - { - $sEmail = get_notify_email_address_list($_REQUEST['appParent'], $_REQUEST['appVersion']); - if($sEmail) - { - mail_appdb($sEmail, $sSubject ,$sMsg); - } - } - //done - addmsg("View App", "green"); redirect(apidb_fullurl("admin/adminAppQueue.php")); - exit; } - else if ($_REQUEST['sub'] == 'Delete' && $_REQUEST['queueId']) + else if ($_REQUEST['sub'] == 'Delete') { - //delete main item - $query = "DELETE from appQueue where queueId = ".$_REQUEST['queueId'].";"; - $result = query_appdb($query, "unable to delete selected application!"); - if(!$result) + if (is_numeric($_REQUEST['appId'])) // application { - redirect(apidb_fullurl("admin/adminAppQueue.php?appId=".$_REQUEST['appId']."&versionId=".$_REQUEST['versionId'])); - } - else - { - //Send Status Email - if($_REQUEST['type'] == 'ver') - { - $sFullAppName = lookup_app_name($_REQUEST['appParent'])." ".lookup_version_name($_REQUEST['appVersion']); - } else - { - $sFullAppName = lookup_app_name($_REQUEST['appParent']); - } - $sSubject = $sFullAppName." has not been added into the AppDB"; - if ($ob->queueEmail) - { - $sMsg = $emailtext; - mail_appdb($ob->queueEmail, $sSubject ,$sMsg); - } - //success - addmsg("Application was successfully deleted from the Queue.", "green"); - redirect(apidb_fullurl("admin/adminAppQueue.php?appId=".$_REQUEST['appId']."&versionId=".$_REQUEST['versionId'])); + $oApp = new Application($_REQUEST['appId']); + $oApp->delete(); + } else if(is_numeric($_REQUEST['versionId'])) // version + { + $oVersion = new Version($_REQUEST['versionId']); + $oVersion->delete(); } + + redirect(apidb_fullurl("admin/adminAppQueue.php")); } else { //error no sub! addmsg("Internal Routine Not Found!!", "red"); redirect(apidb_fullurl("admin/adminAppQueue.php")); - } - exit; } else { apidb_header("Admin App Queue"); - echo '
',"\n"; + // get queued apps + $sQuery = "SELECT appId FROM appFamily WHERE queued = 'true'"; + $hResult = query_appdb($sQuery); - //get available apps - $query = "SELECT queueId, queueName, queueVendor,". - "queueVersion, queueEmail, queueCatId,". - "UNIX_TIMESTAMP(submitTime) as submitTime ". - "from appQueue;"; - $result = query_appdb($query); - - if(!$result || !mysql_num_rows($result)) + if(!$hResult || !mysql_num_rows($hResult)) { //no apps in queue - echo html_frame_start("","90%"); + echo html_frame_start("Application Queue","90%"); echo '

The Application Queue is empty.

',"\n"; - echo '

There is nothing for you to do. Check back later.

',"\n"; echo html_frame_end(" "); } else { //help echo "
\n\n"; - echo "

This is the list of applications waiting for your approval, or to be annihilated from existence.

\n"; + echo "

This is the list of applications waiting for your approval, or to be rejected.

\n"; echo "

To view a submission, click on its name. From that page you can edit, delete or approve it into \n"; echo "the AppDB .
\n"; echo "

\n\n"; //show applist echo html_frame_start("","90%","",0); - echo "\n\n"; - - echo "\n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo "\n\n"; + echo "
Submission DateApplication NameVersionVendorSubmitter Email 
+ + + + + + "; $c = 1; - while($ob = mysql_fetch_object($result)) + while($oRow = mysql_fetch_object($hResult)) { - if ($c % 2 == 1) { $bgcolor = 'color0'; } else { $bgcolor = 'color1'; } - echo "\n"; - echo " \n"; - if ($ob->queueCatId == -1) + $oApp = new Application($oRow->appId); + $oSubmitter = new User($oApp->iSubmitterId); + if($oApp->iVendorId) { - $query2 = "select * from appFamily where appId = '$ob->queueName';"; - $result2 = query_appdb($query2); - if($result2) - { - $ob2 = mysql_fetch_object($result2); - echo " \n"; - } else - { - echo " \n"; - } + $oVendor = new Vendor($oApp->iVendorId); + $sVendor = $oVendor->sName; } else { - echo " \n"; + $sVendor = get_vendor_from_keywords($oApp->sKeywords); } - echo " \n"; - echo " \n"; - echo " \n"; + if ($c % 2 == 1) { $bgcolor = 'color0'; } else { $bgcolor = 'color1'; } + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo "\n\n"; + $c++; + } + echo "
Submission DateVendorApplication NameSubmitter
".date("Y-n-t h:i:sa", $ob->submitTime)."  $ob2->appNameApp not found$ob->queueName".stripslashes($ob->queueVersion)."  ".stripslashes($ob->queueVendor)."  ".stripslashes($ob->queueEmail)."  
".date("Y-n-t h:i:sa", $oApp->sSubmitTime)."  ".$sVendor."  iAppId."\">".$oApp->sName."sEmail."\">".$oSubmitter->sRealname."
\n\n"; + echo html_frame_end(" "); + } + + // get queued versions (only versions where application are not queued already) + $sQuery = "SELECT versionId FROM appVersion, appFamily WHERE appFamily.appId = appVersion.appId and appFamily.queued = 'false' AND appVersion.queued = 'true'"; + $hResult = query_appdb($sQuery); + + if(!$hResult || !mysql_num_rows($hResult)) + { + //no apps in queue + echo html_frame_start("Version Queue","90%"); + echo '

The Version Queue is empty.

',"\n"; + echo html_frame_end(" "); + } + else + { + //help + echo "
\n\n"; + echo "

This is the list of versions waiting for your approval, or to be rejected.

\n"; + echo "

To view a submission, click on its name. From that page you can edit, delete or approve it into \n"; + echo "the AppDB .
\n"; + echo "

Note that versions linked to application that have not been yet approved are not displayed in this list.

\n"; + echo "the AppDB.
\n"; + echo "
\n\n"; + + //show applist + echo html_frame_start("","90%","",0); + echo " + + + + + + + "; + + $c = 1; + while($oRow = mysql_fetch_object($hResult)) + { + $oVersion = new Version($oRow->versionId); + $oApp = new Application($oVersion->iAppId); + $oSubmitter = new User($oVersion->iSubmitterId); + $oVendor = new Vendor($oApp->iVendorId); + $sVendor = $oVendor->sName; + if ($c % 2 == 1) { $bgcolor = 'color0'; } else { $bgcolor = 'color1'; } + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; echo "\n\n"; $c++; } @@ -449,9 +352,6 @@ else echo html_frame_end(" "); } - echo ""; - apidb_footer(); - } - +apidb_footer(); ?> diff --git a/admin/editAppFamily.php b/admin/editAppFamily.php index 8ecfd3c..dd204cf 100644 --- a/admin/editAppFamily.php +++ b/admin/editAppFamily.php @@ -24,110 +24,14 @@ if(!($_SESSION['current']->hasPriv("admin") || $_SESSION['current']->isSuperMain if(isset($_REQUEST['submit'])) { - $statusMessage = ''; - // commit changes of form to database if($_REQUEST['submit'] == "Update Database") { - // Get the old values from the database - $sQuery = "SELECT * FROM appFamily WHERE appId = ".$_REQUEST['appId']; - $hResult = query_appdb($sQuery); - $ob = mysql_fetch_object($hResult); - $sOld_appName = $ob->appName; - $sOld_description = $ob->description; - $iOld_vendorId = $ob->vendorId; - $iOld_catId = $ob->catId; - $sOld_keywords = $ob->keywords; - $sOld_webPage = $ob->webPage; - - $sWhatChanged = ""; - $bAppChanged = false; - if ($sOld_appName <> $_REQUEST['appName']) - { - $sWhatChanged .= " App name: Old Value: ".stripslashes($sOld_appName)."\n"; - $sWhatChanged .= " New Value: ".stripslashes($_REQUEST['appName'])."\n"; - $bAppChanged = true; - } - - if ($iOld_vendorId <> $_REQUEST['vendorId']) - { - $sWhatChanged .= " Vendor: Old Value: ".lookupVendorName($iOld_vendorId)."\n"; - $sWhatChanged .= " New Value: ".lookupVendorName($_REQUEST['vendorId'])."\n"; - $bAppChanged = true; - } - - if ($old_description <> $_REQUEST['description']) - { - $sWhatChanged .= " Description: Old Value:\n"; - $sWhatChanged .= "-----------------------:\n"; - $sWhatChanged .= stripslashes($sOld_description)."\n"; - $sWhatChanged .= "-----------------------:\n"; - $sWhatChanged .= " Description: New Value:\n"; - $sWhatChanged .= "-----------------------:\n"; - $sWhatChanged .= stripslashes($_REQUEST['description'])."\n"; - $sWhatChanged .= "-----------------------:\n"; - $bAppChanged = true; - } - - if ($iOld_catId <> $_REQUEST['catId']) - { - $sWhatChanged .= " Category: Old Value: ".lookupCategoryName($iOld_catId)."\n"; - $sWhatChanged .= " New Value: ".lookupCategoryName($_REQUEST['catId'])."\n"; - $bAppChanged = true; - } - - if ($sOld_keywords <> $_REQUEST['keywords']) - { - $sWhatChanged .= " keywords: Old Value: ".stripslashes($sOld_keywords)."\n"; - $sWhatChanged .= " New Value: ".stripslashes($_REQUEST['keywords'])."\n"; - $bAppChanged = true; - } - - if ($sOld_webPage <> $_REQUEST['webPage']) - { - $sWhatChanged .= " Web Page: Old Value: ".stripslashes($sOld_webPage)."\n"; - $sWhatChanged .= " New Value: ".stripslashes($_REQUEST['webPage'])."\n"; - $bAppChanged = true; - } - - //did anything change? - if ($bAppChanged) - { - $sUpdate = compile_update_string(array( 'appName' => $_REQUEST['appName'], - 'description' => $_REQUEST['description'], - 'webPage' => $_REQUEST['webPage'], - 'vendorId' => $_REQUEST['vendorId'], - 'keywords' => $_REQUEST['keywords'], - 'catId' => $_REQUEST['catId'] )); - - // success - if (query_appdb("UPDATE `appFamily` SET $sUpdate WHERE `appId` = {$_REQUEST['appId']}")) - { - $sEmail = get_notify_email_address_list($_REQUEST['appId']); - if($sEmail) - { - $sSubject = lookup_app_name($_REQUEST['appId'])." has been modified by ".$_SESSION['current']->sRealname; - $sMsg .= APPDB_ROOT."appview.php?appId=".$_REQUEST['appId']."\n"; - $sMsg .= "\n"; - $sMsg .= "The following changes have been made:"; - $sMsg .= "\n"; - $sMsg .= $sWhatChanged."\n"; - $sMsg .= "\n"; - - mail_appdb($sEmail, $sSubject ,$sMsg); - } - addmsg("The application was successfully updated in the database", "green"); - redirect(apidb_fullurl("appview.php?appId=".$_REQUEST['appId'])); - } else - { - //error - redirect(apidb_fullurl("admin/editAppVersion.php?appId=".$_REQUEST['appId']."&versionId=".$_REQUEST['versionId'])); - } - } + $oApp = new Application($_REQUEST['appId']); + $oApp->update($_REQUEST['appName'], $_REQUEST['description'], $_REQUEST['keywords'], $_REQUEST['webPage'], $_REQUEST['vendorId'], $_REQUEST['catId']); } else if($_REQUEST['submit'] == "Update URL") { - $sWhatChanged = ""; $bAppChanged = false; @@ -208,10 +112,8 @@ if(isset($_REQUEST['submit'])) mail_appdb($sEmail, $sFullAppName ,$sMsg); } } - - redirect(apidb_fullurl("appview.php?appId={$_REQUEST['appId']}")); - exit; } + redirect(apidb_fullurl("appview.php?appId={$_REQUEST['appId']}")); } else // Show the form for editing the Application Family @@ -228,7 +130,6 @@ else if(!mysql_num_rows($result)) { errorpage('Application does not exist'); - exit; } $ob = mysql_fetch_object($result); diff --git a/admin/editAppVersion.php b/admin/editAppVersion.php index dc2c446..0e20fb8 100644 --- a/admin/editAppVersion.php +++ b/admin/editAppVersion.php @@ -20,97 +20,11 @@ if(!($_SESSION['current']->hasPriv("admin") || $_SESSION['current']->isMaintaine if(isset($_REQUEST['submit1'])) { + $oVersion = new Version($_REQUEST['versionId']); + $oApp = new Application($_REQUEST['appId']); if($_REQUEST['submit1'] == "Update Database") { - $statusMessage = ''; - // Get the old values from the database - $query = "SELECT * FROM appVersion WHERE appId = ".$_REQUEST['appId']." and versionId = ".$_REQUEST['versionId']; - $result = query_appdb($query); - $ob = mysql_fetch_object($result); - $old_versionName = $ob->versionName; - $old_description = $ob->description; - $old_rating = $ob->maintainer_rating; - $old_release = $ob->maintainer_release; - - $versionName = $_REQUEST['versionName']; - $description = $_REQUEST['description']; - $maintainer_rating = $_REQUEST['maintainer_rating']; - $maintainer_release = $_REQUEST['maintainer_release']; - - - $VersionChanged = false; - if ($old_versionName <> $versionName) - { - $WhatChanged .= "Version name: Old Value: ".stripslashes($old_versionName)."\n"; - $WhatChanged .= " New Value: ".$versionName."\n"; - $VersionChanged = true; - } - if ($old_description <> $description) - { - $WhatChanged .= " Description: Old Value:\n"; - $WhatChanged .= "-----------------------:\n"; - $WhatChanged .= stripslashes($old_description)."\n"; - $WhatChanged .= "-----------------------:\n"; - $WhatChanged .= " Description: New Value:\n"; - $WhatChanged .= "-----------------------:\n"; - $WhatChanged .= stripslashes($description)."\n"; - $WhatChanged .= "-----------------------:\n"; - $VersionChanged = true; - } - if ($old_rating <> $maintainer_rating) - { - $WhatChanged .= " Release: Old Value: ".stripslashes($old_rating)."\n"; - $WhatChanged .= " New Value: ".$maintainer_rating."\n"; - $VersionChanged = true; - } - - if ($old_release <> $maintainer_release) - { - $WhatChanged .= " Release: Old Value: ".stripslashes($old_release)."\n"; - $WhatChanged .= " New Value: ".$maintainer_release."\n"; - $VersionChanged = true; - } - - //did anything change? - if ($VersionChanged) - { - $sUpdate = compile_update_string( array('versionName' => $versionName, - 'description' => $description, - 'maintainer_rating' => $maintainer_rating, - 'maintainer_release' => $maintainer_release)); - - $sQuery = "UPDATE appVersion - SET $sUpdate - WHERE appId = '".$_REQUEST['appId']."' - AND versionId = '".$_REQUEST['versionId']."'"; - // success - if (query_appdb($sQuery)) - { - $sEmail = get_notify_email_address_list($_REQUEST['appId'], $_REQUEST['versionId']); - if($sEmail) - { - $sSubject = lookup_app_name($_REQUEST['appId'])." ".lookup_version_name($_REQUEST['versionId'])." has been modified by ".$_SESSION['current']->sRealname; - $sMsg .= APPDB_ROOT."appview.php?appId=".$_REQUEST['appId']."&versionId=".$_REQUEST['versionId']."\n"; - $sMsg .= "\n"; - $sMsg .= "The following changes have been made:"; - $sMsg .= "\n"; - $sMsg .= $WhatChanged."\n"; - $sMsg .= "\n"; - - mail_appdb($sEmail, $sSubject ,$sMsg); - } - addmsg("The version was successfully updated in the database", "green"); - redirect(apidb_fullurl("appview.php?versionId=".$_REQUEST['versionId'])); - } else - { - //error - redirect(apidb_fullurl("admin/editAppVersion.php?versionId=".$_REQUEST['versionId'])); - } - } else - { - addmsg("Nothing changed", "red"); - redirect(apidb_fullurl("admin/editAppVersion.php?versionId=".$_REQUEST['versionId'])); - } + $oVersion->update($_REQUEST['versionName'], $_REQUEST['description'], $_REQUEST['maintainer_release'], $_REQUEST['maintainer_rating']); } else if($_REQUEST['submit1'] == "Update URL") { @@ -174,21 +88,21 @@ if(isset($_REQUEST['submit1'])) } } } - } - if ($bAppChanged) - { - $sEmail = get_notify_email_address_list($_REQUEST['appId']); - if($sEmail) + if ($bAppChanged) { - $sSubject = "Links for ".lookup_app_name($_REQUEST['appId'])." ".lookup_app_name($_REQUEST['versionId'])." have been updated by ".$_SESSION['current']->sRealname; - $sMsg = APPDB_ROOT."appview.php?appId=".$_REQUEST['appId']."\n"; - $sMsg .= "\n"; - $sMsg .= "The following changes have been made:"; - $sMsg .= "\n"; - $sMsg .= $sWhatChanged."\n"; - $sMsg .= "\n"; + $sEmail = get_notify_email_address_list($_REQUEST['appId']); + if($sEmail) + { + $sSubject = "Links for ".$oApp->sName." ".$oVersion->sName." have been updated by ".$_SESSION['current']->sRealname; + $sMsg = APPDB_ROOT."appview.php?appId=".$_REQUEST['appId']."\n"; + $sMsg .= "\n"; + $sMsg .= "The following changes have been made:"; + $sMsg .= "\n"; + $sMsg .= $sWhatChanged."\n"; + $sMsg .= "\n"; - mail_appdb($sEmail, $sSubject ,$sMsg); + mail_appdb($sEmail, $sSubject ,$sMsg); + } } } redirect(apidb_fullurl("appview.php?versionId=".$_REQUEST['versionId'])); @@ -199,26 +113,23 @@ if(isset($_REQUEST['submit1'])) \n"; - echo html_frame_start("Data for Application ID: ".$_REQUEST['appId']." Version ID: ".$_REQUEST['versionId'], "90%","",0); + echo html_frame_start("Data for Application ID: ".$oVersion->iAppId." Version ID: ".$oVersion->iVersionId, "90%","",0); echo html_table_begin("width='100%' border=0 align=left cellpadding=6 cellspacing=0 class='box-body'"); - echo ''; - echo ''; - echo '',"\n"; - echo '',"\n"; + echo ''; + echo ''; + echo '',"\n"; + echo '',"\n"; echo '',"\n"; + echo '',"\n"; echo '

'; echo '',"\n"; echo '',"\n"; echo '',"\n"; @@ -258,13 +169,13 @@ if(isset($_REQUEST['submit1'])) // url edit form echo '',"\n"; - echo ''; - echo ''; + echo ''; + echo ''; echo html_frame_start("Edit URL","90%","",0); echo '
Submission DateVendorApplication NameVersion NameSubmitter
".date("Y-n-t h:i:sa", $oVersion->sSubmitTime)."  ".$sVendor."  ".$oApp->sName."  iVersionId."\">".$oVersion->sName."sEmail."\">".$oSubmitter->sRealname."
Name'.lookup_app_name($_REQUEST['appId']).'
Version
Name'.lookup_app_name($oVersion->iAppId).'
Version
Version specific description', "\n"; - if(trim(strip_tags($oRow->description))=="") + // FIXME: put templates in config file or somewhere else. + if(trim(strip_tags($oVersion->sDescription))=="") { - $oRow->description = "

This is a template; enter version-specific description here

"; - $oRow->description .= "

+ $oVersion->sDescription = "

This is a template; enter version-specific description here

"; + $oVersion->sDescription .= "

Wine compatibility
What works:
- settings
@@ -228,7 +139,7 @@ if(isset($_REQUEST['submit1']))
What was not tested:
- burning

"; - $oRow->description .= "

Tested versions
+ $oVersion->sDescription .= "

Tested versions

@@ -241,13 +152,13 @@ if(isset($_REQUEST['submit1']))
App. versionWine versionInstalls?Runs?Rating


"; } echo '

', "\n"; - echo '

Rating',"\n"; - make_maintainer_rating_list("maintainer_rating", $oRow->maintainer_rating); + make_maintainer_rating_list("maintainer_rating", $oVersion->sTestedRating); echo '
Release',"\n"; - make_bugzilla_version_list("maintainer_release", $oRow->maintainer_release); + make_bugzilla_version_list("maintainer_release", $oVersion->sTestedRelease); echo '
',"\n"; $i = 0; - $result = query_appdb("SELECT * FROM appData WHERE versionId = ".$_REQUEST['versionId']." AND type = 'url'"); + $result = query_appdb("SELECT * FROM appData WHERE versionId = ".$oVersion->iVersionId." AND type = 'url'"); if($result && mysql_num_rows($result) > 0) { echo '',"\n"; + echo '',"\n"; echo '',"\n"; } echo "\n"; @@ -300,7 +211,7 @@ if(isset($_REQUEST['submit1'])) echo '
Delete',"\n"; @@ -287,7 +198,7 @@ if(isset($_REQUEST['submit1'])) } } else { - echo '
Description
DescriptionURL
',"\n"; echo html_frame_end(); echo ""; - echo html_back_link(1,BASE."appview.php?versionId=".$_REQUEST['versionId']); + echo html_back_link(1,BASE."appview.php?versionId=".$oVersion->iVersionId); apidb_footer(); } ?> diff --git a/appsubmit.php b/appsubmit.php index ecb0e71..13cf313 100644 --- a/appsubmit.php +++ b/appsubmit.php @@ -5,13 +5,16 @@ include("path.php"); require(BASE."include/incl.php"); require(BASE."include/tableve.php"); +require(BASE."include/mail.php"); +require(BASE."include/application.php"); + -// Send user to the correct branch of code even if they try to bypass -// the first page (appsubmit.php without parameters) if(!$_SESSION['current']->isLoggedIn()) { - unset($_REQUEST['queueName']); - unset($_REQUEST['apptype']); + // you must be logged in to submit app + apidb_header("Please login"); + echo "To submit an application to the database you must be logged in. Please login now or create a new account.","\n"; + exit; } // Check the input of a submitted form. And output with a list @@ -20,88 +23,71 @@ function checkInput($fields) { $errors = ""; - if (strlen($fields['queueName']) > 200 ) + if (strlen($fields['appName']) > 200 ) $errors .= "
  • Your application name is too long.
  • \n"; - if (empty( $fields['queueName'])) + if (empty($fields['appName']) && !$fields['appId']) $errors .= "
  • Please enter an application name.
  • \n"; - if (empty( $fields['queueVersion'])) + if (empty($fields['versionName'])) $errors .= "
  • Please enter an application version.
  • \n"; // No vendor entered, and nothing in the list is selected - if (empty( $fields['queueVendor']) and $fields['altvendor'] == '0') + if (empty($fields['vendorName']) && !$fields['vendorId']) $errors .= "
  • Please enter a vendor.
  • \n"; - if (empty( $fields['queueDesc'])) + if (empty($fields['appDescription'])) $errors .= "
  • Please enter a description of your application.
  • \n"; - // Not empty and an invalid e-mail address - if (!empty( $fields['queueEmail']) - AND !preg_match('/^[A-Za-z0-9\._-]+[@][A-Za-z0-9_-]+([.][A-Za-z0-9_-]+)+[A-Za-z]$/', - $fields['queueEmail'])) - { - $errors .= "
  • Please enter a valid e-mail address.
  • \n"; - } - if (empty($errors)) return ""; else return $errors; } -################################# -# USER SUBMITTED APP OR VERSION # -################################# -if (isset($_REQUEST['queueName'])) +/* + * User submitted an application + */ +if (isset($_REQUEST['appName'])) { // Check input and exit if we found errors $errors = checkInput($_REQUEST); - if( !empty($errors) ) + if(!empty($errors)) + { + errorpage("We found the following errors:","
    Please go back and correct them."); + echo html_back_link(1); + exit; + } + + if($vendorName) $_REQUEST['vendorId']=""; + $oApplication = new Application(); + $oApplication->create($_REQUEST['appName'], $_REQUEST['appDescription'], $_REQUEST['keywords']." *** ".$_REQUEST['vendorName'], $_REQUEST['webpage'],$_REQUEST['vendorId'], $_REQUEST['catId']); + $oVersion = new Version(); + $oVersion->create($_REQUEST['versionName'], $_REQUEST['versionDescription'], null, null, $oApplication->iAppId); + redirect(apidb_fullurl("index.php")); +} +/* + * User submitted a version + */ +elseif (isset($_REQUEST['versionName']) && is_numeric($_REQUEST['appId'])) +{ + // Check input and exit if we found errors + $errors = checkInput($_REQUEST); + if(!empty($errors)) { errorpage("We found the following errors:","
    Please go back and correct them."); echo html_back_link(1); exit; } - /* if the user picked the vendor we need to retrieve the vendor name */ - /* and store it into the $queueVendor */ - if(isset($_REQUEST['altvendor'])) - { - /* retrieve the actual name here */ - $sQuery = "select * from vendor where vendorId = ".$_REQUEST['altvendor'].";"; - $result = query_appdb($sQuery); - if($result && mysql_num_rows($result) > 0 ) - { - $ob = mysql_fetch_object($result); - $_REQUEST['queueVendor'] = $ob->vendorName; - } - } - - $aFields = compile_insert_string( - array( 'queueName' => $_REQUEST['queueName'], - 'queueVersion' => $_REQUEST['queueVersion'], - 'queueVendor' => $_REQUEST['queueVendor'], - 'queueDesc' => $_REQUEST['queueDesc'], - 'queueEmail' => $_REQUEST['queueEmail'], - 'queueURL' => $_REQUEST['queueURL'], - 'queueCatId' => $_REQUEST['queueCatId'])); - - $sQuery = "INSERT INTO appQueue ({$aFields['FIELDS']},`submitTime`) VALUES ({$aFields['VALUES']}, NOW())"; - - if(query_appdb($sQuery)) - { - addmsg("Your application has been submitted for review. You should hear back soon". - " about the status of your submission.",'green'); - } - + $oVersion = new Version(); + $oVersion->create($_REQUEST['versionName'], $_REQUEST['versionDescription'], null, null, $_REQUEST['appId']); redirect(apidb_fullurl("index.php")); } - -####################################### -# USER WANTS TO SUBMIT APP OR VERSION # -####################################### -else if (isset($_REQUEST['apptype'])) +/* + * User wants to submit an application or version + */ +elseif (isset($_REQUEST['apptype'])) { //FIXME: use absolute path in htmlarea_loader.js to avoid code duplication here ?> @@ -125,6 +111,14 @@ function initDocument() { editor.config.pageStyle = "@import url(./application.css);"; editor.registerPlugin(DynamicCSS); editor.generate(); + + var editor2 = new HTMLArea("editor2",config); + editor2.config.pageStyle = "@import url(./application.css);"; + editor2.generate(); + } onload = function() { @@ -135,87 +129,14 @@ onload = function() { isLoggedIn()) - $email = $_SESSION['current']->sEmail; - // header - apidb_header("Submit Application"); - - // show add to queue form - echo '
    ',"\n"; - echo "

    This page is for submitting new applications to be added to this\n"; - echo "database. The application will be reviewed by the AppDB Administrator\n"; - echo "and you will be notified via email if this application will be added to\n"; - echo "the database.

    \n"; - echo "

    Please don't forget to mention which Wine version you used, how well it worked\n"; - echo "and if any workaround were needed. Having app descriptions just sponsoring the app\n"; - echo "(Yes, some vendor want to use the appdb for this) or saying \"I haven't tried this app with Wine\" "; - echo "won't help Wine development or Wine users.

    \n"; - echo "

    After your application has been added you'll be able to submit screenshots for it.

    "; - - # NEW APPLICATION - if ($_REQUEST['apptype'] == 1) - { - echo html_frame_start("New Application Form",400,"",0); - echo "\n"; - echo '',"\n"; - echo '',"\n"; - echo '',"\n"; - echo '',"\n"; - - // app Category - $w = new TableVE("view"); - echo '',"\n"; - - echo '',"\n"; - echo '',"\n"; - - // alt vendor - $x = new TableVE("view"); - echo '',"\n"; - - echo '',"\n"; - echo '',"\n"; - $sDescription = "

    Enter description here

    "; - echo '',"\n"; - echo '',"\n"; - - echo '',"\n"; - echo '',"\n"; - - echo '',"\n"; - - - echo '
    App Name
    App Version
    Category',"\n"; - $w->make_option_list("queueCatId","","appCategory","catId","catName"); - echo '
    App Vendor
     ',"\n"; - $x->make_option_list("altvendor","","vendor","vendorId","vendorName"); - echo '
    App URL
    Description

    Email
    ',"\n"; - echo '
    ',"\n"; - - echo html_frame_end(); - - echo "
    "; - } - - # NEW VERSION - else - { - echo html_frame_start("New Version Form",400,"",0); - - echo "\n"; - - // app parent - $x = new TableVE("view"); - echo '',"\n"; - - echo '',"\n"; - echo '',"\n"; - $sDescription = "

    This is a template; enter version-specific description here

    "; - $sDescription .= "

    + /* + * Templates + * FIXME: put templates in config file or somewhere else. + */ + $sAppDescription = "

    Enter description here

    "; + $sVersionDescription = "

    This is a template; enter version-specific description here

    +

    Wine compatibility
    What works:
    - settings
    @@ -224,8 +145,8 @@ onload = function() { - erasing

    What was not tested:
    - burning
    -

    "; - $oRow->description .= "

    Tested versions

    App Parent',"\n"; - $x->make_option_list("queueName",$_REQUEST['appId'],"appFamily","appId","appName"); - echo '
    App Version
    +

    +

    Tested versions

    @@ -237,50 +158,96 @@ onload = function() {
    App. versionWine versionInstalls?Runs?Rating
    3.2120040615yesyesBronze


    "; - echo 'App Desc',"\n"; - echo '

    ',"\n"; + // header + apidb_header("Submit Application"); - echo 'Email',"\n"; - echo '',"\n"; + // show add to queue form + echo '
    '."\n"; + echo "

    This page is for submitting new applications to be added to this\n"; + echo "database. The application will be reviewed by the AppDB Administrator\n"; + echo "and you will be notified via email if this application will be added to\n"; + echo "the database.

    \n"; + echo "

    Please don't forget to mention which Wine version you used, how well it worked\n"; + echo "and if any workaround were needed. Having app descriptions just sponsoring the app\n"; + echo "(Yes, some vendor want to use the appdb for this) or saying \"I haven't tried this app with Wine\" "; + echo "won't help Wine development or Wine users.

    \n"; + echo "

    After your application has been added you'll be able to submit screenshots for it.

    "; - echo '',"\n"; - echo '',"\n"; + // new application and version + if ($_REQUEST['apptype'] == 1) + { + echo html_frame_start("New Application Form",400,"",0); + echo "\n"; + echo '',"\n"; + echo '',"\n"; + echo '',"\n"; + echo '',"\n"; - echo '',"\n"; - - echo '
    Application name
    Version name
    ',"\n"; - echo '
    ',"\n"; + // app Category + $w = new TableVE("view"); + echo 'Category',"\n"; + $w->make_option_list("catId","","appCategory","catId","catName"); + echo '',"\n"; - echo html_frame_end(); + echo 'Vendor',"\n"; + echo '',"\n"; - echo "
    "; - } + // alt vendor + $x = new TableVE("view"); + echo ' ',"\n"; + $x->make_option_list("vendorId","","vendor","vendorId","vendorName"); + echo '',"\n"; + + echo 'URL',"\n"; + echo '',"\n"; + + echo 'Keywords',"\n"; + echo '',"\n"; + + + echo 'Application Description',"\n"; + echo '

    ',"\n"; + + echo 'Version Description',"\n"; + echo '

    ',"\n"; + + + echo '',"\n"; + echo ' ',"\n"; + echo '',"\n"; + + echo html_frame_end(); + + echo ""; + } + // new version + else + { + echo html_frame_start("New Version Form",400,"",0); + + echo "\n"; + + // app parent + $x = new TableVE("view"); + echo '',"\n"; + + echo '',"\n"; + echo '',"\n"; + + echo '',"\n"; + echo '',"\n"; + + echo '',"\n"; + + echo '
    Application',"\n"; + $x->make_option_list("appId",$_REQUEST['appId'],"appFamily","appId","appName"); + echo '
    Version name
    Version description

    ',"\n"; + echo '
    ',"\n"; + + echo html_frame_end(); + + echo ""; + } } - -########################## -# HOME PAGE OF APPSUBMIT # -########################## -else -{ - if(!$_SESSION['current']->isLoggedIn()) - { - // you must be logged in to submit app - apidb_header("Please login"); - echo "To submit an application to the database you must be logged in. Please login now or create a new account.","\n"; - } - else - { - // choose type of app - apidb_header("Choose Application Type"); - echo "Please search through the database first. If you cannot find your application in the database select ","\n"; - echo "New Application.","\n"; - echo "If you have found your application but have not found your version then choose New Version.","\n"; - echo "\n"; - echo "","\n"; - echo "","\n"; - echo '
    New ApplicationNew Version
    ',"\n"; - } -} - apidb_footer(); ?> diff --git a/appview.php b/appview.php index 0147c72..c955a56 100644 --- a/appview.php +++ b/appview.php @@ -33,9 +33,11 @@ function display_catpath($catId, $appId, $versionId = '') /** * display the SUB apps that belong to this app + * FIXME: */ function display_bundle($appId) { + $oApp = new Application($appId); $result = query_appdb("SELECT appFamily.appId, appName, description FROM appBundle, appFamily ". "WHERE bundleId = $appId AND appBundle.appId = appFamily.appId"); if(!$result || mysql_num_rows($result) == 0) @@ -56,12 +58,10 @@ function display_bundle($appId) //set row color $bgcolor = ($c % 2 == 0) ? "color0" : "color1"; - //format desc - $aDesc = explode("\n",$oApp->data->description,2); //display row echo "\n"; echo " ".stripslashes($ob->appName)."\n"; - echo " ".$aDesc[0]."\n"; + echo " ".trim_description($oApp->sDescription)."\n"; echo "\n\n"; $c++; @@ -194,7 +194,7 @@ if($_REQUEST['appId']) display_catpath($oApp->iCatId, $oApp->iAppId); // set Vendor - $vendor = $oApp->iVendorId; + $oVendor = new Vendor($oApp->iVendorId); // set URL $appLinkURL = ($oApp->sWebpage) ? "webPage\">".substr(stripslashes($oApp->sWebpage),0,30)."": " "; @@ -209,7 +209,7 @@ if($_REQUEST['appId']) echo ' ',"\n"; echo " \n"; echo " \n"; diff --git a/cron/cleanup.php b/cron/cleanup.php index 6764e74..143c5e4 100644 --- a/cron/cleanup.php +++ b/cron/cleanup.php @@ -61,10 +61,6 @@ function hasDataAssociated($iUserId) $hResult = query_appdb($sQuery); if(mysql_num_rows($hResult)) return true; - $sQuery = "SELECT * FROM appDataQueue WHERE userId = $iUserId"; - $hResult = query_appdb($sQuery); - if(mysql_num_rows($hResult)) return true; - $sQuery = "SELECT * FROM appMaintainerQueue WHERE userId = $iUserId"; $hResult = query_appdb($sQuery); if(mysql_num_rows($hResult)) return true; diff --git a/include/application.php b/include/application.php index a390a46..8abe665 100644 --- a/include/application.php +++ b/include/application.php @@ -3,8 +3,8 @@ /* this class represents an application incl. all versions */ /***********************************************************/ -require(BASE."include/version.php"); -require(BASE."include/vendor.php"); +require_once(BASE."include/version.php"); +require_once(BASE."include/vendor.php"); /** * Application class for handling applications. @@ -19,6 +19,7 @@ class Application { var $sDescription; var $sWebpage; var $bQueued; + var $sSubmitTime; var $iSubmitterId; var $aVersionsIds; // an array that contains the versionId of every version linked to this app. @@ -47,6 +48,7 @@ class Application { $this->iVendorId = $oRow->vendorId; $this->iCatId = $oRow->catId; $this->iSubmitterId = $oRow->submitterId; + $this->sSubmitTime = $oRow->submitTime; $this->sDate = $oRow->submitTime; $this->sName = $oRow->appName; $this->sKeywords = $oRow->keywords; @@ -104,6 +106,7 @@ class Application { 'webPage' => $sWebpage, 'vendorId' => $iVendorId, 'catId' => $iCatId, + 'submitterId'=> $_REQUEST['current']->iUserId, 'queued' => $this->bQueued )); $sFields = "({$aInsert['FIELDS']})"; $sValues = "({$aInsert['VALUES']})"; @@ -123,34 +126,36 @@ class Application { /** * Update application. * FIXME: Informs interested people about the modification. + * FIXME: tell what changed in the email. + * FIXME: get rid of addslashes and use compile_update_string * Returns true on success and false on failure. */ function update($sName=null, $sDescription=null, $sKeywords=null, $sWebpage=null, $iVendorId=null, $iCatId=null) { if ($sName) { - if (!query_appdb("UPDATE appFamily SET appName = '".$sName."' WHERE appId = ".$this->iAppId)) + if (!query_appdb("UPDATE appFamily SET appName = '".addslashes($sName)."' WHERE appId = ".$this->iAppId)) return false; $this->sName = $sName; } if ($sDescription) { - if (!query_appdb("UPDATE appFamily SET description = '".$sDescription."' WHERE appId = ".$this->iAppId)) + if (!query_appdb("UPDATE appFamily SET description = '".addslashes($sDescription)."' WHERE appId = ".$this->iAppId)) return false; $this->sDescription = $sDescription; } if ($sKeywords) { - if (!query_appdb("UPDATE appFamily SET keywords = '".$sKeywords."' WHERE appId = ".$this->iAppId)) + if (!query_appdb("UPDATE appFamily SET keywords = '".addslashes($sKeywords)."' WHERE appId = ".$this->iAppId)) return false; $this->sKeywords = $sKeywords; } if ($sWebpage) { - if (!query_appdb("UPDATE appFamily SET webPage = '".$sWebpage."' WHERE appId = ".$this->iAppId)) + if (!query_appdb("UPDATE appFamily SET webPage = '".addslashes($sWebpage)."' WHERE appId = ".$this->iAppId)) return false; $this->sWebpage = $sWebpage; } @@ -161,6 +166,13 @@ class Application { return false; $this->iVendorId = $iVendorId; } + + if ($iCatId) + { + if (!query_appdb("UPDATE appFamily SET catId = '".$iCatId."' WHERE appId = ".$this->iAppId)) + return false; + $this->iCatId = $iCatId; + } return true; } @@ -196,8 +208,9 @@ class Application { if(!$this->bQueued) return false; - $sUpdate = compile_insert_string(array('queued' => "false")); - if(query_appdb("UPDATE appFamily ".$sUpdate)) + $sUpdate = compile_update_string(array('queued' => "false", + 'keywords'=> str_replace(" *** ","",$this->sKeywords) )); + if(query_appdb("UPDATE appFamily SET ".$sUpdate." WHERE appId = ".$this->iAppId)) { // we send an e-mail to intersted people $this->mailSubmitter(); @@ -258,8 +271,7 @@ class Application { $sSubject = "Application ".$this->sName." deleted by ".$_SESSION['current']->sRealname; addmsg("Application deleted.", "green"); } - - $sEmail = get_notify_email_address_list(null, $this->iVersionId); + $sEmail = get_notify_email_address_list($this->iAppId); if($sEmail) mail_appdb($sEmail, $sSubject ,$sMsg); } diff --git a/include/category.php b/include/category.php index 33446de..6820e04 100644 --- a/include/category.php +++ b/include/category.php @@ -203,14 +203,16 @@ function make_cat_path($path, $appId = '', $versionId = '') if(!empty($appId)) { + $oApp = new Application($appId); if(!empty($versionId)) { - $str .= " > ".html_ahref(lookup_app_name($appId),"appview.php?appId=$appId"); - $str .= " > ".lookup_version_name($versionId); + $oVersion = new Version($versionId); + $str .= " > ".html_ahref($oApp->sName,"appview.php?appId=$appId"); + $str .= " > ".$oVersion->sName; } else { - $str .= " > ".lookup_app_name($appId); + $str .= " > ".$oApp->sName; } } diff --git a/include/sidebar.php b/include/sidebar.php index a830b58..83e7b8f 100644 --- a/include/sidebar.php +++ b/include/sidebar.php @@ -13,7 +13,7 @@ function global_sidebar_menu() { $g->add("AppDB Home", BASE); $g->add("Browse Apps", BASE."appbrowse.php"); $g->add("Top 25", BASE."votestats.php"); - $g->add("Submit App", BASE."appsubmit.php"); + $g->add("Submit App", BASE."appsubmit.php?apptype=1"); $g->add("Documentation", BASE."help/"); $g->add("Help & Support", BASE."support.php"); $g->add("Appdb Stats", BASE."appdbStats.php"); diff --git a/include/util.php b/include/util.php index 6cac5a4..21b7326 100644 --- a/include/util.php +++ b/include/util.php @@ -128,25 +128,25 @@ function make_maintainer_rating_list($varname, $cvalue) echo "\n"; } -/* get the number of applications in the appQueue table */ +/* get the number of queued applications */ function getQueuedAppCount() { - $qstring = "SELECT count(*) as queued_apps FROM appQueue"; + $qstring = "SELECT count(*) as queued_apps FROM appFamily WHERE queued='true'"; $result = query_appdb($qstring); $ob = mysql_fetch_object($result); return $ob->queued_apps; } -/* get the number of applications in the appQueue table */ +/* get the number of queued appdata */ function getQueuedAppDataCount() { - $qstring = "SELECT count(*) as queued_appdata FROM appDataQueue"; + $qstring = "SELECT count(*) as queued_appdata FROM appData WHERE queued='true'"; $result = query_appdb($qstring); $ob = mysql_fetch_object($result); return $ob->queued_appdata; } -/* get the number of applications in the appQueue table */ +/* get the number of queued maintainers */ function getQueuedMaintainerCount() { $qstring = "SELECT count(*) as queued_maintainers FROM appMaintainerQueue"; diff --git a/include/version.php b/include/version.php index cab3bf2..039d0bf 100644 --- a/include/version.php +++ b/include/version.php @@ -13,7 +13,9 @@ class Version { var $sDescription; var $sTestedRelease; var $sTestedRating; + var $sSubmitTime; var $iSubmitterId; + var $sDate; var $aNotesIds; // an array that contains the noteId of every note linked to this version var $aScreenshotsIds; // an array that contains the screenshotId of every screenshot linked to this version var $aUrlsIds; // an array that contains the screenshotId of every url linked to this version @@ -42,6 +44,7 @@ class Version { $this->iVendorId = $oRow->vendorId; $this->iCatId = $oRow->catId; $this->iSubmitterId = $oRow->submitterId; + $this->sSubmitTime = $oRow->submitTime; $this->sDate = $oRow->submitTime; $this->sName = $oRow->versionName; $this->sKeywords = $oRow->keywords; @@ -206,8 +209,8 @@ class Version { if(!$this->bQueued) return false; - $sUpdate = compile_insert_string(array('queued' => "false")); - if(query_appdb("UPDATE appVersion ".$sUpdate)) + $sUpdate = compile_update_string(array('queued' => "false")); + if(query_appdb("UPDATE appVersion SET ".$sUpdate." WHERE versionId = ".$this->iVersionId)) { // we send an e-mail to intersted people $this->mailSubmitter(); diff --git a/screenshots.php b/screenshots.php index 0e37805..022da4b 100644 --- a/screenshots.php +++ b/screenshots.php @@ -41,9 +41,12 @@ if($_REQUEST['cmd']) */ $hResult = get_screenshots($_REQUEST['appId'], $_REQUEST['versionId']); apidb_header("Screenshots"); +$oApp = new Application($_REQUEST['appId']); +$oVersion = new Version($_REQUEST['versionId']); + if($hResult && mysql_num_rows($hResult)) { - echo html_frame_start("Screenshot Gallery for ".lookup_app_name($_REQUEST['appId'])." ".lookup_version_name($_REQUEST['versionId']),500); + echo html_frame_start("Screenshot Gallery for ".$oApp->sName." ".$oVersion->sName,500); // display thumbnails $c = 1; diff --git a/tables/appdb_tables.sql b/tables/appdb_tables.sql index c627dd3..d98c295 100644 --- a/tables/appdb_tables.sql +++ b/tables/appdb_tables.sql @@ -11,8 +11,6 @@ drop table if exists appHitStats; drop table if exists catHitStats; drop table if exists appComments; drop table if exists appData; -drop table if exists appDataQueue; -drop table if exists appQueue; drop table if exists appBundle; drop table if exists appVotes; drop table if exists appNotes; @@ -34,14 +32,17 @@ create table vendor ( * application */ create table appFamily ( - appId int not null auto_increment, - appName varchar(100) not null, - vendorId int not null, - keywords text, - description text, - webPage varchar(100), - catId int, - key(appId) + appId int not null auto_increment, + appName varchar(100) not null, + vendorId int not null, + keywords text, + description text, + webPage varchar(100), + catId int, + submitTime timestamp(14) NOT NULL, + submitterId int(11) NOT NULL default '0', + queued enum('true','false') NOT NULL default 'false', + key(appId) ); @@ -49,28 +50,18 @@ create table appFamily ( * a version of an application */ create table appVersion ( - versionId int not null auto_increment, - appId int not null, - versionName varchar(100) not null, - description text, - maintainer_rating text, - maintainer_release text, - key(versionId) + versionId int not null auto_increment, + appId int not null, + versionName varchar(100) not null, + description text, + maintainer_rating text, + maintainer_release text, + submitTime timestamp(14) NOT NULL, + submitterId int(11) NOT NULL default '0', + queued enum('true','false') NOT NULL default 'false', + key(versionId) ); -create table appQueue ( - queueId int not null auto_increment, - queueName varchar(100) not null, - queueVersion varchar(100) not null, - queueVendor varchar(100) not null, - queueDesc text, - queueEmail varchar(100), - queueURL varchar(100), - queueImage varchar(100) not null, - submitTime timestamp, - queueCatId int, - key(queueId) -); create table userExperience ( uExpId int not null auto_increment, @@ -158,27 +149,12 @@ create table appData ( versionId int default 0, type enum('image', 'url', 'bug'), description text, - url varchar(255), - key(id), - index(appId), - index(versionId) -); - - -/* - * links to screenshots and other stuff waiting to be accepted - */ -create table appDataQueue ( - queueId int not null auto_increment, - versionId int default 0, - type enum('image', 'url'), - description text, - url varchar(255), - userId int not null, - submitTime timestamp, - key(queueid), - index(appId), - index(versionId) + url varchar(255) default NULL, + submitTime timestamp(14) NOT NULL, + submitterId int(11) NOT NULL default '0', + queued enum('true','false') NOT NULL default 'false', + KEY id (id), + KEY versionId (versionId) );
    Name ".$oApp->sName."
    Vendor ". - " ".stripslashes($vendor->vendorName)."  \n"; + " ".$oVendor->sName."  \n"; echo "
    BUGS ". " iAppId."\">Check for bugs in bugzilla  \n"; echo "