article_files.php

Go to the documentation of this file.
00001 <?php
00002 
00008 class Article_Files extends oxAdminDetails
00009 {
00015     protected $_sThisTemplate = 'article_files.tpl';
00016 
00022     protected $_oArticle = null;
00023 
00030     public function render()
00031     {
00032         parent::render();
00033 
00034         if ( !$this->getConfig()->getConfigParam( 'blEnableDownloads' ) ) {
00035             oxUtilsView::getInstance()->addErrorToDisplay( 'EXCEPTION_DISABLED_DOWNLOADABLE_PRODUCTS' );
00036         }
00037         $oArticle = $this->getArticle();
00038         // variant handling
00039         if ( $oArticle->oxarticles__oxparentid->value) {
00040             $oParentArticle = oxNew( 'oxarticle' );
00041             $oParentArticle->load( $oArticle->oxarticles__oxparentid->value);
00042             $oArticle->oxarticles__oxisdownloadable = new oxField( $oParentArticle->oxarticles__oxisdownloadable->value );
00043             $this->_aViewData["oxparentid"] = $oArticle->oxarticles__oxparentid->value;
00044         }
00045 
00046         return $this->_sThisTemplate;
00047     }
00048 
00055     public function save()
00056     {
00057         // save article changes
00058         $aArticleChanges = oxConfig::getParameter('editval');
00059         $oArticle = $this->getArticle();
00060         $oArticle->assign($aArticleChanges);
00061         $oArticle->save();
00062 
00063         //update article files
00064         $aArticleFiles = oxConfig::getParameter('article_files');
00065         if (count($aArticleFiles) > 0) {
00066             foreach ($aArticleFiles as $sArticleFileId => $aArticleFileUpdate) {
00067                 $oArticleFile = oxNew('oxFile');
00068                 $oArticleFile->load($sArticleFileId);
00069                 $aArticleFileUpdate  = $this->_processOptions($aArticleFileUpdate);
00070                 $oArticleFile->assign($aArticleFileUpdate);
00071                 $oArticleFile->save();
00072             }
00073         }
00074     }
00075 
00083     public function getArticle($blReset = false)
00084     {
00085         if ($this->_oArticle !== null && !$blReset) {
00086             return $this->_oArticle;
00087         }
00088         $sOxid = $this->getEditObjectId();
00089         $this->_oArticle = oxNewArticle($sOxid);
00090 
00091         return $this->_oArticle;
00092     }
00093 
00099     public function upload()
00100     {
00101         $soxId = $this->getEditObjectId();
00102 
00103         $aParams  = oxConfig::getParameter( "newfile");
00104         $aParams  = $this->_processOptions($aParams);
00105         $aNewFile = $this->getConfig()->getUploadedFile( "newArticleFile");
00106 
00107         $sExistingFilename = trim(oxConfig::getParameter( "existingFilename"));
00108 
00109         //uploading and processing supplied file
00110         $oArticleFile = oxNew( "oxFile" );
00111         $oArticleFile->assign($aParams);
00112 
00113         if (!$aNewFile['name'] && !$oArticleFile->oxfiles__oxfilename->value) {
00114             return oxUtilsView::getInstance()->addErrorToDisplay( 'EXCEPTION_NOFILE' );
00115         }
00116 
00117         if ($aNewFile['name']) {
00118             $oArticleFile->oxfiles__oxfilename        = new oxField($aNewFile['name'], oxField::T_RAW);
00119             try {
00120                 $oArticleFile->processFile( 'newArticleFile' );
00121             } catch (Exception $e) {
00122                 return oxUtilsView::getInstance()->addErrorToDisplay( $e->getMessage() );
00123             }
00124         }
00125 
00126         //save media url
00127         $oArticleFile->oxfiles__oxartid       = new oxField($soxId, oxField::T_RAW);
00128         $oArticleFile->save();
00129     }
00130 
00136     public function deletefile()
00137     {
00138         $sArticleId = $this->getEditObjectId();
00139         $sArticleFileId = oxConfig::getParameter('fileid');
00140         $oArticleFile = oxNew('oxFile');
00141         $oArticleFile->load($sArticleFileId);
00142         if ($oArticleFile->hasValidDownloads()) {
00143             return oxUtilsView::getInstance()->addErrorToDisplay( 'EXCEPTION_DELETING_VALID_FILE' );
00144         }
00145         if ($oArticleFile->oxfiles__oxartid->value == $sArticleId) {
00146             $oArticleFile->delete();
00147         }
00148     }
00149 
00157     public function getConfigOptionValue( $iOption )
00158     {
00159         $iOption = ( $iOption < 0 ) ? "" : $iOption;
00160         return $iOption;
00161     }
00162 
00170     protected function _processOptions($aParams)
00171     {
00172         if (!is_array($aParams)) {
00173             $aParams = array();
00174         }
00175 
00176         if (!isset($aParams["oxfiles__oxdownloadexptime"]) || $aParams["oxfiles__oxdownloadexptime"] == "") {
00177             $aParams["oxfiles__oxdownloadexptime"] = -1;
00178         }
00179         if (!isset($aParams["oxfiles__oxlinkexptime"]) || $aParams["oxfiles__oxlinkexptime"] == "") {
00180             $aParams["oxfiles__oxlinkexptime"] = -1;
00181         }
00182         if (!isset($aParams["oxfiles__oxmaxunregdownloads"]) || $aParams["oxfiles__oxmaxunregdownloads"] == "") {
00183             $aParams["oxfiles__oxmaxunregdownloads"] = -1;
00184         }
00185         if (!isset($aParams["oxfiles__oxmaxdownloads"]) || $aParams["oxfiles__oxmaxdownloads"] == "") {
00186             $aParams["oxfiles__oxmaxdownloads"] = -1;
00187         }
00188         return $aParams;
00189     }
00190 }