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 &amp;)
* @param string $param
* 
* @return string|bool param value (ex : keyword in google url) if found, false else
*/
function getUrlParamValue($urlQuery, $param)
{
    $refererQuery = '&amp;' . databaseEscape(trim(str_replace(array('%20'), ' ', '&amp;' . $urlQuery)));
    $word = '&amp;' . $param . '=';
    //	print($urlQuery." param=".$param);
    if ($off = strpos($refererQuery, $word)) {
        $off += strlen($word);
        // &amp;q=
        $str = substr($refererQuery, $off);
        $len = strpos($str, '&amp;');
        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);
         }
     }
 }