Новости Joomla

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!Файловый менеджер Quantum — одно...

Файловый менеджер Quantum — одно из самых популярных решений для Joomla, созданное разработчиком из сообщества Joomla, Дмитрием Цымбалом (@tsymbalmitia). Он делает Quantum удобным, безопасным и современным, обновляет его, исправляет уязвимости и отвечает пользователям — всё это в свободное от основной работы время.

Теперь настал момент для следующего шага: развитие проекта требует больше времени и ресурсов.

0 Пользователей и 1 Гость просматривают эту тему.
  • 2 Ответов
  • 2055 Просмотров
*

nik_neman

  • Захожу иногда
  • 52
  • 2 / 0
День добрый.
Возможно ли добавлять несколько  объявлений сразу?
Чтобы нажать типа 'Добавить ещё', заполняешь поля и отправляются несколько объявлений.
Может кто сталкивался?
Заранее спасибо.
*

nik_neman

  • Захожу иногда
  • 52
  • 2 / 0
Данный вопрос по-прежнему актуален.
Пытаюсь сам разобраться - но не получается.
Может кто 'копался в механизме' добавления объявления и может дать хороший совет?
Заранее спасибо.
Adsmanager 2.5.
*

nik_neman

  • Захожу иногда
  • 52
  • 2 / 0
Решил выложить ход своих мыслей.. может быть кто-нибудь подскажет грамотное решение, а то с ООП пока плоховато.
Joomla 1.5.22 + AdsManager 2.5 (работа с поздними версиями обусловлено тем, что ранее не мною на этих версиях был сделан проект + добавлена монетизация).
'Копаться' как я понял нужно в 3 главных файлах - AdsManager.html.php, AdsManager.class.php, AdsManager.php.
В adsmanager.html.php форма с полями(статус, цена, название товара. Но не выбор категории и способ размещения) необходимые для заполнения вызываются с помощью следующей строки.
Код
adsmanager_html::displayFields($row,$default,$fields,$field_values,$catid,$plugins,$conf->opt2);
У меня это 2863 строка, но так как adsmanager.html.php уже изменял под свои нужды, у Вас может быть другой номер строки.
С помощью данной строки
Код
adsmanager_html::displayFields($row,$default,$fields,$field_values,$catid,$plugins,$conf->opt2);
как я понимаю выводиться метод displayFields класса adsmanager_html.
Нашёл я код метода
Код
	function displayFields($row,$default,$fields,$field_values,$catid,$plugins,$bbcodeen)
{
global $mosConfig_live_site,$my;
//
if (isset($fields))
{   
foreach($fields as $field)
{
  if (($catid == 0)||(strpos($field->catsid, ",$catid,")!== false)||(strpos($field->catsid, ",-1,")!== false)){
    if($field->type=='city_region_contry'){
    adsmanager_html::show_ml($type,$row,$field->required,$field->name,$field);
    }else{

$strtitle = adsmanager_html::am_getLangDefinition( $field->title);
if (isset($strtitle)) {
echo "<tr id='tr_".$field->name."'><td>".$strtitle."</td>\n";
$strtitle = htmlspecialchars($strtitle ,ENT_QUOTES);
}
$name = $field->name;
$value = "@\$row->".$field->name;
eval("\$value = \"\".$value;");
$value = adsmanager_html::am_getLangDefinition($value);
if (($value == "")&&($field->profile == 1))
{
$value ="\$default->".$field->name;
eval("\$value = @\"$value\";");
$value = adsmanager_html::am_getLangDefinition($value);
}
$disabled="";
$read_only="";

                                // begin поля для заполнения
                                echo "<td>";
                               
switch($field->type)
{
case 'checkbox':
if ($field->required == 1)
$mosReq = "mosReq='1'";
else
$mosReq = "";

if ($value == 1)
echo "<input class='inputbox' type='checkbox' $mosReq mosLabel='$strtitle' checked='checked' id='$name' name='$name' value='1' />\n";
else
echo "<input class='inputbox' type='checkbox' $mosReq mosLabel='$strtitle' name='$name' id='$name' value='1' />\n";
break;
case 'multicheckbox':
case 'multicheckboximage':
$k = 0;
echo "<table>";
for ($i=0 ; $i < $field->rows;$i++)
{
echo "<tr>";
for ($j=0 ; $j < $field->cols;$j++)
{
echo "<td>";
$fieldvalue = @$field_values[$field->fieldid][$k]->fieldvalue;
$fieldtitle = @$field_values[$field->fieldid][$k]->fieldtitle;
if ($field->type == 'multicheckbox') {
if (isset($fieldtitle))
$fieldtitle=adsmanager_html::am_getLangDefinition($fieldtitle);
}
else
{
$fieldtitle = "<img src='$mosConfig_live_site/images/com_adsmanager/fields/$fieldtitle' alt='$fieldtitle' />";
}
if (isset($field_values[$field->fieldid][$k]->fieldtitle))
{
if (($field->required == 1)&&($k==0))
$mosReq = "mosReq='1'";
else
$mosReq = "";

if ((strpos($value, ",".$fieldvalue.",") === false) &&
(strpos($value, $fieldtitle."|*|") === false) &&
(strpos($value, "|*|".$fieldtitle) === false) &&
($value !=  $fieldtitle))
echo "<input class='inputbox' type='checkbox' $mosReq  mosLabel='$strtitle' id='".$name."[]' name='".$name."[]' value='$fieldvalue' />&nbsp;$fieldtitle&nbsp;\n";
else
echo "<input class='inputbox' type='checkbox' $mosReq  mosLabel='$strtitle' id='".$name."[]' checked='checked' name='".$name."[]' value='$fieldvalue' />&nbsp;$fieldtitle&nbsp;\n";

}
echo "</td>";
$k++;
}
echo "</tr>";
}
echo "</table>";
break;


case 'date':
//mosCommonHTML::loadCalendar();
if ($field->required == 1)
$class= "class='adsmanager_required' mosReq='1' mosLabel='$strtitle'";
else
$class= "class='adsmanager'";

$return = "<input $class type='text' name='$field->name' id='$field->name' size='25' maxlength='19' value='$value' readonly=true/>";
//s5
$return .= '<script type="text/javascript" src="'.$mosConfig_live_site.'/components/com_adsmanager/datePicker/jquery.datePicker.js"></script>
                        <link rel="stylesheet" type="text/css" media="screen" href="'.$mosConfig_live_site.'/components/com_adsmanager/datePicker/datePicker.css">';
$return .= "<input name='reset' type='button' class='button' onclick=\"return displayDatePicker('$field->name', false, 'ymd', '-');\" value='...' />";
//e5
echo $return;
break;

case 'editor':
ob_start();
editorArea( 'editor',  $value, $field->name,null,null, $field->cols, $field->rows);
$return = ob_get_contents();
ob_end_clean();
echo $return;
break;

case 'select':
if ($field->editable == 0)
$disabled = "disabled=true";
else
$disabled = "";

if ($field->required == 1)
echo "<select id='$name' name='$name' mosReq='1' mosLabel='$strtitle' class='adsmanager_required' $disabled>\n";
else
echo "<select id='$name' name='$name' mosLabel='$strtitle' class='adsmanager' $disabled>\n";

if ($value=="")
echo "<option value=''>&nbsp;</option>\n";
if (isset($field_values[$field->fieldid])) {
foreach($field_values[$field->fieldid] as $v)
{
$ftitle = adsmanager_html::am_getLangDefinition($v->fieldtitle);
if (($value == $v->fieldvalue)||($value == $ftitle))
echo "<option value='$v->fieldvalue' selected='selected' >$ftitle</option>\n";
else
echo "<option value='$v->fieldvalue' >$ftitle</option>\n";
}
}

echo "</select>\n";
break;

case 'multiselect':
if ($field->editable == 0)
$disabled = "disabled=true";
else
$disabled = "";
if ($field->required == 1)
echo "<select id=\"".$name."[]\" name=\"".$name."[]\" mosReq='1' mosLabel='$strtitle' multiple='multiple' size='$field->size' class='adsmanager_required' $disabled>\n";
else
echo "<select id='".$name."[]' name=\"".$name."[]\" mosLabel='$strtitle' multiple='multiple' size='$field->size' class='adsmanager' $disabled>\n";

if ($value=="")
// echo "<option value=''>&nbsp;</option>\n";
if (isset($field_values[$field->fieldid])) {
foreach($field_values[$field->fieldid] as $v)
{
$ftitle = adsmanager_html::am_getLangDefinition($v->fieldtitle);
if ($field->required == 1)
$mosReq = "mosReq='1'";

if ((strpos($value, ",".$v->fieldvalue.",") === false) &&
(strpos($value, $ftitle."|*|") === false) &&
(strpos($value, "|*|".$ftitle) === false) &&
($value !=  $ftitle))
echo "<option value='".str_replace("'","\'",$v->fieldvalue)."' >$ftitle</option>\n";
else
echo "<option value='".str_replace("'","\'",$v->fieldvalue)."' selected='selected' >$ftitle</option>\n";
}
}

echo "</select>\n";
break;

case 'textarea':
if ($field->editable == 0)
$read_only = "readonly=true";
else
$read_only = "";
                       
/*  скрытие bb-code
if($bbcodeen==1){
echo '<script  type="text/javascript">function bbc(one,two,conteiner){var el=document.getElementById(conteiner);el.focus();if (el.selectionStart==null){var rng=document.selection.createRange();rng.text=one+rng.text+two;}else{el.value=el.value.substring(0,el.selectionStart)+one+el.value.substring(el.selectionStart,el.selectionEnd)+two+el.value.substring(el.selectionEnd);}}</script>';
    echo str_replace('{name}',"'$name'",ADSMANAGER_BBCODEREDAKTOR).'<br/>';
} */

if ($field->required == 1){
echo "<textarea class='adsmanager_required' mosReq='1' mosLabel='$strtitle' id='$name' name='$name' cols='".$field->cols."' rows='".$field->rows."' wrap='virtual' onkeypress='CaracMax(this);' onchange='CaracMax(this);' onkeyup='CaracMax(this);' maxlength='$field->maxlength' $read_only>$value</textarea>\n";
}else{
echo "<textarea class='adsmanager' id='$name' mosLabel='$strtitle' name='$name' cols='".$field->cols."' rows='".$field->rows."' wrap='virtual' onkeypress='CaracMax(this);' onchange='CaracMax(this);' onkeyup='CaracMax(this);' maxlength='$field->maxlength' $read_only>$value</textarea>\n";
    }
break;

case 'url':
if (($mode == "write")&&($field->editable == 0))
$recontent_only = "readonly=true";
else
$recontent_only = "";

$return = "http://";
if (($mode == "write")&&($field->required == 1))
$return .= "<input class='adsmanager_required' mosReq='1' id='$field->name' type='text' mosLabel='$strtitle' name='$field->name' size='$field->size' maxlength='$field->maxlength' $recontent_only value='".htmlspecialchars($value,ENT_QUOTES)."' />\n";
else
$return .= "<input class='adsmanager' id='$field->name' type='text' name='$field->name' mosLabel='$strtitle' size='$field->size' maxlength='$field->maxlength' $recontent_only value='".htmlspecialchars($value,ENT_QUOTES)."' />\n";
echo $return;
break;

case 'number':
if ($field->editable == 0){
$read_only = "readonly=true";
}else{
$read_only = "";
}

if ($field->required == 1){
echo "<input class='adsmanager_required' mosReq='1' id='$name' type='text' test='number' mosLabel='$strtitle' name='$name' size='$field->size' maxlength='$field->maxlength' $read_only value='$value' />\n";
}else{
echo "<input class='adsmanager' id='$name' type='text' name='$name' test='number' mosLabel='$strtitle' size='$field->size' maxlength='$field->maxlength' $read_only value='$value' />\n";
}
break;
case 'price':
if ($field->editable == 0){
$read_only = "readonly=true";
}else{
$read_only = "";
}
    //p3
if ($field->required == 1){
echo "<input class='adsmanager_required' mosReq='1' id='$name' type='text' test='number' mosLabel='$strtitle' name='$name' size='$field->size' maxlength='$field->maxlength' $read_only value='$value' />\n";
}else{
echo "<input class='adsmanager' id='$name' type='text' name='$name' test='number' mosLabel='$strtitle' size='$field->size' maxlength='$field->maxlength' $read_only value='$value' />\n";
}
if(ADSMANAGER_VAL_CURR_ENABLE==1){
if ($field->required == 1){
    echo "<select class='adsmanager_required' id='pr_$name' name='pr_$name' mosReq='1' mosLabel='$strtitle' class='adsmanager_required' >";
}else{
    echo "<select class='adsmanager' id='pr_$name' name='pr_$name' >";
}
$valuta = explode('|',ADSMANAGER_VAL_CURR);
$taitl = 'pr_'.$name;
for($j=0;$valuta[$j]!=null;$j++){
    if($j==$row->$taitl && $row->$taitl!=null){
    echo "<option value='$j' selected>$valuta[$j]</option>";
}else{
        echo "<option value='$j' >$valuta[$j]</option>";
}
}
echo '</select>';
}
break;
case 'emailaddress':
if ($field->editable == 0)
$read_only = "readonly=true";
else
$read_only = "";

//s7
if($name=='email' && $value==""){
    $value=$my->email; 
}
//e7

if ($field->required == 1)
echo "<input class='adsmanager_required' mosReq='1' id='$name' type='text' test='emailaddress' mosLabel='$strtitle' name='$name' size='$field->size' maxlength='$field->maxlength' $read_only value='$value' />\n";
else
echo "<input class='adsmanager' id='$name' type='text' test='emailaddress' name='$name' mosLabel='$strtitle' size='$field->size' maxlength='$field->maxlength' $read_only value='$value' />\n";
break;

case 'text':
if ($field->editable == 0)
$read_only = "readonly=true";
else
$read_only = "";
//s7
if($name=='name' && $value==""){
    $value=$my->name; 
}
//e7
if ($field->required == 1){
echo "<input class='adsmanager_required' mosReq='1' id='$name' type='text' mosLabel='$strtitle' name='$name' size='$field->size' maxlength='$field->maxlength' $read_only value='".htmlspecialchars($value,ENT_QUOTES)."' />\n";
}else{
echo "<input class='adsmanager' id='$name' type='text' name='$name' mosLabel='$strtitle' size='$field->size' maxlength='$field->maxlength' $read_only value='".htmlspecialchars($value,ENT_QUOTES)."' />\n";
}
break;

case 'radio':
case 'radioimage':
$k = 0;
echo "<table>";
for ($i=0 ; $i < $field->rows;$i++)
{
echo "<tr>";
for ($j=0 ; $j < $field->cols;$j++)
{
echo "<td>";
$fieldvalue = @$field_values[$field->fieldid][$k]->fieldvalue;
$fieldtitle = @$field_values[$field->fieldid][$k]->fieldtitle;
if ($field->type == 'radio') {
if (isset($fieldtitle))
$fieldtitle=adsmanager_html::am_getLangDefinition($fieldtitle);
}
else
{
$fieldtitle="<img src='$mosConfig_live_site/images/com_adsmanager/fields/$fieldtitle' alt='$fieldtitle' />";
}
if (isset($field_values[$field->fieldid][$k]->fieldtitle))
{
if (($field->required == 1)&&($k==0))
$mosReq = "mosReq='1'";
else
$mosReq = "";

if (($value == $fieldvalue)||($value == $fieldtitle))
echo "<input type='radio' $mosReq name='$name' id='$name' mosLabel='$strtitle' value='$fieldvalue' checked='checked' />&nbsp;$fieldtitle&nbsp;\n";
else
echo "<input type='radio' $mosReq name='$name' id='$name' mosLabel='$strtitle' value='$fieldvalue' />&nbsp;$fieldtitle&nbsp;\n";
}
$k++;
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
break;
case 'file':
echo "<input id='$name' type='file' name='$name' mosLabel='$strtitle'/>";
if (isset($value)&&($value != ""))
{
echo "<br/><a href='$mosConfig_live_site/images/com_adsmanager/files/$value' target='_blank'>".ADSMANAGER_DOWNLOAD_FILE."</a>";
}
break;

default:
if(isset($plugins[$field->type]))
{
echo $plugins[$field->type]->getFormDisplay($row->id,$field );
}
}
if ((@$field->description)&&($field->description !="")) {
$fieldTip = str_replace(array('"','<','>',"\\"), array("&quot;","&lt;","&gt;","\\\\"), adsmanager_html::am_getLangDefinition($field->description));
$tipTitle = str_replace(array('"','<','>',"\\"), array("&quot;","&lt;","&gt;","\\\\"), adsmanager_html::am_getLangDefinition($field->title));
$fieldTip = str_replace(array("'","&#039;"), "\\'", $fieldTip);
$tipTitle = str_replace(array("'","&#039;"), "\\'", $tipTitle);
?>
<img src="<?=$mosConfig_live_site;?>/includes/js/ThemeOffice/tooltip.png" alt="tooltip" style="border:0" onmouseover="return overlib('<?php echo $fieldTip ?>', CAPTION, '<?php echo $tipTitle ?>:');" onmouseout="return nd();"  />
<?php
}
echo "";
if (function_exists("checkPaidField"))
{
checkPaidField($field);
}
                               
                                // end поля для заполнения
                               
echo "</td></tr>";

    }
  }
}
?>
<script type="text/javascript">
function updateFields() {
var form = document.adminForm;
var singlecat = 0;
var length = 0;

if ( typeof(document.adminForm.category )!= "undefined" ) {
singlecat = 1;
length = 1;
}
else
{
length = form.selected_cats.length;
}

<?php
foreach($fields as $field)
{
if (strpos($field->catsid, ",-1,") === false)
{
$name = $field->name;
if (($field->type == "multicheckbox")||($field->type == "multiselect"))
$name .= "[]";
?>
var input = document.getElementById('<?php echo $name;?>');
var trzone = document.getElementById('tr_<?php echo $field->name;?>');
if (((singlecat == 0)&&(length == 0))||
    ((singlecat == 1)&&(document.adminForm.category.value == 0)))
{
input.style.visibility = 'hidden';
trzone.style.visibility = 'hidden';
trzone.style.display = 'none';
}
else
{
for (var i=0; i < length; i++) {


var field_<?php echo $field->name;?> = '<?php echo $field->catsid;?>';
var temp;
if (singlecat == 0)
temp = form.selected_cats.options[i].value;
else
temp = document.adminForm.category.value;

var test = field_<?php echo $field->name;?>.indexOf( ","+temp+",", 0 );
if (test != -1)
{
input.style.visibility = 'visible';
trzone.style.visibility = 'visible';
trzone.style.display = '';
break;
}
else
{
input.style.visibility = 'hidden';
trzone.style.visibility = 'hidden';
trzone.style.display = 'none';
}
}
}
<?php
}
}
?>
}
updateFields();
</script>
<?php
}
}

У меня это 1759-2191 строчки в adsmanager.html.php
В данном методе, как бы это правильно сказать, формируются поля для заполнения при подаче объявки.
Решил я проследить как записываються данные в БД.
Начал искать sql запрос в котором был бы оператор INSERT и таблица 'adsmanager_ads'.
В AdsManager.html.php нечего не нашёл.
В файле AdsManager.class.php меня заинтересовал следующий код
Код
class adsManagerAd extends mosDBTable {
var $id= null;
var $userid= null;
var $date_created = null;
var $date_recall = null;
var $expiration_date = null;
var $recall_mail_sent = null;
var $published = null;

var $flag_commercial = null;
var $flag_top = null;
var $style = null;
var $country = null;
var $region = null;
var $city = null;
        var $delcode = null;
var $keywords = null;
var $description = null;
var $tags = null;

        var $reset_style = null;

        function adsManagerAd(&$db){
$this->mosDBTable('#__adsmanager_ads', 'id', $db);
}
}
Загуглил что такое mosDBTable - оказалось что mosDBTable используется для преобразования PHP-объектов в строки таблиц базы данных, по заранее определенным правилам.
Для сохранения используется метод store с классом adsManagerAd.
'Порыскал' в файле AdsManager.php и путём проб выяснил что добавление данных происходит в функции save_ad
Вот код
Код
function save_ad($option,$plugins){
global $database,$mosConfig_absolute_path,$mosConfig_mailfrom,$my,$mosConfig_live_site;

$itemid = intval( mosGetParam( $_GET, 'Itemid', 0 ));

include $mosConfig_absolute_path.'/components/com_adsmanager/black-ip.php';
if(preg_match("/".$_SERVER['REMOTE_ADDR']."/i",$listip,$m)){
    mosRedirect(sefRelToAbs("index.php?option=$option&page=blocked&opt=ip&Itemid=$itemid"));
}
include $mosConfig_absolute_path.'/components/com_adsmanager/spam.php';
if(acjc()==1){
    $vse = preg_replace('/[^a-zA-ZА-Яа-я\s]/u', ' ', implode(',',$_POST));
}else{
    $vse = preg_replace('/[^a-zA-ZА-Яа-я\s]/', ' ', implode(',',$_POST));
}
for($i=0;$listworld[$i]!=null;$i++){
    if(preg_match('/'.$listworld[$i].'/i',$vse,$m)){
        mosRedirect(sefRelToAbs("index.php?option=$option&page=blocked&opt=world&Itemid=$itemid"));
    }
}

// get configuration
$database->setQuery( "SELECT * FROM #__adsmanager_config");
$database->loadObject($conf);
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}

if($conf->js_antispam==1){
    if($_POST['_jsas']!='nos'){
    mosRedirect(sefRelToAbs("index.php?option=$option&page=show_front&Itemid=$itemid"),YOU_SPAMMER);
}
}
//Kaptcha
if($my->id==0 && $conf->captcha==1) {
    if(adscheckJoomlaVersion()==0){
    session_start();
    $captcha= mosGetParam($_POST,'captcha');
    if(!isset($_SESSION['captcha_keystring'])||$_SESSION['captcha_keystring']!==$captcha){
    $mosmsg = ADSMANAGER_REG_CODE2;
header('Content-type: text/html; '._ISO);
    echo "<script>alert('$mosmsg');
window.history.go(-1);
</script>\n";
    unset($_SESSION['captcha_keystring']);
    exit();
    }
    session_unset();
    session_write_close();
    }else{
    $captcha = mosGetParam($_POST,'captcha');
    $sess = JFactory::getSession();
    if($sess->get('captcha_keystring')!=$captcha){
    $mosmsg = ADSMANAGER_REG_CODE2;
    header('Content-type: text/html; '._ISO);
    echo "<script>alert('$mosmsg');
window.history.go(-1);
</script>\n";
    $sess->clear('captcha_keystring');
        exit();
    }
    $sess->clear('captcha_keystring');
    }
}
//Kaptcha end


$row = new adsManagerAd($database);
$id = intval(mosGetParam( $_POST, 'id', 0 ));

if (($id == 0)&&($my->id != "0")&&($conf->nb_ads_by_user != -1))
{
$database->setQuery( "SELECT count(*) FROM #__adsmanager_ads as a WHERE a.userid =".$my->id);
$nb = $database->loadResult();
if ($nb >= $conf->nb_ads_by_user)
{
$redirect_text = sprintf(ADSMANAGER_MAX_NUM_ADS_REACHED,$conf->nb_ads_by_user);
mosRedirect(sefRelToAbs("index.php?option=$option&Itemid=$itemid"),$redirect_text);
}
}

// bind it to the table
if (!$row -> bind($_POST)) {
echo "<script> alert('"
.end($row -> getErrors())
."'); window.history.go(-1); </script>\n";
exit();
}                                             

if (($conf->submission_type == 0)&&($my->id == 0))
{
$username = mosGetParam( $_POST, 'username', "" );
$password = mosGetParam( $_POST, 'password', ""  );
$email = mosGetParam( $_POST, 'email', ""  );
$errorMsg = checkAccount($username,$password,$email,$userid,$conf);
if (isset($errorMsg))
{
$catid = intval(mosGetParam( $_POST, 'category', 0 ));
$url = sefRelToAbs("index.php?option=$option&page=write_ad&catid=$catid&Itemid=$itemid");
echo "<form name='form' action='$url' method='post'>";
foreach($_POST as $key=>$val)
{
echo "<input type='hidden' name='$key' value='".htmlentities(stripslashes($val),ENT_QUOTES)."'>";
}
echo "<input type='hidden' name='errorMsg' value='$errorMsg'>";
echo '</form>';
echo '<script language="JavaScript">';
echo 'document.form.submit()';
echo '</script>';
return;
}

$row->userid = $userid;
}
else
{
  //$row->userid = $my->id;
  //s6
  if(mosGetParam($_REQUEST,'isUpdateMode')!=1){
$row->userid = $my->id;  // происходит добавление полей, которые указали в форме добавления (в ЛК сообщение не показывается)
  }
  //e6
}

//get fields
$database->setQuery( "SELECT * FROM #__adsmanager_fields WHERE published = 1");
$fields = $database->loadObjectList();
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}

$isUpdateMode  = intval(mosGetParam( $_POST, 'isUpdateMode', 0));
if ($isUpdateMode == 0){
if ($conf->auto_publish == 1){
$row->published = 1;
$redirect_text = ADSMANAGER_INSERT_SUCCESSFULL_PUBLISH;
}
else{
$row->published = 0;
$redirect_text = ADSMANAGER_INSERT_SUCCESSFULL_CONFIRM;
}
$row->date_created = date("Y-m-d H:i:s");//Format Y-m-d
/*Delete ad code*/
$delcode = md5(time().rand(0,999));
$row->delcode = $delcode;
/*Delete ad code*/
$sms=check_sms(mosGetParam($_POST,'sms_kod'));
}else{
$redirect_text .= ADSMANAGER_UPDATE_SUCCESSFULL;
    if(check_sms_publ($row->id)){
    $sms=true;
}else{
        $sms=check_sms(mosGetParam($_POST,'sms_kod'));
}
}

    /*Data*/
if(intval(mosGetParam( $_POST, 'srok'))!=null){
$delta = intval(mosGetParam( $_POST, 'srok')); 
}else{
$delta = $conf->ad_duration;
}
$row->expiration_date = date("Y-m-d",mktime()+($delta*24*3600)); // дата создания объявления
/*Data*/

/*SMS*/
if($conf->sms_only==1){
    if($sms!=true){
        $row->published = 0;
}else{
    $row->flag_commercial = 1;
if($conf->sms_top==1){$row->flag_top = 0;} //change this
if($conf->sms_style==1){$row->style = null;} //change this
}
}else{
    if($sms!=true){
        $row->flag_commercial = 0;
        $row->flag_top = 0;
        $row->style = null;
    }else{
    $row->flag_commercial = 1;
if($conf->sms_top==1){$row->flag_top = 0;} //change this
if($conf->sms_style==1){$row->style = null;} //change this
}
}
/*SMS*/

if($conf->days_reset_style>0){
    if($sms==true){
          $row->reset_style = date("Y-m-d",mktime()+($conf->days_reset_style*24*3600));
    }
}

//Add IP adress
$row->ip_address = $_SERVER['REMOTE_ADDR'];

//SEO v2
$texts = am_clean(htmlspecialchars(stripslashes(strip_tags(bb_code(mosGetParam($_POST,'ad_text'),1)))));
$row->description = ads_utf8_substr($texts,0,200);
/*KEY GENERATOR*/
if(acjc()==1){
    $texts = preg_replace('/ {1,}/', ' ', preg_replace('/[^a-zA-ZА-Яа-я\s]/u', ' ', $texts));
}else{
    $texts = preg_replace('/ {1,}/', ' ', preg_replace('/[^a-zA-ZА-Яа-я\s]/', ' ', $texts));
}

    $kword = ads_utf8_strtolower($texts);
$kwords = array_count_values(explode(' ',$kword));

foreach ($kwords as $key => $value){
    if(ads_utf8_strlen(am_clean($key))>3){
$i++;
    if($i<12){
                $keywrd.= am_clean($key).' ';
}
        }
}
$row->tags = mosGetParam($_POST,'tags','');
if($row->tags!=null){$tagtokey=','.$row->tags;};
if(acjc()==1){
$row->keywords = preg_replace('/ {1,}/',',',$keywrd.' '.preg_replace('/[^a-zA-ZА-Яа-я\s]/u', ' ', ads_utf8_strtolower(mosGetParam($_POST,'ad_city').' '.mosGetParam($_POST,'ad_headline')))).$tagtokey;
}else{
$row->keywords = preg_replace('/ {1,}/',',',$keywrd.' '.preg_replace('/[^a-zA-ZА-Яа-я\s]/', ' ', ads_utf8_strtolower(mosGetParam($_POST,'ad_city').' '.mosGetParam($_POST,'ad_headline')))).$tagtokey;
}
$text = "*$row->keywords";
$text = str_replace('*','',str_replace("*,",'',$text));
$row->keywords = str_replace(array(" ,","  ,",", ",",  "),',',str_replace(array("\r\n", "\n", "\r",".","?","'",'"',"$",'&','%'),' ',$text));
    //seo end
// store it in the db
if (!$row -> store()) {
echo "<script> alert('"
.end($row -> getErrors())
."'); window.history.go(-1); </script>\n";
exit();
}


// Add Ad/Category relation
$query = "SELECT catid FROM #__adsmanager_adcat WHERE adid = '$row->id' ";
$database->setQuery($query);
$prevcats = $database->loadResultArray();

$query = "DELETE FROM #__adsmanager_adcat WHERE adid = '$row->id' ";
$database->setQuery($query);
$database->query();

if (function_exists("getMaxCats"))
$maxcats = getMaxCats($conf->nbcats);
else
$maxcats = $conf->nbcats;

if ($maxcats > 1)
{
$selected_cats = mosGetParam( $_POST, "selected_cats", array() );
if (count($selected_cats) > $maxcats)
{
$selected_cats = array_slice ($selected_cats, 0, $maxcats);
}

$query = "INSERT IGNORE INTO #__adsmanager_adcat (`adid`,`catid`) VALUES ";
foreach($selected_cats as $key => $cat)
{
if ($key != 0)
$query .= ",";
$query .= "('$row->id','$cat')";
}
$database->setQuery($query);
$database->query();
}
else
{
$category = mosGetParam( $_POST, "category", 0 );
$query = "INSERT IGNORE INTO #__adsmanager_adcat (`adid`,`catid`) VALUES ('$row->id','$category')";
$database->setQuery($query);
$database->query();
}

if (function_exists("savePaidAd"))
{
if ($maxcats == 1)
{
$selected_cats = array();
$selected_cats[] = $category;
}
$status = savePaidAd($row->id,$row->userid,$isUpdateMode,$errormsg,$conf,$prevcats,$selected_cats);
if ($status == -1)
{
return;
}
else if ($status == -2)
{
$redirect_text = $errormsg;
}
}

$query = "UPDATE #__adsmanager_ads "; // добавляет дату и категорию

$first=0;
if(isset($fields))
{
foreach($fields as $field)
{
if ($field->type == "multiselect")
{
$value = mosGetParam( $_POST, $field->name, array() );
//$valueA = explode("|*|",$value);
$value = ",".implode(',', $value).",";
}
else if (($field->type == "multicheckbox")||($field->type == "multicheckboximage"))
{
$value = mosGetParam( $_POST, $field->name, array() );
$value = ",".implode(',', $value).",";
}
else if ($field->type == "file")
{
if (isset( $_FILES[$field->name]) and !$_FILES[$field->name]['error'] ) {
if ($_FILES[$field->name]['size'] <= $field->size)
{
$database->setQuery( "SELECT ".$field->name." FROM #__adsmanager_ads WHERE id = ".$row->id);
$old_filename = $database->loadResult();
@unlink($mosConfig_absolute_path."/images/com_adsmanager/files/".$old_filename);

$filename = $_FILES[$field->name]['name'];
while(file_exists($mosConfig_absolute_path."/images/com_adsmanager/files/".$filename)){
$filename = "copy_".$filename;
}
@move_uploaded_file($_FILES[$field->name]['tmp_name'],
$mosConfig_absolute_path."/images/com_adsmanager/files/".$filename);
if ($first == 0)
$query .= "SET";
else
$query .= ",";
$first = 1;
$query .= " $field->name = '".$filename."' ";
}
else
{
$redirect_text = ADSMANAGER_FILE_TOO_BIG;
}
}
continue;
}
else if ($field->type == "editor")
{
$value = mosGetParam( $_POST, $field->name, "",_MOS_ALLOWHTML );
}
else if ($field->type == "city_region_contry" && $field->name!="city_region_contry")
{
if ($first == 0)
    $query .= "SET";
    else
    $query .= ",";
    $first = 1;
    $query .= " city$field->name = '".mosGetParam( $_POST, 'city'.$field->name)."',region$field->name = '".mosGetParam( $_POST, 'region'.$field->name)."',country$field->name = '".mosGetParam( $_POST, 'country'.$field->name)."' ";
}
//p3
else if ($field->type == "price" && ADSMANAGER_VAL_CURR_ENABLE==1)
{
    if ($first == 0)
    $query .= "SET";
    else
    $query .= ",";
    $first = 1;
    $query .= " pr_$field->name = '".mosGetParam( $_POST, 'pr_'.$field->name)."' ";
$value = mosGetParam( $_POST, $field->name, "" );
}
//Plugins
else if (isset($plugins[$field->type]))
{
$plugins[$field->type]->onFormSave($row->id,$field->fieldid,$isUpdateMode);
continue;
}
else
{
$value = mosGetParam( $_POST, $field->name, "" );
}

if (!get_magic_quotes_gpc()) {
$value = addslashes( $value );
}

            //s6
            if($field->name=='userid' && $isUpdateMode==1){
            }else{
    if ($first == 0)
    $query .= "SET";
    else
    $query .= ",";
    $first = 1;
    $query .= " $field->name = '".$value."' ";
            }
//e6
}
}
$query .= "WHERE id = ".$row->id;


if ($first != 0)
{
if (function_exists("savePaidFields"))
{
if (savePaidFields($isUpdateMode,$row,$errormsg)!= 0) // Error
{
$redirect_text = $errormsg;
}
else
{
$database->setQuery( $query);
$database->query();
if ($database -> getErrorNum()) {
               echo $database -> stderr();
               return false;
        }
}
}
else
{
$database->setQuery( $query);
$database->query();
if ($database -> getErrorNum()) {
               echo $database -> stderr();
               return false;
        }
}
}

$nbImages = $conf->nb_images;
if($conf->xml_up_url=='standart'){
  for($i = 1 ;$i < $nbImages + 1; $i++)
  {
$ext_name = chr(ord('a')+$i-1);
$cb_image = mosGetParam( $_POST, "cb_image$i", "" );
// image1 delete
if ( $cb_image == "delete") {
$pict = $mosConfig_absolute_path."/images/$option/foto/".$row->id.$ext_name."_t.jpg";
if ( file_exists( $pict)) {
unlink( $pict);
}
$pic = $mosConfig_absolute_path."/images/$option/foto/".$row->id.$ext_name.".jpg";
if ( file_exists( $pic)) {
unlink( $pic);
}
}

if (isset( $_FILES["ad_picture$i"])) {
if ( $_FILES["ad_picture$i"]['size'] > $conf->max_image_size) {
mosRedirect(sefRelToAbs("index.php?option=$option&act=ads&catid=".$row->category."&Itemid=".$itemid), ADSMANAGER_IMAGETOOBIG);
return;
}
}

// image1 upload
if (isset( $_FILES["ad_picture$i"]) and !$_FILES["ad_picture$i"]['error'] ) {
createImageAndThumb($_FILES["ad_picture$i"]['tmp_name'],$row->id.$ext_name.".jpg",$row->id.$ext_name."_t.jpg",
$conf->max_width,
$conf->max_height,
$conf->max_width_t,
$conf->max_height_t,
$conf->tag,
$mosConfig_absolute_path."/images/$option/foto/",
$_FILES["ad_picture$i"]['name']);
}
  }
}else{
  $stamp = mosGetParam( $_POST, 'stamp');
  for($i = 1;$i < $nbImages + 1;$i++){
$pict = $mosConfig_absolute_path."/images/$option/foto/".$stamp."_".$i."_t.jpg";
$pic = $mosConfig_absolute_path."/images/$option/foto/".$stamp."_".$i.".jpg";
if(!file_exists($pic) && file_exists($pict)){
unlink($pict);
}
if(file_exists($pic) && !file_exists($pict)){
unlink($pic);
}
if (file_exists($pict) && file_exists($pic)){
for($b = 1;$b < $nbImages + 1;$b++){
    $ext_name = chr(ord('a')+$b-1);
$newpict = $mosConfig_absolute_path."/images/$option/foto/".$row->id.$ext_name."_t.jpg";
$newpic = $mosConfig_absolute_path."/images/$option/foto/".$row->id.$ext_name.".jpg";
if(!file_exists($newpic) && file_exists($newpict)){
    unlink($newpict);
}
if(file_exists($newpic) && !file_exists($newpict)){
    unlink($newpic);
}
if(!file_exists($newpic) && !file_exists($newpict)){
rename($pict,$newpict);
        rename($pic,$newpic);
break;
}
}
}
  }
}
//Subscribe on new into comments for user ads
if($conf->jcom=='1'){
    $query = "INSERT INTO `#__jcomments_subscriptions`(`object_id`,`object_group`,`name`, `email`, `userid`, `hash`, `published`) VALUES ('".$row->id."','com_adsmanager','".mosGetParam( $_POST, 'name')."','".mosGetParam( $_POST, 'email')."','".$my->id."','".md5(time())."','1')";
    $database->setQuery($query);
    $database->query();
    if ($database -> getErrorNum()) {
    echo $database -> stderr();
    }
}

    //send email
$title = mosGetParam( $_POST, "ad_headline");
$textmail = bb_code(mosGetParam( $_POST, "ad_text", "" ),1);
$textmail = str_replace(array("\r\n", "\n", "\r"), "<br />", $textmail);
$delcode = sefRelToAbs("index.php?option=$option&page=delete_my_ad&code=$delcode&Itemid=$itemid");
$body = str_replace('%delcode%', $delcode, ADS_MOS_MAIL_SHABLON);//Add delete link[$body = sprintf($body,$textmail,$delcode,$mosConfig_live_site)]
$body = str_replace('%text%', $textmail, $body);//Add text ad
$body = str_replace('%title%', $title, $body);//Add title ad
$body = str_replace('%adid%', $row->id, $body);//Add adid ad
if (get_magic_quotes_gpc() == true){
$body = stripslashes( $body );
$title = stripslashes( $title );
}
//Send email admin
if ((($conf->send_email_on_new == 1)&&($isUpdateMode == 0))||(($conf->send_email_on_update == 1)&&($isUpdateMode == 1))){
    sendAdEmail($isUpdateMode,$title,$body,$mosConfig_mailfrom);//4th par. email to send
    }
//Send email user
if($isUpdateMode == 0){
    if (mosGetParam( $_POST, "email")!=''){
    mosMail('support@'.$_SERVER['HTTP_HOST'],$_SERVER['HTTP_HOST'],mosGetParam( $_POST, "email"),ADSMANAGER_EMAIL_NEW_U.$title,$body,1);
}
}

//Check images in ads
$pic = $mosConfig_absolute_path."/images/com_adsmanager/foto/".$row->id."a_t.jpg";
if(file_exists($pic)){
    $database->setQuery( "UPDATE #__adsmanager_ads SET `imgs`='1' WHERE id = '$row->id'");
    $database->query();
}else{
    $database->setQuery( "UPDATE #__adsmanager_ads SET `imgs`='0' WHERE id = '$row->id'");
    $database->query();
}
//Check images in ads

/*sms*/
if($conf->sms_only==1 && $sms!=true){
    mosRedirect(sefRelToAbs("index.php?option=$option&page=show_sms_ad&adid=$row->id&Itemid=$itemid"));
}
/*sms*/

/*Add text ads into content*/
if($conf->letters==1){
if($rolf->ras1!="" && $rolf->ras2!="" && $rolf->ras1!="-1" && $rolf->ras2!="-1"){
$database->setQuery("SELECT * FROM #__adsmanager_ads WHERE id = '$row->id'");
$list = $database->loadObjectList();
foreach($list as $rowa) {}

$database->setQuery("SELECT * FROM #__adsmanager_categories LEFT JOIN #__adsmanager_adcat ON id = catid WHERE adid = '$row->id'");
$list = $database->loadObjectList();
foreach($list as $rolf) {}

$pic = $mosConfig_absolute_path."/images/com_adsmanager/foto/".$rowa->id."a_t.jpg";
if ( file_exists( $pic) && $rowa->imgs==1) {
    $img = "<a href=\"".$mosConfig_live_site."/images/com_adsmanager/foto/".$rowa->id."a.jpg"."\"><img src=\"".$mosConfig_live_site."/images/com_adsmanager/foto/".$rowa->id."a_t.jpg"."\" align=\"right\"/></a>";
}
$pic2 = $mosConfig_absolute_path."/images/com_adsmanager/foto/".$rowa->id."b_t.jpg";
if ( file_exists( $pic2) && $rowa->imgs==1) {
    $img.= "<a href=\"".$mosConfig_live_site."/images/com_adsmanager/foto/".$rowa->id."b.jpg"."\"><img src=\"".$mosConfig_live_site."/images/com_adsmanager/foto/".$rowa->id."b_t.jpg"."\" align=\"right\"/></a>";
}
/*TEXT объявления, будет сохранён как статья*/
$text = '<p class="adsmanager_text">'.$img.bb_code($rowa->ad_text,$conf->opt2).'</p><p><a href="'.sefRelToAbs('index.php?option=com_adsmanager&page=show_ad&adid='.$rowa->id).'">link to ads</a></p>';
    /*Справка
$rolf->ras1 - раздел
$rolf->ras2 - категория
*/
            $database->setQuery("INSERT INTO #__content (title,sectionid,catid,created,created_by,state,introtext,created_by_alias) VALUES('".addslashes($rowa->ad_headline)."','$rolf->ras1','$rolf->ras2','$rowa->date_created ".date('G:i:s')."','$rowa->userid','1','".addslashes($text)."','$rowa->id')");
    $database->query();
if ($database -> getErrorNum()) {
echo $database -> stderr();
    }
//Show post on front page
if(mosGetParam( $_POST, "content_front")==1){
$newid = $database->insertid();
                $database->setQuery("INSERT INTO #__content_frontpage (content_id) VALUES('$newid')");
        $database->query();
if ($database -> getErrorNum()) {
    echo $database -> stderr();
        }
}
}
}
/*Add text ads into content*/

if ($conf->submission_type == 2)
mosRedirect(sefRelToAbs("index.php?option=$option&page=show_all&Itemid=$itemid"),$redirect_text);
else if ($conf->comprofiler == 2)
mosRedirect(sefRelToAbs("index.php?option=com_comprofiler&task=userProfile&tab=AdsManagerTab&Itemid=$itemid"),$redirect_text);
else
mosRedirect(sefRelToAbs("index.php?option=$option&page=show_user&Itemid=$itemid"),$redirect_text);
}
с помощью этого куска кода в БД летит значения заполняемых полей при добавлении объявы
Код
  if(mosGetParam($_REQUEST,'isUpdateMode')!=1){
$row->userid = $my->id;  // происходит добавление полей, которые указали в форме добавления (в ЛК сообщение не показывается)
  }

Добавление даты и категории происходит в других кусках кода функции save_ad

Вот в общем что я 'нарыл'.
Ради интереса в AdsManager.html.php два раза вывел метод displayFields.
Появилось две формы.. заполнил и отправил - добавилось значение только второй формы.

Может кто подскажет(программным кодом или ссылкой) как сделать допустим кнопку 'Добавить ещё', при нажатии на которую повторно вызывался бы метод displayFields, и в БД записывались бы данные всех форм, а не последней.

Заранее спасибо.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Заглушки с http://placehold.it вместо картинок в списке объявлений

Автор efimov777

Ответов: 6
Просмотров: 5430
Последний ответ 12.04.2020, 07:25:59
от Pavel
Хочу уточнить, есть в AdsManager возможность загрузки объявлений с парсера?

Автор DomBeri

Ответов: 3
Просмотров: 9426
Последний ответ 28.03.2019, 17:20:10
от DomBeri
Удалить карту объявлений Google

Автор trel

Ответов: 7
Просмотров: 3732
Последний ответ 25.03.2019, 09:02:25
от Technic
Вывод объявлений в случайном порядке

Автор Sabotage

Ответов: 3
Просмотров: 1637
Последний ответ 28.09.2018, 14:21:05
от Sabotage
Поля в списке объявлений

Автор klekovkinandrey

Ответов: 0
Просмотров: 1371
Последний ответ 17.01.2018, 10:18:34
от klekovkinandrey