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

12NächsteLetzte

Kopusha
#1 21. April 2020, 08:49

Для модуля создано экстраполе select - item_delete_reason, в нем варианты (poorphoto,lowphoto,notformat,duplicate).
При удалении созданного объекта у меня сейчас так:
 

    if ($rdelete)
    
   if ($usr['id'] != $item['item_userid']) //Если не сам юзер удаляет значит это модератор
        {
        // Сообщение автору истории от редактора что она удалена (не администратором а модератором не из админки)      
        $text .= $L['deletestory_pm_newtext1'];
        $text .= $item['item_title'] .' ';
        $text .= $L['deletestory_pm_newtext2'];
        $text .= $usr['name'] .' ';
        $pm['pm_title'] = $L['folio_deleted_mail_subj'];
        $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'];
        $pm['pm_tostate'] = 0;
        $pmsql = $db->insert($db_pm, $pm);
        $pmsql = $db->update($db_users, array('user_newpm' => '1'), "user_id = ".$item['item_userid']."");               
        }
         
cot_folio_delete($id, $item);
    cot_redirect(cot_url('folio', "c=" . $item['item_cat'], '', true));
}

Как тут сделать разные тексты писем в зависимости от выбранного select? Вроде просто а не могу осилить никак. Оно НЕ успевает это все проверить до удаления что ли?)

Added 9 minutes later:

if ($rdelete)
{
         
    if ($usr['id'] != $item['item_userid']) //Если не сам юзер удаляет значит это модератор
    {
        if ($ritem['item_delete_reason'] = 'poorphoto')
            {  
            // Сообщение автору истории от редактора что она удалена (не администратором а модератором не из админки)      
            $text .= $L['deletestory_pm_newtext1'];
            $text .= $item['item_title'] .' ';
            $text .= $L['deletestory_pm_newtext2'];
            $text .= $usr['name'] .' ';
            $pm['pm_title'] = $L['folio_deleted_mail_subjpoorphoto'];
            $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'];
            $pm['pm_tostate'] = 0;
            $pmsql = $db->insert($db_pm, $pm);
            $pmsql = $db->update($db_users, array('user_newpm' => '1'), "user_id = ".$item['item_userid']."");               
        }
             
        else if ($ritem['item_delete_reason'] = 'lowphoto')
            {  
            // Сообщение автору истории от редактора что она удалена (не администратором а модератором не из админки)      
            $text .= $L['deletestory_pm_newtext1'];
            $text .= $item['item_title'] .' ';
            $text .= $L['deletestory_pm_newtext2'];
            $text .= $usr['name'] .' ';
            $pm['pm_title'] = $L['folio_deleted_mail_subjlowphoto'];
            $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'];
            $pm['pm_tostate'] = 0;
            $pmsql = $db->insert($db_pm, $pm);
            $pmsql = $db->update($db_users, array('user_newpm' => '1'), "user_id = ".$item['item_userid']."");               
        }
        else
            {  
            // Сообщение автору истории от редактора что она удалена (не администратором а модератором не из админки)      
            $text .= $L['deletestory_pm_newtext1'];
            $text .= $item['item_title'] .' ';
            $text .= $L['deletestory_pm_newtext2'];
            $text .= $usr['name'] .' ';
            $pm['pm_title'] = $L['folio_deleted_mail_subj'];
            $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'];
            $pm['pm_tostate'] = 0;
            $pmsql = $db->insert($db_pm, $pm);
            $pmsql = $db->update($db_users, array('user_newpm' => '1'), "user_id = ".$item['item_userid']."");               
        }
    }
    cot_folio_delete($id, $item);
    cot_redirect(cot_url('folio', "c=" . $item['item_cat'], '', true));
}

Всяко пробую и явно где то просто туплю

Added 56 minutes later:

та да, if($ritem['item_delete_reason'] == 'poorphoto')
заработался


Dieser Beitrag wurde von Kopusha (am 21. April 2020, 09:55, vor 5 Jahre) bearbeitet
ed.moriarti
#2 25. April 2020, 07:13
if ($rdelete)
{
      
    if ($usr['id'] != $item['item_userid']) //Если не сам юзер удаляет значит это модератор
    {
        if ($ritem['item_delete_reason'] = 'poorphoto')
            {  
            // Сообщение автору истории от редактора что она удалена (не администратором а модератором не из админки)      
            $text .= $L['deletestory_pm_newtext1'];
            $text .= $item['item_title'] .' ';
            $text .= $L['deletestory_pm_newtext2'];
            $text .= $usr['name'] .' ';
            $pm['pm_title'] = $L['folio_deleted_mail_subjpoorphoto'];
            $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'];
            $pm['pm_tostate'] = 0;
            $pmsql = $db->insert($db_pm, $pm);
            $pmsql = $db->update($db_users, array('user_newpm' => '1'), "user_id = ".$item['item_userid']."");               
        }
          
        else if ($ritem['item_delete_reason'] = 'lowphoto')
            {  
            // Сообщение автору истории от редактора что она удалена (не администратором а модератором не из админки)      
            $text .= $L['deletestory_pm_newtext1'];
            $text .= $item['item_title'] .' ';
            $text .= $L['deletestory_pm_newtext2'];
            $text .= $usr['name'] .' ';
            $pm['pm_title'] = $L['folio_deleted_mail_subjlowphoto'];
            $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'];
            $pm['pm_tostate'] = 0;
            $pmsql = $db->insert($db_pm, $pm);
            $pmsql = $db->update($db_users, array('user_newpm' => '1'), "user_id = ".$item['item_userid']."");               
        }
        else
            {  
            // Сообщение автору истории от редактора что она удалена (не администратором а модератором не из админки)      
            $text .= $L['deletestory_pm_newtext1'];
            $text .= $item['item_title'] .' ';
            $text .= $L['deletestory_pm_newtext2'];
            $text .= $usr['name'] .' ';
            $pm['pm_title'] = $L['folio_deleted_mail_subj'];
            $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'];
            $pm['pm_tostate'] = 0;
            $pmsql = $db->insert($db_pm, $pm);
            $pmsql = $db->update($db_users, array('user_newpm' => '1'), "user_id = ".$item['item_userid']."");               
        }
    }
    cot_folio_delete($id, $item);
    cot_redirect(cot_url('folio', "c=" . $item['item_cat'], '', true));
}

тоесть я создаю экстраполе item_delete_reason (в формате select )? а к какому плагину добавлять это экстраполе?

И куда вставлять этот код?

и каким тегом его потом вывести для работы и в каком месте?

Kopusha
#3 25. April 2020, 07:40

Надо при удалении 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
#4 25. April 2020, 08:19

В файле inc / project.edit.php

вставил ваш бок в проджект.едит.пхп

создал экстраполе в модуле проджектс: 

в итоге при редактировании проекта выбираем проект и ставим галочку удалить проект, жмакаю на кнопку и получаю это:

Фатальная ошибка
2020-04-25 08:16
 
Ошибка SQL 42000: синтаксическая ошибка или нарушение прав доступа: 1103 Неверное имя таблицы ''
 
# 0 cot_diefatal (ошибка SQL 42000: синтаксическая ошибка или нарушение прав доступа: 1103 Неверное имя таблицы '') вызывается по адресу [/var/www//public_html/system/database.php:451]
# 1 CotDB-> insert (, Array ([pm_title] =>, [pm_date] => 1587802568, [pm_text] => Сделать общую уборку в офисе администратора, [pm_fromstate] => 0, [pm_fromuserid] => 1, [ pm_fromuser] => admin, [pm_touserid] => 5, [pm_tostate] => 0)) вызывается по адресу [/var/www//public_html/modules/projects/inc/projects.edit.php:85]
# 2 require_once (/var/www//public_html/modules/projects/inc/projects.edit.php) вызывается по адресу [/var/www//public_html/modules/projects/projects.php:33]
# 3 require_once (/var/www//public_html/modules/projects/projects.php) вызывается по адресу [/var/www//public_html/index.php:176]

че не так то? ))

Kopusha
#5 25. April 2020, 08:22

projects.edit.php в студию

Added 53 seconds later:

85 строка там левая. мой код не для проектов тот что вверху, нельзя так просто взять и вставить (боромир (с))

ed.moriarti
#6 25. April 2020, 08:24
#44622 Kopusha:

projects.edit.php в студию

Added 53 seconds later:

85 строка там левая. мой код не для проектов тот что вверху, нельзя так просто взять и вставить (боромир (с))

тупанул! щас исправлюсь

Added 6 minutes later:

Блин, чет для меня сложно php осиливается )) это мой projects.edit.php с изменениями

<?php
 
/**
 * projects module
 *
 * @package projects
 * @version 2.5.2
 * @author CMSWorks Team
 * @copyright Copyright (c) CMSWorks.ru, littledev.ru
 * @license BSD
 */
 
defined('COT_CODE') or die('Wrong URL');
 
$id = cot_import('id', 'G', 'INT');
$c = cot_import('c', 'G', 'TXT');
 
list($usr['auth_read'], $usr['auth_write'], $usr['isadmin']) = cot_auth('projects', 'any', 'RWA');
 
/* === Hook === */
foreach (cot_getextplugins('projects.edit.first') as $pl)
{
    include $pl;
}
/* ===== */
 
cot_block($usr['auth_read']);
 
if (!$id || $id < 0)
{
    cot_die_message(404);
}
 
$sql = $db->query("SELECT * FROM $db_projects WHERE item_id='$id' LIMIT 1");
cot_die($sql->rowCount() == 0);
$item = $sql->fetch();
 
list($usr['auth_read'], $usr['auth_write'], $usr['isadmin']) = cot_auth('projects', $item['item_cat']);
cot_block($usr['isadmin'] || $usr['auth_write'] && $usr['id'] == $item['item_userid']);
 
$sys['parser'] = $item['item_parser'];
$parser_list = cot_get_parsers();
 
if ($a == 'update')
{
    /* === Hook === */
    foreach (cot_getextplugins('projects.edit.update.first') as $pl)
    {
        include $pl;
    }
    /* ===== */
 
    $ritem = cot_projects_import('POST', $item, $usr);
     
    if ($_SERVER['REQUEST_METHOD'] == 'POST')
    {
        $rdelete = cot_import('rdelete', 'P', 'BOL');
    }
    else
    {
        $rdelete = cot_import('delete', 'G', 'BOL');
        cot_check_xg();
    }
 
     
if ($rdelete)
{
       
    if ($usr['id'] != $item['item_userid']) //Если не сам юзер удаляет значит это модератор
    {
        if ($ritem['item_delete_reason'] == 'poorphoto')
            {  
            // Сообщение автору истории от редактора что она удалена (не администратором а модератором не из админки)      
            $text .= $L['deletestory_pm_newtext1'];
            $text .= $item['item_title'] .' ';
            $text .= $L['deletestory_pm_newtext2'];
            $text .= $usr['name'] .' ';
            $pm['pm_title'] = $L['folio_deleted_mail_subjpoorphoto'];
            $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'];
            $pm['pm_tostate'] = 0;
            $pmsql = $db->insert($db_pm, $pm);
            $pmsql = $db->update($db_users, array('user_newpm' => '1'), "user_id = ".$item['item_userid']."");               
        }
           
        else if ($ritem['item_delete_reason'] == 'lowphoto')
            {  
            // Сообщение автору истории от редактора что она удалена (не администратором а модератором не из админки)      
            $text .= $L['deletestory_pm_newtext1'];
            $text .= $item['item_title'] .' ';
            $text .= $L['deletestory_pm_newtext2'];
            $text .= $usr['name'] .' ';
            $pm['pm_title'] = $L['folio_deleted_mail_subjlowphoto'];
            $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'];
            $pm['pm_tostate'] = 0;
            $pmsql = $db->insert($db_pm, $pm);
            $pmsql = $db->update($db_users, array('user_newpm' => '1'), "user_id = ".$item['item_userid']."");               
        }
        else
            {  
            // Сообщение автору истории от редактора что она удалена (не администратором а модератором не из админки)      
            $text .= $L['deletestory_pm_newtext1'];
            $text .= $item['item_title'] .' ';
            $text .= $L['deletestory_pm_newtext2'];
            $text .= $usr['name'] .' ';
            $pm['pm_title'] = $L['folio_deleted_mail_subj'];
            $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'];
            $pm['pm_tostate'] = 0;
            $pmsql = $db->insert($db_pm, $pm);
            $pmsql = $db->update($db_users, array('user_newpm' => '1'), "user_id = ".$item['item_userid']."");               
        }
    }
    cot_projects_delete($id, $item);
    cot_redirect(cot_url('projects', "c=" . $item['item_cat'], '', true));
}  
     
 
     
    /* === Hook === */
    foreach (cot_getextplugins('projects.edit.update.import') as $pl)
    {
        include $pl;
    }
    /* ===== */
 
    cot_projects_validate($ritem);
 
    /* === Hook === */
    foreach (cot_getextplugins('projects.edit.update.error') as $pl)
    {
        include $pl;
    }
    /* ===== */
 
    if (!cot_error_found())
    {
        cot_projects_update($id, $ritem, $usr);
 
        switch ($ritem['item_state'])
        {
            case 0:
                $urlparams = empty($ritem['item_alias']) ?
                    array('c' => $ritem['item_cat'], 'id' => $id) :
                    array('c' => $ritem['item_cat'], 'al' => $ritem['item_alias']);
                $r_url = cot_url('projects', $urlparams, '', true);
                 
                if (!$usr['isadmin'])
                {
                    $rbody = cot_rc($L['project_added_mail_body'], array(
                        'user_name' => $usr['profile']['user_name'],
                        'prj_name' => $item['item_title'],
                        'sitename' => $cfg['maintitle'],
                        'link' => COT_ABSOLUTE_URL . $r_url
                    ));
                    cot_mail($usr['profile']['user_email'], $L['project_added_mail_subj'], $rbody);
                }
                break;
            case 1:
                $r_url = cot_url('projects', 'm=preview&id=' . $id, '', true);
                break;
            case 2:
                $urlparams = empty($ritem['item_alias']) ?
                    array('c' => $ritem['item_cat'], 'id' => $id) :
                    array('c' => $ritem['item_cat'], 'al' => $ritem['item_alias']);
                $r_url = cot_url('projects', $urlparams, '', true);
                 
                if (!$usr['isadmin'])
                {
                    $rbody = cot_rc($L['project_senttovalidation_mail_body'], array(
                        'user_name' => $usr['profile']['user_name'],
                        'prj_name' => $item['item_title'],
                        'sitename' => $cfg['maintitle'],
                        'link' => COT_ABSOLUTE_URL . $r_url
                    ));
                    cot_mail($usr['profile']['user_email'], $L['project_senttovalidation_mail_subj'], $rbody);
                }
 
                if ($cfg['projects']['notif_admin_moderate'])
                {                  
                    $nbody = cot_rc($L['project_notif_admin_moderate_mail_body'], array(
                        'user_name' => $usr['profile']['user_name'],
                        'prj_name' => $ritem['item_title'],
                        'sitename' => $cfg['maintitle'],
                        'link' => COT_ABSOLUTE_URL . $r_url
                    ));
                    cot_mail($cfg['adminemail'], $L['project_notif_admin_moderate_mail_subj'], $nbody);
                }
                break;
        }
        cot_redirect($r_url);
    }
    else
    {
        cot_redirect(cot_url('projects', "m=edit&id=$id", '', true));
    }
}
 
if ($a == 'public')
{
    $ritem = array();
    if($cfg['projects']['prevalidate'])
    {
        $ritem['item_state'] = ($usr['isadmin']) ? 0 : 2;
    }
    else
    {
        $ritem['item_state'] = 0;
    }
     
    $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);
     
    if(!$usr['isadmin'])
    {
        if($ritem['item_state'] == 2)
        {
            $rbody = cot_rc($L['project_senttovalidation_mail_body'], array(
                'user_name' => $usr['profile']['user_name'],
                'prj_name' => $item['item_title'],
                'sitename' => $cfg['maintitle'],
                'link' => COT_ABSOLUTE_URL . $r_url
            ));
            cot_mail($usr['profile']['user_email'], $L['project_senttovalidation_mail_subj'], $rbody);
        }
        else
        {
            $rbody = cot_rc($L['project_added_mail_body'], array(
                'user_name' => $usr['profile']['user_name'],
                'prj_name' => $item['item_title'],
                'sitename' => $cfg['maintitle'],
                'link' => COT_ABSOLUTE_URL . $r_url
            ));
            cot_mail($usr['profile']['user_email'], $L['project_added_mail_subj'], $rbody);
        }
    }
     
    $db->update($db_projects, $ritem, 'item_id = ?', $id);
     
    cot_projects_sync($item['item_cat']);
     
    /* === Hook === */
    foreach (cot_getextplugins('projects.edit.public') as $pl)
    {
        include $pl;
    }
    /* ===== */
     
    cot_redirect($r_url);
    exit;
}
 
if ($a == 'hide')
{
    $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;
}
 
if ($a == 'unrealized')
{
    $ritem = array();
    $ritem['item_realized'] = 0;
    $db->update($db_projects, $ritem, 'item_id = ?', $id);
     
    $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.unrealized') as $pl)
    {
        include $pl;
    }
    /* ===== */
     
    cot_redirect($r_url);
    exit;
}
 
if ($a == 'realized')
{
    $ritem = array();
    $ritem['item_realized'] = 1;
    $db->update($db_projects, $ritem, 'item_id = ?', $id);
     
    $urlparams = empty($ritem['item_alias']) ?
        array('c' => $ritem['item_cat'], 'id' => $id) :
        array('c' => $ritem['item_cat'], 'al' => $ritem['item_alias']);
    $r_url = cot_url('projects', $urlparams, '', true);
     
    /* === Hook === */
    foreach (cot_getextplugins('projects.edit.realized') as $pl)
    {
        include $pl;
    }
    /* ===== */
     
    cot_redirect($r_url);
    exit;
}
 
$out['subtitle'] = $L['projects_edit_project_title'];
$out['head'] .= $R['code_noindex'];
$sys['sublocation'] = $structure['projects'][$item['item_cat']]['title'];
 
$mskin = cot_tplfile(array('projects', 'edit', $structure['projects'][$item['item_cat']]['tpl']));
 
/* === Hook === */
foreach (cot_getextplugins('projects.edit.main') as $pl)
{
    include $pl;
}
/* ===== */
 
$t = new XTemplate($mskin);
 
// Error and message handling
cot_display_messages($t);
 
 
$t->assign(array(
    "PRJEDIT_FORM_SEND" => cot_url('projects', "m=edit&a=update&id=" . $item['item_id'] . "&r=" . $r),
    "PRJEDIT_FORM_ID" => $item['item_id'],
    "PRJEDIT_FORM_CAT" => cot_selectbox_structure('projects', $item['item_cat'], 'rcat'),
    "PRJEDIT_FORM_CATTITLE" => $structure['projects'][$item['item_cat']]['title'],
    "PRJEDIT_FORM_TYPETITLE" => (is_array($projects_types) && !empty($item['item_type'])) ? $projects_types[$item['item_type']] : '',
    "PRJEDIT_FORM_TYPE" => (is_array($projects_types)) ? cot_selectbox(($item['item_type']) ? $item['item_type'] : $cfg['projects']['default_type'], 'rtype', array_keys($projects_types), array_values($projects_types)) : 'empty',
    "PRJEDIT_FORM_TITLE" => cot_inputbox('text', 'rtitle', $item['item_title'], 'size="56"'),
    "PRJEDIT_FORM_ALIAS" => cot_inputbox('text', 'ralias', $item['item_alias'], array('size' => '32', 'maxlength' => '255')),
    "PRJEDIT_FORM_TEXT" => cot_textarea('rtext', $item['item_text'], 10, 60, 'id="formtext"'),
    "PRJEDIT_FORM_COST" => cot_inputbox('text', 'rcost', $item['item_cost'], 'size="10"'),
    "PRJEDIT_FORM_STATE" => $item['item_state'],
    "PRJEDIT_FORM_PARSER" => cot_selectbox($item['item_parser'], 'rparser', cot_get_parsers(), cot_get_parsers(), false),
    "PRJEDIT_FORM_DELETE" => cot_radiobox(0, 'rdelete', array(1,0), array($L['Yes'], $L['No']))
));
 
// Extra fields
foreach($cot_extrafields[$db_projects] as $exfld)
{
    $uname = strtoupper($exfld['field_name']);
    $exfld_val = cot_build_extrafields('ritem'.$exfld['field_name'], $exfld, $item['item_'.$exfld['field_name']]);
    $exfld_title = isset($L['projects_'.$exfld['field_name'].'_title']) ?  $L['projects_'.$exfld['field_name'].'_title'] : $exfld['field_description'];
 
    $t->assign(array(
        'PRJEDIT_FORM_'.$uname => $exfld_val,
        'PRJEDIT_FORM_'.$uname.'_TITLE' => $exfld_title,
        'PRJEDIT_FORM_EXTRAFLD' => $exfld_val,
        'PRJEDIT_FORM_EXTRAFLD_TITLE' => $exfld_title
    ));
    $t->parse('MAIN.EXTRAFLD');
}
 
/* === Hook === */
foreach (cot_getextplugins('projects.edit.tags') as $pl)
{
    include $pl;
}
/* ===== */
$t->parse('MAIN');
$module_body = $t->text('MAIN');

 


Dieser Beitrag wurde von ed.moriarti (am 25. April 2020, 08:31, vor 5 Jahre) bearbeitet
Kopusha
#7 25. April 2020, 10:31

так на что ругается?

все переменные есть? folio_deleted_mail_subj и тд? 85 строка то какая?

ed.moriarti
#8 25. April 2020, 10:32

85 строка:

$pmsql = $db->insert($db_pm, $pm);

Added 2 minutes later:

А вот их, эти переменные, folio_deleted_mail_subj и т.д. куда добавить надо?

Kopusha
#9 25. April 2020, 11:10

Все что $L это языковые файлы.

ed.moriarti
#10 25. April 2020, 11:28
if ($rdelete)
{
       
    if ($usr['id'] != $item['item_userid']) //Если не сам юзер удаляет значит это модератор
    {
        if ($ritem['item_delete_reason'] = 'poorphoto')
            {  
            // Сообщение автору истории от редактора что она удалена (не администратором а модератором не из админки)      
            $text .= $L['deletestory_pm_newtext1'];
            $text .= $item['item_title'] .' ';
            $text .= $L['deletestory_pm_newtext2'];
            $text .= $usr['name'] .' ';
            $pm['pm_title'] = $L['projects_deleted_mail_subjpoorphoto'];
            $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'];
            $pm['pm_tostate'] = 0;
            $pmsql = $db->insert($db_pm, $pm);
            $pmsql = $db->update($db_users, array('user_newpm' => '1'), "user_id = ".$item['item_userid']."");               
        }
           
        else if ($ritem['item_delete_reason'] = 'lowphoto')
            {  
            // Сообщение автору истории от редактора что она удалена (не администратором а модератором не из админки)      
            $text .= $L['deletestory_pm_newtext1'];
            $text .= $item['item_title'] .' ';
            $text .= $L['deletestory_pm_newtext2'];
            $text .= $usr['name'] .' ';
            $pm['pm_title'] = $L['projects_deleted_mail_subjlowphoto'];
            $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'];
            $pm['pm_tostate'] = 0;
            $pmsql = $db->insert($db_pm, $pm);
            $pmsql = $db->update($db_users, array('user_newpm' => '1'), "user_id = ".$item['item_userid']."");               
        }
        else
            {  
            // Сообщение автору истории от редактора что она удалена (не администратором а модератором не из админки)      
            $text .= $L['deletestory_pm_newtext1'];
            $text .= $item['item_title'] .' ';
            $text .= $L['deletestory_pm_newtext2'];
            $text .= $usr['name'] .' ';
            $pm['pm_title'] = $L['projects_deleted_mail_subj'];
            $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'];
            $pm['pm_tostate'] = 0;
            $pmsql = $db->insert($db_pm, $pm);
            $pmsql = $db->update($db_users, array('user_newpm' => '1'), "user_id = ".$item['item_userid']."");    
            $pmsql = $db->update($db_users, array('user_newpm' => '1'), "user_id = $userid");        
        }
    }
    cot_projects_delete($id, $item);
    cot_redirect(cot_url('projects', "c=" . $item['item_cat'], '', true));
}  

Все равно ругается на 86 строку в projects.edit.php:

$pmsql = $db->insert($db_pm, $pm);

При этом когда я пытаюсь удалить проект я выбираю из селекта строку "lowphoto"

В результате получаю это:

Фатальная ошибка
2020-04-25 11:25
 
Ошибка SQL 42000: синтаксическая ошибка или нарушение прав доступа: 1103 Неверное имя таблицы ''
 
# 0 cot_diefatal (ошибка SQL 42000: синтаксическая ошибка или нарушение прав доступа: 1103 Неверное имя таблицы '') вызывается по адресу [/var/www//public_html/system/database.php:451]
# 1 CotDB-> insert (, Array ([pm_title] => Ваше задание удалено subjpoorphoto, [pm_date] => 1587813941, [pm_text] => ArrayЗаголовок задания Arrayadmin, [pm_fromstate] => 0, [pm_fromuserid] => 1, [pm_fromuser] => admin, [pm_touserid] => 5, [pm_tostate] => 0)) вызывается по адресу [/var/www//public_html/modules/projects/inc/projects.edit.php:86]
# 2 require_once (/var/www//public_html/modules/projects/inc/projects.edit.php) вызывается по адресу [/var/www//public_html/modules/projects/projects.php:33]
# 3 require_once (/var/www//public_html/modules/projects/projects.php) вызывается по адресу [/var/www//public_html/index.php:176]

 

Added 54 seconds later:

Языковые переменные я добавил в файл projects.ru.lang.php

$L['projects_deleted_mail_subjpoorphoto'] = 'Ваше задание удалено subjpoorphoto';
$L['projects_deleted_mail_subjlowphoto'] = 'Ваше задание удалено lowphoto';
$L['projects_deleted_mail_subj'] = 'Ваше задание удалено mail_subj';
$L['deletestory_pm_newtext1'] = array('Текст №1');
$L['deletestory_pm_newtext2'] = array('Текст №2');

 

Kopusha
#11 25. April 2020, 11:42

$db_pm есть вообще? Что для переписки используется?

Added 26 seconds later:

Там же все написано - Неверное имя таблицы

Значит - Неверное имя таблицы

ed.moriarti
#12 25. April 2020, 11:59

db_ это в данном случае как префикс ?

У меня в базе есть pm только префикс другой

Added 2 minutes later:

для переписки стандартный в сборке PM используется

Added 16 minutes later:

#44628 Kopusha:

$db_pm есть вообще? Что для переписки используется?

Added 26 seconds later:

Там же все написано - Неверное имя таблицы

Значит - Неверное имя таблицы

Бро, ну помоги мне! Я уже молюсь на тебя laugh ну я каюсь, что в этой области у меня провал знаний


Dieser Beitrag wurde von ed.moriarti (am 25. April 2020, 12:18, vor 5 Jahre) bearbeitet
Kopusha
#13 25. April 2020, 12:40

как я могу помочь если я вижу только ошибку?
CotDB-> insert (вот тут куда insert, Array этого не существует.
Это - Неверное имя таблицы 
Надо посмотреть по сайту как другие стандартные письма уходят через $db->insert($db_pm, $pm); и чем оно все отличается.

ed.moriarti
#14 25. April 2020, 12:42

Вот код из файла pm.send.php

foreach ($touser_ids as $k => $userid)
{
    $pm['pm_title'] = $newpmtitle;
    $pm['pm_date'] = (int)$sys['now'];
    $pm['pm_text'] = $newpmtext;
    $pm['pm_fromstate'] = $fromstate;
    $pm['pm_fromuserid'] = (int)$usr['id'];
    $pm['pm_fromuser'] = $usr['name'];
    $pm['pm_touserid'] = $userid;
    $pm['pm_tostate'] = 0;
    $pmsql = $db->insert($db_pm, $pm);
    $pmsql = $db->update($db_users, array('user_newpm' => '1'), "user_id = $userid");

Разница только в последней строке 

Kopusha
#15 25. April 2020, 13:00

То есть тут разница 1 строчка?
Пройдемся по коду

if ($usr['id'] != $item['item_userid']) //Если текущее ID не совпадает с id автора элемента
{
if ($ritem['item_delete_reason'] == 'poorphoto') //Если выбрана причина poorphoto (тут я бы сильно проверил если ли там эти переменные на стр удаления проекта)
{
$text .= $L['folio_deleted_text'] . ' "'; //Текст folio_deleted_text из языкового файла (лучше $text .= $L['folio_deleted_text'] . ' «';)
$text .= $item['item_title'] .'" '; //Название элемента
$text .= $L['folio_deleted_text_poorphoto'] . ' '; //Текст 
$text .= $L['if_a_mistake1'] . ' '; //Текст 
$text .= $L['go_faq_folio']; //Текст 
$pm['pm_title'] = $L['folio_deleted_title_1'] . ' «' . $item['item_title'] . '» ' . $L['folio_deleted_title_2']; //Заголовок письма (Текст+Название элемента+Текст) 
$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 модуль возьмет имя из  $usr['id'])
$pm['pm_touserid'] = $item['item_userid']; // Кому - владельцу $item['item_userid']
$pm['pm_tostate'] = 0;// В состояние непрчитанного
$pmsql = $db->insert($db_pm, $pm); // Куда делаем инсерт
$pmsql = $db->update($db_users, array('user_newpm' => '1'), "user_id = ".$item['item_userid']."");//Какие строки туда передаем
}
}
 
cot_folio_delete($id, $item);//Удаляем элемент

Added 1 minute later:

Что такое 
 

            $pmsql = $db->update($db_users, array('user_newpm' => '1'), "user_id = ".$item['item_userid']."");    
            $pmsql = $db->update($db_users, array('user_newpm' => '1'), "user_id = $userid");        

из вашего кода? Кто такой 

"user_id = $userid"?

Added 2 minutes later:

Я бы советовал без всяких условий /Если текущее ID не совпадает с id автора элемента и //Если выбрана причина poorphoto
просто при удалении выслать письмо

 

$pm['pm_title'] = 'Title';
$pm['pm_date'] = (int)$sys['now'];
$pm['pm_text'] = 'TEXT';
$pm['pm_fromstate'] = 0;
$pm['pm_fromuserid'] = 1;
$pm['pm_fromuser'] = 'Trump';
$pm['pm_touserid'] = 1;
$pm['pm_tostate'] = 0;
$pmsql = $db->insert($db_pm, $pm);
$pmsql = $db->update($db_users, array('user_newpm' => '1'), "user_id = ".$item['item_userid']."");           

и посмотреть придет ли письмо юзеру 1 от юзера 1

Added 56 seconds later:

потом пробовать туда ДОБАВЛЯТЬ какие то реальные id и другие переменные и только когда все будет работать - ставить выше разные условия. Поймете как работает котонти заодно.

Added 50 seconds later:

Даже больше - еще сделать 
$pmsql= $db->update($db_users, array('user_newpm'=> '1'), "user_id = 1"); для начала

Added 43 seconds later:

Умываю руки (Пилат (с))
Я сделал все что мог (Путин (с))
Я мухожук (БНЕ (с))

12NächsteLetzte