Exemple #1
0
 public function __construct($riak = null, $bucket = null)
 {
     parent::__construct();
     $this->_riak = $riak;
     $this->_bucket = $bucket;
     $this->_bucket->client->prefix = 'riak';
 }
Exemple #2
0
function right_content()
{
    global $riak, $bucket, $key, $_GET, $_POST;
    $ret = '';
    // if i have a bucket selected, but no KEY, I'll display all keys from it
    if (isset($bucket) && !isset($_GET['key'])) {
        //        $keys = $bucket->getKeys();
        $stream = $bucket->getContentStream();
        if ($stream) {
            require_once dirname(__FILE__) . '/lib/ArrayMaker.php';
            require_once dirname(__FILE__) . '/lib/jsonstreamingparser/RiakParser.php';
            $listener = new ArrayMaker();
            $listener->setLimit(DISPLAY_KEYS);
            try {
                $parser = new RiakParser($stream, $listener);
                $parser->parse();
            } catch (Exception $e) {
                fclose($stream);
                throw $e;
            }
            fclose($stream);
        } else {
            echo "No stream";
            exit;
        }
        //        exit;
        $arr_keys = $listener->get_result();
        //        print_R($arr_keys);
        $keys = array_map("urldecode", $arr_keys);
        // pagination ???
        $ret .= '
        <div class="content">
            <h3>Selected BUCKET: "' . $_GET['bucketName'] . '"</h3>';
        // add a new key in this bucket
        if ($_GET['cmd'] == 'addKey') {
            $ret .= '
            <form method="GET" name="addKey" action="?">
            <input type="hidden" name="cmd" value="saveKey">
            <input type="hidden" name="bucketName" value="' . $_GET['bucketName'] . '">
            <div class=content>
                <div class="td_left">Key name:<div class="msgSmall">Leave empty for random value.</div></div>
                <div class="td_right"><textarea name="key_name" rows=3 cols="30"></textarea></div>
            </div>
            <div id="fieldList">
                <div class="content">
                    <div class=td_left><input type=text name=key[]></div>
                    <div class=td_right><textarea name=value[] rows=3 cols=30></textarea></div>
                </div>
            </div>
            <div style="text-align:center">
                <input type="submit" name="ok" value="Save">
                <a href="#" onClick="document.getElementById(\'fieldList\').innerHTML=document.getElementById(\'fieldList\').innerHTML + \'<div class=content><div class=td_left><input type=text name=key[]></div><div class=td_right><textarea name=value[] rows=3 cols=30></textarea></div></div>\'">Add another key => value!</a>
            </div>
            </form>';
            return $ret;
        } elseif ($_GET['cmd'] == 'findKey') {
            $ret .= '
            <form method="GET" name="searchKey" action="?">
            <input type="hidden" name="cmd" value="searchKey">
            <input type="hidden" name="bucketName" value="' . $_GET['bucketName'] . '">
            <div class="content">
                <div class="td_left">Search for:</div>
                <div class="td_right"><input type="text" name="q" value="">
                <input type="submit" name="ok" value="Search"></div>
            </div>
            </form>';
            return $ret;
        } elseif ($_GET['cmd'] == 'searchKey') {
            // display the search results
        }
        $ret .= '
            <div class="td_left" align="center"><b>KEY NAME</b></div>
            <div class="td_right" align="center"><b>ACTIONS</b></div>
        </div>';
        $total = 0;
        $count = count($keys);
        for ($i = 0; $i < min($count, DISPLAY_KEYS); $i++) {
            $total++;
            $ret .= '
            <div class="content">
                <div class="td_left"><b>' . $keys[$i] . '</b></div>
                <div class="td_right">
                    <a href="?cmd=useBucket&bucketName=' . $_GET['bucketName'] . '&key=' . $keys[$i] . '">View/Modify</a> | 
                    <a href="?cmd=deleteKey&bucketName=' . $_GET['bucketName'] . '&key=' . $keys[$i] . '">Delete</a>
                </div>
            </div>';
        }
        if ($total == 0) {
            $ret = '
            <div class="msg">No keys found in this bucket.</div>';
        }
        $ret .= '</table>';
    } elseif (isset($bucket) && isset($_GET['key'])) {
        $ret .= '
        <form name="updateKey" method="POST" action="?cmd=updateKey&bucketName=' . $_GET['bucketName'] . '&key=' . $_GET['key'] . '">
        <div class="content">
            <h3>Selected KEY: "' . $_GET['key'] . '"</h3>
        </div>';
        $arr_key = $key->reload()->getData();
        if (!empty($arr_key)) {
            $key = json_readable_encode($arr_key);
            $ret .= '<div class="content">' . '<textarea id="documentdata" name="value[]" style="width:778px; height:375px;">' . $key . "</textarea>" . "<script>document.getElementById('documentdata').value=document.getElementById('documentdata').value.replace(/\\*\\/[^\\/]+\$/, '').replace(/\t/g, ' ');</script>" . "</div>" . '<input type="submit" name="ok" value="Save">';
        } else {
            $ret = '<div class="msg">For some reasons, this key could not be read.</div>';
        }
        $ret .= '
            <div id = "fieldList"></div>
       </form>';
    } elseif ($_GET['cmd'] == 'setCookies') {
        $ret .= '<div="content">' . '<div style="float:left"><img src="' . $_SERVER['SCRIPT_NAME'] . '/../images/iLoading.gif" style="width:90px;"/></div>' . '<div style="float:left; margin-top:30px;">Loading...</div>' . '</div>';
        if (isset($_POST)) {
            $arr = $_POST;
            $buckets = array();
            if (is_array($arr)) {
                foreach ($arr as $key => $value) {
                    $buckets[] = $key;
                }
            }
            $buckets = json_encode($buckets);
            setcookie('buckets', $buckets);
        }
        $page = $_SERVER['PHP_SELF'];
        header("Refresh: 0; url={$page}/../");
    } elseif ($_GET['cmd'] == 'manageBuckets') {
        ?>
        <form name="manageBuckets" action="?cmd=setCookies" method="POST">
            <div class="content">
                <div id="beforeLoad">Listing all known buckets (ones that have keys stored in them) from Riak...<br/>
                    Please wait while this is fetched from all your nodes... <a href="http://docs.basho.com/riak/1.3.0/references/apis/http/HTTP-List-Buckets/" target="_blank">(i)</a>
                </div>
                <div class="clear"></div>
                <div id="afterLoad" style='display:none'><h3>Manage Favorite Buckets:</h3>(select the buckets you want to be displayed on left, as we cannot read each time from Riak, <a href="http://docs.basho.com/riak/1.3.0/references/apis/http/HTTP-List-Buckets/" target="_blank">find out why</a>.)<br/><br/></div>

                <?php 
        $buckets = $riak->buckets();
        $b = json_decode($_COOKIE['buckets'], true);
        if (is_array($buckets)) {
            foreach ($buckets as $bucket) {
                if (is_array($b) && in_array($bucket->name, $b)) {
                    $checked = true;
                } else {
                    $checked = false;
                }
                $ret .= '<input type="checkbox" id="' . $bucket->name . '"' . ($checked ? 'checked="checked"' : '') . ' name="' . $bucket->name . '"> <label for="' . $bucket->name . '">' . $bucket->name . '</label><br/><br/>';
            }
        }
        $ret .= '<input type="submit" value="Save favorites"></form><br/><br/>';
        $ret .= '* favorites are kept in cookies</div>';
        ?>
                <script>
                    document.getElementById('afterLoad').style.display = document.getElementById('beforeLoad').style.display;
                    document.getElementById('beforeLoad').style.display = 'none';
                </script>
                <?php 
    } else {
        $ret = '
            <div class = "msg">Chose a bucket from the left panel, or create a new one...</div>';
    }
    $ret .= '</div>';
    return $ret;
}
    {
        $this->_key = $key;
    }
    // Note that value may be a string, integer, boolean, null
    public function value($value)
    {
        $obj = array_pop($this->_stack);
        if ($this->_key) {
            $obj[$this->_key] = $value;
            $this->_key = null;
        } else {
            array_push($obj, $value);
        }
        array_push($this->_stack, $obj);
    }
    public function whitespace($whitespace)
    {
        // do nothing
    }
}
$testfile = dirname(__FILE__) . '/example.json';
$listener = new ArrayMaker();
$stream = fopen($testfile, 'r');
try {
    $parser = new JsonStreamingParser_Parser($stream, $listener);
    $parser->parse();
} catch (Exception $e) {
    fclose($stream);
    throw $e;
}
var_dump($listener->get_json());
Exemple #4
0
 function getContentStream()
 {
     //        http://172.16.128.154:8098/buckets/product_achievement/keys?keys=stream
     $key = 'keys';
     $params = array('keys' => 'stream');
     $this->client->prefix = 'buckets';
     $url = RiakUtils::buildRestPath($this->client, $this, $key, NULL, $params);
     $stream = fopen($url, 'r');
     return $stream;
     require_once dirname(__FILE__) . '/jsonstreamingparser-master/example/example.php';
     $listener = new ArrayMaker($action, $riak, $bucket);
     try {
         $parser = new JsonStreamingParser_Parser($stream, $listener);
         $parser->parse();
     } catch (Exception $e) {
         fclose($stream);
         throw $e;
     }
     $keys = $listener->get_json();
     //        print_r($keys);
     //        die;
     return array_map("urldecode", $keys);
     //        if ($u = fopen($url, 'r')) {
     //            $keys = stream_get_contents($u);
     //            fclose($u);
     //        }
     //        print_r($keys);
 }