Форумы / National / Russian / Сборка «Фриланс-биржа» / Условие выбора экстраполя в php

<<<12

ed.moriarti
#16 25.04.2020 13:08

В базе значение в таблице delete_reason (тоесть экстраполе) в указанном посте числится как NULL может из-за этого?

if ($ritem['item_delete_reason'] == 'poorphoto') //Если выбрана причина poorphoto (тут я бы сильно проверил если ли там эти переменные на стр удаления проекта)

 

как эти переменные поместить на страницу удаления?

Kopusha
#17 25.04.2020 13:20
#44620 Kopusha:

Надо при удалении Project указывать причину. ё

- создаем экрполе селект с причинами

- даем возможность модератору удалять проекты редактированием проектов (не в админке а зайдя в проект и удалить его)

- ищем в модуле проектов момент удаления-редактирования (скорее всего projects.edit.php в inc)

там для if($rdelete) проверяем кто удаляет - если не автор проекта - значит модератор

if($usr['id'] != $item['item_userid']) //Если не сам юзер удаляет значит это модератор

там пишем "письма счастья" if($ritem['item_delete_reason'] = 'poorphoto') и тд - это отправит письмо тому у кого удалили проект

- идем в тему в projects.edit.tpl

там по условию какому то (например <!-- IF {PHP.c|cot_auth('projets', 'this', 'A')} -->) показываем этот селект
{PRJEDIT_FORM_DELETE_REASON}
то есть если юзер может админить эту категорию проектов то он выбирает селект и удаляет проект. в зависимости от выбранного селект php файл вышлет письмо.

Тут же написано

ed.moriarti
#18 25.04.2020 13:45

Так и сделано, экстраполе селект я создал в модуле проджектс. Захожу с админского только профиля (или модераторский это обязательное условие) захожу в проект, редактировать, выбираю селект и галочку удалить, нажимаю кнопку. я уже вспотел, хз че не так

Added 2 minutes later:

Под модераторским юзером с правами категории таже самая ошбка с БД

Dayver
#19 26.04.2020 01:45

В файле projects.edit.php где то сверху, можно сразу после строки

list($usr['auth_read'], $usr['auth_write'], $usr['isadmin']) = cot_auth('projects', 'any', 'RWA');

вставте строчку 

require_once cot_incfile('pm', 'module');

и будет вам счастье.

Pavlo Tkachenko aka Dayver
Kopusha
#20 26.04.2020 06:54

странно я нигде не подключал в старых модулях-плагинах ничего, работало. 
Думаю скорее у него другая - проблема - судя по его коду - отрабатывает только последнее else а там 2 инжекта в БД.

Dayver
#21 26.04.2020 19:02
#44651 Kopusha:

странно я нигде не подключал в старых модулях-плагинах ничего, работало. 
Думаю скорее у него другая - проблема - судя по его коду - отрабатывает только последнее else а там 2 инжекта в БД.

Зачем гадать на кофейной гуще если есть текст ошибки в котором чётко видно что в переменной с именем таблицы - пустая .... а значит модуль не знает её а значит нужно познакомить их друг с другом и все срастётся и  полетят детишки ЛСки в мир ...

Pavlo Tkachenko aka Dayver
ed.moriarti
#22 27.04.2020 13:33
#44641 Dayver:

В файле projects.edit.php где то сверху, можно сразу после строки

list($usr['auth_read'], $usr['auth_write'], $usr['isadmin']) = cot_auth('projects', 'any', 'RWA');

вставте строчку 

require_once cot_incfile('pm', 'module');

и будет вам счастье.

Помогло!

Добавлено 1 день спустя:

Друзья, спасибо вам огромное!

Я даже уже начал понимать как работать с БД. ТОлько опять с проблемой столкнулся.

В projects.edit.php я прописал такой код, который срабатывает если нажать кнопку "скрыть проект" при этом если передан определенный параметр ?a=

if ($a == 'hideerror1')

{
            // Сообщение автору истории от редактора что она скрыта(не администратором а модератором не из админки)       
			$text .= $L['deletestory_pm_hideerror1text1'];
            $text .= $item['item_title'] .' ';
            $text .= $L['deletestory_pm_hideerror1text2'];
            $pm['pm_title'] = $L['projects_deleted_mail_hideerror1'];
            $pm['pm_date'] = (int)$sys['now'];
            $pm['pm_text'] = $text;
            $pm['pm_fromstate'] = 0;
            $pm['pm_fromuserid'] = $usr['id'];
            $pm['pm_fromuser'] = $usr['name'];
            $pm['pm_touserid'] = $item['item_userid'];
            $pmsql = $db->insert($db_pm, $pm);
            $pmsql = $db->update($db_users, array('user_newpm' => '1'), "user_id = ".$item['item_userid']."");      
			$projectssql = $db->update($db_projects, array('item_HIDEERROR' => '2'), "item_id = ".$item['item_id']."");
			
	$ritem = array();
	$ritem['item_state'] = 1;
	$db->update($db_projects, $ritem, 'item_id = ?', $id);
	
	cot_projects_sync($item['item_cat']);
	
	$urlparams = empty($item['item_alias']) ?
		array('c' => $item['item_cat'], 'id' => $id) :
		array('c' => $item['item_cat'], 'al' => $item['item_alias']);
	$r_url = cot_url('projects', $urlparams, '', true);
	
	/* === Hook === */
	foreach (cot_getextplugins('projects.edit.hide') as $pl)
	{
		include $pl;
	}
	/* ===== */
	
	cot_redirect($r_url);
	exit;
}

Все работает, проект скрывается, в БД обнавляется нужная мне таблица item_HIDEERROR и создателю проекта уходит в ПМ письмо что проект скрыт, вот только проблема в том что ему в ПМ приходит сразу два одинаковых письма, а должно одно. Почему? Не пойму!

Отредактировано: ed.moriarti (29.04.2020 11:55, 3 года назад)
Kopusha
#23 29.04.2020 12:34

Два письма с тайтлом projects_deleted_mail_hideerror1? Точно где то выше еще уловие не срабатывает?

ed.moriarti
#24 29.04.2020 12:49
#44669 Kopusha:

Два письма с тайтлом projects_deleted_mail_hideerror1? Точно где то выше еще уловие не срабатывает?

Ты знаешь, походу глюк какой-то был, сейчас по одному приходит. Чертовщина какая-то.

Kopusha
#25 29.04.2020 16:22

Пиши всюду по php коду //пояснение что делает эта строка - потом будет проще. Я в свое время в бирже отловил кучу багов но у себя, в инстале они есть. Точно помню что в folio/projects.add/edit какая то проверка была не на месте в исходном.

<<<12