Spade
Mini Shell
| Directory:~$ /proc/self/root/home/lmsyaran/public_html/administrator/components/com_notifly/models/ |
| [Home] [System Details] [Kill Me] |
<?php
/**
* @package Joomla.Administrator
* @subpackage com_notifly
*
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All
rights reserved.
* @license GNU General Public License version 2 or later; see
LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\Registry\Registry;
use Joomla\Utilities\ArrayHelper;
use Joomla\String\StringHelper;
JLoader::register('NotiflyHelper', JPATH_ADMINISTRATOR .
'/components/com_notifly/helpers/notifly.php');
/**
* Feature model.
*
* @since 1.6
*/
class NotiflyModelTemplate extends JModelAdmin
{
/**
* The prefix to use with controller messages.
*
* @var string
* @since 1.6
*/
protected $text_prefix = 'COM_NOTIFLY';
/**
* The type alias for this content type (for example,
'com_notifly.template').
*
* @var string
* @since 3.2
*/
public $typeAlias = 'com_notifly.template';
/**
* The context used for the associations table
*
* @var string
* @since 3.4.4
*/
protected $associationsContext = 'com_notifly.item';
/**
* Method to test whether a record can be deleted.
*
* @param object $record A record object.
*
* @return boolean True if allowed to delete the record. Defaults to the
permission set in the component.
*
* @since 1.6
*/
protected function canDelete($record)
{
if (!empty($record->id))
{
if ($record->state != -2)
{
return false;
}
return JFactory::getUser()->authorise('core.delete',
'com_notifly.template.' . (int) $record->id);
}
return false;
}
/**
* Method to test whether a record can have its state edited.
*
* @param object $record A record object.
*
* @return boolean True if allowed to change the state of the record.
Defaults to the permission set in the component.
*
* @since 1.6
*/
protected function canEditState($record)
{
$user = JFactory::getUser();
// Check for existing template.
if (!empty($record->id))
{
return $user->authorise('core.edit.state',
'com_notifly.template.' . (int) $record->id);
}
// Default to component settings if neither template nor category known.
return parent::canEditState($record);
}
/**
* Prepare and sanitise the table data prior to saving.
*
* @param JTable $table A JTable object.
*
* @return void
*
* @since 1.6
*/
protected function prepareTable($table)
{
// Set the publish date to now
if ($table->state == 1 && (int) $table->publish_up == 0)
{
$table->publish_up = JFactory::getDate()->toSql();
}
if ($table->state == 1 && intval($table->publish_down) ==
0)
{
$table->publish_down = $this->getDbo()->getNullDate();
}
// Increment the content version number.
$table->version++;
}
/**
* Returns a Table object, always creating it.
*
* @param string $type The table type to instantiate
* @param string $prefix A prefix for the table class name. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JTable A database object
*/
public function getTable($type = 'Template', $prefix =
'NotiflyTable', $config = array())
{
return JTable::getInstance($type, $prefix, $config);
}
/**
* Method to get a single record.
*
* @param integer $pk The id of the primary key.
*
* @return mixed Object on success, false on failure.
*/
public function getItem($pk = null)
{
if ($item = parent::getItem($pk))
{
// Convert the params field to an array.
$registry = new Registry($item->attribs);
$item->attribs = $registry->toArray();
}
return $item;
}
/**
* Method to get the record form.
*
* @param array $data Data for the form.
* @param boolean $loadData True if the form is to load its own data
(default case), false if not.
*
* @return JForm|boolean A JForm object on success, false on failure
*
* @since 1.6
*/
public function getForm($data = array(), $loadData = true)
{
// Get the form.
$form = $this->loadForm('com_notifly.template',
'template', array('control' => 'jform',
'load_data' => $loadData));
if (empty($form))
{
return false;
}
$jinput = JFactory::getApplication()->input;
/*
* The front end calls this model and uses a_id to avoid id clashes so we
need to check for that first.
* The back end uses id so we use that the rest of the time and set it to
0 by default.
*/
$id = $jinput->get('a_id', $jinput->get('id',
0));
$user = JFactory::getUser();
// Check for existing template.
// Modify the form based on Edit State access controls.
if ($id != 0 &&
(!$user->authorise('core.edit.state',
'com_notifly.template.' . (int) $id))
|| ($id == 0 &&
!$user->authorise('core.edit.state',
'com_notifly')))
{
// Disable fields for display.
$form->setFieldAttribute('ordering', 'disabled',
'true');
$form->setFieldAttribute('publish_up',
'disabled', 'true');
$form->setFieldAttribute('publish_down',
'disabled', 'true');
$form->setFieldAttribute('state', 'disabled',
'true');
// Disable fields while saving.
// The controller has already verified this is an template you can edit.
$form->setFieldAttribute('ordering', 'filter',
'unset');
$form->setFieldAttribute('publish_up', 'filter',
'unset');
$form->setFieldAttribute('publish_down',
'filter', 'unset');
$form->setFieldAttribute('state', 'filter',
'unset');
}
return $form;
}
/**
* Method to get the data that should be injected in the form.
*
* @return mixed The data for the form.
*
* @since 1.6
*/
protected function loadFormData()
{
// Check the session for previously entered form data.
$app = JFactory::getApplication();
$data = $app->getUserState('com_notifly.edit.template.data',
array());
if (empty($data))
{
$data = $this->getItem();
// Pre-select some filters (Status, Category, Language, Access) in edit
form if those have been selected in Article Manager: Articles
if ($this->getState('template.id') == 0)
{
$filters = (array)
$app->getUserState('com_notifly.templates.filter');
$data->set(
'state',
$app->input->getInt(
'state',
((isset($filters['published']) &&
$filters['published'] !== '') ?
$filters['published'] : null)
)
);
$data->set('language',
$app->input->getString('language',
(!empty($filters['language']) ? $filters['language'] :
null)));
$data->set('access',
$app->input->getInt('access',
(!empty($filters['access']) ? $filters['access'] :
JFactory::getConfig()->get('access')))
);
}
}
// If there are params fieldsets in the form it will fail with a registry
object
if (isset($data->params) && $data->params instanceof
Registry)
{
$data->params = $data->params->toArray();
}
$this->preprocessData('com_notifly.template', $data);
return $data;
}
/**
* Method to validate the form data.
*
* @param JForm $form The form to validate against.
* @param array $data The data to validate.
* @param string $group The name of the field group to validate.
*
* @return array|boolean Array of filtered data if valid, false
otherwise.
*
* @see JFormRule
* @see JFilterInput
* @since 3.7.0
*/
public function validate($form, $data, $group = null)
{
return parent::validate($form, $data, $group);
}
/**
* Method to save the form data.
*
* @param array $data The form data.
*
* @return boolean True on success.
*
* @since 1.6
*/
public function save($data)
{
$input = JFactory::getApplication()->input;
$filter = JFilterInput::getInstance();
// print_r($data);die;
// // Automatic handling of alias for empty fields
if (in_array($input->get('task'), array('apply',
'save', 'save2new')) &&
(!isset($data['id']) || (int) $data['id'] == 0))
{
if ($data['alias'] == null)
{
if (JFactory::getConfig()->get('unicodeslugs') == 1)
{
$data['alias'] =
JFilterOutput::stringURLUnicodeSlug($data['name']);
}
else
{
$data['alias'] =
JFilterOutput::stringURLSafe($data['name']);
}
$table = JTable::getInstance('Template',
'NotiflyTable');
if ($table->load(array('alias' =>
$data['alias'], 'extension_id' =>
$data['extension_id'])))
{
$msg = JText::_('COM_NOTIFLY_SAVE_WARNING');
}
list($name, $alias) =
$this->generateNewTitle($data['extension_id'],
$data['alias'], $data['name']);
$data['alias'] = $alias;
$data['name'] = $name;
if (isset($msg))
{
JFactory::getApplication()->enqueueMessage($msg,
'warning');
}
}
}
return parent::save($data);
}
/**
* Method to change the title & alias.
*
* @param integer $category_id The id of the category.
* @param string $alias The alias.
* @param string $title The title.
*
* @return array Contains the modified title and alias.
*
* @since 1.7
*/
protected function generateNewTitle($extension_id, $alias, $title)
{
// Alter the title & alias
$table = $this->getTable();
while ($table->load(array('alias' => $alias,
'extension_id' => $extension_id)))
{
$title = StringHelper::increment($title);
$alias = StringHelper::increment($alias, 'dash');
$alias = str_replace("-", "_", $alias);
}
return array($title, $alias);
}
/**
* Custom clean the cache of com_notifly and content modules
*
* @param string $group The cache group
* @param integer $client_id The ID of the client
*
* @return void
*
* @since 1.6
*/
protected function cleanCache($group = null, $client_id = 0)
{
parent::cleanCache('com_notifly');
}
/**
* Void hit function for pagebreak when editing content from frontend
*
* @return void
*
* @since 3.6.0
*/
public function hit()
{
return;
}
/**
* Delete #__content_frontpage items if the deleted templates was featured
*
* @param object &$pks The primary key related to the contents
that was deleted.
*
* @return boolean
*
* @since 3.7.0
*/
public function delete(&$pks)
{
$return = parent::delete($pks);
return $return;
}
}