$value) { $object->$key = $value; } } return $object; } public static function makeString($glue, $arr, $name) { $result = ''; if (empty($arr)) return $result; foreach($arr as $a) { $result .= $a[$name].$glue; } $result = substr($result, 0, 0-strlen($glue)); return $result; } public static function makeAlias($v) { return preg_replace("/([^a-z0-9]+)/i", "-", strtolower($v)); } public static function pattern2title($pattern) { $macroses = array('%TEMPLATE-ID%', '%CATEGORY%', '%TYPE%', '%DOMAIN%', '%HEADLINE%', '%AUTHOR%', '%PRICE%', '%PAGE-NUMBER%', '%PAGE-NAME%', '%SCRIPT_BEGIN%', '%SCRIPT_END%'); $values = array(defined('TEMPLATE_ID')?TEMPLATE_ID:'', defined('CATEGORY_TITLE')?CATEGORY_TITLE:'', defined('TYPE_TITLE')?TYPE_TITLE:'', defined('DOMAIN')?DOMAIN:'', defined('HEADLINE')?HEADLINE:'', defined('AUTHOR')?AUTHOR:'', defined('PRICE')?PRICE:'', defined('PAGE_NUMBER')?PAGE_NUMBER:'', defined('PAGE_NAME')?PAGE_NAME:'', ''); $title = str_replace($macroses, $values, $pattern); $script1 = strpos($title, ''); if (($script1!==false) and ($script2!==false) and ($script2>$script1)) { $result = substr($title, 0, $script1); $result .= preg_replace('/<[\/]?[p|P]>/', '', substr($title, $script1, $script2-$script1)); $result .= substr($title, $script2); } else { $result = $title; } return $result; } public static function category1pattern2rule($pattern) { $macroses = array('%CATEGORY%'); $values = array('(.*)'); $url = str_replace($macroses, $values, addcslashes($pattern, '.!$^*()?')); return rtrim($url,'/'); } public static function category2pattern2rule($pattern) { $macroses = array('%CATEGORY%', '%PAGE-NUMBER%'); $values = array('(.*)', '(\d+)'); $url = str_replace($macroses, $values, addcslashes($pattern, '.!$^*()?')); return rtrim($url,'/'); } public static function type1pattern2rule($pattern) { $macroses = array('%TYPE%'); $values = array('(.*)'); $url = str_replace($macroses, $values, addcslashes($pattern, '.!$^*()?')); return rtrim($url,'/'); } public static function type2pattern2rule($pattern) { $macroses = array('%TYPE%', '%PAGE-NUMBER%'); $values = array('(.*)', '(\d+)'); $url = str_replace($macroses, $values, addcslashes($pattern, '.!$^*()?')); return rtrim($url,'/'); } public static function preview1pattern2rule($pattern) { $macroses = array('%TEMPLATE-ID%', '%CATEGORY%', '%TYPE%', '%AUTHOR%', '%PRICE%'); $values = array('(\d+)', '.*', '.*', '.*', '\d+'); $url = str_replace($macroses, $values, addcslashes($pattern, '.!$^*()?')); return rtrim($url,'/'); } public static function preview2pattern2rule($pattern) { $macroses = array('%TEMPLATE-ID%', '%CATEGORY%', '%TYPE%', '%AUTHOR%', '%PRICE%', '%PAGE-NAME%'); $values = array('(\d+)', '.*', '.*', '.*', '\d+', '(.*)'); $url = str_replace($macroses, $values, addcslashes($pattern, '.!$^*()?')); return rtrim($url,'/'); } public static function category2url($pattern, $category, $trail=true) { $macroses = array('%CATEGORY%', '%PAGE-NUMBER%'); $values = array($category, 1); return ($trail?"/":"").str_replace($macroses, $values, $pattern); } public static function type2url($pattern, $type, $trail=true) { $macroses = array('%TYPE%', '%PAGE-NUMBER%'); $values = array($type, 1); return ($trail?"/":"").str_replace($macroses, $values, $pattern); } public static function package2url($pattern, $package, $trail=true) { $macroses = array('%PACKAGE%','%PAGE-NUMBER%'); $values = array($package, 1); return ($trail?"/":"").str_replace($macroses, $values, $pattern); } public static function category_pages2url($pattern, $category, $page, $trail=true) { $macroses = array('%CATEGORY%', '%PAGE-NUMBER%'); $values = array($category, $page); return ($trail?"/":"").str_replace($macroses, $values, $pattern); } public static function type_pages2url($pattern, $type, $page, $trail=true) { $macroses = array('%TYPE%', '%PAGE-NUMBER%'); $values = array($type, $page); return ($trail?"/":"").str_replace($macroses, $values, $pattern); } public static function package_pages2url($pattern, $package, $page, $trail=true) { $macroses = array('%PACKAGE%', '%PAGE-NUMBER%'); $values = array($package, $page); return ($trail?"/":"").str_replace($macroses, $values, $pattern); } public static function preview2url($pattern, $arr_params, $trail=true) { $macroses = array('%TEMPLATE-ID%', '%TYPE%', '%AUTHOR%', '%PRICE%'); $values = array($arr_params['template'], $arr_params['type'], $arr_params['author'], $arr_params['price']); return ($trail?"/":"").str_replace($macroses, $values, $pattern); } public static function preview_pages2url($pattern, $arr_params, $trail=true) { $macroses = array('%TEMPLATE-ID%', '%TYPE%', '%AUTHOR%', '%PRICE%', '%PAGE-NAME%'); $values = array($arr_params['template'], $arr_params['type'], $arr_params['author'], $arr_params['price'], $arr_params['page_name']); return ($trail?"/":"").str_replace($macroses, $values, $pattern); } public static function iniToArray($filename) { $data = file($filename); $ini_arr = array(); $section = 'ROOT'; foreach ($data as &$str) { $str = trim($str); if (($str!='') and ($str[0]!='#') and ($str[0]!=';')) { if (strpos($str, '[')===0) { $section = strtoupper(substr($str, 1, strlen($str)-2)); } else { $param = explode('=', $str); $param[1] = isset($param[1]) ? $param[1] : ''; $ini_arr[$section][trim($param[0])] = str_replace(array('\n', '\t'), array("\n", "\t"), trim($param[1])); } } } return $ini_arr; } public static function importToArray($filename) { $data = file_get_contents($filename); $ini = array(); preg_match_all('/\[(.*)\]\s*([^\[]*)/', $data, $file); for($i=0, $c=count($file[0]); $i<$c; $i++) { $ini[$file[1][$i]] = array(); preg_match_all('/\s*([^=]+)\s*=\s*\{([^\}]*)\}/', $file[2][$i], $section); for ($j=0, $n=count($section[0]); $j<$n; $j++) { $ini[$file[1][$i]][$section[1][$j]] = array(); preg_match_all('/\s*([^=]+)\s*=\s*[\'|"](.*)[\'|"]\s*;\s*/U', $section[2][$j], $values); for ($k=0, $m=count($values[0]); $k<$m; $k++) { $ini[$file[1][$i]][$section[1][$j]][$values[1][$k]] = $values[2][$k]; } } } return $ini; } public static function arrayToIni($filename, $ini=array(), $crlf = false) { $f = fopen($filename, 'w'); if (isset($ini['ROOT'])) { foreach ($ini['ROOT'] as $k=>$v) { if (!$crlf) { $v = str_replace(array("\n", "\t"), array('\n', '\t'), $v); } fwrite($f, $k.' = '.$v."\n"); } } foreach ($ini as $section=>$data) { if ($section!='ROOT') { fwrite($f, '['.$section.']'."\n"); if (!$crlf) { $v = str_replace(array("\n", "\t"), array('\n', '\t'), $v); } foreach ($data as $k=>$v) { fwrite($f, $k.'='.$v."\n"); } } } fclose($f); } public function encodeData($data) { if (!preg_match('/^[\x20-\x7E]*$/', $data)) { $data = "'".base64_encode($data)."'"; } elseif (preg_match('/^[\d]+$/', $data)) { $data = "'".$data."'"; } elseif (strlen($data)>0) { $data = "'".$data."'"; } else { $data = "'".$data."'"; } return $data; } public function decodeData($data) { if (preg_match('/(.+)<\/base64>/', $data, $matches)) { $data = mysql_escape_string(base64_decode($matches[1])); } elseif (preg_match('/(.+)<\/string>/', $data, $matches)) { $data = mysql_escape_string($matches[1]); } elseif (preg_match('/(.+)<\/integer>/', $data, $matches)) { $data = intval($matches[1]); } return $data; } public static function echo_db_connection_settings() { $config = file_get_contents(DATADIR.'/config/database.php'); if (preg_match('/([^:]*):\/\/([^:]*):([^\@]*)\@([^\/]*)\/([^"]*)/is', $config, $matches)) { echo '
Host: '.$matches[4].'
Database: '.$matches[5].'
User: '.$matches[2].'
'; } } public static function valid_email($email='') { $valid_rfc = valid::email_rfc($email); $valid_domain = valid::email_domain($email); $valid = (intval($valid_rfc)+intval($valid_domain))==2; return $valid; } public static function isdef($const) { $constants = get_defined_constants(); return isset($constants[$const]); } public static function random($count=8) { $hash = ''; for ($i=0; $i<$count; $i++) { $md5 = md5(rand(1, 10000000)); $hash .= substr($md5, rand(0, strlen($md5)-1), 1); } return $hash; } public static function download($filename) { if(trim($filename) == "") return false; $dir = $_SERVER['DOCUMENT_ROOT'].SITE_DIR.LOCAL_IMAGE_PATH; list($path, $name) = explode('/', $filename); $path = $dir.'/'.$path; if (is_writeable($dir)) { if (!file_exists($path)) { mkdir($path, 0755, true); } } else { return false; } $local_filename = $path.'/'.$name; if (!file_exists($local_filename)) { $img=@file_get_contents(REMOTE_IMAGE_PREFIX.$filename); @file_put_contents($local_filename, $img); } } public static function createRelativePath($from, $path) { $path = str_replace( '/', DIRECTORY_SEPARATOR, $path ); $from = str_replace( '/', DIRECTORY_SEPARATOR, $from ); $path = rtrim( $path, DIRECTORY_SEPARATOR ); $from = rtrim( $from, DIRECTORY_SEPARATOR ); $pieces = explode( DIRECTORY_SEPARATOR, dirname( $path ) ); $against = explode( DIRECTORY_SEPARATOR, $from ); if( $pieces[0] !== $against[0] ) { return $path; } while( count( $pieces ) && count( $against ) && $pieces[0] == $against[0] ) { array_shift( $pieces ); array_shift( $against ); } while( count( $against ) ) { array_unshift( $pieces, '..' ); array_shift( $against ); } array_push( $pieces, basename( $path ) ); return implode( DIRECTORY_SEPARATOR, $pieces ).'/'; } public static function getChatUrl() { return "http://www.templatehelp.com/jchat.php?aff=".AFF."&referer=".Kohana::config('core.site_domain'); } static function getColumnNumber ($i, $cols) { return $i % $cols - 1 < 0 ? $cols - 1 : $i % $cols - 1; } static function invalidInstallationMessage ($message) { if (PHP_SAPI == 'cli') { print "The Ready made shop was not properly installed.\n"; print $message."\n"; } else { Kohana::log ('error', $message); echo << The site is under construction.

The Ready made shop is under construction.

text; } exit; } static function getCurrencyRate () { return Zend_Registry::get ('Environment')->getCurrencyRate (); } static function getLocaleId () { $locale_id = Kohana::config ('core.locale_id'); if ($locale_id) { return $locale_id; } } static function template_price ($value) { return round (self::getCurrencyRate () * $value); } static function real_template_price ($value) { return round ($value / self::getCurrencyRate (), 2); } static function nobr ($string) { return preg_replace ('/\s/', "\xC2\xA0", $string); } static function fullArrayDiff (array $left, array $right) { return array_diff (array_merge ($left, $right), array_intersect ($left, $right)); } }