function redirectToUrlIfNecessary() { $pageCompleteName = stripslashesPmv($_GET['pagename']); if (isset($_GET['url']) && $_GET['url'] != "") { $pageUrl = stripslashesPmv($_GET['url']); } else { $pageUrl = null; } // if(substr($pageCompleteName, 0, 5) == PREFIX_FILES) if (isPrefixTag($pageCompleteName)) { if (DEBUG) { printDebug("=====================<br>Header() to file to download<br>====================="); } else { if ($pageUrl != null) { if (defined(PMV_REWRITE_MODE) && PMV_REWRITE_MODE == 'PEAR_REQUEST') { // Debut version PEAR setIncludePath(); require_once INCLUDE_PATH . "/libs/Request/Request.php"; $a =& new HTTP_Request(str_replace("&", "&", $pageUrl)); $a->sendRequest(); foreach ($a->getResponseHeader() as $key => $value) { if ($key != "transfer-encoding") { // IE does not support this parameter header($key . ": " . $value); } } $cookies = $a->getResponseCookies(); if ($cookies) { foreach ($cookies as $value) { setCookieFromPear($value); } } print $a->getResponseBody(); exit; // Fin version PEAR } else { header('Location:' . str_replace("&", "&", $pageUrl), false, 302); exit; } } else { trigger_error("Error : There is no url to redirect", E_USER_ERROR); } exit; } } }
function returnQueryXML($p_query, $p_query2 = "") { $r = query($p_query); $allElem = array(); while ($l = mysql_fetch_assoc($r)) { $l['idcategory'] = "c" . $l['idcategory']; $allElem[] = $l; } if ($p_query2 != "") { $r = query($p_query2); while ($l = mysql_fetch_assoc($r)) { if (isPrefixTag($l['name'])) { $l['idpage'] = "f" . $l['idpage']; } else { $l['idpage'] = "p" . $l['idpage']; } $allElem[] = $l; } } return $allElem; }
if (!isset($pageNameDefault)) { $pageNameDefault = null; } } printDebug("PageNameDefault : " . $pageNameDefault); // stripslashed because otherwise pageName if value is pageNameDefault is slashed twice $pageCompleteName = utf8_encode(getRequestVar('pagename', stripslashes(html_entity_decode($pageNameDefault)))); $pageCompleteName = str_replace(array("\n", "\r"), '', $pageCompleteName); $pageCompleteName = str_replace(array("?"), '', $pageCompleteName); if ($typeTag != "") { $pageCompleteName = $typeTag . ":" . $pageCompleteName; } // works only on 'path' of this url because the query may contain delimiter ! $file = ''; //if(substr($pageCompleteName, 0, 5) === PREFIX_FILES) if (isPrefixTag($pageCompleteName)) { // $file = PREFIX_FILES; $file = getPrefixTag($pageCompleteName); } printDebug("<br>Page complete name:" . $pageCompleteName); $urlParse = parse_url('http://site.com/' . $pageCompleteName); $pageCompleteNamePath = substr($urlParse['path'], 1); $lastDelimiter = strrpos($pageCompleteNamePath, CATEGORY_DELIMITER); printDebug("<br>Page name complete path:" . $pageCompleteNamePath); printDebug("<br>Pos last delimiter : {$lastDelimiter}"); if ($lastDelimiter !== false) { // in the $pageCompleteName "g1>g2>page" select only "g1>g2" $pageCategory = substr($pageCompleteNamePath, 0, $lastDelimiter); // $pageCategory = str_replace( PREFIX_FILES, '', $pageCategory); $tabTag = split(",", PREFIX_ALL_TAG); foreach ($tabTag as $info) {
/** * Computes all info relative to pages, groups, and files * Arrays computed contain sum by group (and subgroups), for pages and files */ function computeGroupPageInfo() { /* * pages and hierarchy */ // removed in 2.2 $r = query("SELECT sum(total_time_page_ref) as s, idpage_ref" . " FROM " . T_VISIT . " as v LEFT JOIN " . T_LINK_VP . " as l USING (idvisit) " . " WHERE v.server_date = '" . $this->date->get() . "'" . " AND v.idsite = " . $this->site->getId() . "\n\t\t\t\tGROUP BY idpage_ref"); while ($l = mysql_fetch_assoc($r)) { if ($l['idpage_ref'] != 0) { $vis_pag_grp[$l['idpage_ref']] = array(ARRAY_INDEX_TIME_TOTAL => $l['s']); } } $r = query("SELECT count(*) as s, p.name as name, p.idpage as idpage, " . " COALESCE(c.idcategory,0) as idcategory, COALESCE(c.level, 1) as level, " . " COALESCE(c.idparent,0) as idparent, COALESCE(c.name,0) as namecategory " . " FROM (((" . T_VISIT . " as v LEFT JOIN " . T_LINK_VP . " as l USING (idvisit)) " . "\tLEFT JOIN " . T_PAGE . " as p USING (idpage))" . "\t\tLEFT JOIN " . T_CATEGORY . " as c USING (idcategory))" . " WHERE v.server_date = '" . $this->date->get() . "'" . " AND v.idsite = " . $this->site->getId() . " " . " GROUP BY p.idpage"); while ($l = mysql_fetch_assoc($r)) { // pages names beginning by PREFIX_FILES are files, else there are normal pages // if(substr($l['name'], 0, 5) === PREFIX_FILES) if (isPrefixTag($l['name'])) { $type = ARRAY_TYPE_FILE; // $l['name'] = substr($l['name'], 5); // $l['name'] = deletePrefixTag ($l['name']); } else { $type = ARRAY_TYPE_PAGE; } if (!isset($vis_pag_grp[$l['idpage']])) { $vis_pag_grp[$l['idpage']] = array(ARRAY_INDEX_TIME_TOTAL => DEFAULT_TIME_PAGE); } $vis_pag_grp[$l['idpage']] = array(ARRAY_INDEX_COUNT => $l['s'], ARRAY_INDEX_PAGE_NAME => databaseEscape($l['name']), ARRAY_INDEX_IDPAGE => $l['idpage'], ARRAY_INDEX_IDCATEGORY => $l['idcategory'], ARRAY_INDEX_LEVEL => $l['level'], ARRAY_INDEX_IDPARENT => $l['idparent'], ARRAY_INDEX_TYPE => $type) + $vis_pag_grp[$l['idpage']]; } //exit; /* * variables and their values */ $r = query("SELECT count(*) as s, l.idpage as idpage, vv.name as vars_name, \n\t\t\t\t\t\t\tIF( varchar_value IS NULL, int_value,varchar_value) as vars_value\n\t\t\t\t FROM (((" . T_VISIT . " as v INNER JOIN " . T_LINK_VP . " as l USING (idvisit)) \n\t\t\t\t\tINNER JOIN " . T_LINK_VPV . " as ll USING (idlink_vp))\n\t\t\t\t\t\tINNER JOIN " . T_VARS . " as vv USING (idvars))\n\t\t\t\t WHERE v.server_date = '" . $this->date->get() . "'\n\t\t\t\t AND v.idsite = " . $this->site->getId() . " \n\t\t\t\t GROUP BY l.idpage, ll.idvars"); while ($l = mysql_fetch_assoc($r)) { $vis_pag_grp[$l['idpage']][ARRAY_INDEX_VARS][$l['vars_name']][] = array(ARRAY_INDEX_VAR_COUNT => $l['s'], ARRAY_INDEX_VAR_VALUE => $l['vars_value']); } /* * entry pages */ $r = query("SELECT count(*) as s, entry_idpage as c, sum(case total_pages when 1 then 1 else 0 end) as t\n\t\t\t\tFROM " . T_VISIT . "\n\t\t\t\tWHERE server_date = '" . $this->date->get() . "'\n\t\t\t\tAND idsite = " . $this->site->getId() . " \n\t\t\t\tGROUP BY c"); while ($l = mysql_fetch_assoc($r)) { // pages that are only but always "one visit page" if ($l['t'] > 0) { $vis_pag_grp[$l['c']][ARRAY_INDEX_PAGES_VISIT_ONEPAGE] = $l['t']; } $vis_pag_grp[$l['c']][ARRAY_INDEX_ENTRYPAGE] = $l['s']; } /* * exit pages */ $r = query("SELECT count(*) as s, exit_idpage as c\n\t\t\t\tFROM " . T_VISIT . "\n\t\t\t\tWHERE server_date = '" . $this->date->get() . "'\n\t\t\t\tAND idsite = " . $this->site->getId() . " \n\t\t\t\tGROUP BY c"); while ($l = mysql_fetch_assoc($r)) { $vis_pag_grp[$l['c']][ARRAY_INDEX_EXITPAGE] = $l['s']; } $a_AllpageInfo = $vis_pag_grp; // sort array ording idLebel ASC uasort($a_AllpageInfo, "sortingAllPageInfo"); $res = array(); $res2 = array(); foreach ($a_AllpageInfo as $key => $a_pageInfo) { if (!isset($a_pageInfo[ARRAY_INDEX_TYPE])) { printDebug('<b>There was a problem during archiving...</b>'); //var_dump($a_pageInfo); //var_dump($key); //printDebug($a_pageInfo); continue; } // pages if (!isset($a_pageInfo[ARRAY_INDEX_TYPE]) || $a_pageInfo[ARRAY_INDEX_TYPE] === ARRAY_TYPE_PAGE) { $key = 'p' . $key; } else { if ($a_pageInfo[ARRAY_INDEX_TYPE] === ARRAY_TYPE_FILE) { $key = 'f' . $key; } else { echo "prob"; exit; } } $a = array($key => $a_pageInfo); if (isset($a_pageInfo[ARRAY_INDEX_IDCATEGORY]) && $a_pageInfo[ARRAY_INDEX_IDCATEGORY] != 0) { $res2 = $this->objects['treeCategory']->getTreeCompleted($a_pageInfo[ARRAY_INDEX_IDCATEGORY], $a); } else { $res2 = $a; } // merge recursively this page tree with global tree $res = array_merge_recursive($res, $res2); } if (DEBUG) { $t = strlen(serialize($res)) / 1000; } /* * convert page & category id from visit base to archive base * sum for groups, subgroups, etc. of values of * - hits * - entry point * - exit point * - length * - hits for each group varname-varvalue * - [...] */ $this->walkAndSumArray($res); if (DEBUG) { $t = strlen(serialize($res)) / 1000; } $this->toRecord['vis_pag_grp'] = $res; }