Current Path :
/
home
/
develito
/
www
/
components
/
com_attachments
/
models
/
Or
Select Your Path :
Upload File :
New :
File
Dir
/home/develito/www/components/com_attachments/models/attachment.php
<?php /** * Attachment model definition * * @package Attachments * @subpackage Attachments_Component * * @copyright Copyright (C) 2007-2018 Jonathan M. Cameron, All Rights Reserved * @license http://www.gnu.org/licenses/gpl-3.0.html GNU/GPL * @link http://joomlacode.org/gf/project/attachments/frs/ * @author Jonathan M. Cameron */ defined('_JEXEC') or die('Restricted access'); /** Define the legacy classes, if necessary */ require_once(JPATH_SITE.'/components/com_attachments/legacy/model.php'); /** * Attachment Model * * @package Attachments */ class AttachmentsModelAttachment extends JModelLegacy { /** * Attachment ID */ var $_id = null; /** * Attachment object/data * * @var object */ var $_attachment = null; /** * Constructor, build object and determines its ID */ public function __construct() { parent::__construct(); // Get the cid array from the request $cid = JRequest::getVar('cid', false, 'DEFAULT', 'array'); if ($cid) { // Accept only the first id from the array $id = $cid[0]; } else { $id = JRequest::getInt('id',0); } $this->setId($id); } /** * Reset the model ID and data */ public function setId($id=0) { $this->_id = $id; $this->_attachment = null; } /** * Load the attachment data * * @return true if loaded successfully */ private function _loadAttachment() { if ($this->_id == 0) { return false; } if ( empty($this->_attachment) ) { $user = JFactory::getUser(); $user_levels = $user->getAuthorisedViewLevels(); // If the user is not logged in, add extra view levels (if configured) if ( $user->get('username') == '' ) { // Get the component parameters jimport('joomla.application.component.helper'); $params = JComponentHelper::getParams('com_attachments'); // Add the specified access levels $guest_levels = $params->get('show_guest_access_levels', Array('1')); if (is_array($guest_levels)) { foreach ($guest_levels as $glevel) { $user_levels[] = $glevel; } } else { $user_levels[] = $glevel; } } $user_levels = implode(',', array_unique($user_levels)); // Load the attachment data and make sure this user has access $db = $this->getDbo(); $query = $db->getQuery(true); $query->select('a.*, a.id as id'); $query->from('#__attachments as a'); $query->where('a.id = '.(int)$this->_id); if ( !$user->authorise('core.admin') ) { $query->where('a.access in ('.$user_levels.')'); } $db->setQuery($query, 0, 1); $this->_attachment = $db->loadObject(); if ( empty($this->_attachment) ) { return false; } // Retrieve the information about the parent $parent_type = $this->_attachment->parent_type; $parent_entity = $this->_attachment->parent_entity; JPluginHelper::importPlugin('attachments'); $apm = getAttachmentsPluginManager(); if ( !$apm->attachmentsPluginInstalled($parent_type) ) { $this->_attachment->parent_type = false; return false; } $parent = $apm->getAttachmentsPlugin($parent_type); // Set up the parent info $parent_id = $this->_attachment->parent_id; $this->_attachment->parent_title = $parent->getTitle($parent_id, $parent_entity); $this->_attachment->parent_published = $parent->isParentPublished($parent_id, $parent_entity); } return true; } /** * Create a new Attachment object */ private function _initAttachment() { echo "_initData not implemented yet <br />"; return null; } /** * Get the data * * @return object */ public function getAttachment() { if ( !$this->_loadAttachment() ) { // If the load fails, create a new one $this->_initAttachment(); } return $this->_attachment; } /** * Save the attachment * * @param object $data mixed object or associative array of data to save * * @return Boolean true on success */ public function save($data) { // Get the table $table = $this->getTable('Attachments'); // Save the data if ( !$table->save($data) ) { // An error occured, save the model error message $this->setError($table->getError()); return false; } return true; } /** * Increment the download cout * * @param int $attachment_id the attachment ID */ public function incrementDownloadCount() { // Update the download count $db = JFactory::getDBO(); $query = $db->getQuery(true); $query->update('#__attachments')->set('download_count = (download_count + 1)'); $query->where('id = ' .(int)$this->_id); $db->setQuery($query); if ( !$db->query() ) { $errmsg = $db->stderr() . ' (ERR 49)'; JError::raiseError(500, $errmsg); } } }