/** * Rebuild thumbnails for attachments */ function acp_rebuild_attachment_thumbnails() { global $db, $mybb, $lang; $query = $db->simple_select("attachments", "COUNT(aid) as num_attachments"); $num_attachments = $db->fetch_field($query, 'num_attachments'); $page = $mybb->get_input('page', MyBB::INPUT_INT); $per_page = $mybb->get_input('attachmentthumbs', MyBB::INPUT_INT); if ($per_page <= 0) { $per_page = 20; } $start = ($page - 1) * $per_page; $end = $start + $per_page; require_once MYBB_ROOT . "inc/functions_image.php"; $query = $db->simple_select("attachments", "*", '', array('order_by' => 'aid', 'order_dir' => 'asc', 'limit_start' => $start, 'limit' => $per_page)); while ($attachment = $db->fetch_array($query)) { $ext = my_strtolower(my_substr(strrchr($attachment['filename'], "."), 1)); if ($ext == "gif" || $ext == "png" || $ext == "jpg" || $ext == "jpeg" || $ext == "jpe") { $thumbname = str_replace(".attach", "_thumb.{$ext}", $attachment['attachname']); $thumbnail = generate_thumbnail(MYBB_ROOT . "uploads/" . $attachment['attachname'], MYBB_ROOT . "uploads/", $thumbname, $mybb->settings['attachthumbh'], $mybb->settings['attachthumbw']); if ($thumbnail['code'] == 4) { $thumbnail['filename'] = "SMALL"; } $db->update_query("attachments", array("thumbnail" => $thumbnail['filename']), "aid='{$attachment['aid']}'"); } } check_proceed($num_attachments, $end, ++$page, $per_page, "attachmentthumbs", "do_rebuildattachmentthumbs", $lang->success_rebuilt_attachment_thumbnails); }
function xthreads_admin_rebuildthumbs() { global $mybb, $db; if ($mybb->request_method == 'post') { if (isset($mybb->input['do_rebuildxtathumbs'])) { $page = (int) $mybb->input['page']; if ($page < 1) { $page = 1; } $perpage = (int) $mybb->input['xtathumbs']; if (!$perpage) { $perpage = 500; } global $lang; if (!$lang->xthreads_rebuildxtathumbs_nofields) { $lang->load('xthreads'); } $thumbfields = xthreads_admin_getthumbfields(); if (empty($thumbfields)) { flash_message($lang->xthreads_rebuildxtathumbs_nofields, 'error'); admin_redirect(xthreads_admin_url('tools', 'recount_rebuild')); return; } $where = 'field IN ("' . implode('","', array_keys($thumbfields)) . '")'; // AND tid!=0 $num_xta = $db->fetch_field($db->simple_select('xtattachments', 'count(*) as n', $where), 'n'); @set_time_limit(1800); require_once MYBB_ROOT . 'inc/xthreads/xt_upload.php'; require_once MYBB_ROOT . 'inc/xthreads/xt_updatehooks.php'; include_once MYBB_ROOT . 'cache/xthreads_evalcache.php'; // for thumbnail code $xtadir = $mybb->settings['uploadspath'] . '/xthreads_ul/'; if ($xtadir[0] != '/') { $xtadir = '../' . $xtadir; } // TODO: perhaps check for absolute Windows paths as well? but then, who uses Windows on a production server? :> $query = $db->simple_select('xtattachments', '*', $where, array('order_by' => 'aid', 'limit' => $perpage, 'limit_start' => ($page - 1) * $perpage)); while ($xta = $db->fetch_array($query)) { // remove thumbs, then rebuild $name = xthreads_get_attach_path($xta); // unfortunately, we still need $xtadir if ($thumbs = @glob(substr($name, 0, -6) . '*.thumb')) { foreach ($thumbs as &$thumb) { @unlink($xtadir . $xta['indir'] . basename($thumb)); } } $thumb = xthreads_build_thumbnail($thumbfields[$xta['field']], $xta['aid'], $xta['field'], $name, $xtadir, $xta['indir']); // TODO: perhaps check for errors? but then, what to do? } $db->free_result($query); ++$page; check_proceed($num_xta, $page * $perpage, $page, $perpage, 'xtathumbs', 'do_rebuildxtathumbs', $lang->xthreads_rebuildxtathumbs_done); } } else { $GLOBALS['plugins']->add_hook('admin_formcontainer_end', 'xthreads_admin_rebuildthumbs_show'); } }
function acp_tyl_recount() { global $db, $mybb, $lang, $prefix; $page = $mybb->get_input('page', MyBB::INPUT_INT); $per_page = $mybb->get_input('tyls', MyBB::INPUT_INT); if ($per_page <= 0) { $per_page = 500; } $start = ($page - 1) * $per_page; $end = $start + $per_page; // On the first run, reset all totals and remove any orphaned tyls // Orphaned tyls are those with no linked posts or users if ($page == 1) { $db->write_query("UPDATE " . TABLE_PREFIX . $prefix . "stats SET value=0 WHERE title='total'"); $db->write_query("UPDATE " . TABLE_PREFIX . "posts SET tyl_pnumtyls=0"); $db->write_query("UPDATE " . TABLE_PREFIX . "threads SET tyl_tnumtyls=0"); $db->write_query("UPDATE " . TABLE_PREFIX . "users SET tyl_unumtyls=0, tyl_unumptyls=0, tyl_unumrcvtyls=0"); $query = $db->query("\n\t\t\t\tSELECT tyl.tlid\n\t\t\t\tFROM " . TABLE_PREFIX . $prefix . "thankyoulike tyl\n\t\t\t\tLEFT JOIN " . TABLE_PREFIX . "posts p ON ( p.pid = tyl.pid )\n\t\t\t\tLEFT JOIN " . TABLE_PREFIX . "users u ON ( u.uid = tyl.uid )\n\t\t\t\tWHERE p.pid IS NULL OR u.uid IS NULL\n\t\t\t"); $tlids_remove = array(); while ($orphan = $db->fetch_array($query)) { $tlids_remove[] = $orphan['tlid']; } if ($tlids_remove) { $tlids_remove = implode(',', $tlids_remove); // Delete the tyls $db->delete_query($prefix . "thankyoulike", "tlid IN ({$tlids_remove})"); } // Lets also update the puid field in the db with uid values from the posts table // This is done to sync up the db with the puids of post tyled, since this feature wasn't there in v1.0 so data needs to be generated. $db->write_query("UPDATE " . TABLE_PREFIX . $prefix . "thankyoulike tyl \n\t\t\t\t\tLEFT JOIN " . TABLE_PREFIX . "posts p ON ( p.pid=tyl.pid ) \n\t\t\t\t\tSET tyl.puid=p.uid"); // Update the number of tyled posts for the post owners, we do this here because this needs to be done in one swoop and will break if done in parts $db->write_query("UPDATE " . TABLE_PREFIX . "users u \n\t\t\t\t\tJOIN (SELECT puid, COUNT(DISTINCT(pid)) AS pidcount \n\t\t\t\t\tFROM " . TABLE_PREFIX . $prefix . "thankyoulike\n\t\t\t\t\tGROUP BY puid) tyl\n\t\t\t\t\tON ( u.uid=tyl.puid )\n\t\t\t\t\tSET u.tyl_unumptyls=tyl.pidcount"); } $query1 = $db->simple_select($prefix . "thankyoulike", "COUNT(tlid) AS num_tyls"); $num_tyls = $db->fetch_field($query1, 'num_tyls'); $query2 = $db->query("\n\t\t\tSELECT tyl.*, p.tid\n\t\t\tFROM " . TABLE_PREFIX . $prefix . "thankyoulike tyl\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "posts p ON (p.pid=tyl.pid)\n\t\t\tORDER BY tyl.dateline ASC\n\t\t\tLIMIT {$start}, {$per_page}\n\t\t"); $tlids = array(); $post_tyls = array(); $thread_tyls = array(); $user_tyls = array(); $user_rcvtyls = array(); while ($tyl = $db->fetch_array($query2)) { // Total tyls $tlids[] = $tyl['tlid']; // Count the tyl for each post, thread and user if ($post_tyls[$tyl['pid']]) { $post_tyls[$tyl['pid']]++; } else { $post_tyls[$tyl['pid']] = 1; } if ($thread_tyls[$tyl['tid']]) { $thread_tyls[$tyl['tid']]++; } else { $thread_tyls[$tyl['tid']] = 1; } if ($user_tyls[$tyl['uid']]) { $user_tyls[$tyl['uid']]++; } else { $user_tyls[$tyl['uid']] = 1; } if ($user_rcvtyls[$tyl['puid']]) { $user_rcvtyls[$tyl['puid']]++; } else { $user_rcvtyls[$tyl['puid']] = 1; } } // Update the counts if (is_array($post_tyls)) { foreach ($post_tyls as $pid => $add) { $db->write_query("UPDATE " . TABLE_PREFIX . "posts SET tyl_pnumtyls=tyl_pnumtyls+{$add} WHERE pid='{$pid}'"); } } if (is_array($thread_tyls)) { foreach ($thread_tyls as $tid => $add) { $db->write_query("UPDATE " . TABLE_PREFIX . "threads SET tyl_tnumtyls=tyl_tnumtyls+{$add} WHERE tid='{$tid}'"); } } if (is_array($user_tyls)) { foreach ($user_tyls as $uid => $add) { $db->write_query("UPDATE " . TABLE_PREFIX . "users SET tyl_unumtyls=tyl_unumtyls+{$add} WHERE uid='{$uid}'"); } } if (is_array($user_rcvtyls)) { foreach ($user_rcvtyls as $puid => $add) { $db->write_query("UPDATE " . TABLE_PREFIX . "users SET tyl_unumrcvtyls=tyl_unumrcvtyls+{$add} WHERE uid='{$puid}'"); } } if ($tlids) { $tlids_count = count($tlids); $db->write_query("UPDATE " . TABLE_PREFIX . $prefix . "stats SET value=value+{$tlids_count} WHERE title='total'"); } check_proceed($num_tyls, $end, ++$page, $per_page, "tyls", "do_recounttyls", $lang->tyl_success_thankyoulike_rebuilt); }