/**
  * convert imports options
  * compatibility with version 4.0
  */
 public function _fix_options()
 {
     $imports = new PMXI_Import_List();
     $post = new PMXI_Post_Record();
     $templates = new PMXI_Template_List();
     $template = new PMXI_Template_Record();
     $is_migrated = get_option('pmxi_is_migrated');
     $uploads = wp_upload_dir();
     if (empty($is_migrated) or version_compare($is_migrated, PMXI_VERSION) < 0) {
         //PMXI_VERSION
         if (empty($is_migrated)) {
             // plugin version less than 4.0.0
             pmxi_rmdir($uploads['basedir'] . '/wpallimport_history');
             pmxi_rmdir($uploads['basedir'] . '/wpallimport_logs');
             foreach ($imports->setColumns($imports->getTable() . '.*')->getBy(array('id !=' => ''))->convertRecords() as $imp) {
                 $imp->getById($imp->id);
                 if (!$imp->isEmpty() and !empty($imp->template)) {
                     $options = array_merge($imp->options, $imp->template);
                     $this->__ver_4_transition_fix($options);
                     $imp->set(array('options' => $options))->update();
                     if ($imp->type == 'file') {
                         $imp->set(array('path' => $uploads['basedir'] . '/wpallimport/files/' . basename($imp->path)))->update();
                     }
                 }
             }
             foreach ($templates->setColumns($templates->getTable() . '.*')->getBy(array('id !=' => ''))->convertRecords() as $tpl) {
                 $tpl->getById($tpl->id);
                 if (!$tpl->isEmpty() and !empty($tpl->title)) {
                     $opt = empty($tpl->options) ? array() : $tpl->options;
                     $options = array_merge($opt, array('title' => $tpl->title, 'content' => $tpl->content, 'is_keep_linebreaks' => $tpl->is_keep_linebreaks, 'is_leave_html' => $tpl->is_leave_html, 'fix_characters' => $tpl->fix_characters));
                     $this->__ver_4_transition_fix($options);
                     $tpl->set(array('options' => $options))->update();
                 }
             }
             $this->__fix_db_schema();
             // feature to version 4.0.0
         } else {
             // migration fixes for vesions
             switch ($is_migrated) {
                 case '4.0.0-beta1':
                 case '4.0.0-beta2':
                 case '4.0.0 RC1':
                 case '4.0.0':
                 case '4.0.1':
                     $this->__fix_db_schema();
                     // feature to version 4.0.0
                     break;
                 case '4.0.2':
                 case '4.0.3':
                 case '4.0.4':
                     break;
                 default:
                     # code...
                     break;
             }
             foreach ($imports->setColumns($imports->getTable() . '.*')->getBy(array('id !=' => ''))->convertRecords() as $imp) {
                 $imp->getById($imp->id);
                 if (!$imp->isEmpty()) {
                     $options = $imp->options;
                     $this->__ver_4x_transition_fix($options, $is_migrated);
                     $imp->set(array('options' => $options))->update();
                 }
             }
             foreach ($templates->setColumns($templates->getTable() . '.*')->getBy(array('id !=' => ''))->convertRecords() as $tpl) {
                 $tpl->getById($tpl->id);
                 if (!$tpl->isEmpty()) {
                     $options = empty($tpl->options) ? array() : $tpl->options;
                     $this->__ver_4x_transition_fix($options, $is_migrated);
                     $tpl->set(array('options' => $options))->update();
                 }
             }
         }
         update_option('pmxi_is_migrated', PMXI_VERSION);
     }
 }
 function pmxi_clear_directory($path)
 {
     if (($dir = @opendir($path . '/')) !== false or ($dir = @opendir($path)) !== false) {
         while (($file = @readdir($dir)) !== false) {
             $filePath = $path . '/' . $file;
             if (is_dir($filePath) && !in_array($file, array('.', '..'))) {
                 pmxi_rmdir($filePath);
             } elseif (is_file($filePath)) {
                 @unlink($filePath);
             }
         }
     }
 }