query_total_rows = $rows; } protected function setCurrNode ($node) { $this->query_curr_node = $node; } // get funcs (public) public function getTotalRows () { return $this->query_total_rows; } public function getCurrNode () { return $this->query_curr_node; } public function getQueryResult () { return $this->query_result; } public function __construct() { GLOBAL $wpdb, $TABLE_NAME; self::$downloadTable = $wpdb->prefix . $TABLE_NAME[TABLE_ARTIST_FILE_DOWNLOAD]; $this->loadAll(); } public function __destruct() { /* Just in case we need it */ } // [artistography_download id=""] // this is a hidden/undocumented shortcode used by the artistography. i.e. user shouldn't use it public static function shortCodeDownload( $atts, $content=null, $code="" ) { GLOBAL $wpdb, $i18n_domain, $artistography_plugin_dir; $Download = new Download; $Music = new Music; $Orders = new Orders; $uri = explode('/', $_SERVER["REQUEST_URI"]); $this_id = 0; $download_id = 0; $post_slug = get_post(get_option('wp_artistography_download_page'))->post_name; foreach ($uri as $key => $value) { if ($value === $post_slug) { $this_id = $key + 1; $download_id = $uri[$this_id]; break; } } unset($value); if($download_id == 0 || $download_id == NULL) { $html = "Nothing to see here..."; } else { $price = $Music->loadByDownloadId($download_id)->price; if ($price == "0.00") { $html = $Download->do_download($download_id); } else { /* Music is not free */ /* TODO: Test if order has processed */ $Orders->loadByUserId(get_current_user_id()); $order_processed = $Orders->locateOrderMusicDownloadId($Music->id); if($order_processed) { $html = $Download->do_download($download_id); } else { $html = "This download is not free!
\n"; $html .= "[artistography_album_download_link id='$Music->id']
\n"; } } } return do_shortcode($html); } public function do_download($download_id) { $Download = new Download; if($Download->loadById ($download_id)) { $Download->increaseCounterById ($download_id); $loc = SITEURL . "/downloads/" . $Download->file_name; $donate_email = get_option('wp_artistography_donate_email'); $html = "" . __("If your download does not begin in 2-5 seconds please click here", $i18n_domain) . ": $loc

" . sprintf(__("This has been downloaded %s times.", $i18n_domain), $Download->download_count) . __("We appreciate your interest, and hope that you will consider at least a $1.00 donation by clicking the link below. Feel free to tell us why you're donating to us as it means a lot. Many thanks from the crew!", $i18n_domain) . '



'; } else { $html = "Invalid download id. Nothing to see here..."; } return $html; } protected function &loadCurrNodeValues () { GLOBAL $wpdb; if ($this->getTotalRows() > 0) { $this->query_result = $wpdb->get_row($this->query, OBJECT, $this->getCurrNode()); // meta data info update $this->id = $this->query_result->id; $this->enabled = $this->query_result->id; $this->file_name = $this->query_result->file_name; $this->download_count = $this->query_result->download_count; $this->poster_id = $this->query_result->poster_id; $this->last_updated_by_id = $this->query_result->last_updated_by_id; $this->create_date = $this->query_result->create_date; $this->update_date = $this->query_result->update_date; } else { $this->query_result = $this->id = $this->poster_id = $this->last_updated_by_id = $this->create_date = $this->update_date = $this->enabled = $this->file_name = $this->download_count = 0; } return $this; } public function &getNodeNext () { // when this function is used, it's assumed that a query was already run // meant to simply load the nth item in the query through a for loop // assumes query, query_curr_node, and query_total_rows is set if (($this->query_curr_node + 1) < $this->getTotalRows()) { $this->query_curr_node += 1; $this->loadCurrNodeValues(); } return $this; } public function &getNodePrev () { // when this function is used, it's assumed that a query was already run // meant to simply load the nth item in the query through a for loop // assumes query, query_curr_node, and query_total_rows is set if (($this->query_curr_node - 1) >= 0 AND $this->getTotalRows() > 0) { $this->query_curr_node -= 1; $this->loadCurrNodeValues(); } return $this; } public function &loadByNode ($node) { // when this function is used, it's assumed that a query was already run // meant to simply load the nth item in the query through a for loop if ($node < $this->getTotalRows() AND $node >= 0 AND $this->getTotalRows() > 0) { $this->setCurrNode($node); $this->loadCurrNodeValues(); } return $this; } public function &loadById ($id) { GLOBAL $wpdb, $i18n_domain; $this->query = $wpdb->prepare("SELECT * FROM " .self::$downloadTable. " WHERE id = %u", $id); $this->setTotalRows($wpdb->query($this->query)); if ($this->getTotalRows() === FALSE) { return false; // failure } $this->setCurrNode(0); // set to first node return $this->loadCurrNodeValues(); } public function &loadAll ($order_by = 'id') { GLOBAL $wpdb, $i18n_domain; $this->query = "SELECT * FROM " .self::$downloadTable. " ORDER BY $order_by"; $this->setTotalRows($wpdb->query($this->query)); if ($this->getTotalRows() === FALSE) wp_die( sprintf(__('An error occurred while trying to perform a query: "%s"', $i18n_domain), $this->query) ); $this->setCurrNode(0); // set to first node return $this->loadCurrNodeValues(); } public function deleteById ($id) { GLOBAL $wpdb, $i18n_domain; $this->query = $wpdb->prepare( "DELETE FROM " .self::$downloadTable. " WHERE id = %u", $id); $this->setTotalRows($wpdb->query($this->query)); if ($this->getTotalRows() === FALSE) { wp_die( sprintf(__('An error occurred while trying to perform a query: "%s"', $i18n_domain), $this->query) ); } return $this->getTotalRows(); } public function increaseCounterById ($download_id) { GLOBAL $wpdb, $i18n_domain; //increase counter $this->query = $wpdb->prepare( "UPDATE " .self::$downloadTable. " SET download_count=download_count+1 WHERE id = %u", $download_id); $wpdb->query($this->query); } public function updateById ($download_id, $enabled, $file_name) { GLOBAL $wpdb, $i18n_domain, $current_user; get_currentuserinfo(); $this->query = $wpdb->prepare( "UPDATE " .self::$downloadTable. " SET update_date = now(), enabled = %b, file_name = %s, last_updated_by_id = %u WHERE id = %u", $enabled, $file_name, $current_user->ID, $download_id); $this->setTotalRows($wpdb->query($this->query)); if ($this->getTotalRows() === FALSE) { wp_die( sprintf(__('An error occurred while trying to perform a query: "%s"', $i18n_domain), $this->query) ); } else { // was entered successfully into database return $this->getTotalRows(); } } public function insert ($file_name) { GLOBAL $wpdb, $i18n_domain, $current_user; get_currentuserinfo(); $this->query = $wpdb->prepare( "INSERT INTO " .(string)self::$downloadTable. " (create_date, update_date, poster_id, last_updated_by_id, enabled, file_name) VALUES (now(), now(), %u, %u, %b, %s)", $current_user->ID, $current_user->ID, true, $file_name); $this->setTotalRows($wpdb->query($this->query)); if ($this->getTotalRows() === 0 OR $this->getTotalRows() === FALSE) { return false; } else { // was entered successfully into database return true; } } } /* end class Download */ ?>