2004-12-12 03:51:51 +00:00
< ? php
/***********************************************************/
2004-03-15 16:22:00 +00:00
/* this class represents an application incl. all versions */
2004-12-12 03:51:51 +00:00
/***********************************************************/
2005-02-07 23:21:33 +00:00
require_once ( BASE . " include/version.php " );
require_once ( BASE . " include/vendor.php " );
2006-08-30 22:24:05 +00:00
require_once ( BASE . " include/category.php " );
2005-02-11 01:34:16 +00:00
require_once ( BASE . " include/url.php " );
2006-06-17 06:10:10 +00:00
require_once ( BASE . " include/util.php " );
2006-07-07 18:14:53 +00:00
require_once ( BASE . " include/mail.php " );
2006-12-09 05:07:25 +00:00
require_once ( BASE . " include/maintainer.php " );
2007-04-24 23:48:14 +00:00
require_once ( BASE . " include/tableve.php " );
2006-09-27 02:44:16 +00:00
define ( " PLATINUM_RATING " , " Platinum " );
define ( " GOLD_RATING " , " Gold " );
define ( " SILVER_RATING " , " Silver " );
define ( " BRONZE_RATING " , " Bronze " );
define ( " GARBAGE_RATING " , " Garbage " );
2007-01-20 17:41:43 +00:00
define ( " MAINTAINER_REQUEST " , 1 );
define ( " SUPERMAINTAINER_REQUEST " , 2 );
2006-09-27 02:44:16 +00:00
2005-02-06 17:49:48 +00:00
/**
* Application class for handling applications .
*/
2004-03-15 16:22:00 +00:00
class Application {
2005-02-06 17:49:48 +00:00
var $iAppId ;
var $iVendorId ;
var $iCatId ;
var $sName ;
var $sKeywords ;
var $sDescription ;
var $sWebpage ;
2005-08-15 03:44:03 +00:00
var $sQueued ;
2005-02-07 23:21:33 +00:00
var $sSubmitTime ;
2005-02-06 17:49:48 +00:00
var $iSubmitterId ;
var $aVersionsIds ; // an array that contains the versionId of every version linked to this app.
2007-01-20 17:41:43 +00:00
var $iMaintainerRequest ; /* Temporary variable for tracking maintainer
requests on app submission . Value denotes type of request */
2004-03-15 16:22:00 +00:00
2005-02-06 17:49:48 +00:00
/**
* constructor , fetches the data .
*/
2007-03-17 23:45:54 +00:00
function Application ( $iAppId = null , $oRow = null )
2004-03-15 16:22:00 +00:00
{
2005-02-06 17:49:48 +00:00
// we are working on an existing application
2007-06-10 18:51:33 +00:00
if ( ! $iAppId && ! $oRow )
return ;
if ( ! $oRow )
2005-02-06 17:49:48 +00:00
{
2007-06-10 18:51:33 +00:00
/* fetch this applications information */
$sQuery = " SELECT *
FROM appFamily
WHERE appId = '?' " ;
if ( $hResult = query_parameters ( $sQuery , $iAppId ))
$oRow = mysql_fetch_object ( $hResult );
}
2007-03-17 23:45:54 +00:00
2007-06-10 18:51:33 +00:00
if ( $oRow )
{
$this -> iAppId = $oRow -> appId ;
$this -> iVendorId = $oRow -> vendorId ;
$this -> iCatId = $oRow -> catId ;
$this -> iSubmitterId = $oRow -> submitterId ;
$this -> sSubmitTime = $oRow -> submitTime ;
$this -> sName = $oRow -> appName ;
$this -> sKeywords = $oRow -> keywords ;
$this -> sDescription = $oRow -> description ;
2007-06-10 23:58:11 +00:00
//TODO: we should move the url to the appData table
// and return an id into the appData table here
$this -> sWebpage = Url :: normalize ( $oRow -> webPage );
2007-06-10 18:51:33 +00:00
$this -> sQueued = $oRow -> queued ;
}
2004-03-15 16:22:00 +00:00
2007-06-10 18:51:33 +00:00
/* fetch versions of this application, if there are any */
$this -> aVersionsIds = array ();
2005-10-26 23:54:43 +00:00
2007-06-10 18:51:33 +00:00
/* only admins can view all versions */
//FIXME: it would be nice to move this permission into the user class as well as keep it generic
if ( $_SESSION [ 'current' ] -> hasPriv ( " admin " ))
{
$hResult = $this -> _internal_retrieve_all_versions ();
} else
{
$hResult = $this -> _internal_retrieve_unqueued_versions ();
}
if ( $hResult )
{
while ( $oRow = mysql_fetch_object ( $hResult ))
2005-02-06 17:49:48 +00:00
{
2007-06-10 18:51:33 +00:00
$this -> aVersionsIds [] = $oRow -> versionId ;
2005-02-06 17:49:48 +00:00
}
}
2004-03-15 16:22:00 +00:00
}
2006-09-26 02:05:55 +00:00
function _internal_retrieve_all_versions ()
{
$sQuery = " SELECT versionId FROM appVersion WHERE
appId = '?' " ;
$hResult = query_parameters ( $sQuery , $this -> iAppId );
return $hResult ;
}
function _internal_retrieve_unqueued_versions ()
{
$sQuery = " SELECT versionId FROM appVersion WHERE
queued = 'false' AND
appId = '?' " ;
$hResult = query_parameters ( $sQuery , $this -> iAppId );
return $hResult ;
}
2004-03-15 16:22:00 +00:00
2005-02-06 17:49:48 +00:00
/**
* Creates a new application .
*/
2005-10-10 02:37:55 +00:00
function create ()
2004-03-15 16:22:00 +00:00
{
2005-10-26 02:09:49 +00:00
if ( ! $_SESSION [ 'current' ] -> canCreateApplication ())
return ;
2006-06-24 04:20:32 +00:00
$hResult = query_parameters ( " INSERT INTO appFamily (appName, description, keywords, " .
" webPage, vendorId, catId, submitterId, queued) VALUES ( " .
" '?', '?', '?', '?', '?', '?', '?', '?') " ,
$this -> sName , $this -> sDescription , $this -> sKeywords ,
$this -> sWebpage , $this -> iVendorId , $this -> iCatId ,
2007-04-21 17:51:42 +00:00
$_SESSION [ 'current' ] -> iUserId ,
$this -> mustBeQueued () ? " true " : " false " );
2006-06-24 04:20:32 +00:00
if ( $hResult )
2005-02-06 17:49:48 +00:00
{
$this -> iAppId = mysql_insert_id ();
$this -> application ( $this -> iAppId );
2005-09-30 01:55:51 +00:00
$this -> SendNotificationMail (); // Only administrators will be mailed as no supermaintainers exist for this app.
2006-12-09 05:07:25 +00:00
/* Submit super maintainer request if asked to */
2007-01-20 17:41:43 +00:00
if ( $this -> iMaintainerRequest == SUPERMAINTAINER_REQUEST )
2006-12-09 05:07:25 +00:00
{
$oMaintainer = new Maintainer ();
$oMaintainer -> iAppId = $this -> iAppId ;
$oMaintainer -> iUserId = $_SESSION [ 'current' ] -> iUserId ;
$oMaintainer -> sMaintainReason = " This user submitted the application; auto-queued. " ;
$oMaintainer -> bSuperMaintainer = 1 ;
$oMaintainer -> create ();
}
2005-02-06 17:49:48 +00:00
return true ;
2005-10-26 02:09:49 +00:00
} else
{
2006-06-24 04:20:32 +00:00
addmsg ( " Error while creating a new application. " , " red " );
2005-02-06 17:49:48 +00:00
return false ;
2005-10-26 02:09:49 +00:00
}
2004-03-15 16:22:00 +00:00
}
2005-02-06 17:49:48 +00:00
/**
* Update application .
* Returns true on success and false on failure .
*/
2006-01-28 23:04:21 +00:00
function update ( $bSilent = false )
2004-03-15 16:22:00 +00:00
{
2005-02-09 23:49:56 +00:00
$sWhatChanged = " " ;
2005-10-26 02:09:49 +00:00
/* if the user doesn't have permission to modify this application, don't let them */
if ( ! $_SESSION [ 'current' ] -> canModifyApplication ( $this ))
return ;
2005-10-10 02:37:55 +00:00
/* create an instance of ourselves so we can see what has changed */
$oApp = new Application ( $this -> iAppId );
if ( $this -> sName && ( $this -> sName != $oApp -> sName ))
2005-02-06 17:49:48 +00:00
{
2006-07-04 03:43:06 +00:00
if ( ! query_parameters ( " UPDATE appFamily SET appName = '?' WHERE appId = '?' " ,
$this -> sName , $this -> iAppId ))
2005-02-06 17:49:48 +00:00
return false ;
2005-10-10 02:37:55 +00:00
$sWhatChanged .= " Name was changed from " . $oApp -> sName . " to " . $this -> sName . " . \n \n " ;
2005-02-06 17:49:48 +00:00
}
2005-10-10 02:37:55 +00:00
if ( $this -> sDescription && ( $this -> sDescription != $oApp -> sDescription ))
2005-02-06 17:49:48 +00:00
{
2006-07-04 03:43:06 +00:00
if ( ! query_parameters ( " UPDATE appFamily SET description = '?' WHERE appId = '?' " ,
$this -> sDescription , $this -> iAppId ))
2005-02-06 17:49:48 +00:00
return false ;
2005-10-10 02:37:55 +00:00
$sWhatChanged .= " Description was changed from \n " . $oApp -> sDescription . " \n to \n " . $this -> sDescription . " . \n \n " ;
2005-02-06 17:49:48 +00:00
}
2004-03-15 16:22:00 +00:00
2005-10-10 02:37:55 +00:00
if ( $this -> sKeywords && ( $this -> sKeywords != $oApp -> sKeywords ))
2005-02-06 17:49:48 +00:00
{
2006-07-04 03:43:06 +00:00
if ( ! query_parameters ( " UPDATE appFamily SET keywords = '?' WHERE appId = '?' " ,
$this -> sKeywords , $this -> iAppId ))
2005-02-06 17:49:48 +00:00
return false ;
2005-10-10 02:37:55 +00:00
$sWhatChanged .= " Keywords were changed from \n " . $oApp -> sKeywords . " \n to \n " . $this -> sKeywords . " . \n \n " ;
2005-02-06 17:49:48 +00:00
}
2005-10-10 02:37:55 +00:00
if ( $this -> sWebpage && ( $this -> sWebpage != $oApp -> sWebpage ))
2005-02-06 17:49:48 +00:00
{
2006-07-04 03:43:06 +00:00
if ( ! query_parameters ( " UPDATE appFamily SET webPage = '?' WHERE appId = '?' " ,
2006-07-10 23:02:03 +00:00
$this -> sWebpage , $this -> iAppId ))
2005-02-06 17:49:48 +00:00
return false ;
2005-10-10 02:37:55 +00:00
$sWhatChanged .= " Web page was changed from " . $oApp -> sWebpage . " to " . $this -> sWebpage . " . \n \n " ;
2005-02-06 17:49:48 +00:00
}
2005-10-10 02:37:55 +00:00
if ( $this -> iVendorId && ( $this -> iVendorId != $oApp -> iVendorId ))
2005-02-06 17:49:48 +00:00
{
2006-07-04 03:43:06 +00:00
if ( ! query_parameters ( " UPDATE appFamily SET vendorId = '?' WHERE appId = '?' " ,
$this -> iVendorId , $this -> iAppId ))
2005-02-06 17:49:48 +00:00
return false ;
2005-10-10 02:37:55 +00:00
$oVendorBefore = new Vendor ( $oApp -> iVendorId );
$oVendorAfter = new Vendor ( $this -> iVendorId );
2006-04-16 16:33:41 +00:00
$sWhatChanged .= " Vendor was changed from " . $oVendorBefore -> sName . " to " . $oVendorAfter -> sName . " . \n \n " ;
2005-02-06 17:49:48 +00:00
}
2005-02-07 23:21:33 +00:00
2005-10-10 02:37:55 +00:00
if ( $this -> iCatId && ( $this -> iCatId != $oApp -> iCatId ))
2005-02-07 23:21:33 +00:00
{
2006-07-04 03:43:06 +00:00
if ( ! query_parameters ( " UPDATE appFamily SET catId = '?' WHERE appId = '?' " ,
$this -> iCatId , $this -> iAppId ))
2005-02-07 23:21:33 +00:00
return false ;
2005-10-10 02:37:55 +00:00
$oCatBefore = new Category ( $oApp -> iCatId );
$oCatAfter = new Category ( $this -> iCatId );
2007-01-06 18:14:36 +00:00
$sWhatChanged .= " Category was changed from " . $oCatBefore -> sName . " to " . $oCatAfter -> sName . " . \n \n " ;
2005-02-07 23:21:33 +00:00
}
2006-01-28 23:04:21 +00:00
if ( $sWhatChanged and ! $bSilent )
2005-09-30 01:55:51 +00:00
$this -> SendNotificationMail ( " edit " , $sWhatChanged );
2005-02-06 17:49:48 +00:00
return true ;
2004-03-15 16:22:00 +00:00
}
2005-02-06 17:49:48 +00:00
/**
* Deletes the application from the database .
* and request the deletion of linked elements .
*/
function delete ( $bSilent = false )
2004-03-15 16:22:00 +00:00
{
2007-07-26 03:47:34 +00:00
$bSuccess = true ;
2005-10-26 02:09:49 +00:00
/* make sure the current user has the appropriate permission to delete
this application */
if ( ! $_SESSION [ 'current' ] -> canDeleteApplication ( $this ))
return false ;
2005-08-05 22:07:41 +00:00
2006-09-26 02:05:55 +00:00
/* we have to retrieve the versions again here because */
/* new ones could have been added since this application */
/* object was created */
//FIXME: how to deal with concurrency issues such as
// if a new version was added during this deletion?
$hResult = $this -> _internal_retrieve_all_versions ();
while ( $oRow = mysql_fetch_object ( $hResult ))
2005-06-30 01:59:32 +00:00
{
2006-09-26 02:05:55 +00:00
$iVersionId = $oRow -> versionId ;
2005-06-30 01:59:32 +00:00
$oVersion = new Version ( $iVersionId );
2007-07-26 03:47:34 +00:00
if ( ! $oVersion -> delete ( $bSilent ))
$bSuccess = false ; // return false, deleting the version failed
2005-06-30 01:59:32 +00:00
}
2006-07-09 00:48:33 +00:00
/* fetch urlsIds */
$aUrlsIds = array ();
$sQuery = " SELECT id
FROM appData
WHERE type = 'url'
AND appId = '?' " ;
if ( $hResult = query_parameters ( $sQuery , $this -> iAppId ))
{
while ( $oRow = mysql_fetch_object ( $hResult ))
{
$aUrlsIds [] = $oRow -> id ;
}
}
foreach ( $aUrlsIds as $iUrlId )
2005-06-30 01:59:32 +00:00
{
$oUrl = new Url ( $iUrlId );
$oUrl -> delete ( $bSilent );
}
// remove any supermaintainers for this application so we don't orphan them
2006-07-24 16:20:40 +00:00
$hResult = Maintainer :: deleteMaintainersForApplication ( $this );
if ( ! $hResult )
2005-06-30 01:59:32 +00:00
{
addmsg ( " Error removing app maintainers for the deleted application! " , " red " );
}
2005-02-06 17:49:48 +00:00
$sQuery = " DELETE FROM appFamily
2006-06-27 19:16:27 +00:00
WHERE appId = '?'
2005-02-06 17:49:48 +00:00
LIMIT 1 " ;
2006-06-27 19:16:27 +00:00
if ( ! ( $hResult = query_parameters ( $sQuery , $this -> iAppId )))
2005-02-06 17:49:48 +00:00
{
2005-06-30 01:59:32 +00:00
addmsg ( " Error deleting application! " , " red " );
2005-02-06 17:49:48 +00:00
}
2005-06-30 01:59:32 +00:00
2005-02-06 17:49:48 +00:00
if ( ! $bSilent )
2005-09-30 01:55:51 +00:00
$this -> SendNotificationMail ( " delete " );
2005-10-26 02:09:49 +00:00
2007-07-26 03:47:34 +00:00
return $bSuccess ;
2005-02-06 17:49:48 +00:00
}
2004-03-15 16:22:00 +00:00
2005-02-06 17:49:48 +00:00
/**
* Move application out of the queue .
*/
function unQueue ()
{
2005-10-26 02:09:49 +00:00
if ( ! $_SESSION [ 'current' ] -> canUnQueueApplication ())
return ;
2006-07-04 03:43:06 +00:00
if ( query_parameters ( " UPDATE appFamily SET queued = '?', keywords = '?' WHERE appId = '?' " ,
" false " , str_replace ( " *** " , " " , $this -> sKeywords ), $this -> iAppId ))
2005-02-06 17:49:48 +00:00
{
2005-08-15 03:44:03 +00:00
$this -> sQueued = 'false' ;
2006-12-31 19:39:41 +00:00
// we send an e-mail to interested people
2005-02-06 17:49:48 +00:00
$this -> mailSubmitter ();
2005-09-30 01:55:51 +00:00
$this -> SendNotificationMail ();
2006-12-09 05:07:25 +00:00
/* Unqueue matching super maintainer request */
$hResultMaint = query_parameters ( " SELECT maintainerId FROM appMaintainers WHERE userId = '?' AND appId = '?' " , $this -> iSubmitterId , $this -> iAppId );
2007-01-20 17:41:43 +00:00
if ( $hResultMaint && mysql_num_rows ( $hResultMaint ))
2006-12-09 05:07:25 +00:00
{
$oMaintainerRow = mysql_fetch_object ( $hResultMaint );
$oMaintainer = new Maintainer ( $oMaintainerRow -> maintainerId );
$oMaintainer -> unQueue ( " OK " );
}
2005-02-06 17:49:48 +00:00
}
2004-03-15 16:22:00 +00:00
}
2005-08-15 03:44:03 +00:00
function Reject ()
{
2005-10-26 02:09:49 +00:00
if ( ! $_SESSION [ 'current' ] -> canRejectApplication ( $this ))
return ;
2005-08-15 03:44:03 +00:00
// If we are not in the queue, we can't move the application out of the queue.
if ( ! $this -> sQueued == 'true' )
return false ;
2006-07-04 03:43:06 +00:00
if ( query_parameters ( " UPDATE appFamily SET queued = '?' WHERE appId = '?' " ,
" rejected " , $this -> iAppId ))
2005-08-15 03:44:03 +00:00
{
$this -> sQueued = 'rejected' ;
2006-12-31 19:39:41 +00:00
// we send an e-mail to interested people
2005-08-15 03:44:03 +00:00
$this -> mailSubmitter ( " reject " );
2005-09-30 01:55:51 +00:00
$this -> SendNotificationMail ( " reject " );
2005-02-06 17:49:48 +00:00
2006-12-31 19:39:41 +00:00
// the application has been rejected
2005-08-15 03:44:03 +00:00
addmsg ( " The application has been rejected. " , " green " );
}
}
2007-07-28 20:08:50 +00:00
function objectGetItemsPerPage ( $bQueued = false )
{
$aItemsPerPage = array ( 25 , 50 , 100 , 200 );
$iDefaultPerPage = 25 ;
return array ( $aItemsPerPage , $iDefaultPerPage );
}
2005-08-15 03:44:03 +00:00
function ReQueue ()
{
2005-10-28 00:11:35 +00:00
if ( ! $_SESSION [ 'current' ] -> canRequeueApplication ( $this ))
2005-08-15 03:44:03 +00:00
return false ;
2006-07-04 03:43:06 +00:00
if ( query_parameters ( " UPDATE appFamily SET queued = '?' WHERE appId = '?' " ,
" true " , $this -> iAppId ))
2005-08-15 03:44:03 +00:00
{
$this -> sQueued = 'true' ;
2006-12-31 19:39:41 +00:00
// we send an e-mail to interested people
2005-09-30 01:55:51 +00:00
$this -> SendNotificationMail ();
2005-08-15 03:44:03 +00:00
// the application has been re-queued
addmsg ( " The application has been re-queued. " , " green " );
}
}
function mailSubmitter ( $sAction = " add " )
2004-03-15 16:22:00 +00:00
{
2007-01-04 02:35:01 +00:00
global $aClean ;
if ( ! isset ( $aClean [ 'sReplyText' ]))
2006-12-09 05:07:25 +00:00
$aClean [ 'sReplyText' ] = " " ;
2006-06-17 06:10:10 +00:00
2005-02-06 17:49:48 +00:00
if ( $this -> iSubmitterId )
{
$oSubmitter = new User ( $this -> iSubmitterId );
2005-08-15 03:44:03 +00:00
switch ( $sAction )
2005-02-06 17:49:48 +00:00
{
2005-08-15 03:44:03 +00:00
case " add " :
2006-02-22 02:20:02 +00:00
$sSubject = " Submitted application accepted " ;
2007-06-14 00:52:57 +00:00
$sMsg = " The application you submitted ( " . $this -> sName . " ) has been accepted by " . $_SESSION [ 'current' ] -> sRealname . " . \n " ;
2007-01-04 00:36:44 +00:00
$sMsg .= " Administrator's Response: \n " ;
2005-08-15 03:44:03 +00:00
break ;
case " reject " :
2006-02-22 02:20:02 +00:00
$sSubject = " Submitted application rejected " ;
2006-12-09 04:29:20 +00:00
$sMsg = " The application you submitted ( " . $this -> sName . " ) has been rejected by " . $_SESSION [ 'current' ] -> sRealname . " . " ;
2006-02-22 02:20:02 +00:00
$sMsg .= " Clicking on the link in this email will allow you to modify and resubmit the application. " ;
$sMsg .= " A link to your queue of applications and versions will also show up on the left hand side of the Appdb site once you have logged in. " ;
2007-04-24 23:48:14 +00:00
$sMsg .= APPDB_ROOT . " objectManager.php?sClass=application_queue " .
" &bIsQueue=true&bIsRejected=true&iId= " . $this -> iAppId . " &sTitle= " .
" Edit+Application \n " ;
2006-02-22 02:20:02 +00:00
$sMsg .= " Reason given: \n " ;
2005-08-15 03:44:03 +00:00
break ;
case " delete " :
2006-02-22 02:20:02 +00:00
$sSubject = " Submitted application deleted " ;
2006-12-09 04:29:20 +00:00
$sMsg = " The application you submitted ( " . $this -> sName . " ) has been deleted by " . $_SESSION [ 'current' ] -> sRealname . " . " ;
2006-02-22 02:20:02 +00:00
$sMsg .= " Reason given: \n " ;
2005-08-15 03:44:03 +00:00
break ;
2007-06-14 00:52:57 +00:00
}
2005-08-15 03:44:03 +00:00
2006-07-13 18:54:10 +00:00
$sMsg .= $aClean [ 'sReplyText' ] . " \n " ;
2005-02-06 17:49:48 +00:00
$sMsg .= " We appreciate your help in making the Application Database better for all users. " ;
2007-06-14 00:52:57 +00:00
2005-02-06 17:49:48 +00:00
mail_appdb ( $oSubmitter -> sEmail , $sSubject , $sMsg );
}
2004-03-15 16:22:00 +00:00
}
2004-11-09 22:42:12 +00:00
2006-09-27 02:44:16 +00:00
function countWithRating ( $sRating )
{
$sQuery = " SELECT DISTINCT count(appId) as total
FROM appVersion
2006-09-30 01:31:04 +00:00
WHERE maintainer_rating = '?'
AND queued = 'false' " ;
2006-09-27 02:44:16 +00:00
if ( $hResult = query_parameters ( $sQuery , $sRating ))
{
$oRow = mysql_fetch_object ( $hResult );
}
return $oRow -> total ;
}
function getWithRating ( $sRating , $iOffset , $iItemsPerPage )
{
$aApps = array ();
$sQuery = " SELECT DISTINCT appId
FROM appVersion
WHERE maintainer_rating = '?'
2006-09-30 01:31:04 +00:00
AND queued = 'false'
2006-09-27 02:44:16 +00:00
ORDER BY appId ASC LIMIT ? , ? " ;
if ( $hResult = query_parameters ( $sQuery , $sRating , $iOffset , $iItemsPerPage ))
{
while ( $aRow = mysql_fetch_row ( $hResult ))
{
array_push ( $aApps , $aRow [ 0 ]);
}
}
return $aApps ;
}
2005-09-30 01:55:51 +00:00
function SendNotificationMail ( $sAction = " add " , $sMsg = null )
2004-12-25 20:03:34 +00:00
{
2007-01-04 02:35:01 +00:00
global $aClean ;
if ( ! isset ( $aClean [ 'sReplyText' ]))
2006-11-25 17:24:44 +00:00
$aClean [ 'sReplyText' ] = " " ;
2006-06-17 06:10:10 +00:00
2005-02-09 23:49:56 +00:00
switch ( $sAction )
2005-02-06 17:49:48 +00:00
{
2005-02-09 23:49:56 +00:00
case " add " :
2006-01-28 23:04:21 +00:00
if ( $this -> sQueued == 'false' ) // Has been accepted.
2005-02-09 23:49:56 +00:00
{
$sSubject = $this -> sName . " has been added by " . $_SESSION [ 'current' ] -> sRealname ;
2007-04-03 02:08:44 +00:00
$sMsg = $this -> objectMakeUrl () . " \n " ;
2005-02-09 23:49:56 +00:00
if ( $this -> iSubmitterId )
{
$oSubmitter = new User ( $this -> iSubmitterId );
$sMsg .= " This application has been submitted by " . $oSubmitter -> sRealname . " . " ;
$sMsg .= " \n " ;
}
2006-07-13 18:54:10 +00:00
if ( $aClean [ 'sReplyText' ])
2006-02-22 02:20:02 +00:00
{
$sMsg .= " Appdb admin reply text: \n " ;
2006-07-13 18:54:10 +00:00
$sMsg .= $aClean [ 'sReplyText' ] . " \n " ; // append the reply text, if there is any
2006-02-22 02:20:02 +00:00
}
2005-02-09 23:49:56 +00:00
addmsg ( " The application was successfully added into the database. " , " green " );
2006-01-28 23:04:21 +00:00
} else
2005-02-06 17:49:48 +00:00
{
2005-02-09 23:49:56 +00:00
$sSubject = $this -> sName . " has been submitted by " . $_SESSION [ 'current' ] -> sRealname ;
$sMsg .= " This application has been queued. " ;
2005-02-06 17:49:48 +00:00
$sMsg .= " \n " ;
2005-08-15 03:44:03 +00:00
addmsg ( " The application you submitted will be added to the database after being reviewed. " , " green " );
2005-02-06 17:49:48 +00:00
}
2005-02-09 23:49:56 +00:00
break ;
case " edit " :
$sSubject = $this -> sName . " has been modified by " . $_SESSION [ 'current' ] -> sRealname ;
2007-04-03 02:08:44 +00:00
$sMsg .= $this -> objectMakeUrl () . " \n " ;
2005-02-09 23:49:56 +00:00
addmsg ( " Application modified. " , " green " );
break ;
case " delete " :
$sSubject = $this -> sName . " has been deleted by " . $_SESSION [ 'current' ] -> sRealname ;
2005-05-09 22:12:19 +00:00
2006-07-13 18:54:10 +00:00
// if sReplyText is set we should report the reason the application was deleted
if ( $aClean [ 'sReplyText' ])
2005-05-09 22:12:19 +00:00
{
$sMsg .= " Reason given: \n " ;
2006-07-13 18:54:10 +00:00
$sMsg .= $aClean [ 'sReplyText' ] . " \n " ; // append the reply text, if there is any
2005-05-09 22:12:19 +00:00
}
2005-02-09 23:49:56 +00:00
addmsg ( " Application deleted. " , " green " );
break ;
2005-08-15 03:44:03 +00:00
case " reject " :
$sSubject = $this -> sName . " has been rejected by " . $_SESSION [ 'current' ] -> sRealname ;
2007-04-24 23:48:14 +00:00
$sMsg .= APPDB_ROOT . " objectManager.php?sClass=application_queue " .
" &bIsQueue=true&bIsRejected=true&iId= " . $this -> iAppId . " &sTitle= " .
" Edit+Application \n " ;
2005-08-15 03:44:03 +00:00
2006-07-13 18:54:10 +00:00
// if sReplyText is set we should report the reason the application was rejected
if ( $aClean [ 'sReplyText' ])
2005-08-15 03:44:03 +00:00
{
$sMsg .= " Reason given: \n " ;
2006-07-13 18:54:10 +00:00
$sMsg .= $aClean [ 'sReplyText' ] . " \n " ; // append the reply text, if there is any
2005-08-15 03:44:03 +00:00
}
addmsg ( " Application rejected. " , " green " );
break ;
2005-02-06 17:49:48 +00:00
}
2006-06-29 15:54:29 +00:00
$sEmail = User :: get_notify_email_address_list ( $this -> iAppId );
2005-02-06 17:49:48 +00:00
if ( $sEmail )
mail_appdb ( $sEmail , $sSubject , $sMsg );
}
2005-10-10 02:37:55 +00:00
/* output a html table and this applications values to the fields for editing */
2007-04-24 23:48:14 +00:00
function outputEditor ( $sVendorName = " " )
2005-10-10 02:37:55 +00:00
{
HtmlAreaLoaderScript ( array ( " app_editor " ));
2006-07-06 17:27:54 +00:00
echo '<input type="hidden" name="iAppId" value="' . $this -> iAppId . '">' ;
2005-10-16 04:24:37 +00:00
2007-04-24 23:48:14 +00:00
/* Used to distinguish between the first step of entering an application
name and the full editor displayed here */
echo '<input type="hidden" name="bMainAppForm" value="true" />' . " \n " ;
2005-10-10 02:37:55 +00:00
echo html_frame_start ( " Application Form " , " 90% " , " " , 0 );
2007-05-02 01:08:22 +00:00
echo " <table class='color0' width='100%' border=0 cellpadding=2 cellspacing=0> \n " ;
2005-10-10 02:37:55 +00:00
echo '<tr valign=top><td class="color0"><b>Application name</b></td>' , " \n " ;
2006-07-06 17:27:54 +00:00
echo '<td><input size="20" type="text" name="sAppName" value="' . $this -> sName . '"></td></tr>' , " \n " ;
2005-10-10 02:37:55 +00:00
// app Category
$w = new TableVE ( " view " );
echo '<tr valign=top><td class="color0"><b>Category</b></td><td>' , " \n " ;
2007-07-23 19:56:43 +00:00
echo $w -> make_option_list ( " iAppCatId " , $this -> iCatId , " appCategory " , " catId " , " catName " );
2005-10-10 02:37:55 +00:00
echo '</td></tr>' , " \n " ;
// vendor name
echo '<tr valign=top><td class="color0"><b>Vendor</b></td>' , " \n " ;
2007-04-24 23:48:14 +00:00
echo '<td>If it is not on the list please add it using the form below</td></tr>' , " \n " ;
2005-10-10 02:37:55 +00:00
// alt vendor
$x = new TableVE ( " view " );
echo '<tr valign=top><td class="color0"> </td><td>' , " \n " ;
2007-07-23 19:56:43 +00:00
echo $x -> make_option_list ( " iAppVendorId " ,
$this -> iVendorId , " vendor " , " vendorId " , " vendorName " ,
array ( " vendor.queued " , " false " ));
2005-10-10 02:37:55 +00:00
echo '</td></tr>' , " \n " ;
// url
echo '<tr valign=top><td class="color0"><b>URL</b></td>' , " \n " ;
2006-07-06 17:27:54 +00:00
echo '<td><input size="20" type=text name="sAppWebpage" value="' . $this -> sWebpage . '"></td></tr>' , " \n " ;
2005-10-10 02:37:55 +00:00
echo '<tr valign=top><td class="color0"><b>Keywords</b></td>' , " \n " ;
2007-05-02 01:08:22 +00:00
echo '<td><input size="75%" type="text" name="sAppKeywords" value="' . $this -> sKeywords . '"></td></tr>' , " \n " ;
2005-10-10 02:37:55 +00:00
2006-05-04 00:23:39 +00:00
echo '<tr valign=top><td class="color0"><b>Application description</b></td>' , " \n " ;
2006-07-06 17:27:54 +00:00
echo '<td><p><textarea cols="80" rows="20" id="app_editor" name="shAppDescription">' ;
2005-10-10 02:37:55 +00:00
2006-06-26 00:44:44 +00:00
echo $this -> sDescription . '</textarea></p></td></tr>' , " \n " ;
2005-10-10 02:37:55 +00:00
2006-12-09 05:07:25 +00:00
// Allow user to apply as super maintainer if this is a new app
if ( ! $this -> iAppId )
{
2007-01-20 17:41:43 +00:00
$sMaintainerOptions =
" <input type= \" radio \" name= \" iMaintainerRequest \" value= \" 0 \" /> " .
" I would not like to become a maintainer<br /> \n " .
" <input type= \" radio \" name= \" iMaintainerRequest \" " .
" value= \" " . MAINTAINER_REQUEST . " \" /> " .
" I would like to be a maintainer of the new version only<br /> \n " .
" <input type= \" radio \" name= \" iMaintainerRequest \" " .
" value= \" " . SUPERMAINTAINER_REQUEST . " \" /> " .
" I would like to be a maintainer of the entire application<br /> \n " ;
$sMaintainerOptionsSelected = str_replace (
" value= \" $this->iMaintainerRequest\ " " ,
" value= \" $this->iMaintainerRequest\ " checked = \ " checked \" " ,
$sMaintainerOptions );
echo html_tr ( array (
array ( " <b>Maintainer options</b> " , " class= \" color0 \" " ),
$sMaintainerOptionsSelected ),
" " , " valign= \" top \" " );
2006-12-09 05:07:25 +00:00
}
2005-10-10 02:37:55 +00:00
echo " </table> \n " ;
echo html_frame_end ();
}
2006-07-08 22:06:28 +00:00
function CheckOutputEditorInput ( $aValues )
2005-10-10 02:37:55 +00:00
{
$errors = " " ;
2006-07-08 22:06:28 +00:00
if ( empty ( $aValues [ 'iAppCatId' ]))
2005-10-10 02:37:55 +00:00
$errors .= " <li>Please enter a category for your application.</li> \n " ;
2006-07-08 22:06:28 +00:00
if ( strlen ( $aValues [ 'sAppName' ]) > 200 )
2005-10-10 02:37:55 +00:00
$errors .= " <li>Your application name is too long.</li> \n " ;
2006-07-08 22:06:28 +00:00
if ( empty ( $aValues [ 'sAppName' ]))
2005-10-10 02:37:55 +00:00
$errors .= " <li>Please enter an application name.</li> \n " ;
// No vendor entered, and nothing in the list is selected
2007-01-28 23:28:14 +00:00
if ( empty ( $aValues [ 'sVendorName' ]) && ! $aValues [ 'iAppVendorId' ])
2005-10-10 02:37:55 +00:00
$errors .= " <li>Please enter a vendor.</li> \n " ;
2006-07-08 22:06:28 +00:00
if ( empty ( $aValues [ 'shAppDescription' ]))
2005-10-10 02:37:55 +00:00
$errors .= " <li>Please enter a description of your application.</li> \n " ;
return $errors ;
}
2007-01-17 03:18:49 +00:00
/* retrieves values from $aValues that were output by outputEditor() */
/* $aValues can be $_REQUEST or any array with the values from outputEditor() */
2006-07-08 22:06:28 +00:00
function GetOutputEditorValues ( $aValues )
2005-10-10 02:37:55 +00:00
{
2006-07-08 22:06:28 +00:00
$this -> iAppId = $aValues [ 'iAppId' ];
$this -> sName = $aValues [ 'sAppName' ];
$this -> sDescription = $aValues [ 'shAppDescription' ];
$this -> iCatId = $aValues [ 'iAppCatId' ];
$this -> iVendorId = $aValues [ 'iAppVendorId' ];
$this -> sWebpage = $aValues [ 'sAppWebpage' ];
$this -> sKeywords = $aValues [ 'sAppKeywords' ];
2007-01-20 17:41:43 +00:00
$this -> iMaintainerRequest = $aValues [ 'iMaintainerRequest' ];
2005-10-10 02:37:55 +00:00
}
2006-01-29 04:04:46 +00:00
/* display this application */
function display ()
{
/* is this user supposed to view this version? */
if ( ! $_SESSION [ 'current' ] -> canViewApplication ( $this ))
2006-07-06 18:44:56 +00:00
util_show_error_page_and_exit ( " Something went wrong with the application or version id " );
2006-01-29 04:04:46 +00:00
// header
apidb_header ( " Viewing App - " . $this -> sName );
// cat display
2006-07-11 18:53:06 +00:00
$oCategory = new Category ( $this -> iCatId );
$oCategory -> display ( $this -> iAppId );
2006-01-29 04:04:46 +00:00
// set Vendor
$oVendor = new Vendor ( $this -> iVendorId );
// set URL
$appLinkURL = ( $this -> sWebpage ) ? " <a href= \" " . $this -> sWebpage . " \" > " . substr ( stripslashes ( $this -> sWebpage ), 0 , 30 ) . " </a> " : " " ;
// start display application
echo html_frame_start ( " " , " 98% " , " " , 0 );
echo " <tr><td class=color4 valign=top> \n " ;
echo " <table> \n " ;
echo " <tr><td> \n " ;
echo ' <table width="250" border="0" cellpadding="3" cellspacing="1">' , " \n " ;
echo " <tr class=color0 valign=top><td width= \" 100 \" ><b>Name</b></td><td width='100%'> " . $this -> sName . " </td> \n " ;
echo " <tr class= \" color1 \" ><td><b>Vendor</b></td><td> " .
2007-03-13 20:59:45 +00:00
$oVendor -> objectMakeLink () . " \n " ;
2006-01-29 04:04:46 +00:00
echo " </td></tr> \n " ;
// main URL
2007-01-21 18:06:53 +00:00
echo " <tr class= \" color0 \" ><td><b>URL</b></td><td> " . $appLinkURL . " </td></tr> \n " ;
2006-01-29 04:04:46 +00:00
// optional links
2007-01-19 01:42:56 +00:00
if ( $sUrls = url :: display ( NULL , $this -> iAppId ))
echo $sUrls ;
2006-01-29 04:04:46 +00:00
// image
2006-07-21 04:18:28 +00:00
$img = Screenshot :: get_random_screenshot_img ( $this -> iAppId , null , false );
2006-01-29 04:04:46 +00:00
echo " <tr><td align= \" center \" colspan= \" 2 \" > $img </td></tr> \n " ;
2007-01-19 01:42:56 +00:00
2006-01-29 04:04:46 +00:00
echo " </table> \n " ; /* close of name/vendor/bugs/url table */
echo " </td></tr> \n " ;
echo " <tr><td> \n " ;
// Display all supermaintainers maintainers of this application
echo " <table class= \" color4 \" width= \" 250 \" border= \" 1 \" > \n " ;
echo " <tr><td align= \" left \" ><b>Super maintainers:</b></td></tr> \n " ;
2006-07-24 16:20:40 +00:00
$other_maintainers = Maintainer :: getSuperMaintainersUserIdsFromAppId ( $this -> iAppId );
2006-01-29 04:04:46 +00:00
if ( $other_maintainers )
{
echo " <tr><td align= \" left \" ><ul> \n " ;
while ( list ( $index , $userIdValue ) = each ( $other_maintainers ))
{
$oUser = new User ( $userIdValue );
2007-03-31 17:25:12 +00:00
echo " <li> " . $oUser -> objectMakeLink () . " </li> \n " ;
2006-01-29 04:04:46 +00:00
}
echo " </ul></td></tr> \n " ;
} else
{
echo " <tr><td align=right>No maintainers.Volunteer today!</td></tr> \n " ;
}
// Display the app maintainer button
echo ' <tr><td align="center">' ;
if ( $_SESSION [ 'current' ] -> isLoggedIn ())
{
/* are we already a maintainer? */
if ( $_SESSION [ 'current' ] -> isSuperMaintainer ( $this -> iAppId )) /* yep */
{
2006-07-06 17:27:54 +00:00
echo ' <form method="post" name="sMessage" action="maintainerdelete.php"><input type=submit value="Remove yourself as a super maintainer" class="button">' ;
2006-01-29 04:04:46 +00:00
} else /* nope */
{
2006-07-06 17:27:54 +00:00
echo ' <form method="post" name="sMessage" action="maintainersubmit.php"><input type="submit" value="Be a super maintainer of this app" class="button" title="Click here to know more about super maintainers.">' ;
2006-01-29 04:04:46 +00:00
}
2006-07-06 17:27:54 +00:00
echo " <input type= \" hidden \" name= \" iAppId \" value= \" " . $this -> iAppId . " \" > " ;
echo " <input type= \" hidden \" name= \" iSuperMaintainer \" value= \" 1 \" > " ; /* set superMaintainer to 1 because we are at the appFamily level */
2006-01-29 04:04:46 +00:00
echo " </form> " ;
if ( $_SESSION [ 'current' ] -> isSuperMaintainer ( $this -> iAppId ) || $_SESSION [ 'current' ] -> hasPriv ( " admin " ))
{
2006-07-07 19:23:58 +00:00
echo ' <form method="post" name="sEdit" action="admin/editAppFamily.php"><input type="hidden" name="iAppId" value="' . $this -> iAppId . '"><input type="submit" value="Edit Application" class="button"></form>' ;
2006-01-29 04:04:46 +00:00
}
if ( $_SESSION [ 'current' ] -> isLoggedIn ())
{
2007-04-19 23:45:15 +00:00
echo '<form method="post" name="sMessage" action="' .
'objectManager.php?sClass=version_queue&iAppId=' . $this -> iAppId
. '&sTitle=Submit+New+Version&sAction=add">' ;
2006-01-29 04:04:46 +00:00
echo '<input type=submit value="Submit new version" class="button">' ;
echo '</form>' ;
}
if ( $_SESSION [ 'current' ] -> hasPriv ( " admin " ))
{
2006-07-06 17:27:54 +00:00
$url = BASE . " admin/deleteAny.php?sWhat=appFamily&iAppId= " . $this -> iAppId . " &sConfirmed=yes " ;
echo " <form method= \" post \" name= \" sEdit \" action= \" javascript:deleteURL('Are you sure?', ' " . $url . " ') \" ><input type= \" submit \" value= \" Delete App \" class= \" button \" ></form> " ;
echo ' <form method="post" name="sEdit" action="admin/editBundle.php"><input type="hidden" name="iBundleId" value="' . $this -> iAppId . '"><input type="submit" value="Edit Bundle" class="button"></form>' ;
2006-01-29 04:04:46 +00:00
}
} else
{
2006-07-06 17:27:54 +00:00
echo '<form method="post" action="account.php?sCmd=login"><input type="submit" value="Log in to become a super maintainer" class="button"></form>' ;
2006-01-29 04:04:46 +00:00
}
echo " </td></tr> \n " ;
echo " </table> \n " ; /* close of super maintainers table */
echo " </td></tr> \n " ;
echo " </table> \n " ; /* close the table that contains the whole left hand side of the upper table */
// description
echo " <td class=color2 valign=top width='100%'> \n " ;
2007-04-23 02:33:19 +00:00
echo " <div class='info_container'> \n " ;
echo " \t <div class='title_class'> \n " ;
echo " \t \t Description \n " ;
echo " \t </div> \n " ; // close the 'title_class' div
echo " \t <div class='info_contents'> \n " ;
echo " \t \t " . $this -> sDescription . " \n " ;
echo " \t </div> \n " ; // close the 'info_contents' div
echo " </div> \n " ; // close the 'info_container' div
2006-01-29 04:04:46 +00:00
echo html_frame_end ( " For more details and user comments, view the versions of this application. " );
// display versions
2006-06-29 16:07:19 +00:00
Version :: display_approved ( $this -> aVersionsIds );
2006-01-29 04:04:46 +00:00
// display bundle
display_bundle ( $this -> iAppId );
}
2005-02-02 02:38:20 +00:00
2006-06-29 16:07:19 +00:00
function lookup_name ( $appId )
{
if ( ! $appId ) return null ;
$result = query_parameters ( " SELECT appName FROM appFamily WHERE appId = '?' " ,
$appId );
if ( ! $result || mysql_num_rows ( $result ) != 1 )
return null ;
$ob = mysql_fetch_object ( $result );
return $ob -> appName ;
}
2005-10-28 00:11:35 +00:00
2006-12-27 03:26:16 +00:00
/* List applications submitted by a given user */
function listSubmittedBy ( $iUserId , $bQueued = true )
{
2007-03-13 20:59:45 +00:00
$hResult = query_parameters ( " SELECT appId, appName, vendorId, description,
submitTime FROM appFamily
WHERE
submitterId = '?'
AND
queued = '?'
ORDER BY appId " , $iUserId , $bQueued ? " true " : " false " );
2006-12-27 03:26:16 +00:00
if ( ! $hResult || ! mysql_num_rows ( $hResult ))
return false ;
2007-07-23 19:56:43 +00:00
$oTable = new Table ();
$oTable -> SetWidth ( " 100% " );
$oTable -> SetAlign ( " center " );
$oTableRow = new TableRow ();
$oTableRow -> AddTextCell ( " Application " );
$oTableRow -> AddTextCell ( " Description " );
$oTableRow -> AddTextCell ( " Vendor " );
$oTableRow -> AddTextCell ( " Submission Date " );
$oTableRow -> SetClass ( " color4 " );
$oTable -> SetHeader ( $oTableRow );
2006-12-27 03:26:16 +00:00
for ( $i = 1 ; $oRow = mysql_fetch_object ( $hResult ); $i ++ )
2007-03-13 20:59:45 +00:00
{
2007-07-23 19:56:43 +00:00
2007-03-13 20:59:45 +00:00
$oVendor = new vendor ( $oRow -> vendorId );
2007-04-03 02:08:44 +00:00
$oApp = new application ( $oRow -> appId );
2007-07-23 19:56:43 +00:00
$oTableRow = new TableRow ();
$oTableRow -> AddTextCell ( $oApp -> objectMakeLink ());
$oTableRow -> AddTextCell ( $oRow -> description );
$oTableRow -> AddTextCell ( $oVendor -> objectMakeLink ());
$oTableRow -> AddTextCell ( print_date ( mysqltimestamp_to_unixtimestamp ( $oRow -> submitTime )));
$oTableRow -> SetClass (( $i % 2 ) ? " color0 " : " color1 " );
$oTable -> AddRow ( $oTableRow );
2007-03-13 20:59:45 +00:00
}
2006-12-27 03:26:16 +00:00
2007-07-23 19:56:43 +00:00
return $oTable -> GetString ();
2006-12-27 03:26:16 +00:00
}
2007-03-13 00:26:31 +00:00
2007-03-24 02:04:16 +00:00
function objectMakeUrl ()
{
2007-04-09 01:24:34 +00:00
$sUrl = APPDB_ROOT . " appview.php?iAppId= $this->iAppId " ;
2007-03-24 02:04:16 +00:00
return $sUrl ;
}
2007-03-13 00:26:31 +00:00
function objectMakeLink ()
{
2007-03-24 02:04:16 +00:00
$sLink = " <a href= \" " . $this -> objectMakeUrl () . " \" > " .
2007-03-13 00:26:31 +00:00
$this -> sName . " </a> " ;
return $sLink ;
}
2007-03-17 23:45:54 +00:00
2007-07-28 20:08:50 +00:00
function objectGetEntries ( $bQueued , $bRejected , $iRows = 0 , $iStart = 0 , $sOrderBy = " appId " )
2007-03-17 23:45:54 +00:00
{
2007-07-28 20:08:50 +00:00
$sLimit = " " ;
/* Should we add a limit clause to the query? */
if ( $iRows || $iStart )
{
$sLimit = " LIMIT ?,? " ;
/* Selecting 0 rows makes no sense , so we assume the user wants to select all of them
after an offset given by iStart */
if ( ! $iRows )
$iRows = maintainer :: objectGetEntriesCount ( $bQueued , $bRejected );
}
2007-03-17 23:45:54 +00:00
$sQuery = " SELECT * FROM appFamily WHERE
appFamily . queued = '?' " ;
2007-03-24 18:30:16 +00:00
$sQueued = objectManager :: getQueueString ( $bQueued , $bRejected );
2007-03-17 23:45:54 +00:00
if ( $bQueued && ! application :: canEdit ())
{
2007-04-22 00:02:30 +00:00
/* Without global edit rights a user can only view his rejected apps */
if ( ! $bRejected )
return FALSE ;
2007-07-28 20:08:50 +00:00
$sQuery .= " AND appFamily.submitterId = '?' ORDER BY '?' $sLimit " ;
if ( $sLimit )
{
$hResult = query_parameters ( $sQuery , $sQueued ,
$_SESSION [ 'current' ] -> iUserId , $sOrderBy ,
$iStart , $iRows );
} else
{
$hResult = query_parameters ( $sQuery , $sQueued ,
$_SESSION [ 'current' ] -> iUserId , $sOrderBy );
}
2007-03-17 23:45:54 +00:00
} else
{
2007-07-28 20:08:50 +00:00
$sQuery .= " ORDER BY '?' $sLimit " ;
if ( $sLimit )
{
$hResult = query_parameters ( $sQuery , $sQueued , $sOrderBy ,
$iStart , $iRows );
} else
{
$hResult = query_parameters ( $sQuery , $sQueued , $sOrderBy );
}
2007-03-17 23:45:54 +00:00
}
if ( ! $hResult )
return FALSE ;
return $hResult ;
}
function objectGetHeader ()
{
$aCells = array (
" Submission Date " ,
" Submitter " ,
" Vendor " ,
" Application " );
return $aCells ;
}
2007-06-14 00:50:35 +00:00
function objectGetTableRow ()
2007-03-17 23:45:54 +00:00
{
$oUser = new user ( $this -> iSubmitterId );
$oVendor = new vendor ( $this -> iVendorId );
if ( ! $oVendor -> sName )
2007-03-25 03:51:20 +00:00
$sVendor = get_vendor_from_keywords ( $this -> sKeywords );
else
$sVendor = $oVendor -> objectMakeLink ();
2007-03-17 23:45:54 +00:00
2007-07-23 19:56:43 +00:00
$oTableRow = new TableRow ();
$oTableRow -> AddTextCell ( print_date ( mysqltimestamp_to_unixtimestamp ( $this -> sSubmitTime )));
$oTableRow -> AddTextCell ( $oUser -> objectMakeLink ());
$oTableRow -> AddTextCell ( $sVendor );
$oTableRow -> AddTextCell ( $this -> sName );
2007-03-17 23:45:54 +00:00
2007-07-23 19:56:43 +00:00
$oOMTableRow = new OMTableRow ( $oTableRow );
return $oOMTableRow ;
2007-03-17 23:45:54 +00:00
}
function canEdit ()
{
if ( $_SESSION [ 'current' ] -> hasPriv ( " admin " ))
return TRUE ;
2007-07-24 01:45:19 +00:00
if ( isset ( $this ) && is_object ( $this ) && $this -> iAppId )
2007-04-22 00:02:30 +00:00
{
if ( maintainer :: isUserSuperMaintainer ( $_SESSION [ 'current' ],
$this -> iAppId ))
return TRUE ;
if ( $this -> sQueued != " true " && $this -> iSubmitterId =
$_SESSION [ 'current' ] -> iUserId )
return TRUE ;
return FALSE ;
}
2007-03-17 23:45:54 +00:00
else
return FALSE ;
}
2007-04-21 17:51:42 +00:00
function mustBeQueued ()
{
if ( $_SESSION [ 'current' ] -> hasPriv ( " admin " ))
return FALSE ;
else
return TRUE ;
}
2007-03-17 23:45:54 +00:00
function objectDisplayQueueProcessingHelp ()
{
echo " <p>This is the list of applications waiting for your approval, " .
" or to be rejected.</p> \n " ;
echo " <p>To view a submission, click on its name. " .
" From that page you can edit, delete or approve it into the AppDB.</p> \n " ;
}
2007-04-03 00:00:48 +00:00
2007-04-24 23:48:14 +00:00
function objectDisplayAddItemHelp ()
{
/* We don't display the full help on the page where you only input the app name */
if ( ! $this -> sName )
{
echo " <p>First, please enter the name of the application you wish to add. " ;
echo " This will allow you to determine whether there is already " ;
echo " an entry for it in the database.</p> \n " ;
} else
{
echo " <p>This page is for submitting new applications to be added to the \n " ;
echo " database. The application will be reviewed by an AppDB Administrator, \n " ;
echo " and you will be notified via e-mail if it is added to the database or rejected.</p> \n " ;
echo " <p><h2>Before continuing, please ensure that you have</h2> \n " ;
echo " <ul> \n " ;
echo " <li>Entered a valid version for this application. This is the application \n " ;
echo " version, NOT the Wine version (which goes in the test results section of the template)</li> \n " ;
echo " <li>Tested this application under Wine. There are tens of thousands of applications \n " ;
echo " for Windows, we do not need placeholder entries in the database. Please enter as complete \n " ;
echo " as possible test results in the version template provided below</li> \n " ;
echo " </ul></p> " ;
2007-06-10 01:30:28 +00:00
echo " <p>Having app descriptions just sponsoring the app \n " ;
2007-04-24 23:48:14 +00:00
echo " (yes, some vendors want to use the appdb for this) or saying ‘I haven’t tried this app with Wine’ " ;
2007-06-10 01:30:28 +00:00
echo " will not help Wine development or Wine users. Application descriptions should be exactly that and only that, \n " ;
echo " they should not contain any information about how well the app works, just what the app is. The same applies to the \n " ;
echo " version information, it should be only information on what is unique or different about that version of the application, \n " ;
echo " not how well that version works or how great you think a new feature is.</p> \n " ;
echo " <p>When you reach the \" Test Form \" part (What works, What doesn't work, etc) please be detailed \n " ;
echo " about how well it worked and if any workarounds were needed but do NOT paste chunks of terminal output.</p> \n " ;
echo " <p>Please write information in proper English with correct grammar and punctuation!</p> \n " ;
2007-04-24 23:48:14 +00:00
echo " <b><span style= \" color:red \" >Please only submit applications/versions that you have tested. \n " ;
echo " Submissions without test information or not using the provided template will be rejected. \n " ;
echo " If you are unable to see the in-browser editors below, please try Firefox, Mozilla or Opera browsers. \n </span></b> " ;
echo " <p>After your application has been added, you will be able to submit screenshots for it, post " ;
echo " messages in its forums or become a maintainer to help others trying to run the application.</p> " ;
}
}
2007-07-23 19:56:43 +00:00
2007-04-03 00:00:48 +00:00
function objectGetEntriesCount ( $bQueued , $bRejected )
{
$sQueued = objectManager :: getQueueString ( $bQueued , $bRejected );
if ( $bQueued && ! application :: canEdit ())
{
/* Without edit rights users can only resubmit their rejected entries */
if ( ! $bRejected )
return FALSE ;
$sQuery = " SELECT COUNT(appId) as count FROM appFamily WHERE
submitterId = '?'
AND
queued = '?' " ;
$hResult = query_parameters ( $sQuery , $_SESSION [ 'current' ] -> iUserId ,
$sQueued );
} else
{
$sQuery = " SELECT COUNT(appId) as count FROM appFamily WHERE queued = '?' " ;
$hResult = query_parameters ( $sQuery , $sQueued );
}
if ( ! $hResult )
return FALSE ;
if ( ! $oRow = mysql_fetch_object ( $hResult ))
return FALSE ;
return $oRow -> count ;
}
2007-04-24 23:48:14 +00:00
function objectMoveChildren ( $iNewId )
{
/* Keep track of how many children we have moved */
$iCount = 0 ;
foreach ( $this -> aVersionsIds as $iVersionId )
{
$oVersion = new version ( $iVersionId );
$oVersion -> iAppId = $iNewId ;
if ( $oVersion -> update ())
$iCount ++ ;
else
return FALSE ;
}
/* If no errors occured we return the number of moved children */
return $iCount ;
}
2007-04-29 23:00:01 +00:00
function allowAnonymousSubmissions ()
{
return FALSE ;
}
2007-06-14 00:50:35 +00:00
function objectGetId ()
{
return $this -> iAppId ;
}
2007-03-17 23:45:54 +00:00
}
function get_vendor_from_keywords ( $sKeywords )
{
$aKeywords = explode ( " *** " , $sKeywords );
$iLastElt = ( sizeOf ( $aKeywords ) - 1 );
return ( $aKeywords [ $iLastElt ]);
2005-10-28 00:11:35 +00:00
}
2006-06-29 16:07:19 +00:00
2004-11-09 22:42:12 +00:00
?>