Example #1
0
function child_render($param)
{
    global $g_page, $g_cfg;
    $g_page["frame"] = "site_admin/frame.html";
    if (!http_user_auth("admin", "admin")) {
        return redirect("/");
    }
    if (isset($param[1]) && $param[1] == "switch_status") {
        list($cname, $p) = [$_GET["name"], $_GET["p"]];
        if ($p == "close") {
            dbupdate("sys_variations", [], ["test" => $cname], ["completed" => "now()"]);
        }
        return redirect("/stats/multivariants");
    }
    $q = gettable("select * from sys_variations where completed is null");
    $t = [];
    foreach ($q as $row) {
        if (!isset($t[$row["test"]])) {
            $t[$row["test"]] = [];
        }
        if (!isset($t[$row["test"]][$row["variation"]])) {
            $t[$row["test"]][$row["variation"]] = ["goals" => []];
        }
        $t[$row["test"]][$row["variation"]]["content"] = substr($row["content"], 0, 256);
        $cm = new Variant($row["test"]);
        $t[$row["test"]][$row["variation"]]["enrolled"] = $cm->get() == $row["variation"] ? 1 : 0;
        $t[$row["test"]][$row["variation"]]["variation"] = $row["variation"];
        $cv = [];
        $cgoal = $row;
        $cgoal["pc"] = $row["sample"] == 0 ? "N/A" : round($row["conversion"] / $row["sample"] * 100, 2);
        $t[$row["test"]][$row["variation"]]["goals"][] = $cgoal;
        $t[$row["test"]][$row["variation"]] = update($t[$row["test"]][$row["variation"]], $cv);
    }
    $res = [];
    foreach ($t as $name => $row) {
        $cm = [];
        foreach ($t[$name] as $varname => $cvar) {
            uasort($cvar["goals"], function ($a, $b) {
                global $g_mv_goals;
                if (($i = array_search($a["goal"], $g_mv_goals)) === false) {
                    return -1;
                }
                if (($j = array_search($b["goal"], $g_mv_goals)) === false) {
                    return -1;
                }
                if ($i == $j) {
                    return 0;
                }
                return $i > $j ? 1 : -1;
            });
            $cm[] = $cvar;
        }
        $res[] = ["test" => $name, "var" => $cm];
    }
    // print_r($res); exit;
    $scr = new Scriptor("site_admin/multivariants.html", ["tests" => $res]);
    return $scr->result();
}
Example #2
0
 public static function load($thing)
 {
     $product = new Product();
     $product->thing = $thing;
     //members
     $fields_raw = $product->thing->getData();
     $tmpFields = array();
     foreach ($fields_raw as $field) {
         $tmpFields[$field->getKey()] = $field;
     }
     $product->fields = $tmpFields;
     //variants
     $thingVariants = $product->thing->getChildThings("variant");
     $variants = array();
     foreach ($thingVariants as $thingVariant) {
         $variants[] = Variant::load($thingVariant);
     }
     $product->variants = $variants;
     //options
     $thingOptions = $product->thing->getChildThings("option");
     $options = array();
     foreach ($thingOptions as $thingOptions) {
         $options[] = Option::load($thingOptions);
     }
     $product->options = $options;
     return $product;
 }
Example #3
0
function child_render($param)
{
    // Main API trunk
    $user_api = ["variant_set" => function ($name, $var) {
        // enrolls user in given variant
        if (!http_user_auth("admin", "admin")) {
            return redirect("/");
        }
        $cv = new Variant($name);
        if (!ctype_alnum($var)) {
            hack_sign("Setting variant to non-numeric value " . $var);
        }
        $cv->set($var);
        return redirect($cv->get_url());
    }];
    if (isset($_GET["func"])) {
        return api_demux_call($user_api);
    }
    return ["res" => "0", "err" => "No function to call."];
}
Example #4
0
 /**
  * Construct an Experiment from an Array of data
  */
 public static function fromArray($options)
 {
     $name = "\\Myna\\Data\\Experiment::fromArray";
     $uuid = \Myna\Arr::get_or_error($options, 'uuid', $name);
     $id = \Myna\Arr::get_or_error($options, 'id', $name);
     $settings = Settings::fromArray(\Myna\Arr::get($options, 'settings', array()));
     $variants = array();
     $vars = \Myna\Arr::get($options, 'variants', array());
     foreach ($vars as $data) {
         $variants[$data['id']] = Variant::fromArray($data);
     }
     return new Experiment($uuid, $id, $settings, $variants);
 }
 public function actionOrder()
 {
     $result = new stdClass();
     $post = $this->getRequestBody();
     if ($post === null) {
         $result->status = "request is empty";
     } else {
         //$order = json_decode($post);
         $pollId = null;
         foreach ($post as $item) {
             $question = Question::findById($item->id);
             $question->weight = $item->weight;
             $pollId = $question->poll->id;
         }
         Variant::flush();
         $poll = Poll::findById($pollId);
         $result->status = 'ok';
         $result->data = $poll->formStdObject()->questions;
     }
     echo json_encode($result);
     exit;
 }
 public function deleteSlide()
 {
     $slideid = Input::get('slide');
     $delete = $this->variant->deleteslide($slideid);
     return Response::json('error', 200);
 }
 public function getfoldername($vid)
 {
     $variant = Variant::find($vid);
     $name = str_replace(' ', '_', $variant->name);
     $name = strtolower($name);
     $landingname = Variant::getlandingname($variant->id);
     return $landingname . '/' . $name;
 }
Example #8
0
 public static function getVariants($product_id, $variant_id = null)
 {
     $obj = new Thing();
     $obj->db->select('thing.id');
     $obj->db->from('thing');
     $obj->db->where('name = "product"');
     $obj->db->where('altid', $product_id);
     $query = $obj->db->get();
     $prodId = -1;
     if (count($query->result()) == 1) {
         foreach ($query->result() as $row) {
             $prodId = $row->id;
         }
     } else {
         throw new InvalidParameterException($product_id . " is not a valid product id");
     }
     //get all variants now that we have right prod id
     $obj->db->select('thing.id');
     $obj->db->from('thing');
     $obj->db->where('name = "variant"');
     $obj->db->where('thing_id', $prodId);
     if (!is_null($variant_id)) {
         $obj->db->where('altid', $variant_id);
     }
     $query = $obj->db->get();
     //get things for products
     $thingVariants = array();
     foreach ($query->result() as $row) {
         array_push($thingVariants, Thing::load($row->id));
     }
     //get products
     $variants = array();
     foreach ($thingVariants as $thingVariants) {
         $variants[] = Variant::load($thingVariants);
     }
     return $variants;
     //encode json
     //$json = array();
     //foreach($variants as $variant)
     //$json[] = $variant->toJson();
     //$json = json_encode($json, JSON_HEX_TAG|JSON_HEX_AMP|JSON_HEX_QUOT);
     //echo "<pre>";
     //print_r($json);
     //echo "</pre>";
     //return $products;
 }
Example #9
0
function ctrl_variant($scr, $param, $script, $vals)
{
    global $g_scr_tests;
    if (!isset($g_scr_tests[$param["name"]])) {
        $g_scr_tests[$param["name"]] = [];
    }
    if (!in_array($param["value"], $g_scr_tests[$param["name"]])) {
        $g_scr_tests[$param["name"]][] = $param["value"];
    }
    $cv = new Variant("scr:" . $param["name"], $g_scr_tests[$param["name"]]);
    if ($cv->get_content() == $param["value"]) {
        return $scr->ev($script, $vals);
    }
    return "";
}
 public function getView($slug)
 {
     if (Agent::isMobile() || Agent::isTablet()) {
         switch ($slug) {
             case "film":
                 return Redirect::to('film-mobile');
                 break;
             case "animation":
                 return Redirect::to('animation-mobile');
                 break;
             case "game-production":
                 return Redirect::to('game-mobile');
                 break;
             case "recording-arts":
                 return Redirect::to('recording-arts-mobile');
                 break;
             case "mp":
                 return Redirect::to('mp-mobile');
                 break;
             case "entertainment-business":
                 return Redirect::to('business-mobile');
                 break;
             case "entertainment-business-online":
                 return Redirect::to('entertainment-business-online-mobile');
                 break;
             case "digital-filmmaking":
                 return Redirect::to('digital-filmmaking-mobile');
                 break;
             case "military":
                 return Redirect::to('omni-mobile');
                 break;
             case "omni":
                 return Redirect::to('omni-mobile');
                 break;
         }
     } elseif (!Agent::isMobile() && !Agent::isTablet()) {
         switch ($slug) {
             case "film-mobile":
                 return Redirect::to('film');
                 break;
             case "animation-mobile":
                 return Redirect::to('animation');
                 break;
             case "game-mobile":
                 return Redirect::to('game-production');
                 break;
             case "recording-arts-mobile":
                 return Redirect::to('recording-arts');
                 break;
             case "mp-mobile":
                 return Redirect::to('mp');
                 break;
             case "business-mobile":
                 return Redirect::to('entertainment-business');
                 break;
             case "digital-filmmaking-mobile":
                 return Redirect::to('digital-filmmaking');
                 break;
             case "entertainment-business-online-mobile":
                 return Redirect::to('entertainment-business-online');
                 break;
             case "omni-mobile":
                 return Redirect::to('omni');
                 break;
         }
     }
     $landingpage = $this->landingpage->where('slug', '=', $slug)->first();
     // Check if the blog post exists
     if (is_null($landingpage)) {
         // If we ended up in here, it means that
         // a page or a blog post didn't exist.
         // So, this means that it is time for
         // 404 error page.
         //return App::abort(404);
         return 'DAMN!';
     }
     // Get variants
     $variants = $landingpage->variants($landingpage->id);
     $lpcount = $this->landingpage->sumallhits($landingpage->id);
     if ($lpcount == 0) {
         $lpcount = 100;
     }
     $v = array();
     foreach ($variants as $var) {
         $hit = $this->landingpage->sumhits($var->id);
         $varperc = $hit / $lpcount;
         $percent = $var->percent / 100;
         if ($varperc < $percent) {
             $vid = $var->id;
             break;
         }
         $v[] = $var->id;
     }
     if (empty($vid)) {
         $key = array_rand($v);
         $vid = $v[$key];
     }
     //echo $vid;
     $varclass = new Variant();
     $variant = $varclass->findOrFail($vid);
     $tempid = $variant->t_id;
     $variables = $varclass->getVariantVariables($vid);
     $key = array();
     $value = array();
     foreach ($variables as $var) {
         $key[] = str_replace(' ', '', $var->name);
         $value[] = $var->vartext;
     }
     $variab = array_combine($key, $value);
     $bladete = $varclass->getblade($tempid);
     $file = $bladete->blade;
     $filer = str_replace('.blade.php', '', $file);
     $view = 'uploads.' . $filer;
     $images = $varclass->getsliderimages($vid);
     $count = count($images);
     $sliderimages = '';
     $sliderbuttons = '';
     $slideritems = '';
     $i = 1;
     foreach ($images as $img) {
         $sliderimages .= ".iosSlider .slider #item" . $i . " \n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tbackground: url('" . asset($img->path) . "') no-repeat 50% 0 ;\n\t\t\t\t\t\t\t\t\tbackground-size:100%;\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t}";
         $sliderbuttons .= '<div class="button"></div>';
         $slideritems .= "<div class = 'item' id = 'item" . $i . "'>\n\n\t\t\t\t\t\t\t\t</div>";
         $i++;
     }
     $data = array('id' => $variant->id, 'lp_id' => $variant->lp_id, 'slug' => $slug);
     // return View::make($view)->with('variables', $variab);
     return View::make($view)->with('variables', $variab)->with('variant', $variant)->with('sliderimages', $sliderimages)->with('slideritems', $slideritems)->with('sliderbuttons', $sliderbuttons)->with('slug', $slug)->nest('form', 'forms.form', $data);
     // Get current user and check permission
     // Show the page
     //return View::make('site/blog/view_post', compact('post', 'comments', 'canComment'));
 }