Example #1
0
 public function get($param = false)
 {
     if ($this->data === null) {
         $this->data = Database::get_full_row('game', $this->id);
     }
     return $param ? $this->data[$param] : $this->data;
 }
Example #2
0
 public static function get($key = false)
 {
     if (self::$user === null && isset($_COOKIE['user'])) {
         self::$user = Database::get_full_row('user', 'cookie = ?', $_COOKIE['user']);
     }
     return $key ? self::$user[$key] : self::$user;
 }
Example #3
0
 protected function do_add($data)
 {
     if (!isset($data['set']) || !is_array($data['set'])) {
         return array('success' => false);
     }
     if (!empty($data['start'])) {
         $utc = $data['utc'] + 240;
         $start = date('Y-m-d G:i:s', strtotime($data['start']) + $utc * 60);
     } else {
         $start = '';
     }
     $sets = array();
     foreach ($data['set'] as $set) {
         if (preg_match('/[^-\\d\\.a-z]/ui', $set)) {
             continue;
         }
         $set = Database::get_full_row('set', 'id = ?', $set);
         if (empty($set)) {
             continue;
         }
         $sets[] = $set;
         if (!$set['grabbed']) {
             Grabber::get_set($set['id']);
         }
     }
     Database::begin();
     Database::insert('game', array('id_user' => $this->user, 'pick_time' => isset($data['pick_time']) ? $data['pick_time'] : 0, 'pause_time' => isset($data['pause_time']) ? $data['pause_time'] : 0, 'type' => isset($data['type']) ? $data['type'] : 1, 'start' => $start));
     $id_game = Database::last_id();
     $order = 0;
     foreach ($sets as $set) {
         Database::insert('game_set', array('id_game' => $id_game, 'order' => ++$order, 'id_set' => $set['id']));
     }
     Database::commit();
     return array('success' => true);
 }
Example #4
0
 protected function get_data()
 {
     $strip = Database::get_full_row('strip', $this->id);
     if (empty($strip)) {
         return array('error' => true);
     }
     $strip['text'] = Transform_Text::format($strip['text']);
     return array('strip' => $strip, 'images' => Database::join('file', 'sf.id_file = f.id')->order('sf.order', 'asc')->get_full_table('strip_file', 'id_strip = ?', $strip['id']), 'next' => $strip['order'] ? Database::order('order', 'asc')->get_full_row('strip', '`order` > ?', $strip['order']) : false);
 }
Example #5
0
 protected function get_data()
 {
     $strip = Database::get_full_row('strip', $this->id);
     if (empty($strip)) {
         return array('error' => true);
     }
     $strip['date'] = strtotime($strip['date']);
     $strip['date'] = $strip['date'] > 0 ? date('y / m / d', $strip['date']) : '';
     return array('files' => Database::order('time')->get_full_vector('file'), 'strip' => $strip, 'today' => date('y / m / d'), 'images' => Database::join('file', 'sf.id_file = f.id')->order('sf.order', 'asc')->get_full_table('strip_file', 'id_strip = ?', $this->id));
 }
Example #6
0
 protected function do_delete_file($get)
 {
     if (!isset($get['id']) || !is_numeric($get['id'])) {
         return array('success' => false);
     }
     $file = Database::get_full_row('file', $get['id']);
     Database::delete('file', $get['id']);
     Database::delete('strip_file', 'id_file = ?', $get['id']);
     $filename = FILES . SL . $file['md5'] . '.' . $file['ext'];
     chmod($filename, 00);
     return array('success' => true);
 }
Example #7
0
	public function pixlr ($query) {
		$info = Globals::user_info();
		if (empty($info['username'])) {
			$info = Database::get_full_row('user', 0);
		}
		
		$this->user_id = $info['id'];
		$alias = Meta_Author::get_alias_by_name($info['username']);
		
		$image_data = file_get_contents($query['image']);
		
		$this->save($image_data, $alias);		
		
		$this->redirect_address = '/gallery/author/'.$alias.'/';
	}
Example #8
0
 protected function get_data()
 {
     if (!$this->id) {
         return array('error' => true);
     }
     $strip = Database::get_full_row('strip', '`order` = ?', $this->id);
     if (empty($strip)) {
         return array('error' => true);
     }
     $strip['text'] = Transform_Text::format($strip['text']);
     $logs = Database::order('order')->limit(30)->get_vector('strip', array('id', 'order', 'title', 'date'), '`order` > 0');
     foreach ($logs as &$log) {
         $log['date'] = strtotime($log['date']);
         $log['date'] = $log['date'] > 0 ? date('y/m/d', $log['date']) : '';
     }
     return array('page' => $this->id, 'logs' => $logs, 'strip' => $strip, 'images' => Database::join('file', 'sf.id_file = f.id')->order('sf.order', 'asc')->get_full_table('strip_file', 'id_strip = ?', $strip['id']), 'next' => Database::order('order', 'asc')->get_full_row('strip', '`order` > ?', $strip['order']), 'back' => Database::order('order')->get_field('strip', 'order', '`order` < ?', $strip['order']), 'autosave' => isset($_COOKIE['autosave']) ? (int) $_COOKIE['autosave'] : 0);
 }
Example #9
0
	function edit_personal_menu () {
		$id = (int) query::$get['id'];

		$return = Database::get_full_row('head_menu_user', $id);

		if (!empty($return)) {
			$return['count'] = Database::get_count('head_menu_user',
				'cookie = ?',
				query::$cookie
			);

			if ($return['url']{0} == '/') {
				$return['url'] = 'http://'.def::site('domain').$return['url'];
			}
		}

		return $return;
	}
Example #10
0
 public function load()
 {
     if ($this->is_loaded() || $this->is_phantom()) {
         return $this;
     }
     list($condition, $params) = $this->build_condition();
     if (!empty($condition)) {
         $data = Database::get_full_row($this->table, $condition, $params);
         if (is_array($data)) {
             $this->set_array($data);
             $this->unchanged_data = $data;
         } else {
             $this->set_phantom();
         }
         $this->set_loaded();
     }
     return $this;
 }
Example #11
0
	public function description ($query) {
		
		$params = array();
		
		if (isset($query['meta']) && $query['meta'] == 'author' && isset($query['alias'])) {
			$params['type'] = 'author';
			$params['id'] = $query['alias'];
		} elseif (isset($query['id'])) {
			$params['type'] = 'art';
			$params['id'] = $query['id'];			
		} else {
			return;
		}
		
		$text = Database::get_row(
			'description', 
			array('text', 'pretty_text'),
			'type = ? and description_id = ?', 
			$params
		);
		
		if (!empty($text)) {
			$params = array_merge($params, $text);
		}
		
		if ($params['type'] == 'author') {
			$user = Meta_Author::get_data_by_alias((array) $params['id']);
			$user = current($user);
			$params['username'] = $user['name'];
		} else {
			$params['data'] = Database::get_full_row('art', $query['id']);
			$params['username'] = Database::get_field('user', 'username', $params['data']['user_id']);
			$params['alias'] = Meta_Author::get_alias_by_name($params['username']);
			$params['data']['weight'] = Transform_File::weight($params['data']['weight']);
			$params['data']['date'] = Transform_String::rudate(Database::date_to_unix($params['data']['date']));
		}
		
		$params['can_edit'] = ($params['username'] == Globals::user_info('username'));
		
		return $params;
	}
Example #12
0
	protected function edit_painter_theme($id = false) {
		
		if (empty($id)) {
			$this->items = Database::get_vector(
				'painter_themes',
				array('id', 'name'),
				'1 order by id'
			);
			
			$this->flags['mode'] = 'list';
		} else {
			$fields = Database::get_full_row('painter_themes', $id);
			unset($fields['id'], $fields['disabled']);

			$this->items = $fields;		
		
			
			$this->flags['mode'] = 'edit';
			$this->flags['id'] = $id;
		}
	}
Example #13
0
<?

	include '../inc.common.php';

	$params = array('pack_status', query::$get['id']);
	$status = Database::get_full_row('misc', 'type = ? and data2 = ?', $params);

	switch ($status['data1']) {
		case 'starting':
			echo "Ожидается очередь на распаковку.";
			break;
		case 'error':
			echo "Злые хорьки сгрызли ваш архив.";
			break;
		case 'unpacking':
			echo "Распаковывается.";
			break;
		case 'unpacked':
			echo "Поиск картинок в распакованном.";
			break;
		case 'processing':
			echo "Обрабатываюся картинки. $status[data3]/$status[data4]";
			break;
		case 'done':
			echo "Готово.";
			break;
		default:
			echo "Произошла неведомая фигня.";
			break;
	}
Example #14
0
Cache::$base_prefix = Config::get('cache', 'prefix');
function clear_dir($dir)
{
    if (!file_exists($dir)) {
        return;
    }
    foreach (glob($dir . '/*') as $file) {
        unlink($file);
    }
}
$file = array_shift($argv);
$set = array_shift($argv);
if (empty($set)) {
    die('Set needed' . "\n");
}
$set = Database::get_full_row('set', 'id = ?', $set);
if (empty($set)) {
    die('Incorrect set' . "\n");
}
if (!$set['grabbed']) {
    Grabber::get_set($set['id']);
}
$folder = IMAGES . SL . 'import';
if (!file_exists($folder . SL . $set['id']) || !is_dir($folder . SL . $set['id'])) {
    die('No import folder' . "\n");
}
$cards = Database::join('set_card', 'sc.id_card = c.id')->get_table('card', 'image', 'sc.id_set = ?', $set['id']);
$images = glob($folder . SL . $set['id'] . SL . '*.jpg');
$import = array();
foreach ($images as $image) {
    $compare = str_replace($folder, '', $image);
Example #15
0
                $type = 1;
                break;
            case 'кб':
                $type = 0;
                break;
            default:
                $type = 0;
                break;
        }
        Database::insert('post_update_link', array('update_id' => $id, 'name' => $link['name'], 'size' => str_replace(',', '.', $link['size']), 'sizetype' => $type, 'order' => $i));
        $link_id = Database::last_id();
        $i++;
        $j = 0;
        foreach ($link['url'] as $key => $url) {
            $alias = $link['alias'][$key];
            $exists = Database::get_full_row('post_url', 'url = ?', $url);
            if ($exists) {
                $url_id = $exists['id'];
            } else {
                Database::insert('post_url', array('url' => $url));
                $url_id = Database::last_id();
            }
            if ($url_id == 0) {
                var_dump($update);
                var_dump($link);
            }
            Database::insert('post_update_link_url', array('link_id' => $link_id, 'url_id' => $url_id, 'alias' => $alias, 'order' => $j));
            $j++;
        }
    }
}
Example #16
0
	public function merge_tag() {

		if (
			empty(query::$get['master']) || !is_numeric(query::$get['master']) ||
			empty(query::$get['slave']) || !is_numeric(query::$get['slave'])
		) {
			return;
		}

		if (query::$get['master'] != query::$get['slave']) {
			$master = Database::get_full_row('tag', query::$get['master']);
			$slave = Database::get_full_row('tag', query::$get['slave']);

			$old_count = $master['post_main'] +
				$master['post_flea_market'] +
				$master['video_main'] +
				$master['video_flea_market'] +
				$master['art_main'] +
				$master['art_flea_market'];

			$params = array(
				'%|'.$master['alias'].'|%',
				'|'.$slave['alias'].'|',
				'|'.$slave['alias'].'|',
				'|'.$master['alias'].'|',
			);

			Database::sql('update post set tag = if (tag like ?,
				replace(tag, ?, "|"), replace(tag, ?, ?))', $params);
			Database::sql('update video set tag = if (tag like ?,
				replace(tag, ?, "|"), replace(tag, ?, ?))', $params);
			Database::sql('update art set tag = if (tag like ?,
				replace(tag, ?, "|"), replace(tag, ?, ?))', $params);

			$variants = explode('|', $master['variants'].$slave['variants']);
			if ($slave['name'] != $master['name']) {
				$variants[] = $slave['name'];
			}

			$params_main = array('|'.$master['alias'].'|', 'main');
			$params_flea = array('|'.$master['alias'].'|', 'flea_market');

			$update = array(
				'post_main' => Database::get_count('post', 'locate(?, tag) and area = ?', $params_main),
				'post_flea_market' => Database::get_count('post', 'locate(?, tag) and area = ?', $params_flea),
				'video_main' => Database::get_count('video', 'locate(?, tag) and area = ?', $params_main),
				'video_flea_market' => Database::get_count('video', 'locate(?, tag) and area = ?', $params_flea),
				'art_main' => Database::get_count('art', 'locate(?, tag) and area = ?', $params_main),
				'art_flea_market' => Database::get_count('art', 'locate(?, tag) and area = ?', $params_flea),
				'variants' => '|'.implode('|',array_unique(array_filter($variants))).'|',
				'color' => empty($master['color']) ? $slave['color'] : $master['color']
			);

			Database::update('tag', $update, query::$get['master']);
			Database::delete('tag', query::$get['slave']);

			$add_count = array_sum(array_slice($update,0,6)) - $old_count;

			engine::add_res("Тег {$slave['name']} успешно влит в {$master['name']}. ".
				"Счет {$master['name']} подрос на $add_count нахождений.", false, true);
		}
	}
Example #17
0
    function get_data()
    {
        if ($this->template != 'slideshow') {
            global $url;
            global $error;
            global $sets;
            global $def;
            if (is_numeric($url[2])) {
                $return['display'] = array('booru_single', 'comments');
                $return['art'] = $this->get_art(1, 'id=' . $url[2] . ' and area != "deleted"');
                $url['area'] = $return['art'][0]['area'];
                $return['comments'] = $this->get_comments($url[1], $url[2], is_numeric($url[5]) ? $url[5] : ($url[4] == 'all' ? false : 1));
                $return['navi']['curr'] = $url[4] == 'all' ? 'all' : max(1, $url[5]);
                $return['navi']['all'] = true;
                $return['navi']['name'] = "Страница комментариев";
                $return['navi']['meta'] = $url[2] . '/comments/';
                $return['navi']['start'] = max($return['navi']['curr'] - 5, 2);
                $return['navi']['last'] = ceil($return['comments']['number'] / $sets['pp']['comment_in_post']);
                $this->side_modules['top'] = array();
                $return['art'][0]['rating'] = $this->get_rating($url[2]);
                $return['art'][0]['packs'] = $this->get_packs($url[2]);
                $return['art'][0]['pool'] = $this->get_pools($url[2]);
            } elseif ($url[2] != 'pool' && $url[2] != 'cg_packs' && $url[2] != 'download') {
                $return['display'] = array('booru_page', 'navi');
                if ($url[2] == 'page' || !$url[2]) {
                    $area = 'area = "' . $url['area'] . '"';
                    $return['navi']['curr'] = max(1, $url[3]);
                    if ($sets['art']['sort'] == 'tag-desc') {
                        $return['art']['thumbs'] = $this->get_art(($return['navi']['curr'] - 1) * $sets['pp']['art'] . ', ' . $sets['pp']['art'], $area, 'order by (length(tag) - length(replace(tag,\'|\',\'\'))) desc');
                    } elseif ($sets['art']['sort'] == 'tag-asc') {
                        $return['art']['thumbs'] = $this->get_art(($return['navi']['curr'] - 1) * $sets['pp']['art'] . ', ' . $sets['pp']['art'], $area, 'order by (length(tag) - length(replace(tag,\'|\',\'\')))');
                    } else {
                        $return['art']['thumbs'] = $this->get_art(($return['navi']['curr'] - 1) * $sets['pp']['art'] . ', ' . $sets['pp']['art'], $area);
                    }
                } elseif ($url[2] == 'date') {
                    $parts = explode('-', $url[3]);
                    if (is_numeric($parts[0] . $parts[1] . $parts[2]) && count($parts) == 3) {
                        $area = 'area = "' . $url['area'] . '" and pretty_date ="' . Transform_Time::ru_month($parts[1]) . ' ' . $parts[2] . ', ' . $parts[0] . '"';
                        $return['navi']['curr'] = max(1, $url[5]);
                        $return['art']['thumbs'] = $this->get_art(($return['navi']['curr'] - 1) * $sets['pp']['art'] . ', ' . $sets['pp']['art'], $area);
                        $return['navi']['meta'] = $url[2] . '/' . $url[3] . '/';
                    } else {
                        $error = true;
                    }
                } elseif ($url[2] != 'mixed') {
                    $this->mixed_parse($url[2] . '=' . $url[3]);
                    $area = 'area = "' . $url['area'] . '" and locate("|' . ($url['tag'] ? $url['tag'] : mysql_real_escape_string($url[3])) . '|",art.' . $url[2] . ')';
                    $return['navi']['curr'] = max(1, $url[5]);
                    $return['art']['thumbs'] = $this->get_art(($return['navi']['curr'] - 1) * $sets['pp']['art'] . ', ' . $sets['pp']['art'], $area);
                    $return['navi']['meta'] = $url[2] . '/' . $url[3] . '/';
                    $return['rss'] = $this->make_rss($url[1], $url[2], $url[3]);
                } else {
                    $area = $this->mixed_make_sql($this->mixed_parse($url[3]));
                    $return['navi']['curr'] = max(1, $url[5]);
                    $return['art']['thumbs'] = $this->get_art(($return['navi']['curr'] - 1) * $sets['pp']['art'] . ', ' . $sets['pp']['art'], $area);
                    $return['navi']['meta'] = $url[2] . '/' . $url[3] . '/';
                }
                $return['navi']['start'] = max($return['navi']['curr'] - 5, 2);
                $return['navi']['last'] = ceil(obj::db()->sql('select count(id) from art where (' . $area . ')', 2) / $sets['pp']['art']);
            } else {
                if ($url[2] == 'pool') {
                    if (is_numeric($url[3])) {
                        if ($url[4] != 'sort') {
                            $return['display'] = array('booru_poolsingle', 'booru_page', 'navi');
                        } else {
                            $return['display'] = array('booru_poolsingle', 'booru_page');
                        }
                        $return['pool'] = Database::get_full_row('art_pool', $url[3]);
                        $query = Database::set_counter()->order('order', 'asc');
                        if ($url[4] != 'sort') {
                            $return['navi']['curr'] = max(1, $url[5]);
                            $return['navi']['meta'] = $url[2] . '/' . $url[3] . '/';
                            $return['navi']['start'] = max($return['navi']['curr'] - 5, 2);
                            $query->limit(sets::pp('art'), ($return['navi']['curr'] - 1) * sets::pp('art'));
                        }
                        $pool = $query->get_vector('art_in_pool', 'art_id', 'pool_id = ?', $url[3]);
                        $return['pool']['count'] = Database::get_counter();
                        if ($url[4] != 'sort') {
                            $return['navi']['last'] = ceil($return['pool']['count'] / $sets['pp']['art']);
                        }
                        $where = 'id=' . implode(' or id=', $pool);
                        $pool = array_flip($pool);
                        if ($art = $this->get_art(false, $where, '')) {
                            foreach ($art as $one) {
                                $return['art']['thumbs'][$pool[$one['id']]] = $one;
                            }
                            ksort($return['art']['thumbs']);
                        }
                        $return['rss'] = $this->make_rss($url[1], $url[2], $url[3]);
                    } else {
                        $return['display'] = array('booru_poolpage', 'navi');
                        $return['navi']['curr'] = max(1, $url[4]);
                        $return['navi']['meta'] = $url[2] . '/';
                        $return['navi']['start'] = max($return['navi']['curr'] - 5, 2);
                        $return['navi']['last'] = ceil(obj::db()->sql('select count(id) from art_pool', 2) / $sets['pp']['art_pool']);
                        $return['pools'] = obj::db()->sql('
							select p.id as id, p.name as name, count(*) as count
							from art_pool as p left join art_in_pool as a on p.id = a.pool_id
							group by p.id order by p.sortdate desc
							limit ' . ($return['navi']['curr'] - 1) * $sets['pp']['art_pool'] . ', ' . $sets['pp']['art_pool'], 'id');
                    }
                } elseif ($url[2] == 'cg_packs') {
                    $this->side_modules['top'] = array();
                    if (is_numeric($url[3])) {
                        $return['display'] = array('booru_pack_single', 'booru_page', 'navi');
                        $return['navi']['curr'] = max(1, $url[5]);
                        $return['navi']['meta'] = $url[2] . '/' . $url[3] . '/';
                        $return['navi']['start'] = max($return['navi']['curr'] - 5, 2);
                        $return['navi']['last'] = ceil(obj::db()->sql('select count(*) from art_in_pack where pack_id=' . $url[3], 2) / $sets['pp']['art']);
                        $return['pool'] = obj::db()->sql('select * from art_pack where id=' . $url[3], 1);
                        $return['art']['thumbs'] = $this->get_art(($return['navi']['curr'] - 1) * $sets['pp']['art'] . ', ' . $sets['pp']['art'], 'p.pack_id=' . $url[3], 'order by p.`order`', 'as a left join art_in_pack as p on a.id = p.art_id');
                    } else {
                        $return['display'] = array('booru_pack_list', 'navi');
                        $return['navi']['curr'] = max(1, $url[4]);
                        $return['navi']['meta'] = $url[2] . '/';
                        $return['navi']['start'] = max($return['navi']['curr'] - 5, 2);
                        $return['navi']['last'] = ceil(obj::db()->sql('select count(*) from art_pack where cover != ""', 2) / $sets['pp']['art_cg_pool']);
                        $return['pools'] = obj::db()->sql('select * from art_pack where cover != "" order by `date` desc limit ' . ($return['navi']['curr'] - 1) * $sets['pp']['art_cg_pool'] . ', ' . $sets['pp']['art_cg_pool'], 'id');
                    }
                } else {
                    if ($url[3] == 'pack') {
                        if (empty($url[4]) || !is_numeric($url[4])) {
                            $error = true;
                        } else {
                            if (empty($url[5]) || !is_numeric($url[5])) {
                                $pack = obj::db()->sql("select title, weight from art_pack where id = {$url['4']}", 1);
                                if ($pack['weight'] == 0) {
                                    $error = true;
                                } else {
                                    $this->template = 'download';
                                    $this->side_modules = array();
                                    $name = str_replace(array(' ', ';'), '_', $pack['title']);
                                    $file = ROOT_DIR . SL . 'files' . SL . 'pack_cache' . SL . 'pack_' . $url[4] . '.zip';
                                    return array('file' => $file, 'name' => $name . '.zip');
                                }
                            } else {
                                $this->template = 'download';
                                $this->side_modules = array();
                                $art = obj::db()->sql("\n\t\t\t\t\t\t\t\t\tselect a.md5, a.extension, p.filename\n\t\t\t\t\t\t\t\t\tfrom art as a left join art_in_pack as p on a.id = p.art_id\n\t\t\t\t\t\t\t\t\twhere a.id = {$url['5']} and p.pack_id = {$url['4']}", 1);
                                $file = ROOT_DIR . SL . 'images' . SL . 'booru' . SL . 'full' . SL . $art['md5'] . '.' . $art['extension'];
                                if (pathinfo($file, PATHINFO_EXTENSION) == 'jpg') {
                                    $type = 'jpeg';
                                } else {
                                    $type = pathinfo($file, PATHINFO_EXTENSION);
                                }
                                return array('file' => $file, 'name' => $art['filename'], 'type' => $type);
                            }
                        }
                    } else {
                        $this->template = 'download';
                        $this->side_modules = array();
                        if (pathinfo($url[3], PATHINFO_EXTENSION) == 'jpg') {
                            $type = 'jpeg';
                        } else {
                            $type = pathinfo($url[3], PATHINFO_EXTENSION);
                        }
                        return array('file' => ROOT_DIR . SL . 'images' . SL . 'booru' . SL . 'full' . SL . $url[3], 'name' => $url[3], 'type' => $type);
                    }
                }
            }
            $return['navi']['base'] = '/art' . ($url['area'] != $def['area'][0] ? '/' . $url['area'] : '') . '/';
            return $return;
        }
    }
Example #18
0
	public function art_variation_list () {
		if (!Check::num(query::$get['id']) || query::$get['type'] != 'art') {
			return false();
		}

		$return = (array) Database::order('order', 'ASC')
			->get_full_table('art_variation', 'art_id = ?', query::$get['id']);

		$image = Database::get_full_row('art', query::$get['id']);

		array_unshift($return, $image);

		return $return;
	}
Example #19
0
            }
            $filename = $entry;
            $entry = $directory . $entry;
            if (is_dir($entry)) {
                $this->parse_dir($entry . SL);
            } elseif (in_array(mime_content_type($entry), self::$imagetypes)) {
                $this->count++;
                $sort = str_repeat("0", 5 - strlen($this->count)) . $this->count;
                $insert[] = array('pack_art', $this->id, $entry, $sort, $filename, 0);
            }
        }
        $handle->close();
        Database::bulk_insert('misc', $insert);
    }
}
$status = Database::get_full_row('misc', 'type = ? and data1 != ? and data1 != ?', array('pack_status', 'done', 'error'));
if (!empty($status)) {
    $worker = new Process_Pack($status['data2']);
    switch ($status['data1']) {
        case 'starting':
        case 'unpacking':
            $worker->unpack();
            break;
        case 'unpacked':
            $worker->get_images();
            break;
        case 'processing':
            $worker->parse_images();
            break;
        default:
            break;