/** * Save the 'like' preferences for a single object * * @return @e void */ protected function saveFollow() { //----------------------------------------- // Get like helper class //----------------------------------------- $bootstraps = array(); require_once IPS_ROOT_PATH . 'sources/classes/like/composite.php'; /*noLibHook*/ $_bootstrap = classes_like::bootstrap($this->request['searchApp'], $this->request['contentType']); $_likeKey = classes_like_registry::getKey($this->request['id'], $this->memberData['member_id']); $_frequencies = $_bootstrap->allowedFrequencies(); //----------------------------------------- // What action to take? //----------------------------------------- switch ($this->request['modaction']) { case 'delete': $_bootstrap->remove($this->request['id'], $this->memberData['member_id']); break; case 'change-donotify': $this->DB->update('core_like', array('like_notify_do' => 1, 'like_notify_freq' => 'immediate'), "like_id='" . addslashes($_likeKey) . "'"); break; case 'change-donotnotify': $this->DB->update('core_like', array('like_notify_do' => 0), "like_id='" . addslashes($_likeKey) . "'"); break; case 'change-immediate': if (in_array('immediate', $_frequencies)) { $this->DB->update('core_like', array('like_notify_do' => 1, 'like_notify_freq' => 'immediate'), "like_id='" . addslashes($_likeKey) . "'"); } break; case 'change-offline': if (in_array('offline', $_frequencies)) { $this->DB->update('core_like', array('like_notify_do' => 1, 'like_notify_freq' => 'offline'), "like_id='" . addslashes($_likeKey) . "'"); } break; case 'change-daily': if (in_array('daily', $_frequencies)) { $this->DB->update('core_like', array('like_notify_do' => 1, 'like_notify_freq' => 'daily'), "like_id='" . addslashes($_likeKey) . "'"); } break; case 'change-weekly': if (in_array('weekly', $_frequencies)) { $this->DB->update('core_like', array('like_notify_do' => 1, 'like_notify_freq' => 'weekly'), "like_id='" . addslashes($_likeKey) . "'"); } break; case 'change-anon': $this->DB->update('core_like', array('like_is_anon' => 1), "like_id='" . addslashes($_likeKey) . "'"); break; case 'change-noanon': $this->DB->update('core_like', array('like_is_anon' => 0), "like_id='" . addslashes($_likeKey) . "'"); break; default: $this->returnJsonError("follow_no_action"); break; } $_data = $this->DB->buildAndFetch(array('select' => '*', 'from' => 'core_like', 'where' => "like_id='" . addslashes($_likeKey) . "'")); $this->returnJsonArray(array('html' => $this->registry->output->getTemplate('search')->followData($_data))); }
/** * Deletes a cache * * @param mixed $relId Relationship ID or array of IDs * @param integer $memberId Member ID * @return @e void */ public function delete($relId, $memberId = null) { /* Possible future expansion */ if ($memberId === null) { $where = ''; if (is_numeric($relId)) { $where = "='" . classes_like_registry::getKey($relId) . "'"; } elseif (is_array($relId)) { $relId = IPSLib::cleanIntArray($relId); $keys = array(); foreach ($relId as $id) { $keys[] = "'" . classes_like_registry::getKey($id) . "'"; } if (!count($keys)) { return null; } $where = " IN (" . implode(",", $keys) . ")"; } $this->DB->delete('core_like_cache', 'like_cache_id ' . $where); } }
/** * Moderate your list of liked content * * @author bfarber * @return string HTML to display */ public function updateFollowedContent() { IPSSearchRegistry::set('in.search_app', $this->request['search_app']); //----------------------------------------- // Get the likes we selected //----------------------------------------- $_likes = array(); if (is_array($this->request['likes']) and count($this->request['likes'])) { foreach ($this->request['likes'] as $_like) { $_thisLike = explode('-', $_like); $_likes[] = array('app' => $_thisLike[0], 'area' => $_thisLike[1], 'id' => $_thisLike[2]); } } //----------------------------------------- // Got any? //----------------------------------------- if (!count($_likes) or !is_array($_likes)) { return $this->viewFollowedContent($this->lang->words['no_likes_for_del']); } //----------------------------------------- // Get like helper class //----------------------------------------- $bootstraps = array(); require_once IPS_ROOT_PATH . 'sources/classes/like/composite.php'; /*noLibHook*/ //----------------------------------------- // Loop over and moderate //----------------------------------------- foreach ($_likes as $_like) { $_bootstrap = classes_like::bootstrap($_like['app'], $_like['area']); $_likeKey = classes_like_registry::getKey($_like['id'], $this->memberData['member_id']); $_frequencies = $_bootstrap->allowedFrequencies(); //----------------------------------------- // What action to take? //----------------------------------------- switch ($this->request['modaction']) { case 'delete': $_bootstrap->remove($_like['id'], $this->memberData['member_id']); break; case 'change-donotify': $this->DB->update('core_like', array('like_notify_do' => 1, 'like_notify_freq' => 'immediate'), "like_id='" . addslashes($_likeKey) . "'"); break; case 'change-donotnotify': $this->DB->update('core_like', array('like_notify_do' => 0), "like_id='" . addslashes($_likeKey) . "'"); break; case 'change-immediate': if (in_array('immediate', $_frequencies)) { $this->DB->update('core_like', array('like_notify_do' => 1, 'like_notify_freq' => 'immediate'), "like_id='" . addslashes($_likeKey) . "'"); } break; case 'change-offline': if (in_array('offline', $_frequencies)) { $this->DB->update('core_like', array('like_notify_do' => 1, 'like_notify_freq' => 'offline'), "like_id='" . addslashes($_likeKey) . "'"); } break; case 'change-daily': if (in_array('daily', $_frequencies)) { $this->DB->update('core_like', array('like_notify_do' => 1, 'like_notify_freq' => 'daily'), "like_id='" . addslashes($_likeKey) . "'"); } break; case 'change-weekly': if (in_array('weekly', $_frequencies)) { $this->DB->update('core_like', array('like_notify_do' => 1, 'like_notify_freq' => 'weekly'), "like_id='" . addslashes($_likeKey) . "'"); } break; case 'change-anon': $this->DB->update('core_like', array('like_is_anon' => 1), "like_id='" . addslashes($_likeKey) . "'"); break; case 'change-noanon': $this->DB->update('core_like', array('like_is_anon' => 0), "like_id='" . addslashes($_likeKey) . "'"); break; default: return $this->viewFollowedContent($this->lang->words['likes_no_action']); break; } } $this->registry->getClass('output')->silentRedirect($this->settings['base_url'] . "app=core&module=search&do=followed&search_app={$this->request['search_app']}&contentType={$this->request['contentType']}&confirm=1"); }