コード例 #1
0
function batchkeep()
{
    global $feedids;
    // get list of feeds
    feedarray();
    foreach ($feedids as $fidst) {
        //first need to findout date for last melife for this id
        // this use melife and says if 25% above current lifestyle average feed can say, if not put of later list
        $db->query = "SELECT * FROM " . RSSDATA . ".melife WHERE " . RSSDATA . ".melife.feed_id = {$fidst} ORDER BY " . RSSDATA . ".melife.date DESC LIMIT 1";
        $resultstaydate = mysql_query($db->query) or die(mysql_error());
        if (mysql_num_rows($resultstaydate) == 1) {
            $rowdate = mysql_fetch_object($resultstaydate);
            $datestay = $rowdate->date;
        }
        // this use melife and says if 25% above current lifestyle average feed can say, if not put of later list
        $db->query = "SELECT * FROM " . RSSDATA . ".melife WHERE " . RSSDATA . ".melife.feed_id = {$fidst} AND date = {$datestay} AND diffavg > 25";
        echo $db->query;
        $resultstay = mysql_query($db->query) or die(mysql_error());
        if (mysql_num_rows($resultstay) > 0) {
            // then flag feed as a 1
            $db->query = "UPDATE " . RSSDATA . ".feedlinking SET " . RSSDATA . ".feedlinking.liveflag = 1 WHERE " . RSSDATA . ".feedlinking.liveflag = '{$fidst}' ";
        } else {
            // flag as not to be included 0
            $db->query = "UPDATE " . RSSDATA . ".feedlinking SET " . RSSDATA . ".feedlinking.liveflag = 0 WHERE " . RSSDATA . ".feedlinking.liveflag = '{$fidst}' ";
        }
    }
    // closes foreach
}
コード例 #2
0
function feeditems()
{
    global $feedids;
    global $feeditems;
    global $lifeobjects;
    global $meavgnewstats;
    global $scoredate;
    $scoredate = time();
    feedarray();
    $feedsize = count($feedids);
    // need to look at number of feeds needing processed and if over 400 batch
    $batch = 100;
    if ($feedsize / $batch < 1) {
        $nochunks = 0;
    } else {
        $nochunks = ceil($feedsize / $batch);
        //$nochunks = 0;
        //echo $nochunks;
    }
    $batchchunk = array_chunk($feedids, $batch, true);
    //print_r($batchchunk);
    $feeditems = array();
    lifestylestartarray();
    for ($x = 0; $x <= $nochunks; $x++) {
        //echo $x;
        //echo '<br /><br />';
        //print_r($batchchunk[$x]);
        $meavgnewstats = '';
        foreach ($batchchunk[$x] as $fed) {
            //echo $fed.'fed';
            foreach ($lifeobjects as $def) {
                // could LEFT JOIN scores and then use memory to do sum need to test.
                $db->query = "SELECT " . RSSDATA . ".items.id, " . RSSDATA . ".lifestylelightscorea.lifestyleid, " . RSSDATA . ".lifestylelightscorea.score50, " . RSSDATA . ".lifestylelightscorea.lifestyleid, " . RSSDATA . ".lifestylelightscorea.matched1  FROM " . RSSDATA . ".items LEFT JOIN " . RSSDATA . ".lifestylelightscorea ON " . RSSDATA . ".lifestylelightscorea.itemid = items.id  WHERE " . RSSDATA . ".items.feed_id = '{$fed} ' AND " . RSSDATA . ".lifestylelightscorea.lifestyleid = {$def} ";
                //echo $db->query;
                $resultfeditem = mysql_query($db->query) or die("Error in query: {$db->query}. " . mysql_error());
                if (mysql_num_rows($resultfeditem) > 0) {
                    while ($row = mysql_fetch_object($resultfeditem)) {
                        $feeditems[$fed][$def][0][] = $row->score50;
                        $feeditems[$fed][$def][1][] = $row->matched1;
                    }
                }
                // put calculatation of stats in here???
                statcalulator($fed, $def, $feeditems);
            }
            // closes foreach lifestyle loop
        }
        // closes foreach feed loop
        //print_r($feeditems);
        $meavgnewstats = substr($meavgnewstats, 0, strLen($meavgnewstats) - 2);
        //this will eat the last comma
        //echo $meavgnewstats;
        $db->query = "INSERT INTO " . RSSDATA . ".lifestylelightstats (feed_id, idlifestart, noposts, scoposts, lifestylescore, topmatch, avgscore, scoreratio, scoredate) VALUES ";
        $db->query .= $meavgnewstats;
        //echo $db->query;
        $resultinsertavg = mysql_query($db->query) or die(mysql_error());
    }
    // closes for chunkloop
}
コード例 #3
0
function melifecal()
{
    global $feedids;
    global $lifeobjects;
    global $avgofavg;
    $normdate = time();
    // need array of lastest averages
    avgofavg();
    //start feedlist
    feedarray();
    // defintion list
    lifestylestartarray();
    $feedsize = count($feedids);
    // need to look at number of feeds needing processed and if over 400 batch
    $batch = 100;
    if ($feedsize / $batch < 1) {
        $nochunks = 0;
    } else {
        $nochunks = ceil($feedsize / $batch);
        //$nochunks = 0;
        //echo $nochunks;
    }
    $batchchunk = array_chunk($feedids, $batch, true);
    //print_r($batchchunk);
    for ($x = 0; $x <= $nochunks; $x++) {
        $melife = '';
        foreach ($batchchunk[$x] as $fed) {
            foreach ($lifeobjects as $def) {
                // need topword match data (added to me avg stats table)
                // need latest mestats foreach feed
                $db->query = "SELECT * FROM " . RSSDATA . ".lifestylelightstats WHERE " . RSSDATA . ".lifestylelightstats.feed_id = {$fed} AND " . RSSDATA . ".lifestylelightstats.idlifestart = {$def} ORDER BY " . RSSDATA . ".lifestylelightstats.scoredate DESC LIMIT 1 ";
                //echo $db->query;
                $resultstatarr = mysql_query($db->query) or die(mysql_error());
                if (mysql_num_rows($resultstatarr) > 0) {
                    while ($row = mysql_fetch_object($resultstatarr)) {
                        // need to create new difference distance as % from data and save to db.
                        // need to do sums on avgavg array and stats avg array
                        if (isset($row->avgscore) == true && $row->avgscore > 0) {
                            $diffpercent = ($row->avgscore - $avgofavg[$def][1]) / $avgofavg[$def][1] * 100;
                            $diffpercent = round($diffpercent, 2);
                        } else {
                            $diffpercent = -1;
                        }
                        //$row->topmatch = '16';
                        $melife .= "('{$fed}', '{$def}', '{$row->topmatch}', '{$diffpercent}', {$normdate}), ";
                    }
                }
            }
            // closes defin. loop
        }
        // closes feed loop
        //print_r($avgstats);
        $melife = substr($melife, 0, strLen($melife) - 2);
        //this will eat the last comma
        //echo $melife;
        $db->query = "INSERT INTO " . RSSDATA . ".melife (feed_id, idlifestart, topmatch, diffavg, date) VALUES ";
        $db->query .= "{$melife}";
        //echo $db->query;
        $resultmelife = mysql_query($db->query) or die(mysql_error());
    }
    // closes for loop
    setmelifedate($normdate);
}
コード例 #4
0
function memenu($meurlfeedid)
{
    global $lifeobjects;
    global $feedids;
    global $lifequalify;
    lifestylestartarray();
    feedarray();
    // select lifestyle that an individual qualify for and build array
    //  form two arrays of ranks based on top score and distance from average,   merge out rankings and that will be order menu list will be, limit to 5 and suggested add more button.  NB need to remove lifestyle presented to edit add, remove,  order too I suppose.
    $fid = $meurlfeedid;
    //echo $fid;
    // need to find out date of latest me avarage data
    $db->query = "SELECT * FROM " . RSSDATA . ".melife WHERE " . RSSDATA . ".melife.feed_id = {$fid} ORDER BY " . RSSDATA . ".melife.date DESC LIMIT 1 ";
    //echo $db->query;
    $resultldate = mysql_query($db->query) or die(mysql_error());
    if (mysql_num_rows($resultldate) == 1) {
        $rowldate = mysql_fetch_object($resultldate);
        $ldate = $rowldate->date;
    }
    $db->query = "SELECT * FROM " . RSSDATA . ".melife WHERE " . RSSDATA . ".melife.feed_id = {$fid} AND " . RSSDATA . ".melife.date = {$ldate} ORDER BY " . RSSDATA . ".melife.topmatch DESC ";
    //echo $db->query;
    $resulttopm = mysql_query($db->query) or die(mysql_error());
    if (mysql_num_rows($resulttopm) > 0) {
        while ($rowtop = mysql_fetch_object($resulttopm)) {
            $toprank[] = $rowtop->idlifestart;
        }
    }
    $db->query = "SELECT * FROM " . RSSDATA . ".melife WHERE " . RSSDATA . ".melife.feed_id = {$fid} AND " . RSSDATA . ".melife.date = {$ldate} ORDER BY " . RSSDATA . ".melife.diffavg DESC ";
    //echo $db->query;
    $resultdiffavg = mysql_query($db->query) or die(mysql_error());
    if (mysql_num_rows($resultdiffavg) > 0) {
        while ($rowdif = mysql_fetch_object($resultdiffavg)) {
            $topdif[] = $rowdif->idlifestart;
        }
    }
    if ($toprank && $topdif) {
        //print_r($toprank);
        //print_r($topdif);
        $rankone = array_intersect($toprank, $lifeobjects);
        $rankonea = array_flip($rankone);
        //print_r($rankonea);
        $ranktwo = array_intersect($topdif, $lifeobjects);
        $ranktwoa = array_flip($ranktwo);
        //print_r($ranktwoa);
        foreach ($lifeobjects as $key => $obj) {
            $memrank = ($rankonea[$obj] + $ranktwoa[$obj]) / 2;
            //echo $memrank;
            $lifequalify[$key] = $memrank;
            //$lifequalify[$obj][] = $key;
        }
        $lifesort = asort($lifequalify);
        //print_r($lifesort);
        //print_r($lifequalify);
        $_SESSION[lifequalify] = $lifequalify;
    }
    return $lifequalify;
}
コード例 #5
0
function indivmostlikeme($feedid)
{
    global $feedids;
    global $peergroup;
    global $meuqni;
    global $melifeavglist;
    global $perfeed;
    // NEED TO SETUP UPFRONT LOGIC IS BATCH OR REFRESH FOR PARTICUALR INDIVIDUAL?
    // what is feed id of this individual
    //$feedindv  = 2;  // need to GET_(feed_id) or something
    $date = time();
    // need list of all feeds
    feedarray();
    //$feedids = Array ( '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10', '11' => '11', '12' => '12', '13' => '13', '14' => '14', '15' => '15', '16' => '16', '17' => '17', '18' => '18', '19' => '19', '20' => '20');//, '21' => '21', '22' => '23', '23' => '24', '24' => '25', '25' => '26', '26' => '27', '27' => '28', '29' => '29', '30' => '31', '31' => '31', '32' => '32', '33' => '33', '34' => '34', '35' => '35', '36' => '36', '37' => '37', '38' => '38', '39' => '39', '40' => '40');
    //print_r($feedids);
    //prepmelife ($feedids);
    $lifelisttop = toplifefivearray($feedid);
    //print_r($lifelisttop);
    // call melifedata array with list of feed ids mepath needs data on
    //how many individual, count feedarray
    $indpeers = count($feedids);
    //echo $indpeers.'nofeeds<br />';
    //80-20 rule
    $peertwenty = $indpeers * 0.1;
    //echo $peertwenty.'20% feeds<br />';
    // batch per lifestlyeid  save memory getting over maxed
    foreach ($lifelisttop as $unid) {
        $perdiffarr = '';
        $newadf = 1;
        $perdiffarr = melifearray($unid, $newadf, $feedid);
        //print_r($melifeavglist);
        //print_r($perdiffarr);
        //echo 'break<br /><br />';
        // now look up the individuals melife stat and then order all indivials stas and then use 80-20 rules, ie take20% of indivudals clostest to that individual.  Then display results, have any post been published from this peergroup of in the last 24hrs?
        // new list of feeds that have lifestyle in top5 $perfeed;
        //foreach ($feedids as $fma)  {
        //foreach ($perfeed[$unid] as $pfma)  {
        $steps = '';
        // form an array for all the lifestyleids, count no. feeds find out 20% of that number, find out individuals average then identify feeds 10% plus this indivudals avarage and -10% from their average
        //print_r($melifeavglist[$mell]);
        $mecou = count($perdiffarr[$unid]);
        //echo $mecou;
        if ($mecou > 0) {
            //gives us array containing the individuals average
            // next need to find -10 and +10% either side of that position
            //  now need to count back and forward along the array to pick out peer list.
            $steps = new Steps();
            $poslist = array();
            foreach ($perdiffarr[$unid] as $key => $reindex) {
                $steps->add($key);
            }
            //echo 'listorder';
            //print_r($steps->all);
            $feedindv = $feedid;
            //echo 'indiv feedid'.$feedindv.'<br /><br />';
            // set this individuals avg. position
            $steps->setCurrent($feedindv);
            //print_r($steps);
            for ($i = 1; $i <= $peertwenty; $i++) {
                //echo $i;
                //echo $steps->getNext().'<br>';
                $newset = $steps->getNext();
                //echo $newset.'newno<br /><br >';
                $indivset = $steps->setCurrent($newset);
                //echo $indivset.'indvid set';
                if (strlen($newset) > 0) {
                    $poslist[] = $newset;
                }
            }
            //print_r($poslist);
            $steps->setCurrent($feedindv);
            for ($i = 1; $i <= $peertwenty; $i++) {
                //echo $i;
                //echo $steps->getPrev().'<br>';
                $newset = $steps->getPrev();
                $indivset = $steps->setCurrent($newset);
                if (strlen($newset) > 0) {
                    $poslist[] = $newset;
                }
            }
            //echo 'postlist';
            //print_r($poslist);
            //echo 'postlist';
            $arraycou = count($poslist);
            //echo $arraycou.'numcou';
            // save to perpeers table to have on demand quickly and update on a per individual basis
            if ($arraycou > 0) {
                //print_r($poslist);
                //echo 'heelo';
                $peerinslist = '';
                $rank = '';
                foreach ($poslist as $peerid) {
                    $rank++;
                    $peerinslist .= "('{$feedid}', '{$rank}', '{$date}', '{$unid}', '{$peerid}' ), ";
                }
                $peerinslist = substr($peerinslist, 0, strLen($peerinslist) - 2);
                //this will eat the last comma
                //echo $peerinslist.'insertcode';
                if (strLen($peerinslist) > 0) {
                    $db->query = " INSERT INTO " . RSSDATA . ".perpeers (feedid, rank, date, idlifestart, peerid) VALUES ";
                    $db->query .= $peerinslist;
                    //echo $db->query;
                    $resultinsqual = mysql_query($db->query) or die(mysql_error());
                }
                //closes if
            }
            // closes if anything to insert
        }
        // closes if no melifedata
        //}  // closes foreach loop ie eachfeed.
    }
    // closes for each unqiue lifestyle definition
}
コード例 #6
0
<br />
<form method="post" action=" <?php 
echo $_SERVER['PHP_SELF'];
?>
 " >
Find out top 5 lifestyles for each individual ie. feed 
<input type="Submit" name="melifetopfive" value="Find out top 5 lifestyles all feeds"><br><br>
</form>
<br />
<br />

<?php 
if (isset($_POST['melifetopfive'])) {
    error_reporting(5);
    $date = time();
    feedarray();
    standardtopmenutwo();
    foreach ($feedids as $efid) {
        $lifequalify = '';
        $topmenu = array();
        $rank = '';
        memenu($efid);
        compareusermenutwo($lifemenu, $lifequalify);
        $db->query = " INSERT INTO " . RSSDATA . ".toplife (feedid, rank, date, lifestyleid) VALUES ";
        foreach ($topmenu as $tpf) {
            $rank++;
            $db->query .= "('{$efid}', '{$rank}', '{$date}', '{$tpf}'), ";
        }
        $db->query = substr($db->query, 0, strLen($db->query) - 2);
        //this will eat the last comma
        $resultmelifet = mysql_query($db->query) or die(mysql_error());