array(GDO::AUTO_INCREMENT),
'lvs_smiley' => array(GDO::TEXT|GDO::UTF8|GDO::CASE_S),
'lvs_path' => array(GDO::TEXT|GDO::UTF8|GDO::CASE_S),
);
}
public static function onAddSmiley($smiley, $path)
{
return self::table(__CLASS__)->insertAssoc(array(
'lvs_id' => 0,
'lvs_smiley' => $smiley,
'lvs_path' => $path,
));
}
/**
* Show all the smileys and rules we have in database.
* @param WC_Challenge $chall
*/
public static function showAllSmiles(WC_Challenge $chall)
{
$input = $chall->lang('test_input_msg').PHP_EOL;
$paths = array();
$patterns = array();
$table = self::table(__CLASS__);
if (false === ($result = $table->select('lvs_path, lvs_smiley')))
{
return "ERROR 0815!";
}
while (false !== ($row = $table->fetch($result, GDO::ARRAY_N)))
{
$input .= $row[0];
$paths[] = $row[0];
$patterns[] = $row[1];
}
$table->free($result);
$i = 0;
$output = $input;
foreach ($patterns as $pattern)
{
$output = self::replaceSmiley($pattern, $paths[$i++], $output);
}
// $back = GWF_Box::box($input, $chall->lang('all_smileys_input'));
$back = GWF_Box::box($output, $chall->lang('all_smileys_output'));
return $back;
}
public static function testSmiley(WC_Challenge $chall, $smiley, $path)
{
$back = true; # Test passed :S?
# Generate test input :)
$ues = str_replace('\\', '', $smiley);
$ues = Common::regex('#/([^/]+)/#', $ues);
$text = 'Test '.$ues.'. Test '.$ues;
echo GWF_Box::box($text, $chall->lang('test_input'));
# Generate test output :)
if (NULL === ($out = self::replaceSmiley($smiley, $path, $text)))
{
$back = false;
$out = $text;
}
# Output the test :)
echo GWF_Box::box($out, $chall->lang('test_output'));
return $back;
}
public static function imageExists($path)
{
if (0 === preg_match('/^$/', $path, $matches))
{
return false;
}
$path = $matches[1];
return Common::isFile(trim($path, '/'));
}
public static function looksHarmless($path)
{
return 1 === preg_match('/^$/', $path);
}
public static function replaceSmiley($smiley, $path, $text)
{
return preg_replace($smiley, $path, $text);
}
#############################
### Your solution is near ###
#############################
public static function getSolution()
{
if (false === ($solution = GWF_Session::getOrDefault('LIV_SMI_SOL')))
{
return self::genSolution();
}
return $solution;
}
private static function genSolution()
{
$solution = GWF_Random::randomKey(32, GWF_Random::ALPHANUMUPLOW);
GWF_Session::set('LIV_SMI_SOL', $solution);
return $solution;
}
}