Example #1
0
 /**
  * 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)));
 }
Example #2
0
 /**
  * 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);
     }
 }
Example #3
0
 /**
  * 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");
 }