コード例 #1
0
ファイル: Factory.php プロジェクト: bozhich/PHP-on-Rails
 /**
  * @param bool $return
  * @return array
  */
 public static function check($return = false)
 {
     $must_migrate = false;
     $return_data = array();
     foreach (Core_Files::listFiles(cfg()->migration_path) as $migration_file) {
         if (strstr($migration_file, self::TEMPLATE_NAME)) {
             continue;
         }
         $migration_data = explode(DS, $migration_file);
         list($migration_file_name) = array_reverse($migration_data);
         list($migration_name, $extension) = explode('.', $migration_file_name);
         $migration_class_name = self::MIGRATION_PREFIX . $migration_name . self::MIGRATION_SUFIX;
         /* @var $migration_object Core_Migration_Abstract */
         $migration_object = new $migration_class_name();
         if ($migration_object->check()) {
             $must_migrate = true;
             if ($return) {
                 $return_data[] = $migration_file_name;
             } else {
                 echo 'TO RUN: ' . $migration_file_name . PHP_EOL;
             }
         }
     }
     if (!$must_migrate) {
         if (!$return) {
             echo 'DB is UP TO DATE' . PHP_EOL;
         }
     }
     if ($return) {
         return $return_data;
     }
 }
コード例 #2
0
ファイル: Index.php プロジェクト: bozhich/PHP-on-Rails
 /**
  *
  */
 public function indexAction()
 {
     $argv = $this->getRequest()->getServer('argv');
     $test_to_run = isset($argv[3]) ? $argv[3] : Const_Tests::RUN_ALL_TESTS;
     $test_to_run = str_replace('_', '/', $test_to_run);
     foreach (Core_Files::listFiles(cfg()->tests_path) as $test) {
         if (!strstr($test, $test_to_run . '.php') && $test_to_run != Const_Tests::RUN_ALL_TESTS) {
             continue;
         }
         $class_path = str_replace(cfg()->tests_path, '', $test);
         $class_path_frag = explode('/', $class_path);
         $class_path_frag = array_map("ucfirst", $class_path_frag);
         $class_path_frag[count($class_path_frag) - 1] = str_replace('.php', '', $class_path_frag[count($class_path_frag) - 1]);
         $class = implode('_', $class_path_frag);
         $class_name = 'Tests_' . $class . 'File';
         echo '--------------------------------------' . PHP_EOL;
         echo 'Running test: ' . $class_name . PHP_EOL;
         echo '--------------------------------------' . PHP_EOL;
         $phpunit = new PHPUnit_TextUI_TestRunner();
         $phpunit->run($phpunit->getTest($class_name, $test), array('colors' => 'auto'));
         if ($test_to_run != Const_Tests::RUN_ALL_TESTS) {
             die;
         }
         echo PHP_EOL . PHP_EOL;
     }
     die;
 }
コード例 #3
0
ファイル: Dump.php プロジェクト: bozhich/PHP-on-Rails
 /**
  *
  */
 public function indexAction()
 {
     die('todo');
     $overwrite = !is_null(Core_Request::getInstance()->getArgv(4)) ? Core_Request::getInstance()->getArgv(4) : false;
     foreach (dibi::getDatabaseInfo()->getTables() as $table_data) {
         if ($table_data->getName() == Migration_MigrationModel::getTableName()) {
             continue;
         }
         $ddl_data = dibi::query('SHOW CREATE TABLE ' . $table_data->getName())->fetch()->toArray();
         $ddl_query = $ddl_data['Create Table'];
         $migration_time = time();
         $migration_name = 'Create' . ucfirst($table_data->getName());
         $migration_name = str_replace(' ', '', $migration_name);
         $migration_name = str_replace('-', '', $migration_name);
         $migration_name = str_replace('_', '', $migration_name);
         $filename = cfg()->migration_path . $migration_name . '.php';
         if (Core_Files::fileSize($filename) && !$overwrite) {
             echo PHP_EOL . 'Migration "Create ' . ucfirst($table_data->getName()) . '" Exists' . PHP_EOL;
             continue;
         }
         $template_data = Core_Files::getContent(cfg()->migration_path . Migration_FilesHelper::TEMPLATE_FILE_NAME);
         $template_data = str_replace('Template', $migration_name, $template_data);
         $template_data = str_replace('__NAME__', $migration_name, $template_data);
         $template_data = str_replace('__CREATED_AT__', $migration_time, $template_data);
         $template_data = str_replace('__CREATED_CFG__', Core_Request::getInstance()->getArgv(1), $template_data);
         $template_data = preg_replace('#//__UP_ACTION__#', $ddl_query, $template_data);
         $down_query = 'DROP TABLE IF EXISTS `' . $table_data->getName() . '`';
         $template_data = preg_replace('#//__DOWN_ACTION__#', $down_query, $template_data);
         Core_Files::putContent($filename, $template_data);
         echo PHP_EOL . 'Migration ' . $filename . ' created' . PHP_EOL;
     }
 }
コード例 #4
0
ファイル: Server.php プロジェクト: bozhich/PHP-on-Rails
 /**
  * @return array|bool|string
  */
 public static function getLoad()
 {
     if (!Core_Cache::get('server_load')) {
         if (is_file(self::LOAD_FILE)) {
             $file_source = (double) Core_Files::getContent(self::LOAD_FILE);
             list($server_load) = explode(' ', $file_source);
             Core_Cache::set('server_load', $server_load, 60);
         }
     }
     return Core_Cache::get('server_load');
 }
コード例 #5
0
ファイル: Create.php プロジェクト: bozhich/PHP-on-Rails
 /**
  * @throws Exception
  */
 public function indexAction()
 {
     $migration_time = time();
     $migration_name = time();
     if (!$migration_name) {
         throw new Exception('No migration name given');
     }
     $filename = cfg()->migration_path . $migration_name . '.php';
     if (Core_Files::fileSize($filename)) {
         throw new Exception('Migration with that name exists');
     }
     $template_data = Core_Files::getContent(cfg()->migration_path . Const_Migrations::TEMPLATE_FILE_NAME);
     $template_data = str_replace('Template', $migration_name, $template_data);
     $template_data = str_replace('__NAME__', $migration_name, $template_data);
     $template_data = str_replace('__CREATED_AT__', $migration_time, $template_data);
     $template_data = str_replace('__CREATED_CFG__', Core_Request::getInstance()->getArgv(1), $template_data);
     Core_Files::putContent($filename, $template_data);
     echo PHP_EOL . 'Migration ' . $filename . ' created' . PHP_EOL . PHP_EOL;
 }
コード例 #6
0
ファイル: Translate.php プロジェクト: bozhich/PHP-on-Rails
 protected function getFilesTags($dir)
 {
     $files = Core_Files::listFiles($dir, true);
     foreach ($files as $file) {
         $extension = Core_Files::getExtension($file);
         if (in_array($extension, array('phtml', 'php'))) {
             $content = Core_Files::getContent($file);
             if (empty($content)) {
                 continue;
             }
             preg_match_all('/__(\\(\'|\\("|\\()(.*?)(\'\\)|\\"\\)|\\)\'|\\)"|",|\',)/', $content, $matches);
             if ($matches[2]) {
                 foreach ($matches[2] as $tag) {
                     if (substr($tag, 0, 1) == '$') {
                         continue;
                     }
                     $this->tags[] = array('tag' => strtolower($tag), 'location' => $file);
                 }
             }
         }
     }
 }
コード例 #7
0
ファイル: Packer.php プロジェクト: bozhich/PHP-on-Rails
 /**
  * @param       $hash_id
  * @param array $files
  * @return null|string
  */
 public static function css($hash_id, array $files)
 {
     if (empty($files)) {
         return false;
     }
     $cache_name = '';
     foreach ($files as &$file) {
         $file = cfg()->static_path . 'css' . DS . $file;
         $cache_name .= Core_Files::fileSize($file);
     }
     unset($file);
     $f_name = md5($hash_id . $cache_name) . '.css';
     $f_path = cfg()->cache_path . 'css' . DS . $f_name;
     $f_public = cfg()->cache_address . 'css/' . $f_name;
     if (!is_file($f_path)) {
         // lets empty the directory
         $cache_files = Core_Files::listFiles(cfg()->cache_path . 'css' . DS);
         foreach ($cache_files as $cfile) {
             Core_Files::delete($cfile, true);
         }
         $css_content = '';
         foreach ($files as $file) {
             $content = Core_Files::getContent($file);
             $css_content .= $content;
         }
         $css_content = preg_replace('!/\\*[^*]*\\*+([^/][^*]*\\*+)*/!', '', $css_content);
         // Remove space after colons
         $css_content = str_replace(': ', ':', $css_content);
         // Remove whitespace
         $css_content = str_replace(array("\r\n", "\r", "\n", "\t", '  ', '    ', '    '), '', $css_content);
         // now save the file
         Core_Files::putContent($f_path, $css_content);
     }
     return '<link type="text/css" rel="stylesheet" href="' . $f_public . '"/>';
 }
コード例 #8
0
ファイル: Ftp.php プロジェクト: themexpand/xpand-buddy
 /**
  * копируем папку со всем содержимым
  * $this->setPathFrom( 'local/path' )->setPathTo( 'path/on/ftp' )->dirUpload();
  * если _pathTo не установили то используем _root, если она тоже не установлена то процесс прерывается
  *
  * @param array $_arrSource - если массив пуст то система берёт файлы и папки из _pathFrom
  * @return boolean
  */
 public function dirUpload($_arrSource = array())
 {
     $_strDirTo = empty($this->_pathTo) ? $this->_root : $this->_pathTo;
     if (empty($_strDirTo)) {
         return false;
     }
     if (empty($_arrSource)) {
         if (!Core_Files::dirScan($_arrSource, $this->_pathFrom)) {
             return false;
         }
     }
     if (empty($this->_pathFrom)) {
         // если есть $_arrSource, $this->_pathFrom указывать необязательно TODO!!!15.04.2010
         return false;
     }
     $_int = strlen($this->_pathFrom);
     foreach ($_arrSource as $_strDir => $_arrFiles) {
         $_strDest = str_replace(array('\\', '//'), '/', $_strDirTo . substr($_strDir, $_int));
         if (!$this->changeOrMakeDir($_strDest)) {
             return false;
         }
         if (empty($_arrFiles)) {
             continue;
         }
         // теперь заливаем файлы в диру
         foreach ($_arrFiles as $v) {
             if (!$this->fileUpload($_strDest . '/' . $v, $_strDir . '/' . $v)) {
                 return false;
             }
         }
     }
     $this->_pathFrom = $this->_pathTo = '';
     return true;
 }