• Уважаемый Гость! Если вы зарегистрировались на нашем форуме, значит вам нужна помощь! Мы всегда рады вам помочь, еще ни один пользователь не получил отказа! Но мы так же нуждаемся в Вашей поддержке. Проект полностью бесплатный, мы не имеем права требовать от вас денег, нам это и не нужно! Но от любой финансовой поддержки не откажемся. Проект развивается, но иногда очень тяжело его поддерживать, особенно в финансовом отношении. Если у вас есть возможность поддержать нас финансово, мы будем вам очень благодарны! С уважением, команда Оскласс Россия!
  • Изменение в правилах форума! В связи с огромным количеством вопросов поступающих в адрес технической поддержки мы решили изменить правила форума! Просим всех пользователей обратить внимание на данные изменения и четко их соблюдать!
  • Ребята, нуждаемся в программистах! Если хотите зарабатывать и есть время, пишите администраторам сайта. Есть база и инструменты, нужен опыт и знания =)
  • Уважаемые пользователи! На форуме появились разделы по работе с системой Yclas. Yclas - это скрипт доски объявлений. Нужны разработчики.

поднятие объявлений из кабинета

drakon

Активный пользователь
Может кому пригодится , я попробовал работает взята с буржуйского форума.

добавляем код в файл ItemAction:
Код:
		public function renew( $id, $secret = NULL )
		{
			$aWhere = array();
			if( $secret == NULL ) {
				$item[0] = $this->manager->findByPrimaryKey( $id );
				$aWhere = array('pk_i_id' => $id);
			} else {
				$item = $this->manager->listWhere("i.s_secret = '%s' AND i.pk_i_id = '%s' ", $secret, $id);
				$aWhere = array('s_secret' => $secret, 'pk_i_id' => $id);
			}
			if( count($item) == 0 ) {
				return false;
			}
			if($item[0]['b_enabled']==0 || $item[0]['b_active']==0 || $item[0]['b_spam']!=0) {
				return false;
			}
			osc_run_hook('pre_item_renew', $item[0]);
			$_category = Category::newInstance()->findByPrimaryKey($item[0]['fk_i_category_id']);
			$expdate = date('Y-m-d H:i:s', time() + 86400*$_category['i_expiration_days']);
 
 
 
 
				$result = $this->manager->update(
					array('dt_pub_date' => date('Y-m-d H:i:s'), 'dt_expiration' => $expdate),
					$aWhere
				);
 
 
 
 
			// updated correctly
			if($result == 1) {
				$_locale = reset($item[0]['locale']);
				$locale_code = $_locale['fk_c_locale_code'];
				$item[0]['s_title'] = bg_sanitize_title($item[0]['s_title']);
				$this->manager->updateLocaleForce($item[0]['pk_i_id'] , $locale_code, $item[0]['s_title'], $item[0]['s_description']);
				osc_run_hook('item_renewed', $item[0]);
				if (osc_isExpired($item[0]['dt_expiration'])) {
					if($item[0]['fk_i_user_id']!=null) {
						User::newInstance()->increaseNumItems($item[0]['fk_i_user_id']);
					}
					CategoryStats::newInstance()->increaseNumItems($item[0]['fk_i_category_id']);
					CountryStats::newInstance()->increaseNumItems($item[0]['fk_c_country_code']);
					RegionStats::newInstance()->increaseNumItems($item[0]['fk_i_region_id']);
					CityStats::newInstance()->increaseNumItems($item[0]['fk_i_city_id']);
				}	
				return true;
			}
		}

В следующий файл osclass/controller/item.php добавляем :
Код:
 case 'item_renew':
					$secret = Params::getParam('secret');
					$id	 = Params::getParam('id');
					if (osc_is_admin_user_logged_in()) {
						$item	= $this->itemManager->listWhere("i.pk_i_id = '%s'", addslashes($id));
						if( count($item) == 0 ) {
							$this->do404();
							return;
						}
					} else {   
						$item   = $this->itemManager->listWhere("i.pk_i_id = '%s' AND ((i.s_secret = '%s') OR (i.fk_i_user_id = '%d'))", addslashes($id), addslashes($secret), addslashes($this->userId));
 
 
 
 
						// item doesn't exist
						if( count($item) == 0 ) {
							$this->do404();
							return;
						}
						$datenow = new DateTime('NOW');
						$itemdate = new DateTime(substr($item[0]['dt_pub_date'],0,10));
						$ddate = date_diff($itemdate,$datenow)->days; 
 
 
 
 
						// TODO: SET PREF. NUMBER OF DAYS BEFORE ITEM CAN BE RENEWED.
					   //wait 2 days before item can be renewed
						if ($ddate < 2) { 
							osc_add_flash_warning_message( _m('Can't renew this item yet') );
							$this->redirectTo(osc_user_list_items_url());
						}
					}	
					$mItems = new ItemActions(false);
					$success = $mItems->renew( $item[0]['pk_i_id'], $item[0]['s_secret']);
					if( $success ) {
						osc_run_hook('item_renewed', $item[0]);
						osc_add_flash_ok_message( _m("The listing has been renewed") );
					} else {
						osc_add_flash_error_message( _m("The listing can't be renewed") );
					}
					if (osc_is_admin_user_logged_in()) {
						$this->redirectTo(osc_get_http_referer());
					} else {
						$this->redirectTo(osc_user_list_items_url());
					}	
				break;

добавляем в файл:
oc-includes/osclass/helper/hDefine.php
Код:
	function osc_item_renew_url($secret = '', $id = '') {
		if ($id == '') { $id = osc_item_id(); };
			return osc_base_url(true) . '?page=item&action=item_renew&id=' . $id . ($secret != '' ? '&secret=' . $secret : '');
	}

И в завершение в user-dashboard.php добавляем
Код:
<a href="<?php echo osc_item_renew_url( $item['s_secret'], $item['pk_i_id']); ?>">Подъем</a>

Вставил попробовал поднять, поднимает.
Вот скрин как выглядит в кабинете

kabin.JPG
 

drakon

Активный пользователь
Из первого кода нужно удалить эту строку:
Код:
$item[0]['s_title'] = bg_sanitize_title($item[0]['s_title']);

А то при подъеме поднимает, но выдает ошибку на экран. После удаления этой строки все хорошо поднимается без ошибок.
 

drakon

Активный пользователь
Написано же выше, удали строку из первого кода, если не удалил и все будет работать.
и будет без ошибки
 

vektor

Новичок
эта строка изначально удалена, я до конца читал. А это выскакивает, я неверно отписал, не ошибка, а сообщение
 

drakon

Активный пользователь
Вот файлы измененные которые у меня работают, Перед тем как себе поставить , делайте копию своих файлов. Нужно изменить на файлах расширение .php
 

Вложения

  • ItemActions.txt
    67,4 КБ · Просмотры: 91
  • item.txt
    35,9 КБ · Просмотры: 82
  • hDefines.txt
    34,1 КБ · Просмотры: 70

drakon

Активный пользователь
Что хочу сказать за счет бесплатного подъема объявлений пользователями доски посещаемость за месяц увеличилась вдвое, т.е постоянное присутствие пользователей. Чем положительно влияет на раскрутку доски, у пользователей возникает конкуренция (место на первой позиции).
 

Rever

Новичок
В теме Бендер получилось вставить ссылку "Поднять" только в файл bender/item.php
получилось вот так: Безымянный.jpg - работает.

Как добавить ссылку в список моих объявлений в личном кабинете в теме Бендер я не понял
 

mackrof

Новичок
У меня такая проблема, когда я нажимаю на поднять, объявления не показываются в списке. Почему это?
 

vgazel

Новичок
В теме Бендер получилось вставить ссылку "Поднять" только в файл bender/item.php
получилось вот так: Посмотреть вложение 377 - работает.

Как добавить ссылку в список моих объявлений в личном кабинете в теме Бендер я не понял

В Бендере добавлял в файле loop-single.php и loop-single-premium.php

<span class="admin-options">
<a href="<?php echo osc_item_edit_url(); ?>" rel="nofollow"><?php _e('Edit item', 'bender'); ?></a>
<span>|</span>
<a class="delete" onclick="javascript:return confirm('<?php echo osc_esc_js(__('This action can not be undone. Are you sure you want to continue?', 'bender')); ?>')" href="<?php echo osc_item_delete_url();?>" ><?php _e('Delete', 'bender'); ?></a>
<?php if(osc_item_is_inactive()) {?>
<span>|</span>
<a href="<?php echo osc_item_activate_url();?>" ><?php _e('Activate', 'bender'); ?></a>
<?php } ?>
<span>|</span>
<a href="<?php echo osc_item_renew_url( $item['s_secret'], $item['pk_i_id']); ?>">Поднять объявление</a>
<p><?php _e("Всего просмотров", 'bender') ; ?>: <strong><?php echo osc_item_views(); ?></strong></p>
</span>
 

kierr_abyss

Новичок
Код:
//wait 2 days before item can be renewed
if ($ddate < 2) {
  osc_add_flash_warning_message( _m('Can't renew this item yet') );
  $this->redirectTo(osc_user_list_items_url());
}

Вот эта часть кода не работает. Объявления поднимаются без ожидания в 2 дня к примеру. Не знаете как исправить?
 

kierr_abyss

Новичок
Код:
//wait 2 days before item can be renewed
if ($ddate < 2) {
  osc_add_flash_warning_message( _m('Can't renew this item yet') );
  $this->redirectTo(osc_user_list_items_url());
}

Вот эта часть кода не работает. Объявления поднимаются без ожидания в 2 дня к примеру. Не знаете как исправить?
Ууупс. Прошу прощения. Все работает идеально :)
 

Crusader

Активный пользователь
Подскажите, пожалуйста, как сделать так, чтоб эта надпись "Поднять" появлялась в объявлении (возле кнопок "связаться с автором" и "поделиться") пользователя когда он войдет в свою учетную запись? Вставил код в Item.php в место где эти кнопки, но "Поднять" появляется для всех пользователей.
 

mackrof

Новичок
Подскажите, пожалуйста, как сделать так, чтоб эта надпись "Поднять" появлялась в объявлении (возле кнопок "связаться с автором" и "поделиться") пользователя когда он войдет в свою учетную запись? Вставил код в Item.php в место где эти кнопки, но "Поднять" появляется для всех пользователей.

А что мешает добавить код

Код:
<a href="<?php echo osc_item_renew_url( $item['s_secret'], $item['pk_i_id']); ?>">Подъем</a>

В item.php
 

mackrof

Новичок
Подскажите, пожалуйста, как сделать так, чтоб эта надпись "Поднять" появлялась в объявлении (возле кнопок "связаться с автором" и "поделиться") пользователя когда он войдет в свою учетную запись? Вставил код в Item.php в место где эти кнопки, но "Поднять" появляется для всех пользователей.

Ну а если ты хочешь чтобы только автор поста увидел кнопку, то оберни это в условие.

Код:
<?php if(osc_is_web_user_logged_in() && osc_logged_user_id()==osc_item_user_id()) { ?>
 
...................
 
 
<?php } ?>
 

Crusader

Активный пользователь
Вот сюда пытаюсь добавить

<p class="contact_button">
<?php if( !osc_item_is_expired () ) { ?>
<?php if( !( ( osc_logged_user_id() == osc_item_user_id() ) && osc_logged_user_id() != 0 ) ) { ?>
<?php if(osc_reg_user_can_contact() && osc_is_web_user_logged_in() || !osc_reg_user_can_contact() ) { ?>
<strong><a href="#contact"><?php _e('Contact seller', 'modern'); ?></a></strong>

<strong><a href="<?php echo osc_item_renew_url( $item['s_secret'], $item['pk_i_id']); ?>">Поднять</a></strong>

<?php } ?>
<?php } ?>
<?php } ?>
 
Верх