function postProcess() { for ($i = 0; $i < NB_URLS_ALIAS_AVAILABLE; $i++) { $a_urls[] = array($this->siteAdmin, databaseEscape($this->getSubmitValue('form_url' . $i))); } $confSite = new SiteConfigDb(); $confSite->setUrls($a_urls, $this->siteAdmin); }
/** * saves var toRecord values in the database, serializing arrays */ function saveDb() { if (COMPRESS_DB_DATA && function_exists('gzcompress')) { $this->toRecord['compressed'] = 1; } else { $this->toRecord['compressed'] = 0; } /* print("<pre>"); var_dump($this->toRecord); print("<br><br><br>"); */ foreach ($this->toRecord as $fieldName => $a_value) { if (is_array($a_value)) { $a_value = databaseEscape(compress(serialize($a_value), $this->toRecord['compressed'])); } //print("<br>update $fieldName data = ".strlen(serialize($a_value))); updateLine(T_ARCHIVES, array($fieldName => $a_value, 'idarchives' => $this->idArchives), 'idarchives'); } $this->updateDbState(); }
function databaseSecure($var) { $db =& Db::getInstance(); if ($db->isReady()) { if (is_array($var)) { foreach ($var as $key => $value) { if (is_array($value)) { $var[$key] = databaseSecure($value); } else { $var[$key] = databaseEscape($value); } } } else { $var = databaseEscape($var); } } return $var; }
/** * returns the value of a GET parameter $param in an URL query $urlQuery * * @param string $urlQuery result of parse_url()['query'] and htmlentitied (& is &) * @param string $param * * @return string|bool param value (ex : keyword in google url) if found, false else */ function getUrlParamValue($urlQuery, $param) { $refererQuery = '&' . databaseEscape(trim(str_replace(array('%20'), ' ', '&' . $urlQuery))); $word = '&' . $param . '='; // print($urlQuery." param=".$param); if ($off = strpos($refererQuery, $word)) { $off += strlen($word); // &q= $str = substr($refererQuery, $off); $len = strpos($str, '&'); if ($len === false) { $len = strlen($str); } $toReturn = substr($refererQuery, $off, $len); return $toReturn; } else { return false; } }
/** * 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; }
/** * returns id associated to string name * * @param string $name * * @return id */ function getId($name) { //if($this->tableSuffix=='page') trigger_error("stop dude $name", E_USER_ERROR); $name = databaseEscape(stripslashes($name)); if (empty($name)) { return -1; } if (isset($this->nameToId[$name])) { return $this->nameToId[$name]; } else { $r = query("SELECT id\n\t\t\t\t\t\tFROM " . $this->tableName . "\n\t\t\t\t\t\tWHERE name = '{$name}'\n\t\t\t\t\t\tLIMIT 1"); if (mysql_num_rows($r) == 0) { return $this->save($name); } else { $l = mysql_fetch_assoc($r); $this->nameToId[$name] = $l['id']; $this->idToName[$l['id']] = $name; //printDebug("$name is id ".$l['id']); return $this->getId($name); } } }