Alex89 Получится в вашу модификацию вставить в форме срока действия позицию
Ну давайте попробуем! Открываете \administrator\components\com_adsmanager\views\admin\tmpl\configuration.php и ищете строки
<tr>
<td><?php echo JText::_('ADSMANAGER_RECALL_TIME'); ?></td>
<td><input type="text" name="recall_time" value="<?php echo $this->conf->recall_time; ?>" /></td>
<td> </td>
</tr>
После этих строк вставляете такие
<tr>
<td><?php echo JText::_('ADSMANAGER_AFTER_EXPIRATION'); ?></td>
<td>
<select id='after_expiration' name='after_expiration'>
<option value='delete' <?php if ($this->conf->after_expiration == 'delete') { echo "selected"; } ?>><?php echo JText::_('ADSMANAGER_DELETE'); ?></option>
<option value='unpublish' <?php if ($this->conf->after_expiration == 'unpublish') { echo "selected"; } ?>><?php echo JText::_('ADSMANAGER_UNPUBLISH'); ?></option>
<option value='archive' <?php if ($this->conf->after_expiration == 'archive') { echo "selected"; } ?>><?php echo JText::_('ADSMANAGER_ARCHIVE'); ?></option>
</select>
</td>
<td> </td>
</tr>
<tr>
<td><?php echo JText::_('ADSMANAGER_ARCHIVE_CATEGORY'); ?></td>
<td><input type="text" name="archive_catid" value="<?php echo $this->conf->archive_catid; ?>" /></td>
<td><?php echo JText::_('ADSMANAGER_ARCHIVE_CATEGORY_LONG'); ?></td>
</tr>
В файл русификации админки добавляете константы
ADSMANAGER_AFTER_EXPIRATION="По истечению срока"
ADSMANAGER_ARCHIVE_CATEGORY="Id категории архива объявлений"
ADSMANAGER_ARCHIVE_CATEGORY_LONG="Если опция \"По истечению срока\" установлена в \"Помещать в архив\", укажите id категории, в которой объявления будут сохранены"
ADSMANAGER_DELETE="Удалять"
ADSMANAGER_UNPUBLISH="Снимать с публикации"
ADSMANAGER_ARCHIVE="Помещать в архив"
в phpmyadmin переходите на вкладку SQL и выполняете скрипт
ALTER TABLE `njbpz_adsmanager_config` ADD `after_expiration` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
ADD `archive_catid` INT( 10 ) NOT NULL DEFAULT '0'
Вместо
njbpz вставляете свой префикс таблицы
Далее заходим в админку компонента, в появившихся новых опциях выбираем нужное значение и сохраняем! Даже если ничего не меняли всё равно нажимаем сохранить, чтобы значения записались в БД.
Далее открываете файлик \administrator\components\com_adsmanager\models\content.php и в функции manage_expiration заменяете кусок кода
if (isset($idsarray) && count($idsarray) > 0) {
foreach($idsarray as $id)
{
$content =& JTable::getInstance('content', 'Table');
$content->delete($id,$conf,$plugins);
}
}
}
else
{
$this->_db->setQuery( "SELECT id FROM #__adsmanager_ads WHERE expiration_date < CURDATE()");
$idsarray = $this->_db->loadResultArray();
if (isset($idsarray) && count($idsarray) > 0) {
foreach($idsarray as $id)
{
$content =& JTable::getInstance('content', 'Table');
$content->delete($id,$conf,$plugins);
}
}
}
на этот
}
else
{
$this->_db->setQuery( "SELECT id FROM #__adsmanager_ads WHERE expiration_date < CURDATE()");
$idsarray = $this->_db->loadResultArray();
}
if (isset($idsarray) && count($idsarray) > 0) {
foreach($idsarray as $id)
{
switch($conf->after_expiration) {
default:
case "delete":
$content =& JTable::getInstance('content', 'Table');
$content->delete($id,$conf,$plugins);
break;
case "unpublish":
$this->_db->setQuery( "UPDATE #__adsmanager_ads SET published=0,recall_mail_sent = 0 WHERE id = $id");
$this->_db->query();
break;
case "archive":
$this->_db->setQuery( "UPDATE #__adsmanager_ads SET published=0,recall_mail_sent = 0 WHERE id = $id");
$this->_db->query();
$this->_db->setQuery( "DELETE FROM #__adsmanager_adcat WHERE adid =$id");
$this->_db->query();
$this->_db->setQuery( "INSERT INTO #__adsmanager_adcat (adid,catid) VALUES ($id,$conf->archive_catid)");
$this->_db->query();
break;
}
}
}
Вроде всё! Должно работать!