earliest_day = 5; $this->latest_day = 20; } protected function get_all_posts() { // very quickly work out if we are sorting by cat or tag $cat = ''; if ($_POST['incategory'] != '') { $cat = '&cat=' . (int)$_POST['incategory']; } $tag = ''; if ($_POST['tagid'] != '') { $tag = "&tag_id=" . (int) $_POST['tagid']; } $all_posts = array(); $all_query = new WP_Query('showposts=' . $this->abs_max_posts . $cat . $tag); while($all_query->have_posts()) { $all_query->the_post(); $orig_date = get_the_date("Y-m-d H:i:s"); $i++; $all_posts[get_the_ID()] = array ( "link" => get_permalink(), "title" => the_title('','',false), "orig_date" => $orig_date, ); } return $all_posts; } public function redate_posts() { if (isset($_POST['latest_day']) && is_numeric($_POST['latest_day'])) { $this->latest_day = (int) $_POST['latest_day']; } if (isset($_POST['earliest_day']) && is_numeric($_POST['earliest_day'])) { $this->earliest_day = (int) $_POST['earliest_day']; } if ($this->earliest_day == 0 && $this->latest_day == 0) { echo "

Please go back - you cannot set latest and earliest at 0

"; return; } if ($this->earliest_day < 0 || $this->latest_day < 0 ) { echo "

Please go back - you cannot either value as lower than 0

"; return; } if ($_POST['tagid'] !='' && $_POST['incategory'] != '') { echo "

Please go back - you cannot set both slug and category!

"; return; } $total_diff_in_days = $this->latest_day + $this->earliest_day; echo "

Reordering

"; echo "

The earliest day is {$this->earliest_day} days ago. The latest day is {$this->latest_day} days in the future

"; $allposts = $this->get_all_posts(); if (count($allposts) > 0) { $doneDays = array(); echo ""; foreach($allposts as $id => $postData) { $link = $postData['link']; $title = $postData['title']; $random_days_behind = rand(0,$total_diff_in_days); $random_days_behind = (int) $random_days_behind; $day_diff = $random_days_behind - ($this->earliest_day ); if ($day_diff > 0) { $plus_minus = '+'; } else { $day_diff = abs($day_diff); // get positive $plus_minus = '-'; } $doneDays[str_replace("+","",$plus_minus) . $day_diff]++; $strtotimestring = $plus_minus . $day_diff . ' days'; $date_time = (strtotime($strtotimestring)); // H:i:s // get the year/mo/day from strtotime(- xx days) $newDate = date('Y-m-d', $date_time); // randomly select a hh:mm:ss to post $newDate.= " " . str_pad( rand(0,23) , 2, '0', STR_PAD_LEFT) . ":" . str_pad( rand(0,59) , 2, '0', STR_PAD_LEFT) . ":". str_pad( rand(0,59) , 2, '0', STR_PAD_LEFT) ; $updateArray = array( 'ID' => $id, 'post_date' => $newDate, 'post_date_gmt' => $newDate, 'edit_date' => true, ); $result = wp_update_post($updateArray); echo ""; } echo "
$id $link $title Original date: {$postData['orig_date']} Changed date to : $newDate
"; echo "

Counter:

"; ksort($doneDays); echo "

This shows the frequency of each post being posted x days ago/in future. It doesn't show every single day - only the ones with at least one post

"; //change for for() to show all days? might be handy echo ""; foreach($doneDays as $id => $val) { if ($id > 0) { $id = "+" . $id; } echo ""; } echo "
+/- daysNumber of posts
$id days$val posts
"; } else { echo "

Error - Could not find any posts to reorder!

"; } } protected function get_all_cats_options() { $args = array( 'type' => 'post', 'child_of' => 0, 'parent' => '', 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => 1, 'hierarchical' => 1, 'exclude' => '', 'include' => '', 'number' => '', 'taxonomy' => 'category', 'pad_counts' => true ); $categories = get_categories( $args ); $returnhtml = ''; foreach($categories as $cat) { $id = $cat->cat_ID; $name = $cat->name; $c = $cat->category_count; $returnhtml .= ""; } return $returnhtml; } protected function get_all_tags_options() { $tags = get_tags(); $returnhtml = ''; if ($tags) { foreach ($tags as $tag) { $id = $tag->term_id; $name = $tag->name; $c = $tag->count; $returnhtml .= ""; } } else { $returnhtml = ""; } return $returnhtml; } public function show_options() { ?>

Ash's Random Post Dater

Use this form to set ALL posts in the selected category to a random date between these two values.

This will update the post dates on ALL posts within the selected category/tag (or ALL posts in your wordpress blog if both are set to default). Please do not use if you do not want to reset ALL post dates. I do not recommend using this on a site with lots of live posts - especially if you use a permalink structure that includes the date in the url. I use it on new sites (add all content, then set all posts to random date in the past). Use at your own risk! You will lose the current post date time (it only changes the date posted - nothing else)

Only use one of the following two. Leave both at their defaults ("ALL CATEGORIES"/"ALL TAGS") to reorder ALL posts

Reorder post dates in this category:


(leave on "ALL CATEGORIES" if you don't want to reorder all within a certain category)
OR

Reorder post dates with this tag slug (use the tag slug, not the tag):


(leave on "ALL TAGS" if you don't want to reorder all within a certain category)

Earliest Day - how many days back do you want the maximum one?

(put at 0 to put all posts in future)

Latest Day - Leave at 0 to make sure all posts are BACK dated.

(leave 0 to put all posts in past)

For example if you wanted your posts randomly set to a date in the next 30 days set the latest day as 30, the earliest day at 0

If you wanted your posts randomly set to a day in the previous 180 days then set the latest day as 0 and the earliest day as 180.

It randomly sets each post - the posts are not spaced out at exact intervals. It will readjust ALL your posts. Please make sure that you want ALL your posts to be randomised.

(Clicking this will randomly reorder all posts)
redate_posts(); } else { $random_post_dater->show_options(); } } The shipping containers tackling South Africa’s chronic childcare shortages – Social Care Team

The shipping containers tackling South Africa’s chronic childcare shortages

A social enterprise operating out of repurposed shipping containers is helping to tackle Cape Town’s lack of childcare facilities

Access to affordable childcare is a worldwide problem, particularly so in South Africa where just 16% of all children from birth to age four receives care from a government-regulated programme, according to Unicef.

Matchbox Africa is striving to reverse this shortfall. The Cape Town-based organisation installs repurposed shipping containers in non-white township communities to provide permanent spaces for existing community-run creches. But, unlike other charity projects entering a community and starting from scratch Matchbox taps into an established community network of local caretakers, explains project manager Verena Grips.

“There are so many people who do fantastic jobs working for the white communities in Cape Town, but their own kids are growing up in an environment that is completely un-resourced,” says Grips. “However, in these communities there are also many clever and helpful women, who use their skills as mothers to start locally-run creches to look after unsupervised children while their parents work.”

Grips says that mothers working outside of the townships generally pay these caretakers 150 rand (£8) per month, but the facilities the children spend time in tend to be improvised housing structures or shacks — often cramped, unsafe and lacking basic amenities like electricity and water. By providing a formalised, resourced, and safe space, Matchbox is strengthening the physical environment, which in turn bolsters the care that’s already being provided. In addition, they partner with other local support services to train caretakers in skills such as financial planning, English language, nutrition, education and how to register their business properly.

When it comes to the containers, permanence matters. In South Africa’s townships, property is notoriously fluid, improvised and uncertain. As the headlines of local papers frequently report, forced evictions and mass clearances plague these communities.

Grips says that by partnering with local people and working out what will work in the long-term before installation, the centres take on an elevated meaning and begin to serve as a permanent community hub. This improves local safety by increasing social activity around these areas and means that children feel more comfortable knowing they can rely on the space to be there for them.

“Things are very dynamic in the township setting — they change all the time, so people always adjust, there’s always movement,” says Grips. “We hand it over and the space grows and develops into whatever people feel is necessary. After a few months we see surrounding spaces have been built in ways we couldn’t have imagined. It’s a very interesting process for a designer to just let go and see where the thing carries itself.”

While Matchbox is a nonprofit, the work they do alongside their partner organisations are enabling a myriad of sustainable small businesses and expressions of entrepreneurship. Carers can rent the spaces out for after-hours functions such as weddings or funerals; they can run small bakeries using the oven; they can hire and train women to make school uniforms using sewing machines bought using cash surpluses; and they can provide a well-lit space for older children to do their homework.

Mavis Ngcongolo, the principal at Matchbox’s pilot project, Injongo, says that being consulted by Matchbox before the project was built has helped the space serve the community’s needs.

“Being part of the process and taking ownership has been for the benefit of us all and helped create a sense of pride and identity,” says Ngcongolo. “Parents from other neighbourhoods try to get their kids into my creche and it provides opportunities to the youth for after-school activities, community meetings and special occasions.”

Matchbox is rolling out two more centres in Cape Town townships this year, with plans for more in 2016. While they have far to go before they can fill the acute demand for adequate childcare spaces, their approach is proving that a handful of resources is all it takes to spur further opportunity. While Matchbox retains ownership of the shipping containers, Grips says the main focus is for them to provide business opportunities for the future of the community.

“We help the ladies with maintenance and we make sure [they’re] not being used for purposes that aren’t good for the community,” says Grips. “But it’s important that these women have a financial plan for their future otherwise the project won’t work in the long term.”

Capture28

http://www.theguardian.com/sustainable-business/2015/jun/15/the-shipping-containers-tackling-south-africas-chronic-childcare-shortages