/** * устанавливает 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); } } }
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; }
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; }
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; }
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; }
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); }
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>'; }
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>'; }
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>'; }
/** * Перемещает раздел * @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']); }
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>"; }
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[] = "' ' 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[] = "' ' 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] = ' '; 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> ' . $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; }
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>"; }
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; }