Example #1
0
 function testCache()
 {
     $dir = __DIR__ . '/../cache';
     $cache = new File(['directory' => $dir]);
     $users = ['Masoud', 'Alireza'];
     $cache->write('users', $users);
     $this->assertCount(1, $cache->stats());
     $this->assertTrue($cache->contains('users'));
     $this->assertEquals($users, $cache->read('users'));
     $this->assertFalse($cache->expired('users', 1));
     $i = 0;
     $posts = ['Post 1', 'Post 2'];
     for ($j = 0; $j < 10; $j++) {
         $result = $cache->remember('posts', function () use(&$i, $posts) {
             $i++;
             return $posts;
         }, 10);
     }
     $this->assertEquals(1, $i);
     $this->assertEquals($posts, $result);
     $this->assertEquals($posts, $cache->read('posts'));
     $this->assertCount(2, $cache->stats());
     $cache->delete('users');
     $this->assertFalse($cache->contains('users'));
     $this->assertTrue($cache->contains('posts'));
     $cache->deleteAll();
     $this->assertCount(0, $cache->stats());
     @unlink($dir);
 }
Example #2
0
function help_search($appname, $query, $lang)
{
    loader_import('saf.File');
    loader_import('saf.File.Directory');
    $query = help_split_query($query);
    //info ($query);
    $files = Dir::find('*.html', 'inc/app/' . $appname . '/docs/' . $lang);
    if (count($files) == 0) {
        return false;
        // no help files
    }
    $results = array();
    foreach ($files as $file) {
        if (strstr($file, '/.')) {
            continue;
        }
        if ($hits = File::contains($query, false, $file, true, 'strip_tags')) {
            $results[] = help_extract_info($file, $query, $hits);
        }
    }
    // sort by hits now
    for ($i = 0; $i < count($results); $i++) {
        for ($j = $i + 1; $j < count($results); $j++) {
            if ($results[$j]->hits > $results[$i]->hits) {
                $tmp = $results[$j];
                $results[$j] = $results[$i];
                $results[$i] = $tmp;
            }
        }
    }
    return $results;
}
Example #3
0
 /**
  * Searches a directory or directories (recursively) for a file
  * that contains a given string or pattern.  Note: this method requires
  * the saf.File class.
  * 
  * @access	public
  * @param	string	$string
  * @param	string	$basedir
  * @param	boolean	$recursive
  * @param	boolean	$regex
  * @return	array
  * 
  */
 function findInFiles($string, $basedir, $recursive = 0, $regex = 0)
 {
     $dir = new Dir($basedir);
     $res = array();
     $files = $dir->read_all();
     //echo "evaluating $basedir...\n";
     foreach ($files as $file) {
         if ($file == '.' || $file == '..') {
             continue;
         }
         //echo "trying file $file...\n";
         if (is_file($basedir . '/' . $file) && File::contains($string, $regex, $basedir . '/' . $file)) {
             array_push($res, $basedir . '/' . $file);
         }
         //exit;
         if ($recursive && is_dir($basedir . '/' . $file)) {
             $new_res = Dir::find_in_files($string, $basedir . '/' . $file, $recursive, $regex);
             // add $new_res to $res
             foreach ($new_res as $n) {
                 array_push($res, $n);
             }
         }
     }
     $dir->close();
     return $res;
 }