Ejemplo n.º 1
0
 /**
  *  устанавливает root_id для дерева разделов
  *
  * @param текущий раздел $id
  * @param предок $pid
  */
 function setRootID($id, $pid)
 {
     //$id = get('id','0','p');
     $root_id = sql_getValue("SELECT root_id FROM tree WHERE id = " . $id);
     $err = sql_getErrNo();
     // проверка на существования поля в таблице( если нет : 1054)
     if ((!$root_id || $root_id == '0') && !$err) {
         // определяем $root_id
         // если root_id нашли у предыдущего
         $home_id = sql_getValue("SELECT root_id FROM tree WHERE id = " . $pid['pid']);
         if ($home_id) {
             sql_query("UPDATE tree SET root_id = " . $home_id . " WHERE id=" . $id);
         } else {
             $pid = $pid['pid'];
             do {
                 $home = sql_getRow("SELECT pid,root_id FROM tree WHERE id = " . $pid);
                 // если все таки не нашли то останавливаемся , когда добежали до корня
                 if ($pid == $home['pid']) {
                     $home['root_id'] = $pid;
                     break;
                 }
                 $pid = $home['pid'];
             } while (empty($home['root_id']));
             sql_query("UPDATE tree SET root_id = " . $home['root_id'] . " WHERE id=" . $id);
         }
     }
 }
Ejemplo n.º 2
0
 function MyCommit($row)
 {
     $sql = "REPLACE INTO " . $this->elem_table . " (product_id,composition_id,elem_id, count) VALUES ('" . $_POST['id'] . "','" . $row['composition_id'] . "','" . $row['elem_id'] . "','" . $row['count'] . "')";
     sql_query($sql);
     if (!sql_getErrNo()) {
         return 1;
     }
     return 0;
 }
Ejemplo n.º 3
0
 function getAuth($login = '')
 {
     if (empty($login)) {
         $login = get('login', '', 'pgc');
     }
     $sql = "SELECT id FROM auth_users WHERE login='******' AND auth = 1";
     $id = sql_getValue($sql, __FILE__, __LINE__);
     if (sql_getErrNo()) {
         $sql = "SELECT id FROM auth_users WHERE login='******'";
         $id = sql_getValue($sql, __FILE__, __LINE__);
     }
     return $id;
 }
Ejemplo n.º 4
0
 function MyDeleteItems()
 {
     //заменяем Deleteitems()
     //для переменных смотрим $_POST
     if (isset($_POST['id']) && !empty($_POST['id'])) {
         $sql = "DELETE FROM " . $this->elem_table . " WHERE id IN (" . implode(", ", $_POST['id']) . ")";
         sql_query($sql);
         if (!sql_getErrNo()) {
             return true;
         }
     }
     return false;
 }
Ejemplo n.º 5
0
 function ExecSql($sql, $crlf = "\r\n")
 {
     $res = false;
     if (!$this->allow(ALLOW_DELETE)) {
         die($this->AD());
     }
     // delete is a full access
     if (is_array($sql)) {
         $pieces = $sql;
     } else {
         # define crlf
         $pos = strpos($sql, ";");
         if ($pos !== false && strlen($sql) > $pos + 1 && $sql[$pos + 1] == "\n") {
             $crlf = "\n";
         }
         $sql = preg_replace("/^#.*/m", $crlf, $sql);
         $pieces = explode(";" . $crlf, $sql);
     }
     $GLOBALS['affected_rows'] = 0;
     for ($i = 0; $i < sizeof($pieces); $i++) {
         $pieces[$i] = trim($pieces[$i]);
         if ($pieces[$i]) {
             $res = sql_query($pieces[$i]);
             if ($res === FALSE) {
                 if (strlen($pieces[$i]) > 1024) {
                     $pieces[$i] = 'piece #' . $i;
                 }
                 $GLOBALS['last_sql_getError'] = "Error in query:\n" . $pieces[$i] . "\n\nmysql said:\n (" . sql_getErrNo() . ") " . sql_getError();
                 break;
             }
         }
     }
     return $res;
 }
Ejemplo n.º 6
0
 function EditDetail()
 {
     global $user;
     $fld =& $GLOBALS['_POST']['fld'];
     # set created
     $id = (int) get('id', 0, 'p');
     if (!$id) {
         $fld['created'] = 'NULL';
     }
     $table = $this->table;
     $this->table = $this->dialog_table;
     $fld['manager_id'] = $user['id'];
     $res = $this->Commit(array('text'));
     $reload = !sql_getErrNo() ? "window.parent.location.reload(); window.top.opener.location.reload();" : "";
     if (is_int($res)) {
         # update parent
         $status = sql_getValue("SELECT status FROM {$table} WHERE id=" . $fld['support_id']);
         if ($status == 'new') {
             $status = 'progress';
         }
         sql_query("UPDATE support SET `updated` = NULL, `status` = '{$status}', `read` = 'usr' WHERE id=" . $fld['support_id']);
         # notification
         require_once module('email_notify');
         $client_id = sql_getValue("SELECT client_id FROM support WHERE id=" . $fld['support_id']);
         $client = sql_getRow("SELECT * FROM auth_users WHERE id=" . $client_id);
         $GLOBALS['email_notify']->Notify('support_client', $client['name'] . ' ' . $client['lname'], $client['login'], $fld['support_id']);
         statuslog("<script>alert('" . $this->str('saved') . "'); {$reload}</script>");
         $this->emailNotify($client, 'support_client');
         sql_query('INSERT INTO `history`(`client_id`,`pid`,`type`,`text`,`date`) VALUES (' . $client_id . ',\'0\',\'support\',\'Менеджер добавил сообщение в службе поддежки\',\'' . time() . '\')');
         return "<script>alert('" . $this->str('saved') . "'); {$reload}</script>";
     }
     return $this->Error($res);
 }
Ejemplo n.º 7
0
 function Edit()
 {
     $temp = $this->table;
     $this->table = $this->table2;
     $_POST['fld']['discount'] = $_POST['fld']['discount'] / 100;
     $id = $this->Commit(array('volume', 'discount'));
     $this->table = $temp;
     $reload = !sql_getErrNo() ? 'window.parent.location.reload()' : '';
     if (!is_int($id)) {
         return $this->Error($id);
     }
     return '<script>alert(\'' . $this->str('saved') . '\'); ' . $reload . '</script>';
 }
Ejemplo n.º 8
0
 function Edit()
 {
     $id = $this->Commit(array('name'));
     $reload = !sql_getErrNo() ? 'window.parent.location.reload()' : '';
     if (!is_int($id)) {
         return $this->Error($id);
     }
     //Обновляем права на уведомления
     $ntid = get('ntid', '', 'p');
     if ($ntid) {
         sql_query("DELETE FROM notify_groups WHERE group_id = " . $id);
         foreach ($ntid as $k => $v) {
             $sql = "REPLACE INTO notify_groups SET group_id = " . $id . ",notif_id=" . $v;
             sql_query($sql);
         }
     }
     return '<script>alert(\'' . $this->str('saved') . '\'); ' . $reload . '</script>';
 }
Ejemplo n.º 9
0
    function Edit()
    {
        $row = $_POST['fld'];
        $id = (int) get('id', 0, 'p');
        //$enable = "if (window.top.frames.act.frames.cnt.document.forms.editform) window.top.frames.act.frames.cnt.document.forms.editform.subm.disabled=false";
        $enable = "if (window.parent.document.forms.editform) window.parent.document.forms.editform.subm.disabled=false";
        if ($id) {
            if (defined('LANG_SELECT') && LANG_SELECT) {
                $row['name_' . lang()] = $row['name'];
                unset($row['name']);
            }
            $res = $this->Update($id, $row);
            if (is_string($res)) {
                return $this->Error($res);
            }
        } else {
            $row['priority'] = sql_getValue("SELECT max(priority)+1 FROM " . $this->table . " WHERE pid=" . $row['pid']);
            if (!trim($row['name'])) {
                return '<script>alert(\'' . sprintf($this->str('e_empty_name'), $this->str('name')) . '\');</script>';
            }
            if (defined('LANG_SELECT') && LANG_SELECT) {
                $row['name_' . lang()] = $row['name'];
                unset($row['name']);
            }
            $id = sql_insert($this->table, $row);
            if (!is_int($id) || !$id) {
                return $this->Error($id);
            }
            # присвоение page
            sql_query("UPDATE " . $this->table . " SET page=id WHERE id=" . $id);
            $err = sql_getValue("SELECT root_id FROM tree WHERE id = " . $id);
            $err = sql_getErrNo();
            if (!$err) {
                //если есть поле root_id
                // выставляем root_id
                $this->setRootID($id, $row);
            }
            $parent = sql_getRow("SELECT pid, next FROM " . $this->table . " WHERE id=" . $row['pid']);
            if (!$parent['next']) {
                sql_unbuffered_query("UPDATE " . $this->table . " SET next=1 WHERE id=" . $row['pid']);
                $row['pid'] = $parent['pid'];
                # если не было "плюса" - обновляем еще на уровень выше
            }
            return '<script>window.parent.reloadNode(' . $row['pid'] . ')</script>';
        }
        return '<script>
		' . $enable . ';
		if (window.top.opener && window.top.opener.reloadNode) window.top.opener.reloadNode(' . $row['pid'] . ');
		else if (window.parent.reloadNode) window.parent.reloadNode(' . $row['pid'] . ');
		else alert("reload failed");
		alert("' . $this->str('saved') . '");
		</script>';
    }
Ejemplo n.º 10
0
Archivo: tree.php Proyecto: romlg/cms36
 /**
  * Перемещает раздел
  * @param $src_id
  * @param $trg_id
  */
 function MoveTree($src_id, $trg_id)
 {
     $src = sql_getRow("SELECT * FROM " . $this->table . " WHERE id='" . $src_id . "'");
     $trg = sql_getRow("SELECT * FROM " . $this->table . " WHERE id='" . $trg_id . "'");
     # Проверяем root_id  перед вставкой
     $pid = $trg['id'];
     $err = sql_getValue("SELECT root_id FROM tree WHERE id = " . $pid);
     $err = sql_getErrNo();
     if (!$err) {
         //если есть поле root_id
         do {
             $home = sql_getRow("SELECT pid,root_id FROM tree WHERE id = " . $pid);
             // если все таки не нашли то останавливаемся , когда добежали до корня
             if ($pid == $home['pid']) {
                 $home['root_id'] = $pid;
                 break;
             }
             $pid = $home['pid'];
         } while ($pid);
         $src['root_id'] = $home['root_id'];
         # обновляем root_id для всех вложенных
         $this->repaintRoot_id($src);
     }
     # Обновляем src
     $ret = sql_query("UPDATE " . $this->table . " SET pid=" . $trg['id'] . " WHERE id=" . $src_id);
     if (!$ret) {
         die('"UPDATE error: ' . addslashes(sql_getError()) . '"');
     }
     # Обновляем parent src next
     $psrc_count = sql_getValue("SELECT COUNT(*) FROM " . $this->table . " WHERE pid=" . $src['pid'] . " AND pid<>id");
     sql_query("UPDATE " . $this->table . " SET next=" . ($psrc_count ? 1 : 0) . " WHERE id=" . $src['pid']);
     # Обновляем parent trg next
     sql_query("UPDATE " . $this->table . " SET next=1 WHERE id=" . $trg['id']);
 }
Ejemplo n.º 11
0
 function EditCopy()
 {
     $id = get('id', 0, 'pg');
     sql_query('BEGIN');
     //products
     $products = sql_getRow("SELECT * FROM products WHERE id=" . $id);
     $products['id'] = 'copy';
     $query = "INSERT INTO products VALUES('" . implode("','", $products) . "')";
     sql_query($query);
     $nid = mysql_insert_id();
     if (sql_getErrNo()) {
         sql_query('ROLLBACK');
         return $query;
     }
     //elem_ptext
     $elem_ptext = sql_getRow("SELECT * FROM elem_ptext WHERE pid=" . $id);
     if (!empty($elem_ptext)) {
         $elem_ptext['pid'] = $nid;
         $query = "INSERT INTO elem_ptext VALUES('" . implode("','", $elem_ptext) . "')";
         sql_query($query);
         if (sql_getErrNo()) {
             sql_query('ROLLBACK');
             return $query;
         }
     }
     //elem_pgallery
     $elem_pgallery = sql_getRows("SELECT * FROM elem_pgallery WHERE pid=" . $id);
     if (!empty($elem_pgallery)) {
         $query = "INSERT INTO elem_pgallery VALUES ";
         foreach ($elem_pgallery as $k => $v) {
             $elem_pgallery[$k]['id'] = 'copy';
             $elem_pgallery[$k]['pid'] = $nid;
             $query .= "('" . implode("','", $elem_pgallery[$k]) . "'),";
         }
         sql_query(substr($query, 0, -1));
         if (sql_getErrNo()) {
             sql_query('ROLLBACK');
             return $query;
         }
     }
     //elem_pfile
     $elem_pfile = sql_getRows("SELECT * FROM elem_pfile WHERE pid=" . $id);
     if (!empty($elem_pfile)) {
         $query = "INSERT INTO elem_pfile VALUES ";
         foreach ($elem_pfile as $k => $v) {
             $elem_pfile[$k]['id'] = 'copy';
             $elem_pfile[$k]['pid'] = $nid;
             $query .= "('" . implode("','", $elem_pfile[$k]) . "'),";
         }
         sql_query(substr($query, 0, -1));
         if (sql_getErrNo()) {
             sql_query('ROLLBACK');
             return $query;
         }
     }
     //products_params_extra
     $products_params_extra = sql_getRows("SELECT * FROM products_params_extra WHERE pid=" . $id);
     if (!empty($products_params_extra)) {
         $query = "INSERT INTO products_params_extra VALUES ";
         foreach ($products_params_extra as $k => $v) {
             $products_params_extra[$k]['id'] = 'copy';
             $products_params_extra[$k]['pid'] = $nid;
             $query .= "('" . implode("','", $products_params_extra[$k]) . "'),";
         }
         sql_query(substr($query, 0, -1));
         if (sql_getErrNo()) {
             sql_query('ROLLBACK');
             return $query;
         }
     }
     //product_params
     $product_params = sql_getRows("SELECT * FROM product_params WHERE product_id=" . $id);
     if (!empty($product_params)) {
         $query = "INSERT INTO product_params VALUES ";
         foreach ($product_params as $k => $v) {
             $product_params[$k]['product_id'] = $nid;
             $query .= "('" . implode("','", $product_params[$k]) . "'),";
         }
         sql_query(substr($query, 0, -1));
         if (sql_getErrNo()) {
             sql_query('ROLLBACK');
             return $query;
         }
     }
     sql_query('COMMIT');
     return "<script>window.parent.location.reload();</script>";
 }
Ejemplo n.º 12
0
 function GetTable()
 {
     global $limit;
     $offset = (int) get('offset');
     $limit = (int) get('limit', $this->Param('limit', $limit));
     $reklams = sql_getRows("SELECT * FROM stat_reklama");
     if (empty($reklams)) {
         $ret['tip']['text'] = "Рекламные кампании не созданы. Для того чтобы создать рекламную кампанию, нажмите кнопку \"Настройка рекламных кампаний\".";
         return $ret;
     }
     foreach ($reklams as $key => $reklama) {
         if (!$reklama['click_count']) {
             $reklama['click_count'] = 0;
         }
         if (!$reklama['displays_count']) {
             $reklama['displays_count'] = 0;
         }
         if (!$reklama['displays_count']) {
             $reklama['displays_count'] = 0;
         }
         if (!$reklama['budget']) {
             $reklama['budget'] = 0;
         }
         $identifiers = explode(',', $reklama['identifiers']);
         foreach ($identifiers as $k => $v) {
             $identifiers[$k] = trim($v);
         }
         $identifiers_state = "";
         if (!empty($identifiers)) {
             $identifiers_state = " AND (";
             foreach ($identifiers as $k => $v) {
                 $identifiers_state .= " page.uri LIKE '%from=" . $v . "'" . ($k < count($identifiers) - 1 ? " OR" : "");
             }
             $identifiers_state .= ") ";
         }
         // определяем дату начала рекламной кампании по первому вхождению
         if ($reklama['start_date'] == '0000-00-00 00:00:00') {
             $reklama['start_date'] = sql_getValue("SELECT min( time )\n            \tFROM " . STAT_SESSIONS_TABLE . " as s LEFT JOIN stat_pages AS page ON page.id = s.first_page\n\t\t\t\tWHERE 1 " . $identifiers_state);
             if (!$reklama['start_date']) {
                 $reklama['start_date'] = sql_getValue("SELECT min( time ) FROM " . STAT_SESSIONS_TABLE);
             }
         } else {
             $reklama['start_date'] = strtotime($reklama['start_date']);
         }
         if ($reklama['end_date'] == '0000-00-00 00:00:00') {
             $reklama['end_date'] = sql_getValue("SELECT max( time )\n            \tFROM " . STAT_SESSIONS_TABLE . " as s LEFT JOIN stat_pages AS page ON page.id = s.first_page\n\t\t\t\tWHERE 1 " . $identifiers_state);
             if (!$reklama['end_date']) {
                 $reklama['end_date'] = sql_getValue("SELECT max( time ) FROM " . STAT_SESSIONS_TABLE);
             }
         } else {
             $reklama['end_date'] = strtotime($reklama['end_date']);
         }
         $date_state = "";
         if ($reklama['start_date']) {
             $date_state .= " AND sess.time>=" . $reklama['start_date'];
         }
         if ($reklama['end_date']) {
             $date_state .= " AND sess.time<=" . $reklama['end_date'];
         }
         // Временные таблицы
         // Выборка из stat_sessions за время кампании
         $tmp_table = "`tmp_reklama`";
         $sql = "DROP TABLE IF EXISTS " . $tmp_table;
         sql_query($sql);
         $sql = "CREATE TEMPORARY TABLE " . $tmp_table . " (\n  \t\t\tPRIMARY KEY  (`sess_id`),\n  \t\t\tKEY `ip` (`ip`,`agent_id`),\n  \t\t\tKEY `time` (`time`,`robot`),\n  \t\t\tKEY `first_page` (`first_page`)\n\t\t\t) SELECT * FROM " . STAT_SESSIONS_TABLE . " AS sess WHERE sess.robot=0 " . $date_state;
         $res = sql_query($sql);
         if (sql_getErrNo()) {
             $flag = sql_getError();
             break;
         }
         // Выборка из stat_sessions за время кампании при условии $identifiers_state
         $tmp_table_ident = "`tmp_reklama_ident`";
         $sql = "DROP TABLE IF EXISTS " . $tmp_table_ident;
         sql_query($sql);
         $sql = "CREATE TEMPORARY TABLE " . $tmp_table_ident . " (\n  \t\t\tPRIMARY KEY  (`sess_id`),\n  \t\t\tKEY `ip` (`ip`,`agent_id`),\n  \t\t\tKEY `time` (`time`,`robot`),\n  \t\t\tKEY `first_page` (`first_page`)\n\t\t\t) SELECT * FROM " . STAT_SESSIONS_TABLE . " AS sess, " . STAT_PAGES_TABLE . " as page \n\t\t\tWHERE sess.first_page=page.id AND sess.robot=0 " . $date_state . $identifiers_state;
         $res = sql_query($sql);
         if (sql_getErrNo()) {
             $flag = sql_getError();
             break;
         }
         $cnt = sql_getRow("SELECT COUNT(*) AS cnt, COUNT(DISTINCT(sess.ip)) as cnt_ip FROM " . $tmp_table . " AS sess");
         // Общее число посетителей
         $all_count = (int) $cnt['cnt'];
         // Общее число ip адресов
         $all_ip_count = (int) $cnt['cnt_ip'];
         // Кол-во посетителей, просмотревших более 1 страницы
         $sql = "SELECT COUNT(DISTINCT(sess.sess_id)) FROM " . $tmp_table_ident . " AS sess,\n            " . STAT_PAGES_TABLE . " AS page WHERE page.id=sess.first_page\n            AND sess.path!='' AND LENGTH(sess.path)-LENGTH(REPLACE(sess.path,' ',''))+1 > 1 ";
         $count_pages[1] = (int) sql_getValue($sql);
         // Кол-во посетителей, просмотревших более 2 страниц
         $sql = "SELECT COUNT(DISTINCT(sess.sess_id)) FROM " . $tmp_table_ident . " AS sess,\n            " . STAT_PAGES_TABLE . " AS page WHERE page.id=sess.first_page\n            AND sess.path!='' AND LENGTH(sess.path)-LENGTH(REPLACE(sess.path,' ',''))+1 > 2 ";
         $count_pages[2] = (int) sql_getValue($sql);
         // Выбираем поля
         $select = array();
         ############################################################################################
         // название кампании
         $select[] = "'" . $reklama['name'] . "' AS campaign";
         // дата начала кампании
         $select[] = "FROM_UNIXTIME(" . $reklama['start_date'] . ", '%d.%m.%Y') AS start_date";
         // дата окончания кампании
         $select[] = "FROM_UNIXTIME(" . $reklama['end_date'] . ", '%d.%m.%Y') AS end_date";
         // бюждет кампании
         $select[] = "'" . $reklama['budget'] . "' AS budget";
         // кол-во показов
         $select[] = "'" . $reklama['displays_count'] . "' AS displays_count";
         // Общее число посетителей
         $select[] = "'" . $all_count . "' AS all_count";
         // количество рекламных посетителей
         $select[] = "CONCAT(COUNT(DISTINCT(sess.sess_id)), ' <span style=\"font-size: 85%\">(', '" . $reklama['click_count'] . "',')</span>') AS involved_visitors_fact";
         // доля рекламы в посещаемости
         $select[] = "CONCAT(IF(" . $all_count . "!=0,COUNT(DISTINCT(sess.sess_id))/" . $all_count . ",0)*100,'%') AS reklama_to_attendance";
         // ip адресов
         $select[] = "CONCAT(COUNT(DISTINCT(sess.ip)), ' <span style=\"font-size: 85%\">(', IF(" . $all_ip_count . "!=0,COUNT(DISTINCT(sess.ip))/" . $all_ip_count . ",0)*100, '%)</span>') AS ip_count_share";
         // события
         if ($this->events) {
             foreach ($this->events as $k => $event) {
                 // Временная таблица
                 $tmp_table_event = "`tmp_reklama_event`";
                 $sql = "DROP TABLE IF EXISTS " . $tmp_table_event;
                 getSql($sql);
                 $sql = "CREATE TEMPORARY TABLE " . $tmp_table_event . " (\n\t\t\t\t\tPRIMARY KEY  (`id`),\n  \t\t\t\t\tKEY `host_uri` (`host`,`uri`)\n\t\t\t\t\t) SELECT * FROM " . STAT_PAGES_TABLE . " AS page \n\t\t\t\t\tWHERE page.uri LIKE '" . str_replace("*", "%", $event['url']) . "'";
                 $res = getSql($sql);
                 if (sql_getErrNo()) {
                     $flag = sql_getError();
                     break;
                 }
                 $sql = "SELECT COUNT(DISTINCT(sess.sess_id)) AS count\n                            FROM " . STAT_LOG_TABLE . " AS sess,\n                             " . $tmp_table_event . " AS page\n                             WHERE sess.page_id=page.id " . $date_state;
                 $all_event_count = (int) sql_getValue($sql);
                 // Кол-во событий за время рекламной кампании
                 $identifiers_state2 = str_replace('page.uri', 'page2.uri', $identifiers_state);
                 $sql = "SELECT COUNT(DISTINCT(sess.sess_id)) AS count FROM " . $tmp_table_ident . " AS sess,\n                            " . STAT_LOG_TABLE . " AS log,\n                            " . STAT_PAGES_TABLE . " AS page2,\n                            " . STAT_PAGES_TABLE . " AS page\n                            WHERE sess.sess_id=log.sess_id AND log.page_id=page2.id AND sess.first_page=page.id\n                            AND page2.uri LIKE '" . str_replace("*", "%", $event['url']) . "'";
                 $event_count[$k] = (int) sql_getValue($sql);
                 // Кол-во событий по клику
                 $select[] = "CONCAT('" . $event_count[$k] . "', ' <span style=\"font-size: 85%\">(', IF(" . $all_event_count . "!=0," . $event_count[$k] . "/" . $all_event_count . ",0)*100, '%)</span>') AS event_" . $k . "_share";
             }
         }
         $select[] = "'&nbsp;' as line1";
         ############################################################################################
         // CTR
         $select[] = "CONCAT(IF(" . $reklama['displays_count'] . "!=0,COUNT(page.uri)/" . $reklama['displays_count'] . ",0)*100, '% <span style=\"font-size: 85%\">(', IF(" . $reklama['displays_count'] . "!=0," . $reklama['click_count'] . "/" . $reklama['displays_count'] . ",0)*100, '%</span>)') AS CTR_fact";
         // ip адреса
         $select[] = "CONCAT(IF(COUNT(DISTINCT(sess.sess_id))!=0,COUNT(DISTINCT(sess.ip))/COUNT(DISTINCT(sess.sess_id)),0)*100, '% / ', IF(" . $reklama['displays_count'] . "!=0,COUNT(DISTINCT(sess.ip))/" . $reklama['displays_count'] . ",0)*100, '%') AS client_ip_slash";
         // качество просмотра (просмотревшие более 1 страницы)
         $select[] = "CONCAT('" . $count_pages[1] . "', ' / ', IF(COUNT(DISTINCT(sess.sess_id))!=0," . $count_pages[1] . "/COUNT(DISTINCT(sess.sess_id)),0)*100, '% / ', IF(" . $reklama['displays_count'] . "!=0," . $count_pages[1] . "/" . $reklama['displays_count'] . ",0)*100, '%') AS client_1_slash";
         // качество просмотра (просмотревшие более 2 страниц)
         $select[] = "CONCAT('" . $count_pages[2] . "', ' / ', IF(COUNT(DISTINCT(sess.sess_id))!=0," . $count_pages[2] . "/COUNT(DISTINCT(sess.sess_id)),0)*100, '% / ', IF(" . $reklama['displays_count'] . "!=0," . $count_pages[2] . "/" . $reklama['displays_count'] . ",0)*100, '%') AS client_2_slash";
         // события
         if ($this->events) {
             foreach ($this->events as $k => $event) {
                 $select[] = "CONCAT('" . $event_count[$k] . "', ' / ', IF(COUNT(DISTINCT(sess.sess_id))!=0," . $event_count[$k] . "/COUNT(DISTINCT(sess.sess_id)),0)*100, '% / ', IF(" . $reklama['displays_count'] . "!=0," . $event_count[$k] . "/" . $reklama['displays_count'] . ",0)*100, '%') AS event_" . $k . "_slash";
             }
         }
         $select[] = "'&nbsp;' as line2";
         ############################################################################################
         // стоимость 1000 показов
         $select[] = "ROUND(IF(" . $reklama['displays_count'] . "!=0," . $reklama['budget'] . "/" . $reklama['displays_count'] . ",0)*1000,2) AS display_1000_cost";
         // стоимость клика
         $select[] = "CONCAT(ROUND(IF(COUNT(DISTINCT(sess.sess_id))!=0," . $reklama['budget'] . "/COUNT(DISTINCT(sess.sess_id)), 0),2), ' <span style=\"font-size: 85%\">(', ROUND(IF(" . $reklama['click_count'] . "!=0," . $reklama['budget'] . "/" . $reklama['click_count'] . ", 0),2) ,'</span>)') AS click_cost";
         // стоимость IP адреса
         $select[] = "ROUND(IF(COUNT(DISTINCT(sess.ip))!=0," . $reklama['budget'] . "/COUNT(DISTINCT(sess.ip)),0),2) AS ip_cost";
         // стоимость 2+
         $select[] = "ROUND(IF(" . $count_pages[1] . "!=0," . $reklama['budget'] . "/" . $count_pages[1] . ",0),2) AS client_1_cost";
         // стоимость 3+
         $select[] = "ROUND(IF(" . $count_pages[2] . "!=0," . $reklama['budget'] . "/" . $count_pages[2] . ",0),2) AS client_2_cost";
         // события
         if ($this->events) {
             foreach ($this->events as $k => $event) {
                 $select[] = "ROUND(IF(" . $event_count[$k] . "!=0," . $reklama['budget'] . "/" . $event_count[$k] . ",0),2) AS event_" . $k . "_cost";
             }
         }
         ############################################################################################
         $sql = "SELECT " . implode(", ", $select) . "\n                FROM " . $tmp_table_ident . " AS sess,\n                " . STAT_PAGES_TABLE . " AS page WHERE page.id=sess.first_page";
         $data[$key] = sql_getRow($sql);
     }
     /*        $num = count($data);
             if ($num > 0) {
                 $num_concat_share = array();
                 $num_concat_slash = array();
                 foreach ($data as $k=>$v) {
                     if ($k == $num) break;
                     $data[$k]['start_date'] = date('Y/m/d', $data[$k]['start_date']);
                     $data[$k]['end_date'] = date('Y/m/d', $data[$k]['end_date']);
                     foreach ($v as $k2=>$v2) {
                         if ($k2 == 'line1' || $k2 == 'line2') {$data[$num][$k2] = '&nbsp;'; continue;}
                         if (strpos($k2,'_slash')!==false) {
                             $n = sscanf($v2, '%f/%f/%f/%f');
                             foreach ($n as $mm=>$nn) {
                                 if (isset($nn)) $num_concat_slash[$num][$k2][$mm] += $nn;
                             }
                             $data[$num][$k2] = "";
                         } elseif (strpos($k2,'_share')!==false) {
                             $a = str_replace("%", "***", $v2);
                             list($n1, $n2) = sscanf($a, '%f <span style="font-size: 85***">(%f***)</span>');
                             $num_concat_share[$num][$k2][0] += $n1;
                             $num_concat_share[$num][$k2][1] += $n2;
                             $data[$num][$k2] = $num_concat_share[$num][$k2][0]." (".$num_concat_share[$num][$k2][1]."%)";
                         } elseif (strpos($k2,'_fact')!==false) {
                             $a = str_replace("%", "***", $v2);
                             list($n1, $n2) = sscanf($a, '%f <span style="font-size: 85***">(%f)</span>');
                             $num_concat_share[$num][$k2][0] += $n1;
                             $num_concat_share[$num][$k2][1] += $n2;
                             $data[$num][$k2] = $num_concat_share[$num][$k2][0]." (".$num_concat_share[$num][$k2][1].")";
                         } else $data[$num][$k2] += $v2;
                     }
                 }
                 foreach ($num_concat_slash[$num] as $key=>$val) {
                     foreach ($val as $k=>$v) {
                         $data[$num][$key] .= $v.($k<count($val)-1 ? '/':'');
                     }
                 }
     
                 $data[$num]['campaign'] = $this->str('total');
                 $data[$num]['start_date'] = "";
                 $data[$num]['end_date'] = "";
     
                 foreach ($data[$num] as $k2=>$v2)
                     $data[$num][$k2] = '<span style="font-size: 85%; font-weight: bold;">'.$data[$num][$k2].'</span>';
             }
     */
     $keys = end($data);
     foreach ($keys as $k => $v) {
         $temp = explode('_', $k);
         if ($temp[0] == 'event' && $temp[2] == 'share') {
             $keys[$k] = $this->events[$temp[1]]['name'] . (lang() == 'ru' ? ": кол-во <span style=\"font-size: 85%\">(доля от общего)</span>" : ": quantity (share)");
         } else {
             if ($temp[0] == 'event' && $temp[2] == 'slash') {
                 $keys[$k] = $this->events[$temp[1]]['name'] . (lang() == 'ru' ? " (кол-во / % от кликов / % от показов)" : " (quantity / % from click / % from displays)");
             } else {
                 if ($temp[0] == 'event' && $temp[2] == 'cost') {
                     $keys[$k] = (lang() == 'ru' ? "Стоимость \"" : "Cost \"") . $this->events[$temp[1]]['name'] . "\"";
                 } else {
                     $keys[$k] = $this->str($k);
                 }
             }
         }
     }
     array_unshift($data, $keys);
     $i = 0;
     foreach ($keys as $key => $val) {
         foreach ($data as $k => $v) {
             $data1[$i][$k] = $v[$key];
         }
         $i++;
     }
     /*        $total_head = array(
                     '',
                     $this->_str('visitors'),
             );
     		$total[] = array(
     			$this->str('total_period'),
     			(int)sql_getValue("SELECT COUNT(*) FROM ".$tmp_table),
     		);*/
     // Main Table
     foreach ($data as $k => $v) {
         $id = sql_getValue("SELECT id FROM stat_reklama WHERE name='" . $v['campaign'] . "' LIMIT 1");
         if ($id) {
             $row = sql_getValue("SELECT identifiers FROM stat_reklama WHERE id=" . $id);
             $identifiers = explode(',', $row);
             foreach ($identifiers as $key => $val) {
                 $identifiers[$key] = trim($val);
             }
             if (!empty($identifiers)) {
                 $str = '<a href="#" onclick="window.open(\'stat.php?page=stat/stat_summary&adv[reklama]=' . implode(', ', $identifiers) . '\', \'stat\', \'width=900, height=600, resizable=1, status=1\').focus(); return false;"><img src="images/icons/icon.plus.gif" width=16 heidht=16 border=0 alt="' . $this->str('more') . '" align="absmiddle" hspace="3"></a>&nbsp;' . $v['campaign'];
             } else {
                 $str = $v['campaign'];
             }
         } else {
             $str = $v['campaign'];
         }
         $columns[$k] = array('header' => $str, 'nowrap' => 1);
     }
     unset($data1[0]);
     // Убираем первую строку с названиями кампаний (т.к. она есть в шапке таблицы)
     $ret['table'] = $this->stat_table(array('columns' => $columns, 'data' => $data1, 'count' => $count, 'offset' => $offset, 'limit' => $limit));
     return $ret;
 }
Ejemplo n.º 13
0
 function EditDetail()
 {
     global $user;
     # update parent
     $fld =& $GLOBALS['_POST']['fld'];
     sql_query("UPDATE {$this->table} SET updated=NULL WHERE id=" . $fld['kb_id']);
     # set created
     $id = (int) get('id', 0, 'p');
     if (!$id) {
         $fld['created'] = 'NULL';
     }
     $this->table = $this->dialog_table;
     $GLOBALS['_POST']['fld']['manager_id'] = $user['id'];
     $res = $this->Commit(array('text'));
     $reload = !sql_getErrNo() ? "window.parent.location.reload()" : "";
     if (is_int($res)) {
         return "<script>alert('" . $this->str('saved') . "'); {$reload}</script>";
     }
     return "<script>alert('" . $res . "');</script>";
 }
Ejemplo n.º 14
0
 function verify_event(&$event, $user_id)
 {
     // проверка разрешенных видов нотификации
     //-----------------------------------------------
     // получаем идентификатор события
     $event = sql_getRow("SELECT id, recipient FROM notify_events WHERE name='" . $event . "'");
     // получаем доступные плугины для события
     $plugins = sql_getRows("SELECT plugin FROM notify_compare WHERE event=" . $event['id'], true);
     // проверка событие для клиента или для админа.
     if ($event['recipient'] == 'client') {
         //получаем идентификатор группы пользователя
         $group_id = sql_getValue("SELECT group_id FROM auth_users_groups WHERE user_id=" . $user_id);
         //получаем, разрешенные плугины для группы
         $group_plugins = sql_getRows("SELECT nt.name FROM notify_groups AS ng\n\t\t\t\t\t\t\t\t\t\t\tLEFT JOIN notify_types AS nt ON nt.id=ng.notif_id\n\t\t\t\t\t\t\t\t\t\t\tWHERE ng.group_id=" . $group_id, true);
         if (!sql_getErrNo()) {
             $plugins = array_intersect($plugins, $group_plugins);
         }
         /*
         //получаем виды нотификации, выбранные пользователем
         $user_plugins = sql_getRows("
         SELECT 
         	nt.name
         FROM notify_user AS nu
         LEFT JOIN notify_types AS nt ON nu.notify_id=nt.id
         WHERE nu.user_id=".$user_id." AND nu.event_id=".$event['id']
         , true);
         
         if (!sql_getErrNo()){
         	$plugins = array_intersect($plugins,$user_plugins);
         }
         */
     }
     return $plugins;
 }